From 4fdb74f6941a57f4770f794f13ea0e695ee1c1f1 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 10 Jan 2025 20:17:00 +0700 Subject: [PATCH 01/58] SRISE --- agent/src/index.ts | 31 +- package.json | 5 +- packages/client-twitter/src/interactions.ts | 13 +- packages/core/src/generation.ts | 91 +- packages/core/src/types.ts | 50 + .../plugin-coinbase/src/plugins/trades.csv | 2 + packages/plugin-web-search/package.json | 1 + packages/plugin-web-search/src/index.ts | 68 +- pnpm-lock.yaml | 4484 ++++++++--------- 9 files changed, 2288 insertions(+), 2457 deletions(-) create mode 100644 packages/plugin-coinbase/src/plugins/trades.csv diff --git a/agent/src/index.ts b/agent/src/index.ts index 53058cf4ece..7e5a36f1497 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -1,4 +1,5 @@ import { PostgresDatabaseAdapter } from "@elizaos/adapter-postgres"; +import { RedisClient } from "@elizaos/adapter-redis"; import { SqliteDatabaseAdapter } from "@elizaos/adapter-sqlite"; import { AutoClientInterface } from "@elizaos/client-auto"; import { DiscordClientInterface } from "@elizaos/client-discord"; @@ -10,31 +11,32 @@ import { TwitterClientInterface } from "@elizaos/client-twitter"; import { AgentRuntime, CacheManager, + CacheStore, Character, + Client, Clients, DbCacheAdapter, defaultCharacter, elizaLogger, FsCacheAdapter, IAgentRuntime, + ICacheManager, IDatabaseAdapter, IDatabaseCacheAdapter, ModelProviderName, settings, stringToUuid, - validateCharacterConfig, - CacheStore, - Client, - ICacheManager, - parseBooleanFromText, + validateCharacterConfig } from "@elizaos/core"; -import { RedisClient } from "@elizaos/adapter-redis"; import { zgPlugin } from "@elizaos/plugin-0g"; import { bootstrapPlugin } from "@elizaos/plugin-bootstrap"; import createGoatPlugin from "@elizaos/plugin-goat"; // import { intifacePlugin } from "@elizaos/plugin-intiface"; import { DirectClient } from "@elizaos/client-direct"; +import { ThreeDGenerationPlugin } from "@elizaos/plugin-3d-generation"; +import { abstractPlugin } from "@elizaos/plugin-abstract"; import { aptosPlugin } from "@elizaos/plugin-aptos"; +import { avalanchePlugin } from "@elizaos/plugin-avalanche"; import { advancedTradePlugin, coinbaseCommercePlugin, @@ -44,32 +46,31 @@ import { webhookPlugin, } from "@elizaos/plugin-coinbase"; import { confluxPlugin } from "@elizaos/plugin-conflux"; +import { cronosZkEVMPlugin } from "@elizaos/plugin-cronoszkevm"; +import { echoChamberPlugin } from "@elizaos/plugin-echochambers"; import { evmPlugin } from "@elizaos/plugin-evm"; -import { storyPlugin } from "@elizaos/plugin-story"; import { flowPlugin } from "@elizaos/plugin-flow"; import { fuelPlugin } from "@elizaos/plugin-fuel"; import { imageGenerationPlugin } from "@elizaos/plugin-image-generation"; -import { ThreeDGenerationPlugin } from "@elizaos/plugin-3d-generation"; import { multiversxPlugin } from "@elizaos/plugin-multiversx"; import { nearPlugin } from "@elizaos/plugin-near"; import { nftGenerationPlugin } from "@elizaos/plugin-nft-generation"; import { createNodePlugin } from "@elizaos/plugin-node"; import { solanaPlugin } from "@elizaos/plugin-solana"; +import { storyPlugin } from "@elizaos/plugin-story"; import { suiPlugin } from "@elizaos/plugin-sui"; import { TEEMode, teePlugin } from "@elizaos/plugin-tee"; import { tonPlugin } from "@elizaos/plugin-ton"; -import { zksyncEraPlugin } from "@elizaos/plugin-zksync-era"; -import { cronosZkEVMPlugin } from "@elizaos/plugin-cronoszkevm"; -import { abstractPlugin } from "@elizaos/plugin-abstract"; -import { avalanchePlugin } from "@elizaos/plugin-avalanche"; import { webSearchPlugin } from "@elizaos/plugin-web-search"; -import { echoChamberPlugin } from "@elizaos/plugin-echochambers"; +import { zksyncEraPlugin } from "@elizaos/plugin-zksync-era"; import Database from "better-sqlite3"; import fs from "fs"; +import net from "net"; import path from "path"; import { fileURLToPath } from "url"; import yargs from "yargs"; -import net from "net"; + +//import {mainCharacter as defaultCharacter} from "../mainCharacter"; const __filename = fileURLToPath(import.meta.url); // get the resolved path to the file const __dirname = path.dirname(__filename); // get the name of the directory @@ -529,7 +530,7 @@ export async function createAgent( ? confluxPlugin : null, nodePlugin, - getSecret(character, "TAVILY_API_KEY") ? webSearchPlugin : null, + getSecret(character, "TAVILY_API_KEY") || getSecret(character, "SERPER_API_KEY") ? webSearchPlugin : null, getSecret(character, "SOLANA_PUBLIC_KEY") || (getSecret(character, "WALLET_PUBLIC_KEY") && !getSecret(character, "WALLET_PUBLIC_KEY")?.startsWith("0x")) diff --git a/package.json b/package.json index 36f419f8eb2..5bd706ecced 100644 --- a/package.json +++ b/package.json @@ -41,9 +41,9 @@ "turbo": "2.3.3", "typedoc": "0.26.11", "typescript": "5.6.3", + "viem": "2.21.58", "vite": "5.4.11", - "vitest": "2.1.5", - "viem": "2.21.58" + "vitest": "2.1.5" }, "pnpm": { "overrides": { @@ -59,6 +59,7 @@ "@deepgram/sdk": "^3.9.0", "@vitest/eslint-plugin": "1.0.1", "amqplib": "0.10.5", + "axios": "^1.7.9", "csv-parse": "5.6.0", "ollama-ai-provider": "0.16.1", "optional": "0.1.4", diff --git a/packages/client-twitter/src/interactions.ts b/packages/client-twitter/src/interactions.ts index 3274cd32308..423cca69a23 100644 --- a/packages/client-twitter/src/interactions.ts +++ b/packages/client-twitter/src/interactions.ts @@ -1,20 +1,20 @@ -import { SearchMode, Tweet } from "agent-twitter-client"; import { composeContext, + Content, + elizaLogger, generateMessageResponse, generateShouldRespond, - messageCompletionFooter, - shouldRespondFooter, - Content, + getEmbeddingZeroVector, HandlerCallback, IAgentRuntime, Memory, + messageCompletionFooter, ModelClass, + shouldRespondFooter, State, stringToUuid, - elizaLogger, - getEmbeddingZeroVector, } from "@elizaos/core"; +import { SearchMode, Tweet } from "agent-twitter-client"; import { ClientBase } from "./base"; import { buildConversationThread, sendTweet, wait } from "./utils.ts"; @@ -397,6 +397,7 @@ export class TwitterInteractionClient { // Promise<"RESPOND" | "IGNORE" | "STOP" | null> { if (shouldRespond !== "RESPOND") { + console.log("NOTR",shouldRespond); elizaLogger.log("Not responding to message"); return { text: "Response Decision:", action: shouldRespond }; } diff --git a/packages/core/src/generation.ts b/packages/core/src/generation.ts index 5db5b8e70a5..570971c357b 100644 --- a/packages/core/src/generation.ts +++ b/packages/core/src/generation.ts @@ -2,46 +2,48 @@ import { createAnthropic } from "@ai-sdk/anthropic"; import { createGoogleGenerativeAI } from "@ai-sdk/google"; import { createGroq } from "@ai-sdk/groq"; import { createOpenAI } from "@ai-sdk/openai"; -import { RecursiveCharacterTextSplitter } from "langchain/text_splitter"; +import { fal } from "@fal-ai/client"; +import { AutoTokenizer } from "@huggingface/transformers"; +import { tavily } from "@tavily/core"; import { generateObject as aiGenerateObject, generateText as aiGenerateText, + StepResult as AIStepResult, CoreTool, GenerateObjectResult, - StepResult as AIStepResult, } from "ai"; import { Buffer } from "buffer"; +import https from 'https'; +import { encodingForModel, TiktokenModel } from "js-tiktoken"; +import { RecursiveCharacterTextSplitter } from "langchain/text_splitter"; import { createOllama } from "ollama-ai-provider"; import OpenAI from "openai"; -import { encodingForModel, TiktokenModel } from "js-tiktoken"; -import { AutoTokenizer } from "@huggingface/transformers"; import Together from "together-ai"; import { ZodSchema } from "zod"; import { elizaLogger } from "./index.ts"; import { getModel, models } from "./models.ts"; import { + parseActionResponseFromText, parseBooleanFromText, parseJsonArrayFromText, parseJSONObjectFromText, parseShouldRespondFromText, - parseActionResponseFromText, } from "./parsing.ts"; import settings from "./settings.ts"; import { + ActionResponse, Content, IAgentRuntime, IImageDescriptionService, ITextGenerationService, ModelClass, ModelProviderName, - ServiceType, SearchResponse, - ActionResponse, + SerperSearchResponse, + ServiceType, TelemetrySettings, TokenizerType, } from "./types.ts"; -import { fal } from "@fal-ai/client"; -import { tavily } from "@tavily/core"; type Tool = CoreTool<any, any>; type StepResult = AIStepResult<any>; @@ -1501,12 +1503,81 @@ export const generateWebSearch = async ( includeAnswer: true, maxResults: 3, // 5 (default) topic: "general", // "general"(default) "news" - searchDepth: "basic", // "basic"(default) "advanced" + searchDepth: "advanced", // "basic"(default) "advanced" includeImages: false, // false (default) true }); + console.log(`TVLY RES`,response); + return response; + } catch (error) { + elizaLogger.error("Error:", error); + } +}; +export const generateSerperSearch = async ( + query: string, + runtime: IAgentRuntime +): Promise<SerperSearchResponse> => { + try { + const apiKey = runtime.getSetting("SERPER_API_KEY") as string; + if (!apiKey) { + throw new Error("SERPER_API_KEY is not set"); + } + //const cleanedQuery = query.replace(/@\S+/g, ''); + //console.log(`CLEANED QUERY`,cleanedQuery) + const data = JSON.stringify({ + q: query + }); + + const options = { + hostname: 'google.serper.dev', + port: 443, + path: '/search', + method: 'POST', + headers: { + 'X-API-KEY': apiKey, + 'Content-Type': 'application/json', + 'Content-Length': Buffer.byteLength(data), + } + }; + + const sendRequest = (): Promise<SerperSearchResponse> => { + return new Promise((resolve, reject) => { + const req = https.request(options, (res) => { + let body = ''; + + res.on('data', (chunk) => { + body += chunk; + }); + + res.on('end', () => { + if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) { + try { + const parsedData = JSON.parse(body) as SerperSearchResponse; + resolve(parsedData); + } catch (err) { + reject(new Error(`Failed to parse response: ${err}`)); + } + } else { + reject(new Error(`Request failed with status code: ${res.statusCode}`)); + } + }); + }); + + req.on('error', (err) => { + reject(err); + }); + + // Write data to the request body + req.write(data); + req.end(); + }); + }; + + const response = await sendRequest(); + console.log(`TVLY RES`, response); return response; } catch (error) { elizaLogger.error("Error:", error); + throw error; // Re-throw the error for the caller to handle. } }; /** diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 3687ded5e01..65d46b667ab 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -1282,6 +1282,56 @@ export type SearchResponse = { results: SearchResult[]; }; +export type SerperSearchParameters = { + q: string; + type: string; + engine: string; + }; + + export type SerperAnswerBox = { + snippet: string; + snippetHighlighted: string[]; + title: string; + link: string; + }; + + export type SerperSiteLink = { + title: string; + link: string; + }; + + export type SerperOrganicResult = { + title: string; + link: string; + snippet: string; + sitelinks?: SerperSiteLink[]; + position: number; + attributes?: Record<string, string>; + rating?: number; + ratingCount?: number; + }; + + export type SerperPeopleAlsoAsk = { + question: string; + snippet: string; + title: string; + link: string; + }; + + export type SerperRelatedSearch = { + query: string; + }; + + export type SerperSearchResponse = { + searchParameters: SerperSearchParameters; + answerBox?: SerperAnswerBox; + organic: SerperOrganicResult[]; + peopleAlsoAsk: SerperPeopleAlsoAsk[]; + relatedSearches: SerperRelatedSearch[]; + credits: number; + }; + + export enum ServiceType { IMAGE_DESCRIPTION = "image_description", TRANSCRIPTION = "transcription", diff --git a/packages/plugin-coinbase/src/plugins/trades.csv b/packages/plugin-coinbase/src/plugins/trades.csv new file mode 100644 index 00000000000..669e45ed68b --- /dev/null +++ b/packages/plugin-coinbase/src/plugins/trades.csv @@ -0,0 +1,2 @@ +Network,From Amount,Source Asset,To Amount,Target Asset,Status,Transaction URL + diff --git a/packages/plugin-web-search/package.json b/packages/plugin-web-search/package.json index ab0b91ecb4c..5b1d7bb96a7 100644 --- a/packages/plugin-web-search/package.json +++ b/packages/plugin-web-search/package.json @@ -20,6 +20,7 @@ ], "dependencies": { "@elizaos/core": "workspace:*", + "axios": "^1.7.9", "tsup": "8.3.5" }, "scripts": { diff --git a/packages/plugin-web-search/src/index.ts b/packages/plugin-web-search/src/index.ts index 528e2609045..01ac3167521 100644 --- a/packages/plugin-web-search/src/index.ts +++ b/packages/plugin-web-search/src/index.ts @@ -1,14 +1,11 @@ -import { elizaLogger } from "@elizaos/core"; import { - Action, + Action, elizaLogger, generateSerperSearch, HandlerCallback, IAgentRuntime, Memory, Plugin, - State, + SerperOrganicResult, State } from "@elizaos/core"; -import { generateWebSearch } from "@elizaos/core"; -import { SearchResult } from "@elizaos/core"; import { encodingForModel, TiktokenModel } from "js-tiktoken"; const DEFAULT_MAX_WEB_SEARCH_TOKENS = 4000; @@ -68,30 +65,57 @@ const webSearch: Action = { elizaLogger.log("web search prompt received:", webSearchPrompt); elizaLogger.log("Generating image with prompt:", webSearchPrompt); - const searchResponse = await generateWebSearch( - webSearchPrompt, + // const searchResponse = await generateWebSearch( + // webSearchPrompt, + // runtime + // ); + const cleansePrompt = webSearchPrompt.replace(/@\S+/g, ''); + const serperResponse = await generateSerperSearch( + cleansePrompt, runtime ); - if (searchResponse && searchResponse.results.length) { - const responseList = searchResponse.answer - ? `${searchResponse.answer}${ - Array.isArray(searchResponse.results) && - searchResponse.results.length > 0 - ? `\n\nFor more details, you can check out these resources:\n${searchResponse.results - .map( - (result: SearchResult, index: number) => - `${index + 1}. [${result.title}](${result.url})` - ) - .join("\n")}` - : "" - }` - : ""; + if(serperResponse && serperResponse.organic.length){ + const responseList = serperResponse?.answerBox?.snippet + ? `${serperResponse.answerBox.snippet}${ + Array.isArray(serperResponse.organic) && + serperResponse.organic.length > 0 + ? `\n\nFor more details, you can check out these resources:\n${serperResponse.organic + .map( + (result: SerperOrganicResult, index: number) => + `${index + 1}. [${result.title}](${result.link})` + ) + .join("\n")}` + : "" + }` + : ( + serperResponse.organic.length > 0 ? serperResponse.organic[0].snippet : "" + ); callback({ text: MaxTokens(responseList, DEFAULT_MAX_WEB_SEARCH_TOKENS), }); - } else { + } + // else if (searchResponse && searchResponse.results.length) { + // const responseList = searchResponse.answer + // ? `${searchResponse.answer}${ + // Array.isArray(searchResponse.results) && + // searchResponse.results.length > 0 + // ? `\n\nFor more details, you can check out these resources:\n${searchResponse.results + // .map( + // (result: SearchResult, index: number) => + // `${index + 1}. [${result.title}](${result.url})` + // ) + // .join("\n")}` + // : "" + // }` + // : ""; + + // callback({ + // text: MaxTokens(responseList, DEFAULT_MAX_WEB_SEARCH_TOKENS), + // }); + // } + else { elizaLogger.error("search failed or returned no data."); } }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 90f147c715c..4508adcad81 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,10 +22,13 @@ importers: version: 3.9.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@vitest/eslint-plugin': specifier: 1.0.1 - version: 1.0.1(@typescript-eslint/utils@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(vitest@2.1.5(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + version: 1.0.1(@typescript-eslint/utils@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(vitest@2.1.5(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) amqplib: specifier: 0.10.5 version: 0.10.5 + axios: + specifier: ^1.7.9 + version: 1.7.9(debug@4.4.0) csv-parse: specifier: 5.6.0 version: 5.6.0 @@ -47,7 +50,7 @@ importers: devDependencies: '@commitlint/cli': specifier: 18.6.1 - version: 18.6.1(@types/node@22.10.4)(typescript@5.6.3) + version: 18.6.1(@types/node@22.10.5)(typescript@5.6.3) '@commitlint/config-conventional': specifier: 18.6.3 version: 18.6.3 @@ -74,7 +77,7 @@ importers: version: 9.1.7 lerna: specifier: 8.1.5 - version: 8.1.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(encoding@0.1.13) + version: 8.1.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(encoding@0.1.13) only-allow: specifier: 1.2.1 version: 1.2.1 @@ -95,10 +98,10 @@ importers: version: 2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) vite: specifier: 5.4.11 - version: 5.4.11(@types/node@22.10.4)(terser@5.37.0) + version: 5.4.11(@types/node@22.10.5)(terser@5.37.0) vitest: specifier: 2.1.5 - version: 2.1.5(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) + version: 2.1.5(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) agent: dependencies: @@ -246,16 +249,16 @@ importers: version: 29.5.14 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + version: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@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))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)))(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))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)))(typescript@5.6.3) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3) + version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) client: dependencies: @@ -300,10 +303,10 @@ importers: version: 2.5.5 tailwindcss-animate: specifier: 1.0.7 - version: 1.0.7(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3))) + version: 1.0.7(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3))) vite-plugin-top-level-await: specifier: 1.4.4 - version: 1.4.4(@swc/helpers@0.5.15)(rollup@4.29.1)(vite@client+@tanstack+router-plugin+vite) + version: 1.4.4(@swc/helpers@0.5.15)(rollup@4.30.1)(vite@client+@tanstack+router-plugin+vite) vite-plugin-wasm: specifier: 3.3.0 version: 3.3.0(vite@client+@tanstack+router-plugin+vite) @@ -340,7 +343,7 @@ importers: version: 8.4.49 tailwindcss: specifier: 3.4.15 - version: 3.4.15(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) + version: 3.4.15(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) typescript: specifier: 5.6.3 version: 5.6.3 @@ -355,22 +358,25 @@ importers: dependencies: '@docusaurus/core': specifier: 3.6.3 - version: 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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': 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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + 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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-docs': specifier: 3.6.3 - version: 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-ideal-image': specifier: 3.6.3 - version: 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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) + version: 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.18.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.19.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-common': + 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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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-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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + 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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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': specifier: 3.0.1 version: 3.0.1(@types/react@18.3.12)(react@18.3.1) @@ -379,10 +385,13 @@ importers: version: 2.1.1 docusaurus-lunr-search: specifier: 3.5.0 - version: 3.5.0(@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.5.0(@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) dotenv: specifier: ^16.4.7 version: 16.4.7 + lunr: + specifier: 2.3.9 + version: 2.3.9 prism-react-renderer: specifier: 2.3.1 version: 2.3.1(react@18.3.1) @@ -398,10 +407,10 @@ importers: devDependencies: '@docusaurus/module-type-aliases': specifier: 3.6.3 - version: 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/types': specifier: 3.6.3 - version: 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) docusaurus-plugin-typedoc: specifier: 1.0.5 version: 1.0.5(typedoc-plugin-markdown@4.2.10(typedoc@0.26.11(typescript@5.6.3))) @@ -426,7 +435,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/adapter-redis: dependencies: @@ -445,7 +454,7 @@ importers: version: 5.0.0 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/adapter-sqlite: dependencies: @@ -467,7 +476,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/adapter-sqljs: dependencies: @@ -489,7 +498,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/adapter-supabase: dependencies: @@ -505,7 +514,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/client-auto: dependencies: @@ -536,7 +545,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/client-direct: dependencies: @@ -579,7 +588,7 @@ importers: version: 1.4.12 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/client-discord: dependencies: @@ -616,7 +625,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/client-farcaster: dependencies: @@ -625,11 +634,11 @@ importers: version: link:../core '@neynar/nodejs-sdk': specifier: ^2.0.3 - version: 2.7.0(bufferutil@4.0.9)(class-transformer@0.5.1)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + version: 2.8.0(bufferutil@4.0.9)(class-transformer@0.5.1)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) devDependencies: tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/client-github: dependencies: @@ -654,7 +663,7 @@ importers: version: 8.1.0 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/client-lens: dependencies: @@ -673,7 +682,7 @@ importers: devDependencies: tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/client-slack: dependencies: @@ -716,22 +725,22 @@ importers: version: 29.5.14 '@types/node': specifier: ^18.15.11 - version: 18.19.69 + version: 18.19.70 jest: specifier: ^29.5.0 - version: 29.7.0(@types/node@18.19.69)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)) + version: 29.7.0(@types/node@18.19.70)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) rimraf: specifier: ^5.0.0 version: 5.0.10 ts-jest: specifier: ^29.1.0 - 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@18.19.69)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)))(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@18.19.70)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)))(typescript@5.6.3) ts-node: specifier: ^10.9.1 - version: 10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3) + version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3) tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) typescript: specifier: ^5.0.0 version: 5.6.3 @@ -753,7 +762,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/client-twitter: dependencies: @@ -775,7 +784,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/core: dependencies: @@ -805,7 +814,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.16.1))(svelte@5.16.1)(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.17.3))(svelte@5.17.3)(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) @@ -917,7 +926,7 @@ importers: version: 16.4.5 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) + version: 29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) lint-staged: specifier: 15.2.10 version: 15.2.10 @@ -935,16 +944,16 @@ importers: version: 2.79.2 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@22.8.4)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)))(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@22.8.4)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)))(typescript@5.6.3) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3) + version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3) tslib: specifier: 2.8.1 version: 2.8.1 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) typescript: specifier: 5.6.3 version: 5.6.3 @@ -981,7 +990,7 @@ importers: version: 6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/plugin-3d-generation: dependencies: @@ -990,7 +999,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1002,7 +1011,7 @@ importers: version: link:../core tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) web3: specifier: ^4.15.0 version: 4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) @@ -1032,10 +1041,10 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) vitest: specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) + version: 2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1051,7 +1060,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/plugin-bootstrap: dependencies: @@ -1060,7 +1069,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1091,7 +1100,7 @@ importers: version: 20.17.9 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/plugin-conflux: dependencies: @@ -1112,13 +1121,13 @@ importers: version: link:../plugin-trustdb tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) web3: specifier: ^4.15.0 version: 4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) web3-plugin-zksync: specifier: ^1.0.8 - version: 1.0.8(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.10.4)(typescript@5.6.3))(typescript@5.6.3)(utf-8-validate@5.0.10)(web3@4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) + version: 1.0.8(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.6.3))(typescript@5.6.3)(utf-8-validate@5.0.10)(web3@4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1151,30 +1160,11 @@ importers: version: 16.3.0 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 - packages/plugin-ferePro: - dependencies: - '@elizaos/core': - specifier: ^0.1.7-alpha.1 - version: 0.1.7-alpha.2(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.27(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.16.1))(svelte@5.16.1) - tsup: - specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) - ws: - specifier: ^8.18.0 - version: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - devDependencies: - '@types/ws': - specifier: ^8.5.13 - version: 8.5.13 - tsx: - specifier: ^4.19.2 - version: 4.19.2 - packages/plugin-flow: dependencies: '@elizaos/core': @@ -1185,7 +1175,7 @@ importers: version: 1.5.1 '@onflow/fcl': specifier: 1.13.1 - version: 1.13.1(@types/react@18.3.12)(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(tsx@4.19.2)(utf-8-validate@5.0.10) + version: 1.13.1(@types/react@18.3.12)(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(utf-8-validate@5.0.10) '@onflow/typedefs': specifier: 1.4.0 version: 1.4.0 @@ -1222,10 +1212,10 @@ importers: version: 10.0.0 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) vitest: specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) + version: 2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) packages/plugin-fuel: dependencies: @@ -1237,13 +1227,13 @@ importers: version: 4.0.1 fuels: specifier: 0.97.2 - version: 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + version: 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) vitest: specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) + version: 2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1255,7 +1245,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/plugin-goat: dependencies: @@ -1264,7 +1254,7 @@ importers: version: link:../core '@goat-sdk/adapter-vercel-ai': specifier: 0.2.0 - version: 0.2.0(@goat-sdk/core@0.4.0)(ai@3.4.33(openai@4.77.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.16.1))(svelte@5.16.1)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8)) + version: 0.2.0(@goat-sdk/core@0.4.0)(ai@3.4.33(openai@4.78.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8)) '@goat-sdk/core': specifier: 0.4.0 version: 0.4.0 @@ -1282,7 +1272,7 @@ importers: version: 0.2.0(@goat-sdk/wallet-evm@0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10))(viem@2.21.53(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) viem: specifier: 2.21.53 version: 2.21.53(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) @@ -1313,10 +1303,10 @@ importers: version: 29.5.14 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@22.10.4) + version: 29.7.0(@types/node@22.10.5) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) typescript: specifier: 5.6.3 version: 5.6.3 @@ -1328,7 +1318,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1346,7 +1336,7 @@ importers: version: 1.0.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1373,10 +1363,10 @@ importers: version: 2.1.1 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) vitest: specifier: 2.1.5 - version: 2.1.5(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) + version: 2.1.5(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1403,7 +1393,7 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1448,7 +1438,7 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1457,10 +1447,10 @@ importers: dependencies: '@aws-sdk/client-s3': specifier: ^3.705.0 - version: 3.721.0 + version: 3.726.0 '@aws-sdk/s3-request-presigner': specifier: ^3.705.0 - version: 3.721.0 + version: 3.726.0 '@cliqz/adblocker-playwright': specifier: 1.34.0 version: 1.34.0(playwright@1.48.2) @@ -1629,7 +1619,7 @@ importers: version: 22.8.4 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/plugin-solana: dependencies: @@ -1671,13 +1661,13 @@ importers: version: 5.1.2 pumpdotfun-sdk: specifier: 1.3.2 - version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.29.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.6.3)(utf-8-validate@5.0.10) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) vitest: specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) + version: 2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1704,13 +1694,13 @@ importers: version: 6.18.0(encoding@0.1.13) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) unruggable-sdk: specifier: 1.4.0 version: 1.4.0(starknet@6.18.0(encoding@0.1.13)) vitest: specifier: 2.1.5 - version: 2.1.5(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) + version: 2.1.5(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1731,14 +1721,14 @@ importers: version: 1.2.0-rc.3(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 devDependencies: '@types/node': specifier: ^22.10.1 - version: 22.10.4 + version: 22.10.5 packages/plugin-sui: dependencies: @@ -1750,7 +1740,7 @@ importers: version: link:../plugin-trustdb '@mysten/sui': specifier: ^1.16.0 - version: 1.18.0(typescript@5.6.3) + version: 1.18.1(typescript@5.6.3) bignumber: specifier: 1.1.0 version: 1.1.0 @@ -1765,10 +1755,10 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) vitest: specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) + version: 2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1801,10 +1791,10 @@ importers: version: 5.1.2 pumpdotfun-sdk: specifier: 1.3.2 - version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.29.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.6.3)(utf-8-validate@5.0.10) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1834,7 +1824,7 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1849,13 +1839,13 @@ importers: version: 3.2.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) uuid: specifier: 11.0.3 version: 11.0.3 vitest: specifier: 2.1.5 - version: 2.1.5(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) + version: 2.1.5(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1874,7 +1864,7 @@ importers: version: 0.0.17 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) packages/plugin-video-generation: dependencies: @@ -1883,7 +1873,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1893,9 +1883,12 @@ importers: '@elizaos/core': specifier: workspace:* version: link:../core + axios: + specifier: ^1.7.9 + version: 1.7.9(debug@4.4.0) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1923,10 +1916,10 @@ importers: version: 8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3) jest: specifier: 29.7.0 - version: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + version: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@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))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)))(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))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@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 @@ -1941,13 +1934,13 @@ importers: version: link:../plugin-trustdb tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) web3: specifier: ^4.15.0 version: 4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) web3-plugin-zksync: specifier: ^1.0.8 - version: 1.0.8(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.10.4)(typescript@5.6.3))(typescript@5.6.3)(utf-8-validate@5.0.10)(web3@4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) + version: 1.0.8(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.6.3))(typescript@5.6.3)(utf-8-validate@5.0.10)(web3@4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1959,8 +1952,8 @@ packages: peerDependencies: ethers: 6.13.1 - '@0no-co/graphql.web@1.0.12': - resolution: {integrity: sha512-BTDjjsV/zSPy5fqItwm+KWUfh9CSe9tTtR6rCB72ddtkAxdcHbi4Ir4r/L1Et4lyxmL+i7Rb3m9sjLLi9tYrzA==} + '@0no-co/graphql.web@1.0.13': + resolution: {integrity: sha512-jqYxOevheVTU1S36ZdzAkJIdvRp2m3OYIG5SEoKDw5NI8eVwkoI0D/Q3DYNGmXCxkA6CQuoa7zvMiDPTLqUNuw==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 peerDependenciesMeta: @@ -2130,8 +2123,8 @@ packages: '@algolia/cache-in-memory@4.24.0': resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==} - '@algolia/client-abtesting@5.18.0': - resolution: {integrity: sha512-DLIrAukjsSrdMNNDx1ZTks72o4RH/1kOn8Wx5zZm8nnqFexG+JzY4SANnCNEjnFQPJTTvC+KpgiNW/CP2lumng==} + '@algolia/client-abtesting@5.19.0': + resolution: {integrity: sha512-dMHwy2+nBL0SnIsC1iHvkBao64h4z+roGelOz11cxrDBrAdASxLxmfVMop8gmodQ2yZSacX0Rzevtxa+9SqxCw==} engines: {node: '>= 14.0.0'} '@algolia/client-account@4.24.0': @@ -2140,44 +2133,44 @@ packages: '@algolia/client-analytics@4.24.0': resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==} - '@algolia/client-analytics@5.18.0': - resolution: {integrity: sha512-0VpGG2uQW+h2aejxbG8VbnMCQ9ary9/ot7OASXi6OjE0SRkYQ/+pkW+q09+IScif3pmsVVYggmlMPtAsmYWHng==} + '@algolia/client-analytics@5.19.0': + resolution: {integrity: sha512-CDW4RwnCHzU10upPJqS6N6YwDpDHno7w6/qXT9KPbPbt8szIIzCHrva4O9KIfx1OhdsHzfGSI5hMAiOOYl4DEQ==} engines: {node: '>= 14.0.0'} '@algolia/client-common@4.24.0': resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==} - '@algolia/client-common@5.18.0': - resolution: {integrity: sha512-X1WMSC+1ve2qlMsemyTF5bIjwipOT+m99Ng1Tyl36ZjQKTa54oajBKE0BrmM8LD8jGdtukAgkUhFoYOaRbMcmQ==} + '@algolia/client-common@5.19.0': + resolution: {integrity: sha512-2ERRbICHXvtj5kfFpY5r8qu9pJII/NAHsdgUXnUitQFwPdPL7wXiupcvZJC7DSntOnE8AE0lM7oDsPhrJfj5nQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.18.0': - resolution: {integrity: sha512-FAJRNANUOSs/FgYOJ/Njqp+YTe4TMz2GkeZtfsw1TMiA5mVNRS/nnMpxas9771aJz7KTEWvK9GwqPs0K6RMYWg==} + '@algolia/client-insights@5.19.0': + resolution: {integrity: sha512-xPOiGjo6I9mfjdJO7Y+p035aWePcbsItizIp+qVyfkfZiGgD+TbNxM12g7QhFAHIkx/mlYaocxPY/TmwPzTe+A==} engines: {node: '>= 14.0.0'} '@algolia/client-personalization@4.24.0': resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==} - '@algolia/client-personalization@5.18.0': - resolution: {integrity: sha512-I2dc94Oiwic3SEbrRp8kvTZtYpJjGtg5y5XnqubgnA15AgX59YIY8frKsFG8SOH1n2rIhUClcuDkxYQNXJLg+w==} + '@algolia/client-personalization@5.19.0': + resolution: {integrity: sha512-B9eoce/fk8NLboGje+pMr72pw+PV7c5Z01On477heTZ7jkxoZ4X92dobeGuEQop61cJ93Gaevd1of4mBr4hu2A==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.18.0': - resolution: {integrity: sha512-x6XKIQgKFTgK/bMasXhghoEjHhmgoP61pFPb9+TaUJ32aKOGc65b12usiGJ9A84yS73UDkXS452NjyP50Knh/g==} + '@algolia/client-query-suggestions@5.19.0': + resolution: {integrity: sha512-6fcP8d4S8XRDtVogrDvmSM6g5g6DndLc0pEm1GCKe9/ZkAzCmM3ZmW1wFYYPxdjMeifWy1vVEDMJK7sbE4W7MA==} engines: {node: '>= 14.0.0'} '@algolia/client-search@4.24.0': resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==} - '@algolia/client-search@5.18.0': - resolution: {integrity: sha512-qI3LcFsVgtvpsBGR7aNSJYxhsR+Zl46+958ODzg8aCxIcdxiK7QEVLMJMZAR57jGqW0Lg/vrjtuLFDMfSE53qA==} + '@algolia/client-search@5.19.0': + resolution: {integrity: sha512-Ctg3xXD/1VtcwmkulR5+cKGOMj4r0wC49Y/KZdGQcqpydKn+e86F6l3tb3utLJQVq4lpEJud6kdRykFgcNsp8Q==} engines: {node: '>= 14.0.0'} '@algolia/events@4.0.1': resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} - '@algolia/ingestion@1.18.0': - resolution: {integrity: sha512-bGvJg7HnGGm+XWYMDruZXWgMDPVt4yCbBqq8DM6EoaMBK71SYC4WMfIdJaw+ABqttjBhe6aKNRkWf/bbvYOGyw==} + '@algolia/ingestion@1.19.0': + resolution: {integrity: sha512-LO7w1MDV+ZLESwfPmXkp+KLeYeFrYEgtbCZG6buWjddhYraPQ9MuQWLhLLiaMlKxZ/sZvFTcZYuyI6Jx4WBhcg==} engines: {node: '>= 14.0.0'} '@algolia/logger-common@4.24.0': @@ -2186,36 +2179,36 @@ packages: '@algolia/logger-console@4.24.0': resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==} - '@algolia/monitoring@1.18.0': - resolution: {integrity: sha512-lBssglINIeGIR+8KyzH05NAgAmn1BCrm5D2T6pMtr/8kbTHvvrm1Zvcltc5dKUQEFyyx3J5+MhNc7kfi8LdjVw==} + '@algolia/monitoring@1.19.0': + resolution: {integrity: sha512-Mg4uoS0aIKeTpu6iv6O0Hj81s8UHagi5TLm9k2mLIib4vmMtX7WgIAHAcFIaqIZp5D6s5EVy1BaDOoZ7buuJHA==} engines: {node: '>= 14.0.0'} '@algolia/recommend@4.24.0': resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==} - '@algolia/recommend@5.18.0': - resolution: {integrity: sha512-uSnkm0cdAuFwdMp4pGT5vHVQ84T6AYpTZ3I0b3k/M3wg4zXDhl3aCiY8NzokEyRLezz/kHLEEcgb/tTTobOYVw==} + '@algolia/recommend@5.19.0': + resolution: {integrity: sha512-PbgrMTbUPlmwfJsxjFhal4XqZO2kpBNRjemLVTkUiti4w/+kzcYO4Hg5zaBgVqPwvFDNQ8JS4SS3TBBem88u+g==} engines: {node: '>= 14.0.0'} '@algolia/requester-browser-xhr@4.24.0': resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==} - '@algolia/requester-browser-xhr@5.18.0': - resolution: {integrity: sha512-1XFjW0C3pV0dS/9zXbV44cKI+QM4ZIz9cpatXpsjRlq6SUCpLID3DZHsXyE6sTb8IhyPaUjk78GEJT8/3hviqg==} + '@algolia/requester-browser-xhr@5.19.0': + resolution: {integrity: sha512-GfnhnQBT23mW/VMNs7m1qyEyZzhZz093aY2x8p0era96MMyNv8+FxGek5pjVX0b57tmSCZPf4EqNCpkGcGsmbw==} engines: {node: '>= 14.0.0'} '@algolia/requester-common@4.24.0': resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==} - '@algolia/requester-fetch@5.18.0': - resolution: {integrity: sha512-0uodeNdAHz1YbzJh6C5xeQ4T6x5WGiUxUq3GOaT/R4njh5t78dq+Rb187elr7KtnjUmETVVuCvmEYaThfTHzNg==} + '@algolia/requester-fetch@5.19.0': + resolution: {integrity: sha512-oyTt8ZJ4T4fYvW5avAnuEc6Laedcme9fAFryMD9ndUTIUe/P0kn3BuGcCLFjN3FDmdrETHSFkgPPf1hGy3sLCw==} engines: {node: '>= 14.0.0'} '@algolia/requester-node-http@4.24.0': resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==} - '@algolia/requester-node-http@5.18.0': - resolution: {integrity: sha512-tZCqDrqJ2YE2I5ukCQrYN8oiF6u3JIdCxrtKq+eniuLkjkO78TKRnXrVcKZTmfFJyyDK8q47SfDcHzAA3nHi6w==} + '@algolia/requester-node-http@5.19.0': + resolution: {integrity: sha512-p6t8ue0XZNjcRiqNkb5QAM0qQRAKsCiebZ6n9JjWA+p8fWf8BvnhO55y2fO28g3GW0Imj7PrAuyBuxq8aDVQwQ==} engines: {node: '>= 14.0.0'} '@algolia/transporter@4.24.0': @@ -2271,6 +2264,9 @@ packages: resolution: {integrity: sha512-d6nWtUI//fyEN8DeLjm3+ro87Ad6+IKwR9pCqfrs/Azahso1xR1Llxd/O6fj/m1DDsuDj/HAsCsy5TC/aKD6Eg==} engines: {node: '>=11.0.0'} + '@asamuzakjp/css-color@2.8.2': + resolution: {integrity: sha512-RtWv9jFN2/bLExuZgFFZ0I3pWWeezAHGgrmjqGGWclATl1aDe3yhCUaI0Ilkp6OCk9zX7+FjvDasEX8Q9Rxc5w==} + '@avnu/avnu-sdk@2.1.1': resolution: {integrity: sha512-y/r/pVT2pU33fGHNVE7A5UIAqQhjEXYQhUh7EodY1s5H7mhRd5U8zHOtI5z6vmpuSnUv0hSvOmmgz8HTuwZ7ew==} engines: {node: '>=18'} @@ -2302,177 +2298,177 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-polly@3.721.0': - resolution: {integrity: sha512-SCTx9DKOnfEKyWb6bx5J7aeowBig8QmiqOJlE0sMM/pbpF70YGC/ugk1/yFJAJlAkoDadtRvseFpwLvrg7N73Q==} - engines: {node: '>=16.0.0'} + '@aws-sdk/client-polly@3.726.0': + resolution: {integrity: sha512-vhPUddycCdFupNeksBgMR4WN//LbNQzhHbV41LgDYShd1Ea3QmfGPij+yCIZWmCtmv9y0sWnRTydXKAlmE1Vsw==} + engines: {node: '>=18.0.0'} - '@aws-sdk/client-s3@3.721.0': - resolution: {integrity: sha512-uCZC8elYhUFF21yq1yB5TrE/VYz8A4/VnttUHc65/jqnHReTDvEC0XAc756tJnjfrReyM1ws12FzBLHoW/NDjg==} - engines: {node: '>=16.0.0'} + '@aws-sdk/client-s3@3.726.0': + resolution: {integrity: sha512-cxn2WvOCfGrME2xygWbfj/vIf2sIdv/UbQ9zJbN4aK6rpYQf/e/YtY/HIPkejCuw2Iwqm4jfDGFqaUcwu3nFew==} + engines: {node: '>=18.0.0'} - '@aws-sdk/client-sso-oidc@3.721.0': - resolution: {integrity: sha512-jwsgdUEbNJqs1O0AQtf9M6SI7hFIjxH+IKeKCMca0xVt+Tr1UqLr/qMK/6W8LoMtRFnE0lpBSHW6hvmLp2OCoQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/client-sso-oidc@3.726.0': + resolution: {integrity: sha512-5JzTX9jwev7+y2Jkzjz0pd1wobB5JQfPOQF3N2DrJ5Pao0/k6uRYwE4NqB0p0HlGrMTDm7xNq7OSPPIPG575Jw==} + engines: {node: '>=18.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.721.0 + '@aws-sdk/client-sts': ^3.726.0 - '@aws-sdk/client-sso@3.721.0': - resolution: {integrity: sha512-UrYAF4ilpO2cZBFddQmbETfo0xKP3CEcantcMQTc0xPY3quHLZhYuBiRae+McWi6yZpH4ErnFZIWeKSJ2OQgqQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/client-sso@3.726.0': + resolution: {integrity: sha512-NM5pjv2qglEc4XN3nnDqtqGsSGv1k5YTmzDo3W3pObItHmpS8grSeNfX9zSH+aVl0Q8hE4ZIgvTPNZ+GzwVlqg==} + engines: {node: '>=18.0.0'} - '@aws-sdk/client-sts@3.721.0': - resolution: {integrity: sha512-1Pv8F02hQFmPZs7WtGfQNlnInbG1lLzyngJc/MlZ3Ld2fIoWjaWp7bJWgYAjnzHNEuDtCabWJvIfePdRqsbYoA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/client-sts@3.726.0': + resolution: {integrity: sha512-047EqXv2BAn/43eP92zsozPnR3paFFMsj5gjytx9kGNtp+WV0fUZNztCOobtouAxBY0ZQ8Xx5RFnmjpRb6Kjsg==} + engines: {node: '>=18.0.0'} - '@aws-sdk/client-transcribe-streaming@3.721.0': - resolution: {integrity: sha512-8imB8tEHfUW597yGM6/qRmBXyRYNPp7bddBg67g6AHzj/UG0xI1EQZzyBntUyy/sQzvMgcPoUoYdFHdfQWQ7vw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/client-transcribe-streaming@3.726.0': + resolution: {integrity: sha512-RT17D/lzkMCkLMqiWFMfZRxJzlOQQhAdx+IXE3SuauGHu1iSULpsifewJsLlfE72K9On5QbbVKGU7RcUScV+GQ==} + engines: {node: '>=18.0.0'} - '@aws-sdk/core@3.716.0': - resolution: {integrity: sha512-5DkUiTrbyzO8/W4g7UFEqRFpuhgizayHI/Zbh0wtFMcot8801nJV+MP/YMhdjimlvAr/OqYB08FbGsPyWppMTw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/core@3.723.0': + resolution: {integrity: sha512-UraXNmvqj3vScSsTkjMwQkhei30BhXlW5WxX6JacMKVtl95c7z0qOXquTWeTalYkFfulfdirUhvSZrl+hcyqTw==} + engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-env@3.716.0': - resolution: {integrity: sha512-JI2KQUnn2arICwP9F3CnqP1W3nAbm4+meQg/yOhp9X0DMzQiHrHRd4HIrK2vyVgi2/6hGhONY5uLF26yRTA7nQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-env@3.723.0': + resolution: {integrity: sha512-OuH2yULYUHTVDUotBoP/9AEUIJPn81GQ/YBtZLoo2QyezRJ2QiO/1epVtbJlhNZRwXrToLEDmQGA2QfC8c7pbA==} + engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-http@3.716.0': - resolution: {integrity: sha512-CZ04pl2z7igQPysQyH2xKZHM3fLwkemxQbKOlje3TmiS1NwXvcKvERhp9PE/H23kOL7beTM19NMRog/Fka/rlw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-http@3.723.0': + resolution: {integrity: sha512-DTsKC6xo/kz/ZSs1IcdbQMTgiYbpGTGEd83kngFc1bzmw7AmK92DBZKNZpumf8R/UfSpTcj9zzUUmrWz1kD0eQ==} + engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-ini@3.721.0': - resolution: {integrity: sha512-8J/c2rI+4ZoduBCnPurfdblqs2DyRvL9ztqzzOWWEhLccoYZzYeAMwBapEAsiVsD1iNrIGY7LRDC4TsVmJBf6Q==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-ini@3.726.0': + resolution: {integrity: sha512-seTtcKL2+gZX6yK1QRPr5mDJIBOatrpoyrO8D5b8plYtV/PDbDW3mtDJSWFHet29G61ZmlNElyXRqQCXn9WX+A==} + engines: {node: '>=18.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.721.0 + '@aws-sdk/client-sts': ^3.726.0 - '@aws-sdk/credential-provider-node@3.721.0': - resolution: {integrity: sha512-D6xodzdMjVhF9xRhy9gNf0gqP0Dek9fQ6BDZzqO/i54d7CjWHVZTADcVcxjLQq6nyUNf0QPf8UXLaqi+w25GGQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-node@3.726.0': + resolution: {integrity: sha512-jjsewBcw/uLi24x8JbnuDjJad4VA9ROCE94uVRbEnGmUEsds75FWOKp3fWZLQlmjLtzsIbJOZLALkZP86liPaw==} + engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-process@3.716.0': - resolution: {integrity: sha512-0spcu2MWVVHSTHH3WE2E//ttUJPwXRM3BCp+WyI41xLzpNu1Fd8zjOrDpEo0SnGUzsSiRTIJWgkuu/tqv9NJ2A==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-process@3.723.0': + resolution: {integrity: sha512-fgupvUjz1+jeoCBA7GMv0L6xEk92IN6VdF4YcFhsgRHlHvNgm7ayaoKQg7pz2JAAhG/3jPX6fp0ASNy+xOhmPA==} + engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-sso@3.721.0': - resolution: {integrity: sha512-v7npnYqfuY1vdcb0/F4Mcz+mcFyZaYry9qXhSRCPIbLPe2PRV4E4HXIaPKmir8PhuRLEGs0QJWhvIWr7u6holQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-sso@3.726.0': + resolution: {integrity: sha512-WxkN76WeB08j2yw7jUH9yCMPxmT9eBFd9ZA/aACG7yzOIlsz7gvG3P2FQ0tVg25GHM0E4PdU3p/ByTOawzcOAg==} + engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-web-identity@3.716.0': - resolution: {integrity: sha512-vzgpWKs2gGXZGdbMKRFrMW4PqEFWkGvwWH2T7ZwQv9m+8lQ7P4Dk2uimqu0f37HZAbpn8HFMqRh4CaySjU354A==} - engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-web-identity@3.723.0': + resolution: {integrity: sha512-tl7pojbFbr3qLcOE6xWaNCf1zEfZrIdSJtOPeSXfV/thFMMAvIjgf3YN6Zo1a6cxGee8zrV/C8PgOH33n+Ev/A==} + engines: {node: '>=18.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.716.0 + '@aws-sdk/client-sts': ^3.723.0 - '@aws-sdk/eventstream-handler-node@3.714.0': - resolution: {integrity: sha512-zCEegowS+LCrPdUgGUQPX8PBUFbyBifyOuA0VieZwKYH0kIjthGxuM9QdAD7bf1rgW+3bBEchWsIJqpIp4JQkg==} - engines: {node: '>=16.0.0'} + '@aws-sdk/eventstream-handler-node@3.723.0': + resolution: {integrity: sha512-CekxhxMH1GQe/kuoZsNFE8eonvmHVifyDK1MWfePyEp82/XvqPFWSnKlhT+SqoC6JfsMLmhsyCP/qqr9Du0SbQ==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-bucket-endpoint@3.721.0': - resolution: {integrity: sha512-5UyoDoX3z3UhmetoqqqZulq2uF55Jyj9lUKAJWgTxVhDEG5TijTQS40LP9DqwRl0hJkoUUZKAwE0hwnUsiGXAg==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-bucket-endpoint@3.726.0': + resolution: {integrity: sha512-vpaP80rZqwu0C3ELayIcRIW84/nd1tadeoqllT+N9TDshuEvq4UJ+w47OBHB7RkHFJoc79lXXNYle0fdQdaE/A==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-eventstream@3.714.0': - resolution: {integrity: sha512-GCuRaujcT1b3TrjwvfJqBnXUbAPMySZuB017LnR3yaafLjIdefeL/ktbcZkCAsmY5hgrI9lFrJ/Cp/Y3z8qstg==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-eventstream@3.723.0': + resolution: {integrity: sha512-cL50YsgYSlAdAZf02iNwdHJuJHlgPyv/sePpt2PW5ZYSiE6A9/vqqptjDrUmUbpEw+ixmLD215OnyrnHN/MhEg==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-expect-continue@3.714.0': - resolution: {integrity: sha512-rlzsXdG8Lzo4Qpl35ZnpOBAWlzvDHpP9++0AXoUwAJA0QmMm7auIRmgxJuNj91VwT9h15ZU6xjU4S7fJl4W0+w==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-expect-continue@3.723.0': + resolution: {integrity: sha512-w/O0EkIzkiqvGu7U8Ke7tue0V0HYM5dZQrz6nVU+R8T2LddWJ+njEIHU4Wh8aHPLQXdZA5NQumv0xLPdEutykw==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.717.0': - resolution: {integrity: sha512-a5kY5r7/7bDZZlOQQGWOR1ulQewdtNexdW1Ex5DD0FLKlFY7RD0va24hxQ6BP7mWHol+Dx4pj6UQ8ahk0ap1tw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-flexible-checksums@3.723.0': + resolution: {integrity: sha512-JY76mrUCLa0FHeMZp8X9+KK6uEuZaRZaQrlgq6zkXX/3udukH0T3YdFC+Y9uw5ddbiwZ5+KwgmlhnPpiXKfP4g==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-host-header@3.714.0': - resolution: {integrity: sha512-6l68kjNrh5QC8FGX3I3geBDavWN5Tg1RLHJ2HLA8ByGBtJyCwnz3hEkKfaxn0bBx0hF9DzbfjEOUF6cDqy2Kjg==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-host-header@3.723.0': + resolution: {integrity: sha512-LLVzLvk299pd7v4jN9yOSaWDZDfH0SnBPb6q+FDPaOCMGBY8kuwQso7e/ozIKSmZHRMGO3IZrflasHM+rI+2YQ==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-location-constraint@3.714.0': - resolution: {integrity: sha512-MX7M+V+FblujKck3fyuzePVIAy9530gY719IiSxV6uN1qLHl7VDJxNblpF/KpXakD6rOg8OpvtmqsXj9aBMftw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-location-constraint@3.723.0': + resolution: {integrity: sha512-inp9tyrdRWjGOMu1rzli8i2gTo0P4X6L7nNRXNTKfyPNZcBimZ4H0H1B671JofSI5isaklVy5r4pvv2VjjLSHw==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-logger@3.714.0': - resolution: {integrity: sha512-RkqHlMvQWUaRklU1bMfUuBvdWwxgUtEqpADaHXlGVj3vtEY2UgBjy+57CveC4MByqKIunNvVHBBbjrGVtwY7Lg==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-logger@3.723.0': + resolution: {integrity: sha512-chASQfDG5NJ8s5smydOEnNK7N0gDMyuPbx7dYYcm1t/PKtnVfvWF+DHCTrRC2Ej76gLJVCVizlAJKM8v8Kg3cg==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-recursion-detection@3.714.0': - resolution: {integrity: sha512-AVU5ixnh93nqtsfgNc284oXsXaadyHGPHpql/jwgaaqQfEXjS/1/j3j9E/vpacfTTz2Vzo7hAOjnvrOXSEVDaA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-recursion-detection@3.723.0': + resolution: {integrity: sha512-7usZMtoynT9/jxL/rkuDOFQ0C2mhXl4yCm67Rg7GNTstl67u7w5WN1aIRImMeztaKlw8ExjoTyo6WTs1Kceh7A==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-sdk-s3@3.716.0': - resolution: {integrity: sha512-Qzz5OfRA/5brqfvq+JHTInwS1EuJ1+tC6qMtwKWJN3czMnVJVdnnsPTf+G5IM/1yYaGEIjY8rC1ExQLcc8ApFQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-sdk-s3@3.723.0': + resolution: {integrity: sha512-wfjOvNJVp8LDWhq4wO5jtSMb8Vgf4tNlR7QTEQfoYc6AGU3WlK5xyUQcpfcpwytEhQTN9u0cJLQpSyXDO+qSCw==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-sdk-transcribe-streaming@3.714.0': - resolution: {integrity: sha512-2tHRZ5vgTxmyU8/6gRghj6vpMTD9OrlZod0PUrV5dTad+uPlNzkP8RzzTm+CgwlnEUW9oKeyJFxQeR9Hgn/lGw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-sdk-transcribe-streaming@3.723.0': + resolution: {integrity: sha512-0j1iix2wthdNTGtG1oFBH3vqhBeIpw+9IRiPA0xXE8xOsqhLBHVbLtqC8/7eMdDWJHNVQdOLlMlGAbcFo6/4Jw==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-ssec@3.714.0': - resolution: {integrity: sha512-RkK8REAVwNUQmYbIDRw8eYbMJ8F1Rw4C9mlME4BBMhFlelGcD3ErU2ce24moQbDxBjNwHNESmIqgmdQk93CDCQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-ssec@3.723.0': + resolution: {integrity: sha512-Bs+8RAeSMik6ZYCGSDJzJieGsDDh2fRbh1HQG94T8kpwBXVxMYihm6e9Xp2cyl+w9fyyCnh0IdCKChP/DvrdhA==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-user-agent@3.721.0': - resolution: {integrity: sha512-Z3Vksb970ArsfLlARW4KVpqO+pQ1cvvGTrTQPxWDsmOzg1kU92t9oWXGW+1M/x6bHbMQlI/EulQ/D8ZE/Pu46Q==} - engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-user-agent@3.726.0': + resolution: {integrity: sha512-hZvzuE5S0JmFie1r68K2wQvJbzyxJFdzltj9skgnnwdvLe8F/tz7MqLkm28uV0m4jeHk0LpiBo6eZaPkQiwsZQ==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-websocket@3.714.0': - resolution: {integrity: sha512-hzIkP5miXwqsr2KXFaxyGGEjGZ3yZVGTLcbsdA799FM6KDhxXSExaqUnbiruENX9Uev4od61Xx1hqXb3GNEalQ==} + '@aws-sdk/middleware-websocket@3.723.0': + resolution: {integrity: sha512-dmp1miRv3baZgRKRlgsfpghUMFx1bHDVPW39caKVVOQLxMWtDt8a6JKGnYm19ew2JmSe+p9h/khdq073bPFslw==} engines: {node: '>= 14.0.0'} - '@aws-sdk/region-config-resolver@3.714.0': - resolution: {integrity: sha512-HJzsQxgMOAzZrbf/YIqEx30or4tZK1oNAk6Wm6xecUQx+23JXIaePRu1YFUOLBBERQ4QBPpISFurZWBMZ5ibAw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/region-config-resolver@3.723.0': + resolution: {integrity: sha512-tGF/Cvch3uQjZIj34LY2mg8M2Dr4kYG8VU8Yd0dFnB1ybOEOveIK/9ypUo9ycZpB9oO6q01KRe5ijBaxNueUQg==} + engines: {node: '>=18.0.0'} - '@aws-sdk/s3-request-presigner@3.721.0': - resolution: {integrity: sha512-2ibKGssj2TAQyfthNihhBqWdwowlol9bDpKybIi2T6D8l2L9g0ENGLNE50MYzSFAQ3LcjzcvLQ/GByRPiuK+pQ==} - engines: {node: '>=16.0.0'} + '@aws-sdk/s3-request-presigner@3.726.0': + resolution: {integrity: sha512-7avBbUXYEii2qYxM2AFoCPVTt+AtSIFgq+Gk6/MLUOGId5KGCSkN3Y/4liVi3VLkvZ+ADg2JZqYQUrf3wgWsEQ==} + engines: {node: '>=18.0.0'} - '@aws-sdk/signature-v4-multi-region@3.716.0': - resolution: {integrity: sha512-k0goWotZKKz+kV6Ln0qeAMSeSVi4NipuIIz5R8A0uCF2zBK4CXWdZR7KeaIoLBhJwQnHj1UU7E+2MK74KIUBzA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/signature-v4-multi-region@3.723.0': + resolution: {integrity: sha512-lJlVAa5Sl589qO8lwMLVUtnlF1Q7I+6k1Iomv2goY9d1bRl4q2N5Pit2qJVr2AMW0sceQXeh23i2a/CKOqVAdg==} + engines: {node: '>=18.0.0'} - '@aws-sdk/token-providers@3.721.0': - resolution: {integrity: sha512-cIZmKdLeEWUzPR+2lA+JcZHPvaFf/Ih+s3LXBa/uQwRFdK+o7WfGRf7Oqe6yLRekO2jJJl4LBJXxDOH++M9+ag==} - engines: {node: '>=16.0.0'} + '@aws-sdk/token-providers@3.723.0': + resolution: {integrity: sha512-hniWi1x4JHVwKElANh9afKIMUhAutHVBRD8zo6usr0PAoj+Waf220+1ULS74GXtLXAPCiNXl5Og+PHA7xT8ElQ==} + engines: {node: '>=18.0.0'} peerDependencies: - '@aws-sdk/client-sso-oidc': ^3.721.0 + '@aws-sdk/client-sso-oidc': ^3.723.0 - '@aws-sdk/types@3.714.0': - resolution: {integrity: sha512-ZjpP2gYbSFlxxaUDa1Il5AVvfggvUPbjzzB/l3q0gIE5Thd6xKW+yzEpt2mLZ5s5UaYSABZbF94g8NUOF4CVGA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/types@3.723.0': + resolution: {integrity: sha512-LmK3kwiMZG1y5g3LGihT9mNkeNOmwEyPk6HGcJqh0wOSV4QpWoKu2epyKE4MLQNUUlz2kOVbVbOrwmI6ZcteuA==} + engines: {node: '>=18.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-arn-parser@3.723.0': + resolution: {integrity: sha512-ZhEfvUwNliOQROcAk34WJWVYTlTa4694kSVhDSjW6lE1bMataPnIN8A0ycukEzBXmd8ZSoBcQLn6lKGl7XIJ5w==} + engines: {node: '>=18.0.0'} - '@aws-sdk/util-endpoints@3.714.0': - resolution: {integrity: sha512-Xv+Z2lhe7w7ZZRsgBwBMZgGTVmS+dkkj2S13uNHAx9lhB5ovM8PhK5G/j28xYf6vIibeuHkRAbb7/ozdZIGR+A==} - engines: {node: '>=16.0.0'} + '@aws-sdk/util-endpoints@3.726.0': + resolution: {integrity: sha512-sLd30ASsPMoPn3XBK50oe/bkpJ4N8Bpb7SbhoxcY3Lk+fSASaWxbbXE81nbvCnkxrZCvkPOiDHzJCp1E2im71A==} + engines: {node: '>=18.0.0'} - '@aws-sdk/util-format-url@3.714.0': - resolution: {integrity: sha512-PA/ES6BeKmYzFOsZ3az/8MqSLf6uzXAS7GsYONZMF6YASn4ewd/AspuvQMp6+x9VreAPCq7PecF+XL9KXejtPg==} - engines: {node: '>=16.0.0'} + '@aws-sdk/util-format-url@3.723.0': + resolution: {integrity: sha512-70+xUrdcnencPlCdV9XkRqmgj0vLDb8vm4mcEsgabg5QQ3S80KM0GEuhBAIGMkBWwNQTzCgQy2s7xOUlJPbu+g==} + engines: {node: '>=18.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-locate-window@3.723.0': + resolution: {integrity: sha512-Yf2CS10BqK688DRsrKI/EO6B8ff5J86NXe4C+VCysK7UOgN0l1zOTeTukZ3H8Q9tYYX3oaF1961o8vRkFm7Nmw==} + engines: {node: '>=18.0.0'} - '@aws-sdk/util-user-agent-browser@3.714.0': - resolution: {integrity: sha512-OdJJ03cP9/MgIVToPJPCPUImbpZzTcwdIgbXC0tUQPJhbD7b7cB4LdnkhNHko+MptpOrCq4CPY/33EpOjRdofw==} + '@aws-sdk/util-user-agent-browser@3.723.0': + resolution: {integrity: sha512-Wh9I6j2jLhNFq6fmXydIpqD1WyQLyTfSxjW9B+PXSnPyk3jtQW8AKQur7p97rO8LAUzVI0bv8kb3ZzDEVbquIg==} - '@aws-sdk/util-user-agent-node@3.721.0': - resolution: {integrity: sha512-5VsNdC3zQnjrt7KNEeFHWJl3FIamgIS0puG18BMvPsdzcKWEbWDih+yd1kMWrcpAu1Riez9co/gB9y99pBghDA==} - engines: {node: '>=16.0.0'} + '@aws-sdk/util-user-agent-node@3.726.0': + resolution: {integrity: sha512-iEj6KX9o6IQf23oziorveRqyzyclWai95oZHDJtYav3fvLJKStwSjygO4xSF7ycHcTYeCHSLO1FFOHgGVs4Viw==} + engines: {node: '>=18.0.0'} peerDependencies: aws-crt: '>=1.0.0' peerDependenciesMeta: aws-crt: optional: true - '@aws-sdk/xml-builder@3.709.0': - resolution: {integrity: sha512-2GPCwlNxeHspoK/Mc8nbk9cBOkSpp3j2SJUQmFnyQK6V/pR6II2oPRyZkMomug1Rc10hqlBHByMecq4zhV2uUw==} - engines: {node: '>=16.0.0'} + '@aws-sdk/xml-builder@3.723.0': + resolution: {integrity: sha512-5xK2SqGU1mzzsOeemy7cy3fGKxR1sEpUs4pEiIjaT0OIvU+fZaDVUEYWOqsgns6wI90XZEQJlXtI8uAHX/do5Q==} + engines: {node: '>=18.0.0'} '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} @@ -3136,8 +3132,8 @@ packages: '@braintree/sanitize-url@7.1.1': resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==} - '@cfworker/json-schema@4.0.3': - resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} + '@cfworker/json-schema@4.1.0': + resolution: {integrity: sha512-/vYKi/qMxwNsuIJ9WGWwM2rflY40ZenK3Kh4uR5vB9/Nz12Y7IUN/Xf4wDA7vzPfw0VNh3b/jz4+MjcVgARKJg==} '@chevrotain/cst-dts-gen@11.0.3': resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} @@ -3871,9 +3867,6 @@ packages: peerDependencies: onnxruntime-node: 1.20.1 - '@elizaos/core@0.1.7-alpha.2': - resolution: {integrity: sha512-gNvFw/Xnv4dlcfmmKxRa+baKq6en4TitAjUGvo8LgAUkSk156A0fffJ0lAsc1rX8zMB5NsIqdvMCbwKxDd54OQ==} - '@emnapi/core@1.3.1': resolution: {integrity: sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==} @@ -3899,12 +3892,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.23.1': - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.24.2': resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} engines: {node: '>=18'} @@ -3923,12 +3910,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.23.1': - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.24.2': resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} engines: {node: '>=18'} @@ -3947,12 +3928,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.23.1': - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.24.2': resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} engines: {node: '>=18'} @@ -3971,12 +3946,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.23.1': - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.24.2': resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} engines: {node: '>=18'} @@ -3995,12 +3964,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.23.1': - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.24.2': resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} engines: {node: '>=18'} @@ -4019,12 +3982,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.23.1': - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.24.2': resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} engines: {node: '>=18'} @@ -4043,12 +4000,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.23.1': - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.24.2': resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} engines: {node: '>=18'} @@ -4067,12 +4018,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.23.1': - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.24.2': resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} engines: {node: '>=18'} @@ -4091,12 +4036,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.23.1': - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.24.2': resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} engines: {node: '>=18'} @@ -4115,12 +4054,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.23.1': - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.24.2': resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} engines: {node: '>=18'} @@ -4139,12 +4072,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.23.1': - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.24.2': resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} engines: {node: '>=18'} @@ -4163,12 +4090,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.23.1': - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.24.2': resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} engines: {node: '>=18'} @@ -4187,12 +4108,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.23.1': - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.24.2': resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} engines: {node: '>=18'} @@ -4211,12 +4126,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.23.1': - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.24.2': resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} engines: {node: '>=18'} @@ -4235,12 +4144,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.23.1': - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.24.2': resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} engines: {node: '>=18'} @@ -4259,12 +4162,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.23.1': - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.24.2': resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} engines: {node: '>=18'} @@ -4283,12 +4180,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.23.1': - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.24.2': resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} engines: {node: '>=18'} @@ -4313,24 +4204,12 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.23.1': - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.24.2': resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.23.1': - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.24.2': resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} engines: {node: '>=18'} @@ -4349,12 +4228,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.23.1': - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.24.2': resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} engines: {node: '>=18'} @@ -4373,12 +4246,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.23.1': - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.24.2': resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} engines: {node: '>=18'} @@ -4397,12 +4264,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.23.1': - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.24.2': resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} engines: {node: '>=18'} @@ -4421,12 +4282,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.23.1': - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.24.2': resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} engines: {node: '>=18'} @@ -4445,12 +4300,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.23.1': - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.24.2': resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} engines: {node: '>=18'} @@ -4650,11 +4499,11 @@ packages: cpu: [x64] os: [win32] - '@floating-ui/core@1.6.8': - resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + '@floating-ui/core@1.6.9': + resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} - '@floating-ui/dom@1.6.12': - resolution: {integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==} + '@floating-ui/dom@1.6.13': + resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==} '@floating-ui/react-dom@2.1.2': resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} @@ -4662,8 +4511,8 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' - '@floating-ui/utils@0.2.8': - resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + '@floating-ui/utils@0.2.9': + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} '@fuel-ts/abi-coder@0.97.2': resolution: {integrity: sha512-YbXFwBtQSfGNhIv+mrgr6EbbyVjzc5DwNjVJuC8DDObiAYhow0uzn/URHFdQ8bexokrKBrdzQKDjnAP6F7ap+w==} @@ -5396,11 +5245,11 @@ packages: '@multiversx/sdk-transaction-decoder@1.0.2': resolution: {integrity: sha512-j43QsKquu8N51WLmVlJ7dV2P3A1448R7/ktvl8r3i6wRMpfdtzDPNofTdHmMRT7DdQdvs4+RNgz8hVKL11Etsw==} - '@mysten/bcs@1.2.0': - resolution: {integrity: sha512-LuKonrGdGW7dq/EM6U2L9/as7dFwnhZnsnINzB/vu08Xfrj0qzWwpLOiXagAa5yZOPLK7anRZydMonczFkUPzA==} + '@mysten/bcs@1.2.1': + resolution: {integrity: sha512-RMSaUsNb8oR0rTRVIOOcyoEVJqQi6DLvMXN+7mvDcki12FJFQ0lF89zQa7AV7cIurWlDQfJ8VIbCuRDyK+955A==} - '@mysten/sui@1.18.0': - resolution: {integrity: sha512-cFh5LxXZrXb/ZAD1dkKeQxzhgRYFXreyFGmI7w/JQWwdl+/0FrHJBwaWyTmGxJ/6ZC9SlaOPOk63flN7DbUurg==} + '@mysten/sui@1.18.1': + resolution: {integrity: sha512-ccMVOHM4KQhUvbBirE1rkn9THDJUX7y7W1cDMoCKnlPsIwTtQifZc7ysyBNjCMAS42y8Kq4VpiRagPjf13Am5A==} engines: {node: '>=18'} '@napi-rs/wasm-runtime@0.2.4': @@ -5481,8 +5330,8 @@ packages: '@nestjs/websockets': optional: true - '@neynar/nodejs-sdk@2.7.0': - resolution: {integrity: sha512-V2pfo11sZNRPPu/Wbsakw81SEZYZNNJeStw2brgROXNmDg7eb5e83ftXOqHNRh6v3HvDmrYjlF++PDFu94M7YA==} + '@neynar/nodejs-sdk@2.8.0': + resolution: {integrity: sha512-NausMdekKJH58ssY/WjxkDYctHtLPqHUt1/ffZvqVp4SgcAH7Q5H7st782NJU+PZM85eNtcf5YbbVHbwDJgmOA==} engines: {node: '>=19.9.0'} '@noble/curves@1.2.0': @@ -5849,24 +5698,24 @@ packages: cpu: [x64] os: [win32] - '@octokit/app@15.1.1': - resolution: {integrity: sha512-fk8xrCSPTJGpyBdBNI+DcZ224dm0aApv4vi6X7/zTmANXlegKV2Td+dJ+fd7APPaPN7R+xttUsj2Fm+AFDSfMQ==} + '@octokit/app@15.1.2': + resolution: {integrity: sha512-6aKmKvqnJKoVK+kx0mLlBMKmQYoziPw4Rd/PWr0j65QVQlrDXlu6hGU8fmTXt7tNkf/DsubdIaTT4fkoWzCh5g==} engines: {node: '>= 18'} - '@octokit/auth-app@7.1.3': - resolution: {integrity: sha512-GZdkOp2kZTIy5dG9oXqvzUAZiPvDx4C/lMlN6yQjtG9d/+hYa7W8WXTJoOrXE8UdfL9A/sZMl206dmtkl9lwVQ==} + '@octokit/auth-app@7.1.4': + resolution: {integrity: sha512-5F+3l/maq9JfWQ4bV28jT2G/K8eu9OJ317yzXPTGe4Kw+lKDhFaS4dQ3Ltmb6xImKxfCQdqDqMXODhc9YLipLw==} engines: {node: '>= 18'} - '@octokit/auth-oauth-app@8.1.1': - resolution: {integrity: sha512-5UtmxXAvU2wfcHIPPDWzVSAWXVJzG3NWsxb7zCFplCWEmMCArSZV0UQu5jw5goLQXbFyOr5onzEH37UJB3zQQg==} + '@octokit/auth-oauth-app@8.1.2': + resolution: {integrity: sha512-3woNZgq5/S6RS+9ZTq+JdymxVr7E0s4EYxF20ugQvgX3pomdPUL5r/XdTY9wALoBM2eHVy4ettr5fKpatyTyHw==} engines: {node: '>= 18'} - '@octokit/auth-oauth-device@7.1.1': - resolution: {integrity: sha512-HWl8lYueHonuyjrKKIup/1tiy0xcmQCdq5ikvMO1YwkNNkxb6DXfrPjrMYItNLyCP/o2H87WuijuE+SlBTT8eg==} + '@octokit/auth-oauth-device@7.1.2': + resolution: {integrity: sha512-gTOIzDeV36OhVfxCl69FmvJix7tJIiU6dlxuzLVAzle7fYfO8UDyddr9B+o4CFQVaMBLMGZ9ak2CWMYcGeZnPw==} engines: {node: '>= 18'} - '@octokit/auth-oauth-user@5.1.1': - resolution: {integrity: sha512-rRkMz0ErOppdvEfnemHJXgZ9vTPhBuC6yASeFaB7I2yLMd7QpjfrL1mnvRPlyKo+M6eeLxrKanXJ9Qte29SRsw==} + '@octokit/auth-oauth-user@5.1.2': + resolution: {integrity: sha512-PgVDDPJgZYb3qSEXK4moksA23tfn68zwSAsQKZ1uH6IV9IaNEYx35OXXI80STQaLYnmEE86AgU0tC1YkM4WjsA==} engines: {node: '>= 18'} '@octokit/auth-token@3.0.4': @@ -5881,8 +5730,8 @@ packages: resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==} engines: {node: '>= 18'} - '@octokit/auth-unauthenticated@6.1.0': - resolution: {integrity: sha512-zPSmfrUAcspZH/lOFQnVnvjQZsIvmfApQH6GzJrkIunDooU1Su2qt2FfMTSVPRp7WLTQyC20Kd55lF+mIYaohQ==} + '@octokit/auth-unauthenticated@6.1.1': + resolution: {integrity: sha512-bGXqdN6RhSFHvpPq46SL8sN+F3odQ6oMNLWc875IgoqcC3qus+fOL2th6Tkl94wvdSTy8/OeHzWy/lZebmnhog==} engines: {node: '>= 18'} '@octokit/core@4.2.4': @@ -5893,8 +5742,8 @@ packages: resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==} engines: {node: '>= 18'} - '@octokit/core@6.1.2': - resolution: {integrity: sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==} + '@octokit/core@6.1.3': + resolution: {integrity: sha512-z+j7DixNnfpdToYsOutStDgeRzJSMnbj8T1C/oQjB6Aa+kRfNjs/Fn7W6c8bmlt6mfy3FkgeKBRnDjxQow5dow==} engines: {node: '>= 18'} '@octokit/endpoint@10.1.2': @@ -5921,8 +5770,8 @@ packages: resolution: {integrity: sha512-bdlj/CJVjpaz06NBpfHhp4kGJaRZfz7AzC+6EwUImRtrwIw8dIgJ63Xg0OzV9pRn3rIzrt5c2sa++BL0JJ8GLw==} engines: {node: '>= 18'} - '@octokit/oauth-app@7.1.4': - resolution: {integrity: sha512-Au4zSGsWOZtShLxVUXcZ9TZJVQjpEK/OW2L1SWLE030QVYaZ+69TP4vHBdXakZUifvOELD1VBYEY6eprPcY2Mg==} + '@octokit/oauth-app@7.1.5': + resolution: {integrity: sha512-/Y2MiwWDlGUK4blKKfjJiwjzu/FzwKTTTfTZAAQ0QbdBIDEGJPWhOFH6muSN86zaa4tNheB4YS3oWIR2e4ydzA==} engines: {node: '>= 18'} '@octokit/oauth-authorization-url@7.1.1': @@ -5939,8 +5788,8 @@ packages: '@octokit/openapi-types@20.0.0': resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==} - '@octokit/openapi-types@22.2.0': - resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==} + '@octokit/openapi-types@23.0.1': + resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==} '@octokit/openapi-webhooks-types@8.5.1': resolution: {integrity: sha512-i3h1b5zpGSB39ffBbYdSGuAd0NhBAwPyA3QV3LYi/lx4lsbZiu7u2UHgXVUR6EpvOI8REOuVh1DZTRfHoJDvuQ==} @@ -5960,8 +5809,8 @@ packages: peerDependencies: '@octokit/core': '5' - '@octokit/plugin-paginate-rest@11.3.6': - resolution: {integrity: sha512-zcvqqf/+TicbTCa/Z+3w4eBJcAxCFymtc0UAIsR3dEVoNilWld4oXdscQ3laXamTszUZdusw97K8+DrbFiOwjw==} + '@octokit/plugin-paginate-rest@11.4.0': + resolution: {integrity: sha512-ttpGck5AYWkwMkMazNCZMqxKqIq1fJBNxBfsFwwfyYKTf914jKkLF0POMS3YkPBwp5g1c2Y4L79gDz01GhSr1g==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' @@ -5989,8 +5838,8 @@ packages: peerDependencies: '@octokit/core': ^5 - '@octokit/plugin-rest-endpoint-methods@13.2.6': - resolution: {integrity: sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==} + '@octokit/plugin-rest-endpoint-methods@13.3.0': + resolution: {integrity: sha512-LUm44shlmkp/6VC+qQgHl3W5vzUP99ZM54zH6BuqkJK4DqfFLhegANd+fM4YRLapTvPm4049iG7F3haANKMYvQ==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' @@ -6001,17 +5850,17 @@ packages: peerDependencies: '@octokit/core': '>=3' - '@octokit/plugin-retry@7.1.2': - resolution: {integrity: sha512-XOWnPpH2kJ5VTwozsxGurw+svB2e61aWlmk5EVIYZPwFK5F9h4cyPyj9CIKRyMXMHSwpIsI3mPOdpMmrRhe7UQ==} + '@octokit/plugin-retry@7.1.3': + resolution: {integrity: sha512-8nKOXvYWnzv89gSyIvgFHmCBAxfQAOPRlkacUHL9r5oWtp5Whxl8Skb2n3ACZd+X6cYijD6uvmrQuPH/UCL5zQ==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-throttling@9.3.2': - resolution: {integrity: sha512-FqpvcTpIWFpMMwIeSoypoJXysSAQ3R+ALJhXXSG1HTP3YZOIeLmcNcimKaXxTcws+Sh6yoRl13SJ5r8sXc1Fhw==} + '@octokit/plugin-throttling@9.4.0': + resolution: {integrity: sha512-IOlXxXhZA4Z3m0EEYtrrACkuHiArHLZ3CvqWwOez/pURNqRuwfoFlTPbN5Muf28pzFuztxPyiUiNwz8KctdZaQ==} engines: {node: '>= 18'} peerDependencies: - '@octokit/core': ^6.0.0 + '@octokit/core': ^6.1.3 '@octokit/request-error@3.0.3': resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==} @@ -6054,8 +5903,8 @@ packages: '@octokit/types@12.6.0': resolution: {integrity: sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==} - '@octokit/types@13.6.2': - resolution: {integrity: sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==} + '@octokit/types@13.7.0': + resolution: {integrity: sha512-BXfRP+3P3IN6fd4uF3SniaHKOO4UXWBfkdR3vA8mIvaoO/wLjGN5qivUtW0QRitBHHMcfC41SLhNVYIZZE+wkA==} '@octokit/types@9.3.2': resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==} @@ -6064,8 +5913,8 @@ packages: resolution: {integrity: sha512-yFZa3UH11VIxYnnoOYCVoJ3q4ChuSOk2IVBBQ0O3xtKX4x9bmKb/1t+Mxixv2iUhzMdOl1qeWJqEhouXXzB3rQ==} engines: {node: '>= 18'} - '@octokit/webhooks@13.4.1': - resolution: {integrity: sha512-I5YPUtfWidh+OzyrlDahJsUpkpGK0kCTmDRbuqGmlCUzOtxdEkX3R4d6Cd08ijQYwkVXQJanPdbKuZBeV2NMaA==} + '@octokit/webhooks@13.4.2': + resolution: {integrity: sha512-fakbgkCScapQXPxyqx2jZs/Y3jGlyezwUp7ATL7oLAGJ0+SqBKWKstoKZpiQ+REeHutKpYjY9UtxdLSurwl2Tg==} engines: {node: '>= 18'} '@onflow/config@1.5.1': @@ -6774,98 +6623,98 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.29.1': - resolution: {integrity: sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==} + '@rollup/rollup-android-arm-eabi@4.30.1': + resolution: {integrity: sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.29.1': - resolution: {integrity: sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==} + '@rollup/rollup-android-arm64@4.30.1': + resolution: {integrity: sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.29.1': - resolution: {integrity: sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==} + '@rollup/rollup-darwin-arm64@4.30.1': + resolution: {integrity: sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.29.1': - resolution: {integrity: sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==} + '@rollup/rollup-darwin-x64@4.30.1': + resolution: {integrity: sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.29.1': - resolution: {integrity: sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==} + '@rollup/rollup-freebsd-arm64@4.30.1': + resolution: {integrity: sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.29.1': - resolution: {integrity: sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==} + '@rollup/rollup-freebsd-x64@4.30.1': + resolution: {integrity: sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.29.1': - resolution: {integrity: sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==} + '@rollup/rollup-linux-arm-gnueabihf@4.30.1': + resolution: {integrity: sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.29.1': - resolution: {integrity: sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==} + '@rollup/rollup-linux-arm-musleabihf@4.30.1': + resolution: {integrity: sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.29.1': - resolution: {integrity: sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==} + '@rollup/rollup-linux-arm64-gnu@4.30.1': + resolution: {integrity: sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.29.1': - resolution: {integrity: sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==} + '@rollup/rollup-linux-arm64-musl@4.30.1': + resolution: {integrity: sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.29.1': - resolution: {integrity: sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==} + '@rollup/rollup-linux-loongarch64-gnu@4.30.1': + resolution: {integrity: sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.29.1': - resolution: {integrity: sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==} + '@rollup/rollup-linux-powerpc64le-gnu@4.30.1': + resolution: {integrity: sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.29.1': - resolution: {integrity: sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==} + '@rollup/rollup-linux-riscv64-gnu@4.30.1': + resolution: {integrity: sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.29.1': - resolution: {integrity: sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==} + '@rollup/rollup-linux-s390x-gnu@4.30.1': + resolution: {integrity: sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.29.1': - resolution: {integrity: sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==} + '@rollup/rollup-linux-x64-gnu@4.30.1': + resolution: {integrity: sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.29.1': - resolution: {integrity: sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==} + '@rollup/rollup-linux-x64-musl@4.30.1': + resolution: {integrity: sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.29.1': - resolution: {integrity: sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==} + '@rollup/rollup-win32-arm64-msvc@4.30.1': + resolution: {integrity: sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.29.1': - resolution: {integrity: sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==} + '@rollup/rollup-win32-ia32-msvc@4.30.1': + resolution: {integrity: sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.29.1': - resolution: {integrity: sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==} + '@rollup/rollup-win32-x64-msvc@4.30.1': + resolution: {integrity: sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==} cpu: [x64] os: [win32] @@ -6955,26 +6804,26 @@ packages: resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} engines: {node: '>=6'} - '@shikijs/core@1.25.1': - resolution: {integrity: sha512-0j5k3ZkLTQViOuNzPVyWGoW1zgH3kiFdUT/JOCkTm7TU74mz+dF+NID+YoiCBzHQxgsDpcGYPjKDJRcuVLSt4A==} + '@shikijs/core@1.26.1': + resolution: {integrity: sha512-yeo7sG+WZQblKPclUOKRPwkv1PyoHYkJ4gP9DzhFJbTdueKR7wYTI1vfF/bFi1NTgc545yG/DzvVhZgueVOXMA==} - '@shikijs/engine-javascript@1.25.1': - resolution: {integrity: sha512-zQ7UWKnRCfD/Q1M+XOSyjsbhpE0qv8LUnmn82HYCeOsgAHgUZGEDIQ63bbuK3kU5sQg+2CtI+dPfOqD/mjSY9w==} + '@shikijs/engine-javascript@1.26.1': + resolution: {integrity: sha512-CRhA0b8CaSLxS0E9A4Bzcb3LKBNpykfo9F85ozlNyArxjo2NkijtiwrJZ6eHa+NT5I9Kox2IXVdjUsP4dilsmw==} - '@shikijs/engine-oniguruma@1.25.1': - resolution: {integrity: sha512-iKPMh3H+0USHtWfZ1irfMTH6tGmIUFSnqt3E2K8BgI1VEsqiPh0RYkG2WTwzNiM1/WHN4FzYx/nrKR7PDHiRyw==} + '@shikijs/engine-oniguruma@1.26.1': + resolution: {integrity: sha512-F5XuxN1HljLuvfXv7d+mlTkV7XukC1cawdtOo+7pKgPD83CAB1Sf8uHqP3PK0u7njFH0ZhoXE1r+0JzEgAQ+kg==} - '@shikijs/langs@1.25.1': - resolution: {integrity: sha512-hdYjq9aRJplAzGe2qF51PR9IDgEoyGb4IkXvr3Ts6lEdg4Z8M/kdknKRo2EIuv3IR/aKkJXTlBQRM+wr3t20Ew==} + '@shikijs/langs@1.26.1': + resolution: {integrity: sha512-oz/TQiIqZejEIZbGtn68hbJijAOTtYH4TMMSWkWYozwqdpKR3EXgILneQy26WItmJjp3xVspHdiUxUCws4gtuw==} - '@shikijs/themes@1.25.1': - resolution: {integrity: sha512-JO0lDn4LgGqg5QKvgich5ScUmC2okK+LxM9a3iLUH7YMeI2c8UGXThuJv6sZduS7pdJbYQHPrvWq9t/V4GhpbQ==} + '@shikijs/themes@1.26.1': + resolution: {integrity: sha512-JDxVn+z+wgLCiUhBGx2OQrLCkKZQGzNH3nAxFir4PjUcYiyD8Jdms9izyxIogYmSwmoPTatFTdzyrRKbKlSfPA==} - '@shikijs/types@1.25.1': - resolution: {integrity: sha512-dceqFUoO95eY4tpOj3OGq8wE8EgJ4ey6Me1HQEu5UbwIYszFndEll/bjlB8Kp9wl4fx3uM7n4+y9XCYuDBmcXA==} + '@shikijs/types@1.26.1': + resolution: {integrity: sha512-d4B00TKKAMaHuFYgRf3L0gwtvqpW4hVdVwKcZYbBfAAQXspgkbWqnFfuFl3MDH6gLbsubOcr+prcnsqah3ny7Q==} - '@shikijs/vscode-textmate@9.3.1': - resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} + '@shikijs/vscode-textmate@10.0.1': + resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -7066,208 +6915,217 @@ packages: '@slorber/remark-comment@1.0.0': resolution: {integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==} - '@smithy/abort-controller@3.1.9': - resolution: {integrity: sha512-yiW0WI30zj8ZKoSYNx90no7ugVn3khlyH/z5W8qtKBtVE6awRALbhSG+2SAHA1r6bO/6M9utxYKVZ3PCJ1rWxw==} - engines: {node: '>=16.0.0'} + '@smithy/abort-controller@4.0.1': + resolution: {integrity: sha512-fiUIYgIgRjMWznk6iLJz35K2YxSLHzLBA/RC6lBrKfQ8fHbPfvk7Pk9UvpKoHgJjI18MnbPuEju53zcVy6KF1g==} + engines: {node: '>=18.0.0'} - '@smithy/chunked-blob-reader-native@3.0.1': - resolution: {integrity: sha512-VEYtPvh5rs/xlyqpm5NRnfYLZn+q0SRPELbvBV+C/G7IQ+ouTuo+NKKa3ShG5OaFR8NYVMXls9hPYLTvIKKDrQ==} + '@smithy/chunked-blob-reader-native@4.0.0': + resolution: {integrity: sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==} + engines: {node: '>=18.0.0'} - '@smithy/chunked-blob-reader@4.0.0': - resolution: {integrity: sha512-jSqRnZvkT4egkq/7b6/QRCNXmmYVcHwnJldqJ3IhVpQE2atObVJ137xmGeuGFhjFUr8gCEVAOKwSY79OvpbDaQ==} + '@smithy/chunked-blob-reader@5.0.0': + resolution: {integrity: sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==} + engines: {node: '>=18.0.0'} - '@smithy/config-resolver@3.0.13': - resolution: {integrity: sha512-Gr/qwzyPaTL1tZcq8WQyHhTZREER5R1Wytmz4WnVGL4onA3dNk6Btll55c8Vr58pLdvWZmtG8oZxJTw3t3q7Jg==} - engines: {node: '>=16.0.0'} + '@smithy/config-resolver@4.0.1': + resolution: {integrity: sha512-Igfg8lKu3dRVkTSEm98QpZUvKEOa71jDX4vKRcvJVyRc3UgN3j7vFMf0s7xLQhYmKa8kyJGQgUJDOV5V3neVlQ==} + engines: {node: '>=18.0.0'} - '@smithy/core@2.5.7': - resolution: {integrity: sha512-8olpW6mKCa0v+ibCjoCzgZHQx1SQmZuW/WkrdZo73wiTprTH6qhmskT60QLFdT9DRa5mXxjz89kQPZ7ZSsoqqg==} - engines: {node: '>=16.0.0'} + '@smithy/core@3.1.0': + resolution: {integrity: sha512-swFv0wQiK7TGHeuAp6lfF5Kw1dHWsTrCuc+yh4Kh05gEShjsE2RUxHucEerR9ih9JITNtaHcSpUThn5Y/vDw0A==} + engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@3.2.8': - resolution: {integrity: sha512-ZCY2yD0BY+K9iMXkkbnjo+08T2h8/34oHd0Jmh6BZUSZwaaGlGCyBT/3wnS7u7Xl33/EEfN4B6nQr3Gx5bYxgw==} - engines: {node: '>=16.0.0'} + '@smithy/credential-provider-imds@4.0.1': + resolution: {integrity: sha512-l/qdInaDq1Zpznpmev/+52QomsJNZ3JkTl5yrTl02V6NBgJOQ4LY0SFw/8zsMwj3tLe8vqiIuwF6nxaEwgf6mg==} + engines: {node: '>=18.0.0'} - '@smithy/eventstream-codec@3.1.10': - resolution: {integrity: sha512-323B8YckSbUH0nMIpXn7HZsAVKHYHFUODa8gG9cHo0ySvA1fr5iWaNT+iIL0UCqUzG6QPHA3BSsBtRQou4mMqQ==} + '@smithy/eventstream-codec@4.0.1': + resolution: {integrity: sha512-Q2bCAAR6zXNVtJgifsU16ZjKGqdw/DyecKNgIgi7dlqw04fqDu0mnq+JmGphqheypVc64CYq3azSuCpAdFk2+A==} + engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-browser@3.0.14': - resolution: {integrity: sha512-kbrt0vjOIihW3V7Cqj1SXQvAI5BR8SnyQYsandva0AOR307cXAc+IhPngxIPslxTLfxwDpNu0HzCAq6g42kCPg==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-browser@4.0.1': + resolution: {integrity: sha512-HbIybmz5rhNg+zxKiyVAnvdM3vkzjE6ccrJ620iPL8IXcJEntd3hnBl+ktMwIy12Te/kyrSbUb8UCdnUT4QEdA==} + engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-config-resolver@3.0.11': - resolution: {integrity: sha512-P2pnEp4n75O+QHjyO7cbw/vsw5l93K/8EWyjNCAAybYwUmj3M+hjSQZ9P5TVdUgEG08ueMAP5R4FkuSkElZ5tQ==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-config-resolver@4.0.1': + resolution: {integrity: sha512-lSipaiq3rmHguHa3QFF4YcCM3VJOrY9oq2sow3qlhFY+nBSTF/nrO82MUQRPrxHQXA58J5G1UnU2WuJfi465BA==} + engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-node@3.0.13': - resolution: {integrity: sha512-zqy/9iwbj8Wysmvi7Lq7XFLeDgjRpTbCfwBhJa8WbrylTAHiAu6oQTwdY7iu2lxigbc9YYr9vPv5SzYny5tCXQ==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-node@4.0.1': + resolution: {integrity: sha512-o4CoOI6oYGYJ4zXo34U8X9szDe3oGjmHgsMGiZM0j4vtNoT+h80TLnkUcrLZR3+E6HIxqW+G+9WHAVfl0GXK0Q==} + engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-universal@3.0.13': - resolution: {integrity: sha512-L1Ib66+gg9uTnqp/18Gz4MDpJPKRE44geOjOQ2SVc0eiaO5l255ADziATZgjQjqumC7yPtp1XnjHlF1srcwjKw==} - engines: {node: '>=16.0.0'} + '@smithy/eventstream-serde-universal@4.0.1': + resolution: {integrity: sha512-Z94uZp0tGJuxds3iEAZBqGU2QiaBHP4YytLUjwZWx+oUeohCsLyUm33yp4MMBmhkuPqSbQCXq5hDet6JGUgHWA==} + engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@4.1.3': - resolution: {integrity: sha512-6SxNltSncI8s689nvnzZQc/dPXcpHQ34KUj6gR/HBroytKOd/isMG3gJF/zBE1TBmTT18TXyzhg3O3SOOqGEhA==} + '@smithy/fetch-http-handler@5.0.1': + resolution: {integrity: sha512-3aS+fP28urrMW2KTjb6z9iFow6jO8n3MFfineGbndvzGZit3taZhKWtTorf+Gp5RpFDDafeHlhfsGlDCXvUnJA==} + engines: {node: '>=18.0.0'} - '@smithy/hash-blob-browser@3.1.10': - resolution: {integrity: sha512-elwslXOoNunmfS0fh55jHggyhccobFkexLYC1ZeZ1xP2BTSrcIBaHV2b4xUQOdctrSNOpMqOZH1r2XzWTEhyfA==} + '@smithy/hash-blob-browser@4.0.1': + resolution: {integrity: sha512-rkFIrQOKZGS6i1D3gKJ8skJ0RlXqDvb1IyAphksaFOMzkn3v3I1eJ8m7OkLj0jf1McP63rcCEoLlkAn/HjcTRw==} + engines: {node: '>=18.0.0'} - '@smithy/hash-node@3.0.11': - resolution: {integrity: sha512-emP23rwYyZhQBvklqTtwetkQlqbNYirDiEEwXl2v0GYWMnCzxst7ZaRAnWuy28njp5kAH54lvkdG37MblZzaHA==} - engines: {node: '>=16.0.0'} + '@smithy/hash-node@4.0.1': + resolution: {integrity: sha512-TJ6oZS+3r2Xu4emVse1YPB3Dq3d8RkZDKcPr71Nj/lJsdAP1c7oFzYqEn1IBc915TsgLl2xIJNuxCz+gLbLE0w==} + engines: {node: '>=18.0.0'} - '@smithy/hash-stream-node@3.1.10': - resolution: {integrity: sha512-olomK/jZQ93OMayW1zfTHwcbwBdhcZOHsyWyiZ9h9IXvc1mCD/VuvzbLb3Gy/qNJwI4MANPLctTp2BucV2oU/Q==} - engines: {node: '>=16.0.0'} + '@smithy/hash-stream-node@4.0.1': + resolution: {integrity: sha512-U1rAE1fxmReCIr6D2o/4ROqAQX+GffZpyMt3d7njtGDr2pUNmAKRWa49gsNVhCh2vVAuf3wXzWwNr2YN8PAXIw==} + engines: {node: '>=18.0.0'} - '@smithy/invalid-dependency@3.0.11': - resolution: {integrity: sha512-NuQmVPEJjUX6c+UELyVz8kUx8Q539EDeNwbRyu4IIF8MeV7hUtq1FB3SHVyki2u++5XLMFqngeMKk7ccspnNyQ==} + '@smithy/invalid-dependency@4.0.1': + resolution: {integrity: sha512-gdudFPf4QRQ5pzj7HEnu6FhKRi61BfH/Gk5Yf6O0KiSbr1LlVhgjThcvjdu658VE6Nve8vaIWB8/fodmS1rBPQ==} + engines: {node: '>=18.0.0'} '@smithy/is-array-buffer@2.2.0': resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} - '@smithy/is-array-buffer@3.0.0': - resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} - engines: {node: '>=16.0.0'} + '@smithy/is-array-buffer@4.0.0': + resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} + engines: {node: '>=18.0.0'} - '@smithy/md5-js@3.0.11': - resolution: {integrity: sha512-3NM0L3i2Zm4bbgG6Ymi9NBcxXhryi3uE8fIfHJZIOfZVxOkGdjdgjR9A06SFIZCfnEIWKXZdm6Yq5/aPXFFhsQ==} + '@smithy/md5-js@4.0.1': + resolution: {integrity: sha512-HLZ647L27APi6zXkZlzSFZIjpo8po45YiyjMGJZM3gyDY8n7dPGdmxIIljLm4gPt/7rRvutLTTkYJpZVfG5r+A==} + engines: {node: '>=18.0.0'} - '@smithy/middleware-content-length@3.0.13': - resolution: {integrity: sha512-zfMhzojhFpIX3P5ug7jxTjfUcIPcGjcQYzB9t+rv0g1TX7B0QdwONW+ATouaLoD7h7LOw/ZlXfkq4xJ/g2TrIw==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-content-length@4.0.1': + resolution: {integrity: sha512-OGXo7w5EkB5pPiac7KNzVtfCW2vKBTZNuCctn++TTSOMpe6RZO/n6WEC1AxJINn3+vWLKW49uad3lo/u0WJ9oQ==} + engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@3.2.8': - resolution: {integrity: sha512-OEJZKVUEhMOqMs3ktrTWp7UvvluMJEvD5XgQwRePSbDg1VvBaL8pX8mwPltFn6wk1GySbcVwwyldL8S+iqnrEQ==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-endpoint@4.0.1': + resolution: {integrity: sha512-hCCOPu9+sRI7Wj0rZKKnGylKXBEd9cQJetzjQqe8cT4PWvtQAbvNVa6cgAONiZg9m8LaXtP9/waxm3C3eO4hiw==} + engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@3.0.34': - resolution: {integrity: sha512-yVRr/AAtPZlUvwEkrq7S3x7Z8/xCd97m2hLDaqdz6ucP2RKHsBjEqaUA2ebNv2SsZoPEi+ZD0dZbOB1u37tGCA==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-retry@4.0.1': + resolution: {integrity: sha512-n3g2zZFgOWaz2ZYCy8+4wxSmq+HSTD8QKkRhFDv+nkxY1o7gzyp4PDz/+tOdcNPMPZ/A6Mt4aVECYNjQNiaHJw==} + engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@3.0.11': - resolution: {integrity: sha512-KzPAeySp/fOoQA82TpnwItvX8BBURecpx6ZMu75EZDkAcnPtO6vf7q4aH5QHs/F1s3/snQaSFbbUMcFFZ086Mw==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-serde@4.0.1': + resolution: {integrity: sha512-Fh0E2SOF+S+P1+CsgKyiBInAt3o2b6Qk7YOp2W0Qx2XnfTdfMuSDKUEcnrtpxCzgKJnqXeLUZYqtThaP0VGqtA==} + engines: {node: '>=18.0.0'} - '@smithy/middleware-stack@3.0.11': - resolution: {integrity: sha512-1HGo9a6/ikgOMrTrWL/WiN9N8GSVYpuRQO5kjstAq4CvV59bjqnh7TbdXGQ4vxLD3xlSjfBjq5t1SOELePsLnA==} - engines: {node: '>=16.0.0'} + '@smithy/middleware-stack@4.0.1': + resolution: {integrity: sha512-dHwDmrtR/ln8UTHpaIavRSzeIk5+YZTBtLnKwDW3G2t6nAupCiQUvNzNoHBpik63fwUaJPtlnMzXbQrNFWssIA==} + engines: {node: '>=18.0.0'} - '@smithy/node-config-provider@3.1.12': - resolution: {integrity: sha512-O9LVEu5J/u/FuNlZs+L7Ikn3lz7VB9hb0GtPT9MQeiBmtK8RSY3ULmsZgXhe6VAlgTw0YO+paQx4p8xdbs43vQ==} - engines: {node: '>=16.0.0'} + '@smithy/node-config-provider@4.0.1': + resolution: {integrity: sha512-8mRTjvCtVET8+rxvmzRNRR0hH2JjV0DFOmwXPrISmTIJEfnCBugpYYGAsCj8t41qd+RB5gbheSQ/6aKZCQvFLQ==} + engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@3.3.3': - resolution: {integrity: sha512-BrpZOaZ4RCbcJ2igiSNG16S+kgAc65l/2hmxWdmhyoGWHTLlzQzr06PXavJp9OBlPEG/sHlqdxjWmjzV66+BSQ==} - engines: {node: '>=16.0.0'} + '@smithy/node-http-handler@4.0.1': + resolution: {integrity: sha512-ddQc7tvXiVLC5c3QKraGWde761KSk+mboCheZoWtuqnXh5l0WKyFy3NfDIM/dsKrI9HlLVH/21pi9wWK2gUFFA==} + engines: {node: '>=18.0.0'} - '@smithy/property-provider@3.1.11': - resolution: {integrity: sha512-I/+TMc4XTQ3QAjXfOcUWbSS073oOEAxgx4aZy8jHaf8JQnRkq2SZWw8+PfDtBvLUjcGMdxl+YwtzWe6i5uhL/A==} - engines: {node: '>=16.0.0'} + '@smithy/property-provider@4.0.1': + resolution: {integrity: sha512-o+VRiwC2cgmk/WFV0jaETGOtX16VNPp2bSQEzu0whbReqE1BMqsP2ami2Vi3cbGVdKu1kq9gQkDAGKbt0WOHAQ==} + engines: {node: '>=18.0.0'} - '@smithy/protocol-http@4.1.8': - resolution: {integrity: sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==} - engines: {node: '>=16.0.0'} + '@smithy/protocol-http@5.0.1': + resolution: {integrity: sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==} + engines: {node: '>=18.0.0'} - '@smithy/querystring-builder@3.0.11': - resolution: {integrity: sha512-u+5HV/9uJaeLj5XTb6+IEF/dokWWkEqJ0XiaRRogyREmKGUgZnNecLucADLdauWFKUNbQfulHFEZEdjwEBjXRg==} - engines: {node: '>=16.0.0'} + '@smithy/querystring-builder@4.0.1': + resolution: {integrity: sha512-wU87iWZoCbcqrwszsOewEIuq+SU2mSoBE2CcsLwE0I19m0B2gOJr1MVjxWcDQYOzHbR1xCk7AcOBbGFUYOKvdg==} + engines: {node: '>=18.0.0'} - '@smithy/querystring-parser@3.0.11': - resolution: {integrity: sha512-Je3kFvCsFMnso1ilPwA7GtlbPaTixa3WwC+K21kmMZHsBEOZYQaqxcMqeFFoU7/slFjKDIpiiPydvdJm8Q/MCw==} - engines: {node: '>=16.0.0'} + '@smithy/querystring-parser@4.0.1': + resolution: {integrity: sha512-Ma2XC7VS9aV77+clSFylVUnPZRindhB7BbmYiNOdr+CHt/kZNJoPP0cd3QxCnCFyPXC4eybmyE98phEHkqZ5Jw==} + engines: {node: '>=18.0.0'} - '@smithy/service-error-classification@3.0.11': - resolution: {integrity: sha512-QnYDPkyewrJzCyaeI2Rmp7pDwbUETe+hU8ADkXmgNusO1bgHBH7ovXJiYmba8t0fNfJx75fE8dlM6SEmZxheog==} - engines: {node: '>=16.0.0'} + '@smithy/service-error-classification@4.0.1': + resolution: {integrity: sha512-3JNjBfOWpj/mYfjXJHB4Txc/7E4LVq32bwzE7m28GN79+M1f76XHflUaSUkhOriprPDzev9cX/M+dEB80DNDKA==} + engines: {node: '>=18.0.0'} - '@smithy/shared-ini-file-loader@3.1.12': - resolution: {integrity: sha512-1xKSGI+U9KKdbG2qDvIR9dGrw3CNx+baqJfyr0igKEpjbHL5stsqAesYBzHChYHlelWtb87VnLWlhvfCz13H8Q==} - engines: {node: '>=16.0.0'} + '@smithy/shared-ini-file-loader@4.0.1': + resolution: {integrity: sha512-hC8F6qTBbuHRI/uqDgqqi6J0R4GtEZcgrZPhFQnMhfJs3MnUTGSnR1NSJCJs5VWlMydu0kJz15M640fJlRsIOw==} + engines: {node: '>=18.0.0'} - '@smithy/signature-v4@4.2.4': - resolution: {integrity: sha512-5JWeMQYg81TgU4cG+OexAWdvDTs5JDdbEZx+Qr1iPbvo91QFGzjy0IkXAKaXUHqmKUJgSHK0ZxnCkgZpzkeNTA==} - engines: {node: '>=16.0.0'} + '@smithy/signature-v4@5.0.1': + resolution: {integrity: sha512-nCe6fQ+ppm1bQuw5iKoeJ0MJfz2os7Ic3GBjOkLOPtavbD1ONoyE3ygjBfz2ythFWm4YnRm6OxW+8p/m9uCoIA==} + engines: {node: '>=18.0.0'} - '@smithy/smithy-client@3.7.0': - resolution: {integrity: sha512-9wYrjAZFlqWhgVo3C4y/9kpc68jgiSsKUnsFPzr/MSiRL93+QRDafGTfhhKAb2wsr69Ru87WTiqSfQusSmWipA==} - engines: {node: '>=16.0.0'} + '@smithy/smithy-client@4.1.0': + resolution: {integrity: sha512-NiboZnrsrZY+Cy5hQNbYi+nVNssXVi2I+yL4CIKNIanOhH8kpC5PKQ2jx/MQpwVr21a3XcVoQBArlpRF36OeEQ==} + engines: {node: '>=18.0.0'} - '@smithy/types@3.7.2': - resolution: {integrity: sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==} - engines: {node: '>=16.0.0'} + '@smithy/types@4.1.0': + resolution: {integrity: sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==} + engines: {node: '>=18.0.0'} - '@smithy/url-parser@3.0.11': - resolution: {integrity: sha512-TmlqXkSk8ZPhfc+SQutjmFr5FjC0av3GZP4B/10caK1SbRwe/v+Wzu/R6xEKxoNqL+8nY18s1byiy6HqPG37Aw==} + '@smithy/url-parser@4.0.1': + resolution: {integrity: sha512-gPXcIEUtw7VlK8f/QcruNXm7q+T5hhvGu9tl63LsJPZ27exB6dtNwvh2HIi0v7JcXJ5emBxB+CJxwaLEdJfA+g==} + engines: {node: '>=18.0.0'} - '@smithy/util-base64@3.0.0': - resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-base64@4.0.0': + resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} + engines: {node: '>=18.0.0'} - '@smithy/util-body-length-browser@3.0.0': - resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} + '@smithy/util-body-length-browser@4.0.0': + resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} + engines: {node: '>=18.0.0'} - '@smithy/util-body-length-node@3.0.0': - resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} - engines: {node: '>=16.0.0'} + '@smithy/util-body-length-node@4.0.0': + resolution: {integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==} + engines: {node: '>=18.0.0'} '@smithy/util-buffer-from@2.2.0': resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} engines: {node: '>=14.0.0'} - '@smithy/util-buffer-from@3.0.0': - resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} - engines: {node: '>=16.0.0'} + '@smithy/util-buffer-from@4.0.0': + resolution: {integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==} + engines: {node: '>=18.0.0'} - '@smithy/util-config-provider@3.0.0': - resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-config-provider@4.0.0': + resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} + engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@3.0.34': - resolution: {integrity: sha512-FumjjF631lR521cX+svMLBj3SwSDh9VdtyynTYDAiBDEf8YPP5xORNXKQ9j0105o5+ARAGnOOP/RqSl40uXddA==} - engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-browser@4.0.1': + resolution: {integrity: sha512-nkQifWzWUHw/D0aLPgyKut+QnJ5X+5E8wBvGfvrYLLZ86xPfVO6MoqfQo/9s4bF3Xscefua1M6KLZtobHMWrBg==} + engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@3.0.34': - resolution: {integrity: sha512-vN6aHfzW9dVVzkI0wcZoUXvfjkl4CSbM9nE//08lmUMyf00S75uuCpTrqF9uD4bD9eldIXlt53colrlwKAT8Gw==} - engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-node@4.0.1': + resolution: {integrity: sha512-LeAx2faB83litC9vaOdwFaldtto2gczUHxfFf8yoRwDU3cwL4/pDm7i0hxsuBCRk5mzHsrVGw+3EVCj32UZMdw==} + engines: {node: '>=18.0.0'} - '@smithy/util-endpoints@2.1.7': - resolution: {integrity: sha512-tSfcqKcN/Oo2STEYCABVuKgJ76nyyr6skGl9t15hs+YaiU06sgMkN7QYjo0BbVw+KT26zok3IzbdSOksQ4YzVw==} - engines: {node: '>=16.0.0'} + '@smithy/util-endpoints@3.0.1': + resolution: {integrity: sha512-zVdUENQpdtn9jbpD9SCFK4+aSiavRb9BxEtw9ZGUR1TYo6bBHbIoi7VkrFQ0/RwZlzx0wRBaRmPclj8iAoJCLA==} + engines: {node: '>=18.0.0'} - '@smithy/util-hex-encoding@3.0.0': - resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-hex-encoding@4.0.0': + resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} + engines: {node: '>=18.0.0'} - '@smithy/util-middleware@3.0.11': - resolution: {integrity: sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow==} - engines: {node: '>=16.0.0'} + '@smithy/util-middleware@4.0.1': + resolution: {integrity: sha512-HiLAvlcqhbzhuiOa0Lyct5IIlyIz0PQO5dnMlmQ/ubYM46dPInB+3yQGkfxsk6Q24Y0n3/JmcA1v5iEhmOF5mA==} + engines: {node: '>=18.0.0'} - '@smithy/util-retry@3.0.11': - resolution: {integrity: sha512-hJUC6W7A3DQgaee3Hp9ZFcOxVDZzmBIRBPlUAk8/fSOEl7pE/aX7Dci0JycNOnm9Mfr0KV2XjIlUOcGWXQUdVQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-retry@4.0.1': + resolution: {integrity: sha512-WmRHqNVwn3kI3rKk1LsKcVgPBG6iLTBGC1iYOV3GQegwJ3E8yjzHytPt26VNzOWr1qu0xE03nK0Ug8S7T7oufw==} + engines: {node: '>=18.0.0'} - '@smithy/util-stream@3.3.4': - resolution: {integrity: sha512-SGhGBG/KupieJvJSZp/rfHHka8BFgj56eek9px4pp7lZbOF+fRiVr4U7A3y3zJD8uGhxq32C5D96HxsTC9BckQ==} - engines: {node: '>=16.0.0'} + '@smithy/util-stream@4.0.1': + resolution: {integrity: sha512-Js16gOgU6Qht6qTPfuJgb+1YD4AEO+5Y1UPGWKSp3BNo8ONl/qhXSYDhFKJtwybRJynlCqvP5IeiaBsUmkSPTQ==} + engines: {node: '>=18.0.0'} - '@smithy/util-uri-escape@3.0.0': - resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} - engines: {node: '>=16.0.0'} + '@smithy/util-uri-escape@4.0.0': + resolution: {integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==} + engines: {node: '>=18.0.0'} '@smithy/util-utf8@2.3.0': resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} engines: {node: '>=14.0.0'} - '@smithy/util-utf8@3.0.0': - resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} - engines: {node: '>=16.0.0'} + '@smithy/util-utf8@4.0.0': + resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} + engines: {node: '>=18.0.0'} - '@smithy/util-waiter@3.2.0': - resolution: {integrity: sha512-PpjSboaDUE6yl+1qlg3Si57++e84oXdWGbuFUSAciXsVfEZJJJupR2Nb0QuXHiunt2vGR+1PTizOMvnUPaG2Qg==} - engines: {node: '>=16.0.0'} + '@smithy/util-waiter@4.0.2': + resolution: {integrity: sha512-piUTHyp2Axx3p/kc2CIJkYSv0BAaheBQmbACZgQSSfWUumWNW+R1lL+H9PDBxKJkvOeEX+hKYEFiwO8xagL8AQ==} + engines: {node: '>=18.0.0'} '@solana-developers/helpers@2.5.6': resolution: {integrity: sha512-NPWZblVMl4LuVVSJOZG0ZF0VYnrMUjCyMNTiGwNUXPK2WWYJCqpuDyzs/PMqwvM4gMTjk4pEToBX8N2UxDvZkQ==} @@ -7560,68 +7418,68 @@ packages: resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} engines: {node: '>=14'} - '@swc/core-darwin-arm64@1.10.4': - resolution: {integrity: sha512-sV/eurLhkjn/197y48bxKP19oqcLydSel42Qsy2zepBltqUx+/zZ8+/IS0Bi7kaWVFxerbW1IPB09uq8Zuvm3g==} + '@swc/core-darwin-arm64@1.10.7': + resolution: {integrity: sha512-SI0OFg987P6hcyT0Dbng3YRISPS9uhLX1dzW4qRrfqQdb0i75lPJ2YWe9CN47HBazrIA5COuTzrD2Dc0TcVsSQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.10.4': - resolution: {integrity: sha512-gjYNU6vrAUO4+FuovEo9ofnVosTFXkF0VDuo1MKPItz6e2pxc2ale4FGzLw0Nf7JB1sX4a8h06CN16/pLJ8Q2w==} + '@swc/core-darwin-x64@1.10.7': + resolution: {integrity: sha512-RFIAmWVicD/l3RzxgHW0R/G1ya/6nyMspE2cAeDcTbjHi0I5qgdhBWd6ieXOaqwEwiCd0Mot1g2VZrLGoBLsjQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.10.4': - resolution: {integrity: sha512-zd7fXH5w8s+Sfvn2oO464KDWl+ZX1MJiVmE4Pdk46N3PEaNwE0koTfgx2vQRqRG4vBBobzVvzICC3618WcefOA==} + '@swc/core-linux-arm-gnueabihf@1.10.7': + resolution: {integrity: sha512-QP8vz7yELWfop5mM5foN6KkLylVO7ZUgWSF2cA0owwIaziactB2hCPZY5QU690coJouk9KmdFsPWDnaCFUP8tg==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.10.4': - resolution: {integrity: sha512-+UGfoHDxsMZgFD3tABKLeEZHqLNOkxStu+qCG7atGBhS4Slri6h6zijVvf4yI5X3kbXdvc44XV/hrP/Klnui2A==} + '@swc/core-linux-arm64-gnu@1.10.7': + resolution: {integrity: sha512-NgUDBGQcOeLNR+EOpmUvSDIP/F7i/OVOKxst4wOvT5FTxhnkWrW+StJGKj+DcUVSK5eWOYboSXr1y+Hlywwokw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.10.4': - resolution: {integrity: sha512-cDDj2/uYsOH0pgAnDkovLZvKJpFmBMyXkxEG6Q4yw99HbzO6QzZ5HDGWGWVq/6dLgYKlnnmpjZCPPQIu01mXEg==} + '@swc/core-linux-arm64-musl@1.10.7': + resolution: {integrity: sha512-gp5Un3EbeSThBIh6oac5ZArV/CsSmTKj5jNuuUAuEsML3VF9vqPO+25VuxCvsRf/z3py+xOWRaN2HY/rjMeZog==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.10.4': - resolution: {integrity: sha512-qJXh9D6Kf5xSdGWPINpLGixAbB5JX8JcbEJpRamhlDBoOcQC79dYfOMEIxWPhTS1DGLyFakAx2FX/b2VmQmj0g==} + '@swc/core-linux-x64-gnu@1.10.7': + resolution: {integrity: sha512-k/OxLLMl/edYqbZyUNg6/bqEHTXJT15l9WGqsl/2QaIGwWGvles8YjruQYQ9d4h/thSXLT9gd8bExU2D0N+bUA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.10.4': - resolution: {integrity: sha512-A76lIAeyQnHCVt0RL/pG+0er8Qk9+acGJqSZOZm67Ve3B0oqMd871kPtaHBM0BW3OZAhoILgfHW3Op9Q3mx3Cw==} + '@swc/core-linux-x64-musl@1.10.7': + resolution: {integrity: sha512-XeDoURdWt/ybYmXLCEE8aSiTOzEn0o3Dx5l9hgt0IZEmTts7HgHHVeRgzGXbR4yDo0MfRuX5nE1dYpTmCz0uyA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.10.4': - resolution: {integrity: sha512-e6j5kBu4fIY7fFxFxnZI0MlEovRvp50Lg59Fw+DVbtqHk3C85dckcy5xKP+UoXeuEmFceauQDczUcGs19SRGSQ==} + '@swc/core-win32-arm64-msvc@1.10.7': + resolution: {integrity: sha512-nYAbi/uLS+CU0wFtBx8TquJw2uIMKBnl04LBmiVoFrsIhqSl+0MklaA9FVMGA35NcxSJfcm92Prl2W2LfSnTqQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.10.4': - resolution: {integrity: sha512-RSYHfdKgNXV/amY5Tqk1EWVsyQnhlsM//jeqMLw5Fy9rfxP592W9UTumNikNRPdjI8wKKzNMXDb1U29tQjN0dg==} + '@swc/core-win32-ia32-msvc@1.10.7': + resolution: {integrity: sha512-+aGAbsDsIxeLxw0IzyQLtvtAcI1ctlXVvVcXZMNXIXtTURM876yNrufRo4ngoXB3jnb1MLjIIjgXfFs/eZTUSw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.10.4': - resolution: {integrity: sha512-1ujYpaqfqNPYdwKBlvJnOqcl+Syn3UrQ4XE0Txz6zMYgyh6cdU6a3pxqLqIUSJ12MtXRA9ZUhEz1ekU3LfLWXw==} + '@swc/core-win32-x64-msvc@1.10.7': + resolution: {integrity: sha512-TBf4clpDBjF/UUnkKrT0/th76/zwvudk5wwobiTFqDywMApHip5O0VpBgZ+4raY2TM8k5+ujoy7bfHb22zu17Q==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.10.4': - resolution: {integrity: sha512-ut3zfiTLORMxhr6y/GBxkHmzcGuVpwJYX4qyXWuBKkpw/0g0S5iO1/wW7RnLnZbAi8wS/n0atRZoaZlXWBkeJg==} + '@swc/core@1.10.7': + resolution: {integrity: sha512-py91kjI1jV5D5W/Q+PurBdGsdU5TFbrzamP7zSCqLdMcHkKi3rQEM5jkQcZr0MXXSJTaayLxS3MWYTBIkzPDrg==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -7834,8 +7692,8 @@ packages: '@types/d3-selection@3.0.11': resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} - '@types/d3-shape@3.1.6': - resolution: {integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==} + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} '@types/d3-time-format@4.0.3': resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} @@ -7886,8 +7744,8 @@ packages: '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} - '@types/express-serve-static-core@5.0.3': - resolution: {integrity: sha512-JEhMNwUJt7bw728CydvYzntD0XJeTmDnvwLlbfbAhE7Tbslm/ax6bdIiUwTgeVlZTsJQPwZwKpAkyDtIjsvx3g==} + '@types/express-serve-static-core@5.0.4': + resolution: {integrity: sha512-5kz9ScmzBdzTgB/3susoCgfqNDzBjvLL4taparufgSvlwjdLy6UyUy9T/tCpYd2GIdIilCatC4iSQS0QSYHt0w==} '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} @@ -7974,8 +7832,8 @@ packages: '@types/lodash.isstring@4.0.9': resolution: {integrity: sha512-sjGPpa15VBpMns/4s6Blm567JgxLVVu/eCYCe7h/TdQyPCz9lIhaLSISjN7ZC9cDXmUT2IM/4mNRw8OtYirziw==} - '@types/lodash@4.17.13': - resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} + '@types/lodash@4.17.14': + resolution: {integrity: sha512-jsxagdikDiDBeIRaPYtArcT8my4tN1og7MtMRquFT3XNA6axxyHDRUemqDz/taRDdOUn0GnGHRCuff4q48sW9A==} '@types/lru-cache@5.1.1': resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} @@ -8025,14 +7883,14 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@18.19.69': - resolution: {integrity: sha512-ECPdY1nlaiO/Y6GUnwgtAAhLNaQ53AyIVz+eILxpEo5OvuqE6yWkqWBIb5dU0DqhKQtMeny+FBD3PK6lm7L5xQ==} + '@types/node@18.19.70': + resolution: {integrity: sha512-RE+K0+KZoEpDUbGGctnGdkrLFwi1eYKTlIHNl2Um98mUkGsm1u2Ff6Ltd0e8DktTtC98uy7rSj+hO8t/QuLoVQ==} '@types/node@20.17.9': resolution: {integrity: sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==} - '@types/node@22.10.4': - resolution: {integrity: sha512-99l6wv4HEzBQhvaU/UGoeBoCK61SCROQaCCGyQSgX2tEQ3rKkNZ2S7CEWnS/4s1LV+8ODdK21UeyR1fHP2mXug==} + '@types/node@22.10.5': + resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==} '@types/node@22.7.5': resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} @@ -8784,8 +8642,8 @@ packages: algoliasearch@4.24.0: resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==} - algoliasearch@5.18.0: - resolution: {integrity: sha512-/tfpK2A4FpS0o+S78o3YSdlqXr0MavJIDlFK3XZrlXLy7vaRXJvW5jYg3v5e/wCaF8y0IpMjkYLhoV6QqfpOgw==} + algoliasearch@5.19.0: + resolution: {integrity: sha512-zrLtGhC63z3sVLDDKGW+SlCRN9eJHFTgdEmoAOpsVh6wgGL1GgTTDou7tpCBjevzgIvi3AIyDAQO3Xjbg5eqZg==} engines: {node: '>= 14.0.0'} amp-message@0.1.2: @@ -9141,8 +8999,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.5.0: - resolution: {integrity: sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==} + bare-events@2.5.4: + resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} bare-fs@2.3.5: resolution: {integrity: sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==} @@ -9385,8 +9243,8 @@ packages: engines: {node: '>= 0.8'} hasBin: true - browserslist@4.24.3: - resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -9569,8 +9427,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001690: - resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} + caniuse-lite@1.0.30001692: + resolution: {integrity: sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==} canvas@2.11.2: resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} @@ -10117,18 +9975,18 @@ packages: peerDependencies: webpack: ^5.1.0 - core-js-compat@3.39.0: - resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} + core-js-compat@3.40.0: + resolution: {integrity: sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==} - core-js-pure@3.39.0: - resolution: {integrity: sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==} + core-js-pure@3.40.0: + resolution: {integrity: sha512-AtDzVIgRrmRKQai62yuSIN5vNiQjcJakJb4fbhVw3ehxx7Lohphvw9SGNWKhLFqSxC4ilD0g/L1huAYFQU3Q6A==} core-js@2.6.12: resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - core-js@3.39.0: - resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==} + core-js@3.40.0: + resolution: {integrity: sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==} core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -10365,8 +10223,8 @@ packages: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - cssstyle@4.1.0: - resolution: {integrity: sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==} + cssstyle@4.2.1: + resolution: {integrity: sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==} engines: {node: '>=18'} csstype@3.1.3: @@ -10961,8 +10819,8 @@ packages: domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - domutils@3.2.1: - resolution: {integrity: sha512-xWXmuRnN9OMP6ptPd2+H0cCbcYBULa5YDTbMm/2lvkWvNA3O4wcW+GvzooqBuNM8yy6pl3VIAeJTUUWUbfI5Fw==} + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -11047,8 +10905,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.76: - resolution: {integrity: sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==} + electron-to-chromium@1.5.80: + resolution: {integrity: sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==} elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -11215,11 +11073,6 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.23.1: - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.24.2: resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} engines: {node: '>=18'} @@ -11319,8 +11172,8 @@ packages: jiti: optional: true - esm-env@1.2.1: - resolution: {integrity: sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==} + esm-env@1.2.2: + resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} esmify@2.1.1: resolution: {integrity: sha512-GyOVgjG7sNyYB5Mbo15Ll4aGrcXZzZ3LI22rbLOjCI7L/wYelzQpBHRZkZkqbPNZ/QIRilcaHqzgNCLcEsi1lQ==} @@ -11349,8 +11202,8 @@ packages: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} - esrap@1.3.2: - resolution: {integrity: sha512-C4PXusxYhFT98GjLSmb20k9PREuUdporer50dhzGuJu9IJXktbMddVCMLAERl5dAHyAi73GWWCE4FVHGP1794g==} + esrap@1.4.2: + resolution: {integrity: sha512-FhVlJzvTw7ZLxYZ7RyHwQCFE64dkkpzGNNnphaGCLwjqGk1SQcqzbgdx9FowPCktx6NOSHkzvcZ3vsvdH54YXA==} esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} @@ -11542,8 +11395,8 @@ packages: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} engines: {node: '> 0.1.90'} - fast-content-type-parse@2.0.0: - resolution: {integrity: sha512-fCqg/6Sps8tqk8p+kqyKqYfOF0VjPNYrqpLiqNl0RBKmD80B080AJWVV6EkSkscjToNExcXg1+Mfzftrx6+iSA==} + fast-content-type-parse@2.0.1: + resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -11551,8 +11404,8 @@ packages: fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} fast-json-patch@3.1.1: @@ -11574,8 +11427,8 @@ packages: fast-stable-stringify@1.0.0: resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - fast-uri@3.0.3: - resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + fast-uri@3.0.5: + resolution: {integrity: sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==} fast-xml-parser@4.4.1: resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} @@ -11990,9 +11843,6 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.8.1: - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} - get-uri@6.0.4: resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} engines: {node: '>= 14'} @@ -12329,8 +12179,8 @@ packages: hast-util-select@4.0.2: resolution: {integrity: sha512-8EEG2//bN5rrzboPWD2HdS3ugLijNioS1pqOTIolXNf67xxShYw4SQEmVXd3imiBG+U2bC2nVTySr/iRAA7Cjg==} - hast-util-to-estree@3.1.0: - resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} + hast-util-to-estree@3.1.1: + resolution: {integrity: sha512-IWtwwmPskfSmma9RpzCappDUitC8t5jhAynHhc1m2+5trOgsrp7txscUSavc5Ic8PATyAjfrCK1wgtxh2cICVQ==} hast-util-to-html@9.0.4: resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} @@ -12477,8 +12327,8 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} - http-parser-js@0.5.8: - resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + http-parser-js@0.5.9: + resolution: {integrity: sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==} http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} @@ -12659,9 +12509,6 @@ packages: inline-source-map@0.6.3: resolution: {integrity: sha512-1aVsPEsJWMJq/pdMU61CDlm1URcW702MTB4w9/zUjMus6H/Py8o7g68Pr9D4I6QluWGt/KdmswuRhaA05xVR1w==} - inline-style-parser@0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - inline-style-parser@0.2.4: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} @@ -13591,8 +13438,8 @@ packages: resolution: {integrity: sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==} engines: {node: '>=16.0.0'} - langsmith@0.2.14: - resolution: {integrity: sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig==} + langsmith@0.2.15: + resolution: {integrity: sha512-homtJU41iitqIZVuuLW7iarCzD4f39KcfP9RTBWav9jifhrsDa1Ez89Ejr+4qi72iuBu8Y5xykchsGVgiEZ93w==} peerDependencies: openai: '*' peerDependenciesMeta: @@ -13855,8 +13702,8 @@ packages: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} - long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + long@5.2.4: + resolution: {integrity: sha512-qtzLbJE8hq7VabR3mISmVGtoXP8KGc2Z/AT8OuqlYD7JTR3oqrgwdjnk07wpj1twXxYmgDXgoKVWUG/fReSzHg==} longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -14006,8 +13853,8 @@ packages: mdast-util-directive@3.0.0: resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} - mdast-util-find-and-replace@3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} mdast-util-from-markdown@2.0.2: resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} @@ -14901,14 +14748,14 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} - obliterator@2.0.4: - resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} + obliterator@2.0.5: + resolution: {integrity: sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==} obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - octokit@4.0.3: - resolution: {integrity: sha512-kfqH80Yuuux4fLbZ4SvObjCvVu89U0eCh5+fulh6tr/hJkDYS1inXDGnNJDOp312GANMEhWWMLYmjQR8MvSSMQ==} + octokit@4.1.0: + resolution: {integrity: sha512-/UrQAOSvkc+lUUWKNzy4ByAgYU9KpFzZQt8DnC962YmQuDiZb1SNJ90YukCCK5aMzKqqCA+z1kkAlmzYvdYKag==} engines: {node: '>= 18'} ofetch@1.4.1: @@ -14991,8 +14838,8 @@ packages: zod: optional: true - openai@4.77.0: - resolution: {integrity: sha512-WWacavtns/7pCUkOWvQIjyOfcdr9X+9n9Vvb0zFeKVDAqwCMDHB+iSr24SVaBAhplvSG6JrRXFpcNM9gWhOGIw==} + openai@4.78.0: + resolution: {integrity: sha512-4rRsKkx++5m1zayxkryVH+K/z91cv1sRbaNJAhSQjZiSCQOR7eaM8KpfIssXrS9Hlpta7+VcuO/fi57pW8xGjA==} hasBin: true peerDependencies: zod: ^3.23.8 @@ -15553,8 +15400,8 @@ packages: peerDependencies: postcss: ^8.4 - postcss-calc@10.0.2: - resolution: {integrity: sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==} + postcss-calc@10.1.0: + resolution: {integrity: sha512-uQ/LDGsf3mgsSUEXmAt3VsCSHR3aKqtEIkmB+4PhzYwRYOW5MZs/GhCCFpsOtJJkP6EC6uGipbrnaTjqaJZcJw==} engines: {node: ^18.12 || ^20.9 || >=22.0} peerDependencies: postcss: ^8.4.38 @@ -16939,9 +16786,6 @@ packages: resolve-pathname@3.0.0: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve.exports@2.0.3: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} @@ -17033,8 +16877,8 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true - rollup@4.29.1: - resolution: {integrity: sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==} + rollup@4.30.1: + resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -17047,6 +16891,9 @@ packages: rrweb-cssom@0.7.1: resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + rtl-detect@1.1.2: resolution: {integrity: sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==} @@ -17309,8 +17156,8 @@ packages: engines: {node: '>=4'} hasBin: true - shiki@1.25.1: - resolution: {integrity: sha512-/1boRvNYwRW3GLG9Y6dXdnZ/Ha+J5T/5y3hV7TGQUcDSBM185D3FCbXlz2eTGNKG2iWCbWqo+P0yhGKZ4/CUrw==} + shiki@1.26.1: + resolution: {integrity: sha512-Gqg6DSTk3wYqaZ5OaYtzjcdxcBvX5kCy24yvRJEgjT5U+WHlmqCThLuBUx0juyxQBi+6ug53IGeuQS07DWwpcw==} shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} @@ -17749,9 +17596,6 @@ packages: engines: {node: '>=4'} hasBin: true - style-to-object@0.4.4: - resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} - style-to-object@1.0.8: resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} @@ -17812,8 +17656,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte@5.16.1: - resolution: {integrity: sha512-FsA1OjAKMAFSDob6j/Tv2ZV9rY4SeqPd1WXQlQkFkePAozSHLp6tbkU9qa1xJ+uTRzMSM2Vx3USdsYZBXd3H3g==} + svelte@5.17.3: + resolution: {integrity: sha512-eLgtpR2JiTgeuNQRCDcLx35Z7Lu9Qe09GPOz+gvtR9nmIZu5xgFd6oFiLGQlxLD0/u7xVyF5AUkjDVyFHe6Bvw==} engines: {node: '>=18'} svg-parser@2.0.4: @@ -18039,14 +17883,14 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} - tldts-core@6.1.70: - resolution: {integrity: sha512-RNnIXDB1FD4T9cpQRErEqw6ZpjLlGdMOitdV+0xtbsnwr4YFka1zpc7D4KD+aAn8oSG5JyFrdasZTE04qDE9Yg==} + tldts-core@6.1.71: + resolution: {integrity: sha512-LRbChn2YRpic1KxY+ldL1pGXN/oVvKfCVufwfVzEQdFYNo39uF7AJa/WXdo+gYO7PTvdfkCPCed6Hkvz/kR7jg==} - tldts-experimental@6.1.70: - resolution: {integrity: sha512-cEhsyUBfW/elb1FpPAfnqqTa0Av9OJlcG9Nabiuqn8/1Xggpqch7H8QfZA55SNHonj1x1uRB/NzRETvCiQqz5Q==} + tldts-experimental@6.1.71: + resolution: {integrity: sha512-78lfP/3fRJ3HoCT5JSLOLj5ElHiWCAyglYNzjkFqBO7ykLZYst2u2jM1igSHWV0J2GFfOplApeDsfTF+XACrlA==} - tldts@6.1.70: - resolution: {integrity: sha512-/W1YVgYVJd9ZDjey5NXadNh0mJXkiUMUue9Zebd0vpdo1sU+H4zFFTaJ1RKD4N6KFoHfcXy6l+Vu7bh+bdWCzA==} + tldts@6.1.71: + resolution: {integrity: sha512-LQIHmHnuzfZgZWAf2HzL83TIIrD8NhhI0DVxqo9/FdOd4ilec+NTNZOlDZf7EwrTNoutccbsHjvWHYXLAtvxjw==} hasBin: true tmp@0.0.33: @@ -18111,8 +17955,8 @@ packages: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} - tough-cookie@5.0.0: - resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==} + tough-cookie@5.1.0: + resolution: {integrity: sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==} engines: {node: '>=16'} tr46@0.0.3: @@ -18254,11 +18098,6 @@ packages: typescript: optional: true - tsx@4.19.2: - resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} - engines: {node: '>=18.0.0'} - hasBin: true - tty-browserify@0.0.1: resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} @@ -18369,8 +18208,8 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@4.31.0: - resolution: {integrity: sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==} + type-fest@4.32.0: + resolution: {integrity: sha512-rfgpoi08xagF3JSdtJlCwMq9DGNDE0IMh3Mkpc1wUypg9vPi786AiqeBBKcqvIkq42azsBM85N490fyZjeUftw==} engines: {node: '>=16'} type-is@1.6.18: @@ -18516,8 +18355,8 @@ packages: resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==} engines: {node: '>=18.17'} - undici@7.2.0: - resolution: {integrity: sha512-klt+0S55GBViA9nsq48/NSCo4YX5mjydjypxD7UmHh/brMu8h/Mhd/F7qAeoH2NOO8SDTk6kjnTFc4WpzmfYpQ==} + undici@7.2.1: + resolution: {integrity: sha512-U2k0XHLJfaciARRxDcqTk2AZQsGXerHzdvfCZcy1hNhSf5KCAF4jIQQxL+apQviOekhRFPqED6Of5/+LcUSLzQ==} engines: {node: '>=20.18.1'} unenv@1.10.0: @@ -18710,8 +18549,8 @@ packages: resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} engines: {node: '>=4'} - update-browserslist-db@1.1.1: - resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + update-browserslist-db@1.1.2: + resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -19610,7 +19449,7 @@ snapshots: - supports-color - utf-8-validate - '@0no-co/graphql.web@1.0.12(graphql@16.10.0)': + '@0no-co/graphql.web@1.0.13(graphql@16.10.0)': optionalDependencies: graphql: 16.10.0 @@ -19719,13 +19558,13 @@ snapshots: transitivePeerDependencies: - zod - '@ai-sdk/svelte@0.0.57(svelte@5.16.1)(zod@3.23.8)': + '@ai-sdk/svelte@0.0.57(svelte@5.17.3)(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.16.1) + sswr: 2.1.0(svelte@5.17.3) optionalDependencies: - svelte: 5.16.1 + svelte: 5.17.3 transitivePeerDependencies: - zod @@ -19749,33 +19588,33 @@ snapshots: transitivePeerDependencies: - zod - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0)(search-insights@2.17.3)': + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0)': + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0) - '@algolia/client-search': 5.18.0 - algoliasearch: 5.18.0 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) + '@algolia/client-search': 5.19.0 + algoliasearch: 5.19.0 - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0)': + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)': dependencies: - '@algolia/client-search': 5.18.0 - algoliasearch: 5.18.0 + '@algolia/client-search': 5.19.0 + algoliasearch: 5.19.0 '@algolia/cache-browser-local-storage@4.24.0': dependencies: @@ -19787,12 +19626,12 @@ snapshots: dependencies: '@algolia/cache-common': 4.24.0 - '@algolia/client-abtesting@5.18.0': + '@algolia/client-abtesting@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 '@algolia/client-account@4.24.0': dependencies: @@ -19807,26 +19646,26 @@ snapshots: '@algolia/requester-common': 4.24.0 '@algolia/transporter': 4.24.0 - '@algolia/client-analytics@5.18.0': + '@algolia/client-analytics@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 '@algolia/client-common@4.24.0': dependencies: '@algolia/requester-common': 4.24.0 '@algolia/transporter': 4.24.0 - '@algolia/client-common@5.18.0': {} + '@algolia/client-common@5.19.0': {} - '@algolia/client-insights@5.18.0': + '@algolia/client-insights@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 '@algolia/client-personalization@4.24.0': dependencies: @@ -19834,19 +19673,19 @@ snapshots: '@algolia/requester-common': 4.24.0 '@algolia/transporter': 4.24.0 - '@algolia/client-personalization@5.18.0': + '@algolia/client-personalization@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 - '@algolia/client-query-suggestions@5.18.0': + '@algolia/client-query-suggestions@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 '@algolia/client-search@4.24.0': dependencies: @@ -19854,21 +19693,21 @@ snapshots: '@algolia/requester-common': 4.24.0 '@algolia/transporter': 4.24.0 - '@algolia/client-search@5.18.0': + '@algolia/client-search@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 '@algolia/events@4.0.1': {} - '@algolia/ingestion@1.18.0': + '@algolia/ingestion@1.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 '@algolia/logger-common@4.24.0': {} @@ -19876,12 +19715,12 @@ snapshots: dependencies: '@algolia/logger-common': 4.24.0 - '@algolia/monitoring@1.18.0': + '@algolia/monitoring@1.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 '@algolia/recommend@4.24.0': dependencies: @@ -19897,34 +19736,34 @@ snapshots: '@algolia/requester-node-http': 4.24.0 '@algolia/transporter': 4.24.0 - '@algolia/recommend@5.18.0': + '@algolia/recommend@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 '@algolia/requester-browser-xhr@4.24.0': dependencies: '@algolia/requester-common': 4.24.0 - '@algolia/requester-browser-xhr@5.18.0': + '@algolia/requester-browser-xhr@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 + '@algolia/client-common': 5.19.0 '@algolia/requester-common@4.24.0': {} - '@algolia/requester-fetch@5.18.0': + '@algolia/requester-fetch@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 + '@algolia/client-common': 5.19.0 '@algolia/requester-node-http@4.24.0': dependencies: '@algolia/requester-common': 4.24.0 - '@algolia/requester-node-http@5.18.0': + '@algolia/requester-node-http@5.19.0': dependencies: - '@algolia/client-common': 5.18.0 + '@algolia/client-common': 5.19.0 '@algolia/transporter@4.24.0': dependencies: @@ -19948,7 +19787,7 @@ snapshots: '@anthropic-ai/sdk@0.30.1(encoding@0.1.13)': dependencies: - '@types/node': 18.19.69 + '@types/node': 18.19.70 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -20000,6 +19839,14 @@ snapshots: transitivePeerDependencies: - debug + '@asamuzakjp/css-color@2.8.2': + dependencies: + '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + lru-cache: 11.0.2 + '@avnu/avnu-sdk@2.1.1(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(qs@6.13.1)(starknet@6.18.0(encoding@0.1.13))': dependencies: ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -20009,21 +19856,21 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.714.0 + '@aws-sdk/types': 3.723.0 tslib: 2.8.1 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.714.0 + '@aws-sdk/types': 3.723.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.714.0 - '@aws-sdk/util-locate-window': 3.693.0 + '@aws-sdk/types': 3.723.0 + '@aws-sdk/util-locate-window': 3.723.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -20032,15 +19879,15 @@ 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.714.0 - '@aws-sdk/util-locate-window': 3.693.0 + '@aws-sdk/types': 3.723.0 + '@aws-sdk/util-locate-window': 3.723.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.714.0 + '@aws-sdk/types': 3.723.0 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -20049,624 +19896,624 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.714.0 + '@aws-sdk/types': 3.723.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-polly@3.721.0': + '@aws-sdk/client-polly@3.726.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.721.0(@aws-sdk/client-sts@3.721.0) - '@aws-sdk/client-sts': 3.721.0 - '@aws-sdk/core': 3.716.0 - '@aws-sdk/credential-provider-node': 3.721.0(@aws-sdk/client-sso-oidc@3.721.0(@aws-sdk/client-sts@3.721.0))(@aws-sdk/client-sts@3.721.0) - '@aws-sdk/middleware-host-header': 3.714.0 - '@aws-sdk/middleware-logger': 3.714.0 - '@aws-sdk/middleware-recursion-detection': 3.714.0 - '@aws-sdk/middleware-user-agent': 3.721.0 - '@aws-sdk/region-config-resolver': 3.714.0 - '@aws-sdk/types': 3.714.0 - '@aws-sdk/util-endpoints': 3.714.0 - '@aws-sdk/util-user-agent-browser': 3.714.0 - '@aws-sdk/util-user-agent-node': 3.721.0 - '@smithy/config-resolver': 3.0.13 - '@smithy/core': 2.5.7 - '@smithy/fetch-http-handler': 4.1.3 - '@smithy/hash-node': 3.0.11 - '@smithy/invalid-dependency': 3.0.11 - '@smithy/middleware-content-length': 3.0.13 - '@smithy/middleware-endpoint': 3.2.8 - '@smithy/middleware-retry': 3.0.34 - '@smithy/middleware-serde': 3.0.11 - '@smithy/middleware-stack': 3.0.11 - '@smithy/node-config-provider': 3.1.12 - '@smithy/node-http-handler': 3.3.3 - '@smithy/protocol-http': 4.1.8 - '@smithy/smithy-client': 3.7.0 - '@smithy/types': 3.7.2 - '@smithy/url-parser': 3.0.11 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.34 - '@smithy/util-defaults-mode-node': 3.0.34 - '@smithy/util-endpoints': 2.1.7 - '@smithy/util-middleware': 3.0.11 - '@smithy/util-retry': 3.0.11 - '@smithy/util-stream': 3.3.4 - '@smithy/util-utf8': 3.0.0 + '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/client-sts': 3.726.0 + '@aws-sdk/core': 3.723.0 + '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/middleware-host-header': 3.723.0 + '@aws-sdk/middleware-logger': 3.723.0 + '@aws-sdk/middleware-recursion-detection': 3.723.0 + '@aws-sdk/middleware-user-agent': 3.726.0 + '@aws-sdk/region-config-resolver': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@aws-sdk/util-endpoints': 3.726.0 + '@aws-sdk/util-user-agent-browser': 3.723.0 + '@aws-sdk/util-user-agent-node': 3.726.0 + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.0 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.1 + '@smithy/middleware-retry': 4.0.1 + '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.0 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.1 + '@smithy/util-defaults-mode-node': 4.0.1 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-stream': 4.0.1 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-s3@3.721.0': + '@aws-sdk/client-s3@3.726.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.721.0(@aws-sdk/client-sts@3.721.0) - '@aws-sdk/client-sts': 3.721.0 - '@aws-sdk/core': 3.716.0 - '@aws-sdk/credential-provider-node': 3.721.0(@aws-sdk/client-sso-oidc@3.721.0(@aws-sdk/client-sts@3.721.0))(@aws-sdk/client-sts@3.721.0) - '@aws-sdk/middleware-bucket-endpoint': 3.721.0 - '@aws-sdk/middleware-expect-continue': 3.714.0 - '@aws-sdk/middleware-flexible-checksums': 3.717.0 - '@aws-sdk/middleware-host-header': 3.714.0 - '@aws-sdk/middleware-location-constraint': 3.714.0 - '@aws-sdk/middleware-logger': 3.714.0 - '@aws-sdk/middleware-recursion-detection': 3.714.0 - '@aws-sdk/middleware-sdk-s3': 3.716.0 - '@aws-sdk/middleware-ssec': 3.714.0 - '@aws-sdk/middleware-user-agent': 3.721.0 - '@aws-sdk/region-config-resolver': 3.714.0 - '@aws-sdk/signature-v4-multi-region': 3.716.0 - '@aws-sdk/types': 3.714.0 - '@aws-sdk/util-endpoints': 3.714.0 - '@aws-sdk/util-user-agent-browser': 3.714.0 - '@aws-sdk/util-user-agent-node': 3.721.0 - '@aws-sdk/xml-builder': 3.709.0 - '@smithy/config-resolver': 3.0.13 - '@smithy/core': 2.5.7 - '@smithy/eventstream-serde-browser': 3.0.14 - '@smithy/eventstream-serde-config-resolver': 3.0.11 - '@smithy/eventstream-serde-node': 3.0.13 - '@smithy/fetch-http-handler': 4.1.3 - '@smithy/hash-blob-browser': 3.1.10 - '@smithy/hash-node': 3.0.11 - '@smithy/hash-stream-node': 3.1.10 - '@smithy/invalid-dependency': 3.0.11 - '@smithy/md5-js': 3.0.11 - '@smithy/middleware-content-length': 3.0.13 - '@smithy/middleware-endpoint': 3.2.8 - '@smithy/middleware-retry': 3.0.34 - '@smithy/middleware-serde': 3.0.11 - '@smithy/middleware-stack': 3.0.11 - '@smithy/node-config-provider': 3.1.12 - '@smithy/node-http-handler': 3.3.3 - '@smithy/protocol-http': 4.1.8 - '@smithy/smithy-client': 3.7.0 - '@smithy/types': 3.7.2 - '@smithy/url-parser': 3.0.11 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.34 - '@smithy/util-defaults-mode-node': 3.0.34 - '@smithy/util-endpoints': 2.1.7 - '@smithy/util-middleware': 3.0.11 - '@smithy/util-retry': 3.0.11 - '@smithy/util-stream': 3.3.4 - '@smithy/util-utf8': 3.0.0 - '@smithy/util-waiter': 3.2.0 + '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/client-sts': 3.726.0 + '@aws-sdk/core': 3.723.0 + '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/middleware-bucket-endpoint': 3.726.0 + '@aws-sdk/middleware-expect-continue': 3.723.0 + '@aws-sdk/middleware-flexible-checksums': 3.723.0 + '@aws-sdk/middleware-host-header': 3.723.0 + '@aws-sdk/middleware-location-constraint': 3.723.0 + '@aws-sdk/middleware-logger': 3.723.0 + '@aws-sdk/middleware-recursion-detection': 3.723.0 + '@aws-sdk/middleware-sdk-s3': 3.723.0 + '@aws-sdk/middleware-ssec': 3.723.0 + '@aws-sdk/middleware-user-agent': 3.726.0 + '@aws-sdk/region-config-resolver': 3.723.0 + '@aws-sdk/signature-v4-multi-region': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@aws-sdk/util-endpoints': 3.726.0 + '@aws-sdk/util-user-agent-browser': 3.723.0 + '@aws-sdk/util-user-agent-node': 3.726.0 + '@aws-sdk/xml-builder': 3.723.0 + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.0 + '@smithy/eventstream-serde-browser': 4.0.1 + '@smithy/eventstream-serde-config-resolver': 4.0.1 + '@smithy/eventstream-serde-node': 4.0.1 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-blob-browser': 4.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/hash-stream-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/md5-js': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.1 + '@smithy/middleware-retry': 4.0.1 + '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.0 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.1 + '@smithy/util-defaults-mode-node': 4.0.1 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-stream': 4.0.1 + '@smithy/util-utf8': 4.0.0 + '@smithy/util-waiter': 4.0.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso-oidc@3.721.0(@aws-sdk/client-sts@3.721.0)': + '@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0)': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sts': 3.721.0 - '@aws-sdk/core': 3.716.0 - '@aws-sdk/credential-provider-node': 3.721.0(@aws-sdk/client-sso-oidc@3.721.0(@aws-sdk/client-sts@3.721.0))(@aws-sdk/client-sts@3.721.0) - '@aws-sdk/middleware-host-header': 3.714.0 - '@aws-sdk/middleware-logger': 3.714.0 - '@aws-sdk/middleware-recursion-detection': 3.714.0 - '@aws-sdk/middleware-user-agent': 3.721.0 - '@aws-sdk/region-config-resolver': 3.714.0 - '@aws-sdk/types': 3.714.0 - '@aws-sdk/util-endpoints': 3.714.0 - '@aws-sdk/util-user-agent-browser': 3.714.0 - '@aws-sdk/util-user-agent-node': 3.721.0 - '@smithy/config-resolver': 3.0.13 - '@smithy/core': 2.5.7 - '@smithy/fetch-http-handler': 4.1.3 - '@smithy/hash-node': 3.0.11 - '@smithy/invalid-dependency': 3.0.11 - '@smithy/middleware-content-length': 3.0.13 - '@smithy/middleware-endpoint': 3.2.8 - '@smithy/middleware-retry': 3.0.34 - '@smithy/middleware-serde': 3.0.11 - '@smithy/middleware-stack': 3.0.11 - '@smithy/node-config-provider': 3.1.12 - '@smithy/node-http-handler': 3.3.3 - '@smithy/protocol-http': 4.1.8 - '@smithy/smithy-client': 3.7.0 - '@smithy/types': 3.7.2 - '@smithy/url-parser': 3.0.11 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.34 - '@smithy/util-defaults-mode-node': 3.0.34 - '@smithy/util-endpoints': 2.1.7 - '@smithy/util-middleware': 3.0.11 - '@smithy/util-retry': 3.0.11 - '@smithy/util-utf8': 3.0.0 + '@aws-sdk/client-sts': 3.726.0 + '@aws-sdk/core': 3.723.0 + '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/middleware-host-header': 3.723.0 + '@aws-sdk/middleware-logger': 3.723.0 + '@aws-sdk/middleware-recursion-detection': 3.723.0 + '@aws-sdk/middleware-user-agent': 3.726.0 + '@aws-sdk/region-config-resolver': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@aws-sdk/util-endpoints': 3.726.0 + '@aws-sdk/util-user-agent-browser': 3.723.0 + '@aws-sdk/util-user-agent-node': 3.726.0 + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.0 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.1 + '@smithy/middleware-retry': 4.0.1 + '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.0 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.1 + '@smithy/util-defaults-mode-node': 4.0.1 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.721.0': + '@aws-sdk/client-sso@3.726.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.716.0 - '@aws-sdk/middleware-host-header': 3.714.0 - '@aws-sdk/middleware-logger': 3.714.0 - '@aws-sdk/middleware-recursion-detection': 3.714.0 - '@aws-sdk/middleware-user-agent': 3.721.0 - '@aws-sdk/region-config-resolver': 3.714.0 - '@aws-sdk/types': 3.714.0 - '@aws-sdk/util-endpoints': 3.714.0 - '@aws-sdk/util-user-agent-browser': 3.714.0 - '@aws-sdk/util-user-agent-node': 3.721.0 - '@smithy/config-resolver': 3.0.13 - '@smithy/core': 2.5.7 - '@smithy/fetch-http-handler': 4.1.3 - '@smithy/hash-node': 3.0.11 - '@smithy/invalid-dependency': 3.0.11 - '@smithy/middleware-content-length': 3.0.13 - '@smithy/middleware-endpoint': 3.2.8 - '@smithy/middleware-retry': 3.0.34 - '@smithy/middleware-serde': 3.0.11 - '@smithy/middleware-stack': 3.0.11 - '@smithy/node-config-provider': 3.1.12 - '@smithy/node-http-handler': 3.3.3 - '@smithy/protocol-http': 4.1.8 - '@smithy/smithy-client': 3.7.0 - '@smithy/types': 3.7.2 - '@smithy/url-parser': 3.0.11 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.34 - '@smithy/util-defaults-mode-node': 3.0.34 - '@smithy/util-endpoints': 2.1.7 - '@smithy/util-middleware': 3.0.11 - '@smithy/util-retry': 3.0.11 - '@smithy/util-utf8': 3.0.0 + '@aws-sdk/core': 3.723.0 + '@aws-sdk/middleware-host-header': 3.723.0 + '@aws-sdk/middleware-logger': 3.723.0 + '@aws-sdk/middleware-recursion-detection': 3.723.0 + '@aws-sdk/middleware-user-agent': 3.726.0 + '@aws-sdk/region-config-resolver': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@aws-sdk/util-endpoints': 3.726.0 + '@aws-sdk/util-user-agent-browser': 3.723.0 + '@aws-sdk/util-user-agent-node': 3.726.0 + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.0 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.1 + '@smithy/middleware-retry': 4.0.1 + '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.0 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.1 + '@smithy/util-defaults-mode-node': 4.0.1 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sts@3.721.0': + '@aws-sdk/client-sts@3.726.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.721.0(@aws-sdk/client-sts@3.721.0) - '@aws-sdk/core': 3.716.0 - '@aws-sdk/credential-provider-node': 3.721.0(@aws-sdk/client-sso-oidc@3.721.0(@aws-sdk/client-sts@3.721.0))(@aws-sdk/client-sts@3.721.0) - '@aws-sdk/middleware-host-header': 3.714.0 - '@aws-sdk/middleware-logger': 3.714.0 - '@aws-sdk/middleware-recursion-detection': 3.714.0 - '@aws-sdk/middleware-user-agent': 3.721.0 - '@aws-sdk/region-config-resolver': 3.714.0 - '@aws-sdk/types': 3.714.0 - '@aws-sdk/util-endpoints': 3.714.0 - '@aws-sdk/util-user-agent-browser': 3.714.0 - '@aws-sdk/util-user-agent-node': 3.721.0 - '@smithy/config-resolver': 3.0.13 - '@smithy/core': 2.5.7 - '@smithy/fetch-http-handler': 4.1.3 - '@smithy/hash-node': 3.0.11 - '@smithy/invalid-dependency': 3.0.11 - '@smithy/middleware-content-length': 3.0.13 - '@smithy/middleware-endpoint': 3.2.8 - '@smithy/middleware-retry': 3.0.34 - '@smithy/middleware-serde': 3.0.11 - '@smithy/middleware-stack': 3.0.11 - '@smithy/node-config-provider': 3.1.12 - '@smithy/node-http-handler': 3.3.3 - '@smithy/protocol-http': 4.1.8 - '@smithy/smithy-client': 3.7.0 - '@smithy/types': 3.7.2 - '@smithy/url-parser': 3.0.11 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.34 - '@smithy/util-defaults-mode-node': 3.0.34 - '@smithy/util-endpoints': 2.1.7 - '@smithy/util-middleware': 3.0.11 - '@smithy/util-retry': 3.0.11 - '@smithy/util-utf8': 3.0.0 + '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/core': 3.723.0 + '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/middleware-host-header': 3.723.0 + '@aws-sdk/middleware-logger': 3.723.0 + '@aws-sdk/middleware-recursion-detection': 3.723.0 + '@aws-sdk/middleware-user-agent': 3.726.0 + '@aws-sdk/region-config-resolver': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@aws-sdk/util-endpoints': 3.726.0 + '@aws-sdk/util-user-agent-browser': 3.723.0 + '@aws-sdk/util-user-agent-node': 3.726.0 + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.0 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.1 + '@smithy/middleware-retry': 4.0.1 + '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.0 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.1 + '@smithy/util-defaults-mode-node': 4.0.1 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-transcribe-streaming@3.721.0': + '@aws-sdk/client-transcribe-streaming@3.726.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.721.0(@aws-sdk/client-sts@3.721.0) - '@aws-sdk/client-sts': 3.721.0 - '@aws-sdk/core': 3.716.0 - '@aws-sdk/credential-provider-node': 3.721.0(@aws-sdk/client-sso-oidc@3.721.0(@aws-sdk/client-sts@3.721.0))(@aws-sdk/client-sts@3.721.0) - '@aws-sdk/eventstream-handler-node': 3.714.0 - '@aws-sdk/middleware-eventstream': 3.714.0 - '@aws-sdk/middleware-host-header': 3.714.0 - '@aws-sdk/middleware-logger': 3.714.0 - '@aws-sdk/middleware-recursion-detection': 3.714.0 - '@aws-sdk/middleware-sdk-transcribe-streaming': 3.714.0 - '@aws-sdk/middleware-user-agent': 3.721.0 - '@aws-sdk/middleware-websocket': 3.714.0 - '@aws-sdk/region-config-resolver': 3.714.0 - '@aws-sdk/types': 3.714.0 - '@aws-sdk/util-endpoints': 3.714.0 - '@aws-sdk/util-user-agent-browser': 3.714.0 - '@aws-sdk/util-user-agent-node': 3.721.0 - '@smithy/config-resolver': 3.0.13 - '@smithy/core': 2.5.7 - '@smithy/eventstream-serde-browser': 3.0.14 - '@smithy/eventstream-serde-config-resolver': 3.0.11 - '@smithy/eventstream-serde-node': 3.0.13 - '@smithy/fetch-http-handler': 4.1.3 - '@smithy/hash-node': 3.0.11 - '@smithy/invalid-dependency': 3.0.11 - '@smithy/middleware-content-length': 3.0.13 - '@smithy/middleware-endpoint': 3.2.8 - '@smithy/middleware-retry': 3.0.34 - '@smithy/middleware-serde': 3.0.11 - '@smithy/middleware-stack': 3.0.11 - '@smithy/node-config-provider': 3.1.12 - '@smithy/node-http-handler': 3.3.3 - '@smithy/protocol-http': 4.1.8 - '@smithy/smithy-client': 3.7.0 - '@smithy/types': 3.7.2 - '@smithy/url-parser': 3.0.11 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.34 - '@smithy/util-defaults-mode-node': 3.0.34 - '@smithy/util-endpoints': 2.1.7 - '@smithy/util-middleware': 3.0.11 - '@smithy/util-retry': 3.0.11 - '@smithy/util-utf8': 3.0.0 + '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/client-sts': 3.726.0 + '@aws-sdk/core': 3.723.0 + '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/eventstream-handler-node': 3.723.0 + '@aws-sdk/middleware-eventstream': 3.723.0 + '@aws-sdk/middleware-host-header': 3.723.0 + '@aws-sdk/middleware-logger': 3.723.0 + '@aws-sdk/middleware-recursion-detection': 3.723.0 + '@aws-sdk/middleware-sdk-transcribe-streaming': 3.723.0 + '@aws-sdk/middleware-user-agent': 3.726.0 + '@aws-sdk/middleware-websocket': 3.723.0 + '@aws-sdk/region-config-resolver': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@aws-sdk/util-endpoints': 3.726.0 + '@aws-sdk/util-user-agent-browser': 3.723.0 + '@aws-sdk/util-user-agent-node': 3.726.0 + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.0 + '@smithy/eventstream-serde-browser': 4.0.1 + '@smithy/eventstream-serde-config-resolver': 4.0.1 + '@smithy/eventstream-serde-node': 4.0.1 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.1 + '@smithy/middleware-retry': 4.0.1 + '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.0 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.1 + '@smithy/util-defaults-mode-node': 4.0.1 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/core@3.716.0': - dependencies: - '@aws-sdk/types': 3.714.0 - '@smithy/core': 2.5.7 - '@smithy/node-config-provider': 3.1.12 - '@smithy/property-provider': 3.1.11 - '@smithy/protocol-http': 4.1.8 - '@smithy/signature-v4': 4.2.4 - '@smithy/smithy-client': 3.7.0 - '@smithy/types': 3.7.2 - '@smithy/util-middleware': 3.0.11 + '@aws-sdk/core@3.723.0': + dependencies: + '@aws-sdk/types': 3.723.0 + '@smithy/core': 3.1.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/signature-v4': 5.0.1 + '@smithy/smithy-client': 4.1.0 + '@smithy/types': 4.1.0 + '@smithy/util-middleware': 4.0.1 fast-xml-parser: 4.4.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.716.0': + '@aws-sdk/credential-provider-env@3.723.0': dependencies: - '@aws-sdk/core': 3.716.0 - '@aws-sdk/types': 3.714.0 - '@smithy/property-provider': 3.1.11 - '@smithy/types': 3.7.2 + '@aws-sdk/core': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@smithy/property-provider': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.716.0': - dependencies: - '@aws-sdk/core': 3.716.0 - '@aws-sdk/types': 3.714.0 - '@smithy/fetch-http-handler': 4.1.3 - '@smithy/node-http-handler': 3.3.3 - '@smithy/property-provider': 3.1.11 - '@smithy/protocol-http': 4.1.8 - '@smithy/smithy-client': 3.7.0 - '@smithy/types': 3.7.2 - '@smithy/util-stream': 3.3.4 + '@aws-sdk/credential-provider-http@3.723.0': + dependencies: + '@aws-sdk/core': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/node-http-handler': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.0 + '@smithy/types': 4.1.0 + '@smithy/util-stream': 4.0.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.721.0(@aws-sdk/client-sso-oidc@3.721.0(@aws-sdk/client-sts@3.721.0))(@aws-sdk/client-sts@3.721.0)': - dependencies: - '@aws-sdk/client-sts': 3.721.0 - '@aws-sdk/core': 3.716.0 - '@aws-sdk/credential-provider-env': 3.716.0 - '@aws-sdk/credential-provider-http': 3.716.0 - '@aws-sdk/credential-provider-process': 3.716.0 - '@aws-sdk/credential-provider-sso': 3.721.0(@aws-sdk/client-sso-oidc@3.721.0(@aws-sdk/client-sts@3.721.0)) - '@aws-sdk/credential-provider-web-identity': 3.716.0(@aws-sdk/client-sts@3.721.0) - '@aws-sdk/types': 3.714.0 - '@smithy/credential-provider-imds': 3.2.8 - '@smithy/property-provider': 3.1.11 - '@smithy/shared-ini-file-loader': 3.1.12 - '@smithy/types': 3.7.2 + '@aws-sdk/credential-provider-ini@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0)': + dependencies: + '@aws-sdk/client-sts': 3.726.0 + '@aws-sdk/core': 3.723.0 + '@aws-sdk/credential-provider-env': 3.723.0 + '@aws-sdk/credential-provider-http': 3.723.0 + '@aws-sdk/credential-provider-process': 3.723.0 + '@aws-sdk/credential-provider-sso': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0)) + '@aws-sdk/credential-provider-web-identity': 3.723.0(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/types': 3.723.0 + '@smithy/credential-provider-imds': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-node@3.721.0(@aws-sdk/client-sso-oidc@3.721.0(@aws-sdk/client-sts@3.721.0))(@aws-sdk/client-sts@3.721.0)': - dependencies: - '@aws-sdk/credential-provider-env': 3.716.0 - '@aws-sdk/credential-provider-http': 3.716.0 - '@aws-sdk/credential-provider-ini': 3.721.0(@aws-sdk/client-sso-oidc@3.721.0(@aws-sdk/client-sts@3.721.0))(@aws-sdk/client-sts@3.721.0) - '@aws-sdk/credential-provider-process': 3.716.0 - '@aws-sdk/credential-provider-sso': 3.721.0(@aws-sdk/client-sso-oidc@3.721.0(@aws-sdk/client-sts@3.721.0)) - '@aws-sdk/credential-provider-web-identity': 3.716.0(@aws-sdk/client-sts@3.721.0) - '@aws-sdk/types': 3.714.0 - '@smithy/credential-provider-imds': 3.2.8 - '@smithy/property-provider': 3.1.11 - '@smithy/shared-ini-file-loader': 3.1.12 - '@smithy/types': 3.7.2 + '@aws-sdk/credential-provider-node@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0)': + dependencies: + '@aws-sdk/credential-provider-env': 3.723.0 + '@aws-sdk/credential-provider-http': 3.723.0 + '@aws-sdk/credential-provider-ini': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/credential-provider-process': 3.723.0 + '@aws-sdk/credential-provider-sso': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0)) + '@aws-sdk/credential-provider-web-identity': 3.723.0(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/types': 3.723.0 + '@smithy/credential-provider-imds': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - '@aws-sdk/client-sts' - aws-crt - '@aws-sdk/credential-provider-process@3.716.0': + '@aws-sdk/credential-provider-process@3.723.0': dependencies: - '@aws-sdk/core': 3.716.0 - '@aws-sdk/types': 3.714.0 - '@smithy/property-provider': 3.1.11 - '@smithy/shared-ini-file-loader': 3.1.12 - '@smithy/types': 3.7.2 + '@aws-sdk/core': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.721.0(@aws-sdk/client-sso-oidc@3.721.0(@aws-sdk/client-sts@3.721.0))': + '@aws-sdk/credential-provider-sso@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))': dependencies: - '@aws-sdk/client-sso': 3.721.0 - '@aws-sdk/core': 3.716.0 - '@aws-sdk/token-providers': 3.721.0(@aws-sdk/client-sso-oidc@3.721.0(@aws-sdk/client-sts@3.721.0)) - '@aws-sdk/types': 3.714.0 - '@smithy/property-provider': 3.1.11 - '@smithy/shared-ini-file-loader': 3.1.12 - '@smithy/types': 3.7.2 + '@aws-sdk/client-sso': 3.726.0 + '@aws-sdk/core': 3.723.0 + '@aws-sdk/token-providers': 3.723.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0)) + '@aws-sdk/types': 3.723.0 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-web-identity@3.716.0(@aws-sdk/client-sts@3.721.0)': + '@aws-sdk/credential-provider-web-identity@3.723.0(@aws-sdk/client-sts@3.726.0)': dependencies: - '@aws-sdk/client-sts': 3.721.0 - '@aws-sdk/core': 3.716.0 - '@aws-sdk/types': 3.714.0 - '@smithy/property-provider': 3.1.11 - '@smithy/types': 3.7.2 + '@aws-sdk/client-sts': 3.726.0 + '@aws-sdk/core': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@smithy/property-provider': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/eventstream-handler-node@3.714.0': + '@aws-sdk/eventstream-handler-node@3.723.0': dependencies: - '@aws-sdk/types': 3.714.0 - '@smithy/eventstream-codec': 3.1.10 - '@smithy/types': 3.7.2 + '@aws-sdk/types': 3.723.0 + '@smithy/eventstream-codec': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-bucket-endpoint@3.721.0': + '@aws-sdk/middleware-bucket-endpoint@3.726.0': dependencies: - '@aws-sdk/types': 3.714.0 - '@aws-sdk/util-arn-parser': 3.693.0 - '@smithy/node-config-provider': 3.1.12 - '@smithy/protocol-http': 4.1.8 - '@smithy/types': 3.7.2 - '@smithy/util-config-provider': 3.0.0 + '@aws-sdk/types': 3.723.0 + '@aws-sdk/util-arn-parser': 3.723.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-config-provider': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-eventstream@3.714.0': + '@aws-sdk/middleware-eventstream@3.723.0': dependencies: - '@aws-sdk/types': 3.714.0 - '@smithy/protocol-http': 4.1.8 - '@smithy/types': 3.7.2 + '@aws-sdk/types': 3.723.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-expect-continue@3.714.0': + '@aws-sdk/middleware-expect-continue@3.723.0': dependencies: - '@aws-sdk/types': 3.714.0 - '@smithy/protocol-http': 4.1.8 - '@smithy/types': 3.7.2 + '@aws-sdk/types': 3.723.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.717.0': + '@aws-sdk/middleware-flexible-checksums@3.723.0': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.716.0 - '@aws-sdk/types': 3.714.0 - '@smithy/is-array-buffer': 3.0.0 - '@smithy/node-config-provider': 3.1.12 - '@smithy/protocol-http': 4.1.8 - '@smithy/types': 3.7.2 - '@smithy/util-middleware': 3.0.11 - '@smithy/util-stream': 3.3.4 - '@smithy/util-utf8': 3.0.0 + '@aws-sdk/core': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@smithy/is-array-buffer': 4.0.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-stream': 4.0.1 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-host-header@3.714.0': + '@aws-sdk/middleware-host-header@3.723.0': dependencies: - '@aws-sdk/types': 3.714.0 - '@smithy/protocol-http': 4.1.8 - '@smithy/types': 3.7.2 + '@aws-sdk/types': 3.723.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-location-constraint@3.714.0': + '@aws-sdk/middleware-location-constraint@3.723.0': dependencies: - '@aws-sdk/types': 3.714.0 - '@smithy/types': 3.7.2 + '@aws-sdk/types': 3.723.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-logger@3.714.0': + '@aws-sdk/middleware-logger@3.723.0': dependencies: - '@aws-sdk/types': 3.714.0 - '@smithy/types': 3.7.2 + '@aws-sdk/types': 3.723.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-recursion-detection@3.714.0': + '@aws-sdk/middleware-recursion-detection@3.723.0': dependencies: - '@aws-sdk/types': 3.714.0 - '@smithy/protocol-http': 4.1.8 - '@smithy/types': 3.7.2 + '@aws-sdk/types': 3.723.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.716.0': - dependencies: - '@aws-sdk/core': 3.716.0 - '@aws-sdk/types': 3.714.0 - '@aws-sdk/util-arn-parser': 3.693.0 - '@smithy/core': 2.5.7 - '@smithy/node-config-provider': 3.1.12 - '@smithy/protocol-http': 4.1.8 - '@smithy/signature-v4': 4.2.4 - '@smithy/smithy-client': 3.7.0 - '@smithy/types': 3.7.2 - '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.11 - '@smithy/util-stream': 3.3.4 - '@smithy/util-utf8': 3.0.0 + '@aws-sdk/middleware-sdk-s3@3.723.0': + dependencies: + '@aws-sdk/core': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@aws-sdk/util-arn-parser': 3.723.0 + '@smithy/core': 3.1.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/signature-v4': 5.0.1 + '@smithy/smithy-client': 4.1.0 + '@smithy/types': 4.1.0 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-stream': 4.0.1 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-transcribe-streaming@3.714.0': + '@aws-sdk/middleware-sdk-transcribe-streaming@3.723.0': dependencies: - '@aws-sdk/types': 3.714.0 - '@aws-sdk/util-format-url': 3.714.0 - '@smithy/eventstream-serde-browser': 3.0.14 - '@smithy/protocol-http': 4.1.8 - '@smithy/signature-v4': 4.2.4 - '@smithy/types': 3.7.2 + '@aws-sdk/types': 3.723.0 + '@aws-sdk/util-format-url': 3.723.0 + '@smithy/eventstream-serde-browser': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/signature-v4': 5.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 uuid: 9.0.1 - '@aws-sdk/middleware-ssec@3.714.0': + '@aws-sdk/middleware-ssec@3.723.0': dependencies: - '@aws-sdk/types': 3.714.0 - '@smithy/types': 3.7.2 + '@aws-sdk/types': 3.723.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-user-agent@3.721.0': + '@aws-sdk/middleware-user-agent@3.726.0': dependencies: - '@aws-sdk/core': 3.716.0 - '@aws-sdk/types': 3.714.0 - '@aws-sdk/util-endpoints': 3.714.0 - '@smithy/core': 2.5.7 - '@smithy/protocol-http': 4.1.8 - '@smithy/types': 3.7.2 + '@aws-sdk/core': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@aws-sdk/util-endpoints': 3.726.0 + '@smithy/core': 3.1.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-websocket@3.714.0': - dependencies: - '@aws-sdk/types': 3.714.0 - '@aws-sdk/util-format-url': 3.714.0 - '@smithy/eventstream-codec': 3.1.10 - '@smithy/eventstream-serde-browser': 3.0.14 - '@smithy/fetch-http-handler': 4.1.3 - '@smithy/protocol-http': 4.1.8 - '@smithy/signature-v4': 4.2.4 - '@smithy/types': 3.7.2 - '@smithy/util-hex-encoding': 3.0.0 + '@aws-sdk/middleware-websocket@3.723.0': + dependencies: + '@aws-sdk/types': 3.723.0 + '@aws-sdk/util-format-url': 3.723.0 + '@smithy/eventstream-codec': 4.0.1 + '@smithy/eventstream-serde-browser': 4.0.1 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/signature-v4': 5.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-hex-encoding': 4.0.0 tslib: 2.8.1 - '@aws-sdk/region-config-resolver@3.714.0': + '@aws-sdk/region-config-resolver@3.723.0': dependencies: - '@aws-sdk/types': 3.714.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 + '@aws-sdk/types': 3.723.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@aws-sdk/s3-request-presigner@3.721.0': + '@aws-sdk/s3-request-presigner@3.726.0': dependencies: - '@aws-sdk/signature-v4-multi-region': 3.716.0 - '@aws-sdk/types': 3.714.0 - '@aws-sdk/util-format-url': 3.714.0 - '@smithy/middleware-endpoint': 3.2.8 - '@smithy/protocol-http': 4.1.8 - '@smithy/smithy-client': 3.7.0 - '@smithy/types': 3.7.2 + '@aws-sdk/signature-v4-multi-region': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@aws-sdk/util-format-url': 3.723.0 + '@smithy/middleware-endpoint': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.716.0': + '@aws-sdk/signature-v4-multi-region@3.723.0': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.716.0 - '@aws-sdk/types': 3.714.0 - '@smithy/protocol-http': 4.1.8 - '@smithy/signature-v4': 4.2.4 - '@smithy/types': 3.7.2 + '@aws-sdk/middleware-sdk-s3': 3.723.0 + '@aws-sdk/types': 3.723.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/signature-v4': 5.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/token-providers@3.721.0(@aws-sdk/client-sso-oidc@3.721.0(@aws-sdk/client-sts@3.721.0))': + '@aws-sdk/token-providers@3.723.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))': dependencies: - '@aws-sdk/client-sso-oidc': 3.721.0(@aws-sdk/client-sts@3.721.0) - '@aws-sdk/types': 3.714.0 - '@smithy/property-provider': 3.1.11 - '@smithy/shared-ini-file-loader': 3.1.12 - '@smithy/types': 3.7.2 + '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/types': 3.723.0 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/types@3.714.0': + '@aws-sdk/types@3.723.0': dependencies: - '@smithy/types': 3.7.2 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/util-arn-parser@3.693.0': + '@aws-sdk/util-arn-parser@3.723.0': dependencies: tslib: 2.8.1 - '@aws-sdk/util-endpoints@3.714.0': + '@aws-sdk/util-endpoints@3.726.0': dependencies: - '@aws-sdk/types': 3.714.0 - '@smithy/types': 3.7.2 - '@smithy/util-endpoints': 2.1.7 + '@aws-sdk/types': 3.723.0 + '@smithy/types': 4.1.0 + '@smithy/util-endpoints': 3.0.1 tslib: 2.8.1 - '@aws-sdk/util-format-url@3.714.0': + '@aws-sdk/util-format-url@3.723.0': dependencies: - '@aws-sdk/types': 3.714.0 - '@smithy/querystring-builder': 3.0.11 - '@smithy/types': 3.7.2 + '@aws-sdk/types': 3.723.0 + '@smithy/querystring-builder': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.693.0': + '@aws-sdk/util-locate-window@3.723.0': dependencies: tslib: 2.8.1 - '@aws-sdk/util-user-agent-browser@3.714.0': + '@aws-sdk/util-user-agent-browser@3.723.0': dependencies: - '@aws-sdk/types': 3.714.0 - '@smithy/types': 3.7.2 + '@aws-sdk/types': 3.723.0 + '@smithy/types': 4.1.0 bowser: 2.11.0 tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.721.0': + '@aws-sdk/util-user-agent-node@3.726.0': dependencies: - '@aws-sdk/middleware-user-agent': 3.721.0 - '@aws-sdk/types': 3.714.0 - '@smithy/node-config-provider': 3.1.12 - '@smithy/types': 3.7.2 + '@aws-sdk/middleware-user-agent': 3.726.0 + '@aws-sdk/types': 3.723.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/xml-builder@3.709.0': + '@aws-sdk/xml-builder@3.723.0': dependencies: - '@smithy/types': 3.7.2 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@babel/code-frame@7.26.2': @@ -20713,7 +20560,7 @@ snapshots: dependencies: '@babel/compat-data': 7.26.3 '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.3 + browserslist: 4.24.4 lru-cache: 5.1.1 semver: 6.3.1 @@ -21421,7 +21268,7 @@ snapshots: babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0) babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0) - core-js-compat: 3.39.0 + core-js-compat: 3.40.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -21458,7 +21305,7 @@ snapshots: '@babel/runtime-corejs3@7.26.0': dependencies: - core-js-pure: 3.39.0 + core-js-pure: 3.40.0 regenerator-runtime: 0.14.1 '@babel/runtime@7.26.0': @@ -21502,7 +21349,7 @@ snapshots: '@braintree/sanitize-url@7.1.1': {} - '@cfworker/json-schema@4.0.3': {} + '@cfworker/json-schema@4.1.0': {} '@chevrotain/cst-dts-gen@11.0.3': dependencies: @@ -21532,7 +21379,7 @@ snapshots: '@cliqz/adblocker': 1.34.0 '@cliqz/adblocker-content': 1.34.0 playwright: 1.48.2 - tldts-experimental: 6.1.70 + tldts-experimental: 6.1.71 '@cliqz/adblocker@1.34.0': dependencies: @@ -21543,7 +21390,7 @@ snapshots: '@remusao/smaz': 1.10.0 '@types/chrome': 0.0.278 '@types/firefox-webext-browser': 120.0.4 - tldts-experimental: 6.1.70 + tldts-experimental: 6.1.71 '@coinbase-samples/advanced-sdk-ts@file:packages/plugin-coinbase/advanced-sdk-ts(encoding@0.1.13)': dependencies: @@ -21577,11 +21424,11 @@ snapshots: '@colors/colors@1.5.0': optional: true - '@commitlint/cli@18.6.1(@types/node@22.10.4)(typescript@5.6.3)': + '@commitlint/cli@18.6.1(@types/node@22.10.5)(typescript@5.6.3)': dependencies: '@commitlint/format': 18.6.1 '@commitlint/lint': 18.6.1 - '@commitlint/load': 18.6.1(@types/node@22.10.4)(typescript@5.6.3) + '@commitlint/load': 18.6.1(@types/node@22.10.5)(typescript@5.6.3) '@commitlint/read': 18.6.1 '@commitlint/types': 18.6.1 execa: 5.1.1 @@ -21631,7 +21478,7 @@ snapshots: '@commitlint/rules': 18.6.1 '@commitlint/types': 18.6.1 - '@commitlint/load@18.6.1(@types/node@22.10.4)(typescript@5.6.3)': + '@commitlint/load@18.6.1(@types/node@22.10.5)(typescript@5.6.3)': dependencies: '@commitlint/config-validator': 18.6.1 '@commitlint/execute-rule': 18.6.1 @@ -21639,7 +21486,7 @@ snapshots: '@commitlint/types': 18.6.1 chalk: 4.1.2 cosmiconfig: 8.3.6(typescript@5.6.3) - cosmiconfig-typescript-loader: 5.1.0(@types/node@22.10.4)(cosmiconfig@8.3.6(typescript@5.6.3))(typescript@5.6.3) + cosmiconfig-typescript-loader: 5.1.0(@types/node@22.10.5)(cosmiconfig@8.3.6(typescript@5.6.3))(typescript@5.6.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -22010,7 +21857,7 @@ snapshots: '@deepgram/sdk@3.9.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@deepgram/captions': 1.2.0 - '@types/node': 18.19.69 + '@types/node': 18.19.70 cross-fetch: 3.2.0(encoding@0.1.13) deepmerge: 4.3.1 events: 3.3.0 @@ -22148,12 +21995,12 @@ snapshots: '@docsearch/css@3.8.2': {} - '@docsearch/react@3.8.2(@algolia/client-search@5.18.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.2(@algolia/client-search@5.19.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.18.0)(algoliasearch@5.18.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.18.0)(algoliasearch@5.18.0) + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) '@docsearch/css': 3.8.2 - algoliasearch: 5.18.0 + algoliasearch: 5.19.0 optionalDependencies: '@types/react': 18.3.12 react: 18.3.1 @@ -22162,7 +22009,7 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@docusaurus/babel@3.6.3(@swc/core@1.10.4(@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/babel@3.6.3(@swc/core@1.10.7(@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)': dependencies: '@babel/core': 7.26.0 '@babel/generator': 7.26.3 @@ -22175,7 +22022,7 @@ snapshots: '@babel/runtime-corejs3': 7.26.0 '@babel/traverse': 7.26.4 '@docusaurus/logger': 3.6.3 - '@docusaurus/utils': 3.6.3(@swc/core@1.10.4(@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/utils': 3.6.3(@swc/core@1.10.7(@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) babel-plugin-dynamic-import-node: 2.3.3 fs-extra: 11.2.0 tslib: 2.8.1 @@ -22190,33 +22037,33 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/bundler@3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@docusaurus/bundler@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: '@babel/core': 7.26.0 - '@docusaurus/babel': 3.6.3(@swc/core@1.10.4(@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/babel': 3.6.3(@swc/core@1.10.7(@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/cssnano-preset': 3.6.3 '@docusaurus/logger': 3.6.3 - '@docusaurus/types': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.4(@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) - babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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) + babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) clean-css: 5.3.3 - copy-webpack-plugin: 11.0.0(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) - css-loader: 6.11.0(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + copy-webpack-plugin: 11.0.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) + css-loader: 6.11.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) cssnano: 6.1.2(postcss@8.4.49) - file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) html-minifier-terser: 7.2.0 - mini-css-extract-plugin: 2.9.2(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) - null-loader: 4.0.1(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + mini-css-extract-plugin: 2.9.2(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) + null-loader: 4.0.1(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) postcss: 8.4.49 - postcss-loader: 7.3.4(postcss@8.4.49)(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + postcss-loader: 7.3.4(postcss@8.4.49)(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) postcss-preset-env: 10.1.3(postcss@8.4.49) - react-dev-utils: 12.0.1(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) - terser-webpack-plugin: 5.3.11(@swc/core@1.10.4(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + react-dev-utils: 12.0.1(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) + terser-webpack-plugin: 5.3.11(@swc/core@1.10.7(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) - webpackbar: 6.0.1(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) + webpackbar: 6.0.1(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -22235,15 +22082,15 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/babel': 3.6.3(@swc/core@1.10.4(@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/bundler': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/babel': 3.6.3(@swc/core@1.10.7(@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/bundler': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@docusaurus/logger': 3.6.3 - '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.4(@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/utils': 3.6.3(@swc/core@1.10.4(@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/utils-common': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.4(@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/mdx-loader': 3.6.3(@swc/core@1.10.7(@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/utils': 3.6.3(@swc/core@1.10.7(@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/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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) '@mdx-js/react': 3.0.1(@types/react@18.3.12)(react@18.3.1) boxen: 6.2.1 chalk: 4.1.2 @@ -22251,7 +22098,7 @@ snapshots: cli-table3: 0.6.5 combine-promises: 1.2.0 commander: 5.1.0 - core-js: 3.39.0 + core-js: 3.40.0 del: 6.1.1 detect-port: 1.6.1 escape-html: 1.0.3 @@ -22259,17 +22106,17 @@ snapshots: eval: 0.1.8 fs-extra: 11.2.0 html-tags: 3.3.1 - html-webpack-plugin: 5.6.3(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + html-webpack-plugin: 5.6.3(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) leven: 3.1.0 lodash: 4.17.21 p-map: 4.0.0 prompts: 2.4.2 react: 18.3.1 - react-dev-utils: 12.0.1(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + react-dev-utils: 12.0.1(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) react-dom: 18.3.1(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) react-router: 5.3.4(react@18.3.1) react-router-config: 5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1) react-router-dom: 5.3.4(react@18.3.1) @@ -22279,9 +22126,9 @@ snapshots: shelljs: 0.8.5 tslib: 2.8.1 update-notifier: 6.0.2 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) webpack-bundle-analyzer: 4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - webpack-dev-server: 4.15.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + webpack-dev-server: 4.15.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) webpack-merge: 6.0.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -22315,26 +22162,26 @@ snapshots: chalk: 4.1.2 tslib: 2.8.1 - '@docusaurus/lqip-loader@3.6.3(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)))': + '@docusaurus/lqip-loader@3.6.3(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)))': dependencies: '@docusaurus/logger': 3.6.3 - file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) lodash: 4.17.21 sharp: 0.32.6 tslib: 2.8.1 transitivePeerDependencies: - webpack - '@docusaurus/mdx-loader@3.6.3(@swc/core@1.10.4(@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/mdx-loader@3.6.3(@swc/core@1.10.7(@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)': dependencies: '@docusaurus/logger': 3.6.3 - '@docusaurus/utils': 3.6.3(@swc/core@1.10.4(@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/utils-validation': 3.6.3(@swc/core@1.10.4(@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/utils': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@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) '@mdx-js/mdx': 3.1.0(acorn@8.14.0) '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.2.1 - file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) fs-extra: 11.2.0 image-size: 1.2.0 mdast-util-mdx: 3.0.0 @@ -22350,9 +22197,9 @@ snapshots: tslib: 2.8.1 unified: 11.0.5 unist-util-visit: 5.0.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) vfile: 6.0.3 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@swc/core' - acorn @@ -22362,9 +22209,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/module-type-aliases@3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/module-type-aliases@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/types': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 '@types/react': 18.3.12 '@types/react-router-config': 5.0.11 @@ -22381,17 +22228,17 @@ snapshots: - uglify-js - webpack-cli - '@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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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/mdx-loader': 3.6.3(@swc/core@1.10.4(@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/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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@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/types': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.4(@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/utils-common': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.4(@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/mdx-loader': 3.6.3(@swc/core@1.10.7(@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/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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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) cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 11.2.0 @@ -22403,7 +22250,7 @@ snapshots: tslib: 2.8.1 unist-util-visit: 5.0.0 utility-types: 3.11.0 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -22425,17 +22272,17 @@ snapshots: - vue-template-compiler - webpack-cli - '@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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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/mdx-loader': 3.6.3(@swc/core@1.10.4(@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/module-type-aliases': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@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/types': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.4(@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/utils-common': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.4(@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/mdx-loader': 3.6.3(@swc/core@1.10.7(@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/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.2.0 @@ -22445,7 +22292,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 utility-types: 3.11.0 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -22467,18 +22314,18 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-pages@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-pages@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.4(@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/types': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.4(@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/utils-validation': 3.6.3(@swc/core@1.10.4(@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/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@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/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@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) fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -22500,11 +22347,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-debug@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-debug@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@docusaurus/types': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.4(@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/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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) fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -22531,11 +22378,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-analytics@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-google-analytics@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@docusaurus/types': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.4(@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/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 @@ -22560,11 +22407,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-gtag@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-google-gtag@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@docusaurus/types': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.4(@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/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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) '@types/gtag.js': 0.0.12 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -22590,11 +22437,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-google-tag-manager@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@docusaurus/types': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.4(@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/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 @@ -22619,21 +22466,21 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-ideal-image@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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/plugin-ideal-image@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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)': 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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@docusaurus/lqip-loader': 3.6.3(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/lqip-loader': 3.6.3(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) '@docusaurus/responsive-loader': 1.7.0(sharp@0.32.6) '@docusaurus/theme-translations': 3.6.3 - '@docusaurus/types': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.4(@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/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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) '@slorber/react-ideal-image': 0.0.12(prop-types@15.8.1)(react-waypoint@10.3.0(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-waypoint: 10.3.0(react@18.3.1) sharp: 0.32.6 tslib: 2.8.1 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -22656,14 +22503,14 @@ snapshots: - vue-template-compiler - webpack-cli - '@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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-sitemap@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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/types': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.4(@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/utils-common': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.4(@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/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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) fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -22690,21 +22537,21 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/preset-classic@3.6.3(@algolia/client-search@5.18.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-pages': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-debug': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-google-analytics': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-google-gtag': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-google-tag-manager': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-sitemap': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@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.18.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/preset-classic@3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-pages': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-debug': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-google-analytics': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-google-gtag': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-google-tag-manager': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-sitemap': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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.19.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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) transitivePeerDependencies: @@ -22742,21 +22589,21 @@ snapshots: optionalDependencies: sharp: 0.32.6 - '@docusaurus/theme-classic@3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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/mdx-loader': 3.6.3(@swc/core@1.10.4(@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/module-type-aliases': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-pages': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@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/mdx-loader': 3.6.3(@swc/core@1.10.7(@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/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-pages': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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-translations': 3.6.3 - '@docusaurus/types': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.4(@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/utils-common': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.4(@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/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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) '@mdx-js/react': 3.0.1(@types/react@18.3.12)(react@18.3.1) clsx: 2.1.1 copy-text-to-clipboard: 3.2.0 @@ -22793,13 +22640,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@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-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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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)': dependencies: - '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.4(@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/module-type-aliases': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.4(@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/utils-common': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@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/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 '@types/react': 18.3.12 '@types/react-router-config': 5.0.11 @@ -22819,13 +22666,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-mermaid@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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-mermaid@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@docusaurus/module-type-aliases': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@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/types': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.4(@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/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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) mermaid: 11.4.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -22852,16 +22699,16 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-search-algolia@3.6.3(@algolia/client-search@5.18.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.19.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.2(@algolia/client-search@5.18.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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docsearch/react': 3.8.2(@algolia/client-search@5.19.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.4(@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/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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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-translations': 3.6.3 - '@docusaurus/utils': 3.6.3(@swc/core@1.10.4(@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/utils-validation': 3.6.3(@swc/core@1.10.4(@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/utils': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@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) algoliasearch: 4.24.0 algoliasearch-helper: 3.22.6(algoliasearch@4.24.0) clsx: 2.1.1 @@ -22901,7 +22748,7 @@ snapshots: fs-extra: 11.2.0 tslib: 2.8.1 - '@docusaurus/types@3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/types@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@mdx-js/mdx': 3.1.0(acorn@8.14.0) '@types/history': 4.7.11 @@ -22912,7 +22759,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) utility-types: 3.11.0 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' @@ -22922,9 +22769,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-common@3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/utils-common@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/types': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tslib: 2.8.1 transitivePeerDependencies: - '@swc/core' @@ -22936,11 +22783,11 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-validation@3.6.3(@swc/core@1.10.4(@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/utils-validation@3.6.3(@swc/core@1.10.7(@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)': dependencies: '@docusaurus/logger': 3.6.3 - '@docusaurus/utils': 3.6.3(@swc/core@1.10.4(@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/utils-common': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fs-extra: 11.2.0 joi: 17.13.3 js-yaml: 4.1.0 @@ -22957,14 +22804,14 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.6.3(@swc/core@1.10.4(@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/utils@3.6.3(@swc/core@1.10.7(@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)': dependencies: '@docusaurus/logger': 3.6.3 - '@docusaurus/types': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@svgr/webpack': 8.1.0(typescript@5.6.3) escape-string-regexp: 4.0.0 - file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) fs-extra: 11.2.0 github-slugger: 1.5.0 globby: 11.1.0 @@ -22977,9 +22824,9 @@ snapshots: resolve-pathname: 3.0.0 shelljs: 0.8.5 tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) utility-types: 3.11.0 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@swc/core' - acorn @@ -23022,56 +22869,6 @@ snapshots: '@huggingface/jinja': 0.2.2 onnxruntime-node: 1.20.1 - '@elizaos/core@0.1.7-alpha.2(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.27(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.16.1))(svelte@5.16.1)': - dependencies: - '@ai-sdk/anthropic': 0.0.56(zod@3.23.8) - '@ai-sdk/google': 0.0.55(zod@3.23.8) - '@ai-sdk/google-vertex': 0.0.43(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(zod@3.23.8) - '@ai-sdk/groq': 0.0.3(zod@3.23.8) - '@ai-sdk/openai': 1.0.5(zod@3.23.8) - '@anthropic-ai/sdk': 0.30.1(encoding@0.1.13) - '@fal-ai/client': 1.2.0 - '@types/uuid': 10.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.16.1))(svelte@5.16.1)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8) - anthropic-vertex-ai: 1.0.2(encoding@0.1.13)(zod@3.23.8) - fastembed: 1.14.1 - fastestsmallesttextencoderdecoder: 1.0.22 - gaxios: 6.7.1(encoding@0.1.13) - glob: 11.0.0 - handlebars: 4.7.8 - js-sha1: 0.7.0 - js-tiktoken: 1.0.15 - langchain: 0.3.6(@langchain/core@0.3.27(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(handlebars@4.7.8)(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) - ollama-ai-provider: 0.16.1(zod@3.23.8) - openai: 4.73.0(encoding@0.1.13)(zod@3.23.8) - tinyld: 1.3.4 - together-ai: 0.7.0(encoding@0.1.13) - unique-names-generator: 4.7.1 - uuid: 11.0.3 - zod: 3.23.8 - transitivePeerDependencies: - - '@google-cloud/vertexai' - - '@langchain/anthropic' - - '@langchain/aws' - - '@langchain/cohere' - - '@langchain/core' - - '@langchain/google-genai' - - '@langchain/google-vertexai' - - '@langchain/groq' - - '@langchain/mistralai' - - '@langchain/ollama' - - axios - - cheerio - - encoding - - peggy - - react - - solid-js - - sswr - - supports-color - - svelte - - typeorm - - vue - '@emnapi/core@1.3.1': dependencies: '@emnapi/wasi-threads': 1.0.1 @@ -23097,9 +22894,6 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.23.1': - optional: true - '@esbuild/aix-ppc64@0.24.2': optional: true @@ -23109,9 +22903,6 @@ snapshots: '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.23.1': - optional: true - '@esbuild/android-arm64@0.24.2': optional: true @@ -23121,9 +22912,6 @@ snapshots: '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.23.1': - optional: true - '@esbuild/android-arm@0.24.2': optional: true @@ -23133,9 +22921,6 @@ snapshots: '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.23.1': - optional: true - '@esbuild/android-x64@0.24.2': optional: true @@ -23145,9 +22930,6 @@ snapshots: '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.23.1': - optional: true - '@esbuild/darwin-arm64@0.24.2': optional: true @@ -23157,9 +22939,6 @@ snapshots: '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.23.1': - optional: true - '@esbuild/darwin-x64@0.24.2': optional: true @@ -23169,9 +22948,6 @@ snapshots: '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.23.1': - optional: true - '@esbuild/freebsd-arm64@0.24.2': optional: true @@ -23181,9 +22957,6 @@ snapshots: '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.23.1': - optional: true - '@esbuild/freebsd-x64@0.24.2': optional: true @@ -23193,9 +22966,6 @@ snapshots: '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.23.1': - optional: true - '@esbuild/linux-arm64@0.24.2': optional: true @@ -23205,9 +22975,6 @@ snapshots: '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.23.1': - optional: true - '@esbuild/linux-arm@0.24.2': optional: true @@ -23217,9 +22984,6 @@ snapshots: '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.23.1': - optional: true - '@esbuild/linux-ia32@0.24.2': optional: true @@ -23229,9 +22993,6 @@ snapshots: '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.23.1': - optional: true - '@esbuild/linux-loong64@0.24.2': optional: true @@ -23241,9 +23002,6 @@ snapshots: '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.23.1': - optional: true - '@esbuild/linux-mips64el@0.24.2': optional: true @@ -23253,9 +23011,6 @@ snapshots: '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.23.1': - optional: true - '@esbuild/linux-ppc64@0.24.2': optional: true @@ -23265,9 +23020,6 @@ snapshots: '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.23.1': - optional: true - '@esbuild/linux-riscv64@0.24.2': optional: true @@ -23277,9 +23029,6 @@ snapshots: '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.23.1': - optional: true - '@esbuild/linux-s390x@0.24.2': optional: true @@ -23289,9 +23038,6 @@ snapshots: '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.23.1': - optional: true - '@esbuild/linux-x64@0.24.2': optional: true @@ -23304,15 +23050,9 @@ snapshots: '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.23.1': - optional: true - '@esbuild/netbsd-x64@0.24.2': optional: true - '@esbuild/openbsd-arm64@0.23.1': - optional: true - '@esbuild/openbsd-arm64@0.24.2': optional: true @@ -23322,9 +23062,6 @@ snapshots: '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.23.1': - optional: true - '@esbuild/openbsd-x64@0.24.2': optional: true @@ -23334,9 +23071,6 @@ snapshots: '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.23.1': - optional: true - '@esbuild/sunos-x64@0.24.2': optional: true @@ -23346,9 +23080,6 @@ snapshots: '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.23.1': - optional: true - '@esbuild/win32-arm64@0.24.2': optional: true @@ -23358,9 +23089,6 @@ snapshots: '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.23.1': - optional: true - '@esbuild/win32-ia32@0.24.2': optional: true @@ -23370,9 +23098,6 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.23.1': - optional: true - '@esbuild/win32-x64@0.24.2': optional: true @@ -23740,40 +23465,40 @@ snapshots: '@ffmpeg-installer/win32-x64@4.1.0': optional: true - '@floating-ui/core@1.6.8': + '@floating-ui/core@1.6.9': dependencies: - '@floating-ui/utils': 0.2.8 + '@floating-ui/utils': 0.2.9 - '@floating-ui/dom@1.6.12': + '@floating-ui/dom@1.6.13': dependencies: - '@floating-ui/core': 1.6.8 - '@floating-ui/utils': 0.2.8 + '@floating-ui/core': 1.6.9 + '@floating-ui/utils': 0.2.9 '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@floating-ui/dom': 1.6.12 + '@floating-ui/dom': 1.6.13 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@floating-ui/utils@0.2.8': {} + '@floating-ui/utils@0.2.9': {} - '@fuel-ts/abi-coder@0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': + '@fuel-ts/abi-coder@0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': dependencies: - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - type-fest: 4.31.0 + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + type-fest: 4.32.0 transitivePeerDependencies: - vitest - '@fuel-ts/abi-typegen@0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': + '@fuel-ts/abi-typegen@0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': dependencies: '@fuel-ts/errors': 0.97.2 '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/versions': 0.97.2 commander: 12.1.0 glob: 10.4.5 @@ -23784,18 +23509,18 @@ snapshots: transitivePeerDependencies: - vitest - '@fuel-ts/account@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': + '@fuel-ts/account@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/merkle': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/merkle': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/versions': 0.97.2 '@fuels/vm-asm': 0.58.2 '@noble/curves': 1.8.0 @@ -23808,30 +23533,30 @@ snapshots: - encoding - vitest - '@fuel-ts/address@0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': + '@fuel-ts/address@0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': dependencies: - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@noble/hashes': 1.7.0 bech32: 2.0.0 transitivePeerDependencies: - vitest - '@fuel-ts/contract@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': + '@fuel-ts/contract@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/merkle': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/merkle': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/versions': 0.97.2 '@fuels/vm-asm': 0.58.2 ramda: 0.30.1 @@ -23839,12 +23564,12 @@ snapshots: - encoding - vitest - '@fuel-ts/crypto@0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': + '@fuel-ts/crypto@0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': dependencies: '@fuel-ts/errors': 0.97.2 '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@noble/hashes': 1.7.0 transitivePeerDependencies: - vitest @@ -23853,11 +23578,11 @@ snapshots: dependencies: '@fuel-ts/versions': 0.97.2 - '@fuel-ts/hasher@0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': + '@fuel-ts/hasher@0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': dependencies: - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@noble/hashes': 1.7.0 transitivePeerDependencies: - vitest @@ -23870,78 +23595,78 @@ snapshots: '@types/bn.js': 5.1.6 bn.js: 5.2.1 - '@fuel-ts/merkle@0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': + '@fuel-ts/merkle@0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': dependencies: - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/math': 0.97.2 transitivePeerDependencies: - vitest - '@fuel-ts/program@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': + '@fuel-ts/program@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuels/vm-asm': 0.58.2 ramda: 0.30.1 transitivePeerDependencies: - encoding - vitest - '@fuel-ts/recipes@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': + '@fuel-ts/recipes@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/abi-typegen': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/contract': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/abi-typegen': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/contract': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) transitivePeerDependencies: - encoding - vitest - '@fuel-ts/script@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': + '@fuel-ts/script@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) transitivePeerDependencies: - encoding - vitest - '@fuel-ts/transactions@0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': + '@fuel-ts/transactions@0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) transitivePeerDependencies: - vitest - '@fuel-ts/utils@0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': + '@fuel-ts/utils@0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': dependencies: '@fuel-ts/errors': 0.97.2 '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 '@fuel-ts/versions': 0.97.2 fflate: 0.8.2 - vitest: 2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) + vitest: 2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) '@fuel-ts/versions@0.97.2': dependencies: @@ -23950,10 +23675,10 @@ snapshots: '@fuels/vm-asm@0.58.2': {} - '@goat-sdk/adapter-vercel-ai@0.2.0(@goat-sdk/core@0.4.0)(ai@3.4.33(openai@4.77.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.16.1))(svelte@5.16.1)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8))': + '@goat-sdk/adapter-vercel-ai@0.2.0(@goat-sdk/core@0.4.0)(ai@3.4.33(openai@4.78.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8))': dependencies: '@goat-sdk/core': 0.4.0 - ai: 3.4.33(openai@4.77.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.16.1))(svelte@5.16.1)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8) + ai: 3.4.33(openai@4.78.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8) zod: 3.23.8 '@goat-sdk/core@0.4.0': @@ -24015,7 +23740,7 @@ snapshots: '@gql.tada/internal@1.0.8(graphql@16.10.0)(typescript@5.6.3)': dependencies: - '@0no-co/graphql.web': 1.0.12(graphql@16.10.0) + '@0no-co/graphql.web': 1.0.13(graphql@16.10.0) graphql: 16.10.0 typescript: 5.6.3 @@ -24198,7 +23923,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -24212,7 +23937,7 @@ snapshots: 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.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -24233,7 +23958,7 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@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 @@ -24247,7 +23972,7 @@ snapshots: 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.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@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 @@ -24268,7 +23993,7 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.4(@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.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -24282,7 +24007,7 @@ snapshots: 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.4(@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.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -24462,12 +24187,12 @@ snapshots: '@langchain/core@0.3.27(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))': dependencies: - '@cfworker/json-schema': 4.0.3 + '@cfworker/json-schema': 4.1.0 ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.15 - langsmith: 0.2.14(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) + langsmith: 0.2.15(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 @@ -24481,7 +24206,7 @@ snapshots: dependencies: '@langchain/core': 0.3.27(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) js-tiktoken: 1.0.15 - openai: 4.77.0(encoding@0.1.13)(zod@3.23.8) + openai: 4.78.0(encoding@0.1.13)(zod@3.23.8) zod: 3.23.8 zod-to-json-schema: 3.24.1(zod@3.23.8) transitivePeerDependencies: @@ -24640,12 +24365,12 @@ snapshots: tslib: 2.8.1 zod: 3.23.8 - '@lerna/create@8.1.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(encoding@0.1.13)(typescript@5.6.3)': + '@lerna/create@8.1.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(encoding@0.1.13)(typescript@5.6.3)': dependencies: '@npmcli/arborist': 7.5.3 '@npmcli/package-json': 5.2.0 '@npmcli/run-script': 8.1.0 - '@nx/devkit': 19.8.14(nx@19.8.14(@swc/core@1.10.4(@swc/helpers@0.5.15))) + '@nx/devkit': 19.8.14(nx@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15))) '@octokit/plugin-enterprise-rest': 6.0.1 '@octokit/rest': 19.0.11(encoding@0.1.13) aproba: 2.0.0 @@ -24684,7 +24409,7 @@ snapshots: npm-package-arg: 11.0.2 npm-packlist: 8.0.2 npm-registry-fetch: 17.1.0 - nx: 19.8.14(@swc/core@1.10.4(@swc/helpers@0.5.15)) + nx: 19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)) p-map: 4.0.0 p-map-series: 2.1.0 p-queue: 6.6.2 @@ -25173,14 +24898,14 @@ snapshots: dependencies: bech32: 2.0.0 - '@mysten/bcs@1.2.0': + '@mysten/bcs@1.2.1': dependencies: bs58: 6.0.0 - '@mysten/sui@1.18.0(typescript@5.6.3)': + '@mysten/sui@1.18.1(typescript@5.6.3)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) - '@mysten/bcs': 1.2.0 + '@mysten/bcs': 1.2.1 '@noble/curves': 1.8.0 '@noble/hashes': 1.7.0 '@scure/bip32': 1.6.1 @@ -25332,7 +25057,7 @@ snapshots: transitivePeerDependencies: - encoding - '@neynar/nodejs-sdk@2.7.0(bufferutil@4.0.9)(class-transformer@0.5.1)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)': + '@neynar/nodejs-sdk@2.8.0(bufferutil@4.0.9)(class-transformer@0.5.1)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)': dependencies: '@openapitools/openapi-generator-cli': 2.15.3(class-transformer@0.5.1)(encoding@0.1.13) semver: 7.6.3 @@ -25647,15 +25372,15 @@ snapshots: - bluebird - supports-color - '@nrwl/devkit@19.8.14(nx@19.8.14(@swc/core@1.10.4(@swc/helpers@0.5.15)))': + '@nrwl/devkit@19.8.14(nx@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)))': dependencies: - '@nx/devkit': 19.8.14(nx@19.8.14(@swc/core@1.10.4(@swc/helpers@0.5.15))) + '@nx/devkit': 19.8.14(nx@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15))) transitivePeerDependencies: - nx - '@nrwl/tao@19.8.14(@swc/core@1.10.4(@swc/helpers@0.5.15))': + '@nrwl/tao@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15))': dependencies: - nx: 19.8.14(@swc/core@1.10.4(@swc/helpers@0.5.15)) + nx: 19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)) tslib: 2.8.1 transitivePeerDependencies: - '@swc-node/register' @@ -25670,14 +25395,14 @@ snapshots: transitivePeerDependencies: - encoding - '@nx/devkit@19.8.14(nx@19.8.14(@swc/core@1.10.4(@swc/helpers@0.5.15)))': + '@nx/devkit@19.8.14(nx@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)))': dependencies: - '@nrwl/devkit': 19.8.14(nx@19.8.14(@swc/core@1.10.4(@swc/helpers@0.5.15))) + '@nrwl/devkit': 19.8.14(nx@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15))) ejs: 3.1.10 enquirer: 2.3.6 ignore: 5.3.2 minimatch: 9.0.3 - nx: 19.8.14(@swc/core@1.10.4(@swc/helpers@0.5.15)) + nx: 19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)) semver: 7.6.3 tmp: 0.2.3 tslib: 2.8.1 @@ -25713,48 +25438,48 @@ snapshots: '@nx/nx-win32-x64-msvc@19.8.14': optional: true - '@octokit/app@15.1.1': + '@octokit/app@15.1.2': dependencies: - '@octokit/auth-app': 7.1.3 - '@octokit/auth-unauthenticated': 6.1.0 - '@octokit/core': 6.1.2 - '@octokit/oauth-app': 7.1.4 - '@octokit/plugin-paginate-rest': 11.3.6(@octokit/core@6.1.2) - '@octokit/types': 13.6.2 - '@octokit/webhooks': 13.4.1 + '@octokit/auth-app': 7.1.4 + '@octokit/auth-unauthenticated': 6.1.1 + '@octokit/core': 6.1.3 + '@octokit/oauth-app': 7.1.5 + '@octokit/plugin-paginate-rest': 11.4.0(@octokit/core@6.1.3) + '@octokit/types': 13.7.0 + '@octokit/webhooks': 13.4.2 - '@octokit/auth-app@7.1.3': + '@octokit/auth-app@7.1.4': dependencies: - '@octokit/auth-oauth-app': 8.1.1 - '@octokit/auth-oauth-user': 5.1.1 + '@octokit/auth-oauth-app': 8.1.2 + '@octokit/auth-oauth-user': 5.1.2 '@octokit/request': 9.1.4 '@octokit/request-error': 6.1.6 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 toad-cache: 3.7.0 universal-github-app-jwt: 2.2.0 universal-user-agent: 7.0.2 - '@octokit/auth-oauth-app@8.1.1': + '@octokit/auth-oauth-app@8.1.2': dependencies: - '@octokit/auth-oauth-device': 7.1.1 - '@octokit/auth-oauth-user': 5.1.1 + '@octokit/auth-oauth-device': 7.1.2 + '@octokit/auth-oauth-user': 5.1.2 '@octokit/request': 9.1.4 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 7.0.2 - '@octokit/auth-oauth-device@7.1.1': + '@octokit/auth-oauth-device@7.1.2': dependencies: '@octokit/oauth-methods': 5.1.3 '@octokit/request': 9.1.4 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 7.0.2 - '@octokit/auth-oauth-user@5.1.1': + '@octokit/auth-oauth-user@5.1.2': dependencies: - '@octokit/auth-oauth-device': 7.1.1 + '@octokit/auth-oauth-device': 7.1.2 '@octokit/oauth-methods': 5.1.3 '@octokit/request': 9.1.4 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 7.0.2 '@octokit/auth-token@3.0.4': {} @@ -25763,10 +25488,10 @@ snapshots: '@octokit/auth-token@5.1.1': {} - '@octokit/auth-unauthenticated@6.1.0': + '@octokit/auth-unauthenticated@6.1.1': dependencies: '@octokit/request-error': 6.1.6 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 '@octokit/core@4.2.4(encoding@0.1.13)': dependencies: @@ -25786,23 +25511,23 @@ snapshots: '@octokit/graphql': 7.1.0 '@octokit/request': 8.4.0 '@octokit/request-error': 5.1.0 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 before-after-hook: 2.2.3 universal-user-agent: 6.0.1 - '@octokit/core@6.1.2': + '@octokit/core@6.1.3': dependencies: '@octokit/auth-token': 5.1.1 '@octokit/graphql': 8.1.2 '@octokit/request': 9.1.4 '@octokit/request-error': 6.1.6 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 before-after-hook: 3.0.2 universal-user-agent: 7.0.2 '@octokit/endpoint@10.1.2': dependencies: - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 7.0.2 '@octokit/endpoint@7.0.6': @@ -25813,7 +25538,7 @@ snapshots: '@octokit/endpoint@9.0.5': dependencies: - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 6.0.1 '@octokit/graphql@5.0.6(encoding@0.1.13)': @@ -25827,21 +25552,21 @@ snapshots: '@octokit/graphql@7.1.0': dependencies: '@octokit/request': 8.4.0 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 6.0.1 '@octokit/graphql@8.1.2': dependencies: '@octokit/request': 9.1.4 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 7.0.2 - '@octokit/oauth-app@7.1.4': + '@octokit/oauth-app@7.1.5': dependencies: - '@octokit/auth-oauth-app': 8.1.1 - '@octokit/auth-oauth-user': 5.1.1 - '@octokit/auth-unauthenticated': 6.1.0 - '@octokit/core': 6.1.2 + '@octokit/auth-oauth-app': 8.1.2 + '@octokit/auth-oauth-user': 5.1.2 + '@octokit/auth-unauthenticated': 6.1.1 + '@octokit/core': 6.1.3 '@octokit/oauth-authorization-url': 7.1.1 '@octokit/oauth-methods': 5.1.3 '@types/aws-lambda': 8.10.147 @@ -25854,31 +25579,31 @@ snapshots: '@octokit/oauth-authorization-url': 7.1.1 '@octokit/request': 9.1.4 '@octokit/request-error': 6.1.6 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 '@octokit/openapi-types@18.1.1': {} '@octokit/openapi-types@20.0.0': {} - '@octokit/openapi-types@22.2.0': {} + '@octokit/openapi-types@23.0.1': {} '@octokit/openapi-webhooks-types@8.5.1': {} '@octokit/plugin-enterprise-rest@6.0.1': {} - '@octokit/plugin-paginate-graphql@5.2.4(@octokit/core@6.1.2)': + '@octokit/plugin-paginate-graphql@5.2.4(@octokit/core@6.1.3)': dependencies: - '@octokit/core': 6.1.2 + '@octokit/core': 6.1.3 '@octokit/plugin-paginate-rest@11.3.1(@octokit/core@5.2.0)': dependencies: '@octokit/core': 5.2.0 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 - '@octokit/plugin-paginate-rest@11.3.6(@octokit/core@6.1.2)': + '@octokit/plugin-paginate-rest@11.4.0(@octokit/core@6.1.3)': dependencies: - '@octokit/core': 6.1.2 - '@octokit/types': 13.6.2 + '@octokit/core': 6.1.3 + '@octokit/types': 13.7.0 '@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4(encoding@0.1.13))': dependencies: @@ -25897,29 +25622,29 @@ snapshots: '@octokit/plugin-rest-endpoint-methods@13.2.2(@octokit/core@5.2.0)': dependencies: '@octokit/core': 5.2.0 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 - '@octokit/plugin-rest-endpoint-methods@13.2.6(@octokit/core@6.1.2)': + '@octokit/plugin-rest-endpoint-methods@13.3.0(@octokit/core@6.1.3)': dependencies: - '@octokit/core': 6.1.2 - '@octokit/types': 13.6.2 + '@octokit/core': 6.1.3 + '@octokit/types': 13.7.0 '@octokit/plugin-rest-endpoint-methods@7.2.3(@octokit/core@4.2.4(encoding@0.1.13))': dependencies: '@octokit/core': 4.2.4(encoding@0.1.13) '@octokit/types': 10.0.0 - '@octokit/plugin-retry@7.1.2(@octokit/core@6.1.2)': + '@octokit/plugin-retry@7.1.3(@octokit/core@6.1.3)': dependencies: - '@octokit/core': 6.1.2 + '@octokit/core': 6.1.3 '@octokit/request-error': 6.1.6 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 bottleneck: 2.19.5 - '@octokit/plugin-throttling@9.3.2(@octokit/core@6.1.2)': + '@octokit/plugin-throttling@9.4.0(@octokit/core@6.1.3)': dependencies: - '@octokit/core': 6.1.2 - '@octokit/types': 13.6.2 + '@octokit/core': 6.1.3 + '@octokit/types': 13.7.0 bottleneck: 2.19.5 '@octokit/request-error@3.0.3': @@ -25930,13 +25655,13 @@ snapshots: '@octokit/request-error@5.1.0': dependencies: - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 deprecation: 2.3.1 once: 1.4.0 '@octokit/request-error@6.1.6': dependencies: - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 '@octokit/request@6.2.8(encoding@0.1.13)': dependencies: @@ -25953,15 +25678,15 @@ snapshots: dependencies: '@octokit/endpoint': 9.0.5 '@octokit/request-error': 5.1.0 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 6.0.1 '@octokit/request@9.1.4': dependencies: '@octokit/endpoint': 10.1.2 '@octokit/request-error': 6.1.6 - '@octokit/types': 13.6.2 - fast-content-type-parse: 2.0.0 + '@octokit/types': 13.7.0 + fast-content-type-parse: 2.0.1 universal-user-agent: 7.0.2 '@octokit/rest@19.0.11(encoding@0.1.13)': @@ -25990,9 +25715,9 @@ snapshots: dependencies: '@octokit/openapi-types': 20.0.0 - '@octokit/types@13.6.2': + '@octokit/types@13.7.0': dependencies: - '@octokit/openapi-types': 22.2.0 + '@octokit/openapi-types': 23.0.1 '@octokit/types@9.3.2': dependencies: @@ -26000,7 +25725,7 @@ snapshots: '@octokit/webhooks-methods@5.1.0': {} - '@octokit/webhooks@13.4.1': + '@octokit/webhooks@13.4.2': dependencies: '@octokit/openapi-webhooks-types': 8.5.1 '@octokit/request-error': 6.1.6 @@ -26045,7 +25770,7 @@ snapshots: - supports-color - utf-8-validate - '@onflow/fcl-wc@5.5.1(@onflow/fcl-core@1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@5.0.10))(@types/react@18.3.12)(bufferutil@4.0.9)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(tsx@4.19.2)(utf-8-validate@5.0.10)': + '@onflow/fcl-wc@5.5.1(@onflow/fcl-core@1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@5.0.10))(@types/react@18.3.12)(bufferutil@4.0.9)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 '@onflow/config': 1.5.1 @@ -26057,9 +25782,9 @@ snapshots: '@walletconnect/sign-client': 2.17.3(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@5.0.10) '@walletconnect/types': 2.17.3(ioredis@5.4.2) '@walletconnect/utils': 2.17.3(ioredis@5.4.2) - postcss-cli: 11.0.0(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2) + postcss-cli: 11.0.0(jiti@2.4.2)(postcss@8.4.49) preact: 10.25.4 - tailwindcss: 3.4.15(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) + tailwindcss: 3.4.15(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -26090,12 +25815,12 @@ snapshots: - uploadthing - utf-8-validate - '@onflow/fcl@1.13.1(@types/react@18.3.12)(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(tsx@4.19.2)(utf-8-validate@5.0.10)': + '@onflow/fcl@1.13.1(@types/react@18.3.12)(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 '@onflow/config': 1.5.1 '@onflow/fcl-core': 1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@5.0.10) - '@onflow/fcl-wc': 5.5.1(@onflow/fcl-core@1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@5.0.10))(@types/react@18.3.12)(bufferutil@4.0.9)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(tsx@4.19.2)(utf-8-validate@5.0.10) + '@onflow/fcl-wc': 5.5.1(@onflow/fcl-core@1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@5.0.10))(@types/react@18.3.12)(bufferutil@4.0.9)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(utf-8-validate@5.0.10) '@onflow/interaction': 0.0.11 '@onflow/rlp': 1.2.3 '@onflow/sdk': 1.5.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -26736,7 +26461,7 @@ snapshots: '@react-icons/all-files': 4.1.0(react@18.3.1) '@types/big.js': 6.2.2 '@types/bn.js': 5.1.6 - '@types/lodash': 4.17.13 + '@types/lodash': 4.17.14 big.js: 6.2.2 bn.js: 5.2.1 lodash: 4.17.21 @@ -26864,11 +26589,11 @@ snapshots: optionalDependencies: rollup: 3.29.5 - '@rollup/plugin-json@6.1.0(rollup@4.29.1)': + '@rollup/plugin-json@6.1.0(rollup@4.30.1)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@rollup/pluginutils': 5.1.4(rollup@4.30.1) optionalDependencies: - rollup: 4.29.1 + rollup: 4.30.1 '@rollup/plugin-node-resolve@15.3.0(rollup@2.79.2)': dependencies: @@ -26919,9 +26644,9 @@ snapshots: rollup: 2.79.2 tslib: 2.8.1 - '@rollup/plugin-virtual@3.0.2(rollup@4.29.1)': + '@rollup/plugin-virtual@3.0.2(rollup@4.30.1)': optionalDependencies: - rollup: 4.29.1 + rollup: 4.30.1 '@rollup/pluginutils@5.1.4(rollup@2.79.2)': dependencies: @@ -26939,69 +26664,69 @@ snapshots: optionalDependencies: rollup: 3.29.5 - '@rollup/pluginutils@5.1.4(rollup@4.29.1)': + '@rollup/pluginutils@5.1.4(rollup@4.30.1)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.29.1 + rollup: 4.30.1 - '@rollup/rollup-android-arm-eabi@4.29.1': + '@rollup/rollup-android-arm-eabi@4.30.1': optional: true - '@rollup/rollup-android-arm64@4.29.1': + '@rollup/rollup-android-arm64@4.30.1': optional: true - '@rollup/rollup-darwin-arm64@4.29.1': + '@rollup/rollup-darwin-arm64@4.30.1': optional: true - '@rollup/rollup-darwin-x64@4.29.1': + '@rollup/rollup-darwin-x64@4.30.1': optional: true - '@rollup/rollup-freebsd-arm64@4.29.1': + '@rollup/rollup-freebsd-arm64@4.30.1': optional: true - '@rollup/rollup-freebsd-x64@4.29.1': + '@rollup/rollup-freebsd-x64@4.30.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.29.1': + '@rollup/rollup-linux-arm-gnueabihf@4.30.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.29.1': + '@rollup/rollup-linux-arm-musleabihf@4.30.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.29.1': + '@rollup/rollup-linux-arm64-gnu@4.30.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.29.1': + '@rollup/rollup-linux-arm64-musl@4.30.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.29.1': + '@rollup/rollup-linux-loongarch64-gnu@4.30.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.29.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.30.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.29.1': + '@rollup/rollup-linux-riscv64-gnu@4.30.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.29.1': + '@rollup/rollup-linux-s390x-gnu@4.30.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.29.1': + '@rollup/rollup-linux-x64-gnu@4.30.1': optional: true - '@rollup/rollup-linux-x64-musl@4.29.1': + '@rollup/rollup-linux-x64-musl@4.30.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.29.1': + '@rollup/rollup-win32-arm64-msvc@4.30.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.29.1': + '@rollup/rollup-win32-ia32-msvc@4.30.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.29.1': + '@rollup/rollup-win32-x64-msvc@4.30.1': optional: true '@sapphire/async-queue@1.5.5': {} @@ -27133,40 +26858,40 @@ snapshots: '@sentry/types': 5.30.0 tslib: 1.14.1 - '@shikijs/core@1.25.1': + '@shikijs/core@1.26.1': dependencies: - '@shikijs/engine-javascript': 1.25.1 - '@shikijs/engine-oniguruma': 1.25.1 - '@shikijs/types': 1.25.1 - '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/engine-javascript': 1.26.1 + '@shikijs/engine-oniguruma': 1.26.1 + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 hast-util-to-html: 9.0.4 - '@shikijs/engine-javascript@1.25.1': + '@shikijs/engine-javascript@1.26.1': dependencies: - '@shikijs/types': 1.25.1 - '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 oniguruma-to-es: 0.10.0 - '@shikijs/engine-oniguruma@1.25.1': + '@shikijs/engine-oniguruma@1.26.1': dependencies: - '@shikijs/types': 1.25.1 - '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 - '@shikijs/langs@1.25.1': + '@shikijs/langs@1.26.1': dependencies: - '@shikijs/types': 1.25.1 + '@shikijs/types': 1.26.1 - '@shikijs/themes@1.25.1': + '@shikijs/themes@1.26.1': dependencies: - '@shikijs/types': 1.25.1 + '@shikijs/types': 1.26.1 - '@shikijs/types@1.25.1': + '@shikijs/types@1.26.1': dependencies: - '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 - '@shikijs/vscode-textmate@9.3.1': {} + '@shikijs/vscode-textmate@10.0.1': {} '@sideway/address@4.1.5': dependencies: @@ -27279,250 +27004,250 @@ snapshots: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 - '@smithy/abort-controller@3.1.9': + '@smithy/abort-controller@4.0.1': dependencies: - '@smithy/types': 3.7.2 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/chunked-blob-reader-native@3.0.1': + '@smithy/chunked-blob-reader-native@4.0.0': dependencies: - '@smithy/util-base64': 3.0.0 + '@smithy/util-base64': 4.0.0 tslib: 2.8.1 - '@smithy/chunked-blob-reader@4.0.0': + '@smithy/chunked-blob-reader@5.0.0': dependencies: tslib: 2.8.1 - '@smithy/config-resolver@3.0.13': + '@smithy/config-resolver@4.0.1': dependencies: - '@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 + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@smithy/core@2.5.7': + '@smithy/core@3.1.0': dependencies: - '@smithy/middleware-serde': 3.0.11 - '@smithy/protocol-http': 4.1.8 - '@smithy/types': 3.7.2 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-middleware': 3.0.11 - '@smithy/util-stream': 3.3.4 - '@smithy/util-utf8': 3.0.0 + '@smithy/middleware-serde': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-stream': 4.0.1 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/credential-provider-imds@3.2.8': + '@smithy/credential-provider-imds@4.0.1': dependencies: - '@smithy/node-config-provider': 3.1.12 - '@smithy/property-provider': 3.1.11 - '@smithy/types': 3.7.2 - '@smithy/url-parser': 3.0.11 + '@smithy/node-config-provider': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 tslib: 2.8.1 - '@smithy/eventstream-codec@3.1.10': + '@smithy/eventstream-codec@4.0.1': dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 3.7.2 - '@smithy/util-hex-encoding': 3.0.0 + '@smithy/types': 4.1.0 + '@smithy/util-hex-encoding': 4.0.0 tslib: 2.8.1 - '@smithy/eventstream-serde-browser@3.0.14': + '@smithy/eventstream-serde-browser@4.0.1': dependencies: - '@smithy/eventstream-serde-universal': 3.0.13 - '@smithy/types': 3.7.2 + '@smithy/eventstream-serde-universal': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/eventstream-serde-config-resolver@3.0.11': + '@smithy/eventstream-serde-config-resolver@4.0.1': dependencies: - '@smithy/types': 3.7.2 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/eventstream-serde-node@3.0.13': + '@smithy/eventstream-serde-node@4.0.1': dependencies: - '@smithy/eventstream-serde-universal': 3.0.13 - '@smithy/types': 3.7.2 + '@smithy/eventstream-serde-universal': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/eventstream-serde-universal@3.0.13': + '@smithy/eventstream-serde-universal@4.0.1': dependencies: - '@smithy/eventstream-codec': 3.1.10 - '@smithy/types': 3.7.2 + '@smithy/eventstream-codec': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/fetch-http-handler@4.1.3': + '@smithy/fetch-http-handler@5.0.1': dependencies: - '@smithy/protocol-http': 4.1.8 - '@smithy/querystring-builder': 3.0.11 - '@smithy/types': 3.7.2 - '@smithy/util-base64': 3.0.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/querystring-builder': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-base64': 4.0.0 tslib: 2.8.1 - '@smithy/hash-blob-browser@3.1.10': + '@smithy/hash-blob-browser@4.0.1': dependencies: - '@smithy/chunked-blob-reader': 4.0.0 - '@smithy/chunked-blob-reader-native': 3.0.1 - '@smithy/types': 3.7.2 + '@smithy/chunked-blob-reader': 5.0.0 + '@smithy/chunked-blob-reader-native': 4.0.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/hash-node@3.0.11': + '@smithy/hash-node@4.0.1': dependencies: - '@smithy/types': 3.7.2 - '@smithy/util-buffer-from': 3.0.0 - '@smithy/util-utf8': 3.0.0 + '@smithy/types': 4.1.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/hash-stream-node@3.1.10': + '@smithy/hash-stream-node@4.0.1': dependencies: - '@smithy/types': 3.7.2 - '@smithy/util-utf8': 3.0.0 + '@smithy/types': 4.1.0 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/invalid-dependency@3.0.11': + '@smithy/invalid-dependency@4.0.1': dependencies: - '@smithy/types': 3.7.2 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@smithy/is-array-buffer@2.2.0': dependencies: tslib: 2.8.1 - '@smithy/is-array-buffer@3.0.0': + '@smithy/is-array-buffer@4.0.0': dependencies: tslib: 2.8.1 - '@smithy/md5-js@3.0.11': + '@smithy/md5-js@4.0.1': dependencies: - '@smithy/types': 3.7.2 - '@smithy/util-utf8': 3.0.0 + '@smithy/types': 4.1.0 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/middleware-content-length@3.0.13': + '@smithy/middleware-content-length@4.0.1': dependencies: - '@smithy/protocol-http': 4.1.8 - '@smithy/types': 3.7.2 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@3.2.8': + '@smithy/middleware-endpoint@4.0.1': dependencies: - '@smithy/core': 2.5.7 - '@smithy/middleware-serde': 3.0.11 - '@smithy/node-config-provider': 3.1.12 - '@smithy/shared-ini-file-loader': 3.1.12 - '@smithy/types': 3.7.2 - '@smithy/url-parser': 3.0.11 - '@smithy/util-middleware': 3.0.11 + '@smithy/core': 3.1.0 + '@smithy/middleware-serde': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@smithy/middleware-retry@3.0.34': + '@smithy/middleware-retry@4.0.1': dependencies: - '@smithy/node-config-provider': 3.1.12 - '@smithy/protocol-http': 4.1.8 - '@smithy/service-error-classification': 3.0.11 - '@smithy/smithy-client': 3.7.0 - '@smithy/types': 3.7.2 - '@smithy/util-middleware': 3.0.11 - '@smithy/util-retry': 3.0.11 + '@smithy/node-config-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/service-error-classification': 4.0.1 + '@smithy/smithy-client': 4.1.0 + '@smithy/types': 4.1.0 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 tslib: 2.8.1 uuid: 9.0.1 - '@smithy/middleware-serde@3.0.11': + '@smithy/middleware-serde@4.0.1': dependencies: - '@smithy/types': 3.7.2 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/middleware-stack@3.0.11': + '@smithy/middleware-stack@4.0.1': dependencies: - '@smithy/types': 3.7.2 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/node-config-provider@3.1.12': + '@smithy/node-config-provider@4.0.1': dependencies: - '@smithy/property-provider': 3.1.11 - '@smithy/shared-ini-file-loader': 3.1.12 - '@smithy/types': 3.7.2 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/node-http-handler@3.3.3': + '@smithy/node-http-handler@4.0.1': dependencies: - '@smithy/abort-controller': 3.1.9 - '@smithy/protocol-http': 4.1.8 - '@smithy/querystring-builder': 3.0.11 - '@smithy/types': 3.7.2 + '@smithy/abort-controller': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/querystring-builder': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/property-provider@3.1.11': + '@smithy/property-provider@4.0.1': dependencies: - '@smithy/types': 3.7.2 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/protocol-http@4.1.8': + '@smithy/protocol-http@5.0.1': dependencies: - '@smithy/types': 3.7.2 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/querystring-builder@3.0.11': + '@smithy/querystring-builder@4.0.1': dependencies: - '@smithy/types': 3.7.2 - '@smithy/util-uri-escape': 3.0.0 + '@smithy/types': 4.1.0 + '@smithy/util-uri-escape': 4.0.0 tslib: 2.8.1 - '@smithy/querystring-parser@3.0.11': + '@smithy/querystring-parser@4.0.1': dependencies: - '@smithy/types': 3.7.2 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/service-error-classification@3.0.11': + '@smithy/service-error-classification@4.0.1': dependencies: - '@smithy/types': 3.7.2 + '@smithy/types': 4.1.0 - '@smithy/shared-ini-file-loader@3.1.12': + '@smithy/shared-ini-file-loader@4.0.1': dependencies: - '@smithy/types': 3.7.2 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/signature-v4@4.2.4': + '@smithy/signature-v4@5.0.1': dependencies: - '@smithy/is-array-buffer': 3.0.0 - '@smithy/protocol-http': 4.1.8 - '@smithy/types': 3.7.2 - '@smithy/util-hex-encoding': 3.0.0 - '@smithy/util-middleware': 3.0.11 - '@smithy/util-uri-escape': 3.0.0 - '@smithy/util-utf8': 3.0.0 + '@smithy/is-array-buffer': 4.0.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-uri-escape': 4.0.0 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/smithy-client@3.7.0': + '@smithy/smithy-client@4.1.0': dependencies: - '@smithy/core': 2.5.7 - '@smithy/middleware-endpoint': 3.2.8 - '@smithy/middleware-stack': 3.0.11 - '@smithy/protocol-http': 4.1.8 - '@smithy/types': 3.7.2 - '@smithy/util-stream': 3.3.4 + '@smithy/core': 3.1.0 + '@smithy/middleware-endpoint': 4.0.1 + '@smithy/middleware-stack': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-stream': 4.0.1 tslib: 2.8.1 - '@smithy/types@3.7.2': + '@smithy/types@4.1.0': dependencies: tslib: 2.8.1 - '@smithy/url-parser@3.0.11': + '@smithy/url-parser@4.0.1': dependencies: - '@smithy/querystring-parser': 3.0.11 - '@smithy/types': 3.7.2 + '@smithy/querystring-parser': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/util-base64@3.0.0': + '@smithy/util-base64@4.0.0': dependencies: - '@smithy/util-buffer-from': 3.0.0 - '@smithy/util-utf8': 3.0.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/util-body-length-browser@3.0.0': + '@smithy/util-body-length-browser@4.0.0': dependencies: tslib: 2.8.1 - '@smithy/util-body-length-node@3.0.0': + '@smithy/util-body-length-node@4.0.0': dependencies: tslib: 2.8.1 @@ -27531,66 +27256,66 @@ snapshots: '@smithy/is-array-buffer': 2.2.0 tslib: 2.8.1 - '@smithy/util-buffer-from@3.0.0': + '@smithy/util-buffer-from@4.0.0': dependencies: - '@smithy/is-array-buffer': 3.0.0 + '@smithy/is-array-buffer': 4.0.0 tslib: 2.8.1 - '@smithy/util-config-provider@3.0.0': + '@smithy/util-config-provider@4.0.0': dependencies: tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@3.0.34': + '@smithy/util-defaults-mode-browser@4.0.1': dependencies: - '@smithy/property-provider': 3.1.11 - '@smithy/smithy-client': 3.7.0 - '@smithy/types': 3.7.2 + '@smithy/property-provider': 4.0.1 + '@smithy/smithy-client': 4.1.0 + '@smithy/types': 4.1.0 bowser: 2.11.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-node@3.0.34': + '@smithy/util-defaults-mode-node@4.0.1': dependencies: - '@smithy/config-resolver': 3.0.13 - '@smithy/credential-provider-imds': 3.2.8 - '@smithy/node-config-provider': 3.1.12 - '@smithy/property-provider': 3.1.11 - '@smithy/smithy-client': 3.7.0 - '@smithy/types': 3.7.2 + '@smithy/config-resolver': 4.0.1 + '@smithy/credential-provider-imds': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/smithy-client': 4.1.0 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/util-endpoints@2.1.7': + '@smithy/util-endpoints@3.0.1': dependencies: - '@smithy/node-config-provider': 3.1.12 - '@smithy/types': 3.7.2 + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/util-hex-encoding@3.0.0': + '@smithy/util-hex-encoding@4.0.0': dependencies: tslib: 2.8.1 - '@smithy/util-middleware@3.0.11': + '@smithy/util-middleware@4.0.1': dependencies: - '@smithy/types': 3.7.2 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/util-retry@3.0.11': + '@smithy/util-retry@4.0.1': dependencies: - '@smithy/service-error-classification': 3.0.11 - '@smithy/types': 3.7.2 + '@smithy/service-error-classification': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/util-stream@3.3.4': + '@smithy/util-stream@4.0.1': dependencies: - '@smithy/fetch-http-handler': 4.1.3 - '@smithy/node-http-handler': 3.3.3 - '@smithy/types': 3.7.2 - '@smithy/util-base64': 3.0.0 - '@smithy/util-buffer-from': 3.0.0 - '@smithy/util-hex-encoding': 3.0.0 - '@smithy/util-utf8': 3.0.0 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/node-http-handler': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-base64': 4.0.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/util-uri-escape@3.0.0': + '@smithy/util-uri-escape@4.0.0': dependencies: tslib: 2.8.1 @@ -27599,15 +27324,15 @@ snapshots: '@smithy/util-buffer-from': 2.2.0 tslib: 2.8.1 - '@smithy/util-utf8@3.0.0': + '@smithy/util-utf8@4.0.0': dependencies: - '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-buffer-from': 4.0.0 tslib: 2.8.1 - '@smithy/util-waiter@3.2.0': + '@smithy/util-waiter@4.0.2': dependencies: - '@smithy/abort-controller': 3.1.9 - '@smithy/types': 3.7.2 + '@smithy/abort-controller': 4.0.1 + '@smithy/types': 4.1.0 tslib: 2.8.1 '@solana-developers/helpers@2.5.6(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': @@ -28095,51 +27820,51 @@ snapshots: - supports-color - typescript - '@swc/core-darwin-arm64@1.10.4': + '@swc/core-darwin-arm64@1.10.7': optional: true - '@swc/core-darwin-x64@1.10.4': + '@swc/core-darwin-x64@1.10.7': optional: true - '@swc/core-linux-arm-gnueabihf@1.10.4': + '@swc/core-linux-arm-gnueabihf@1.10.7': optional: true - '@swc/core-linux-arm64-gnu@1.10.4': + '@swc/core-linux-arm64-gnu@1.10.7': optional: true - '@swc/core-linux-arm64-musl@1.10.4': + '@swc/core-linux-arm64-musl@1.10.7': optional: true - '@swc/core-linux-x64-gnu@1.10.4': + '@swc/core-linux-x64-gnu@1.10.7': optional: true - '@swc/core-linux-x64-musl@1.10.4': + '@swc/core-linux-x64-musl@1.10.7': optional: true - '@swc/core-win32-arm64-msvc@1.10.4': + '@swc/core-win32-arm64-msvc@1.10.7': optional: true - '@swc/core-win32-ia32-msvc@1.10.4': + '@swc/core-win32-ia32-msvc@1.10.7': optional: true - '@swc/core-win32-x64-msvc@1.10.4': + '@swc/core-win32-x64-msvc@1.10.7': optional: true - '@swc/core@1.10.4(@swc/helpers@0.5.15)': + '@swc/core@1.10.7(@swc/helpers@0.5.15)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.17 optionalDependencies: - '@swc/core-darwin-arm64': 1.10.4 - '@swc/core-darwin-x64': 1.10.4 - '@swc/core-linux-arm-gnueabihf': 1.10.4 - '@swc/core-linux-arm64-gnu': 1.10.4 - '@swc/core-linux-arm64-musl': 1.10.4 - '@swc/core-linux-x64-gnu': 1.10.4 - '@swc/core-linux-x64-musl': 1.10.4 - '@swc/core-win32-arm64-msvc': 1.10.4 - '@swc/core-win32-ia32-msvc': 1.10.4 - '@swc/core-win32-x64-msvc': 1.10.4 + '@swc/core-darwin-arm64': 1.10.7 + '@swc/core-darwin-x64': 1.10.7 + '@swc/core-linux-arm-gnueabihf': 1.10.7 + '@swc/core-linux-arm64-gnu': 1.10.7 + '@swc/core-linux-arm64-musl': 1.10.7 + '@swc/core-linux-x64-gnu': 1.10.7 + '@swc/core-linux-x64-musl': 1.10.7 + '@swc/core-win32-arm64-msvc': 1.10.7 + '@swc/core-win32-ia32-msvc': 1.10.7 + '@swc/core-win32-x64-msvc': 1.10.7 '@swc/helpers': 0.5.15 '@swc/counter@0.1.3': {} @@ -28292,7 +28017,7 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 5.0.3 + '@types/express-serve-static-core': 5.0.4 '@types/node': 20.17.9 '@types/connect@3.4.38': @@ -28368,7 +28093,7 @@ snapshots: '@types/d3-selection@3.0.11': {} - '@types/d3-shape@3.1.6': + '@types/d3-shape@3.1.7': dependencies: '@types/d3-path': 3.1.0 @@ -28413,7 +28138,7 @@ snapshots: '@types/d3-scale': 4.0.8 '@types/d3-scale-chromatic': 3.1.0 '@types/d3-selection': 3.0.11 - '@types/d3-shape': 3.1.6 + '@types/d3-shape': 3.1.7 '@types/d3-time': 3.0.4 '@types/d3-time-format': 4.0.3 '@types/d3-timer': 3.0.2 @@ -28459,7 +28184,7 @@ snapshots: '@types/range-parser': 1.2.7 '@types/send': 0.17.4 - '@types/express-serve-static-core@5.0.3': + '@types/express-serve-static-core@5.0.4': dependencies: '@types/node': 20.17.9 '@types/qs': 6.9.17 @@ -28476,7 +28201,7 @@ snapshots: '@types/express@5.0.0': dependencies: '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 5.0.3 + '@types/express-serve-static-core': 5.0.4 '@types/qs': 6.9.17 '@types/serve-static': 1.15.7 @@ -28564,9 +28289,9 @@ snapshots: '@types/lodash.isstring@4.0.9': dependencies: - '@types/lodash': 4.17.13 + '@types/lodash': 4.17.14 - '@types/lodash@4.17.13': {} + '@types/lodash@4.17.14': {} '@types/lru-cache@5.1.1': {} @@ -28609,7 +28334,7 @@ snapshots: '@types/node@17.0.45': {} - '@types/node@18.19.69': + '@types/node@18.19.70': dependencies: undici-types: 5.26.5 @@ -28617,7 +28342,7 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@22.10.4': + '@types/node@22.10.5': dependencies: undici-types: 6.20.0 @@ -28881,7 +28606,7 @@ snapshots: '@typescript-eslint/types': 8.11.0 '@typescript-eslint/visitor-keys': 8.11.0 debug: 4.4.0(supports-color@8.1.1) - fast-glob: 3.3.2 + fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 @@ -28896,7 +28621,7 @@ snapshots: '@typescript-eslint/types': 8.16.0 '@typescript-eslint/visitor-keys': 8.16.0 debug: 4.4.0(supports-color@8.1.1) - fast-glob: 3.3.2 + fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 @@ -28997,13 +28722,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/eslint-plugin@1.0.1(@typescript-eslint/utils@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(vitest@2.1.5(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': + '@vitest/eslint-plugin@1.0.1(@typescript-eslint/utils@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(vitest@2.1.5(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': dependencies: eslint: 9.16.0(jiti@2.4.2) optionalDependencies: '@typescript-eslint/utils': 8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3) typescript: 5.6.3 - vitest: 2.1.5(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) + vitest: 2.1.5(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) '@vitest/expect@2.1.4': dependencies: @@ -29019,21 +28744,21 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.4(vite@5.4.11(@types/node@22.10.4)(terser@5.37.0))': + '@vitest/mocker@2.1.4(vite@5.4.11(@types/node@22.10.5)(terser@5.37.0))': dependencies: '@vitest/spy': 2.1.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.11(@types/node@22.10.4)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.5)(terser@5.37.0) - '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@22.10.4)(terser@5.37.0))': + '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@22.10.5)(terser@5.37.0))': dependencies: '@vitest/spy': 2.1.5 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.11(@types/node@22.10.4)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.5)(terser@5.37.0) '@vitest/pretty-format@2.1.4': dependencies: @@ -29702,7 +29427,7 @@ snapshots: tough-cookie: 4.1.4 tslib: 2.8.1 twitter-api-v2: 1.19.0 - undici: 7.2.0 + undici: 7.2.1 agent-twitter-client@0.0.18(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: @@ -29716,7 +29441,7 @@ snapshots: tough-cookie: 4.1.4 tslib: 2.8.1 twitter-api-v2: 1.19.0 - undici: 7.2.0 + undici: 7.2.1 ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil @@ -29731,13 +29456,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.16.1))(svelte@5.16.1)(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.17.3))(svelte@5.17.3)(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.16.1)(zod@3.23.8) + '@ai-sdk/svelte': 0.0.57(svelte@5.17.3)(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 @@ -29749,20 +29474,20 @@ snapshots: optionalDependencies: openai: 4.73.0(encoding@0.1.13)(zod@3.23.8) react: 18.3.1 - sswr: 2.1.0(svelte@5.16.1) - svelte: 5.16.1 + sswr: 2.1.0(svelte@5.17.3) + svelte: 5.17.3 zod: 3.23.8 transitivePeerDependencies: - solid-js - vue - ai@3.4.33(openai@4.77.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.16.1))(svelte@5.16.1)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8): + ai@3.4.33(openai@4.78.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(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.16.1)(zod@3.23.8) + '@ai-sdk/svelte': 0.0.57(svelte@5.17.3)(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 @@ -29772,10 +29497,10 @@ snapshots: secure-json-parse: 2.7.0 zod-to-json-schema: 3.24.1(zod@3.23.8) optionalDependencies: - openai: 4.77.0(encoding@0.1.13)(zod@3.23.8) + openai: 4.78.0(encoding@0.1.13)(zod@3.23.8) react: 18.3.1 - sswr: 2.1.0(svelte@5.16.1) - svelte: 5.16.1 + sswr: 2.1.0(svelte@5.17.3) + svelte: 5.17.3 zod: 3.23.8 transitivePeerDependencies: - solid-js @@ -29804,7 +29529,7 @@ snapshots: ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.3 + fast-uri: 3.0.5 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -29833,21 +29558,21 @@ snapshots: '@algolia/requester-node-http': 4.24.0 '@algolia/transporter': 4.24.0 - algoliasearch@5.18.0: - dependencies: - '@algolia/client-abtesting': 5.18.0 - '@algolia/client-analytics': 5.18.0 - '@algolia/client-common': 5.18.0 - '@algolia/client-insights': 5.18.0 - '@algolia/client-personalization': 5.18.0 - '@algolia/client-query-suggestions': 5.18.0 - '@algolia/client-search': 5.18.0 - '@algolia/ingestion': 1.18.0 - '@algolia/monitoring': 1.18.0 - '@algolia/recommend': 5.18.0 - '@algolia/requester-browser-xhr': 5.18.0 - '@algolia/requester-fetch': 5.18.0 - '@algolia/requester-node-http': 5.18.0 + algoliasearch@5.19.0: + dependencies: + '@algolia/client-abtesting': 5.19.0 + '@algolia/client-analytics': 5.19.0 + '@algolia/client-common': 5.19.0 + '@algolia/client-insights': 5.19.0 + '@algolia/client-personalization': 5.19.0 + '@algolia/client-query-suggestions': 5.19.0 + '@algolia/client-search': 5.19.0 + '@algolia/ingestion': 1.19.0 + '@algolia/monitoring': 1.19.0 + '@algolia/recommend': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 amp-message@0.1.2: dependencies: @@ -30059,8 +29784,8 @@ snapshots: autoprefixer@10.4.20(postcss@8.4.49): dependencies: - browserslist: 4.24.3 - caniuse-lite: 1.0.30001690 + browserslist: 4.24.4 + caniuse-lite: 1.0.30001692 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -30154,12 +29879,12 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 schema-utils: 4.3.0 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) babel-messages@6.23.0: dependencies: @@ -30205,7 +29930,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) - core-js-compat: 3.39.0 + core-js-compat: 3.40.0 transitivePeerDependencies: - supports-color @@ -30285,12 +30010,12 @@ snapshots: balanced-match@1.0.2: {} - bare-events@2.5.0: + bare-events@2.5.4: optional: true bare-fs@2.3.5: dependencies: - bare-events: 2.5.0 + bare-events: 2.5.4 bare-path: 2.1.3 bare-stream: 2.6.1 optional: true @@ -30664,12 +30389,12 @@ snapshots: vm-browserify: 1.1.2 xtend: 4.0.2 - browserslist@4.24.3: + browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001690 - electron-to-chromium: 1.5.76 + caniuse-lite: 1.0.30001692 + electron-to-chromium: 1.5.80 node-releases: 2.0.19 - update-browserslist-db: 1.1.1(browserslist@4.24.3) + update-browserslist-db: 1.1.2(browserslist@4.24.4) bs-logger@0.2.6: dependencies: @@ -30880,12 +30605,12 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.24.3 - caniuse-lite: 1.0.30001690 + browserslist: 4.24.4 + caniuse-lite: 1.0.30001692 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001690: {} + caniuse-lite@1.0.30001692: {} canvas@2.11.2(encoding@0.1.13): dependencies: @@ -30973,14 +30698,14 @@ snapshots: css-what: 6.1.0 domelementtype: 2.3.0 domhandler: 5.0.3 - domutils: 3.2.1 + domutils: 3.2.2 cheerio@1.0.0-rc.12: dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 - domutils: 3.2.1 + domutils: 3.2.2 htmlparser2: 8.0.2 parse5: 7.2.1 parse5-htmlparser2-tree-adapter: 7.1.0 @@ -31479,25 +31204,25 @@ snapshots: copy-text-to-clipboard@3.2.0: {} - copy-webpack-plugin@11.0.0(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + copy-webpack-plugin@11.0.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: - fast-glob: 3.3.2 + fast-glob: 3.3.3 glob-parent: 6.0.2 globby: 13.2.2 normalize-path: 3.0.0 schema-utils: 4.3.0 serialize-javascript: 6.0.2 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - core-js-compat@3.39.0: + core-js-compat@3.40.0: dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 - core-js-pure@3.39.0: {} + core-js-pure@3.40.0: {} core-js@2.6.12: {} - core-js@3.39.0: {} + core-js@3.40.0: {} core-util-is@1.0.2: {} @@ -31516,9 +31241,9 @@ snapshots: dependencies: layout-base: 2.0.1 - cosmiconfig-typescript-loader@5.1.0(@types/node@22.10.4)(cosmiconfig@8.3.6(typescript@5.6.3))(typescript@5.6.3): + cosmiconfig-typescript-loader@5.1.0(@types/node@22.10.5)(cosmiconfig@8.3.6(typescript@5.6.3))(typescript@5.6.3): dependencies: - '@types/node': 22.10.4 + '@types/node': 22.10.5 cosmiconfig: 8.3.6(typescript@5.6.3) jiti: 1.21.7 typescript: 5.6.3 @@ -31571,13 +31296,13 @@ snapshots: safe-buffer: 5.2.1 sha.js: 2.4.11 - create-jest@29.7.0(@types/node@18.19.69)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)): + create-jest@29.7.0(@types/node@18.19.70)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(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@18.19.69)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@18.19.70)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -31586,13 +31311,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): + create-jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@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.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -31601,13 +31326,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@22.10.4): + create-jest@29.7.0(@types/node@22.10.5): 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@22.10.4) + jest-config: 29.7.0(@types/node@22.10.5) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -31616,13 +31341,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): + create-jest@29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(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@22.8.4)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -31704,7 +31429,7 @@ snapshots: postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 - css-loader@6.11.0(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + css-loader@6.11.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: icss-utils: 5.1.0(postcss@8.4.49) postcss: 8.4.49 @@ -31715,9 +31440,9 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: '@jridgewell/trace-mapping': 0.3.25 cssnano: 6.1.2(postcss@8.4.49) @@ -31725,7 +31450,7 @@ snapshots: postcss: 8.4.49 schema-utils: 4.3.0 serialize-javascript: 6.0.2 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) optionalDependencies: clean-css: 5.3.3 @@ -31746,7 +31471,7 @@ snapshots: boolbase: 1.0.0 css-what: 6.1.0 domhandler: 5.0.3 - domutils: 3.2.1 + domutils: 3.2.2 nth-check: 2.1.1 css-selector-parser@1.4.1: {} @@ -31770,7 +31495,7 @@ snapshots: cssnano-preset-advanced@6.1.2(postcss@8.4.49): dependencies: autoprefixer: 10.4.20(postcss@8.4.49) - browserslist: 4.24.3 + browserslist: 4.24.4 cssnano-preset-default: 6.1.2(postcss@8.4.49) postcss: 8.4.49 postcss-discard-unused: 6.0.5(postcss@8.4.49) @@ -31780,7 +31505,7 @@ snapshots: cssnano-preset-default@6.1.2(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 css-declaration-sorter: 7.2.0(postcss@8.4.49) cssnano-utils: 4.0.2(postcss@8.4.49) postcss: 8.4.49 @@ -31814,11 +31539,11 @@ snapshots: cssnano-preset-default@7.0.6(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 css-declaration-sorter: 7.2.0(postcss@8.4.49) cssnano-utils: 5.0.0(postcss@8.4.49) postcss: 8.4.49 - postcss-calc: 10.0.2(postcss@8.4.49) + postcss-calc: 10.1.0(postcss@8.4.49) postcss-colormin: 7.0.2(postcss@8.4.49) postcss-convert-values: 7.0.4(postcss@8.4.49) postcss-discard-comments: 7.0.3(postcss@8.4.49) @@ -31870,9 +31595,10 @@ snapshots: dependencies: css-tree: 2.2.1 - cssstyle@4.1.0: + cssstyle@4.2.1: dependencies: - rrweb-cssom: 0.7.1 + '@asamuzakjp/css-color': 2.8.2 + rrweb-cssom: 0.8.0 csstype@3.1.3: {} @@ -32401,9 +32127,9 @@ snapshots: dependencies: esutils: 2.0.3 - docusaurus-lunr-search@3.5.0(@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + docusaurus-lunr-search@3.5.0(@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 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.4(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) autocomplete.js: 0.37.1 clsx: 1.2.1 gauge: 3.0.2 @@ -32468,7 +32194,7 @@ snapshots: domelementtype: 2.3.0 domhandler: 4.3.1 - domutils@3.2.1: + domutils@3.2.2: dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 @@ -32533,8 +32259,8 @@ snapshots: echogarden@2.0.7(bufferutil@4.0.9)(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.721.0 - '@aws-sdk/client-transcribe-streaming': 3.721.0 + '@aws-sdk/client-polly': 3.726.0 + '@aws-sdk/client-transcribe-streaming': 3.726.0 '@echogarden/audio-io': 0.2.3 '@echogarden/espeak-ng-emscripten': 0.3.3 '@echogarden/fasttext-wasm': 0.1.0 @@ -32601,7 +32327,7 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.76: {} + electron-to-chromium@1.5.80: {} elliptic@6.5.4: dependencies: @@ -32874,33 +32600,6 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.23.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 - esbuild@0.24.2: optionalDependencies: '@esbuild/aix-ppc64': 0.24.2 @@ -33083,7 +32782,7 @@ snapshots: transitivePeerDependencies: - supports-color - esm-env@1.2.1: {} + esm-env@1.2.2: {} esmify@2.1.1: dependencies: @@ -33127,7 +32826,7 @@ snapshots: dependencies: estraverse: 5.3.0 - esrap@1.3.2: + esrap@1.4.2: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -33428,7 +33127,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -33446,13 +33145,13 @@ snapshots: eyes@0.1.8: {} - fast-content-type-parse@2.0.0: {} + fast-content-type-parse@2.0.1: {} fast-deep-equal@3.1.3: {} fast-fifo@1.3.2: {} - fast-glob@3.3.2: + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -33472,7 +33171,7 @@ snapshots: fast-stable-stringify@1.0.0: {} - fast-uri@3.0.3: {} + fast-uri@3.0.5: {} fast-xml-parser@4.4.1: dependencies: @@ -33527,7 +33226,7 @@ snapshots: fetch-cookie@3.1.0: dependencies: set-cookie-parser: 2.7.1 - tough-cookie: 5.0.0 + tough-cookie: 5.1.0 fflate@0.8.2: {} @@ -33552,11 +33251,11 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) file-uri-to-path@1.0.0: {} @@ -33688,7 +33387,7 @@ snapshots: forever-agent@0.6.1: {} - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: '@babel/code-frame': 7.26.2 '@types/json-schema': 7.0.15 @@ -33704,7 +33403,7 @@ snapshots: semver: 7.6.3 tapable: 1.1.3 typescript: 5.6.3 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) optionalDependencies: eslint: 9.16.0(jiti@2.4.2) @@ -33801,24 +33500,24 @@ snapshots: fsevents@2.3.3: optional: true - fuels@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)): + fuels@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)): dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/abi-typegen': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/contract': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/abi-typegen': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/contract': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/merkle': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/recipes': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/script': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/merkle': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/recipes': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/script': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) '@fuel-ts/versions': 0.97.2 bundle-require: 5.1.0(esbuild@0.24.2) chalk: 4.1.2 @@ -33976,10 +33675,6 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.7 - get-tsconfig@4.8.1: - dependencies: - resolve-pkg-maps: 1.0.0 - get-uri@6.0.4: dependencies: basic-ftp: 5.0.5 @@ -34153,7 +33848,7 @@ snapshots: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.2 + fast-glob: 3.3.3 ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 @@ -34161,7 +33856,7 @@ snapshots: globby@13.2.2: dependencies: dir-glob: 3.0.1 - fast-glob: 3.3.2 + fast-glob: 3.3.3 ignore: 5.3.2 merge2: 1.4.1 slash: 4.0.0 @@ -34169,7 +33864,7 @@ snapshots: globby@14.0.2: dependencies: '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.2 + fast-glob: 3.3.3 ignore: 5.3.2 path-type: 5.0.0 slash: 5.1.0 @@ -34221,7 +33916,7 @@ snapshots: gql.tada@1.8.10(graphql@16.10.0)(typescript@5.6.3): dependencies: - '@0no-co/graphql.web': 1.0.12(graphql@16.10.0) + '@0no-co/graphql.web': 1.0.13(graphql@16.10.0) '@0no-co/graphqlsp': 1.12.16(graphql@16.10.0)(typescript@5.6.3) '@gql.tada/cli-utils': 1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.6.3))(graphql@16.10.0)(typescript@5.6.3) '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.6.3) @@ -34310,7 +34005,7 @@ snapshots: hard-rejection@2.1.0: {} - hardhat@2.22.17(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.10.4)(typescript@5.6.3))(typescript@5.6.3)(utf-8-validate@5.0.10): + hardhat@2.22.17(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.6.3))(typescript@5.6.3)(utf-8-validate@5.0.10): dependencies: '@ethersproject/abi': 5.7.0 '@metamask/eth-sig-util': 4.0.1 @@ -34357,7 +34052,7 @@ snapshots: uuid: 8.3.2 ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: - ts-node: 10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.10.4)(typescript@5.6.3) + ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.6.3) typescript: 5.6.3 transitivePeerDependencies: - bufferutil @@ -34476,7 +34171,7 @@ snapshots: unist-util-visit: 2.0.3 zwitch: 1.0.5 - hast-util-to-estree@3.1.0: + hast-util-to-estree@3.1.1: dependencies: '@types/estree': 1.0.6 '@types/estree-jsx': 1.0.5 @@ -34491,7 +34186,7 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 6.5.0 space-separated-tokens: 2.0.2 - style-to-object: 0.4.4 + style-to-object: 1.0.8 unist-util-position: 5.0.0 zwitch: 2.0.4 transitivePeerDependencies: @@ -34662,7 +34357,7 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.3(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + html-webpack-plugin@5.6.3(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -34670,7 +34365,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) htmlescape@1.1.1: {} @@ -34685,7 +34380,7 @@ snapshots: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 - domutils: 3.2.1 + domutils: 3.2.2 entities: 4.5.0 http-cache-semantics@4.1.1: {} @@ -34723,7 +34418,7 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - http-parser-js@0.5.8: {} + http-parser-js@0.5.9: {} http-proxy-agent@7.0.2: dependencies: @@ -34901,8 +34596,6 @@ snapshots: dependencies: source-map: 0.5.7 - inline-style-parser@0.1.1: {} - inline-style-parser@0.2.4: {} inquirer@8.2.6: @@ -35447,16 +35140,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@18.19.69)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)): + jest-cli@29.7.0(@types/node@18.19.70)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(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@18.19.69)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)) + create-jest: 29.7.0(@types/node@18.19.70)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@18.19.69)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@18.19.70)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -35466,16 +35159,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): + jest-cli@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@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.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@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)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + create-jest: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@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.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@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 @@ -35485,16 +35178,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@22.10.4): + jest-cli@29.7.0(@types/node@22.10.5): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@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@22.10.4) + create-jest: 29.7.0(@types/node@22.10.5) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.10.4) + jest-config: 29.7.0(@types/node@22.10.5) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -35504,16 +35197,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): + jest-cli@29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.7(@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.4(@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.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(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@22.8.4)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) + create-jest: 29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.7(@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.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -35523,7 +35216,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@18.19.69)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)): + jest-config@29.7.0(@types/node@18.19.70)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)): dependencies: '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 @@ -35548,13 +35241,13 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 18.19.69 - ts-node: 10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3) + '@types/node': 18.19.70 + ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)): + jest-config@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)): dependencies: '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 @@ -35580,12 +35273,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.17.9 - ts-node: 10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3) + ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): + jest-config@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): dependencies: '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 @@ -35611,12 +35304,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.17.9 - ts-node: 10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3) + ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.4(@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.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): dependencies: '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 @@ -35642,12 +35335,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.17.9 - ts-node: 10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3) + ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@22.10.4): + jest-config@29.7.0(@types/node@22.10.5): dependencies: '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 @@ -35672,12 +35365,12 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.10.4 + '@types/node': 22.10.5 transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): + jest-config@29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): dependencies: '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 @@ -35703,7 +35396,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 22.8.4 - ts-node: 10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3) + ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -35929,48 +35622,48 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@18.19.69)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)): + jest@29.7.0(@types/node@18.19.70)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@18.19.69)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)) + jest-cli: 29.7.0(@types/node@18.19.70)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): + jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@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.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@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@20.17.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + jest-cli: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@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@29.7.0(@types/node@22.10.4): + jest@29.7.0(@types/node@22.10.5): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@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.10.4) + jest-cli: 29.7.0(@types/node@22.10.5) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - jest@29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): + jest@29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.7(@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.4(@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.7(@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@22.8.4)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) + jest-cli: 29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -36041,7 +35734,7 @@ snapshots: jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10): dependencies: - cssstyle: 4.1.0 + cssstyle: 4.2.1 data-urls: 5.0.0 decimal.js: 10.4.3 form-data: 4.0.1 @@ -36054,7 +35747,7 @@ snapshots: rrweb-cssom: 0.7.1 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 5.0.0 + tough-cookie: 5.1.0 w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 @@ -36255,7 +35948,7 @@ snapshots: js-tiktoken: 1.0.15 js-yaml: 4.1.0 jsonpointer: 5.0.1 - langsmith: 0.2.14(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) + langsmith: 0.2.15(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 @@ -36277,7 +35970,7 @@ snapshots: vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 - langsmith@0.2.14(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)): + langsmith@0.2.15(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)): dependencies: '@types/uuid': 10.0.0 commander: 10.0.1 @@ -36309,13 +36002,13 @@ snapshots: leac@0.6.0: {} - lerna@8.1.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(encoding@0.1.13): + lerna@8.1.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(encoding@0.1.13): dependencies: - '@lerna/create': 8.1.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(encoding@0.1.13)(typescript@5.6.3) + '@lerna/create': 8.1.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(encoding@0.1.13)(typescript@5.6.3) '@npmcli/arborist': 7.5.3 '@npmcli/package-json': 5.2.0 '@npmcli/run-script': 8.1.0 - '@nx/devkit': 19.8.14(nx@19.8.14(@swc/core@1.10.4(@swc/helpers@0.5.15))) + '@nx/devkit': 19.8.14(nx@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15))) '@octokit/plugin-enterprise-rest': 6.0.1 '@octokit/rest': 19.0.11(encoding@0.1.13) aproba: 2.0.0 @@ -36360,7 +36053,7 @@ snapshots: npm-package-arg: 11.0.2 npm-packlist: 8.0.2 npm-registry-fetch: 17.1.0 - nx: 19.8.14(@swc/core@1.10.4(@swc/helpers@0.5.15)) + nx: 19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)) p-map: 4.0.0 p-map-series: 2.1.0 p-pipe: 3.1.0 @@ -36636,7 +36329,7 @@ snapshots: strip-ansi: 7.1.0 wrap-ansi: 9.0.0 - long@5.2.3: {} + long@5.2.4: {} longest-streak@3.1.0: {} @@ -36802,7 +36495,7 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-find-and-replace@3.0.1: + mdast-util-find-and-replace@3.0.2: dependencies: '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 @@ -36842,7 +36535,7 @@ snapshots: '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.1 + mdast-util-find-and-replace: 3.0.2 micromark-util-character: 2.1.1 mdast-util-gfm-footnote@2.0.0: @@ -37436,11 +37129,11 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.2(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + mini-css-extract-plugin@2.9.2(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: schema-utils: 4.3.0 tapable: 2.2.1 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) minimalistic-assert@1.0.1: {} @@ -37572,7 +37265,7 @@ snapshots: mnemonist@0.38.5: dependencies: - obliterator: 2.0.4 + obliterator: 2.0.5 mocha@10.8.2: dependencies: @@ -37903,7 +37596,7 @@ snapshots: buffer: 6.0.3 es6-promise: 4.2.8 lodash: 4.17.21 - long: 5.2.3 + long: 5.2.4 node-forge: 1.3.1 pako: 2.1.0 process: 0.11.10 @@ -37929,7 +37622,7 @@ snapshots: log-symbols: 7.0.0 nanoid: 5.0.9 node-addon-api: 8.3.0 - octokit: 4.0.3 + octokit: 4.1.0 ora: 8.1.1 pretty-ms: 9.2.0 proper-lockfile: 4.1.2 @@ -38095,18 +37788,18 @@ snapshots: dependencies: boolbase: 1.0.0 - null-loader@4.0.1(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + null-loader@4.0.1(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) nwsapi@2.2.16: {} - nx@19.8.14(@swc/core@1.10.4(@swc/helpers@0.5.15)): + nx@19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)): dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.8.14(@swc/core@1.10.4(@swc/helpers@0.5.15)) + '@nrwl/tao': 19.8.14(@swc/core@1.10.7(@swc/helpers@0.5.15)) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 @@ -38150,7 +37843,7 @@ snapshots: '@nx/nx-linux-x64-musl': 19.8.14 '@nx/nx-win32-arm64-msvc': 19.8.14 '@nx/nx-win32-x64-msvc': 19.8.14 - '@swc/core': 1.10.4(@swc/helpers@0.5.15) + '@swc/core': 1.10.7(@swc/helpers@0.5.15) transitivePeerDependencies: - debug @@ -38186,22 +37879,22 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 - obliterator@2.0.4: {} + obliterator@2.0.5: {} obuf@1.1.2: {} - octokit@4.0.3: + octokit@4.1.0: dependencies: - '@octokit/app': 15.1.1 - '@octokit/core': 6.1.2 - '@octokit/oauth-app': 7.1.4 - '@octokit/plugin-paginate-graphql': 5.2.4(@octokit/core@6.1.2) - '@octokit/plugin-paginate-rest': 11.3.6(@octokit/core@6.1.2) - '@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.2) - '@octokit/plugin-retry': 7.1.2(@octokit/core@6.1.2) - '@octokit/plugin-throttling': 9.3.2(@octokit/core@6.1.2) + '@octokit/app': 15.1.2 + '@octokit/core': 6.1.3 + '@octokit/oauth-app': 7.1.5 + '@octokit/plugin-paginate-graphql': 5.2.4(@octokit/core@6.1.3) + '@octokit/plugin-paginate-rest': 11.4.0(@octokit/core@6.1.3) + '@octokit/plugin-rest-endpoint-methods': 13.3.0(@octokit/core@6.1.3) + '@octokit/plugin-retry': 7.1.3(@octokit/core@6.1.3) + '@octokit/plugin-throttling': 9.4.0(@octokit/core@6.1.3) '@octokit/request-error': 6.1.6 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 ofetch@1.4.1: dependencies: @@ -38268,7 +37961,7 @@ snapshots: dependencies: flatbuffers: 1.12.0 guid-typescript: 1.0.9 - long: 5.2.3 + long: 5.2.4 onnxruntime-common: 1.20.0-dev.20241016-2b8fc5529b platform: 1.3.6 protobufjs: 7.4.0 @@ -38293,7 +37986,7 @@ snapshots: openai@4.73.0(encoding@0.1.13)(zod@3.23.8): dependencies: - '@types/node': 18.19.69 + '@types/node': 18.19.70 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -38305,9 +37998,9 @@ snapshots: transitivePeerDependencies: - encoding - openai@4.77.0(encoding@0.1.13)(zod@3.23.8): + openai@4.78.0(encoding@0.1.13)(zod@3.23.8): dependencies: - '@types/node': 18.19.69 + '@types/node': 18.19.70 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -38959,10 +38652,10 @@ snapshots: postcss: 8.4.49 postcss-selector-parser: 7.0.0 - postcss-calc@10.0.2(postcss@8.4.49): + postcss-calc@10.1.0(postcss@8.4.49): dependencies: postcss: 8.4.49 - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 postcss-calc@9.0.1(postcss@8.4.49): @@ -38976,7 +38669,7 @@ snapshots: postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-cli@11.0.0(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2): + postcss-cli@11.0.0(jiti@2.4.2)(postcss@8.4.49): dependencies: chokidar: 3.6.0 dependency-graph: 0.11.0 @@ -38985,7 +38678,7 @@ snapshots: globby: 14.0.2 picocolors: 1.1.1 postcss: 8.4.49 - postcss-load-config: 5.1.0(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2) + postcss-load-config: 5.1.0(jiti@2.4.2)(postcss@8.4.49) postcss-reporter: 7.1.0(postcss@8.4.49) pretty-hrtime: 1.0.3 read-cache: 1.0.0 @@ -39018,7 +38711,7 @@ snapshots: postcss-colormin@6.1.0(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.4.49 @@ -39026,7 +38719,7 @@ snapshots: postcss-colormin@7.0.2(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.4.49 @@ -39034,13 +38727,13 @@ snapshots: postcss-convert-values@6.1.0(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 postcss: 8.4.49 postcss-value-parser: 4.2.0 postcss-convert-values@7.0.4(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 postcss: 8.4.49 postcss-value-parser: 4.2.0 @@ -39164,39 +38857,37 @@ snapshots: '@csstools/utilities': 2.0.0(postcss@8.4.49) postcss: 8.4.49 - postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): + postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): dependencies: lilconfig: 3.1.3 yaml: 2.7.0 optionalDependencies: postcss: 8.4.49 - ts-node: 10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3) + ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3) - postcss-load-config@5.1.0(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2): + postcss-load-config@5.1.0(jiti@2.4.2)(postcss@8.4.49): dependencies: lilconfig: 3.1.3 yaml: 2.7.0 optionalDependencies: jiti: 2.4.2 postcss: 8.4.49 - tsx: 4.19.2 - postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(yaml@2.7.0): + postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.4.49)(yaml@2.7.0): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.4.2 postcss: 8.4.49 - tsx: 4.19.2 yaml: 2.7.0 - postcss-loader@7.3.4(postcss@8.4.49)(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + postcss-loader@7.3.4(postcss@8.4.49)(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: cosmiconfig: 8.3.6(typescript@5.6.3) jiti: 1.21.7 postcss: 8.4.49 semver: 7.6.3 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) transitivePeerDependencies: - typescript @@ -39225,7 +38916,7 @@ snapshots: postcss-merge-rules@6.1.1(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 caniuse-api: 3.0.0 cssnano-utils: 4.0.2(postcss@8.4.49) postcss: 8.4.49 @@ -39233,7 +38924,7 @@ snapshots: postcss-merge-rules@7.0.4(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 caniuse-api: 3.0.0 cssnano-utils: 5.0.0(postcss@8.4.49) postcss: 8.4.49 @@ -39265,14 +38956,14 @@ snapshots: postcss-minify-params@6.1.0(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 cssnano-utils: 4.0.2(postcss@8.4.49) postcss: 8.4.49 postcss-value-parser: 4.2.0 postcss-minify-params@7.0.2(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 cssnano-utils: 5.0.0(postcss@8.4.49) postcss: 8.4.49 postcss-value-parser: 4.2.0 @@ -39381,13 +39072,13 @@ snapshots: postcss-normalize-unicode@6.1.0(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 postcss: 8.4.49 postcss-value-parser: 4.2.0 postcss-normalize-unicode@7.0.2(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 postcss: 8.4.49 postcss-value-parser: 4.2.0 @@ -39476,7 +39167,7 @@ snapshots: '@csstools/postcss-trigonometric-functions': 4.0.6(postcss@8.4.49) '@csstools/postcss-unset-value': 4.0.0(postcss@8.4.49) autoprefixer: 10.4.20(postcss@8.4.49) - browserslist: 4.24.3 + browserslist: 4.24.4 css-blank-pseudo: 7.0.1(postcss@8.4.49) css-has-pseudo: 7.0.2(postcss@8.4.49) css-prefers-color-scheme: 10.0.0(postcss@8.4.49) @@ -39520,13 +39211,13 @@ snapshots: postcss-reduce-initial@6.1.0(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 caniuse-api: 3.0.0 postcss: 8.4.49 postcss-reduce-initial@7.0.2(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 caniuse-api: 3.0.0 postcss: 8.4.49 @@ -39760,7 +39451,7 @@ snapshots: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/node': 20.17.9 - long: 5.2.3 + long: 5.2.4 protocols@2.0.1: {} @@ -39819,10 +39510,10 @@ snapshots: end-of-stream: 1.4.4 once: 1.4.0 - pumpdotfun-sdk@1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.29.1)(typescript@5.6.3)(utf-8-validate@5.0.10): + pumpdotfun-sdk@1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.6.3)(utf-8-validate@5.0.10): dependencies: '@coral-xyz/anchor': 0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@rollup/plugin-json': 6.1.0(rollup@4.29.1) + '@rollup/plugin-json': 6.1.0(rollup@4.30.1) '@solana/spl-token': 0.4.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: @@ -40004,18 +39695,18 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-dev-utils@12.0.1(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + react-dev-utils@12.0.1(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: '@babel/code-frame': 7.26.2 address: 1.2.2 - browserslist: 4.24.3 + browserslist: 4.24.4 chalk: 4.1.2 cross-spawn: 7.0.6 detect-port-alt: 1.1.6 escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -40030,7 +39721,7 @@ snapshots: shell-quote: 1.8.2 strip-ansi: 6.0.1 text-table: 0.2.0 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: @@ -40073,11 +39764,11 @@ snapshots: dependencies: react: 18.3.1 - react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: '@babel/runtime': 7.26.0 react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) react-refresh@0.14.2: {} @@ -40413,7 +40104,7 @@ snapshots: dependencies: '@types/estree': 1.0.6 '@types/hast': 3.0.4 - hast-util-to-estree: 3.1.0 + hast-util-to-estree: 3.1.1 transitivePeerDependencies: - supports-color @@ -40432,7 +40123,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 emoticon: 4.1.0 - mdast-util-find-and-replace: 3.0.1 + mdast-util-find-and-replace: 3.0.2 node-emoji: 2.2.0 unified: 11.0.5 @@ -40553,8 +40244,6 @@ snapshots: resolve-pathname@3.0.0: {} - resolve-pkg-maps@1.0.0: {} - resolve.exports@2.0.3: {} resolve@1.17.0: @@ -40639,29 +40328,29 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.29.1: + rollup@4.30.1: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.29.1 - '@rollup/rollup-android-arm64': 4.29.1 - '@rollup/rollup-darwin-arm64': 4.29.1 - '@rollup/rollup-darwin-x64': 4.29.1 - '@rollup/rollup-freebsd-arm64': 4.29.1 - '@rollup/rollup-freebsd-x64': 4.29.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.29.1 - '@rollup/rollup-linux-arm-musleabihf': 4.29.1 - '@rollup/rollup-linux-arm64-gnu': 4.29.1 - '@rollup/rollup-linux-arm64-musl': 4.29.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.29.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.29.1 - '@rollup/rollup-linux-riscv64-gnu': 4.29.1 - '@rollup/rollup-linux-s390x-gnu': 4.29.1 - '@rollup/rollup-linux-x64-gnu': 4.29.1 - '@rollup/rollup-linux-x64-musl': 4.29.1 - '@rollup/rollup-win32-arm64-msvc': 4.29.1 - '@rollup/rollup-win32-ia32-msvc': 4.29.1 - '@rollup/rollup-win32-x64-msvc': 4.29.1 + '@rollup/rollup-android-arm-eabi': 4.30.1 + '@rollup/rollup-android-arm64': 4.30.1 + '@rollup/rollup-darwin-arm64': 4.30.1 + '@rollup/rollup-darwin-x64': 4.30.1 + '@rollup/rollup-freebsd-arm64': 4.30.1 + '@rollup/rollup-freebsd-x64': 4.30.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.30.1 + '@rollup/rollup-linux-arm-musleabihf': 4.30.1 + '@rollup/rollup-linux-arm64-gnu': 4.30.1 + '@rollup/rollup-linux-arm64-musl': 4.30.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.30.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.30.1 + '@rollup/rollup-linux-riscv64-gnu': 4.30.1 + '@rollup/rollup-linux-s390x-gnu': 4.30.1 + '@rollup/rollup-linux-x64-gnu': 4.30.1 + '@rollup/rollup-linux-x64-musl': 4.30.1 + '@rollup/rollup-win32-arm64-msvc': 4.30.1 + '@rollup/rollup-win32-ia32-msvc': 4.30.1 + '@rollup/rollup-win32-x64-msvc': 4.30.1 fsevents: 2.3.3 roughjs@4.6.6: @@ -40686,6 +40375,8 @@ snapshots: rrweb-cssom@0.7.1: {} + rrweb-cssom@0.8.0: {} + rtl-detect@1.1.2: {} rtlcss@4.3.0: @@ -41021,15 +40712,15 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 - shiki@1.25.1: + shiki@1.26.1: dependencies: - '@shikijs/core': 1.25.1 - '@shikijs/engine-javascript': 1.25.1 - '@shikijs/engine-oniguruma': 1.25.1 - '@shikijs/langs': 1.25.1 - '@shikijs/themes': 1.25.1 - '@shikijs/types': 1.25.1 - '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/core': 1.26.1 + '@shikijs/engine-javascript': 1.26.1 + '@shikijs/engine-oniguruma': 1.26.1 + '@shikijs/langs': 1.26.1 + '@shikijs/themes': 1.26.1 + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 shimmer@1.2.1: {} @@ -41334,9 +41025,9 @@ snapshots: dependencies: minipass: 7.1.2 - sswr@2.1.0(svelte@5.16.1): + sswr@2.1.0(svelte@5.17.3): dependencies: - svelte: 5.16.1 + svelte: 5.17.3 swrev: 4.0.0 stack-utils@2.0.6: @@ -41422,7 +41113,7 @@ snapshots: queue-tick: 1.0.1 text-decoder: 1.2.3 optionalDependencies: - bare-events: 2.5.0 + bare-events: 2.5.4 strict-uri-encode@2.0.0: {} @@ -41541,23 +41232,19 @@ snapshots: minimist: 1.2.8 through: 2.3.8 - style-to-object@0.4.4: - dependencies: - inline-style-parser: 0.1.1 - style-to-object@1.0.8: dependencies: inline-style-parser: 0.2.4 stylehacks@6.1.1(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 postcss: 8.4.49 postcss-selector-parser: 6.1.2 stylehacks@7.0.4(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 postcss: 8.4.49 postcss-selector-parser: 6.1.2 @@ -41604,7 +41291,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte@5.16.1: + svelte@5.17.3: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 @@ -41614,8 +41301,8 @@ snapshots: aria-query: 5.3.2 axobject-query: 4.1.0 clsx: 2.1.1 - esm-env: 1.2.1 - esrap: 1.3.2 + esm-env: 1.2.2 + esrap: 1.4.2 is-reference: 3.0.3 locate-character: 3.0.0 magic-string: 0.30.17 @@ -41657,18 +41344,18 @@ snapshots: tailwind-merge@2.5.5: {} - tailwindcss-animate@1.0.7(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3))): + tailwindcss-animate@1.0.7(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3))): dependencies: - tailwindcss: 3.4.15(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) + tailwindcss: 3.4.15(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) - tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): + tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 chokidar: 3.6.0 didyoumean: 1.2.2 dlv: 1.1.3 - fast-glob: 3.3.2 + fast-glob: 3.3.3 glob-parent: 6.0.2 is-glob: 4.0.3 jiti: 1.21.7 @@ -41680,7 +41367,7 @@ snapshots: postcss: 8.4.49 postcss-import: 15.1.0(postcss@8.4.49) postcss-js: 4.0.1(postcss@8.4.49) - postcss-load-config: 4.0.2(postcss@8.4.49)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) + postcss-load-config: 4.0.2(postcss@8.4.49)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) postcss-nested: 6.2.0(postcss@8.4.49) postcss-selector-parser: 6.1.2 resolve: 1.22.10 @@ -41755,16 +41442,16 @@ snapshots: temp-dir@1.0.0: {} - terser-webpack-plugin@5.3.11(@swc/core@1.10.4(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + terser-webpack-plugin@5.3.11(@swc/core@1.10.7(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.37.0 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) optionalDependencies: - '@swc/core': 1.10.4(@swc/helpers@0.5.15) + '@swc/core': 1.10.7(@swc/helpers@0.5.15) terser@5.37.0: dependencies: @@ -41870,15 +41557,15 @@ snapshots: tinyspy@3.0.2: {} - tldts-core@6.1.70: {} + tldts-core@6.1.71: {} - tldts-experimental@6.1.70: + tldts-experimental@6.1.71: dependencies: - tldts-core: 6.1.70 + tldts-core: 6.1.71 - tldts@6.1.70: + tldts@6.1.71: dependencies: - tldts-core: 6.1.70 + tldts-core: 6.1.71 tmp@0.0.33: dependencies: @@ -41905,7 +41592,7 @@ snapshots: together-ai@0.7.0(encoding@0.1.13): dependencies: - '@types/node': 18.19.69 + '@types/node': 18.19.70 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -41939,9 +41626,9 @@ snapshots: universalify: 0.2.0 url-parse: 1.5.10 - tough-cookie@5.0.0: + tough-cookie@5.1.0: dependencies: - tldts: 6.1.70 + tldts: 6.1.71 tr46@0.0.3: {} @@ -41981,12 +41668,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))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)))(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))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@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)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + jest: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@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 @@ -42001,12 +41688,12 @@ snapshots: babel-jest: 29.7.0(@babel/core@7.26.0) esbuild: 0.24.2 - 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@18.19.69)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)))(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@18.19.70)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(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@18.19.69)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3)) + jest: 29.7.0(@types/node@18.19.70)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -42020,12 +41707,12 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.0) - 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@22.8.4)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)))(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@22.8.4)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(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@22.8.4)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) + jest: 29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -42041,14 +41728,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@18.19.69)(typescript@5.6.3): + ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(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': 18.19.69 + '@types/node': 18.19.70 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -42059,9 +41746,9 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.10.4(@swc/helpers@0.5.15) + '@swc/core': 1.10.7(@swc/helpers@0.5.15) - ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3): + ts-node@10.9.2(@swc/core@1.10.7(@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 @@ -42079,16 +41766,16 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.10.4(@swc/helpers@0.5.15) + '@swc/core': 1.10.7(@swc/helpers@0.5.15) - ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.10.4)(typescript@5.6.3): + ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(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': 22.10.4 + '@types/node': 22.10.5 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -42099,10 +41786,10 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.10.4(@swc/helpers@0.5.15) + '@swc/core': 1.10.7(@swc/helpers@0.5.15) optional: true - ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3): + ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -42120,7 +41807,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.10.4(@swc/helpers@0.5.15) + '@swc/core': 1.10.7(@swc/helpers@0.5.15) tsconfig-paths@4.2.0: dependencies: @@ -42142,7 +41829,7 @@ snapshots: tsscmp@1.0.6: {} - tsup@8.3.5(@swc/core@1.10.4(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0): + tsup@8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0): dependencies: bundle-require: 5.1.0(esbuild@0.24.2) cac: 6.7.14 @@ -42152,16 +41839,16 @@ snapshots: esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(yaml@2.7.0) + postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.4.49)(yaml@2.7.0) resolve-from: 5.0.0 - rollup: 4.29.1 + rollup: 4.30.1 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tinyexec: 0.3.2 tinyglobby: 0.2.10 tree-kill: 1.2.2 optionalDependencies: - '@swc/core': 1.10.4(@swc/helpers@0.5.15) + '@swc/core': 1.10.7(@swc/helpers@0.5.15) postcss: 8.4.49 typescript: 5.6.3 transitivePeerDependencies: @@ -42170,13 +41857,6 @@ snapshots: - tsx - yaml - tsx@4.19.2: - dependencies: - esbuild: 0.23.1 - get-tsconfig: 4.8.1 - optionalDependencies: - fsevents: 2.3.3 - tty-browserify@0.0.1: {} tuf-js@2.2.1: @@ -42259,7 +41939,7 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.31.0: {} + type-fest@4.32.0: {} type-is@1.6.18: dependencies: @@ -42329,7 +42009,7 @@ snapshots: lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - shiki: 1.25.1 + shiki: 1.26.1 typescript: 5.6.3 yaml: 2.7.0 @@ -42439,7 +42119,7 @@ snapshots: undici@6.19.8: {} - undici@7.2.0: {} + undici@7.2.1: {} unenv@1.10.0: dependencies: @@ -42606,9 +42286,9 @@ snapshots: upath@2.0.1: {} - update-browserslist-db@1.1.1(browserslist@4.24.3): + update-browserslist-db@1.1.2(browserslist@4.24.4): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 escalade: 3.2.0 picocolors: 1.1.1 @@ -42635,14 +42315,14 @@ snapshots: url-join@4.0.1: {} - url-loader@4.1.1(file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) optionalDependencies: - file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) url-parse@1.5.10: dependencies: @@ -42843,12 +42523,12 @@ snapshots: - utf-8-validate - zod - vite-node@2.1.4(@types/node@22.10.4)(terser@5.37.0): + vite-node@2.1.4(@types/node@22.10.5)(terser@5.37.0): dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@8.1.1) pathe: 1.1.2 - vite: 5.4.11(@types/node@22.10.4)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.5)(terser@5.37.0) transitivePeerDependencies: - '@types/node' - less @@ -42860,13 +42540,13 @@ snapshots: - supports-color - terser - vite-node@2.1.5(@types/node@22.10.4)(terser@5.37.0): + vite-node@2.1.5(@types/node@22.10.5)(terser@5.37.0): dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@8.1.1) es-module-lexer: 1.6.0 pathe: 1.1.2 - vite: 5.4.11(@types/node@22.10.4)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.5)(terser@5.37.0) transitivePeerDependencies: - '@types/node' - less @@ -42896,10 +42576,10 @@ snapshots: - supports-color - terser - vite-plugin-top-level-await@1.4.4(@swc/helpers@0.5.15)(rollup@4.29.1)(vite@client+@tanstack+router-plugin+vite): + vite-plugin-top-level-await@1.4.4(@swc/helpers@0.5.15)(rollup@4.30.1)(vite@client+@tanstack+router-plugin+vite): dependencies: - '@rollup/plugin-virtual': 3.0.2(rollup@4.29.1) - '@swc/core': 1.10.4(@swc/helpers@0.5.15) + '@rollup/plugin-virtual': 3.0.2(rollup@4.30.1) + '@swc/core': 1.10.7(@swc/helpers@0.5.15) uuid: 10.0.0 vite: link:client/@tanstack/router-plugin/vite transitivePeerDependencies: @@ -42910,13 +42590,13 @@ snapshots: dependencies: vite: link:client/@tanstack/router-plugin/vite - vite@5.4.11(@types/node@22.10.4)(terser@5.37.0): + vite@5.4.11(@types/node@22.10.5)(terser@5.37.0): dependencies: esbuild: 0.21.5 postcss: 8.4.49 - rollup: 4.29.1 + rollup: 4.30.1 optionalDependencies: - '@types/node': 22.10.4 + '@types/node': 22.10.5 fsevents: 2.3.3 terser: 5.37.0 @@ -42924,16 +42604,16 @@ snapshots: dependencies: esbuild: 0.21.5 postcss: 8.4.49 - rollup: 4.29.1 + rollup: 4.30.1 optionalDependencies: '@types/node': 22.8.4 fsevents: 2.3.3 terser: 5.37.0 - vitest@2.1.4(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0): + vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0): dependencies: '@vitest/expect': 2.1.4 - '@vitest/mocker': 2.1.4(vite@5.4.11(@types/node@22.10.4)(terser@5.37.0)) + '@vitest/mocker': 2.1.4(vite@5.4.11(@types/node@22.10.5)(terser@5.37.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.4 '@vitest/snapshot': 2.1.4 @@ -42949,11 +42629,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.10.4)(terser@5.37.0) - vite-node: 2.1.4(@types/node@22.10.4)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.5)(terser@5.37.0) + vite-node: 2.1.4(@types/node@22.10.5)(terser@5.37.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.10.4 + '@types/node': 22.10.5 jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10) transitivePeerDependencies: - less @@ -42966,10 +42646,10 @@ snapshots: - supports-color - terser - vitest@2.1.5(@types/node@22.10.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0): + vitest@2.1.5(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0): dependencies: '@vitest/expect': 2.1.5 - '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.10.4)(terser@5.37.0)) + '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.10.5)(terser@5.37.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.5 '@vitest/snapshot': 2.1.5 @@ -42985,11 +42665,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.10.4)(terser@5.37.0) - vite-node: 2.1.5(@types/node@22.10.4)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.5)(terser@5.37.0) + vite-node: 2.1.5(@types/node@22.10.5)(terser@5.37.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.10.4 + '@types/node': 22.10.5 jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10) transitivePeerDependencies: - less @@ -43005,7 +42685,7 @@ snapshots: vitest@2.1.5(@types/node@22.8.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0): dependencies: '@vitest/expect': 2.1.5 - '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.10.4)(terser@5.37.0)) + '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.10.5)(terser@5.37.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.5 '@vitest/snapshot': 2.1.5 @@ -43253,10 +42933,10 @@ snapshots: - encoding - utf-8-validate - web3-plugin-zksync@1.0.8(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.10.4)(typescript@5.6.3))(typescript@5.6.3)(utf-8-validate@5.0.10)(web3@4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)): + web3-plugin-zksync@1.0.8(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.6.3))(typescript@5.6.3)(utf-8-validate@5.0.10)(web3@4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)): dependencies: ethereum-cryptography: 2.2.1 - hardhat: 2.22.17(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.4(@swc/helpers@0.5.15))(@types/node@22.10.4)(typescript@5.6.3))(typescript@5.6.3)(utf-8-validate@5.0.10) + hardhat: 2.22.17(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.6.3))(typescript@5.6.3)(utf-8-validate@5.0.10) web3: 4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) transitivePeerDependencies: - bufferutil @@ -43398,16 +43078,16 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@5.3.4(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + webpack-dev-middleware@5.3.4(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.3.0 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - webpack-dev-server@4.15.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + webpack-dev-server@4.15.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -43437,10 +43117,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + webpack-dev-middleware: 5.3.4(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) transitivePeerDependencies: - bufferutil - debug @@ -43461,7 +43141,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)): + webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.6 @@ -43469,7 +43149,7 @@ snapshots: '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.14.0 - browserslist: 4.24.3 + browserslist: 4.24.4 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.0 es-module-lexer: 1.6.0 @@ -43483,7 +43163,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.11(@swc/core@1.10.4(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))) + terser-webpack-plugin: 5.3.11(@swc/core@1.10.7(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -43491,7 +43171,7 @@ snapshots: - esbuild - uglify-js - webpackbar@6.0.1(webpack@5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15))): + webpackbar@6.0.1(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -43500,12 +43180,12 @@ snapshots: markdown-table: 2.0.0 pretty-time: 1.1.0 std-env: 3.8.0 - webpack: 5.97.1(@swc/core@1.10.4(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) wrap-ansi: 7.0.0 websocket-driver@0.7.4: dependencies: - http-parser-js: 0.5.8 + http-parser-js: 0.5.9 safe-buffer: 5.2.1 websocket-extensions: 0.1.4 From 6e0d433b26d5766f51c8830f534eba4d794378cc Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 10 Jan 2025 20:19:16 +0700 Subject: [PATCH 02/58] XX --- agent/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/src/index.ts b/agent/src/index.ts index 7e5a36f1497..4d43118d1ef 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -506,7 +506,7 @@ export async function createAgent( elizaLogger.error( "WALLET_SECRET_SALT required when TEE_MODE is enabled" ); - throw new Error("Invalid TEE configuration"); + throw new Error("Invalid TEES configuration"); } let goatPlugin: any | undefined; From a3b1fe198929be9be5f14f5038525ab45bbcc1ec Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Sun, 12 Jan 2025 09:55:15 +0700 Subject: [PATCH 03/58] OKE BRO --- agent/package.json | 3 + agent/src/index.ts | 13 +- package.json | 2 + packages/core/src/context.ts | 3 +- packages/plugin-coinmarketcap/README.md | 127 + .../README.md:Zone.Identifier | 0 packages/plugin-coinmarketcap/package.json | 19 + .../package.json:Zone.Identifier | 0 .../src/actions/getPrice/examples.ts | 46 + .../getPrice/examples.ts:Zone.Identifier | 0 .../src/actions/getPrice/index.ts | 118 + .../actions/getPrice/index.ts:Zone.Identifier | 0 .../src/actions/getPrice/service.ts | 71 + .../getPrice/service.ts:Zone.Identifier | 0 .../src/actions/getPrice/template.ts | 27 + .../getPrice/template.ts:Zone.Identifier | 0 .../src/actions/getPrice/types.ts | 28 + .../actions/getPrice/types.ts:Zone.Identifier | 0 .../src/actions/getPrice/validation.ts | 16 + .../getPrice/validation.ts:Zone.Identifier | 0 .../plugin-coinmarketcap/src/environment.ts | 32 + .../src/environment.ts:Zone.Identifier | 0 packages/plugin-coinmarketcap/src/index.ts | 12 + .../src/index.ts:Zone.Identifier | 0 packages/plugin-coinmarketcap/src/types.ts | 28 + .../src/types.ts:Zone.Identifier | 0 packages/plugin-coinmarketcap/tsconfig.json | 10 + .../tsconfig.json:Zone.Identifier | 0 packages/plugin-coinmarketcap/tsup.config.ts | 19 + .../tsup.config.ts:Zone.Identifier | 0 packages/plugin-goplus/.npmignore | 6 + .../plugin-goplus/.npmignore:Zone.Identifier | 0 packages/plugin-goplus/eslint.config.mjs | 3 + .../eslint.config.mjs:Zone.Identifier | 0 packages/plugin-goplus/package.json | 21 + .../package.json:Zone.Identifier | 0 packages/plugin-goplus/src/index.ts | 17 + .../src/index.ts:Zone.Identifier | 0 .../plugin-goplus/src/lib/GoPlusManage.ts | 130 + .../src/lib/GoPlusManage.ts:Zone.Identifier | 0 .../src/services/GoplusSecurityService.ts | 140 ++ .../GoplusSecurityService.ts:Zone.Identifier | 0 packages/plugin-goplus/src/templates/index.ts | 209 ++ .../src/templates/index.ts:Zone.Identifier | 0 packages/plugin-goplus/tsconfig.json | 11 + .../tsconfig.json:Zone.Identifier | 0 packages/plugin-goplus/tsup.config.ts | 10 + .../tsup.config.ts:Zone.Identifier | 0 packages/plugin-market-analisys/.gitignore | 37 + .../.gitignore:Zone.Identifier | 0 packages/plugin-market-analisys/.npmignore | 6 + .../.npmignore:Zone.Identifier | 0 packages/plugin-market-analisys/README.md | 35 + .../README.md:Zone.Identifier | 0 .../plugin-market-analisys/eslint.config.mjs | 3 + .../eslint.config.mjs:Zone.Identifier | 0 .../plugin-market-analisys/media/image.jpg | Bin 0 -> 160235 bytes .../media/image.jpg:Zone.Identifier | 0 .../media/screenshot.png | Bin 0 -> 436159 bytes .../media/screenshot.png:Zone.Identifier | 0 packages/plugin-market-analisys/package.json | 22 + .../package.json:Zone.Identifier | 0 .../plugin-market-analisys/scripts/install.py | 0 .../scripts/install.py:Zone.Identifier | 0 .../src/actions/tokenOverview.ts | 232 ++ .../actions/tokenOverview.ts:Zone.Identifier | 0 packages/plugin-market-analisys/src/index.ts | 11 + .../src/index.ts:Zone.Identifier | 0 .../providers/twitterTrendingMarketData.ts | 113 + ...itterTrendingMarketData.ts:Zone.Identifier | 0 .../src/tests/birdeye.test.ts | 77 + .../src/tests/birdeye.test.ts:Zone.Identifier | 0 .../src/utils/birdeye.ts | 174 ++ .../src/utils/birdeye.ts:Zone.Identifier | 0 packages/plugin-market-analisys/tsconfig.json | 13 + .../tsconfig.json:Zone.Identifier | 0 .../plugin-market-analisys/tsup.config.ts | 23 + .../tsup.config.ts:Zone.Identifier | 0 pnpm-lock.yaml | 2157 +++++++++++------ 79 files changed, 3314 insertions(+), 710 deletions(-) create mode 100644 packages/plugin-coinmarketcap/README.md create mode 100644 packages/plugin-coinmarketcap/README.md:Zone.Identifier create mode 100644 packages/plugin-coinmarketcap/package.json create mode 100644 packages/plugin-coinmarketcap/package.json:Zone.Identifier create mode 100644 packages/plugin-coinmarketcap/src/actions/getPrice/examples.ts create mode 100644 packages/plugin-coinmarketcap/src/actions/getPrice/examples.ts:Zone.Identifier create mode 100644 packages/plugin-coinmarketcap/src/actions/getPrice/index.ts create mode 100644 packages/plugin-coinmarketcap/src/actions/getPrice/index.ts:Zone.Identifier create mode 100644 packages/plugin-coinmarketcap/src/actions/getPrice/service.ts create mode 100644 packages/plugin-coinmarketcap/src/actions/getPrice/service.ts:Zone.Identifier create mode 100644 packages/plugin-coinmarketcap/src/actions/getPrice/template.ts create mode 100644 packages/plugin-coinmarketcap/src/actions/getPrice/template.ts:Zone.Identifier create mode 100644 packages/plugin-coinmarketcap/src/actions/getPrice/types.ts create mode 100644 packages/plugin-coinmarketcap/src/actions/getPrice/types.ts:Zone.Identifier create mode 100644 packages/plugin-coinmarketcap/src/actions/getPrice/validation.ts create mode 100644 packages/plugin-coinmarketcap/src/actions/getPrice/validation.ts:Zone.Identifier create mode 100644 packages/plugin-coinmarketcap/src/environment.ts create mode 100644 packages/plugin-coinmarketcap/src/environment.ts:Zone.Identifier create mode 100644 packages/plugin-coinmarketcap/src/index.ts create mode 100644 packages/plugin-coinmarketcap/src/index.ts:Zone.Identifier create mode 100644 packages/plugin-coinmarketcap/src/types.ts create mode 100644 packages/plugin-coinmarketcap/src/types.ts:Zone.Identifier create mode 100644 packages/plugin-coinmarketcap/tsconfig.json create mode 100644 packages/plugin-coinmarketcap/tsconfig.json:Zone.Identifier create mode 100644 packages/plugin-coinmarketcap/tsup.config.ts create mode 100644 packages/plugin-coinmarketcap/tsup.config.ts:Zone.Identifier create mode 100644 packages/plugin-goplus/.npmignore create mode 100644 packages/plugin-goplus/.npmignore:Zone.Identifier create mode 100644 packages/plugin-goplus/eslint.config.mjs create mode 100644 packages/plugin-goplus/eslint.config.mjs:Zone.Identifier create mode 100644 packages/plugin-goplus/package.json create mode 100644 packages/plugin-goplus/package.json:Zone.Identifier create mode 100644 packages/plugin-goplus/src/index.ts create mode 100644 packages/plugin-goplus/src/index.ts:Zone.Identifier create mode 100644 packages/plugin-goplus/src/lib/GoPlusManage.ts create mode 100644 packages/plugin-goplus/src/lib/GoPlusManage.ts:Zone.Identifier create mode 100644 packages/plugin-goplus/src/services/GoplusSecurityService.ts create mode 100644 packages/plugin-goplus/src/services/GoplusSecurityService.ts:Zone.Identifier create mode 100644 packages/plugin-goplus/src/templates/index.ts create mode 100644 packages/plugin-goplus/src/templates/index.ts:Zone.Identifier create mode 100644 packages/plugin-goplus/tsconfig.json create mode 100644 packages/plugin-goplus/tsconfig.json:Zone.Identifier create mode 100644 packages/plugin-goplus/tsup.config.ts create mode 100644 packages/plugin-goplus/tsup.config.ts:Zone.Identifier create mode 100644 packages/plugin-market-analisys/.gitignore create mode 100644 packages/plugin-market-analisys/.gitignore:Zone.Identifier create mode 100644 packages/plugin-market-analisys/.npmignore create mode 100644 packages/plugin-market-analisys/.npmignore:Zone.Identifier create mode 100644 packages/plugin-market-analisys/README.md create mode 100644 packages/plugin-market-analisys/README.md:Zone.Identifier create mode 100644 packages/plugin-market-analisys/eslint.config.mjs create mode 100644 packages/plugin-market-analisys/eslint.config.mjs:Zone.Identifier create mode 100644 packages/plugin-market-analisys/media/image.jpg create mode 100644 packages/plugin-market-analisys/media/image.jpg:Zone.Identifier create mode 100644 packages/plugin-market-analisys/media/screenshot.png create mode 100644 packages/plugin-market-analisys/media/screenshot.png:Zone.Identifier create mode 100644 packages/plugin-market-analisys/package.json create mode 100644 packages/plugin-market-analisys/package.json:Zone.Identifier create mode 100644 packages/plugin-market-analisys/scripts/install.py create mode 100644 packages/plugin-market-analisys/scripts/install.py:Zone.Identifier create mode 100644 packages/plugin-market-analisys/src/actions/tokenOverview.ts create mode 100644 packages/plugin-market-analisys/src/actions/tokenOverview.ts:Zone.Identifier create mode 100644 packages/plugin-market-analisys/src/index.ts create mode 100644 packages/plugin-market-analisys/src/index.ts:Zone.Identifier create mode 100644 packages/plugin-market-analisys/src/providers/twitterTrendingMarketData.ts create mode 100644 packages/plugin-market-analisys/src/providers/twitterTrendingMarketData.ts:Zone.Identifier create mode 100644 packages/plugin-market-analisys/src/tests/birdeye.test.ts create mode 100644 packages/plugin-market-analisys/src/tests/birdeye.test.ts:Zone.Identifier create mode 100644 packages/plugin-market-analisys/src/utils/birdeye.ts create mode 100644 packages/plugin-market-analisys/src/utils/birdeye.ts:Zone.Identifier create mode 100644 packages/plugin-market-analisys/tsconfig.json create mode 100644 packages/plugin-market-analisys/tsconfig.json:Zone.Identifier create mode 100644 packages/plugin-market-analisys/tsup.config.ts create mode 100644 packages/plugin-market-analisys/tsup.config.ts:Zone.Identifier diff --git a/agent/package.json b/agent/package.json index f4fa0f33e03..e643528fae6 100644 --- a/agent/package.json +++ b/agent/package.json @@ -19,6 +19,8 @@ }, "dependencies": { "@elizaos/adapter-postgres": "workspace:*", + "@elizaos/plugin-coinmarketcap": "workspace:*", + "@elizaos/plugin-goplus": "workspace:*", "@elizaos/adapter-redis": "workspace:*", "@elizaos/adapter-sqlite": "workspace:*", "@elizaos/client-auto": "workspace:*", @@ -62,6 +64,7 @@ "@elizaos/plugin-avalanche": "workspace:*", "@elizaos/plugin-web-search": "workspace:*", "readline": "1.3.0", + "@ethosdao/plugin-market-analisys": "workspace:*", "ws": "8.18.0", "yargs": "17.7.2" }, diff --git a/agent/src/index.ts b/agent/src/index.ts index 4d43118d1ef..48298ac2d6e 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -26,7 +26,7 @@ import { ModelProviderName, settings, stringToUuid, - validateCharacterConfig + validateCharacterConfig, } from "@elizaos/core"; import { zgPlugin } from "@elizaos/plugin-0g"; import { bootstrapPlugin } from "@elizaos/plugin-bootstrap"; @@ -45,12 +45,14 @@ import { tradePlugin, webhookPlugin, } from "@elizaos/plugin-coinbase"; +import { coinmarketcapPlugin } from "@elizaos/plugin-coinmarketcap"; import { confluxPlugin } from "@elizaos/plugin-conflux"; import { cronosZkEVMPlugin } from "@elizaos/plugin-cronoszkevm"; import { echoChamberPlugin } from "@elizaos/plugin-echochambers"; import { evmPlugin } from "@elizaos/plugin-evm"; import { flowPlugin } from "@elizaos/plugin-flow"; import { fuelPlugin } from "@elizaos/plugin-fuel"; +import { goplusPlugin } from "@elizaos/plugin-goplus"; import { imageGenerationPlugin } from "@elizaos/plugin-image-generation"; import { multiversxPlugin } from "@elizaos/plugin-multiversx"; import { nearPlugin } from "@elizaos/plugin-near"; @@ -530,7 +532,10 @@ export async function createAgent( ? confluxPlugin : null, nodePlugin, - getSecret(character, "TAVILY_API_KEY") || getSecret(character, "SERPER_API_KEY") ? webSearchPlugin : null, + getSecret(character, "TAVILY_API_KEY") || + getSecret(character, "SERPER_API_KEY") + ? webSearchPlugin + : null, getSecret(character, "SOLANA_PUBLIC_KEY") || (getSecret(character, "WALLET_PUBLIC_KEY") && !getSecret(character, "WALLET_PUBLIC_KEY")?.startsWith("0x")) @@ -557,6 +562,10 @@ export async function createAgent( ? nftGenerationPlugin : null, getSecret(character, "ZEROG_PRIVATE_KEY") ? zgPlugin : null, + goplusPlugin, + getSecret(character, "COINMARKETCAP_API_KEY") + ? coinmarketcapPlugin + : null, getSecret(character, "COINBASE_COMMERCE_KEY") ? coinbaseCommercePlugin : null, diff --git a/package.json b/package.json index 5bd706ecced..51c94937d6a 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,8 @@ "@0glabs/0g-ts-sdk": "0.2.1", "@coinbase/coinbase-sdk": "0.10.0", "@deepgram/sdk": "^3.9.0", + "@glacier-network/client": "^0.2.1", + "@glacier-network/elizaos-adapter": "0.0.1-alpha.1", "@vitest/eslint-plugin": "1.0.1", "amqplib": "0.10.5", "axios": "^1.7.9", diff --git a/packages/core/src/context.ts b/packages/core/src/context.ts index a682e6794c8..5527cd26523 100644 --- a/packages/core/src/context.ts +++ b/packages/core/src/context.ts @@ -1,6 +1,6 @@ import handlebars from "handlebars"; -import { type State } from "./types.ts"; import { names, uniqueNamesGenerator } from "unique-names-generator"; +import { type State } from "./types.ts"; /** * Composes a context string by replacing placeholders in a template with corresponding values from the state. @@ -45,6 +45,7 @@ export const composeContext = ({ const key = match.replace(/{{|}}/g, ""); return state[key] ?? ""; }); + //console.log('DEBUG OUT',out) return out; }; diff --git a/packages/plugin-coinmarketcap/README.md b/packages/plugin-coinmarketcap/README.md new file mode 100644 index 00000000000..9c042d9e576 --- /dev/null +++ b/packages/plugin-coinmarketcap/README.md @@ -0,0 +1,127 @@ +# @elizaos/plugin-coinmarketcap + +A plugin for Eliza that enables cryptocurrency price checking using the CoinMarketCap API. + +## Features + +- Real-time cryptocurrency price checking +- Support for multiple cryptocurrencies (BTC, ETH, SOL, etc.) +- Currency conversion (USD, EUR, etc.) +- Detailed price and market data +- Natural language processing for price queries + +## Installation + +```bash +npm install @elizaos/plugin-coinmarketcap +``` + +## Configuration + +1. Get your API key from [CoinMarketCap](https://pro.coinmarketcap.com) + +2. Set up your environment variables: + +```bash +COINMARKETCAP_API_KEY=your_api_key +``` + +3. Register the plugin in your Eliza configuration: + +```typescript +import { CoinMarketCapPlugin } from "@elizaos/plugin-coinmarketcap"; + +// In your Eliza configuration +plugins: [ + new CoinMarketCapPlugin(), + // ... other plugins +]; +``` + +## Usage + +The plugin responds to natural language queries about cryptocurrency prices. Here are some examples: + +```plaintext +"What's the current price of Bitcoin?" +"Show me ETH price in USD" +"Get the price of SOL" +``` + +### Supported Cryptocurrencies + +The plugin supports major cryptocurrencies including: + +- Bitcoin (BTC) +- Ethereum (ETH) +- Solana (SOL) +- USD Coin (USDC) +- And many more... + +### Available Actions + +#### GET_PRICE + +Fetches the current price of a cryptocurrency. + +```typescript +// Example response format +{ + symbol: "BTC", + price: 50000.00, + currency: "USD", + marketCap: 1000000000000, + volume24h: 50000000000, + percentChange24h: 2.5 +} +``` + +## API Reference + +### Environment Variables + +| Variable | Description | Required | +| --------------------- | -------------------------- | -------- | +| COINMARKETCAP_API_KEY | Your CoinMarketCap API key | Yes | + +### Types + +```typescript +interface PriceData { + price: number; + marketCap: number; + volume24h: number; + percentChange24h: number; +} + +interface GetPriceContent { + symbol: string; + currency: string; +} +``` + +## Error Handling + +The plugin includes comprehensive error handling for: + +- Invalid API keys +- Rate limiting +- Network timeouts +- Invalid cryptocurrency symbols +- Unsupported currencies + +## Rate Limits + +CoinMarketCap API has different rate limits based on your subscription plan. Please refer to [CoinMarketCap's pricing page](https://coinmarketcap.com/api/pricing/) for detailed information. + +## Support + +For support, please open an issue in the repository or reach out to the maintainers: + +- Discord: 0xspit + +## Links + +- [CoinMarketCap API Documentation](https://coinmarketcap.com/api/documentation/v1/) + +- [GitHub Repository](https://github.com/elizaos/eliza/tree/main/packages/plugin-coinmarketcap) diff --git a/packages/plugin-coinmarketcap/README.md:Zone.Identifier b/packages/plugin-coinmarketcap/README.md:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-coinmarketcap/package.json b/packages/plugin-coinmarketcap/package.json new file mode 100644 index 00000000000..0d537ed9a18 --- /dev/null +++ b/packages/plugin-coinmarketcap/package.json @@ -0,0 +1,19 @@ +{ + "name": "@elizaos/plugin-coinmarketcap", + "version": "0.1.7-alpha.2", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "^0.1.7", + "axios": "^1.6.7", + "zod": "^3.22.4" + }, + "devDependencies": { + "tsup": "^8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch" + } +} \ No newline at end of file diff --git a/packages/plugin-coinmarketcap/package.json:Zone.Identifier b/packages/plugin-coinmarketcap/package.json:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-coinmarketcap/src/actions/getPrice/examples.ts b/packages/plugin-coinmarketcap/src/actions/getPrice/examples.ts new file mode 100644 index 00000000000..5a6713b566f --- /dev/null +++ b/packages/plugin-coinmarketcap/src/actions/getPrice/examples.ts @@ -0,0 +1,46 @@ +import { ActionExample } from "@elizaos/core"; + +export const priceExamples: ActionExample[][] = [ + [ + { + user: "{{user1}}", + content: { + text: "What's the current price of Bitcoin?", + }, + }, + { + user: "{{agent}}", + content: { + text: "Let me check the current Bitcoin price for you.", + action: "GET_PRICE", + }, + }, + { + user: "{{agent}}", + content: { + text: "The current price of BTC is 65,432.21 USD", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Check ETH price in EUR", + }, + }, + { + user: "{{agent}}", + content: { + text: "I'll check the current Ethereum price in EUR.", + action: "GET_PRICE", + }, + }, + { + user: "{{agent}}", + content: { + text: "The current price of ETH is 2,345.67 EUR", + }, + }, + ], +]; diff --git a/packages/plugin-coinmarketcap/src/actions/getPrice/examples.ts:Zone.Identifier b/packages/plugin-coinmarketcap/src/actions/getPrice/examples.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-coinmarketcap/src/actions/getPrice/index.ts b/packages/plugin-coinmarketcap/src/actions/getPrice/index.ts new file mode 100644 index 00000000000..61ca090c021 --- /dev/null +++ b/packages/plugin-coinmarketcap/src/actions/getPrice/index.ts @@ -0,0 +1,118 @@ +import { + composeContext, + elizaLogger, + generateObjectDeprecated, + HandlerCallback, + IAgentRuntime, + Memory, + ModelClass, + State, + type Action, +} from "@elizaos/core"; +import { validateCoinMarketCapConfig } from "../../environment"; +import { priceExamples } from "./examples"; +import { createPriceService } from "./service"; +import { getPriceTemplate } from "./template"; +import { GetPriceContent } from "./types"; +import { isGetPriceContent } from "./validation"; + +export default { + name: "GET_PRICE", + similes: [ + "CHECK_PRICE", + "PRICE_CHECK", + "GET_CRYPTO_PRICE", + "CHECK_CRYPTO_PRICE", + "GET_TOKEN_PRICE", + "CHECK_TOKEN_PRICE", + ], + validate: async (runtime: IAgentRuntime, message: Memory) => { + await validateCoinMarketCapConfig(runtime); + return true; + }, + description: "Get the current price of a cryptocurrency from CoinMarketCap", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: { [key: string]: unknown }, + callback?: HandlerCallback + ): Promise<boolean> => { + elizaLogger.log("Starting CoinMarketCap GET_PRICE handler..."); + + // Initialize or update state + if (!state) { + state = (await runtime.composeState(message)) as State; + } else { + state = await runtime.updateRecentMessageState(state); + } + + try { + // Compose and generate price check content + const priceContext = composeContext({ + state, + template: getPriceTemplate, + }); + + const content = (await generateObjectDeprecated({ + runtime, + context: priceContext, + modelClass: ModelClass.SMALL, + })) as unknown as GetPriceContent; + + // Validate content + if (!isGetPriceContent(content)) { + throw new Error("Invalid price check content"); + } + + // Get price from CoinMarketCap + const config = await validateCoinMarketCapConfig(runtime); + + const priceService = createPriceService( + config.COINMARKETCAP_API_KEY + ); + + try { + const priceData = await priceService.getPrice( + content.symbol, + content.currency + ); + elizaLogger.success( + `Price retrieved successfully! ${content.symbol}: ${priceData.price} ${content.currency.toUpperCase()}` + ); + + if (callback) { + callback({ + text: `The current price of ${content.symbol} is ${priceData.price} ${content.currency.toUpperCase()}`, + content: { + symbol: content.symbol, + currency: content.currency, + ...priceData, + }, + }); + } + + return true; + } catch (error) { + elizaLogger.error("Error in GET_PRICE handler:", error); + if (callback) { + callback({ + text: `Error fetching price: ${error.message}`, + content: { error: error.message }, + }); + } + return false; + } + } catch (error) { + elizaLogger.error("Error in GET_PRICE handler:", error); + if (callback) { + callback({ + text: `Error fetching price: ${error.message}`, + content: { error: error.message }, + }); + } + return false; + } + }, + examples: priceExamples, +} as Action; diff --git a/packages/plugin-coinmarketcap/src/actions/getPrice/index.ts:Zone.Identifier b/packages/plugin-coinmarketcap/src/actions/getPrice/index.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-coinmarketcap/src/actions/getPrice/service.ts b/packages/plugin-coinmarketcap/src/actions/getPrice/service.ts new file mode 100644 index 00000000000..2b2d9170926 --- /dev/null +++ b/packages/plugin-coinmarketcap/src/actions/getPrice/service.ts @@ -0,0 +1,71 @@ +import axios from "axios"; +import { ApiResponse, PriceData } from "./types"; + +const BASE_URL = "https://pro-api.coinmarketcap.com/v1"; + +export const createPriceService = (apiKey: string) => { + const client = axios.create({ + baseURL: BASE_URL, + headers: { + "X-CMC_PRO_API_KEY": apiKey, + Accept: "application/json", + }, + }); + + const getPrice = async ( + symbol: string, + currency: string + ): Promise<PriceData> => { + const normalizedSymbol = symbol.toUpperCase().trim(); + const normalizedCurrency = currency.toUpperCase().trim(); + + try { + const response = await client.get<ApiResponse>( + "/cryptocurrency/quotes/latest", + { + params: { + symbol: normalizedSymbol, + convert: normalizedCurrency, + }, + } + ); + + console.log( + "API Response:", + JSON.stringify(response.data, null, 2) + ); + + const symbolData = response.data.data[normalizedSymbol]; + if (!symbolData) { + throw new Error( + `No data found for symbol: ${normalizedSymbol}` + ); + } + + const quoteData = symbolData.quote[normalizedCurrency]; + if (!quoteData) { + throw new Error( + `No quote data found for currency: ${normalizedCurrency}` + ); + } + + return { + price: quoteData.price, + marketCap: quoteData.market_cap, + volume24h: quoteData.volume_24h, + percentChange24h: quoteData.percent_change_24h, + }; + } catch (error) { + if (axios.isAxiosError(error)) { + const errorMessage = + error.response?.data?.status?.error_message || + error.message; + console.error("API Error:", errorMessage); + throw new Error(`API Error: ${errorMessage}`); + } + throw error; + } + }; + + return { getPrice }; +}; diff --git a/packages/plugin-coinmarketcap/src/actions/getPrice/service.ts:Zone.Identifier b/packages/plugin-coinmarketcap/src/actions/getPrice/service.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-coinmarketcap/src/actions/getPrice/template.ts b/packages/plugin-coinmarketcap/src/actions/getPrice/template.ts new file mode 100644 index 00000000000..46e439a2356 --- /dev/null +++ b/packages/plugin-coinmarketcap/src/actions/getPrice/template.ts @@ -0,0 +1,27 @@ +export const getPriceTemplate = `Respond with a JSON object containing BOTH symbol and currency. Currency must default to "USD" if not specified. + +Here are the cryptocurrency symbol mappings: +- bitcoin/btc -> BTC +- ethereum/eth -> ETH +- solana/sol -> SOL +- cardano/ada -> ADA +- ripple/xrp -> XRP +- dogecoin/doge -> DOGE +- polkadot/dot -> DOT +- usdc -> USDC +- tether/usdt -> USDT + +IMPORTANT: Response must ALWAYS include both "symbol" and "currency" fields. + +Example response: +\`\`\`json +{ + "symbol": "BTC", + "currency": "USD" +} +\`\`\` + +{{recentMessages}} + +Extract the cryptocurrency from the most recent message. Always include currency (default "USD"). +Respond with a JSON markdown block containing both symbol and currency.`; diff --git a/packages/plugin-coinmarketcap/src/actions/getPrice/template.ts:Zone.Identifier b/packages/plugin-coinmarketcap/src/actions/getPrice/template.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-coinmarketcap/src/actions/getPrice/types.ts b/packages/plugin-coinmarketcap/src/actions/getPrice/types.ts new file mode 100644 index 00000000000..7b84dde3420 --- /dev/null +++ b/packages/plugin-coinmarketcap/src/actions/getPrice/types.ts @@ -0,0 +1,28 @@ +import { Content } from "@elizaos/core"; + +export interface GetPriceContent extends Content { + symbol: string; + currency: string; +} + +export interface PriceData { + price: number; + marketCap: number; + volume24h: number; + percentChange24h: number; +} + +export interface ApiResponse { + data: { + [symbol: string]: { + quote: { + [currency: string]: { + price: number; + market_cap: number; + volume_24h: number; + percent_change_24h: number; + }; + }; + }; + }; +} diff --git a/packages/plugin-coinmarketcap/src/actions/getPrice/types.ts:Zone.Identifier b/packages/plugin-coinmarketcap/src/actions/getPrice/types.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-coinmarketcap/src/actions/getPrice/validation.ts b/packages/plugin-coinmarketcap/src/actions/getPrice/validation.ts new file mode 100644 index 00000000000..16bbf67d617 --- /dev/null +++ b/packages/plugin-coinmarketcap/src/actions/getPrice/validation.ts @@ -0,0 +1,16 @@ +import { z } from "zod"; +import { GetPriceContent } from "./types"; + +export const GetPriceSchema = z.object({ + symbol: z.string(), + currency: z.string().default("USD"), +}); + +export function isGetPriceContent( + content: GetPriceContent +): content is GetPriceContent { + return ( + typeof content.symbol === "string" && + typeof content.currency === "string" + ); +} diff --git a/packages/plugin-coinmarketcap/src/actions/getPrice/validation.ts:Zone.Identifier b/packages/plugin-coinmarketcap/src/actions/getPrice/validation.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-coinmarketcap/src/environment.ts b/packages/plugin-coinmarketcap/src/environment.ts new file mode 100644 index 00000000000..d21d13bfdf7 --- /dev/null +++ b/packages/plugin-coinmarketcap/src/environment.ts @@ -0,0 +1,32 @@ +import { IAgentRuntime } from "@elizaos/core"; +import { z } from "zod"; + +export const coinmarketcapEnvSchema = z.object({ + COINMARKETCAP_API_KEY: z + .string() + .min(1, "CoinMarketCap API key is required"), +}); + +export type CoinMarketCapConfig = z.infer<typeof coinmarketcapEnvSchema>; + +export async function validateCoinMarketCapConfig( + runtime: IAgentRuntime +): Promise<CoinMarketCapConfig> { + try { + const config = { + COINMARKETCAP_API_KEY: runtime.getSetting("COINMARKETCAP_API_KEY"), + }; + + return coinmarketcapEnvSchema.parse(config); + } catch (error) { + if (error instanceof z.ZodError) { + const errorMessages = error.errors + .map((err) => `${err.path.join(".")}: ${err.message}`) + .join("\n"); + throw new Error( + `CoinMarketCap configuration validation failed:\n${errorMessages}` + ); + } + throw error; + } +} diff --git a/packages/plugin-coinmarketcap/src/environment.ts:Zone.Identifier b/packages/plugin-coinmarketcap/src/environment.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-coinmarketcap/src/index.ts b/packages/plugin-coinmarketcap/src/index.ts new file mode 100644 index 00000000000..5da30cf5abe --- /dev/null +++ b/packages/plugin-coinmarketcap/src/index.ts @@ -0,0 +1,12 @@ +import { Plugin } from "@elizaos/core"; +import getPrice from "./actions/getPrice"; + +export const coinmarketcapPlugin: Plugin = { + name: "coinmarketcap", + description: "CoinMarketCap Plugin for Eliza", + actions: [getPrice], + evaluators: [], + providers: [], +}; + +export default coinmarketcapPlugin; diff --git a/packages/plugin-coinmarketcap/src/index.ts:Zone.Identifier b/packages/plugin-coinmarketcap/src/index.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-coinmarketcap/src/types.ts b/packages/plugin-coinmarketcap/src/types.ts new file mode 100644 index 00000000000..7b84dde3420 --- /dev/null +++ b/packages/plugin-coinmarketcap/src/types.ts @@ -0,0 +1,28 @@ +import { Content } from "@elizaos/core"; + +export interface GetPriceContent extends Content { + symbol: string; + currency: string; +} + +export interface PriceData { + price: number; + marketCap: number; + volume24h: number; + percentChange24h: number; +} + +export interface ApiResponse { + data: { + [symbol: string]: { + quote: { + [currency: string]: { + price: number; + market_cap: number; + volume_24h: number; + percent_change_24h: number; + }; + }; + }; + }; +} diff --git a/packages/plugin-coinmarketcap/src/types.ts:Zone.Identifier b/packages/plugin-coinmarketcap/src/types.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-coinmarketcap/tsconfig.json b/packages/plugin-coinmarketcap/tsconfig.json new file mode 100644 index 00000000000..3b0a93b56e6 --- /dev/null +++ b/packages/plugin-coinmarketcap/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src" + }, + "include": [ + "src/**/*.ts" + ] +} \ No newline at end of file diff --git a/packages/plugin-coinmarketcap/tsconfig.json:Zone.Identifier b/packages/plugin-coinmarketcap/tsconfig.json:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-coinmarketcap/tsup.config.ts b/packages/plugin-coinmarketcap/tsup.config.ts new file mode 100644 index 00000000000..58ed52c4990 --- /dev/null +++ b/packages/plugin-coinmarketcap/tsup.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], + external: [ + "dotenv", + "fs", + "path", + "@reflink/reflink", + "@node-llama-cpp", + "https", + "http", + "agentkeepalive", + ], +}); diff --git a/packages/plugin-coinmarketcap/tsup.config.ts:Zone.Identifier b/packages/plugin-coinmarketcap/tsup.config.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-goplus/.npmignore b/packages/plugin-goplus/.npmignore new file mode 100644 index 00000000000..078562eceab --- /dev/null +++ b/packages/plugin-goplus/.npmignore @@ -0,0 +1,6 @@ +* + +!dist/** +!package.json +!readme.md +!tsup.config.ts \ No newline at end of file diff --git a/packages/plugin-goplus/.npmignore:Zone.Identifier b/packages/plugin-goplus/.npmignore:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-goplus/eslint.config.mjs b/packages/plugin-goplus/eslint.config.mjs new file mode 100644 index 00000000000..92fe5bbebef --- /dev/null +++ b/packages/plugin-goplus/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-goplus/eslint.config.mjs:Zone.Identifier b/packages/plugin-goplus/eslint.config.mjs:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-goplus/package.json b/packages/plugin-goplus/package.json new file mode 100644 index 00000000000..d5968b1c873 --- /dev/null +++ b/packages/plugin-goplus/package.json @@ -0,0 +1,21 @@ +{ + "name": "@elizaos/plugin-goplus", + "version": "0.1.7-alpha.2", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "^0.1.7", + "tsup": "^8.3.5", + "ws": "^8.18.0" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsx watch src/index.ts", + "lint": "eslint --fix --cache ." + }, + "devDependencies": { + "@types/ws": "^8.5.13", + "tsx": "^4.19.2" + } +} diff --git a/packages/plugin-goplus/package.json:Zone.Identifier b/packages/plugin-goplus/package.json:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-goplus/src/index.ts b/packages/plugin-goplus/src/index.ts new file mode 100644 index 00000000000..3af4f756270 --- /dev/null +++ b/packages/plugin-goplus/src/index.ts @@ -0,0 +1,17 @@ +import { Plugin } from "@elizaos/core"; +import GoplusSecurityService from "./services/GoplusSecurityService"; + +export * from "./services/GoplusSecurityService"; + + +export const goplusPlugin: Plugin = { + name: "goplus", + description: + "goplus Plugin for Eliza - Enables on-chain security checks", + actions: [], + evaluators: [], + providers: [], + services: [new GoplusSecurityService()], +}; + +export default goplusPlugin; diff --git a/packages/plugin-goplus/src/index.ts:Zone.Identifier b/packages/plugin-goplus/src/index.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-goplus/src/lib/GoPlusManage.ts b/packages/plugin-goplus/src/lib/GoPlusManage.ts new file mode 100644 index 00000000000..1406e167ff4 --- /dev/null +++ b/packages/plugin-goplus/src/lib/GoPlusManage.ts @@ -0,0 +1,130 @@ + + +export const GoPlusType = { + EVMTOKEN_SECURITY_CHECK: "EVMTOKEN_SECURITY_CHECK", + SOLTOKEN_SECURITY_CHECK: "SOLTOKEN_SECURITY_CHECK", + SUITOKEN_SECURITY_CHECK: "SUITOKEN_SECURITY_CHECK", + RUGPULL_SECURITY_CHECK: "RUGPULL_SECURITY_CHECK", + NFT_SECURITY_CHECK: "NFT_SECURITY_CHECK", + ADRESS_SECURITY_CHECK: "ADRESS_SECURITY_CHECK", + APPROVAL_SECURITY_CHECK: "APPROVAL_SECURITY_CHECK", + ACCOUNT_ERC20_SECURITY_CHECK: "ACCOUNT_ERC20_SECURITY_CHECK", + ACCOUNT_ERC721_SECURITY_CHECK: "ACCOUNT_ERC721_SECURITY_CHECK", + ACCOUNT_ERC1155_SECURITY_CHECK: "ACCOUNT_ERC1155_SECURITY_CHECK", + SIGNATURE_SECURITY_CHECK: "SIGNATURE_SECURITY_CHECK", + URL_SECURITY_CHECK: "URL_SECURITY_CHECK", +} + +export type GoPlusType = (typeof GoPlusType)[keyof typeof GoPlusType] + +export type GoPlusParamType = { + "type": GoPlusType, + "network"?: string, + "token"?: string, + "contract"?: string, + "wallet"?: string, + "url"?: string, + "data"?: string, +} + +export class GoPlusManage { + private apiKey: string; + + constructor(apiKey: string = null) { + this.apiKey = apiKey; + } + + async requestGet(api: string) { + const myHeaders = new Headers(); + if (this.apiKey) { + myHeaders.append("Authorization", this.apiKey); + } + const url = `https://api.gopluslabs.io/${api}` + const res = await fetch(url, { + method: "GET", + headers: myHeaders, + redirect: "follow" + }) + + return await res.json(); + } + + async tokenSecurity(chainId: string, address: string) { + const api = `api/v1/token_security/${chainId}?contract_addresses=${address}`; + return await this.requestGet(api) + } + + async rugpullDetection(chainId: string, address: string) { + const api = `api/v1/rugpull_detecting/${chainId}?contract_addresses=${address}`; + return await this.requestGet(api) + } + + async solanaTokenSecurityUsingGET(address: string) { + const api = `api/v1/solana/token_security?contract_addresses=${address}`; + return await this.requestGet(api) + } + + async suiTokenSecurityUsingGET(address: string) { + const api = `api/v1/sui/token_security?contract_addresses=${address}`; + return await this.requestGet(api) + } + + async nftSecurity(chainId: string, address: string) { + const api = `api/v1/nft_security/${chainId}?contract_addresses=${address}`; + return await this.requestGet(api) + } + + async addressSecurity(address: string) { + const api = `api/v1/address_security/${address}`; + return await this.requestGet(api) + } + + async approvalSecurity(chainId: string, contract: string) { + const api = `api/v1/approval_security/${chainId}?contract_addresses=${contract}`; + return await this.requestGet(api) + } + + async erc20ApprovalSecurity(chainId: string, wallet: string) { + const api = `api/v2/token_approval_security/${chainId}?addresses=${wallet}`; + return await this.requestGet(api) + } + + async erc721ApprovalSecurity(chainId: string, wallet: string) { + const api = `api/v2/nft721_approval_security/${chainId}?addresses=${wallet}`; + return await this.requestGet(api) + } + + async erc1155ApprovalSecurity(chainId: string, wallet: string) { + const api = `api/v2/nft1155_approval_security/${chainId}?addresses=${wallet}`; + return await this.requestGet(api) + } + + async inputDecode(chainId: string, data: string) { + const body = JSON.stringify({ + chain_id: chainId, + data: data, + }) + const res = await fetch("https://api.gopluslabs.io/api/v1/abi/input_decode", { + "headers": { + "accept": "*/*", + "accept-language": "en,zh-CN;q=0.9,zh;q=0.8", + "content-type": "application/json" + }, + "body": body, + "method": "POST" + }); + return await res.json(); + } + + async dappSecurityAndPhishingSite(url: string) { + const api = `api/v1/dapp_security?url=${url}`; + const data1 = await this.requestGet(api) + + const api2 = `api/v1/phishing_site?url=${url}`; + const data2 = await this.requestGet(api2) + return { + data1, + data2 + } + } +} \ No newline at end of file diff --git a/packages/plugin-goplus/src/lib/GoPlusManage.ts:Zone.Identifier b/packages/plugin-goplus/src/lib/GoPlusManage.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-goplus/src/services/GoplusSecurityService.ts b/packages/plugin-goplus/src/services/GoplusSecurityService.ts new file mode 100644 index 00000000000..559b5ecdd7c --- /dev/null +++ b/packages/plugin-goplus/src/services/GoplusSecurityService.ts @@ -0,0 +1,140 @@ +import { + IAgentRuntime, + ModelClass, + Service, + ServiceType, + elizaLogger, + generateObjectDeprecated, + generateText, +} from "@elizaos/core"; +import { GoPlusManage, GoPlusParamType, GoPlusType } from "../lib/GoPlusManage"; +import { requestPrompt, responsePrompt } from "../templates"; + +export interface IGoplusSecurityService extends Service { + check(text: string): Promise<string>; +} + +export class GoplusSecurityService + extends Service + implements IGoplusSecurityService +{ + private apiKey: string; + private runtime: IAgentRuntime; + getInstance(): GoplusSecurityService { + return this; + } + static get serviceType() { + return "goplus_security" as ServiceType; // ServiceType.GOPLUS_SECURITY; + } + + initialize(runtime: IAgentRuntime): Promise<void> { + this.runtime = runtime; + this.apiKey = runtime.getSetting("GOPLUS_API_KEY"); + return; + } + + /** + * Connect to WebSocket and send a message + */ + async check(text: string): Promise<string> { + try { + elizaLogger.log("check input text", text); + const obj = (await generateObjectDeprecated({ + runtime: this.runtime, + context: requestPrompt(text), + modelClass: ModelClass.SMALL, // gpt-4o-mini + })) as GoPlusParamType; + + elizaLogger.log("check generateObjectDeprecated text", obj); + + const goPlusManage = new GoPlusManage(this.apiKey); + let checkResult: any; + switch (obj.type) { + case GoPlusType.EVMTOKEN_SECURITY_CHECK: + checkResult = await goPlusManage.tokenSecurity( + obj.network, + obj.token + ); + break; + case GoPlusType.SOLTOKEN_SECURITY_CHECK: + checkResult = + await goPlusManage.solanaTokenSecurityUsingGET( + obj.token + ); + break; + case GoPlusType.SUITOKEN_SECURITY_CHECK: + checkResult = await goPlusManage.suiTokenSecurityUsingGET( + obj.token + ); + break; + case GoPlusType.RUGPULL_SECURITY_CHECK: + checkResult = await goPlusManage.rugpullDetection( + obj.network, + obj.contract + ); + break; + case GoPlusType.NFT_SECURITY_CHECK: + checkResult = await goPlusManage.nftSecurity( + obj.network, + obj.token + ); + break; + case GoPlusType.ADRESS_SECURITY_CHECK: + checkResult = await goPlusManage.addressSecurity( + obj.wallet + ); + break; + case GoPlusType.APPROVAL_SECURITY_CHECK: + checkResult = await goPlusManage.approvalSecurity( + obj.network, + obj.contract + ); + break; + case GoPlusType.ACCOUNT_ERC20_SECURITY_CHECK: + checkResult = await goPlusManage.erc20ApprovalSecurity( + obj.network, + obj.wallet + ); + break; + case GoPlusType.ACCOUNT_ERC721_SECURITY_CHECK: + checkResult = await goPlusManage.erc721ApprovalSecurity( + obj.network, + obj.wallet + ); + break; + case GoPlusType.ACCOUNT_ERC1155_SECURITY_CHECK: + checkResult = await goPlusManage.erc1155ApprovalSecurity( + obj.network, + obj.wallet + ); + break; + case GoPlusType.SIGNATURE_SECURITY_CHECK: + checkResult = await goPlusManage.inputDecode( + obj.network, + obj.data + ); + break; + case GoPlusType.URL_SECURITY_CHECK: + checkResult = + await goPlusManage.dappSecurityAndPhishingSite(obj.url); + break; + default: + throw new Error("type is invaild"); + } + + elizaLogger.log("checkResult text", checkResult); + const checkResponse = await generateText({ + runtime: this.runtime, + context: responsePrompt(JSON.stringify(checkResult), text), + modelClass: ModelClass.SMALL, + }); + elizaLogger.log("checkResponse text", checkResponse); + return checkResponse; + } catch (e) { + elizaLogger.error(e); + return "error"; + } + } +} + +export default GoplusSecurityService; diff --git a/packages/plugin-goplus/src/services/GoplusSecurityService.ts:Zone.Identifier b/packages/plugin-goplus/src/services/GoplusSecurityService.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-goplus/src/templates/index.ts b/packages/plugin-goplus/src/templates/index.ts new file mode 100644 index 00000000000..6886211d7f4 --- /dev/null +++ b/packages/plugin-goplus/src/templates/index.ts @@ -0,0 +1,209 @@ +export const requestPrompt = (text:string) => `You are a security action detector for blockchain interactions. Your task is to analyze the user's input text and determine which security checks are needed. + +Text to analyze:""" +${text} +""" +If the user is not sure which network the sent address belongs to, then according to the following logic initially determine which network the user sends the address belongs to. + +Detection Logic: +1. First check if address starts with "0x": + - If yes: + - If length is 42 -> EVM address + - If the address has a non-standard suffix (e.g., " ::s::S "), you may treat the base address (without the suffix) as the -> SUI address. , but the full address including the suffix should be placed in the "token" field. + - If no: + - If length is 44 and starts with letter -> Solana address + +2. If none of the above patterns match: + - -> EVM address +3. If detection is EVM address: + - -> EVM address + +Networks format +EVM: 0x26e550ac11b26f78a04489d5f20f24e3559f7dd9 +Solana: 9DHe3pycTuymFk4H4bbPoAJ4hQrr2kaLDF6J6aAKpump +SUI: 0xea65bb5a79ff34ca83e2995f9ff6edd0887b08da9b45bf2e31f930d3efb82866::s::S + +After determining which action to use, please reply in the json format below the action. + +Available actions: +- [EVMTOKEN_SECURITY_CHECK]: For checking ERC20 token contract security + Description: Security assessment for tokens on EVM-compatible chains (like Ethereum, BSC), including contract risks, permission configurations, transaction mechanisms + Keywords: EVM token, ETH token, BEP20, smart contract, ERC20 security, on-chain token + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "EVMTOKEN_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, ETHW:10001, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Base:8453, Tron:tron, Scroll:534352, opBNB:204, Mantle:5000, ZKFair:42766, Blast:81457, Manta Pacific:169, Berachain Artio Testnet:80085, Merlin:4200, Bitlayer Mainnet:200901, zkLink Nova:810180, X Layer Mainnet:196) +"token": "" , +} +\`\`\` + + +- [SOLTOKEN_SECURITY_CHECK]: For checking SPL token contract security + Description: Security audit for Solana-based tokens, analyzing program authority settings, account states, transfer restrictions and other security factors + Keywords: Solana token, SOL token, SPL token, Solana security, SOL contract + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "SOLTOKEN_SECURITY_CHECK" +"token": "" , +} +\`\`\` + + +- [SUITOKEN_SECURITY_CHECK]: For checking Sui token contract security + Description: Security inspection for tokens on SUI blockchain, examining token contract permissions, transaction restrictions, minting mechanisms and other security configurations + Keywords: SUI token, SUI coins, MOVE token, SUI contract, SUI security + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "SUITOKEN_SECURITY_CHECK" +"token": "" , +} +\`\`\` + + +- [RUGPULL_SECURITY_CHECK]: + Description: Detection of potential rugpull risks in tokens/projects, including contract permissions, liquidity locks, team holdings and other risk factors + Keywords: rugpull risk, token security, project reliability, contract risk, liquidity, team wallet + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "RUGPULL_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, BSC:56) +"contract": "" | null, +} +\`\`\` + + +- [NFT_SECURITY_CHECK] + Description: Security analysis of NFT project smart contracts, including minting mechanisms, trading restrictions, permission settings + Keywords: NFT security, digital collectibles, minting risk, NFT trading, NFT contract + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "NFT_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Base:8453, Mantle:5000) +"token": "" | null, +} +\`\`\` + + +- [ADRESS_SECURITY_CHECK] + Description: Analysis of specific address security status, detecting known malicious addresses, scam addresses or high-risk addresses + Keywords: wallet security, malicious address, scam address, blacklist + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "ADRESS_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Tron:tron, Scroll:534352, opBNB:204, Base:8453, Solana:solana) +"wallet": "" | null, +} +\`\`\` + + +- [APPROVAL_SECURITY_CHECK] + Description: Examination of smart contract approval settings, evaluating risk levels of third-party authorizations + Keywords: approval check, contract authorization, spending approval, approval risk + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "APPROVAL_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, BSC: 56, OKC: 66, Heco: 128, Polygon: 137, Fantom:250, Arbitrum: 42161, Avalanche: 43114) +"contract": "" | null, +} +\`\`\` + + +- [ACCOUNT_ERC20_SECURITY_CHECK] + Description: Security assessment of account-related ERC20 token transactions and holdings + Keywords: ERC20, token account, token security, account detection + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "ACCOUNT_ERC20_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Base:8453, Mantle:5000) +"wallet": "" | null, +} +\`\`\` + + +- [ACCOUNT_ERC721_SECURITY_CHECK] + Description: Security analysis of account's ERC721 NFT assets + Keywords: ERC721, NFT account, NFT assets, collectibles security + Respond with a JSON markdown block containing only the extracted values: +\`\`\`json +{ +"type": "ACCOUNT_ERC721_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Base:8453, Mantle:5000) +"wallet": "" | null, +} +\`\`\` + + +- [ACCOUNT_ERC1155_SECURITY_CHECK] + Description: Security evaluation of account's ERC1155 multi-token standard assets + Keywords: ERC1155, multi-token, hybrid assets, account security + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "ACCOUNT_ERC1155_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Base:8453, Mantle:5000) +"wallet": "" | null, +} +\`\`\` + + +- [SIGNATURE_SECURITY_CHECK] + Description: Verification of signature security, preventing signature fraud risks + Keywords: signature verification, message signing, signature risk, signature fraud + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "SIGNATURE_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum: 1, Cronos:25, BSC: 56, Heco: 128, Polygon: 137, Fantom:250, KCC: 321, Arbitrum: 42161, Avalanche: 43114) +"data": "" | null, +} +\`\`\` + + +- [URL_SECURITY_CHECK] + Description: Detection of known phishing websites, malicious sites or other security risks in URLs + Keywords: link detection, phishing website, malicious URL, website security + Respond with a JSON markdown block containing only the extracted values: +\`\`\`json +{ +"type": "URL_SECURITY_CHECK" +"url": "" | null, +} +\`\`\` + +Extract the necessary information(All fields present in the json are important information) and choose the appropriate action(s) based on the text. Return the JSON response following the format above. +important: do not response anything except json` + + + +export const responsePrompt = (apiresult: string, text:string) => `You are a security action detector for blockchain interactions. Your task is to analyze the security API’s response from GoPlus and summary the API result. +API to analyze:“”" +${apiresult} +“”" +user’s request:“” +${text} +“” +Instructions: +1. **Identify the Action**: Analyze the API response to determine which specific action it relates to. +2. **Extract Relevant Information**: From the action and its parameters, extract and highlight the key details. +3. **Formulate a Clear Response**: Combine the action type, extracted information, and an analysis of the results. Provide a clear, concise response based on the security context. Focus on delivering the most relevant answer without unnecessary detail. +- Only reply with your conclusion. +- Do not discuss the safety aspects of the action; just focus on identifying and pointing out any risks. +- Tailor your response to the user’s request, focusing on their specific query.` \ No newline at end of file diff --git a/packages/plugin-goplus/src/templates/index.ts:Zone.Identifier b/packages/plugin-goplus/src/templates/index.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-goplus/tsconfig.json b/packages/plugin-goplus/tsconfig.json new file mode 100644 index 00000000000..a0a14e0b63d --- /dev/null +++ b/packages/plugin-goplus/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "./src", + "declaration": true + }, + "include": [ + "src" + ] +} \ No newline at end of file diff --git a/packages/plugin-goplus/tsconfig.json:Zone.Identifier b/packages/plugin-goplus/tsconfig.json:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-goplus/tsup.config.ts b/packages/plugin-goplus/tsup.config.ts new file mode 100644 index 00000000000..c7bf2d61a74 --- /dev/null +++ b/packages/plugin-goplus/tsup.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + format: ["esm"], + dts: true, + sourcemap: true, + splitting: false, + clean: true, +}); diff --git a/packages/plugin-goplus/tsup.config.ts:Zone.Identifier b/packages/plugin-goplus/tsup.config.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/.gitignore b/packages/plugin-market-analisys/.gitignore new file mode 100644 index 00000000000..f781f0bc4b3 --- /dev/null +++ b/packages/plugin-market-analisys/.gitignore @@ -0,0 +1,37 @@ +# Node modules +node_modules/ + +# Logs +logs +*.log +npm-debug.log* + +# Build output +dist/ +build/ + +# Dependency directories +jspm_packages/ + +# Optional npm cache directory +.npm/ + +# dotenv environment variable file +.env + +# Turborepo +.turbo/ + +# IDE specific files +.idea/ +.vscode/ +*.sublime-project +*.sublime-workspace + +# Mac system files +.DS_Store + +# Windows system files +Thumbs.db +ehthumbs.db +Icon? diff --git a/packages/plugin-market-analisys/.gitignore:Zone.Identifier b/packages/plugin-market-analisys/.gitignore:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/.npmignore b/packages/plugin-market-analisys/.npmignore new file mode 100644 index 00000000000..078562eceab --- /dev/null +++ b/packages/plugin-market-analisys/.npmignore @@ -0,0 +1,6 @@ +* + +!dist/** +!package.json +!readme.md +!tsup.config.ts \ No newline at end of file diff --git a/packages/plugin-market-analisys/.npmignore:Zone.Identifier b/packages/plugin-market-analisys/.npmignore:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/README.md b/packages/plugin-market-analisys/README.md new file mode 100644 index 00000000000..1c3e1c971bc --- /dev/null +++ b/packages/plugin-market-analisys/README.md @@ -0,0 +1,35 @@ +# @ethosdao/plugin-market-analisys + +<div align="center"> + <img src="./media/image.jpg" alt="market-analisys" width="500"/> + <br> + <br> + <a href="https://ethosdao.ai">🌐 EthosDAO Website</a> + <br> +</div> + +# Description + +This plugin enables your agent to get comprehensive market data for any token using Birdeye API. + +# Actions + +- **tokenOverview**: Provides an overview of a token's market data. + + +# Requirements + +- Birdeye API Key + +# Setup + +1. Navigate your character file and add the `"BIRDEYE_API_KEY"` to the `"secrets"` property. +2. Add "@ethosdao/plugin-market-analisys" to `"dependencies"` property in `eliza/agent/package.json`. +3. Add `import { pluginMarketAnalisys } from "@ethosdao/plugin-market-analisys";` in `eliza/agent/src/index.ts`. +4. Add the following parameter `getSecret(character, "BIRDEYE_API_KEY") ? marketAnalisysPlugin : null,` in the `plugins` array in `eliza/agent/src/index.ts`. + + +# Example + +<img src="./media/screenshot.png" alt="market-analisys" /> + diff --git a/packages/plugin-market-analisys/README.md:Zone.Identifier b/packages/plugin-market-analisys/README.md:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/eslint.config.mjs b/packages/plugin-market-analisys/eslint.config.mjs new file mode 100644 index 00000000000..92fe5bbebef --- /dev/null +++ b/packages/plugin-market-analisys/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-market-analisys/eslint.config.mjs:Zone.Identifier b/packages/plugin-market-analisys/eslint.config.mjs:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/media/image.jpg b/packages/plugin-market-analisys/media/image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b189d14cb1f785e1d6384fcbaa1ecf443eb166cd GIT binary patch literal 160235 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∋AxN{KA%->2 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 literal 0 HcmV?d00001 diff --git a/packages/plugin-market-analisys/media/image.jpg:Zone.Identifier b/packages/plugin-market-analisys/media/image.jpg:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/media/screenshot.png b/packages/plugin-market-analisys/media/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..f59520c6c8e19348953f087128ef050a5bf6cf89 GIT binary patch literal 436159 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�oEmc_4ezRr|;X3 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%0A??d$Q2os$fIFgTTGEF(mZi! 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�@v3LR9m7sFaejE$Bc1N5Oo=NI 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�KYXuQ>n<dlbS*LJ?@9`H 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 XnML09+>tv1yi{&#D3$!{{?q>feoaEE literal 0 HcmV?d00001 diff --git a/packages/plugin-market-analisys/media/screenshot.png:Zone.Identifier b/packages/plugin-market-analisys/media/screenshot.png:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/package.json b/packages/plugin-market-analisys/package.json new file mode 100644 index 00000000000..c4d1db4b176 --- /dev/null +++ b/packages/plugin-market-analisys/package.json @@ -0,0 +1,22 @@ +{ + "name": "@ethosdao/plugin-market-analisys", + "version": "0.1.5-alpha.5", + "main": "dist/index.js", + "type": "module", + "author": "metaanomaly", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*" + }, + "devDependencies": { + "@types/node": "^20.0.0", + "tsup": "8.3.5", + "tsx": "^4.19.2" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache .", + "test-birdeye": "tsx src/tests/birdeye.test.ts" + } +} diff --git a/packages/plugin-market-analisys/package.json:Zone.Identifier b/packages/plugin-market-analisys/package.json:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/scripts/install.py b/packages/plugin-market-analisys/scripts/install.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/scripts/install.py:Zone.Identifier b/packages/plugin-market-analisys/scripts/install.py:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/src/actions/tokenOverview.ts b/packages/plugin-market-analisys/src/actions/tokenOverview.ts new file mode 100644 index 00000000000..9e6b8c8c9a1 --- /dev/null +++ b/packages/plugin-market-analisys/src/actions/tokenOverview.ts @@ -0,0 +1,232 @@ +import { + Action, + IAgentRuntime, + Memory, + State, + HandlerCallback, + ModelClass, + Content, + elizaLogger, + composeContext, + generateMessageResponse, + parseJSONObjectFromText, + generateText, + messageCompletionFooter, +} from "@elizaos/core"; +import { fetchTokenOverview } from "../utils/birdeye"; + +interface TokenQuery { + address?: string; + symbol?: string; +} + +const tokenExtractionTemplate = `Respond with a JSON markdown block containing only the extracted values. + +Example response: +\`\`\`json +{ + "address": "So11111111111111111111111111111111111111112", + "symbol": "SOL" +} +\`\`\` + +{{recentMessages}} + +Given the recent messages, extract the following information about the token query, please refer to last message for context: +- Token contract address if provided +- Token symbol if provided + +NOTE: If you see addresses like this 2gkevSAUExkSUwwwj6uNbzwwNCXyzEBkGLg4wAyUpump remember that pump suffix IS PART OF THE ADDRESS, do not remove it. + +Respond with a JSON markdown block containing only the extracted values. Use "" (empty string) for any values that cannot be determined. +IMPORTANT: Response format should be in this format: +\`\`\`json +{ + "address": "So11111111111111111111111111111111111111112", + "symbol": "SOL" +} +\`\`\``; + +const marketAnalysisTemplate = `You are {{agentName}}, a professional market analyst. + +About you: +{{bio}} +{{lore}} + +Recent conversation: +{{recentMessages}} + +Available market data: +{{marketData}} + +Analyze the market data and provide insights about: +1. Price performance across different timeframes +2. Trading volume and liquidity +3. Holder behavior and wallet activity +4. Overall market sentiment + +Keep the analysis concise and data-driven, focusing on the most relevant metrics.` + messageCompletionFooter; + +export const getTokenOverviewAction: Action = { + name: "GET_TOKEN_OVERVIEW", + similes: ["CHECK_TOKEN", "TOKEN_INFO", "MARKET_DATA", "TOKEN_ANALYSIS"], + description: "Retrieve and analyze token market data from Birdeye", + + validate: async (runtime: IAgentRuntime, message: Memory) => { + //const text = (message.content as Content).text?.toLowerCase() || ""; + //return text.includes("token") || text.includes("price") || text.includes("market"); + return true; + }, + + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: { [key: string]: unknown }, + callback?: HandlerCallback + ): Promise<boolean> => { + try { + // Initialize or update state + if (!state) { + state = await runtime.composeState(message); + } else { + state = await runtime.updateRecentMessageState(state); + } + + // Extract token information from message + const extractionContext = composeContext({ + state, + template: tokenExtractionTemplate, + }); + + elizaLogger.log(`Extracting token info...`); + + const response = await generateText({ + runtime, + context: extractionContext, + modelClass: ModelClass.SMALL, + }); + + const tokenQuery = parseJSONObjectFromText(response) as TokenQuery; + + elizaLogger.info(`Token query: ${JSON.stringify(tokenQuery)}`); + + if (!tokenQuery.address && !tokenQuery.symbol) { + callback?.({ + text: "I couldn't identify which token you're asking about. Could you please provide a token symbol or contract address?", + }); + return false; + } + + if (tokenQuery.symbol && !tokenQuery.address) { + callback?.({ + text: "Ticker is not enough please provide me the contract address", + }); + return false; + } + + elizaLogger.log(`Fetching token data...`); + + // Fetch token data + const tokenAddress = tokenQuery.address || "So11111111111111111111111111111111111111112"; // Default to SOL if only symbol provided + const tokenData = await fetchTokenOverview(tokenAddress as string, runtime.character.settings.secrets.BIRDEYE_API_KEY); + + + elizaLogger.log(`Market data: ${JSON.stringify(tokenData, null, 2)}`); + + // Update state with market data + if (!state) { + state = await runtime.composeState(message); + } + + state = { + ...state, + marketData: JSON.stringify(tokenData, null, 2), + }; + + // Generate market analysis + const analysisContext = composeContext({ + state, + template: marketAnalysisTemplate, + }); + + const analysis = await generateMessageResponse({ + runtime, + context: analysisContext, + modelClass: ModelClass.LARGE, + }); + + callback?.(analysis); + + return true; + } catch (error) { + elizaLogger.error(`Error in GET_TOKEN_OVERVIEW action: ${error}`); + callback?.({ + text: "I encountered an error while fetching the token data. Please try again later.", + }); + return false; + } + }, + + examples: [ + [ + { + user: "{{user1}}", + content: { text: "What's the current market data for DV44rX6H8pEu4qwruwUvjswyRPTUib5qHTjWNRigpump?" }, + }, + { + user: "{{agentName}}", + content: { + text: "Let me analyze the market data for DV44rX6H8pEu4qwruwUvjswyRPTUib5qHTjWNRigpump", + action: "GET_TOKEN_OVERVIEW", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { text: "DV44rX6H8pEu4qwruwUvjswyRPTUib5qHTjWNRigpump" }, + }, + { + user: "{{agentName}}", + content: { + text: "Checking market data for DV44rX6H8pEu4qwruwUvjswyRPTUib5qHTjWNRigpump", + action: "GET_TOKEN_OVERVIEW", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Can you check the token at address So11111111111111111111111111111111111111112?" + }, + }, + { + user: "{{agentName}}", + content: { + text: "I'll fetch the market data for this token...", + action: "GET_TOKEN_OVERVIEW", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { text: "Can you make an analysis of $AVB?" }, + }, + { + user: "{{agentName}}", + content: { text: "Can you provide the address of $AVB?", action: "NONE" }, + }, + { + user: "{{user1}}", + content: { text: "6d5zHW5B8RkGKd51Lpb9RqFQSqDudr9GJgZ1SgQZpump" }, + }, + { + user: "{{agentName}}", + content: { text: "Checking market data for $AVB", action: "GET_TOKEN_OVERVIEW" }, + }, + ], + ], +}; \ No newline at end of file diff --git a/packages/plugin-market-analisys/src/actions/tokenOverview.ts:Zone.Identifier b/packages/plugin-market-analisys/src/actions/tokenOverview.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/src/index.ts b/packages/plugin-market-analisys/src/index.ts new file mode 100644 index 00000000000..dc47fbdc506 --- /dev/null +++ b/packages/plugin-market-analisys/src/index.ts @@ -0,0 +1,11 @@ +import { Plugin } from "@elizaos/core"; +import { getTokenOverviewAction } from "./actions/tokenOverview"; +import { twitterTrendingMarketData } from "./providers/twitterTrendingMarketData"; + +export const marketAnalisysPlugin: Plugin = { + name: "market-analisys", + description: "Provides market analisys capabilities", + actions: [getTokenOverviewAction], + providers: [twitterTrendingMarketData], + evaluators: [], +}; \ No newline at end of file diff --git a/packages/plugin-market-analisys/src/index.ts:Zone.Identifier b/packages/plugin-market-analisys/src/index.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/src/providers/twitterTrendingMarketData.ts b/packages/plugin-market-analisys/src/providers/twitterTrendingMarketData.ts new file mode 100644 index 00000000000..55d9ee320d4 --- /dev/null +++ b/packages/plugin-market-analisys/src/providers/twitterTrendingMarketData.ts @@ -0,0 +1,113 @@ +import { elizaLogger, Provider } from "@elizaos/core"; +import { fetchTrendingTokens, fetchTokenOverview } from "../utils/birdeye"; + +interface FormattedMarketData { + symbol: string; + name: string; + price: string; + priceChange24h: string; + priceChange1h: string; + volume24h: string; + volume1h: string; + marketCap: string; + realMarketCap: string; + liquidity: string; + holders: string; + uniqueWallets24h: string; + uniqueWallets1h: string; + socialLinks: string[]; +} + +function formatNumber(num: number): string { + if (num >= 1e9) { + return `$${(num / 1e9).toFixed(2)}B`; + } else if (num >= 1e6) { + return `$${(num / 1e6).toFixed(2)}M`; + } else if (num >= 1e3) { + return `$${(num / 1e3).toFixed(2)}K`; + } + return `$${num.toFixed(2)}`; +} + +function formatPercentage(num: number): string { + const sign = num > 0 ? "+" : ""; + return `${sign}${num.toFixed(2)}%`; +} + +function getSocialLinks(extensions: any): string[] { + const links = []; + if (extensions.website) links.push(`🌐 ${extensions.website}`); + if (extensions.twitter) links.push(`🐦 ${extensions.twitter}`); + if (extensions.telegram) links.push(`📱 ${extensions.telegram}`); + if (extensions.discord) links.push(`💬 ${extensions.discord}`); + return links; +} + +export const twitterTrendingMarketData: Provider = { + get: async (runtime, message, state) => { + if (!message.content.action || message.content.action !== "TWEET") { + return ""; + } + + try { + const trendingTokens = await fetchTrendingTokens( + runtime.character.settings.secrets.BIRDEYE_API_KEY + ); + + const randomIndex = Math.floor(Math.random() * Math.min(10, trendingTokens.tokens.length)); + const selectedToken = trendingTokens.tokens[randomIndex]; + + const tokenData = await fetchTokenOverview( + selectedToken.address, + runtime.character.settings.secrets.BIRDEYE_API_KEY + ); + + const formattedData: FormattedMarketData = { + symbol: tokenData.symbol, + name: tokenData.name, + price: formatNumber(tokenData.price), + priceChange24h: formatPercentage(tokenData.priceChange24hPercent), + priceChange1h: formatPercentage(tokenData.priceChange1hPercent), + volume24h: formatNumber(tokenData.v24hUSD), + volume1h: formatNumber(tokenData.v1hUSD), + marketCap: formatNumber(tokenData.mc), + realMarketCap: formatNumber(tokenData.realMc), + liquidity: formatNumber(tokenData.liquidity), + holders: tokenData.holder.toLocaleString(), + uniqueWallets24h: tokenData.uniqueWallet24h.toLocaleString(), + uniqueWallets1h: tokenData.uniqueWallet1h.toLocaleString(), + socialLinks: getSocialLinks(tokenData.extensions), + }; + + // Build comprehensive market report + let report = `🚀 ${formattedData.name} ($${formattedData.symbol}) Market Report\n\n`; + + // Price and Changes + report += `💰 Price: ${formattedData.price}\n`; + report += `📈 24h Change: ${formattedData.priceChange24h}\n`; + report += `⏰ 1h Change: ${formattedData.priceChange1h}\n\n`; + + // Volume and Liquidity + report += `📊 24h Volume: ${formattedData.volume24h}\n`; + report += `📊 1h Volume: ${formattedData.volume1h}\n`; + report += `💧 Liquidity: ${formattedData.liquidity}\n\n`; + + // Market Caps + report += `💎 Market Cap: ${formattedData.marketCap}\n`; + report += `💎 Real MC: ${formattedData.realMarketCap}\n\n`; + + // Holder Metrics + report += `👥 Holders: ${formattedData.holders}\n`; + report += `🔄 24h Active Wallets: ${formattedData.uniqueWallets24h}\n`; + report += `🔄 1h Active Wallets: ${formattedData.uniqueWallets1h}\n\n`; + + elizaLogger.log(report); + + return report; + + } catch (error) { + console.error("Error in twitterTrendingMarketData provider:", error); + return ""; + } + } +}; \ No newline at end of file diff --git a/packages/plugin-market-analisys/src/providers/twitterTrendingMarketData.ts:Zone.Identifier b/packages/plugin-market-analisys/src/providers/twitterTrendingMarketData.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/src/tests/birdeye.test.ts b/packages/plugin-market-analisys/src/tests/birdeye.test.ts new file mode 100644 index 00000000000..3cdfc8539c7 --- /dev/null +++ b/packages/plugin-market-analisys/src/tests/birdeye.test.ts @@ -0,0 +1,77 @@ +import assert from 'assert'; +import { fetchTokenOverview } from "../utils/birdeye"; + +async function runTests() { + const WRAPPED_SOL_ADDRESS = "So11111111111111111111111111111111111111112"; + const apiKey = process.argv[2]; + + if (!apiKey) { + console.error("API key must be provided as command line argument"); + process.exit(1); + } + + console.log("Running Birdeye API Integration Tests...\n"); + + // Test 1: Basic token overview fetch + try { + console.log("Test 1: Fetching token overview data..."); + const result = await fetchTokenOverview(WRAPPED_SOL_ADDRESS, apiKey, undefined); + + assert(result, "Result should be defined"); + assert.strictEqual(result.address, WRAPPED_SOL_ADDRESS, "Address should match"); + assert.strictEqual(result.symbol, "SOL", "Symbol should be SOL"); + assert.strictEqual(result.name, "Wrapped SOL", "Name should be Wrapped SOL"); + assert.strictEqual(result.decimals, 9, "Decimals should be 9"); + assert(result.price > 0, "Price should be greater than 0"); + assert(result.liquidity > 0, "Liquidity should be greater than 0"); + assert(result.mc > 0, "Market cap should be greater than 0"); + assert(result.holder > 0, "Holder count should be greater than 0"); + assert(result.v24hUSD > 0, "24h volume should be greater than 0"); + assert(result.v1hUSD > 0, "1h volume should be greater than 0"); + console.log("✅ Test 1 passed\n"); + } catch (error) { + console.error("❌ Test 1 failed:", error); + process.exit(1); + } + + // Test 2: Cache functionality + try { + console.log("Test 2: Testing cache functionality..."); + const mockCache = { + get: (key: string) => { + console.log("Cache get called with key:", key); + return null; + }, + set: (key: string, value: any) => { + console.log("Cache set called with key:", key); + assert(value, "Cache value should be defined"); + } + }; + + await fetchTokenOverview(WRAPPED_SOL_ADDRESS, apiKey, mockCache); + console.log("✅ Test 2 passed\n"); + } catch (error) { + console.error("❌ Test 2 failed:", error); + process.exit(1); + } + + // Test 3: Invalid token address + try { + console.log("Test 3: Testing invalid token address..."); + const invalidAddress = "invalid_address"; + try { + await fetchTokenOverview(invalidAddress, apiKey, undefined); + assert.fail("Should throw an error for invalid address"); + } catch (error) { + assert(error, "Should throw an error"); + } + console.log("✅ Test 3 passed\n"); + } catch (error) { + console.error("❌ Test 3 failed:", error); + process.exit(1); + } + + console.log("All tests passed! 🎉"); +} + +runTests().catch(console.error); \ No newline at end of file diff --git a/packages/plugin-market-analisys/src/tests/birdeye.test.ts:Zone.Identifier b/packages/plugin-market-analisys/src/tests/birdeye.test.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/src/utils/birdeye.ts b/packages/plugin-market-analisys/src/utils/birdeye.ts new file mode 100644 index 00000000000..5383f6fe301 --- /dev/null +++ b/packages/plugin-market-analisys/src/utils/birdeye.ts @@ -0,0 +1,174 @@ +export interface TokenOverviewResponse { + address: string; + decimals: number; + symbol: string; + name: string; + extensions: { + coingeckoId: string | null; + website: string | null; + telegram: string | null; + twitter: string | null; + description: string | null; + discord: string | null; + medium: string | null; + }; + logoURI: string; + liquidity: number; + lastTradeUnixTime: number; + lastTradeHumanTime: string; + price: number; + supply: number; + mc: number; + circulatingSupply: number; + realMc: number; + holder: number; + // Price changes + priceChange24hPercent: number; + priceChange12hPercent: number; + priceChange8hPercent: number; + priceChange4hPercent: number; + priceChange2hPercent: number; + priceChange1hPercent: number; + priceChange30mPercent: number; + // Volume data + v24hUSD: number; + v12hUSD: number; + v8hUSD: number; + v4hUSD: number; + v2hUSD: number; + v1hUSD: number; + v30mUSD: number; + // Unique wallets + uniqueWallet24h: number; + uniqueWallet12h: number; + uniqueWallet8h: number; + uniqueWallet4h: number; + uniqueWallet2h: number; + uniqueWallet1h: number; + uniqueWallet30m: number; +} + +export interface BirdeyeApiError { + success: false; + error: string; +} + +export async function fetchTokenOverview( + tokenAddress: string, + apiKey?: string, + cache?: { get: (key: string) => any; set: (key: string, value: any) => void }, +): Promise<TokenOverviewResponse> { + try { + // Check cache first if provided + if (cache) { + const cacheKey = `token_overview_${tokenAddress}`; + const cachedData = cache.get(cacheKey); + if (cachedData) { + console.log(`Returning cached token overview for ${tokenAddress}`); + return cachedData; + } + } + + const response = await fetch( + `https://public-api.birdeye.so/defi/token_overview?address=${tokenAddress}`, + { + method: "GET", + headers: { + "accept": "application/json", + "x-api-key": apiKey || "", + }, + } + ); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data = await response.json(); + + if (!data.success || !data.data) { + throw new Error("Failed to fetch token overview data"); + } + + // Cache the response if cache is provided + if (cache) { + const cacheKey = `token_overview_${tokenAddress}`; + cache.set(cacheKey, data.data); + } + + return data.data; + } catch (error) { + console.error("Error fetching token overview:", error); + throw error; + } +} + +export interface TrendingToken { + address: string; + decimals: number; + liquidity: number; + logoURI: string; + name: string; + symbol: string; + volume24hUSD: number; + rank: number; + price: number; +} + +export interface TrendingTokensResponse { + updateUnixTime: number; + updateTime: string; + tokens: TrendingToken[]; + total: number; +} + +export async function fetchTrendingTokens( + apiKey?: string, + cache?: { get: (key: string) => any; set: (key: string, value: any) => void }, + limit: number = 20 +): Promise<TrendingTokensResponse> { + try { + // Check cache first if provided + if (cache) { + const cacheKey = `trending_tokens_${limit}`; + const cachedData = cache.get(cacheKey); + if (cachedData) { + console.log(`Returning cached trending tokens`); + return cachedData; + } + } + + const response = await fetch( + `https://public-api.birdeye.so/defi/token_trending?sort_by=rank&sort_type=asc&offset=0&limit=${limit}`, + { + method: "GET", + headers: { + "accept": "application/json", + "x-api-key": apiKey || "", + "x-chain": "solana" + }, + } + ); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data = await response.json(); + + if (!data.success || !data.data) { + throw new Error("Failed to fetch trending tokens data"); + } + + // Cache the response if cache is provided + if (cache) { + const cacheKey = `trending_tokens_${limit}`; + cache.set(cacheKey, data.data); + } + + return data.data; + } catch (error) { + console.error("Error fetching trending tokens:", error); + throw error; + } +} \ No newline at end of file diff --git a/packages/plugin-market-analisys/src/utils/birdeye.ts:Zone.Identifier b/packages/plugin-market-analisys/src/utils/birdeye.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/tsconfig.json b/packages/plugin-market-analisys/tsconfig.json new file mode 100644 index 00000000000..18c600eec05 --- /dev/null +++ b/packages/plugin-market-analisys/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "types": [ + "node" + ] + }, + "include": [ + "src/**/*.ts", + ] +} \ No newline at end of file diff --git a/packages/plugin-market-analisys/tsconfig.json:Zone.Identifier b/packages/plugin-market-analisys/tsconfig.json:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-market-analisys/tsup.config.ts b/packages/plugin-market-analisys/tsup.config.ts new file mode 100644 index 00000000000..0efba439d76 --- /dev/null +++ b/packages/plugin-market-analisys/tsup.config.ts @@ -0,0 +1,23 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], // Ensure you're targeting CommonJS + external: [ + "dotenv", // Externalize dotenv to prevent bundling + "fs", // Externalize fs to use Node.js built-in module + "path", // Externalize other built-ins if necessary + "@reflink/reflink", + "@node-llama-cpp", + "https", + "http", + "agentkeepalive", + "safe-buffer", + "zod", + // Add other modules you want to externalize + ], +}); + diff --git a/packages/plugin-market-analisys/tsup.config.ts:Zone.Identifier b/packages/plugin-market-analisys/tsup.config.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4508adcad81..ddcef1406ba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,12 @@ importers: '@deepgram/sdk': specifier: ^3.9.0 version: 3.9.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@glacier-network/client': + specifier: ^0.2.1 + version: 0.2.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@glacier-network/elizaos-adapter': + specifier: 0.0.1-alpha.1 + version: 0.0.1-alpha.1(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(utf-8-validate@5.0.10) '@vitest/eslint-plugin': specifier: 1.0.1 version: 1.0.1(@typescript-eslint/utils@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(vitest@2.1.5(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) @@ -162,6 +168,9 @@ importers: '@elizaos/plugin-coinbase': specifier: workspace:* version: link:../packages/plugin-coinbase + '@elizaos/plugin-coinmarketcap': + specifier: workspace:* + version: link:../packages/plugin-coinmarketcap '@elizaos/plugin-conflux': specifier: workspace:* version: link:../packages/plugin-conflux @@ -186,6 +195,9 @@ importers: '@elizaos/plugin-goat': specifier: workspace:* version: link:../packages/plugin-goat + '@elizaos/plugin-goplus': + specifier: workspace:* + version: link:../packages/plugin-goplus '@elizaos/plugin-icp': specifier: workspace:* version: link:../packages/plugin-icp @@ -234,6 +246,9 @@ importers: '@elizaos/plugin-zksync-era': specifier: workspace:* version: link:../packages/plugin-zksync-era + '@ethosdao/plugin-market-analisys': + specifier: workspace:* + version: link:../packages/plugin-market-analisys readline: specifier: 1.3.0 version: 1.3.0 @@ -249,16 +264,16 @@ importers: version: 29.5.14 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + version: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.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))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)))(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))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)))(typescript@5.7.3) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3) + version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) client: dependencies: @@ -358,25 +373,25 @@ importers: dependencies: '@docusaurus/core': specifier: 3.6.3 - version: 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/plugin-content-blog': 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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + 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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/plugin-content-docs': specifier: 3.6.3 - version: 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/plugin-ideal-image': specifier: 3.6.3 - version: 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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) + version: 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/preset-classic': specifier: 3.6.3 - version: 3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.19.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/theme-common': 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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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) + 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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + 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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@mdx-js/react': specifier: 3.0.1 version: 3.0.1(@types/react@18.3.12)(react@18.3.1) @@ -385,7 +400,7 @@ importers: version: 2.1.1 docusaurus-lunr-search: specifier: 3.5.0 - version: 3.5.0(@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.5.0(@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) dotenv: specifier: ^16.4.7 version: 16.4.7 @@ -413,13 +428,13 @@ importers: version: 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) docusaurus-plugin-typedoc: specifier: 1.0.5 - version: 1.0.5(typedoc-plugin-markdown@4.2.10(typedoc@0.26.11(typescript@5.6.3))) + version: 1.0.5(typedoc-plugin-markdown@4.2.10(typedoc@0.26.11(typescript@5.7.3))) typedoc: specifier: 0.26.11 - version: 0.26.11(typescript@5.6.3) + version: 0.26.11(typescript@5.7.3) typedoc-plugin-markdown: specifier: 4.2.10 - version: 4.2.10(typedoc@0.26.11(typescript@5.6.3)) + version: 4.2.10(typedoc@0.26.11(typescript@5.7.3)) packages/adapter-postgres: dependencies: @@ -435,7 +450,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/adapter-redis: dependencies: @@ -454,7 +469,7 @@ importers: version: 5.0.0 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/adapter-sqlite: dependencies: @@ -476,7 +491,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/adapter-sqljs: dependencies: @@ -498,7 +513,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/adapter-supabase: dependencies: @@ -514,7 +529,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/client-auto: dependencies: @@ -545,7 +560,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/client-direct: dependencies: @@ -588,7 +603,7 @@ importers: version: 1.4.12 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/client-discord: dependencies: @@ -625,7 +640,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/client-farcaster: dependencies: @@ -634,11 +649,11 @@ importers: version: link:../core '@neynar/nodejs-sdk': specifier: ^2.0.3 - version: 2.8.0(bufferutil@4.0.9)(class-transformer@0.5.1)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + version: 2.8.0(bufferutil@4.0.9)(class-transformer@0.5.1)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) devDependencies: tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/client-github: dependencies: @@ -663,7 +678,7 @@ importers: version: 8.1.0 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/client-lens: dependencies: @@ -672,7 +687,7 @@ importers: version: link:../core '@lens-protocol/client': specifier: 2.2.0 - version: 2.2.0(@jest/globals@29.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) + version: 2.2.0(@jest/globals@29.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(react@18.3.1)(utf-8-validate@5.0.10) '@lens-protocol/metadata': specifier: 1.2.0 version: 1.2.0(zod@3.23.8) @@ -682,7 +697,7 @@ importers: devDependencies: tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/client-slack: dependencies: @@ -740,7 +755,7 @@ importers: version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3) tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) typescript: specifier: ^5.0.0 version: 5.6.3 @@ -762,7 +777,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/client-twitter: dependencies: @@ -784,7 +799,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/core: dependencies: @@ -841,7 +856,7 @@ importers: version: 1.0.15 langchain: specifier: 0.3.6 - version: 0.3.6(@langchain/core@0.3.27(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(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.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(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) @@ -953,7 +968,7 @@ importers: version: 2.8.1 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) typescript: specifier: 5.6.3 version: 5.6.3 @@ -975,7 +990,7 @@ importers: version: 2.4.0 unbuild: specifier: 2.0.0 - version: 2.0.0(typescript@5.6.3) + version: 2.0.0(typescript@5.7.3) packages/plugin-0g: dependencies: @@ -990,7 +1005,7 @@ importers: version: 6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-3d-generation: dependencies: @@ -999,7 +1014,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1011,10 +1026,10 @@ importers: version: link:../core tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) web3: specifier: ^4.15.0 - version: 4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + version: 4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1041,7 +1056,7 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 2.1.4 version: 2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) @@ -1060,7 +1075,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-bootstrap: dependencies: @@ -1069,7 +1084,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1100,7 +1115,23 @@ importers: version: 20.17.9 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + + packages/plugin-coinmarketcap: + dependencies: + '@elizaos/core': + specifier: ^0.1.7 + version: 0.1.7(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3) + axios: + specifier: ^1.6.7 + version: 1.7.9(debug@4.4.0) + zod: + specifier: ^3.22.4 + version: 3.23.8 + devDependencies: + tsup: + specifier: ^8.3.5 + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-conflux: dependencies: @@ -1109,7 +1140,7 @@ importers: version: link:../core cive: specifier: 0.7.1 - version: 0.7.1(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 0.7.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10) packages/plugin-cronoszkevm: dependencies: @@ -1121,13 +1152,13 @@ importers: version: link:../plugin-trustdb tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) web3: specifier: ^4.15.0 - version: 4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + version: 4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) web3-plugin-zksync: specifier: ^1.0.8 - version: 1.0.8(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.6.3))(typescript@5.6.3)(utf-8-validate@5.0.10)(web3@4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) + version: 1.0.8(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.7.3))(typescript@5.7.3)(utf-8-validate@5.0.10)(web3@4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1154,13 +1185,13 @@ importers: version: 5.15.5 '@lifi/sdk': specifier: 3.4.1 - version: 3.4.1(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)))(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(typescript@5.6.3)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) + version: 3.4.1(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)))(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(typescript@5.7.3)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)) '@lifi/types': specifier: 16.3.0 version: 16.3.0 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1175,7 +1206,7 @@ importers: version: 1.5.1 '@onflow/fcl': specifier: 1.13.1 - version: 1.13.1(@types/react@18.3.12)(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(utf-8-validate@5.0.10) + version: 1.13.1(@types/react@18.3.12)(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(tsx@4.19.2)(utf-8-validate@5.0.10) '@onflow/typedefs': specifier: 1.4.0 version: 1.4.0 @@ -1212,7 +1243,7 @@ importers: version: 10.0.0 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 2.1.4 version: 2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) @@ -1230,7 +1261,7 @@ importers: version: 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 2.1.4 version: 2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) @@ -1245,7 +1276,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-goat: dependencies: @@ -1254,32 +1285,51 @@ importers: version: link:../core '@goat-sdk/adapter-vercel-ai': specifier: 0.2.0 - version: 0.2.0(@goat-sdk/core@0.4.0)(ai@3.4.33(openai@4.78.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8)) + version: 0.2.0(@goat-sdk/core@0.4.0)(ai@3.4.33(openai@4.78.1(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(vue@3.5.13(typescript@5.7.3))(zod@3.23.8)) '@goat-sdk/core': specifier: 0.4.0 version: 0.4.0 '@goat-sdk/plugin-erc20': specifier: 0.2.2 - version: 0.2.2(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(viem@2.21.53(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) + version: 0.2.2(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.21.53(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)) '@goat-sdk/plugin-kim': specifier: 0.1.2 - version: 0.1.2(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(viem@2.21.53(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) + version: 0.1.2(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.21.53(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)) '@goat-sdk/wallet-evm': specifier: 0.2.0 - version: 0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10) '@goat-sdk/wallet-viem': specifier: 0.2.0 - version: 0.2.0(@goat-sdk/wallet-evm@0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10))(viem@2.21.53(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) + version: 0.2.0(@goat-sdk/wallet-evm@0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10))(viem@2.21.53(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) viem: specifier: 2.21.53 - version: 2.21.53(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + version: 2.21.53(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) whatwg-url: specifier: 7.1.0 version: 7.1.0 + packages/plugin-goplus: + dependencies: + '@elizaos/core': + specifier: ^0.1.7 + version: 0.1.7(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3) + tsup: + specifier: ^8.3.5 + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + ws: + specifier: ^8.18.0 + version: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + devDependencies: + '@types/ws': + specifier: ^8.5.13 + version: 8.5.13 + tsx: + specifier: ^4.19.2 + version: 4.19.2 + packages/plugin-icp: dependencies: '@dfinity/agent': @@ -1306,7 +1356,7 @@ importers: version: 29.7.0(@types/node@22.10.5) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) typescript: specifier: 5.6.3 version: 5.6.3 @@ -1318,7 +1368,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1336,11 +1386,27 @@ importers: version: 1.0.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 + packages/plugin-market-analisys: + dependencies: + '@elizaos/core': + specifier: workspace:* + version: link:../core + devDependencies: + '@types/node': + specifier: ^20.0.0 + version: 20.17.9 + tsup: + specifier: 8.3.5 + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + tsx: + specifier: ^4.19.2 + version: 4.19.2 + packages/plugin-multiversx: dependencies: '@elizaos/core': @@ -1363,7 +1429,7 @@ importers: version: 2.1.1 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 2.1.5 version: 2.1.5(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) @@ -1393,7 +1459,7 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1423,7 +1489,7 @@ importers: version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(encoding@0.1.13) '@solana-developers/helpers': specifier: ^2.5.6 - version: 2.5.6(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 2.5.6(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/web3.js': specifier: 1.95.5 version: 1.95.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -1438,7 +1504,7 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1447,10 +1513,10 @@ importers: dependencies: '@aws-sdk/client-s3': specifier: ^3.705.0 - version: 3.726.0 + version: 3.726.1 '@aws-sdk/s3-request-presigner': specifier: ^3.705.0 - version: 3.726.0 + version: 3.726.1 '@cliqz/adblocker-playwright': specifier: 1.34.0 version: 1.34.0(playwright@1.48.2) @@ -1555,7 +1621,7 @@ importers: version: 5.1.2 node-llama-cpp: specifier: 3.1.1 - version: 3.1.1(typescript@5.6.3) + version: 3.1.1(typescript@5.7.3) nodejs-whisper: specifier: 0.1.18 version: 0.1.18 @@ -1573,10 +1639,10 @@ importers: version: 5.4.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) puppeteer-extra: specifier: 3.3.6 - version: 3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)) + version: 3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)) puppeteer-extra-plugin-capsolver: specifier: 2.0.1 - version: 2.0.1(bufferutil@4.0.9)(encoding@0.1.13)(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10))(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 2.0.1(bufferutil@4.0.9)(encoding@0.1.13)(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(typescript@5.7.3)(utf-8-validate@5.0.10) sharp: specifier: 0.33.5 version: 0.33.5 @@ -1619,7 +1685,7 @@ importers: version: 22.8.4 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-solana: dependencies: @@ -1637,7 +1703,7 @@ importers: version: link:../plugin-trustdb '@solana/spl-token': specifier: 0.4.9 - version: 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/web3.js': specifier: 1.95.8 version: 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -1652,7 +1718,7 @@ importers: version: 6.0.0 fomo-sdk-solana: specifier: 1.3.2 - version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) form-data: specifier: 4.0.1 version: 4.0.1 @@ -1661,10 +1727,10 @@ importers: version: 5.1.2 pumpdotfun-sdk: specifier: 1.3.2 - version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.7.3)(utf-8-validate@5.0.10) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 2.1.4 version: 2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) @@ -1694,7 +1760,7 @@ importers: version: 6.18.0(encoding@0.1.13) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) unruggable-sdk: specifier: 1.4.0 version: 1.4.0(starknet@6.18.0(encoding@0.1.13)) @@ -1718,10 +1784,10 @@ importers: version: 2.1.0 '@story-protocol/core-sdk': specifier: 1.2.0-rc.3 - version: 1.2.0-rc.3(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + version: 1.2.0-rc.3(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1740,7 +1806,7 @@ importers: version: link:../plugin-trustdb '@mysten/sui': specifier: ^1.16.0 - version: 1.18.1(typescript@5.6.3) + version: 1.19.0(typescript@5.7.3) bignumber: specifier: 1.1.0 version: 1.1.0 @@ -1755,7 +1821,7 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 2.1.4 version: 2.1.4(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) @@ -1770,10 +1836,10 @@ importers: version: link:../core '@phala/dstack-sdk': specifier: 0.1.6 - version: 0.1.6(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + version: 0.1.6(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) '@solana/spl-token': specifier: 0.4.9 - version: 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/web3.js': specifier: 1.95.8 version: 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -1791,10 +1857,10 @@ importers: version: 5.1.2 pumpdotfun-sdk: specifier: 1.3.2 - version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.7.3)(utf-8-validate@5.0.10) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1824,7 +1890,7 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1839,7 +1905,7 @@ importers: version: 3.2.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) uuid: specifier: 11.0.3 version: 11.0.3 @@ -1864,7 +1930,7 @@ importers: version: 0.0.17 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-video-generation: dependencies: @@ -1873,7 +1939,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1888,7 +1954,7 @@ importers: version: 1.7.9(debug@4.4.0) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1916,10 +1982,10 @@ importers: version: 8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3) jest: specifier: 29.7.0 - version: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + version: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.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))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)))(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))(typescript@5.6.3) typescript: specifier: 5.6.3 version: 5.6.3 @@ -1934,13 +2000,13 @@ importers: version: link:../plugin-trustdb tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) web3: specifier: ^4.15.0 - version: 4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + version: 4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) web3-plugin-zksync: specifier: ^1.0.8 - version: 1.0.8(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.6.3))(typescript@5.6.3)(utf-8-validate@5.0.10)(web3@4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) + version: 1.0.8(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.7.3))(typescript@5.7.3)(utf-8-validate@5.0.10)(web3@4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2298,12 +2364,12 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-polly@3.726.0': - resolution: {integrity: sha512-vhPUddycCdFupNeksBgMR4WN//LbNQzhHbV41LgDYShd1Ea3QmfGPij+yCIZWmCtmv9y0sWnRTydXKAlmE1Vsw==} + '@aws-sdk/client-polly@3.726.1': + resolution: {integrity: sha512-Q4ZoSmCXskIQ3T5AdO0OyH3vCeoKCed9AjqNIZ5Bxo7T1aBLaIb0VmjKOEubsYrfl+0Ot++FRmy7G45UUHSs4Q==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-s3@3.726.0': - resolution: {integrity: sha512-cxn2WvOCfGrME2xygWbfj/vIf2sIdv/UbQ9zJbN4aK6rpYQf/e/YtY/HIPkejCuw2Iwqm4jfDGFqaUcwu3nFew==} + '@aws-sdk/client-s3@3.726.1': + resolution: {integrity: sha512-UpOGcob87DiuS2d3fW6vDZg94g57mNiOSkzvR/6GOdvBSlUgk8LLwVzGASB71FdKMl1EGEr4MeD5uKH9JsG+dw==} engines: {node: '>=18.0.0'} '@aws-sdk/client-sso-oidc@3.726.0': @@ -2316,12 +2382,12 @@ packages: resolution: {integrity: sha512-NM5pjv2qglEc4XN3nnDqtqGsSGv1k5YTmzDo3W3pObItHmpS8grSeNfX9zSH+aVl0Q8hE4ZIgvTPNZ+GzwVlqg==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-sts@3.726.0': - resolution: {integrity: sha512-047EqXv2BAn/43eP92zsozPnR3paFFMsj5gjytx9kGNtp+WV0fUZNztCOobtouAxBY0ZQ8Xx5RFnmjpRb6Kjsg==} + '@aws-sdk/client-sts@3.726.1': + resolution: {integrity: sha512-qh9Q9Vu1hrM/wMBOBIaskwnE4GTFaZu26Q6WHwyWNfj7J8a40vBxpW16c2vYXHLBtwRKM1be8uRLkmDwghpiNw==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-transcribe-streaming@3.726.0': - resolution: {integrity: sha512-RT17D/lzkMCkLMqiWFMfZRxJzlOQQhAdx+IXE3SuauGHu1iSULpsifewJsLlfE72K9On5QbbVKGU7RcUScV+GQ==} + '@aws-sdk/client-transcribe-streaming@3.726.1': + resolution: {integrity: sha512-A1FtcvFi0SnY193SEnhHVEGB8xaMKHJdioE6/TcW0oka2ezvfZkl6EsmKEP30vLov+NRRzzoHUjitdiYKOpVzg==} engines: {node: '>=18.0.0'} '@aws-sdk/core@3.723.0': @@ -2420,8 +2486,8 @@ packages: resolution: {integrity: sha512-tGF/Cvch3uQjZIj34LY2mg8M2Dr4kYG8VU8Yd0dFnB1ybOEOveIK/9ypUo9ycZpB9oO6q01KRe5ijBaxNueUQg==} engines: {node: '>=18.0.0'} - '@aws-sdk/s3-request-presigner@3.726.0': - resolution: {integrity: sha512-7avBbUXYEii2qYxM2AFoCPVTt+AtSIFgq+Gk6/MLUOGId5KGCSkN3Y/4liVi3VLkvZ+ADg2JZqYQUrf3wgWsEQ==} + '@aws-sdk/s3-request-presigner@3.726.1': + resolution: {integrity: sha512-IoM/u1gaZiSHEZkkf+Hn6MvCFUtLJgJysApW6NFbM2GYt4hqGLX5jhbjo5KVxC3wFfAhAwK1deSOM0FriBrKrg==} engines: {node: '>=18.0.0'} '@aws-sdk/signature-v4-multi-region@3.723.0': @@ -2474,24 +2540,24 @@ packages: resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.3': - resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} + '@babel/compat-data@7.26.5': + resolution: {integrity: sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==} engines: {node: '>=6.9.0'} '@babel/core@7.26.0': resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.3': - resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} + '@babel/generator@7.26.5': + resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.25.9': resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.9': - resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + '@babel/helper-compilation-targets@7.26.5': + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} engines: {node: '>=6.9.0'} '@babel/helper-create-class-features-plugin@7.25.9': @@ -2529,8 +2595,8 @@ packages: resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.25.9': - resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} engines: {node: '>=6.9.0'} '@babel/helper-remap-async-to-generator@7.25.9': @@ -2539,8 +2605,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.25.9': - resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} + '@babel/helper-replace-supers@7.26.5': + resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -2569,8 +2635,8 @@ packages: resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.3': - resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} + '@babel/parser@7.26.5': + resolution: {integrity: sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==} engines: {node: '>=6.0.0'} hasBin: true @@ -2736,8 +2802,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.25.9': - resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} + '@babel/plugin-transform-block-scoped-functions@7.26.5': + resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2886,8 +2952,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.25.9': - resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} + '@babel/plugin-transform-nullish-coalescing-operator@7.26.5': + resolution: {integrity: sha512-OHqczNm4NTQlW1ghrVY43FPoiRzbmzNVbcgVnMKZN/RQYezHUSdjACjaX50CD3B7UIAjv39+MlsrVDb3v741FA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -3042,8 +3108,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.26.3': - resolution: {integrity: sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==} + '@babel/plugin-transform-typescript@7.26.5': + resolution: {integrity: sha512-GJhPO0y8SD5EYVCy2Zr+9dSZcEgaSmq5BLR0Oc25TOEhC+ba49vUAGZFjy8v79z9E1mdldq4x9d1xgh4L1d5dQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -3103,20 +3169,20 @@ packages: resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} engines: {node: '>=6.9.0'} - '@babel/standalone@7.26.4': - resolution: {integrity: sha512-SF+g7S2mhTT1b7CHyfNjDkPU1corxg4LPYsyP0x5KuCl+EbtBQHRLqr9N3q7e7+x7NQ5LYxQf8mJ2PmzebLr0A==} + '@babel/standalone@7.26.5': + resolution: {integrity: sha512-vXbSrFq1WauHvOg/XWcjkF6r7wDSHbN3+3Aro6LYjfODpGw8dCyqqbUMRX5LXlgzVAUrTSN6JkepFiHhLKHV5Q==} engines: {node: '>=6.9.0'} '@babel/template@7.25.9': resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.26.4': - resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} + '@babel/traverse@7.26.5': + resolution: {integrity: sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.3': - resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + '@babel/types@7.26.5': + resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -3867,6 +3933,9 @@ packages: peerDependencies: onnxruntime-node: 1.20.1 + '@elizaos/core@0.1.7': + resolution: {integrity: sha512-oorLGxE0LAdboNFhf62erTxu0+woNHZn98at/X3caDX34Fxr+d1cRQ6/W34WPAOIlv1tg3Q0ZArcpCCOaDTcMw==} + '@emnapi/core@1.3.1': resolution: {integrity: sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==} @@ -3892,6 +3961,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/aix-ppc64@0.24.2': resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} engines: {node: '>=18'} @@ -3910,6 +3985,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm64@0.24.2': resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} engines: {node: '>=18'} @@ -3928,6 +4009,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.24.2': resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} engines: {node: '>=18'} @@ -3946,6 +4033,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.24.2': resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} engines: {node: '>=18'} @@ -3964,6 +4057,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.24.2': resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} engines: {node: '>=18'} @@ -3982,6 +4081,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.24.2': resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} engines: {node: '>=18'} @@ -4000,6 +4105,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-arm64@0.24.2': resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} engines: {node: '>=18'} @@ -4018,6 +4129,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/freebsd-x64@0.24.2': resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} engines: {node: '>=18'} @@ -4036,6 +4153,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.24.2': resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} engines: {node: '>=18'} @@ -4054,6 +4177,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-arm@0.24.2': resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} engines: {node: '>=18'} @@ -4072,6 +4201,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.24.2': resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} engines: {node: '>=18'} @@ -4090,6 +4225,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.24.2': resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} engines: {node: '>=18'} @@ -4108,6 +4249,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-mips64el@0.24.2': resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} engines: {node: '>=18'} @@ -4126,6 +4273,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-ppc64@0.24.2': resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} engines: {node: '>=18'} @@ -4144,6 +4297,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.24.2': resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} engines: {node: '>=18'} @@ -4162,6 +4321,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.24.2': resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} engines: {node: '>=18'} @@ -4180,6 +4345,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.24.2': resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} engines: {node: '>=18'} @@ -4204,12 +4375,24 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.24.2': resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-arm64@0.24.2': resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} engines: {node: '>=18'} @@ -4228,6 +4411,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openbsd-x64@0.24.2': resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} engines: {node: '>=18'} @@ -4246,6 +4435,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.24.2': resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} engines: {node: '>=18'} @@ -4264,6 +4459,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.24.2': resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} engines: {node: '>=18'} @@ -4282,6 +4483,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-ia32@0.24.2': resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} engines: {node: '>=18'} @@ -4300,6 +4507,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.24.2': resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} engines: {node: '>=18'} @@ -4320,6 +4533,10 @@ packages: resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@0.10.0': + resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@0.9.1': resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4344,8 +4561,8 @@ packages: resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.4': - resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} + '@eslint/plugin-kit@0.2.5': + resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ethereumjs/rlp@4.0.1': @@ -4589,6 +4806,12 @@ packages: '@fuels/vm-asm@0.58.2': resolution: {integrity: sha512-1/5azTzKJP508BXbZvM6Y0V5bCCX5JgEnd/8mXdBFmFvNLOhiYbwb25yk26auqOokfBXvthSkdkrvipEFft6jQ==} + '@glacier-network/client@0.2.1': + resolution: {integrity: sha512-NjHyMbarWCSe4EogFBxKbaElG8hmHTCS6PXhBKsk7bU0u+hYl86EGIOK/uC0Q2e+0A5XmQKJRAdtecQ91Nz4gg==} + + '@glacier-network/elizaos-adapter@0.0.1-alpha.1': + resolution: {integrity: sha512-LJxIN5xqyAq+vakPCNZM3ekKAqsJhnLfo0Rj2AXQ86jnb31hUUU4HhC8fU47rMRSpGYNwrOBLAtcA5VD7txCMw==} + '@goat-sdk/adapter-vercel-ai@0.2.0': resolution: {integrity: sha512-NqUyO38i6ELbWXSDHddfkD1k4QCUcvfs3jVQArlJ9OO9NSlkKvnbZjO1tTjoVoERjRKfKsCqfMPgsgo3akx7tA==} peerDependencies: @@ -4945,15 +5168,15 @@ packages: '@kwsites/promise-deferred@1.1.1': resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} - '@langchain/core@0.3.27': - resolution: {integrity: sha512-jtJKbJWB1NPU1YvtrExOB2rumvUFgkJwlWGxyjSIV9A6zcLVmUbcZGV8fCSuXgl5bbzOIQLJ1xcLYQmbW9TkTg==} + '@langchain/core@0.3.29': + resolution: {integrity: sha512-LGjJq/UV43GnEzBpO2NWelIlzsAWoci+FEqofYqDE+F6O3EvTrSyma27NXs8eurM8MqWxjeL0t4RCmCSlJs2RQ==} engines: {node: '>=18'} - '@langchain/openai@0.3.16': - resolution: {integrity: sha512-Om9HRlTeI0Ou6D4pfxbWHop4WGfkCdV/7v1W/+Jr7NSf0BNoA9jk5GqGms8ZtOYSGgPvizDu3i0TrM3B4cN4NA==} + '@langchain/openai@0.3.17': + resolution: {integrity: sha512-uw4po32OKptVjq+CYHrumgbfh4NuD7LqyE+ZgqY9I/LrLc6bHLMc+sisHmI17vgek0K/yqtarI0alPJbzrwyag==} engines: {node: '>=18'} peerDependencies: - '@langchain/core': '>=0.2.26 <0.4.0' + '@langchain/core': '>=0.3.29 <0.4.0' '@langchain/textsplitters@0.1.0': resolution: {integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==} @@ -5041,8 +5264,8 @@ packages: '@lifi/types@16.3.0': resolution: {integrity: sha512-rYMdXRdNOyJb5tI5CXfqxU4k62GiJrElx0DEZ8ZRFYFtljg69X6hrMKER1wVWkRpcB67Ca8SKebLnufy7qCaTw==} - '@lit-labs/ssr-dom-shim@1.2.1': - resolution: {integrity: sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==} + '@lit-labs/ssr-dom-shim@1.3.0': + resolution: {integrity: sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==} '@lit-protocol/access-control-conditions@2.1.62': resolution: {integrity: sha512-nP+iqiLUzQa6bfZL9hM9a+s+YVW21HoHkHP7s2E11VFQmucdnJmUUr7Aw46SK/4yClTjLb6RuHyfIPvCdmIKhQ==} @@ -5248,8 +5471,8 @@ packages: '@mysten/bcs@1.2.1': resolution: {integrity: sha512-RMSaUsNb8oR0rTRVIOOcyoEVJqQi6DLvMXN+7mvDcki12FJFQ0lF89zQa7AV7cIurWlDQfJ8VIbCuRDyK+955A==} - '@mysten/sui@1.18.1': - resolution: {integrity: sha512-ccMVOHM4KQhUvbBirE1rkn9THDJUX7y7W1cDMoCKnlPsIwTtQifZc7ysyBNjCMAS42y8Kq4VpiRagPjf13Am5A==} + '@mysten/sui@1.19.0': + resolution: {integrity: sha512-hjNCArz7upZaGZNNmMeQRKSlQK73eN+p8MlKJvlZpx/6gorK0WWFWWjEcIyJndkIDbLb06nbQbWIWZ8KoI036Q==} engines: {node: '>=18'} '@napi-rs/wasm-runtime@0.2.4': @@ -11073,6 +11296,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + esbuild@0.24.2: resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} engines: {node: '>=18'} @@ -11843,6 +12071,9 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + get-uri@6.0.4: resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} engines: {node: '>= 14'} @@ -12063,8 +12294,8 @@ packages: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} - h3@1.13.0: - resolution: {integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==} + h3@1.13.1: + resolution: {integrity: sha512-u/z6Z4YY+ANZ05cRRfsFJadTBrNA6e3jxdU+AN5UCbZSZEUwgHiwjvUEe0k1NoQmAvQmETwr+xB5jd7mhCJuIQ==} hachure-fill@0.5.2: resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} @@ -14838,8 +15069,8 @@ packages: zod: optional: true - openai@4.78.0: - resolution: {integrity: sha512-4rRsKkx++5m1zayxkryVH+K/z91cv1sRbaNJAhSQjZiSCQOR7eaM8KpfIssXrS9Hlpta7+VcuO/fi57pW8xGjA==} + openai@4.78.1: + resolution: {integrity: sha512-drt0lHZBd2lMyORckOXFPQTmnGLWSLt8VK0W9BhOKWpMFBEoHMoz5gxMPmVq5icp+sOrsbMnsmZTVHUlKvD1Ow==} hasBin: true peerDependencies: zod: ^3.23.8 @@ -16575,9 +16806,9 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - readdirp@4.0.2: - resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} - engines: {node: '>= 14.16.0'} + readdirp@4.1.1: + resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} + engines: {node: '>= 14.18.0'} reading-time@1.5.0: resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} @@ -16786,6 +17017,9 @@ packages: resolve-pathname@3.0.0: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve.exports@2.0.3: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} @@ -18098,6 +18332,11 @@ packages: typescript: optional: true + tsx@4.19.2: + resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} + engines: {node: '>=18.0.0'} + hasBin: true + tty-browserify@0.0.1: resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} @@ -18279,6 +18518,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + engines: {node: '>=14.17'} + hasBin: true + u3@0.1.1: resolution: {integrity: sha512-+J5D5ir763y+Am/QY6hXNRlwljIeRMZMGs0cT6qqZVVzzT3X3nFPXVyPOFRMOR4kupB0T8JnCdpWdp6Q/iXn3w==} @@ -19453,11 +19697,11 @@ snapshots: optionalDependencies: graphql: 16.10.0 - '@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.6.3)': + '@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.3)': dependencies: - '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.6.3) + '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.3) graphql: 16.10.0 - typescript: 5.6.3 + typescript: 5.7.3 '@acuminous/bitsyntax@0.1.2': dependencies: @@ -19588,6 +19832,16 @@ snapshots: transitivePeerDependencies: - zod + '@ai-sdk/vue@0.0.59(vue@3.5.13(typescript@5.7.3))(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) + swrv: 1.0.4(vue@3.5.13(typescript@5.7.3)) + optionalDependencies: + vue: 3.5.13(typescript@5.7.3) + transitivePeerDependencies: + - zod + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3)': dependencies: '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3) @@ -19900,14 +20154,14 @@ snapshots: '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-polly@3.726.0': + '@aws-sdk/client-polly@3.726.1': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.0) - '@aws-sdk/client-sts': 3.726.0 + '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.1) + '@aws-sdk/client-sts': 3.726.1 '@aws-sdk/core': 3.723.0 - '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) '@aws-sdk/middleware-host-header': 3.723.0 '@aws-sdk/middleware-logger': 3.723.0 '@aws-sdk/middleware-recursion-detection': 3.723.0 @@ -19947,15 +20201,15 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-s3@3.726.0': + '@aws-sdk/client-s3@3.726.1': 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.726.0(@aws-sdk/client-sts@3.726.0) - '@aws-sdk/client-sts': 3.726.0 + '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.1) + '@aws-sdk/client-sts': 3.726.1 '@aws-sdk/core': 3.723.0 - '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) '@aws-sdk/middleware-bucket-endpoint': 3.726.0 '@aws-sdk/middleware-expect-continue': 3.723.0 '@aws-sdk/middleware-flexible-checksums': 3.723.0 @@ -20010,13 +20264,13 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0)': + '@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1)': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sts': 3.726.0 + '@aws-sdk/client-sts': 3.726.1 '@aws-sdk/core': 3.723.0 - '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) '@aws-sdk/middleware-host-header': 3.723.0 '@aws-sdk/middleware-logger': 3.723.0 '@aws-sdk/middleware-recursion-detection': 3.723.0 @@ -20098,13 +20352,13 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sts@3.726.0': + '@aws-sdk/client-sts@3.726.1': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.1) '@aws-sdk/core': 3.723.0 - '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) '@aws-sdk/middleware-host-header': 3.723.0 '@aws-sdk/middleware-logger': 3.723.0 '@aws-sdk/middleware-recursion-detection': 3.723.0 @@ -20143,14 +20397,14 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-transcribe-streaming@3.726.0': + '@aws-sdk/client-transcribe-streaming@3.726.1': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.0) - '@aws-sdk/client-sts': 3.726.0 + '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.1) + '@aws-sdk/client-sts': 3.726.1 '@aws-sdk/core': 3.723.0 - '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) '@aws-sdk/eventstream-handler-node': 3.723.0 '@aws-sdk/middleware-eventstream': 3.723.0 '@aws-sdk/middleware-host-header': 3.723.0 @@ -20231,15 +20485,15 @@ snapshots: '@smithy/util-stream': 4.0.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0)': + '@aws-sdk/credential-provider-ini@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1)': dependencies: - '@aws-sdk/client-sts': 3.726.0 + '@aws-sdk/client-sts': 3.726.1 '@aws-sdk/core': 3.723.0 '@aws-sdk/credential-provider-env': 3.723.0 '@aws-sdk/credential-provider-http': 3.723.0 '@aws-sdk/credential-provider-process': 3.723.0 - '@aws-sdk/credential-provider-sso': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0)) - '@aws-sdk/credential-provider-web-identity': 3.723.0(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/credential-provider-sso': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1)) + '@aws-sdk/credential-provider-web-identity': 3.723.0(@aws-sdk/client-sts@3.726.1) '@aws-sdk/types': 3.723.0 '@smithy/credential-provider-imds': 4.0.1 '@smithy/property-provider': 4.0.1 @@ -20250,14 +20504,14 @@ snapshots: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-node@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0)': + '@aws-sdk/credential-provider-node@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1)': dependencies: '@aws-sdk/credential-provider-env': 3.723.0 '@aws-sdk/credential-provider-http': 3.723.0 - '@aws-sdk/credential-provider-ini': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/credential-provider-ini': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) '@aws-sdk/credential-provider-process': 3.723.0 - '@aws-sdk/credential-provider-sso': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0)) - '@aws-sdk/credential-provider-web-identity': 3.723.0(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/credential-provider-sso': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1)) + '@aws-sdk/credential-provider-web-identity': 3.723.0(@aws-sdk/client-sts@3.726.1) '@aws-sdk/types': 3.723.0 '@smithy/credential-provider-imds': 4.0.1 '@smithy/property-provider': 4.0.1 @@ -20278,11 +20532,11 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))': + '@aws-sdk/credential-provider-sso@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))': dependencies: '@aws-sdk/client-sso': 3.726.0 '@aws-sdk/core': 3.723.0 - '@aws-sdk/token-providers': 3.723.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0)) + '@aws-sdk/token-providers': 3.723.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1)) '@aws-sdk/types': 3.723.0 '@smithy/property-provider': 4.0.1 '@smithy/shared-ini-file-loader': 4.0.1 @@ -20292,9 +20546,9 @@ snapshots: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-web-identity@3.723.0(@aws-sdk/client-sts@3.726.0)': + '@aws-sdk/credential-provider-web-identity@3.723.0(@aws-sdk/client-sts@3.726.1)': dependencies: - '@aws-sdk/client-sts': 3.726.0 + '@aws-sdk/client-sts': 3.726.1 '@aws-sdk/core': 3.723.0 '@aws-sdk/types': 3.723.0 '@smithy/property-provider': 4.0.1 @@ -20440,7 +20694,7 @@ snapshots: '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@aws-sdk/s3-request-presigner@3.726.0': + '@aws-sdk/s3-request-presigner@3.726.1': dependencies: '@aws-sdk/signature-v4-multi-region': 3.723.0 '@aws-sdk/types': 3.723.0 @@ -20460,9 +20714,9 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/token-providers@3.723.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.0))': + '@aws-sdk/token-providers@3.723.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))': dependencies: - '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.0) + '@aws-sdk/client-sso-oidc': 3.726.0(@aws-sdk/client-sts@3.726.1) '@aws-sdk/types': 3.723.0 '@smithy/property-provider': 4.0.1 '@smithy/shared-ini-file-loader': 4.0.1 @@ -20522,20 +20776,20 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.3': {} + '@babel/compat-data@7.26.5': {} '@babel/core@7.26.0': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.3 - '@babel/helper-compilation-targets': 7.25.9 + '@babel/generator': 7.26.5 + '@babel/helper-compilation-targets': 7.26.5 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.3 + '@babel/parser': 7.26.5 '@babel/template': 7.25.9 - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 convert-source-map: 2.0.0 debug: 4.4.0(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -20544,21 +20798,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.26.3': + '@babel/generator@7.26.5': dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 - '@babel/helper-compilation-targets@7.25.9': + '@babel/helper-compilation-targets@7.26.5': dependencies: - '@babel/compat-data': 7.26.3 + '@babel/compat-data': 7.26.5 '@babel/helper-validator-option': 7.25.9 browserslist: 4.24.4 lru-cache: 5.1.1 @@ -20570,9 +20824,9 @@ snapshots: '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0) '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.26.5 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -20587,8 +20841,8 @@ snapshots: '@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 debug: 4.4.0(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.10 @@ -20597,15 +20851,15 @@ snapshots: '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color @@ -20614,38 +20868,38 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 - '@babel/helper-plugin-utils@7.25.9': {} + '@babel/helper-plugin-utils@7.26.5': {} '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)': + '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color @@ -20658,42 +20912,42 @@ snapshots: '@babel/helper-wrap-function@7.25.9': dependencies: '@babel/template': 7.25.9 - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color '@babel/helpers@7.26.0': dependencies: '@babel/template': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 - '@babel/parser@7.26.3': + '@babel/parser@7.26.5': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: @@ -20702,8 +20956,8 @@ snapshots: '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color @@ -20714,115 +20968,115 @@ snapshots: '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color @@ -20830,26 +21084,26 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -20857,7 +21111,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -20865,10 +21119,10 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.26.4 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0) + '@babel/traverse': 7.26.5 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -20876,50 +21130,50 @@ snapshots: '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/template': 7.25.9 '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color @@ -20927,37 +21181,37 @@ snapshots: '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -20965,7 +21219,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -20973,9 +21227,9 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color @@ -20983,7 +21237,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -20991,47 +21245,47 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-transform-nullish-coalescing-operator@7.26.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0) transitivePeerDependencies: - supports-color '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color @@ -21039,13 +21293,13 @@ snapshots: '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -21054,24 +21308,24 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-react-constant-elements@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.0)': dependencies: @@ -21083,21 +21337,21 @@ snapshots: '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color @@ -21105,30 +21359,30 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 regenerator-transform: 0.15.2 '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-runtime@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0) babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0) @@ -21139,12 +21393,12 @@ snapshots: '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color @@ -21152,24 +21406,24 @@ snapshots: '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-typescript@7.26.3(@babel/core@7.26.0)': + '@babel/plugin-transform-typescript@7.26.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: @@ -21178,32 +21432,32 @@ snapshots: '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/preset-env@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/compat-data': 7.26.3 + '@babel/compat-data': 7.26.5 '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) @@ -21217,7 +21471,7 @@ snapshots: '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.26.0) '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) @@ -21242,7 +21496,7 @@ snapshots: '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.26.5(@babel/core@7.26.0) '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) @@ -21276,14 +21530,14 @@ snapshots: '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/types': 7.26.3 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/types': 7.26.5 esutils: 2.0.3 '@babel/preset-react@7.26.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) @@ -21295,11 +21549,11 @@ snapshots: '@babel/preset-typescript@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) - '@babel/plugin-transform-typescript': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.26.5(@babel/core@7.26.0) transitivePeerDependencies: - supports-color @@ -21312,40 +21566,40 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 - '@babel/standalone@7.26.4': {} + '@babel/standalone@7.26.5': {} '@babel/template@7.25.9': dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 - '@babel/traverse@7.26.4': + '@babel/traverse@7.26.5': dependencies: '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.3 - '@babel/parser': 7.26.3 + '@babel/generator': 7.26.5 + '@babel/parser': 7.26.5 '@babel/template': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 debug: 4.4.0(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.26.3': + '@babel/types@7.26.5': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 '@bcoe/v8-coverage@0.2.3': {} - '@bigmi/core@0.0.4(bitcoinjs-lib@7.0.0-rc.0(typescript@5.6.3))(bs58@6.0.0)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))': + '@bigmi/core@0.0.4(bitcoinjs-lib@7.0.0-rc.0(typescript@5.7.3))(bs58@6.0.0)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))': dependencies: '@noble/hashes': 1.7.0 bech32: 2.0.0 - bitcoinjs-lib: 7.0.0-rc.0(typescript@5.6.3) + bitcoinjs-lib: 7.0.0-rc.0(typescript@5.7.3) bs58: 6.0.0 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) '@braintree/sanitize-url@7.1.1': {} @@ -22009,10 +22263,10 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@docusaurus/babel@3.6.3(@swc/core@1.10.7(@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/babel@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)': dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.26.3 + '@babel/generator': 7.26.5 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0) '@babel/preset-env': 7.26.0(@babel/core@7.26.0) @@ -22020,9 +22274,9 @@ snapshots: '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) '@babel/runtime': 7.26.0 '@babel/runtime-corejs3': 7.26.0 - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.26.5 '@docusaurus/logger': 3.6.3 - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) babel-plugin-dynamic-import-node: 2.3.3 fs-extra: 11.2.0 tslib: 2.8.1 @@ -22037,14 +22291,14 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/bundler@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@docusaurus/bundler@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)': dependencies: '@babel/core': 7.26.0 - '@docusaurus/babel': 3.6.3(@swc/core@1.10.7(@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/babel': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/cssnano-preset': 3.6.3 '@docusaurus/logger': 3.6.3 '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) clean-css: 5.3.3 copy-webpack-plugin: 11.0.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) @@ -22056,9 +22310,9 @@ snapshots: mini-css-extract-plugin: 2.9.2(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) null-loader: 4.0.1(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) postcss: 8.4.49 - postcss-loader: 7.3.4(postcss@8.4.49)(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) + postcss-loader: 7.3.4(postcss@8.4.49)(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) postcss-preset-env: 10.1.3(postcss@8.4.49) - react-dev-utils: 12.0.1(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) + react-dev-utils: 12.0.1(eslint@9.16.0(jiti@2.4.2))(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) terser-webpack-plugin: 5.3.11(@swc/core@1.10.7(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) tslib: 2.8.1 url-loader: 4.1.1(file-loader@6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) @@ -22082,15 +22336,15 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/babel': 3.6.3(@swc/core@1.10.7(@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/bundler': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@docusaurus/babel': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) + '@docusaurus/bundler': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/logger': 3.6.3 - '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@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/utils': 3.6.3(@swc/core@1.10.7(@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/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) + '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@mdx-js/react': 3.0.1(@types/react@18.3.12)(react@18.3.1) boxen: 6.2.1 chalk: 4.1.2 @@ -22112,7 +22366,7 @@ snapshots: p-map: 4.0.0 prompts: 2.4.2 react: 18.3.1 - react-dev-utils: 12.0.1(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) + react-dev-utils: 12.0.1(eslint@9.16.0(jiti@2.4.2))(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) react-dom: 18.3.1(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' @@ -22172,11 +22426,11 @@ snapshots: transitivePeerDependencies: - webpack - '@docusaurus/mdx-loader@3.6.3(@swc/core@1.10.7(@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/mdx-loader@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)': dependencies: '@docusaurus/logger': 3.6.3 - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@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/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) + '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@mdx-js/mdx': 3.1.0(acorn@8.14.0) '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 @@ -22228,17 +22482,17 @@ snapshots: - uglify-js - webpack-cli - '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/logger': 3.6.3 - '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@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/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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 11.2.0 @@ -22272,17 +22526,17 @@ snapshots: - vue-template-compiler - webpack-cli - '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/logger': 3.6.3 - '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@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/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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-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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.2.0 @@ -22314,13 +22568,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-pages@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-pages@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@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/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@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/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) + '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -22347,11 +22601,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-debug@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-debug@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -22378,11 +22632,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-analytics@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-google-analytics@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 @@ -22407,11 +22661,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-gtag@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-google-gtag@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@types/gtag.js': 0.0.12 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -22437,11 +22691,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-google-tag-manager@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 @@ -22466,14 +22720,14 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-ideal-image@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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/plugin-ideal-image@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/lqip-loader': 3.6.3(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) '@docusaurus/responsive-loader': 1.7.0(sharp@0.32.6) '@docusaurus/theme-translations': 3.6.3 '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@slorber/react-ideal-image': 0.0.12(prop-types@15.8.1)(react-waypoint@10.3.0(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -22503,14 +22757,14 @@ snapshots: - vue-template-compiler - webpack-cli - '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-sitemap@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/logger': 3.6.3 '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -22537,20 +22791,20 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/preset-classic@3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-pages': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-debug': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-google-analytics': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-google-gtag': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-google-tag-manager': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-sitemap': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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.19.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.19.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-content-pages': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-debug': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-google-analytics': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-google-gtag': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-google-tag-manager': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/theme-classic': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) + '@docusaurus/theme-search-algolia': 3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@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) @@ -22589,21 +22843,21 @@ snapshots: optionalDependencies: sharp: 0.32.6 - '@docusaurus/theme-classic@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/logger': 3.6.3 - '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@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/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-pages': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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/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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-content-pages': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/theme-translations': 3.6.3 '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@mdx-js/react': 3.0.1(@types/react@18.3.12)(react@18.3.1) clsx: 2.1.1 copy-text-to-clipboard: 3.2.0 @@ -22640,12 +22894,12 @@ snapshots: - vue-template-compiler - webpack-cli - '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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-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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)': dependencies: - '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@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/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 '@types/react': 18.3.12 @@ -22666,13 +22920,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-mermaid@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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-mermaid@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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-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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) mermaid: 11.4.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -22699,16 +22953,16 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-search-algolia@3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.19.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@docsearch/react': 3.8.2(@algolia/client-search@5.19.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(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.7(@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/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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/theme-translations': 3.6.3 - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils-validation': 3.6.3(@swc/core@1.10.7(@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/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) + '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) algoliasearch: 4.24.0 algoliasearch-helper: 3.22.6(algoliasearch@4.24.0) clsx: 2.1.1 @@ -22783,10 +23037,10 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-validation@3.6.3(@swc/core@1.10.7(@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/utils-validation@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)': dependencies: '@docusaurus/logger': 3.6.3 - '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@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/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fs-extra: 11.2.0 joi: 17.13.3 @@ -22804,12 +23058,12 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.6.3(@swc/core@1.10.7(@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/utils@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)': dependencies: '@docusaurus/logger': 3.6.3 '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@svgr/webpack': 8.1.0(typescript@5.6.3) + '@svgr/webpack': 8.1.0(typescript@5.7.3) escape-string-regexp: 4.0.0 file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) fs-extra: 11.2.0 @@ -22869,6 +23123,106 @@ snapshots: '@huggingface/jinja': 0.2.2 onnxruntime-node: 1.20.1 + '@elizaos/core@0.1.7(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)': + dependencies: + '@ai-sdk/anthropic': 0.0.56(zod@3.23.8) + '@ai-sdk/google': 0.0.55(zod@3.23.8) + '@ai-sdk/google-vertex': 0.0.43(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(zod@3.23.8) + '@ai-sdk/groq': 0.0.3(zod@3.23.8) + '@ai-sdk/openai': 1.0.5(zod@3.23.8) + '@anthropic-ai/sdk': 0.30.1(encoding@0.1.13) + '@fal-ai/client': 1.2.0 + '@types/uuid': 10.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.17.3))(svelte@5.17.3)(zod@3.23.8) + anthropic-vertex-ai: 1.0.2(encoding@0.1.13)(zod@3.23.8) + fastembed: 1.14.1 + fastestsmallesttextencoderdecoder: 1.0.22 + gaxios: 6.7.1(encoding@0.1.13) + glob: 11.0.0 + handlebars: 4.7.8 + js-sha1: 0.7.0 + js-tiktoken: 1.0.15 + langchain: 0.3.6(@langchain/core@0.3.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(handlebars@4.7.8)(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) + ollama-ai-provider: 0.16.1(zod@3.23.8) + openai: 4.73.0(encoding@0.1.13)(zod@3.23.8) + tinyld: 1.3.4 + together-ai: 0.7.0(encoding@0.1.13) + unique-names-generator: 4.7.1 + uuid: 11.0.3 + zod: 3.23.8 + transitivePeerDependencies: + - '@google-cloud/vertexai' + - '@langchain/anthropic' + - '@langchain/aws' + - '@langchain/cohere' + - '@langchain/core' + - '@langchain/google-genai' + - '@langchain/google-vertexai' + - '@langchain/groq' + - '@langchain/mistralai' + - '@langchain/ollama' + - axios + - cheerio + - encoding + - peggy + - react + - solid-js + - sswr + - supports-color + - svelte + - typeorm + - vue + + '@elizaos/core@0.1.7(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)': + dependencies: + '@ai-sdk/anthropic': 0.0.56(zod@3.23.8) + '@ai-sdk/google': 0.0.55(zod@3.23.8) + '@ai-sdk/google-vertex': 0.0.43(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(zod@3.23.8) + '@ai-sdk/groq': 0.0.3(zod@3.23.8) + '@ai-sdk/openai': 1.0.5(zod@3.23.8) + '@anthropic-ai/sdk': 0.30.1(encoding@0.1.13) + '@fal-ai/client': 1.2.0 + '@types/uuid': 10.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.17.3))(svelte@5.17.3)(zod@3.23.8) + anthropic-vertex-ai: 1.0.2(encoding@0.1.13)(zod@3.23.8) + fastembed: 1.14.1 + fastestsmallesttextencoderdecoder: 1.0.22 + gaxios: 6.7.1(encoding@0.1.13) + glob: 11.0.0 + handlebars: 4.7.8 + js-sha1: 0.7.0 + js-tiktoken: 1.0.15 + langchain: 0.3.6(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(handlebars@4.7.8)(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) + ollama-ai-provider: 0.16.1(zod@3.23.8) + openai: 4.73.0(encoding@0.1.13)(zod@3.23.8) + tinyld: 1.3.4 + together-ai: 0.7.0(encoding@0.1.13) + unique-names-generator: 4.7.1 + uuid: 11.0.3 + zod: 3.23.8 + transitivePeerDependencies: + - '@google-cloud/vertexai' + - '@langchain/anthropic' + - '@langchain/aws' + - '@langchain/cohere' + - '@langchain/core' + - '@langchain/google-genai' + - '@langchain/google-vertexai' + - '@langchain/groq' + - '@langchain/mistralai' + - '@langchain/ollama' + - axios + - cheerio + - encoding + - peggy + - react + - solid-js + - sswr + - supports-color + - svelte + - typeorm + - vue + '@emnapi/core@1.3.1': dependencies: '@emnapi/wasi-threads': 1.0.1 @@ -22894,6 +23248,9 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true + '@esbuild/aix-ppc64@0.23.1': + optional: true + '@esbuild/aix-ppc64@0.24.2': optional: true @@ -22903,6 +23260,9 @@ snapshots: '@esbuild/android-arm64@0.21.5': optional: true + '@esbuild/android-arm64@0.23.1': + optional: true + '@esbuild/android-arm64@0.24.2': optional: true @@ -22912,6 +23272,9 @@ snapshots: '@esbuild/android-arm@0.21.5': optional: true + '@esbuild/android-arm@0.23.1': + optional: true + '@esbuild/android-arm@0.24.2': optional: true @@ -22921,6 +23284,9 @@ snapshots: '@esbuild/android-x64@0.21.5': optional: true + '@esbuild/android-x64@0.23.1': + optional: true + '@esbuild/android-x64@0.24.2': optional: true @@ -22930,6 +23296,9 @@ snapshots: '@esbuild/darwin-arm64@0.21.5': optional: true + '@esbuild/darwin-arm64@0.23.1': + optional: true + '@esbuild/darwin-arm64@0.24.2': optional: true @@ -22939,6 +23308,9 @@ snapshots: '@esbuild/darwin-x64@0.21.5': optional: true + '@esbuild/darwin-x64@0.23.1': + optional: true + '@esbuild/darwin-x64@0.24.2': optional: true @@ -22948,6 +23320,9 @@ snapshots: '@esbuild/freebsd-arm64@0.21.5': optional: true + '@esbuild/freebsd-arm64@0.23.1': + optional: true + '@esbuild/freebsd-arm64@0.24.2': optional: true @@ -22957,6 +23332,9 @@ snapshots: '@esbuild/freebsd-x64@0.21.5': optional: true + '@esbuild/freebsd-x64@0.23.1': + optional: true + '@esbuild/freebsd-x64@0.24.2': optional: true @@ -22966,6 +23344,9 @@ snapshots: '@esbuild/linux-arm64@0.21.5': optional: true + '@esbuild/linux-arm64@0.23.1': + optional: true + '@esbuild/linux-arm64@0.24.2': optional: true @@ -22975,6 +23356,9 @@ snapshots: '@esbuild/linux-arm@0.21.5': optional: true + '@esbuild/linux-arm@0.23.1': + optional: true + '@esbuild/linux-arm@0.24.2': optional: true @@ -22984,6 +23368,9 @@ snapshots: '@esbuild/linux-ia32@0.21.5': optional: true + '@esbuild/linux-ia32@0.23.1': + optional: true + '@esbuild/linux-ia32@0.24.2': optional: true @@ -22993,6 +23380,9 @@ snapshots: '@esbuild/linux-loong64@0.21.5': optional: true + '@esbuild/linux-loong64@0.23.1': + optional: true + '@esbuild/linux-loong64@0.24.2': optional: true @@ -23002,6 +23392,9 @@ snapshots: '@esbuild/linux-mips64el@0.21.5': optional: true + '@esbuild/linux-mips64el@0.23.1': + optional: true + '@esbuild/linux-mips64el@0.24.2': optional: true @@ -23011,6 +23404,9 @@ snapshots: '@esbuild/linux-ppc64@0.21.5': optional: true + '@esbuild/linux-ppc64@0.23.1': + optional: true + '@esbuild/linux-ppc64@0.24.2': optional: true @@ -23020,6 +23416,9 @@ snapshots: '@esbuild/linux-riscv64@0.21.5': optional: true + '@esbuild/linux-riscv64@0.23.1': + optional: true + '@esbuild/linux-riscv64@0.24.2': optional: true @@ -23029,6 +23428,9 @@ snapshots: '@esbuild/linux-s390x@0.21.5': optional: true + '@esbuild/linux-s390x@0.23.1': + optional: true + '@esbuild/linux-s390x@0.24.2': optional: true @@ -23038,6 +23440,9 @@ snapshots: '@esbuild/linux-x64@0.21.5': optional: true + '@esbuild/linux-x64@0.23.1': + optional: true + '@esbuild/linux-x64@0.24.2': optional: true @@ -23050,9 +23455,15 @@ snapshots: '@esbuild/netbsd-x64@0.21.5': optional: true + '@esbuild/netbsd-x64@0.23.1': + optional: true + '@esbuild/netbsd-x64@0.24.2': optional: true + '@esbuild/openbsd-arm64@0.23.1': + optional: true + '@esbuild/openbsd-arm64@0.24.2': optional: true @@ -23062,6 +23473,9 @@ snapshots: '@esbuild/openbsd-x64@0.21.5': optional: true + '@esbuild/openbsd-x64@0.23.1': + optional: true + '@esbuild/openbsd-x64@0.24.2': optional: true @@ -23071,6 +23485,9 @@ snapshots: '@esbuild/sunos-x64@0.21.5': optional: true + '@esbuild/sunos-x64@0.23.1': + optional: true + '@esbuild/sunos-x64@0.24.2': optional: true @@ -23080,6 +23497,9 @@ snapshots: '@esbuild/win32-arm64@0.21.5': optional: true + '@esbuild/win32-arm64@0.23.1': + optional: true + '@esbuild/win32-arm64@0.24.2': optional: true @@ -23089,6 +23509,9 @@ snapshots: '@esbuild/win32-ia32@0.21.5': optional: true + '@esbuild/win32-ia32@0.23.1': + optional: true + '@esbuild/win32-ia32@0.24.2': optional: true @@ -23098,6 +23521,9 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true + '@esbuild/win32-x64@0.23.1': + optional: true + '@esbuild/win32-x64@0.24.2': optional: true @@ -23121,6 +23547,10 @@ snapshots: transitivePeerDependencies: - supports-color + '@eslint/core@0.10.0': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/core@0.9.1': dependencies: '@types/json-schema': 7.0.15 @@ -23159,8 +23589,9 @@ snapshots: '@eslint/object-schema@2.1.5': {} - '@eslint/plugin-kit@0.2.4': + '@eslint/plugin-kit@0.2.5': dependencies: + '@eslint/core': 0.10.0 levn: 0.4.1 '@ethereumjs/rlp@4.0.1': {} @@ -23675,10 +24106,61 @@ snapshots: '@fuels/vm-asm@0.58.2': {} - '@goat-sdk/adapter-vercel-ai@0.2.0(@goat-sdk/core@0.4.0)(ai@3.4.33(openai@4.78.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8))': + '@glacier-network/client@0.2.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@types/json-schema': 7.0.15 + axios: 1.7.9(debug@4.4.0) + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + '@glacier-network/elizaos-adapter@0.0.1-alpha.1(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(utf-8-validate@5.0.10)': + dependencies: + '@elizaos/core': 0.1.7(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3) + '@glacier-network/client': 0.2.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@tavily/core': 0.0.2 + dotenv: 16.4.7 + sharp: 0.33.5 + typescript: 5.7.3 + transitivePeerDependencies: + - '@google-cloud/vertexai' + - '@langchain/anthropic' + - '@langchain/aws' + - '@langchain/cohere' + - '@langchain/core' + - '@langchain/google-genai' + - '@langchain/google-vertexai' + - '@langchain/groq' + - '@langchain/mistralai' + - '@langchain/ollama' + - axios + - bufferutil + - cheerio + - debug + - encoding + - peggy + - react + - solid-js + - sswr + - supports-color + - svelte + - typeorm + - utf-8-validate + - vue + + '@goat-sdk/adapter-vercel-ai@0.2.0(@goat-sdk/core@0.4.0)(ai@3.4.33(openai@4.78.1(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(vue@3.5.13(typescript@5.7.3))(zod@3.23.8))': dependencies: '@goat-sdk/core': 0.4.0 - ai: 3.4.33(openai@4.78.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8) + ai: 3.4.33(openai@4.78.1(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(vue@3.5.13(typescript@5.7.3))(zod@3.23.8) zod: 3.23.8 '@goat-sdk/core@0.4.0': @@ -23686,43 +24168,43 @@ snapshots: reflect-metadata: 0.2.2 zod: 3.23.8 - '@goat-sdk/plugin-erc20@0.2.2(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(viem@2.21.53(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))': + '@goat-sdk/plugin-erc20@0.2.2(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.21.53(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))': dependencies: '@goat-sdk/core': 0.4.0 - '@goat-sdk/wallet-evm': 0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10) - viem: 2.21.53(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + '@goat-sdk/wallet-evm': 0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10) + viem: 2.21.53(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) zod: 3.23.8 transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - '@goat-sdk/plugin-kim@0.1.2(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(viem@2.21.53(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))': + '@goat-sdk/plugin-kim@0.1.2(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.21.53(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))': dependencies: '@goat-sdk/core': 0.4.0 - '@goat-sdk/wallet-evm': 0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10) - viem: 2.21.53(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + '@goat-sdk/wallet-evm': 0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10) + viem: 2.21.53(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) zod: 3.23.8 transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - '@goat-sdk/wallet-evm@0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@goat-sdk/wallet-evm@0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@goat-sdk/core': 0.4.0 - abitype: 1.0.8(typescript@5.6.3)(zod@3.23.8) - viem: 2.21.49(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + abitype: 1.0.8(typescript@5.7.3)(zod@3.23.8) + viem: 2.21.49(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) zod: 3.23.8 transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - '@goat-sdk/wallet-viem@0.2.0(@goat-sdk/wallet-evm@0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10))(viem@2.21.53(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))': + '@goat-sdk/wallet-viem@0.2.0(@goat-sdk/wallet-evm@0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10))(viem@2.21.53(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))': dependencies: - '@goat-sdk/wallet-evm': 0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10) - viem: 2.21.53(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + '@goat-sdk/wallet-evm': 0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10) + viem: 2.21.53(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) '@google-cloud/vertexai@1.9.2(encoding@0.1.13)': dependencies: @@ -23731,18 +24213,18 @@ snapshots: - encoding - supports-color - '@gql.tada/cli-utils@1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.6.3))(graphql@16.10.0)(typescript@5.6.3)': + '@gql.tada/cli-utils@1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.3))(graphql@16.10.0)(typescript@5.7.3)': dependencies: - '@0no-co/graphqlsp': 1.12.16(graphql@16.10.0)(typescript@5.6.3) - '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.6.3) + '@0no-co/graphqlsp': 1.12.16(graphql@16.10.0)(typescript@5.7.3) + '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.3) graphql: 16.10.0 - typescript: 5.6.3 + typescript: 5.7.3 - '@gql.tada/internal@1.0.8(graphql@16.10.0)(typescript@5.6.3)': + '@gql.tada/internal@1.0.8(graphql@16.10.0)(typescript@5.7.3)': dependencies: '@0no-co/graphql.web': 1.0.13(graphql@16.10.0) graphql: 16.10.0 - typescript: 5.6.3 + typescript: 5.7.3 '@graphql-typed-document-node/core@3.2.0(graphql@16.10.0)': dependencies: @@ -23958,7 +24440,7 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -23972,7 +24454,7 @@ snapshots: 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.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -24185,7 +24667,7 @@ snapshots: '@kwsites/promise-deferred@1.1.1': {} - '@langchain/core@0.3.27(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))': + '@langchain/core@0.3.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))': dependencies: '@cfworker/json-schema': 4.1.0 ansi-styles: 5.2.0 @@ -24202,19 +24684,51 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/openai@0.3.16(@langchain/core@0.3.27(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': + '@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8))': + dependencies: + '@cfworker/json-schema': 4.1.0 + ansi-styles: 5.2.0 + camelcase: 6.3.0 + decamelize: 1.2.0 + js-tiktoken: 1.0.15 + langsmith: 0.2.15(openai@4.78.1(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.24.1(zod@3.23.8) + transitivePeerDependencies: + - openai + + '@langchain/openai@0.3.17(@langchain/core@0.3.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': dependencies: - '@langchain/core': 0.3.27(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) + '@langchain/core': 0.3.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) js-tiktoken: 1.0.15 - openai: 4.78.0(encoding@0.1.13)(zod@3.23.8) + openai: 4.78.1(encoding@0.1.13)(zod@3.23.8) 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.27(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))': + '@langchain/openai@0.3.17(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': dependencies: - '@langchain/core': 0.3.27(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) + '@langchain/core': 0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)) + js-tiktoken: 1.0.15 + openai: 4.78.1(encoding@0.1.13)(zod@3.23.8) + 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.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))': + dependencies: + '@langchain/core': 0.3.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) + js-tiktoken: 1.0.15 + + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))': + dependencies: + '@langchain/core': 0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)) js-tiktoken: 1.0.15 '@leichtgewicht/ip-codec@2.0.5': {} @@ -24238,7 +24752,7 @@ snapshots: - utf-8-validate - wait-for-expect - '@lens-protocol/client@2.2.0(@jest/globals@29.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)': + '@lens-protocol/client@2.2.0(@jest/globals@29.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(react@18.3.1)(utf-8-validate@5.0.10)': dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -24249,7 +24763,7 @@ snapshots: '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@ethersproject/wallet': 5.7.0 '@lens-protocol/blockchain-bindings': 0.10.2(@jest/globals@29.7.0)(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lens-protocol/gated-content': 0.5.1(@ethersproject/abi@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(zod@3.23.8) + '@lens-protocol/gated-content': 0.5.1(@ethersproject/abi@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(react@18.3.1)(utf-8-validate@5.0.10)(zod@3.23.8) '@lens-protocol/shared-kernel': 0.12.0 '@lens-protocol/storage': 0.8.1 graphql: 16.10.0 @@ -24298,7 +24812,7 @@ snapshots: optionalDependencies: '@jest/globals': 29.7.0 - '@lens-protocol/gated-content@0.5.1(@ethersproject/abi@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(zod@3.23.8)': + '@lens-protocol/gated-content@0.5.1(@ethersproject/abi@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(react@18.3.1)(utf-8-validate@5.0.10)(zod@3.23.8)': dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/address': 5.7.0 @@ -24313,7 +24827,7 @@ snapshots: '@lit-protocol/constants': 2.1.62 '@lit-protocol/crypto': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@lit-protocol/encryption': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lit-protocol/node-client': 2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@lit-protocol/node-client': 2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10) '@lit-protocol/types': 2.1.62 siwe: 2.3.2(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)) tslib: 2.8.1 @@ -24450,24 +24964,24 @@ snapshots: dependencies: '@lifi/types': 16.3.0 - '@lifi/sdk@3.4.1(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)))(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(typescript@5.6.3)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))': + '@lifi/sdk@3.4.1(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)))(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(typescript@5.7.3)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))': dependencies: - '@bigmi/core': 0.0.4(bitcoinjs-lib@7.0.0-rc.0(typescript@5.6.3))(bs58@6.0.0)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) + '@bigmi/core': 0.0.4(bitcoinjs-lib@7.0.0-rc.0(typescript@5.7.3))(bs58@6.0.0)(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)) '@lifi/types': 16.3.0 '@noble/curves': 1.8.0 '@noble/hashes': 1.7.0 '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bech32: 2.0.0 - bitcoinjs-lib: 7.0.0-rc.0(typescript@5.6.3) + bitcoinjs-lib: 7.0.0-rc.0(typescript@5.7.3) bs58: 6.0.0 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) transitivePeerDependencies: - typescript '@lifi/types@16.3.0': {} - '@lit-labs/ssr-dom-shim@1.2.1': {} + '@lit-labs/ssr-dom-shim@1.3.0': {} '@lit-protocol/access-control-conditions@2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: @@ -24481,14 +24995,14 @@ snapshots: - bufferutil - utf-8-validate - '@lit-protocol/auth-browser@2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@lit-protocol/auth-browser@2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)': dependencies: '@lit-protocol/constants': 2.1.62 '@lit-protocol/misc': 2.1.62 '@lit-protocol/misc-browser': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@lit-protocol/types': 2.1.62 '@lit-protocol/uint8arrays': 2.1.62 - '@walletconnect/ethereum-provider': 2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/ethereum-provider': 2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10) ethers: 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) lit-connect-modal: 0.1.11 lit-siwe: 1.1.8(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0) @@ -24589,10 +25103,10 @@ snapshots: '@lit-protocol/nacl@2.1.62': {} - '@lit-protocol/node-client@2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@lit-protocol/node-client@2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)': dependencies: '@lit-protocol/access-control-conditions': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lit-protocol/auth-browser': 2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@lit-protocol/auth-browser': 2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10) '@lit-protocol/bls-sdk': 2.1.62 '@lit-protocol/constants': 2.1.62 '@lit-protocol/crypto': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -24604,7 +25118,7 @@ snapshots: '@lit-protocol/nacl': 2.1.62 '@lit-protocol/types': 2.1.62 '@lit-protocol/uint8arrays': 2.1.62 - '@walletconnect/ethereum-provider': 2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@walletconnect/ethereum-provider': 2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10) ethers: 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) jszip: 3.10.1 lit-connect-modal: 0.1.11 @@ -24648,7 +25162,7 @@ snapshots: '@lit/reactive-element@1.6.3': dependencies: - '@lit-labs/ssr-dom-shim': 1.2.1 + '@lit-labs/ssr-dom-shim': 1.3.0 '@lukeed/csprng@1.1.0': {} @@ -24902,7 +25416,7 @@ snapshots: dependencies: bs58: 6.0.0 - '@mysten/sui@1.18.1(typescript@5.6.3)': + '@mysten/sui@1.19.0(typescript@5.7.3)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) '@mysten/bcs': 1.2.1 @@ -24913,7 +25427,7 @@ snapshots: '@simplewebauthn/typescript-types': 7.4.0 '@suchipi/femver': 1.0.0 bech32: 2.0.0 - gql.tada: 1.8.10(graphql@16.10.0)(typescript@5.6.3) + gql.tada: 1.8.10(graphql@16.10.0)(typescript@5.7.3) graphql: 16.10.0 jose: 5.9.6 poseidon-lite: 0.2.1 @@ -25057,11 +25571,11 @@ snapshots: transitivePeerDependencies: - encoding - '@neynar/nodejs-sdk@2.8.0(bufferutil@4.0.9)(class-transformer@0.5.1)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)': + '@neynar/nodejs-sdk@2.8.0(bufferutil@4.0.9)(class-transformer@0.5.1)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)': dependencies: '@openapitools/openapi-generator-cli': 2.15.3(class-transformer@0.5.1)(encoding@0.1.13) semver: 7.6.3 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) transitivePeerDependencies: - '@nestjs/microservices' - '@nestjs/platform-express' @@ -25770,7 +26284,7 @@ snapshots: - supports-color - utf-8-validate - '@onflow/fcl-wc@5.5.1(@onflow/fcl-core@1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@5.0.10))(@types/react@18.3.12)(bufferutil@4.0.9)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(utf-8-validate@5.0.10)': + '@onflow/fcl-wc@5.5.1(@onflow/fcl-core@1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@5.0.10))(@types/react@18.3.12)(bufferutil@4.0.9)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(tsx@4.19.2)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 '@onflow/config': 1.5.1 @@ -25782,7 +26296,7 @@ snapshots: '@walletconnect/sign-client': 2.17.3(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@5.0.10) '@walletconnect/types': 2.17.3(ioredis@5.4.2) '@walletconnect/utils': 2.17.3(ioredis@5.4.2) - postcss-cli: 11.0.0(jiti@2.4.2)(postcss@8.4.49) + postcss-cli: 11.0.0(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2) preact: 10.25.4 tailwindcss: 3.4.15(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) transitivePeerDependencies: @@ -25815,12 +26329,12 @@ snapshots: - uploadthing - utf-8-validate - '@onflow/fcl@1.13.1(@types/react@18.3.12)(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(utf-8-validate@5.0.10)': + '@onflow/fcl@1.13.1(@types/react@18.3.12)(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(tsx@4.19.2)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 '@onflow/config': 1.5.1 '@onflow/fcl-core': 1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@5.0.10) - '@onflow/fcl-wc': 5.5.1(@onflow/fcl-core@1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@5.0.10))(@types/react@18.3.12)(bufferutil@4.0.9)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(utf-8-validate@5.0.10) + '@onflow/fcl-wc': 5.5.1(@onflow/fcl-core@1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@5.0.10))(@types/react@18.3.12)(bufferutil@4.0.9)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.4.49)(react@18.3.1)(tsx@4.19.2)(utf-8-validate@5.0.10) '@onflow/interaction': 0.0.11 '@onflow/rlp': 1.2.3 '@onflow/sdk': 1.5.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -26084,9 +26598,9 @@ snapshots: tslib: 2.8.1 webcrypto-core: 1.8.1 - '@phala/dstack-sdk@0.1.6(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)': + '@phala/dstack-sdk@0.1.6(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)': optionalDependencies: - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) transitivePeerDependencies: - bufferutil - typescript @@ -26193,7 +26707,7 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@puppeteer/browsers@0.5.0(typescript@5.6.3)': + '@puppeteer/browsers@0.5.0(typescript@5.7.3)': dependencies: debug: 4.3.4 extract-zip: 2.0.1 @@ -26204,7 +26718,7 @@ snapshots: unbzip2-stream: 1.4.3 yargs: 17.7.1 optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -26430,10 +26944,10 @@ snapshots: '@radix-ui/rect@1.1.0': {} - '@raydium-io/raydium-sdk-v2@0.1.82-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@raydium-io/raydium-sdk-v2@0.1.82-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) axios: 1.7.9(debug@4.4.0) big.js: 6.2.2 @@ -27335,10 +27849,10 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@solana-developers/helpers@2.5.6(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@solana-developers/helpers@2.5.6(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@solana/spl-token': 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bs58: 6.0.0 dotenv: 16.4.7 @@ -27368,10 +27882,10 @@ snapshots: dependencies: '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-core@2.0.0-rc.1(typescript@5.6.3)': + '@solana/codecs-core@2.0.0-rc.1(typescript@5.7.3)': dependencies: - '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) - typescript: 5.6.3 + '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) + typescript: 5.7.3 '@solana/codecs-data-structures@2.0.0-preview.2': dependencies: @@ -27379,23 +27893,23 @@ snapshots: '@solana/codecs-numbers': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.6.3)': + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.7.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) - typescript: 5.6.3 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) + typescript: 5.7.3 '@solana/codecs-numbers@2.0.0-preview.2': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.6.3)': + '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) - typescript: 5.6.3 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) + typescript: 5.7.3 '@solana/codecs-strings@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: @@ -27404,13 +27918,13 @@ snapshots: '@solana/errors': 2.0.0-preview.2 fastestsmallesttextencoderdecoder: 1.0.22 - '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 5.6.3 + typescript: 5.7.3 '@solana/codecs@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: @@ -27422,14 +27936,14 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - typescript: 5.6.3 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -27438,25 +27952,25 @@ snapshots: chalk: 5.4.1 commander: 12.1.0 - '@solana/errors@2.0.0-rc.1(typescript@5.6.3)': + '@solana/errors@2.0.0-rc.1(typescript@5.7.3)': dependencies: chalk: 5.4.1 commander: 12.1.0 - typescript: 5.6.3 + typescript: 5.7.3 '@solana/options@2.0.0-preview.2': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/codecs-numbers': 2.0.0-preview.2 - '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) - typescript: 5.6.3 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -27468,28 +27982,28 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/spl-token-group@0.0.7(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token@0.4.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: @@ -27499,12 +28013,12 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: @@ -27668,14 +28182,14 @@ snapshots: '@starknet-io/types-js@0.7.10': {} - '@story-protocol/core-sdk@1.2.0-rc.3(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)': + '@story-protocol/core-sdk@1.2.0-rc.3(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)': dependencies: - abitype: 0.10.3(typescript@5.6.3)(zod@3.23.8) + abitype: 0.10.3(typescript@5.7.3)(zod@3.23.8) axios: 1.7.9(debug@4.4.0) bs58: 6.0.0 dotenv: 16.4.7 multiformats: 9.9.0 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) transitivePeerDependencies: - bufferutil - debug @@ -27771,12 +28285,12 @@ snapshots: '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.26.0) '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.26.0) - '@svgr/core@8.1.0(typescript@5.6.3)': + '@svgr/core@8.1.0(typescript@5.7.3)': dependencies: '@babel/core': 7.26.0 '@svgr/babel-preset': 8.1.0(@babel/core@7.26.0) camelcase: 6.3.0 - cosmiconfig: 8.3.6(typescript@5.6.3) + cosmiconfig: 8.3.6(typescript@5.7.3) snake-case: 3.0.4 transitivePeerDependencies: - supports-color @@ -27784,38 +28298,38 @@ snapshots: '@svgr/hast-util-to-babel-ast@8.0.0': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 entities: 4.5.0 - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.6.3))': + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.7.3))': dependencies: '@babel/core': 7.26.0 '@svgr/babel-preset': 8.1.0(@babel/core@7.26.0) - '@svgr/core': 8.1.0(typescript@5.6.3) + '@svgr/core': 8.1.0(typescript@5.7.3) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color - '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.6.3))(typescript@5.6.3)': + '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.7.3))(typescript@5.7.3)': dependencies: - '@svgr/core': 8.1.0(typescript@5.6.3) - cosmiconfig: 8.3.6(typescript@5.6.3) + '@svgr/core': 8.1.0(typescript@5.7.3) + cosmiconfig: 8.3.6(typescript@5.7.3) deepmerge: 4.3.1 svgo: 3.3.2 transitivePeerDependencies: - typescript - '@svgr/webpack@8.1.0(typescript@5.6.3)': + '@svgr/webpack@8.1.0(typescript@5.7.3)': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-constant-elements': 7.25.9(@babel/core@7.26.0) '@babel/preset-env': 7.26.0(@babel/core@7.26.0) '@babel/preset-react': 7.26.3(@babel/core@7.26.0) '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) - '@svgr/core': 8.1.0(typescript@5.6.3) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.6.3)) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.6.3))(typescript@5.6.3) + '@svgr/core': 8.1.0(typescript@5.7.3) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.7.3)) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.7.3))(typescript@5.7.3) transitivePeerDependencies: - supports-color - typescript @@ -27961,24 +28475,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@types/better-sqlite3@7.6.12': dependencies: @@ -28818,7 +29332,7 @@ snapshots: '@vue/compiler-core@3.5.13': dependencies: - '@babel/parser': 7.26.3 + '@babel/parser': 7.26.5 '@vue/shared': 3.5.13 entities: 4.5.0 estree-walker: 2.0.2 @@ -28831,7 +29345,7 @@ snapshots: '@vue/compiler-sfc@3.5.13': dependencies: - '@babel/parser': 7.26.3 + '@babel/parser': 7.26.5 '@vue/compiler-core': 3.5.13 '@vue/compiler-dom': 3.5.13 '@vue/compiler-ssr': 3.5.13 @@ -28868,6 +29382,12 @@ snapshots: '@vue/shared': 3.5.13 vue: 3.5.13(typescript@5.6.3) + '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.7.3))': + dependencies: + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + vue: 3.5.13(typescript@5.7.3) + '@vue/shared@3.5.13': {} '@wallet-standard/base@1.1.0': {} @@ -28921,7 +29441,7 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@walletconnect/ethereum-provider@2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 @@ -29337,20 +29857,20 @@ snapshots: fs-extra: 10.1.0 yargs: 17.7.2 - abitype@0.10.3(typescript@5.6.3)(zod@3.23.8): + abitype@0.10.3(typescript@5.7.3)(zod@3.23.8): optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.3 zod: 3.23.8 - abitype@0.7.1(typescript@5.6.3)(zod@3.23.8): + abitype@0.7.1(typescript@5.7.3)(zod@3.23.8): dependencies: - typescript: 5.6.3 + typescript: 5.7.3 optionalDependencies: zod: 3.23.8 - abitype@1.0.6(typescript@5.6.3)(zod@3.23.8): + abitype@1.0.6(typescript@5.7.3)(zod@3.23.8): optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.3 zod: 3.23.8 abitype@1.0.7(typescript@5.6.3)(zod@3.23.8): @@ -29358,11 +29878,21 @@ snapshots: typescript: 5.6.3 zod: 3.23.8 + abitype@1.0.7(typescript@5.7.3)(zod@3.23.8): + optionalDependencies: + typescript: 5.7.3 + zod: 3.23.8 + abitype@1.0.8(typescript@5.6.3)(zod@3.23.8): optionalDependencies: typescript: 5.6.3 zod: 3.23.8 + abitype@1.0.8(typescript@5.7.3)(zod@3.23.8): + optionalDependencies: + typescript: 5.7.3 + zod: 3.23.8 + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -29481,7 +30011,7 @@ snapshots: - solid-js - vue - ai@3.4.33(openai@4.78.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(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.17.3))(svelte@5.17.3)(zod@3.23.8): dependencies: '@ai-sdk/provider': 0.0.26 '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) @@ -29489,7 +30019,32 @@ snapshots: '@ai-sdk/solid': 0.0.54(zod@3.23.8) '@ai-sdk/svelte': 0.0.57(svelte@5.17.3)(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) + '@ai-sdk/vue': 0.0.59(vue@3.5.13(typescript@5.7.3))(zod@3.23.8) + '@opentelemetry/api': 1.9.0 + eventsource-parser: 1.1.2 + json-schema: 0.4.0 + jsondiffpatch: 0.6.0 + secure-json-parse: 2.7.0 + 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.17.3) + svelte: 5.17.3 + zod: 3.23.8 + transitivePeerDependencies: + - solid-js + - vue + + ai@3.4.33(openai@4.78.1(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(vue@3.5.13(typescript@5.7.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.17.3)(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.7.3))(zod@3.23.8) '@opentelemetry/api': 1.9.0 eventsource-parser: 1.1.2 json-schema: 0.4.0 @@ -29497,7 +30052,7 @@ snapshots: secure-json-parse: 2.7.0 zod-to-json-schema: 3.24.1(zod@3.23.8) optionalDependencies: - openai: 4.78.0(encoding@0.1.13)(zod@3.23.8) + openai: 4.78.1(encoding@0.1.13)(zod@3.23.8) react: 18.3.1 sswr: 2.1.0(svelte@5.17.3) svelte: 5.17.3 @@ -29902,7 +30457,7 @@ snapshots: babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -29913,13 +30468,13 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.0): dependencies: - '@babel/compat-data': 7.26.3 + '@babel/compat-data': 7.26.5 '@babel/core': 7.26.0 '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) semver: 6.3.1 @@ -30137,14 +30692,14 @@ snapshots: dependencies: '@noble/hashes': 1.3.0 - bitcoinjs-lib@7.0.0-rc.0(typescript@5.6.3): + bitcoinjs-lib@7.0.0-rc.0(typescript@5.7.3): dependencies: '@noble/hashes': 1.7.0 bech32: 2.0.0 bip174: 3.0.0-rc.1 bs58check: 4.0.0 uint8array-tools: 0.0.9 - valibot: 0.38.0(typescript@5.6.3) + valibot: 0.38.0(typescript@5.7.3) varuint-bitcoin: 2.0.0 transitivePeerDependencies: - typescript @@ -30740,7 +31295,7 @@ snapshots: chokidar@4.0.3: dependencies: - readdirp: 4.0.2 + readdirp: 4.1.1 chownr@1.1.4: {} @@ -30786,13 +31341,13 @@ snapshots: dependencies: consola: 3.3.3 - cive@0.7.1(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10): + cive@0.7.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10): dependencies: '@noble/curves': 1.8.0 '@noble/hashes': 1.7.0 '@scure/bip32': 1.6.1 '@scure/bip39': 1.5.1 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) zod: 3.23.8 transitivePeerDependencies: - bufferutil @@ -31272,6 +31827,15 @@ snapshots: optionalDependencies: typescript: 5.6.3 + cosmiconfig@8.3.6(typescript@5.7.3): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.7.3 + crc-32@1.2.2: {} create-ecdh@4.0.4: @@ -31311,13 +31875,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): + create-jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.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.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -32127,9 +32691,9 @@ snapshots: dependencies: esutils: 2.0.3 - docusaurus-lunr-search@3.5.0(@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + docusaurus-lunr-search@3.5.0(@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 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.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.16.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) autocomplete.js: 0.37.1 clsx: 1.2.1 gauge: 3.0.2 @@ -32147,9 +32711,9 @@ snapshots: unified: 9.2.2 unist-util-is: 4.1.0 - docusaurus-plugin-typedoc@1.0.5(typedoc-plugin-markdown@4.2.10(typedoc@0.26.11(typescript@5.6.3))): + docusaurus-plugin-typedoc@1.0.5(typedoc-plugin-markdown@4.2.10(typedoc@0.26.11(typescript@5.7.3))): dependencies: - typedoc-plugin-markdown: 4.2.10(typedoc@0.26.11(typescript@5.6.3)) + typedoc-plugin-markdown: 4.2.10(typedoc@0.26.11(typescript@5.7.3)) dom-converter@0.2.0: dependencies: @@ -32259,8 +32823,8 @@ snapshots: echogarden@2.0.7(bufferutil@4.0.9)(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.726.0 - '@aws-sdk/client-transcribe-streaming': 3.726.0 + '@aws-sdk/client-polly': 3.726.1 + '@aws-sdk/client-transcribe-streaming': 3.726.1 '@echogarden/audio-io': 0.2.3 '@echogarden/espeak-ng-emscripten': 0.3.3 '@echogarden/fasttext-wasm': 0.1.0 @@ -32600,6 +33164,33 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + esbuild@0.24.2: optionalDependencies: '@esbuild/aix-ppc64': 0.24.2 @@ -32749,7 +33340,7 @@ snapshots: '@eslint/core': 0.9.1 '@eslint/eslintrc': 3.2.0 '@eslint/js': 9.16.0 - '@eslint/plugin-kit': 0.2.4 + '@eslint/plugin-kit': 0.2.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.1 @@ -33352,11 +33943,11 @@ snapshots: optionalDependencies: debug: 4.4.0(supports-color@8.1.1) - fomo-sdk-solana@1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10): + fomo-sdk-solana@1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10): dependencies: '@coral-xyz/anchor': 0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@raydium-io/raydium-sdk-v2': 0.1.82-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@raydium-io/raydium-sdk-v2': 0.1.82-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bs58: 6.0.0 coral-xyz3: '@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)' @@ -33387,7 +33978,7 @@ snapshots: forever-agent@0.6.1: {} - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.16.0(jiti@2.4.2))(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: '@babel/code-frame': 7.26.2 '@types/json-schema': 7.0.15 @@ -33402,7 +33993,7 @@ snapshots: schema-utils: 2.7.0 semver: 7.6.3 tapable: 1.1.3 - typescript: 5.6.3 + typescript: 5.7.3 webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) optionalDependencies: eslint: 9.16.0(jiti@2.4.2) @@ -33675,6 +34266,10 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.7 + get-tsconfig@4.8.1: + dependencies: + resolve-pkg-maps: 1.0.0 + get-uri@6.0.4: dependencies: basic-ftp: 5.0.5 @@ -33914,13 +34509,13 @@ snapshots: p-cancelable: 3.0.0 responselike: 3.0.0 - gql.tada@1.8.10(graphql@16.10.0)(typescript@5.6.3): + gql.tada@1.8.10(graphql@16.10.0)(typescript@5.7.3): dependencies: '@0no-co/graphql.web': 1.0.13(graphql@16.10.0) - '@0no-co/graphqlsp': 1.12.16(graphql@16.10.0)(typescript@5.6.3) - '@gql.tada/cli-utils': 1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.6.3))(graphql@16.10.0)(typescript@5.6.3) - '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.6.3) - typescript: 5.6.3 + '@0no-co/graphqlsp': 1.12.16(graphql@16.10.0)(typescript@5.7.3) + '@gql.tada/cli-utils': 1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.10.0)(typescript@5.7.3))(graphql@16.10.0)(typescript@5.7.3) + '@gql.tada/internal': 1.0.8(graphql@16.10.0)(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - '@gql.tada/svelte-support' - '@gql.tada/vue-support' @@ -33970,7 +34565,7 @@ snapshots: dependencies: duplexer: 0.1.2 - h3@1.13.0: + h3@1.13.1: dependencies: cookie-es: 1.2.2 crossws: 0.3.1 @@ -34005,7 +34600,7 @@ snapshots: hard-rejection@2.1.0: {} - hardhat@2.22.17(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.6.3))(typescript@5.6.3)(utf-8-validate@5.0.10): + hardhat@2.22.17(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.7.3))(typescript@5.7.3)(utf-8-validate@5.0.10): dependencies: '@ethersproject/abi': 5.7.0 '@metamask/eth-sig-util': 4.0.1 @@ -34052,8 +34647,8 @@ snapshots: uuid: 8.3.2 ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: - ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.6.3) - typescript: 5.6.3 + ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - bufferutil - c-kzg @@ -35025,7 +35620,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.26.0 - '@babel/parser': 7.26.3 + '@babel/parser': 7.26.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -35035,7 +35630,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.26.0 - '@babel/parser': 7.26.3 + '@babel/parser': 7.26.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.3 @@ -35159,16 +35754,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): + jest-cli@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.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)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + create-jest: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.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.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -35180,7 +35775,7 @@ snapshots: jest-cli@29.7.0(@types/node@22.10.5): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 @@ -35278,7 +35873,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): + jest-config@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)): dependencies: '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 @@ -35304,7 +35899,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.17.9 - ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3) + ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -35558,10 +36153,10 @@ snapshots: jest-snapshot@29.7.0: dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.26.3 + '@babel/generator': 7.26.5 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) - '@babel/types': 7.26.3 + '@babel/types': 7.26.5 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 @@ -35634,12 +36229,12 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): + jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + jest-cli: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -35648,7 +36243,7 @@ snapshots: jest@29.7.0(@types/node@22.10.5): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) '@jest/types': 29.6.3 import-local: 3.2.0 jest-cli: 29.7.0(@types/node@22.10.5) @@ -35940,11 +36535,33 @@ snapshots: inherits: 2.0.4 stream-splicer: 2.0.1 - langchain@0.3.6(@langchain/core@0.3.27(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(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.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(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.27(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) - '@langchain/openai': 0.3.16(@langchain/core@0.3.27(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.27(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))) + '@langchain/core': 0.3.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) + '@langchain/openai': 0.3.17(@langchain/core@0.3.29(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.29(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.15(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.7.0 + zod: 3.23.8 + zod-to-json-schema: 3.24.1(zod@3.23.8) + optionalDependencies: + axios: 1.7.9(debug@4.4.0) + handlebars: 4.7.8 + transitivePeerDependencies: + - encoding + - openai + + langchain@0.3.6(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(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.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)) + '@langchain/openai': 0.3.17(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8))) js-tiktoken: 1.0.15 js-yaml: 4.1.0 jsonpointer: 5.0.1 @@ -35981,6 +36598,17 @@ snapshots: optionalDependencies: openai: 4.73.0(encoding@0.1.13)(zod@3.23.8) + langsmith@0.2.15(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)): + dependencies: + '@types/uuid': 10.0.0 + commander: 10.0.1 + p-queue: 6.6.2 + p-retry: 4.6.2 + semver: 7.6.3 + uuid: 10.0.0 + optionalDependencies: + openai: 4.78.1(encoding@0.1.13)(zod@3.23.8) + latest-version@7.0.0: dependencies: package-json: 8.1.1 @@ -36173,7 +36801,7 @@ snapshots: lit-element@3.3.3: dependencies: - '@lit-labs/ssr-dom-shim': 1.2.1 + '@lit-labs/ssr-dom-shim': 1.3.0 '@lit/reactive-element': 1.6.3 lit-html: 2.8.0 @@ -36395,8 +37023,8 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 source-map-js: 1.2.1 make-dir@2.1.0: @@ -37238,7 +37866,7 @@ snapshots: mkdirp@3.0.1: {} - mkdist@1.6.0(typescript@5.6.3): + mkdist@1.6.0(typescript@5.7.3): dependencies: autoprefixer: 10.4.20(postcss@8.4.49) citty: 0.1.6 @@ -37254,7 +37882,7 @@ snapshots: semver: 7.6.3 tinyglobby: 0.2.10 optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.3 mlly@1.7.3: dependencies: @@ -37602,7 +38230,7 @@ snapshots: process: 0.11.10 uuid: 9.0.1 - node-llama-cpp@3.1.1(typescript@5.6.3): + node-llama-cpp@3.1.1(typescript@5.7.3): dependencies: '@huggingface/jinja': 0.3.2 async-retry: 1.3.3 @@ -37646,7 +38274,7 @@ snapshots: '@node-llama-cpp/win-x64': 3.1.1 '@node-llama-cpp/win-x64-cuda': 3.1.1 '@node-llama-cpp/win-x64-vulkan': 3.1.1 - typescript: 5.6.3 + typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -37998,7 +38626,7 @@ snapshots: transitivePeerDependencies: - encoding - openai@4.78.0(encoding@0.1.13)(zod@3.23.8): + openai@4.78.1(encoding@0.1.13)(zod@3.23.8): dependencies: '@types/node': 18.19.70 '@types/node-fetch': 2.6.12 @@ -38076,17 +38704,17 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - ox@0.1.2(typescript@5.6.3)(zod@3.23.8): + ox@0.1.2(typescript@5.7.3)(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(typescript@5.6.3)(zod@3.23.8) + abitype: 1.0.6(typescript@5.7.3)(zod@3.23.8) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.3 transitivePeerDependencies: - zod @@ -38104,6 +38732,20 @@ snapshots: transitivePeerDependencies: - zod + ox@0.4.4(typescript@5.7.3)(zod@3.23.8): + dependencies: + '@adraffy/ens-normalize': 1.11.0 + '@noble/curves': 1.7.0 + '@noble/hashes': 1.6.1 + '@scure/bip32': 1.6.0 + '@scure/bip39': 1.5.0 + abitype: 1.0.7(typescript@5.7.3)(zod@3.23.8) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.7.3 + transitivePeerDependencies: + - zod + p-cancelable@2.1.1: {} p-cancelable@3.0.0: {} @@ -38669,7 +39311,7 @@ snapshots: postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-cli@11.0.0(jiti@2.4.2)(postcss@8.4.49): + postcss-cli@11.0.0(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2): dependencies: chokidar: 3.6.0 dependency-graph: 0.11.0 @@ -38678,7 +39320,7 @@ snapshots: globby: 14.0.2 picocolors: 1.1.1 postcss: 8.4.49 - postcss-load-config: 5.1.0(jiti@2.4.2)(postcss@8.4.49) + postcss-load-config: 5.1.0(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2) postcss-reporter: 7.1.0(postcss@8.4.49) pretty-hrtime: 1.0.3 read-cache: 1.0.0 @@ -38865,25 +39507,27 @@ snapshots: postcss: 8.4.49 ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3) - postcss-load-config@5.1.0(jiti@2.4.2)(postcss@8.4.49): + postcss-load-config@5.1.0(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2): dependencies: lilconfig: 3.1.3 yaml: 2.7.0 optionalDependencies: jiti: 2.4.2 postcss: 8.4.49 + tsx: 4.19.2 - postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.4.49)(yaml@2.7.0): + postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(yaml@2.7.0): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.4.2 postcss: 8.4.49 + tsx: 4.19.2 yaml: 2.7.0 - postcss-loader@7.3.4(postcss@8.4.49)(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): + postcss-loader@7.3.4(postcss@8.4.49)(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: - cosmiconfig: 8.3.6(typescript@5.6.3) + cosmiconfig: 8.3.6(typescript@5.7.3) jiti: 1.21.7 postcss: 8.4.49 semver: 7.6.3 @@ -39510,11 +40154,11 @@ snapshots: end-of-stream: 1.4.4 once: 1.4.0 - pumpdotfun-sdk@1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.6.3)(utf-8-validate@5.0.10): + pumpdotfun-sdk@1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.7.3)(utf-8-validate@5.0.10): dependencies: '@coral-xyz/anchor': 0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@rollup/plugin-json': 6.1.0(rollup@4.30.1) - '@solana/spl-token': 0.4.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil @@ -39534,9 +40178,9 @@ snapshots: dependencies: escape-goat: 4.0.0 - puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10): + puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10): dependencies: - '@puppeteer/browsers': 0.5.0(typescript@5.6.3) + '@puppeteer/browsers': 0.5.0(typescript@5.7.3) chromium-bidi: 0.4.7(devtools-protocol@0.0.1107588) cross-fetch: 3.1.5(encoding@0.1.13) debug: 4.3.4 @@ -39548,20 +40192,20 @@ snapshots: unbzip2-stream: 1.4.3 ws: 8.13.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.3 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - puppeteer-extra-plugin-capsolver@2.0.1(bufferutil@4.0.9)(encoding@0.1.13)(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10))(typescript@5.6.3)(utf-8-validate@5.0.10): + puppeteer-extra-plugin-capsolver@2.0.1(bufferutil@4.0.9)(encoding@0.1.13)(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(typescript@5.7.3)(utf-8-validate@5.0.10): dependencies: axios: 1.7.9(debug@4.4.0) capsolver-npm: 2.0.2 - puppeteer: 19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10) - puppeteer-extra: 3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)) - puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10))) + puppeteer: 19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10) + puppeteer-extra: 3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)) + puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))) transitivePeerDependencies: - '@types/puppeteer' - bufferutil @@ -39573,35 +40217,35 @@ snapshots: - typescript - utf-8-validate - puppeteer-extra-plugin@3.2.3(puppeteer-extra@3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10))): + puppeteer-extra-plugin@3.2.3(puppeteer-extra@3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))): dependencies: '@types/debug': 4.1.12 debug: 4.4.0(supports-color@8.1.1) merge-deep: 3.0.3 optionalDependencies: - puppeteer-extra: 3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)) + puppeteer-extra: 3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)) transitivePeerDependencies: - supports-color - puppeteer-extra@3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)): + puppeteer-extra@3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)): dependencies: '@types/debug': 4.1.12 debug: 4.4.0(supports-color@8.1.1) deepmerge: 4.3.1 optionalDependencies: - puppeteer: 19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10) - puppeteer-core: 19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10) + puppeteer: 19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10) + puppeteer-core: 19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10) transitivePeerDependencies: - supports-color - puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10): + puppeteer@19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10): dependencies: - '@puppeteer/browsers': 0.5.0(typescript@5.6.3) + '@puppeteer/browsers': 0.5.0(typescript@5.7.3) cosmiconfig: 8.1.3 https-proxy-agent: 5.0.1 progress: 2.0.3 proxy-from-env: 1.1.0 - puppeteer-core: 19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10) + puppeteer-core: 19.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - encoding @@ -39695,7 +40339,7 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-dev-utils@12.0.1(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): + react-dev-utils@12.0.1(eslint@9.16.0(jiti@2.4.2))(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: '@babel/code-frame': 7.26.2 address: 1.2.2 @@ -39706,7 +40350,7 @@ snapshots: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.16.0(jiti@2.4.2))(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -39723,7 +40367,7 @@ snapshots: text-table: 0.2.0 webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.3 transitivePeerDependencies: - eslint - supports-color @@ -39947,7 +40591,7 @@ snapshots: dependencies: picomatch: 2.3.1 - readdirp@4.0.2: {} + readdirp@4.1.1: {} reading-time@1.5.0: {} @@ -40244,6 +40888,8 @@ snapshots: resolve-pathname@3.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve.exports@2.0.3: {} resolve@1.17.0: @@ -40312,11 +40958,11 @@ snapshots: robust-predicates@3.0.2: {} - rollup-plugin-dts@6.1.1(rollup@3.29.5)(typescript@5.6.3): + rollup-plugin-dts@6.1.1(rollup@3.29.5)(typescript@5.7.3): dependencies: magic-string: 0.30.17 rollup: 3.29.5 - typescript: 5.6.3 + typescript: 5.7.3 optionalDependencies: '@babel/code-frame': 7.26.2 @@ -41332,6 +41978,10 @@ snapshots: dependencies: vue: 3.5.13(typescript@5.6.3) + swrv@1.0.4(vue@3.5.13(typescript@5.7.3)): + dependencies: + vue: 3.5.13(typescript@5.7.3) + symbol-tree@3.2.4: {} symbol.inspect@1.0.1: {} @@ -41668,18 +42318,18 @@ 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))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)))(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))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)))(typescript@5.7.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)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) + jest: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.6.3 - typescript: 5.6.3 + typescript: 5.7.3 yargs-parser: 21.1.1 optionalDependencies: '@babel/core': 7.26.0 @@ -41707,6 +42357,25 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.0) + 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): + 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)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.6.3 + typescript: 5.6.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@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) + 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@22.8.4)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)))(typescript@5.6.3): dependencies: bs-logger: 0.2.6 @@ -41748,7 +42417,7 @@ snapshots: optionalDependencies: '@swc/core': 1.10.7(@swc/helpers@0.5.15) - ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3): + ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -41762,13 +42431,13 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.6.3 + typescript: 5.7.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: '@swc/core': 1.10.7(@swc/helpers@0.5.15) - ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.6.3): + ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.7.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -41782,7 +42451,7 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.6.3 + typescript: 5.7.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: @@ -41829,7 +42498,7 @@ snapshots: tsscmp@1.0.6: {} - tsup@8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.7.0): + tsup@8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0): dependencies: bundle-require: 5.1.0(esbuild@0.24.2) cac: 6.7.14 @@ -41839,7 +42508,7 @@ snapshots: esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.4.49)(yaml@2.7.0) + postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(yaml@2.7.0) resolve-from: 5.0.0 rollup: 4.30.1 source-map: 0.8.0-beta.0 @@ -41857,6 +42526,41 @@ snapshots: - tsx - yaml + tsup@8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0): + dependencies: + bundle-require: 5.1.0(esbuild@0.24.2) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.3.3 + debug: 4.4.0(supports-color@8.1.1) + esbuild: 0.24.2 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(yaml@2.7.0) + resolve-from: 5.0.0 + rollup: 4.30.1 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.10 + tree-kill: 1.2.2 + optionalDependencies: + '@swc/core': 1.10.7(@swc/helpers@0.5.15) + postcss: 8.4.49 + typescript: 5.7.3 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + tsx@4.19.2: + dependencies: + esbuild: 0.23.1 + get-tsconfig: 4.8.1 + optionalDependencies: + fsevents: 2.3.3 + tty-browserify@0.0.1: {} tuf-js@2.2.1: @@ -42000,9 +42704,9 @@ snapshots: typedarray@0.0.6: {} - typedoc-plugin-markdown@4.2.10(typedoc@0.26.11(typescript@5.6.3)): + typedoc-plugin-markdown@4.2.10(typedoc@0.26.11(typescript@5.7.3)): dependencies: - typedoc: 0.26.11(typescript@5.6.3) + typedoc: 0.26.11(typescript@5.7.3) typedoc@0.26.11(typescript@5.6.3): dependencies: @@ -42013,6 +42717,15 @@ snapshots: typescript: 5.6.3 yaml: 2.7.0 + typedoc@0.26.11(typescript@5.7.3): + dependencies: + lunr: 2.3.9 + markdown-it: 14.1.0 + minimatch: 9.0.5 + shiki: 1.26.1 + typescript: 5.7.3 + yaml: 2.7.0 + typeforce@1.18.0: {} typescript-eslint@8.11.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3): @@ -42028,6 +42741,8 @@ snapshots: typescript@5.6.3: {} + typescript@5.7.3: {} + u3@0.1.1: {} uc.micro@2.1.0: {} @@ -42057,7 +42772,7 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - unbuild@2.0.0(typescript@5.6.3): + unbuild@2.0.0(typescript@5.7.3): dependencies: '@rollup/plugin-alias': 5.1.1(rollup@3.29.5) '@rollup/plugin-commonjs': 25.0.8(rollup@3.29.5) @@ -42074,17 +42789,17 @@ snapshots: hookable: 5.5.3 jiti: 1.21.7 magic-string: 0.30.17 - mkdist: 1.6.0(typescript@5.6.3) + mkdist: 1.6.0(typescript@5.7.3) mlly: 1.7.3 pathe: 1.1.2 pkg-types: 1.3.0 pretty-bytes: 6.1.1 rollup: 3.29.5 - rollup-plugin-dts: 6.1.1(rollup@3.29.5)(typescript@5.6.3) + rollup-plugin-dts: 6.1.1(rollup@3.29.5)(typescript@5.7.3) scule: 1.3.0 untyped: 1.5.2 optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.3 transitivePeerDependencies: - sass - supports-color @@ -42262,7 +42977,7 @@ snapshots: anymatch: 3.1.3 chokidar: 3.6.0 destr: 2.0.3 - h3: 1.13.0 + h3: 1.13.1 lru-cache: 10.4.3 node-fetch-native: 1.6.4 ofetch: 1.4.1 @@ -42274,8 +42989,8 @@ snapshots: untyped@1.5.2: dependencies: '@babel/core': 7.26.0 - '@babel/standalone': 7.26.4 - '@babel/types': 7.26.3 + '@babel/standalone': 7.26.5 + '@babel/types': 7.26.5 citty: 0.1.6 defu: 6.1.4 jiti: 2.4.2 @@ -42403,9 +43118,9 @@ snapshots: valibot@0.36.0: {} - valibot@0.38.0(typescript@5.6.3): + valibot@0.38.0(typescript@5.7.3): optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.3 valid-url@1.0.9: {} @@ -42469,37 +43184,37 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - viem@2.21.49(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8): + viem@2.21.49(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(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(typescript@5.6.3)(zod@3.23.8) + abitype: 1.0.6(typescript@5.7.3)(zod@3.23.8) isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.1.2(typescript@5.6.3)(zod@3.23.8) + ox: 0.1.2(typescript@5.7.3)(zod@3.23.8) webauthn-p256: 0.0.10 ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.3 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - viem@2.21.53(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8): + viem@2.21.53(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(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(typescript@5.6.3)(zod@3.23.8) + abitype: 1.0.6(typescript@5.7.3)(zod@3.23.8) isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.1.2(typescript@5.6.3)(zod@3.23.8) + ox: 0.1.2(typescript@5.7.3)(zod@3.23.8) webauthn-p256: 0.0.10 ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.3 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -42523,6 +43238,24 @@ snapshots: - utf-8-validate - zod + viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8): + dependencies: + '@noble/curves': 1.7.0 + '@noble/hashes': 1.6.1 + '@scure/bip32': 1.6.0 + '@scure/bip39': 1.5.0 + abitype: 1.0.7(typescript@5.7.3)(zod@3.23.8) + isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ox: 0.4.4(typescript@5.7.3)(zod@3.23.8) + webauthn-p256: 0.0.10 + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.7.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + vite-node@2.1.4(@types/node@22.10.5)(terser@5.37.0): dependencies: cac: 6.7.14 @@ -42754,6 +43487,16 @@ snapshots: optionalDependencies: typescript: 5.6.3 + vue@3.5.13(typescript@5.7.3): + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-sfc': 3.5.13 + '@vue/runtime-dom': 3.5.13 + '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.7.3)) + '@vue/shared': 3.5.13 + optionalDependencies: + typescript: 5.7.3 + w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 @@ -42824,9 +43567,9 @@ snapshots: dependencies: web3-types: 1.10.0 - web3-eth-abi@4.4.1(typescript@5.6.3)(zod@3.23.8): + web3-eth-abi@4.4.1(typescript@5.7.3)(zod@3.23.8): dependencies: - abitype: 0.7.1(typescript@5.6.3)(zod@3.23.8) + abitype: 0.7.1(typescript@5.7.3)(zod@3.23.8) web3-errors: 1.3.1 web3-types: 1.10.0 web3-utils: 4.3.3 @@ -42845,13 +43588,13 @@ snapshots: web3-utils: 4.3.3 web3-validator: 2.0.6 - web3-eth-contract@4.7.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8): + web3-eth-contract@4.7.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8): dependencies: '@ethereumjs/rlp': 5.0.2 web3-core: 4.7.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) web3-errors: 1.3.1 - web3-eth: 4.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) - web3-eth-abi: 4.4.1(typescript@5.6.3)(zod@3.23.8) + web3-eth: 4.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) + web3-eth-abi: 4.4.1(typescript@5.7.3)(zod@3.23.8) web3-types: 1.10.0 web3-utils: 4.3.3 web3-validator: 2.0.6 @@ -42862,13 +43605,13 @@ snapshots: - utf-8-validate - zod - web3-eth-ens@4.4.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8): + web3-eth-ens@4.4.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8): dependencies: '@adraffy/ens-normalize': 1.11.0 web3-core: 4.7.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) web3-errors: 1.3.1 - web3-eth: 4.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) - web3-eth-contract: 4.7.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + web3-eth: 4.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) + web3-eth-contract: 4.7.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) web3-net: 4.1.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) web3-types: 1.10.0 web3-utils: 4.3.3 @@ -42887,10 +43630,10 @@ snapshots: web3-utils: 4.3.3 web3-validator: 2.0.6 - web3-eth-personal@4.1.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8): + web3-eth-personal@4.1.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8): dependencies: web3-core: 4.7.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - web3-eth: 4.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + web3-eth: 4.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) web3-rpc-methods: 1.3.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) web3-types: 1.10.0 web3-utils: 4.3.3 @@ -42902,12 +43645,12 @@ snapshots: - utf-8-validate - zod - web3-eth@4.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8): + web3-eth@4.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8): dependencies: setimmediate: 1.0.5 web3-core: 4.7.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) web3-errors: 1.3.1 - web3-eth-abi: 4.4.1(typescript@5.6.3)(zod@3.23.8) + web3-eth-abi: 4.4.1(typescript@5.7.3)(zod@3.23.8) web3-eth-accounts: 4.3.1 web3-net: 4.1.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) web3-providers-ws: 4.0.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -42933,11 +43676,11 @@ snapshots: - encoding - utf-8-validate - web3-plugin-zksync@1.0.8(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.6.3))(typescript@5.6.3)(utf-8-validate@5.0.10)(web3@4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)): + web3-plugin-zksync@1.0.8(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.7.3))(typescript@5.7.3)(utf-8-validate@5.0.10)(web3@4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)): dependencies: ethereum-cryptography: 2.2.1 - hardhat: 2.22.17(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.6.3))(typescript@5.6.3)(utf-8-validate@5.0.10) - web3: 4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + hardhat: 2.22.17(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.5)(typescript@5.7.3))(typescript@5.7.3)(utf-8-validate@5.0.10) + web3: 4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) transitivePeerDependencies: - bufferutil - c-kzg @@ -43015,17 +43758,17 @@ snapshots: web3-types: 1.10.0 zod: 3.23.8 - web3@4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8): + web3@4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8): dependencies: web3-core: 4.7.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) web3-errors: 1.3.1 - web3-eth: 4.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) - web3-eth-abi: 4.4.1(typescript@5.6.3)(zod@3.23.8) + web3-eth: 4.11.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) + web3-eth-abi: 4.4.1(typescript@5.7.3)(zod@3.23.8) web3-eth-accounts: 4.3.1 - web3-eth-contract: 4.7.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) - web3-eth-ens: 4.4.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + web3-eth-contract: 4.7.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) + web3-eth-ens: 4.4.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) web3-eth-iban: 4.0.7 - web3-eth-personal: 4.1.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + web3-eth-personal: 4.1.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) web3-net: 4.1.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) web3-providers-http: 4.2.0(encoding@0.1.13) web3-providers-ws: 4.0.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) From 88b1d5f3a42f75424182349bd10ed2168160521f Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Mon, 13 Jan 2025 08:56:09 +0700 Subject: [PATCH 04/58] adding news as its new post source --- agent/package.json | 1 + agent/src/index.ts | 5 + packages/client-twitter/src/post.ts | 37 +- packages/plugin-crypto-news/.gitignore | 37 ++ packages/plugin-crypto-news/.npmignore | 6 + packages/plugin-crypto-news/README.md | 35 ++ packages/plugin-crypto-news/eslint.config.mjs | 3 + packages/plugin-crypto-news/package.json | 22 ++ .../src/actions/tokenOverview.ts | 232 +++++++++++++ .../actions/tokenOverview.ts:Zone.Identifier | 0 packages/plugin-crypto-news/src/index.ts | 12 + .../src/index.ts:Zone.Identifier | 0 .../src/providers/cryptoNewsData.ts | 77 +++++ .../src/tests/birdeye.test.ts | 77 +++++ .../src/tests/birdeye.test.ts:Zone.Identifier | 0 .../plugin-crypto-news/src/utils/birdeye.ts | 182 ++++++++++ .../src/utils/birdeye.ts:Zone.Identifier | 0 .../plugin-crypto-news/src/utils/serper.ts | 210 ++++++++++++ packages/plugin-crypto-news/tsconfig.json | 13 + packages/plugin-crypto-news/tsup.config.ts | 23 ++ packages/plugin-market-analisys/src/index.ts | 6 +- .../providers/twitterTrendingMarketData.ts | 20 +- .../src/utils/birdeye.ts | 316 +++++++++--------- pnpm-lock.yaml | 21 +- 24 files changed, 1155 insertions(+), 180 deletions(-) create mode 100644 packages/plugin-crypto-news/.gitignore create mode 100644 packages/plugin-crypto-news/.npmignore create mode 100644 packages/plugin-crypto-news/README.md create mode 100644 packages/plugin-crypto-news/eslint.config.mjs create mode 100644 packages/plugin-crypto-news/package.json create mode 100644 packages/plugin-crypto-news/src/actions/tokenOverview.ts create mode 100644 packages/plugin-crypto-news/src/actions/tokenOverview.ts:Zone.Identifier create mode 100644 packages/plugin-crypto-news/src/index.ts create mode 100644 packages/plugin-crypto-news/src/index.ts:Zone.Identifier create mode 100644 packages/plugin-crypto-news/src/providers/cryptoNewsData.ts create mode 100644 packages/plugin-crypto-news/src/tests/birdeye.test.ts create mode 100644 packages/plugin-crypto-news/src/tests/birdeye.test.ts:Zone.Identifier create mode 100644 packages/plugin-crypto-news/src/utils/birdeye.ts create mode 100644 packages/plugin-crypto-news/src/utils/birdeye.ts:Zone.Identifier create mode 100644 packages/plugin-crypto-news/src/utils/serper.ts create mode 100644 packages/plugin-crypto-news/tsconfig.json create mode 100644 packages/plugin-crypto-news/tsup.config.ts diff --git a/agent/package.json b/agent/package.json index e643528fae6..92667c3d4dd 100644 --- a/agent/package.json +++ b/agent/package.json @@ -65,6 +65,7 @@ "@elizaos/plugin-web-search": "workspace:*", "readline": "1.3.0", "@ethosdao/plugin-market-analisys": "workspace:*", + "@srise/plugin-crypto-news": "workspace:*", "ws": "8.18.0", "yargs": "17.7.2" }, diff --git a/agent/src/index.ts b/agent/src/index.ts index 48298ac2d6e..4c3dcb36791 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -65,6 +65,7 @@ import { TEEMode, teePlugin } from "@elizaos/plugin-tee"; import { tonPlugin } from "@elizaos/plugin-ton"; import { webSearchPlugin } from "@elizaos/plugin-web-search"; import { zksyncEraPlugin } from "@elizaos/plugin-zksync-era"; +import { cryptoNewsPlugin } from "@srise/plugin-crypto-news"; import Database from "better-sqlite3"; import fs from "fs"; import net from "net"; @@ -536,6 +537,7 @@ export async function createAgent( getSecret(character, "SERPER_API_KEY") ? webSearchPlugin : null, + getSecret(character, "SERPER_API_KEY") ? cryptoNewsPlugin : null, getSecret(character, "SOLANA_PUBLIC_KEY") || (getSecret(character, "WALLET_PUBLIC_KEY") && !getSecret(character, "WALLET_PUBLIC_KEY")?.startsWith("0x")) @@ -619,6 +621,9 @@ export async function createAgent( getSecret(character, "ECHOCHAMBERS_API_KEY") ? echoChamberPlugin : null, + // getSecret(character, "BIRDEYE_API_KEY") + // ? marketAnalisysPlugin + // : null, ].filter(Boolean), providers: [], actions: [], diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index 1c176cb7190..4298bc90744 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -1,21 +1,22 @@ -import { Tweet } from "agent-twitter-client"; import { composeContext, + elizaLogger, generateText, + generateTweetActions, getEmbeddingZeroVector, IAgentRuntime, + IImageDescriptionService, ModelClass, + postActionResponseFooter, + ServiceType, stringToUuid, UUID, } from "@elizaos/core"; -import { elizaLogger } from "@elizaos/core"; +import { Tweet } from "agent-twitter-client"; import { ClientBase } from "./base.ts"; -import { postActionResponseFooter } from "@elizaos/core"; -import { generateTweetActions } from "@elizaos/core"; -import { IImageDescriptionService, ServiceType } from "@elizaos/core"; -import { buildConversationThread } from "./utils.ts"; -import { twitterMessageHandlerTemplate } from "./interactions.ts"; import { DEFAULT_MAX_TWEET_LENGTH } from "./environment.ts"; +import { twitterMessageHandlerTemplate } from "./interactions.ts"; +import { buildConversationThread } from "./utils.ts"; const twitterPostTemplate = ` # Areas of Expertise @@ -34,6 +35,7 @@ const twitterPostTemplate = ` # Task: Generate a post in the voice and style and perspective of {{agentName}} @{{twitterUserName}}. Write a 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 include the summary of the # NEWS above Your response should be 1, 2, or 3 sentences (choose the length at random). 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 if there are multiple statements in your response.`; @@ -62,7 +64,8 @@ Actions (respond only with tags): Tweet: {{currentTweet}} -# Respond with qualifying action tags only. Default to NO action unless extremely confident of relevance.` + postActionResponseFooter; +# Respond with qualifying action tags only. Default to NO action unless extremely confident of relevance.` + + postActionResponseFooter; /** * Truncate text to fit within the Twitter character limit, ensuring it ends at a complete sentence. @@ -111,7 +114,7 @@ export class TwitterPostClient { this.client = client; this.runtime = runtime; this.twitterUsername = this.client.twitterConfig.TWITTER_USERNAME; - this.isDryRun = this.client.twitterConfig.TWITTER_DRY_RUN + this.isDryRun = this.client.twitterConfig.TWITTER_DRY_RUN; // Log configuration on initialization elizaLogger.log("Twitter Client Configuration:"); @@ -188,8 +191,9 @@ export class TwitterPostClient { `Next action processing scheduled in ${actionInterval} minutes` ); // Wait for the full interval before next processing - await new Promise((resolve) => - setTimeout(resolve, actionInterval * 60 * 1000) // now in minutes + await new Promise( + (resolve) => + setTimeout(resolve, actionInterval * 60 * 1000) // now in minutes ); } } catch (error) { @@ -215,7 +219,10 @@ export class TwitterPostClient { elizaLogger.log("Tweet generation loop disabled (dry run mode)"); } - if (this.client.twitterConfig.ENABLE_ACTION_PROCESSING && !this.isDryRun) { + if ( + this.client.twitterConfig.ENABLE_ACTION_PROCESSING && + !this.isDryRun + ) { processActionsLoop().catch((error) => { elizaLogger.error( "Fatal error in process actions loop:", @@ -401,7 +408,7 @@ export class TwitterPostClient { * Generates and posts a new tweet. If isDryRun is true, only logs what would have been posted. */ private async generateNewTweet() { - elizaLogger.log("Generating new tweet"); + elizaLogger.log("Generating new tweet cuk"); try { const roomId = stringToUuid( @@ -437,7 +444,7 @@ export class TwitterPostClient { this.runtime.character.templates?.twitterPostTemplate || twitterPostTemplate, }); - + console.log("PROMPT", context); elizaLogger.debug("generate post prompt:\n" + context); const newTweetContent = await generateText({ @@ -480,7 +487,7 @@ export class TwitterPostClient { } // Truncate the content to the maximum tweet length specified in the environment settings, ensuring the truncation respects sentence boundaries. - const maxTweetLength = this.client.twitterConfig.MAX_TWEET_LENGTH + const maxTweetLength = this.client.twitterConfig.MAX_TWEET_LENGTH; if (maxTweetLength) { cleanedContent = truncateToCompleteSentence( cleanedContent, diff --git a/packages/plugin-crypto-news/.gitignore b/packages/plugin-crypto-news/.gitignore new file mode 100644 index 00000000000..f781f0bc4b3 --- /dev/null +++ b/packages/plugin-crypto-news/.gitignore @@ -0,0 +1,37 @@ +# Node modules +node_modules/ + +# Logs +logs +*.log +npm-debug.log* + +# Build output +dist/ +build/ + +# Dependency directories +jspm_packages/ + +# Optional npm cache directory +.npm/ + +# dotenv environment variable file +.env + +# Turborepo +.turbo/ + +# IDE specific files +.idea/ +.vscode/ +*.sublime-project +*.sublime-workspace + +# Mac system files +.DS_Store + +# Windows system files +Thumbs.db +ehthumbs.db +Icon? diff --git a/packages/plugin-crypto-news/.npmignore b/packages/plugin-crypto-news/.npmignore new file mode 100644 index 00000000000..078562eceab --- /dev/null +++ b/packages/plugin-crypto-news/.npmignore @@ -0,0 +1,6 @@ +* + +!dist/** +!package.json +!readme.md +!tsup.config.ts \ No newline at end of file diff --git a/packages/plugin-crypto-news/README.md b/packages/plugin-crypto-news/README.md new file mode 100644 index 00000000000..1c3e1c971bc --- /dev/null +++ b/packages/plugin-crypto-news/README.md @@ -0,0 +1,35 @@ +# @ethosdao/plugin-market-analisys + +<div align="center"> + <img src="./media/image.jpg" alt="market-analisys" width="500"/> + <br> + <br> + <a href="https://ethosdao.ai">🌐 EthosDAO Website</a> + <br> +</div> + +# Description + +This plugin enables your agent to get comprehensive market data for any token using Birdeye API. + +# Actions + +- **tokenOverview**: Provides an overview of a token's market data. + + +# Requirements + +- Birdeye API Key + +# Setup + +1. Navigate your character file and add the `"BIRDEYE_API_KEY"` to the `"secrets"` property. +2. Add "@ethosdao/plugin-market-analisys" to `"dependencies"` property in `eliza/agent/package.json`. +3. Add `import { pluginMarketAnalisys } from "@ethosdao/plugin-market-analisys";` in `eliza/agent/src/index.ts`. +4. Add the following parameter `getSecret(character, "BIRDEYE_API_KEY") ? marketAnalisysPlugin : null,` in the `plugins` array in `eliza/agent/src/index.ts`. + + +# Example + +<img src="./media/screenshot.png" alt="market-analisys" /> + diff --git a/packages/plugin-crypto-news/eslint.config.mjs b/packages/plugin-crypto-news/eslint.config.mjs new file mode 100644 index 00000000000..92fe5bbebef --- /dev/null +++ b/packages/plugin-crypto-news/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-crypto-news/package.json b/packages/plugin-crypto-news/package.json new file mode 100644 index 00000000000..3d1d97081a9 --- /dev/null +++ b/packages/plugin-crypto-news/package.json @@ -0,0 +1,22 @@ +{ + "name": "@srise/plugin-crypto-news", + "version": "0.1.5-alpha.5", + "main": "dist/index.js", + "type": "module", + "author": "metaanomaly", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*" + }, + "devDependencies": { + "@types/node": "^20.0.0", + "tsup": "8.3.5", + "tsx": "^4.19.2" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache .", + "test-birdeye": "tsx src/tests/birdeye.test.ts" + } +} diff --git a/packages/plugin-crypto-news/src/actions/tokenOverview.ts b/packages/plugin-crypto-news/src/actions/tokenOverview.ts new file mode 100644 index 00000000000..9e6b8c8c9a1 --- /dev/null +++ b/packages/plugin-crypto-news/src/actions/tokenOverview.ts @@ -0,0 +1,232 @@ +import { + Action, + IAgentRuntime, + Memory, + State, + HandlerCallback, + ModelClass, + Content, + elizaLogger, + composeContext, + generateMessageResponse, + parseJSONObjectFromText, + generateText, + messageCompletionFooter, +} from "@elizaos/core"; +import { fetchTokenOverview } from "../utils/birdeye"; + +interface TokenQuery { + address?: string; + symbol?: string; +} + +const tokenExtractionTemplate = `Respond with a JSON markdown block containing only the extracted values. + +Example response: +\`\`\`json +{ + "address": "So11111111111111111111111111111111111111112", + "symbol": "SOL" +} +\`\`\` + +{{recentMessages}} + +Given the recent messages, extract the following information about the token query, please refer to last message for context: +- Token contract address if provided +- Token symbol if provided + +NOTE: If you see addresses like this 2gkevSAUExkSUwwwj6uNbzwwNCXyzEBkGLg4wAyUpump remember that pump suffix IS PART OF THE ADDRESS, do not remove it. + +Respond with a JSON markdown block containing only the extracted values. Use "" (empty string) for any values that cannot be determined. +IMPORTANT: Response format should be in this format: +\`\`\`json +{ + "address": "So11111111111111111111111111111111111111112", + "symbol": "SOL" +} +\`\`\``; + +const marketAnalysisTemplate = `You are {{agentName}}, a professional market analyst. + +About you: +{{bio}} +{{lore}} + +Recent conversation: +{{recentMessages}} + +Available market data: +{{marketData}} + +Analyze the market data and provide insights about: +1. Price performance across different timeframes +2. Trading volume and liquidity +3. Holder behavior and wallet activity +4. Overall market sentiment + +Keep the analysis concise and data-driven, focusing on the most relevant metrics.` + messageCompletionFooter; + +export const getTokenOverviewAction: Action = { + name: "GET_TOKEN_OVERVIEW", + similes: ["CHECK_TOKEN", "TOKEN_INFO", "MARKET_DATA", "TOKEN_ANALYSIS"], + description: "Retrieve and analyze token market data from Birdeye", + + validate: async (runtime: IAgentRuntime, message: Memory) => { + //const text = (message.content as Content).text?.toLowerCase() || ""; + //return text.includes("token") || text.includes("price") || text.includes("market"); + return true; + }, + + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: { [key: string]: unknown }, + callback?: HandlerCallback + ): Promise<boolean> => { + try { + // Initialize or update state + if (!state) { + state = await runtime.composeState(message); + } else { + state = await runtime.updateRecentMessageState(state); + } + + // Extract token information from message + const extractionContext = composeContext({ + state, + template: tokenExtractionTemplate, + }); + + elizaLogger.log(`Extracting token info...`); + + const response = await generateText({ + runtime, + context: extractionContext, + modelClass: ModelClass.SMALL, + }); + + const tokenQuery = parseJSONObjectFromText(response) as TokenQuery; + + elizaLogger.info(`Token query: ${JSON.stringify(tokenQuery)}`); + + if (!tokenQuery.address && !tokenQuery.symbol) { + callback?.({ + text: "I couldn't identify which token you're asking about. Could you please provide a token symbol or contract address?", + }); + return false; + } + + if (tokenQuery.symbol && !tokenQuery.address) { + callback?.({ + text: "Ticker is not enough please provide me the contract address", + }); + return false; + } + + elizaLogger.log(`Fetching token data...`); + + // Fetch token data + const tokenAddress = tokenQuery.address || "So11111111111111111111111111111111111111112"; // Default to SOL if only symbol provided + const tokenData = await fetchTokenOverview(tokenAddress as string, runtime.character.settings.secrets.BIRDEYE_API_KEY); + + + elizaLogger.log(`Market data: ${JSON.stringify(tokenData, null, 2)}`); + + // Update state with market data + if (!state) { + state = await runtime.composeState(message); + } + + state = { + ...state, + marketData: JSON.stringify(tokenData, null, 2), + }; + + // Generate market analysis + const analysisContext = composeContext({ + state, + template: marketAnalysisTemplate, + }); + + const analysis = await generateMessageResponse({ + runtime, + context: analysisContext, + modelClass: ModelClass.LARGE, + }); + + callback?.(analysis); + + return true; + } catch (error) { + elizaLogger.error(`Error in GET_TOKEN_OVERVIEW action: ${error}`); + callback?.({ + text: "I encountered an error while fetching the token data. Please try again later.", + }); + return false; + } + }, + + examples: [ + [ + { + user: "{{user1}}", + content: { text: "What's the current market data for DV44rX6H8pEu4qwruwUvjswyRPTUib5qHTjWNRigpump?" }, + }, + { + user: "{{agentName}}", + content: { + text: "Let me analyze the market data for DV44rX6H8pEu4qwruwUvjswyRPTUib5qHTjWNRigpump", + action: "GET_TOKEN_OVERVIEW", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { text: "DV44rX6H8pEu4qwruwUvjswyRPTUib5qHTjWNRigpump" }, + }, + { + user: "{{agentName}}", + content: { + text: "Checking market data for DV44rX6H8pEu4qwruwUvjswyRPTUib5qHTjWNRigpump", + action: "GET_TOKEN_OVERVIEW", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Can you check the token at address So11111111111111111111111111111111111111112?" + }, + }, + { + user: "{{agentName}}", + content: { + text: "I'll fetch the market data for this token...", + action: "GET_TOKEN_OVERVIEW", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { text: "Can you make an analysis of $AVB?" }, + }, + { + user: "{{agentName}}", + content: { text: "Can you provide the address of $AVB?", action: "NONE" }, + }, + { + user: "{{user1}}", + content: { text: "6d5zHW5B8RkGKd51Lpb9RqFQSqDudr9GJgZ1SgQZpump" }, + }, + { + user: "{{agentName}}", + content: { text: "Checking market data for $AVB", action: "GET_TOKEN_OVERVIEW" }, + }, + ], + ], +}; \ No newline at end of file diff --git a/packages/plugin-crypto-news/src/actions/tokenOverview.ts:Zone.Identifier b/packages/plugin-crypto-news/src/actions/tokenOverview.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-crypto-news/src/index.ts b/packages/plugin-crypto-news/src/index.ts new file mode 100644 index 00000000000..30c6e4961b9 --- /dev/null +++ b/packages/plugin-crypto-news/src/index.ts @@ -0,0 +1,12 @@ +import { Plugin } from "@elizaos/core"; +import { cryptoNewsData } from "./providers/cryptoNewsData"; +//import { getTokenOverviewAction } from "./actions/tokenOverview"; +//import { twitterTrendingMarketData } from "./providers/twitterTrendingMarketData"; + +export const cryptoNewsPlugin: Plugin = { + name: "crypto-news", + description: "Provides crypto news as providers", + actions: [], + providers: [cryptoNewsData], + evaluators: [], +}; diff --git a/packages/plugin-crypto-news/src/index.ts:Zone.Identifier b/packages/plugin-crypto-news/src/index.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts new file mode 100644 index 00000000000..a244d91d64f --- /dev/null +++ b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts @@ -0,0 +1,77 @@ +import { elizaLogger, Provider } from "@elizaos/core"; +import { fetchSerperNews, SerperNewsResponse } from "../utils/serper"; + +// interface FormattedMarketData { +// symbol: string; +// name: string; +// price: string; +// priceChange24h: string; +// priceChange1h: string; +// volume24h: string; +// volume1h: string; +// marketCap: string; +// realMarketCap: string; +// liquidity: string; +// holders: string; +// uniqueWallets24h: string; +// uniqueWallets1h: string; +// socialLinks: string[]; +// } + +// function formatNumber(num: number): string { +// if (num >= 1e9) { +// return `$${(num / 1e9).toFixed(2)}B`; +// } else if (num >= 1e6) { +// return `$${(num / 1e6).toFixed(2)}M`; +// } else if (num >= 1e3) { +// return `$${(num / 1e3).toFixed(2)}K`; +// } +// return `$${num.toFixed(2)}`; +// } + +// function formatPercentage(num: number): string { +// const sign = num > 0 ? "+" : ""; +// return `${sign}${num.toFixed(2)}%`; +// } + +// function getSocialLinks(extensions: any): string[] { +// const links = []; +// if (extensions.website) links.push(`🌐 ${extensions.website}`); +// if (extensions.twitter) links.push(`🐦 ${extensions.twitter}`); +// if (extensions.telegram) links.push(`📱 ${extensions.telegram}`); +// if (extensions.discord) links.push(`💬 ${extensions.discord}`); +// return links; +// } + +export const cryptoNewsData: Provider = { + get: async (runtime, message, state) => { + if (!message.content.action || message.content.action !== "TWEET") { + return ""; + } + + try { + // fetch several times + const cryptoNews: SerperNewsResponse = + await fetchSerperNews("crypto"); + const suiNews: SerperNewsResponse = await fetchSerperNews("$SUI"); + let output = "# NEWS\n\n"; + cryptoNews.news.forEach((article) => { + output += `- ${article.title}\n${article.snippet}\n\n`; + }); + suiNews.news.forEach((article) => { + output += `- ${article.title}\n${article.snippet}\n\n`; + }); + output += `# END NEWS\n\n`; + + elizaLogger.log(output); + + return output; + } catch (error) { + console.error( + "Error in twitterTrendingMarketData provider:", + error + ); + return ""; + } + }, +}; diff --git a/packages/plugin-crypto-news/src/tests/birdeye.test.ts b/packages/plugin-crypto-news/src/tests/birdeye.test.ts new file mode 100644 index 00000000000..3cdfc8539c7 --- /dev/null +++ b/packages/plugin-crypto-news/src/tests/birdeye.test.ts @@ -0,0 +1,77 @@ +import assert from 'assert'; +import { fetchTokenOverview } from "../utils/birdeye"; + +async function runTests() { + const WRAPPED_SOL_ADDRESS = "So11111111111111111111111111111111111111112"; + const apiKey = process.argv[2]; + + if (!apiKey) { + console.error("API key must be provided as command line argument"); + process.exit(1); + } + + console.log("Running Birdeye API Integration Tests...\n"); + + // Test 1: Basic token overview fetch + try { + console.log("Test 1: Fetching token overview data..."); + const result = await fetchTokenOverview(WRAPPED_SOL_ADDRESS, apiKey, undefined); + + assert(result, "Result should be defined"); + assert.strictEqual(result.address, WRAPPED_SOL_ADDRESS, "Address should match"); + assert.strictEqual(result.symbol, "SOL", "Symbol should be SOL"); + assert.strictEqual(result.name, "Wrapped SOL", "Name should be Wrapped SOL"); + assert.strictEqual(result.decimals, 9, "Decimals should be 9"); + assert(result.price > 0, "Price should be greater than 0"); + assert(result.liquidity > 0, "Liquidity should be greater than 0"); + assert(result.mc > 0, "Market cap should be greater than 0"); + assert(result.holder > 0, "Holder count should be greater than 0"); + assert(result.v24hUSD > 0, "24h volume should be greater than 0"); + assert(result.v1hUSD > 0, "1h volume should be greater than 0"); + console.log("✅ Test 1 passed\n"); + } catch (error) { + console.error("❌ Test 1 failed:", error); + process.exit(1); + } + + // Test 2: Cache functionality + try { + console.log("Test 2: Testing cache functionality..."); + const mockCache = { + get: (key: string) => { + console.log("Cache get called with key:", key); + return null; + }, + set: (key: string, value: any) => { + console.log("Cache set called with key:", key); + assert(value, "Cache value should be defined"); + } + }; + + await fetchTokenOverview(WRAPPED_SOL_ADDRESS, apiKey, mockCache); + console.log("✅ Test 2 passed\n"); + } catch (error) { + console.error("❌ Test 2 failed:", error); + process.exit(1); + } + + // Test 3: Invalid token address + try { + console.log("Test 3: Testing invalid token address..."); + const invalidAddress = "invalid_address"; + try { + await fetchTokenOverview(invalidAddress, apiKey, undefined); + assert.fail("Should throw an error for invalid address"); + } catch (error) { + assert(error, "Should throw an error"); + } + console.log("✅ Test 3 passed\n"); + } catch (error) { + console.error("❌ Test 3 failed:", error); + process.exit(1); + } + + console.log("All tests passed! 🎉"); +} + +runTests().catch(console.error); \ No newline at end of file diff --git a/packages/plugin-crypto-news/src/tests/birdeye.test.ts:Zone.Identifier b/packages/plugin-crypto-news/src/tests/birdeye.test.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-crypto-news/src/utils/birdeye.ts b/packages/plugin-crypto-news/src/utils/birdeye.ts new file mode 100644 index 00000000000..0d1620ae00a --- /dev/null +++ b/packages/plugin-crypto-news/src/utils/birdeye.ts @@ -0,0 +1,182 @@ +export interface TokenOverviewResponse { + address: string; + decimals: number; + symbol: string; + name: string; + extensions: { + coingeckoId: string | null; + website: string | null; + telegram: string | null; + twitter: string | null; + description: string | null; + discord: string | null; + medium: string | null; + }; + logoURI: string; + liquidity: number; + lastTradeUnixTime: number; + lastTradeHumanTime: string; + price: number; + supply: number; + mc: number; + circulatingSupply: number; + realMc: number; + holder: number; + // Price changes + priceChange24hPercent: number; + priceChange12hPercent: number; + priceChange8hPercent: number; + priceChange4hPercent: number; + priceChange2hPercent: number; + priceChange1hPercent: number; + priceChange30mPercent: number; + // Volume data + v24hUSD: number; + v12hUSD: number; + v8hUSD: number; + v4hUSD: number; + v2hUSD: number; + v1hUSD: number; + v30mUSD: number; + // Unique wallets + uniqueWallet24h: number; + uniqueWallet12h: number; + uniqueWallet8h: number; + uniqueWallet4h: number; + uniqueWallet2h: number; + uniqueWallet1h: number; + uniqueWallet30m: number; +} + +export interface BirdeyeApiError { + success: false; + error: string; +} + +export async function fetchTokenOverview( + tokenAddress: string, + apiKey?: string, + cache?: { + get: (key: string) => any; + set: (key: string, value: any) => void; + } +): Promise<TokenOverviewResponse> { + try { + // Check cache first if provided + if (cache) { + const cacheKey = `token_overview_${tokenAddress}`; + const cachedData = cache.get(cacheKey); + if (cachedData) { + console.log( + `Returning cached token overview for ${tokenAddress}` + ); + return cachedData; + } + } + + const response = await fetch( + `https://public-api.birdeye.so/defi/token_overview?address=${tokenAddress}`, + { + method: "GET", + headers: { + accept: "application/json", + "x-api-key": apiKey || "", + }, + } + ); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data = await response.json(); + + if (!data.success || !data.data) { + throw new Error("Failed to fetch token overview data"); + } + + // Cache the response if cache is provided + if (cache) { + const cacheKey = `token_overview_${tokenAddress}`; + cache.set(cacheKey, data.data); + } + + return data.data; + } catch (error) { + console.error("Error fetching token overview:", error); + throw error; + } +} + +export interface TrendingToken { + address: string; + decimals: number; + liquidity: number; + logoURI: string; + name: string; + symbol: string; + volume24hUSD: number; + rank: number; + price: number; +} + +export interface TrendingTokensResponse { + updateUnixTime: number; + updateTime: string; + tokens: TrendingToken[]; + total: number; +} + +export async function fetchTrendingTokens( + apiKey?: string, + cache?: { + get: (key: string) => any; + set: (key: string, value: any) => void; + }, + limit: number = 20 +): Promise<TrendingTokensResponse> { + try { + // Check cache first if provided + if (cache) { + const cacheKey = `trending_tokens_${limit}`; + const cachedData = cache.get(cacheKey); + if (cachedData) { + console.log(`Returning cached trending tokens`); + return cachedData; + } + } + + const response = await fetch( + `https://public-api.birdeye.so/defi/token_trending?sort_by=rank&sort_type=asc&offset=0&limit=${limit}`, + { + method: "GET", + headers: { + accept: "application/json", + "x-api-key": apiKey || "", + "x-chain": "sui", + }, + } + ); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data = await response.json(); + + if (!data.success || !data.data) { + throw new Error("Failed to fetch trending tokens data"); + } + + // Cache the response if cache is provided + if (cache) { + const cacheKey = `trending_tokens_${limit}`; + cache.set(cacheKey, data.data); + } + + return data.data; + } catch (error) { + console.error("Error fetching trending tokens:", error); + throw error; + } +} diff --git a/packages/plugin-crypto-news/src/utils/birdeye.ts:Zone.Identifier b/packages/plugin-crypto-news/src/utils/birdeye.ts:Zone.Identifier new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/plugin-crypto-news/src/utils/serper.ts b/packages/plugin-crypto-news/src/utils/serper.ts new file mode 100644 index 00000000000..f1c9cf6baf1 --- /dev/null +++ b/packages/plugin-crypto-news/src/utils/serper.ts @@ -0,0 +1,210 @@ +// export interface TokenOverviewResponse { +// address: string; +// decimals: number; +// symbol: string; +// name: string; +// extensions: { +// coingeckoId: string | null; +// website: string | null; +// telegram: string | null; +// twitter: string | null; +// description: string | null; +// discord: string | null; +// medium: string | null; +// }; +// logoURI: string; +// liquidity: number; +// lastTradeUnixTime: number; +// lastTradeHumanTime: string; +// price: number; +// supply: number; +// mc: number; +// circulatingSupply: number; +// realMc: number; +// holder: number; +// // Price changes +// priceChange24hPercent: number; +// priceChange12hPercent: number; +// priceChange8hPercent: number; +// priceChange4hPercent: number; +// priceChange2hPercent: number; +// priceChange1hPercent: number; +// priceChange30mPercent: number; +// // Volume data +// v24hUSD: number; +// v12hUSD: number; +// v8hUSD: number; +// v4hUSD: number; +// v2hUSD: number; +// v1hUSD: number; +// v30mUSD: number; +// // Unique wallets +// uniqueWallet24h: number; +// uniqueWallet12h: number; +// uniqueWallet8h: number; +// uniqueWallet4h: number; +// uniqueWallet2h: number; +// uniqueWallet1h: number; +// uniqueWallet30m: number; +// } + +// export interface BirdeyeApiError { +// success: false; +// error: string; +// } + +// export async function fetchTokenOverview( +// tokenAddress: string, +// apiKey?: string, +// cache?: { +// get: (key: string) => any; +// set: (key: string, value: any) => void; +// } +// ): Promise<TokenOverviewResponse> { +// try { +// // Check cache first if provided +// if (cache) { +// const cacheKey = `token_overview_${tokenAddress}`; +// const cachedData = cache.get(cacheKey); +// if (cachedData) { +// console.log( +// `Returning cached token overview for ${tokenAddress}` +// ); +// return cachedData; +// } +// } + +// const response = await fetch( +// `https://public-api.birdeye.so/defi/token_overview?address=${tokenAddress}`, +// { +// method: "GET", +// headers: { +// accept: "application/json", +// "x-api-key": apiKey || "", +// }, +// } +// ); + +// if (!response.ok) { +// throw new Error(`HTTP error! status: ${response.status}`); +// } + +// const data = await response.json(); + +// if (!data.success || !data.data) { +// throw new Error("Failed to fetch token overview data"); +// } + +// // Cache the response if cache is provided +// if (cache) { +// const cacheKey = `token_overview_${tokenAddress}`; +// cache.set(cacheKey, data.data); +// } + +// return data.data; +// } catch (error) { +// console.error("Error fetching token overview:", error); +// throw error; +// } +// } + +// export interface TrendingToken { +// address: string; +// decimals: number; +// liquidity: number; +// logoURI: string; +// name: string; +// symbol: string; +// volume24hUSD: number; +// rank: number; +// price: number; +// } + +// export interface TrendingTokensResponse { +// updateUnixTime: number; +// updateTime: string; +// tokens: TrendingToken[]; +// total: number; +// } + +export interface SerperNewsResponse { + searchParameters: SearchParameters; + news: News[]; + credits: number; +} + +export interface SearchParameters { + q: string; + type: string; + tbs: string; + engine: string; +} + +export interface News { + title: string; + link: string; + snippet: string; + date: string; + source: string; + imageUrl: string; + position: number; +} + +export async function fetchSerperNews( + q: string, + apiKey?: string, + cache?: { + get: (key: string) => any; + set: (key: string, value: any) => void; + }, + limit: number = 20 +): Promise<SerperNewsResponse> { + try { + // Check cache first if provided + if (cache) { + const cacheKey = `cNews_${limit}`; + const cachedData = cache.get(cacheKey); + if (cachedData) { + console.log(`Returning cached news data`); + return cachedData; + } + } + + const query = JSON.stringify({ + q: q, + tbs: "qdr:d", + }); + const config = { + method: "POST", + headers: { + "X-API-KEY": "b0c75fc1c24744969d7f06e59414eaef43baf8e0", + "Content-Type": "application/json", + }, + body: query, + }; + const response = await fetch(`https://google.serper.dev/news`, config); + + if (!response.ok) { + const errorText = await response.text(); + throw new Error( + `HTTP error! Status: ${response.status}, Message: ${errorText}` + ); + } + + const data = await response.json(); + if (!data.news) { + throw new Error("Failed to fetch latest news data"); + } + + // Cache the response if cache is provided + if (cache) { + const cacheKey = `cNews_${limit}`; + cache.set(cacheKey, data.data); + } + + return data; + } catch (error) { + console.error("Error fetching news data:", error); + throw error; + } +} diff --git a/packages/plugin-crypto-news/tsconfig.json b/packages/plugin-crypto-news/tsconfig.json new file mode 100644 index 00000000000..18c600eec05 --- /dev/null +++ b/packages/plugin-crypto-news/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "types": [ + "node" + ] + }, + "include": [ + "src/**/*.ts", + ] +} \ No newline at end of file diff --git a/packages/plugin-crypto-news/tsup.config.ts b/packages/plugin-crypto-news/tsup.config.ts new file mode 100644 index 00000000000..0efba439d76 --- /dev/null +++ b/packages/plugin-crypto-news/tsup.config.ts @@ -0,0 +1,23 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], // Ensure you're targeting CommonJS + external: [ + "dotenv", // Externalize dotenv to prevent bundling + "fs", // Externalize fs to use Node.js built-in module + "path", // Externalize other built-ins if necessary + "@reflink/reflink", + "@node-llama-cpp", + "https", + "http", + "agentkeepalive", + "safe-buffer", + "zod", + // Add other modules you want to externalize + ], +}); + diff --git a/packages/plugin-market-analisys/src/index.ts b/packages/plugin-market-analisys/src/index.ts index dc47fbdc506..7a452296e19 100644 --- a/packages/plugin-market-analisys/src/index.ts +++ b/packages/plugin-market-analisys/src/index.ts @@ -1,11 +1,11 @@ import { Plugin } from "@elizaos/core"; import { getTokenOverviewAction } from "./actions/tokenOverview"; -import { twitterTrendingMarketData } from "./providers/twitterTrendingMarketData"; +//import { twitterTrendingMarketData } from "./providers/twitterTrendingMarketData"; export const marketAnalisysPlugin: Plugin = { name: "market-analisys", description: "Provides market analisys capabilities", actions: [getTokenOverviewAction], - providers: [twitterTrendingMarketData], + providers: [], evaluators: [], -}; \ No newline at end of file +}; diff --git a/packages/plugin-market-analisys/src/providers/twitterTrendingMarketData.ts b/packages/plugin-market-analisys/src/providers/twitterTrendingMarketData.ts index 55d9ee320d4..cfd7f51fb77 100644 --- a/packages/plugin-market-analisys/src/providers/twitterTrendingMarketData.ts +++ b/packages/plugin-market-analisys/src/providers/twitterTrendingMarketData.ts @@ -1,5 +1,5 @@ import { elizaLogger, Provider } from "@elizaos/core"; -import { fetchTrendingTokens, fetchTokenOverview } from "../utils/birdeye"; +import { fetchTokenOverview, fetchTrendingTokens } from "../utils/birdeye"; interface FormattedMarketData { symbol: string; @@ -54,7 +54,9 @@ export const twitterTrendingMarketData: Provider = { runtime.character.settings.secrets.BIRDEYE_API_KEY ); - const randomIndex = Math.floor(Math.random() * Math.min(10, trendingTokens.tokens.length)); + const randomIndex = Math.floor( + Math.random() * Math.min(10, trendingTokens.tokens.length) + ); const selectedToken = trendingTokens.tokens[randomIndex]; const tokenData = await fetchTokenOverview( @@ -66,7 +68,9 @@ export const twitterTrendingMarketData: Provider = { symbol: tokenData.symbol, name: tokenData.name, price: formatNumber(tokenData.price), - priceChange24h: formatPercentage(tokenData.priceChange24hPercent), + priceChange24h: formatPercentage( + tokenData.priceChange24hPercent + ), priceChange1h: formatPercentage(tokenData.priceChange1hPercent), volume24h: formatNumber(tokenData.v24hUSD), volume1h: formatNumber(tokenData.v1hUSD), @@ -104,10 +108,12 @@ export const twitterTrendingMarketData: Provider = { elizaLogger.log(report); return report; - } catch (error) { - console.error("Error in twitterTrendingMarketData provider:", error); + console.error( + "Error in twitterTrendingMarketData provider:", + error + ); return ""; } - } -}; \ No newline at end of file + }, +}; diff --git a/packages/plugin-market-analisys/src/utils/birdeye.ts b/packages/plugin-market-analisys/src/utils/birdeye.ts index 5383f6fe301..0d1620ae00a 100644 --- a/packages/plugin-market-analisys/src/utils/birdeye.ts +++ b/packages/plugin-market-analisys/src/utils/birdeye.ts @@ -1,174 +1,182 @@ export interface TokenOverviewResponse { - address: string; - decimals: number; - symbol: string; - name: string; - extensions: { - coingeckoId: string | null; - website: string | null; - telegram: string | null; - twitter: string | null; - description: string | null; - discord: string | null; - medium: string | null; - }; - logoURI: string; - liquidity: number; - lastTradeUnixTime: number; - lastTradeHumanTime: string; - price: number; - supply: number; - mc: number; - circulatingSupply: number; - realMc: number; - holder: number; - // Price changes - priceChange24hPercent: number; - priceChange12hPercent: number; - priceChange8hPercent: number; - priceChange4hPercent: number; - priceChange2hPercent: number; - priceChange1hPercent: number; - priceChange30mPercent: number; - // Volume data - v24hUSD: number; - v12hUSD: number; - v8hUSD: number; - v4hUSD: number; - v2hUSD: number; - v1hUSD: number; - v30mUSD: number; - // Unique wallets - uniqueWallet24h: number; - uniqueWallet12h: number; - uniqueWallet8h: number; - uniqueWallet4h: number; - uniqueWallet2h: number; - uniqueWallet1h: number; - uniqueWallet30m: number; + address: string; + decimals: number; + symbol: string; + name: string; + extensions: { + coingeckoId: string | null; + website: string | null; + telegram: string | null; + twitter: string | null; + description: string | null; + discord: string | null; + medium: string | null; + }; + logoURI: string; + liquidity: number; + lastTradeUnixTime: number; + lastTradeHumanTime: string; + price: number; + supply: number; + mc: number; + circulatingSupply: number; + realMc: number; + holder: number; + // Price changes + priceChange24hPercent: number; + priceChange12hPercent: number; + priceChange8hPercent: number; + priceChange4hPercent: number; + priceChange2hPercent: number; + priceChange1hPercent: number; + priceChange30mPercent: number; + // Volume data + v24hUSD: number; + v12hUSD: number; + v8hUSD: number; + v4hUSD: number; + v2hUSD: number; + v1hUSD: number; + v30mUSD: number; + // Unique wallets + uniqueWallet24h: number; + uniqueWallet12h: number; + uniqueWallet8h: number; + uniqueWallet4h: number; + uniqueWallet2h: number; + uniqueWallet1h: number; + uniqueWallet30m: number; } export interface BirdeyeApiError { - success: false; - error: string; + success: false; + error: string; } export async function fetchTokenOverview( - tokenAddress: string, - apiKey?: string, - cache?: { get: (key: string) => any; set: (key: string, value: any) => void }, -): Promise<TokenOverviewResponse> { - try { - // Check cache first if provided - if (cache) { - const cacheKey = `token_overview_${tokenAddress}`; - const cachedData = cache.get(cacheKey); - if (cachedData) { - console.log(`Returning cached token overview for ${tokenAddress}`); - return cachedData; - } - } - - const response = await fetch( - `https://public-api.birdeye.so/defi/token_overview?address=${tokenAddress}`, - { - method: "GET", - headers: { - "accept": "application/json", - "x-api-key": apiKey || "", - }, - } - ); - - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); + tokenAddress: string, + apiKey?: string, + cache?: { + get: (key: string) => any; + set: (key: string, value: any) => void; } - - const data = await response.json(); - - if (!data.success || !data.data) { - throw new Error("Failed to fetch token overview data"); - } - - // Cache the response if cache is provided - if (cache) { - const cacheKey = `token_overview_${tokenAddress}`; - cache.set(cacheKey, data.data); +): Promise<TokenOverviewResponse> { + try { + // Check cache first if provided + if (cache) { + const cacheKey = `token_overview_${tokenAddress}`; + const cachedData = cache.get(cacheKey); + if (cachedData) { + console.log( + `Returning cached token overview for ${tokenAddress}` + ); + return cachedData; + } + } + + const response = await fetch( + `https://public-api.birdeye.so/defi/token_overview?address=${tokenAddress}`, + { + method: "GET", + headers: { + accept: "application/json", + "x-api-key": apiKey || "", + }, + } + ); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data = await response.json(); + + if (!data.success || !data.data) { + throw new Error("Failed to fetch token overview data"); + } + + // Cache the response if cache is provided + if (cache) { + const cacheKey = `token_overview_${tokenAddress}`; + cache.set(cacheKey, data.data); + } + + return data.data; + } catch (error) { + console.error("Error fetching token overview:", error); + throw error; } - - return data.data; - } catch (error) { - console.error("Error fetching token overview:", error); - throw error; - } } export interface TrendingToken { - address: string; - decimals: number; - liquidity: number; - logoURI: string; - name: string; - symbol: string; - volume24hUSD: number; - rank: number; - price: number; + address: string; + decimals: number; + liquidity: number; + logoURI: string; + name: string; + symbol: string; + volume24hUSD: number; + rank: number; + price: number; } export interface TrendingTokensResponse { - updateUnixTime: number; - updateTime: string; - tokens: TrendingToken[]; - total: number; + updateUnixTime: number; + updateTime: string; + tokens: TrendingToken[]; + total: number; } export async function fetchTrendingTokens( - apiKey?: string, - cache?: { get: (key: string) => any; set: (key: string, value: any) => void }, - limit: number = 20 + apiKey?: string, + cache?: { + get: (key: string) => any; + set: (key: string, value: any) => void; + }, + limit: number = 20 ): Promise<TrendingTokensResponse> { - try { - // Check cache first if provided - if (cache) { - const cacheKey = `trending_tokens_${limit}`; - const cachedData = cache.get(cacheKey); - if (cachedData) { - console.log(`Returning cached trending tokens`); - return cachedData; - } + try { + // Check cache first if provided + if (cache) { + const cacheKey = `trending_tokens_${limit}`; + const cachedData = cache.get(cacheKey); + if (cachedData) { + console.log(`Returning cached trending tokens`); + return cachedData; + } + } + + const response = await fetch( + `https://public-api.birdeye.so/defi/token_trending?sort_by=rank&sort_type=asc&offset=0&limit=${limit}`, + { + method: "GET", + headers: { + accept: "application/json", + "x-api-key": apiKey || "", + "x-chain": "sui", + }, + } + ); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data = await response.json(); + + if (!data.success || !data.data) { + throw new Error("Failed to fetch trending tokens data"); + } + + // Cache the response if cache is provided + if (cache) { + const cacheKey = `trending_tokens_${limit}`; + cache.set(cacheKey, data.data); + } + + return data.data; + } catch (error) { + console.error("Error fetching trending tokens:", error); + throw error; } - - const response = await fetch( - `https://public-api.birdeye.so/defi/token_trending?sort_by=rank&sort_type=asc&offset=0&limit=${limit}`, - { - method: "GET", - headers: { - "accept": "application/json", - "x-api-key": apiKey || "", - "x-chain": "solana" - }, - } - ); - - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); - } - - const data = await response.json(); - - if (!data.success || !data.data) { - throw new Error("Failed to fetch trending tokens data"); - } - - // Cache the response if cache is provided - if (cache) { - const cacheKey = `trending_tokens_${limit}`; - cache.set(cacheKey, data.data); - } - - return data.data; - } catch (error) { - console.error("Error fetching trending tokens:", error); - throw error; - } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddcef1406ba..29ef3a83b24 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -249,6 +249,9 @@ importers: '@ethosdao/plugin-market-analisys': specifier: workspace:* version: link:../packages/plugin-market-analisys + '@srise/plugin-crypto-news': + specifier: workspace:* + version: link:../packages/plugin-crypto-news readline: specifier: 1.3.0 version: 1.3.0 @@ -1163,6 +1166,22 @@ importers: specifier: 7.1.0 version: 7.1.0 + packages/plugin-crypto-news: + dependencies: + '@elizaos/core': + specifier: workspace:* + version: link:../core + devDependencies: + '@types/node': + specifier: ^20.0.0 + version: 20.17.9 + tsup: + specifier: 8.3.5 + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + tsx: + specifier: ^4.19.2 + version: 4.19.2 + packages/plugin-echochambers: dependencies: '@elizaos/core': @@ -33718,7 +33737,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.0(supports-color@8.1.1) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: From ca682b32e22240d502c21f80a9d3ea2c048195f2 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Mon, 13 Jan 2025 12:49:10 +0700 Subject: [PATCH 05/58] chainCatcher --- packages/client-twitter/src/post.ts | 2 +- packages/plugin-crypto-news/package.json | 3 +- .../src/providers/cryptoNewsData.ts | 33 ++-- .../src/utils/chainCatcher.ts | 58 ++++++ pnpm-lock.yaml | 183 +++++++++++++++--- 5 files changed, 236 insertions(+), 43 deletions(-) create mode 100644 packages/plugin-crypto-news/src/utils/chainCatcher.ts diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index 4298bc90744..6ac094c4e1d 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -35,7 +35,7 @@ const twitterPostTemplate = ` # Task: Generate a post in the voice and style and perspective of {{agentName}} @{{twitterUserName}}. Write a 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 include the summary of the # NEWS above +Your response must include the summary of the # NEWS above or pick any single news for your reference. Your response should be 1, 2, or 3 sentences (choose the length at random). 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 if there are multiple statements in your response.`; diff --git a/packages/plugin-crypto-news/package.json b/packages/plugin-crypto-news/package.json index 3d1d97081a9..3ff91e03223 100644 --- a/packages/plugin-crypto-news/package.json +++ b/packages/plugin-crypto-news/package.json @@ -6,7 +6,8 @@ "author": "metaanomaly", "types": "dist/index.d.ts", "dependencies": { - "@elizaos/core": "workspace:*" + "@elizaos/core": "workspace:*", + "rss-to-json": "^2.1.1" }, "devDependencies": { "@types/node": "^20.0.0", diff --git a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts index a244d91d64f..49270caeb27 100644 --- a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts +++ b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts @@ -1,5 +1,5 @@ import { elizaLogger, Provider } from "@elizaos/core"; -import { fetchSerperNews, SerperNewsResponse } from "../utils/serper"; +import { ChainCatcherResponse, fetchChainCatcher } from "../utils/chainCatcher"; // interface FormattedMarketData { // symbol: string; @@ -51,26 +51,31 @@ export const cryptoNewsData: Provider = { try { // fetch several times - const cryptoNews: SerperNewsResponse = - await fetchSerperNews("crypto"); - const suiNews: SerperNewsResponse = await fetchSerperNews("$SUI"); + const chainCatcher: ChainCatcherResponse = + await fetchChainCatcher(); + + // const cryptoNews: SerperNewsResponse = + // await fetchSerperNews("crypto"); + // const suiNews: SerperNewsResponse = await fetchSerperNews("$SUI"); let output = "# NEWS\n\n"; - cryptoNews.news.forEach((article) => { - output += `- ${article.title}\n${article.snippet}\n\n`; - }); - suiNews.news.forEach((article) => { - output += `- ${article.title}\n${article.snippet}\n\n`; + + chainCatcher.items.forEach((article) => { + output += `- ${article.title}\n${article.content}\n\n`; }); - output += `# END NEWS\n\n`; + + // cryptoNews.news.forEach((article) => { + // output += `- ${article.title}\n${article.snippet}\n\n`; + // }); + // suiNews.news.forEach((article) => { + // output += `- ${article.title}\n${article.snippet}\n\n`; + // }); + output += `# News above are in Chinese Language, you have to translate it to ENGLISH \n\n# END NEWS\n\n`; elizaLogger.log(output); return output; } catch (error) { - console.error( - "Error in twitterTrendingMarketData provider:", - error - ); + console.error("Error in fetching news provider:", error); return ""; } }, diff --git a/packages/plugin-crypto-news/src/utils/chainCatcher.ts b/packages/plugin-crypto-news/src/utils/chainCatcher.ts new file mode 100644 index 00000000000..cd73157f5fc --- /dev/null +++ b/packages/plugin-crypto-news/src/utils/chainCatcher.ts @@ -0,0 +1,58 @@ +export interface ChainCatcherItem { + title: string; + pubDate: string; + link: string; + guid: string; + thumbnail: string; + content: string; + description: string; + enclosure: any; + categories: any[]; +} +export interface ChainCatcherFeed { + url: string; + title: string; + link: string; + author: string; + description: string; + image: string; +} +export interface ChainCatcherResponse { + status: string; + feed: ChainCatcherFeed; + items: ChainCatcherItem[]; +} + +export async function fetchChainCatcher(): Promise<ChainCatcherResponse> { + try { + // Check cache first if provided + + const config = { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + }; + const response = await fetch( + `https://api.rss2json.com/v1/api.json?rss_url=https%3A%2F%2Fwww.chaincatcher.com%2Frss%2Fclist`, + config + ); + + if (!response.ok) { + const errorText = await response.text(); + throw new Error( + `HTTP error! Status: ${response.status}, Message: ${errorText}` + ); + } + + const data = await response.json(); + if (!data.status || data.status !== "ok") { + throw new Error("Failed to fetch latest news data"); + } + + return data; + } catch (error) { + console.error("Error fetching news data:", error); + throw error; + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 29ef3a83b24..15ad946900c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,7 +25,7 @@ importers: version: 0.2.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@glacier-network/elizaos-adapter': specifier: 0.0.1-alpha.1 - version: 0.0.1-alpha.1(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(utf-8-validate@5.0.10) + version: 0.0.1-alpha.1(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(utf-8-validate@5.0.10) '@vitest/eslint-plugin': specifier: 1.0.1 version: 1.0.1(@typescript-eslint/utils@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(vitest@2.1.5(@types/node@22.10.5)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) @@ -1124,7 +1124,7 @@ importers: dependencies: '@elizaos/core': specifier: ^0.1.7 - version: 0.1.7(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3) + version: 0.1.8(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3) axios: specifier: ^1.6.7 version: 1.7.9(debug@4.4.0) @@ -1171,6 +1171,9 @@ importers: '@elizaos/core': specifier: workspace:* version: link:../core + rss-to-json: + specifier: ^2.1.1 + version: 2.1.1 devDependencies: '@types/node': specifier: ^20.0.0 @@ -1334,7 +1337,7 @@ importers: dependencies: '@elizaos/core': specifier: ^0.1.7 - version: 0.1.7(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3) + version: 0.1.8(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3) tsup: specifier: ^8.3.5 version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) @@ -2086,6 +2089,12 @@ packages: peerDependencies: zod: ^3.0.0 + '@ai-sdk/mistral@1.0.8': + resolution: {integrity: sha512-jWH4HHK4cYvXaac9UprMiSUBwOVb3e0hpbiL1wPb+2bF75pqQQKFQWQyfmoLFrh1oXlMOGn+B6IzwUDSFHLanA==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + '@ai-sdk/openai@1.0.5': resolution: {integrity: sha512-JDCPBJQx9o3LgboBPaA55v+9EZ7Vm/ozy0+J5DIr2jJF8WETjeCnigdxixyzEy/Od4wX871jOTSuGffwNIi0kA==} engines: {node: '>=18'} @@ -2119,6 +2128,15 @@ packages: zod: optional: true + '@ai-sdk/provider-utils@2.0.7': + resolution: {integrity: sha512-4sfPlKEALHPXLmMFcPlYksst3sWBJXmCDZpIBJisRrmwGG6Nn3mq0N1Zu/nZaGcrWZoOY+HT2Wbxla1oTElYHQ==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + '@ai-sdk/provider@0.0.24': resolution: {integrity: sha512-XMsNGJdGO+L0cxhhegtqZ8+T6nn4EoShS819OvCgI2kLbYTIvk0GWFGD0AXJmxkxs3DrpsJxKAFukFR7bvTkgQ==} engines: {node: '>=18'} @@ -2131,6 +2149,10 @@ packages: resolution: {integrity: sha512-mV+3iNDkzUsZ0pR2jG0sVzU6xtQY5DtSCBy3JFycLp6PwjyLw/iodfL3MwdmMCRJWgs3dadcHejRnMvF9nGTBg==} engines: {node: '>=18'} + '@ai-sdk/provider@1.0.4': + resolution: {integrity: sha512-lJi5zwDosvvZER3e/pB8lj1MN3o3S7zJliQq56BRr4e9V3fcRyFtwP0JRxaRS5vHYX3OJ154VezVoQNrk0eaKw==} + engines: {node: '>=18'} + '@ai-sdk/react@0.0.70': resolution: {integrity: sha512-GnwbtjW4/4z7MleLiW+TOZC2M29eCg1tOUpuEiYFMmFNZK8mkrqM0PFZMo6UsYeUYMWqEOOcPOU9OQVJMJh7IQ==} engines: {node: '>=18'} @@ -3955,6 +3977,9 @@ packages: '@elizaos/core@0.1.7': resolution: {integrity: sha512-oorLGxE0LAdboNFhf62erTxu0+woNHZn98at/X3caDX34Fxr+d1cRQ6/W34WPAOIlv1tg3Q0ZArcpCCOaDTcMw==} + '@elizaos/core@0.1.8': + resolution: {integrity: sha512-nQT5uQTQVTZJ3CrhVkK4dRdP/RuBMiOv/u3JZvMJGhY45z0Gy0gY27NEn/BBlJ4Ymt/SmqtXOul/x2hOeQen4Q==} + '@emnapi/core@1.3.1': resolution: {integrity: sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==} @@ -11681,6 +11706,10 @@ packages: resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} hasBin: true + fast-xml-parser@4.5.1: + resolution: {integrity: sha512-y655CeyUQ+jj7KBbYMc4FG01V8ZQqjN+gDYGJ50RtfsUB8iG9AmwmwoAgeKLJdmueKKMrH1RJ7yXHTSoczdv5w==} + hasBin: true + fastembed@1.14.1: resolution: {integrity: sha512-Y14v+FWZwjNUpQ7mRGYu4N5yF+hZkF7zqzPWzzLbwdIEtYsHy0DSpiVJ+Fg6Oi1fQjrBKASQt0hdSMSjw1/Wtw==} @@ -13589,8 +13618,8 @@ packages: resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} engines: {node: '>=18'} - katex@0.16.19: - resolution: {integrity: sha512-3IA6DYVhxhBabjSLTNO9S4+OliA3Qvb8pBQXMfC4WxXJgLwZgnfDl0BmB4z6nBMdznBsZ+CGM8DrGZ5hcguDZg==} + katex@0.16.20: + resolution: {integrity: sha512-jjuLaMGD/7P8jUTpdKhA9IoqnH+yMFB3sdAFtq5QdAqeP2PjiSbnC3EaguKPNtv6dXXanHxp1ckwvF4a86LBig==} hasBin: true keccak@3.0.2: @@ -14550,8 +14579,8 @@ packages: vue-tsc: optional: true - mlly@1.7.3: - resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} + mlly@1.7.4: + resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} mnemonist@0.38.5: resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} @@ -15439,6 +15468,9 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + pathe@2.0.1: + resolution: {integrity: sha512-6jpjMpOth5S9ITVu5clZ7NOgHNsv5vRQdheL9ztp2vZmM6fRbLvyua1tiBIL4lk8SAe3ARzeXEly6siXCjDHDw==} + pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -17147,6 +17179,9 @@ packages: rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + rss-to-json@2.1.1: + resolution: {integrity: sha512-xXf93iDpOadPWMtAUA/bT1iyifscdbIdtAQBGRbXLfnDQ5Z4tWpmbrAhV3p54nWxwm4joGIDeUrj6CLGm8BI3A==} + rtl-detect@1.1.2: resolution: {integrity: sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==} @@ -17973,8 +18008,11 @@ packages: tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - tar-fs@3.0.6: - resolution: {integrity: sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==} + tar-fs@2.1.2: + resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} + + tar-fs@3.0.7: + resolution: {integrity: sha512-2sAfoF/zw/2n8goUGnGRZTWTD4INtnScPZvyYBI6BDlJ3wNR5o1dw03EfBvuhG6GBLvC4J+C7j7W+64aZ0ogQA==} tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} @@ -19759,6 +19797,12 @@ snapshots: '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) zod: 3.23.8 + '@ai-sdk/mistral@1.0.8(zod@3.23.8)': + dependencies: + '@ai-sdk/provider': 1.0.4 + '@ai-sdk/provider-utils': 2.0.7(zod@3.23.8) + zod: 3.23.8 + '@ai-sdk/openai@1.0.5(zod@3.23.8)': dependencies: '@ai-sdk/provider': 1.0.1 @@ -19792,6 +19836,15 @@ snapshots: optionalDependencies: zod: 3.23.8 + '@ai-sdk/provider-utils@2.0.7(zod@3.23.8)': + dependencies: + '@ai-sdk/provider': 1.0.4 + eventsource-parser: 3.0.0 + nanoid: 3.3.8 + secure-json-parse: 2.7.0 + optionalDependencies: + zod: 3.23.8 + '@ai-sdk/provider@0.0.24': dependencies: json-schema: 0.4.0 @@ -19804,6 +19857,10 @@ snapshots: dependencies: json-schema: 0.4.0 + '@ai-sdk/provider@1.0.4': + dependencies: + json-schema: 0.4.0 + '@ai-sdk/react@0.0.70(react@18.3.1)(zod@3.23.8)': dependencies: '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) @@ -23192,12 +23249,64 @@ snapshots: - typeorm - vue - '@elizaos/core@0.1.7(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)': + '@elizaos/core@0.1.8(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)': + dependencies: + '@ai-sdk/anthropic': 0.0.56(zod@3.23.8) + '@ai-sdk/google': 0.0.55(zod@3.23.8) + '@ai-sdk/google-vertex': 0.0.43(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(zod@3.23.8) + '@ai-sdk/groq': 0.0.3(zod@3.23.8) + '@ai-sdk/mistral': 1.0.8(zod@3.23.8) + '@ai-sdk/openai': 1.0.5(zod@3.23.8) + '@anthropic-ai/sdk': 0.30.1(encoding@0.1.13) + '@fal-ai/client': 1.2.0 + '@types/uuid': 10.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.17.3))(svelte@5.17.3)(zod@3.23.8) + anthropic-vertex-ai: 1.0.2(encoding@0.1.13)(zod@3.23.8) + fastembed: 1.14.1 + fastestsmallesttextencoderdecoder: 1.0.22 + gaxios: 6.7.1(encoding@0.1.13) + glob: 11.0.0 + handlebars: 4.7.8 + js-sha1: 0.7.0 + js-tiktoken: 1.0.15 + langchain: 0.3.6(@langchain/core@0.3.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(handlebars@4.7.8)(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) + ollama-ai-provider: 0.16.1(zod@3.23.8) + openai: 4.73.0(encoding@0.1.13)(zod@3.23.8) + tinyld: 1.3.4 + together-ai: 0.7.0(encoding@0.1.13) + unique-names-generator: 4.7.1 + uuid: 11.0.3 + zod: 3.23.8 + transitivePeerDependencies: + - '@google-cloud/vertexai' + - '@langchain/anthropic' + - '@langchain/aws' + - '@langchain/cohere' + - '@langchain/core' + - '@langchain/google-genai' + - '@langchain/google-vertexai' + - '@langchain/groq' + - '@langchain/mistralai' + - '@langchain/ollama' + - axios + - cheerio + - encoding + - peggy + - react + - solid-js + - sswr + - supports-color + - svelte + - typeorm + - vue + + '@elizaos/core@0.1.8(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)': dependencies: '@ai-sdk/anthropic': 0.0.56(zod@3.23.8) '@ai-sdk/google': 0.0.55(zod@3.23.8) '@ai-sdk/google-vertex': 0.0.43(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(zod@3.23.8) '@ai-sdk/groq': 0.0.3(zod@3.23.8) + '@ai-sdk/mistral': 1.0.8(zod@3.23.8) '@ai-sdk/openai': 1.0.5(zod@3.23.8) '@anthropic-ai/sdk': 0.30.1(encoding@0.1.13) '@fal-ai/client': 1.2.0 @@ -24142,9 +24251,9 @@ snapshots: - debug - utf-8-validate - '@glacier-network/elizaos-adapter@0.0.1-alpha.1(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(utf-8-validate@5.0.10)': + '@glacier-network/elizaos-adapter@0.0.1-alpha.1(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(utf-8-validate@5.0.10)': dependencies: - '@elizaos/core': 0.1.7(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3) + '@elizaos/core': 0.1.7(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.29(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.9)(encoding@0.1.13)(react@18.3.1)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3) '@glacier-network/client': 0.2.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@tavily/core': 0.0.2 dotenv: 16.4.7 @@ -24302,7 +24411,7 @@ snapshots: globals: 15.14.0 kolorist: 1.8.0 local-pkg: 0.5.1 - mlly: 1.7.3 + mlly: 1.7.4 transitivePeerDependencies: - supports-color @@ -30345,7 +30454,7 @@ snapshots: globby: 14.0.2 magic-string: 0.30.17 mdbox: 0.1.1 - mlly: 1.7.3 + mlly: 1.7.4 ofetch: 1.4.1 pathe: 1.1.2 perfect-debounce: 1.0.0 @@ -31080,7 +31189,7 @@ snapshots: dotenv: 16.4.7 giget: 1.2.3 jiti: 2.4.0 - mlly: 1.7.3 + mlly: 1.7.4 ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 @@ -33737,7 +33846,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -33787,6 +33896,10 @@ snapshots: dependencies: strnum: 1.0.5 + fast-xml-parser@4.5.1: + dependencies: + strnum: 1.0.5 + fastembed@1.14.1: dependencies: '@anush008/tokenizers': 0.0.0 @@ -36503,7 +36616,7 @@ snapshots: jwt-decode@4.0.0: {} - katex@0.16.19: + katex@0.16.20: dependencies: commander: 8.3.0 @@ -36872,7 +36985,7 @@ snapshots: local-pkg@0.5.1: dependencies: - mlly: 1.7.3 + mlly: 1.7.4 pkg-types: 1.3.0 locate-character@3.0.0: {} @@ -37406,7 +37519,7 @@ snapshots: dagre-d3-es: 7.0.11 dayjs: 1.11.13 dompurify: 3.2.2 - katex: 0.16.19 + katex: 0.16.20 khroma: 2.1.0 lodash-es: 4.17.21 marked: 13.0.3 @@ -37893,7 +38006,7 @@ snapshots: defu: 6.1.4 esbuild: 0.24.2 jiti: 1.21.7 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 pkg-types: 1.3.0 postcss: 8.4.49 @@ -37903,10 +38016,10 @@ snapshots: optionalDependencies: typescript: 5.7.3 - mlly@1.7.3: + mlly@1.7.4: dependencies: acorn: 8.14.0 - pathe: 1.1.2 + pathe: 2.0.1 pkg-types: 1.3.0 ufo: 1.5.4 @@ -39059,6 +39172,8 @@ snapshots: pathe@1.1.2: {} + pathe@2.0.1: {} + pathval@2.0.0: {} pbkdf2@3.1.2: @@ -39191,7 +39306,7 @@ snapshots: pkg-types@1.3.0: dependencies: confbox: 0.1.8 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 pkg-up@3.1.0: @@ -39994,7 +40109,7 @@ snapshots: pump: 3.0.2 rc: 1.2.8 simple-get: 4.0.1 - tar-fs: 2.1.1 + tar-fs: 2.1.2 tunnel-agent: 0.6.0 prelude-ls@1.2.1: {} @@ -41042,6 +41157,13 @@ snapshots: rrweb-cssom@0.8.0: {} + rss-to-json@2.1.1: + dependencies: + axios: 1.7.9(debug@4.4.0) + fast-xml-parser: 4.5.1 + transitivePeerDependencies: + - debug + rtl-detect@1.1.2: {} rtlcss@4.3.0: @@ -41330,7 +41452,7 @@ snapshots: prebuild-install: 7.1.2 semver: 7.6.3 simple-get: 4.0.1 - tar-fs: 3.0.6 + tar-fs: 3.0.7 tunnel-agent: 0.6.0 sharp@0.33.5: @@ -42055,7 +42177,14 @@ snapshots: pump: 3.0.2 tar-stream: 2.2.0 - tar-fs@3.0.6: + tar-fs@2.1.2: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.2 + tar-stream: 2.2.0 + + tar-fs@3.0.7: dependencies: pump: 3.0.2 tar-stream: 3.1.7 @@ -42809,7 +42938,7 @@ snapshots: jiti: 1.21.7 magic-string: 0.30.17 mkdist: 1.6.0(typescript@5.7.3) - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 pkg-types: 1.3.0 pretty-bytes: 6.1.1 From 3029b6cf0a80d6e07664982190fd3cb09ca87fc7 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Mon, 13 Jan 2025 15:07:06 +0700 Subject: [PATCH 06/58] goplus capability --- .../client-telegram/src/messageManager.ts | 31 ++- packages/core/src/generation.ts | 68 ++++-- packages/core/src/runtime.ts | 37 +-- packages/plugin-goplus/src/actions/scan.ts | 211 ++++++++++++++++++ packages/plugin-goplus/src/index.ts | 15 +- .../plugin-goplus/src/lib/GoPlusManage.ts | 83 +++---- 6 files changed, 350 insertions(+), 95 deletions(-) create mode 100644 packages/plugin-goplus/src/actions/scan.ts diff --git a/packages/client-telegram/src/messageManager.ts b/packages/client-telegram/src/messageManager.ts index bbf597232d5..4a14e71e479 100644 --- a/packages/client-telegram/src/messageManager.ts +++ b/packages/client-telegram/src/messageManager.ts @@ -1,30 +1,37 @@ -import { Message } from "@telegraf/types"; -import { Context, Telegraf } from "telegraf"; -import { composeContext, elizaLogger, ServiceType, composeRandomUser } from "@elizaos/core"; -import { getEmbeddingZeroVector } from "@elizaos/core"; import { + composeContext, + composeRandomUser, Content, + elizaLogger, + getEmbeddingZeroVector, HandlerCallback, IAgentRuntime, IImageDescriptionService, + Media, Memory, ModelClass, + ServiceType, State, + stringToUuid, UUID, - Media, } from "@elizaos/core"; -import { stringToUuid } from "@elizaos/core"; +import { Message } from "@telegraf/types"; +import { Context, Telegraf } from "telegraf"; -import { generateMessageResponse, generateShouldRespond } from "@elizaos/core"; -import { messageCompletionFooter, shouldRespondFooter } from "@elizaos/core"; +import { + generateMessageResponse, + generateShouldRespond, + messageCompletionFooter, + shouldRespondFooter, +} from "@elizaos/core"; -import { cosineSimilarity, escapeMarkdown } from "./utils"; import { MESSAGE_CONSTANTS, - TIMING_CONSTANTS, RESPONSE_CHANCES, TEAM_COORDINATION, + TIMING_CONSTANTS, } from "./constants"; +import { cosineSimilarity, escapeMarkdown } from "./utils"; import fs from "fs"; @@ -1117,6 +1124,10 @@ export class MessageManager { // Execute callback to send messages and log memories const responseMessages = await callback(responseContent); + // console.log({ + // responseMessages, + // responseContent, + // }); // Update state after response state = await this.runtime.updateRecentMessageState(state); diff --git a/packages/core/src/generation.ts b/packages/core/src/generation.ts index 570971c357b..600d7862486 100644 --- a/packages/core/src/generation.ts +++ b/packages/core/src/generation.ts @@ -13,7 +13,7 @@ import { GenerateObjectResult, } from "ai"; import { Buffer } from "buffer"; -import https from 'https'; +import https from "https"; import { encodingForModel, TiktokenModel } from "js-tiktoken"; import { RecursiveCharacterTextSplitter } from "langchain/text_splitter"; import { createOllama } from "ollama-ai-provider"; @@ -342,7 +342,23 @@ export async function generateText({ presencePenalty: presence_penalty, experimental_telemetry: experimental_telemetry, }); - + // console.log({ + // model: openai.languageModel(model), + // prompt: context, + // system: + // runtime.character.system ?? + // settings.SYSTEM_PROMPT ?? + // undefined, + // tools: tools, + // onStepFinish: onStepFinish, + // maxSteps: maxSteps, + // temperature: temperature, + // maxTokens: max_response_length, + // frequencyPenalty: frequency_penalty, + // presencePenalty: presence_penalty, + // experimental_telemetry: experimental_telemetry, + // openaiResponse, + // }); response = openaiResponse; elizaLogger.debug("Received response from OpenAI model."); break; @@ -1506,7 +1522,7 @@ export const generateWebSearch = async ( searchDepth: "advanced", // "basic"(default) "advanced" includeImages: false, // false (default) true }); - console.log(`TVLY RES`,response); + console.log(`TVLY RES`, response); return response; } catch (error) { elizaLogger.error("Error:", error); @@ -1524,45 +1540,59 @@ export const generateSerperSearch = async ( //const cleanedQuery = query.replace(/@\S+/g, ''); //console.log(`CLEANED QUERY`,cleanedQuery) const data = JSON.stringify({ - q: query + q: query, }); const options = { - hostname: 'google.serper.dev', + hostname: "google.serper.dev", port: 443, - path: '/search', - method: 'POST', + path: "/search", + method: "POST", headers: { - 'X-API-KEY': apiKey, - 'Content-Type': 'application/json', - 'Content-Length': Buffer.byteLength(data), - } + "X-API-KEY": apiKey, + "Content-Type": "application/json", + "Content-Length": Buffer.byteLength(data), + }, }; const sendRequest = (): Promise<SerperSearchResponse> => { return new Promise((resolve, reject) => { const req = https.request(options, (res) => { - let body = ''; + let body = ""; - res.on('data', (chunk) => { + res.on("data", (chunk) => { body += chunk; }); - res.on('end', () => { - if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) { + res.on("end", () => { + if ( + res.statusCode && + res.statusCode >= 200 && + res.statusCode < 300 + ) { try { - const parsedData = JSON.parse(body) as SerperSearchResponse; + const parsedData = JSON.parse( + body + ) as SerperSearchResponse; resolve(parsedData); } catch (err) { - reject(new Error(`Failed to parse response: ${err}`)); + reject( + new Error( + `Failed to parse response: ${err}` + ) + ); } } else { - reject(new Error(`Request failed with status code: ${res.statusCode}`)); + reject( + new Error( + `Request failed with status code: ${res.statusCode}` + ) + ); } }); }); - req.on('error', (err) => { + req.on("error", (err) => { reject(err); }); diff --git a/packages/core/src/runtime.ts b/packages/core/src/runtime.ts index 37bab24adf0..0dad3997008 100644 --- a/packages/core/src/runtime.ts +++ b/packages/core/src/runtime.ts @@ -103,8 +103,7 @@ export class AgentRuntime implements IAgentRuntime { */ imageModelProvider: ModelProviderName; - - /** + /** * The model to use for describing images. */ imageVisionModelProvider: ModelProviderName; @@ -331,14 +330,13 @@ export class AgentRuntime implements IAgentRuntime { ); this.imageVisionModelProvider = - this.character.imageVisionModelProvider ?? this.modelProvider; + this.character.imageVisionModelProvider ?? this.modelProvider; elizaLogger.info("Selected model provider:", this.modelProvider); - elizaLogger.info( + elizaLogger.info( "Selected image model provider:", this.imageVisionModelProvider - ); - + ); // Validate model provider if (!Object.values(ModelProviderName).includes(this.modelProvider)) { @@ -426,22 +424,27 @@ export class AgentRuntime implements IAgentRuntime { } async stop() { - elizaLogger.debug('runtime::stop - character', this.character) - // stop services, they don't have a stop function + elizaLogger.debug("runtime::stop - character", this.character); + // stop services, they don't have a stop function // just initialize - // plugins + // plugins // have actions, providers, evaluators (no start/stop) // services (just initialized), clients - // client have a start - for(const cStr in this.clients) { - const c = this.clients[cStr] - elizaLogger.log('runtime::stop - requesting', cStr, 'client stop for', this.character.name) - c.stop() - } - // we don't need to unregister with directClient - // don't need to worry about knowledge + // client have a start + for (const cStr in this.clients) { + const c = this.clients[cStr]; + elizaLogger.log( + "runtime::stop - requesting", + cStr, + "client stop for", + this.character.name + ); + c.stop(); + } + // we don't need to unregister with directClient + // don't need to worry about knowledge } /** diff --git a/packages/plugin-goplus/src/actions/scan.ts b/packages/plugin-goplus/src/actions/scan.ts new file mode 100644 index 00000000000..5550abc241a --- /dev/null +++ b/packages/plugin-goplus/src/actions/scan.ts @@ -0,0 +1,211 @@ +import { + Action, + elizaLogger, + generateObjectDeprecated, + generateText, + HandlerCallback, + IAgentRuntime, + Memory, + ModelClass, + State, +} from "@elizaos/core"; +import { GoPlusManage, GoPlusParamType, GoPlusType } from "../lib/GoPlusManage"; +import { requestPrompt, responsePrompt } from "../templates"; + +export const scanTokenAction: Action = { + name: "TOKEN_SCAN", + similes: ["SCAN_TOKEN", "GOPLUS_SCAN"], + description: "Perform a token scan by given address.", + validate: async (runtime: IAgentRuntime, message: Memory) => { + const goplus = !!runtime.getSetting("GOPLUS_API_KEY"); + return goplus; + }, + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + options: any, + callback: HandlerCallback + ) => { + try { + elizaLogger.log("check input text", message.content.text); + const obj = (await generateObjectDeprecated({ + runtime: runtime, + context: requestPrompt(message.content.text), + modelClass: ModelClass.LARGE, // gpt-4o-mini + })) as GoPlusParamType; + + elizaLogger.log("check generateObjectDeprecated text", obj); + const goPlusManage = new GoPlusManage( + runtime.getSetting("GOPLUS_API_KEY") + ); + + let checkResult: any; + switch (obj.type) { + case GoPlusType.EVMTOKEN_SECURITY_CHECK: + checkResult = await goPlusManage.tokenSecurity( + obj.network, + obj.token + ); + break; + case GoPlusType.SOLTOKEN_SECURITY_CHECK: + checkResult = + await goPlusManage.solanaTokenSecurityUsingGET( + obj.token + ); + break; + case GoPlusType.SUITOKEN_SECURITY_CHECK: + checkResult = await goPlusManage.suiTokenSecurityUsingGET( + obj.token + ); + break; + case GoPlusType.RUGPULL_SECURITY_CHECK: + checkResult = await goPlusManage.rugpullDetection( + obj.network, + obj.contract + ); + break; + case GoPlusType.NFT_SECURITY_CHECK: + checkResult = await goPlusManage.nftSecurity( + obj.network, + obj.token + ); + break; + case GoPlusType.ADRESS_SECURITY_CHECK: + checkResult = await goPlusManage.addressSecurity( + obj.wallet + ); + break; + case GoPlusType.APPROVAL_SECURITY_CHECK: + checkResult = await goPlusManage.approvalSecurity( + obj.network, + obj.contract + ); + break; + case GoPlusType.ACCOUNT_ERC20_SECURITY_CHECK: + checkResult = await goPlusManage.erc20ApprovalSecurity( + obj.network, + obj.wallet + ); + break; + case GoPlusType.ACCOUNT_ERC721_SECURITY_CHECK: + checkResult = await goPlusManage.erc721ApprovalSecurity( + obj.network, + obj.wallet + ); + break; + case GoPlusType.ACCOUNT_ERC1155_SECURITY_CHECK: + checkResult = await goPlusManage.erc1155ApprovalSecurity( + obj.network, + obj.wallet + ); + break; + case GoPlusType.SIGNATURE_SECURITY_CHECK: + checkResult = await goPlusManage.inputDecode( + obj.network, + obj.data + ); + break; + case GoPlusType.URL_SECURITY_CHECK: + checkResult = + await goPlusManage.dappSecurityAndPhishingSite(obj.url); + break; + default: + throw new Error("type is invaild"); + } + elizaLogger.log("checkResult text", checkResult); + const checkResponse = await generateText({ + runtime: runtime, + context: responsePrompt( + JSON.stringify(checkResult), + message.content.text + ), + modelClass: ModelClass.LARGE, + }); + elizaLogger.log("checkResponse text", checkResponse); + callback({ + text: checkResponse, + }); + } catch (e) { + elizaLogger.error("Error in scanTokenAction handler", e); + return "error"; + } + }, + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "what do you think about this token 0x", + }, + }, + { + user: "{{agentName}}", + content: { + text: "Here is what i found about 0x:", + action: "TOKEN_SCAN", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Can you find details about this token 0x", + }, + }, + { + user: "{{agentName}}", + content: { + text: "Here are the scan result I found about the 0x:", + action: "TOKEN_SCAN", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Can you scan this token 0x?", + }, + }, + { + user: "{{agentName}}", + content: { + text: "Here is scan result about 0x:", + action: "TOKEN_SCAN", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Check the security result for this token 0x.", + }, + }, + { + user: "{{agentName}}", + content: { + text: "Here is security scan I found:", + action: "TOKEN_SCAN", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Scan this token 0x .", + }, + }, + { + user: "{{agentName}}", + content: { + text: "Here are the current scan result:", + action: "TOKEN_SCAN", + }, + }, + ], + ], +} as Action; diff --git a/packages/plugin-goplus/src/index.ts b/packages/plugin-goplus/src/index.ts index 3af4f756270..1af9797adce 100644 --- a/packages/plugin-goplus/src/index.ts +++ b/packages/plugin-goplus/src/index.ts @@ -1,17 +1,16 @@ import { Plugin } from "@elizaos/core"; +import { scanTokenAction } from "./actions/scan"; import GoplusSecurityService from "./services/GoplusSecurityService"; export * from "./services/GoplusSecurityService"; - export const goplusPlugin: Plugin = { - name: "goplus", - description: - "goplus Plugin for Eliza - Enables on-chain security checks", - actions: [], - evaluators: [], - providers: [], - services: [new GoplusSecurityService()], + name: "goplus", + description: "goplus Plugin for Eliza - Enables on-chain security checks", + actions: [scanTokenAction], + evaluators: [], + providers: [], + services: [new GoplusSecurityService()], }; export default goplusPlugin; diff --git a/packages/plugin-goplus/src/lib/GoPlusManage.ts b/packages/plugin-goplus/src/lib/GoPlusManage.ts index 1406e167ff4..2a4e47257ef 100644 --- a/packages/plugin-goplus/src/lib/GoPlusManage.ts +++ b/packages/plugin-goplus/src/lib/GoPlusManage.ts @@ -1,5 +1,3 @@ - - export const GoPlusType = { EVMTOKEN_SECURITY_CHECK: "EVMTOKEN_SECURITY_CHECK", SOLTOKEN_SECURITY_CHECK: "SOLTOKEN_SECURITY_CHECK", @@ -13,19 +11,19 @@ export const GoPlusType = { ACCOUNT_ERC1155_SECURITY_CHECK: "ACCOUNT_ERC1155_SECURITY_CHECK", SIGNATURE_SECURITY_CHECK: "SIGNATURE_SECURITY_CHECK", URL_SECURITY_CHECK: "URL_SECURITY_CHECK", -} +}; -export type GoPlusType = (typeof GoPlusType)[keyof typeof GoPlusType] +export type GoPlusType = (typeof GoPlusType)[keyof typeof GoPlusType]; export type GoPlusParamType = { - "type": GoPlusType, - "network"?: string, - "token"?: string, - "contract"?: string, - "wallet"?: string, - "url"?: string, - "data"?: string, -} + type: GoPlusType; + network?: string; + token?: string; + contract?: string; + wallet?: string; + url?: string; + data?: string; +}; export class GoPlusManage { private apiKey: string; @@ -37,94 +35,97 @@ export class GoPlusManage { async requestGet(api: string) { const myHeaders = new Headers(); if (this.apiKey) { - myHeaders.append("Authorization", this.apiKey); + //myHeaders.append("Authorization", this.apiKey); } - const url = `https://api.gopluslabs.io/${api}` + const url = `https://api.gopluslabs.io/${api}`; const res = await fetch(url, { method: "GET", headers: myHeaders, - redirect: "follow" - }) + redirect: "follow", + }); return await res.json(); } async tokenSecurity(chainId: string, address: string) { const api = `api/v1/token_security/${chainId}?contract_addresses=${address}`; - return await this.requestGet(api) + return await this.requestGet(api); } async rugpullDetection(chainId: string, address: string) { const api = `api/v1/rugpull_detecting/${chainId}?contract_addresses=${address}`; - return await this.requestGet(api) + return await this.requestGet(api); } async solanaTokenSecurityUsingGET(address: string) { const api = `api/v1/solana/token_security?contract_addresses=${address}`; - return await this.requestGet(api) + return await this.requestGet(api); } async suiTokenSecurityUsingGET(address: string) { const api = `api/v1/sui/token_security?contract_addresses=${address}`; - return await this.requestGet(api) + return await this.requestGet(api); } async nftSecurity(chainId: string, address: string) { const api = `api/v1/nft_security/${chainId}?contract_addresses=${address}`; - return await this.requestGet(api) + return await this.requestGet(api); } async addressSecurity(address: string) { const api = `api/v1/address_security/${address}`; - return await this.requestGet(api) + return await this.requestGet(api); } async approvalSecurity(chainId: string, contract: string) { const api = `api/v1/approval_security/${chainId}?contract_addresses=${contract}`; - return await this.requestGet(api) + return await this.requestGet(api); } async erc20ApprovalSecurity(chainId: string, wallet: string) { const api = `api/v2/token_approval_security/${chainId}?addresses=${wallet}`; - return await this.requestGet(api) + return await this.requestGet(api); } async erc721ApprovalSecurity(chainId: string, wallet: string) { const api = `api/v2/nft721_approval_security/${chainId}?addresses=${wallet}`; - return await this.requestGet(api) + return await this.requestGet(api); } async erc1155ApprovalSecurity(chainId: string, wallet: string) { const api = `api/v2/nft1155_approval_security/${chainId}?addresses=${wallet}`; - return await this.requestGet(api) + return await this.requestGet(api); } async inputDecode(chainId: string, data: string) { const body = JSON.stringify({ chain_id: chainId, data: data, - }) - const res = await fetch("https://api.gopluslabs.io/api/v1/abi/input_decode", { - "headers": { - "accept": "*/*", - "accept-language": "en,zh-CN;q=0.9,zh;q=0.8", - "content-type": "application/json" - }, - "body": body, - "method": "POST" - }); + }); + const res = await fetch( + "https://api.gopluslabs.io/api/v1/abi/input_decode", + { + headers: { + accept: "*/*", + "accept-language": "en,zh-CN;q=0.9,zh;q=0.8", + "content-type": "application/json", + }, + body: body, + method: "POST", + } + ); return await res.json(); } async dappSecurityAndPhishingSite(url: string) { const api = `api/v1/dapp_security?url=${url}`; - const data1 = await this.requestGet(api) + const data1 = await this.requestGet(api); const api2 = `api/v1/phishing_site?url=${url}`; - const data2 = await this.requestGet(api2) + const data2 = await this.requestGet(api2); return { data1, - data2 - } + data2, + }; } -} \ No newline at end of file +} From 975a2588b25bada7bf56cecc3c8345cd5e4f700c Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Tue, 14 Jan 2025 10:03:44 +0700 Subject: [PATCH 07/58] chaincacther API --- agent/src/index.ts | 4 +- package.json | 1 - packages/client-twitter/src/post.ts | 4 +- packages/core/src/generation.ts | 3 + .../src/actions/tokenOverview.ts | 232 ------------------ .../actions/tokenOverview.ts:Zone.Identifier | 0 .../src/providers/cryptoNewsData.ts | 18 +- .../plugin-crypto-news/src/utils/birdeye.ts | 182 -------------- .../src/utils/chainCatcher.ts | 48 ++-- packages/plugin-goplus/src/index.ts | 15 -- .../plugin-goplus/src/lib/GoPlusManage.ts | 1 - 11 files changed, 45 insertions(+), 463 deletions(-) delete mode 100644 packages/plugin-crypto-news/src/actions/tokenOverview.ts delete mode 100644 packages/plugin-crypto-news/src/actions/tokenOverview.ts:Zone.Identifier delete mode 100644 packages/plugin-crypto-news/src/utils/birdeye.ts diff --git a/agent/src/index.ts b/agent/src/index.ts index 8db42a13a5c..b5639de4e42 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -12,8 +12,6 @@ import { TelegramClientInterface } from "@elizaos/client-telegram"; import { TwitterClientInterface } from "@elizaos/client-twitter"; // import { ReclaimAdapter } from "@elizaos/plugin-reclaim"; import { DirectClient } from "@elizaos/client-direct"; -import { PrimusAdapter } from "@elizaos/plugin-primus"; - import { AgentRuntime, CacheManager, @@ -35,6 +33,8 @@ import { validateCharacterConfig, } from "@elizaos/core"; import { zgPlugin } from "@elizaos/plugin-0g"; +import { goplusPlugin } from "@elizaos/plugin-goplus"; +import { PrimusAdapter } from "@elizaos/plugin-primus"; import { bootstrapPlugin } from "@elizaos/plugin-bootstrap"; import createGoatPlugin from "@elizaos/plugin-goat"; diff --git a/package.json b/package.json index 0836e4ffaac..40479f9dfd4 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,6 @@ "viem": "2.21.58", "vite": "5.4.11", "vitest": "2.1.5", - "viem": "2.21.58", "ts-jest": "^29.1.1", "@types/jest": "^29.5.11", "jest": "^29.7.0" diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index d1dc79cd4b0..74ba6c646aa 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -46,7 +46,7 @@ const twitterPostTemplate = ` # Task: Generate a post in the voice and style and perspective of {{agentName}} @{{twitterUserName}}. Write a 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 must include the summary of the # NEWS above or pick any single news for your reference. +Your response must include the summary of the # NEWS above into a sentences. Dont discard or remove any important numbers and informations Your response should be 1, 2, or 3 sentences (choose the length at random). 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 if there are multiple statements in your response.`; @@ -494,7 +494,7 @@ export class TwitterPostClient { this.runtime.character.templates?.twitterPostTemplate || twitterPostTemplate, }); - console.log("PROMPT", context); + // console.log("PROMPT", context); elizaLogger.debug("generate post prompt:\n" + context); const newTweetContent = await generateText({ diff --git a/packages/core/src/generation.ts b/packages/core/src/generation.ts index 1afa7e983e7..68ae4dea1ac 100644 --- a/packages/core/src/generation.ts +++ b/packages/core/src/generation.ts @@ -29,6 +29,7 @@ import { models, } from "./models.ts"; import { + parseActionResponseFromText, parseBooleanFromText, parseJsonArrayFromText, parseJSONObjectFromText, @@ -45,6 +46,8 @@ import { ModelClass, ModelProviderName, SearchResponse, + SerperSearchResponse, + ServiceType, //VerifiableInferenceProvider, TelemetrySettings, TokenizerType, diff --git a/packages/plugin-crypto-news/src/actions/tokenOverview.ts b/packages/plugin-crypto-news/src/actions/tokenOverview.ts deleted file mode 100644 index 9e6b8c8c9a1..00000000000 --- a/packages/plugin-crypto-news/src/actions/tokenOverview.ts +++ /dev/null @@ -1,232 +0,0 @@ -import { - Action, - IAgentRuntime, - Memory, - State, - HandlerCallback, - ModelClass, - Content, - elizaLogger, - composeContext, - generateMessageResponse, - parseJSONObjectFromText, - generateText, - messageCompletionFooter, -} from "@elizaos/core"; -import { fetchTokenOverview } from "../utils/birdeye"; - -interface TokenQuery { - address?: string; - symbol?: string; -} - -const tokenExtractionTemplate = `Respond with a JSON markdown block containing only the extracted values. - -Example response: -\`\`\`json -{ - "address": "So11111111111111111111111111111111111111112", - "symbol": "SOL" -} -\`\`\` - -{{recentMessages}} - -Given the recent messages, extract the following information about the token query, please refer to last message for context: -- Token contract address if provided -- Token symbol if provided - -NOTE: If you see addresses like this 2gkevSAUExkSUwwwj6uNbzwwNCXyzEBkGLg4wAyUpump remember that pump suffix IS PART OF THE ADDRESS, do not remove it. - -Respond with a JSON markdown block containing only the extracted values. Use "" (empty string) for any values that cannot be determined. -IMPORTANT: Response format should be in this format: -\`\`\`json -{ - "address": "So11111111111111111111111111111111111111112", - "symbol": "SOL" -} -\`\`\``; - -const marketAnalysisTemplate = `You are {{agentName}}, a professional market analyst. - -About you: -{{bio}} -{{lore}} - -Recent conversation: -{{recentMessages}} - -Available market data: -{{marketData}} - -Analyze the market data and provide insights about: -1. Price performance across different timeframes -2. Trading volume and liquidity -3. Holder behavior and wallet activity -4. Overall market sentiment - -Keep the analysis concise and data-driven, focusing on the most relevant metrics.` + messageCompletionFooter; - -export const getTokenOverviewAction: Action = { - name: "GET_TOKEN_OVERVIEW", - similes: ["CHECK_TOKEN", "TOKEN_INFO", "MARKET_DATA", "TOKEN_ANALYSIS"], - description: "Retrieve and analyze token market data from Birdeye", - - validate: async (runtime: IAgentRuntime, message: Memory) => { - //const text = (message.content as Content).text?.toLowerCase() || ""; - //return text.includes("token") || text.includes("price") || text.includes("market"); - return true; - }, - - handler: async ( - runtime: IAgentRuntime, - message: Memory, - state: State, - _options: { [key: string]: unknown }, - callback?: HandlerCallback - ): Promise<boolean> => { - try { - // Initialize or update state - if (!state) { - state = await runtime.composeState(message); - } else { - state = await runtime.updateRecentMessageState(state); - } - - // Extract token information from message - const extractionContext = composeContext({ - state, - template: tokenExtractionTemplate, - }); - - elizaLogger.log(`Extracting token info...`); - - const response = await generateText({ - runtime, - context: extractionContext, - modelClass: ModelClass.SMALL, - }); - - const tokenQuery = parseJSONObjectFromText(response) as TokenQuery; - - elizaLogger.info(`Token query: ${JSON.stringify(tokenQuery)}`); - - if (!tokenQuery.address && !tokenQuery.symbol) { - callback?.({ - text: "I couldn't identify which token you're asking about. Could you please provide a token symbol or contract address?", - }); - return false; - } - - if (tokenQuery.symbol && !tokenQuery.address) { - callback?.({ - text: "Ticker is not enough please provide me the contract address", - }); - return false; - } - - elizaLogger.log(`Fetching token data...`); - - // Fetch token data - const tokenAddress = tokenQuery.address || "So11111111111111111111111111111111111111112"; // Default to SOL if only symbol provided - const tokenData = await fetchTokenOverview(tokenAddress as string, runtime.character.settings.secrets.BIRDEYE_API_KEY); - - - elizaLogger.log(`Market data: ${JSON.stringify(tokenData, null, 2)}`); - - // Update state with market data - if (!state) { - state = await runtime.composeState(message); - } - - state = { - ...state, - marketData: JSON.stringify(tokenData, null, 2), - }; - - // Generate market analysis - const analysisContext = composeContext({ - state, - template: marketAnalysisTemplate, - }); - - const analysis = await generateMessageResponse({ - runtime, - context: analysisContext, - modelClass: ModelClass.LARGE, - }); - - callback?.(analysis); - - return true; - } catch (error) { - elizaLogger.error(`Error in GET_TOKEN_OVERVIEW action: ${error}`); - callback?.({ - text: "I encountered an error while fetching the token data. Please try again later.", - }); - return false; - } - }, - - examples: [ - [ - { - user: "{{user1}}", - content: { text: "What's the current market data for DV44rX6H8pEu4qwruwUvjswyRPTUib5qHTjWNRigpump?" }, - }, - { - user: "{{agentName}}", - content: { - text: "Let me analyze the market data for DV44rX6H8pEu4qwruwUvjswyRPTUib5qHTjWNRigpump", - action: "GET_TOKEN_OVERVIEW", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { text: "DV44rX6H8pEu4qwruwUvjswyRPTUib5qHTjWNRigpump" }, - }, - { - user: "{{agentName}}", - content: { - text: "Checking market data for DV44rX6H8pEu4qwruwUvjswyRPTUib5qHTjWNRigpump", - action: "GET_TOKEN_OVERVIEW", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { - text: "Can you check the token at address So11111111111111111111111111111111111111112?" - }, - }, - { - user: "{{agentName}}", - content: { - text: "I'll fetch the market data for this token...", - action: "GET_TOKEN_OVERVIEW", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { text: "Can you make an analysis of $AVB?" }, - }, - { - user: "{{agentName}}", - content: { text: "Can you provide the address of $AVB?", action: "NONE" }, - }, - { - user: "{{user1}}", - content: { text: "6d5zHW5B8RkGKd51Lpb9RqFQSqDudr9GJgZ1SgQZpump" }, - }, - { - user: "{{agentName}}", - content: { text: "Checking market data for $AVB", action: "GET_TOKEN_OVERVIEW" }, - }, - ], - ], -}; \ No newline at end of file diff --git a/packages/plugin-crypto-news/src/actions/tokenOverview.ts:Zone.Identifier b/packages/plugin-crypto-news/src/actions/tokenOverview.ts:Zone.Identifier deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts index 49270caeb27..dfb9d8d2cc2 100644 --- a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts +++ b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts @@ -1,4 +1,4 @@ -import { elizaLogger, Provider } from "@elizaos/core"; +import { Provider } from "@elizaos/core"; import { ChainCatcherResponse, fetchChainCatcher } from "../utils/chainCatcher"; // interface FormattedMarketData { @@ -57,10 +57,16 @@ export const cryptoNewsData: Provider = { // const cryptoNews: SerperNewsResponse = // await fetchSerperNews("crypto"); // const suiNews: SerperNewsResponse = await fetchSerperNews("$SUI"); - let output = "# NEWS\n\n"; + let output = `# NEWS for ${runtime.character.name}\n\n`; + // output += `The News have this format:\n\n`; + // output += ` + // - Title <--- Title of the news\n + // Description <--- Content of the news\n + // Timestamp <--- the time of the news\n\n + // `; - chainCatcher.items.forEach((article) => { - output += `- ${article.title}\n${article.content}\n\n`; + chainCatcher.data.list.forEach((article) => { + output += `- ${article.title}\n${article.description}\nTime: ${article.releaseTime}\n\n`; }); // cryptoNews.news.forEach((article) => { @@ -69,9 +75,9 @@ export const cryptoNewsData: Provider = { // suiNews.news.forEach((article) => { // output += `- ${article.title}\n${article.snippet}\n\n`; // }); - output += `# News above are in Chinese Language, you have to translate it to ENGLISH \n\n# END NEWS\n\n`; + //output += `you must summary and conclude all of news above into a sentences and include it to your respond\n\n# END NEWS\n\n`; - elizaLogger.log(output); + // elizaLogger.log(output); return output; } catch (error) { diff --git a/packages/plugin-crypto-news/src/utils/birdeye.ts b/packages/plugin-crypto-news/src/utils/birdeye.ts deleted file mode 100644 index 0d1620ae00a..00000000000 --- a/packages/plugin-crypto-news/src/utils/birdeye.ts +++ /dev/null @@ -1,182 +0,0 @@ -export interface TokenOverviewResponse { - address: string; - decimals: number; - symbol: string; - name: string; - extensions: { - coingeckoId: string | null; - website: string | null; - telegram: string | null; - twitter: string | null; - description: string | null; - discord: string | null; - medium: string | null; - }; - logoURI: string; - liquidity: number; - lastTradeUnixTime: number; - lastTradeHumanTime: string; - price: number; - supply: number; - mc: number; - circulatingSupply: number; - realMc: number; - holder: number; - // Price changes - priceChange24hPercent: number; - priceChange12hPercent: number; - priceChange8hPercent: number; - priceChange4hPercent: number; - priceChange2hPercent: number; - priceChange1hPercent: number; - priceChange30mPercent: number; - // Volume data - v24hUSD: number; - v12hUSD: number; - v8hUSD: number; - v4hUSD: number; - v2hUSD: number; - v1hUSD: number; - v30mUSD: number; - // Unique wallets - uniqueWallet24h: number; - uniqueWallet12h: number; - uniqueWallet8h: number; - uniqueWallet4h: number; - uniqueWallet2h: number; - uniqueWallet1h: number; - uniqueWallet30m: number; -} - -export interface BirdeyeApiError { - success: false; - error: string; -} - -export async function fetchTokenOverview( - tokenAddress: string, - apiKey?: string, - cache?: { - get: (key: string) => any; - set: (key: string, value: any) => void; - } -): Promise<TokenOverviewResponse> { - try { - // Check cache first if provided - if (cache) { - const cacheKey = `token_overview_${tokenAddress}`; - const cachedData = cache.get(cacheKey); - if (cachedData) { - console.log( - `Returning cached token overview for ${tokenAddress}` - ); - return cachedData; - } - } - - const response = await fetch( - `https://public-api.birdeye.so/defi/token_overview?address=${tokenAddress}`, - { - method: "GET", - headers: { - accept: "application/json", - "x-api-key": apiKey || "", - }, - } - ); - - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); - } - - const data = await response.json(); - - if (!data.success || !data.data) { - throw new Error("Failed to fetch token overview data"); - } - - // Cache the response if cache is provided - if (cache) { - const cacheKey = `token_overview_${tokenAddress}`; - cache.set(cacheKey, data.data); - } - - return data.data; - } catch (error) { - console.error("Error fetching token overview:", error); - throw error; - } -} - -export interface TrendingToken { - address: string; - decimals: number; - liquidity: number; - logoURI: string; - name: string; - symbol: string; - volume24hUSD: number; - rank: number; - price: number; -} - -export interface TrendingTokensResponse { - updateUnixTime: number; - updateTime: string; - tokens: TrendingToken[]; - total: number; -} - -export async function fetchTrendingTokens( - apiKey?: string, - cache?: { - get: (key: string) => any; - set: (key: string, value: any) => void; - }, - limit: number = 20 -): Promise<TrendingTokensResponse> { - try { - // Check cache first if provided - if (cache) { - const cacheKey = `trending_tokens_${limit}`; - const cachedData = cache.get(cacheKey); - if (cachedData) { - console.log(`Returning cached trending tokens`); - return cachedData; - } - } - - const response = await fetch( - `https://public-api.birdeye.so/defi/token_trending?sort_by=rank&sort_type=asc&offset=0&limit=${limit}`, - { - method: "GET", - headers: { - accept: "application/json", - "x-api-key": apiKey || "", - "x-chain": "sui", - }, - } - ); - - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); - } - - const data = await response.json(); - - if (!data.success || !data.data) { - throw new Error("Failed to fetch trending tokens data"); - } - - // Cache the response if cache is provided - if (cache) { - const cacheKey = `trending_tokens_${limit}`; - cache.set(cacheKey, data.data); - } - - return data.data; - } catch (error) { - console.error("Error fetching trending tokens:", error); - throw error; - } -} diff --git a/packages/plugin-crypto-news/src/utils/chainCatcher.ts b/packages/plugin-crypto-news/src/utils/chainCatcher.ts index cd73157f5fc..8c6cde3076e 100644 --- a/packages/plugin-crypto-news/src/utils/chainCatcher.ts +++ b/packages/plugin-crypto-news/src/utils/chainCatcher.ts @@ -1,26 +1,23 @@ +export interface ChainCatcherResponse { + data: ChainCatcherData; + message: string; + result: number; +} + +export interface ChainCatcherData { + totle: number; + list: ChainCatcherItem[]; +} + export interface ChainCatcherItem { - title: string; - pubDate: string; - link: string; - guid: string; - thumbnail: string; content: string; description: string; - enclosure: any; - categories: any[]; -} -export interface ChainCatcherFeed { - url: string; + id: number; + releaseTime: string; + thumb: string; title: string; - link: string; - author: string; - description: string; - image: string; -} -export interface ChainCatcherResponse { - status: string; - feed: ChainCatcherFeed; - items: ChainCatcherItem[]; + type: number; + url: string; } export async function fetchChainCatcher(): Promise<ChainCatcherResponse> { @@ -28,13 +25,20 @@ export async function fetchChainCatcher(): Promise<ChainCatcherResponse> { // Check cache first if provided const config = { - method: "GET", + method: "POST", headers: { "Content-Type": "application/json", + token: "fsfa3sd45gU8945YY", + language: "en", }, + body: JSON.stringify({ + type: 2, + page: 1, + limit: 5, + }), }; const response = await fetch( - `https://api.rss2json.com/v1/api.json?rss_url=https%3A%2F%2Fwww.chaincatcher.com%2Frss%2Fclist`, + `https://www.chaincatcher.com/OpenApi/FetchListByType`, config ); @@ -46,7 +50,7 @@ export async function fetchChainCatcher(): Promise<ChainCatcherResponse> { } const data = await response.json(); - if (!data.status || data.status !== "ok") { + if (!data.data) { throw new Error("Failed to fetch latest news data"); } diff --git a/packages/plugin-goplus/src/index.ts b/packages/plugin-goplus/src/index.ts index d7beefc41f7..88150e6e264 100644 --- a/packages/plugin-goplus/src/index.ts +++ b/packages/plugin-goplus/src/index.ts @@ -12,18 +12,3 @@ export const goplusPlugin: Plugin = { providers: [], services: [new GoplusSecurityService()], }; - -export default goplusPlugin; - -export * from "./services/GoplusSecurityService"; - -export const goplusPlugin: Plugin = { - name: "goplus", - description: "goplus Plugin for Eliza - Enables on-chain security checks", - actions: [], - evaluators: [], - providers: [], - services: [new GoplusSecurityService()], -}; - -export default goplusPlugin; diff --git a/packages/plugin-goplus/src/lib/GoPlusManage.ts b/packages/plugin-goplus/src/lib/GoPlusManage.ts index 2a4e47257ef..fab61fa0382 100644 --- a/packages/plugin-goplus/src/lib/GoPlusManage.ts +++ b/packages/plugin-goplus/src/lib/GoPlusManage.ts @@ -14,7 +14,6 @@ export const GoPlusType = { }; export type GoPlusType = (typeof GoPlusType)[keyof typeof GoPlusType]; - export type GoPlusParamType = { type: GoPlusType; network?: string; From 15287ce6830aca5156b6ccaf33f0cdcb04bd78a1 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Tue, 14 Jan 2025 10:17:36 +0700 Subject: [PATCH 08/58] dot bug --- packages/plugin-crypto-news/src/providers/cryptoNewsData.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts index dfb9d8d2cc2..2fd65c27b09 100644 --- a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts +++ b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts @@ -75,7 +75,7 @@ export const cryptoNewsData: Provider = { // suiNews.news.forEach((article) => { // output += `- ${article.title}\n${article.snippet}\n\n`; // }); - //output += `you must summary and conclude all of news above into a sentences and include it to your respond\n\n# END NEWS\n\n`; + output += `# ADDITIONAL_NOTES: you must replace all decimal separator with comma ( , ) instead of dot ( . ) \n\n# END NEWS\n\n`; // elizaLogger.log(output); From f1db0cfd410980432023b44b12c1c1e703fbf27a Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Tue, 14 Jan 2025 10:48:34 +0700 Subject: [PATCH 09/58] some dot bug --- packages/plugin-crypto-news/src/providers/cryptoNewsData.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts index 2fd65c27b09..97c08e22f26 100644 --- a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts +++ b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts @@ -75,7 +75,7 @@ export const cryptoNewsData: Provider = { // suiNews.news.forEach((article) => { // output += `- ${article.title}\n${article.snippet}\n\n`; // }); - output += `# ADDITIONAL_NOTES: you must replace all decimal separator with comma ( , ) instead of dot ( . ) \n\n# END NEWS\n\n`; + output += `# ADDITIONAL_NOTES: you must round all decimal numbers ( dot separator ) if there's any \n\n# END NEWS\n\n`; // elizaLogger.log(output); From ba0cb492426946f3e6517818233c295b48a01a96 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Tue, 14 Jan 2025 11:04:15 +0700 Subject: [PATCH 10/58] huhuhu --- packages/plugin-crypto-news/src/providers/cryptoNewsData.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts index 97c08e22f26..7dde3930cf0 100644 --- a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts +++ b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts @@ -75,7 +75,7 @@ export const cryptoNewsData: Provider = { // suiNews.news.forEach((article) => { // output += `- ${article.title}\n${article.snippet}\n\n`; // }); - output += `# ADDITIONAL_NOTES: you must round all decimal numbers ( dot separator ) if there's any \n\n# END NEWS\n\n`; + output += `# ADDITIONAL_NOTES: if there's any decimal numbers you should convert the decimal separator into comma instead of dot\n\n# END NEWS\n\n`; // elizaLogger.log(output); From 2d3e953e86719396cbe21f02516e05444bcb4571 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Tue, 14 Jan 2025 11:50:15 +0700 Subject: [PATCH 11/58] okok --- packages/client-twitter/src/post.ts | 3 + packages/core/src/generation.ts | 187 +++++++++++++--------------- 2 files changed, 88 insertions(+), 102 deletions(-) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index 74ba6c646aa..282510c4df3 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -26,6 +26,8 @@ import { } from "discord.js"; import { ClientBase } from "./base.ts"; import { DEFAULT_MAX_TWEET_LENGTH } from "./environment.ts"; +import { twitterMessageHandlerTemplate } from "./interactions.ts"; +import { buildConversationThread } from "./utils.ts"; const MAX_TIMELINES_TO_FETCH = 15; @@ -743,6 +745,7 @@ export class TwitterPostClient { ); continue; } + processedTimelines.push({ tweet: tweet, actionResponse: actionResponse, diff --git a/packages/core/src/generation.ts b/packages/core/src/generation.ts index 68ae4dea1ac..fcd9ece7d86 100644 --- a/packages/core/src/generation.ts +++ b/packages/core/src/generation.ts @@ -54,7 +54,6 @@ import { VerifiableInferenceOptions, VerifiableInferenceResult, } from "./types.ts"; - type Tool = CoreTool<any, any>; type StepResult = AIStepResult<any>; @@ -457,23 +456,7 @@ export async function generateText({ presencePenalty: presence_penalty, experimental_telemetry: experimental_telemetry, }); - // console.log({ - // model: openai.languageModel(model), - // prompt: context, - // system: - // runtime.character.system ?? - // settings.SYSTEM_PROMPT ?? - // undefined, - // tools: tools, - // onStepFinish: onStepFinish, - // maxSteps: maxSteps, - // temperature: temperature, - // maxTokens: max_response_length, - // frequencyPenalty: frequency_penalty, - // presencePenalty: presence_penalty, - // experimental_telemetry: experimental_telemetry, - // openaiResponse, - // }); + response = openaiResponse; console.log("Received response from OpenAI model."); break; @@ -1788,95 +1771,12 @@ export const generateWebSearch = async ( includeAnswer: true, maxResults: 3, // 5 (default) topic: "general", // "general"(default) "news" - searchDepth: "advanced", // "basic"(default) "advanced" + searchDepth: "basic", // "basic"(default) "advanced" includeImages: false, // false (default) true }); - console.log(`TVLY RES`, response); - return response; - } catch (error) { - elizaLogger.error("Error:", error); - } -}; -export const generateSerperSearch = async ( - query: string, - runtime: IAgentRuntime -): Promise<SerperSearchResponse> => { - try { - const apiKey = runtime.getSetting("SERPER_API_KEY") as string; - if (!apiKey) { - throw new Error("SERPER_API_KEY is not set"); - } - //const cleanedQuery = query.replace(/@\S+/g, ''); - //console.log(`CLEANED QUERY`,cleanedQuery) - const data = JSON.stringify({ - q: query, - }); - - const options = { - hostname: "google.serper.dev", - port: 443, - path: "/search", - method: "POST", - headers: { - "X-API-KEY": apiKey, - "Content-Type": "application/json", - "Content-Length": Buffer.byteLength(data), - }, - }; - - const sendRequest = (): Promise<SerperSearchResponse> => { - return new Promise((resolve, reject) => { - const req = https.request(options, (res) => { - let body = ""; - - res.on("data", (chunk) => { - body += chunk; - }); - - res.on("end", () => { - if ( - res.statusCode && - res.statusCode >= 200 && - res.statusCode < 300 - ) { - try { - const parsedData = JSON.parse( - body - ) as SerperSearchResponse; - resolve(parsedData); - } catch (err) { - reject( - new Error( - `Failed to parse response: ${err}` - ) - ); - } - } else { - reject( - new Error( - `Request failed with status code: ${res.statusCode}` - ) - ); - } - }); - }); - - req.on("error", (err) => { - reject(err); - }); - - // Write data to the request body - req.write(data); - req.end(); - }); - }; - - const response = await sendRequest(); - console.log(`TVLY RES`, response); return response; } catch (error) { elizaLogger.error("Error:", error); - throw error; // Re-throw the error for the caller to handle. } }; /** @@ -2398,3 +2298,86 @@ export async function generateTweetActions({ retryDelay *= 2; } } + +export const generateSerperSearch = async ( + query: string, + runtime: IAgentRuntime +): Promise<SerperSearchResponse> => { + try { + const apiKey = runtime.getSetting("SERPER_API_KEY") as string; + if (!apiKey) { + throw new Error("SERPER_API_KEY is not set"); + } + //const cleanedQuery = query.replace(/@\S+/g, ''); + //console.log(`CLEANED QUERY`,cleanedQuery) + const data = JSON.stringify({ + q: query, + }); + + const options = { + hostname: "google.serper.dev", + port: 443, + path: "/search", + method: "POST", + headers: { + "X-API-KEY": apiKey, + "Content-Type": "application/json", + "Content-Length": Buffer.byteLength(data), + }, + }; + + const sendRequest = (): Promise<SerperSearchResponse> => { + return new Promise((resolve, reject) => { + const req = https.request(options, (res) => { + let body = ""; + + res.on("data", (chunk) => { + body += chunk; + }); + + res.on("end", () => { + if ( + res.statusCode && + res.statusCode >= 200 && + res.statusCode < 300 + ) { + try { + const parsedData = JSON.parse( + body + ) as SerperSearchResponse; + resolve(parsedData); + } catch (err) { + reject( + new Error( + `Failed to parse response: ${err}` + ) + ); + } + } else { + reject( + new Error( + `Request failed with status code: ${res.statusCode}` + ) + ); + } + }); + }); + + req.on("error", (err) => { + reject(err); + }); + + // Write data to the request body + req.write(data); + req.end(); + }); + }; + + const response = await sendRequest(); + console.log(`TVLY RES`, response); + return response; + } catch (error) { + elizaLogger.error("Error:", error); + throw error; // Re-throw the error for the caller to handle. + } +}; From 4fdfd2c3a138bb1007cf63ee23169c4c23028e68 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Tue, 14 Jan 2025 16:29:03 +0700 Subject: [PATCH 12/58] fix attempt media is missing --- agent/src/index.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/agent/src/index.ts b/agent/src/index.ts index b5639de4e42..0830c076ed6 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -69,7 +69,7 @@ import { genLayerPlugin } from "@elizaos/plugin-genlayer"; import { imageGenerationPlugin } from "@elizaos/plugin-image-generation"; import { lensPlugin } from "@elizaos/plugin-lensNetwork"; import { multiversxPlugin } from "@elizaos/plugin-multiversx"; -import { nearPlugin } from "@elizaos/plugin-near"; +//import { nearPlugin } from "@elizaos/plugin-near"; // causing image generation error import { nftGenerationPlugin } from "@elizaos/plugin-nft-generation"; import { createNodePlugin } from "@elizaos/plugin-node"; import { obsidianPlugin } from "@elizaos/plugin-obsidian"; @@ -753,11 +753,11 @@ export async function createAgent( ? solanaAgentkitPlguin : null, getSecret(character, "AUTONOME_JWT_TOKEN") ? autonomePlugin : null, - (getSecret(character, "NEAR_ADDRESS") || - getSecret(character, "NEAR_WALLET_PUBLIC_KEY")) && - getSecret(character, "NEAR_WALLET_SECRET_KEY") - ? nearPlugin - : null, + // (getSecret(character, "NEAR_ADDRESS") || + // getSecret(character, "NEAR_WALLET_PUBLIC_KEY")) && + // getSecret(character, "NEAR_WALLET_SECRET_KEY") + // ? nearPlugin + // : null, getSecret(character, "EVM_PUBLIC_KEY") || (getSecret(character, "WALLET_PUBLIC_KEY") && getSecret(character, "WALLET_PUBLIC_KEY")?.startsWith("0x")) From 1dac358f2a0ad47dd28b7aac06dc474168b51a6f Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Wed, 15 Jan 2025 08:36:28 +0700 Subject: [PATCH 13/58] goplus check token only --- .../plugin-goplus/src/templates/index.bak.ts | 209 ++++++++++++++++++ packages/plugin-goplus/src/templates/index.ts | 122 +--------- 2 files changed, 218 insertions(+), 113 deletions(-) create mode 100644 packages/plugin-goplus/src/templates/index.bak.ts diff --git a/packages/plugin-goplus/src/templates/index.bak.ts b/packages/plugin-goplus/src/templates/index.bak.ts new file mode 100644 index 00000000000..6886211d7f4 --- /dev/null +++ b/packages/plugin-goplus/src/templates/index.bak.ts @@ -0,0 +1,209 @@ +export const requestPrompt = (text:string) => `You are a security action detector for blockchain interactions. Your task is to analyze the user's input text and determine which security checks are needed. + +Text to analyze:""" +${text} +""" +If the user is not sure which network the sent address belongs to, then according to the following logic initially determine which network the user sends the address belongs to. + +Detection Logic: +1. First check if address starts with "0x": + - If yes: + - If length is 42 -> EVM address + - If the address has a non-standard suffix (e.g., " ::s::S "), you may treat the base address (without the suffix) as the -> SUI address. , but the full address including the suffix should be placed in the "token" field. + - If no: + - If length is 44 and starts with letter -> Solana address + +2. If none of the above patterns match: + - -> EVM address +3. If detection is EVM address: + - -> EVM address + +Networks format +EVM: 0x26e550ac11b26f78a04489d5f20f24e3559f7dd9 +Solana: 9DHe3pycTuymFk4H4bbPoAJ4hQrr2kaLDF6J6aAKpump +SUI: 0xea65bb5a79ff34ca83e2995f9ff6edd0887b08da9b45bf2e31f930d3efb82866::s::S + +After determining which action to use, please reply in the json format below the action. + +Available actions: +- [EVMTOKEN_SECURITY_CHECK]: For checking ERC20 token contract security + Description: Security assessment for tokens on EVM-compatible chains (like Ethereum, BSC), including contract risks, permission configurations, transaction mechanisms + Keywords: EVM token, ETH token, BEP20, smart contract, ERC20 security, on-chain token + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "EVMTOKEN_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, ETHW:10001, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Base:8453, Tron:tron, Scroll:534352, opBNB:204, Mantle:5000, ZKFair:42766, Blast:81457, Manta Pacific:169, Berachain Artio Testnet:80085, Merlin:4200, Bitlayer Mainnet:200901, zkLink Nova:810180, X Layer Mainnet:196) +"token": "" , +} +\`\`\` + + +- [SOLTOKEN_SECURITY_CHECK]: For checking SPL token contract security + Description: Security audit for Solana-based tokens, analyzing program authority settings, account states, transfer restrictions and other security factors + Keywords: Solana token, SOL token, SPL token, Solana security, SOL contract + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "SOLTOKEN_SECURITY_CHECK" +"token": "" , +} +\`\`\` + + +- [SUITOKEN_SECURITY_CHECK]: For checking Sui token contract security + Description: Security inspection for tokens on SUI blockchain, examining token contract permissions, transaction restrictions, minting mechanisms and other security configurations + Keywords: SUI token, SUI coins, MOVE token, SUI contract, SUI security + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "SUITOKEN_SECURITY_CHECK" +"token": "" , +} +\`\`\` + + +- [RUGPULL_SECURITY_CHECK]: + Description: Detection of potential rugpull risks in tokens/projects, including contract permissions, liquidity locks, team holdings and other risk factors + Keywords: rugpull risk, token security, project reliability, contract risk, liquidity, team wallet + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "RUGPULL_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, BSC:56) +"contract": "" | null, +} +\`\`\` + + +- [NFT_SECURITY_CHECK] + Description: Security analysis of NFT project smart contracts, including minting mechanisms, trading restrictions, permission settings + Keywords: NFT security, digital collectibles, minting risk, NFT trading, NFT contract + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "NFT_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Base:8453, Mantle:5000) +"token": "" | null, +} +\`\`\` + + +- [ADRESS_SECURITY_CHECK] + Description: Analysis of specific address security status, detecting known malicious addresses, scam addresses or high-risk addresses + Keywords: wallet security, malicious address, scam address, blacklist + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "ADRESS_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Tron:tron, Scroll:534352, opBNB:204, Base:8453, Solana:solana) +"wallet": "" | null, +} +\`\`\` + + +- [APPROVAL_SECURITY_CHECK] + Description: Examination of smart contract approval settings, evaluating risk levels of third-party authorizations + Keywords: approval check, contract authorization, spending approval, approval risk + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "APPROVAL_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, BSC: 56, OKC: 66, Heco: 128, Polygon: 137, Fantom:250, Arbitrum: 42161, Avalanche: 43114) +"contract": "" | null, +} +\`\`\` + + +- [ACCOUNT_ERC20_SECURITY_CHECK] + Description: Security assessment of account-related ERC20 token transactions and holdings + Keywords: ERC20, token account, token security, account detection + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "ACCOUNT_ERC20_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Base:8453, Mantle:5000) +"wallet": "" | null, +} +\`\`\` + + +- [ACCOUNT_ERC721_SECURITY_CHECK] + Description: Security analysis of account's ERC721 NFT assets + Keywords: ERC721, NFT account, NFT assets, collectibles security + Respond with a JSON markdown block containing only the extracted values: +\`\`\`json +{ +"type": "ACCOUNT_ERC721_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Base:8453, Mantle:5000) +"wallet": "" | null, +} +\`\`\` + + +- [ACCOUNT_ERC1155_SECURITY_CHECK] + Description: Security evaluation of account's ERC1155 multi-token standard assets + Keywords: ERC1155, multi-token, hybrid assets, account security + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "ACCOUNT_ERC1155_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Base:8453, Mantle:5000) +"wallet": "" | null, +} +\`\`\` + + +- [SIGNATURE_SECURITY_CHECK] + Description: Verification of signature security, preventing signature fraud risks + Keywords: signature verification, message signing, signature risk, signature fraud + Respond with a JSON markdown block containing only the extracted values: + +\`\`\`json +{ +"type": "SIGNATURE_SECURITY_CHECK" +"network": "1", //default: 1 (Ethereum: 1, Cronos:25, BSC: 56, Heco: 128, Polygon: 137, Fantom:250, KCC: 321, Arbitrum: 42161, Avalanche: 43114) +"data": "" | null, +} +\`\`\` + + +- [URL_SECURITY_CHECK] + Description: Detection of known phishing websites, malicious sites or other security risks in URLs + Keywords: link detection, phishing website, malicious URL, website security + Respond with a JSON markdown block containing only the extracted values: +\`\`\`json +{ +"type": "URL_SECURITY_CHECK" +"url": "" | null, +} +\`\`\` + +Extract the necessary information(All fields present in the json are important information) and choose the appropriate action(s) based on the text. Return the JSON response following the format above. +important: do not response anything except json` + + + +export const responsePrompt = (apiresult: string, text:string) => `You are a security action detector for blockchain interactions. Your task is to analyze the security API’s response from GoPlus and summary the API result. +API to analyze:“”" +${apiresult} +“”" +user’s request:“” +${text} +“” +Instructions: +1. **Identify the Action**: Analyze the API response to determine which specific action it relates to. +2. **Extract Relevant Information**: From the action and its parameters, extract and highlight the key details. +3. **Formulate a Clear Response**: Combine the action type, extracted information, and an analysis of the results. Provide a clear, concise response based on the security context. Focus on delivering the most relevant answer without unnecessary detail. +- Only reply with your conclusion. +- Do not discuss the safety aspects of the action; just focus on identifying and pointing out any risks. +- Tailor your response to the user’s request, focusing on their specific query.` \ No newline at end of file diff --git a/packages/plugin-goplus/src/templates/index.ts b/packages/plugin-goplus/src/templates/index.ts index 6886211d7f4..629ebb84b6f 100644 --- a/packages/plugin-goplus/src/templates/index.ts +++ b/packages/plugin-goplus/src/templates/index.ts @@ -1,4 +1,6 @@ -export const requestPrompt = (text:string) => `You are a security action detector for blockchain interactions. Your task is to analyze the user's input text and determine which security checks are needed. +export const requestPrompt = ( + text: string +) => `You are a security action detector for blockchain interactions. Your task is to analyze the user's input text and determine which security checks are needed. Text to analyze:""" ${text} @@ -80,120 +82,14 @@ Available actions: \`\`\` -- [NFT_SECURITY_CHECK] - Description: Security analysis of NFT project smart contracts, including minting mechanisms, trading restrictions, permission settings - Keywords: NFT security, digital collectibles, minting risk, NFT trading, NFT contract - Respond with a JSON markdown block containing only the extracted values: - -\`\`\`json -{ -"type": "NFT_SECURITY_CHECK" -"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Base:8453, Mantle:5000) -"token": "" | null, -} -\`\`\` - - -- [ADRESS_SECURITY_CHECK] - Description: Analysis of specific address security status, detecting known malicious addresses, scam addresses or high-risk addresses - Keywords: wallet security, malicious address, scam address, blacklist - Respond with a JSON markdown block containing only the extracted values: - -\`\`\`json -{ -"type": "ADRESS_SECURITY_CHECK" -"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Tron:tron, Scroll:534352, opBNB:204, Base:8453, Solana:solana) -"wallet": "" | null, -} -\`\`\` - - -- [APPROVAL_SECURITY_CHECK] - Description: Examination of smart contract approval settings, evaluating risk levels of third-party authorizations - Keywords: approval check, contract authorization, spending approval, approval risk - Respond with a JSON markdown block containing only the extracted values: - -\`\`\`json -{ -"type": "APPROVAL_SECURITY_CHECK" -"network": "1", //default: 1 (Ethereum:1, BSC: 56, OKC: 66, Heco: 128, Polygon: 137, Fantom:250, Arbitrum: 42161, Avalanche: 43114) -"contract": "" | null, -} -\`\`\` - - -- [ACCOUNT_ERC20_SECURITY_CHECK] - Description: Security assessment of account-related ERC20 token transactions and holdings - Keywords: ERC20, token account, token security, account detection - Respond with a JSON markdown block containing only the extracted values: - -\`\`\`json -{ -"type": "ACCOUNT_ERC20_SECURITY_CHECK" -"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Base:8453, Mantle:5000) -"wallet": "" | null, -} -\`\`\` - - -- [ACCOUNT_ERC721_SECURITY_CHECK] - Description: Security analysis of account's ERC721 NFT assets - Keywords: ERC721, NFT account, NFT assets, collectibles security - Respond with a JSON markdown block containing only the extracted values: -\`\`\`json -{ -"type": "ACCOUNT_ERC721_SECURITY_CHECK" -"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Base:8453, Mantle:5000) -"wallet": "" | null, -} -\`\`\` - - -- [ACCOUNT_ERC1155_SECURITY_CHECK] - Description: Security evaluation of account's ERC1155 multi-token standard assets - Keywords: ERC1155, multi-token, hybrid assets, account security - Respond with a JSON markdown block containing only the extracted values: - -\`\`\`json -{ -"type": "ACCOUNT_ERC1155_SECURITY_CHECK" -"network": "1", //default: 1 (Ethereum:1, Optimism:10, Cronos:25, BSC:56, Gnosis:100, HECO:128, Polygon:137, Fantom:250, KCC:321, zkSync Era:324, FON:201022, Arbitrum:42161, Avalanche:43114, Linea Mainnet:59144, Base:8453, Mantle:5000) -"wallet": "" | null, -} -\`\`\` - - -- [SIGNATURE_SECURITY_CHECK] - Description: Verification of signature security, preventing signature fraud risks - Keywords: signature verification, message signing, signature risk, signature fraud - Respond with a JSON markdown block containing only the extracted values: - -\`\`\`json -{ -"type": "SIGNATURE_SECURITY_CHECK" -"network": "1", //default: 1 (Ethereum: 1, Cronos:25, BSC: 56, Heco: 128, Polygon: 137, Fantom:250, KCC: 321, Arbitrum: 42161, Avalanche: 43114) -"data": "" | null, -} -\`\`\` - - -- [URL_SECURITY_CHECK] - Description: Detection of known phishing websites, malicious sites or other security risks in URLs - Keywords: link detection, phishing website, malicious URL, website security - Respond with a JSON markdown block containing only the extracted values: -\`\`\`json -{ -"type": "URL_SECURITY_CHECK" -"url": "" | null, -} -\`\`\` Extract the necessary information(All fields present in the json are important information) and choose the appropriate action(s) based on the text. Return the JSON response following the format above. -important: do not response anything except json` - - +important: do not response anything except json`; -export const responsePrompt = (apiresult: string, text:string) => `You are a security action detector for blockchain interactions. Your task is to analyze the security API’s response from GoPlus and summary the API result. +export const responsePrompt = ( + apiresult: string, + text: string +) => `You are a security action detector for blockchain interactions. Your task is to analyze the security API’s response from GoPlus and summary the API result. API to analyze:“”" ${apiresult} “”" @@ -206,4 +102,4 @@ Instructions: 3. **Formulate a Clear Response**: Combine the action type, extracted information, and an analysis of the results. Provide a clear, concise response based on the security context. Focus on delivering the most relevant answer without unnecessary detail. - Only reply with your conclusion. - Do not discuss the safety aspects of the action; just focus on identifying and pointing out any risks. -- Tailor your response to the user’s request, focusing on their specific query.` \ No newline at end of file +- Tailor your response to the user’s request, focusing on their specific query.`; From 6a142249615d4ab8ecec88db485af7017cbeafb7 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Wed, 15 Jan 2025 11:23:41 +0700 Subject: [PATCH 14/58] DEBUG post --- packages/client-twitter/src/post.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index 282510c4df3..e42a7a1b5cb 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -1163,7 +1163,10 @@ export class TwitterPostClient { } elizaLogger.debug("Final reply text to be sent:", replyText); - + console.log("Final reply text to be sent:", { + replyText, + length: replyText.length, + }); let result; if (replyText.length > DEFAULT_MAX_TWEET_LENGTH) { From feadcc792fae3a462a956b6c0b1582d4755bd970 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Wed, 15 Jan 2025 11:24:11 +0700 Subject: [PATCH 15/58] supabase schema --- packages/adapter-supabase/schema.sql | 209 +++++++++++++++++++++++++++ 1 file changed, 209 insertions(+) diff --git a/packages/adapter-supabase/schema.sql b/packages/adapter-supabase/schema.sql index 5cb5dc38663..7d6f929ada9 100644 --- a/packages/adapter-supabase/schema.sql +++ b/packages/adapter-supabase/schema.sql @@ -13,6 +13,7 @@ CREATE EXTENSION IF NOT EXISTS vector; +CREATE EXTENSION IF NOT EXISTS fuzzystrmatch; BEGIN; @@ -192,4 +193,212 @@ CREATE INDEX idx_knowledge_created ON knowledge("agentId", "createdAt"); CREATE INDEX idx_knowledge_shared ON knowledge("isShared"); CREATE INDEX idx_knowledge_embedding ON knowledge USING ivfflat (embedding vector_cosine_ops); +CREATE OR REPLACE FUNCTION "public"."check_similarity_and_insert"("query_table_name" "text", "query_userid" "uuid", "query_content" "text", "query_roomid" "uuid", "query_embedding" "public"."vector", "query_createdat" timestamp with time zone, "similarity_threshold" double precision DEFAULT 0.95) RETURNS "void" + LANGUAGE "plpgsql" + AS $$ +DECLARE + similar_exists BOOLEAN; +BEGIN + -- Check which table to query based on embedding size + CASE query_table_name + WHEN 'memories_1536' THEN + SELECT EXISTS ( + SELECT 1 FROM memories_1536 + WHERE roomId = query_roomId + AND userId = query_userId + AND content->>'text' = query_content + AND 1 - (embedding <=> query_embedding) > similarity_threshold + ) INTO similar_exists; + WHEN 'memories_1024' THEN + SELECT EXISTS ( + SELECT 1 FROM memories_1024 + WHERE roomId = query_roomId + AND userId = query_userId + AND content->>'text' = query_content + AND 1 - (embedding <=> query_embedding) > similarity_threshold + ) INTO similar_exists; + WHEN 'memories_768' THEN + SELECT EXISTS ( + SELECT 1 FROM memories_768 + WHERE roomId = query_roomId + AND userId = query_userId + AND content->>'text' = query_content + AND 1 - (embedding <=> query_embedding) > similarity_threshold + ) INTO similar_exists; + WHEN 'memories_384' THEN + SELECT EXISTS ( + SELECT 1 FROM memories_384 + WHERE roomId = query_roomId + AND userId = query_userId + AND content->>'text' = query_content + AND 1 - (embedding <=> query_embedding) > similarity_threshold + ) INTO similar_exists; + ELSE + RAISE EXCEPTION 'Invalid table name: %', query_table_name; + END CASE; + + -- Only insert if no similar memory exists + IF NOT similar_exists THEN + CASE query_table_name + WHEN 'memories_1536' THEN + INSERT INTO memories_1536 (id, type, "createdAt", content, embedding, "userId", "roomId", "unique") + VALUES (gen_random_uuid(), 'message', query_createdAt, jsonb_build_object('text', query_content), query_embedding, query_userId, query_roomId, true); + WHEN 'memories_1024' THEN + INSERT INTO memories_1024 (id, type, "createdAt", content, embedding, "userId", "roomId", "unique") + VALUES (gen_random_uuid(), 'message', query_createdAt, jsonb_build_object('text', query_content), query_embedding, query_userId, query_roomId, true); + WHEN 'memories_768' THEN + INSERT INTO memories_768 (id, type, "createdAt", content, embedding, "userId", "roomId", "unique") + VALUES (gen_random_uuid(), 'message', query_createdAt, jsonb_build_object('text', query_content), query_embedding, query_userId, query_roomId, true); + WHEN 'memories_384' THEN + INSERT INTO memories_384 (id, type, "createdAt", content, embedding, "userId", "roomId", "unique") + VALUES (gen_random_uuid(), 'message', query_createdAt, jsonb_build_object('text', query_content), query_embedding, query_userId, query_roomId, true); + END CASE; + END IF; +END; +$$; + + +CREATE OR REPLACE FUNCTION "public"."count_memories"("query_table_name" "text", "query_roomId" "uuid", "query_unique" boolean DEFAULT false) RETURNS bigint + LANGUAGE "plpgsql" + AS $$ +BEGIN + RETURN ( + SELECT COUNT(*) FROM public.memories + WHERE public.memories."type" = "query_table_name" + AND ("query_roomId" IS NULL OR public.memories."roomId" = "query_roomId") + AND ("query_unique" IS FALSE OR public.memories."unique" = TRUE) + ); +END; +$$; + +CREATE OR REPLACE FUNCTION "public"."create_room"("roomId" "uuid") RETURNS TABLE("id" "uuid") + LANGUAGE "plpgsql" + AS $$ +BEGIN + RETURN QUERY INSERT INTO public.rooms ("id") VALUES ("roomId") RETURNING public.rooms."id"; +END; +$$; + + +CREATE OR REPLACE FUNCTION "public"."get_embedding_list"("query_table_name" "text", "query_threshold" integer, "query_input" "text", "query_field_name" "text", "query_field_sub_name" "text", "query_match_count" integer) RETURNS TABLE("embedding" "public"."vector", "levenshtein_score" integer) + LANGUAGE "plpgsql" + AS $$ +BEGIN + RETURN QUERY + SELECT public.memories."embedding", levenshtein("query_input", (public.memories."content"->>"query_field_name")::TEXT) AS "levenshtein_score" + FROM public.memories + WHERE public.memories."type" = "query_table_name" + AND levenshtein("query_input", (public.memories."content"->>"query_field_name")::TEXT) <= "query_threshold" + ORDER BY "levenshtein_score" + LIMIT "query_match_count"; +END; +$$; + + +CREATE OR REPLACE FUNCTION "public"."get_goals"("query_roomid" "uuid", "query_userid" "uuid" DEFAULT NULL::"uuid", "only_in_progress" boolean DEFAULT true, "row_count" integer DEFAULT 5) RETURNS SETOF "public"."goals" + LANGUAGE "plpgsql" + AS $$ +BEGIN + RETURN QUERY + SELECT * FROM goals + WHERE + (query_userId IS NULL OR userId = query_userId) + AND (roomId = query_roomId) + AND (NOT only_in_progress OR status = 'IN_PROGRESS') + LIMIT row_count; +END; +$$; + + +CREATE OR REPLACE FUNCTION "public"."get_relationship"("userA" "uuid", "userB" "uuid") RETURNS SETOF "public"."relationships" + LANGUAGE "plpgsql" STABLE + AS $$ +BEGIN + RETURN QUERY + SELECT * FROM public.relationships + WHERE (public.relationships."userA" = "userA" AND public.relationships."userB" = "userB") + OR (public.relationships."userA" = "userB" AND public.relationships."userB" = "userA"); +END; +$$; + + +CREATE OR REPLACE FUNCTION "public"."remove_memories"("query_table_name" "text", "query_roomId" "uuid") RETURNS "void" + LANGUAGE "plpgsql" + AS $$ +BEGIN + DELETE FROM public.memories WHERE public.memories."roomId" = "query_roomId" AND public.memories."type" = "query_table_name"; +END; +$$; + + +CREATE OR REPLACE FUNCTION "public"."search_knowledge"("query_embedding" "public"."vector", "query_agent_id" "uuid", "match_threshold" double precision, "match_count" integer, "search_text" "text") RETURNS TABLE("id" "uuid", "agentId" "uuid", "content" "jsonb", "embedding" "public"."vector", "createdAt" timestamp with time zone, "similarity" double precision) + LANGUAGE "plpgsql" + AS $$ +BEGIN + RETURN QUERY + WITH vector_matches AS ( + SELECT public.knowledge."id", + 1 - (public.knowledge."embedding" <=> "query_embedding") AS "vector_score" + FROM public.knowledge + WHERE (public.knowledge."agentId" IS NULL AND public.knowledge."isShared" = true) OR public.knowledge."agentId" = "query_agent_id" + AND public.knowledge."embedding" IS NOT NULL + ), + keyword_matches AS ( + SELECT public.knowledge."id", + CASE + WHEN public.knowledge."content"->>'text' ILIKE '%' || "search_text" || '%' THEN 3.0 + ELSE 1.0 + END * + CASE + WHEN public.knowledge."content"->'metadata'->>'isChunk' = 'true' THEN 1.5 + WHEN public.knowledge."content"->'metadata'->>'isMain' = 'true' THEN 1.2 + ELSE 1.0 + END AS "keyword_score" + FROM public.knowledge + WHERE (public.knowledge."agentId" IS NULL AND public.knowledge."isShared" = true) OR public.knowledge."agentId" = "query_agent_id" + ) + SELECT + k."id", + k."agentId", + k."content", + k."embedding", + k."createdAt", + (v."vector_score" * kw."keyword_score") AS "similarity" + FROM public.knowledge k + JOIN vector_matches v ON k."id" = v."id" + LEFT JOIN keyword_matches kw ON k."id" = kw."id" + WHERE (k."agentId" IS NULL AND k."isShared" = true) OR k."agentId" = "query_agent_id" + AND ( + v."vector_score" >= "match_threshold" + OR (kw."keyword_score" > 1.0 AND v."vector_score" >= 0.3) + ) + ORDER BY "similarity" DESC + LIMIT "match_count"; +END; +$$; + + +CREATE OR REPLACE FUNCTION "public"."search_memories"("query_table_name" "text", "query_roomId" "uuid", "query_embedding" "public"."vector", "query_match_threshold" double precision, "query_match_count" integer, "query_unique" boolean) RETURNS TABLE("id" "uuid", "userId" "uuid", "content" "jsonb", "createdAt" timestamp with time zone, "similarity" double precision, "roomId" "uuid", "embedding" "public"."vector") + LANGUAGE "plpgsql" + AS $$ +BEGIN + RETURN QUERY + SELECT + public.memories."id", + public.memories."userId", + public.memories."content", + public.memories."createdAt", + 1 - (public.memories."embedding" <=> "query_embedding") AS "similarity", + public.memories."roomId", + public.memories."embedding" + FROM public.memories + WHERE (1 - (public.memories."embedding" <=> "query_embedding") > "query_match_threshold") + AND public.memories."type" = "query_table_name" + AND ("query_unique" IS FALSE OR public.memories."unique" = TRUE) + AND ("query_roomId" IS NULL OR public.memories."roomId" = "query_roomId") + ORDER BY "similarity" DESC + LIMIT "query_match_count"; +END; +$$; + COMMIT; From 077a8299b781270ee3b0a323c6854d625e3d69a6 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Wed, 15 Jan 2025 11:24:29 +0700 Subject: [PATCH 16/58] package.json duplicates fix --- package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/package.json b/package.json index 423adf1ff24..d058e525c29 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,6 @@ "devDependencies": { "@commitlint/cli": "18.6.1", "@commitlint/config-conventional": "18.6.3", - "@types/jest": "^29.5.11", "@typescript-eslint/eslint-plugin": "8.16.0", "@typescript-eslint/parser": "8.16.0", "@vitest/eslint-plugin": "1.1.13", @@ -36,11 +35,9 @@ "eslint": "9.16.0", "eslint-config-prettier": "9.1.0", "husky": "9.1.7", - "jest": "^29.7.0", "lerna": "8.1.5", "only-allow": "1.2.1", "prettier": "3.4.1", - "ts-jest": "^29.1.1", "turbo": "2.3.3", "typedoc": "0.26.11", "typescript": "5.6.3", From 7189c8a3e5a3c936b062f73052d270026021935b Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Wed, 15 Jan 2025 11:39:40 +0700 Subject: [PATCH 17/58] dirty fix for json tweet --- packages/client-twitter/src/post.ts | 41 ++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index e42a7a1b5cb..8980d0c9ff7 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -1163,8 +1163,23 @@ export class TwitterPostClient { } elizaLogger.debug("Final reply text to be sent:", replyText); + + // temporary fix + const _replyText = replyText; + + // Regular expression untuk menangkap teks + const regex = /{ "user": "SUIRISE", "text": "(.*)/; + + // Ekstrak teks menggunakan regex + const match = regex.exec(_replyText); + let finalReplyText; + if (match) { + finalReplyText = match[1]; // Ambil grup pertama + } else { + finalReplyText = replyText; + } console.log("Final reply text to be sent:", { - replyText, + finalReplyText, length: replyText.length, }); let result; @@ -1172,25 +1187,43 @@ export class TwitterPostClient { if (replyText.length > DEFAULT_MAX_TWEET_LENGTH) { result = await this.handleNoteTweet( this.client, - replyText, + finalReplyText, tweet.id ); } else { result = await this.sendStandardTweet( this.client, - replyText, + finalReplyText, tweet.id ); } + // if (replyText.length > DEFAULT_MAX_TWEET_LENGTH) { + // result = await this.handleNoteTweet( + // this.client, + // replyText, + // tweet.id + // ); + // } else { + // result = await this.sendStandardTweet( + // this.client, + // replyText, + // tweet.id + // ); + // } + if (result) { elizaLogger.log("Successfully posted reply tweet"); executedActions.push("reply"); // Cache generation context for debugging + // await this.runtime.cacheManager.set( + // `twitter/reply_generation_${tweet.id}.txt`, + // `Context:\n${enrichedState}\n\nGenerated Reply:\n${replyText}` + // ); await this.runtime.cacheManager.set( `twitter/reply_generation_${tweet.id}.txt`, - `Context:\n${enrichedState}\n\nGenerated Reply:\n${replyText}` + `Context:\n${enrichedState}\n\nGenerated Reply:\n${finalReplyText}` ); } else { elizaLogger.error("Tweet reply creation failed"); From a9dbc632a80faebd57aeb76c8a31e99bdfdf6c5e Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Wed, 15 Jan 2025 16:10:31 +0700 Subject: [PATCH 18/58] prompt optimization --- packages/client-twitter/src/post.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index 8980d0c9ff7..0f263ba709e 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -48,7 +48,8 @@ const twitterPostTemplate = ` # Task: Generate a post in the voice and style and perspective of {{agentName}} @{{twitterUserName}}. Write a 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 must include the summary of the # NEWS above into a sentences. Dont discard or remove any important numbers and informations +Your response must include the summary of the # NEWS above into a sentences and Dont discard or remove any important numbers and informations +If the news isnt about SUI or SUIRISE, dont mix the context with SUI Shilling. keep the original and relevant context of the news. Your response should be 1, 2, or 3 sentences (choose the length at random). 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 if there are multiple statements in your response.`; From d3e4f507a990cb7a3475a4fa9c8a860ec19e3940 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Wed, 15 Jan 2025 16:25:22 +0700 Subject: [PATCH 19/58] debug --- packages/client-twitter/src/post.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index 0f263ba709e..c2dad014cd6 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -1181,6 +1181,7 @@ export class TwitterPostClient { } console.log("Final reply text to be sent:", { finalReplyText, + raw: replyText, length: replyText.length, }); let result; From ed99a145e8bde3eff8df46a77c866d45794ea0dd Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Wed, 15 Jan 2025 16:26:41 +0700 Subject: [PATCH 20/58] XX debug --- packages/client-twitter/src/post.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index c2dad014cd6..549009faa6f 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -1169,7 +1169,7 @@ export class TwitterPostClient { const _replyText = replyText; // Regular expression untuk menangkap teks - const regex = /{ "user": "SUIRISE", "text": "(.*)/; + const regex = /"text": "(.*)/s; // Ekstrak teks menggunakan regex const match = regex.exec(_replyText); From 72d50f07a542df5c29c0598f2588e55f1a62f708 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 17 Jan 2025 11:13:33 +0700 Subject: [PATCH 21/58] put cache and memory to the news --- .../src/providers/cryptoNewsData.ts | 81 ++++++++++++++----- 1 file changed, 62 insertions(+), 19 deletions(-) diff --git a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts index 7dde3930cf0..931fe6c92f3 100644 --- a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts +++ b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts @@ -1,5 +1,9 @@ -import { Provider } from "@elizaos/core"; -import { ChainCatcherResponse, fetchChainCatcher } from "../utils/chainCatcher"; +import { Provider, stringToUuid } from "@elizaos/core"; +import { + ChainCatcherItem, + ChainCatcherResponse, + fetchChainCatcher, +} from "../utils/chainCatcher"; // interface FormattedMarketData { // symbol: string; @@ -53,29 +57,68 @@ export const cryptoNewsData: Provider = { // fetch several times const chainCatcher: ChainCatcherResponse = await fetchChainCatcher(); + const cacheManager = runtime.cacheManager; + const articles: ChainCatcherItem[] = []; + let output; + + for (const article of chainCatcher.data.list) { + const cached = await cacheManager.get( + `cryptoNews_${article.id}` + ); + if (!cached) { + // new acrticle + console.log( + `NEW ARTICLE : ${article.title} # ${article.id}` + ); + // means it's not cached, then we push it to the articles + articles.push(article); + // cache it + await cacheManager.set(`cryptoNews_${article.id}`, article); + // put the news to knowledge as well + await runtime.knowledgeManager.createMemory({ + // We namespace the knowledge base uuid to avoid id + // collision with the document above. + id: stringToUuid(`cryptoNews_${article.id}`), + roomId: runtime.agentId, + agentId: runtime.agentId, + userId: runtime.agentId, + createdAt: Date.now(), + content: { + text: article.description, + type: "news", + }, + }); + } else { + console.log( + `ARTICLE ${article.id} is already cached, skipping` + ); + } + } // const cryptoNews: SerperNewsResponse = // await fetchSerperNews("crypto"); // const suiNews: SerperNewsResponse = await fetchSerperNews("$SUI"); - let output = `# NEWS for ${runtime.character.name}\n\n`; - // output += `The News have this format:\n\n`; - // output += ` - // - Title <--- Title of the news\n - // Description <--- Content of the news\n - // Timestamp <--- the time of the news\n\n - // `; + if (articles.length > 0) { + output = `# NEWS for ${runtime.character.name}\n\n`; + // output += `The News have this format:\n\n`; + // output += ` + // - Title <--- Title of the news\n + // Description <--- Content of the news\n + // Timestamp <--- the time of the news\n\n + // `; - chainCatcher.data.list.forEach((article) => { - output += `- ${article.title}\n${article.description}\nTime: ${article.releaseTime}\n\n`; - }); + chainCatcher.data.list.forEach((article) => { + output += `- ${article.title}\n${article.description}\nTime: ${article.releaseTime}\n\n`; + }); - // cryptoNews.news.forEach((article) => { - // output += `- ${article.title}\n${article.snippet}\n\n`; - // }); - // suiNews.news.forEach((article) => { - // output += `- ${article.title}\n${article.snippet}\n\n`; - // }); - output += `# ADDITIONAL_NOTES: if there's any decimal numbers you should convert the decimal separator into comma instead of dot\n\n# END NEWS\n\n`; + // cryptoNews.news.forEach((article) => { + // output += `- ${article.title}\n${article.snippet}\n\n`; + // }); + // suiNews.news.forEach((article) => { + // output += `- ${article.title}\n${article.snippet}\n\n`; + // }); + output += `# ADDITIONAL_NOTES: if there's any decimal numbers you should convert the decimal separator into comma instead of dot\n\n# END NEWS\n\n`; + } // elizaLogger.log(output); From a511465ce17ef253c623631e3d1a84ca4d886261 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 17 Jan 2025 11:28:54 +0700 Subject: [PATCH 22/58] trimTweetLength additional fix if the text contains ugly json --- packages/client-twitter/src/post.ts | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index 549009faa6f..fb1670051f6 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -658,11 +658,26 @@ export class TwitterPostClient { if (lastSentence > 0) { return text.slice(0, lastSentence + 1).trim(); } - + const _theText = + text.slice(0, text.lastIndexOf(" ", maxLength - 3)).trim() + "..."; + const regex = /"text": "(.*)/s; + + // Ekstrak teks menggunakan regex + const match = regex.exec(_theText); + let finalReplyText; + if (match) { + finalReplyText = match[1]; // Ambil grup pertama + } else { + finalReplyText = _theText; + } + // console.log("Final reply text to be sent:", { + // finalReplyText, + // raw: replyText, + // length: replyText.length, + // }); + // let result; // Fallback to word boundary - return ( - text.slice(0, text.lastIndexOf(" ", maxLength - 3)).trim() + "..." - ); + return finalReplyText; } /** From ff3396f68b191b7b82121f7393ae88c7cb9cdb0c Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 17 Jan 2025 15:04:10 +0700 Subject: [PATCH 23/58] add embedding to news --- packages/plugin-crypto-news/src/providers/cryptoNewsData.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts index 931fe6c92f3..e1bb9222142 100644 --- a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts +++ b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts @@ -1,4 +1,4 @@ -import { Provider, stringToUuid } from "@elizaos/core"; +import { embed, Provider, stringToUuid } from "@elizaos/core"; import { ChainCatcherItem, ChainCatcherResponse, @@ -74,6 +74,7 @@ export const cryptoNewsData: Provider = { articles.push(article); // cache it await cacheManager.set(`cryptoNews_${article.id}`, article); + const embedding = await embed(runtime, article.description); // put the news to knowledge as well await runtime.knowledgeManager.createMemory({ // We namespace the knowledge base uuid to avoid id @@ -87,6 +88,7 @@ export const cryptoNewsData: Provider = { text: article.description, type: "news", }, + embedding, }); } else { console.log( From 0b1110170b07a507cc1e90e39803041060cc3f9c Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 17 Jan 2025 15:23:00 +0700 Subject: [PATCH 24/58] add embedding --- packages/plugin-crypto-news/src/providers/cryptoNewsData.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts index e1bb9222142..d9dc4260184 100644 --- a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts +++ b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts @@ -75,6 +75,7 @@ export const cryptoNewsData: Provider = { // cache it await cacheManager.set(`cryptoNews_${article.id}`, article); const embedding = await embed(runtime, article.description); + console.log("embedding", embedding); // put the news to knowledge as well await runtime.knowledgeManager.createMemory({ // We namespace the knowledge base uuid to avoid id From 4260319d2338e5ab4d069ebd1e8a34673e7d2caf Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 17 Jan 2025 15:44:28 +0700 Subject: [PATCH 25/58] realtime knowledge using RAG --- .../src/providers/cryptoNewsData.ts | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts index d9dc4260184..e2856edce35 100644 --- a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts +++ b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts @@ -77,20 +77,35 @@ export const cryptoNewsData: Provider = { const embedding = await embed(runtime, article.description); console.log("embedding", embedding); // put the news to knowledge as well - await runtime.knowledgeManager.createMemory({ - // We namespace the knowledge base uuid to avoid id - // collision with the document above. + await runtime.ragKnowledgeManager.createKnowledge({ id: stringToUuid(`cryptoNews_${article.id}`), - roomId: runtime.agentId, agentId: runtime.agentId, - userId: runtime.agentId, - createdAt: Date.now(), content: { text: article.description, - type: "news", + metadata: { + isMain: true, + isShared: true, + source: "articles", + }, }, - embedding, + embedding: new Float32Array(embedding), }); + + // await runtime.knowledgeManager.createMemory({ + // // We namespace the knowledge base uuid to avoid id + // // collision with the document above. + // id: stringToUuid(`cryptoNews_${article.id}`), + // agentId: runtime.agentId, + // roomId: runtime.agentId, + + // userId: runtime.agentId, + // createdAt: Date.now(), + // content: { + // text: article.description, + // type: "news", + // }, + // embedding, + // }); } else { console.log( `ARTICLE ${article.id} is already cached, skipping` From 90948a28b0c1a57cefade60ebcde0508c77c699c Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Sat, 18 Jan 2025 00:44:53 +0700 Subject: [PATCH 26/58] disable birdeye --- agent/src/index.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/agent/src/index.ts b/agent/src/index.ts index 65a1ff645ca..73460105137 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -52,7 +52,6 @@ import { availPlugin } from "@elizaos/plugin-avail"; import { avalanchePlugin } from "@elizaos/plugin-avalanche"; import { b2Plugin } from "@elizaos/plugin-b2"; import { binancePlugin } from "@elizaos/plugin-binance"; -import { birdeyePlugin } from "@elizaos/plugin-birdeye"; import { advancedTradePlugin, coinbaseCommercePlugin, @@ -874,7 +873,7 @@ export async function createAgent( getSecret(character, "AVALANCHE_PRIVATE_KEY") ? avalanchePlugin : null, - getSecret(character, "BIRDEYE_API_KEY") ? birdeyePlugin : null, + // getSecret(character, "BIRDEYE_API_KEY") ? birdeyePlugin : null, getSecret(character, "ECHOCHAMBERS_API_URL") && getSecret(character, "ECHOCHAMBERS_API_KEY") ? echoChambersPlugin From 6c5dd45f5b3be0b27d45f8f01560e2a802c81db6 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Sat, 18 Jan 2025 00:45:10 +0700 Subject: [PATCH 27/58] replace goplus with neocortex --- packages/plugin-goplus/src/templates/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin-goplus/src/templates/index.ts b/packages/plugin-goplus/src/templates/index.ts index 629ebb84b6f..641d739fba2 100644 --- a/packages/plugin-goplus/src/templates/index.ts +++ b/packages/plugin-goplus/src/templates/index.ts @@ -89,7 +89,7 @@ important: do not response anything except json`; export const responsePrompt = ( apiresult: string, text: string -) => `You are a security action detector for blockchain interactions. Your task is to analyze the security API’s response from GoPlus and summary the API result. +) => `You are a security action detector for blockchain interactions. Your task is to analyze the security API’s response from NeoCorteX and summary the API result. API to analyze:“”" ${apiresult} “”" From fa28855c5272decff0700a307dba50a039ee1d6d Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Tue, 21 Jan 2025 13:00:56 +0700 Subject: [PATCH 28/58] heleh --- packages/adapter-supabase/src/index.ts | 321 +- pnpm-lock.yaml | 3781 +++++++++++++----------- 2 files changed, 2285 insertions(+), 1817 deletions(-) diff --git a/packages/adapter-supabase/src/index.ts b/packages/adapter-supabase/src/index.ts index dde145e896b..bcb4494d224 100644 --- a/packages/adapter-supabase/src/index.ts +++ b/packages/adapter-supabase/src/index.ts @@ -1,18 +1,17 @@ -import { createClient, type SupabaseClient } from "@supabase/supabase-js"; import { - type Memory, - type Goal, - type Relationship, + Account, Actor, + DatabaseAdapter, GoalStatus, - Account, - type UUID, Participant, - Room, RAGKnowledgeItem, elizaLogger, + type Goal, + type Memory, + type Relationship, + type UUID, } from "@elizaos/core"; -import { DatabaseAdapter } from "@elizaos/core"; +import { createClient, type SupabaseClient } from "@supabase/supabase-js"; import { v4 as uuid } from "uuid"; export class SupabaseDatabaseAdapter extends DatabaseAdapter { async getRoom(roomId: UUID): Promise<UUID | null> { @@ -48,19 +47,57 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { roomId: UUID, userId: UUID ): Promise<"FOLLOWED" | "MUTED" | null> { - const { data, error } = await this.supabase - .from("participants") - .select("userState") - .eq("roomId", roomId) - .eq("userId", userId) - .single(); + try { + const { data, error } = await this.supabase + .from("participants") + .select("userState") + .eq("roomId", roomId) + .eq("userId", userId) + .maybeSingle(); - if (error) { - elizaLogger.error("Error getting participant user state:", error); + if (error) { + elizaLogger.error( + "Error getting participant user state:", + error + ); + return null; + } + + return data?.userState as "FOLLOWED" | "MUTED" | null; + } catch (error) { + elizaLogger.error( + "Unexpected error in getParticipantUserState:", + error + ); return null; } + } + + async getParticipantsForRoom(roomId: UUID): Promise<UUID[]> { + try { + const { data, error } = await this.supabase + .from("participants") + .select("userId") + .eq("roomId", roomId); + + if (error) { + elizaLogger.error( + "Error getting participants for room:", + error + ); + throw new Error( + `Error getting participants for room: ${error.message}` + ); + } - return data?.userState as "FOLLOWED" | "MUTED" | null; + return data.map((row) => row.userId as UUID); + } catch (error) { + elizaLogger.error( + "Unexpected error in getParticipantsForRoom:", + error + ); + throw error; + } } async setParticipantUserState( @@ -80,21 +117,6 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { } } - async getParticipantsForRoom(roomId: UUID): Promise<UUID[]> { - const { data, error } = await this.supabase - .from("participants") - .select("userId") - .eq("roomId", roomId); - - if (error) { - throw new Error( - `Error getting participants for room: ${error.message}` - ); - } - - return data.map((row) => row.userId as UUID); - } - supabase: SupabaseClient; constructor(supabaseUrl: string, supabaseKey: string) { @@ -114,22 +136,25 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { roomIds: UUID[]; agentId?: UUID; tableName: string; - limit?: number; }): Promise<Memory[]> { + // Determine which memories table to use based on the tableName + const embeddingSize = params.tableName.includes("_") + ? parseInt(params.tableName.split("_")[1]) + : 1536; // default to 1536 if not specified + + const actualTableName = `memories_${embeddingSize}`; + + elizaLogger.info(`Querying memories from table: ${actualTableName}`); + let query = this.supabase - .from(params.tableName) + .from(actualTableName) .select("*") - .in("roomId", params.roomIds) - .order("createdAt", { ascending: false }); + .in("roomId", params.roomIds); if (params.agentId) { query = query.eq("agentId", params.agentId); } - if (params.limit) { - query = query.limit(params.limit); - } - const { data, error } = await query; if (error) { @@ -145,21 +170,11 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { return memories as Memory[]; } - async getAccountById(userId: UUID): Promise<Account | null> { - const { data, error } = await this.supabase - .from("accounts") - .select("*") - .eq("id", userId); - if (error) { - throw new Error(error.message); - } - return (data?.[0] as Account) || null; - } - async createAccount(account: Account): Promise<boolean> { const { error } = await this.supabase .from("accounts") .upsert([account]); + if (error) { elizaLogger.error(error.message); return false; @@ -167,6 +182,19 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { return true; } + async getAccountById(userId: UUID): Promise<Account | null> { + const { data, error } = await this.supabase + .from("accounts") + .select("*") + .eq("id", userId); + + if (error) { + elizaLogger.error(error.message); + throw error; + } + return (data?.[0] as Account) || null; + } + async getActorDetails(params: { roomId: UUID }): Promise<Actor[]> { try { const response = await this.supabase @@ -266,6 +294,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { type: string; }): Promise<void> { const { error } = await this.supabase.from("logs").insert({ + id: uuid(), body: params.body, userId: params.userId, roomId: params.roomId, @@ -287,17 +316,27 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { start?: number; end?: number; }): Promise<Memory[]> { + // Determine which memories table to use based on the tableName + const embeddingSize = params.tableName.includes("_") + ? parseInt(params.tableName.split("_")[1]) + : 1536; // default to 1536 if not specified + + const actualTableName = `memories_${embeddingSize}`; + + elizaLogger.info(`Querying memories from table: ${actualTableName}`); + const query = this.supabase - .from(params.tableName) + .from(actualTableName) .select("*") .eq("roomId", params.roomId); + // Convert timestamps to ISO strings if (params.start) { - query.gte("createdAt", params.start); + query.gte("createdAt", new Date(params.start).toISOString()); } if (params.end) { - query.lte("createdAt", params.end); + query.lte("createdAt", new Date(params.end).toISOString()); } if (params.unique) { @@ -320,7 +359,15 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { throw new Error(`Error retrieving memories: ${error.message}`); } - return data as Memory[]; + // map createdAt to Date + const memories = data.map((memory) => ({ + ...memory, + createdAt: memory.createdAt + ? new Date(memory.createdAt).getTime() + : undefined, + })); + + return memories as Memory[]; } async searchMemoriesByEmbedding( @@ -356,18 +403,50 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { } async getMemoryById(memoryId: UUID): Promise<Memory | null> { - const { data, error } = await this.supabase + // Try each memory table since we don't know which one contains the memory + for (const size of [384, 768, 1024, 1536]) { + const { data, error } = await this.supabase + .from(`memories_${size}`) + .select("*") + .eq("id", memoryId) + .maybeSingle(); // Use maybeSingle() instead of single() + // PGRST116 means "no results found" - this is expected when checking other tables + if (error && error.code !== "PGRST116") { + elizaLogger.error(`Error checking memories_${size}:`, error); + continue; + } + + if (data) { + return data as Memory; + } + } + + return null; + } + + async getMemoriesByIds( + memoryIds: UUID[], + tableName?: string + ): Promise<Memory[]> { + if (memoryIds.length === 0) return []; + + let query = this.supabase .from("memories") .select("*") - .eq("id", memoryId) - .single(); + .in("id", memoryIds); + + if (tableName) { + query = query.eq("type", tableName); + } + + const { data, error } = await query; if (error) { - elizaLogger.error("Error retrieving memory by ID:", error); - return null; + console.error("Error retrieving memories by IDs:", error); + return []; } - return data as Memory; + return data as Memory[]; } async createMemory( @@ -375,11 +454,27 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { tableName: string, unique = false ): Promise<void> { - const createdAt = memory.createdAt ?? Date.now(); + // ✅ Convert from milliseconds to seconds + const createdAt = memory.createdAt + ? new Date(memory.createdAt).toISOString() + : new Date().toISOString(); + + // Determine which table to use based on embedding size + const embeddingSize = memory.embedding?.length; + if (!embeddingSize) { + throw new Error("Memory must have an embedding"); + } + + // Validate embedding size + if (![384, 768, 1024, 1536].includes(embeddingSize)) { + throw new Error(`Unsupported embedding size: ${embeddingSize}`); + } + + const actualTableName = `memories_${embeddingSize}`; + if (unique) { const opts = { - // TODO: Add ID option, optionally - query_table_name: tableName, + query_table_name: actualTableName, query_userId: memory.userId, query_content: memory.content.text, query_roomId: memory.roomId, @@ -397,12 +492,15 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { throw new Error(JSON.stringify(result.error)); } } else { - const result = await this.supabase - .from("memories") - .insert({ ...memory, createdAt, type: tableName }); - const { error } = result; - if (error) { - throw new Error(JSON.stringify(error)); + const result = await this.supabase.from(actualTableName).insert({ + ...memory, + id: memory.id, // Ensure ID is included + createdAt, + type: tableName, + }); + + if (result.error) { + throw new Error(JSON.stringify(result.error)); } } } @@ -457,23 +555,34 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { onlyInProgress?: boolean; count?: number; }): Promise<Goal[]> { - const opts = { - query_roomId: params.roomId, - query_userId: params.userId, - only_in_progress: params.onlyInProgress, - row_count: params.count, - }; + try { + const opts = { + query_roomId: params.roomId, + query_userId: params.userId || null, + only_in_progress: params.onlyInProgress || false, + row_count: params.count || null, + }; - const { data: goals, error } = await this.supabase.rpc( - "get_goals", - opts - ); + elizaLogger.debug("Calling get_goals with params:", opts); - if (error) { - throw new Error(error.message); - } + const { data: goals, error } = await this.supabase.rpc( + "get_goals", + opts + ); - return goals; + if (error) { + elizaLogger.error("Error fetching goals:", { + error, + params: opts, + }); + throw new Error(error.message); + } + + return goals; + } catch (error) { + elizaLogger.error("Unexpected error in getGoals:", error); + throw error; + } } async updateGoal(goal: Goal): Promise<void> { @@ -487,7 +596,9 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { } async createGoal(goal: Goal): Promise<void> { - const { error } = await this.supabase.from("goals").insert(goal); + const { error } = await this.supabase + .from("goals") + .insert({ ...goal, id: goal.id || uuid() }); if (error) { throw new Error(`Error creating goal: ${error.message}`); } @@ -572,9 +683,11 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { } async addParticipant(userId: UUID, roomId: UUID): Promise<boolean> { - const { error } = await this.supabase - .from("participants") - .insert({ userId: userId, roomId: roomId }); + const { error } = await this.supabase.from("participants").insert({ + id: uuid(), // Generate a new UUID for the participant + userId: userId, + roomId: roomId, + }); if (error) { elizaLogger.error(`Error adding participant: ${error.message}`); @@ -609,27 +722,26 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { let roomId: UUID; if (!allRoomData || allRoomData.length === 0) { - // If no existing room is found, create a new room - const { data: newRoomData, error: roomsError } = await this.supabase + // Create new room with UUID + const newRoomId = uuid() as UUID; + const { error: roomsError } = await this.supabase .from("rooms") - .insert({}) - .single(); + .insert({ id: newRoomId }); if (roomsError) { throw new Error("Room creation error: " + roomsError.message); } - roomId = (newRoomData as Room)?.id as UUID; + roomId = newRoomId; } else { - // If an existing room is found, use the first room's ID roomId = allRoomData[0]; } const { error: participantsError } = await this.supabase .from("participants") .insert([ - { userId: params.userA, roomId }, - { userId: params.userB, roomId }, + { id: uuid(), userId: params.userA, roomId }, + { id: uuid(), userId: params.userB, roomId }, ]); if (participantsError) { @@ -638,17 +750,16 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { ); } - // Create or update the relationship between the two users + // Create relationship with UUID const { error: relationshipError } = await this.supabase .from("relationships") .upsert({ + id: uuid(), userA: params.userA, userB: params.userB, userId: params.userA, status: "FRIENDS", - }) - .eq("userA", params.userA) - .eq("userB", params.userB); + }); if (relationshipError) { throw new Error( @@ -698,7 +809,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { .select("value") .eq("key", params.key) .eq("agentId", params.agentId) - .single(); + .maybeSingle(); if (error) { elizaLogger.error("Error fetching cache:", error); @@ -717,7 +828,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { key: params.key, agentId: params.agentId, value: params.value, - createdAt: new Date(), + createdAt: new Date().toISOString(), }); if (error) { @@ -856,13 +967,15 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { const metadata = knowledge.content.metadata || {}; const { error } = await this.supabase.from("knowledge").insert({ - id: knowledge.id, + id: knowledge.id || uuid(), agentId: metadata.isShared ? null : knowledge.agentId, content: knowledge.content, embedding: knowledge.embedding ? Array.from(knowledge.embedding) : null, - createdAt: knowledge.createdAt || new Date(), + createdAt: + new Date(knowledge.createdAt).toISOString() || + new Date().toISOString(), isMain: metadata.isMain || false, originalId: metadata.originalId || null, chunkIndex: metadata.chunkIndex || null, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0473651e7b4..bbe864d3317 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,22 +14,28 @@ importers: dependencies: '@0glabs/0g-ts-sdk': specifier: 0.2.1 - version: 0.2.1(bufferutil@4.0.9)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(utf-8-validate@6.0.5) + version: 0.2.1(bufferutil@4.0.9)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) '@coinbase/coinbase-sdk': specifier: 0.10.0 - version: 0.10.0(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@6.0.5)(zod@3.24.1) + version: 0.10.0(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) '@deepgram/sdk': specifier: ^3.9.0 - version: 3.9.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) + version: 3.9.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@glacier-network/client': + specifier: ^0.2.1 + version: 0.2.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@glacier-network/elizaos-adapter': + specifier: 0.0.1-alpha.1 + version: 0.0.1-alpha.1(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(@langchain/groq@0.1.3(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13))(axios@1.7.9)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.0.0)(sswr@2.1.0(svelte@5.18.0))(svelte@5.18.0)(utf-8-validate@5.0.10)(vue@3.5.13(typescript@5.6.3)) '@vitest/eslint-plugin': specifier: 1.0.1 - version: 1.0.1(@typescript-eslint/utils@8.20.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(vitest@2.1.5(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + version: 1.0.1(@typescript-eslint/utils@8.20.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(vitest@2.1.5(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) amqplib: specifier: 0.10.5 version: 0.10.5 axios: specifier: ^1.7.9 - version: 1.7.9(debug@4.4.0) + version: 1.7.9 csv-parse: specifier: 5.6.0 version: 5.6.0 @@ -38,7 +44,7 @@ importers: version: 0.2.1 ollama-ai-provider: specifier: 0.16.1 - version: 0.16.1(zod@3.24.1) + version: 0.16.1(zod@3.23.8) optional: specifier: 0.1.4 version: 0.1.4 @@ -54,7 +60,7 @@ importers: devDependencies: '@commitlint/cli': specifier: 18.6.1 - version: 18.6.1(@types/node@22.10.6)(typescript@5.6.3) + version: 18.6.1(@types/node@20.17.9)(typescript@5.6.3) '@commitlint/config-conventional': specifier: 18.6.3 version: 18.6.3 @@ -84,7 +90,7 @@ importers: version: 9.1.7 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.10.6)(babel-plugin-macros@3.1.0) + version: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) lerna: specifier: 8.1.5 version: 8.1.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(babel-plugin-macros@3.1.0)(encoding@0.1.13) @@ -96,7 +102,7 @@ importers: version: 3.4.1 ts-jest: specifier: ^29.1.1 - 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@22.10.6)(babel-plugin-macros@3.1.0))(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)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)))(typescript@5.6.3) turbo: specifier: 2.3.3 version: 2.3.3 @@ -108,13 +114,13 @@ importers: version: 5.6.3 viem: specifier: 2.21.58 - version: 2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@6.0.5)(zod@3.24.1) + version: 2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) vite: specifier: 5.4.11 - version: 5.4.11(@types/node@22.10.6)(terser@5.37.0) + version: 5.4.11(@types/node@20.17.9)(terser@5.37.0) vitest: specifier: 2.1.5 - version: 2.1.5(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 2.1.5(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) agent: dependencies: @@ -250,6 +256,9 @@ importers: '@elizaos/plugin-goat': specifier: workspace:* version: link:../packages/plugin-goat + '@elizaos/plugin-goplus': + specifier: workspace:* + version: link:../packages/plugin-goplus '@elizaos/plugin-hyperliquid': specifier: workspace:* version: link:../packages/plugin-hyperliquid @@ -388,7 +397,7 @@ importers: version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) client: dependencies: @@ -397,31 +406,31 @@ importers: version: link:../packages/core '@radix-ui/react-avatar': specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-collapsible': specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-dialog': specifier: ^1.1.4 - version: 1.1.4(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.4(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-label': specifier: ^2.1.1 - version: 2.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-separator': specifier: ^1.1.1 - version: 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-slot': specifier: ^1.1.1 - version: 1.1.1(@types/react@19.0.6)(react@19.0.0) + version: 1.1.1(@types/react@19.0.7)(react@19.0.0) '@radix-ui/react-tabs': specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-toast': specifier: ^1.2.4 - version: 1.2.4(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.2.4(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-tooltip': specifier: ^1.1.6 - version: 1.1.6(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.6(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@react-spring/web': specifier: ^9.7.5 version: 9.7.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -466,23 +475,23 @@ importers: version: 2.6.0 tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.6)(typescript@5.6.3))) + version: 1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3))) vite-plugin-compression: specifier: ^0.5.1 - version: 0.5.1(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + version: 0.5.1(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) devDependencies: '@eslint/js': specifier: ^9.17.0 version: 9.18.0 '@types/node': specifier: ^22.10.5 - version: 22.10.6 + version: 22.10.7 '@types/react': specifier: ^19.0.3 - version: 19.0.6 + version: 19.0.7 '@types/react-dom': specifier: ^19.0.2 - version: 19.0.3(@types/react@19.0.6) + version: 19.0.3(@types/react@19.0.7) '@types/semver': specifier: ^7.5.8 version: 7.5.8 @@ -494,10 +503,10 @@ importers: version: 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) '@vitejs/plugin-react-swc': specifier: ^3.5.0 - version: 3.7.2(@swc/helpers@0.5.15)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + version: 3.7.2(@swc/helpers@0.5.15)(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) autoprefixer: specifier: ^10.4.19 - version: 10.4.20(postcss@8.5.0) + version: 10.4.20(postcss@8.5.1) eslint: specifier: ^9.17.0 version: 9.18.0(jiti@2.4.2) @@ -524,13 +533,13 @@ importers: version: 15.14.0 postcss: specifier: ^8.4.38 - version: 8.5.0 + version: 8.5.1 rollup-plugin-visualizer: specifier: ^5.14.0 version: 5.14.0(rollup@4.30.1) tailwindcss: specifier: ^3.4.4 - version: 3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.6)(typescript@5.6.3)) + version: 3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3)) typescript: specifier: ~5.6.3 version: 5.6.3 @@ -539,43 +548,43 @@ importers: version: 8.20.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) vite: specifier: ^6.0.5 - version: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + version: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.6.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + version: 5.1.4(typescript@5.6.3)(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) docs: dependencies: '@docusaurus/core': specifier: 3.6.3 - version: 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/plugin-content-blog': specifier: 3.6.3 - version: 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/plugin-content-docs': specifier: 3.6.3 - version: 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/plugin-ideal-image': specifier: 3.6.3 - version: 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bare-buffer@3.0.1)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/preset-classic': specifier: 3.6.3 - version: 3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.6)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.7)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/theme-common': specifier: 3.6.3 - version: 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) + version: 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@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@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@mdx-js/react': specifier: 3.0.1 - version: 3.0.1(@types/react@19.0.6)(react@18.3.1) + version: 3.0.1(@types/react@19.0.7)(react@18.3.1) clsx: specifier: 2.1.1 version: 2.1.1 docusaurus-lunr-search: specifier: 3.5.0 - version: 3.5.0(@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.5.0(@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) dotenv: specifier: ^16.4.7 version: 16.4.7 @@ -625,7 +634,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/adapter-postgres: dependencies: @@ -641,7 +650,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/adapter-redis: dependencies: @@ -660,7 +669,7 @@ importers: version: 5.0.0 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/adapter-sqlite: dependencies: @@ -682,7 +691,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/adapter-sqljs: dependencies: @@ -704,7 +713,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/adapter-supabase: dependencies: @@ -720,7 +729,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/client-auto: dependencies: @@ -751,7 +760,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/client-direct: dependencies: @@ -803,7 +812,7 @@ importers: version: 1.4.12 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/client-discord: dependencies: @@ -840,10 +849,10 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 1.2.1 - version: 1.2.1(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 1.2.1(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) packages/client-farcaster: dependencies: @@ -852,11 +861,11 @@ importers: version: link:../core '@neynar/nodejs-sdk': specifier: ^2.0.3 - version: 2.8.1(bufferutil@4.0.9)(class-transformer@0.5.1)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) + version: 2.8.1(bufferutil@4.0.9)(class-transformer@0.5.1)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) devDependencies: tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/client-github: dependencies: @@ -881,7 +890,7 @@ importers: version: 8.1.0 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/client-lens: dependencies: @@ -890,7 +899,7 @@ importers: version: link:../core '@lens-protocol/client': specifier: 2.2.0 - version: 2.2.0(@jest/globals@29.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(react@18.3.1)(utf-8-validate@5.0.10) + version: 2.2.0(@jest/globals@29.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(react@19.0.0)(utf-8-validate@5.0.10) '@lens-protocol/metadata': specifier: 1.2.0 version: 1.2.0(zod@3.23.8) @@ -900,7 +909,7 @@ importers: devDependencies: tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/client-slack: dependencies: @@ -943,22 +952,22 @@ importers: version: 29.5.14 '@types/node': specifier: ^18.15.11 - version: 18.19.70 + version: 18.19.71 jest: specifier: ^29.5.0 - version: 29.7.0(@types/node@18.19.70)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) + version: 29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) rimraf: specifier: ^5.0.0 version: 5.0.10 ts-jest: specifier: ^29.1.0 - 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@18.19.70)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)))(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@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)))(typescript@5.6.3) ts-node: specifier: ^10.9.1 - version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3) + version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3) tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) typescript: specifier: ^5.0.0 version: 5.6.3 @@ -980,10 +989,10 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 1.2.1 - version: 1.2.1(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 1.2.1(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) packages/client-twitter: dependencies: @@ -1008,13 +1017,13 @@ importers: devDependencies: '@vitest/coverage-v8': specifier: 1.1.3 - version: 1.1.3(vitest@1.1.3(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + version: 1.1.3(vitest@1.1.3(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 1.1.3 - version: 1.1.3(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 1.1.3(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) packages/core: dependencies: @@ -1047,7 +1056,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@19.0.0)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(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@19.0.0)(sswr@2.1.0(svelte@5.18.0))(svelte@5.18.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) @@ -1186,7 +1195,7 @@ importers: version: 2.8.1 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) typescript: specifier: 5.6.3 version: 5.6.3 @@ -1223,7 +1232,7 @@ importers: version: 6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-3d-generation: dependencies: @@ -1232,7 +1241,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1247,7 +1256,7 @@ importers: version: link:../core tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) viem: specifier: 2.21.58 version: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) @@ -1317,7 +1326,7 @@ importers: version: 9.18.0(jiti@2.4.2) tsup: specifier: ^8.0.1 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) typescript: specifier: ^5.3.3 version: 5.6.3 @@ -1344,10 +1353,10 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 2.1.8 - version: 2.1.8(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 2.1.8(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1365,7 +1374,7 @@ importers: version: 1.7.9(debug@4.4.0) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1389,10 +1398,10 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1404,7 +1413,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) viem: specifier: 2.21.58 version: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) @@ -1454,13 +1463,13 @@ importers: version: 10.0.0 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-autonome: dependencies: '@coral-xyz/anchor': specifier: 0.30.1 - version: 0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) + version: 0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@elizaos/core': specifier: workspace:* version: link:../core @@ -1497,7 +1506,7 @@ importers: version: 20.17.9 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-avalanche: dependencies: @@ -1510,7 +1519,7 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-b2: dependencies: @@ -1519,7 +1528,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1541,7 +1550,7 @@ importers: version: 20.17.9 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-birdeye: dependencies: @@ -1580,20 +1589,20 @@ importers: version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.7.3)(utf-8-validate@5.0.10) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) + version: 2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 devDependencies: '@types/node': specifier: ^22.10.2 - version: 22.10.6 + version: 22.10.7 ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.6)(typescript@5.7.3) + version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.7.3) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 @@ -1608,7 +1617,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1639,7 +1648,7 @@ importers: version: 20.17.9 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: ^1.0.0 version: 1.2.1(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) @@ -1654,7 +1663,7 @@ importers: version: 1.7.9(debug@4.4.0) tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-coinmarketcap: dependencies: @@ -1670,7 +1679,7 @@ importers: devDependencies: tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-conflux: dependencies: @@ -1679,13 +1688,13 @@ importers: version: link:../core cive: specifier: 0.7.1 - version: 0.7.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5) + version: 0.7.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10) packages/plugin-cosmos: dependencies: '@chain-registry/utils': specifier: ^1.51.41 - version: 1.51.47 + version: 1.51.50 '@cosmjs/cosmwasm-stargate': specifier: ^0.32.4 version: 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -1703,20 +1712,20 @@ importers: version: 9.1.2 chain-registry: specifier: ^1.69.68 - version: 1.69.91 + version: 1.69.94 interchain: specifier: ^1.10.4 version: 1.10.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) zod: specifier: 3.23.8 version: 3.23.8 devDependencies: '@chain-registry/types': specifier: ^0.50.44 - version: 0.50.47 + version: 0.50.50 packages/plugin-cronoszkevm: dependencies: @@ -1725,7 +1734,7 @@ importers: version: link:../core tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) viem: specifier: 2.21.58 version: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) @@ -1733,26 +1742,14 @@ importers: specifier: 7.1.0 version: 7.1.0 - packages/plugin-depin: - dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - axios: - specifier: ^1.7.9 - version: 1.7.9(debug@4.4.0) - tsup: - specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - packages/plugin-crypto-news: dependencies: '@elizaos/core': specifier: workspace:* version: link:../core + google-sr: + specifier: ^4.1.0 + version: 4.1.0 rss-to-json: specifier: ^2.1.1 version: 2.1.1 @@ -1762,11 +1759,26 @@ importers: version: 20.17.9 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) tsx: specifier: ^4.19.2 version: 4.19.2 + packages/plugin-depin: + dependencies: + '@elizaos/core': + specifier: workspace:* + version: link:../core + axios: + specifier: ^1.7.9 + version: 1.7.9(debug@4.4.0) + tsup: + specifier: 8.3.5 + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + whatwg-url: + specifier: 7.1.0 + version: 7.1.0 + packages/plugin-echochambers: dependencies: '@elizaos/core': @@ -1795,7 +1807,7 @@ importers: version: 16.3.0 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1810,7 +1822,7 @@ importers: version: 1.5.1 '@onflow/fcl': specifier: 1.13.1 - version: 1.13.1(@types/react@19.0.6)(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.5.0)(react@19.0.0)(tsx@4.19.2)(utf-8-validate@6.0.5) + version: 1.13.1(@types/react@19.0.7)(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.5.1)(react@19.0.0)(tsx@4.19.2)(utf-8-validate@6.0.5) '@onflow/typedefs': specifier: 1.4.0 version: 1.4.0 @@ -1847,10 +1859,10 @@ importers: version: 10.0.0 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) packages/plugin-fuel: dependencies: @@ -1862,13 +1874,13 @@ importers: version: 4.0.1 fuels: specifier: 0.97.2 - version: 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + version: 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1880,10 +1892,10 @@ importers: version: link:../core genlayer-js: specifier: 0.4.7 - version: 0.4.7(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) + version: 0.4.7(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-giphy: dependencies: @@ -1895,7 +1907,7 @@ importers: version: 1.7.9(debug@4.4.0) tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) zod: specifier: ^3.22.4 version: 3.23.8 @@ -1907,7 +1919,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-gitcoin-passport: dependencies: @@ -1916,7 +1928,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1928,7 +1940,7 @@ importers: version: link:../core '@goat-sdk/adapter-vercel-ai': specifier: 0.2.0 - version: 0.2.0(@goat-sdk/core@0.4.0)(ai@4.0.34(react@19.0.0)(zod@3.23.8)) + version: 0.2.0(@goat-sdk/core@0.4.0)(ai@4.0.38(react@19.0.0)(zod@3.23.8)) '@goat-sdk/core': specifier: 0.4.0 version: 0.4.0 @@ -1946,7 +1958,7 @@ importers: version: 0.2.0(@goat-sdk/wallet-evm@0.2.0(@goat-sdk/core@0.4.0)(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5))(viem@2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.23.8)) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -1958,7 +1970,7 @@ importers: version: link:../core tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) ws: specifier: ^8.18.0 version: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1987,7 +1999,7 @@ importers: version: 20.17.9 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-icp: dependencies: @@ -2012,10 +2024,10 @@ importers: version: 29.5.14 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@22.10.6)(babel-plugin-macros@3.1.0) + version: 29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) typescript: specifier: 5.6.3 version: 5.6.3 @@ -2027,7 +2039,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2045,7 +2057,7 @@ importers: version: 1.0.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2070,7 +2082,7 @@ importers: version: 20.17.9 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-lensNetwork: dependencies: @@ -2088,7 +2100,7 @@ importers: version: 6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) web3: specifier: ^4.15.0 version: 4.16.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) @@ -2106,7 +2118,23 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + + packages/plugin-market-analisys: + dependencies: + '@elizaos/core': + specifier: workspace:* + version: link:../core + devDependencies: + '@types/node': + specifier: ^20.0.0 + version: 20.17.9 + tsup: + specifier: 8.3.5 + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + tsx: + specifier: ^4.19.2 + version: 4.19.2 packages/plugin-massa: dependencies: @@ -2115,10 +2143,10 @@ importers: version: link:../core '@massalabs/massa-web3': specifier: ^5.0.1-dev - version: 5.1.0 + version: 5.1.1 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2149,13 +2177,13 @@ importers: devDependencies: tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) typescript: specifier: ^5.0.0 version: 5.6.3 vitest: specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) packages/plugin-multiversx: dependencies: @@ -2179,10 +2207,10 @@ importers: version: 2.1.1 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 2.1.5 - version: 2.1.5(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 2.1.5(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2209,7 +2237,7 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2227,7 +2255,7 @@ importers: version: 1.7.9(debug@4.4.0) rate-limiter-flexible: specifier: ^5.0.4 - version: 5.0.4 + version: 5.0.5 devDependencies: '@types/node': specifier: ^20.11.16 @@ -2246,7 +2274,7 @@ importers: version: 3.4.1 tsup: specifier: ^8.0.1 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0) typescript: specifier: ^5.3.3 version: 5.6.3 @@ -2303,7 +2331,7 @@ importers: version: 0.8.28 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) viem: specifier: 2.21.58 version: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) @@ -2315,10 +2343,10 @@ importers: dependencies: '@aws-sdk/client-s3': specifier: ^3.705.0 - version: 3.726.1 + version: 3.729.0 '@aws-sdk/s3-request-presigner': specifier: ^3.705.0 - version: 3.726.1 + version: 3.729.0 '@cliqz/adblocker-playwright': specifier: 1.34.0 version: 1.34.0(playwright@1.48.2) @@ -2484,7 +2512,7 @@ importers: version: 22.8.4 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-obsidian: dependencies: @@ -2499,7 +2527,7 @@ importers: version: 2.0.0 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2515,7 +2543,7 @@ importers: devDependencies: tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-open-weather: dependencies: @@ -2524,7 +2552,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2545,13 +2573,13 @@ importers: version: 0.0.18(bufferutil@4.0.9)(utf-8-validate@6.0.5) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-quai: dependencies: '@avnu/avnu-sdk': specifier: ^2.1.1 - version: 2.1.1(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(qs@6.13.1)(starknet@6.18.0(encoding@0.1.13)) + version: 2.1.1(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(qs@6.14.0)(starknet@6.18.0(encoding@0.1.13)) '@elizaos/core': specifier: workspace:* version: link:../core @@ -2563,10 +2591,10 @@ importers: version: 1.0.0-alpha.25(bufferutil@4.0.9)(utf-8-validate@6.0.5) tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: ^2.1.4 - version: 2.1.8(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 2.1.8(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2611,7 +2639,7 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2633,7 +2661,7 @@ importers: version: 20.17.9 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-solana: dependencies: @@ -2675,10 +2703,10 @@ importers: version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.7.3)(utf-8-validate@5.0.10) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) + version: 2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2729,7 +2757,7 @@ importers: version: 1.4.0(@noble/hashes@1.7.0)(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(arweave@1.15.5)(axios@1.7.9)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(handlebars@4.7.8)(react@19.0.0)(sodium-native@3.4.1)(typescript@5.7.3)(utf-8-validate@5.0.10) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 2.1.4 version: 2.1.4(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) @@ -2744,7 +2772,7 @@ importers: version: link:../core '@spheron/protocol-sdk': specifier: ^1.0.0 - version: 1.2.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) + version: 1.2.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) zod: specifier: ^3.22.4 version: 3.23.8 @@ -2778,7 +2806,7 @@ importers: version: 0.33.5 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2793,7 +2821,7 @@ importers: version: 1.7.9(debug@4.4.0) tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) zod: specifier: ^3.22.4 version: 3.23.8 @@ -2802,7 +2830,7 @@ importers: dependencies: '@avnu/avnu-sdk': specifier: 2.1.1 - version: 2.1.1(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(qs@6.13.1)(starknet@6.18.0(encoding@0.1.13)) + version: 2.1.1(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(qs@6.14.0)(starknet@6.18.0(encoding@0.1.13)) '@elizaos/core': specifier: workspace:* version: link:../core @@ -2820,13 +2848,13 @@ importers: version: 6.18.0(encoding@0.1.13) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) unruggable-sdk: specifier: 1.4.0 version: 1.4.0(starknet@6.18.0(encoding@0.1.13)) vitest: specifier: 2.1.5 - version: 2.1.5(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 2.1.5(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2841,17 +2869,17 @@ importers: version: 2.1.0 '@story-protocol/core-sdk': specifier: 1.2.0-rc.3 - version: 1.2.0-rc.3(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) + version: 1.2.0-rc.3(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 devDependencies: '@types/node': specifier: ^22.10.1 - version: 22.10.6 + version: 22.10.7 packages/plugin-sui: dependencies: @@ -2872,10 +2900,10 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) vitest: specifier: 2.1.4 - version: 2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2908,7 +2936,7 @@ importers: version: 1.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.30.1)(typescript@5.7.3)(utf-8-validate@5.0.10) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2936,7 +2964,7 @@ importers: version: 20.17.9 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) packages/plugin-tee-marlin: dependencies: @@ -2945,7 +2973,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2969,13 +2997,13 @@ importers: version: 3.0.0 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) uuid: specifier: 11.0.3 version: 11.0.3 vitest: specifier: 2.1.5 - version: 2.1.5(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 2.1.5(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -2985,7 +3013,7 @@ importers: version: 3.2.0 ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.6)(typescript@5.7.3) + version: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.7.3) packages/plugin-thirdweb: dependencies: @@ -2994,10 +3022,10 @@ importers: version: link:../core thirdweb: specifier: ^5.80.0 - version: 5.83.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(ioredis@5.4.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + version: 5.84.0(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(ioredis@5.4.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -3021,7 +3049,7 @@ importers: version: 5.1.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -3036,13 +3064,13 @@ importers: version: 3.2.2 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) uuid: specifier: 11.0.3 version: 11.0.3 vitest: specifier: 2.1.5 - version: 2.1.5(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 2.1.5(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -3061,7 +3089,7 @@ importers: version: 0.2.1 tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -3076,11 +3104,11 @@ importers: version: 0.0.18(bufferutil@4.0.9)(utf-8-validate@6.0.5) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) devDependencies: vitest: specifier: ^1.0.0 - version: 1.2.1(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + version: 1.2.1(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) packages/plugin-video-generation: dependencies: @@ -3089,7 +3117,7 @@ importers: version: link:../core tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -3104,7 +3132,7 @@ importers: version: 1.7.9(debug@4.4.0) tsup: specifier: 8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) whatwg-url: specifier: 7.1.0 version: 7.1.0 @@ -3141,7 +3169,7 @@ importers: version: link:../core tsup: specifier: ^8.3.5 - version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + version: 8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) viem: specifier: 2.21.58 version: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) @@ -3235,8 +3263,8 @@ packages: peerDependencies: zod: ^3.0.0 - '@ai-sdk/openai@1.0.18': - resolution: {integrity: sha512-bienqSVHbUqUcskm2FTIf2X+c481e85EASFfa78YogLqctZQtqPFKJuG5E7i59664Y5G91+LkzIh+1agS13BlA==} + '@ai-sdk/openai@1.0.19': + resolution: {integrity: sha512-7qmLgppWpGUhSgrH0a6CtgD9hZeRh2hARppl1B7fNhVbekYftSMucsdCiVlKbQzSKPxox0vkNMmwjKa/7xf8bQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 @@ -3311,8 +3339,8 @@ packages: zod: optional: true - '@ai-sdk/react@1.0.10': - resolution: {integrity: sha512-A3i0Y93xssldeFdcbHPCiK+v9UGisXZUt5ey4I9x2bGktP4eEAXJz4O26EHz5VbolmOd+81kSxm9BCvithzguQ==} + '@ai-sdk/react@1.0.11': + resolution: {integrity: sha512-ndBPA7dx2DqUr7s4zO1cRAPkFGS+wWvSri6OWfCuhfyTAADQ4vdd56vFP9zdTZl4cyL27Vh0hKLfFJMGx83MUQ==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -3350,8 +3378,8 @@ packages: zod: optional: true - '@ai-sdk/ui-utils@1.0.9': - resolution: {integrity: sha512-ULJ+TTCVk+iW5asdKjG33vEfMmalaE9rJOlddVE5t6729Fjow1a1COXRTwE5y1r1qU2Rt+YiXQcTTA5ovx0SMw==} + '@ai-sdk/ui-utils@1.0.10': + resolution: {integrity: sha512-wZfZNH2IloTx5b1O8CU7/R/icm8EsmURElPckYwNYj2YZrKk9X5XeYSDBF/1/J83obzsn0i7VKkIf40qhRzVVA==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 @@ -3555,8 +3583,8 @@ packages: resolution: {integrity: sha512-d6nWtUI//fyEN8DeLjm3+ro87Ad6+IKwR9pCqfrs/Azahso1xR1Llxd/O6fj/m1DDsuDj/HAsCsy5TC/aKD6Eg==} engines: {node: '>=11.0.0'} - '@asamuzakjp/css-color@2.8.2': - resolution: {integrity: sha512-RtWv9jFN2/bLExuZgFFZ0I3pWWeezAHGgrmjqGGWclATl1aDe3yhCUaI0Ilkp6OCk9zX7+FjvDasEX8Q9Rxc5w==} + '@asamuzakjp/css-color@2.8.3': + resolution: {integrity: sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==} '@asterai/client@0.1.6': resolution: {integrity: sha512-Kz2FEg9z3U8G9F8F/87h7szE9i8gHdIM2dCgl2gtqTgiLdgtqaDEk3cGnbL4D67Q9bsciPb/toHFWIUv/QNRJQ==} @@ -3596,8 +3624,8 @@ packages: resolution: {integrity: sha512-Q4ZoSmCXskIQ3T5AdO0OyH3vCeoKCed9AjqNIZ5Bxo7T1aBLaIb0VmjKOEubsYrfl+0Ot++FRmy7G45UUHSs4Q==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-s3@3.726.1': - resolution: {integrity: sha512-UpOGcob87DiuS2d3fW6vDZg94g57mNiOSkzvR/6GOdvBSlUgk8LLwVzGASB71FdKMl1EGEr4MeD5uKH9JsG+dw==} + '@aws-sdk/client-s3@3.729.0': + resolution: {integrity: sha512-hpagpazcfOYtxE4nDlR/6JcaIdZ3T2BUt2Ev11Zyz2B5G8eC1dWJgvFsW7ws35252Nb6HTLkJajtnM3v9KtXGw==} engines: {node: '>=18.0.0'} '@aws-sdk/client-sso-oidc@3.726.0': @@ -3670,8 +3698,8 @@ packages: resolution: {integrity: sha512-w/O0EkIzkiqvGu7U8Ke7tue0V0HYM5dZQrz6nVU+R8T2LddWJ+njEIHU4Wh8aHPLQXdZA5NQumv0xLPdEutykw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.723.0': - resolution: {integrity: sha512-JY76mrUCLa0FHeMZp8X9+KK6uEuZaRZaQrlgq6zkXX/3udukH0T3YdFC+Y9uw5ddbiwZ5+KwgmlhnPpiXKfP4g==} + '@aws-sdk/middleware-flexible-checksums@3.729.0': + resolution: {integrity: sha512-GY92MQ7Pr8hK2rwKmOYSGMmfPQRCWRJ3s1aAIyJBpOHUejWdaNAi78vxeUzVkmGdVjUfF6hRTRAxqV7MnHwe/g==} engines: {node: '>=18.0.0'} '@aws-sdk/middleware-host-header@3.723.0': @@ -3714,8 +3742,8 @@ packages: resolution: {integrity: sha512-tGF/Cvch3uQjZIj34LY2mg8M2Dr4kYG8VU8Yd0dFnB1ybOEOveIK/9ypUo9ycZpB9oO6q01KRe5ijBaxNueUQg==} engines: {node: '>=18.0.0'} - '@aws-sdk/s3-request-presigner@3.726.1': - resolution: {integrity: sha512-IoM/u1gaZiSHEZkkf+Hn6MvCFUtLJgJysApW6NFbM2GYt4hqGLX5jhbjo5KVxC3wFfAhAwK1deSOM0FriBrKrg==} + '@aws-sdk/s3-request-presigner@3.729.0': + resolution: {integrity: sha512-5jfIFi/rygbUzyCY3PjcehXJRxwqqP3SS3klKxxR3p+fbZcKoV5sknn8hhYnfSPteCmOLqELNP+EG/9I+F3a2w==} engines: {node: '>=18.0.0'} '@aws-sdk/signature-v4-multi-region@3.723.0': @@ -4451,11 +4479,11 @@ packages: '@cfworker/json-schema@4.1.0': resolution: {integrity: sha512-/vYKi/qMxwNsuIJ9WGWwM2rflY40ZenK3Kh4uR5vB9/Nz12Y7IUN/Xf4wDA7vzPfw0VNh3b/jz4+MjcVgARKJg==} - '@chain-registry/types@0.50.47': - resolution: {integrity: sha512-WEVKnOwcjXjpCFMgEWMRfKUqhho6Tg6fcHmuKS3i4pWp37IxZBdE+Lan6JRBf5Cc6CqfhuZaHqveIRqgci1zBw==} + '@chain-registry/types@0.50.50': + resolution: {integrity: sha512-H+sGuL8HTr0iFO4PJlBC9MLfrFR+NsD6sFSoFh2+4+obBCVuc3tp5tz/CSfLy04tIySgLlbmqMxkMNkgv1ZpXg==} - '@chain-registry/utils@1.51.47': - resolution: {integrity: sha512-HOEHGwqwc9ESFOKU99PxMeo//bDofBHkyoG9KXsxsE/NPKfb5UifoGR/NznoCLmG0fVo5KnM6UEJamjCUErMnw==} + '@chain-registry/utils@1.51.50': + resolution: {integrity: sha512-IkJKGelpCQko20KVXT4iTslF54iUSmcnJTM2cByvTRPN8q9/oeSVHSyYcAWVI2iiUAwbMZJhNeUQxu+i0+OPow==} '@chevrotain/cst-dts-gen@11.0.3': resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} @@ -5339,6 +5367,9 @@ packages: '@electric-sql/pglite@0.2.15': resolution: {integrity: sha512-Jiq31Dnk+rg8rMhcSxs4lQvHTyizNo5b269c1gCC3ldQ0sCLrNVPGzy+KnmonKy1ZArTUuXZf23/UamzFMKVaA==} + '@elizaos/core@0.1.7': + resolution: {integrity: sha512-oorLGxE0LAdboNFhf62erTxu0+woNHZn98at/X3caDX34Fxr+d1cRQ6/W34WPAOIlv1tg3Q0ZArcpCCOaDTcMw==} + '@emnapi/core@1.3.1': resolution: {integrity: sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==} @@ -6267,8 +6298,14 @@ packages: '@fuels/vm-asm@0.58.2': resolution: {integrity: sha512-1/5azTzKJP508BXbZvM6Y0V5bCCX5JgEnd/8mXdBFmFvNLOhiYbwb25yk26auqOokfBXvthSkdkrvipEFft6jQ==} - '@gerrit0/mini-shiki@1.26.1': - resolution: {integrity: sha512-gHFUvv9f1fU2Piou/5Y7Sx5moYxcERbC7CXc6rkDLQTUBg5Dgg9L4u29/nHqfoQ3Y9R0h0BcOhd14uOEZIBP7Q==} + '@gerrit0/mini-shiki@1.27.2': + resolution: {integrity: sha512-GeWyHz8ao2gBiUW4OJnQDxXQnFgZQwwQk05t/CVVgNBN7/rK8XZ7xY6YhLVv9tH3VppWWmr9DCl3MwemB/i+Og==} + + '@glacier-network/client@0.2.1': + resolution: {integrity: sha512-NjHyMbarWCSe4EogFBxKbaElG8hmHTCS6PXhBKsk7bU0u+hYl86EGIOK/uC0Q2e+0A5XmQKJRAdtecQ91Nz4gg==} + + '@glacier-network/elizaos-adapter@0.0.1-alpha.1': + resolution: {integrity: sha512-LJxIN5xqyAq+vakPCNZM3ekKAqsJhnLfo0Rj2AXQ86jnb31hUUU4HhC8fU47rMRSpGYNwrOBLAtcA5VD7txCMw==} '@goat-sdk/adapter-vercel-ai@0.2.0': resolution: {integrity: sha512-NqUyO38i6ELbWXSDHddfkD1k4QCUcvfs3jVQArlJ9OO9NSlkKvnbZjO1tTjoVoERjRKfKsCqfMPgsgo3akx7tA==} @@ -6714,8 +6751,8 @@ packages: '@langchain/langgraph-sdk@0.0.36': resolution: {integrity: sha512-KkAZM0uXBaMcD/dpGTBppOhbvNX6gz+Y1zFAC898OblegFkSvICrkd0oRQ5Ro/GWK/NAoDymnMUDXeZDdUkSuw==} - '@langchain/langgraph@0.2.39': - resolution: {integrity: sha512-zoQT5LViPlB5hRS7RNwixcAonUBAHcW+IzVkGR/4vcKoE49z5rPBdZsWjJ6b1YIV1K2bdSDJWl5KSEHilvnR1Q==} + '@langchain/langgraph@0.2.40': + resolution: {integrity: sha512-/6VSEXkHb1jAzT3VMpTpH3YCKO2A0Y3nAi4LyRB6REimWrZwk0LsurhB1NHj2hXRmntExhaNe/XxJPAHJ+g1pg==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.36 <0.3.0 || >=0.3.9 < 0.4.0' @@ -6891,8 +6928,8 @@ packages: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true - '@massalabs/massa-web3@5.1.0': - resolution: {integrity: sha512-fKlOjKD+F0JoUxLUUfweugt9MrM6P1F4WT80TdhgZ1yIKqguN0bNYsXzF9Wf6xVzljP/D+u1kwSDAQpZ/PZ8yg==} + '@massalabs/massa-web3@5.1.1': + resolution: {integrity: sha512-vjoEjyoe15PN4+d8gk/UEMT59FxefitwK75ScTqQHboYRoWjGysYz80dSYbP1vQdxxeag4ZzW0OaWvaOneQqww==} '@mdx-js/mdx@3.1.0': resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} @@ -8947,23 +8984,23 @@ packages: '@selderee/plugin-htmlparser2@0.11.0': resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - '@shikijs/core@1.26.2': - resolution: {integrity: sha512-ORyu3MrY7dCC7FDLDsFSkBM9b/AT9/Y8rH+UQ07Rtek48pp0ZhQOMPTKolqszP4bBCas6FqTZQYt18BBamVl/g==} + '@shikijs/core@1.27.2': + resolution: {integrity: sha512-ns1dokDr0KE1lQ9mWd4rqaBkhSApk0qGCK1+lOqwnkQSkVZ08UGqXj1Ef8dAcTMZNFkN6PSNjkL5TYNX7pyPbQ==} - '@shikijs/engine-javascript@1.26.2': - resolution: {integrity: sha512-ngkIu9swLVo9Zt5QBtz5Sk08vmPcwuj01r7pPK/Zjmo2U2WyKMK4WMUMmkdQiUacdcLth0zt8u1onp4zhkFXKQ==} + '@shikijs/engine-javascript@1.27.2': + resolution: {integrity: sha512-0JB7U5vJc16NShBdxv9hSSJYSKX79+32O7F4oXIxJLdYfomyFvx4B982ackUI9ftO9T3WwagkiiD3nOxOOLiGA==} - '@shikijs/engine-oniguruma@1.26.2': - resolution: {integrity: sha512-mlN7Qrs+w60nKrd7at7XkXSwz6728Pe34taDmHrG6LRHjzCqQ+ysg+/AT6/D2LMk0s2lsr71DjpI73430QP4/w==} + '@shikijs/engine-oniguruma@1.27.2': + resolution: {integrity: sha512-FZYKD1KN7srvpkz4lbGLOYWlyDU4Rd+2RtuKfABTkafAPOFr+J6umfIwY/TzOQqfNtWjL7SAwPAO0dcOraRLaQ==} - '@shikijs/langs@1.26.2': - resolution: {integrity: sha512-o5cdPycB2Kw3IgncHxWopWPiTkjAj7dG01fLkkUyj3glb5ftxL/Opecq9F54opMlrgXy7ZIqDERvFLlUzsCOuA==} + '@shikijs/langs@1.27.2': + resolution: {integrity: sha512-MSrknKL0DbeXvhtSigMLIzjPOOQfvK7fsbcRv2NUUB0EvuTTomY8/U+lAkczYrXY2+dygKOapJKk8ScFYbtoNw==} - '@shikijs/themes@1.26.2': - resolution: {integrity: sha512-y4Pn6PM5mODz/e3yF6jAUG7WLKJzqL2tJ5qMJCUkMUB1VRgtQVvoa1cHh7NScryGXyrYGJ8nPnRDhdv2rw0xpA==} + '@shikijs/themes@1.27.2': + resolution: {integrity: sha512-Yw/uV7EijjWavIIZLoWneTAohcbBqEKj6XMX1bfMqO3llqTKsyXukPp1evf8qPqzUHY7ibauqEaQchhfi857mg==} - '@shikijs/types@1.26.2': - resolution: {integrity: sha512-PO2jucx2FIdlLBPYbIUlMtWSLs5ulcRcuV93cR3T65lkK5SJP4MGBRt9kmWGXiQc0f7+FHj/0BEawditZcI/fQ==} + '@shikijs/types@1.27.2': + resolution: {integrity: sha512-DM9OWUyjmdYdnKDpaGB/GEn9XkToyK1tqxuqbmc5PV+5K8WjjwfygL3+cIvbkSw2v1ySwHDgqATq/+98pJ4Kyg==} '@shikijs/vscode-textmate@10.0.1': resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} @@ -9074,8 +9111,8 @@ packages: resolution: {integrity: sha512-Igfg8lKu3dRVkTSEm98QpZUvKEOa71jDX4vKRcvJVyRc3UgN3j7vFMf0s7xLQhYmKa8kyJGQgUJDOV5V3neVlQ==} engines: {node: '>=18.0.0'} - '@smithy/core@3.1.0': - resolution: {integrity: sha512-swFv0wQiK7TGHeuAp6lfF5Kw1dHWsTrCuc+yh4Kh05gEShjsE2RUxHucEerR9ih9JITNtaHcSpUThn5Y/vDw0A==} + '@smithy/core@3.1.1': + resolution: {integrity: sha512-hhUZlBWYuh9t6ycAcN90XOyG76C1AzwxZZgaCVPMYpWqqk9uMFo7HGG5Zu2cEhCJn7DdOi5krBmlibWWWPgdsw==} engines: {node: '>=18.0.0'} '@smithy/credential-provider-imds@4.0.1': @@ -9138,12 +9175,12 @@ packages: resolution: {integrity: sha512-OGXo7w5EkB5pPiac7KNzVtfCW2vKBTZNuCctn++TTSOMpe6RZO/n6WEC1AxJINn3+vWLKW49uad3lo/u0WJ9oQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.0.1': - resolution: {integrity: sha512-hCCOPu9+sRI7Wj0rZKKnGylKXBEd9cQJetzjQqe8cT4PWvtQAbvNVa6cgAONiZg9m8LaXtP9/waxm3C3eO4hiw==} + '@smithy/middleware-endpoint@4.0.2': + resolution: {integrity: sha512-Z9m67CXizGpj8CF/AW/7uHqYNh1VXXOn9Ap54fenWsCa0HnT4cJuE61zqG3cBkTZJDCy0wHJphilI41co/PE5g==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.0.1': - resolution: {integrity: sha512-n3g2zZFgOWaz2ZYCy8+4wxSmq+HSTD8QKkRhFDv+nkxY1o7gzyp4PDz/+tOdcNPMPZ/A6Mt4aVECYNjQNiaHJw==} + '@smithy/middleware-retry@4.0.3': + resolution: {integrity: sha512-TiKwwQTwUDeDtwWW8UWURTqu7s6F3wN2pmziLU215u7bqpVT9Mk2oEvURjpRLA+5XeQhM68R5BpAGzVtomsqgA==} engines: {node: '>=18.0.0'} '@smithy/middleware-serde@4.0.1': @@ -9158,8 +9195,8 @@ packages: resolution: {integrity: sha512-8mRTjvCtVET8+rxvmzRNRR0hH2JjV0DFOmwXPrISmTIJEfnCBugpYYGAsCj8t41qd+RB5gbheSQ/6aKZCQvFLQ==} engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.0.1': - resolution: {integrity: sha512-ddQc7tvXiVLC5c3QKraGWde761KSk+mboCheZoWtuqnXh5l0WKyFy3NfDIM/dsKrI9HlLVH/21pi9wWK2gUFFA==} + '@smithy/node-http-handler@4.0.2': + resolution: {integrity: sha512-X66H9aah9hisLLSnGuzRYba6vckuFtGE+a5DcHLliI/YlqKrGoxhisD5XbX44KyoeRzoNlGr94eTsMVHFAzPOw==} engines: {node: '>=18.0.0'} '@smithy/property-provider@4.0.1': @@ -9190,8 +9227,8 @@ packages: resolution: {integrity: sha512-nCe6fQ+ppm1bQuw5iKoeJ0MJfz2os7Ic3GBjOkLOPtavbD1ONoyE3ygjBfz2ythFWm4YnRm6OxW+8p/m9uCoIA==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.1.0': - resolution: {integrity: sha512-NiboZnrsrZY+Cy5hQNbYi+nVNssXVi2I+yL4CIKNIanOhH8kpC5PKQ2jx/MQpwVr21a3XcVoQBArlpRF36OeEQ==} + '@smithy/smithy-client@4.1.2': + resolution: {integrity: sha512-0yApeHWBqocelHGK22UivZyShNxFbDNrgREBllGh5Ws0D0rg/yId/CJfeoKKpjbfY2ju8j6WgDUGZHYQmINZ5w==} engines: {node: '>=18.0.0'} '@smithy/types@4.1.0': @@ -9226,12 +9263,12 @@ packages: resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.0.1': - resolution: {integrity: sha512-nkQifWzWUHw/D0aLPgyKut+QnJ5X+5E8wBvGfvrYLLZ86xPfVO6MoqfQo/9s4bF3Xscefua1M6KLZtobHMWrBg==} + '@smithy/util-defaults-mode-browser@4.0.3': + resolution: {integrity: sha512-7c5SF1fVK0EOs+2EOf72/qF199zwJflU1d02AevwKbAUPUZyE9RUZiyJxeUmhVxfKDWdUKaaVojNiaDQgnHL9g==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.0.1': - resolution: {integrity: sha512-LeAx2faB83litC9vaOdwFaldtto2gczUHxfFf8yoRwDU3cwL4/pDm7i0hxsuBCRk5mzHsrVGw+3EVCj32UZMdw==} + '@smithy/util-defaults-mode-node@4.0.3': + resolution: {integrity: sha512-CVnD42qYD3JKgDlImZ9+On+MqJHzq9uJgPbMdeBE8c2x8VJ2kf2R3XO/yVFx+30ts5lD/GlL0eFIShY3x9ROgQ==} engines: {node: '>=18.0.0'} '@smithy/util-endpoints@3.0.1': @@ -9250,8 +9287,8 @@ packages: resolution: {integrity: sha512-WmRHqNVwn3kI3rKk1LsKcVgPBG6iLTBGC1iYOV3GQegwJ3E8yjzHytPt26VNzOWr1qu0xE03nK0Ug8S7T7oufw==} engines: {node: '>=18.0.0'} - '@smithy/util-stream@4.0.1': - resolution: {integrity: sha512-Js16gOgU6Qht6qTPfuJgb+1YD4AEO+5Y1UPGWKSp3BNo8ONl/qhXSYDhFKJtwybRJynlCqvP5IeiaBsUmkSPTQ==} + '@smithy/util-stream@4.0.2': + resolution: {integrity: sha512-0eZ4G5fRzIoewtHtwaYyl8g2C+osYOT4KClXgfdNEDAgkbe2TYPqcnw4GAWabqkZCax2ihRGPe9LZnsPdIUIHA==} engines: {node: '>=18.0.0'} '@smithy/util-uri-escape@4.0.0': @@ -9450,8 +9487,8 @@ packages: peerDependencies: '@solana/web3.js': ^1.77.3 - '@solana/wallet-standard-features@1.2.0': - resolution: {integrity: sha512-tUd9srDLkRpe1BYg7we+c4UhRQkq+XQWswsr/L1xfGmoRDF47BPSXf4zE7ZU2GRBGvxtGt7lwJVAufQyQYhxTQ==} + '@solana/wallet-standard-features@1.3.0': + resolution: {integrity: sha512-ZhpZtD+4VArf6RPitsVExvgkF+nGghd1rzPjd97GmBximpnt1rsUxMOEyoIEuH3XBxPyNB6Us7ha7RHWQR+abg==} engines: {node: '>=16'} '@solana/web3.js@1.95.3': @@ -10017,8 +10054,8 @@ packages: '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} - '@types/express-serve-static-core@5.0.4': - resolution: {integrity: sha512-5kz9ScmzBdzTgB/3susoCgfqNDzBjvLL4taparufgSvlwjdLy6UyUy9T/tCpYd2GIdIilCatC4iSQS0QSYHt0w==} + '@types/express-serve-static-core@5.0.5': + resolution: {integrity: sha512-GLZPrd9ckqEBFMcVM/qRFAP0Hg3qiVEojgEFsx/N/zKXsBzbGF6z5FBDpZ0+Xhp1xr+qRZYjfGr1cWHB9oFHSA==} '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} @@ -10165,14 +10202,14 @@ packages: '@types/node@18.15.13': resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} - '@types/node@18.19.70': - resolution: {integrity: sha512-RE+K0+KZoEpDUbGGctnGdkrLFwi1eYKTlIHNl2Um98mUkGsm1u2Ff6Ltd0e8DktTtC98uy7rSj+hO8t/QuLoVQ==} + '@types/node@18.19.71': + resolution: {integrity: sha512-evXpcgtZm8FY4jqBSN8+DmOTcVkkvTmAayeo4Wf3m1xAruyVGzGuDh/Fb/WWX2yLItUiho42ozyJjB0dw//Tkw==} '@types/node@20.17.9': resolution: {integrity: sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==} - '@types/node@22.10.6': - resolution: {integrity: sha512-qNiuwC4ZDAUNcY47xgaSuS92cjf8JbSUoaKS77bmLG1rU7MlATVSiw/IlrjtIyyskXBZ8KkNfjK/P5na7rgXbQ==} + '@types/node@22.10.7': + resolution: {integrity: sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==} '@types/node@22.7.5': resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} @@ -10205,8 +10242,8 @@ packages: '@types/promise-retry@1.1.6': resolution: {integrity: sha512-EC1+OMXV0PZb0pf+cmyxc43MEP2CDumZe4AfuxWboxxEixztIebknpJPZAX5XlodGF1OY+C1E/RAeNGzxf+bJA==} - '@types/qs@6.9.17': - resolution: {integrity: sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==} + '@types/qs@6.9.18': + resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} @@ -10225,8 +10262,8 @@ packages: '@types/react-router@5.1.20': resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} - '@types/react@19.0.6': - resolution: {integrity: sha512-gIlMztcTeDgXCUj0vCBOqEuSEhX//63fW9SZtCJ+agxoQTOklwDfiEMlTWn4mR/C/UK5VHlpwsCsOyf7/hc4lw==} + '@types/react@19.0.7': + resolution: {integrity: sha512-MoFsEJKkAtZCrC1r6CM8U22GzhG7u2Wir8ons/aCKH6MBdD1ibV24zOSSkdZVUKqN5i396zG5VKLYZ3yaUZdLA==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -11024,8 +11061,8 @@ packages: zod: optional: true - ai@4.0.34: - resolution: {integrity: sha512-GkbepmrAtyTnTTUZKoB7ghqfywWal2n/EKR3cs72eM86E0Wejz7ZaVGY/QF9LjwTJ0qhrFELlFGffnCBKqhQLg==} + ai@4.0.38: + resolution: {integrity: sha512-Lqo39GY8YlfUHgQdYb8qzaz+vfAu/8c8eIDck7NNKrdmwOAr8f4SuDgPVbISn1/4F9gR6WEXnD2f552ZEVT31Q==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -11068,8 +11105,8 @@ packages: resolution: {integrity: sha512-F1tGh056XczEaEAqu7s+hlZUDWwOBT70Eq0lfMpBP2YguSQVyxRbprLq5rELXKQOyOaixTWYhMeMQMzP0U5FoQ==} engines: {node: '>= 10'} - algoliasearch-helper@3.22.6: - resolution: {integrity: sha512-F2gSb43QHyvZmvH/2hxIjbk/uFdO2MguQYTFP7J+RowMW1csjIODMobEnpLI8nbLQuzZnGZdIxl5Bpy1k9+CFQ==} + algoliasearch-helper@3.23.0: + resolution: {integrity: sha512-8CK4Gb/ju4OesAYcS+mjBpNiVA7ILWpg7D2vhBZohh0YkG8QT1KZ9LG+8+EntQBUGoKtPy06OFhiwP4f5zzAQg==} peerDependencies: algoliasearch: '>= 3.1 < 6' @@ -11517,27 +11554,30 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-buffer@3.0.1: - resolution: {integrity: sha512-QuDV/Wv5k1xsevh24zQwEjlQJuRvt3tUC39VFai6PoJiDIwmISEoc76ZTae4yVcacRBw0HBArrHssV1o3TEKhQ==} - engines: {bare: '>=1.13.0'} - bare-events@2.5.4: resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} - bare-fs@2.3.5: - resolution: {integrity: sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==} + bare-fs@4.0.1: + resolution: {integrity: sha512-ilQs4fm/l9eMfWY2dY0WCIUplSUp7U0CT1vrqMg1MUdeZl4fypu5UP0XcDBK5WBQPJAKP1b7XEodISmekH/CEg==} + engines: {bare: '>=1.7.0'} - bare-os@2.4.4: - resolution: {integrity: sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==} + bare-os@3.4.0: + resolution: {integrity: sha512-9Ous7UlnKbe3fMi7Y+qh0DwAup6A1JkYgPnjvMDNOlmnxNRQvQ/7Nst+OnUQKzk0iAT0m9BisbDVp9gCv8+ETA==} + engines: {bare: '>=1.6.0'} - bare-path@2.1.3: - resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} + bare-path@3.0.0: + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} - bare-stream@2.6.2: - resolution: {integrity: sha512-gSFtIiA/b0Llho+9zEy9MNgqrKpq70T62V4oGN8BSJgZt7Rk3RORPCK1kLj9hxS+YtrvSOOVGUrhraouXZkv3A==} + bare-stream@2.6.4: + resolution: {integrity: sha512-G6i3A74FjNq4nVrrSTUz5h3vgXzBJnjmWAVlBWaZETkgu+LgKd7AiyOml3EDJY1AHlIbBHKDXE+TUT53Ff8OaA==} peerDependencies: bare-buffer: '*' bare-events: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + bare-events: + optional: true base-x@2.0.6: resolution: {integrity: sha512-UAmjxz9KbK+YIi66xej+pZVo/vxUOh49ubEvZW5egCbxhur05pBb+hwuireQwKO4nDpsNm64/jEei17LEpsr5g==} @@ -12008,8 +12048,8 @@ packages: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} - chain-registry@1.69.91: - resolution: {integrity: sha512-4PtqckiTLOhV1o2559zfEZ0hLx46Jc3ZFOs/zizX1rkivLt4uMX/cvRmwwSZjfzVmBofkE1hIErIpHxd+QOpsw==} + chain-registry@1.69.94: + resolution: {integrity: sha512-8WpEM0BRtvhe6MBek0Jx41xaNH8E3I76yqebr0q5RohIs+Rmjt+aCzmi9T8AOceyJw7cOzIBhJjD1pi2agfd1w==} chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} @@ -13504,8 +13544,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.80: - resolution: {integrity: sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==} + electron-to-chromium@1.5.83: + resolution: {integrity: sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==} elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -13626,8 +13666,8 @@ packages: es-module-lexer@1.6.0: resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} es-set-tostringtag@2.1.0: @@ -13885,8 +13925,8 @@ packages: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} - esrap@1.4.2: - resolution: {integrity: sha512-FhVlJzvTw7ZLxYZ7RyHwQCFE64dkkpzGNNnphaGCLwjqGk1SQcqzbgdx9FowPCktx6NOSHkzvcZ3vsvdH54YXA==} + esrap@1.4.3: + resolution: {integrity: sha512-Xddc1RsoFJ4z9nR7W7BFaEPIp4UXoeQ0+077UdWLxbafMQFyU79sQJMk7kxNgRwQ9/aVgaKacCHC2pUACGwmYw==} esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} @@ -14284,8 +14324,8 @@ packages: resolution: {integrity: sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==} engines: {node: '>=18'} - flash-sdk@2.25.3: - resolution: {integrity: sha512-0yKh40xgjNKjG/iOnnQqdEiXjLTUdaRVzLTDigcHvyDG5Kc9P5VCqqRdjxZ7XNdEFyZPvlspVD9p7ixS97hOUA==} + flash-sdk@2.25.6: + resolution: {integrity: sha512-dMQHdhLjO0V5CHEEUEGD+AMEFTzxwiydGyHn6aj1Y4yzkRq2xMlRdbmZSfkM5DGFWQ6IYjR4CeZdWolypVAThw==} flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} @@ -14736,6 +14776,12 @@ packages: google-protobuf@3.21.4: resolution: {integrity: sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==} + google-sr-selectors@1.1.0: + resolution: {integrity: sha512-9LTKyc1nSQPQSi1uYvUd1XdFsHlKaSxPfxbl0bi25VZjbzDKvS5HCvo8DInk7EbSEt6tHeJEDrf3cOzXQGaW8g==} + + google-sr@4.1.0: + resolution: {integrity: sha512-8QaGOFEWx2l5hZ9AFR1Oa9L1pKUWzW8Y/6XXA+o6GP2B1gawZNyR1E2SgzMP6iPMp8CBRgVWeBQBTTKk3u9TDA==} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -17375,8 +17421,8 @@ packages: resolution: {integrity: sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ==} engines: {node: '>= 10.13'} - node-abi@3.71.0: - resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} + node-abi@3.73.0: + resolution: {integrity: sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==} engines: {node: '>=10'} node-addon-api@2.0.2: @@ -17712,8 +17758,8 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} - oniguruma-to-es@1.0.0: - resolution: {integrity: sha512-kihvp0O4lFwf5tZMkfanwQLIZ9ORe9OeOFgZonH0BQeThgwfJiaZFeOfvvJVnJIM9TiVmx0RDD35hUJDR0++rQ==} + oniguruma-to-es@2.0.0: + resolution: {integrity: sha512-pE7+9jQgomy10aK6BJKRNHj1Nth0YLOzb3iRuhlz4gRzNSBSd7hga6U8BE6o0SoSuSkqv+PPtt511Msd1Hkl0w==} only-allow@1.2.1: resolution: {integrity: sha512-M7CJbmv7UCopc0neRKdzfoGWaVZC+xC1925GitKH9EAqYFzX9//25Q7oX4+jw0tiCCj+t5l6VZh8UPH23NZkMA==} @@ -18240,8 +18286,8 @@ packages: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} - pkg-types@1.3.0: - resolution: {integrity: sha512-kS7yWjVFCkIw9hqdJBoMxDdzEngmkr5FXeWZZfQ6GoYacjVnsW6l2CcYW/0ThD0vF4LPJgVYnrg4d0uuhwYQbg==} + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} pkg-up@3.1.0: resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} @@ -18949,8 +18995,8 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss@8.5.0: - resolution: {integrity: sha512-27VKOqrYfPncKA2NrFOVhP5MGAfHKLYn/Q0mz9cNQyRAKYi3VNHwYU2qKKqPCqgBmeeJ0uAFB56NumXZ5ZReXg==} + postcss@8.5.1: + resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} engines: {node: ^10 || ^12 || >=14} postgres-array@2.0.0: @@ -19266,8 +19312,8 @@ packages: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} - qs@6.13.1: - resolution: {integrity: sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==} + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} qs@6.5.3: @@ -19329,8 +19375,8 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - rate-limiter-flexible@5.0.4: - resolution: {integrity: sha512-ftYHrIfSqWYDIJZ4yPTrgOduByAp+86gUS9iklv0JoXVM8eQCAjTnydCj1hAT4MmhmkSw86NaFEJ28m/LC1pKA==} + rate-limiter-flexible@5.0.5: + resolution: {integrity: sha512-+/dSQfo+3FYwYygUs/V2BBdwGa9nFtakDwKt4l0bnvNB53TNT++QSFewwHX9qXrZJuMe9j+TUaU21lm5ARgqdQ==} raw-body@2.5.2: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} @@ -19889,6 +19935,9 @@ packages: rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + rss-to-json@2.1.1: + resolution: {integrity: sha512-xXf93iDpOadPWMtAUA/bT1iyifscdbIdtAQBGRbXLfnDQ5Z4tWpmbrAhV3p54nWxwm4joGIDeUrj6CLGm8BI3A==} + rtl-detect@1.1.2: resolution: {integrity: sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==} @@ -20160,8 +20209,8 @@ packages: engines: {node: '>=4'} hasBin: true - shiki@1.26.2: - resolution: {integrity: sha512-iP7u2NA9A6JwRRCkIUREEX2cMhlYV5EBmbbSlfSRvPThwca8HBRbVkWuNWW+kw9+i6BSUZqqG6YeUs5dC2SjZw==} + shiki@1.27.2: + resolution: {integrity: sha512-QtA1C41oEVixKog+V8I3ia7jjGls7oCZ8Yul8vdHrVBga5uPoyTtMvFF4lMMXIyAZo5A5QbXq91bot2vA6Q+eQ==} shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} @@ -20373,8 +20422,8 @@ packages: spdx-expression-parse@4.0.0: resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} - spdx-license-ids@3.0.20: - resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} @@ -20721,8 +20770,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte@5.17.3: - resolution: {integrity: sha512-eLgtpR2JiTgeuNQRCDcLx35Z7Lu9Qe09GPOz+gvtR9nmIZu5xgFd6oFiLGQlxLD0/u7xVyF5AUkjDVyFHe6Bvw==} + svelte@5.18.0: + resolution: {integrity: sha512-/Eb81lB8bVUxQPmkPVNBYrU9cZ544+9hE91ZUUXTMf7eWcGW84N1hS3gvv/XsUNOWLLg3IicXP2qa8W3KpTUHA==} engines: {node: '>=18'} svg-parser@2.0.4: @@ -20792,8 +20841,8 @@ packages: tar-fs@2.1.2: resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} - tar-fs@3.0.7: - resolution: {integrity: sha512-2sAfoF/zw/2n8goUGnGRZTWTD4INtnScPZvyYBI6BDlJ3wNR5o1dw03EfBvuhG6GBLvC4J+C7j7W+64aZ0ogQA==} + tar-fs@3.0.8: + resolution: {integrity: sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==} tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} @@ -20881,8 +20930,8 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - thirdweb@5.83.1: - resolution: {integrity: sha512-WuDPlVx7musSh6gMKaF44OM+wdqCb1K9DKt6srxv686pAuHwmJpArGFjjjEUdJ0kh9ralKUNMibWugvLyhzqJQ==} + thirdweb@5.84.0: + resolution: {integrity: sha512-mYvonenym2g6puAd4YMFD4NI/n8oWYIfkwvnOWdNR/ZwmBybRre3BLzhWVx2fId1RL9fDv5GQyDfR/1ORLgODA==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -21031,14 +21080,14 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} - tldts-core@6.1.71: - resolution: {integrity: sha512-LRbChn2YRpic1KxY+ldL1pGXN/oVvKfCVufwfVzEQdFYNo39uF7AJa/WXdo+gYO7PTvdfkCPCed6Hkvz/kR7jg==} + tldts-core@6.1.72: + resolution: {integrity: sha512-FW3H9aCaGTJ8l8RVCR3EX8GxsxDbQXuwetwwgXA2chYdsX+NY1ytCBl61narjjehWmCw92tc1AxlcY3668CU8g==} - tldts-experimental@6.1.71: - resolution: {integrity: sha512-78lfP/3fRJ3HoCT5JSLOLj5ElHiWCAyglYNzjkFqBO7ykLZYst2u2jM1igSHWV0J2GFfOplApeDsfTF+XACrlA==} + tldts-experimental@6.1.72: + resolution: {integrity: sha512-mfPL+Pzn3nJ0JeI9AHuO4l0NbxldZhpWUYokb8HdK8gbZ2k0/qEqs5E/FqcOjVr4vzTZpbRtiwMPXv77VwXpyQ==} - tldts@6.1.71: - resolution: {integrity: sha512-LQIHmHnuzfZgZWAf2HzL83TIIrD8NhhI0DVxqo9/FdOd4ilec+NTNZOlDZf7EwrTNoutccbsHjvWHYXLAtvxjw==} + tldts@6.1.72: + resolution: {integrity: sha512-QNtgIqSUb9o2CoUjX9T5TwaIvUUJFU1+12PJkgt42DFV2yf9J6549yTF2uGloQsJ/JOC8X+gIB81ind97hRiIQ==} hasBin: true tmp-promise@3.0.3: @@ -21120,8 +21169,8 @@ packages: resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} engines: {node: '>=18'} - traverse@0.6.10: - resolution: {integrity: sha512-hN4uFRxbK+PX56DxYiGHsTn2dME3TVr9vbNqlQGcGcPhJAn+tdP126iA+TArMpI4YSgnTkMWyoLl5bf81Hi5TA==} + traverse@0.6.11: + resolution: {integrity: sha512-vxXDZg8/+p3gblxB6BhhG5yWVn1kGRlaL8O78UDXc3wRnPizB5g83dcvWV1jpDMIPnjZjOFuxlMmE82XJ4407w==} engines: {node: '>= 0.4'} tree-kill@1.2.2: @@ -21557,8 +21606,8 @@ packages: resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==} engines: {node: '>=18.17'} - undici@7.2.1: - resolution: {integrity: sha512-U2k0XHLJfaciARRxDcqTk2AZQsGXerHzdvfCZcy1hNhSf5KCAF4jIQQxL+apQviOekhRFPqED6Of5/+LcUSLzQ==} + undici@7.2.2: + resolution: {integrity: sha512-j/M0BQelSQHcq2Fhc1fUMszXtLx+RsZR5IkXx07knZMICLTzRzsW0tbTI9e9N40RftPUkFP8j4qOjKJa5aTCzw==} engines: {node: '>=20.18.1'} unenv@1.10.0: @@ -22852,6 +22901,18 @@ packages: snapshots: + '@0glabs/0g-ts-sdk@0.2.1(bufferutil@4.0.9)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) + open-jsonrpc-provider: 0.2.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + '@0glabs/0g-ts-sdk@0.2.1(bufferutil@4.0.9)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(utf-8-validate@6.0.5)': dependencies: '@ethersproject/bytes': 5.7.0 @@ -22948,7 +23009,7 @@ snapshots: '@acuminous/bitsyntax@0.1.2': dependencies: buffer-more-ints: 1.0.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 safe-buffer: 5.1.2 transitivePeerDependencies: - supports-color @@ -22990,7 +23051,7 @@ snapshots: '@ai-sdk/provider-utils': 2.0.7(zod@3.23.8) zod: 3.23.8 - '@ai-sdk/openai@1.0.18(zod@3.24.1)': + '@ai-sdk/openai@1.0.19(zod@3.24.1)': dependencies: '@ai-sdk/provider': 1.0.4 '@ai-sdk/provider-utils': 2.0.7(zod@3.24.1) @@ -23020,15 +23081,6 @@ snapshots: optionalDependencies: zod: 3.23.8 - '@ai-sdk/provider-utils@1.0.22(zod@3.24.1)': - dependencies: - '@ai-sdk/provider': 0.0.26 - eventsource-parser: 1.1.2 - nanoid: 3.3.8 - secure-json-parse: 2.7.0 - optionalDependencies: - zod: 3.24.1 - '@ai-sdk/provider-utils@2.0.2(zod@3.23.8)': dependencies: '@ai-sdk/provider': 1.0.1 @@ -23082,20 +23134,20 @@ snapshots: react: 19.0.0 zod: 3.23.8 - '@ai-sdk/react@1.0.10(react@19.0.0)(zod@3.23.8)': + '@ai-sdk/react@1.0.11(react@19.0.0)(zod@3.23.8)': dependencies: '@ai-sdk/provider-utils': 2.0.7(zod@3.23.8) - '@ai-sdk/ui-utils': 1.0.9(zod@3.23.8) + '@ai-sdk/ui-utils': 1.0.10(zod@3.23.8) swr: 2.3.0(react@19.0.0) throttleit: 2.1.0 optionalDependencies: react: 19.0.0 zod: 3.23.8 - '@ai-sdk/react@1.0.10(react@19.0.0)(zod@3.24.1)': + '@ai-sdk/react@1.0.11(react@19.0.0)(zod@3.24.1)': dependencies: '@ai-sdk/provider-utils': 2.0.7(zod@3.24.1) - '@ai-sdk/ui-utils': 1.0.9(zod@3.24.1) + '@ai-sdk/ui-utils': 1.0.10(zod@3.24.1) swr: 2.3.0(react@19.0.0) throttleit: 2.1.0 optionalDependencies: @@ -23109,13 +23161,13 @@ snapshots: transitivePeerDependencies: - zod - '@ai-sdk/svelte@0.0.57(svelte@5.17.3)(zod@3.23.8)': + '@ai-sdk/svelte@0.0.57(svelte@5.18.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.17.3) + sswr: 2.1.0(svelte@5.18.0) optionalDependencies: - svelte: 5.17.3 + svelte: 5.18.0 transitivePeerDependencies: - zod @@ -23129,7 +23181,7 @@ snapshots: optionalDependencies: zod: 3.23.8 - '@ai-sdk/ui-utils@1.0.9(zod@3.23.8)': + '@ai-sdk/ui-utils@1.0.10(zod@3.23.8)': dependencies: '@ai-sdk/provider': 1.0.4 '@ai-sdk/provider-utils': 2.0.7(zod@3.23.8) @@ -23137,7 +23189,7 @@ snapshots: optionalDependencies: zod: 3.23.8 - '@ai-sdk/ui-utils@1.0.9(zod@3.24.1)': + '@ai-sdk/ui-utils@1.0.10(zod@3.24.1)': dependencies: '@ai-sdk/provider': 1.0.4 '@ai-sdk/provider-utils': 2.0.7(zod@3.24.1) @@ -23376,7 +23428,7 @@ snapshots: '@alloralabs/allora-sdk@0.0.4': dependencies: - '@types/node': 22.10.6 + '@types/node': 22.10.7 typescript: 5.7.3 '@ampproject/remapping@2.3.0': @@ -23393,7 +23445,7 @@ snapshots: '@anthropic-ai/sdk@0.30.1(encoding@0.1.13)': dependencies: - '@types/node': 18.19.70 + '@types/node': 18.19.71 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -23459,13 +23511,13 @@ snapshots: transitivePeerDependencies: - debug - '@asamuzakjp/css-color@2.8.2': + '@asamuzakjp/css-color@2.8.3': dependencies: '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - lru-cache: 11.0.2 + lru-cache: 10.4.3 '@asterai/client@0.1.6': dependencies: @@ -23474,10 +23526,10 @@ snapshots: protobufjs: 7.4.0 typescript: 5.6.3 - '@avnu/avnu-sdk@2.1.1(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(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.9)(utf-8-validate@6.0.5))(qs@6.14.0)(starknet@6.18.0(encoding@0.1.13))': dependencies: ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) - qs: 6.13.1 + qs: 6.14.0 starknet: 6.18.0(encoding@0.1.13) '@aws-crypto/crc32@5.2.0': @@ -23545,36 +23597,36 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.723.0 '@aws-sdk/util-user-agent-node': 3.726.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.0 + '@smithy/core': 3.1.1 '@smithy/fetch-http-handler': 5.0.1 '@smithy/hash-node': 4.0.1 '@smithy/invalid-dependency': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.1 - '@smithy/middleware-retry': 4.0.1 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-retry': 4.0.3 '@smithy/middleware-serde': 4.0.1 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 - '@smithy/node-http-handler': 4.0.1 + '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.0 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.1 - '@smithy/util-defaults-mode-node': 4.0.1 + '@smithy/util-defaults-mode-browser': 4.0.3 + '@smithy/util-defaults-mode-node': 4.0.3 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 - '@smithy/util-stream': 4.0.1 + '@smithy/util-stream': 4.0.2 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-s3@3.726.1': + '@aws-sdk/client-s3@3.729.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 @@ -23585,7 +23637,7 @@ snapshots: '@aws-sdk/credential-provider-node': 3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1) '@aws-sdk/middleware-bucket-endpoint': 3.726.0 '@aws-sdk/middleware-expect-continue': 3.723.0 - '@aws-sdk/middleware-flexible-checksums': 3.723.0 + '@aws-sdk/middleware-flexible-checksums': 3.729.0 '@aws-sdk/middleware-host-header': 3.723.0 '@aws-sdk/middleware-location-constraint': 3.723.0 '@aws-sdk/middleware-logger': 3.723.0 @@ -23601,7 +23653,7 @@ snapshots: '@aws-sdk/util-user-agent-node': 3.726.0 '@aws-sdk/xml-builder': 3.723.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.0 + '@smithy/core': 3.1.1 '@smithy/eventstream-serde-browser': 4.0.1 '@smithy/eventstream-serde-config-resolver': 4.0.1 '@smithy/eventstream-serde-node': 4.0.1 @@ -23612,25 +23664,25 @@ snapshots: '@smithy/invalid-dependency': 4.0.1 '@smithy/md5-js': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.1 - '@smithy/middleware-retry': 4.0.1 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-retry': 4.0.3 '@smithy/middleware-serde': 4.0.1 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 - '@smithy/node-http-handler': 4.0.1 + '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.0 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.1 - '@smithy/util-defaults-mode-node': 4.0.1 + '@smithy/util-defaults-mode-browser': 4.0.3 + '@smithy/util-defaults-mode-node': 4.0.3 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 - '@smithy/util-stream': 4.0.1 + '@smithy/util-stream': 4.0.2 '@smithy/util-utf8': 4.0.0 '@smithy/util-waiter': 4.0.2 tslib: 2.8.1 @@ -23654,26 +23706,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.723.0 '@aws-sdk/util-user-agent-node': 3.726.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.0 + '@smithy/core': 3.1.1 '@smithy/fetch-http-handler': 5.0.1 '@smithy/hash-node': 4.0.1 '@smithy/invalid-dependency': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.1 - '@smithy/middleware-retry': 4.0.1 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-retry': 4.0.3 '@smithy/middleware-serde': 4.0.1 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 - '@smithy/node-http-handler': 4.0.1 + '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.0 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.1 - '@smithy/util-defaults-mode-node': 4.0.1 + '@smithy/util-defaults-mode-browser': 4.0.3 + '@smithy/util-defaults-mode-node': 4.0.3 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -23697,26 +23749,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.723.0 '@aws-sdk/util-user-agent-node': 3.726.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.0 + '@smithy/core': 3.1.1 '@smithy/fetch-http-handler': 5.0.1 '@smithy/hash-node': 4.0.1 '@smithy/invalid-dependency': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.1 - '@smithy/middleware-retry': 4.0.1 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-retry': 4.0.3 '@smithy/middleware-serde': 4.0.1 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 - '@smithy/node-http-handler': 4.0.1 + '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.0 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.1 - '@smithy/util-defaults-mode-node': 4.0.1 + '@smithy/util-defaults-mode-browser': 4.0.3 + '@smithy/util-defaults-mode-node': 4.0.3 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -23742,26 +23794,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.723.0 '@aws-sdk/util-user-agent-node': 3.726.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.0 + '@smithy/core': 3.1.1 '@smithy/fetch-http-handler': 5.0.1 '@smithy/hash-node': 4.0.1 '@smithy/invalid-dependency': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.1 - '@smithy/middleware-retry': 4.0.1 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-retry': 4.0.3 '@smithy/middleware-serde': 4.0.1 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 - '@smithy/node-http-handler': 4.0.1 + '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.0 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.1 - '@smithy/util-defaults-mode-node': 4.0.1 + '@smithy/util-defaults-mode-browser': 4.0.3 + '@smithy/util-defaults-mode-node': 4.0.3 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -23792,7 +23844,7 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.723.0 '@aws-sdk/util-user-agent-node': 3.726.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.0 + '@smithy/core': 3.1.1 '@smithy/eventstream-serde-browser': 4.0.1 '@smithy/eventstream-serde-config-resolver': 4.0.1 '@smithy/eventstream-serde-node': 4.0.1 @@ -23800,21 +23852,21 @@ snapshots: '@smithy/hash-node': 4.0.1 '@smithy/invalid-dependency': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.1 - '@smithy/middleware-retry': 4.0.1 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-retry': 4.0.3 '@smithy/middleware-serde': 4.0.1 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 - '@smithy/node-http-handler': 4.0.1 + '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.0 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.1 - '@smithy/util-defaults-mode-node': 4.0.1 + '@smithy/util-defaults-mode-browser': 4.0.3 + '@smithy/util-defaults-mode-node': 4.0.3 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -23826,12 +23878,12 @@ snapshots: '@aws-sdk/core@3.723.0': dependencies: '@aws-sdk/types': 3.723.0 - '@smithy/core': 3.1.0 + '@smithy/core': 3.1.1 '@smithy/node-config-provider': 4.0.1 '@smithy/property-provider': 4.0.1 '@smithy/protocol-http': 5.0.1 '@smithy/signature-v4': 5.0.1 - '@smithy/smithy-client': 4.1.0 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 '@smithy/util-middleware': 4.0.1 fast-xml-parser: 4.4.1 @@ -23850,12 +23902,12 @@ snapshots: '@aws-sdk/core': 3.723.0 '@aws-sdk/types': 3.723.0 '@smithy/fetch-http-handler': 5.0.1 - '@smithy/node-http-handler': 4.0.1 + '@smithy/node-http-handler': 4.0.2 '@smithy/property-provider': 4.0.1 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.0 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 - '@smithy/util-stream': 4.0.1 + '@smithy/util-stream': 4.0.2 tslib: 2.8.1 '@aws-sdk/credential-provider-ini@3.726.0(@aws-sdk/client-sso-oidc@3.726.0(@aws-sdk/client-sts@3.726.1))(@aws-sdk/client-sts@3.726.1)': @@ -23959,7 +24011,7 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.723.0': + '@aws-sdk/middleware-flexible-checksums@3.729.0': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 @@ -23971,7 +24023,7 @@ snapshots: '@smithy/protocol-http': 5.0.1 '@smithy/types': 4.1.0 '@smithy/util-middleware': 4.0.1 - '@smithy/util-stream': 4.0.1 + '@smithy/util-stream': 4.0.2 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 @@ -24006,15 +24058,15 @@ snapshots: '@aws-sdk/core': 3.723.0 '@aws-sdk/types': 3.723.0 '@aws-sdk/util-arn-parser': 3.723.0 - '@smithy/core': 3.1.0 + '@smithy/core': 3.1.1 '@smithy/node-config-provider': 4.0.1 '@smithy/protocol-http': 5.0.1 '@smithy/signature-v4': 5.0.1 - '@smithy/smithy-client': 4.1.0 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 '@smithy/util-config-provider': 4.0.0 '@smithy/util-middleware': 4.0.1 - '@smithy/util-stream': 4.0.1 + '@smithy/util-stream': 4.0.2 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 @@ -24040,7 +24092,7 @@ snapshots: '@aws-sdk/core': 3.723.0 '@aws-sdk/types': 3.723.0 '@aws-sdk/util-endpoints': 3.726.0 - '@smithy/core': 3.1.0 + '@smithy/core': 3.1.1 '@smithy/protocol-http': 5.0.1 '@smithy/types': 4.1.0 tslib: 2.8.1 @@ -24067,14 +24119,14 @@ snapshots: '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@aws-sdk/s3-request-presigner@3.726.1': + '@aws-sdk/s3-request-presigner@3.729.0': dependencies: '@aws-sdk/signature-v4-multi-region': 3.723.0 '@aws-sdk/types': 3.723.0 '@aws-sdk/util-format-url': 3.723.0 - '@smithy/middleware-endpoint': 4.0.1 + '@smithy/middleware-endpoint': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.0 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 tslib: 2.8.1 @@ -24201,7 +24253,7 @@ snapshots: '@babel/traverse': 7.26.5 '@babel/types': 7.26.5 convert-source-map: 2.0.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -24981,7 +25033,7 @@ snapshots: '@babel/parser': 7.26.5 '@babel/template': 7.25.9 '@babel/types': 7.26.5 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -25046,11 +25098,11 @@ snapshots: '@cfworker/json-schema@4.1.0': {} - '@chain-registry/types@0.50.47': {} + '@chain-registry/types@0.50.50': {} - '@chain-registry/utils@1.51.47': + '@chain-registry/utils@1.51.50': dependencies: - '@chain-registry/types': 0.50.47 + '@chain-registry/types': 0.50.50 bignumber.js: 9.1.2 sha.js: 2.4.11 @@ -25110,7 +25162,7 @@ snapshots: '@cliqz/adblocker': 1.34.0 '@cliqz/adblocker-content': 1.34.0 playwright: 1.48.2 - tldts-experimental: 6.1.71 + tldts-experimental: 6.1.72 '@cliqz/adblocker@1.34.0': dependencies: @@ -25121,7 +25173,7 @@ snapshots: '@remusao/smaz': 1.10.0 '@types/chrome': 0.0.278 '@types/firefox-webext-browser': 120.0.4 - tldts-experimental: 6.1.71 + tldts-experimental: 6.1.72 '@coinbase-samples/advanced-sdk-ts@file:packages/plugin-coinbase/advanced-sdk-ts(encoding@0.1.13)': dependencies: @@ -25130,21 +25182,21 @@ snapshots: transitivePeerDependencies: - encoding - '@coinbase/coinbase-sdk@0.10.0(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@6.0.5)(zod@3.24.1)': + '@coinbase/coinbase-sdk@0.10.0(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)': dependencies: '@scure/bip32': 1.6.1 - abitype: 1.0.8(typescript@5.6.3)(zod@3.24.1) - axios: 1.7.9(debug@4.4.0) + abitype: 1.0.8(typescript@5.6.3)(zod@3.23.8) + axios: 1.7.9 axios-mock-adapter: 1.22.0(axios@1.7.9) axios-retry: 4.5.0(axios@1.7.9) bip32: 4.0.0 bip39: 3.1.0 decimal.js: 10.4.3 dotenv: 16.4.7 - ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) + ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) node-jose: 2.2.0 secp256k1: 5.0.1 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@6.0.5)(zod@3.24.1) + viem: 2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) transitivePeerDependencies: - bufferutil - debug @@ -25154,7 +25206,7 @@ snapshots: '@coinbase/wallet-sdk@4.2.4': dependencies: - '@noble/hashes': 1.7.0 + '@noble/hashes': 1.6.1 clsx: 1.2.1 eventemitter3: 5.0.1 preact: 10.25.4 @@ -25162,11 +25214,11 @@ snapshots: '@colors/colors@1.5.0': optional: true - '@commitlint/cli@18.6.1(@types/node@22.10.6)(typescript@5.6.3)': + '@commitlint/cli@18.6.1(@types/node@20.17.9)(typescript@5.6.3)': dependencies: '@commitlint/format': 18.6.1 '@commitlint/lint': 18.6.1 - '@commitlint/load': 18.6.1(@types/node@22.10.6)(typescript@5.6.3) + '@commitlint/load': 18.6.1(@types/node@20.17.9)(typescript@5.6.3) '@commitlint/read': 18.6.1 '@commitlint/types': 18.6.1 execa: 5.1.1 @@ -25216,7 +25268,7 @@ snapshots: '@commitlint/rules': 18.6.1 '@commitlint/types': 18.6.1 - '@commitlint/load@18.6.1(@types/node@22.10.6)(typescript@5.6.3)': + '@commitlint/load@18.6.1(@types/node@20.17.9)(typescript@5.6.3)': dependencies: '@commitlint/config-validator': 18.6.1 '@commitlint/execute-rule': 18.6.1 @@ -25224,7 +25276,7 @@ snapshots: '@commitlint/types': 18.6.1 chalk: 4.1.2 cosmiconfig: 8.3.6(typescript@5.6.3) - cosmiconfig-typescript-loader: 5.1.0(@types/node@22.10.6)(cosmiconfig@8.3.6(typescript@5.6.3))(typescript@5.6.3) + cosmiconfig-typescript-loader: 5.1.0(@types/node@20.17.9)(cosmiconfig@8.3.6(typescript@5.6.3))(typescript@5.6.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -25369,28 +25421,6 @@ snapshots: - encoding - utf-8-validate - '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5)': - dependencies: - '@coral-xyz/anchor-errors': 0.30.1 - '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5)) - '@noble/hashes': 1.7.0 - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - bn.js: 5.2.1 - bs58: 4.0.1 - buffer-layout: 1.2.2 - camelcase: 6.3.0 - cross-fetch: 3.2.0(encoding@0.1.13) - crypto-hash: 1.3.0 - eventemitter3: 4.0.7 - pako: 2.1.0 - snake-case: 3.0.4 - superstruct: 0.15.5 - toml: 3.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - '@coral-xyz/borsh@0.26.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': dependencies: '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -25421,12 +25451,6 @@ snapshots: bn.js: 5.2.1 buffer-layout: 1.2.2 - '@coral-xyz/borsh@0.30.1(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5))': - dependencies: - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - bn.js: 5.2.1 - buffer-layout: 1.2.2 - '@cosmjs/amino@0.27.1': dependencies: '@cosmjs/crypto': 0.27.1 @@ -25791,215 +25815,215 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-cascade-layers@5.0.1(postcss@8.5.0)': + '@csstools/postcss-cascade-layers@5.0.1(postcss@8.5.1)': dependencies: '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 7.0.0 - '@csstools/postcss-color-function@4.0.7(postcss@8.5.0)': + '@csstools/postcss-color-function@4.0.7(postcss@8.5.1)': dependencies: '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.0) - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 - '@csstools/postcss-color-mix-function@3.0.7(postcss@8.5.0)': + '@csstools/postcss-color-mix-function@3.0.7(postcss@8.5.1)': dependencies: '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.0) - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 - '@csstools/postcss-content-alt-text@2.0.4(postcss@8.5.0)': + '@csstools/postcss-content-alt-text@2.0.4(postcss@8.5.1)': dependencies: '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.0) - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 - '@csstools/postcss-exponential-functions@2.0.6(postcss@8.5.0)': + '@csstools/postcss-exponential-functions@2.0.6(postcss@8.5.1)': dependencies: '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.0 + postcss: 8.5.1 - '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.0)': + '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.1)': dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - '@csstools/postcss-gamut-mapping@2.0.7(postcss@8.5.0)': + '@csstools/postcss-gamut-mapping@2.0.7(postcss@8.5.1)': dependencies: '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.0 + postcss: 8.5.1 - '@csstools/postcss-gradients-interpolation-method@5.0.7(postcss@8.5.0)': + '@csstools/postcss-gradients-interpolation-method@5.0.7(postcss@8.5.1)': dependencies: '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.0) - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 - '@csstools/postcss-hwb-function@4.0.7(postcss@8.5.0)': + '@csstools/postcss-hwb-function@4.0.7(postcss@8.5.1)': dependencies: '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.0) - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 - '@csstools/postcss-ic-unit@4.0.0(postcss@8.5.0)': + '@csstools/postcss-ic-unit@4.0.0(postcss@8.5.1)': dependencies: - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.0) - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - '@csstools/postcss-initial@2.0.0(postcss@8.5.0)': + '@csstools/postcss-initial@2.0.0(postcss@8.5.1)': dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - '@csstools/postcss-is-pseudo-class@5.0.1(postcss@8.5.0)': + '@csstools/postcss-is-pseudo-class@5.0.1(postcss@8.5.1)': dependencies: '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 7.0.0 - '@csstools/postcss-light-dark-function@2.0.7(postcss@8.5.0)': + '@csstools/postcss-light-dark-function@2.0.7(postcss@8.5.1)': dependencies: '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.0) - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 - '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.0)': + '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.1)': dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - '@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.0)': + '@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.1)': dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.0)': + '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.1)': dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - '@csstools/postcss-logical-resize@3.0.0(postcss@8.5.0)': + '@csstools/postcss-logical-resize@3.0.0(postcss@8.5.1)': dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - '@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.5.0)': + '@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.5.1)': dependencies: '@csstools/css-tokenizer': 3.0.3 - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 - '@csstools/postcss-media-minmax@2.0.6(postcss@8.5.0)': + '@csstools/postcss-media-minmax@2.0.6(postcss@8.5.1)': dependencies: '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.5.0 + postcss: 8.5.1 - '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.5.0)': + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.5.1)': dependencies: '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.5.0 + postcss: 8.5.1 - '@csstools/postcss-nested-calc@4.0.0(postcss@8.5.0)': + '@csstools/postcss-nested-calc@4.0.0(postcss@8.5.1)': dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.0)': + '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.1)': dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - '@csstools/postcss-oklab-function@4.0.7(postcss@8.5.0)': + '@csstools/postcss-oklab-function@4.0.7(postcss@8.5.1)': dependencies: '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.0) - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 - '@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.5.0)': + '@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.5.1)': dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - '@csstools/postcss-random-function@1.0.2(postcss@8.5.0)': + '@csstools/postcss-random-function@1.0.2(postcss@8.5.1)': dependencies: '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.0 + postcss: 8.5.1 - '@csstools/postcss-relative-color-syntax@3.0.7(postcss@8.5.0)': + '@csstools/postcss-relative-color-syntax@3.0.7(postcss@8.5.1)': dependencies: '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.0) - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 - '@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.0)': + '@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.1)': dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 7.0.0 - '@csstools/postcss-sign-functions@1.1.1(postcss@8.5.0)': + '@csstools/postcss-sign-functions@1.1.1(postcss@8.5.1)': dependencies: '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.0 + postcss: 8.5.1 - '@csstools/postcss-stepped-value-functions@4.0.6(postcss@8.5.0)': + '@csstools/postcss-stepped-value-functions@4.0.6(postcss@8.5.1)': dependencies: '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.0 + postcss: 8.5.1 - '@csstools/postcss-text-decoration-shorthand@4.0.1(postcss@8.5.0)': + '@csstools/postcss-text-decoration-shorthand@4.0.1(postcss@8.5.1)': dependencies: '@csstools/color-helpers': 5.0.1 - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - '@csstools/postcss-trigonometric-functions@4.0.6(postcss@8.5.0)': + '@csstools/postcss-trigonometric-functions@4.0.6(postcss@8.5.1)': dependencies: '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.0 + postcss: 8.5.1 - '@csstools/postcss-unset-value@4.0.0(postcss@8.5.0)': + '@csstools/postcss-unset-value@4.0.0(postcss@8.5.1)': dependencies: - postcss: 8.5.0 + postcss: 8.5.1 '@csstools/selector-resolve-nested@3.0.0(postcss-selector-parser@7.0.0)': dependencies: @@ -26009,22 +26033,22 @@ snapshots: dependencies: postcss-selector-parser: 7.0.0 - '@csstools/utilities@2.0.0(postcss@8.5.0)': + '@csstools/utilities@2.0.0(postcss@8.5.1)': dependencies: - postcss: 8.5.0 + postcss: 8.5.1 '@deepgram/captions@1.2.0': dependencies: dayjs: 1.11.13 - '@deepgram/sdk@3.9.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5)': + '@deepgram/sdk@3.9.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@deepgram/captions': 1.2.0 - '@types/node': 18.19.70 + '@types/node': 18.19.71 cross-fetch: 3.2.0(encoding@0.1.13) deepmerge: 4.3.1 events: 3.3.0 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - encoding @@ -26158,14 +26182,14 @@ snapshots: '@docsearch/css@3.8.2': {} - '@docsearch/react@3.8.2(@algolia/client-search@5.19.0)(@types/react@19.0.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)': + '@docsearch/react@3.8.2(@algolia/client-search@5.19.0)(@types/react@19.0.7)(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.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3) '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) '@docsearch/css': 3.8.2 algoliasearch: 5.19.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) search-insights: 2.17.3 @@ -26213,14 +26237,14 @@ snapshots: copy-webpack-plugin: 11.0.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) css-loader: 6.11.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - cssnano: 6.1.2(postcss@8.5.0) + cssnano: 6.1.2(postcss@8.5.1) file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) html-minifier-terser: 7.2.0 mini-css-extract-plugin: 2.9.2(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) null-loader: 4.0.1(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - postcss: 8.5.0 - postcss-loader: 7.3.4(postcss@8.5.0)(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - postcss-preset-env: 10.1.3(postcss@8.5.0) + postcss: 8.5.1 + postcss-loader: 7.3.4(postcss@8.5.1)(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) + postcss-preset-env: 10.1.3(postcss@8.5.1) react-dev-utils: 12.0.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) terser-webpack-plugin: 5.3.11(@swc/core@1.10.7(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) tslib: 2.8.1 @@ -26245,7 +26269,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@docusaurus/babel': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/bundler': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) @@ -26254,7 +26278,7 @@ snapshots: '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@mdx-js/react': 3.0.1(@types/react@19.0.6)(react@18.3.1) + '@mdx-js/react': 3.0.1(@types/react@19.0.7)(react@18.3.1) boxen: 6.2.1 chalk: 4.1.2 chokidar: 3.6.0 @@ -26315,9 +26339,9 @@ snapshots: '@docusaurus/cssnano-preset@3.6.3': dependencies: - cssnano-preset-advanced: 6.1.2(postcss@8.5.0) - postcss: 8.5.0 - postcss-sort-media-queries: 5.2.0(postcss@8.5.0) + cssnano-preset-advanced: 6.1.2(postcss@8.5.1) + postcss: 8.5.1 + postcss-sort-media-queries: 5.2.0(postcss@8.5.1) tslib: 2.8.1 '@docusaurus/logger@3.6.3': @@ -26325,12 +26349,12 @@ snapshots: chalk: 4.1.2 tslib: 2.8.1 - '@docusaurus/lqip-loader@3.6.3(bare-buffer@3.0.1)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)))': + '@docusaurus/lqip-loader@3.6.3(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)))': dependencies: '@docusaurus/logger': 3.6.3 file-loader: 6.2.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) lodash: 4.17.21 - sharp: 0.32.6(bare-buffer@3.0.1) + sharp: 0.32.6 tslib: 2.8.1 transitivePeerDependencies: - bare-buffer @@ -26377,7 +26401,7 @@ snapshots: dependencies: '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 - '@types/react': 19.0.6 + '@types/react': 19.0.7 '@types/react-router-config': 5.0.11 '@types/react-router-dom': 5.3.3 react: 18.3.1 @@ -26392,13 +26416,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/logger': 3.6.3 '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) + '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -26436,13 +26460,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/logger': 3.6.3 '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) + '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -26478,9 +26502,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-pages@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-content-pages@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) @@ -26511,9 +26535,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-debug@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-debug@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) fs-extra: 11.2.0 @@ -26542,9 +26566,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-analytics@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-google-analytics@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) react: 18.3.1 @@ -26571,9 +26595,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-gtag@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-google-gtag@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@types/gtag.js': 0.0.12 @@ -26601,9 +26625,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-google-tag-manager@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) react: 18.3.1 @@ -26630,11 +26654,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-ideal-image@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bare-buffer@3.0.1)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-ideal-image@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/lqip-loader': 3.6.3(bare-buffer@3.0.1)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) - '@docusaurus/responsive-loader': 1.7.0(sharp@0.32.6(bare-buffer@3.0.1)) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/lqip-loader': 3.6.3(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))) + '@docusaurus/responsive-loader': 1.7.0(sharp@0.32.6) '@docusaurus/theme-translations': 3.6.3 '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) @@ -26642,7 +26666,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-waypoint: 10.3.0(react@18.3.1) - sharp: 0.32.6(bare-buffer@3.0.1) + sharp: 0.32.6 tslib: 2.8.1 webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) transitivePeerDependencies: @@ -26668,9 +26692,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-sitemap@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@docusaurus/plugin-sitemap@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/logger': 3.6.3 '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) @@ -26702,20 +26726,20 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/preset-classic@3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.6)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-pages': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-debug': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-google-analytics': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-google-gtag': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-google-tag-manager': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-sitemap': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/theme-classic': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.6)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@docusaurus/theme-search-algolia': 3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.6)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/preset-classic@3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.7)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.3)(utf-8-validate@5.0.10)': + dependencies: + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-content-pages': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-debug': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-google-analytics': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-google-gtag': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-google-tag-manager': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-sitemap': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/theme-classic': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.7)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) + '@docusaurus/theme-search-algolia': 3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.7)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@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) @@ -26745,37 +26769,37 @@ snapshots: '@docusaurus/react-loadable@6.0.0(react@18.3.1)': dependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 react: 18.3.1 - '@docusaurus/responsive-loader@1.7.0(sharp@0.32.6(bare-buffer@3.0.1))': + '@docusaurus/responsive-loader@1.7.0(sharp@0.32.6)': dependencies: loader-utils: 2.0.4 optionalDependencies: - sharp: 0.32.6(bare-buffer@3.0.1) + sharp: 0.32.6 - '@docusaurus/theme-classic@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.6)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@docusaurus/theme-classic@3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.7)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/logger': 3.6.3 '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-blog': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@docusaurus/plugin-content-pages': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) + '@docusaurus/plugin-content-blog': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-content-pages': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/theme-translations': 3.6.3 '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) - '@mdx-js/react': 3.0.1(@types/react@19.0.6)(react@18.3.1) + '@mdx-js/react': 3.0.1(@types/react@19.0.7)(react@18.3.1) clsx: 2.1.1 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.45 lodash: 4.17.21 nprogress: 0.2.0 - postcss: 8.5.0 + postcss: 8.5.1 prism-react-renderer: 2.3.1(react@18.3.1) prismjs: 1.29.0 react: 18.3.1 @@ -26805,15 +26829,15 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-common@3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)': + '@docusaurus/theme-common@3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)': dependencies: '@docusaurus/mdx-loader': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/utils-common': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 - '@types/react': 19.0.6 + '@types/react': 19.0.7 '@types/react-router-config': 5.0.11 clsx: 2.1.1 parse-numeric-range: 1.3.0 @@ -26831,11 +26855,11 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-mermaid@3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@docusaurus/theme-mermaid@3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) '@docusaurus/module-type-aliases': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) + '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/types': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) mermaid: 11.4.1 @@ -26864,18 +26888,18 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-search-algolia@3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.6)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@docusaurus/theme-search-algolia@3.6.3(@algolia/client-search@5.19.0)(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/react@19.0.7)(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.19.0)(@types/react@19.0.6)(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@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docsearch/react': 3.8.2(@algolia/client-search@5.19.0)(@types/react@19.0.7)(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@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) + '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.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@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/theme-translations': 3.6.3 '@docusaurus/utils': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) '@docusaurus/utils-validation': 3.6.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3) algoliasearch: 4.24.0 - algoliasearch-helper: 3.22.6(algoliasearch@4.24.0) + algoliasearch-helper: 3.23.0(algoliasearch@4.24.0) clsx: 2.1.1 eta: 2.2.0 fs-extra: 11.2.0 @@ -26917,7 +26941,7 @@ snapshots: dependencies: '@mdx-js/mdx': 3.1.0(acorn@8.14.0) '@types/history': 4.7.11 - '@types/react': 19.0.6 + '@types/react': 19.0.7 commander: 5.1.0 joi: 17.13.3 react: 18.3.1 @@ -27036,6 +27060,56 @@ snapshots: '@electric-sql/pglite@0.2.15': {} + '@elizaos/core@0.1.7(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(@langchain/groq@0.1.3(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13))(axios@1.7.9)(encoding@0.1.13)(react@19.0.0)(sswr@2.1.0(svelte@5.18.0))(svelte@5.18.0)(vue@3.5.13(typescript@5.6.3))': + dependencies: + '@ai-sdk/anthropic': 0.0.56(zod@3.23.8) + '@ai-sdk/google': 0.0.55(zod@3.23.8) + '@ai-sdk/google-vertex': 0.0.43(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(zod@3.23.8) + '@ai-sdk/groq': 0.0.3(zod@3.23.8) + '@ai-sdk/openai': 1.0.5(zod@3.23.8) + '@anthropic-ai/sdk': 0.30.1(encoding@0.1.13) + '@fal-ai/client': 1.2.0 + '@types/uuid': 10.0.0 + ai: 3.4.33(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))(react@19.0.0)(sswr@2.1.0(svelte@5.18.0))(svelte@5.18.0)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8) + anthropic-vertex-ai: 1.0.2(encoding@0.1.13)(zod@3.23.8) + fastembed: 1.14.1 + fastestsmallesttextencoderdecoder: 1.0.22 + gaxios: 6.7.1(encoding@0.1.13) + glob: 11.0.0 + handlebars: 4.7.8 + js-sha1: 0.7.0 + js-tiktoken: 1.0.15 + langchain: 0.3.6(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(@langchain/groq@0.1.3(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13))(axios@1.7.9)(encoding@0.1.13)(handlebars@4.7.8)(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) + ollama-ai-provider: 0.16.1(zod@3.23.8) + openai: 4.73.0(encoding@0.1.13)(zod@3.23.8) + tinyld: 1.3.4 + together-ai: 0.7.0(encoding@0.1.13) + unique-names-generator: 4.7.1 + uuid: 11.0.3 + zod: 3.23.8 + transitivePeerDependencies: + - '@google-cloud/vertexai' + - '@langchain/anthropic' + - '@langchain/aws' + - '@langchain/cohere' + - '@langchain/core' + - '@langchain/google-genai' + - '@langchain/google-vertexai' + - '@langchain/groq' + - '@langchain/mistralai' + - '@langchain/ollama' + - axios + - cheerio + - encoding + - peggy + - react + - solid-js + - sswr + - supports-color + - svelte + - typeorm + - vue + '@emnapi/core@1.3.1': dependencies: '@emnapi/wasi-threads': 1.0.1 @@ -27081,7 +27155,7 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0)': + '@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.13.5 @@ -27093,7 +27167,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 transitivePeerDependencies: - supports-color @@ -27107,18 +27181,18 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0)': + '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.3.1 - '@emotion/react': 11.14.0(@types/react@19.0.6)(react@19.0.0) + '@emotion/react': 11.14.0(@types/react@19.0.7)(react@19.0.0) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.0.0) '@emotion/utils': 1.4.2 react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 transitivePeerDependencies: - supports-color @@ -27443,7 +27517,7 @@ snapshots: '@eslint/config-array@0.19.1': dependencies: '@eslint/object-schema': 2.1.5 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -27473,7 +27547,7 @@ snapshots: '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 @@ -27846,23 +27920,23 @@ snapshots: '@floating-ui/utils@0.2.9': {} - '@fuel-ts/abi-coder@0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': + '@fuel-ts/abi-coder@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': dependencies: - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) type-fest: 4.32.0 transitivePeerDependencies: - vitest - '@fuel-ts/abi-typegen@0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': + '@fuel-ts/abi-typegen@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': dependencies: '@fuel-ts/errors': 0.97.2 '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/versions': 0.97.2 commander: 12.1.0 glob: 10.4.5 @@ -27873,18 +27947,18 @@ snapshots: transitivePeerDependencies: - vitest - '@fuel-ts/account@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': + '@fuel-ts/account@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/merkle': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/merkle': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/versions': 0.97.2 '@fuels/vm-asm': 0.58.2 '@noble/curves': 1.8.0 @@ -27897,30 +27971,30 @@ snapshots: - encoding - vitest - '@fuel-ts/address@0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': + '@fuel-ts/address@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': dependencies: - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@noble/hashes': 1.7.0 bech32: 2.0.0 transitivePeerDependencies: - vitest - '@fuel-ts/contract@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': + '@fuel-ts/contract@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/merkle': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/merkle': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/versions': 0.97.2 '@fuels/vm-asm': 0.58.2 ramda: 0.30.1 @@ -27928,12 +28002,12 @@ snapshots: - encoding - vitest - '@fuel-ts/crypto@0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': + '@fuel-ts/crypto@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': dependencies: '@fuel-ts/errors': 0.97.2 '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@noble/hashes': 1.7.0 transitivePeerDependencies: - vitest @@ -27942,11 +28016,11 @@ snapshots: dependencies: '@fuel-ts/versions': 0.97.2 - '@fuel-ts/hasher@0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': + '@fuel-ts/hasher@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': dependencies: - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@noble/hashes': 1.7.0 transitivePeerDependencies: - vitest @@ -27959,78 +28033,78 @@ snapshots: '@types/bn.js': 5.1.6 bn.js: 5.2.1 - '@fuel-ts/merkle@0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': + '@fuel-ts/merkle@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': dependencies: - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/math': 0.97.2 transitivePeerDependencies: - vitest - '@fuel-ts/program@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': + '@fuel-ts/program@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuels/vm-asm': 0.58.2 ramda: 0.30.1 transitivePeerDependencies: - encoding - vitest - '@fuel-ts/recipes@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': + '@fuel-ts/recipes@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/abi-typegen': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/contract': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/abi-typegen': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/contract': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/interfaces': 0.97.2 - '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) transitivePeerDependencies: - encoding - vitest - '@fuel-ts/script@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': + '@fuel-ts/script@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) transitivePeerDependencies: - encoding - vitest - '@fuel-ts/transactions@0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': + '@fuel-ts/transactions@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) transitivePeerDependencies: - vitest - '@fuel-ts/utils@0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': + '@fuel-ts/utils@0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': dependencies: '@fuel-ts/errors': 0.97.2 '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 '@fuel-ts/versions': 0.97.2 fflate: 0.8.2 - vitest: 2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + vitest: 2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) '@fuel-ts/versions@0.97.2': dependencies: @@ -28039,16 +28113,67 @@ snapshots: '@fuels/vm-asm@0.58.2': {} - '@gerrit0/mini-shiki@1.26.1': + '@gerrit0/mini-shiki@1.27.2': dependencies: - '@shikijs/engine-oniguruma': 1.26.2 - '@shikijs/types': 1.26.2 + '@shikijs/engine-oniguruma': 1.27.2 + '@shikijs/types': 1.27.2 '@shikijs/vscode-textmate': 10.0.1 - '@goat-sdk/adapter-vercel-ai@0.2.0(@goat-sdk/core@0.4.0)(ai@4.0.34(react@19.0.0)(zod@3.23.8))': + '@glacier-network/client@0.2.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@types/json-schema': 7.0.15 + axios: 1.7.9 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + '@glacier-network/elizaos-adapter@0.0.1-alpha.1(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(@langchain/groq@0.1.3(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13))(axios@1.7.9)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.0.0)(sswr@2.1.0(svelte@5.18.0))(svelte@5.18.0)(utf-8-validate@5.0.10)(vue@3.5.13(typescript@5.6.3))': + dependencies: + '@elizaos/core': 0.1.7(@google-cloud/vertexai@1.9.2(encoding@0.1.13))(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(@langchain/groq@0.1.3(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13))(axios@1.7.9)(encoding@0.1.13)(react@19.0.0)(sswr@2.1.0(svelte@5.18.0))(svelte@5.18.0)(vue@3.5.13(typescript@5.6.3)) + '@glacier-network/client': 0.2.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@tavily/core': 0.0.2 + dotenv: 16.4.7 + sharp: 0.33.5 + typescript: 5.7.3 + transitivePeerDependencies: + - '@google-cloud/vertexai' + - '@langchain/anthropic' + - '@langchain/aws' + - '@langchain/cohere' + - '@langchain/core' + - '@langchain/google-genai' + - '@langchain/google-vertexai' + - '@langchain/groq' + - '@langchain/mistralai' + - '@langchain/ollama' + - axios + - bufferutil + - cheerio + - debug + - encoding + - peggy + - react + - solid-js + - sswr + - supports-color + - svelte + - typeorm + - utf-8-validate + - vue + + '@goat-sdk/adapter-vercel-ai@0.2.0(@goat-sdk/core@0.4.0)(ai@4.0.38(react@19.0.0)(zod@3.23.8))': dependencies: '@goat-sdk/core': 0.4.0 - ai: 4.0.34(react@19.0.0)(zod@3.23.8) + ai: 4.0.38(react@19.0.0)(zod@3.23.8) zod: 3.23.8 '@goat-sdk/core@0.3.8(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)': @@ -28477,7 +28602,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -28491,7 +28616,42 @@ snapshots: 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)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(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(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@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)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@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 @@ -28808,7 +28968,7 @@ snapshots: p-retry: 4.6.2 uuid: 9.0.1 - '@langchain/langgraph@0.2.39(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))': + '@langchain/langgraph@0.2.40(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))': dependencies: '@langchain/core': 0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))) @@ -28873,7 +29033,7 @@ snapshots: - utf-8-validate - wait-for-expect - '@lens-protocol/client@2.2.0(@jest/globals@29.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(react@18.3.1)(utf-8-validate@5.0.10)': + '@lens-protocol/client@2.2.0(@jest/globals@29.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(react@19.0.0)(utf-8-validate@5.0.10)': dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -28884,7 +29044,7 @@ snapshots: '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@ethersproject/wallet': 5.7.0 '@lens-protocol/blockchain-bindings': 0.10.2(@jest/globals@29.7.0)(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lens-protocol/gated-content': 0.5.1(@ethersproject/abi@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(react@18.3.1)(utf-8-validate@5.0.10)(zod@3.23.8) + '@lens-protocol/gated-content': 0.5.1(@ethersproject/abi@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.23.8) '@lens-protocol/shared-kernel': 0.12.0 '@lens-protocol/storage': 0.8.1 graphql: 16.10.0 @@ -28933,7 +29093,7 @@ snapshots: optionalDependencies: '@jest/globals': 29.7.0 - '@lens-protocol/gated-content@0.5.1(@ethersproject/abi@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(react@18.3.1)(utf-8-validate@5.0.10)(zod@3.23.8)': + '@lens-protocol/gated-content@0.5.1(@ethersproject/abi@5.7.0)(@ethersproject/address@5.7.0)(@ethersproject/bignumber@5.7.0)(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(@lens-protocol/metadata@1.2.0(zod@3.23.8))(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.23.8)': dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/address': 5.7.0 @@ -28948,7 +29108,7 @@ snapshots: '@lit-protocol/constants': 2.1.62 '@lit-protocol/crypto': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@lit-protocol/encryption': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lit-protocol/node-client': 2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10) + '@lit-protocol/node-client': 2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10) '@lit-protocol/types': 2.1.62 siwe: 2.3.2(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)) tslib: 2.8.1 @@ -28991,7 +29151,7 @@ snapshots: '@ethersproject/address': 5.7.0 decimal.js: 10.4.3 lodash: 4.17.21 - traverse: 0.6.10 + traverse: 0.6.11 tslib: 2.8.1 '@lens-protocol/storage@0.8.1': @@ -29144,14 +29304,14 @@ snapshots: - bufferutil - utf-8-validate - '@lit-protocol/auth-browser@2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)': + '@lit-protocol/auth-browser@2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)': dependencies: '@lit-protocol/constants': 2.1.62 '@lit-protocol/misc': 2.1.62 '@lit-protocol/misc-browser': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@lit-protocol/types': 2.1.62 '@lit-protocol/uint8arrays': 2.1.62 - '@walletconnect/ethereum-provider': 2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10) + '@walletconnect/ethereum-provider': 2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10) ethers: 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) lit-connect-modal: 0.1.11 lit-siwe: 1.1.8(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0) @@ -29252,10 +29412,10 @@ snapshots: '@lit-protocol/nacl@2.1.62': {} - '@lit-protocol/node-client@2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)': + '@lit-protocol/node-client@2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)': dependencies: '@lit-protocol/access-control-conditions': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lit-protocol/auth-browser': 2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10) + '@lit-protocol/auth-browser': 2.1.62(@ethersproject/contracts@5.7.0)(@ethersproject/hash@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@ethersproject/wallet@5.7.0)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10) '@lit-protocol/bls-sdk': 2.1.62 '@lit-protocol/constants': 2.1.62 '@lit-protocol/crypto': 2.1.62(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -29267,7 +29427,7 @@ snapshots: '@lit-protocol/nacl': 2.1.62 '@lit-protocol/types': 2.1.62 '@lit-protocol/uint8arrays': 2.1.62 - '@walletconnect/ethereum-provider': 2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10) + '@walletconnect/ethereum-provider': 2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10) ethers: 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) jszip: 3.10.1 lit-connect-modal: 0.1.11 @@ -29331,7 +29491,7 @@ snapshots: - supports-color optional: true - '@massalabs/massa-web3@5.1.0': + '@massalabs/massa-web3@5.1.1': dependencies: '@noble/ed25519': 1.7.3 '@noble/hashes': 1.7.0 @@ -29377,10 +29537,10 @@ snapshots: - acorn - supports-color - '@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1)': + '@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 19.0.6 + '@types/react': 19.0.7 react: 18.3.1 '@mermaid-js/parser@0.3.0': @@ -30021,11 +30181,11 @@ snapshots: transitivePeerDependencies: - encoding - '@neynar/nodejs-sdk@2.8.1(bufferutil@4.0.9)(class-transformer@0.5.1)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1)': + '@neynar/nodejs-sdk@2.8.1(bufferutil@4.0.9)(class-transformer@0.5.1)(encoding@0.1.13)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)': dependencies: '@openapitools/openapi-generator-cli': 2.15.3(class-transformer@0.5.1)(encoding@0.1.13) semver: 7.6.3 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) + viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) transitivePeerDependencies: - '@nestjs/microservices' - '@nestjs/platform-express' @@ -30659,21 +30819,21 @@ snapshots: - supports-color - utf-8-validate - '@onflow/fcl-wc@5.5.1(@onflow/fcl-core@1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@6.0.5))(@types/react@19.0.6)(bufferutil@4.0.9)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.5.0)(react@19.0.0)(tsx@4.19.2)(utf-8-validate@6.0.5)': + '@onflow/fcl-wc@5.5.1(@onflow/fcl-core@1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@6.0.5))(@types/react@19.0.7)(bufferutil@4.0.9)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.5.1)(react@19.0.0)(tsx@4.19.2)(utf-8-validate@6.0.5)': dependencies: '@babel/runtime': 7.26.0 '@onflow/config': 1.5.1 '@onflow/fcl-core': 1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@6.0.5) '@onflow/util-invariant': 1.2.4 '@onflow/util-logger': 1.3.3 - '@walletconnect/modal': 2.7.0(@types/react@19.0.6)(react@19.0.0) - '@walletconnect/modal-core': 2.7.0(@types/react@19.0.6)(react@19.0.0) + '@walletconnect/modal': 2.7.0(@types/react@19.0.7)(react@19.0.0) + '@walletconnect/modal-core': 2.7.0(@types/react@19.0.7)(react@19.0.0) '@walletconnect/sign-client': 2.17.3(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@6.0.5) '@walletconnect/types': 2.17.3(ioredis@5.4.2) '@walletconnect/utils': 2.17.3(ioredis@5.4.2) - postcss-cli: 11.0.0(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2) + postcss-cli: 11.0.0(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2) preact: 10.25.4 - tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.6)(typescript@5.6.3)) + tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3)) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -30704,12 +30864,12 @@ snapshots: - uploadthing - utf-8-validate - '@onflow/fcl@1.13.1(@types/react@19.0.6)(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.5.0)(react@19.0.0)(tsx@4.19.2)(utf-8-validate@6.0.5)': + '@onflow/fcl@1.13.1(@types/react@19.0.7)(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.5.1)(react@19.0.0)(tsx@4.19.2)(utf-8-validate@6.0.5)': dependencies: '@babel/runtime': 7.26.0 '@onflow/config': 1.5.1 '@onflow/fcl-core': 1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@6.0.5) - '@onflow/fcl-wc': 5.5.1(@onflow/fcl-core@1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@6.0.5))(@types/react@19.0.6)(bufferutil@4.0.9)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.5.0)(react@19.0.0)(tsx@4.19.2)(utf-8-validate@6.0.5) + '@onflow/fcl-wc': 5.5.1(@onflow/fcl-core@1.13.1(bufferutil@4.0.9)(encoding@0.1.13)(google-protobuf@3.21.4)(utf-8-validate@6.0.5))(@types/react@19.0.7)(bufferutil@4.0.9)(ioredis@5.4.2)(jiti@2.4.2)(postcss@8.5.1)(react@19.0.0)(tsx@4.19.2)(utf-8-validate@6.0.5) '@onflow/interaction': 0.0.11 '@onflow/rlp': 1.2.3 '@onflow/sdk': 1.5.5(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) @@ -31513,362 +31673,362 @@ snapshots: '@radix-ui/primitive@1.1.1': {} - '@radix-ui/react-arrow@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-arrow@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-avatar@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-avatar@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-context': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-collapsible@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-collapsible@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-collection@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-collection@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.1(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-compose-refs@1.1.1(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-compose-refs@1.1.1(@types/react@19.0.7)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-context@1.1.1(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-context@1.1.1(@types/react@19.0.7)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-dialog@1.1.4(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-dialog@1.1.4(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.7)(react@19.0.0) aria-hidden: 1.2.4 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-remove-scroll: 2.6.2(@types/react@19.0.6)(react@19.0.0) + react-remove-scroll: 2.6.2(@types/react@19.0.7)(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-direction@1.1.0(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-direction@1.1.0(@types/react@19.0.7)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-dismissable-layer@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-dismissable-layer@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-dismissable-layer@1.1.3(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-dismissable-layer@1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-focus-guards@1.1.1(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-focus-guards@1.1.1(@types/react@19.0.7)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-focus-scope@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-focus-scope@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) '@radix-ui/react-icons@1.3.2(react@19.0.0)': dependencies: react: 19.0.0 - '@radix-ui/react-id@1.1.0(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-id@1.1.0(@types/react@19.0.7)(react@19.0.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-label@2.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-label@2.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-popper@1.2.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-popper@1.2.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-arrow': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-rect': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-arrow': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-rect': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.7)(react@19.0.0) '@radix-ui/rect': 1.1.0 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-portal@1.1.3(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-portal@1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-presence@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-presence@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-primitive@2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-primitive@2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-slot': 1.1.1(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-roving-focus@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-roving-focus@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-separator@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-separator@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-slot@1.1.1(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-slot@1.1.1(@types/react@19.0.7)(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-tabs@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-tabs@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-context': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-toast@1.2.4(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-toast@1.2.4(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-tooltip@1.1.5(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-tooltip@1.1.5(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-tooltip@1.1.6(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-tooltip@1.1.6(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.1(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.6)(react@19.0.0) - '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.7)(react@19.0.0) + '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.0.7)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.0.7)(react@19.0.0)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.0.7)(react@19.0.0)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.0.7)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-use-rect@1.1.0(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-use-rect@1.1.0(@types/react@19.0.7)(react@19.0.0)': dependencies: '@radix-ui/rect': 1.1.0 react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-use-size@1.1.0(@types/react@19.0.6)(react@19.0.0)': + '@radix-ui/react-use-size@1.1.0(@types/react@19.0.7)(react@19.0.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.6)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.7)(react@19.0.0) react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@radix-ui/react-visually-hidden@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-visually-hidden@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 - '@types/react-dom': 19.0.3(@types/react@19.0.6) + '@types/react': 19.0.7 + '@types/react-dom': 19.0.3(@types/react@19.0.7) '@radix-ui/rect@1.1.0': {} @@ -32317,35 +32477,35 @@ snapshots: domhandler: 5.0.3 selderee: 0.11.0 - '@shikijs/core@1.26.2': + '@shikijs/core@1.27.2': dependencies: - '@shikijs/engine-javascript': 1.26.2 - '@shikijs/engine-oniguruma': 1.26.2 - '@shikijs/types': 1.26.2 + '@shikijs/engine-javascript': 1.27.2 + '@shikijs/engine-oniguruma': 1.27.2 + '@shikijs/types': 1.27.2 '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 hast-util-to-html: 9.0.4 - '@shikijs/engine-javascript@1.26.2': + '@shikijs/engine-javascript@1.27.2': dependencies: - '@shikijs/types': 1.26.2 + '@shikijs/types': 1.27.2 '@shikijs/vscode-textmate': 10.0.1 - oniguruma-to-es: 1.0.0 + oniguruma-to-es: 2.0.0 - '@shikijs/engine-oniguruma@1.26.2': + '@shikijs/engine-oniguruma@1.27.2': dependencies: - '@shikijs/types': 1.26.2 + '@shikijs/types': 1.27.2 '@shikijs/vscode-textmate': 10.0.1 - '@shikijs/langs@1.26.2': + '@shikijs/langs@1.27.2': dependencies: - '@shikijs/types': 1.26.2 + '@shikijs/types': 1.27.2 - '@shikijs/themes@1.26.2': + '@shikijs/themes@1.27.2': dependencies: - '@shikijs/types': 1.26.2 + '@shikijs/types': 1.27.2 - '@shikijs/types@1.26.2': + '@shikijs/types@1.27.2': dependencies: '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 @@ -32485,14 +32645,14 @@ snapshots: '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@smithy/core@3.1.0': + '@smithy/core@3.1.1': dependencies: '@smithy/middleware-serde': 4.0.1 '@smithy/protocol-http': 5.0.1 '@smithy/types': 4.1.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-middleware': 4.0.1 - '@smithy/util-stream': 4.0.1 + '@smithy/util-stream': 4.0.2 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 @@ -32587,9 +32747,9 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.0.1': + '@smithy/middleware-endpoint@4.0.2': dependencies: - '@smithy/core': 3.1.0 + '@smithy/core': 3.1.1 '@smithy/middleware-serde': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/shared-ini-file-loader': 4.0.1 @@ -32598,12 +32758,12 @@ snapshots: '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@smithy/middleware-retry@4.0.1': + '@smithy/middleware-retry@4.0.3': dependencies: '@smithy/node-config-provider': 4.0.1 '@smithy/protocol-http': 5.0.1 '@smithy/service-error-classification': 4.0.1 - '@smithy/smithy-client': 4.1.0 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -32627,7 +32787,7 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/node-http-handler@4.0.1': + '@smithy/node-http-handler@4.0.2': dependencies: '@smithy/abort-controller': 4.0.1 '@smithy/protocol-http': 5.0.1 @@ -32676,14 +32836,14 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/smithy-client@4.1.0': + '@smithy/smithy-client@4.1.2': dependencies: - '@smithy/core': 3.1.0 - '@smithy/middleware-endpoint': 4.0.1 + '@smithy/core': 3.1.1 + '@smithy/middleware-endpoint': 4.0.2 '@smithy/middleware-stack': 4.0.1 '@smithy/protocol-http': 5.0.1 '@smithy/types': 4.1.0 - '@smithy/util-stream': 4.0.1 + '@smithy/util-stream': 4.0.2 tslib: 2.8.1 '@smithy/types@4.1.0': @@ -32724,21 +32884,21 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.0.1': + '@smithy/util-defaults-mode-browser@4.0.3': dependencies: '@smithy/property-provider': 4.0.1 - '@smithy/smithy-client': 4.1.0 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 bowser: 2.11.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.0.1': + '@smithy/util-defaults-mode-node@4.0.3': dependencies: '@smithy/config-resolver': 4.0.1 '@smithy/credential-provider-imds': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/property-provider': 4.0.1 - '@smithy/smithy-client': 4.1.0 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 tslib: 2.8.1 @@ -32763,10 +32923,10 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/util-stream@4.0.1': + '@smithy/util-stream@4.0.2': dependencies: '@smithy/fetch-http-handler': 5.0.1 - '@smithy/node-http-handler': 4.0.1 + '@smithy/node-http-handler': 4.0.2 '@smithy/types': 4.1.0 '@smithy/util-base64': 4.0.0 '@smithy/util-buffer-from': 4.0.0 @@ -33239,13 +33399,13 @@ snapshots: '@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5))': dependencies: - '@solana/wallet-standard-features': 1.2.0 + '@solana/wallet-standard-features': 1.3.0 '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) '@wallet-standard/base': 1.1.0 '@wallet-standard/features': 1.1.0 eventemitter3: 4.0.7 - '@solana/wallet-standard-features@1.2.0': + '@solana/wallet-standard-features@1.3.0': dependencies: '@wallet-standard/base': 1.1.0 '@wallet-standard/features': 1.1.0 @@ -33316,28 +33476,6 @@ snapshots: - encoding - utf-8-validate - '@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5)': - dependencies: - '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.6.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) - node-fetch: 2.7.0(encoding@0.1.13) - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - '@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 @@ -33382,10 +33520,10 @@ snapshots: - encoding - utf-8-validate - '@spheron/protocol-sdk@1.2.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)': + '@spheron/protocol-sdk@1.2.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: base64-js: 1.5.1 - ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) + ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) js-yaml: 4.1.0 transitivePeerDependencies: - bufferutil @@ -33504,14 +33642,14 @@ snapshots: '@starknet-io/types-js@0.7.10': {} - '@story-protocol/core-sdk@1.2.0-rc.3(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1)': + '@story-protocol/core-sdk@1.2.0-rc.3(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)': dependencies: abitype: 0.10.3(typescript@5.7.3)(zod@3.24.1) axios: 1.7.9(debug@4.4.0) bs58: 6.0.0 dotenv: 16.4.7 multiformats: 9.9.0 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) + viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) transitivePeerDependencies: - bufferutil - debug @@ -33770,7 +33908,7 @@ snapshots: '@tavily/core@0.0.2': dependencies: - axios: 1.7.9(debug@4.4.0) + axios: 1.7.9 js-tiktoken: 1.0.15 transitivePeerDependencies: - debug @@ -33965,7 +34103,7 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 5.0.4 + '@types/express-serve-static-core': 5.0.5 '@types/node': 20.17.9 '@types/connect@3.4.38': @@ -34134,14 +34272,14 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: '@types/node': 20.17.9 - '@types/qs': 6.9.17 + '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 - '@types/express-serve-static-core@5.0.4': + '@types/express-serve-static-core@5.0.5': dependencies: '@types/node': 20.17.9 - '@types/qs': 6.9.17 + '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -34149,14 +34287,14 @@ snapshots: dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.19.6 - '@types/qs': 6.9.17 + '@types/qs': 6.9.18 '@types/serve-static': 1.15.7 '@types/express@5.0.0': dependencies: '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 5.0.4 - '@types/qs': 6.9.17 + '@types/express-serve-static-core': 5.0.5 + '@types/qs': 6.9.18 '@types/serve-static': 1.15.7 '@types/filesystem@0.0.36': @@ -34294,7 +34432,7 @@ snapshots: '@types/node@18.15.13': {} - '@types/node@18.19.70': + '@types/node@18.19.71': dependencies: undici-types: 5.26.5 @@ -34302,7 +34440,7 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@22.10.6': + '@types/node@22.10.7': dependencies: undici-types: 6.20.0 @@ -34341,32 +34479,32 @@ snapshots: dependencies: '@types/retry': 0.12.5 - '@types/qs@6.9.17': {} + '@types/qs@6.9.18': {} '@types/range-parser@1.2.7': {} - '@types/react-dom@19.0.3(@types/react@19.0.6)': + '@types/react-dom@19.0.3(@types/react@19.0.7)': dependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 '@types/react-router-config@5.0.11': dependencies: '@types/history': 4.7.11 - '@types/react': 19.0.6 + '@types/react': 19.0.7 '@types/react-router': 5.1.20 '@types/react-router-dom@5.3.3': dependencies: '@types/history': 4.7.11 - '@types/react': 19.0.6 + '@types/react': 19.0.7 '@types/react-router': 5.1.20 '@types/react-router@5.1.20': dependencies: '@types/history': 4.7.11 - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@types/react@19.0.6': + '@types/react@19.0.7': dependencies: csstype: 3.1.3 @@ -34554,7 +34692,7 @@ snapshots: '@typescript-eslint/types': 8.16.0 '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.6.3) '@typescript-eslint/visitor-keys': 8.16.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 eslint: 9.16.0(jiti@2.4.2) optionalDependencies: typescript: 5.6.3 @@ -34617,7 +34755,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.6.3) '@typescript-eslint/utils': 8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3) - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 eslint: 9.16.0(jiti@2.4.2) ts-api-utils: 1.4.3(typescript@5.6.3) optionalDependencies: @@ -34673,7 +34811,7 @@ snapshots: dependencies: '@typescript-eslint/types': 8.16.0 '@typescript-eslint/visitor-keys': 8.16.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -34688,7 +34826,7 @@ snapshots: dependencies: '@typescript-eslint/types': 8.20.0 '@typescript-eslint/visitor-keys': 8.20.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -34808,10 +34946,10 @@ snapshots: moment: 2.30.1 starknet: 6.18.0(encoding@0.1.13) - '@vitejs/plugin-react-swc@3.7.2(@swc/helpers@0.5.15)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))': + '@vitejs/plugin-react-swc@3.7.2(@swc/helpers@0.5.15)(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))': dependencies: '@swc/core': 1.10.7(@swc/helpers@0.5.15) - vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) transitivePeerDependencies: - '@swc/helpers' @@ -34832,7 +34970,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@1.1.3(vitest@1.1.3(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': + '@vitest/coverage-v8@1.1.3(vitest@1.1.3(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -34847,7 +34985,7 @@ snapshots: std-env: 3.8.0 test-exclude: 6.0.0 v8-to-istanbul: 9.3.0 - vitest: 1.1.3(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + vitest: 1.1.3(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) transitivePeerDependencies: - supports-color @@ -34869,13 +35007,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/eslint-plugin@1.0.1(@typescript-eslint/utils@8.20.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(vitest@2.1.5(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0))': + '@vitest/eslint-plugin@1.0.1(@typescript-eslint/utils@8.20.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3)(vitest@2.1.5(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0))': dependencies: eslint: 9.16.0(jiti@2.4.2) optionalDependencies: '@typescript-eslint/utils': 8.20.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3) typescript: 5.6.3 - vitest: 2.1.5(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0) + vitest: 2.1.5(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) '@vitest/expect@0.34.6': dependencies: @@ -34916,29 +35054,37 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.4(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0))': + '@vitest/mocker@2.1.4(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0))': dependencies: '@vitest/spy': 2.1.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) + + '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@20.17.9)(terser@5.37.0))': + dependencies: + '@vitest/spy': 2.1.5 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 5.4.11(@types/node@20.17.9)(terser@5.37.0) - '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0))': + '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0))': dependencies: '@vitest/spy': 2.1.5 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) - '@vitest/mocker@2.1.8(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0))': + '@vitest/mocker@2.1.8(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0))': dependencies: '@vitest/spy': 2.1.8 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) '@vitest/pretty-format@2.1.4': dependencies: @@ -35124,7 +35270,7 @@ snapshots: '@vue/shared': 3.5.13 estree-walker: 2.0.2 magic-string: 0.30.17 - postcss: 8.5.0 + postcss: 8.5.1 source-map-js: 1.2.1 '@vue/compiler-ssr@3.5.13': @@ -35154,12 +35300,6 @@ snapshots: '@vue/shared': 3.5.13 vue: 3.5.13(typescript@5.6.3) - '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 - vue: 3.5.13(typescript@5.7.3) - '@vue/shared@3.5.13': {} '@wallet-standard/base@1.1.0': {} @@ -35250,18 +35390,59 @@ snapshots: - uploadthing - utf-8-validate + '@walletconnect/core@2.17.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.4.2) + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.0.4 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.17.3(ioredis@5.4.2) + '@walletconnect/utils': 2.17.3(ioredis@5.4.2) + '@walletconnect/window-getters': 1.0.1 + events: 3.3.0 + lodash.isequal: 4.5.0 + uint8arrays: 3.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - uploadthing + - utf-8-validate + '@walletconnect/environment@1.0.1': dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.17.3(@types/react@19.0.6)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.4.2)(react@19.0.0)(utf-8-validate@5.0.10)': + '@walletconnect/ethereum-provider@2.17.3(@types/react@19.0.7)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.4.2)(react@19.0.0)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.4.2) - '@walletconnect/modal': 2.7.0(@types/react@19.0.6)(react@19.0.0) + '@walletconnect/modal': 2.7.0(@types/react@19.0.7)(react@19.0.0) '@walletconnect/sign-client': 2.17.3(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@5.0.10) '@walletconnect/types': 2.17.3(ioredis@5.4.2) '@walletconnect/universal-provider': 2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.4.2)(utf-8-validate@5.0.10) @@ -35292,14 +35473,14 @@ snapshots: - uploadthing - utf-8-validate - '@walletconnect/ethereum-provider@2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@walletconnect/ethereum-provider@2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(react@19.0.0)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.4.2) - '@walletconnect/modal': 2.7.0(@types/react@19.0.6)(react@19.0.0) + '@walletconnect/modal': 2.7.0(@types/react@19.0.7)(react@19.0.0) '@walletconnect/sign-client': 2.17.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@walletconnect/types': 2.17.3(ioredis@5.4.2) '@walletconnect/universal-provider': 2.17.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -35416,16 +35597,16 @@ snapshots: '@walletconnect/safe-json': 1.0.2 pino: 7.11.0 - '@walletconnect/modal-core@2.7.0(@types/react@19.0.6)(react@19.0.0)': + '@walletconnect/modal-core@2.7.0(@types/react@19.0.7)(react@19.0.0)': dependencies: - valtio: 1.11.2(@types/react@19.0.6)(react@19.0.0) + valtio: 1.11.2(@types/react@19.0.7)(react@19.0.0) transitivePeerDependencies: - '@types/react' - react - '@walletconnect/modal-ui@2.7.0(@types/react@19.0.6)(react@19.0.0)': + '@walletconnect/modal-ui@2.7.0(@types/react@19.0.7)(react@19.0.0)': dependencies: - '@walletconnect/modal-core': 2.7.0(@types/react@19.0.6)(react@19.0.0) + '@walletconnect/modal-core': 2.7.0(@types/react@19.0.7)(react@19.0.0) lit: 2.8.0 motion: 10.16.2 qrcode: 1.5.3 @@ -35433,10 +35614,10 @@ snapshots: - '@types/react' - react - '@walletconnect/modal@2.7.0(@types/react@19.0.6)(react@19.0.0)': + '@walletconnect/modal@2.7.0(@types/react@19.0.7)(react@19.0.0)': dependencies: - '@walletconnect/modal-core': 2.7.0(@types/react@19.0.6)(react@19.0.0) - '@walletconnect/modal-ui': 2.7.0(@types/react@19.0.6)(react@19.0.0) + '@walletconnect/modal-core': 2.7.0(@types/react@19.0.7)(react@19.0.0) + '@walletconnect/modal-ui': 2.7.0(@types/react@19.0.7)(react@19.0.0) transitivePeerDependencies: - '@types/react' - react @@ -35526,7 +35707,7 @@ snapshots: '@walletconnect/sign-client@2.17.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@walletconnect/core': 2.17.3(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@5.0.10) + '@walletconnect/core': 2.17.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 @@ -35837,10 +36018,10 @@ snapshots: optionalDependencies: zod: 3.24.1 - abitype@1.0.7(typescript@5.6.3)(zod@3.24.1): + abitype@1.0.7(typescript@5.6.3)(zod@3.23.8): optionalDependencies: typescript: 5.6.3 - zod: 3.24.1 + zod: 3.23.8 abitype@1.0.7(typescript@5.7.3)(zod@3.23.8): optionalDependencies: @@ -35852,10 +36033,10 @@ snapshots: typescript: 5.7.3 zod: 3.24.1 - abitype@1.0.8(typescript@5.6.3)(zod@3.24.1): + abitype@1.0.8(typescript@5.6.3)(zod@3.23.8): optionalDependencies: typescript: 5.6.3 - zod: 3.24.1 + zod: 3.23.8 abitype@1.0.8(typescript@5.7.3)(zod@3.23.8): optionalDependencies: @@ -35912,7 +36093,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -35930,7 +36111,7 @@ snapshots: tough-cookie: 4.1.4 tslib: 2.8.1 twitter-api-v2: 1.19.0 - undici: 7.2.1 + undici: 7.2.2 ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil @@ -35945,13 +36126,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@19.0.0)(sswr@2.1.0(svelte@5.17.3))(svelte@5.17.3)(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@19.0.0)(sswr@2.1.0(svelte@5.18.0))(svelte@5.18.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@19.0.0)(zod@3.23.8) '@ai-sdk/solid': 0.0.54(zod@3.23.8) - '@ai-sdk/svelte': 0.0.57(svelte@5.17.3)(zod@3.23.8) + '@ai-sdk/svelte': 0.0.57(svelte@5.18.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 @@ -35963,31 +36144,31 @@ snapshots: optionalDependencies: openai: 4.73.0(encoding@0.1.13)(zod@3.23.8) react: 19.0.0 - sswr: 2.1.0(svelte@5.17.3) - svelte: 5.17.3 + sswr: 2.1.0(svelte@5.18.0) + svelte: 5.18.0 zod: 3.23.8 transitivePeerDependencies: - solid-js - vue - ai@4.0.34(react@19.0.0)(zod@3.23.8): + ai@4.0.38(react@19.0.0)(zod@3.23.8): dependencies: '@ai-sdk/provider': 1.0.4 '@ai-sdk/provider-utils': 2.0.7(zod@3.23.8) - '@ai-sdk/react': 1.0.10(react@19.0.0)(zod@3.23.8) - '@ai-sdk/ui-utils': 1.0.9(zod@3.23.8) + '@ai-sdk/react': 1.0.11(react@19.0.0)(zod@3.23.8) + '@ai-sdk/ui-utils': 1.0.10(zod@3.23.8) '@opentelemetry/api': 1.9.0 jsondiffpatch: 0.6.0 optionalDependencies: react: 19.0.0 zod: 3.23.8 - ai@4.0.34(react@19.0.0)(zod@3.24.1): + ai@4.0.38(react@19.0.0)(zod@3.24.1): dependencies: '@ai-sdk/provider': 1.0.4 '@ai-sdk/provider-utils': 2.0.7(zod@3.24.1) - '@ai-sdk/react': 1.0.10(react@19.0.0)(zod@3.24.1) - '@ai-sdk/ui-utils': 1.0.9(zod@3.24.1) + '@ai-sdk/react': 1.0.11(react@19.0.0)(zod@3.24.1) + '@ai-sdk/ui-utils': 1.0.10(zod@3.24.1) '@opentelemetry/api': 1.9.0 jsondiffpatch: 0.6.0 optionalDependencies: @@ -36025,7 +36206,7 @@ snapshots: algo-msgpack-with-bigint@2.1.1: {} - algoliasearch-helper@3.22.6(algoliasearch@4.24.0): + algoliasearch-helper@3.23.0(algoliasearch@4.24.0): dependencies: '@algolia/events': 4.0.1 algoliasearch: 4.24.0 @@ -36232,7 +36413,7 @@ snapshots: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.9 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 get-intrinsic: 1.2.7 is-string: 1.1.1 @@ -36244,7 +36425,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.9 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 es-shim-unscopables: 1.0.2 array.prototype.findlastindex@1.2.5: @@ -36253,7 +36434,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.9 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 es-shim-unscopables: 1.0.2 array.prototype.flat@1.3.3: @@ -36400,21 +36581,21 @@ snapshots: ofetch: 1.4.1 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.3.0 + pkg-types: 1.3.1 scule: 1.3.0 untyped: 1.5.2 transitivePeerDependencies: - magicast - supports-color - autoprefixer@10.4.20(postcss@8.5.0): + autoprefixer@10.4.20(postcss@8.5.1): dependencies: browserslist: 4.24.4 caniuse-lite: 1.0.30001692 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 avail-js-sdk@0.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): @@ -36438,7 +36619,7 @@ snapshots: axios-mock-adapter@1.22.0(axios@1.7.9): dependencies: - axios: 1.7.9(debug@4.4.0) + axios: 1.7.9 fast-deep-equal: 3.1.3 is-buffer: 2.0.5 @@ -36449,7 +36630,7 @@ snapshots: axios-retry@4.5.0(axios@1.7.9): dependencies: - axios: 1.7.9(debug@4.4.0) + axios: 1.7.9 is-retry-allowed: 2.2.0 axios@0.21.4: @@ -36466,7 +36647,7 @@ snapshots: axios@0.27.2: dependencies: - follow-redirects: 1.15.9(debug@4.4.0) + follow-redirects: 1.15.9 form-data: 4.0.1 transitivePeerDependencies: - debug @@ -36503,6 +36684,14 @@ snapshots: transitivePeerDependencies: - debug + axios@1.7.9: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + axios@1.7.9(debug@4.4.0): dependencies: follow-redirects: 1.15.9(debug@4.4.0) @@ -36671,34 +36860,31 @@ snapshots: balanced-match@1.0.2: {} - bare-buffer@3.0.1: - optional: true - bare-events@2.5.4: optional: true - bare-fs@2.3.5(bare-buffer@3.0.1): + bare-fs@4.0.1: dependencies: bare-events: 2.5.4 - bare-path: 2.1.3 - bare-stream: 2.6.2(bare-buffer@3.0.1)(bare-events@2.5.4) + bare-path: 3.0.0 + bare-stream: 2.6.4(bare-events@2.5.4) transitivePeerDependencies: - bare-buffer optional: true - bare-os@2.4.4: + bare-os@3.4.0: optional: true - bare-path@2.1.3: + bare-path@3.0.0: dependencies: - bare-os: 2.4.4 + bare-os: 3.4.0 optional: true - bare-stream@2.6.2(bare-buffer@3.0.1)(bare-events@2.5.4): + bare-stream@2.6.4(bare-events@2.5.4): dependencies: - bare-buffer: 3.0.1 - bare-events: 2.5.4 streamx: 2.21.1 + optionalDependencies: + bare-events: 2.5.4 optional: true base-x@2.0.6: @@ -37064,7 +37250,7 @@ snapshots: browserslist@4.24.4: dependencies: caniuse-lite: 1.0.30001692 - electron-to-chromium: 1.5.80 + electron-to-chromium: 1.5.83 node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) @@ -37190,7 +37376,7 @@ snapshots: ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.3.0 + pkg-types: 1.3.1 rc9: 2.1.2 optionalDependencies: magicast: 0.3.5 @@ -37338,9 +37524,9 @@ snapshots: loupe: 3.1.2 pathval: 2.0.0 - chain-registry@1.69.91: + chain-registry@1.69.94: dependencies: - '@chain-registry/types': 0.50.47 + '@chain-registry/types': 0.50.50 chalk@1.1.3: dependencies: @@ -37482,13 +37668,13 @@ snapshots: dependencies: consola: 3.4.0 - cive@0.7.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5): + cive@0.7.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10): dependencies: '@noble/curves': 1.8.0 '@noble/hashes': 1.7.0 '@scure/bip32': 1.6.1 '@scure/bip39': 1.5.1 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.23.8) + viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) zod: 3.23.8 transitivePeerDependencies: - bufferutil @@ -37937,9 +38123,9 @@ snapshots: dependencies: layout-base: 2.0.1 - cosmiconfig-typescript-loader@5.1.0(@types/node@22.10.6)(cosmiconfig@8.3.6(typescript@5.6.3))(typescript@5.6.3): + cosmiconfig-typescript-loader@5.1.0(@types/node@20.17.9)(cosmiconfig@8.3.6(typescript@5.6.3))(typescript@5.6.3): dependencies: - '@types/node': 22.10.6 + '@types/node': 20.17.9 cosmiconfig: 8.3.6(typescript@5.6.3) jiti: 1.21.7 typescript: 5.6.3 @@ -38016,13 +38202,28 @@ snapshots: safe-buffer: 5.2.1 sha.js: 2.4.11 - create-jest@29.7.0(@types/node@18.19.70)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)): + create-jest@29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(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@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@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@18.19.70)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -38046,13 +38247,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@22.10.6)(babel-plugin-macros@3.1.0): + create-jest@29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0): 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@22.10.6)(babel-plugin-macros@3.1.0) + jest-config: 29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -38135,30 +38336,30 @@ snapshots: dependencies: type-fest: 1.4.0 - css-blank-pseudo@7.0.1(postcss@8.5.0): + css-blank-pseudo@7.0.1(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 7.0.0 - css-declaration-sorter@7.2.0(postcss@8.5.0): + css-declaration-sorter@7.2.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - css-has-pseudo@7.0.2(postcss@8.5.0): + css-has-pseudo@7.0.2(postcss@8.5.1): dependencies: '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 css-loader@6.11.0(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: - icss-utils: 5.1.0(postcss@8.5.0) - postcss: 8.5.0 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.0) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.0) - postcss-modules-scope: 3.2.1(postcss@8.5.0) - postcss-modules-values: 4.0.0(postcss@8.5.0) + icss-utils: 5.1.0(postcss@8.5.1) + postcss: 8.5.1 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.1) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.1) + postcss-modules-scope: 3.2.1(postcss@8.5.1) + postcss-modules-values: 4.0.0(postcss@8.5.1) postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: @@ -38167,18 +38368,18 @@ snapshots: css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: '@jridgewell/trace-mapping': 0.3.25 - cssnano: 6.1.2(postcss@8.5.0) + cssnano: 6.1.2(postcss@8.5.1) jest-worker: 29.7.0 - postcss: 8.5.0 + postcss: 8.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) optionalDependencies: clean-css: 5.3.3 - css-prefers-color-scheme@10.0.0(postcss@8.5.0): + css-prefers-color-scheme@10.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 css-select@4.3.0: dependencies: @@ -38214,104 +38415,104 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-advanced@6.1.2(postcss@8.5.0): + cssnano-preset-advanced@6.1.2(postcss@8.5.1): dependencies: - autoprefixer: 10.4.20(postcss@8.5.0) + autoprefixer: 10.4.20(postcss@8.5.1) browserslist: 4.24.4 - cssnano-preset-default: 6.1.2(postcss@8.5.0) - postcss: 8.5.0 - postcss-discard-unused: 6.0.5(postcss@8.5.0) - postcss-merge-idents: 6.0.3(postcss@8.5.0) - postcss-reduce-idents: 6.0.3(postcss@8.5.0) - postcss-zindex: 6.0.2(postcss@8.5.0) + cssnano-preset-default: 6.1.2(postcss@8.5.1) + postcss: 8.5.1 + postcss-discard-unused: 6.0.5(postcss@8.5.1) + postcss-merge-idents: 6.0.3(postcss@8.5.1) + postcss-reduce-idents: 6.0.3(postcss@8.5.1) + postcss-zindex: 6.0.2(postcss@8.5.1) - cssnano-preset-default@6.1.2(postcss@8.5.0): + cssnano-preset-default@6.1.2(postcss@8.5.1): dependencies: browserslist: 4.24.4 - css-declaration-sorter: 7.2.0(postcss@8.5.0) - cssnano-utils: 4.0.2(postcss@8.5.0) - postcss: 8.5.0 - postcss-calc: 9.0.1(postcss@8.5.0) - postcss-colormin: 6.1.0(postcss@8.5.0) - postcss-convert-values: 6.1.0(postcss@8.5.0) - postcss-discard-comments: 6.0.2(postcss@8.5.0) - postcss-discard-duplicates: 6.0.3(postcss@8.5.0) - postcss-discard-empty: 6.0.3(postcss@8.5.0) - postcss-discard-overridden: 6.0.2(postcss@8.5.0) - postcss-merge-longhand: 6.0.5(postcss@8.5.0) - postcss-merge-rules: 6.1.1(postcss@8.5.0) - postcss-minify-font-values: 6.1.0(postcss@8.5.0) - postcss-minify-gradients: 6.0.3(postcss@8.5.0) - postcss-minify-params: 6.1.0(postcss@8.5.0) - postcss-minify-selectors: 6.0.4(postcss@8.5.0) - postcss-normalize-charset: 6.0.2(postcss@8.5.0) - postcss-normalize-display-values: 6.0.2(postcss@8.5.0) - postcss-normalize-positions: 6.0.2(postcss@8.5.0) - postcss-normalize-repeat-style: 6.0.2(postcss@8.5.0) - postcss-normalize-string: 6.0.2(postcss@8.5.0) - postcss-normalize-timing-functions: 6.0.2(postcss@8.5.0) - postcss-normalize-unicode: 6.1.0(postcss@8.5.0) - postcss-normalize-url: 6.0.2(postcss@8.5.0) - postcss-normalize-whitespace: 6.0.2(postcss@8.5.0) - postcss-ordered-values: 6.0.2(postcss@8.5.0) - postcss-reduce-initial: 6.1.0(postcss@8.5.0) - postcss-reduce-transforms: 6.0.2(postcss@8.5.0) - postcss-svgo: 6.0.3(postcss@8.5.0) - postcss-unique-selectors: 6.0.4(postcss@8.5.0) - - cssnano-preset-default@7.0.6(postcss@8.5.0): + css-declaration-sorter: 7.2.0(postcss@8.5.1) + cssnano-utils: 4.0.2(postcss@8.5.1) + postcss: 8.5.1 + postcss-calc: 9.0.1(postcss@8.5.1) + postcss-colormin: 6.1.0(postcss@8.5.1) + postcss-convert-values: 6.1.0(postcss@8.5.1) + postcss-discard-comments: 6.0.2(postcss@8.5.1) + postcss-discard-duplicates: 6.0.3(postcss@8.5.1) + postcss-discard-empty: 6.0.3(postcss@8.5.1) + postcss-discard-overridden: 6.0.2(postcss@8.5.1) + postcss-merge-longhand: 6.0.5(postcss@8.5.1) + postcss-merge-rules: 6.1.1(postcss@8.5.1) + postcss-minify-font-values: 6.1.0(postcss@8.5.1) + postcss-minify-gradients: 6.0.3(postcss@8.5.1) + postcss-minify-params: 6.1.0(postcss@8.5.1) + postcss-minify-selectors: 6.0.4(postcss@8.5.1) + postcss-normalize-charset: 6.0.2(postcss@8.5.1) + postcss-normalize-display-values: 6.0.2(postcss@8.5.1) + postcss-normalize-positions: 6.0.2(postcss@8.5.1) + postcss-normalize-repeat-style: 6.0.2(postcss@8.5.1) + postcss-normalize-string: 6.0.2(postcss@8.5.1) + postcss-normalize-timing-functions: 6.0.2(postcss@8.5.1) + postcss-normalize-unicode: 6.1.0(postcss@8.5.1) + postcss-normalize-url: 6.0.2(postcss@8.5.1) + postcss-normalize-whitespace: 6.0.2(postcss@8.5.1) + postcss-ordered-values: 6.0.2(postcss@8.5.1) + postcss-reduce-initial: 6.1.0(postcss@8.5.1) + postcss-reduce-transforms: 6.0.2(postcss@8.5.1) + postcss-svgo: 6.0.3(postcss@8.5.1) + postcss-unique-selectors: 6.0.4(postcss@8.5.1) + + cssnano-preset-default@7.0.6(postcss@8.5.1): dependencies: browserslist: 4.24.4 - css-declaration-sorter: 7.2.0(postcss@8.5.0) - cssnano-utils: 5.0.0(postcss@8.5.0) - postcss: 8.5.0 - postcss-calc: 10.1.0(postcss@8.5.0) - postcss-colormin: 7.0.2(postcss@8.5.0) - postcss-convert-values: 7.0.4(postcss@8.5.0) - postcss-discard-comments: 7.0.3(postcss@8.5.0) - postcss-discard-duplicates: 7.0.1(postcss@8.5.0) - postcss-discard-empty: 7.0.0(postcss@8.5.0) - postcss-discard-overridden: 7.0.0(postcss@8.5.0) - postcss-merge-longhand: 7.0.4(postcss@8.5.0) - postcss-merge-rules: 7.0.4(postcss@8.5.0) - postcss-minify-font-values: 7.0.0(postcss@8.5.0) - postcss-minify-gradients: 7.0.0(postcss@8.5.0) - postcss-minify-params: 7.0.2(postcss@8.5.0) - postcss-minify-selectors: 7.0.4(postcss@8.5.0) - postcss-normalize-charset: 7.0.0(postcss@8.5.0) - postcss-normalize-display-values: 7.0.0(postcss@8.5.0) - postcss-normalize-positions: 7.0.0(postcss@8.5.0) - postcss-normalize-repeat-style: 7.0.0(postcss@8.5.0) - postcss-normalize-string: 7.0.0(postcss@8.5.0) - postcss-normalize-timing-functions: 7.0.0(postcss@8.5.0) - postcss-normalize-unicode: 7.0.2(postcss@8.5.0) - postcss-normalize-url: 7.0.0(postcss@8.5.0) - postcss-normalize-whitespace: 7.0.0(postcss@8.5.0) - postcss-ordered-values: 7.0.1(postcss@8.5.0) - postcss-reduce-initial: 7.0.2(postcss@8.5.0) - postcss-reduce-transforms: 7.0.0(postcss@8.5.0) - postcss-svgo: 7.0.1(postcss@8.5.0) - postcss-unique-selectors: 7.0.3(postcss@8.5.0) - - cssnano-utils@4.0.2(postcss@8.5.0): - dependencies: - postcss: 8.5.0 - - cssnano-utils@5.0.0(postcss@8.5.0): - dependencies: - postcss: 8.5.0 - - cssnano@6.1.2(postcss@8.5.0): - dependencies: - cssnano-preset-default: 6.1.2(postcss@8.5.0) + css-declaration-sorter: 7.2.0(postcss@8.5.1) + cssnano-utils: 5.0.0(postcss@8.5.1) + postcss: 8.5.1 + postcss-calc: 10.1.0(postcss@8.5.1) + postcss-colormin: 7.0.2(postcss@8.5.1) + postcss-convert-values: 7.0.4(postcss@8.5.1) + postcss-discard-comments: 7.0.3(postcss@8.5.1) + postcss-discard-duplicates: 7.0.1(postcss@8.5.1) + postcss-discard-empty: 7.0.0(postcss@8.5.1) + postcss-discard-overridden: 7.0.0(postcss@8.5.1) + postcss-merge-longhand: 7.0.4(postcss@8.5.1) + postcss-merge-rules: 7.0.4(postcss@8.5.1) + postcss-minify-font-values: 7.0.0(postcss@8.5.1) + postcss-minify-gradients: 7.0.0(postcss@8.5.1) + postcss-minify-params: 7.0.2(postcss@8.5.1) + postcss-minify-selectors: 7.0.4(postcss@8.5.1) + postcss-normalize-charset: 7.0.0(postcss@8.5.1) + postcss-normalize-display-values: 7.0.0(postcss@8.5.1) + postcss-normalize-positions: 7.0.0(postcss@8.5.1) + postcss-normalize-repeat-style: 7.0.0(postcss@8.5.1) + postcss-normalize-string: 7.0.0(postcss@8.5.1) + postcss-normalize-timing-functions: 7.0.0(postcss@8.5.1) + postcss-normalize-unicode: 7.0.2(postcss@8.5.1) + postcss-normalize-url: 7.0.0(postcss@8.5.1) + postcss-normalize-whitespace: 7.0.0(postcss@8.5.1) + postcss-ordered-values: 7.0.1(postcss@8.5.1) + postcss-reduce-initial: 7.0.2(postcss@8.5.1) + postcss-reduce-transforms: 7.0.0(postcss@8.5.1) + postcss-svgo: 7.0.1(postcss@8.5.1) + postcss-unique-selectors: 7.0.3(postcss@8.5.1) + + cssnano-utils@4.0.2(postcss@8.5.1): + dependencies: + postcss: 8.5.1 + + cssnano-utils@5.0.0(postcss@8.5.1): + dependencies: + postcss: 8.5.1 + + cssnano@6.1.2(postcss@8.5.1): + dependencies: + cssnano-preset-default: 6.1.2(postcss@8.5.1) lilconfig: 3.1.3 - postcss: 8.5.0 + postcss: 8.5.1 - cssnano@7.0.6(postcss@8.5.0): + cssnano@7.0.6(postcss@8.5.1): dependencies: - cssnano-preset-default: 7.0.6(postcss@8.5.0) + cssnano-preset-default: 7.0.6(postcss@8.5.1) lilconfig: 3.1.3 - postcss: 8.5.0 + postcss: 8.5.1 csso@5.0.5: dependencies: @@ -38319,7 +38520,7 @@ snapshots: cssstyle@4.2.1: dependencies: - '@asamuzakjp/css-color': 2.8.2 + '@asamuzakjp/css-color': 2.8.3 rrweb-cssom: 0.8.0 csstype@3.1.3: {} @@ -38625,6 +38826,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.0: + dependencies: + ms: 2.1.3 + debug@4.4.0(supports-color@5.5.0): dependencies: ms: 2.1.3 @@ -38870,9 +39075,9 @@ snapshots: dependencies: esutils: 2.0.3 - docusaurus-lunr-search@3.5.0(@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + docusaurus-lunr-search@3.5.0(@docusaurus/core@3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.6)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@19.0.7)(react@18.3.1))(@swc/core@1.10.7(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10) autocomplete.js: 0.37.1 clsx: 1.2.1 gauge: 3.0.2 @@ -39072,7 +39277,7 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.80: {} + electron-to-chromium@1.5.83: {} elliptic@6.5.4: dependencies: @@ -39186,7 +39391,7 @@ snapshots: data-view-byte-offset: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 es-set-tostringtag: 2.1.0 es-to-primitive: 1.3.0 function.prototype.name: 1.1.8 @@ -39253,7 +39458,7 @@ snapshots: es-module-lexer@1.6.0: {} - es-object-atoms@1.0.0: + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -39706,7 +39911,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 escape-string-regexp: 4.0.0 eslint-scope: 8.2.0 eslint-visitor-keys: 4.2.0 @@ -39815,7 +40020,7 @@ snapshots: dependencies: estraverse: 5.3.0 - esrap@1.4.2: + esrap@1.4.3: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -40174,7 +40379,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: @@ -40383,7 +40588,7 @@ snapshots: semver-regex: 4.0.5 super-regex: 1.0.0 - flash-sdk@2.25.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10): + flash-sdk@2.25.6(@swc/core@1.10.7(@swc/helpers@0.5.15))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10): dependencies: '@coral-xyz/anchor': 0.27.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@pythnetwork/client': 2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -40433,6 +40638,8 @@ snapshots: async: 0.2.10 which: 1.3.1 + follow-redirects@1.15.9: {} + follow-redirects@1.15.9(debug@4.3.7): optionalDependencies: debug: 4.3.7 @@ -40589,24 +40796,24 @@ snapshots: fsevents@2.3.3: optional: true - fuels@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)): + fuels@0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)): dependencies: - '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/abi-typegen': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/contract': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/abi-coder': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/abi-typegen': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/account': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/address': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/contract': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/crypto': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/errors': 0.97.2 - '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/hasher': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/interfaces': 0.97.2 '@fuel-ts/math': 0.97.2 - '@fuel-ts/merkle': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/recipes': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/script': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) - '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/merkle': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/program': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/recipes': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/script': 0.97.2(encoding@0.1.13)(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/transactions': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) + '@fuel-ts/utils': 0.97.2(vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0)) '@fuel-ts/versions': 0.97.2 bundle-require: 5.1.0(esbuild@0.24.2) chalk: 4.1.2 @@ -40693,11 +40900,11 @@ snapshots: dependencies: is-property: 1.0.2 - genlayer-js@0.4.7(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1): + genlayer-js@0.4.7(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(bufferutil@4.0.9)(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8): dependencies: eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2)) typescript-parsec: 0.3.4 - viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@6.0.5)(zod@3.24.1) + viem: 2.21.58(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8) transitivePeerDependencies: - '@typescript-eslint/parser' - bufferutil @@ -40724,7 +40931,7 @@ snapshots: call-bind-apply-helpers: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 function-bind: 1.1.2 get-proto: 1.0.1 gopd: 1.2.0 @@ -40764,7 +40971,7 @@ snapshots: get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 get-stdin@9.0.0: {} @@ -40997,6 +41204,16 @@ snapshots: google-protobuf@3.21.4: {} + google-sr-selectors@1.1.0: {} + + google-sr@4.1.0: + dependencies: + axios: 1.7.9 + cheerio: 1.0.0-rc.12 + google-sr-selectors: 1.1.0 + transitivePeerDependencies: + - debug + gopd@1.2.0: {} got@11.8.6: @@ -41085,7 +41302,7 @@ snapshots: groq-sdk@0.5.0(encoding@0.1.13): dependencies: - '@types/node': 18.19.70 + '@types/node': 18.19.71 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -41510,7 +41727,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -41566,14 +41783,14 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -41608,9 +41825,9 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.5.0): + icss-utils@5.1.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 idb-keyval@6.2.1: {} @@ -42184,7 +42401,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -42208,7 +42425,7 @@ snapshots: iterator.prototype@1.1.5: dependencies: define-data-property: 1.1.4 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 get-intrinsic: 1.2.7 get-proto: 1.0.1 has-symbols: 1.1.0 @@ -42301,16 +42518,35 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@18.19.70)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)): + jest-cli@29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(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@18.19.70)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) + create-jest: 29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@18.19.70)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-cli@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@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)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@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)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@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 @@ -42339,16 +42575,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@22.10.6)(babel-plugin-macros@3.1.0): + jest-cli@29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.10.6)(babel-plugin-macros@3.1.0) + create-jest: 29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.10.6)(babel-plugin-macros@3.1.0) + jest-config: 29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -42377,7 +42613,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@18.19.70)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)): + jest-config@29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)): dependencies: '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 @@ -42402,13 +42638,13 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 18.19.70 - ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3) + '@types/node': 18.19.71 + ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)): + jest-config@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)): dependencies: '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 @@ -42434,7 +42670,38 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.17.9 - ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3) + ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): + dependencies: + '@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 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.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 + 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.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -42501,7 +42768,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@22.10.6)(babel-plugin-macros@3.1.0): + jest-config@29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0): dependencies: '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 @@ -42526,7 +42793,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.10.6 + '@types/node': 22.10.7 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -42783,12 +43050,24 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@18.19.70)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)): + jest@29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@18.19.70)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) + jest-cli: 29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest@29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@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@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -42807,12 +43086,12 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@22.10.6)(babel-plugin-macros@3.1.0): + jest@29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.10.6)(babel-plugin-macros@3.1.0) + jest-cli: 29.7.0(@types/node@22.10.7)(babel-plugin-macros@3.1.0) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -43196,7 +43475,7 @@ snapshots: zod-to-json-schema: 3.24.1(zod@3.23.8) optionalDependencies: '@langchain/groq': 0.1.3(@langchain/core@0.3.30(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) - axios: 1.7.9(debug@4.4.0) + axios: 1.7.9 handlebars: 4.7.8 transitivePeerDependencies: - encoding @@ -43493,7 +43772,7 @@ snapshots: local-pkg@0.5.1: dependencies: mlly: 1.7.4 - pkg-types: 1.3.0 + pkg-types: 1.3.1 locate-character@3.0.0: {} @@ -44531,17 +44810,17 @@ snapshots: mkdist@1.6.0(typescript@5.7.3): dependencies: - autoprefixer: 10.4.20(postcss@8.5.0) + autoprefixer: 10.4.20(postcss@8.5.1) citty: 0.1.6 - cssnano: 7.0.6(postcss@8.5.0) + cssnano: 7.0.6(postcss@8.5.1) defu: 6.1.4 esbuild: 0.24.2 jiti: 1.21.7 mlly: 1.7.4 pathe: 1.1.2 - pkg-types: 1.3.0 - postcss: 8.5.0 - postcss-nested: 6.2.0(postcss@8.5.0) + pkg-types: 1.3.1 + postcss: 8.5.1 + postcss-nested: 6.2.0(postcss@8.5.1) semver: 7.6.3 tinyglobby: 0.2.10 optionalDependencies: @@ -44551,7 +44830,7 @@ snapshots: dependencies: acorn: 8.14.0 pathe: 2.0.1 - pkg-types: 1.3.0 + pkg-types: 1.3.1 ufo: 1.5.4 mock-socket@9.3.1: {} @@ -44813,7 +45092,7 @@ snapshots: transitivePeerDependencies: - supports-color - node-abi@3.71.0: + node-abi@3.73.0: dependencies: semver: 7.6.3 @@ -45105,7 +45384,7 @@ snapshots: '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 - axios: 1.7.9(debug@4.4.0) + axios: 1.7.9 chalk: 4.1.0 cli-cursor: 3.1.0 cli-spinners: 2.6.1 @@ -45155,7 +45434,7 @@ snapshots: consola: 3.4.0 execa: 8.0.1 pathe: 1.1.2 - pkg-types: 1.3.0 + pkg-types: 1.3.1 ufo: 1.5.4 o3@1.0.3: @@ -45182,7 +45461,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 has-symbols: 1.1.0 object-keys: 1.1.1 @@ -45190,14 +45469,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 object.fromentries@2.0.8: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.9 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 object.groupby@1.0.3: dependencies: @@ -45210,7 +45489,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 obuf@1.1.2: {} @@ -45243,14 +45522,6 @@ snapshots: optionalDependencies: zod: 3.23.8 - ollama-ai-provider@0.16.1(zod@3.24.1): - dependencies: - '@ai-sdk/provider': 0.0.26 - '@ai-sdk/provider-utils': 1.0.22(zod@3.24.1) - partial-json: 0.1.7 - optionalDependencies: - zod: 3.24.1 - omggif@1.0.10: {} on-exit-leak-free@0.2.0: {} @@ -45277,7 +45548,7 @@ snapshots: dependencies: mimic-function: 5.0.1 - oniguruma-to-es@1.0.0: + oniguruma-to-es@2.0.0: dependencies: emoji-regex-xs: 1.0.0 regex: 5.1.1 @@ -45305,6 +45576,18 @@ snapshots: platform: 1.3.6 protobufjs: 7.4.0 + open-jsonrpc-provider@0.2.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + axios: 0.27.2 + reconnecting-websocket: 4.4.0 + websocket: 1.0.35 + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + open-jsonrpc-provider@0.2.1(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: axios: 0.27.2 @@ -45325,7 +45608,7 @@ snapshots: openai@4.73.0(encoding@0.1.13)(zod@3.23.8): dependencies: - '@types/node': 18.19.70 + '@types/node': 18.19.71 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -45339,7 +45622,7 @@ snapshots: openai@4.73.0(encoding@0.1.13)(zod@3.24.1): dependencies: - '@types/node': 18.19.70 + '@types/node': 18.19.71 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -45353,7 +45636,7 @@ snapshots: openai@4.78.1(encoding@0.1.13)(zod@3.23.8): dependencies: - '@types/node': 18.19.70 + '@types/node': 18.19.71 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -45367,7 +45650,7 @@ snapshots: openai@4.78.1(encoding@0.1.13)(zod@3.24.1): dependencies: - '@types/node': 18.19.70 + '@types/node': 18.19.71 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -45446,8 +45729,8 @@ snapshots: ox@0.4.2(typescript@5.7.3)(zod@3.24.1): dependencies: '@adraffy/ens-normalize': 1.11.0 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 + '@noble/curves': 1.7.0 + '@noble/hashes': 1.6.1 '@scure/bip32': 1.6.1 '@scure/bip39': 1.5.1 abitype: 1.0.7(typescript@5.7.3)(zod@3.24.1) @@ -45457,14 +45740,14 @@ snapshots: transitivePeerDependencies: - zod - ox@0.4.4(typescript@5.6.3)(zod@3.24.1): + ox@0.4.4(typescript@5.6.3)(zod@3.23.8): dependencies: '@adraffy/ens-normalize': 1.11.0 '@noble/curves': 1.7.0 '@noble/hashes': 1.6.1 '@scure/bip32': 1.6.0 '@scure/bip39': 1.5.0 - abitype: 1.0.7(typescript@5.6.3)(zod@3.24.1) + abitype: 1.0.7(typescript@5.6.3)(zod@3.23.8) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.6.3 @@ -45932,11 +46215,11 @@ snapshots: dependencies: find-up: 6.3.0 - pkg-types@1.3.0: + pkg-types@1.3.1: dependencies: confbox: 0.1.8 mlly: 1.7.4 - pathe: 1.1.2 + pathe: 2.0.1 pkg-up@3.1.0: dependencies: @@ -46065,29 +46348,29 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-attribute-case-insensitive@7.0.1(postcss@8.5.0): + postcss-attribute-case-insensitive@7.0.1(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 7.0.0 - postcss-calc@10.1.0(postcss@8.5.0): + postcss-calc@10.1.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 - postcss-calc@9.0.1(postcss@8.5.0): + postcss-calc@9.0.1(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - postcss-clamp@4.1.0(postcss@8.5.0): + postcss-clamp@4.1.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-cli@11.0.0(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2): + postcss-cli@11.0.0(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2): dependencies: chokidar: 3.6.0 dependency-graph: 0.11.0 @@ -46095,9 +46378,9 @@ snapshots: get-stdin: 9.0.0 globby: 14.0.2 picocolors: 1.1.1 - postcss: 8.5.0 - postcss-load-config: 5.1.0(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2) - postcss-reporter: 7.1.0(postcss@8.5.0) + postcss: 8.5.1 + postcss-load-config: 5.1.0(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2) + postcss-reporter: 7.1.0(postcss@8.5.1) pretty-hrtime: 1.0.3 read-cache: 1.0.0 slash: 5.1.0 @@ -46106,564 +46389,564 @@ snapshots: - jiti - tsx - postcss-color-functional-notation@7.0.7(postcss@8.5.0): + postcss-color-functional-notation@7.0.7(postcss@8.5.1): dependencies: '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.0) - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 - postcss-color-hex-alpha@10.0.0(postcss@8.5.0): + postcss-color-hex-alpha@10.0.0(postcss@8.5.1): dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-color-rebeccapurple@10.0.0(postcss@8.5.0): + postcss-color-rebeccapurple@10.0.0(postcss@8.5.1): dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-colormin@6.1.0(postcss@8.5.0): + postcss-colormin@6.1.0(postcss@8.5.1): dependencies: browserslist: 4.24.4 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.2(postcss@8.5.0): + postcss-colormin@7.0.2(postcss@8.5.1): dependencies: browserslist: 4.24.4 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-convert-values@6.1.0(postcss@8.5.0): + postcss-convert-values@6.1.0(postcss@8.5.1): dependencies: browserslist: 4.24.4 - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.4(postcss@8.5.0): + postcss-convert-values@7.0.4(postcss@8.5.1): dependencies: browserslist: 4.24.4 - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-custom-media@11.0.5(postcss@8.5.0): + postcss-custom-media@11.0.5(postcss@8.5.1): dependencies: '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - postcss: 8.5.0 + postcss: 8.5.1 - postcss-custom-properties@14.0.4(postcss@8.5.0): + postcss-custom-properties@14.0.4(postcss@8.5.1): dependencies: '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-custom-selectors@8.0.4(postcss@8.5.0): + postcss-custom-selectors@8.0.4(postcss@8.5.1): dependencies: '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 7.0.0 - postcss-dir-pseudo-class@9.0.1(postcss@8.5.0): + postcss-dir-pseudo-class@9.0.1(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 7.0.0 - postcss-discard-comments@6.0.2(postcss@8.5.0): + postcss-discard-comments@6.0.2(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss-discard-comments@7.0.3(postcss@8.5.0): + postcss-discard-comments@7.0.3(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-discard-duplicates@6.0.3(postcss@8.5.0): + postcss-discard-duplicates@6.0.3(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss-discard-duplicates@7.0.1(postcss@8.5.0): + postcss-discard-duplicates@7.0.1(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss-discard-empty@6.0.3(postcss@8.5.0): + postcss-discard-empty@6.0.3(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss-discard-empty@7.0.0(postcss@8.5.0): + postcss-discard-empty@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss-discard-overridden@6.0.2(postcss@8.5.0): + postcss-discard-overridden@6.0.2(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss-discard-overridden@7.0.0(postcss@8.5.0): + postcss-discard-overridden@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss-discard-unused@6.0.5(postcss@8.5.0): + postcss-discard-unused@6.0.5(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-double-position-gradients@6.0.0(postcss@8.5.0): + postcss-double-position-gradients@6.0.0(postcss@8.5.1): dependencies: - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.0) - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-focus-visible@10.0.1(postcss@8.5.0): + postcss-focus-visible@10.0.1(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 7.0.0 - postcss-focus-within@9.0.1(postcss@8.5.0): + postcss-focus-within@9.0.1(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 7.0.0 - postcss-font-variant@5.0.0(postcss@8.5.0): + postcss-font-variant@5.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss-gap-properties@6.0.0(postcss@8.5.0): + postcss-gap-properties@6.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss-image-set-function@7.0.0(postcss@8.5.0): + postcss-image-set-function@7.0.0(postcss@8.5.1): dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-import@15.1.0(postcss@8.5.0): + postcss-import@15.1.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.10 - postcss-js@4.0.1(postcss@8.5.0): + postcss-js@4.0.1(postcss@8.5.1): dependencies: camelcase-css: 2.0.1 - postcss: 8.5.0 + postcss: 8.5.1 - postcss-lab-function@7.0.7(postcss@8.5.0): + postcss-lab-function@7.0.7(postcss@8.5.1): dependencies: '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.0) - '@csstools/utilities': 2.0.0(postcss@8.5.0) - postcss: 8.5.0 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) + '@csstools/utilities': 2.0.0(postcss@8.5.1) + postcss: 8.5.1 - postcss-load-config@4.0.2(postcss@8.5.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.6)(typescript@5.6.3)): + postcss-load-config@4.0.2(postcss@8.5.1)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3)): dependencies: lilconfig: 3.1.3 yaml: 2.7.0 optionalDependencies: - postcss: 8.5.0 - ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.6)(typescript@5.6.3) + postcss: 8.5.1 + ts-node: 10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3) - postcss-load-config@5.1.0(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2): + postcss-load-config@5.1.0(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2): dependencies: lilconfig: 3.1.3 yaml: 2.7.0 optionalDependencies: jiti: 2.4.2 - postcss: 8.5.0 + postcss: 8.5.1 tsx: 4.19.2 - postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(yaml@2.7.0): + postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(yaml@2.7.0): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.4.2 - postcss: 8.5.0 + postcss: 8.5.1 tsx: 4.19.2 yaml: 2.7.0 - postcss-loader@7.3.4(postcss@8.5.0)(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): + postcss-loader@7.3.4(postcss@8.5.1)(typescript@5.7.3)(webpack@5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15))): dependencies: cosmiconfig: 8.3.6(typescript@5.7.3) jiti: 1.21.7 - postcss: 8.5.0 + postcss: 8.5.1 semver: 7.6.3 webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) transitivePeerDependencies: - typescript - postcss-logical@8.0.0(postcss@8.5.0): + postcss-logical@8.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-merge-idents@6.0.3(postcss@8.5.0): + postcss-merge-idents@6.0.3(postcss@8.5.1): dependencies: - cssnano-utils: 4.0.2(postcss@8.5.0) - postcss: 8.5.0 + cssnano-utils: 4.0.2(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-merge-longhand@6.0.5(postcss@8.5.0): + postcss-merge-longhand@6.0.5(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - stylehacks: 6.1.1(postcss@8.5.0) + stylehacks: 6.1.1(postcss@8.5.1) - postcss-merge-longhand@7.0.4(postcss@8.5.0): + postcss-merge-longhand@7.0.4(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.5.0) + stylehacks: 7.0.4(postcss@8.5.1) - postcss-merge-rules@6.1.1(postcss@8.5.0): + postcss-merge-rules@6.1.1(postcss@8.5.1): dependencies: browserslist: 4.24.4 caniuse-api: 3.0.0 - cssnano-utils: 4.0.2(postcss@8.5.0) - postcss: 8.5.0 + cssnano-utils: 4.0.2(postcss@8.5.1) + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-merge-rules@7.0.4(postcss@8.5.0): + postcss-merge-rules@7.0.4(postcss@8.5.1): dependencies: browserslist: 4.24.4 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.5.0) - postcss: 8.5.0 + cssnano-utils: 5.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-minify-font-values@6.1.0(postcss@8.5.0): + postcss-minify-font-values@6.1.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-minify-font-values@7.0.0(postcss@8.5.0): + postcss-minify-font-values@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-minify-gradients@6.0.3(postcss@8.5.0): + postcss-minify-gradients@6.0.3(postcss@8.5.1): dependencies: colord: 2.9.3 - cssnano-utils: 4.0.2(postcss@8.5.0) - postcss: 8.5.0 + cssnano-utils: 4.0.2(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.5.0): + postcss-minify-gradients@7.0.0(postcss@8.5.1): dependencies: colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.5.0) - postcss: 8.5.0 + cssnano-utils: 5.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-minify-params@6.1.0(postcss@8.5.0): + postcss-minify-params@6.1.0(postcss@8.5.1): dependencies: browserslist: 4.24.4 - cssnano-utils: 4.0.2(postcss@8.5.0) - postcss: 8.5.0 + cssnano-utils: 4.0.2(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.2(postcss@8.5.0): + postcss-minify-params@7.0.2(postcss@8.5.1): dependencies: browserslist: 4.24.4 - cssnano-utils: 5.0.0(postcss@8.5.0) - postcss: 8.5.0 + cssnano-utils: 5.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-minify-selectors@6.0.4(postcss@8.5.0): + postcss-minify-selectors@6.0.4(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-minify-selectors@7.0.4(postcss@8.5.0): + postcss-minify-selectors@7.0.4(postcss@8.5.1): dependencies: cssesc: 3.0.0 - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-modules-extract-imports@3.1.0(postcss@8.5.0): + postcss-modules-extract-imports@3.1.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss-modules-local-by-default@4.2.0(postcss@8.5.0): + postcss-modules-local-by-default@4.2.0(postcss@8.5.1): dependencies: - icss-utils: 5.1.0(postcss@8.5.0) - postcss: 8.5.0 + icss-utils: 5.1.0(postcss@8.5.1) + postcss: 8.5.1 postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.1(postcss@8.5.0): + postcss-modules-scope@3.2.1(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 7.0.0 - postcss-modules-values@4.0.0(postcss@8.5.0): + postcss-modules-values@4.0.0(postcss@8.5.1): dependencies: - icss-utils: 5.1.0(postcss@8.5.0) - postcss: 8.5.0 + icss-utils: 5.1.0(postcss@8.5.1) + postcss: 8.5.1 - postcss-nested@6.2.0(postcss@8.5.0): + postcss-nested@6.2.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-nesting@13.0.1(postcss@8.5.0): + postcss-nesting@13.0.1(postcss@8.5.1): dependencies: '@csstools/selector-resolve-nested': 3.0.0(postcss-selector-parser@7.0.0) '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 7.0.0 - postcss-normalize-charset@6.0.2(postcss@8.5.0): + postcss-normalize-charset@6.0.2(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss-normalize-charset@7.0.0(postcss@8.5.0): + postcss-normalize-charset@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss-normalize-display-values@6.0.2(postcss@8.5.0): + postcss-normalize-display-values@6.0.2(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-display-values@7.0.0(postcss@8.5.0): + postcss-normalize-display-values@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-positions@6.0.2(postcss@8.5.0): + postcss-normalize-positions@6.0.2(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.5.0): + postcss-normalize-positions@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@6.0.2(postcss@8.5.0): + postcss-normalize-repeat-style@6.0.2(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.5.0): + postcss-normalize-repeat-style@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-string@6.0.2(postcss@8.5.0): + postcss-normalize-string@6.0.2(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.5.0): + postcss-normalize-string@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@6.0.2(postcss@8.5.0): + postcss-normalize-timing-functions@6.0.2(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.5.0): + postcss-normalize-timing-functions@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@6.1.0(postcss@8.5.0): + postcss-normalize-unicode@6.1.0(postcss@8.5.1): dependencies: browserslist: 4.24.4 - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.2(postcss@8.5.0): + postcss-normalize-unicode@7.0.2(postcss@8.5.1): dependencies: browserslist: 4.24.4 - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-url@6.0.2(postcss@8.5.0): + postcss-normalize-url@6.0.2(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.5.0): + postcss-normalize-url@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@6.0.2(postcss@8.5.0): + postcss-normalize-whitespace@6.0.2(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.5.0): + postcss-normalize-whitespace@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-opacity-percentage@3.0.0(postcss@8.5.0): + postcss-opacity-percentage@3.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss-ordered-values@6.0.2(postcss@8.5.0): + postcss-ordered-values@6.0.2(postcss@8.5.1): dependencies: - cssnano-utils: 4.0.2(postcss@8.5.0) - postcss: 8.5.0 + cssnano-utils: 4.0.2(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.1(postcss@8.5.0): + postcss-ordered-values@7.0.1(postcss@8.5.1): dependencies: - cssnano-utils: 5.0.0(postcss@8.5.0) - postcss: 8.5.0 + cssnano-utils: 5.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-overflow-shorthand@6.0.0(postcss@8.5.0): + postcss-overflow-shorthand@6.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-page-break@3.0.4(postcss@8.5.0): + postcss-page-break@3.0.4(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss-place@10.0.0(postcss@8.5.0): + postcss-place@10.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-preset-env@10.1.3(postcss@8.5.0): - dependencies: - '@csstools/postcss-cascade-layers': 5.0.1(postcss@8.5.0) - '@csstools/postcss-color-function': 4.0.7(postcss@8.5.0) - '@csstools/postcss-color-mix-function': 3.0.7(postcss@8.5.0) - '@csstools/postcss-content-alt-text': 2.0.4(postcss@8.5.0) - '@csstools/postcss-exponential-functions': 2.0.6(postcss@8.5.0) - '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.0) - '@csstools/postcss-gamut-mapping': 2.0.7(postcss@8.5.0) - '@csstools/postcss-gradients-interpolation-method': 5.0.7(postcss@8.5.0) - '@csstools/postcss-hwb-function': 4.0.7(postcss@8.5.0) - '@csstools/postcss-ic-unit': 4.0.0(postcss@8.5.0) - '@csstools/postcss-initial': 2.0.0(postcss@8.5.0) - '@csstools/postcss-is-pseudo-class': 5.0.1(postcss@8.5.0) - '@csstools/postcss-light-dark-function': 2.0.7(postcss@8.5.0) - '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.0) - '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.0) - '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.0) - '@csstools/postcss-logical-resize': 3.0.0(postcss@8.5.0) - '@csstools/postcss-logical-viewport-units': 3.0.3(postcss@8.5.0) - '@csstools/postcss-media-minmax': 2.0.6(postcss@8.5.0) - '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.4(postcss@8.5.0) - '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.0) - '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.0) - '@csstools/postcss-oklab-function': 4.0.7(postcss@8.5.0) - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.0) - '@csstools/postcss-random-function': 1.0.2(postcss@8.5.0) - '@csstools/postcss-relative-color-syntax': 3.0.7(postcss@8.5.0) - '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.0) - '@csstools/postcss-sign-functions': 1.1.1(postcss@8.5.0) - '@csstools/postcss-stepped-value-functions': 4.0.6(postcss@8.5.0) - '@csstools/postcss-text-decoration-shorthand': 4.0.1(postcss@8.5.0) - '@csstools/postcss-trigonometric-functions': 4.0.6(postcss@8.5.0) - '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.0) - autoprefixer: 10.4.20(postcss@8.5.0) + postcss-preset-env@10.1.3(postcss@8.5.1): + dependencies: + '@csstools/postcss-cascade-layers': 5.0.1(postcss@8.5.1) + '@csstools/postcss-color-function': 4.0.7(postcss@8.5.1) + '@csstools/postcss-color-mix-function': 3.0.7(postcss@8.5.1) + '@csstools/postcss-content-alt-text': 2.0.4(postcss@8.5.1) + '@csstools/postcss-exponential-functions': 2.0.6(postcss@8.5.1) + '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.1) + '@csstools/postcss-gamut-mapping': 2.0.7(postcss@8.5.1) + '@csstools/postcss-gradients-interpolation-method': 5.0.7(postcss@8.5.1) + '@csstools/postcss-hwb-function': 4.0.7(postcss@8.5.1) + '@csstools/postcss-ic-unit': 4.0.0(postcss@8.5.1) + '@csstools/postcss-initial': 2.0.0(postcss@8.5.1) + '@csstools/postcss-is-pseudo-class': 5.0.1(postcss@8.5.1) + '@csstools/postcss-light-dark-function': 2.0.7(postcss@8.5.1) + '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.1) + '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.1) + '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.1) + '@csstools/postcss-logical-resize': 3.0.0(postcss@8.5.1) + '@csstools/postcss-logical-viewport-units': 3.0.3(postcss@8.5.1) + '@csstools/postcss-media-minmax': 2.0.6(postcss@8.5.1) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.4(postcss@8.5.1) + '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.1) + '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.1) + '@csstools/postcss-oklab-function': 4.0.7(postcss@8.5.1) + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.1) + '@csstools/postcss-random-function': 1.0.2(postcss@8.5.1) + '@csstools/postcss-relative-color-syntax': 3.0.7(postcss@8.5.1) + '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.1) + '@csstools/postcss-sign-functions': 1.1.1(postcss@8.5.1) + '@csstools/postcss-stepped-value-functions': 4.0.6(postcss@8.5.1) + '@csstools/postcss-text-decoration-shorthand': 4.0.1(postcss@8.5.1) + '@csstools/postcss-trigonometric-functions': 4.0.6(postcss@8.5.1) + '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.1) + autoprefixer: 10.4.20(postcss@8.5.1) browserslist: 4.24.4 - css-blank-pseudo: 7.0.1(postcss@8.5.0) - css-has-pseudo: 7.0.2(postcss@8.5.0) - css-prefers-color-scheme: 10.0.0(postcss@8.5.0) + css-blank-pseudo: 7.0.1(postcss@8.5.1) + css-has-pseudo: 7.0.2(postcss@8.5.1) + css-prefers-color-scheme: 10.0.0(postcss@8.5.1) cssdb: 8.2.3 - postcss: 8.5.0 - postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.0) - postcss-clamp: 4.1.0(postcss@8.5.0) - postcss-color-functional-notation: 7.0.7(postcss@8.5.0) - postcss-color-hex-alpha: 10.0.0(postcss@8.5.0) - postcss-color-rebeccapurple: 10.0.0(postcss@8.5.0) - postcss-custom-media: 11.0.5(postcss@8.5.0) - postcss-custom-properties: 14.0.4(postcss@8.5.0) - postcss-custom-selectors: 8.0.4(postcss@8.5.0) - postcss-dir-pseudo-class: 9.0.1(postcss@8.5.0) - postcss-double-position-gradients: 6.0.0(postcss@8.5.0) - postcss-focus-visible: 10.0.1(postcss@8.5.0) - postcss-focus-within: 9.0.1(postcss@8.5.0) - postcss-font-variant: 5.0.0(postcss@8.5.0) - postcss-gap-properties: 6.0.0(postcss@8.5.0) - postcss-image-set-function: 7.0.0(postcss@8.5.0) - postcss-lab-function: 7.0.7(postcss@8.5.0) - postcss-logical: 8.0.0(postcss@8.5.0) - postcss-nesting: 13.0.1(postcss@8.5.0) - postcss-opacity-percentage: 3.0.0(postcss@8.5.0) - postcss-overflow-shorthand: 6.0.0(postcss@8.5.0) - postcss-page-break: 3.0.4(postcss@8.5.0) - postcss-place: 10.0.0(postcss@8.5.0) - postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.0) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.0) - postcss-selector-not: 8.0.1(postcss@8.5.0) - - postcss-pseudo-class-any-link@10.0.1(postcss@8.5.0): - dependencies: - postcss: 8.5.0 + postcss: 8.5.1 + postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.1) + postcss-clamp: 4.1.0(postcss@8.5.1) + postcss-color-functional-notation: 7.0.7(postcss@8.5.1) + postcss-color-hex-alpha: 10.0.0(postcss@8.5.1) + postcss-color-rebeccapurple: 10.0.0(postcss@8.5.1) + postcss-custom-media: 11.0.5(postcss@8.5.1) + postcss-custom-properties: 14.0.4(postcss@8.5.1) + postcss-custom-selectors: 8.0.4(postcss@8.5.1) + postcss-dir-pseudo-class: 9.0.1(postcss@8.5.1) + postcss-double-position-gradients: 6.0.0(postcss@8.5.1) + postcss-focus-visible: 10.0.1(postcss@8.5.1) + postcss-focus-within: 9.0.1(postcss@8.5.1) + postcss-font-variant: 5.0.0(postcss@8.5.1) + postcss-gap-properties: 6.0.0(postcss@8.5.1) + postcss-image-set-function: 7.0.0(postcss@8.5.1) + postcss-lab-function: 7.0.7(postcss@8.5.1) + postcss-logical: 8.0.0(postcss@8.5.1) + postcss-nesting: 13.0.1(postcss@8.5.1) + postcss-opacity-percentage: 3.0.0(postcss@8.5.1) + postcss-overflow-shorthand: 6.0.0(postcss@8.5.1) + postcss-page-break: 3.0.4(postcss@8.5.1) + postcss-place: 10.0.0(postcss@8.5.1) + postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.1) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.1) + postcss-selector-not: 8.0.1(postcss@8.5.1) + + postcss-pseudo-class-any-link@10.0.1(postcss@8.5.1): + dependencies: + postcss: 8.5.1 postcss-selector-parser: 7.0.0 - postcss-reduce-idents@6.0.3(postcss@8.5.0): + postcss-reduce-idents@6.0.3(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-reduce-initial@6.1.0(postcss@8.5.0): + postcss-reduce-initial@6.1.0(postcss@8.5.1): dependencies: browserslist: 4.24.4 caniuse-api: 3.0.0 - postcss: 8.5.0 + postcss: 8.5.1 - postcss-reduce-initial@7.0.2(postcss@8.5.0): + postcss-reduce-initial@7.0.2(postcss@8.5.1): dependencies: browserslist: 4.24.4 caniuse-api: 3.0.0 - postcss: 8.5.0 + postcss: 8.5.1 - postcss-reduce-transforms@6.0.2(postcss@8.5.0): + postcss-reduce-transforms@6.0.2(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-reduce-transforms@7.0.0(postcss@8.5.0): + postcss-reduce-transforms@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-replace-overflow-wrap@4.0.0(postcss@8.5.0): + postcss-replace-overflow-wrap@4.0.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss-reporter@7.1.0(postcss@8.5.0): + postcss-reporter@7.1.0(postcss@8.5.1): dependencies: picocolors: 1.1.1 - postcss: 8.5.0 + postcss: 8.5.1 thenby: 1.3.4 - postcss-selector-not@8.0.1(postcss@8.5.0): + postcss-selector-not@8.0.1(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 7.0.0 postcss-selector-parser@6.1.2: @@ -46676,40 +46959,40 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-sort-media-queries@5.2.0(postcss@8.5.0): + postcss-sort-media-queries@5.2.0(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 sort-css-media-queries: 2.2.0 - postcss-svgo@6.0.3(postcss@8.5.0): + postcss-svgo@6.0.3(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-svgo@7.0.1(postcss@8.5.0): + postcss-svgo@7.0.1(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@6.0.4(postcss@8.5.0): + postcss-unique-selectors@6.0.4(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-unique-selectors@7.0.3(postcss@8.5.0): + postcss-unique-selectors@7.0.3(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 postcss-value-parser@4.2.0: {} - postcss-zindex@6.0.2(postcss@8.5.0): + postcss-zindex@6.0.2(postcss@8.5.1): dependencies: - postcss: 8.5.0 + postcss: 8.5.1 - postcss@8.5.0: + postcss@8.5.1: dependencies: nanoid: 3.3.8 picocolors: 1.1.1 @@ -46747,7 +47030,7 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.71.0 + node-abi: 3.73.0 pump: 3.0.2 rc: 1.2.8 simple-get: 4.0.1 @@ -47073,7 +47356,7 @@ snapshots: dependencies: side-channel: 1.1.0 - qs@6.13.1: + qs@6.14.0: dependencies: side-channel: 1.1.0 @@ -47137,7 +47420,7 @@ snapshots: range-parser@1.2.1: {} - rate-limiter-flexible@5.0.4: {} + rate-limiter-flexible@5.0.5: {} raw-body@2.5.2: dependencies: @@ -47240,24 +47523,24 @@ snapshots: react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' webpack: 5.97.1(@swc/core@1.10.7(@swc/helpers@0.5.15)) - react-remove-scroll-bar@2.3.8(@types/react@19.0.6)(react@19.0.0): + react-remove-scroll-bar@2.3.8(@types/react@19.0.7)(react@19.0.0): dependencies: react: 19.0.0 - react-style-singleton: 2.2.3(@types/react@19.0.6)(react@19.0.0) + react-style-singleton: 2.2.3(@types/react@19.0.7)(react@19.0.0) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - react-remove-scroll@2.6.2(@types/react@19.0.6)(react@19.0.0): + react-remove-scroll@2.6.2(@types/react@19.0.7)(react@19.0.0): dependencies: react: 19.0.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.0.6)(react@19.0.0) - react-style-singleton: 2.2.3(@types/react@19.0.6)(react@19.0.0) + react-remove-scroll-bar: 2.3.8(@types/react@19.0.7)(react@19.0.0) + react-style-singleton: 2.2.3(@types/react@19.0.7)(react@19.0.0) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.0.6)(react@19.0.0) - use-sidecar: 1.1.3(@types/react@19.0.6)(react@19.0.0) + use-callback-ref: 1.3.3(@types/react@19.0.7)(react@19.0.0) + use-sidecar: 1.1.3(@types/react@19.0.7)(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 react-router-config@5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1): dependencies: @@ -47317,13 +47600,13 @@ snapshots: optionalDependencies: react-dom: 19.0.0(react@19.0.0) - react-style-singleton@2.2.3(@types/react@19.0.6)(react@19.0.0): + react-style-singleton@2.2.3(@types/react@19.0.7)(react@19.0.0): dependencies: get-nonce: 1.0.1 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 react-waypoint@10.3.0(react@18.3.1): dependencies: @@ -47515,7 +47798,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.9 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 get-intrinsic: 1.2.7 get-proto: 1.0.1 which-builtin-type: 1.2.1 @@ -47874,13 +48157,20 @@ snapshots: rrweb-cssom@0.8.0: {} + rss-to-json@2.1.1: + dependencies: + axios: 1.7.9 + fast-xml-parser: 4.5.1 + transitivePeerDependencies: + - debug + rtl-detect@1.1.2: {} rtlcss@4.3.0: dependencies: escalade: 3.2.0 picocolors: 1.1.1 - postcss: 8.5.0 + postcss: 8.5.1 strip-json-comments: 3.1.1 run-async@2.4.1: {} @@ -48125,7 +48415,7 @@ snapshots: dependencies: dunder-proto: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 setimmediate@1.0.5: {} @@ -48157,7 +48447,7 @@ snapshots: shallowequal@1.1.0: {} - sharp@0.32.6(bare-buffer@3.0.1): + sharp@0.32.6: dependencies: color: 4.2.3 detect-libc: 2.0.3 @@ -48165,7 +48455,7 @@ snapshots: prebuild-install: 7.1.2 semver: 7.6.3 simple-get: 4.0.1 - tar-fs: 3.0.7(bare-buffer@3.0.1) + tar-fs: 3.0.8 tunnel-agent: 0.6.0 transitivePeerDependencies: - bare-buffer @@ -48214,14 +48504,14 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 - shiki@1.26.2: + shiki@1.27.2: dependencies: - '@shikijs/core': 1.26.2 - '@shikijs/engine-javascript': 1.26.2 - '@shikijs/engine-oniguruma': 1.26.2 - '@shikijs/langs': 1.26.2 - '@shikijs/themes': 1.26.2 - '@shikijs/types': 1.26.2 + '@shikijs/core': 1.27.2 + '@shikijs/engine-javascript': 1.27.2 + '@shikijs/engine-oniguruma': 1.27.2 + '@shikijs/langs': 1.27.2 + '@shikijs/themes': 1.27.2 + '@shikijs/types': 1.27.2 '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 @@ -48394,7 +48684,7 @@ snapshots: socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -48420,13 +48710,13 @@ snapshots: solana-agent-kit@1.4.0(@noble/hashes@1.7.0)(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(arweave@1.15.5)(axios@1.7.9)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(handlebars@4.7.8)(react@19.0.0)(sodium-native@3.4.1)(typescript@5.7.3)(utf-8-validate@5.0.10): dependencies: '@3land/listings-sdk': 0.0.4(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@ai-sdk/openai': 1.0.18(zod@3.24.1) + '@ai-sdk/openai': 1.0.19(zod@3.24.1) '@bonfida/spl-name-service': 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@cks-systems/manifest-sdk': 0.1.59(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@langchain/core': 0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) '@langchain/groq': 0.1.3(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) - '@langchain/langgraph': 0.2.39(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))) + '@langchain/langgraph': 0.2.40(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))) '@langchain/openai': 0.3.17(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) '@lightprotocol/compressed-token': 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -48446,13 +48736,13 @@ snapshots: '@sqds/multisig': 2.1.3(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@tensor-oss/tensorswap-sdk': 4.5.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@tiplink/api': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10) - ai: 4.0.34(react@19.0.0)(zod@3.24.1) + ai: 4.0.38(react@19.0.0)(zod@3.24.1) bn.js: 5.2.1 bs58: 6.0.0 chai: 5.1.2 decimal.js: 10.4.3 dotenv: 16.4.7 - flash-sdk: 2.25.3(@swc/core@1.10.7(@swc/helpers@0.5.15))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + flash-sdk: 2.25.6(@swc/core@1.10.7(@swc/helpers@0.5.15))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) form-data: 4.0.1 langchain: 0.3.11(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(@langchain/groq@0.1.3(@langchain/core@0.3.30(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13))(axios@1.7.9)(encoding@0.1.13)(handlebars@4.7.8)(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) openai: 4.78.1(encoding@0.1.13)(zod@3.24.1) @@ -48549,21 +48839,21 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.20 + spdx-license-ids: 3.0.21 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.20 + spdx-license-ids: 3.0.21 spdx-expression-parse@4.0.0: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.20 + spdx-license-ids: 3.0.21 - spdx-license-ids@3.0.20: {} + spdx-license-ids@3.0.21: {} spdy-transport@3.0.0: dependencies: @@ -48652,9 +48942,9 @@ snapshots: dependencies: minipass: 7.1.2 - sswr@2.1.0(svelte@5.17.3): + sswr@2.1.0(svelte@5.18.0): dependencies: - svelte: 5.17.3 + svelte: 5.18.0 swrev: 4.0.0 stable-hash@0.0.4: {} @@ -48792,7 +49082,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.9 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 get-intrinsic: 1.2.7 gopd: 1.2.0 has-symbols: 1.1.0 @@ -48813,7 +49103,7 @@ snapshots: define-data-property: 1.1.4 define-properties: 1.2.1 es-abstract: 1.23.9 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 string.prototype.trimend@1.0.9: @@ -48821,13 +49111,13 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 string_decoder@0.10.31: {} @@ -48904,16 +49194,16 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - stylehacks@6.1.1(postcss@8.5.0): + stylehacks@6.1.1(postcss@8.5.1): dependencies: browserslist: 4.24.4 - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - stylehacks@7.0.4(postcss@8.5.0): + stylehacks@7.0.4(postcss@8.5.1): dependencies: browserslist: 4.24.4 - postcss: 8.5.0 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 stylis@4.2.0: {} @@ -48961,7 +49251,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte@5.17.3: + svelte@5.18.0: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 @@ -48972,7 +49262,7 @@ snapshots: axobject-query: 4.1.0 clsx: 2.1.1 esm-env: 1.2.2 - esrap: 1.4.2 + esrap: 1.4.3 is-reference: 3.0.3 locate-character: 3.0.0 magic-string: 0.30.17 @@ -49016,11 +49306,11 @@ snapshots: tailwind-merge@2.6.0: {} - tailwindcss-animate@1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.6)(typescript@5.6.3))): + tailwindcss-animate@1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3))): dependencies: - tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.6)(typescript@5.6.3)) + tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3)) - tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.6)(typescript@5.6.3)): + tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -49036,11 +49326,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.0 - postcss-import: 15.1.0(postcss@8.5.0) - postcss-js: 4.0.1(postcss@8.5.0) - postcss-load-config: 4.0.2(postcss@8.5.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.6)(typescript@5.6.3)) - postcss-nested: 6.2.0(postcss@8.5.0) + postcss: 8.5.1 + postcss-import: 15.1.0(postcss@8.5.1) + postcss-js: 4.0.1(postcss@8.5.1) + postcss-load-config: 4.0.2(postcss@8.5.1)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.6.3)) + postcss-nested: 6.2.0(postcss@8.5.1) postcss-selector-parser: 6.1.2 resolve: 1.22.10 sucrase: 3.35.0 @@ -49065,13 +49355,13 @@ snapshots: pump: 3.0.2 tar-stream: 2.2.0 - tar-fs@3.0.7(bare-buffer@3.0.1): + tar-fs@3.0.8: dependencies: pump: 3.0.2 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 2.3.5(bare-buffer@3.0.1) - bare-path: 2.1.3 + bare-fs: 4.0.1 + bare-path: 3.0.0 transitivePeerDependencies: - bare-buffer @@ -49181,21 +49471,21 @@ snapshots: dependencies: any-promise: 1.3.0 - thirdweb@5.83.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(ioredis@5.4.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1): + thirdweb@5.84.0(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(bufferutil@4.0.9)(encoding@0.1.13)(ethers@6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(ioredis@5.4.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1): dependencies: '@coinbase/wallet-sdk': 4.2.4 - '@emotion/react': 11.14.0(@types/react@19.0.6)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.6)(react@19.0.0))(@types/react@19.0.6)(react@19.0.0) + '@emotion/react': 11.14.0(@types/react@19.0.7)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.7)(react@19.0.0))(@types/react@19.0.7)(react@19.0.0) '@google/model-viewer': 2.1.1 '@noble/curves': 1.7.0 '@noble/hashes': 1.6.1 '@passwordless-id/webauthn': 2.1.2 - '@radix-ui/react-dialog': 1.1.4(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-dialog': 1.1.4(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-icons': 1.3.2(react@19.0.0) - '@radix-ui/react-tooltip': 1.1.5(@types/react-dom@19.0.3(@types/react@19.0.6))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-tooltip': 1.1.5(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tanstack/react-query': 5.62.16(react@19.0.0) - '@walletconnect/ethereum-provider': 2.17.3(@types/react@19.0.6)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.4.2)(react@19.0.0)(utf-8-validate@5.0.10) + '@walletconnect/ethereum-provider': 2.17.3(@types/react@19.0.7)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.4.2)(react@19.0.0)(utf-8-validate@5.0.10) '@walletconnect/sign-client': 2.17.3(bufferutil@4.0.9)(ioredis@5.4.2)(utf-8-validate@5.0.10) abitype: 1.0.7(typescript@5.7.3)(zod@3.24.1) cross-spawn: 7.0.6 @@ -49307,15 +49597,15 @@ snapshots: tinyspy@3.0.2: {} - tldts-core@6.1.71: {} + tldts-core@6.1.72: {} - tldts-experimental@6.1.71: + tldts-experimental@6.1.72: dependencies: - tldts-core: 6.1.71 + tldts-core: 6.1.72 - tldts@6.1.71: + tldts@6.1.72: dependencies: - tldts-core: 6.1.71 + tldts-core: 6.1.72 tmp-promise@3.0.3: dependencies: @@ -49347,7 +49637,7 @@ snapshots: together-ai@0.7.0(encoding@0.1.13): dependencies: - '@types/node': 18.19.70 + '@types/node': 18.19.71 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -49383,7 +49673,7 @@ snapshots: tough-cookie@5.1.0: dependencies: - tldts: 6.1.71 + tldts: 6.1.72 tr46@0.0.3: {} @@ -49395,7 +49685,7 @@ snapshots: dependencies: punycode: 2.3.1 - traverse@0.6.10: + traverse@0.6.11: dependencies: gopd: 1.2.0 typedarray.prototype.slice: 1.0.5 @@ -49449,12 +49739,12 @@ snapshots: babel-jest: 29.7.0(@babel/core@7.26.0) esbuild: 0.24.2 - 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@18.19.70)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)))(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@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(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@18.19.70)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3)) + jest: 29.7.0(@types/node@18.19.71)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(typescript@5.6.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -49468,12 +49758,12 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.0) - 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@22.10.6)(babel-plugin-macros@3.1.0))(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)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@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@22.10.6)(babel-plugin-macros@3.1.0) + jest: 29.7.0(@types/node@20.17.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.10.7(@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 @@ -49510,14 +49800,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.70)(typescript@5.6.3): + ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@18.19.71)(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': 18.19.70 + '@types/node': 18.19.71 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -49530,6 +49820,27 @@ snapshots: optionalDependencies: '@swc/core': 1.10.7(@swc/helpers@0.5.15) + ts-node@10.9.2(@swc/core@1.10.7(@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.7(@swc/helpers@0.5.15) + optional: true + ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -49550,35 +49861,35 @@ snapshots: optionalDependencies: '@swc/core': 1.10.7(@swc/helpers@0.5.15) - ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.6)(typescript@5.6.3): + ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(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': 22.10.6 + '@types/node': 22.10.7 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.7.3 + typescript: 5.6.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: '@swc/core': 1.10.7(@swc/helpers@0.5.15) optional: true - ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.6)(typescript@5.7.3): + ts-node@10.9.2(@swc/core@1.10.7(@swc/helpers@0.5.15))(@types/node@22.10.7)(typescript@5.7.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': 22.10.6 + '@types/node': 22.10.7 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -49642,7 +49953,7 @@ snapshots: tsscmp@1.0.6: {} - tsup@8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0): + tsup@8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.7.0): dependencies: bundle-require: 5.1.0(esbuild@0.24.2) cac: 6.7.14 @@ -49652,7 +49963,7 @@ snapshots: esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(yaml@2.7.0) + postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(yaml@2.7.0) resolve-from: 5.0.0 rollup: 4.30.1 source-map: 0.8.0-beta.0 @@ -49662,7 +49973,7 @@ snapshots: tree-kill: 1.2.2 optionalDependencies: '@swc/core': 1.10.7(@swc/helpers@0.5.15) - postcss: 8.5.0 + postcss: 8.5.1 typescript: 5.6.3 transitivePeerDependencies: - jiti @@ -49670,17 +49981,17 @@ snapshots: - tsx - yaml - tsup@8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0): + tsup@8.3.5(@swc/core@1.10.7(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0): dependencies: bundle-require: 5.1.0(esbuild@0.24.2) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.0)(tsx@4.19.2)(yaml@2.7.0) + postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(yaml@2.7.0) resolve-from: 5.0.0 rollup: 4.30.1 source-map: 0.8.0-beta.0 @@ -49690,7 +50001,7 @@ snapshots: tree-kill: 1.2.2 optionalDependencies: '@swc/core': 1.10.7(@swc/helpers@0.5.15) - postcss: 8.5.0 + postcss: 8.5.1 typescript: 5.7.3 transitivePeerDependencies: - jiti @@ -49710,7 +50021,7 @@ snapshots: tuf-js@2.2.1: dependencies: '@tufjs/models': 2.0.1 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.0 make-fetch-happen: 13.0.1 transitivePeerDependencies: - supports-color @@ -49859,7 +50170,7 @@ snapshots: lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - shiki: 1.26.2 + shiki: 1.27.2 typescript: 5.6.3 yaml: 2.7.0 @@ -49868,13 +50179,13 @@ snapshots: lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - shiki: 1.26.2 + shiki: 1.27.2 typescript: 5.7.3 yaml: 2.7.0 typedoc@0.27.6(typescript@5.7.3): dependencies: - '@gerrit0/mini-shiki': 1.26.1 + '@gerrit0/mini-shiki': 1.27.2 lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 @@ -49952,7 +50263,7 @@ snapshots: mkdist: 1.6.0(typescript@5.7.3) mlly: 1.7.4 pathe: 1.1.2 - pkg-types: 1.3.0 + pkg-types: 1.3.1 pretty-bytes: 6.1.1 rollup: 3.29.5 rollup-plugin-dts: 6.1.1(rollup@3.29.5)(typescript@5.7.3) @@ -49990,7 +50301,7 @@ snapshots: undici@6.19.8: {} - undici@7.2.1: {} + undici@7.2.2: {} unenv@1.10.0: dependencies: @@ -50220,22 +50531,22 @@ snapshots: url@0.11.4: dependencies: punycode: 1.4.1 - qs: 6.13.1 + qs: 6.14.0 - use-callback-ref@1.3.3(@types/react@19.0.6)(react@19.0.0): + use-callback-ref@1.3.3(@types/react@19.0.7)(react@19.0.0): dependencies: react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - use-sidecar@1.1.3(@types/react@19.0.6)(react@19.0.0): + use-sidecar@1.1.3(@types/react@19.0.7)(react@19.0.0): dependencies: detect-node-es: 1.1.0 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 use-sync-external-store@1.2.0(react@19.0.0): dependencies: @@ -50313,12 +50624,12 @@ snapshots: validate-npm-package-name@5.0.1: {} - valtio@1.11.2(@types/react@19.0.6)(react@19.0.0): + valtio@1.11.2(@types/react@19.0.7)(react@19.0.0): dependencies: proxy-compare: 2.5.1 use-sync-external-store: 1.2.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 react: 19.0.0 value-equal@1.0.1: {} @@ -50368,19 +50679,19 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - viem@2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@6.0.5)(zod@3.24.1): + viem@2.21.58(bufferutil@4.0.9)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8): dependencies: '@noble/curves': 1.7.0 '@noble/hashes': 1.6.1 '@scure/bip32': 1.6.0 '@scure/bip39': 1.5.0 - abitype: 1.0.7(typescript@5.6.3)(zod@3.24.1) - isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - ox: 0.4.4(typescript@5.6.3)(zod@3.24.1) + abitype: 1.0.7(typescript@5.6.3)(zod@3.23.8) + isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ox: 0.4.4(typescript@5.6.3)(zod@3.23.8) webauthn-p256: 0.0.10 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: - typescript: 5.7.3 + typescript: 5.6.3 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -50477,13 +50788,13 @@ snapshots: - supports-color - terser - vite-node@1.1.3(@types/node@22.10.6)(terser@5.37.0): + vite-node@1.1.3(@types/node@22.10.7)(terser@5.37.0): dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@5.5.0) pathe: 1.1.2 picocolors: 1.1.1 - vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) transitivePeerDependencies: - '@types/node' - less @@ -50513,13 +50824,13 @@ snapshots: - supports-color - terser - vite-node@1.2.1(@types/node@22.10.6)(terser@5.37.0): + vite-node@1.2.1(@types/node@22.10.7)(terser@5.37.0): dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@5.5.0) pathe: 1.1.2 picocolors: 1.1.1 - vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) transitivePeerDependencies: - '@types/node' - less @@ -50548,12 +50859,12 @@ snapshots: - supports-color - terser - vite-node@2.1.4(@types/node@22.10.6)(terser@5.37.0): + vite-node@2.1.4(@types/node@22.10.7)(terser@5.37.0): dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@5.5.0) pathe: 1.1.2 - vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) transitivePeerDependencies: - '@types/node' - less @@ -50565,13 +50876,31 @@ snapshots: - supports-color - terser - vite-node@2.1.5(@types/node@22.10.6)(terser@5.37.0): + vite-node@2.1.5(@types/node@20.17.9)(terser@5.37.0): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.6.0 + pathe: 1.1.2 + vite: 5.4.11(@types/node@20.17.9)(terser@5.37.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite-node@2.1.5(@types/node@22.10.7)(terser@5.37.0): dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@5.5.0) es-module-lexer: 1.6.0 pathe: 1.1.2 - vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) transitivePeerDependencies: - '@types/node' - less @@ -50601,13 +50930,13 @@ snapshots: - supports-color - terser - vite-node@2.1.8(@types/node@22.10.6)(terser@5.37.0): + vite-node@2.1.8(@types/node@22.10.7)(terser@5.37.0): dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@5.5.0) es-module-lexer: 1.6.0 pathe: 1.1.2 - vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) transitivePeerDependencies: - '@types/node' - less @@ -50637,12 +50966,12 @@ snapshots: - supports-color - terser - vite-plugin-compression@0.5.1(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)): + vite-plugin-compression@0.5.1(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)): dependencies: chalk: 4.1.2 debug: 4.4.0(supports-color@5.5.0) fs-extra: 10.1.0 - vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) transitivePeerDependencies: - supports-color @@ -50657,13 +50986,13 @@ snapshots: - supports-color - typescript - vite-tsconfig-paths@5.1.4(typescript@5.6.3)(vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)): + vite-tsconfig-paths@5.1.4(typescript@5.6.3)(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)): dependencies: debug: 4.4.0(supports-color@5.5.0) globrex: 0.1.2 tsconfck: 3.1.4(typescript@5.6.3) optionalDependencies: - vite: 6.0.7(@types/node@22.10.6)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) transitivePeerDependencies: - supports-color - typescript @@ -50671,40 +51000,40 @@ snapshots: vite@5.4.11(@types/node@20.17.9)(terser@5.37.0): dependencies: esbuild: 0.21.5 - postcss: 8.5.0 + postcss: 8.5.1 rollup: 4.30.1 optionalDependencies: '@types/node': 20.17.9 fsevents: 2.3.3 terser: 5.37.0 - vite@5.4.11(@types/node@22.10.6)(terser@5.37.0): + vite@5.4.11(@types/node@22.10.7)(terser@5.37.0): dependencies: esbuild: 0.21.5 - postcss: 8.5.0 + postcss: 8.5.1 rollup: 4.30.1 optionalDependencies: - '@types/node': 22.10.6 + '@types/node': 22.10.7 fsevents: 2.3.3 terser: 5.37.0 vite@5.4.11(@types/node@22.8.4)(terser@5.37.0): dependencies: esbuild: 0.21.5 - postcss: 8.5.0 + postcss: 8.5.1 rollup: 4.30.1 optionalDependencies: '@types/node': 22.8.4 fsevents: 2.3.3 terser: 5.37.0 - vite@6.0.7(@types/node@22.10.6)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0): + vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0): dependencies: esbuild: 0.24.2 - postcss: 8.5.0 + postcss: 8.5.1 rollup: 4.30.1 optionalDependencies: - '@types/node': 22.10.6 + '@types/node': 22.10.7 fsevents: 2.3.3 jiti: 2.4.2 terser: 5.37.0 @@ -50751,7 +51080,7 @@ snapshots: - supports-color - terser - vitest@1.1.3(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): + vitest@1.1.3(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): dependencies: '@vitest/expect': 1.1.3 '@vitest/runner': 1.1.3 @@ -50771,11 +51100,11 @@ snapshots: strip-literal: 1.3.0 tinybench: 2.9.0 tinypool: 0.8.4 - vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) - vite-node: 1.1.3(@types/node@22.10.6)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) + vite-node: 1.1.3(@types/node@22.10.7)(terser@5.37.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.10.6 + '@types/node': 22.10.7 jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5) transitivePeerDependencies: - less @@ -50859,7 +51188,7 @@ snapshots: - supports-color - terser - vitest@1.2.1(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): + vitest@1.2.1(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): dependencies: '@vitest/expect': 1.2.1 '@vitest/runner': 1.2.1 @@ -50879,11 +51208,11 @@ snapshots: strip-literal: 1.3.0 tinybench: 2.9.0 tinypool: 0.8.4 - vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) - vite-node: 1.2.1(@types/node@22.10.6)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) + vite-node: 1.2.1(@types/node@22.10.7)(terser@5.37.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.10.6 + '@types/node': 22.10.7 jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5) transitivePeerDependencies: - less @@ -50898,7 +51227,7 @@ snapshots: vitest@2.1.4(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0): dependencies: '@vitest/expect': 2.1.4 - '@vitest/mocker': 2.1.4(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0)) + '@vitest/mocker': 2.1.4(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.4 '@vitest/snapshot': 2.1.4 @@ -50931,10 +51260,10 @@ snapshots: - supports-color - terser - vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0): + vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0): dependencies: '@vitest/expect': 2.1.4 - '@vitest/mocker': 2.1.4(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0)) + '@vitest/mocker': 2.1.4(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.4 '@vitest/snapshot': 2.1.4 @@ -50950,11 +51279,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) - vite-node: 2.1.4(@types/node@22.10.6)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) + vite-node: 2.1.4(@types/node@22.10.7)(terser@5.37.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.10.6 + '@types/node': 22.10.7 jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10) transitivePeerDependencies: - less @@ -50967,10 +51296,10 @@ snapshots: - supports-color - terser - vitest@2.1.4(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): + vitest@2.1.4(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): dependencies: '@vitest/expect': 2.1.4 - '@vitest/mocker': 2.1.4(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0)) + '@vitest/mocker': 2.1.4(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.4 '@vitest/snapshot': 2.1.4 @@ -50986,11 +51315,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) - vite-node: 2.1.4(@types/node@22.10.6)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) + vite-node: 2.1.4(@types/node@22.10.7)(terser@5.37.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.10.6 + '@types/node': 22.10.7 jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5) transitivePeerDependencies: - less @@ -51003,10 +51332,46 @@ snapshots: - supports-color - terser - vitest@2.1.5(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): + vitest@2.1.5(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0): + dependencies: + '@vitest/expect': 2.1.5 + '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@20.17.9)(terser@5.37.0)) + '@vitest/pretty-format': 2.1.8 + '@vitest/runner': 2.1.5 + '@vitest/snapshot': 2.1.5 + '@vitest/spy': 2.1.5 + '@vitest/utils': 2.1.5 + chai: 5.1.2 + debug: 4.4.0 + expect-type: 1.1.0 + magic-string: 0.30.17 + pathe: 1.1.2 + std-env: 3.8.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 1.2.0 + vite: 5.4.11(@types/node@20.17.9)(terser@5.37.0) + vite-node: 2.1.5(@types/node@20.17.9)(terser@5.37.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 20.17.9 + jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10) + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vitest@2.1.5(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): dependencies: '@vitest/expect': 2.1.5 - '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0)) + '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.5 '@vitest/snapshot': 2.1.5 @@ -51022,11 +51387,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) - vite-node: 2.1.5(@types/node@22.10.6)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) + vite-node: 2.1.5(@types/node@22.10.7)(terser@5.37.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.10.6 + '@types/node': 22.10.7 jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5) transitivePeerDependencies: - less @@ -51042,7 +51407,7 @@ snapshots: vitest@2.1.8(@types/node@20.17.9)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): dependencies: '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0)) + '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.8 '@vitest/snapshot': 2.1.8 @@ -51075,10 +51440,10 @@ snapshots: - supports-color - terser - vitest@2.1.8(@types/node@22.10.6)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): + vitest@2.1.8(@types/node@22.10.7)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5))(terser@5.37.0): dependencies: '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0)) + '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.8 '@vitest/snapshot': 2.1.8 @@ -51094,11 +51459,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.10.6)(terser@5.37.0) - vite-node: 2.1.8(@types/node@22.10.6)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.7)(terser@5.37.0) + vite-node: 2.1.8(@types/node@22.10.7)(terser@5.37.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.10.6 + '@types/node': 22.10.7 jsdom: 25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5) transitivePeerDependencies: - less @@ -51114,7 +51479,7 @@ snapshots: vitest@2.1.8(@types/node@22.8.4)(jsdom@25.0.1(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0): dependencies: '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.6)(terser@5.37.0)) + '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.7)(terser@5.37.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.8 '@vitest/snapshot': 2.1.8 @@ -51185,16 +51550,6 @@ snapshots: optionalDependencies: typescript: 5.6.3 - vue@3.5.13(typescript@5.7.3): - dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-sfc': 3.5.13 - '@vue/runtime-dom': 3.5.13 - '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.7.3)) - '@vue/shared': 3.5.13 - optionalDependencies: - typescript: 5.7.3 - w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 From 1e14c282e5b6c952a7871ed9b2c31895a32b2733 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Tue, 21 Jan 2025 16:18:51 +0700 Subject: [PATCH 29/58] merging --- agent/package.json | 4 +- agent/src/index.ts | 16 +- package.json | 9 +- packages/adapter-supabase/src/index.ts | 360 +-- .../src/plugins/SttTtsSpacesPlugin.ts | 25 +- packages/core/src/generation.bak.ts | 2400 +++++++++++++++++ packages/core/src/generation.ts | 1 + packages/plugin-abstract/README.md | 175 -- packages/plugin-abstract/package.json | 34 - .../src/actions/deployTokenAction.ts | 267 -- .../src/actions/getBalanceAction.ts | 280 -- packages/plugin-abstract/src/actions/index.ts | 3 - .../src/actions/transferAction.ts | 402 --- .../src/constants/contracts/basicToken.json | 339 --- .../plugin-abstract/src/constants/index.ts | 1 - packages/plugin-abstract/src/environment.ts | 44 - packages/plugin-abstract/src/hooks/index.ts | 2 - .../src/hooks/useGetAccount.ts | 11 - .../src/hooks/useGetWalletClient.ts | 12 - packages/plugin-abstract/src/index.ts | 13 - packages/plugin-abstract/src/utils/index.ts | 1 - .../plugin-abstract/src/utils/viemHelpers.ts | 87 - packages/plugin-abstract/tsconfig.json | 8 - packages/plugin-abstract/tsup.config.ts | 20 - packages/plugin-crypto-news/package.json | 1 + packages/plugin-pyth-data/schema.json | 2 +- packages/plugin-web-search/src/index.ts | 2 +- 27 files changed, 2563 insertions(+), 1956 deletions(-) create mode 100644 packages/core/src/generation.bak.ts delete mode 100644 packages/plugin-abstract/README.md delete mode 100644 packages/plugin-abstract/package.json delete mode 100644 packages/plugin-abstract/src/actions/deployTokenAction.ts delete mode 100644 packages/plugin-abstract/src/actions/getBalanceAction.ts delete mode 100644 packages/plugin-abstract/src/actions/index.ts delete mode 100644 packages/plugin-abstract/src/actions/transferAction.ts delete mode 100644 packages/plugin-abstract/src/constants/contracts/basicToken.json delete mode 100644 packages/plugin-abstract/src/constants/index.ts delete mode 100644 packages/plugin-abstract/src/environment.ts delete mode 100644 packages/plugin-abstract/src/hooks/index.ts delete mode 100644 packages/plugin-abstract/src/hooks/useGetAccount.ts delete mode 100644 packages/plugin-abstract/src/hooks/useGetWalletClient.ts delete mode 100644 packages/plugin-abstract/src/index.ts delete mode 100644 packages/plugin-abstract/src/utils/index.ts delete mode 100644 packages/plugin-abstract/src/utils/viemHelpers.ts delete mode 100644 packages/plugin-abstract/tsconfig.json delete mode 100644 packages/plugin-abstract/tsup.config.ts diff --git a/agent/package.json b/agent/package.json index 4d6d0fdb6f2..e0b56dfa7bc 100644 --- a/agent/package.json +++ b/agent/package.json @@ -34,7 +34,6 @@ "@elizaos/client-slack": "workspace:*", "@elizaos/core": "workspace:*", "@elizaos/plugin-0g": "workspace:*", - "@elizaos/plugin-abstract": "workspace:*", "@elizaos/plugin-agentkit": "workspace:*", "@elizaos/plugin-aptos": "workspace:*", "@elizaos/plugin-birdeye": "workspace:*", @@ -108,6 +107,9 @@ "@elizaos/plugin-pyth-data": "workspace:*", "@elizaos/plugin-openai": "workspace:*", "@elizaos/plugin-devin": "workspace:*", + "@ethosdao/plugin-market-analisys": "workspace:*", + "@srise/plugin-crypto-news": "workspace:*", + "@elizaos/plugin-goplus": "workspace:*", "readline": "1.3.0", "ws": "8.18.0", "yargs": "17.7.2" diff --git a/agent/src/index.ts b/agent/src/index.ts index ac34bbb80d6..40105d989bd 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -14,10 +14,6 @@ import { TelegramClientInterface } from "@elizaos/client-telegram"; import { TwitterClientInterface } from "@elizaos/client-twitter"; import { agentKitPlugin } from "@elizaos/plugin-agentkit"; // import { ReclaimAdapter } from "@elizaos/plugin-reclaim"; -import { elizaCodeinPlugin, onchainJson } from "@elizaos/plugin-iq6900"; -import { lightningPlugin } from "@elizaos/plugin-lightning"; -import { PrimusAdapter } from "@elizaos/plugin-primus"; - import { AgentRuntime, CacheManager, @@ -41,13 +37,17 @@ import { } from "@elizaos/core"; import { zgPlugin } from "@elizaos/plugin-0g"; import { goplusPlugin } from "@elizaos/plugin-goplus"; +import { elizaCodeinPlugin, onchainJson } from "@elizaos/plugin-iq6900"; +import { lightningPlugin } from "@elizaos/plugin-lightning"; +import { PrimusAdapter } from "@elizaos/plugin-primus"; +import { solanaAgentkitPlugin } from "@elizaos/plugin-solana-agent-kit"; import { bootstrapPlugin } from "@elizaos/plugin-bootstrap"; import { normalizeCharacter } from "@elizaos/plugin-di"; import createGoatPlugin from "@elizaos/plugin-goat"; // import { intifacePlugin } from "@elizaos/plugin-intiface"; import { ThreeDGenerationPlugin } from "@elizaos/plugin-3d-generation"; -import { abstractPlugin } from "@elizaos/plugin-abstract"; +//import { abstractPlugin } from "@elizaos/plugin-abstract"; import { akashPlugin } from "@elizaos/plugin-akash"; import { alloraPlugin } from "@elizaos/plugin-allora"; import { aptosPlugin } from "@elizaos/plugin-aptos"; @@ -1008,9 +1008,9 @@ export async function createAgent( ? coingeckoPlugin : null, getSecret(character, "EVM_PROVIDER_URL") ? goatPlugin : null, - getSecret(character, "ABSTRACT_PRIVATE_KEY") - ? abstractPlugin - : null, + // getSecret(character, "ABSTRACT_PRIVATE_KEY") + // ? abstractPlugin + // : null, getSecret(character, "B2_PRIVATE_KEY") ? b2Plugin : null, getSecret(character, "BINANCE_API_KEY") && getSecret(character, "BINANCE_SECRET_KEY") diff --git a/package.json b/package.json index 6c9585d71aa..eb262d8f40e 100644 --- a/package.json +++ b/package.json @@ -28,21 +28,19 @@ "@biomejs/biome": "^1.9.4", "@commitlint/cli": "18.6.1", "@commitlint/config-conventional": "18.6.3", + "@types/jest": "^29.5.11", "concurrently": "9.1.0", "cross-env": "7.0.3", "husky": "9.1.7", + "jest": "^29.7.0", "lerna": "8.1.5", "only-allow": "1.2.1", - "prettier": "3.4.1", "turbo": "2.3.3", "typedoc": "0.26.11", "typescript": "5.6.3", "viem": "2.21.58", "vite": "5.4.11", - "vitest": "2.1.5", - "ts-jest": "^29.1.1", - "@types/jest": "^29.5.11", - "jest": "^29.7.0" + "vitest": "2.1.5" }, "pnpm": { "overrides": { @@ -60,7 +58,6 @@ "@injectivelabs/sdk-ts": "^1.14.33", "@vitest/eslint-plugin": "1.0.1", "amqplib": "0.10.5", - "axios": "^1.7.9", "csv-parse": "5.6.0", "langdetect": "^0.2.1", "ollama-ai-provider": "0.16.1", diff --git a/packages/adapter-supabase/src/index.ts b/packages/adapter-supabase/src/index.ts index 473ba706060..05bc0b0cd6f 100644 --- a/packages/adapter-supabase/src/index.ts +++ b/packages/adapter-supabase/src/index.ts @@ -1,18 +1,15 @@ import { - type Memory, - type Goal, - type Relationship, + DatabaseAdapter, + elizaLogger, + type Account, type Actor, + type Goal, type GoalStatus, - type Account, - type UUID, + type Memory, type Participant, - type Room, type RAGKnowledgeItem, - elizaLogger, - type Goal, - type Memory, type Relationship, + type Room, type UUID, } from "@elizaos/core"; import { createClient, type SupabaseClient } from "@supabase/supabase-js"; @@ -40,7 +37,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { if (error) { throw new Error( - `Error getting participants for account: ${error.message}` + `Error getting participants for account: ${error.message}`, ); } @@ -49,65 +46,27 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { async getParticipantUserState( roomId: UUID, - userId: UUID + userId: UUID, ): Promise<"FOLLOWED" | "MUTED" | null> { - try { - const { data, error } = await this.supabase - .from("participants") - .select("userState") - .eq("roomId", roomId) - .eq("userId", userId) - .maybeSingle(); - - if (error) { - elizaLogger.error( - "Error getting participant user state:", - error - ); - return null; - } + const { data, error } = await this.supabase + .from("participants") + .select("userState") + .eq("roomId", roomId) + .eq("userId", userId) + .single(); - return data?.userState as "FOLLOWED" | "MUTED" | null; - } catch (error) { - elizaLogger.error( - "Unexpected error in getParticipantUserState:", - error - ); + if (error) { + elizaLogger.error("Error getting participant user state:", error); return null; } - } - async getParticipantsForRoom(roomId: UUID): Promise<UUID[]> { - try { - const { data, error } = await this.supabase - .from("participants") - .select("userId") - .eq("roomId", roomId); - - if (error) { - elizaLogger.error( - "Error getting participants for room:", - error - ); - throw new Error( - `Error getting participants for room: ${error.message}` - ); - } - - return data.map((row) => row.userId as UUID); - } catch (error) { - elizaLogger.error( - "Unexpected error in getParticipantsForRoom:", - error - ); - throw error; - } + return data?.userState as "FOLLOWED" | "MUTED" | null; } async setParticipantUserState( roomId: UUID, userId: UUID, - state: "FOLLOWED" | "MUTED" | null + state: "FOLLOWED" | "MUTED" | null, ): Promise<void> { const { error } = await this.supabase .from("participants") @@ -121,6 +80,21 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { } } + async getParticipantsForRoom(roomId: UUID): Promise<UUID[]> { + const { data, error } = await this.supabase + .from("participants") + .select("userId") + .eq("roomId", roomId); + + if (error) { + throw new Error( + `Error getting participants for room: ${error.message}`, + ); + } + + return data.map((row) => row.userId as UUID); + } + supabase: SupabaseClient; constructor(supabaseUrl: string, supabaseKey: string) { @@ -140,25 +114,22 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { roomIds: UUID[]; agentId?: UUID; tableName: string; + limit?: number; }): Promise<Memory[]> { - // Determine which memories table to use based on the tableName - const embeddingSize = params.tableName.includes("_") - ? parseInt(params.tableName.split("_")[1]) - : 1536; // default to 1536 if not specified - - const actualTableName = `memories_${embeddingSize}`; - - elizaLogger.info(`Querying memories from table: ${actualTableName}`); - let query = this.supabase - .from(actualTableName) + .from(params.tableName) .select("*") - .in("roomId", params.roomIds); + .in("roomId", params.roomIds) + .order("createdAt", { ascending: false }); if (params.agentId) { query = query.eq("agentId", params.agentId); } + if (params.limit) { + query = query.limit(params.limit); + } + const { data, error } = await query; if (error) { @@ -174,29 +145,26 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { return memories as Memory[]; } - async createAccount(account: Account): Promise<boolean> { - const { error } = await this.supabase - .from("accounts") - .upsert([account]); - - if (error) { - elizaLogger.error(error.message); - return false; - } - return true; - } - async getAccountById(userId: UUID): Promise<Account | null> { const { data, error } = await this.supabase .from("accounts") .select("*") .eq("id", userId); + if (error) { + throw new Error(error.message); + } + return (data?.[0] as Account) || null; + } + async createAccount(account: Account): Promise<boolean> { + const { error } = await this.supabase + .from("accounts") + .upsert([account]); if (error) { elizaLogger.error(error.message); - throw error; + return false; } - return (data?.[0] as Account) || null; + return true; } async getActorDetails(params: { roomId: UUID }): Promise<Actor[]> { @@ -208,7 +176,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { participants:participants( account:accounts(id, name, username, details) ) - ` + `, ) .eq("id", params.roomId); @@ -218,18 +186,17 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { } const { data } = response; - return data - .flatMap((room) => - room.participants.map((participant) => { - const user = participant.account as unknown as Actor; - return { - name: user?.name, - details: user?.details, - id: user?.id, - username: user?.username, - }; - }) - ); + return data.flatMap((room) => + room.participants.map((participant) => { + const user = participant.account as unknown as Actor; + return { + name: user?.name, + details: user?.details, + id: user?.id, + username: user?.username, + }; + }), + ); } catch (error) { elizaLogger.error("error", error); throw error; @@ -297,7 +264,6 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { type: string; }): Promise<void> { const { error } = await this.supabase.from("logs").insert({ - id: uuid(), body: params.body, userId: params.userId, roomId: params.roomId, @@ -319,27 +285,17 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { start?: number; end?: number; }): Promise<Memory[]> { - // Determine which memories table to use based on the tableName - const embeddingSize = params.tableName.includes("_") - ? parseInt(params.tableName.split("_")[1]) - : 1536; // default to 1536 if not specified - - const actualTableName = `memories_${embeddingSize}`; - - elizaLogger.info(`Querying memories from table: ${actualTableName}`); - const query = this.supabase - .from(actualTableName) + .from(params.tableName) .select("*") .eq("roomId", params.roomId); - // Convert timestamps to ISO strings if (params.start) { - query.gte("createdAt", new Date(params.start).toISOString()); + query.gte("createdAt", params.start); } if (params.end) { - query.lte("createdAt", new Date(params.end).toISOString()); + query.lte("createdAt", params.end); } if (params.unique) { @@ -362,15 +318,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { throw new Error(`Error retrieving memories: ${error.message}`); } - // map createdAt to Date - const memories = data.map((memory) => ({ - ...memory, - createdAt: memory.createdAt - ? new Date(memory.createdAt).getTime() - : undefined, - })); - - return memories as Memory[]; + return data as Memory[]; } async searchMemoriesByEmbedding( @@ -382,7 +330,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { agentId?: UUID; unique?: boolean; tableName: string; - } + }, ): Promise<Memory[]> { const queryParams = { query_table_name: params.tableName, @@ -406,33 +354,23 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { } async getMemoryById(memoryId: UUID): Promise<Memory | null> { - // Try each memory table since we don't know which one contains the memory - for (const size of [384, 768, 1024, 1536]) { - const { data, error } = await this.supabase - .from(`memories_${size}`) - .select("*") - .eq("id", memoryId) - .maybeSingle(); // Use maybeSingle() instead of single() - // PGRST116 means "no results found" - this is expected when checking other tables - if (error && error.code !== "PGRST116") { - elizaLogger.error(`Error checking memories_${size}:`, error); - continue; - } + const { data, error } = await this.supabase + .from("memories") + .select("*") + .eq("id", memoryId) + .single(); - if (data) { - return data as Memory; - } + if (error) { + elizaLogger.error("Error retrieving memory by ID:", error); + return null; } - return null; - } - return data as Memory; } async getMemoriesByIds( memoryIds: UUID[], - tableName?: string + tableName?: string, ): Promise<Memory[]> { if (memoryIds.length === 0) return []; @@ -458,29 +396,13 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { async createMemory( memory: Memory, tableName: string, - unique = false + unique = false, ): Promise<void> { - // ✅ Convert from milliseconds to seconds - const createdAt = memory.createdAt - ? new Date(memory.createdAt).toISOString() - : new Date().toISOString(); - - // Determine which table to use based on embedding size - const embeddingSize = memory.embedding?.length; - if (!embeddingSize) { - throw new Error("Memory must have an embedding"); - } - - // Validate embedding size - if (![384, 768, 1024, 1536].includes(embeddingSize)) { - throw new Error(`Unsupported embedding size: ${embeddingSize}`); - } - - const actualTableName = `memories_${embeddingSize}`; - + const createdAt = memory.createdAt ?? Date.now(); if (unique) { const opts = { - query_table_name: actualTableName, + // TODO: Add ID option, optionally + query_table_name: tableName, query_userId: memory.userId, query_content: memory.content.text, query_roomId: memory.roomId, @@ -491,22 +413,19 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { const result = await this.supabase.rpc( "check_similarity_and_insert", - opts + opts, ); if (result.error) { throw new Error(JSON.stringify(result.error)); } } else { - const result = await this.supabase.from(actualTableName).insert({ - ...memory, - id: memory.id, // Ensure ID is included - createdAt, - type: tableName, - }); - - if (result.error) { - throw new Error(JSON.stringify(result.error)); + const result = await this.supabase + .from("memories") + .insert({ ...memory, createdAt, type: tableName }); + const { error } = result; + if (error) { + throw new Error(JSON.stringify(error)); } } } @@ -536,7 +455,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { async countMemories( roomId: UUID, unique = true, - tableName: string + tableName: string, ): Promise<number> { if (!tableName) { throw new Error("tableName is required"); @@ -561,34 +480,23 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { onlyInProgress?: boolean; count?: number; }): Promise<Goal[]> { - try { - const opts = { - query_roomId: params.roomId, - query_userId: params.userId || null, - only_in_progress: params.onlyInProgress || false, - row_count: params.count || null, - }; - - elizaLogger.debug("Calling get_goals with params:", opts); + const opts = { + query_roomId: params.roomId, + query_userId: params.userId, + only_in_progress: params.onlyInProgress, + row_count: params.count, + }; - const { data: goals, error } = await this.supabase.rpc( - "get_goals", - opts - ); + const { data: goals, error } = await this.supabase.rpc( + "get_goals", + opts, + ); - if (error) { - elizaLogger.error("Error fetching goals:", { - error, - params: opts, - }); - throw new Error(error.message); - } - - return goals; - } catch (error) { - elizaLogger.error("Unexpected error in getGoals:", error); - throw error; + if (error) { + throw new Error(error.message); } + + return goals; } async updateGoal(goal: Goal): Promise<void> { @@ -602,9 +510,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { } async createGoal(goal: Goal): Promise<void> { - const { error } = await this.supabase - .from("goals") - .insert({ ...goal, id: goal.id || uuid() }); + const { error } = await this.supabase.from("goals").insert(goal); if (error) { throw new Error(`Error creating goal: ${error.message}`); } @@ -638,7 +544,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { if (error) { throw new Error( - `Error getting rooms by participant: ${error.message}` + `Error getting rooms by participant: ${error.message}`, ); } @@ -653,7 +559,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { if (error) { throw new Error( - `Error getting rooms by participants: ${error.message}` + `Error getting rooms by participants: ${error.message}`, ); } @@ -689,11 +595,9 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { } async addParticipant(userId: UUID, roomId: UUID): Promise<boolean> { - const { error } = await this.supabase.from("participants").insert({ - id: uuid(), // Generate a new UUID for the participant - userId: userId, - roomId: roomId, - }); + const { error } = await this.supabase + .from("participants") + .insert({ userId: userId, roomId: roomId }); if (error) { elizaLogger.error(`Error adding participant: ${error.message}`); @@ -728,48 +632,50 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { let roomId: UUID; if (!allRoomData || allRoomData.length === 0) { - // Create new room with UUID - const newRoomId = uuid() as UUID; - const { error: roomsError } = await this.supabase + // If no existing room is found, create a new room + const { data: newRoomData, error: roomsError } = await this.supabase .from("rooms") - .insert({ id: newRoomId }); + .insert({}) + .single(); if (roomsError) { throw new Error("Room creation error: " + roomsError.message); } - roomId = newRoomId; + roomId = (newRoomData as Room)?.id as UUID; } else { + // If an existing room is found, use the first room's ID roomId = allRoomData[0]; } const { error: participantsError } = await this.supabase .from("participants") .insert([ - { id: uuid(), userId: params.userA, roomId }, - { id: uuid(), userId: params.userB, roomId }, + { userId: params.userA, roomId }, + { userId: params.userB, roomId }, ]); if (participantsError) { throw new Error( - "Participants creation error: " + participantsError.message + "Participants creation error: " + participantsError.message, ); } - // Create relationship with UUID + // Create or update the relationship between the two users const { error: relationshipError } = await this.supabase .from("relationships") .upsert({ - id: uuid(), userA: params.userA, userB: params.userB, userId: params.userA, status: "FRIENDS", - }); + }) + .eq("userA", params.userA) + .eq("userB", params.userB); if (relationshipError) { throw new Error( - "Relationship creation error: " + relationshipError.message + "Relationship creation error: " + relationshipError.message, ); } @@ -815,7 +721,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { .select("value") .eq("key", params.key) .eq("agentId", params.agentId) - .maybeSingle(); + .single(); if (error) { elizaLogger.error("Error fetching cache:", error); @@ -834,7 +740,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { key: params.key, agentId: params.agentId, value: params.value, - createdAt: new Date().toISOString(), + createdAt: new Date(), }); if (error) { @@ -868,7 +774,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { } catch (error) { elizaLogger.error( "Database connection error in deleteCache", - error instanceof Error ? error.message : String(error) + error instanceof Error ? error.message : String(error), ); return false; } @@ -973,15 +879,13 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { const metadata = knowledge.content.metadata || {}; const { error } = await this.supabase.from("knowledge").insert({ - id: knowledge.id || uuid(), + id: knowledge.id, agentId: metadata.isShared ? null : knowledge.agentId, content: knowledge.content, embedding: knowledge.embedding ? Array.from(knowledge.embedding) : null, - createdAt: - new Date(knowledge.createdAt).toISOString() || - new Date().toISOString(), + createdAt: knowledge.createdAt || new Date(), isMain: metadata.isMain || false, originalId: metadata.originalId || null, chunkIndex: metadata.chunkIndex || null, @@ -992,7 +896,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { if (metadata.isShared && error.code === "23505") { // Unique violation elizaLogger.info( - `Shared knowledge ${knowledge.id} already exists, skipping` + `Shared knowledge ${knowledge.id} already exists, skipping`, ); return; } @@ -1030,7 +934,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { if (error) { elizaLogger.error( `Error clearing shared knowledge for agent ${agentId}:`, - error + error, ); throw error; } @@ -1043,7 +947,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { if (error) { elizaLogger.error( `Error clearing knowledge for agent ${agentId}:`, - error + error, ); throw error; } diff --git a/packages/client-twitter/src/plugins/SttTtsSpacesPlugin.ts b/packages/client-twitter/src/plugins/SttTtsSpacesPlugin.ts index 19125faa920..c930f6e5ce0 100644 --- a/packages/client-twitter/src/plugins/SttTtsSpacesPlugin.ts +++ b/packages/client-twitter/src/plugins/SttTtsSpacesPlugin.ts @@ -1,32 +1,32 @@ // src/plugins/SttTtsPlugin.ts -import { spawn } from "child_process"; import { - type ITranscriptionService, - elizaLogger, - stringToUuid, - composeContext, - getEmbeddingZeroVector, - generateMessageResponse, - ModelClass, Content, IAgentRuntime, + type ITranscriptionService, Memory, + ModelClass, Plugin, - UUID, State, + UUID, + composeContext, composeRandomUser, + elizaLogger, + generateMessageResponse, generateShouldRespond, + getEmbeddingZeroVector, + stringToUuid, } from "@elizaos/core"; import type { - Space, - JanusClient, AudioDataWithUser, + JanusClient, + Space, } from "agent-twitter-client"; +import { spawn } from "child_process"; import { ClientBase } from "../base"; import { - twitterVoiceHandlerTemplate, twitterShouldRespondTemplate, + twitterVoiceHandlerTemplate, } from "./templates"; interface PluginConfig { @@ -382,6 +382,7 @@ export class SttTtsPlugin implements Plugin { return; } } catch (err) { + console.log("SttTtsplugin error",err); elizaLogger.error("[SttTtsPlugin] TTS streaming error =>", err); } finally { // Clean up the AbortController diff --git a/packages/core/src/generation.bak.ts b/packages/core/src/generation.bak.ts new file mode 100644 index 00000000000..68ae4dea1ac --- /dev/null +++ b/packages/core/src/generation.bak.ts @@ -0,0 +1,2400 @@ +import { createAnthropic } from "@ai-sdk/anthropic"; +import { createGoogleGenerativeAI } from "@ai-sdk/google"; +import { createGroq } from "@ai-sdk/groq"; +import { createMistral } from "@ai-sdk/mistral"; +import { createOpenAI } from "@ai-sdk/openai"; +import { fal } from "@fal-ai/client"; +import { AutoTokenizer } from "@huggingface/transformers"; +import { tavily } from "@tavily/core"; +import { + generateObject as aiGenerateObject, + generateText as aiGenerateText, + StepResult as AIStepResult, + CoreTool, + GenerateObjectResult, +} from "ai"; +import { Buffer } from "buffer"; +import https from "https"; +import { encodingForModel, TiktokenModel } from "js-tiktoken"; +import { RecursiveCharacterTextSplitter } from "langchain/text_splitter"; +import { createOllama } from "ollama-ai-provider"; +import OpenAI from "openai"; +import Together from "together-ai"; +import { ZodSchema } from "zod"; +import { elizaLogger } from "./index.ts"; +import { + getEndpoint, + getImageModelSettings, + getModelSettings, + models, +} from "./models.ts"; +import { + parseActionResponseFromText, + parseBooleanFromText, + parseJsonArrayFromText, + parseJSONObjectFromText, + parseShouldRespondFromText, +} from "./parsing.ts"; +import settings from "./settings.ts"; +import { + ActionResponse, + Content, + IAgentRuntime, + IImageDescriptionService, + ITextGenerationService, + IVerifiableInferenceAdapter, + ModelClass, + ModelProviderName, + SearchResponse, + SerperSearchResponse, + ServiceType, + //VerifiableInferenceProvider, + TelemetrySettings, + TokenizerType, + VerifiableInferenceOptions, + VerifiableInferenceResult, +} from "./types.ts"; + +type Tool = CoreTool<any, any>; +type StepResult = AIStepResult<any>; + +/** + * Trims the provided text context to a specified token limit using a tokenizer model and type. + * + * The function dynamically determines the truncation method based on the tokenizer settings + * provided by the runtime. If no tokenizer settings are defined, it defaults to using the + * TikToken truncation method with the "gpt-4o" model. + * + * @async + * @function trimTokens + * @param {string} context - The text to be tokenized and trimmed. + * @param {number} maxTokens - The maximum number of tokens allowed after truncation. + * @param {IAgentRuntime} runtime - The runtime interface providing tokenizer settings. + * + * @returns {Promise<string>} A promise that resolves to the trimmed text. + * + * @throws {Error} Throws an error if the runtime settings are invalid or missing required fields. + * + * @example + * const trimmedText = await trimTokens("This is an example text", 50, runtime); + * console.log(trimmedText); // Output will be a truncated version of the input text. + */ +export async function trimTokens( + context: string, + maxTokens: number, + runtime: IAgentRuntime +) { + if (!context) return ""; + if (maxTokens <= 0) throw new Error("maxTokens must be positive"); + + const tokenizerModel = runtime.getSetting("TOKENIZER_MODEL"); + const tokenizerType = runtime.getSetting("TOKENIZER_TYPE"); + + if (!tokenizerModel || !tokenizerType) { + // Default to TikToken truncation using the "gpt-4o" model if tokenizer settings are not defined + return truncateTiktoken("gpt-4o", context, maxTokens); + } + + // Choose the truncation method based on tokenizer type + if (tokenizerType === TokenizerType.Auto) { + return truncateAuto(tokenizerModel, context, maxTokens); + } + + if (tokenizerType === TokenizerType.TikToken) { + return truncateTiktoken( + tokenizerModel as TiktokenModel, + context, + maxTokens + ); + } + + elizaLogger.warn(`Unsupported tokenizer type: ${tokenizerType}`); + return truncateTiktoken("gpt-4o", context, maxTokens); +} + +async function truncateAuto( + modelPath: string, + context: string, + maxTokens: number +) { + try { + const tokenizer = await AutoTokenizer.from_pretrained(modelPath); + const tokens = tokenizer.encode(context); + + // If already within limits, return unchanged + if (tokens.length <= maxTokens) { + return context; + } + + // Keep the most recent tokens by slicing from the end + const truncatedTokens = tokens.slice(-maxTokens); + + // Decode back to text - js-tiktoken decode() returns a string directly + return tokenizer.decode(truncatedTokens); + } catch (error) { + elizaLogger.error("Error in trimTokens:", error); + // Return truncated string if tokenization fails + return context.slice(-maxTokens * 4); // Rough estimate of 4 chars per token + } +} + +async function truncateTiktoken( + model: TiktokenModel, + context: string, + maxTokens: number +) { + try { + const encoding = encodingForModel(model); + + // Encode the text into tokens + const tokens = encoding.encode(context); + + // If already within limits, return unchanged + if (tokens.length <= maxTokens) { + return context; + } + + // Keep the most recent tokens by slicing from the end + const truncatedTokens = tokens.slice(-maxTokens); + + // Decode back to text - js-tiktoken decode() returns a string directly + return encoding.decode(truncatedTokens); + } catch (error) { + elizaLogger.error("Error in trimTokens:", error); + // Return truncated string if tokenization fails + return context.slice(-maxTokens * 4); // Rough estimate of 4 chars per token + } +} + +/** + * Gets the Cloudflare Gateway base URL for a specific provider if enabled + * @param runtime The runtime environment + * @param provider The model provider name + * @returns The Cloudflare Gateway base URL if enabled, undefined otherwise + */ +function getCloudflareGatewayBaseURL( + runtime: IAgentRuntime, + provider: string +): string | undefined { + const isCloudflareEnabled = + runtime.getSetting("CLOUDFLARE_GW_ENABLED") === "true"; + const cloudflareAccountId = runtime.getSetting("CLOUDFLARE_AI_ACCOUNT_ID"); + const cloudflareGatewayId = runtime.getSetting("CLOUDFLARE_AI_GATEWAY_ID"); + + elizaLogger.debug("Cloudflare Gateway Configuration:", { + isEnabled: isCloudflareEnabled, + hasAccountId: !!cloudflareAccountId, + hasGatewayId: !!cloudflareGatewayId, + provider: provider, + }); + + if (!isCloudflareEnabled) { + elizaLogger.debug("Cloudflare Gateway is not enabled"); + return undefined; + } + + if (!cloudflareAccountId) { + elizaLogger.warn( + "Cloudflare Gateway is enabled but CLOUDFLARE_AI_ACCOUNT_ID is not set" + ); + return undefined; + } + + if (!cloudflareGatewayId) { + elizaLogger.warn( + "Cloudflare Gateway is enabled but CLOUDFLARE_AI_GATEWAY_ID is not set" + ); + return undefined; + } + + const baseURL = `https://gateway.ai.cloudflare.com/v1/${cloudflareAccountId}/${cloudflareGatewayId}/${provider.toLowerCase()}`; + elizaLogger.info("Using Cloudflare Gateway:", { + provider, + baseURL, + accountId: cloudflareAccountId, + gatewayId: cloudflareGatewayId, + }); + + return baseURL; +} + +/** + * Send a message to the model for a text generateText - receive a string back and parse how you'd like + * @param opts - The options for the generateText request. + * @param opts.context The context of the message to be completed. + * @param opts.stop A list of strings to stop the generateText at. + * @param opts.model The model to use for generateText. + * @param opts.frequency_penalty The frequency penalty to apply to the generateText. + * @param opts.presence_penalty The presence penalty to apply to the generateText. + * @param opts.temperature The temperature to apply to the generateText. + * @param opts.max_context_length The maximum length of the context to apply to the generateText. + * @returns The completed message. + */ + +export async function generateText({ + runtime, + context, + modelClass, + tools = {}, + onStepFinish, + maxSteps = 1, + stop, + customSystemPrompt, + verifiableInference = process.env.VERIFIABLE_INFERENCE_ENABLED === "true", + verifiableInferenceOptions, +}: { + runtime: IAgentRuntime; + context: string; + modelClass: ModelClass; + tools?: Record<string, Tool>; + onStepFinish?: (event: StepResult) => Promise<void> | void; + maxSteps?: number; + stop?: string[]; + customSystemPrompt?: string; + verifiableInference?: boolean; + verifiableInferenceAdapter?: IVerifiableInferenceAdapter; + verifiableInferenceOptions?: VerifiableInferenceOptions; +}): Promise<string> { + if (!context) { + console.error("generateText context is empty"); + return ""; + } + + elizaLogger.log("Generating text..."); + + elizaLogger.info("Generating text with options:", { + modelProvider: runtime.modelProvider, + model: modelClass, + verifiableInference, + }); + elizaLogger.log("Using provider:", runtime.modelProvider); + // If verifiable inference is requested and adapter is provided, use it + if (verifiableInference && runtime.verifiableInferenceAdapter) { + elizaLogger.log( + "Using verifiable inference adapter:", + runtime.verifiableInferenceAdapter + ); + try { + const result: VerifiableInferenceResult = + await runtime.verifiableInferenceAdapter.generateText( + context, + modelClass, + verifiableInferenceOptions + ); + elizaLogger.log("Verifiable inference result:", result); + // Verify the proof + const isValid = + await runtime.verifiableInferenceAdapter.verifyProof(result); + if (!isValid) { + throw new Error("Failed to verify inference proof"); + } + + return result.text; + } catch (error) { + elizaLogger.error("Error in verifiable inference:", error); + throw error; + } + } + + const provider = runtime.modelProvider; + elizaLogger.debug("Provider settings:", { + provider, + hasRuntime: !!runtime, + runtimeSettings: { + CLOUDFLARE_GW_ENABLED: runtime.getSetting("CLOUDFLARE_GW_ENABLED"), + CLOUDFLARE_AI_ACCOUNT_ID: runtime.getSetting( + "CLOUDFLARE_AI_ACCOUNT_ID" + ), + CLOUDFLARE_AI_GATEWAY_ID: runtime.getSetting( + "CLOUDFLARE_AI_GATEWAY_ID" + ), + }, + }); + + const endpoint = + runtime.character.modelEndpointOverride || getEndpoint(provider); + const modelSettings = getModelSettings(runtime.modelProvider, modelClass); + let model = modelSettings.name; + + // allow character.json settings => secrets to override models + // FIXME: add MODEL_MEDIUM support + switch (provider) { + // if runtime.getSetting("LLAMACLOUD_MODEL_LARGE") is true and modelProvider is LLAMACLOUD, then use the large model + case ModelProviderName.LLAMACLOUD: + { + switch (modelClass) { + case ModelClass.LARGE: + { + model = + runtime.getSetting("LLAMACLOUD_MODEL_LARGE") || + model; + } + break; + case ModelClass.SMALL: + { + model = + runtime.getSetting("LLAMACLOUD_MODEL_SMALL") || + model; + } + break; + } + } + break; + case ModelProviderName.TOGETHER: + { + switch (modelClass) { + case ModelClass.LARGE: + { + model = + runtime.getSetting("TOGETHER_MODEL_LARGE") || + model; + } + break; + case ModelClass.SMALL: + { + model = + runtime.getSetting("TOGETHER_MODEL_SMALL") || + model; + } + break; + } + } + break; + case ModelProviderName.OPENROUTER: + { + switch (modelClass) { + case ModelClass.LARGE: + { + model = + runtime.getSetting("LARGE_OPENROUTER_MODEL") || + model; + } + break; + case ModelClass.SMALL: + { + model = + runtime.getSetting("SMALL_OPENROUTER_MODEL") || + model; + } + break; + } + } + break; + } + + elizaLogger.info("Selected model:", model); + + const modelConfiguration = runtime.character?.settings?.modelConfig; + const temperature = + modelConfiguration?.temperature || modelSettings.temperature; + const frequency_penalty = + modelConfiguration?.frequency_penalty || + modelSettings.frequency_penalty; + const presence_penalty = + modelConfiguration?.presence_penalty || modelSettings.presence_penalty; + const max_context_length = + modelConfiguration?.maxInputTokens || modelSettings.maxInputTokens; + const max_response_length = + modelConfiguration?.max_response_length || + modelSettings.maxOutputTokens; + const experimental_telemetry = + modelConfiguration?.experimental_telemetry || + modelSettings.experimental_telemetry; + + const apiKey = runtime.token; + + try { + elizaLogger.debug( + `Trimming context to max length of ${max_context_length} tokens.` + ); + + context = await trimTokens(context, max_context_length, runtime); + + let response: string; + + const _stop = stop || modelSettings.stop; + elizaLogger.debug( + `Using provider: ${provider}, model: ${model}, temperature: ${temperature}, max response length: ${max_response_length}` + ); + + switch (provider) { + // OPENAI & LLAMACLOUD shared same structure. + case ModelProviderName.OPENAI: + case ModelProviderName.ALI_BAILIAN: + case ModelProviderName.VOLENGINE: + case ModelProviderName.LLAMACLOUD: + case ModelProviderName.NANOGPT: + case ModelProviderName.HYPERBOLIC: + case ModelProviderName.TOGETHER: + case ModelProviderName.NINETEEN_AI: + case ModelProviderName.AKASH_CHAT_API: { + elizaLogger.debug( + "Initializing OpenAI model with Cloudflare check" + ); + const baseURL = + getCloudflareGatewayBaseURL(runtime, "openai") || endpoint; + + //elizaLogger.debug("OpenAI baseURL result:", { baseURL }); + const openai = createOpenAI({ + apiKey, + baseURL, + fetch: runtime.fetch, + }); + + const { text: openaiResponse } = await aiGenerateText({ + model: openai.languageModel(model), + prompt: context, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + tools: tools, + onStepFinish: onStepFinish, + maxSteps: maxSteps, + temperature: temperature, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + experimental_telemetry: experimental_telemetry, + }); + // console.log({ + // model: openai.languageModel(model), + // prompt: context, + // system: + // runtime.character.system ?? + // settings.SYSTEM_PROMPT ?? + // undefined, + // tools: tools, + // onStepFinish: onStepFinish, + // maxSteps: maxSteps, + // temperature: temperature, + // maxTokens: max_response_length, + // frequencyPenalty: frequency_penalty, + // presencePenalty: presence_penalty, + // experimental_telemetry: experimental_telemetry, + // openaiResponse, + // }); + response = openaiResponse; + console.log("Received response from OpenAI model."); + break; + } + + case ModelProviderName.ETERNALAI: { + elizaLogger.debug("Initializing EternalAI model."); + const openai = createOpenAI({ + apiKey, + baseURL: endpoint, + fetch: async (url: string, options: any) => { + const chain_id = + runtime.getSetting("ETERNALAI_CHAIN_ID") || "45762"; + if (options?.body) { + const body = JSON.parse(options.body); + body.chain_id = chain_id; + options.body = JSON.stringify(body); + } + const fetching = await runtime.fetch(url, options); + if ( + parseBooleanFromText( + runtime.getSetting("ETERNALAI_LOG") + ) + ) { + elizaLogger.info( + "Request data: ", + JSON.stringify(options, null, 2) + ); + const clonedResponse = fetching.clone(); + try { + clonedResponse.json().then((data) => { + elizaLogger.info( + "Response data: ", + JSON.stringify(data, null, 2) + ); + }); + } catch (e) { + elizaLogger.debug(e); + } + } + return fetching; + }, + }); + + const { text: openaiResponse } = await aiGenerateText({ + model: openai.languageModel(model), + prompt: context, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + temperature: temperature, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + }); + + response = openaiResponse; + elizaLogger.debug("Received response from EternalAI model."); + break; + } + + case ModelProviderName.GOOGLE: { + const google = createGoogleGenerativeAI({ + apiKey, + fetch: runtime.fetch, + }); + + const { text: googleResponse } = await aiGenerateText({ + model: google(model), + prompt: context, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + tools: tools, + onStepFinish: onStepFinish, + maxSteps: maxSteps, + temperature: temperature, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + experimental_telemetry: experimental_telemetry, + }); + + response = googleResponse; + elizaLogger.debug("Received response from Google model."); + break; + } + + case ModelProviderName.MISTRAL: { + const mistral = createMistral(); + + const { text: mistralResponse } = await aiGenerateText({ + model: mistral(model), + prompt: context, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + temperature: temperature, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + }); + + response = mistralResponse; + elizaLogger.debug("Received response from Mistral model."); + break; + } + + case ModelProviderName.ANTHROPIC: { + elizaLogger.debug( + "Initializing Anthropic model with Cloudflare check" + ); + const baseURL = + getCloudflareGatewayBaseURL(runtime, "anthropic") || + "https://api.anthropic.com/v1"; + elizaLogger.debug("Anthropic baseURL result:", { baseURL }); + + const anthropic = createAnthropic({ + apiKey, + baseURL, + fetch: runtime.fetch, + }); + const { text: anthropicResponse } = await aiGenerateText({ + model: anthropic.languageModel(model), + prompt: context, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + tools: tools, + onStepFinish: onStepFinish, + maxSteps: maxSteps, + temperature: temperature, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + experimental_telemetry: experimental_telemetry, + }); + + response = anthropicResponse; + elizaLogger.debug("Received response from Anthropic model."); + break; + } + + case ModelProviderName.CLAUDE_VERTEX: { + elizaLogger.debug("Initializing Claude Vertex model."); + + const anthropic = createAnthropic({ + apiKey, + fetch: runtime.fetch, + }); + + const { text: anthropicResponse } = await aiGenerateText({ + model: anthropic.languageModel(model), + prompt: context, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + tools: tools, + onStepFinish: onStepFinish, + maxSteps: maxSteps, + temperature: temperature, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + experimental_telemetry: experimental_telemetry, + }); + + response = anthropicResponse; + elizaLogger.debug( + "Received response from Claude Vertex model." + ); + break; + } + + case ModelProviderName.GROK: { + elizaLogger.debug("Initializing Grok model."); + const grok = createOpenAI({ + apiKey, + baseURL: endpoint, + fetch: runtime.fetch, + }); + + const { text: grokResponse } = await aiGenerateText({ + model: grok.languageModel(model, { + parallelToolCalls: false, + }), + prompt: context, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + tools: tools, + onStepFinish: onStepFinish, + maxSteps: maxSteps, + temperature: temperature, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + experimental_telemetry: experimental_telemetry, + }); + + response = grokResponse; + elizaLogger.debug("Received response from Grok model."); + break; + } + + case ModelProviderName.GROQ: { + elizaLogger.debug( + "Initializing Groq model with Cloudflare check" + ); + const baseURL = getCloudflareGatewayBaseURL(runtime, "groq"); + elizaLogger.debug("Groq baseURL result:", { baseURL }); + const groq = createGroq({ + apiKey, + fetch: runtime.fetch, + baseURL, + }); + + const { text: groqResponse } = await aiGenerateText({ + model: groq.languageModel(model), + prompt: context, + temperature, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + tools, + onStepFinish: onStepFinish, + maxSteps, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + experimental_telemetry, + }); + + response = groqResponse; + elizaLogger.debug("Received response from Groq model."); + break; + } + + case ModelProviderName.LLAMALOCAL: { + elizaLogger.debug( + "Using local Llama model for text completion." + ); + const textGenerationService = + runtime.getService<ITextGenerationService>( + ServiceType.TEXT_GENERATION + ); + + if (!textGenerationService) { + throw new Error("Text generation service not found"); + } + + response = await textGenerationService.queueTextCompletion( + context, + temperature, + _stop, + frequency_penalty, + presence_penalty, + max_response_length + ); + elizaLogger.debug("Received response from local Llama model."); + break; + } + + case ModelProviderName.REDPILL: { + elizaLogger.debug("Initializing RedPill model."); + const serverUrl = getEndpoint(provider); + const openai = createOpenAI({ + apiKey, + baseURL: serverUrl, + fetch: runtime.fetch, + }); + + const { text: redpillResponse } = await aiGenerateText({ + model: openai.languageModel(model), + prompt: context, + temperature: temperature, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + tools: tools, + onStepFinish: onStepFinish, + maxSteps: maxSteps, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + experimental_telemetry: experimental_telemetry, + }); + + response = redpillResponse; + elizaLogger.debug("Received response from redpill model."); + break; + } + + case ModelProviderName.OPENROUTER: { + elizaLogger.debug("Initializing OpenRouter model."); + const serverUrl = getEndpoint(provider); + const openrouter = createOpenAI({ + apiKey, + baseURL: serverUrl, + fetch: runtime.fetch, + }); + + const { text: openrouterResponse } = await aiGenerateText({ + model: openrouter.languageModel(model), + prompt: context, + temperature: temperature, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + tools: tools, + onStepFinish: onStepFinish, + maxSteps: maxSteps, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + experimental_telemetry: experimental_telemetry, + }); + + response = openrouterResponse; + elizaLogger.debug("Received response from OpenRouter model."); + break; + } + + case ModelProviderName.OLLAMA: + { + elizaLogger.debug("Initializing Ollama model."); + + const ollamaProvider = createOllama({ + baseURL: getEndpoint(provider) + "/api", + fetch: runtime.fetch, + }); + const ollama = ollamaProvider(model); + + elizaLogger.debug("****** MODEL\n", model); + + const { text: ollamaResponse } = await aiGenerateText({ + model: ollama, + prompt: context, + tools: tools, + onStepFinish: onStepFinish, + temperature: temperature, + maxSteps: maxSteps, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + experimental_telemetry: experimental_telemetry, + }); + + response = ollamaResponse; + } + elizaLogger.debug("Received response from Ollama model."); + break; + + case ModelProviderName.HEURIST: { + elizaLogger.debug("Initializing Heurist model."); + const heurist = createOpenAI({ + apiKey: apiKey, + baseURL: endpoint, + fetch: runtime.fetch, + }); + + const { text: heuristResponse } = await aiGenerateText({ + model: heurist.languageModel(model), + prompt: context, + system: + customSystemPrompt ?? + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + tools: tools, + onStepFinish: onStepFinish, + temperature: temperature, + maxTokens: max_response_length, + maxSteps: maxSteps, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + experimental_telemetry: experimental_telemetry, + }); + + response = heuristResponse; + elizaLogger.debug("Received response from Heurist model."); + break; + } + case ModelProviderName.GAIANET: { + elizaLogger.debug("Initializing GAIANET model."); + + var baseURL = getEndpoint(provider); + if (!baseURL) { + switch (modelClass) { + case ModelClass.SMALL: + baseURL = + settings.SMALL_GAIANET_SERVER_URL || + "https://llama3b.gaia.domains/v1"; + break; + case ModelClass.MEDIUM: + baseURL = + settings.MEDIUM_GAIANET_SERVER_URL || + "https://llama8b.gaia.domains/v1"; + break; + case ModelClass.LARGE: + baseURL = + settings.LARGE_GAIANET_SERVER_URL || + "https://qwen72b.gaia.domains/v1"; + break; + } + } + + elizaLogger.debug("Using GAIANET model with baseURL:", baseURL); + + const openai = createOpenAI({ + apiKey, + baseURL: endpoint, + fetch: runtime.fetch, + }); + + const { text: openaiResponse } = await aiGenerateText({ + model: openai.languageModel(model), + prompt: context, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + tools: tools, + onStepFinish: onStepFinish, + maxSteps: maxSteps, + temperature: temperature, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + experimental_telemetry: experimental_telemetry, + }); + + response = openaiResponse; + elizaLogger.debug("Received response from GAIANET model."); + break; + } + + case ModelProviderName.GALADRIEL: { + elizaLogger.debug("Initializing Galadriel model."); + const headers = {}; + const fineTuneApiKey = runtime.getSetting( + "GALADRIEL_FINE_TUNE_API_KEY" + ); + if (fineTuneApiKey) { + headers["Fine-Tune-Authentication"] = fineTuneApiKey; + } + const galadriel = createOpenAI({ + headers, + apiKey: apiKey, + baseURL: endpoint, + fetch: runtime.fetch, + }); + + const { text: galadrielResponse } = await aiGenerateText({ + model: galadriel.languageModel(model), + prompt: context, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + tools: tools, + onStepFinish: onStepFinish, + maxSteps: maxSteps, + temperature: temperature, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + experimental_telemetry: experimental_telemetry, + }); + + response = galadrielResponse; + elizaLogger.debug("Received response from Galadriel model."); + break; + } + + case ModelProviderName.INFERA: { + elizaLogger.debug("Initializing Infera model."); + + const apiKey = settings.INFERA_API_KEY || runtime.token; + + const infera = createOpenAI({ + apiKey, + baseURL: endpoint, + headers: { + api_key: apiKey, + "Content-Type": "application/json", + }, + }); + + const { text: inferaResponse } = await aiGenerateText({ + model: infera.languageModel(model), + prompt: context, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + temperature: temperature, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + }); + response = inferaResponse; + elizaLogger.debug("Received response from Infera model."); + break; + } + + case ModelProviderName.VENICE: { + elizaLogger.debug("Initializing Venice model."); + const venice = createOpenAI({ + apiKey: apiKey, + baseURL: endpoint, + }); + + const { text: veniceResponse } = await aiGenerateText({ + model: venice.languageModel(model), + prompt: context, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + tools: tools, + onStepFinish: onStepFinish, + temperature: temperature, + maxSteps: maxSteps, + maxTokens: max_response_length, + }); + + response = veniceResponse; + elizaLogger.debug("Received response from Venice model."); + break; + } + + case ModelProviderName.DEEPSEEK: { + elizaLogger.debug("Initializing Deepseek model."); + const serverUrl = models[provider].endpoint; + const deepseek = createOpenAI({ + apiKey, + baseURL: serverUrl, + fetch: runtime.fetch, + }); + + const { text: deepseekResponse } = await aiGenerateText({ + model: deepseek.languageModel(model), + prompt: context, + temperature: temperature, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + tools: tools, + onStepFinish: onStepFinish, + maxSteps: maxSteps, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + experimental_telemetry: experimental_telemetry, + }); + + response = deepseekResponse; + elizaLogger.debug("Received response from Deepseek model."); + break; + } + + default: { + const errorMessage = `Unsupported provider: ${provider}`; + elizaLogger.error(errorMessage); + throw new Error(errorMessage); + } + } + + return response; + } catch (error) { + elizaLogger.error("Error in generateText:", error); + throw error; + } +} + +/** + * Sends a message to the model to determine if it should respond to the given context. + * @param opts - The options for the generateText request + * @param opts.context The context to evaluate for response + * @param opts.stop A list of strings to stop the generateText at + * @param opts.model The model to use for generateText + * @param opts.frequency_penalty The frequency penalty to apply (0.0 to 2.0) + * @param opts.presence_penalty The presence penalty to apply (0.0 to 2.0) + * @param opts.temperature The temperature to control randomness (0.0 to 2.0) + * @param opts.serverUrl The URL of the API server + * @param opts.max_context_length Maximum allowed context length in tokens + * @param opts.max_response_length Maximum allowed response length in tokens + * @returns Promise resolving to "RESPOND", "IGNORE", "STOP" or null + */ +export async function generateShouldRespond({ + runtime, + context, + modelClass, +}: { + runtime: IAgentRuntime; + context: string; + modelClass: ModelClass; +}): Promise<"RESPOND" | "IGNORE" | "STOP" | null> { + let retryDelay = 1000; + while (true) { + try { + elizaLogger.debug( + "Attempting to generate text with context:", + context + ); + const response = await generateText({ + runtime, + context, + modelClass, + }); + + elizaLogger.debug("Received response from generateText:", response); + const parsedResponse = parseShouldRespondFromText(response.trim()); + if (parsedResponse) { + elizaLogger.debug("Parsed response:", parsedResponse); + return parsedResponse; + } else { + elizaLogger.debug("generateShouldRespond no response"); + } + } catch (error) { + elizaLogger.error("Error in generateShouldRespond:", error); + if ( + error instanceof TypeError && + error.message.includes("queueTextCompletion") + ) { + elizaLogger.error( + "TypeError: Cannot read properties of null (reading 'queueTextCompletion')" + ); + } + } + + elizaLogger.log(`Retrying in ${retryDelay}ms...`); + await new Promise((resolve) => setTimeout(resolve, retryDelay)); + retryDelay *= 2; + } +} + +/** + * Splits content into chunks of specified size with optional overlapping bleed sections + * @param content - The text content to split into chunks + * @param chunkSize - The maximum size of each chunk in tokens + * @param bleed - Number of characters to overlap between chunks (default: 100) + * @returns Promise resolving to array of text chunks with bleed sections + */ +export async function splitChunks( + content: string, + chunkSize: number = 512, + bleed: number = 20 +): Promise<string[]> { + const textSplitter = new RecursiveCharacterTextSplitter({ + chunkSize: Number(chunkSize), + chunkOverlap: Number(bleed), + }); + + return textSplitter.splitText(content); +} + +/** + * Sends a message to the model and parses the response as a boolean value + * @param opts - The options for the generateText request + * @param opts.context The context to evaluate for the boolean response + * @param opts.stop A list of strings to stop the generateText at + * @param opts.model The model to use for generateText + * @param opts.frequency_penalty The frequency penalty to apply (0.0 to 2.0) + * @param opts.presence_penalty The presence penalty to apply (0.0 to 2.0) + * @param opts.temperature The temperature to control randomness (0.0 to 2.0) + * @param opts.serverUrl The URL of the API server + * @param opts.token The API token for authentication + * @param opts.max_context_length Maximum allowed context length in tokens + * @param opts.max_response_length Maximum allowed response length in tokens + * @returns Promise resolving to a boolean value parsed from the model's response + */ +export async function generateTrueOrFalse({ + runtime, + context = "", + modelClass, +}: { + runtime: IAgentRuntime; + context: string; + modelClass: ModelClass; +}): Promise<boolean> { + let retryDelay = 1000; + const modelSettings = getModelSettings(runtime.modelProvider, modelClass); + const stop = Array.from( + new Set([...(modelSettings.stop || []), ["\n"]]) + ) as string[]; + + while (true) { + try { + const response = await generateText({ + stop, + runtime, + context, + modelClass, + }); + + const parsedResponse = parseBooleanFromText(response.trim()); + if (parsedResponse !== null) { + return parsedResponse; + } + } catch (error) { + elizaLogger.error("Error in generateTrueOrFalse:", error); + } + + await new Promise((resolve) => setTimeout(resolve, retryDelay)); + retryDelay *= 2; + } +} + +/** + * Send a message to the model and parse the response as a string array + * @param opts - The options for the generateText request + * @param opts.context The context/prompt to send to the model + * @param opts.stop Array of strings that will stop the model's generation if encountered + * @param opts.model The language model to use + * @param opts.frequency_penalty The frequency penalty to apply (0.0 to 2.0) + * @param opts.presence_penalty The presence penalty to apply (0.0 to 2.0) + * @param opts.temperature The temperature to control randomness (0.0 to 2.0) + * @param opts.serverUrl The URL of the API server + * @param opts.token The API token for authentication + * @param opts.max_context_length Maximum allowed context length in tokens + * @param opts.max_response_length Maximum allowed response length in tokens + * @returns Promise resolving to an array of strings parsed from the model's response + */ +export async function generateTextArray({ + runtime, + context, + modelClass, +}: { + runtime: IAgentRuntime; + context: string; + modelClass: ModelClass; +}): Promise<string[]> { + if (!context) { + elizaLogger.error("generateTextArray context is empty"); + return []; + } + let retryDelay = 1000; + + while (true) { + try { + const response = await generateText({ + runtime, + context, + modelClass, + }); + + const parsedResponse = parseJsonArrayFromText(response); + if (parsedResponse) { + return parsedResponse; + } + } catch (error) { + elizaLogger.error("Error in generateTextArray:", error); + } + + await new Promise((resolve) => setTimeout(resolve, retryDelay)); + retryDelay *= 2; + } +} + +export async function generateObjectDeprecated({ + runtime, + context, + modelClass, +}: { + runtime: IAgentRuntime; + context: string; + modelClass: ModelClass; +}): Promise<any> { + if (!context) { + elizaLogger.error("generateObjectDeprecated context is empty"); + return null; + } + let retryDelay = 1000; + + while (true) { + try { + // this is slightly different than generateObjectArray, in that we parse object, not object array + const response = await generateText({ + runtime, + context, + modelClass, + }); + const parsedResponse = parseJSONObjectFromText(response); + if (parsedResponse) { + return parsedResponse; + } + } catch (error) { + elizaLogger.error("Error in generateObject:", error); + } + + await new Promise((resolve) => setTimeout(resolve, retryDelay)); + retryDelay *= 2; + } +} + +export async function generateObjectArray({ + runtime, + context, + modelClass, +}: { + runtime: IAgentRuntime; + context: string; + modelClass: ModelClass; +}): Promise<any[]> { + if (!context) { + elizaLogger.error("generateObjectArray context is empty"); + return []; + } + let retryDelay = 1000; + + while (true) { + try { + const response = await generateText({ + runtime, + context, + modelClass, + }); + + const parsedResponse = parseJsonArrayFromText(response); + if (parsedResponse) { + return parsedResponse; + } + } catch (error) { + elizaLogger.error("Error in generateTextArray:", error); + } + + await new Promise((resolve) => setTimeout(resolve, retryDelay)); + retryDelay *= 2; + } +} + +/** + * Send a message to the model for generateText. + * @param opts - The options for the generateText request. + * @param opts.context The context of the message to be completed. + * @param opts.stop A list of strings to stop the generateText at. + * @param opts.model The model to use for generateText. + * @param opts.frequency_penalty The frequency penalty to apply to the generateText. + * @param opts.presence_penalty The presence penalty to apply to the generateText. + * @param opts.temperature The temperature to apply to the generateText. + * @param opts.max_context_length The maximum length of the context to apply to the generateText. + * @returns The completed message. + */ +export async function generateMessageResponse({ + runtime, + context, + modelClass, +}: { + runtime: IAgentRuntime; + context: string; + modelClass: ModelClass; +}): Promise<Content> { + const modelSettings = getModelSettings(runtime.modelProvider, modelClass); + const max_context_length = modelSettings.maxInputTokens; + + context = await trimTokens(context, max_context_length, runtime); + elizaLogger.debug("Context:", context); + let retryLength = 1000; // exponential backoff + while (true) { + try { + elizaLogger.log("Generating message response.."); + + const response = await generateText({ + runtime, + context, + modelClass, + }); + + // try parsing the response as JSON, if null then try again + const parsedContent = parseJSONObjectFromText(response) as Content; + if (!parsedContent) { + elizaLogger.debug("parsedContent is null, retrying"); + continue; + } + + return parsedContent; + } catch (error) { + elizaLogger.error("ERROR:", error); + // wait for 2 seconds + retryLength *= 2; + await new Promise((resolve) => setTimeout(resolve, retryLength)); + elizaLogger.debug("Retrying..."); + } + } +} + +export const generateImage = async ( + data: { + prompt: string; + width: number; + height: number; + count?: number; + negativePrompt?: string; + numIterations?: number; + guidanceScale?: number; + seed?: number; + modelId?: string; + jobId?: string; + stylePreset?: string; + hideWatermark?: boolean; + }, + runtime: IAgentRuntime +): Promise<{ + success: boolean; + data?: string[]; + error?: any; +}> => { + const modelSettings = getImageModelSettings(runtime.imageModelProvider); + const model = modelSettings.name; + elizaLogger.info("Generating image with options:", { + imageModelProvider: model, + }); + + const apiKey = + runtime.imageModelProvider === runtime.modelProvider + ? runtime.token + : (() => { + // First try to match the specific provider + switch (runtime.imageModelProvider) { + case ModelProviderName.HEURIST: + return runtime.getSetting("HEURIST_API_KEY"); + case ModelProviderName.TOGETHER: + return runtime.getSetting("TOGETHER_API_KEY"); + case ModelProviderName.FAL: + return runtime.getSetting("FAL_API_KEY"); + case ModelProviderName.OPENAI: + return runtime.getSetting("OPENAI_API_KEY"); + case ModelProviderName.VENICE: + return runtime.getSetting("VENICE_API_KEY"); + case ModelProviderName.LIVEPEER: + return runtime.getSetting("LIVEPEER_GATEWAY_URL"); + default: + // If no specific match, try the fallback chain + return ( + runtime.getSetting("HEURIST_API_KEY") ?? + runtime.getSetting("NINETEEN_AI_API_KEY") ?? + runtime.getSetting("TOGETHER_API_KEY") ?? + runtime.getSetting("FAL_API_KEY") ?? + runtime.getSetting("OPENAI_API_KEY") ?? + runtime.getSetting("VENICE_API_KEY") ?? + runtime.getSetting("LIVEPEER_GATEWAY_URL") + ); + } + })(); + try { + if (runtime.imageModelProvider === ModelProviderName.HEURIST) { + const response = await fetch( + "http://sequencer.heurist.xyz/submit_job", + { + method: "POST", + headers: { + Authorization: `Bearer ${apiKey}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + job_id: data.jobId || crypto.randomUUID(), + model_input: { + SD: { + prompt: data.prompt, + neg_prompt: data.negativePrompt, + num_iterations: data.numIterations || 20, + width: data.width || 512, + height: data.height || 512, + guidance_scale: data.guidanceScale || 3, + seed: data.seed || -1, + }, + }, + model_id: model, + deadline: 60, + priority: 1, + }), + } + ); + + if (!response.ok) { + throw new Error( + `Heurist image generation failed: ${response.statusText}` + ); + } + + const imageURL = await response.json(); + return { success: true, data: [imageURL] }; + } else if ( + runtime.imageModelProvider === ModelProviderName.TOGETHER || + // for backwards compat + runtime.imageModelProvider === ModelProviderName.LLAMACLOUD + ) { + const together = new Together({ apiKey: apiKey as string }); + const response = await together.images.create({ + model: model, + prompt: data.prompt, + width: data.width, + height: data.height, + steps: modelSettings?.steps ?? 4, + n: data.count, + }); + + // Add type assertion to handle the response properly + const togetherResponse = + response as unknown as TogetherAIImageResponse; + + if ( + !togetherResponse.data || + !Array.isArray(togetherResponse.data) + ) { + throw new Error("Invalid response format from Together AI"); + } + + // Rest of the code remains the same... + const base64s = await Promise.all( + togetherResponse.data.map(async (image) => { + if (!image.url) { + elizaLogger.error("Missing URL in image data:", image); + throw new Error("Missing URL in Together AI response"); + } + + // Fetch the image from the URL + const imageResponse = await fetch(image.url); + if (!imageResponse.ok) { + throw new Error( + `Failed to fetch image: ${imageResponse.statusText}` + ); + } + + // Convert to blob and then to base64 + const blob = await imageResponse.blob(); + const arrayBuffer = await blob.arrayBuffer(); + const base64 = Buffer.from(arrayBuffer).toString("base64"); + + // Return with proper MIME type + return `data:image/jpeg;base64,${base64}`; + }) + ); + + if (base64s.length === 0) { + throw new Error("No images generated by Together AI"); + } + + elizaLogger.debug(`Generated ${base64s.length} images`); + return { success: true, data: base64s }; + } else if (runtime.imageModelProvider === ModelProviderName.FAL) { + fal.config({ + credentials: apiKey as string, + }); + + // Prepare the input parameters according to their schema + const input = { + prompt: data.prompt, + image_size: "square" as const, + num_inference_steps: modelSettings?.steps ?? 50, + guidance_scale: data.guidanceScale || 3.5, + num_images: data.count, + enable_safety_checker: + runtime.getSetting("FAL_AI_ENABLE_SAFETY_CHECKER") === + "true", + safety_tolerance: Number( + runtime.getSetting("FAL_AI_SAFETY_TOLERANCE") || "2" + ), + output_format: "png" as const, + seed: data.seed ?? 6252023, + ...(runtime.getSetting("FAL_AI_LORA_PATH") + ? { + loras: [ + { + path: runtime.getSetting("FAL_AI_LORA_PATH"), + scale: 1, + }, + ], + } + : {}), + }; + + // Subscribe to the model + const result = await fal.subscribe(model, { + input, + logs: true, + onQueueUpdate: (update) => { + if (update.status === "IN_PROGRESS") { + elizaLogger.info(update.logs.map((log) => log.message)); + } + }, + }); + + // Convert the returned image URLs to base64 to match existing functionality + const base64Promises = result.data.images.map(async (image) => { + const response = await fetch(image.url); + const blob = await response.blob(); + const buffer = await blob.arrayBuffer(); + const base64 = Buffer.from(buffer).toString("base64"); + return `data:${image.content_type};base64,${base64}`; + }); + + const base64s = await Promise.all(base64Promises); + return { success: true, data: base64s }; + } else if (runtime.imageModelProvider === ModelProviderName.VENICE) { + const response = await fetch( + "https://api.venice.ai/api/v1/image/generate", + { + method: "POST", + headers: { + Authorization: `Bearer ${apiKey}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + model: model, + prompt: data.prompt, + negative_prompt: data.negativePrompt, + width: data.width, + height: data.height, + steps: data.numIterations, + seed: data.seed, + style_preset: data.stylePreset, + hide_watermark: data.hideWatermark, + }), + } + ); + + const result = await response.json(); + + if (!result.images || !Array.isArray(result.images)) { + throw new Error("Invalid response format from Venice AI"); + } + + const base64s = result.images.map((base64String) => { + if (!base64String) { + throw new Error( + "Empty base64 string in Venice AI response" + ); + } + return `data:image/png;base64,${base64String}`; + }); + + return { success: true, data: base64s }; + } else if ( + runtime.imageModelProvider === ModelProviderName.NINETEEN_AI + ) { + const response = await fetch( + "https://api.nineteen.ai/v1/text-to-image", + { + method: "POST", + headers: { + Authorization: `Bearer ${apiKey}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + model: model, + prompt: data.prompt, + negative_prompt: data.negativePrompt, + width: data.width, + height: data.height, + steps: data.numIterations, + cfg_scale: data.guidanceScale || 3, + }), + } + ); + + const result = await response.json(); + + if (!result.images || !Array.isArray(result.images)) { + throw new Error("Invalid response format from Nineteen AI"); + } + + const base64s = result.images.map((base64String) => { + if (!base64String) { + throw new Error( + "Empty base64 string in Nineteen AI response" + ); + } + return `data:image/png;base64,${base64String}`; + }); + + return { success: true, data: base64s }; + } else if (runtime.imageModelProvider === ModelProviderName.LIVEPEER) { + if (!apiKey) { + throw new Error("Livepeer Gateway is not defined"); + } + try { + const baseUrl = new URL(apiKey); + if (!baseUrl.protocol.startsWith("http")) { + throw new Error("Invalid Livepeer Gateway URL protocol"); + } + const response = await fetch( + `${baseUrl.toString()}text-to-image`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + model_id: model, + prompt: data.prompt, + width: data.width || 1024, + height: data.height || 1024, + }), + } + ); + const result = await response.json(); + if (!result.images?.length) { + throw new Error("No images generated"); + } + const base64Images = await Promise.all( + result.images.map(async (image) => { + console.log("imageUrl console log", image.url); + let imageUrl; + if (image.url.includes("http")) { + imageUrl = image.url; + } else { + imageUrl = `${apiKey}${image.url}`; + } + const imageResponse = await fetch(imageUrl); + if (!imageResponse.ok) { + throw new Error( + `Failed to fetch image: ${imageResponse.statusText}` + ); + } + const blob = await imageResponse.blob(); + const arrayBuffer = await blob.arrayBuffer(); + const base64 = + Buffer.from(arrayBuffer).toString("base64"); + return `data:image/jpeg;base64,${base64}`; + }) + ); + return { + success: true, + data: base64Images, + }; + } catch (error) { + console.error(error); + return { success: false, error: error }; + } + } else { + let targetSize = `${data.width}x${data.height}`; + if ( + targetSize !== "1024x1024" && + targetSize !== "1792x1024" && + targetSize !== "1024x1792" + ) { + targetSize = "1024x1024"; + } + const openaiApiKey = runtime.getSetting("OPENAI_API_KEY") as string; + if (!openaiApiKey) { + throw new Error("OPENAI_API_KEY is not set"); + } + const openai = new OpenAI({ + apiKey: openaiApiKey as string, + }); + const response = await openai.images.generate({ + model, + prompt: data.prompt, + size: targetSize as "1024x1024" | "1792x1024" | "1024x1792", + n: data.count, + response_format: "b64_json", + }); + const base64s = response.data.map( + (image) => `data:image/png;base64,${image.b64_json}` + ); + return { success: true, data: base64s }; + } + } catch (error) { + console.error(error); + return { success: false, error: error }; + } +}; + +export const generateCaption = async ( + data: { imageUrl: string }, + runtime: IAgentRuntime +): Promise<{ + title: string; + description: string; +}> => { + const { imageUrl } = data; + const imageDescriptionService = + runtime.getService<IImageDescriptionService>( + ServiceType.IMAGE_DESCRIPTION + ); + + if (!imageDescriptionService) { + throw new Error("Image description service not found"); + } + + const resp = await imageDescriptionService.describeImage(imageUrl); + return { + title: resp.title.trim(), + description: resp.description.trim(), + }; +}; + +export const generateWebSearch = async ( + query: string, + runtime: IAgentRuntime +): Promise<SearchResponse> => { + try { + const apiKey = runtime.getSetting("TAVILY_API_KEY") as string; + if (!apiKey) { + throw new Error("TAVILY_API_KEY is not set"); + } + const tvly = tavily({ apiKey }); + const response = await tvly.search(query, { + includeAnswer: true, + maxResults: 3, // 5 (default) + topic: "general", // "general"(default) "news" + searchDepth: "advanced", // "basic"(default) "advanced" + includeImages: false, // false (default) true + }); + console.log(`TVLY RES`, response); + return response; + } catch (error) { + elizaLogger.error("Error:", error); + } +}; +export const generateSerperSearch = async ( + query: string, + runtime: IAgentRuntime +): Promise<SerperSearchResponse> => { + try { + const apiKey = runtime.getSetting("SERPER_API_KEY") as string; + if (!apiKey) { + throw new Error("SERPER_API_KEY is not set"); + } + //const cleanedQuery = query.replace(/@\S+/g, ''); + //console.log(`CLEANED QUERY`,cleanedQuery) + const data = JSON.stringify({ + q: query, + }); + + const options = { + hostname: "google.serper.dev", + port: 443, + path: "/search", + method: "POST", + headers: { + "X-API-KEY": apiKey, + "Content-Type": "application/json", + "Content-Length": Buffer.byteLength(data), + }, + }; + + const sendRequest = (): Promise<SerperSearchResponse> => { + return new Promise((resolve, reject) => { + const req = https.request(options, (res) => { + let body = ""; + + res.on("data", (chunk) => { + body += chunk; + }); + + res.on("end", () => { + if ( + res.statusCode && + res.statusCode >= 200 && + res.statusCode < 300 + ) { + try { + const parsedData = JSON.parse( + body + ) as SerperSearchResponse; + resolve(parsedData); + } catch (err) { + reject( + new Error( + `Failed to parse response: ${err}` + ) + ); + } + } else { + reject( + new Error( + `Request failed with status code: ${res.statusCode}` + ) + ); + } + }); + }); + + req.on("error", (err) => { + reject(err); + }); + + // Write data to the request body + req.write(data); + req.end(); + }); + }; + + const response = await sendRequest(); + console.log(`TVLY RES`, response); + return response; + } catch (error) { + elizaLogger.error("Error:", error); + throw error; // Re-throw the error for the caller to handle. + } +}; +/** + * Configuration options for generating objects with a model. + */ +export interface GenerationOptions { + runtime: IAgentRuntime; + context: string; + modelClass: ModelClass; + schema?: ZodSchema; + schemaName?: string; + schemaDescription?: string; + stop?: string[]; + mode?: "auto" | "json" | "tool"; + experimental_providerMetadata?: Record<string, unknown>; + verifiableInference?: boolean; + verifiableInferenceAdapter?: IVerifiableInferenceAdapter; + verifiableInferenceOptions?: VerifiableInferenceOptions; +} + +/** + * Base settings for model generation. + */ +interface ModelSettings { + prompt: string; + temperature: number; + maxTokens: number; + frequencyPenalty: number; + presencePenalty: number; + stop?: string[]; + experimental_telemetry?: TelemetrySettings; +} + +/** + * Generates structured objects from a prompt using specified AI models and configuration options. + * + * @param {GenerationOptions} options - Configuration options for generating objects. + * @returns {Promise<any[]>} - A promise that resolves to an array of generated objects. + * @throws {Error} - Throws an error if the provider is unsupported or if generation fails. + */ +export const generateObject = async ({ + runtime, + context, + modelClass, + schema, + schemaName, + schemaDescription, + stop, + mode = "json", + verifiableInference = false, + verifiableInferenceAdapter, + verifiableInferenceOptions, +}: GenerationOptions): Promise<GenerateObjectResult<unknown>> => { + if (!context) { + const errorMessage = "generateObject context is empty"; + console.error(errorMessage); + throw new Error(errorMessage); + } + + const provider = runtime.modelProvider; + const modelSettings = getModelSettings(runtime.modelProvider, modelClass); + const model = modelSettings.name; + const temperature = modelSettings.temperature; + const frequency_penalty = modelSettings.frequency_penalty; + const presence_penalty = modelSettings.presence_penalty; + const max_context_length = modelSettings.maxInputTokens; + const max_response_length = modelSettings.maxOutputTokens; + const experimental_telemetry = modelSettings.experimental_telemetry; + const apiKey = runtime.token; + + try { + context = await trimTokens(context, max_context_length, runtime); + + const modelOptions: ModelSettings = { + prompt: context, + temperature, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + stop: stop || modelSettings.stop, + experimental_telemetry: experimental_telemetry, + }; + + const response = await handleProvider({ + provider, + model, + apiKey, + schema, + schemaName, + schemaDescription, + mode, + modelOptions, + runtime, + context, + modelClass, + verifiableInference, + verifiableInferenceAdapter, + verifiableInferenceOptions, + }); + + return response; + } catch (error) { + console.error("Error in generateObject:", error); + throw error; + } +}; + +/** + * Interface for provider-specific generation options. + */ +interface ProviderOptions { + runtime: IAgentRuntime; + provider: ModelProviderName; + model: any; + apiKey: string; + schema?: ZodSchema; + schemaName?: string; + schemaDescription?: string; + mode?: "auto" | "json" | "tool"; + experimental_providerMetadata?: Record<string, unknown>; + modelOptions: ModelSettings; + modelClass: ModelClass; + context: string; + verifiableInference?: boolean; + verifiableInferenceAdapter?: IVerifiableInferenceAdapter; + verifiableInferenceOptions?: VerifiableInferenceOptions; +} + +/** + * Handles AI generation based on the specified provider. + * + * @param {ProviderOptions} options - Configuration options specific to the provider. + * @returns {Promise<any[]>} - A promise that resolves to an array of generated objects. + */ +export async function handleProvider( + options: ProviderOptions +): Promise<GenerateObjectResult<unknown>> { + const { + provider, + runtime, + context, + modelClass, + //verifiableInference, + //verifiableInferenceAdapter, + //verifiableInferenceOptions, + } = options; + switch (provider) { + case ModelProviderName.OPENAI: + case ModelProviderName.ETERNALAI: + case ModelProviderName.ALI_BAILIAN: + case ModelProviderName.VOLENGINE: + case ModelProviderName.LLAMACLOUD: + case ModelProviderName.TOGETHER: + case ModelProviderName.NANOGPT: + case ModelProviderName.AKASH_CHAT_API: + return await handleOpenAI(options); + case ModelProviderName.ANTHROPIC: + case ModelProviderName.CLAUDE_VERTEX: + return await handleAnthropic(options); + case ModelProviderName.GROK: + return await handleGrok(options); + case ModelProviderName.GROQ: + return await handleGroq(options); + case ModelProviderName.LLAMALOCAL: + return await generateObjectDeprecated({ + runtime, + context, + modelClass, + }); + case ModelProviderName.GOOGLE: + return await handleGoogle(options); + case ModelProviderName.MISTRAL: + return await handleMistral(options); + case ModelProviderName.REDPILL: + return await handleRedPill(options); + case ModelProviderName.OPENROUTER: + return await handleOpenRouter(options); + case ModelProviderName.OLLAMA: + return await handleOllama(options); + case ModelProviderName.DEEPSEEK: + return await handleDeepSeek(options); + default: { + const errorMessage = `Unsupported provider: ${provider}`; + elizaLogger.error(errorMessage); + throw new Error(errorMessage); + } + } +} +/** + * Handles object generation for OpenAI. + * + * @param {ProviderOptions} options - Options specific to OpenAI. + * @returns {Promise<GenerateObjectResult<unknown>>} - A promise that resolves to generated objects. + */ +async function handleOpenAI({ + model, + apiKey, + schema, + schemaName, + schemaDescription, + mode = "json", + modelOptions, + provider: _provider, + runtime, +}: ProviderOptions): Promise<GenerateObjectResult<unknown>> { + const baseURL = + getCloudflareGatewayBaseURL(runtime, "openai") || + models.openai.endpoint; + const openai = createOpenAI({ apiKey, baseURL }); + return await aiGenerateObject({ + model: openai.languageModel(model), + schema, + schemaName, + schemaDescription, + mode, + ...modelOptions, + }); +} + +/** + * Handles object generation for Anthropic models. + * + * @param {ProviderOptions} options - Options specific to Anthropic. + * @returns {Promise<GenerateObjectResult<unknown>>} - A promise that resolves to generated objects. + */ +async function handleAnthropic({ + model, + apiKey, + schema, + schemaName, + schemaDescription, + mode = "json", + modelOptions, + runtime, +}: ProviderOptions): Promise<GenerateObjectResult<unknown>> { + elizaLogger.debug("Handling Anthropic request with Cloudflare check"); + const baseURL = getCloudflareGatewayBaseURL(runtime, "anthropic"); + elizaLogger.debug("Anthropic handleAnthropic baseURL:", { baseURL }); + + const anthropic = createAnthropic({ apiKey, baseURL }); + return await aiGenerateObject({ + model: anthropic.languageModel(model), + schema, + schemaName, + schemaDescription, + mode, + ...modelOptions, + }); +} + +/** + * Handles object generation for Grok models. + * + * @param {ProviderOptions} options - Options specific to Grok. + * @returns {Promise<GenerateObjectResult<unknown>>} - A promise that resolves to generated objects. + */ +async function handleGrok({ + model, + apiKey, + schema, + schemaName, + schemaDescription, + mode = "json", + modelOptions, +}: ProviderOptions): Promise<GenerateObjectResult<unknown>> { + const grok = createOpenAI({ apiKey, baseURL: models.grok.endpoint }); + return await aiGenerateObject({ + model: grok.languageModel(model, { parallelToolCalls: false }), + schema, + schemaName, + schemaDescription, + mode, + ...modelOptions, + }); +} + +/** + * Handles object generation for Groq models. + * + * @param {ProviderOptions} options - Options specific to Groq. + * @returns {Promise<GenerateObjectResult<unknown>>} - A promise that resolves to generated objects. + */ +async function handleGroq({ + model, + apiKey, + schema, + schemaName, + schemaDescription, + mode = "json", + modelOptions, + runtime, +}: ProviderOptions): Promise<GenerateObjectResult<unknown>> { + elizaLogger.debug("Handling Groq request with Cloudflare check"); + const baseURL = getCloudflareGatewayBaseURL(runtime, "groq"); + elizaLogger.debug("Groq handleGroq baseURL:", { baseURL }); + + const groq = createGroq({ apiKey, baseURL }); + return await aiGenerateObject({ + model: groq.languageModel(model), + schema, + schemaName, + schemaDescription, + mode, + ...modelOptions, + }); +} + +/** + * Handles object generation for Google models. + * + * @param {ProviderOptions} options - Options specific to Google. + * @returns {Promise<GenerateObjectResult<unknown>>} - A promise that resolves to generated objects. + */ +async function handleGoogle({ + model, + apiKey: _apiKey, + schema, + schemaName, + schemaDescription, + mode = "json", + modelOptions, +}: ProviderOptions): Promise<GenerateObjectResult<unknown>> { + const google = createGoogleGenerativeAI(); + return await aiGenerateObject({ + model: google(model), + schema, + schemaName, + schemaDescription, + mode, + ...modelOptions, + }); +} + +/** + * Handles object generation for Mistral models. + * + * @param {ProviderOptions} options - Options specific to Mistral. + * @returns {Promise<GenerateObjectResult<unknown>>} - A promise that resolves to generated objects. + */ +async function handleMistral({ + model, + schema, + schemaName, + schemaDescription, + mode, + modelOptions, +}: ProviderOptions): Promise<GenerateObjectResult<unknown>> { + const mistral = createMistral(); + return await aiGenerateObject({ + model: mistral(model), + schema, + schemaName, + schemaDescription, + mode, + ...modelOptions, + }); +} + +/** + * Handles object generation for Redpill models. + * + * @param {ProviderOptions} options - Options specific to Redpill. + * @returns {Promise<GenerateObjectResult<unknown>>} - A promise that resolves to generated objects. + */ +async function handleRedPill({ + model, + apiKey, + schema, + schemaName, + schemaDescription, + mode = "json", + modelOptions, +}: ProviderOptions): Promise<GenerateObjectResult<unknown>> { + const redPill = createOpenAI({ apiKey, baseURL: models.redpill.endpoint }); + return await aiGenerateObject({ + model: redPill.languageModel(model), + schema, + schemaName, + schemaDescription, + mode, + ...modelOptions, + }); +} + +/** + * Handles object generation for OpenRouter models. + * + * @param {ProviderOptions} options - Options specific to OpenRouter. + * @returns {Promise<GenerateObjectResult<unknown>>} - A promise that resolves to generated objects. + */ +async function handleOpenRouter({ + model, + apiKey, + schema, + schemaName, + schemaDescription, + mode = "json", + modelOptions, +}: ProviderOptions): Promise<GenerateObjectResult<unknown>> { + const openRouter = createOpenAI({ + apiKey, + baseURL: models.openrouter.endpoint, + }); + return await aiGenerateObject({ + model: openRouter.languageModel(model), + schema, + schemaName, + schemaDescription, + mode, + ...modelOptions, + }); +} + +/** + * Handles object generation for Ollama models. + * + * @param {ProviderOptions} options - Options specific to Ollama. + * @returns {Promise<GenerateObjectResult<unknown>>} - A promise that resolves to generated objects. + */ +async function handleOllama({ + model, + schema, + schemaName, + schemaDescription, + mode = "json", + modelOptions, + provider, +}: ProviderOptions): Promise<GenerateObjectResult<unknown>> { + const ollamaProvider = createOllama({ + baseURL: getEndpoint(provider) + "/api", + }); + const ollama = ollamaProvider(model); + return await aiGenerateObject({ + model: ollama, + schema, + schemaName, + schemaDescription, + mode, + ...modelOptions, + }); +} + +/** + * Handles object generation for DeepSeek models. + * + * @param {ProviderOptions} options - Options specific to DeepSeek. + * @returns {Promise<GenerateObjectResult<unknown>>} - A promise that resolves to generated objects. + */ +async function handleDeepSeek({ + model, + apiKey, + schema, + schemaName, + schemaDescription, + mode, + modelOptions, +}: ProviderOptions): Promise<GenerateObjectResult<unknown>> { + const openai = createOpenAI({ apiKey, baseURL: models.deepseek.endpoint }); + return await aiGenerateObject({ + model: openai.languageModel(model), + schema, + schemaName, + schemaDescription, + mode, + ...modelOptions, + }); +} + +// Add type definition for Together AI response +interface TogetherAIImageResponse { + data: Array<{ + url: string; + content_type?: string; + image_type?: string; + }>; +} + +export async function generateTweetActions({ + runtime, + context, + modelClass, +}: { + runtime: IAgentRuntime; + context: string; + modelClass: ModelClass; +}): Promise<ActionResponse | null> { + let retryDelay = 1000; + while (true) { + try { + const response = await generateText({ + runtime, + context, + modelClass, + }); + console.debug( + "Received response from generateText for tweet actions:", + response + ); + const { actions } = parseActionResponseFromText(response.trim()); + if (actions) { + console.debug("Parsed tweet actions:", actions); + return actions; + } else { + elizaLogger.debug("generateTweetActions no valid response"); + } + } catch (error) { + elizaLogger.error("Error in generateTweetActions:", error); + if ( + error instanceof TypeError && + error.message.includes("queueTextCompletion") + ) { + elizaLogger.error( + "TypeError: Cannot read properties of null (reading 'queueTextCompletion')" + ); + } + } + elizaLogger.log(`Retrying in ${retryDelay}ms...`); + await new Promise((resolve) => setTimeout(resolve, retryDelay)); + retryDelay *= 2; + } +} diff --git a/packages/core/src/generation.ts b/packages/core/src/generation.ts index 7350ffb088a..f03d5cacf9e 100644 --- a/packages/core/src/generation.ts +++ b/packages/core/src/generation.ts @@ -44,6 +44,7 @@ import { type IVerifiableInferenceAdapter, ModelClass, ModelProviderName, + SerperSearchResponse, ServiceType, //VerifiableInferenceProvider, type TelemetrySettings, diff --git a/packages/plugin-abstract/README.md b/packages/plugin-abstract/README.md deleted file mode 100644 index 865ec94ead2..00000000000 --- a/packages/plugin-abstract/README.md +++ /dev/null @@ -1,175 +0,0 @@ -# @elizaos/plugin-abstract - -A plugin for interacting with the Abstract blockchain network within the ElizaOS ecosystem. - -## Description - -The Abstract plugin enables seamless token transfers on the Abstract testnet. It provides functionality to transfer both native ETH and ERC20 tokens using secure wallet operations. - -## Installation - -```bash -pnpm install @elizaos/plugin-abstract -``` - -## Configuration - -The plugin requires the following environment variables to be set: - -```typescript -ABSTRACT_ADDRESS=<Your Abstract wallet address> -ABSTRACT_PRIVATE_KEY=<Your Abstract private key> -``` - -## Usage - -### Basic Integration - -```typescript -import { abstractPlugin } from "@elizaos/plugin-abstract"; -``` - -### Transfer Examples - -```typescript -// The plugin responds to natural language commands like: - -"Send 100 USDC to 0xCCa8009f5e09F8C5dB63cb0031052F9CB635Af62"; -"Transfer 0.1 ETH to 0xbD8679cf79137042214fA4239b02F4022208EE82"; -"Pay 50 USDC on Abstract to [address]"; -``` - -## API Reference - -### Actions - -#### SEND_TOKEN - -Transfers tokens from the agent's wallet to another address. - -**Aliases:** - -- TRANSFER_TOKEN_ON_ABSTRACT -- TRANSFER_TOKENS_ON_ABSTRACT -- SEND_TOKENS_ON_ABSTRACT -- SEND_ETH_ON_ABSTRACT -- PAY_ON_ABSTRACT -- MOVE_TOKENS_ON_ABSTRACT -- MOVE_ETH_ON_ABSTRACT - -## Common Issues & Troubleshooting - -1. **Transaction Failures** - - - Verify wallet has sufficient balance - - Check recipient address format - - Ensure private key is correctly set - - Verify network connectivity - -2. **Configuration Issues** - - Verify all required environment variables are set - - Ensure private key format is correct - - Check wallet address format - -## Security Best Practices - -1. **Private Key Management** - - Store private key securely using environment variables - - Never commit private keys to version control - - Use separate wallets for development and production - - Monitor wallet activity regularly - -## Development Guide - -### Setting Up Development Environment - -1. Clone the repository -2. Install dependencies: - -```bash -pnpm install -``` - -3. Build the plugin: - -```bash -pnpm run build -``` - -4. Run the plugin: - -```bash -pnpm run dev -``` - -## Future Enhancements - -1. **Smart Account Features** - - - Multi-signature support - - Account recovery mechanisms - - Batch transaction processing - - Advanced permission management - - Account abstraction improvements - - Social recovery options - -2. **DEX Integration** - - - Advanced swap routing - - Liquidity pool management - - Yield farming automation - - Price impact analysis - - Slippage protection - - AMM optimization - -3. **Security Enhancements** - - - Transaction simulation - - Risk assessment tools - - Rate limiting controls - - Fraud detection system - - Emergency shutdown features - - Audit integration tools - -4. **Developer Tools** - - - Enhanced debugging capabilities - - Documentation generator - - CLI tool improvements - - Testing utilities - - Deployment automation - - Performance profiling - -5. **Analytics and Monitoring** - - - Transaction tracking dashboard - - Network statistics - - Performance metrics - - Gas usage optimization - - Custom reporting tools - - Real-time monitoring - -6. **Wallet Management** - - Multiple wallet support - - Hardware wallet integration - - Address book features - - Transaction history analysis - - Balance monitoring - - Token management tools - -We welcome community feedback and contributions to help prioritize these enhancements. - -## Contributing - -Contributions are welcome! Please see the [CONTRIBUTING.md](CONTRIBUTING.md) file for more information. - -## Credits - -This plugin integrates with and builds upon several key technologies: - -- [Abstract](https://abs.xyz/): Consumer blockchain -- [viem](https://viem.sh/): Typescript web3 client - -## License - -This plugin is part of the Eliza project. See the main project repository for license information. diff --git a/packages/plugin-abstract/package.json b/packages/plugin-abstract/package.json deleted file mode 100644 index 42c5f7c1bae..00000000000 --- a/packages/plugin-abstract/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "@elizaos/plugin-abstract", - "version": "0.1.9-alpha.1", - "type": "module", - "main": "dist/index.js", - "module": "dist/index.js", - "types": "dist/index.d.ts", - "exports": { - "./package.json": "./package.json", - ".": { - "import": { - "@elizaos/source": "./src/index.ts", - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - } - } - }, - "files": [ - "dist" - ], - "dependencies": { - "@abstract-foundation/agw-client": "1.0.1", - "@elizaos/core": "workspace:*", - "tsup": "^8.3.5", - "viem": "2.22.2" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch" - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } -} \ No newline at end of file diff --git a/packages/plugin-abstract/src/actions/deployTokenAction.ts b/packages/plugin-abstract/src/actions/deployTokenAction.ts deleted file mode 100644 index e06a22fbf8b..00000000000 --- a/packages/plugin-abstract/src/actions/deployTokenAction.ts +++ /dev/null @@ -1,267 +0,0 @@ -import type { Action } from "@elizaos/core"; -import { - type ActionExample, - type Content, - type HandlerCallback, - type IAgentRuntime, - type Memory, - ModelClass, - type State, - elizaLogger, - composeContext, - generateObject, - stringToUuid, -} from "@elizaos/core"; -import { validateAbstractConfig } from "../environment"; -import { parseEther, type Hash } from "viem"; -import { abstractTestnet } from "viem/chains"; -import { - type AbstractClient, - createAbstractClient, -} from "@abstract-foundation/agw-client"; -import { z } from "zod"; -import { useGetAccount, useGetWalletClient } from "../hooks"; -import basicToken from "../constants/contracts/basicToken.json"; -import { abstractPublicClient } from "../utils/viemHelpers"; - -const DeploySchema = z.object({ - name: z.string(), - symbol: z.string(), - initialSupply: z.string(), - useAGW: z.boolean(), -}); - -const validatedSchema = z.object({ - name: z.string().min(1, "Name is required"), - symbol: z - .string() - .min(1, "Symbol is required") - .max(5, "Symbol must be 5 characters or less"), - initialSupply: z - .string() - .refine((val) => !Number.isNaN(Number(val)) && Number(val) > 0, { - message: "Initial supply must be a positive number", - }), - useAGW: z.boolean(), -}); - -export interface DeployContent extends Content { - name: string; - symbol: string; - initialSupply: string; - useAGW: boolean; -} - -const deployTemplate = `Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined. - -Example response: -\`\`\`json -{ - "name": "My Token", - "symbol": "MTK", - "initialSupply": "1000000", - "useAGW": true -} -\`\`\` - -User message: -"{{currentMessage}}" - -Given the message, extract the following information about the requested token deployment: -- Token name -- Token symbol (usually 3-4 characters) -- Initial supply amount -- Whether to use Abstract Global Wallet aka AGW - -If the user did not specify "global wallet", "AGW", "agw", or "abstract global wallet" in their message, set useAGW to false, otherwise set it to true. - -Respond with a JSON markdown block containing only the extracted values.`; - -export const deployTokenAction: Action = { - name: "DEPLOY_TOKEN", - similes: [ - "CREATE_TOKEN", - "DEPLOY_NEW_TOKEN", - "CREATE_NEW_TOKEN", - "LAUNCH_TOKEN", - ], - validate: async (runtime: IAgentRuntime) => { - await validateAbstractConfig(runtime); - return true; - }, - description: "Deploy a new ERC20 token contract", - handler: async ( - runtime: IAgentRuntime, - message: Memory, - state: State, - _options: { [key: string]: unknown }, - callback?: HandlerCallback, - ): Promise<boolean> => { - elizaLogger.log("Starting Abstract DEPLOY_TOKEN handler..."); - - if (!state) { - state = (await runtime.composeState(message)) as State; - } else { - state = await runtime.updateRecentMessageState(state); - } - - state.currentMessage = `${state.recentMessagesData[1].content.text}`; - const deployContext = composeContext({ - state, - template: deployTemplate, - }); - - const content = ( - await generateObject({ - runtime, - context: deployContext, - modelClass: ModelClass.SMALL, - schema: DeploySchema, - }) - ).object as DeployContent; - - // Validate deployment content - const result = validatedSchema.safeParse(content); - if (!result.success) { - elizaLogger.error("Invalid content for DEPLOY_TOKEN action.", { - errors: result.error.errors, - }); - if (callback) { - callback({ - text: "Unable to process token deployment request. Invalid parameters provided.", - content: { error: "Invalid deployment parameters" }, - }); - } - return false; - } - - try { - const account = useGetAccount(runtime); - const supply = parseEther(content.initialSupply); - let hash: Hash; - - if (content.useAGW) { - const abstractClient = (await createAbstractClient({ - chain: abstractTestnet, - signer: account, - })) as any; // type being exported as never - - hash = await abstractClient.deployContract({ - abi: basicToken.abi, - bytecode: basicToken.bytecode, - args: [result.data.name, result.data.symbol, supply], - }); - } else { - const walletClient = useGetWalletClient(); - - hash = await walletClient.deployContract({ - chain: abstractTestnet, - account, - abi: basicToken.abi, - bytecode: basicToken.bytecode, - args: [result.data.name, result.data.symbol, supply], - kzg: undefined, - }); - } - - // Wait for transaction receipt - const receipt = await abstractPublicClient.waitForTransactionReceipt({ - hash, - }); - const contractAddress = receipt.contractAddress; - - elizaLogger.success( - `Token deployment completed! Contract address: ${contractAddress}. Transaction hash: ${hash}`, - ); - if (callback) { - callback({ - text: `Token "${result.data.name}" (${result.data.symbol}) deployed successfully! Contract address: ${contractAddress} and transaction hash: ${hash}`, - content: { - hash, - tokenName: result.data.name, - tokenSymbol: result.data.symbol, - contractAddress, - transactionHash: hash, - }, - }); - } - - const metadata = { - tokenAddress: contractAddress, - name: result.data.name, - symbol: result.data.symbol, - initialSupply: String(result.data.initialSupply), - }; - - await runtime.messageManager.createMemory({ - id: stringToUuid(`${result.data.symbol}-${runtime.agentId}`), - userId: runtime.agentId, - content: { - text: `Token deployed: ${result.data.name}, symbol: ${result.data.symbol} and contract address: ${contractAddress}`, - ...metadata, - source: "abstract_token_deployment", - }, - agentId: runtime.agentId, - roomId: stringToUuid(`tokens-${runtime.agentId}`), - createdAt: Date.now(), - }); - elizaLogger.success("memory saved for token deployment", metadata); - - return true; - } catch (error) { - elizaLogger.error("Error during token deployment:", error); - if (callback) { - callback({ - text: `Error deploying token: ${error.message}`, - content: { error: error.message }, - }); - } - return false; - } - }, - - examples: [ - [ - { - user: "{{user1}}", - content: { - text: "Deploy a new token called MyToken with symbol MTK and initial supply of 1000000", - }, - }, - { - user: "{{agent}}", - content: { - text: "I'll deploy your new token now.", - action: "DEPLOY_TOKEN", - }, - }, - { - user: "{{agent}}", - content: { - text: "Successfully deployed MyToken (MTK) with 1000000 initial supply.\nContract address: 0xdde850f9257365fffffc11324726ebdcf5b90b01c6eec9b3e7ab3e81fde6f14b\nTransaction hash: 0xdde850f9257365fffffc11324726ebdcf5b90b01c6eec9b3e7ab3e81fde6f14b", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { - text: "Create a new token using AGW with name TestCoin, symbol TEST, and 5000 supply", - }, - }, - { - user: "{{agent}}", - content: { - text: "I'll deploy your token using the Abstract Global Wallet.", - action: "DEPLOY_TOKEN", - }, - }, - { - user: "{{agent}}", - content: { - text: "Successfully deployed TestCoin (TEST) with 5000 initial supply using AGW.\nContract address: 0xdde850f9257365fffffc11324726ebdcf5b90b01c6eec9b3e7ab3e81fde6f14b\nTransaction: 0x4fed598033f0added272c3ddefd4d83a521634a738474400b27378db462a76ec", - }, - }, - ], - ] as ActionExample[][], -}; diff --git a/packages/plugin-abstract/src/actions/getBalanceAction.ts b/packages/plugin-abstract/src/actions/getBalanceAction.ts deleted file mode 100644 index 9b4c68ecd00..00000000000 --- a/packages/plugin-abstract/src/actions/getBalanceAction.ts +++ /dev/null @@ -1,280 +0,0 @@ -import type { Action } from "@elizaos/core"; -import { - type ActionExample, - type Content, - type HandlerCallback, - type IAgentRuntime, - type Memory, - ModelClass, - type State, - elizaLogger, - composeContext, - generateObject, - stringToUuid, -} from "@elizaos/core"; -import { validateAbstractConfig } from "../environment"; - -import { erc20Abi, formatUnits, isAddress } from "viem"; -import { z } from "zod"; -import { ETH_ADDRESS } from "../constants"; -import { useGetAccount } from "../hooks"; -import { - resolveAddress, - getTokenByName, - abstractPublicClient, -} from "../utils/viemHelpers"; - -const BalanceSchema = z.object({ - tokenAddress: z.string().optional().nullable(), - walletAddress: z.string().optional().nullable(), - tokenSymbol: z.string().optional().nullable(), -}); - -export interface BalanceContent extends Content { - tokenAddress?: string; - walletAddress?: string; - tokenSymbol?: string; -} - -const validatedSchema = z.object({ - tokenAddress: z - .string() - .refine(isAddress, { message: "Invalid token address" }), - walletAddress: z - .string() - .refine(isAddress, { message: "Invalid token address" }), -}); - -const balanceTemplate = `Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined. - - -Example response: -\`\`\`json -{ - "tokenAddress": "<TOKEN_ADDRESS>", - "walletAddress": "<TOKEN_ADDRESS>", - "tokenSymbol": "USDC" -} -\`\`\` - -User message: -"{{currentMessage}}" - -Given the message, extract the following information about the requested balance check: -- Token contract address (optional, if not specified set to null) -- Wallet address to check (optional, if not specified set to null) -- The symbol of the token to check (optional, if not specified set to null). Between 1 to 6 characters usually. - -Respond with a JSON markdown block containing only the extracted values.`; - -export const getBalanceAction: Action = { - name: "GET_BALANCE", - similes: [ - "CHECK_BALANCE", - "VIEW_BALANCE", - "SHOW_BALANCE", - "BALANCE_CHECK", - "TOKEN_BALANCE", - ], - validate: async (runtime: IAgentRuntime, message: Memory) => { - await validateAbstractConfig(runtime); - return true; - }, - description: "Check token balance for a given address", - handler: async ( - runtime: IAgentRuntime, - message: Memory, - state: State, - _options: { [key: string]: unknown }, - callback?: HandlerCallback, - ): Promise<boolean> => { - elizaLogger.log("Starting Abstract GET_BALANCE handler..."); - - // Initialize or update state - if (!state) { - state = (await runtime.composeState(message)) as State; - } else { - state = await runtime.updateRecentMessageState(state); - } - - // Compose balance context - state.currentMessage = `${state.recentMessagesData[1].content.text}`; - const balanceContext = composeContext({ - state, - template: balanceTemplate, - }); - - // Generate balance content - const content = ( - await generateObject({ - runtime, - context: balanceContext, - modelClass: ModelClass.SMALL, - schema: BalanceSchema, - }) - ).object as BalanceContent; - - try { - const account = useGetAccount(runtime); - const addressToCheck = content.walletAddress || account.address; - - // Resolve address - const resolvedAddress = await resolveAddress(addressToCheck); - if (!resolvedAddress) { - throw new Error("Invalid address or ENS name"); - } - - let tokenAddress = content.tokenAddress; - - if (content.tokenSymbol) { - const tokenMemory = await runtime.messageManager.getMemoryById( - stringToUuid(`${content.tokenSymbol}-${runtime.agentId}`), - ); - - if (typeof tokenMemory?.content?.tokenAddress === "string") { - tokenAddress = tokenMemory.content.tokenAddress; - } - - if (!tokenAddress) { - tokenAddress = getTokenByName(content.tokenSymbol)?.address; - } - } - - const result = validatedSchema.safeParse({ - tokenAddress: tokenAddress || ETH_ADDRESS, - walletAddress: resolvedAddress, - }); - - // Validate transfer content - if (!result.success) { - elizaLogger.error("Invalid content for GET_BALANCE action."); - if (callback) { - callback({ - text: "Unable to process balance request. Invalid content provided.", - content: { error: "Invalid balance content" }, - }); - } - return false; - } - - let balance: bigint; - let symbol: string; - let decimals: number; - - // Query balance based on token type - if (result.data.tokenAddress === ETH_ADDRESS) { - balance = await abstractPublicClient.getBalance({ - address: resolvedAddress, - }); - symbol = "ETH"; - decimals = 18; - } else { - [balance, decimals, symbol] = await Promise.all([ - abstractPublicClient.readContract({ - address: result.data.tokenAddress, - abi: erc20Abi, - functionName: "balanceOf", - args: [resolvedAddress], - }), - abstractPublicClient.readContract({ - address: result.data.tokenAddress, - abi: erc20Abi, - functionName: "decimals", - }), - abstractPublicClient.readContract({ - address: result.data.tokenAddress, - abi: erc20Abi, - functionName: "symbol", - }), - ]); - } - - const formattedBalance = formatUnits(balance, decimals); - - elizaLogger.success(`Balance check completed for ${resolvedAddress}`); - if (callback) { - callback({ - text: `Balance for ${resolvedAddress}: ${formattedBalance} ${symbol}`, - content: { balance: formattedBalance, symbol: symbol }, - }); - } - - return true; - } catch (error) { - elizaLogger.error("Error checking balance:", error); - if (callback) { - callback({ - text: `Error checking balance: ${error.message}`, - content: { error: error.message }, - }); - } - return false; - } - }, - - examples: [ - [ - { - user: "{{user1}}", - content: { - text: "What's my ETH balance?", - }, - }, - { - user: "{{agent}}", - content: { - text: "Let me check your ETH balance.", - action: "GET_BALANCE", - }, - }, - { - user: "{{agent}}", - content: { - text: "Your ETH balance is 1.5 ETH", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { - text: "Check USDC balance for 0xCCa8009f5e09F8C5dB63cb0031052F9CB635Af62", - }, - }, - { - user: "{{agent}}", - content: { - text: "I'll check the USDC balance for that address.", - action: "GET_BALANCE", - }, - }, - { - user: "{{agent}}", - content: { - text: "The USDC balance for 0xCCa8009f5e09F8C5dB63cb0031052F9CB635Af62 is 100 USDC", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { - text: "Check balance for 0xCCa8009f5e09F8C5dB63cb0031052F9CB635Af62 with token 0xe4c7fbb0a626ed208021ccaba6be1566905e2dfc", - }, - }, - { - user: "{{agent}}", - content: { - text: "Let me check the balance for that address.", - action: "GET_BALANCE", - }, - }, - { - user: "{{agent}}", - content: { - text: "The balance for 0xCCa8009f5e09F8C5dB63cb0031052F9CB635Af62 with token 0xe4c7fbb0a626ed208021ccaba6be1566905e2dfc is 100", - }, - }, - ], - ] as ActionExample[][], -}; diff --git a/packages/plugin-abstract/src/actions/index.ts b/packages/plugin-abstract/src/actions/index.ts deleted file mode 100644 index 90317a57850..00000000000 --- a/packages/plugin-abstract/src/actions/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./transferAction"; -export * from "./getBalanceAction"; -export * from "./deployTokenAction"; diff --git a/packages/plugin-abstract/src/actions/transferAction.ts b/packages/plugin-abstract/src/actions/transferAction.ts deleted file mode 100644 index 6fbe1ec4b7c..00000000000 --- a/packages/plugin-abstract/src/actions/transferAction.ts +++ /dev/null @@ -1,402 +0,0 @@ -import type { Action } from "@elizaos/core"; -import { - type ActionExample, - type Content, - type HandlerCallback, - type IAgentRuntime, - type Memory, - ModelClass, - type State, - elizaLogger, - composeContext, - generateObject, - stringToUuid, -} from "@elizaos/core"; -import { validateAbstractConfig } from "../environment"; - -import { erc20Abi, formatUnits, isAddress, parseUnits, type Hash } from "viem"; -import { abstractTestnet } from "viem/chains"; -import { createAbstractClient } from "@abstract-foundation/agw-client"; -import { z } from "zod"; -import { ETH_ADDRESS } from "../constants"; -import { useGetAccount, useGetWalletClient } from "../hooks"; -import { - resolveAddress, - abstractPublicClient, - getTokenByName, -} from "../utils/viemHelpers"; - -const TransferSchema = z.object({ - tokenAddress: z.string().optional().nullable(), - recipient: z.string(), - amount: z.string(), - useAGW: z.boolean(), - tokenSymbol: z.string().optional().nullable(), -}); - -const validatedTransferSchema = z.object({ - tokenAddress: z - .string() - .refine(isAddress, { message: "Invalid token address" }), - recipient: z - .string() - .refine(isAddress, { message: "Invalid recipient address" }), - amount: z.string(), - useAGW: z.boolean(), -}); - -export interface TransferContent extends Content { - tokenAddress: string; - recipient: string; - amount: string | number; - useAGW: boolean; - tokenSymbol?: string; -} - -const transferTemplate = `Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined. - -Example response: -\`\`\`json -{ - "tokenAddress": "<TOKEN_ADDRESS>", - "recipient": "<TOKEN_ADDRESS>", - "amount": "1000", - "useAGW": true, - "tokenSymbol": "USDC" -} -\`\`\` - -User message: -"{{currentMessage}}" - -Given the message, extract the following information about the requested token transfer: -- Token contract address -- Recipient wallet address -- Amount to transfer -- Whether to use Abstract Global Wallet aka AGW -- The symbol of the token that wants to be transferred. Between 1 to 6 characters usually. - -If the user did not specify "global wallet", "AGW", "agw", or "abstract global wallet" in their message, set useAGW to false, otherwise set it to true. -s -Respond with a JSON markdown block containing only the extracted values.`; - -export const transferAction: Action = { - name: "SEND_TOKEN", - similes: [ - "TRANSFER_TOKEN_ON_ABSTRACT", - "TRANSFER_TOKENS_ON_ABSTRACT", - "SEND_TOKENS_ON_ABSTRACT", - "SEND_ETH_ON_ABSTRACT", - "PAY_ON_ABSTRACT", - "MOVE_TOKENS_ON_ABSTRACT", - "MOVE_ETH_ON_ABSTRACT", - ], - validate: async (runtime: IAgentRuntime) => { - await validateAbstractConfig(runtime); - return true; - }, - description: "Transfer tokens from the agent's wallet to another address", - handler: async ( - runtime: IAgentRuntime, - message: Memory, - state: State, - _options: { [key: string]: unknown }, - callback?: HandlerCallback, - ): Promise<boolean> => { - elizaLogger.log("Starting Abstract SEND_TOKEN handler..."); - - // Initialize or update state - if (!state) { - state = (await runtime.composeState(message)) as State; - } else { - state = await runtime.updateRecentMessageState(state); - } - - // Compose transfer context - state.currentMessage = `${state.recentMessagesData[1].content.text}`; - const transferContext = composeContext({ - state, - template: transferTemplate, - }); - - // Generate transfer content - const content = ( - await generateObject({ - runtime, - context: transferContext, - modelClass: ModelClass.SMALL, - schema: TransferSchema, - }) - ).object as TransferContent; - - let tokenAddress = content.tokenAddress; - - if (content.tokenSymbol) { - const tokenMemory = await runtime.messageManager.getMemoryById( - stringToUuid(`${content.tokenSymbol}-${runtime.agentId}`), - ); - - if (typeof tokenMemory?.content?.tokenAddress === "string") { - tokenAddress = tokenMemory.content.tokenAddress; - } - - if (!tokenAddress) { - tokenAddress = getTokenByName(content.tokenSymbol)?.address; - } - } - - const resolvedRecipient = await resolveAddress(content.recipient); - - const input = { - tokenAddress: tokenAddress, - recipient: resolvedRecipient, - amount: content.amount.toString(), - useAGW: content.useAGW, - }; - const result = validatedTransferSchema.safeParse(input); - - if (!result.success) { - elizaLogger.error( - "Invalid content for TRANSFER_TOKEN action.", - result.error.message, - ); - if (callback) { - callback({ - text: "Unable to process transfer request. Did not extract valid parameters.", - content: { error: result.error.message, ...input }, - }); - } - return false; - } - - if (!resolvedRecipient) { - throw new Error("Invalid recipient address or ENS name"); - } - - try { - const account = useGetAccount(runtime); - - let symbol = "ETH"; - let decimals = 18; - const isEthTransfer = result.data.tokenAddress === ETH_ADDRESS; - const { tokenAddress, recipient, amount, useAGW } = result.data; - - if (!isEthTransfer) { - [symbol, decimals] = await Promise.all([ - abstractPublicClient.readContract({ - address: tokenAddress, - abi: erc20Abi, - functionName: "symbol", - }), - abstractPublicClient.readContract({ - address: tokenAddress, - abi: erc20Abi, - functionName: "decimals", - }), - ]); - } - let hash: Hash; - const tokenAmount = parseUnits(amount.toString(), decimals); - - if (useAGW) { - const abstractClient = (await createAbstractClient({ - chain: abstractTestnet, - signer: account, - })) as any; // biome-ignore lint/suspicious/noExplicitAny: type being exported as never - - if (isEthTransfer) { - hash = await abstractClient.sendTransaction({ - chain: abstractTestnet, - to: recipient, - value: tokenAmount, - kzg: undefined, - }); - } else { - hash = await abstractClient.writeContract({ - chain: abstractTestnet, - address: tokenAddress, - abi: erc20Abi, - functionName: "transfer", - args: [recipient, tokenAmount], - }); - } - } else { - const walletClient = useGetWalletClient(); - if (isEthTransfer) { - hash = await walletClient.sendTransaction({ - account, - chain: abstractTestnet, - to: recipient, - value: tokenAmount, - kzg: undefined, - }); - } else { - hash = await walletClient.writeContract({ - account, - chain: abstractTestnet, - address: tokenAddress, - abi: erc20Abi, - functionName: "transfer", - args: [recipient, tokenAmount], - }); - } - } - - elizaLogger.success( - `Transfer completed successfully! Transaction hash: ${hash}`, - ); - if (callback) { - callback({ - text: `Transfer completed successfully! Succesfully sent ${formatUnits(tokenAmount, decimals)} ${symbol} to ${recipient} using ${useAGW ? "AGW" : "wallet client"}. Transaction hash: ${hash}`, - content: { - hash, - tokenAmount: formatUnits(tokenAmount, decimals), - symbol, - recipient, - useAGW, - }, - }); - } - - return true; - } catch (error) { - elizaLogger.error("Error during token transfer:", error); - if (callback) { - callback({ - text: `Error transferring tokens: ${error.message}`, - content: { error: error.message }, - }); - } - return false; - } - }, - - examples: [ - [ - { - user: "{{user1}}", - content: { - text: "Send 0.01 ETH to 0x114B242D931B47D5cDcEe7AF065856f70ee278C4", - }, - }, - { - user: "{{agent}}", - content: { - text: "Sure, I'll send 0.01 ETH to that address now.", - action: "SEND_TOKEN", - }, - }, - { - user: "{{agent}}", - content: { - text: "Successfully sent 0.01 ETH to 0x114B242D931B47D5cDcEe7AF065856f70ee278C4\nTransaction: 0xdde850f9257365fffffc11324726ebdcf5b90b01c6eec9b3e7ab3e81fde6f14b", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { - text: "Send 0.01 ETH to 0x114B242D931B47D5cDcEe7AF065856f70ee278C4 using your abstract global wallet", - }, - }, - { - user: "{{agent}}", - content: { - text: "Sure, I'll send 0.01 ETH to that address now using my AGW.", - action: "SEND_TOKEN", - }, - }, - { - user: "{{agent}}", - content: { - text: "Successfully sent 0.01 ETH to 0x114B242D931B47D5cDcEe7AF065856f70ee278C4\nTransaction: 0xdde850f9257365fffffc11324726ebdcf5b90b01c6eec9b3e7ab3e81fde6f14b using my AGW", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { - text: "Send 0.01 ETH to alim.getclave.eth", - }, - }, - { - user: "{{agent}}", - content: { - text: "Sure, I'll send 0.01 ETH to alim.getclave.eth now.", - action: "SEND_TOKEN", - }, - }, - { - user: "{{agent}}", - content: { - text: "Successfully sent 0.01 ETH to alim.getclave.eth\nTransaction: 0xdde850f9257365fffffc11324726ebdcf5b90b01c6eec9b3e7ab3e81fde6f14b", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { - text: "Send 100 USDC to 0xCCa8009f5e09F8C5dB63cb0031052F9CB635Af62", - }, - }, - { - user: "{{agent}}", - content: { - text: "Sure, I'll send 100 USDC to that address now.", - action: "SEND_TOKEN", - }, - }, - { - user: "{{agent}}", - content: { - text: "Successfully sent 100 USDC to 0xCCa8009f5e09F8C5dB63cb0031052F9CB635Af62\nTransaction: 0x4fed598033f0added272c3ddefd4d83a521634a738474400b27378db462a76ec", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { - text: "Please send 0.1 ETH to 0xbD8679cf79137042214fA4239b02F4022208EE82", - }, - }, - { - user: "{{agent}}", - content: { - text: "Of course. Sending 0.1 ETH to that address now.", - action: "SEND_TOKEN", - }, - }, - { - user: "{{agent}}", - content: { - text: "Successfully sent 0.1 ETH to 0xbD8679cf79137042214fA4239b02F4022208EE82\nTransaction: 0x0b9f23e69ea91ba98926744472717960cc7018d35bc3165bdba6ae41670da0f0", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { - text: "Please send 1 MyToken to 0xbD8679cf79137042214fA4239b02F4022208EE82", - }, - }, - { - user: "{{agent}}", - content: { - text: "Of course. Sending 1 MyToken right away.", - action: "SEND_TOKEN", - }, - }, - { - user: "{{agent}}", - content: { - text: "Successfully sent 1 MyToken to 0xbD8679cf79137042214fA4239b02F4022208EE82\nTransaction: 0x0b9f23e69ea91ba98926744472717960cc7018d35bc3165bdba6ae41670da0f0", - }, - }, - ], - ] as ActionExample[][], -}; diff --git a/packages/plugin-abstract/src/constants/contracts/basicToken.json b/packages/plugin-abstract/src/constants/contracts/basicToken.json deleted file mode 100644 index c36c2b8982d..00000000000 --- a/packages/plugin-abstract/src/constants/contracts/basicToken.json +++ /dev/null @@ -1,339 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "BasicToken", - "sourceName": "contracts/BasicToken.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol", - "type": "string" - }, - { - "internalType": "uint256", - "name": "initialSupply", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "allowance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientAllowance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientBalance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", - "type": "address" - } - ], - "name": "ERC20InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC20InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC20InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "ERC20InvalidSpender", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b506040516117bf3803806117bf833981810160405281019061003291906104c6565b828281600390816100439190610768565b5080600490816100539190610768565b505050610066338261006e60201b60201c565b50505061095a565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036100e05760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016100d7919061087b565b60405180910390fd5b6100f2600083836100f660201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361014857806002600082825461013c91906108c5565b9250508190555061021b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156101d4578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016101cb93929190610908565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361026457806002600082825403925050819055506102b1565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161030e919061093f565b60405180910390a3505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61038282610339565b810181811067ffffffffffffffff821117156103a1576103a061034a565b5b80604052505050565b60006103b461031b565b90506103c08282610379565b919050565b600067ffffffffffffffff8211156103e0576103df61034a565b5b6103e982610339565b9050602081019050919050565b60005b838110156104145780820151818401526020810190506103f9565b60008484015250505050565b600061043361042e846103c5565b6103aa565b90508281526020810184848401111561044f5761044e610334565b5b61045a8482856103f6565b509392505050565b600082601f8301126104775761047661032f565b5b8151610487848260208601610420565b91505092915050565b6000819050919050565b6104a381610490565b81146104ae57600080fd5b50565b6000815190506104c08161049a565b92915050565b6000806000606084860312156104df576104de610325565b5b600084015167ffffffffffffffff8111156104fd576104fc61032a565b5b61050986828701610462565b935050602084015167ffffffffffffffff81111561052a5761052961032a565b5b61053686828701610462565b9250506040610547868287016104b1565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806105a357607f821691505b6020821081036105b6576105b561055c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261061e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826105e1565b61062886836105e1565b95508019841693508086168417925050509392505050565b6000819050919050565b600061066561066061065b84610490565b610640565b610490565b9050919050565b6000819050919050565b61067f8361064a565b61069361068b8261066c565b8484546105ee565b825550505050565b600090565b6106a861069b565b6106b3818484610676565b505050565b5b818110156106d7576106cc6000826106a0565b6001810190506106b9565b5050565b601f82111561071c576106ed816105bc565b6106f6846105d1565b81016020851015610705578190505b610719610711856105d1565b8301826106b8565b50505b505050565b600082821c905092915050565b600061073f60001984600802610721565b1980831691505092915050565b6000610758838361072e565b9150826002028217905092915050565b61077182610551565b67ffffffffffffffff81111561078a5761078961034a565b5b610794825461058b565b61079f8282856106db565b600060209050601f8311600181146107d257600084156107c0578287015190505b6107ca858261074c565b865550610832565b601f1984166107e0866105bc565b60005b82811015610808578489015182556001820191506020850194506020810190506107e3565b868310156108255784890151610821601f89168261072e565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006108658261083a565b9050919050565b6108758161085a565b82525050565b6000602082019050610890600083018461086c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006108d082610490565b91506108db83610490565b92508282019050808211156108f3576108f2610896565b5b92915050565b61090281610490565b82525050565b600060608201905061091d600083018661086c565b61092a60208301856108f9565b61093760408301846108f9565b949350505050565b600060208201905061095460008301846108f9565b92915050565b610e56806109696000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad9190610aaa565b60405180910390f35b6100d060048036038101906100cb9190610b65565b610292565b6040516100dd9190610bc0565b60405180910390f35b6100ee6102b5565b6040516100fb9190610bea565b60405180910390f35b61011e60048036038101906101199190610c05565b6102bf565b60405161012b9190610bc0565b60405180910390f35b61013c6102ee565b6040516101499190610c74565b60405180910390f35b61016c60048036038101906101679190610c8f565b6102f7565b6040516101799190610bea565b60405180910390f35b61018a61033f565b6040516101979190610aaa565b60405180910390f35b6101ba60048036038101906101b59190610b65565b6103d1565b6040516101c79190610bc0565b60405180910390f35b6101ea60048036038101906101e59190610cbc565b6103f4565b6040516101f79190610bea565b60405180910390f35b60606003805461020f90610d2b565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610d2b565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b60008061029d61047b565b90506102aa818585610483565b600191505092915050565b6000600254905090565b6000806102ca61047b565b90506102d7858285610495565b6102e285858561052a565b60019150509392505050565b60006012905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461034e90610d2b565b80601f016020809104026020016040519081016040528092919081815260200182805461037a90610d2b565b80156103c75780601f1061039c576101008083540402835291602001916103c7565b820191906000526020600020905b8154815290600101906020018083116103aa57829003601f168201915b5050505050905090565b6000806103dc61047b565b90506103e981858561052a565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b610490838383600161061e565b505050565b60006104a184846103f4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156105245781811015610514578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161050b93929190610d6b565b60405180910390fd5b6105238484848403600061061e565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361059c5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016105939190610da2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361060e5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016106059190610da2565b60405180910390fd5b6106198383836107f5565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036106905760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016106879190610da2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107025760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016106f99190610da2565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156107ef578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107e69190610bea565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361084757806002600082825461083b9190610dec565b9250508190555061091a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156108d3578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016108ca93929190610d6b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361096357806002600082825403925050819055506109b0565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a0d9190610bea565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610a54578082015181840152602081019050610a39565b60008484015250505050565b6000601f19601f8301169050919050565b6000610a7c82610a1a565b610a868185610a25565b9350610a96818560208601610a36565b610a9f81610a60565b840191505092915050565b60006020820190508181036000830152610ac48184610a71565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610afc82610ad1565b9050919050565b610b0c81610af1565b8114610b1757600080fd5b50565b600081359050610b2981610b03565b92915050565b6000819050919050565b610b4281610b2f565b8114610b4d57600080fd5b50565b600081359050610b5f81610b39565b92915050565b60008060408385031215610b7c57610b7b610acc565b5b6000610b8a85828601610b1a565b9250506020610b9b85828601610b50565b9150509250929050565b60008115159050919050565b610bba81610ba5565b82525050565b6000602082019050610bd56000830184610bb1565b92915050565b610be481610b2f565b82525050565b6000602082019050610bff6000830184610bdb565b92915050565b600080600060608486031215610c1e57610c1d610acc565b5b6000610c2c86828701610b1a565b9350506020610c3d86828701610b1a565b9250506040610c4e86828701610b50565b9150509250925092565b600060ff82169050919050565b610c6e81610c58565b82525050565b6000602082019050610c896000830184610c65565b92915050565b600060208284031215610ca557610ca4610acc565b5b6000610cb384828501610b1a565b91505092915050565b60008060408385031215610cd357610cd2610acc565b5b6000610ce185828601610b1a565b9250506020610cf285828601610b1a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610d4357607f821691505b602082108103610d5657610d55610cfc565b5b50919050565b610d6581610af1565b82525050565b6000606082019050610d806000830186610d5c565b610d8d6020830185610bdb565b610d9a6040830184610bdb565b949350505050565b6000602082019050610db76000830184610d5c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610df782610b2f565b9150610e0283610b2f565b9250828201905080821115610e1a57610e19610dbd565b5b9291505056fea2646970667358221220f413ecdb821df363531c0a0bcc98dfeb9baf7e41031710ae13ffb1596f19db2b64736f6c634300081c0033", - "linkReferences": {}, - "deployedLinkReferences": {} -} \ No newline at end of file diff --git a/packages/plugin-abstract/src/constants/index.ts b/packages/plugin-abstract/src/constants/index.ts deleted file mode 100644 index cd3b1267dc2..00000000000 --- a/packages/plugin-abstract/src/constants/index.ts +++ /dev/null @@ -1 +0,0 @@ -export const ETH_ADDRESS = "0x000000000000000000000000000000000000800A"; diff --git a/packages/plugin-abstract/src/environment.ts b/packages/plugin-abstract/src/environment.ts deleted file mode 100644 index 502872ef016..00000000000 --- a/packages/plugin-abstract/src/environment.ts +++ /dev/null @@ -1,44 +0,0 @@ -import type { IAgentRuntime } from "@elizaos/core"; -import { isAddress } from "viem"; -import { z } from "zod"; - -export const abstractEnvSchema = z.object({ - ABSTRACT_ADDRESS: z - .string() - .min(1, "Abstract address is required") - .refine((address) => isAddress(address, { strict: false }), { - message: "Abstract address must be a valid address", - }), - ABSTRACT_PRIVATE_KEY: z - .string() - .min(1, "Abstract private key is required") - .refine((key) => /^[a-fA-F0-9]{64}$/.test(key), { - message: - "Abstract private key must be a 64-character hexadecimal string (32 bytes) without the '0x' prefix", - }), -}); - -export type AbstractConfig = z.infer<typeof abstractEnvSchema>; - -export async function validateAbstractConfig( - runtime: IAgentRuntime, -): Promise<AbstractConfig> { - try { - const config = { - ABSTRACT_ADDRESS: runtime.getSetting("ABSTRACT_ADDRESS"), - ABSTRACT_PRIVATE_KEY: runtime.getSetting("ABSTRACT_PRIVATE_KEY"), - }; - - return abstractEnvSchema.parse(config); - } catch (error) { - if (error instanceof z.ZodError) { - const errorMessages = error.errors - .map((err) => `${err.path.join(".")}: ${err.message}`) - .join("\n"); - throw new Error( - `Abstract configuration validation failed:\n${errorMessages}`, - ); - } - throw error; - } -} diff --git a/packages/plugin-abstract/src/hooks/index.ts b/packages/plugin-abstract/src/hooks/index.ts deleted file mode 100644 index b77aa9b1c6c..00000000000 --- a/packages/plugin-abstract/src/hooks/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./useGetAccount"; -export * from "./useGetWalletClient"; diff --git a/packages/plugin-abstract/src/hooks/useGetAccount.ts b/packages/plugin-abstract/src/hooks/useGetAccount.ts deleted file mode 100644 index 5700c3f848c..00000000000 --- a/packages/plugin-abstract/src/hooks/useGetAccount.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { IAgentRuntime } from "@elizaos/core"; -import type { PrivateKeyAccount } from "viem/accounts"; -import { privateKeyToAccount } from "viem/accounts"; - -export const useGetAccount = (runtime: IAgentRuntime): PrivateKeyAccount => { - const PRIVATE_KEY = runtime.getSetting("ABSTRACT_PRIVATE_KEY"); - if (!PRIVATE_KEY) { - throw new Error("ABSTRACT_PRIVATE_KEY is not set"); - } - return privateKeyToAccount(`0x${PRIVATE_KEY}`); -}; diff --git a/packages/plugin-abstract/src/hooks/useGetWalletClient.ts b/packages/plugin-abstract/src/hooks/useGetWalletClient.ts deleted file mode 100644 index 93c464737dd..00000000000 --- a/packages/plugin-abstract/src/hooks/useGetWalletClient.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { createWalletClient, http } from "viem"; -import { abstractTestnet } from "viem/chains"; -import { eip712WalletActions } from "viem/zksync"; - -export const useGetWalletClient = (): ReturnType<typeof createWalletClient> => { - const client = createWalletClient({ - chain: abstractTestnet, - transport: http(), - }).extend(eip712WalletActions()); - - return client; -}; diff --git a/packages/plugin-abstract/src/index.ts b/packages/plugin-abstract/src/index.ts deleted file mode 100644 index 09076cc0ce8..00000000000 --- a/packages/plugin-abstract/src/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { Plugin } from "@elizaos/core"; - -import { transferAction, getBalanceAction, deployTokenAction } from "./actions"; - -export const abstractPlugin: Plugin = { - name: "abstract", - description: "Abstract Plugin for Eliza", - actions: [transferAction, getBalanceAction, deployTokenAction], - evaluators: [], - providers: [], -}; - -export default abstractPlugin; diff --git a/packages/plugin-abstract/src/utils/index.ts b/packages/plugin-abstract/src/utils/index.ts deleted file mode 100644 index 70b70856047..00000000000 --- a/packages/plugin-abstract/src/utils/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./viemHelpers"; diff --git a/packages/plugin-abstract/src/utils/viemHelpers.ts b/packages/plugin-abstract/src/utils/viemHelpers.ts deleted file mode 100644 index c1c7044e169..00000000000 --- a/packages/plugin-abstract/src/utils/viemHelpers.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { - type Address, - createPublicClient, - getAddress, - http, - isAddress, - type PublicClient, -} from "viem"; -import { abstractTestnet, mainnet } from "viem/chains"; -import { normalize } from "viem/ens"; -import { elizaLogger } from "@elizaos/core"; -import { ETH_ADDRESS } from "../constants"; - -import { - type Account, - type Client, - createClient, - createWalletClient, - type Transport, -} from "viem"; -import { toAccount } from "viem/accounts"; -import type { ChainEIP712 } from "viem/zksync"; - -import { getSmartAccountAddressFromInitialSigner } from "./utils.js"; -import { - type AbstractWalletActions, - globalWalletActions, -} from "./walletActions.js"; - -// Shared clients -export const ethereumClient = createPublicClient({ - chain: mainnet, - transport: http(), -}); - -export const abstractPublicClient = createPublicClient({ - chain: abstractTestnet, - transport: http(), -}); - -// Helper to resolve ENS names -export async function resolveAddress( - addressOrEns: string, -): Promise<Address | null> { - if (isAddress(addressOrEns)) { - return getAddress(addressOrEns); - } - - let address: string; - try { - const name = normalize(addressOrEns.trim()); - const resolved = await ethereumClient.getEnsAddress({ name }); - if (resolved) { - address = resolved; - elizaLogger.log(`Resolved ${name} to ${resolved}`); - } - } catch (error) { - elizaLogger.error("Error resolving ENS name:", error); - } - - return address ? getAddress(address) : null; -} - -const tokens = [ - { - address: ETH_ADDRESS, - symbol: "ETH", - decimals: 18, - }, - { - address: "0xe4c7fbb0a626ed208021ccaba6be1566905e2dfc", - symbol: "USDC", - decimals: 6, - }, -]; - -export function getTokenByName(name: string) { - const token = tokens.find( - (token) => token.symbol.toLowerCase() === name.toLowerCase(), - ); - - if (!token) { - throw new Error(`Token ${name} not found`); - } - - return token; -} diff --git a/packages/plugin-abstract/tsconfig.json b/packages/plugin-abstract/tsconfig.json deleted file mode 100644 index 005fbac9d36..00000000000 --- a/packages/plugin-abstract/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../core/tsconfig.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src" - }, - "include": ["src/**/*.ts"] -} diff --git a/packages/plugin-abstract/tsup.config.ts b/packages/plugin-abstract/tsup.config.ts deleted file mode 100644 index e42bf4efeae..00000000000 --- a/packages/plugin-abstract/tsup.config.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - outDir: "dist", - sourcemap: true, - clean: true, - format: ["esm"], // Ensure you're targeting CommonJS - external: [ - "dotenv", // Externalize dotenv to prevent bundling - "fs", // Externalize fs to use Node.js built-in module - "path", // Externalize other built-ins if necessary - "@reflink/reflink", - "@node-llama-cpp", - "https", - "http", - "agentkeepalive", - // Add other modules you want to externalize - ], -}); diff --git a/packages/plugin-crypto-news/package.json b/packages/plugin-crypto-news/package.json index 3ff91e03223..b29969a4afa 100644 --- a/packages/plugin-crypto-news/package.json +++ b/packages/plugin-crypto-news/package.json @@ -7,6 +7,7 @@ "types": "dist/index.d.ts", "dependencies": { "@elizaos/core": "workspace:*", + "google-sr": "^4.1.0", "rss-to-json": "^2.1.1" }, "devDependencies": { diff --git a/packages/plugin-pyth-data/schema.json b/packages/plugin-pyth-data/schema.json index 6628a575d00..a036280f023 100644 --- a/packages/plugin-pyth-data/schema.json +++ b/packages/plugin-pyth-data/schema.json @@ -1 +1 @@ -{"openapi":"3.0.3","info":{"title":"hermes","description":"Hermes is an agent that provides Verified Prices from the Pythnet Pyth Oracle.","license":{"name":""},"version":"0.8.2"},"paths":{"/api/get_price_feed":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/{publish_time} instead**","description":"**Deprecated: use /v2/updates/price/{publish_time} instead**\n\nGet a price update for a price feed with a specific timestamp\n\nGiven a price feed id and timestamp, retrieve the Pyth price update closest to that timestamp.","operationId":"get_price_feed","parameters":[{"name":"id","in":"query","description":"The id of the price feed to get an update for.","required":true,"schema":{"$ref":"#/components/schemas/PriceIdInput"}},{"name":"publish_time","in":"query","description":"The unix timestamp in seconds. This endpoint will return the first update whose\npublish_time is >= the provided value.","required":true,"schema":{"type":"integer","format":"int64"},"example":1717632000},{"name":"verbose","in":"query","description":"If true, include the `metadata` field in the response with additional metadata about the\nprice update.","required":false,"schema":{"type":"boolean"}},{"name":"binary","in":"query","description":"If true, include the binary price update in the `vaa` field of each returned feed. This\nbinary data can be submitted to Pyth contracts to update the on-chain price.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price update retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RpcPriceFeed"}}}}},"deprecated":true}},"/api/get_vaa":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/{publish_time} instead**","description":"**Deprecated: use /v2/updates/price/{publish_time} instead**\n\nGet a VAA for a price feed with a specific timestamp\n\nGiven a price feed id and timestamp, retrieve the Pyth price update closest to that timestamp.","operationId":"get_vaa","parameters":[{"name":"id","in":"query","description":"The ID of the price feed to get an update for.","required":true,"schema":{"$ref":"#/components/schemas/PriceIdInput"}},{"name":"publish_time","in":"query","description":"The unix timestamp in seconds. This endpoint will return the first update whose\npublish_time is >= the provided value.","required":true,"schema":{"type":"integer","format":"int64"},"example":1690576641}],"responses":{"200":{"description":"Price update retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVaaResponse"}}}},"404":{"description":"Price update not found","content":{"text/plain":{"schema":{"type":"string"}}}}},"deprecated":true}},"/api/get_vaa_ccip":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/{publish_time} instead**","description":"**Deprecated: use /v2/updates/price/{publish_time} instead**\n\nGet a VAA for a price feed using CCIP\n\nThis endpoint accepts a single argument which is a hex-encoded byte string of the following form:\n`<price feed id (32 bytes> <publish time as unix timestamp (8 bytes, big endian)>`","operationId":"get_vaa_ccip","parameters":[{"name":"data","in":"query","required":true,"schema":{"$ref":"#/components/schemas/GetVaaCcipInput"}}],"responses":{"200":{"description":"Price update retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVaaCcipResponse"}}}}},"deprecated":true}},"/api/latest_price_feeds":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/latest instead**","description":"**Deprecated: use /v2/updates/price/latest instead**\n\nGet the latest price updates by price feed id.\n\nGiven a collection of price feed ids, retrieve the latest Pyth price for each price feed.","operationId":"latest_price_feeds","parameters":[{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"verbose","in":"query","description":"If true, include the `metadata` field in the response with additional metadata about\nthe price update.","required":false,"schema":{"type":"boolean"}},{"name":"binary","in":"query","description":"If true, include the binary price update in the `vaa` field of each returned feed.\nThis binary data can be submitted to Pyth contracts to update the on-chain price.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RpcPriceFeed"}}}}}},"deprecated":true}},"/api/latest_vaas":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/latest instead**","description":"**Deprecated: use /v2/updates/price/latest instead**\n\nGet VAAs for a set of price feed ids.\n\nGiven a collection of price feed ids, retrieve the latest VAA for each. The returned VAA(s) can\nbe submitted to the Pyth contract to update the on-chain price. If VAAs are not found for every\nprovided price ID the call will fail.","operationId":"latest_vaas","parameters":[{"name":"ids[]","in":"query","description":"Get the VAAs for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"}],"responses":{"200":{"description":"VAAs retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}},"example":["UE5BVQEAAAADuAEAAAADDQC1H7meY5fTed0FsykIb8dt+7nKpbuzfvU2DplDi+dcUl8MC+UIkS65+rkiq+zmNBxE2gaxkBkjdIicZ/fBo+X7AAEqp+WtlWb84np8jJfLpuQ2W+l5KXTigsdAhz5DyVgU3xs+EnaIZxBwcE7EKzjMam+V9rlRy0CGsiQ1kjqqLzfAAQLsoVO0Vu5gVmgc8XGQ7xYhoz36rsBgMjG+e3l/B01esQi/KzPuBf/Ar8Sg5aSEOvEU0muSDb+KIr6d8eEC+FtcAAPZEaBSt4ysXVL84LUcJemQD3SiG30kOfUpF8o7/wI2M2Jf/LyCsbKEQUyLtLbZqnJBSfZJR5AMsrnHDqngMLEGAAY4UDG9GCpRuPvg8hOlsrXuPP3zq7yVPqyG0SG+bNo8rEhP5b1vXlHdG4bZsutX47d5VZ6xnFROKudx3T3/fnWUAQgAU1+kUFc3e0ZZeX1dLRVEryNIVyxMQIcxWwdey+jlIAYowHRM0fJX3Scs80OnT/CERwh5LMlFyU1w578NqxW+AQl2E/9fxjgUTi8crOfDpwsUsmOWw0+Q5OUGhELv/2UZoHAjsaw9OinWUggKACo4SdpPlHYldoWF+J2yGWOW+F4iAQre4c+ocb6a9uSWOnTldFkioqhd9lhmV542+VonCvuy4Tu214NP+2UNd/4Kk3KJCf3iziQJrCBeLi1cLHdLUikgAQtvRFR/nepcF9legl+DywAkUHi5/1MNjlEQvlHyh2XbMiS85yu7/9LgM6Sr+0ukfZY5mSkOcvUkpHn+T+Nw/IrQAQ7lty5luvKUmBpI3ITxSmojJ1aJ0kj/dc0ZcQk+/qo0l0l3/eRLkYjw5j+MZKA8jEubrHzUCke98eSoj8l08+PGAA+DAKNtCwNZe4p6J1Ucod8Lo5RKFfA84CPLVyEzEPQFZ25U9grUK6ilF4GhEia/ndYXLBt3PGW3qa6CBBPM7rH3ABGAyYEtUwzB4CeVedA5o6cKpjRkIebqDNSOqltsr+w7kXdfFVtsK2FMGFZNt5rbpIR+ppztoJ6eOKHmKmi9nQ99ARKkTxRErOs9wJXNHaAuIRV38o1pxRrlQRzGsRuKBqxcQEpC8OPFpyKYcp6iD5l7cO/gRDTamLFyhiUBwKKMP07FAWTEJv8AAAAAABrhAfrtrFhR4yubI7X5QRqMK6xKrj7U3XuBHdGnLqSqcQAAAAAAGp0GAUFVV1YAAAAAAAUYUmIAACcQBsfKUtr4PgZbIXRxRESU79PjE4IBAFUA5i32yLSoX+GmfbRNwS3l2zMPesZrctxliv7fD0pBW0MAAAKqqMJFwAAAAAAqE/NX////+AAAAABkxCb7AAAAAGTEJvoAAAKqIcWxYAAAAAAlR5m4CP/mPsh1IezjYpDlJ4GRb5q4fTs2LjtyO6M0XgVimrIQ4kSh1qg7JKW4gbGkyRntVFR9JO/GNd3FPDit0BK6M+JzXh/h12YNCz9wxlZTvXrNtWNbzqT+91pvl5cphhSPMfAHyEzTPaGR9tKDy9KNu56pmhaY32d2vfEWQmKo22guegeR98oDxs67MmnUraco46a3zEnac2Bm80pasUgMO24="]}}}},"deprecated":true}},"/api/price_feed_ids":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/price_feeds instead**","description":"**Deprecated: use /v2/price_feeds instead**\n\nGet the set of price feed IDs.\n\nThis endpoint fetches all of the price feed IDs for which price updates can be retrieved.","operationId":"price_feed_ids","responses":{"200":{"description":"Price feed ids retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RpcPriceIdentifier"}}}}}},"deprecated":true}},"/v2/price_feeds":{"get":{"tags":["rest"],"summary":"Get the set of price feeds.","description":"Get the set of price feeds.\n\nThis endpoint fetches all price feeds from the Pyth network. It can be filtered by asset type\nand query string.","operationId":"price_feeds_metadata","parameters":[{"name":"query","in":"query","description":"Optional query parameter. If provided, the results will be filtered to all price feeds whose symbol contains the query string. Query string is case insensitive.","required":false,"schema":{"type":"string","nullable":true},"example":"bitcoin"},{"name":"asset_type","in":"query","description":"Optional query parameter. If provided, the results will be filtered by asset type. Possible values are crypto, equity, fx, metal, rates. Filter string is case insensitive.","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/AssetType"}],"nullable":true},"example":"crypto"}],"responses":{"200":{"description":"Price feeds metadata retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceFeedMetadata"}}}}}}}},"/v2/updates/price/latest":{"get":{"tags":["rest"],"summary":"Get the latest price updates by price feed id.","description":"Get the latest price updates by price feed id.\n\nGiven a collection of price feed ids, retrieve the latest Pyth price for each price feed.","operationId":"latest_price_updates","parameters":[{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the price update in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed price update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceUpdate"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v2/updates/price/stream":{"get":{"tags":["rest"],"summary":"SSE route handler for streaming price updates.","description":"SSE route handler for streaming price updates.","operationId":"price_stream_sse_handler","parameters":[{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the price update in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed price update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"allow_unordered","in":"query","description":"If true, allows unordered price updates to be included in the stream.","required":false,"schema":{"type":"boolean"}},{"name":"benchmarks_only","in":"query","description":"If true, only include benchmark prices that are the initial price updates at a given timestamp (i.e., prevPubTime != pubTime).","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceUpdate"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v2/updates/price/{publish_time}":{"get":{"tags":["rest"],"summary":"Get the latest price updates by price feed id.","description":"Get the latest price updates by price feed id.\n\nGiven a collection of price feed ids, retrieve the latest Pyth price for each price feed.","operationId":"timestamp_price_updates","parameters":[{"name":"publish_time","in":"path","description":"The unix timestamp in seconds. This endpoint will return the first update whose\npublish_time is >= the provided value.","required":true,"schema":{"type":"integer","format":"int64"},"example":1717632000},{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the price update in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed price update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceUpdate"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v2/updates/publisher_stake_caps/latest":{"get":{"tags":["rest"],"summary":"Get the most recent publisher stake caps update data.","description":"Get the most recent publisher stake caps update data.","operationId":"latest_publisher_stake_caps","parameters":[{"name":"encoding","in":"query","description":"Get the most recent publisher stake caps update data.\nOptional encoding type. If true, return the message in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Publisher stake caps update data retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestPublisherStakeCapsUpdateDataResponse"}}}}}}},"/v2/updates/twap/{window_seconds}/latest":{"get":{"tags":["rest"],"summary":"Get the latest TWAP by price feed id with a custom time window.","description":"Get the latest TWAP by price feed id with a custom time window.\n\nGiven a collection of price feed ids, retrieve the latest Pyth TWAP price for each price feed.","operationId":"latest_twaps","parameters":[{"name":"window_seconds","in":"path","description":"The time window in seconds over which to calculate the TWAP, ending at the current time.\nFor example, a value of 300 would return the most recent 5 minute TWAP.\nMust be greater than 0 and less than or equal to 600 seconds (10 minutes).","required":true,"schema":{"type":"integer","format":"int64","minimum":0},"example":"300"},{"name":"ids[]","in":"query","description":"Get the most recent TWAP (time weighted average price) for this set of price feed ids.\nThe `binary` data contains the signed start & end cumulative price updates needed to calculate\nthe TWAPs on-chain. The `parsed` data contains the calculated TWAPs.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the cumulative price updates in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the calculated TWAP in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"TWAPs retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwapsResponse"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"AssetType":{"type":"string","enum":["crypto","fx","equity","metal","rates","crypto_redemption_rate"]},"BinaryUpdate":{"type":"object","required":["encoding","data"],"properties":{"data":{"type":"array","items":{"type":"string"}},"encoding":{"$ref":"#/components/schemas/EncodingType"}}},"EncodingType":{"type":"string","enum":["hex","base64"]},"GetVaaCcipInput":{"type":"string","format":"binary"},"GetVaaCcipResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"string"}}},"GetVaaResponse":{"type":"object","required":["vaa","publishTime"],"properties":{"publishTime":{"type":"integer","format":"int64","example":1690576641},"vaa":{"type":"string","description":"The VAA binary represented as a base64 string.","example":"UE5BVQEAAAADuAEAAAADDQC1H7meY5fTed0FsykIb8dt+7nKpbuzfvU2DplDi+dcUl8MC+UIkS65+rkiq+zmNBxE2gaxkBkjdIicZ/fBo+X7AAEqp+WtlWb84np8jJfLpuQ2W+l5KXTigsdAhz5DyVgU3xs+EnaIZxBwcE7EKzjMam+V9rlRy0CGsiQ1kjqqLzfAAQLsoVO0Vu5gVmgc8XGQ7xYhoz36rsBgMjG+e3l/B01esQi/KzPuBf/Ar8Sg5aSEOvEU0muSDb+KIr6d8eEC+FtcAAPZEaBSt4ysXVL84LUcJemQD3SiG30kOfUpF8o7/wI2M2Jf/LyCsbKEQUyLtLbZqnJBSfZJR5AMsrnHDqngMLEGAAY4UDG9GCpRuPvg8hOlsrXuPP3zq7yVPqyG0SG+bNo8rEhP5b1vXlHdG4bZsutX47d5VZ6xnFROKudx3T3/fnWUAQgAU1+kUFc3e0ZZeX1dLRVEryNIVyxMQIcxWwdey+jlIAYowHRM0fJX3Scs80OnT/CERwh5LMlFyU1w578NqxW+AQl2E/9fxjgUTi8crOfDpwsUsmOWw0+Q5OUGhELv/2UZoHAjsaw9OinWUggKACo4SdpPlHYldoWF+J2yGWOW+F4iAQre4c+ocb6a9uSWOnTldFkioqhd9lhmV542+VonCvuy4Tu214NP+2UNd/4Kk3KJCf3iziQJrCBeLi1cLHdLUikgAQtvRFR/nepcF9legl+DywAkUHi5/1MNjlEQvlHyh2XbMiS85yu7/9LgM6Sr+0ukfZY5mSkOcvUkpHn+T+Nw/IrQAQ7lty5luvKUmBpI3ITxSmojJ1aJ0kj/dc0ZcQk+/qo0l0l3/eRLkYjw5j+MZKA8jEubrHzUCke98eSoj8l08+PGAA+DAKNtCwNZe4p6J1Ucod8Lo5RKFfA84CPLVyEzEPQFZ25U9grUK6ilF4GhEia/ndYXLBt3PGW3qa6CBBPM7rH3ABGAyYEtUwzB4CeVedA5o6cKpjRkIebqDNSOqltsr+w7kXdfFVtsK2FMGFZNt5rbpIR+ppztoJ6eOKHmKmi9nQ99ARKkTxRErOs9wJXNHaAuIRV38o1pxRrlQRzGsRuKBqxcQEpC8OPFpyKYcp6iD5l7cO/gRDTamLFyhiUBwKKMP07FAWTEJv8AAAAAABrhAfrtrFhR4yubI7X5QRqMK6xKrj7U3XuBHdGnLqSqcQAAAAAAGp0GAUFVV1YAAAAAAAUYUmIAACcQBsfKUtr4PgZbIXRxRESU79PjE4IBAFUA5i32yLSoX+GmfbRNwS3l2zMPesZrctxliv7fD0pBW0MAAAKqqMJFwAAAAAAqE/NX////+AAAAABkxCb7AAAAAGTEJvoAAAKqIcWxYAAAAAAlR5m4CP/mPsh1IezjYpDlJ4GRb5q4fTs2LjtyO6M0XgVimrIQ4kSh1qg7JKW4gbGkyRntVFR9JO/GNd3FPDit0BK6M+JzXh/h12YNCz9wxlZTvXrNtWNbzqT+91pvl5cphhSPMfAHyEzTPaGR9tKDy9KNu56pmhaY32d2vfEWQmKo22guegeR98oDxs67MmnUraco46a3zEnac2Bm80pasUgMO24="}}},"LatestPublisherStakeCapsUpdateDataResponse":{"type":"object","required":["binary"],"properties":{"binary":{"$ref":"#/components/schemas/BinaryUpdate"},"parsed":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPublisherStakeCapsUpdate"},"nullable":true}}},"ParsedPriceFeedTwap":{"type":"object","required":["id","start_timestamp","end_timestamp","twap","down_slots_ratio"],"properties":{"down_slots_ratio":{"type":"string","description":"The % of slots where the network was down over the TWAP window.\nA value of zero indicates no slots were missed over the window, and\na value of one indicates that every slot was missed over the window.\nThis is a float value stored as a string to avoid precision loss."},"end_timestamp":{"type":"integer","format":"int64","description":"The end unix timestamp of the window"},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"},"start_timestamp":{"type":"integer","format":"int64","description":"The start unix timestamp of the window"},"twap":{"$ref":"#/components/schemas/RpcPrice"}}},"ParsedPriceUpdate":{"type":"object","required":["id","price","ema_price","metadata"],"properties":{"ema_price":{"$ref":"#/components/schemas/RpcPrice"},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"},"metadata":{"$ref":"#/components/schemas/RpcPriceFeedMetadataV2"},"price":{"$ref":"#/components/schemas/RpcPrice"}}},"ParsedPublisherStakeCap":{"type":"object","required":["publisher","cap"],"properties":{"cap":{"type":"integer","format":"int64","minimum":0},"publisher":{"type":"string"}}},"ParsedPublisherStakeCapsUpdate":{"type":"object","required":["publisher_stake_caps"],"properties":{"publisher_stake_caps":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPublisherStakeCap"}}}},"PriceFeedMetadata":{"type":"object","required":["id","attributes"],"properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"}},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"}}},"PriceIdInput":{"type":"string","description":"A price id is a 32-byte hex string, optionally prefixed with \"0x\".\nPrice ids are case insensitive.\n\nExamples:\n* 0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43\n* e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43\n\nSee https://pyth.network/developers/price-feed-ids for a list of all price feed ids.","example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},"PriceUpdate":{"type":"object","required":["binary"],"properties":{"binary":{"$ref":"#/components/schemas/BinaryUpdate"},"parsed":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPriceUpdate"},"nullable":true}}},"RpcPrice":{"type":"object","description":"A price with a degree of uncertainty at a certain time, represented as a price +- a confidence\ninterval.\n\nThe confidence interval roughly corresponds to the standard error of a normal distribution.\nBoth the price and confidence are stored in a fixed-point numeric representation, `x *\n10^expo`, where `expo` is the exponent. For example:","required":["price","conf","expo","publish_time"],"properties":{"conf":{"type":"string","description":"The confidence interval associated with the price, stored as a string to avoid precision loss","example":"509500001"},"expo":{"type":"integer","format":"int32","description":"The exponent associated with both the price and confidence interval. Multiply those values\nby `10^expo` to get the real value.","example":-8},"price":{"type":"string","description":"The price itself, stored as a string to avoid precision loss","example":"2920679499999"},"publish_time":{"type":"integer","format":"int64","description":"When the price was published. The `publish_time` is a unix timestamp, i.e., the number of\nseconds since the Unix epoch (00:00:00 UTC on 1 Jan 1970).","example":1717632000}}},"RpcPriceFeed":{"type":"object","required":["id","price","ema_price"],"properties":{"ema_price":{"$ref":"#/components/schemas/RpcPrice"},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"},"metadata":{"allOf":[{"$ref":"#/components/schemas/RpcPriceFeedMetadata"}],"nullable":true},"price":{"$ref":"#/components/schemas/RpcPrice"},"vaa":{"type":"string","description":"The VAA binary represented as a base64 string.","example":"UE5BVQEAAAADuAEAAAADDQC1H7meY5fTed0FsykIb8dt+7nKpbuzfvU2DplDi+dcUl8MC+UIkS65+rkiq+zmNBxE2gaxkBkjdIicZ/fBo+X7AAEqp+WtlWb84np8jJfLpuQ2W+l5KXTigsdAhz5DyVgU3xs+EnaIZxBwcE7EKzjMam+V9rlRy0CGsiQ1kjqqLzfAAQLsoVO0Vu5gVmgc8XGQ7xYhoz36rsBgMjG+e3l/B01esQi/KzPuBf/Ar8Sg5aSEOvEU0muSDb+KIr6d8eEC+FtcAAPZEaBSt4ysXVL84LUcJemQD3SiG30kOfUpF8o7/wI2M2Jf/LyCsbKEQUyLtLbZqnJBSfZJR5AMsrnHDqngMLEGAAY4UDG9GCpRuPvg8hOlsrXuPP3zq7yVPqyG0SG+bNo8rEhP5b1vXlHdG4bZsutX47d5VZ6xnFROKudx3T3/fnWUAQgAU1+kUFc3e0ZZeX1dLRVEryNIVyxMQIcxWwdey+jlIAYowHRM0fJX3Scs80OnT/CERwh5LMlFyU1w578NqxW+AQl2E/9fxjgUTi8crOfDpwsUsmOWw0+Q5OUGhELv/2UZoHAjsaw9OinWUggKACo4SdpPlHYldoWF+J2yGWOW+F4iAQre4c+ocb6a9uSWOnTldFkioqhd9lhmV542+VonCvuy4Tu214NP+2UNd/4Kk3KJCf3iziQJrCBeLi1cLHdLUikgAQtvRFR/nepcF9legl+DywAkUHi5/1MNjlEQvlHyh2XbMiS85yu7/9LgM6Sr+0ukfZY5mSkOcvUkpHn+T+Nw/IrQAQ7lty5luvKUmBpI3ITxSmojJ1aJ0kj/dc0ZcQk+/qo0l0l3/eRLkYjw5j+MZKA8jEubrHzUCke98eSoj8l08+PGAA+DAKNtCwNZe4p6J1Ucod8Lo5RKFfA84CPLVyEzEPQFZ25U9grUK6ilF4GhEia/ndYXLBt3PGW3qa6CBBPM7rH3ABGAyYEtUwzB4CeVedA5o6cKpjRkIebqDNSOqltsr+w7kXdfFVtsK2FMGFZNt5rbpIR+ppztoJ6eOKHmKmi9nQ99ARKkTxRErOs9wJXNHaAuIRV38o1pxRrlQRzGsRuKBqxcQEpC8OPFpyKYcp6iD5l7cO/gRDTamLFyhiUBwKKMP07FAWTEJv8AAAAAABrhAfrtrFhR4yubI7X5QRqMK6xKrj7U3XuBHdGnLqSqcQAAAAAAGp0GAUFVV1YAAAAAAAUYUmIAACcQBsfKUtr4PgZbIXRxRESU79PjE4IBAFUA5i32yLSoX+GmfbRNwS3l2zMPesZrctxliv7fD0pBW0MAAAKqqMJFwAAAAAAqE/NX////+AAAAABkxCb7AAAAAGTEJvoAAAKqIcWxYAAAAAAlR5m4CP/mPsh1IezjYpDlJ4GRb5q4fTs2LjtyO6M0XgVimrIQ4kSh1qg7JKW4gbGkyRntVFR9JO/GNd3FPDit0BK6M+JzXh/h12YNCz9wxlZTvXrNtWNbzqT+91pvl5cphhSPMfAHyEzTPaGR9tKDy9KNu56pmhaY32d2vfEWQmKo22guegeR98oDxs67MmnUraco46a3zEnac2Bm80pasUgMO24=","nullable":true}}},"RpcPriceFeedMetadata":{"type":"object","required":["emitter_chain"],"properties":{"emitter_chain":{"type":"integer","format":"int32","example":26,"minimum":0},"prev_publish_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"price_service_receive_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"slot":{"type":"integer","format":"int64","example":85480034,"nullable":true,"minimum":0}}},"RpcPriceFeedMetadataV2":{"type":"object","properties":{"prev_publish_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"proof_available_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"slot":{"type":"integer","format":"int64","example":85480034,"nullable":true,"minimum":0}}},"RpcPriceIdentifier":{"type":"string","example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},"TwapsResponse":{"type":"object","required":["binary"],"properties":{"binary":{"$ref":"#/components/schemas/BinaryUpdate"},"parsed":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPriceFeedTwap"},"description":"The calculated TWAPs for each price ID","nullable":true}}}}},"tags":[{"name":"hermes","description":"Pyth Real-Time Pricing API"}]} \ No newline at end of file +{"openapi":"3.0.3","info":{"title":"hermes","description":"Hermes is an agent that provides Verified Prices from the Pythnet Pyth Oracle.","license":{"name":""},"version":"0.8.1"},"paths":{"/api/get_price_feed":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/{publish_time} instead**","description":"**Deprecated: use /v2/updates/price/{publish_time} instead**\n\nGet a price update for a price feed with a specific timestamp\n\nGiven a price feed id and timestamp, retrieve the Pyth price update closest to that timestamp.","operationId":"get_price_feed","parameters":[{"name":"id","in":"query","description":"The id of the price feed to get an update for.","required":true,"schema":{"$ref":"#/components/schemas/PriceIdInput"}},{"name":"publish_time","in":"query","description":"The unix timestamp in seconds. This endpoint will return the first update whose\npublish_time is >= the provided value.","required":true,"schema":{"type":"integer","format":"int64"},"example":1717632000},{"name":"verbose","in":"query","description":"If true, include the `metadata` field in the response with additional metadata about the\nprice update.","required":false,"schema":{"type":"boolean"}},{"name":"binary","in":"query","description":"If true, include the binary price update in the `vaa` field of each returned feed. This\nbinary data can be submitted to Pyth contracts to update the on-chain price.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price update retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RpcPriceFeed"}}}}},"deprecated":true}},"/api/get_vaa":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/{publish_time} instead**","description":"**Deprecated: use /v2/updates/price/{publish_time} instead**\n\nGet a VAA for a price feed with a specific timestamp\n\nGiven a price feed id and timestamp, retrieve the Pyth price update closest to that timestamp.","operationId":"get_vaa","parameters":[{"name":"id","in":"query","description":"The ID of the price feed to get an update for.","required":true,"schema":{"$ref":"#/components/schemas/PriceIdInput"}},{"name":"publish_time","in":"query","description":"The unix timestamp in seconds. This endpoint will return the first update whose\npublish_time is >= the provided value.","required":true,"schema":{"type":"integer","format":"int64"},"example":1690576641}],"responses":{"200":{"description":"Price update retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVaaResponse"}}}},"404":{"description":"Price update not found","content":{"text/plain":{"schema":{"type":"string"}}}}},"deprecated":true}},"/api/get_vaa_ccip":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/{publish_time} instead**","description":"**Deprecated: use /v2/updates/price/{publish_time} instead**\n\nGet a VAA for a price feed using CCIP\n\nThis endpoint accepts a single argument which is a hex-encoded byte string of the following form:\n`<price feed id (32 bytes> <publish time as unix timestamp (8 bytes, big endian)>`","operationId":"get_vaa_ccip","parameters":[{"name":"data","in":"query","required":true,"schema":{"$ref":"#/components/schemas/GetVaaCcipInput"}}],"responses":{"200":{"description":"Price update retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVaaCcipResponse"}}}}},"deprecated":true}},"/api/latest_price_feeds":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/latest instead**","description":"**Deprecated: use /v2/updates/price/latest instead**\n\nGet the latest price updates by price feed id.\n\nGiven a collection of price feed ids, retrieve the latest Pyth price for each price feed.","operationId":"latest_price_feeds","parameters":[{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"verbose","in":"query","description":"If true, include the `metadata` field in the response with additional metadata about\nthe price update.","required":false,"schema":{"type":"boolean"}},{"name":"binary","in":"query","description":"If true, include the binary price update in the `vaa` field of each returned feed.\nThis binary data can be submitted to Pyth contracts to update the on-chain price.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RpcPriceFeed"}}}}}},"deprecated":true}},"/api/latest_vaas":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/latest instead**","description":"**Deprecated: use /v2/updates/price/latest instead**\n\nGet VAAs for a set of price feed ids.\n\nGiven a collection of price feed ids, retrieve the latest VAA for each. The returned VAA(s) can\nbe submitted to the Pyth contract to update the on-chain price. If VAAs are not found for every\nprovided price ID the call will fail.","operationId":"latest_vaas","parameters":[{"name":"ids[]","in":"query","description":"Get the VAAs for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"}],"responses":{"200":{"description":"VAAs retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}},"example":["UE5BVQEAAAADuAEAAAADDQC1H7meY5fTed0FsykIb8dt+7nKpbuzfvU2DplDi+dcUl8MC+UIkS65+rkiq+zmNBxE2gaxkBkjdIicZ/fBo+X7AAEqp+WtlWb84np8jJfLpuQ2W+l5KXTigsdAhz5DyVgU3xs+EnaIZxBwcE7EKzjMam+V9rlRy0CGsiQ1kjqqLzfAAQLsoVO0Vu5gVmgc8XGQ7xYhoz36rsBgMjG+e3l/B01esQi/KzPuBf/Ar8Sg5aSEOvEU0muSDb+KIr6d8eEC+FtcAAPZEaBSt4ysXVL84LUcJemQD3SiG30kOfUpF8o7/wI2M2Jf/LyCsbKEQUyLtLbZqnJBSfZJR5AMsrnHDqngMLEGAAY4UDG9GCpRuPvg8hOlsrXuPP3zq7yVPqyG0SG+bNo8rEhP5b1vXlHdG4bZsutX47d5VZ6xnFROKudx3T3/fnWUAQgAU1+kUFc3e0ZZeX1dLRVEryNIVyxMQIcxWwdey+jlIAYowHRM0fJX3Scs80OnT/CERwh5LMlFyU1w578NqxW+AQl2E/9fxjgUTi8crOfDpwsUsmOWw0+Q5OUGhELv/2UZoHAjsaw9OinWUggKACo4SdpPlHYldoWF+J2yGWOW+F4iAQre4c+ocb6a9uSWOnTldFkioqhd9lhmV542+VonCvuy4Tu214NP+2UNd/4Kk3KJCf3iziQJrCBeLi1cLHdLUikgAQtvRFR/nepcF9legl+DywAkUHi5/1MNjlEQvlHyh2XbMiS85yu7/9LgM6Sr+0ukfZY5mSkOcvUkpHn+T+Nw/IrQAQ7lty5luvKUmBpI3ITxSmojJ1aJ0kj/dc0ZcQk+/qo0l0l3/eRLkYjw5j+MZKA8jEubrHzUCke98eSoj8l08+PGAA+DAKNtCwNZe4p6J1Ucod8Lo5RKFfA84CPLVyEzEPQFZ25U9grUK6ilF4GhEia/ndYXLBt3PGW3qa6CBBPM7rH3ABGAyYEtUwzB4CeVedA5o6cKpjRkIebqDNSOqltsr+w7kXdfFVtsK2FMGFZNt5rbpIR+ppztoJ6eOKHmKmi9nQ99ARKkTxRErOs9wJXNHaAuIRV38o1pxRrlQRzGsRuKBqxcQEpC8OPFpyKYcp6iD5l7cO/gRDTamLFyhiUBwKKMP07FAWTEJv8AAAAAABrhAfrtrFhR4yubI7X5QRqMK6xKrj7U3XuBHdGnLqSqcQAAAAAAGp0GAUFVV1YAAAAAAAUYUmIAACcQBsfKUtr4PgZbIXRxRESU79PjE4IBAFUA5i32yLSoX+GmfbRNwS3l2zMPesZrctxliv7fD0pBW0MAAAKqqMJFwAAAAAAqE/NX////+AAAAABkxCb7AAAAAGTEJvoAAAKqIcWxYAAAAAAlR5m4CP/mPsh1IezjYpDlJ4GRb5q4fTs2LjtyO6M0XgVimrIQ4kSh1qg7JKW4gbGkyRntVFR9JO/GNd3FPDit0BK6M+JzXh/h12YNCz9wxlZTvXrNtWNbzqT+91pvl5cphhSPMfAHyEzTPaGR9tKDy9KNu56pmhaY32d2vfEWQmKo22guegeR98oDxs67MmnUraco46a3zEnac2Bm80pasUgMO24="]}}}},"deprecated":true}},"/api/price_feed_ids":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/price_feeds instead**","description":"**Deprecated: use /v2/price_feeds instead**\n\nGet the set of price feed IDs.\n\nThis endpoint fetches all of the price feed IDs for which price updates can be retrieved.","operationId":"price_feed_ids","responses":{"200":{"description":"Price feed ids retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RpcPriceIdentifier"}}}}}},"deprecated":true}},"/v2/price_feeds":{"get":{"tags":["rest"],"summary":"Get the set of price feeds.","description":"Get the set of price feeds.\n\nThis endpoint fetches all price feeds from the Pyth network. It can be filtered by asset type\nand query string.","operationId":"price_feeds_metadata","parameters":[{"name":"query","in":"query","description":"Optional query parameter. If provided, the results will be filtered to all price feeds whose symbol contains the query string. Query string is case insensitive.","required":false,"schema":{"type":"string","nullable":true},"example":"bitcoin"},{"name":"asset_type","in":"query","description":"Optional query parameter. If provided, the results will be filtered by asset type. Possible values are crypto, equity, fx, metal, rates. Filter string is case insensitive.","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/AssetType"}],"nullable":true},"example":"crypto"}],"responses":{"200":{"description":"Price feeds metadata retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceFeedMetadata"}}}}}}}},"/v2/updates/price/latest":{"get":{"tags":["rest"],"summary":"Get the latest price updates by price feed id.","description":"Get the latest price updates by price feed id.\n\nGiven a collection of price feed ids, retrieve the latest Pyth price for each price feed.","operationId":"latest_price_updates","parameters":[{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the price update in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed price update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceUpdate"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v2/updates/price/stream":{"get":{"tags":["rest"],"summary":"SSE route handler for streaming price updates.","description":"SSE route handler for streaming price updates.","operationId":"price_stream_sse_handler","parameters":[{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the price update in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed price update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"allow_unordered","in":"query","description":"If true, allows unordered price updates to be included in the stream.","required":false,"schema":{"type":"boolean"}},{"name":"benchmarks_only","in":"query","description":"If true, only include benchmark prices that are the initial price updates at a given timestamp (i.e., prevPubTime != pubTime).","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceUpdate"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v2/updates/price/{publish_time}":{"get":{"tags":["rest"],"summary":"Get the latest price updates by price feed id.","description":"Get the latest price updates by price feed id.\n\nGiven a collection of price feed ids, retrieve the latest Pyth price for each price feed.","operationId":"timestamp_price_updates","parameters":[{"name":"publish_time","in":"path","description":"The unix timestamp in seconds. This endpoint will return the first update whose\npublish_time is >= the provided value.","required":true,"schema":{"type":"integer","format":"int64"},"example":1717632000},{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the price update in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed price update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceUpdate"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v2/updates/publisher_stake_caps/latest":{"get":{"tags":["rest"],"summary":"Get the most recent publisher stake caps update data.","description":"Get the most recent publisher stake caps update data.","operationId":"latest_publisher_stake_caps","parameters":[{"name":"encoding","in":"query","description":"Get the most recent publisher stake caps update data.\nOptional encoding type. If true, return the message in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Publisher stake caps update data retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestPublisherStakeCapsUpdateDataResponse"}}}}}}},"/v2/updates/twap/{window_seconds}/latest":{"get":{"tags":["rest"],"summary":"Get the latest TWAP by price feed id with a custom time window.","description":"Get the latest TWAP by price feed id with a custom time window.\n\nGiven a collection of price feed ids, retrieve the latest Pyth TWAP price for each price feed.","operationId":"latest_twaps","parameters":[{"name":"window_seconds","in":"path","description":"The time window in seconds over which to calculate the TWAP, ending at the current time.\nFor example, a value of 300 would return the most recent 5 minute TWAP.\nMust be greater than 0 and less than or equal to 600 seconds (10 minutes).","required":true,"schema":{"type":"integer","format":"int64","minimum":0},"example":"300"},{"name":"ids[]","in":"query","description":"Get the most recent TWAP (time weighted average price) for this set of price feed ids.\nThe `binary` data contains the signed start & end cumulative price updates needed to calculate\nthe TWAPs on-chain. The `parsed` data contains the calculated TWAPs.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the cumulative price updates in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the calculated TWAP in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"TWAPs retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwapsResponse"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"AssetType":{"type":"string","enum":["crypto","fx","equity","metal","rates","crypto_redemption_rate"]},"BinaryUpdate":{"type":"object","required":["encoding","data"],"properties":{"data":{"type":"array","items":{"type":"string"}},"encoding":{"$ref":"#/components/schemas/EncodingType"}}},"EncodingType":{"type":"string","enum":["hex","base64"]},"GetVaaCcipInput":{"type":"string","format":"binary"},"GetVaaCcipResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"string"}}},"GetVaaResponse":{"type":"object","required":["vaa","publishTime"],"properties":{"publishTime":{"type":"integer","format":"int64","example":1690576641},"vaa":{"type":"string","description":"The VAA binary represented as a base64 string.","example":"UE5BVQEAAAADuAEAAAADDQC1H7meY5fTed0FsykIb8dt+7nKpbuzfvU2DplDi+dcUl8MC+UIkS65+rkiq+zmNBxE2gaxkBkjdIicZ/fBo+X7AAEqp+WtlWb84np8jJfLpuQ2W+l5KXTigsdAhz5DyVgU3xs+EnaIZxBwcE7EKzjMam+V9rlRy0CGsiQ1kjqqLzfAAQLsoVO0Vu5gVmgc8XGQ7xYhoz36rsBgMjG+e3l/B01esQi/KzPuBf/Ar8Sg5aSEOvEU0muSDb+KIr6d8eEC+FtcAAPZEaBSt4ysXVL84LUcJemQD3SiG30kOfUpF8o7/wI2M2Jf/LyCsbKEQUyLtLbZqnJBSfZJR5AMsrnHDqngMLEGAAY4UDG9GCpRuPvg8hOlsrXuPP3zq7yVPqyG0SG+bNo8rEhP5b1vXlHdG4bZsutX47d5VZ6xnFROKudx3T3/fnWUAQgAU1+kUFc3e0ZZeX1dLRVEryNIVyxMQIcxWwdey+jlIAYowHRM0fJX3Scs80OnT/CERwh5LMlFyU1w578NqxW+AQl2E/9fxjgUTi8crOfDpwsUsmOWw0+Q5OUGhELv/2UZoHAjsaw9OinWUggKACo4SdpPlHYldoWF+J2yGWOW+F4iAQre4c+ocb6a9uSWOnTldFkioqhd9lhmV542+VonCvuy4Tu214NP+2UNd/4Kk3KJCf3iziQJrCBeLi1cLHdLUikgAQtvRFR/nepcF9legl+DywAkUHi5/1MNjlEQvlHyh2XbMiS85yu7/9LgM6Sr+0ukfZY5mSkOcvUkpHn+T+Nw/IrQAQ7lty5luvKUmBpI3ITxSmojJ1aJ0kj/dc0ZcQk+/qo0l0l3/eRLkYjw5j+MZKA8jEubrHzUCke98eSoj8l08+PGAA+DAKNtCwNZe4p6J1Ucod8Lo5RKFfA84CPLVyEzEPQFZ25U9grUK6ilF4GhEia/ndYXLBt3PGW3qa6CBBPM7rH3ABGAyYEtUwzB4CeVedA5o6cKpjRkIebqDNSOqltsr+w7kXdfFVtsK2FMGFZNt5rbpIR+ppztoJ6eOKHmKmi9nQ99ARKkTxRErOs9wJXNHaAuIRV38o1pxRrlQRzGsRuKBqxcQEpC8OPFpyKYcp6iD5l7cO/gRDTamLFyhiUBwKKMP07FAWTEJv8AAAAAABrhAfrtrFhR4yubI7X5QRqMK6xKrj7U3XuBHdGnLqSqcQAAAAAAGp0GAUFVV1YAAAAAAAUYUmIAACcQBsfKUtr4PgZbIXRxRESU79PjE4IBAFUA5i32yLSoX+GmfbRNwS3l2zMPesZrctxliv7fD0pBW0MAAAKqqMJFwAAAAAAqE/NX////+AAAAABkxCb7AAAAAGTEJvoAAAKqIcWxYAAAAAAlR5m4CP/mPsh1IezjYpDlJ4GRb5q4fTs2LjtyO6M0XgVimrIQ4kSh1qg7JKW4gbGkyRntVFR9JO/GNd3FPDit0BK6M+JzXh/h12YNCz9wxlZTvXrNtWNbzqT+91pvl5cphhSPMfAHyEzTPaGR9tKDy9KNu56pmhaY32d2vfEWQmKo22guegeR98oDxs67MmnUraco46a3zEnac2Bm80pasUgMO24="}}},"LatestPublisherStakeCapsUpdateDataResponse":{"type":"object","required":["binary"],"properties":{"binary":{"$ref":"#/components/schemas/BinaryUpdate"},"parsed":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPublisherStakeCapsUpdate"},"nullable":true}}},"ParsedPriceFeedTwap":{"type":"object","required":["id","start_timestamp","end_timestamp","twap","down_slots_ratio"],"properties":{"down_slots_ratio":{"type":"string","description":"The % of slots where the network was down over the TWAP window.\nA value of zero indicates no slots were missed over the window, and\na value of one indicates that every slot was missed over the window.\nThis is a float value stored as a string to avoid precision loss."},"end_timestamp":{"type":"integer","format":"int64","description":"The end unix timestamp of the window"},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"},"start_timestamp":{"type":"integer","format":"int64","description":"The start unix timestamp of the window"},"twap":{"$ref":"#/components/schemas/RpcPrice"}}},"ParsedPriceUpdate":{"type":"object","required":["id","price","ema_price","metadata"],"properties":{"ema_price":{"$ref":"#/components/schemas/RpcPrice"},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"},"metadata":{"$ref":"#/components/schemas/RpcPriceFeedMetadataV2"},"price":{"$ref":"#/components/schemas/RpcPrice"}}},"ParsedPublisherStakeCap":{"type":"object","required":["publisher","cap"],"properties":{"cap":{"type":"integer","format":"int64","minimum":0},"publisher":{"type":"string"}}},"ParsedPublisherStakeCapsUpdate":{"type":"object","required":["publisher_stake_caps"],"properties":{"publisher_stake_caps":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPublisherStakeCap"}}}},"PriceFeedMetadata":{"type":"object","required":["id","attributes"],"properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"}},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"}}},"PriceIdInput":{"type":"string","description":"A price id is a 32-byte hex string, optionally prefixed with \"0x\".\nPrice ids are case insensitive.\n\nExamples:\n* 0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43\n* e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43\n\nSee https://pyth.network/developers/price-feed-ids for a list of all price feed ids.","example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},"PriceUpdate":{"type":"object","required":["binary"],"properties":{"binary":{"$ref":"#/components/schemas/BinaryUpdate"},"parsed":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPriceUpdate"},"nullable":true}}},"RpcPrice":{"type":"object","description":"A price with a degree of uncertainty at a certain time, represented as a price +- a confidence\ninterval.\n\nThe confidence interval roughly corresponds to the standard error of a normal distribution.\nBoth the price and confidence are stored in a fixed-point numeric representation, `x *\n10^expo`, where `expo` is the exponent. For example:","required":["price","conf","expo","publish_time"],"properties":{"conf":{"type":"string","description":"The confidence interval associated with the price, stored as a string to avoid precision loss","example":"509500001"},"expo":{"type":"integer","format":"int32","description":"The exponent associated with both the price and confidence interval. Multiply those values\nby `10^expo` to get the real value.","example":-8},"price":{"type":"string","description":"The price itself, stored as a string to avoid precision loss","example":"2920679499999"},"publish_time":{"type":"integer","format":"int64","description":"When the price was published. The `publish_time` is a unix timestamp, i.e., the number of\nseconds since the Unix epoch (00:00:00 UTC on 1 Jan 1970).","example":1717632000}}},"RpcPriceFeed":{"type":"object","required":["id","price","ema_price"],"properties":{"ema_price":{"$ref":"#/components/schemas/RpcPrice"},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"},"metadata":{"allOf":[{"$ref":"#/components/schemas/RpcPriceFeedMetadata"}],"nullable":true},"price":{"$ref":"#/components/schemas/RpcPrice"},"vaa":{"type":"string","description":"The VAA binary represented as a base64 string.","example":"UE5BVQEAAAADuAEAAAADDQC1H7meY5fTed0FsykIb8dt+7nKpbuzfvU2DplDi+dcUl8MC+UIkS65+rkiq+zmNBxE2gaxkBkjdIicZ/fBo+X7AAEqp+WtlWb84np8jJfLpuQ2W+l5KXTigsdAhz5DyVgU3xs+EnaIZxBwcE7EKzjMam+V9rlRy0CGsiQ1kjqqLzfAAQLsoVO0Vu5gVmgc8XGQ7xYhoz36rsBgMjG+e3l/B01esQi/KzPuBf/Ar8Sg5aSEOvEU0muSDb+KIr6d8eEC+FtcAAPZEaBSt4ysXVL84LUcJemQD3SiG30kOfUpF8o7/wI2M2Jf/LyCsbKEQUyLtLbZqnJBSfZJR5AMsrnHDqngMLEGAAY4UDG9GCpRuPvg8hOlsrXuPP3zq7yVPqyG0SG+bNo8rEhP5b1vXlHdG4bZsutX47d5VZ6xnFROKudx3T3/fnWUAQgAU1+kUFc3e0ZZeX1dLRVEryNIVyxMQIcxWwdey+jlIAYowHRM0fJX3Scs80OnT/CERwh5LMlFyU1w578NqxW+AQl2E/9fxjgUTi8crOfDpwsUsmOWw0+Q5OUGhELv/2UZoHAjsaw9OinWUggKACo4SdpPlHYldoWF+J2yGWOW+F4iAQre4c+ocb6a9uSWOnTldFkioqhd9lhmV542+VonCvuy4Tu214NP+2UNd/4Kk3KJCf3iziQJrCBeLi1cLHdLUikgAQtvRFR/nepcF9legl+DywAkUHi5/1MNjlEQvlHyh2XbMiS85yu7/9LgM6Sr+0ukfZY5mSkOcvUkpHn+T+Nw/IrQAQ7lty5luvKUmBpI3ITxSmojJ1aJ0kj/dc0ZcQk+/qo0l0l3/eRLkYjw5j+MZKA8jEubrHzUCke98eSoj8l08+PGAA+DAKNtCwNZe4p6J1Ucod8Lo5RKFfA84CPLVyEzEPQFZ25U9grUK6ilF4GhEia/ndYXLBt3PGW3qa6CBBPM7rH3ABGAyYEtUwzB4CeVedA5o6cKpjRkIebqDNSOqltsr+w7kXdfFVtsK2FMGFZNt5rbpIR+ppztoJ6eOKHmKmi9nQ99ARKkTxRErOs9wJXNHaAuIRV38o1pxRrlQRzGsRuKBqxcQEpC8OPFpyKYcp6iD5l7cO/gRDTamLFyhiUBwKKMP07FAWTEJv8AAAAAABrhAfrtrFhR4yubI7X5QRqMK6xKrj7U3XuBHdGnLqSqcQAAAAAAGp0GAUFVV1YAAAAAAAUYUmIAACcQBsfKUtr4PgZbIXRxRESU79PjE4IBAFUA5i32yLSoX+GmfbRNwS3l2zMPesZrctxliv7fD0pBW0MAAAKqqMJFwAAAAAAqE/NX////+AAAAABkxCb7AAAAAGTEJvoAAAKqIcWxYAAAAAAlR5m4CP/mPsh1IezjYpDlJ4GRb5q4fTs2LjtyO6M0XgVimrIQ4kSh1qg7JKW4gbGkyRntVFR9JO/GNd3FPDit0BK6M+JzXh/h12YNCz9wxlZTvXrNtWNbzqT+91pvl5cphhSPMfAHyEzTPaGR9tKDy9KNu56pmhaY32d2vfEWQmKo22guegeR98oDxs67MmnUraco46a3zEnac2Bm80pasUgMO24=","nullable":true}}},"RpcPriceFeedMetadata":{"type":"object","required":["emitter_chain"],"properties":{"emitter_chain":{"type":"integer","format":"int32","example":26,"minimum":0},"prev_publish_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"price_service_receive_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"slot":{"type":"integer","format":"int64","example":85480034,"nullable":true,"minimum":0}}},"RpcPriceFeedMetadataV2":{"type":"object","properties":{"prev_publish_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"proof_available_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"slot":{"type":"integer","format":"int64","example":85480034,"nullable":true,"minimum":0}}},"RpcPriceIdentifier":{"type":"string","example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},"TwapsResponse":{"type":"object","required":["binary"],"properties":{"binary":{"$ref":"#/components/schemas/BinaryUpdate"},"parsed":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPriceFeedTwap"},"description":"The calculated TWAPs for each price ID","nullable":true}}}}},"tags":[{"name":"hermes","description":"Pyth Real-Time Pricing API"}]} \ No newline at end of file diff --git a/packages/plugin-web-search/src/index.ts b/packages/plugin-web-search/src/index.ts index a67a49441da..988e3dcfa8a 100644 --- a/packages/plugin-web-search/src/index.ts +++ b/packages/plugin-web-search/src/index.ts @@ -10,7 +10,7 @@ import { State, } from "@elizaos/core"; import { encodingForModel, TiktokenModel } from "js-tiktoken"; -import { webSearch } from "./actions/webSearch"; +//import { webSearch } from "./actions/webSearch"; import { WebSearchService } from "./services/webSearchService"; const DEFAULT_MAX_WEB_SEARCH_TOKENS = 4000; From 77d51cd97545b0d0c8dcece649248d59159235a4 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Tue, 21 Jan 2025 17:10:14 +0700 Subject: [PATCH 30/58] adding knowledge --- packages/client-twitter/src/plugins/templates.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/client-twitter/src/plugins/templates.ts b/packages/client-twitter/src/plugins/templates.ts index 05882425c06..bf1edcb727d 100644 --- a/packages/client-twitter/src/plugins/templates.ts +++ b/packages/client-twitter/src/plugins/templates.ts @@ -74,6 +74,9 @@ export const twitterVoiceHandlerTemplate = About {{agentName}}: {{bio}} + # Areas of Expertise + {{knowledge}} + # Attachments {{attachments}} From fd6635a8bd5c3189629a0986964f6384b58817f1 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Wed, 22 Jan 2025 13:15:21 +0700 Subject: [PATCH 31/58] some fix & update --- .../client-telegram/src/messageManager.ts | 189 +++++++++--------- packages/core/src/runtime.ts | 92 +++++---- 2 files changed, 145 insertions(+), 136 deletions(-) diff --git a/packages/client-telegram/src/messageManager.ts b/packages/client-telegram/src/messageManager.ts index f401999dd6a..7e9fb9d5868 100644 --- a/packages/client-telegram/src/messageManager.ts +++ b/packages/client-telegram/src/messageManager.ts @@ -2,6 +2,7 @@ import { composeContext, composeRandomUser, type Content, + elizaLogger, generateMessageResponse, generateShouldRespond, getEmbeddingZeroVector, @@ -11,6 +12,7 @@ import { type Media, type Memory, ModelClass, + ServiceType, type State, stringToUuid, type UUID, @@ -85,8 +87,8 @@ export class MessageManager { this._initializeTeamMemberUsernames().catch((error) => elizaLogger.error( "Error initializing team member usernames:", - error, - ), + error + ) ); this.autoPostConfig = { @@ -128,13 +130,13 @@ export class MessageManager { if ("username" in chat && chat.username) { this.teamMemberUsernames.set(id, chat.username); elizaLogger.info( - `Cached username for team member ${id}: ${chat.username}`, + `Cached username for team member ${id}: ${chat.username}` ); } } catch (error) { elizaLogger.error( `Error getting username for team member ${id}:`, - error, + error ); } } @@ -144,16 +146,16 @@ export class MessageManager { // Wait for bot to be ready if (this.bot.botInfo) { elizaLogger.info( - "[AutoPost Telegram] Bot ready, starting monitoring", + "[AutoPost Telegram] Bot ready, starting monitoring" ); this._initializeAutoPost(); } else { elizaLogger.info( - "[AutoPost Telegram] Bot not ready, waiting for ready event", + "[AutoPost Telegram] Bot not ready, waiting for ready event" ); this.bot.telegram.getMe().then(() => { elizaLogger.info( - "[AutoPost Telegram] Bot ready, starting monitoring", + "[AutoPost Telegram] Bot ready, starting monitoring" ); this._initializeAutoPost(); }); @@ -165,14 +167,9 @@ export class MessageManager { setTimeout(() => { // Monitor with random intervals between 2-6 hours // Monitor with random intervals between 2-6 hours - this.autoPostInterval = setInterval( - () => { - this._checkChannelActivity(); - }, - Math.floor( - Math.random() * (4 * 60 * 60 * 1000) + 2 * 60 * 60 * 1000, - ), - ); + this.autoPostInterval = setInterval(() => { + this._checkChannelActivity(); + }, Math.floor(Math.random() * (4 * 60 * 60 * 1000) + 2 * 60 * 60 * 1000)); }, 5000); } @@ -207,7 +204,7 @@ export class MessageManager { const roomId = stringToUuid( this.autoPostConfig.mainChannelId + "-" + - this.runtime.agentId, + this.runtime.agentId ); const memory = { id: stringToUuid(`autopost-${Date.now()}`), @@ -238,12 +235,12 @@ export class MessageManager { const responseContent = await this._generateResponse( memory, state, - context, + context ); if (!responseContent?.text) return; console.log( - `[Auto Post Telegram] Recent Messages: ${responseContent}`, + `[Auto Post Telegram] Recent Messages: ${responseContent}` ); // Send message directly using telegram bot @@ -252,17 +249,15 @@ export class MessageManager { (chunk) => this.bot.telegram.sendMessage( this.autoPostConfig.mainChannelId, - chunk, - ), - ), + chunk + ) + ) ); // Create and store memories const memories = messages.map((m) => ({ id: stringToUuid( - m.message_id.toString() + - "-" + - this.runtime.agentId, + m.message_id.toString() + "-" + this.runtime.agentId ), userId: this.runtime.agentId, agentId: this.runtime.agentId, @@ -287,13 +282,13 @@ export class MessageManager { } } else { elizaLogger.warn( - "[AutoPost Telegram] Activity within threshold. Not posting.", + "[AutoPost Telegram] Activity within threshold. Not posting." ); } } catch (error) { elizaLogger.warn( "[AutoPost Telegram] Error checking channel activity:", - error, + error ); } } @@ -301,7 +296,7 @@ export class MessageManager { private async _monitorPinnedMessages(ctx: Context): Promise<void> { if (!this.autoPostConfig.pinnedMessagesGroups.length) { elizaLogger.warn( - "[AutoPost Telegram] Auto post config no pinned message groups", + "[AutoPost Telegram] Auto post config no pinned message groups" ); return; } @@ -315,7 +310,7 @@ export class MessageManager { if ( !this.autoPostConfig.pinnedMessagesGroups.includes( - ctx.chat.id.toString(), + ctx.chat.id.toString() ) ) return; @@ -325,7 +320,7 @@ export class MessageManager { try { elizaLogger.info( - `[AutoPost Telegram] Processing pinned message in group ${ctx.chat.id}`, + `[AutoPost Telegram] Processing pinned message in group ${ctx.chat.id}` ); // Explicitly type and handle message content @@ -334,12 +329,12 @@ export class MessageManager { typeof pinnedMessage.text === "string" ? pinnedMessage.text : "caption" in pinnedMessage && - typeof pinnedMessage.caption === "string" - ? pinnedMessage.caption - : "New pinned message"; + typeof pinnedMessage.caption === "string" + ? pinnedMessage.caption + : "New pinned message"; const roomId = stringToUuid( - mainChannel + "-" + this.runtime.agentId, + mainChannel + "-" + this.runtime.agentId ); const memory = { id: stringToUuid(`pinned-${Date.now()}`), @@ -376,20 +371,20 @@ export class MessageManager { const responseContent = await this._generateResponse( memory, state, - context, + context ); if (!responseContent?.text) return; // Send message using telegram bot const messages = await Promise.all( this.splitMessage(responseContent.text.trim()).map((chunk) => - this.bot.telegram.sendMessage(mainChannel, chunk), - ), + this.bot.telegram.sendMessage(mainChannel, chunk) + ) ); const memories = messages.map((m) => ({ id: stringToUuid( - m.message_id.toString() + "-" + this.runtime.agentId, + m.message_id.toString() + "-" + this.runtime.agentId ), userId: this.runtime.agentId, agentId: this.runtime.agentId, @@ -411,7 +406,7 @@ export class MessageManager { } catch (error) { elizaLogger.warn( `[AutoPost Telegram] Error processing pinned message:`, - error, + error ); } } @@ -430,7 +425,7 @@ export class MessageManager { const normalizedUserId = this._getNormalizedUserId(userId); return teamConfig.teamAgentIds.some( - (teamId) => this._getNormalizedUserId(teamId) === normalizedUserId, + (teamId) => this._getNormalizedUserId(teamId) === normalizedUserId ); } @@ -444,14 +439,14 @@ export class MessageManager { private _isTeamCoordinationRequest(content: string): boolean { const contentLower = content.toLowerCase(); return TEAM_COORDINATION.KEYWORDS?.some((keyword) => - contentLower.includes(keyword.toLowerCase()), + contentLower.includes(keyword.toLowerCase()) ); } private _isRelevantToTeamMember( content: string, chatId: string, - lastAgentMemory: Memory | null = null, + lastAgentMemory: Memory | null = null ): boolean { const teamConfig = this.runtime.character.clientConfig?.telegram; @@ -464,7 +459,7 @@ export class MessageManager { const similarity = cosineSimilarity( content.toLowerCase(), - lastAgentMemory.content.text.toLowerCase(), + lastAgentMemory.content.text.toLowerCase() ); return ( @@ -480,14 +475,14 @@ export class MessageManager { // Check if content matches any team member keywords return teamConfig.teamMemberInterestKeywords.some((keyword) => - content.toLowerCase().includes(keyword.toLowerCase()), + content.toLowerCase().includes(keyword.toLowerCase()) ); } private async _analyzeContextSimilarity( currentMessage: string, previousContext?: MessageContext, - agentLastMessage?: string, + agentLastMessage?: string ): Promise<number> { if (!previousContext) return 1; @@ -497,7 +492,7 @@ export class MessageManager { const similarity = cosineSimilarity( currentMessage.toLowerCase(), previousContext.content.toLowerCase(), - agentLastMessage?.toLowerCase(), + agentLastMessage?.toLowerCase() ); return similarity * timeWeight; @@ -505,14 +500,14 @@ export class MessageManager { private async _shouldRespondBasedOnContext( message: Message, - chatState: InterestChats[string], + chatState: InterestChats[string] ): Promise<boolean> { const messageText = "text" in message ? message.text : "caption" in message - ? message.caption - : ""; + ? message.caption + : ""; if (!messageText) return false; @@ -530,14 +525,14 @@ export class MessageManager { const lastUserMessage = [...chatState.messages].reverse().find( (m, index) => index > 0 && // Skip first message (current) - m.userId !== this.runtime.agentId, + m.userId !== this.runtime.agentId ); if (!lastUserMessage) return false; const lastSelfMemories = await this.runtime.messageManager.getMemories({ roomId: stringToUuid( - message.chat.id.toString() + "-" + this.runtime.agentId, + message.chat.id.toString() + "-" + this.runtime.agentId ), unique: false, count: 5, @@ -554,7 +549,7 @@ export class MessageManager { content: lastUserMessage.content.text || "", timestamp: Date.now(), }, - lastSelfSortedMemories?.[0]?.content?.text, + lastSelfSortedMemories?.[0]?.content?.text ); const similarityThreshold = @@ -574,8 +569,8 @@ export class MessageManager { "text" in message ? message.text : "caption" in message - ? message.caption - : ""; + ? message.caption + : ""; if (!messageText) return false; const isReplyToBot = @@ -610,7 +605,7 @@ export class MessageManager { ) { return this._isRelevantToTeamMember( lastMessage?.content.text || "", - chatId, + chatId ); } @@ -619,7 +614,7 @@ export class MessageManager { if ( !this._isRelevantToTeamMember( lastMessage?.content.text || "", - chatId, + chatId ) ) { const recentTeamResponses = chatState.messages @@ -627,7 +622,7 @@ export class MessageManager { .some( (m) => m.userId !== this.runtime.agentId && - this._isTeamMember(m.userId.toString()), + this._isTeamMember(m.userId.toString()) ); if (recentTeamResponses) { @@ -642,7 +637,7 @@ export class MessageManager { // Process image messages and generate descriptions private async processImage( - message: Message, + message: Message ): Promise<{ description: string } | null> { try { let imageUrl: string | null = null; @@ -652,7 +647,7 @@ export class MessageManager { if ("photo" in message && message.photo?.length > 0) { const photo = message.photo[message.photo.length - 1]; const fileLink = await this.bot.telegram.getFileLink( - photo.file_id, + photo.file_id ); imageUrl = fileLink.toString(); } else if ( @@ -660,7 +655,7 @@ export class MessageManager { message.document?.mime_type?.startsWith("image/") ) { const fileLink = await this.bot.telegram.getFileLink( - message.document.file_id, + message.document.file_id ); imageUrl = fileLink.toString(); } @@ -668,7 +663,7 @@ export class MessageManager { if (imageUrl) { const imageDescriptionService = this.runtime.getService<IImageDescriptionService>( - ServiceType.IMAGE_DESCRIPTION, + ServiceType.IMAGE_DESCRIPTION ); const { title, description } = await imageDescriptionService.describeImage(imageUrl); @@ -684,7 +679,7 @@ export class MessageManager { // Decide if the bot should respond to the message private async _shouldRespond( message: Message, - state: State, + state: State ): Promise<boolean> { if ( this.runtime.character.clientConfig?.telegram @@ -722,8 +717,8 @@ export class MessageManager { "text" in message ? message.text : "caption" in message - ? message.caption - : ""; + ? message.caption + : ""; // Check if team member has direct interest first if ( @@ -745,10 +740,10 @@ export class MessageManager { Math.floor( Math.random() * (TIMING_CONSTANTS.TEAM_MEMBER_DELAY_MAX - - TIMING_CONSTANTS.TEAM_MEMBER_DELAY_MIN), + TIMING_CONSTANTS.TEAM_MEMBER_DELAY_MIN) ) + TIMING_CONSTANTS.TEAM_MEMBER_DELAY_MIN; // 1-3 second random delay await new Promise((resolve) => - setTimeout(resolve, randomDelay), + setTimeout(resolve, randomDelay) ); return true; } @@ -760,20 +755,20 @@ export class MessageManager { ) { // Add small delay for non-leader responses await new Promise((resolve) => - setTimeout(resolve, TIMING_CONSTANTS.TEAM_MEMBER_DELAY), + setTimeout(resolve, TIMING_CONSTANTS.TEAM_MEMBER_DELAY) ); //1.5 second delay // If leader has responded in last few seconds, reduce chance of responding if (chatState.messages?.length) { const recentMessages = chatState.messages.slice( - -MESSAGE_CONSTANTS.RECENT_MESSAGE_COUNT, + -MESSAGE_CONSTANTS.RECENT_MESSAGE_COUNT ); const leaderResponded = recentMessages.some( (m) => m.userId === this.runtime.character.clientConfig?.telegram ?.teamLeaderId && - Date.now() - chatState.lastMessageSent < 3000, + Date.now() - chatState.lastMessageSent < 3000 ); if (leaderResponded) { @@ -794,21 +789,21 @@ export class MessageManager { Math.floor( Math.random() * (TIMING_CONSTANTS.LEADER_DELAY_MAX - - TIMING_CONSTANTS.LEADER_DELAY_MIN), + TIMING_CONSTANTS.LEADER_DELAY_MIN) ) + TIMING_CONSTANTS.LEADER_DELAY_MIN; // 2-4 second random delay await new Promise((resolve) => - setTimeout(resolve, randomDelay), + setTimeout(resolve, randomDelay) ); // After delay, check if another team member has already responded if (chatState?.messages?.length) { const recentResponses = chatState.messages.slice( - -MESSAGE_CONSTANTS.RECENT_MESSAGE_COUNT, + -MESSAGE_CONSTANTS.RECENT_MESSAGE_COUNT ); const otherTeamMemberResponded = recentResponses.some( (m) => m.userId !== this.runtime.agentId && - this._isTeamMember(m.userId), + this._isTeamMember(m.userId) ); if (otherTeamMemberResponded) { @@ -845,7 +840,7 @@ export class MessageManager { chatId ].messages.slice(-MESSAGE_CONSTANTS.CHAT_HISTORY_COUNT); const ourMessageCount = recentMessages.filter( - (m) => m.userId === this.runtime.agentId, + (m) => m.userId === this.runtime.agentId ).length; if (ourMessageCount > 2) { @@ -894,7 +889,7 @@ export class MessageManager { private async sendMessageInChunks( ctx: Context, content: Content, - replyToMessageId?: number, + replyToMessageId?: number ): Promise<Message.TextMessage[]> { if (content.attachments && content.attachments.length > 0) { content.attachments.map(async (attachment: Media) => { @@ -917,7 +912,7 @@ export class MessageManager { if (!mediaType) { throw new Error( - `Unsupported Telegram attachment content type: ${attachment.contentType}`, + `Unsupported Telegram attachment content type: ${attachment.contentType}` ); } @@ -925,7 +920,7 @@ export class MessageManager { ctx, attachment.url, mediaType, - attachment.description, + attachment.description ); }); } else { @@ -943,7 +938,7 @@ export class MessageManager { ? { message_id: replyToMessageId } : undefined, parse_mode: "Markdown", - }, + } )) as Message.TextMessage; sentMessages.push(sentMessage); @@ -957,7 +952,7 @@ export class MessageManager { ctx: Context, mediaPath: string, type: MediaType, - caption?: string, + caption?: string ): Promise<void> { try { const isUrl = /^(http|https):\/\//.test(mediaPath); @@ -965,11 +960,11 @@ export class MessageManager { [MediaType.PHOTO]: ctx.telegram.sendPhoto.bind(ctx.telegram), [MediaType.VIDEO]: ctx.telegram.sendVideo.bind(ctx.telegram), [MediaType.DOCUMENT]: ctx.telegram.sendDocument.bind( - ctx.telegram, + ctx.telegram ), [MediaType.AUDIO]: ctx.telegram.sendAudio.bind(ctx.telegram), [MediaType.ANIMATION]: ctx.telegram.sendAnimation.bind( - ctx.telegram, + ctx.telegram ), }; @@ -994,7 +989,7 @@ export class MessageManager { await sendFunction( ctx.chat.id, { source: fileStream }, - { caption }, + { caption } ); } finally { fileStream.destroy(); @@ -1004,11 +999,11 @@ export class MessageManager { elizaLogger.info( `${ type.charAt(0).toUpperCase() + type.slice(1) - } sent successfully: ${mediaPath}`, + } sent successfully: ${mediaPath}` ); } catch (error) { elizaLogger.error( - `Failed to send ${type}. Path: ${mediaPath}. Error: ${error.message}`, + `Failed to send ${type}. Path: ${mediaPath}. Error: ${error.message}` ); elizaLogger.debug(error.stack); throw error; @@ -1038,7 +1033,7 @@ export class MessageManager { private async _generateResponse( message: Memory, _state: State, - context: string, + context: string ): Promise<Content> { const { userId, roomId } = message; @@ -1103,8 +1098,8 @@ export class MessageManager { "text" in message ? message.text : "caption" in message - ? message.caption - : ""; + ? message.caption + : ""; // Add team handling at the start if ( @@ -1135,7 +1130,7 @@ export class MessageManager { const lastSelfMemories = await this.runtime.messageManager.getMemories({ roomId: stringToUuid( - chatId + "-" + this.runtime.agentId, + chatId + "-" + this.runtime.agentId ), unique: false, count: 5, @@ -1148,7 +1143,7 @@ export class MessageManager { const isRelevant = this._isRelevantToTeamMember( messageText, chatId, - lastSelfSortedMemories?.[0], + lastSelfSortedMemories?.[0] ); if (!isRelevant) { @@ -1181,7 +1176,7 @@ export class MessageManager { // Check for other team member mentions using cached usernames const otherTeamMembers = this.runtime.character.clientConfig.telegram.teamAgentIds.filter( - (id) => id !== this.bot.botInfo?.id.toString(), + (id) => id !== this.bot.botInfo?.id.toString() ); const mentionedTeamMember = otherTeamMembers.find((id) => { @@ -1248,7 +1243,7 @@ export class MessageManager { // Get chat ID const chatId = stringToUuid( - ctx.chat?.id.toString() + "-" + this.runtime.agentId, + ctx.chat?.id.toString() + "-" + this.runtime.agentId ) as UUID; // Get agent ID @@ -1263,12 +1258,12 @@ export class MessageManager { roomId, userName, userName, - "telegram", + "telegram" ); // Get message ID const messageId = stringToUuid( - message.message_id.toString() + "-" + this.runtime.agentId, + message.message_id.toString() + "-" + this.runtime.agentId ) as UUID; // Handle images @@ -1300,7 +1295,7 @@ export class MessageManager { ? stringToUuid( message.reply_to_message.message_id.toString() + "-" + - this.runtime.agentId, + this.runtime.agentId ) : undefined, }; @@ -1331,7 +1326,7 @@ export class MessageManager { const sentMessages = await this.sendMessageInChunks( ctx, content, - message.message_id, + message.message_id ); if (sentMessages) { const memories: Memory[] = []; @@ -1345,7 +1340,7 @@ export class MessageManager { id: stringToUuid( sentMessage.message_id.toString() + "-" + - this.runtime.agentId, + this.runtime.agentId ), agentId, userId: agentId, @@ -1388,7 +1383,7 @@ export class MessageManager { const responseContent = await this._generateResponse( memory, state, - context, + context ); if (!responseContent || !responseContent.text) return; @@ -1408,7 +1403,7 @@ export class MessageManager { memory, responseMessages, state, - callback, + callback ); } diff --git a/packages/core/src/runtime.ts b/packages/core/src/runtime.ts index 4351083f536..c6216fe9e76 100644 --- a/packages/core/src/runtime.ts +++ b/packages/core/src/runtime.ts @@ -1,4 +1,6 @@ +import { existsSync } from "fs"; import { readFile } from "fs/promises"; +import { glob } from "glob"; import { join } from "path"; import { names, uniqueNamesGenerator } from "unique-names-generator"; import { v4 as uuidv4 } from "uuid"; @@ -27,7 +29,11 @@ import { getProviders } from "./providers.ts"; import { RAGKnowledgeManager } from "./ragknowledge.ts"; import settings from "./settings.ts"; import { + type Action, + type Actor, type Character, + type DirectoryItem, + type Evaluator, type Goal, type HandlerCallback, type IAgentRuntime, @@ -37,6 +43,7 @@ import { type IRAGKnowledgeManager, type IVerifiableInferenceAdapter, type KnowledgeItem, + type Memory, // RAGKnowledgeItem, //Media, ModelClass, @@ -47,15 +54,8 @@ import { type ServiceType, type State, type UUID, - type Action, - type Actor, - type Evaluator, - type Memory, - type DirectoryItem, } from "./types.ts"; import { stringToUuid } from "./uuid.ts"; -import { glob } from "glob"; -import { existsSync } from "fs"; /** * Represents the runtime environment for an agent, handling message processing, * action registration, and interaction with external services like OpenAI and Supabase. @@ -371,9 +371,7 @@ export class AgentRuntime implements IAgentRuntime { this.imageModelProvider = this.character.imageModelProvider ?? this.modelProvider; - elizaLogger.info( - `Selected model provider: ${this.modelProvider}` - ); + elizaLogger.info(`Selected model provider: ${this.modelProvider}`); elizaLogger.info( `Selected image model provider: ${this.imageModelProvider}` @@ -470,7 +468,9 @@ export class AgentRuntime implements IAgentRuntime { this.character.knowledge.length > 0 ) { elizaLogger.info( - `[RAG Check] RAG Knowledge enabled: ${this.character.settings.ragKnowledge ? true : false}` + `[RAG Check] RAG Knowledge enabled: ${ + this.character.settings.ragKnowledge ? true : false + }` ); elizaLogger.info( `[RAG Check] Knowledge items:`, @@ -485,18 +485,25 @@ export class AgentRuntime implements IAgentRuntime { if (typeof item === "object") { if (isDirectoryItem(item)) { elizaLogger.debug( - `[RAG Filter] Found directory item: ${JSON.stringify(item)}` + `[RAG Filter] Found directory item: ${JSON.stringify( + item + )}` ); acc[0].push(item); } else if ("path" in item) { elizaLogger.debug( - `[RAG Filter] Found path item: ${JSON.stringify(item)}` + `[RAG Filter] Found path item: ${JSON.stringify( + item + )}` ); acc[1].push(item); } } else if (typeof item === "string") { elizaLogger.debug( - `[RAG Filter] Found string item: ${item.slice(0, 100)}...` + `[RAG Filter] Found string item: ${item.slice( + 0, + 100 + )}...` ); acc[2].push(item); } @@ -505,7 +512,7 @@ export class AgentRuntime implements IAgentRuntime { [[], [], []] as [ Array<{ directory: string; shared?: boolean }>, Array<{ path: string; shared?: boolean }>, - Array<string>, + Array<string> ] ); @@ -520,7 +527,9 @@ export class AgentRuntime implements IAgentRuntime { ); for (const dir of directoryKnowledge) { elizaLogger.info( - ` - Directory: ${dir.directory} (shared: ${!!dir.shared})` + ` - Directory: ${ + dir.directory + } (shared: ${!!dir.shared})` ); await this.processCharacterRAGDirectory(dir); } @@ -589,8 +598,9 @@ export class AgentRuntime implements IAgentRuntime { private async processCharacterKnowledge(items: string[]) { for (const item of items) { const knowledgeId = stringToUuid(item); - const existingDocument = - await this.documentsManager.getMemoryById(knowledgeId); + const existingDocument = await this.documentsManager.getMemoryById( + knowledgeId + ); if (existingDocument) { continue; } @@ -822,7 +832,9 @@ export class AgentRuntime implements IAgentRuntime { const relativePath = join(sanitizedDir, file); elizaLogger.debug( - `[RAG Directory] Processing file ${i + 1}/${files.length}:`, + `[RAG Directory] Processing file ${i + 1}/${ + files.length + }:`, { file, relativePath, @@ -852,7 +864,10 @@ export class AgentRuntime implements IAgentRuntime { ); elizaLogger.debug( - `[RAG Directory] Completed batch ${Math.min(i + BATCH_SIZE, files.length)}/${files.length} files` + `[RAG Directory] Completed batch ${Math.min( + i + BATCH_SIZE, + files.length + )}/${files.length} files` ); } @@ -1121,8 +1136,9 @@ export class AgentRuntime implements IAgentRuntime { } async ensureParticipantInRoom(userId: UUID, roomId: UUID) { - const participants = - await this.databaseAdapter.getParticipantsForRoom(roomId); + const participants = await this.databaseAdapter.getParticipantsForRoom( + roomId + ); if (!participants.includes(userId)) { await this.databaseAdapter.addParticipant(userId, roomId); if (userId === this.agentId) { @@ -1197,7 +1213,7 @@ export class AgentRuntime implements IAgentRuntime { const [actorsData, recentMessagesData, goalsData]: [ Actor[], Memory[], - Goal[], + Goal[] ] = await Promise.all([ getActorDetails({ runtime: this, roomId }), this.messageManager.getMemories({ @@ -1254,20 +1270,17 @@ export class AgentRuntime implements IAgentRuntime { const oneHourBeforeLastMessage = lastMessageTime - 60 * 60 * 1000; // 1 hour before last message - allAttachments = recentMessagesData - .reverse() - .flatMap((msg) => { - const msgTime = msg.createdAt ?? Date.now(); - const isWithinTime = - msgTime >= oneHourBeforeLastMessage; - const attachments = msg.content.attachments || []; - if (!isWithinTime) { - attachments.forEach((attachment) => { - attachment.text = "[Hidden]"; - }); - } - return attachments; - }); + allAttachments = recentMessagesData.reverse().flatMap((msg) => { + const msgTime = msg.createdAt ?? Date.now(); + const isWithinTime = msgTime >= oneHourBeforeLastMessage; + const attachments = msg.content.attachments || []; + if (!isWithinTime) { + attachments.forEach((attachment) => { + attachment.text = "[Hidden]"; + }); + } + return attachments; + }); } } @@ -1375,8 +1388,9 @@ Text: ${attachment.text} return formattedInteractions.join("\n"); }; - const formattedMessageInteractions = - await getRecentMessageInteractions(recentInteractions); + const formattedMessageInteractions = await getRecentMessageInteractions( + recentInteractions + ); const getRecentPostInteractions = async ( recentInteractionsData: Memory[], From a11fd438af917541768a73f25924b99471901bb1 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Thu, 23 Jan 2025 12:19:48 +0700 Subject: [PATCH 32/58] change imageContext --> image descriptions --- packages/client-twitter/src/post.ts | 261 +++++++++++++++------------- 1 file changed, 145 insertions(+), 116 deletions(-) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index f1321cb9b6f..384d468178d 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -115,22 +115,34 @@ export class TwitterPostClient { elizaLogger.log("Twitter Client Configuration:"); elizaLogger.log(`- Username: ${this.twitterUsername}`); elizaLogger.log( - `- Dry Run Mode: ${this.isDryRun ? "enabled" : "disabled"}`, + `- Dry Run Mode: ${this.isDryRun ? "enabled" : "disabled"}` ); elizaLogger.log( - `- Post Interval: ${this.client.twitterConfig.POST_INTERVAL_MIN}-${this.client.twitterConfig.POST_INTERVAL_MAX} minutes`, + `- Post Interval: ${this.client.twitterConfig.POST_INTERVAL_MIN}-${this.client.twitterConfig.POST_INTERVAL_MAX} minutes` ); elizaLogger.log( - `- Action Processing: ${this.client.twitterConfig.ENABLE_ACTION_PROCESSING ? "enabled" : "disabled"}`, + `- Action Processing: ${ + this.client.twitterConfig.ENABLE_ACTION_PROCESSING + ? "enabled" + : "disabled" + }` ); elizaLogger.log( - `- Action Interval: ${this.client.twitterConfig.ACTION_INTERVAL} minutes`, + `- Action Interval: ${this.client.twitterConfig.ACTION_INTERVAL} minutes` ); elizaLogger.log( - `- Post Immediately: ${this.client.twitterConfig.POST_IMMEDIATELY ? "enabled" : "disabled"}`, + `- Post Immediately: ${ + this.client.twitterConfig.POST_IMMEDIATELY + ? "enabled" + : "disabled" + }` ); elizaLogger.log( - `- Search Enabled: ${this.client.twitterConfig.TWITTER_SEARCH_ENABLE ? "enabled" : "disabled"}`, + `- Search Enabled: ${ + this.client.twitterConfig.TWITTER_SEARCH_ENABLE + ? "enabled" + : "disabled" + }` ); const targetUsers = this.client.twitterConfig.TWITTER_TARGET_USERS; @@ -140,7 +152,7 @@ export class TwitterPostClient { if (this.isDryRun) { elizaLogger.log( - "Twitter client initialized in dry run mode - no actual tweets should be posted", + "Twitter client initialized in dry run mode - no actual tweets should be posted" ); } @@ -151,22 +163,22 @@ export class TwitterPostClient { ?.toLocaleLowerCase() === "true"; if (approvalRequired) { const discordToken = this.runtime.getSetting( - "TWITTER_APPROVAL_DISCORD_BOT_TOKEN", + "TWITTER_APPROVAL_DISCORD_BOT_TOKEN" ); const approvalChannelId = this.runtime.getSetting( - "TWITTER_APPROVAL_DISCORD_CHANNEL_ID", + "TWITTER_APPROVAL_DISCORD_CHANNEL_ID" ); const APPROVAL_CHECK_INTERVAL = Number.parseInt( - this.runtime.getSetting("TWITTER_APPROVAL_CHECK_INTERVAL"), + this.runtime.getSetting("TWITTER_APPROVAL_CHECK_INTERVAL") ) || 5 * 60 * 1000; // 5 minutes this.approvalCheckInterval = APPROVAL_CHECK_INTERVAL; if (!discordToken || !approvalChannelId) { throw new Error( - "TWITTER_APPROVAL_DISCORD_BOT_TOKEN and TWITTER_APPROVAL_DISCORD_CHANNEL_ID are required for approval workflow", + "TWITTER_APPROVAL_DISCORD_BOT_TOKEN and TWITTER_APPROVAL_DISCORD_CHANNEL_ID are required for approval workflow" ); } @@ -192,7 +204,7 @@ export class TwitterPostClient { Events.ClientReady, (readyClient) => { elizaLogger.log( - `Discord bot is ready as ${readyClient.user.tag}!`, + `Discord bot is ready as ${readyClient.user.tag}!` ); // Generate invite link with required permissions @@ -203,13 +215,13 @@ export class TwitterPostClient { // - Read Message History elizaLogger.log( - `Use this link to properly invite the Twitter Post Approval Discord bot: ${invite}`, + `Use this link to properly invite the Twitter Post Approval Discord bot: ${invite}` ); - }, + } ); // Login to Discord this.discordClientForApproval.login( - this.runtime.getSetting("TWITTER_APPROVAL_DISCORD_BOT_TOKEN"), + this.runtime.getSetting("TWITTER_APPROVAL_DISCORD_BOT_TOKEN") ); } @@ -254,18 +266,18 @@ export class TwitterPostClient { if (results) { elizaLogger.log(`Processed ${results.length} tweets`); elizaLogger.log( - `Next action processing scheduled in ${actionInterval} minutes`, + `Next action processing scheduled in ${actionInterval} minutes` ); // Wait for the full interval before next processing await new Promise( (resolve) => - setTimeout(resolve, actionInterval * 60 * 1000), // now in minutes + setTimeout(resolve, actionInterval * 60 * 1000) // now in minutes ); } } catch (error) { elizaLogger.error( "Error in action processing loop:", - error, + error ); // Add exponential backoff on error await new Promise((resolve) => setTimeout(resolve, 30000)); // Wait 30s on error @@ -285,7 +297,7 @@ export class TwitterPostClient { processActionsLoop().catch((error) => { elizaLogger.error( "Fatal error in process actions loop:", - error, + error ); }); } @@ -303,7 +315,7 @@ export class TwitterPostClient { createTweetObject( tweetResult: any, client: any, - twitterUsername: string, + twitterUsername: string ): Tweet { return { id: tweetResult.rest_id, @@ -330,7 +342,7 @@ export class TwitterPostClient { client: ClientBase, tweet: Tweet, roomId: UUID, - newTweetContent: string, + newTweetContent: string ) { // Cache the last post details await runtime.cacheManager.set( @@ -338,7 +350,7 @@ export class TwitterPostClient { { id: tweet.id, timestamp: Date.now(), - }, + } ); // Cache the tweet @@ -370,24 +382,24 @@ export class TwitterPostClient { async handleNoteTweet( client: ClientBase, content: string, - tweetId?: string, + tweetId?: string ) { try { const noteTweetResult = await client.requestQueue.add( async () => - await client.twitterClient.sendNoteTweet(content, tweetId), + await client.twitterClient.sendNoteTweet(content, tweetId) ); if (noteTweetResult.errors && noteTweetResult.errors.length > 0) { // Note Tweet failed due to authorization. Falling back to standard Tweet. const truncateContent = truncateToCompleteSentence( content, - this.client.twitterConfig.MAX_TWEET_LENGTH, + this.client.twitterConfig.MAX_TWEET_LENGTH ); return await this.sendStandardTweet( client, truncateContent, - tweetId, + tweetId ); } else { return noteTweetResult.data.notetweet_create.tweet_results @@ -401,12 +413,12 @@ export class TwitterPostClient { async sendStandardTweet( client: ClientBase, content: string, - tweetId?: string, + tweetId?: string ) { try { const standardTweetResult = await client.requestQueue.add( async () => - await client.twitterClient.sendTweet(content, tweetId), + await client.twitterClient.sendTweet(content, tweetId) ); const body = await standardTweetResult.json(); if (!body?.data?.create_tweet?.tweet_results?.result) { @@ -426,7 +438,7 @@ export class TwitterPostClient { cleanedContent: string, roomId: UUID, newTweetContent: string, - twitterUsername: string, + twitterUsername: string ) { try { elizaLogger.log(`Posting new tweet:\n`); @@ -442,7 +454,7 @@ export class TwitterPostClient { const tweet = this.createTweetObject( result, client, - twitterUsername, + twitterUsername ); await this.processAndCacheTweet( @@ -450,7 +462,7 @@ export class TwitterPostClient { client, tweet, roomId, - newTweetContent, + newTweetContent ); } catch (error) { elizaLogger.error("Error sending tweet:", error); @@ -465,13 +477,13 @@ export class TwitterPostClient { try { const roomId = stringToUuid( - "twitter_generate_room-" + this.client.profile.username, + "twitter_generate_room-" + this.client.profile.username ); await this.runtime.ensureUserExists( this.runtime.agentId, this.client.profile.username, this.runtime.character.name, - "twitter", + "twitter" ); const topics = this.runtime.character.topics.join(", "); @@ -488,7 +500,7 @@ export class TwitterPostClient { }, { twitterUserName: this.client.profile.username, - }, + } ); const context = composeContext({ @@ -534,7 +546,7 @@ export class TwitterPostClient { { rawResponse: newTweetContent, attempted: "JSON parsing", - }, + } ); return; } @@ -544,7 +556,7 @@ export class TwitterPostClient { if (maxTweetLength) { cleanedContent = truncateToCompleteSentence( cleanedContent, - maxTweetLength, + maxTweetLength ); } @@ -558,7 +570,7 @@ export class TwitterPostClient { if (this.isDryRun) { elizaLogger.info( - `Dry run: would have posted tweet: ${cleanedContent}`, + `Dry run: would have posted tweet: ${cleanedContent}` ); return; } @@ -567,12 +579,12 @@ export class TwitterPostClient { if (this.approvalRequired) { // Send for approval instead of posting directly elizaLogger.log( - `Sending Tweet For Approval:\n ${cleanedContent}`, + `Sending Tweet For Approval:\n ${cleanedContent}` ); await this.sendForApproval( cleanedContent, roomId, - newTweetContent, + newTweetContent ); elizaLogger.log("Tweet sent for approval"); } else { @@ -583,7 +595,7 @@ export class TwitterPostClient { cleanedContent, roomId, newTweetContent, - this.twitterUsername, + this.twitterUsername ); } } catch (error) { @@ -599,7 +611,7 @@ export class TwitterPostClient { options?: { template?: TemplateType; context?: string; - }, + } ): Promise<string> { const context = composeContext({ state: tweetState, @@ -700,11 +712,11 @@ export class TwitterPostClient { this.runtime.agentId, this.twitterUsername, this.runtime.character.name, - "twitter", + "twitter" ); const timelines = await this.client.fetchTimelineForActions( - MAX_TIMELINES_TO_FETCH, + MAX_TIMELINES_TO_FETCH ); const maxActionsProcessing = this.client.twitterConfig.MAX_ACTIONS_PROCESSING; @@ -715,17 +727,17 @@ export class TwitterPostClient { // Skip if we've already processed this tweet const memory = await this.runtime.messageManager.getMemoryById( - stringToUuid(tweet.id + "-" + this.runtime.agentId), + stringToUuid(tweet.id + "-" + this.runtime.agentId) ); if (memory) { elizaLogger.log( - `Already processed tweet ID: ${tweet.id}`, + `Already processed tweet ID: ${tweet.id}` ); continue; } const roomId = stringToUuid( - tweet.conversationId + "-" + this.runtime.agentId, + tweet.conversationId + "-" + this.runtime.agentId ); const tweetState = await this.runtime.composeState( @@ -738,7 +750,7 @@ export class TwitterPostClient { { twitterUserName: this.twitterUsername, currentTweet: `ID: ${tweet.id}\nFrom: ${tweet.name} (@${tweet.username})\nText: ${tweet.text}`, - }, + } ); const actionContext = composeContext({ @@ -757,7 +769,7 @@ export class TwitterPostClient { if (!actionResponse) { elizaLogger.log( - `No valid actions generated for tweet ${tweet.id}`, + `No valid actions generated for tweet ${tweet.id}` ); continue; } @@ -771,7 +783,7 @@ export class TwitterPostClient { } catch (error) { elizaLogger.error( `Error processing tweet ${tweet.id}:`, - error, + error ); continue; } @@ -803,7 +815,7 @@ export class TwitterPostClient { // Sort the timeline based on the action decision score, // then slice the results according to the environment variable to limit the number of actions per cycle. const sortedTimelines = sortProcessedTimeline( - processedTimelines, + processedTimelines ).slice(0, maxActionsProcessing); return this.processTimelineActions(sortedTimelines); // Return results array to indicate completion @@ -829,7 +841,7 @@ export class TwitterPostClient { actionResponse: ActionResponse; tweetState: State; roomId: UUID; - }[], + }[] ): Promise< { tweetId: string; @@ -846,7 +858,7 @@ export class TwitterPostClient { if (actionResponse.like) { if (this.isDryRun) { elizaLogger.info( - `Dry run: would have liked tweet ${tweet.id}`, + `Dry run: would have liked tweet ${tweet.id}` ); executedActions.push("like (dry run)"); } else { @@ -857,7 +869,7 @@ export class TwitterPostClient { } catch (error) { elizaLogger.error( `Error liking tweet ${tweet.id}:`, - error, + error ); } } @@ -866,7 +878,7 @@ export class TwitterPostClient { if (actionResponse.retweet) { if (this.isDryRun) { elizaLogger.info( - `Dry run: would have retweeted tweet ${tweet.id}`, + `Dry run: would have retweeted tweet ${tweet.id}` ); executedActions.push("retweet (dry run)"); } else { @@ -877,7 +889,7 @@ export class TwitterPostClient { } catch (error) { elizaLogger.error( `Error retweeting tweet ${tweet.id}:`, - error, + error ); } } @@ -888,12 +900,14 @@ export class TwitterPostClient { // Build conversation thread for context const thread = await buildConversationThread( tweet, - this.client, + this.client ); const formattedConversation = thread .map( (t) => - `@${t.username} (${new Date(t.timestamp * 1000).toLocaleString()}): ${t.text}`, + `@${t.username} (${new Date( + t.timestamp * 1000 + ).toLocaleString()}): ${t.text}` ) .join("\n\n"); @@ -901,14 +915,19 @@ export class TwitterPostClient { const imageDescriptions = []; if (tweet.photos?.length > 0) { elizaLogger.log( - "Processing images in tweet for context", + "Processing images in tweet for context" ); for (const photo of tweet.photos) { const description = await this.runtime .getService<IImageDescriptionService>( - ServiceType.IMAGE_DESCRIPTION, + ServiceType.IMAGE_DESCRIPTION ) .describeImage(photo.url); + console.log("TRY TO DESCRIBE IMAGE", { + url: photo.url, + tweetId: tweet.id, + description: description, + }); imageDescriptions.push(description); } } @@ -919,7 +938,7 @@ export class TwitterPostClient { try { const quotedTweet = await this.client.twitterClient.getTweet( - tweet.quotedStatusId, + tweet.quotedStatusId ); if (quotedTweet) { quotedContent = `\nQuoted Tweet from @${quotedTweet.username}:\n${quotedTweet.text}`; @@ -927,7 +946,7 @@ export class TwitterPostClient { } catch (error) { elizaLogger.error( "Error fetching quoted tweet:", - error, + error ); } } @@ -939,7 +958,7 @@ export class TwitterPostClient { roomId: stringToUuid( tweet.conversationId + "-" + - this.runtime.agentId, + this.runtime.agentId ), agentId: this.runtime.agentId, content: { @@ -953,10 +972,15 @@ export class TwitterPostClient { formattedConversation, imageContext: imageDescriptions.length > 0 - ? `\nImages in Tweet:\n${imageDescriptions.map((desc, i) => `Image ${i + 1}: ${desc}`).join("\n")}` + ? `\nImages in Tweet:\n${imageDescriptions + .map( + (desc, i) => + `Image ${i + 1}: ${desc}` + ) + .join("\n")}` : "", quotedContent, - }, + } ); const quoteContent = await this.generateTweetContent( @@ -966,24 +990,24 @@ export class TwitterPostClient { this.runtime.character.templates ?.twitterMessageHandlerTemplate || twitterMessageHandlerTemplate, - }, + } ); if (!quoteContent) { elizaLogger.error( - "Failed to generate valid quote tweet content", + "Failed to generate valid quote tweet content" ); return; } elizaLogger.log( "Generated quote tweet content:", - quoteContent, + quoteContent ); // Check for dry run mode if (this.isDryRun) { elizaLogger.info( - `Dry run: A quote tweet for tweet ID ${tweet.id} would have been posted with the following content: "${quoteContent}".`, + `Dry run: A quote tweet for tweet ID ${tweet.id} would have been posted with the following content: "${quoteContent}".` ); executedActions.push("quote (dry run)"); } else { @@ -992,8 +1016,8 @@ export class TwitterPostClient { async () => await this.client.twitterClient.sendQuoteTweet( quoteContent, - tweet.id, - ), + tweet.id + ) ); const body = await result.json(); @@ -1002,26 +1026,26 @@ export class TwitterPostClient { body?.data?.create_tweet?.tweet_results?.result ) { elizaLogger.log( - "Successfully posted quote tweet", + "Successfully posted quote tweet" ); executedActions.push("quote"); // Cache generation context for debugging await this.runtime.cacheManager.set( `twitter/quote_generation_${tweet.id}.txt`, - `Context:\n${enrichedState}\n\nGenerated Quote:\n${quoteContent}`, + `Context:\n${enrichedState}\n\nGenerated Quote:\n${quoteContent}` ); } else { elizaLogger.error( "Quote tweet creation failed:", - body, + body ); } } } catch (error) { elizaLogger.error( "Error in quote tweet generation:", - error, + error ); } } @@ -1031,12 +1055,12 @@ export class TwitterPostClient { await this.handleTextOnlyReply( tweet, tweetState, - executedActions, + executedActions ); } catch (error) { elizaLogger.error( `Error replying to tweet ${tweet.id}:`, - error, + error ); } } @@ -1047,11 +1071,11 @@ export class TwitterPostClient { stringToUuid(tweet.userId), tweet.username, tweet.name, - "twitter", + "twitter" ); await this.runtime.ensureParticipantInRoom( this.runtime.agentId, - roomId, + roomId ); if (!this.isDryRun) { @@ -1093,7 +1117,7 @@ export class TwitterPostClient { private async handleTextOnlyReply( tweet: Tweet, tweetState: any, - executedActions: string[], + executedActions: string[] ) { try { // Build conversation thread for context @@ -1101,7 +1125,9 @@ export class TwitterPostClient { const formattedConversation = thread .map( (t) => - `@${t.username} (${new Date(t.timestamp * 1000).toLocaleString()}): ${t.text}`, + `@${t.username} (${new Date( + t.timestamp * 1000 + ).toLocaleString()}): ${t.text}` ) .join("\n\n"); @@ -1112,7 +1138,7 @@ export class TwitterPostClient { for (const photo of tweet.photos) { const description = await this.runtime .getService<IImageDescriptionService>( - ServiceType.IMAGE_DESCRIPTION, + ServiceType.IMAGE_DESCRIPTION ) .describeImage(photo.url); imageDescriptions.push(description); @@ -1125,7 +1151,7 @@ export class TwitterPostClient { try { const quotedTweet = await this.client.twitterClient.getTweet( - tweet.quotedStatusId, + tweet.quotedStatusId ); if (quotedTweet) { quotedContent = `\nQuoted Tweet from @${quotedTweet.username}:\n${quotedTweet.text}`; @@ -1140,7 +1166,7 @@ export class TwitterPostClient { { userId: this.runtime.agentId, roomId: stringToUuid( - tweet.conversationId + "-" + this.runtime.agentId, + tweet.conversationId + "-" + this.runtime.agentId ), agentId: this.runtime.agentId, content: { text: tweet.text, action: "" }, @@ -1149,12 +1175,15 @@ export class TwitterPostClient { twitterUserName: this.twitterUsername, currentPost: `From @${tweet.username}: ${tweet.text}`, formattedConversation, - imageContext: + //imageContext: + imageDescriptions: imageDescriptions.length > 0 - ? `\nImages in Tweet:\n${imageDescriptions.map((desc, i) => `Image ${i + 1}: ${desc}`).join("\n")}` + ? `\nImages in Tweet:\n${imageDescriptions + .map((desc, i) => `Image ${i + 1}: ${desc}`) + .join("\n")}` : "", quotedContent, - }, + } ); // Generate and clean the reply content @@ -1172,7 +1201,7 @@ export class TwitterPostClient { if (this.isDryRun) { elizaLogger.info( - `Dry run: reply to tweet ${tweet.id} would have been: ${replyText}`, + `Dry run: reply to tweet ${tweet.id} would have been: ${replyText}` ); executedActions.push("reply (dry run)"); return; @@ -1205,13 +1234,13 @@ export class TwitterPostClient { result = await this.handleNoteTweet( this.client, finalReplyText, - tweet.id, + tweet.id ); } else { result = await this.sendStandardTweet( this.client, finalReplyText, - tweet.id, + tweet.id ); } @@ -1240,7 +1269,7 @@ export class TwitterPostClient { // ); await this.runtime.cacheManager.set( `twitter/reply_generation_${tweet.id}.txt`, - `Context:\n${enrichedState}\n\nGenerated Reply:\n${finalReplyText}`, + `Context:\n${enrichedState}\n\nGenerated Reply:\n${finalReplyText}` ); } else { elizaLogger.error("Tweet reply creation failed"); @@ -1257,7 +1286,7 @@ export class TwitterPostClient { private async sendForApproval( cleanedContent: string, roomId: UUID, - newTweetContent: string, + newTweetContent: string ): Promise<string | null> { try { const embed = { @@ -1282,7 +1311,7 @@ export class TwitterPostClient { }; const channel = await this.discordClientForApproval.channels.fetch( - this.discordApprovalChannelId, + this.discordApprovalChannelId ); if (!channel || !(channel instanceof TextChannel)) { @@ -1295,7 +1324,7 @@ export class TwitterPostClient { const pendingTweetsKey = `twitter/${this.client.profile.username}/pendingTweet`; const currentPendingTweets = (await this.runtime.cacheManager.get<PendingTweet[]>( - pendingTweetsKey, + pendingTweetsKey )) || []; // Add new pending tweet currentPendingTweets.push({ @@ -1310,26 +1339,26 @@ export class TwitterPostClient { // Store updated array await this.runtime.cacheManager.set( pendingTweetsKey, - currentPendingTweets, + currentPendingTweets ); return message.id; } catch (error) { elizaLogger.error( "Error Sending Twitter Post Approval Request:", - error, + error ); return null; } } private async checkApprovalStatus( - discordMessageId: string, + discordMessageId: string ): Promise<PendingTweetApprovalStatus> { try { // Fetch message and its replies from Discord const channel = await this.discordClientForApproval.channels.fetch( - this.discordApprovalChannelId, + this.discordApprovalChannelId ); elizaLogger.log(`channel ${JSON.stringify(channel)}`); @@ -1344,12 +1373,12 @@ export class TwitterPostClient { // Look for thumbs up reaction ('👍') const thumbsUpReaction = message.reactions.cache.find( - (reaction) => reaction.emoji.name === "👍", + (reaction) => reaction.emoji.name === "👍" ); // Look for reject reaction ('❌') const rejectReaction = message.reactions.cache.find( - (reaction) => reaction.emoji.name === "❌", + (reaction) => reaction.emoji.name === "❌" ); // Check if the reaction exists and has reactions @@ -1381,12 +1410,12 @@ export class TwitterPostClient { const pendingTweetsKey = `twitter/${this.client.profile.username}/pendingTweet`; const currentPendingTweets = (await this.runtime.cacheManager.get<PendingTweet[]>( - pendingTweetsKey, + pendingTweetsKey )) || []; // Remove the specific tweet const updatedPendingTweets = currentPendingTweets.filter( - (tweet) => tweet.discordMessageId !== discordMessageId, + (tweet) => tweet.discordMessageId !== discordMessageId ); if (updatedPendingTweets.length === 0) { @@ -1394,7 +1423,7 @@ export class TwitterPostClient { } else { await this.runtime.cacheManager.set( pendingTweetsKey, - updatedPendingTweets, + updatedPendingTweets ); } } @@ -1404,7 +1433,7 @@ export class TwitterPostClient { const pendingTweetsKey = `twitter/${this.client.profile.username}/pendingTweet`; const pendingTweets = (await this.runtime.cacheManager.get<PendingTweet[]>( - pendingTweetsKey, + pendingTweetsKey )) || []; for (const pendingTweet of pendingTweets) { @@ -1419,20 +1448,20 @@ export class TwitterPostClient { try { const channel = await this.discordClientForApproval.channels.fetch( - pendingTweet.channelId, + pendingTweet.channelId ); if (channel instanceof TextChannel) { const originalMessage = await channel.messages.fetch( - pendingTweet.discordMessageId, + pendingTweet.discordMessageId ); await originalMessage.reply( - "This tweet approval request has expired (24h timeout).", + "This tweet approval request has expired (24h timeout)." ); } } catch (error) { elizaLogger.error( "Error sending expiration notification:", - error, + error ); } @@ -1453,27 +1482,27 @@ export class TwitterPostClient { pendingTweet.cleanedContent, pendingTweet.roomId, pendingTweet.newTweetContent, - this.twitterUsername, + this.twitterUsername ); // Notify on Discord about posting try { const channel = await this.discordClientForApproval.channels.fetch( - pendingTweet.channelId, + pendingTweet.channelId ); if (channel instanceof TextChannel) { const originalMessage = await channel.messages.fetch( - pendingTweet.discordMessageId, + pendingTweet.discordMessageId ); await originalMessage.reply( - "Tweet has been posted successfully! ✅", + "Tweet has been posted successfully! ✅" ); } } catch (error) { elizaLogger.error( "Error sending post notification:", - error, + error ); } @@ -1485,20 +1514,20 @@ export class TwitterPostClient { try { const channel = await this.discordClientForApproval.channels.fetch( - pendingTweet.channelId, + pendingTweet.channelId ); if (channel instanceof TextChannel) { const originalMessage = await channel.messages.fetch( - pendingTweet.discordMessageId, + pendingTweet.discordMessageId ); await originalMessage.reply( - "Tweet has been rejected! ❌", + "Tweet has been rejected! ❌" ); } } catch (error) { elizaLogger.error( "Error sending rejection notification:", - error, + error ); } } From ed50006f52caed03b30bfd76f1b7cd6c32845a7a Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Thu, 23 Jan 2025 12:30:40 +0700 Subject: [PATCH 33/58] ketinggalan --- packages/client-twitter/src/post.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index 384d468178d..e132076110d 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -970,7 +970,8 @@ export class TwitterPostClient { twitterUserName: this.twitterUsername, currentPost: `From @${tweet.username}: ${tweet.text}`, formattedConversation, - imageContext: + //imageContext: + imageDescriptions: imageDescriptions.length > 0 ? `\nImages in Tweet:\n${imageDescriptions .map( From cfc997ce5edcae8fdcf365b237b49909241840b3 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Thu, 23 Jan 2025 12:43:31 +0700 Subject: [PATCH 34/58] timelines fetch to action --- packages/client-twitter/src/post.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index e132076110d..48b3f28566f 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -716,7 +716,8 @@ export class TwitterPostClient { ); const timelines = await this.client.fetchTimelineForActions( - MAX_TIMELINES_TO_FETCH + //MAX_TIMELINES_TO_FETCH + this.client.twitterConfig.MAX_ACTIONS_PROCESSING // fetch only the maximum number of tweets to process ); const maxActionsProcessing = this.client.twitterConfig.MAX_ACTIONS_PROCESSING; From 150e36ccc78b531c5dec49ab19c9a4343fc938fe Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Thu, 23 Jan 2025 12:47:52 +0700 Subject: [PATCH 35/58] fix bug --- packages/plugin-crypto-news/src/providers/cryptoNewsData.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts index e2856edce35..4c30b8b3c67 100644 --- a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts +++ b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts @@ -125,7 +125,7 @@ export const cryptoNewsData: Provider = { // Timestamp <--- the time of the news\n\n // `; - chainCatcher.data.list.forEach((article) => { + articles.forEach((article) => { output += `- ${article.title}\n${article.description}\nTime: ${article.releaseTime}\n\n`; }); From 2912c8e5a9bb8a3ff0adc8913f5d6c36b1d716d3 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Thu, 23 Jan 2025 13:26:24 +0700 Subject: [PATCH 36/58] ok --- packages/client-twitter/src/post.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index 48b3f28566f..7db2e2c1253 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -716,8 +716,8 @@ export class TwitterPostClient { ); const timelines = await this.client.fetchTimelineForActions( - //MAX_TIMELINES_TO_FETCH - this.client.twitterConfig.MAX_ACTIONS_PROCESSING // fetch only the maximum number of tweets to process + MAX_TIMELINES_TO_FETCH + //this.client.twitterConfig.MAX_ACTIONS_PROCESSING // fetch only the maximum number of tweets to process ); const maxActionsProcessing = this.client.twitterConfig.MAX_ACTIONS_PROCESSING; From 39469b2264c1725d7e215ea6fad4ac75c63b20ff Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Thu, 23 Jan 2025 23:06:04 +0700 Subject: [PATCH 37/58] mistral sdk version to 1.1.0 --- packages/core/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/package.json b/packages/core/package.json index e62688451eb..cd5c8f19d1f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -66,7 +66,7 @@ "@ai-sdk/google": "0.0.55", "@ai-sdk/google-vertex": "0.0.43", "@ai-sdk/groq": "0.0.3", - "@ai-sdk/mistral": "^1.0.8", + "@ai-sdk/mistral": "1.1.0", "@ai-sdk/openai": "1.0.5", "@anthropic-ai/sdk": "0.30.1", "@fal-ai/client": "1.2.0", From 472573dd0aa32fcd78729c77d3c10403796634a1 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 24 Jan 2025 20:29:27 +0700 Subject: [PATCH 38/58] uhuy --- .../client-telegram/src/messageManager.ts | 2 +- packages/client-twitter/src/interactions.ts | 97 +++++++++++-------- 2 files changed, 57 insertions(+), 42 deletions(-) diff --git a/packages/client-telegram/src/messageManager.ts b/packages/client-telegram/src/messageManager.ts index 7e9fb9d5868..5f27f06ac96 100644 --- a/packages/client-telegram/src/messageManager.ts +++ b/packages/client-telegram/src/messageManager.ts @@ -1040,7 +1040,7 @@ export class MessageManager { const response = await generateMessageResponse({ runtime: this.runtime, context, - modelClass: ModelClass.LARGE, + modelClass: ModelClass.SMALL, // changed from large }); if (!response) { diff --git a/packages/client-twitter/src/interactions.ts b/packages/client-twitter/src/interactions.ts index 1339c0b4747..33c8729a881 100644 --- a/packages/client-twitter/src/interactions.ts +++ b/packages/client-twitter/src/interactions.ts @@ -109,7 +109,7 @@ export class TwitterInteractionClient { setTimeout( handleTwitterInteractionsLoop, // Defaults to 2 minutes - this.client.twitterConfig.TWITTER_POLL_INTERVAL * 1000, + this.client.twitterConfig.TWITTER_POLL_INTERVAL * 1000 ); }; handleTwitterInteractionsLoop(); @@ -125,13 +125,13 @@ export class TwitterInteractionClient { await this.client.fetchSearchTweets( `@${twitterUsername}`, 20, - SearchMode.Latest, + SearchMode.Latest ) ).tweets; elizaLogger.log( "Completed checking mentioned tweets:", - mentionCandidates.length, + mentionCandidates.length ); let uniqueTweetCandidates = [...mentionCandidates]; // Only process target users if configured @@ -152,7 +152,7 @@ export class TwitterInteractionClient { await this.client.twitterClient.fetchSearchTweets( `from:${username}`, 3, - SearchMode.Latest, + SearchMode.Latest ) ).tweets; @@ -184,13 +184,13 @@ export class TwitterInteractionClient { if (validTweets.length > 0) { tweetsByUser.set(username, validTweets); elizaLogger.log( - `Found ${validTweets.length} valid tweets from ${username}`, + `Found ${validTweets.length} valid tweets from ${username}` ); } } catch (error) { elizaLogger.error( `Error fetching tweets for ${username}:`, - error, + error ); continue; } @@ -207,7 +207,10 @@ export class TwitterInteractionClient { ]; selectedTweets.push(randomTweet); elizaLogger.log( - `Selected tweet from ${username}: ${randomTweet.text?.substring(0, 100)}`, + `Selected tweet from ${username}: ${randomTweet.text?.substring( + 0, + 100 + )}` ); } } @@ -220,7 +223,7 @@ export class TwitterInteractionClient { } } else { elizaLogger.log( - "No target users configured, processing only mentions", + "No target users configured, processing only mentions" ); } @@ -237,25 +240,25 @@ export class TwitterInteractionClient { ) { // Generate the tweetId UUID the same way it's done in handleTweet const tweetId = stringToUuid( - tweet.id + "-" + this.runtime.agentId, + tweet.id + "-" + this.runtime.agentId ); // Check if we've already processed this tweet const existingResponse = await this.runtime.messageManager.getMemoryById( - tweetId, + tweetId ); if (existingResponse) { elizaLogger.log( - `Already responded to tweet ${tweet.id}, skipping`, + `Already responded to tweet ${tweet.id}, skipping` ); continue; } elizaLogger.log("New Tweet found", tweet.permanentUrl); const roomId = stringToUuid( - tweet.conversationId + "-" + this.runtime.agentId, + tweet.conversationId + "-" + this.runtime.agentId ); const userIdUUID = @@ -268,12 +271,12 @@ export class TwitterInteractionClient { roomId, tweet.username, tweet.name, - "twitter", + "twitter" ); const thread = await buildConversationThread( tweet, - this.client, + this.client ); const message = { @@ -316,7 +319,7 @@ export class TwitterInteractionClient { if ( tweet.userId === this.client.profile.id && !this.client.twitterConfig.TWITTER_TARGET_USERS.includes( - tweet.username, + tweet.username ) ) { return; @@ -338,14 +341,14 @@ export class TwitterInteractionClient { const formattedConversation = thread .map( (tweet) => `@${tweet.username} (${new Date( - tweet.timestamp * 1000, + tweet.timestamp * 1000 ).toLocaleString("en-US", { hour: "2-digit", minute: "2-digit", month: "short", day: "numeric", })}): - ${tweet.text}`, + ${tweet.text}` ) .join("\n\n"); @@ -354,9 +357,14 @@ export class TwitterInteractionClient { for (const photo of tweet.photos) { const description = await this.runtime .getService<IImageDescriptionService>( - ServiceType.IMAGE_DESCRIPTION, + ServiceType.IMAGE_DESCRIPTION ) .describeImage(photo.url); + console.log("TRY TO DESCRIBE IMAGE", { + url: photo.url, + tweetId: tweet.id, + description: description, + }); imageDescriptionsArray.push(description); } } catch (error) { @@ -374,7 +382,9 @@ export class TwitterInteractionClient { ? `\nImages in Tweet:\n${imageDescriptionsArray .map( (desc, i) => - `Image ${i + 1}: Title: ${desc.title}\nDescription: ${desc.description}`, + `Image ${i + 1}: Title: ${ + desc.title + }\nDescription: ${desc.description}` ) .join("\n\n")}` : "", @@ -382,8 +392,9 @@ export class TwitterInteractionClient { // check if the tweet exists, save if it doesn't const tweetId = stringToUuid(tweet.id + "-" + this.runtime.agentId); - const tweetExists = - await this.runtime.messageManager.getMemoryById(tweetId); + const tweetExists = await this.runtime.messageManager.getMemoryById( + tweetId + ); if (!tweetExists) { elizaLogger.log("tweet does not exist, saving"); @@ -400,7 +411,7 @@ export class TwitterInteractionClient { ? stringToUuid( tweet.inReplyToStatusId + "-" + - this.runtime.agentId, + this.runtime.agentId ) : undefined, }, @@ -454,9 +465,13 @@ export class TwitterInteractionClient { example .map( (msg) => - `${msg.user}: ${msg.content.text}${msg.content.action ? ` [Action: ${msg.content.action}]` : ""}`, + `${msg.user}: ${msg.content.text}${ + msg.content.action + ? ` [Action: ${msg.content.action}]` + : "" + }` ) - .join("\n"), + .join("\n") ) .join("\n\n") : "", @@ -486,19 +501,19 @@ export class TwitterInteractionClient { if (response.text) { if (this.isDryRun) { elizaLogger.info( - `Dry run: Selected Post: ${tweet.id} - ${tweet.username}: ${tweet.text}\nAgent's Output:\n${response.text}`, + `Dry run: Selected Post: ${tweet.id} - ${tweet.username}: ${tweet.text}\nAgent's Output:\n${response.text}` ); } else { try { const callback: HandlerCallback = async ( - response: Content, + response: Content ) => { const memories = await sendTweet( this.client, response, message.roomId, this.client.twitterConfig.TWITTER_USERNAME, - tweet.id, + tweet.id ); return memories; }; @@ -506,7 +521,7 @@ export class TwitterInteractionClient { const responseMessages = await callback(response); state = (await this.runtime.updateRecentMessageState( - state, + state )) as State; for (const responseMessage of responseMessages) { @@ -519,7 +534,7 @@ export class TwitterInteractionClient { responseMessage.content.action = "CONTINUE"; } await this.runtime.messageManager.createMemory( - responseMessage, + responseMessage ); } @@ -527,14 +542,14 @@ export class TwitterInteractionClient { message, responseMessages, state, - callback, + callback ); const responseInfo = `Context:\n\n${context}\n\nSelected Post: ${tweet.id} - ${tweet.username}: ${tweet.text}\nAgent's Output:\n${response.text}`; await this.runtime.cacheManager.set( `twitter/tweet_generation_${tweet.id}.txt`, - responseInfo, + responseInfo ); await wait(); } catch (error) { @@ -546,7 +561,7 @@ export class TwitterInteractionClient { async buildConversationThread( tweet: Tweet, - maxReplies = 10, + maxReplies = 10 ): Promise<Tweet[]> { const thread: Tweet[] = []; const visited: Set<string> = new Set(); @@ -570,11 +585,11 @@ export class TwitterInteractionClient { // Handle memory storage const memory = await this.runtime.messageManager.getMemoryById( - stringToUuid(currentTweet.id + "-" + this.runtime.agentId), + stringToUuid(currentTweet.id + "-" + this.runtime.agentId) ); if (!memory) { const roomId = stringToUuid( - currentTweet.conversationId + "-" + this.runtime.agentId, + currentTweet.conversationId + "-" + this.runtime.agentId ); const userId = stringToUuid(currentTweet.userId); @@ -583,12 +598,12 @@ export class TwitterInteractionClient { roomId, currentTweet.username, currentTweet.name, - "twitter", + "twitter" ); this.runtime.messageManager.createMemory({ id: stringToUuid( - currentTweet.id + "-" + this.runtime.agentId, + currentTweet.id + "-" + this.runtime.agentId ), agentId: this.runtime.agentId, content: { @@ -599,7 +614,7 @@ export class TwitterInteractionClient { ? stringToUuid( currentTweet.inReplyToStatusId + "-" + - this.runtime.agentId, + this.runtime.agentId ) : undefined, }, @@ -624,11 +639,11 @@ export class TwitterInteractionClient { if (currentTweet.inReplyToStatusId) { elizaLogger.log( "Fetching parent tweet:", - currentTweet.inReplyToStatusId, + currentTweet.inReplyToStatusId ); try { const parentTweet = await this.twitterClient.getTweet( - currentTweet.inReplyToStatusId, + currentTweet.inReplyToStatusId ); if (parentTweet) { @@ -640,7 +655,7 @@ export class TwitterInteractionClient { } else { elizaLogger.log( "No parent tweet found for:", - currentTweet.inReplyToStatusId, + currentTweet.inReplyToStatusId ); } } catch (error) { @@ -652,7 +667,7 @@ export class TwitterInteractionClient { } else { elizaLogger.log( "Reached end of reply chain at:", - currentTweet.id, + currentTweet.id ); } } From f094aab9de09d9d3d2f91fde9c3c09b6344796cd Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 24 Jan 2025 21:53:29 +0700 Subject: [PATCH 39/58] update lagi --- packages/client-twitter/src/post.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index 7db2e2c1253..9a29867b270 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -51,7 +51,12 @@ Write a post that is {{adjective}} about {{topic}} (without mentioning {{topic}} Your response must include the summary of the # NEWS above into a sentences and Dont discard or remove any important numbers and informations If the news isnt about SUI or SUIRISE, dont mix the context with SUI Shilling. keep the original and relevant context of the news. Your response should be 1, 2, or 3 sentences (choose the length at random). -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 if there are multiple statements in your response.`; +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 if there are multiple statements in your response. +Replace any entities , person, organization name on your response with its twitter account handler ONLY if you know it, otherwise leave it as it is. +Replace any crypto project name such as Ethereum, Bitcoin, or something else with its ticker starting with $. +If you found any crypto project ticker that doesnt have $ before it you have to add the $ so for example ETH become $ETH. +If there's any twitter handler already on the news you should keep it +`; export const twitterActionTemplate = ` From 2ea33d7b53df7ee8e0ab7aa2e612a1d42fb00ffe Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 24 Jan 2025 22:13:28 +0700 Subject: [PATCH 40/58] update --- packages/client-twitter/src/post.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index 9a29867b270..e2365dd3618 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -52,10 +52,9 @@ Your response must include the summary of the # NEWS above into a sentences and If the news isnt about SUI or SUIRISE, dont mix the context with SUI Shilling. keep the original and relevant context of the news. Your response should be 1, 2, or 3 sentences (choose the length at random). 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 if there are multiple statements in your response. -Replace any entities , person, organization name on your response with its twitter account handler ONLY if you know it, otherwise leave it as it is. -Replace any crypto project name such as Ethereum, Bitcoin, or something else with its ticker starting with $. -If you found any crypto project ticker that doesnt have $ before it you have to add the $ so for example ETH become $ETH. -If there's any twitter handler already on the news you should keep it +Your response should replace any entities , person, organization name on your response with its twitter account handler. Search from the web even if you think you know it and if you still cant find it just leave it as the original text. +Your response should replace any crypto project name such as Ethereum, Bitcoin, or something else with its ticker starting with $. +Your response should replace any crypto project ticker that doesnt have $ before it you have to add the $ so for example ETH become $ETH. `; export const twitterActionTemplate = From 4205e5a4bb18e1d4bf00d07ce8725bf2daeda446 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 24 Jan 2025 22:41:52 +0700 Subject: [PATCH 41/58] ganti lagi --- packages/client-twitter/src/post.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index e2365dd3618..baa30f5a0fe 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -51,10 +51,11 @@ Write a post that is {{adjective}} about {{topic}} (without mentioning {{topic}} Your response must include the summary of the # NEWS above into a sentences and Dont discard or remove any important numbers and informations If the news isnt about SUI or SUIRISE, dont mix the context with SUI Shilling. keep the original and relevant context of the news. Your response should be 1, 2, or 3 sentences (choose the length at random). -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 if there are multiple statements in your response. -Your response should replace any entities , person, organization name on your response with its twitter account handler. Search from the web even if you think you know it and if you still cant find it just leave it as the original text. +Your response should not contain any questions. Brief, concise statements only. The total character count MUST be less than 400. No emojis. Use \n\n (double spaces) between statements if there are multiple statements in your response. +Your response should replace any entities , person, organization name on your response with its twitter account handler. Your response should replace any crypto project name such as Ethereum, Bitcoin, or something else with its ticker starting with $. Your response should replace any crypto project ticker that doesnt have $ before it you have to add the $ so for example ETH become $ETH. +Your response should not include ChainCatcher text on it. `; export const twitterActionTemplate = From 31852c7f82d79d02b83b6937e457dabc4c24140c Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 24 Jan 2025 23:17:04 +0700 Subject: [PATCH 42/58] revert modelclass medium for handletweet --- packages/client-twitter/src/interactions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client-twitter/src/interactions.ts b/packages/client-twitter/src/interactions.ts index 33c8729a881..fdfd6618bde 100644 --- a/packages/client-twitter/src/interactions.ts +++ b/packages/client-twitter/src/interactions.ts @@ -486,7 +486,7 @@ export class TwitterInteractionClient { const response = await generateMessageResponse({ runtime: this.runtime, context, - modelClass: ModelClass.LARGE, + modelClass: ModelClass.MEDIUM, }); const removeQuotes = (str: string) => From dde4bd8d5f58dbc8fa845bbf913acd0ac27ae7ee Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Sun, 26 Jan 2025 06:32:37 +0700 Subject: [PATCH 43/58] prompt --- packages/client-twitter/src/post.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index baa30f5a0fe..e2c089803ec 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -53,8 +53,8 @@ If the news isnt about SUI or SUIRISE, dont mix the context with SUI Shilling. k Your response should be 1, 2, or 3 sentences (choose the length at random). Your response should not contain any questions. Brief, concise statements only. The total character count MUST be less than 400. No emojis. Use \n\n (double spaces) between statements if there are multiple statements in your response. Your response should replace any entities , person, organization name on your response with its twitter account handler. -Your response should replace any crypto project name such as Ethereum, Bitcoin, or something else with its ticker starting with $. -Your response should replace any crypto project ticker that doesnt have $ before it you have to add the $ so for example ETH become $ETH. +Your response should replace any crypto currency name such as Ethereum, Bitcoin, or something else with its ticker starting with $. +Your response should replace any crypto currency ticker that doesnt have $ before it you have to add the $ so for example ETH become $ETH ( ticker has length up to 4 characters ). Your response should not include ChainCatcher text on it. `; From e7571d489245fa97aeb957a92ca2b1fe9005bd35 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Thu, 30 Jan 2025 09:57:33 +0700 Subject: [PATCH 44/58] OKOK --- packages/client-twitter/src/post.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index e2c089803ec..8283abb5033 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -52,7 +52,6 @@ Your response must include the summary of the # NEWS above into a sentences and If the news isnt about SUI or SUIRISE, dont mix the context with SUI Shilling. keep the original and relevant context of the news. Your response should be 1, 2, or 3 sentences (choose the length at random). Your response should not contain any questions. Brief, concise statements only. The total character count MUST be less than 400. No emojis. Use \n\n (double spaces) between statements if there are multiple statements in your response. -Your response should replace any entities , person, organization name on your response with its twitter account handler. Your response should replace any crypto currency name such as Ethereum, Bitcoin, or something else with its ticker starting with $. Your response should replace any crypto currency ticker that doesnt have $ before it you have to add the $ so for example ETH become $ETH ( ticker has length up to 4 characters ). Your response should not include ChainCatcher text on it. From 8cd73158beed716ad13692a2f49d02172249c610 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Thu, 30 Jan 2025 15:20:06 +0700 Subject: [PATCH 45/58] jajaja --- agent/package.json | 1 + agent/src/index.ts | 3 + .../client-telegram/src/messageManager.ts | 9 +- .../src/plugins/SttTtsSpacesPlugin.ts | 19 +- packages/client-twitter/src/search.ts | 45 +++- packages/plugin-neocortex-market/.gitignore | 37 +++ packages/plugin-neocortex-market/.npmignore | 6 + .../plugin-neocortex-market/eslint.config.mjs | 3 + packages/plugin-neocortex-market/package.json | 20 ++ .../src/actions/trending.ts | 232 ++++++++++++++++++ packages/plugin-neocortex-market/src/index.ts | 15 ++ .../src/lib/InsidexManage.ts | 165 +++++++++++++ .../plugin-neocortex-market/src/lib/types.ts | 57 +++++ .../src/services/GoplusSecurityService.ts | 144 +++++++++++ .../src/templates/index.ts | 29 +++ .../plugin-neocortex-market/tsconfig.json | 11 + .../plugin-neocortex-market/tsup.config.ts | 10 + packages/plugin-pyth-data/schema.json | 2 +- 18 files changed, 787 insertions(+), 21 deletions(-) create mode 100644 packages/plugin-neocortex-market/.gitignore create mode 100644 packages/plugin-neocortex-market/.npmignore create mode 100644 packages/plugin-neocortex-market/eslint.config.mjs create mode 100644 packages/plugin-neocortex-market/package.json create mode 100644 packages/plugin-neocortex-market/src/actions/trending.ts create mode 100644 packages/plugin-neocortex-market/src/index.ts create mode 100644 packages/plugin-neocortex-market/src/lib/InsidexManage.ts create mode 100644 packages/plugin-neocortex-market/src/lib/types.ts create mode 100644 packages/plugin-neocortex-market/src/services/GoplusSecurityService.ts create mode 100644 packages/plugin-neocortex-market/src/templates/index.ts create mode 100644 packages/plugin-neocortex-market/tsconfig.json create mode 100644 packages/plugin-neocortex-market/tsup.config.ts diff --git a/agent/package.json b/agent/package.json index e0b56dfa7bc..75a60624f84 100644 --- a/agent/package.json +++ b/agent/package.json @@ -109,6 +109,7 @@ "@elizaos/plugin-devin": "workspace:*", "@ethosdao/plugin-market-analisys": "workspace:*", "@srise/plugin-crypto-news": "workspace:*", + "@srise/plugin-neocortex-market": "workspace:*", "@elizaos/plugin-goplus": "workspace:*", "readline": "1.3.0", "ws": "8.18.0", diff --git a/agent/src/index.ts b/agent/src/index.ts index 40105d989bd..ce8fc7d2a54 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -13,6 +13,7 @@ import { SlackClientInterface } from "@elizaos/client-slack"; import { TelegramClientInterface } from "@elizaos/client-telegram"; import { TwitterClientInterface } from "@elizaos/client-twitter"; import { agentKitPlugin } from "@elizaos/plugin-agentkit"; +import { neoCortexMarketPlugin } from "@srise/plugin-neocortex-market"; // import { ReclaimAdapter } from "@elizaos/plugin-reclaim"; import { AgentRuntime, @@ -918,6 +919,7 @@ export async function createAgent( ? webSearchPlugin : null, getSecret(character, "SERPER_API_KEY") ? cryptoNewsPlugin : null, + getSecret(character, "SOLANA_PUBLIC_KEY") || (getSecret(character, "WALLET_PUBLIC_KEY") && !getSecret(character, "WALLET_PUBLIC_KEY")?.startsWith("0x")) @@ -1100,6 +1102,7 @@ export async function createAgent( ? openaiPlugin : null, getSecret(character, "DEVIN_API_TOKEN") ? devinPlugin : null, + getSecret(character, "INSIDEX_API_KEY") ? neoCortexMarketPlugin : null, ].filter(Boolean), providers: [], actions: [], diff --git a/packages/client-telegram/src/messageManager.ts b/packages/client-telegram/src/messageManager.ts index 5f27f06ac96..f43fa0076d9 100644 --- a/packages/client-telegram/src/messageManager.ts +++ b/packages/client-telegram/src/messageManager.ts @@ -1390,10 +1390,11 @@ export class MessageManager { // Execute callback to send messages and log memories const responseMessages = await callback(responseContent); - // console.log({ - // responseMessages, - // responseContent, - // }); + console.log({ + memory, + context, + responseContent, + }); // Update state after response state = await this.runtime.updateRecentMessageState(state); diff --git a/packages/client-twitter/src/plugins/SttTtsSpacesPlugin.ts b/packages/client-twitter/src/plugins/SttTtsSpacesPlugin.ts index c930f6e5ce0..888fa94d304 100644 --- a/packages/client-twitter/src/plugins/SttTtsSpacesPlugin.ts +++ b/packages/client-twitter/src/plugins/SttTtsSpacesPlugin.ts @@ -318,10 +318,11 @@ export class SttTtsPlugin implements Plugin { // Get response const replyText = await this.handleUserMessage(sttText, userId); if (!replyText || !replyText.length || !replyText.trim()) { - elizaLogger.warn( - "[SttTtsPlugin] No replyText for user =>", - userId - ); + elizaLogger.warn("[SttTtsPlugin] No replyText for user =>", { + userId, + sttText, + replyText, + }); return; } elizaLogger.log( @@ -382,7 +383,7 @@ export class SttTtsPlugin implements Plugin { return; } } catch (err) { - console.log("SttTtsplugin error",err); + console.log("SttTtsplugin error", err); elizaLogger.error("[SttTtsPlugin] TTS streaming error =>", err); } finally { // Clean up the AbortController @@ -587,8 +588,14 @@ export class SttTtsPlugin implements Plugin { const response = await generateShouldRespond({ runtime: this.runtime, context: shouldRespondContext, - modelClass: ModelClass.SMALL, + modelClass: ModelClass.LARGE, // it was small }); + if (response !== "RESPOND") { + console.log("STTTTS SHOULD RESPOND ? ", { + response, + shouldRespondContext, + }); + } if (response === "RESPOND") { return true; diff --git a/packages/client-twitter/src/search.ts b/packages/client-twitter/src/search.ts index 01ed6e68277..d41321d355b 100644 --- a/packages/client-twitter/src/search.ts +++ b/packages/client-twitter/src/search.ts @@ -1,17 +1,19 @@ -import { SearchMode } from "agent-twitter-client"; -import { composeContext, elizaLogger } from "@elizaos/core"; -import { generateMessageResponse, generateText } from "@elizaos/core"; -import { messageCompletionFooter } from "@elizaos/core"; import { + composeContext, type Content, + elizaLogger, + generateMessageResponse, + generateText, type HandlerCallback, type IAgentRuntime, type IImageDescriptionService, + messageCompletionFooter, ModelClass, ServiceType, type State, + stringToUuid, } from "@elizaos/core"; -import { stringToUuid } from "@elizaos/core"; +import { SearchMode } from "agent-twitter-client"; import type { ClientBase } from "./base"; import { buildConversationThread, sendTweet, wait } from "./utils.ts"; @@ -95,7 +97,13 @@ export class TwitterSearchClient { `# ${this.runtime.character.name}'s Home Timeline\n\n` + homeTimeline .map((tweet) => { - return `ID: ${tweet.id}\nFrom: ${tweet.name} (@${tweet.username})${tweet.inReplyToStatusId ? ` In reply to: ${tweet.inReplyToStatusId}` : ""}\nText: ${tweet.text}\n---\n`; + return `ID: ${tweet.id}\nFrom: ${tweet.name} (@${ + tweet.username + })${ + tweet.inReplyToStatusId + ? ` In reply to: ${tweet.inReplyToStatusId}` + : "" + }\nText: ${tweet.text}\n---\n`; }) .join("\n"); @@ -126,14 +134,18 @@ export class TwitterSearchClient { }) .map( (tweet) => ` - ID: ${tweet.id}${tweet.inReplyToStatusId ? ` In reply to: ${tweet.inReplyToStatusId}` : ""} + ID: ${tweet.id}${ + tweet.inReplyToStatusId + ? ` In reply to: ${tweet.inReplyToStatusId}` + : "" + } From: ${tweet.name} (@${tweet.username}) Text: ${tweet.text} ` ) .join("\n")} - Which tweet is the most interesting and relevant for Ruby to reply to? Please provide only the ID of the tweet in your response. + Which tweet is the most interesting and relevant for SUIRISE to reply to? Please provide only the ID of the tweet in your response. Notes: - Respond to English tweets only - Respond to tweets that don't have a lot of hashtags, links, URLs or images @@ -244,9 +256,22 @@ export class TwitterSearchClient { Original Post: By @${selectedTweet.username} - ${selectedTweet.text}${replyContext.length > 0 && `\nReplies to original post:\n${replyContext}`} + ${selectedTweet.text}${ + replyContext.length > 0 && + `\nReplies to original post:\n${replyContext}` + } ${`Original post text: ${selectedTweet.text}`} - ${selectedTweet.urls.length > 0 ? `URLs: ${selectedTweet.urls.join(", ")}\n` : ""}${imageDescriptions.length > 0 ? `\nImages in Post (Described): ${imageDescriptions.join(", ")}\n` : ""} + ${ + selectedTweet.urls.length > 0 + ? `URLs: ${selectedTweet.urls.join(", ")}\n` + : "" + }${ + imageDescriptions.length > 0 + ? `\nImages in Post (Described): ${imageDescriptions.join( + ", " + )}\n` + : "" + } `, }); diff --git a/packages/plugin-neocortex-market/.gitignore b/packages/plugin-neocortex-market/.gitignore new file mode 100644 index 00000000000..f781f0bc4b3 --- /dev/null +++ b/packages/plugin-neocortex-market/.gitignore @@ -0,0 +1,37 @@ +# Node modules +node_modules/ + +# Logs +logs +*.log +npm-debug.log* + +# Build output +dist/ +build/ + +# Dependency directories +jspm_packages/ + +# Optional npm cache directory +.npm/ + +# dotenv environment variable file +.env + +# Turborepo +.turbo/ + +# IDE specific files +.idea/ +.vscode/ +*.sublime-project +*.sublime-workspace + +# Mac system files +.DS_Store + +# Windows system files +Thumbs.db +ehthumbs.db +Icon? diff --git a/packages/plugin-neocortex-market/.npmignore b/packages/plugin-neocortex-market/.npmignore new file mode 100644 index 00000000000..078562eceab --- /dev/null +++ b/packages/plugin-neocortex-market/.npmignore @@ -0,0 +1,6 @@ +* + +!dist/** +!package.json +!readme.md +!tsup.config.ts \ No newline at end of file diff --git a/packages/plugin-neocortex-market/eslint.config.mjs b/packages/plugin-neocortex-market/eslint.config.mjs new file mode 100644 index 00000000000..92fe5bbebef --- /dev/null +++ b/packages/plugin-neocortex-market/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.config.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-neocortex-market/package.json b/packages/plugin-neocortex-market/package.json new file mode 100644 index 00000000000..933e332a2c5 --- /dev/null +++ b/packages/plugin-neocortex-market/package.json @@ -0,0 +1,20 @@ +{ + "name": "@srise/plugin-neocortex-market", + "version": "0.1.9-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "tsup": "^8.3.5", + "ws": "^8.18.0" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsx watch src/index.ts" + }, + "devDependencies": { + "@types/ws": "^8.5.13", + "tsx": "^4.19.2" + } +} diff --git a/packages/plugin-neocortex-market/src/actions/trending.ts b/packages/plugin-neocortex-market/src/actions/trending.ts new file mode 100644 index 00000000000..51857769fad --- /dev/null +++ b/packages/plugin-neocortex-market/src/actions/trending.ts @@ -0,0 +1,232 @@ +import { + Action, + elizaLogger, + generateText, + HandlerCallback, + IAgentRuntime, + Memory, + ModelClass, + State, +} from "@elizaos/core"; +import { InsidexManage } from "../lib/InsidexManage"; +import { responsePrompt } from "../templates"; + +export const trendingTokenAction: Action = { + name: "TRENDING_TOKEN", + similes: ["TOKEN_TRENDING", "GET_TRENDING_TOKEN"], + description: + "Obtain the recently trending token. Call this action if the user asking for whats trending or hot token even if there's any related conversation before.", + validate: async (runtime: IAgentRuntime, message: Memory) => { + const apiKey = !!runtime.getSetting("INSIDEX_API_KEY"); + console.log("APIKEY", { + apiKey, + s: runtime.getSetting("INSIDEX_API_KEY"), + }); + return apiKey; + }, + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + options: any, + callback: HandlerCallback + ) => { + try { + //elizaLogger.log("check input text", message.content.text); + const insideXManage = new InsidexManage( + runtime.getSetting("INSIDEX_API_KEY") + ); + //elizaLogger.log("FINDING TRENDING TOKEN", message.content.text); + const result = (await insideXManage.trendingToken()).slice(0, 5); + + elizaLogger.info( + `Received Response from InsideX trending total : ${result.length}` + ); + const checkResponse = await generateText({ + runtime: runtime, + context: responsePrompt( + JSON.stringify(result), + message.content.text + ), + modelClass: ModelClass.LARGE, + }); + elizaLogger.info("LLM InsideX Response", checkResponse); + // console.log("debug insidex", { + // context: responsePrompt( + // JSON.stringify(result), + // message.content.text + // ), + // }); + callback({ + text: checkResponse, + }); + + // let checkResult: any; + // switch (obj.type) { + // case GoPlusType.EVMTOKEN_SECURITY_CHECK: + // checkResult = await goPlusManage.tokenSecurity( + // obj.network, + // obj.token + // ); + // break; + // case GoPlusType.SOLTOKEN_SECURITY_CHECK: + // checkResult = + // await goPlusManage.solanaTokenSecurityUsingGET( + // obj.token + // ); + // break; + // case GoPlusType.SUITOKEN_SECURITY_CHECK: + // checkResult = await goPlusManage.suiTokenSecurityUsingGET( + // obj.token + // ); + // break; + // case GoPlusType.RUGPULL_SECURITY_CHECK: + // checkResult = await goPlusManage.rugpullDetection( + // obj.network, + // obj.contract + // ); + // break; + // case GoPlusType.NFT_SECURITY_CHECK: + // checkResult = await goPlusManage.nftSecurity( + // obj.network, + // obj.token + // ); + // break; + // case GoPlusType.ADRESS_SECURITY_CHECK: + // checkResult = await goPlusManage.addressSecurity( + // obj.wallet + // ); + // break; + // case GoPlusType.APPROVAL_SECURITY_CHECK: + // checkResult = await goPlusManage.approvalSecurity( + // obj.network, + // obj.contract + // ); + // break; + // case GoPlusType.ACCOUNT_ERC20_SECURITY_CHECK: + // checkResult = await goPlusManage.erc20ApprovalSecurity( + // obj.network, + // obj.wallet + // ); + // break; + // case GoPlusType.ACCOUNT_ERC721_SECURITY_CHECK: + // checkResult = await goPlusManage.erc721ApprovalSecurity( + // obj.network, + // obj.wallet + // ); + // break; + // case GoPlusType.ACCOUNT_ERC1155_SECURITY_CHECK: + // checkResult = await goPlusManage.erc1155ApprovalSecurity( + // obj.network, + // obj.wallet + // ); + // break; + // case GoPlusType.SIGNATURE_SECURITY_CHECK: + // checkResult = await goPlusManage.inputDecode( + // obj.network, + // obj.data + // ); + // break; + // case GoPlusType.URL_SECURITY_CHECK: + // checkResult = + // await goPlusManage.dappSecurityAndPhishingSite(obj.url); + // break; + // default: + // throw new Error("type is invaild"); + // } + // elizaLogger.log("checkResult text", checkResult); + // const checkResponse = await generateText({ + // runtime: runtime, + // context: responsePrompt( + // JSON.stringify(checkResult), + // message.content.text + // ), + // modelClass: ModelClass.LARGE, + // }); + // elizaLogger.log("checkResponse text", checkResponse); + // callback({ + // text: checkResponse, + // }); + } catch (e) { + elizaLogger.error("Error in trendingTokenAction handler", e); + return "error"; + } + }, + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "What are the hottest tokens in the market right now?", + }, + }, + { + user: "{{agentName}}", + content: { + text: "Here is what I found about the trending tokens:", + action: "TRENDING_TOKEN", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Which tokens are currently gaining the most attention among investors?", + }, + }, + { + user: "{{agentName}}", + content: { + text: "Here are the tokens attracting investor interest:", + action: "TRENDING_TOKEN", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "What are some trending cryptocurrencies at the moment?", + }, + }, + { + user: "{{agentName}}", + content: { + text: "These are the trending cryptocurrencies I found:", + action: "TRENDING_TOKEN", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Whats hot right now ?", + }, + }, + { + user: "{{agentName}}", + content: { + text: "Here are the tokens that have surged in popularity recently:", + action: "TRENDING_TOKEN", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Whats trending token right now ?", + }, + }, + { + user: "{{agentName}}", + content: { + text: "These tokens are currently generating the most buzz in the crypto community:", + action: "TRENDING_TOKEN", + }, + }, + ], + ], +} as Action; diff --git a/packages/plugin-neocortex-market/src/index.ts b/packages/plugin-neocortex-market/src/index.ts new file mode 100644 index 00000000000..b81a4e04954 --- /dev/null +++ b/packages/plugin-neocortex-market/src/index.ts @@ -0,0 +1,15 @@ +import type { Plugin } from "@elizaos/core"; +import { trendingTokenAction } from "./actions/trending"; +//import GoplusSecurityService from "./services/GoplusSecurityService"; + +//export * from "./services/GoplusSecurityService"; + +export const neoCortexMarketPlugin: Plugin = { + name: "neocortex-market", + description: "Neo Cortex for getting market insight", + actions: [trendingTokenAction], + evaluators: [], + providers: [], + //services: [new GoplusSecurityService()], + services: [], +}; diff --git a/packages/plugin-neocortex-market/src/lib/InsidexManage.ts b/packages/plugin-neocortex-market/src/lib/InsidexManage.ts new file mode 100644 index 00000000000..60aae820344 --- /dev/null +++ b/packages/plugin-neocortex-market/src/lib/InsidexManage.ts @@ -0,0 +1,165 @@ +import { TrendingTokens } from "./types"; + +export const GoPlusType = { + EVMTOKEN_SECURITY_CHECK: "EVMTOKEN_SECURITY_CHECK", + SOLTOKEN_SECURITY_CHECK: "SOLTOKEN_SECURITY_CHECK", + SUITOKEN_SECURITY_CHECK: "SUITOKEN_SECURITY_CHECK", + RUGPULL_SECURITY_CHECK: "RUGPULL_SECURITY_CHECK", + NFT_SECURITY_CHECK: "NFT_SECURITY_CHECK", + ADRESS_SECURITY_CHECK: "ADRESS_SECURITY_CHECK", + APPROVAL_SECURITY_CHECK: "APPROVAL_SECURITY_CHECK", + ACCOUNT_ERC20_SECURITY_CHECK: "ACCOUNT_ERC20_SECURITY_CHECK", + ACCOUNT_ERC721_SECURITY_CHECK: "ACCOUNT_ERC721_SECURITY_CHECK", + ACCOUNT_ERC1155_SECURITY_CHECK: "ACCOUNT_ERC1155_SECURITY_CHECK", + SIGNATURE_SECURITY_CHECK: "SIGNATURE_SECURITY_CHECK", + URL_SECURITY_CHECK: "URL_SECURITY_CHECK", +}; + +export type GoPlusType = (typeof GoPlusType)[keyof typeof GoPlusType]; +export type GoPlusParamType = { + type: GoPlusType; + network?: string; + token?: string; + contract?: string; + wallet?: string; + url?: string; + data?: string; +}; + +const excludeCoinsFromTrending = [ + "0x375f70cf2ae4c00bf37117d0c85a2c71545e6ee05c4a5c7d282cd66a4504b068::usdt::USDT", + "0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29::eth::ETH", + "0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS", + "0x2053d08c1e2bd02791056171aab0fd12bd7cd7efad2ab8f6b9c8902f14df2ff2::ausd::AUSD", + "0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN", + "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN", + "0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN", + "0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8::coin::COIN", + "0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::buck::BUCK", + "0x2053d08c1e2bd02791056171aab0fd12bd7cd7efad2ab8f6b9c8902f14df2ff2::ausd::AUSD", +]; +export class InsidexManage { + private apiKey: string; + + constructor(apiKey: string = null) { + this.apiKey = apiKey; + } + + async requestGet(api: string) { + const myHeaders = new Headers(); + if (this.apiKey) { + myHeaders.append("x-api-key", this.apiKey); + } + const url = `https://api-ex.insidex.trade/${api}`; + const res = await fetch(url, { + method: "GET", + headers: myHeaders, + redirect: "follow", + }); + + return await res.json(); + } + + async trendingToken(): Promise<TrendingTokens | any> { + const api = `coins/trending`; + const trendingRes = (await this.requestGet(api)) as TrendingTokens; + + const trending = trendingRes + .filter((token) => { + return ( + token.isCoinHoneyPot == "false" && + token.suspiciousActivities.length < 1 && + token.totalLiquidityUsd !== "NaN" && + !excludeCoinsFromTrending.includes(token.coin) + ); + }) + .sort((a, b) => parseFloat(b.volume24h) - parseFloat(a.volume24h)); + return trending; + } + + // async tokenSecurity( + // chainId: string, + // address: string + // ): Promise<TrendingTokens> { + // const api = `api/v1/token_security/${chainId}?contract_addresses=${address}`; + // return await this.requestGet(api); + // } + + // async rugpullDetection(chainId: string, address: string) { + // const api = `api/v1/rugpull_detecting/${chainId}?contract_addresses=${address}`; + // return await this.requestGet(api); + // } + + // async solanaTokenSecurityUsingGET(address: string) { + // const api = `api/v1/solana/token_security?contract_addresses=${address}`; + // return await this.requestGet(api); + // } + + // async suiTokenSecurityUsingGET(address: string) { + // const api = `api/v1/sui/token_security?contract_addresses=${address}`; + // return await this.requestGet(api); + // } + + // async nftSecurity(chainId: string, address: string) { + // const api = `api/v1/nft_security/${chainId}?contract_addresses=${address}`; + // return await this.requestGet(api); + // } + + // async addressSecurity(address: string) { + // const api = `api/v1/address_security/${address}`; + // return await this.requestGet(api); + // } + + // async approvalSecurity(chainId: string, contract: string) { + // const api = `api/v1/approval_security/${chainId}?contract_addresses=${contract}`; + // return await this.requestGet(api); + // } + + // async erc20ApprovalSecurity(chainId: string, wallet: string) { + // const api = `api/v2/token_approval_security/${chainId}?addresses=${wallet}`; + // return await this.requestGet(api); + // } + + // async erc721ApprovalSecurity(chainId: string, wallet: string) { + // const api = `api/v2/nft721_approval_security/${chainId}?addresses=${wallet}`; + // return await this.requestGet(api); + // } + + // async erc1155ApprovalSecurity(chainId: string, wallet: string) { + // const api = `api/v2/nft1155_approval_security/${chainId}?addresses=${wallet}`; + // return await this.requestGet(api); + // } + + // async inputDecode(chainId: string, data: string) { + // const body = JSON.stringify({ + // chain_id: chainId, + // data: data, + // }); + // const res = await fetch( + // "https://api.gopluslabs.io/api/v1/abi/input_decode", + // { + // headers: { + // accept: "*/*", + // "accept-language": "en,zh-CN;q=0.9,zh;q=0.8", + // "content-type": "application/json", + // }, + // body: body, + // method: "POST", + // } + // ); + // return await res.json(); + // } + + // async dappSecurityAndPhishingSite(url: string) { + // const api = `api/v1/dapp_secu + // rity?url=${url}`; + // const data1 = await this.requestGet(api); + + // const api2 = `api/v1/phishing_site?url=${url}`; + // const data2 = await this.requestGet(api2); + // return { + // data1, + // data2, + // }; + // } +} diff --git a/packages/plugin-neocortex-market/src/lib/types.ts b/packages/plugin-neocortex-market/src/lib/types.ts new file mode 100644 index 00000000000..7f234bebfed --- /dev/null +++ b/packages/plugin-neocortex-market/src/lib/types.ts @@ -0,0 +1,57 @@ +export type TrendingTokens = TrendingToken[]; + +export interface TrendingToken { + isMintable: string; + tokensBurned: string; + tokensBurnedPercentage: string; + lpBurnt: string; + coinSupply: string; + coinMetadata: CoinMetadata; + tokensInLiquidity: string; + percentageTokenSupplyInLiquidity: string; + isCoinHoneyPot: string; + suspiciousActivities: any[]; + top10HolderPercentage: string; + top20HolderPercentage: string; + fullyDilutedMarketCap: string; + marketCap: string; + totalLiquidityUsd: string; + timeCreated: string; + coin: string; + coinDev: string; + price5mAgo: string; + price1hAgo: string; + price6hAgo: string; + price24hAgo: string; + percentagePriceChange5m: string; + percentagePriceChange1h: string; + percentagePriceChange6h: string; + percentagePriceChange24h: string; + coinDevHoldings: string; + coinDevHoldingsPercentage: string; + buyVolume5m: string; + buyVolume1h: string; + buyVolume6h: string; + buyVolume24h: string; + sellVolume5m: string; + sellVolume1h: string; + sellVolume6h: string; + sellVolume24h: string; + volume5m: string; + volume1h: string; + volume6h: string; + volume24h: string; + coinPrice: string; +} + +export interface CoinMetadata { + _id?: string; + coinType?: string; + decimals: string; + id: string; + name: string; + symbol: string; + supply?: string; + description?: string; + iconUrl?: string; +} diff --git a/packages/plugin-neocortex-market/src/services/GoplusSecurityService.ts b/packages/plugin-neocortex-market/src/services/GoplusSecurityService.ts new file mode 100644 index 00000000000..9cc3e5cd216 --- /dev/null +++ b/packages/plugin-neocortex-market/src/services/GoplusSecurityService.ts @@ -0,0 +1,144 @@ +// import { +// type IAgentRuntime, +// ModelClass, +// Service, +// ServiceType, +// elizaLogger, +// generateObjectDeprecated, +// generateText, +// } from "@elizaos/core"; +// import { +// GoPlusManage, +// type GoPlusParamType, +// GoPlusType, +// } from "../lib/InsidexManage"; +// import { requestPrompt, responsePrompt } from "../templates"; + +// export interface IGoplusSecurityService extends Service { +// check(text: string): Promise<string>; +// } + +// export class GoplusSecurityService +// extends Service +// implements IGoplusSecurityService +// { +// private apiKey: string; +// private runtime: IAgentRuntime; +// getInstance(): GoplusSecurityService { +// return this; +// } +// static get serviceType() { +// return "goplus_security" as ServiceType; // ServiceType.GOPLUS_SECURITY; +// } + +// initialize(runtime: IAgentRuntime): Promise<void> { +// this.runtime = runtime; +// this.apiKey = runtime.getSetting("GOPLUS_API_KEY"); +// return; +// } + +// /** +// * Connect to WebSocket and send a message +// */ +// async check(text: string): Promise<string> { +// try { +// elizaLogger.log("check input text", text); +// const obj = (await generateObjectDeprecated({ +// runtime: this.runtime, +// context: requestPrompt(text), +// modelClass: ModelClass.SMALL, // gpt-4o-mini +// })) as GoPlusParamType; + +// elizaLogger.log("check generateObjectDeprecated text", obj); + +// const goPlusManage = new GoPlusManage(this.apiKey); +// let checkResult: any; +// switch (obj.type) { +// case GoPlusType.EVMTOKEN_SECURITY_CHECK: +// checkResult = await goPlusManage.tokenSecurity( +// obj.network, +// obj.token +// ); +// break; +// case GoPlusType.SOLTOKEN_SECURITY_CHECK: +// checkResult = +// await goPlusManage.solanaTokenSecurityUsingGET( +// obj.token +// ); +// break; +// case GoPlusType.SUITOKEN_SECURITY_CHECK: +// checkResult = await goPlusManage.suiTokenSecurityUsingGET( +// obj.token +// ); +// break; +// case GoPlusType.RUGPULL_SECURITY_CHECK: +// checkResult = await goPlusManage.rugpullDetection( +// obj.network, +// obj.contract +// ); +// break; +// case GoPlusType.NFT_SECURITY_CHECK: +// checkResult = await goPlusManage.nftSecurity( +// obj.network, +// obj.token +// ); +// break; +// case GoPlusType.ADRESS_SECURITY_CHECK: +// checkResult = await goPlusManage.addressSecurity( +// obj.wallet +// ); +// break; +// case GoPlusType.APPROVAL_SECURITY_CHECK: +// checkResult = await goPlusManage.approvalSecurity( +// obj.network, +// obj.contract +// ); +// break; +// case GoPlusType.ACCOUNT_ERC20_SECURITY_CHECK: +// checkResult = await goPlusManage.erc20ApprovalSecurity( +// obj.network, +// obj.wallet +// ); +// break; +// case GoPlusType.ACCOUNT_ERC721_SECURITY_CHECK: +// checkResult = await goPlusManage.erc721ApprovalSecurity( +// obj.network, +// obj.wallet +// ); +// break; +// case GoPlusType.ACCOUNT_ERC1155_SECURITY_CHECK: +// checkResult = await goPlusManage.erc1155ApprovalSecurity( +// obj.network, +// obj.wallet +// ); +// break; +// case GoPlusType.SIGNATURE_SECURITY_CHECK: +// checkResult = await goPlusManage.inputDecode( +// obj.network, +// obj.data +// ); +// break; +// case GoPlusType.URL_SECURITY_CHECK: +// checkResult = +// await goPlusManage.dappSecurityAndPhishingSite(obj.url); +// break; +// default: +// throw new Error("type is invaild"); +// } + +// elizaLogger.log("checkResult text", checkResult); +// const checkResponse = await generateText({ +// runtime: this.runtime, +// context: responsePrompt(JSON.stringify(checkResult), text), +// modelClass: ModelClass.SMALL, +// }); +// elizaLogger.log("checkResponse text", checkResponse); +// return checkResponse; +// } catch (e) { +// elizaLogger.error(e); +// return "error"; +// } +// } +// } + +// export default GoplusSecurityService; diff --git a/packages/plugin-neocortex-market/src/templates/index.ts b/packages/plugin-neocortex-market/src/templates/index.ts new file mode 100644 index 00000000000..e91806b3d72 --- /dev/null +++ b/packages/plugin-neocortex-market/src/templates/index.ts @@ -0,0 +1,29 @@ +export const responsePrompt = ( + apiresult: string, + text: string +) => `You are a professional cryptocurrency and technical analyst with expertise in market insights. Your task is to analyze the provided market insight API response from NeoCorteX and summarize the key findings in a simple, beginner-friendly manner without leaving out any critical details, such as the project name, ticker, price action, volume, market cap, sentiment, and other relevant metrics. +API to analyze:“”" +${apiresult} +“”" + +Instructions: +1. Highlight Key Metrics: Extract the most important details for each trending token (e.g., name, ticker, price, percentage change, market cap, volume, and sentiment). +2. Explain in Plain English: Present the analysis in an easy-to-read narrative format rather than listing data points. Ensure the explanation feels approachable, engaging, and not overly technical. +3. Include an NeoCorteX Perspective: Offer your brief professional opinion on the performance, risks, and opportunities for each token based on the provided metrics. +4. Use Visual Enhancements: Include icons like 📈 (for growth), 📉 (for decline), ⚠️ (for risks), and 💡 (for insights) to make the analysis visually appealing and easier to understand. +5. Summarize Clearly: Wrap up with an overview or conclusion that ties together all the information. +6. Disclaimer: Remind the user to always "Do Your Own Research" (DYOR) and clarify that this is not financial advice. + +Response Formatting: +1. Begin with an Introduction: A quick overview of the trending tokens and what the report will cover. +2. Token Analysis: +2.1 For each token (up to 5 from the API): +2.1.1 Include the name and ticker (e.g., "TokenName ($TICKER)"). +2.1.2 Summarize its price movement and market performance (mention changes in price, volume, and market cap). +2.1.3 Highlight any unique or notable metrics (e.g., burn rate, liquidity, or suspicious activity). +2.1.4 Add NeoCorteX's professional opinion (e.g., whether it shows potential growth or signs of caution). +3. Use Icons to make the text more engaging. +4. End with a friendly Reminder: "DYOR and remember this is not financial advice. + +Conclusion: +"This analysis highlights key trends for the day, but always DYOR and remember this is not financial advice."`; diff --git a/packages/plugin-neocortex-market/tsconfig.json b/packages/plugin-neocortex-market/tsconfig.json new file mode 100644 index 00000000000..c9ef9bea7ba --- /dev/null +++ b/packages/plugin-neocortex-market/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "./src", + "declaration": true + }, + "include": [ + "src" + ] +} diff --git a/packages/plugin-neocortex-market/tsup.config.ts b/packages/plugin-neocortex-market/tsup.config.ts new file mode 100644 index 00000000000..d96e321c706 --- /dev/null +++ b/packages/plugin-neocortex-market/tsup.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + format: ["esm"], + dts: true, + sourcemap: true, + splitting: false, + clean: true, +}); diff --git a/packages/plugin-pyth-data/schema.json b/packages/plugin-pyth-data/schema.json index a036280f023..6628a575d00 100644 --- a/packages/plugin-pyth-data/schema.json +++ b/packages/plugin-pyth-data/schema.json @@ -1 +1 @@ -{"openapi":"3.0.3","info":{"title":"hermes","description":"Hermes is an agent that provides Verified Prices from the Pythnet Pyth Oracle.","license":{"name":""},"version":"0.8.1"},"paths":{"/api/get_price_feed":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/{publish_time} instead**","description":"**Deprecated: use /v2/updates/price/{publish_time} instead**\n\nGet a price update for a price feed with a specific timestamp\n\nGiven a price feed id and timestamp, retrieve the Pyth price update closest to that timestamp.","operationId":"get_price_feed","parameters":[{"name":"id","in":"query","description":"The id of the price feed to get an update for.","required":true,"schema":{"$ref":"#/components/schemas/PriceIdInput"}},{"name":"publish_time","in":"query","description":"The unix timestamp in seconds. This endpoint will return the first update whose\npublish_time is >= the provided value.","required":true,"schema":{"type":"integer","format":"int64"},"example":1717632000},{"name":"verbose","in":"query","description":"If true, include the `metadata` field in the response with additional metadata about the\nprice update.","required":false,"schema":{"type":"boolean"}},{"name":"binary","in":"query","description":"If true, include the binary price update in the `vaa` field of each returned feed. This\nbinary data can be submitted to Pyth contracts to update the on-chain price.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price update retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RpcPriceFeed"}}}}},"deprecated":true}},"/api/get_vaa":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/{publish_time} instead**","description":"**Deprecated: use /v2/updates/price/{publish_time} instead**\n\nGet a VAA for a price feed with a specific timestamp\n\nGiven a price feed id and timestamp, retrieve the Pyth price update closest to that timestamp.","operationId":"get_vaa","parameters":[{"name":"id","in":"query","description":"The ID of the price feed to get an update for.","required":true,"schema":{"$ref":"#/components/schemas/PriceIdInput"}},{"name":"publish_time","in":"query","description":"The unix timestamp in seconds. This endpoint will return the first update whose\npublish_time is >= the provided value.","required":true,"schema":{"type":"integer","format":"int64"},"example":1690576641}],"responses":{"200":{"description":"Price update retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVaaResponse"}}}},"404":{"description":"Price update not found","content":{"text/plain":{"schema":{"type":"string"}}}}},"deprecated":true}},"/api/get_vaa_ccip":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/{publish_time} instead**","description":"**Deprecated: use /v2/updates/price/{publish_time} instead**\n\nGet a VAA for a price feed using CCIP\n\nThis endpoint accepts a single argument which is a hex-encoded byte string of the following form:\n`<price feed id (32 bytes> <publish time as unix timestamp (8 bytes, big endian)>`","operationId":"get_vaa_ccip","parameters":[{"name":"data","in":"query","required":true,"schema":{"$ref":"#/components/schemas/GetVaaCcipInput"}}],"responses":{"200":{"description":"Price update retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVaaCcipResponse"}}}}},"deprecated":true}},"/api/latest_price_feeds":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/latest instead**","description":"**Deprecated: use /v2/updates/price/latest instead**\n\nGet the latest price updates by price feed id.\n\nGiven a collection of price feed ids, retrieve the latest Pyth price for each price feed.","operationId":"latest_price_feeds","parameters":[{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"verbose","in":"query","description":"If true, include the `metadata` field in the response with additional metadata about\nthe price update.","required":false,"schema":{"type":"boolean"}},{"name":"binary","in":"query","description":"If true, include the binary price update in the `vaa` field of each returned feed.\nThis binary data can be submitted to Pyth contracts to update the on-chain price.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RpcPriceFeed"}}}}}},"deprecated":true}},"/api/latest_vaas":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/latest instead**","description":"**Deprecated: use /v2/updates/price/latest instead**\n\nGet VAAs for a set of price feed ids.\n\nGiven a collection of price feed ids, retrieve the latest VAA for each. The returned VAA(s) can\nbe submitted to the Pyth contract to update the on-chain price. If VAAs are not found for every\nprovided price ID the call will fail.","operationId":"latest_vaas","parameters":[{"name":"ids[]","in":"query","description":"Get the VAAs for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"}],"responses":{"200":{"description":"VAAs retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}},"example":["UE5BVQEAAAADuAEAAAADDQC1H7meY5fTed0FsykIb8dt+7nKpbuzfvU2DplDi+dcUl8MC+UIkS65+rkiq+zmNBxE2gaxkBkjdIicZ/fBo+X7AAEqp+WtlWb84np8jJfLpuQ2W+l5KXTigsdAhz5DyVgU3xs+EnaIZxBwcE7EKzjMam+V9rlRy0CGsiQ1kjqqLzfAAQLsoVO0Vu5gVmgc8XGQ7xYhoz36rsBgMjG+e3l/B01esQi/KzPuBf/Ar8Sg5aSEOvEU0muSDb+KIr6d8eEC+FtcAAPZEaBSt4ysXVL84LUcJemQD3SiG30kOfUpF8o7/wI2M2Jf/LyCsbKEQUyLtLbZqnJBSfZJR5AMsrnHDqngMLEGAAY4UDG9GCpRuPvg8hOlsrXuPP3zq7yVPqyG0SG+bNo8rEhP5b1vXlHdG4bZsutX47d5VZ6xnFROKudx3T3/fnWUAQgAU1+kUFc3e0ZZeX1dLRVEryNIVyxMQIcxWwdey+jlIAYowHRM0fJX3Scs80OnT/CERwh5LMlFyU1w578NqxW+AQl2E/9fxjgUTi8crOfDpwsUsmOWw0+Q5OUGhELv/2UZoHAjsaw9OinWUggKACo4SdpPlHYldoWF+J2yGWOW+F4iAQre4c+ocb6a9uSWOnTldFkioqhd9lhmV542+VonCvuy4Tu214NP+2UNd/4Kk3KJCf3iziQJrCBeLi1cLHdLUikgAQtvRFR/nepcF9legl+DywAkUHi5/1MNjlEQvlHyh2XbMiS85yu7/9LgM6Sr+0ukfZY5mSkOcvUkpHn+T+Nw/IrQAQ7lty5luvKUmBpI3ITxSmojJ1aJ0kj/dc0ZcQk+/qo0l0l3/eRLkYjw5j+MZKA8jEubrHzUCke98eSoj8l08+PGAA+DAKNtCwNZe4p6J1Ucod8Lo5RKFfA84CPLVyEzEPQFZ25U9grUK6ilF4GhEia/ndYXLBt3PGW3qa6CBBPM7rH3ABGAyYEtUwzB4CeVedA5o6cKpjRkIebqDNSOqltsr+w7kXdfFVtsK2FMGFZNt5rbpIR+ppztoJ6eOKHmKmi9nQ99ARKkTxRErOs9wJXNHaAuIRV38o1pxRrlQRzGsRuKBqxcQEpC8OPFpyKYcp6iD5l7cO/gRDTamLFyhiUBwKKMP07FAWTEJv8AAAAAABrhAfrtrFhR4yubI7X5QRqMK6xKrj7U3XuBHdGnLqSqcQAAAAAAGp0GAUFVV1YAAAAAAAUYUmIAACcQBsfKUtr4PgZbIXRxRESU79PjE4IBAFUA5i32yLSoX+GmfbRNwS3l2zMPesZrctxliv7fD0pBW0MAAAKqqMJFwAAAAAAqE/NX////+AAAAABkxCb7AAAAAGTEJvoAAAKqIcWxYAAAAAAlR5m4CP/mPsh1IezjYpDlJ4GRb5q4fTs2LjtyO6M0XgVimrIQ4kSh1qg7JKW4gbGkyRntVFR9JO/GNd3FPDit0BK6M+JzXh/h12YNCz9wxlZTvXrNtWNbzqT+91pvl5cphhSPMfAHyEzTPaGR9tKDy9KNu56pmhaY32d2vfEWQmKo22guegeR98oDxs67MmnUraco46a3zEnac2Bm80pasUgMO24="]}}}},"deprecated":true}},"/api/price_feed_ids":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/price_feeds instead**","description":"**Deprecated: use /v2/price_feeds instead**\n\nGet the set of price feed IDs.\n\nThis endpoint fetches all of the price feed IDs for which price updates can be retrieved.","operationId":"price_feed_ids","responses":{"200":{"description":"Price feed ids retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RpcPriceIdentifier"}}}}}},"deprecated":true}},"/v2/price_feeds":{"get":{"tags":["rest"],"summary":"Get the set of price feeds.","description":"Get the set of price feeds.\n\nThis endpoint fetches all price feeds from the Pyth network. It can be filtered by asset type\nand query string.","operationId":"price_feeds_metadata","parameters":[{"name":"query","in":"query","description":"Optional query parameter. If provided, the results will be filtered to all price feeds whose symbol contains the query string. Query string is case insensitive.","required":false,"schema":{"type":"string","nullable":true},"example":"bitcoin"},{"name":"asset_type","in":"query","description":"Optional query parameter. If provided, the results will be filtered by asset type. Possible values are crypto, equity, fx, metal, rates. Filter string is case insensitive.","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/AssetType"}],"nullable":true},"example":"crypto"}],"responses":{"200":{"description":"Price feeds metadata retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceFeedMetadata"}}}}}}}},"/v2/updates/price/latest":{"get":{"tags":["rest"],"summary":"Get the latest price updates by price feed id.","description":"Get the latest price updates by price feed id.\n\nGiven a collection of price feed ids, retrieve the latest Pyth price for each price feed.","operationId":"latest_price_updates","parameters":[{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the price update in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed price update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceUpdate"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v2/updates/price/stream":{"get":{"tags":["rest"],"summary":"SSE route handler for streaming price updates.","description":"SSE route handler for streaming price updates.","operationId":"price_stream_sse_handler","parameters":[{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the price update in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed price update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"allow_unordered","in":"query","description":"If true, allows unordered price updates to be included in the stream.","required":false,"schema":{"type":"boolean"}},{"name":"benchmarks_only","in":"query","description":"If true, only include benchmark prices that are the initial price updates at a given timestamp (i.e., prevPubTime != pubTime).","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceUpdate"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v2/updates/price/{publish_time}":{"get":{"tags":["rest"],"summary":"Get the latest price updates by price feed id.","description":"Get the latest price updates by price feed id.\n\nGiven a collection of price feed ids, retrieve the latest Pyth price for each price feed.","operationId":"timestamp_price_updates","parameters":[{"name":"publish_time","in":"path","description":"The unix timestamp in seconds. This endpoint will return the first update whose\npublish_time is >= the provided value.","required":true,"schema":{"type":"integer","format":"int64"},"example":1717632000},{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the price update in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed price update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceUpdate"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v2/updates/publisher_stake_caps/latest":{"get":{"tags":["rest"],"summary":"Get the most recent publisher stake caps update data.","description":"Get the most recent publisher stake caps update data.","operationId":"latest_publisher_stake_caps","parameters":[{"name":"encoding","in":"query","description":"Get the most recent publisher stake caps update data.\nOptional encoding type. If true, return the message in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Publisher stake caps update data retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestPublisherStakeCapsUpdateDataResponse"}}}}}}},"/v2/updates/twap/{window_seconds}/latest":{"get":{"tags":["rest"],"summary":"Get the latest TWAP by price feed id with a custom time window.","description":"Get the latest TWAP by price feed id with a custom time window.\n\nGiven a collection of price feed ids, retrieve the latest Pyth TWAP price for each price feed.","operationId":"latest_twaps","parameters":[{"name":"window_seconds","in":"path","description":"The time window in seconds over which to calculate the TWAP, ending at the current time.\nFor example, a value of 300 would return the most recent 5 minute TWAP.\nMust be greater than 0 and less than or equal to 600 seconds (10 minutes).","required":true,"schema":{"type":"integer","format":"int64","minimum":0},"example":"300"},{"name":"ids[]","in":"query","description":"Get the most recent TWAP (time weighted average price) for this set of price feed ids.\nThe `binary` data contains the signed start & end cumulative price updates needed to calculate\nthe TWAPs on-chain. The `parsed` data contains the calculated TWAPs.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the cumulative price updates in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the calculated TWAP in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"TWAPs retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwapsResponse"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"AssetType":{"type":"string","enum":["crypto","fx","equity","metal","rates","crypto_redemption_rate"]},"BinaryUpdate":{"type":"object","required":["encoding","data"],"properties":{"data":{"type":"array","items":{"type":"string"}},"encoding":{"$ref":"#/components/schemas/EncodingType"}}},"EncodingType":{"type":"string","enum":["hex","base64"]},"GetVaaCcipInput":{"type":"string","format":"binary"},"GetVaaCcipResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"string"}}},"GetVaaResponse":{"type":"object","required":["vaa","publishTime"],"properties":{"publishTime":{"type":"integer","format":"int64","example":1690576641},"vaa":{"type":"string","description":"The VAA binary represented as a base64 string.","example":"UE5BVQEAAAADuAEAAAADDQC1H7meY5fTed0FsykIb8dt+7nKpbuzfvU2DplDi+dcUl8MC+UIkS65+rkiq+zmNBxE2gaxkBkjdIicZ/fBo+X7AAEqp+WtlWb84np8jJfLpuQ2W+l5KXTigsdAhz5DyVgU3xs+EnaIZxBwcE7EKzjMam+V9rlRy0CGsiQ1kjqqLzfAAQLsoVO0Vu5gVmgc8XGQ7xYhoz36rsBgMjG+e3l/B01esQi/KzPuBf/Ar8Sg5aSEOvEU0muSDb+KIr6d8eEC+FtcAAPZEaBSt4ysXVL84LUcJemQD3SiG30kOfUpF8o7/wI2M2Jf/LyCsbKEQUyLtLbZqnJBSfZJR5AMsrnHDqngMLEGAAY4UDG9GCpRuPvg8hOlsrXuPP3zq7yVPqyG0SG+bNo8rEhP5b1vXlHdG4bZsutX47d5VZ6xnFROKudx3T3/fnWUAQgAU1+kUFc3e0ZZeX1dLRVEryNIVyxMQIcxWwdey+jlIAYowHRM0fJX3Scs80OnT/CERwh5LMlFyU1w578NqxW+AQl2E/9fxjgUTi8crOfDpwsUsmOWw0+Q5OUGhELv/2UZoHAjsaw9OinWUggKACo4SdpPlHYldoWF+J2yGWOW+F4iAQre4c+ocb6a9uSWOnTldFkioqhd9lhmV542+VonCvuy4Tu214NP+2UNd/4Kk3KJCf3iziQJrCBeLi1cLHdLUikgAQtvRFR/nepcF9legl+DywAkUHi5/1MNjlEQvlHyh2XbMiS85yu7/9LgM6Sr+0ukfZY5mSkOcvUkpHn+T+Nw/IrQAQ7lty5luvKUmBpI3ITxSmojJ1aJ0kj/dc0ZcQk+/qo0l0l3/eRLkYjw5j+MZKA8jEubrHzUCke98eSoj8l08+PGAA+DAKNtCwNZe4p6J1Ucod8Lo5RKFfA84CPLVyEzEPQFZ25U9grUK6ilF4GhEia/ndYXLBt3PGW3qa6CBBPM7rH3ABGAyYEtUwzB4CeVedA5o6cKpjRkIebqDNSOqltsr+w7kXdfFVtsK2FMGFZNt5rbpIR+ppztoJ6eOKHmKmi9nQ99ARKkTxRErOs9wJXNHaAuIRV38o1pxRrlQRzGsRuKBqxcQEpC8OPFpyKYcp6iD5l7cO/gRDTamLFyhiUBwKKMP07FAWTEJv8AAAAAABrhAfrtrFhR4yubI7X5QRqMK6xKrj7U3XuBHdGnLqSqcQAAAAAAGp0GAUFVV1YAAAAAAAUYUmIAACcQBsfKUtr4PgZbIXRxRESU79PjE4IBAFUA5i32yLSoX+GmfbRNwS3l2zMPesZrctxliv7fD0pBW0MAAAKqqMJFwAAAAAAqE/NX////+AAAAABkxCb7AAAAAGTEJvoAAAKqIcWxYAAAAAAlR5m4CP/mPsh1IezjYpDlJ4GRb5q4fTs2LjtyO6M0XgVimrIQ4kSh1qg7JKW4gbGkyRntVFR9JO/GNd3FPDit0BK6M+JzXh/h12YNCz9wxlZTvXrNtWNbzqT+91pvl5cphhSPMfAHyEzTPaGR9tKDy9KNu56pmhaY32d2vfEWQmKo22guegeR98oDxs67MmnUraco46a3zEnac2Bm80pasUgMO24="}}},"LatestPublisherStakeCapsUpdateDataResponse":{"type":"object","required":["binary"],"properties":{"binary":{"$ref":"#/components/schemas/BinaryUpdate"},"parsed":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPublisherStakeCapsUpdate"},"nullable":true}}},"ParsedPriceFeedTwap":{"type":"object","required":["id","start_timestamp","end_timestamp","twap","down_slots_ratio"],"properties":{"down_slots_ratio":{"type":"string","description":"The % of slots where the network was down over the TWAP window.\nA value of zero indicates no slots were missed over the window, and\na value of one indicates that every slot was missed over the window.\nThis is a float value stored as a string to avoid precision loss."},"end_timestamp":{"type":"integer","format":"int64","description":"The end unix timestamp of the window"},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"},"start_timestamp":{"type":"integer","format":"int64","description":"The start unix timestamp of the window"},"twap":{"$ref":"#/components/schemas/RpcPrice"}}},"ParsedPriceUpdate":{"type":"object","required":["id","price","ema_price","metadata"],"properties":{"ema_price":{"$ref":"#/components/schemas/RpcPrice"},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"},"metadata":{"$ref":"#/components/schemas/RpcPriceFeedMetadataV2"},"price":{"$ref":"#/components/schemas/RpcPrice"}}},"ParsedPublisherStakeCap":{"type":"object","required":["publisher","cap"],"properties":{"cap":{"type":"integer","format":"int64","minimum":0},"publisher":{"type":"string"}}},"ParsedPublisherStakeCapsUpdate":{"type":"object","required":["publisher_stake_caps"],"properties":{"publisher_stake_caps":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPublisherStakeCap"}}}},"PriceFeedMetadata":{"type":"object","required":["id","attributes"],"properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"}},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"}}},"PriceIdInput":{"type":"string","description":"A price id is a 32-byte hex string, optionally prefixed with \"0x\".\nPrice ids are case insensitive.\n\nExamples:\n* 0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43\n* e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43\n\nSee https://pyth.network/developers/price-feed-ids for a list of all price feed ids.","example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},"PriceUpdate":{"type":"object","required":["binary"],"properties":{"binary":{"$ref":"#/components/schemas/BinaryUpdate"},"parsed":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPriceUpdate"},"nullable":true}}},"RpcPrice":{"type":"object","description":"A price with a degree of uncertainty at a certain time, represented as a price +- a confidence\ninterval.\n\nThe confidence interval roughly corresponds to the standard error of a normal distribution.\nBoth the price and confidence are stored in a fixed-point numeric representation, `x *\n10^expo`, where `expo` is the exponent. For example:","required":["price","conf","expo","publish_time"],"properties":{"conf":{"type":"string","description":"The confidence interval associated with the price, stored as a string to avoid precision loss","example":"509500001"},"expo":{"type":"integer","format":"int32","description":"The exponent associated with both the price and confidence interval. Multiply those values\nby `10^expo` to get the real value.","example":-8},"price":{"type":"string","description":"The price itself, stored as a string to avoid precision loss","example":"2920679499999"},"publish_time":{"type":"integer","format":"int64","description":"When the price was published. The `publish_time` is a unix timestamp, i.e., the number of\nseconds since the Unix epoch (00:00:00 UTC on 1 Jan 1970).","example":1717632000}}},"RpcPriceFeed":{"type":"object","required":["id","price","ema_price"],"properties":{"ema_price":{"$ref":"#/components/schemas/RpcPrice"},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"},"metadata":{"allOf":[{"$ref":"#/components/schemas/RpcPriceFeedMetadata"}],"nullable":true},"price":{"$ref":"#/components/schemas/RpcPrice"},"vaa":{"type":"string","description":"The VAA binary represented as a base64 string.","example":"UE5BVQEAAAADuAEAAAADDQC1H7meY5fTed0FsykIb8dt+7nKpbuzfvU2DplDi+dcUl8MC+UIkS65+rkiq+zmNBxE2gaxkBkjdIicZ/fBo+X7AAEqp+WtlWb84np8jJfLpuQ2W+l5KXTigsdAhz5DyVgU3xs+EnaIZxBwcE7EKzjMam+V9rlRy0CGsiQ1kjqqLzfAAQLsoVO0Vu5gVmgc8XGQ7xYhoz36rsBgMjG+e3l/B01esQi/KzPuBf/Ar8Sg5aSEOvEU0muSDb+KIr6d8eEC+FtcAAPZEaBSt4ysXVL84LUcJemQD3SiG30kOfUpF8o7/wI2M2Jf/LyCsbKEQUyLtLbZqnJBSfZJR5AMsrnHDqngMLEGAAY4UDG9GCpRuPvg8hOlsrXuPP3zq7yVPqyG0SG+bNo8rEhP5b1vXlHdG4bZsutX47d5VZ6xnFROKudx3T3/fnWUAQgAU1+kUFc3e0ZZeX1dLRVEryNIVyxMQIcxWwdey+jlIAYowHRM0fJX3Scs80OnT/CERwh5LMlFyU1w578NqxW+AQl2E/9fxjgUTi8crOfDpwsUsmOWw0+Q5OUGhELv/2UZoHAjsaw9OinWUggKACo4SdpPlHYldoWF+J2yGWOW+F4iAQre4c+ocb6a9uSWOnTldFkioqhd9lhmV542+VonCvuy4Tu214NP+2UNd/4Kk3KJCf3iziQJrCBeLi1cLHdLUikgAQtvRFR/nepcF9legl+DywAkUHi5/1MNjlEQvlHyh2XbMiS85yu7/9LgM6Sr+0ukfZY5mSkOcvUkpHn+T+Nw/IrQAQ7lty5luvKUmBpI3ITxSmojJ1aJ0kj/dc0ZcQk+/qo0l0l3/eRLkYjw5j+MZKA8jEubrHzUCke98eSoj8l08+PGAA+DAKNtCwNZe4p6J1Ucod8Lo5RKFfA84CPLVyEzEPQFZ25U9grUK6ilF4GhEia/ndYXLBt3PGW3qa6CBBPM7rH3ABGAyYEtUwzB4CeVedA5o6cKpjRkIebqDNSOqltsr+w7kXdfFVtsK2FMGFZNt5rbpIR+ppztoJ6eOKHmKmi9nQ99ARKkTxRErOs9wJXNHaAuIRV38o1pxRrlQRzGsRuKBqxcQEpC8OPFpyKYcp6iD5l7cO/gRDTamLFyhiUBwKKMP07FAWTEJv8AAAAAABrhAfrtrFhR4yubI7X5QRqMK6xKrj7U3XuBHdGnLqSqcQAAAAAAGp0GAUFVV1YAAAAAAAUYUmIAACcQBsfKUtr4PgZbIXRxRESU79PjE4IBAFUA5i32yLSoX+GmfbRNwS3l2zMPesZrctxliv7fD0pBW0MAAAKqqMJFwAAAAAAqE/NX////+AAAAABkxCb7AAAAAGTEJvoAAAKqIcWxYAAAAAAlR5m4CP/mPsh1IezjYpDlJ4GRb5q4fTs2LjtyO6M0XgVimrIQ4kSh1qg7JKW4gbGkyRntVFR9JO/GNd3FPDit0BK6M+JzXh/h12YNCz9wxlZTvXrNtWNbzqT+91pvl5cphhSPMfAHyEzTPaGR9tKDy9KNu56pmhaY32d2vfEWQmKo22guegeR98oDxs67MmnUraco46a3zEnac2Bm80pasUgMO24=","nullable":true}}},"RpcPriceFeedMetadata":{"type":"object","required":["emitter_chain"],"properties":{"emitter_chain":{"type":"integer","format":"int32","example":26,"minimum":0},"prev_publish_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"price_service_receive_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"slot":{"type":"integer","format":"int64","example":85480034,"nullable":true,"minimum":0}}},"RpcPriceFeedMetadataV2":{"type":"object","properties":{"prev_publish_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"proof_available_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"slot":{"type":"integer","format":"int64","example":85480034,"nullable":true,"minimum":0}}},"RpcPriceIdentifier":{"type":"string","example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},"TwapsResponse":{"type":"object","required":["binary"],"properties":{"binary":{"$ref":"#/components/schemas/BinaryUpdate"},"parsed":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPriceFeedTwap"},"description":"The calculated TWAPs for each price ID","nullable":true}}}}},"tags":[{"name":"hermes","description":"Pyth Real-Time Pricing API"}]} \ No newline at end of file +{"openapi":"3.0.3","info":{"title":"hermes","description":"Hermes is an agent that provides Verified Prices from the Pythnet Pyth Oracle.","license":{"name":""},"version":"0.8.2"},"paths":{"/api/get_price_feed":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/{publish_time} instead**","description":"**Deprecated: use /v2/updates/price/{publish_time} instead**\n\nGet a price update for a price feed with a specific timestamp\n\nGiven a price feed id and timestamp, retrieve the Pyth price update closest to that timestamp.","operationId":"get_price_feed","parameters":[{"name":"id","in":"query","description":"The id of the price feed to get an update for.","required":true,"schema":{"$ref":"#/components/schemas/PriceIdInput"}},{"name":"publish_time","in":"query","description":"The unix timestamp in seconds. This endpoint will return the first update whose\npublish_time is >= the provided value.","required":true,"schema":{"type":"integer","format":"int64"},"example":1717632000},{"name":"verbose","in":"query","description":"If true, include the `metadata` field in the response with additional metadata about the\nprice update.","required":false,"schema":{"type":"boolean"}},{"name":"binary","in":"query","description":"If true, include the binary price update in the `vaa` field of each returned feed. This\nbinary data can be submitted to Pyth contracts to update the on-chain price.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price update retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RpcPriceFeed"}}}}},"deprecated":true}},"/api/get_vaa":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/{publish_time} instead**","description":"**Deprecated: use /v2/updates/price/{publish_time} instead**\n\nGet a VAA for a price feed with a specific timestamp\n\nGiven a price feed id and timestamp, retrieve the Pyth price update closest to that timestamp.","operationId":"get_vaa","parameters":[{"name":"id","in":"query","description":"The ID of the price feed to get an update for.","required":true,"schema":{"$ref":"#/components/schemas/PriceIdInput"}},{"name":"publish_time","in":"query","description":"The unix timestamp in seconds. This endpoint will return the first update whose\npublish_time is >= the provided value.","required":true,"schema":{"type":"integer","format":"int64"},"example":1690576641}],"responses":{"200":{"description":"Price update retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVaaResponse"}}}},"404":{"description":"Price update not found","content":{"text/plain":{"schema":{"type":"string"}}}}},"deprecated":true}},"/api/get_vaa_ccip":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/{publish_time} instead**","description":"**Deprecated: use /v2/updates/price/{publish_time} instead**\n\nGet a VAA for a price feed using CCIP\n\nThis endpoint accepts a single argument which is a hex-encoded byte string of the following form:\n`<price feed id (32 bytes> <publish time as unix timestamp (8 bytes, big endian)>`","operationId":"get_vaa_ccip","parameters":[{"name":"data","in":"query","required":true,"schema":{"$ref":"#/components/schemas/GetVaaCcipInput"}}],"responses":{"200":{"description":"Price update retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVaaCcipResponse"}}}}},"deprecated":true}},"/api/latest_price_feeds":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/latest instead**","description":"**Deprecated: use /v2/updates/price/latest instead**\n\nGet the latest price updates by price feed id.\n\nGiven a collection of price feed ids, retrieve the latest Pyth price for each price feed.","operationId":"latest_price_feeds","parameters":[{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"verbose","in":"query","description":"If true, include the `metadata` field in the response with additional metadata about\nthe price update.","required":false,"schema":{"type":"boolean"}},{"name":"binary","in":"query","description":"If true, include the binary price update in the `vaa` field of each returned feed.\nThis binary data can be submitted to Pyth contracts to update the on-chain price.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RpcPriceFeed"}}}}}},"deprecated":true}},"/api/latest_vaas":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/updates/price/latest instead**","description":"**Deprecated: use /v2/updates/price/latest instead**\n\nGet VAAs for a set of price feed ids.\n\nGiven a collection of price feed ids, retrieve the latest VAA for each. The returned VAA(s) can\nbe submitted to the Pyth contract to update the on-chain price. If VAAs are not found for every\nprovided price ID the call will fail.","operationId":"latest_vaas","parameters":[{"name":"ids[]","in":"query","description":"Get the VAAs for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"}],"responses":{"200":{"description":"VAAs retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}},"example":["UE5BVQEAAAADuAEAAAADDQC1H7meY5fTed0FsykIb8dt+7nKpbuzfvU2DplDi+dcUl8MC+UIkS65+rkiq+zmNBxE2gaxkBkjdIicZ/fBo+X7AAEqp+WtlWb84np8jJfLpuQ2W+l5KXTigsdAhz5DyVgU3xs+EnaIZxBwcE7EKzjMam+V9rlRy0CGsiQ1kjqqLzfAAQLsoVO0Vu5gVmgc8XGQ7xYhoz36rsBgMjG+e3l/B01esQi/KzPuBf/Ar8Sg5aSEOvEU0muSDb+KIr6d8eEC+FtcAAPZEaBSt4ysXVL84LUcJemQD3SiG30kOfUpF8o7/wI2M2Jf/LyCsbKEQUyLtLbZqnJBSfZJR5AMsrnHDqngMLEGAAY4UDG9GCpRuPvg8hOlsrXuPP3zq7yVPqyG0SG+bNo8rEhP5b1vXlHdG4bZsutX47d5VZ6xnFROKudx3T3/fnWUAQgAU1+kUFc3e0ZZeX1dLRVEryNIVyxMQIcxWwdey+jlIAYowHRM0fJX3Scs80OnT/CERwh5LMlFyU1w578NqxW+AQl2E/9fxjgUTi8crOfDpwsUsmOWw0+Q5OUGhELv/2UZoHAjsaw9OinWUggKACo4SdpPlHYldoWF+J2yGWOW+F4iAQre4c+ocb6a9uSWOnTldFkioqhd9lhmV542+VonCvuy4Tu214NP+2UNd/4Kk3KJCf3iziQJrCBeLi1cLHdLUikgAQtvRFR/nepcF9legl+DywAkUHi5/1MNjlEQvlHyh2XbMiS85yu7/9LgM6Sr+0ukfZY5mSkOcvUkpHn+T+Nw/IrQAQ7lty5luvKUmBpI3ITxSmojJ1aJ0kj/dc0ZcQk+/qo0l0l3/eRLkYjw5j+MZKA8jEubrHzUCke98eSoj8l08+PGAA+DAKNtCwNZe4p6J1Ucod8Lo5RKFfA84CPLVyEzEPQFZ25U9grUK6ilF4GhEia/ndYXLBt3PGW3qa6CBBPM7rH3ABGAyYEtUwzB4CeVedA5o6cKpjRkIebqDNSOqltsr+w7kXdfFVtsK2FMGFZNt5rbpIR+ppztoJ6eOKHmKmi9nQ99ARKkTxRErOs9wJXNHaAuIRV38o1pxRrlQRzGsRuKBqxcQEpC8OPFpyKYcp6iD5l7cO/gRDTamLFyhiUBwKKMP07FAWTEJv8AAAAAABrhAfrtrFhR4yubI7X5QRqMK6xKrj7U3XuBHdGnLqSqcQAAAAAAGp0GAUFVV1YAAAAAAAUYUmIAACcQBsfKUtr4PgZbIXRxRESU79PjE4IBAFUA5i32yLSoX+GmfbRNwS3l2zMPesZrctxliv7fD0pBW0MAAAKqqMJFwAAAAAAqE/NX////+AAAAABkxCb7AAAAAGTEJvoAAAKqIcWxYAAAAAAlR5m4CP/mPsh1IezjYpDlJ4GRb5q4fTs2LjtyO6M0XgVimrIQ4kSh1qg7JKW4gbGkyRntVFR9JO/GNd3FPDit0BK6M+JzXh/h12YNCz9wxlZTvXrNtWNbzqT+91pvl5cphhSPMfAHyEzTPaGR9tKDy9KNu56pmhaY32d2vfEWQmKo22guegeR98oDxs67MmnUraco46a3zEnac2Bm80pasUgMO24="]}}}},"deprecated":true}},"/api/price_feed_ids":{"get":{"tags":["rest"],"summary":"**Deprecated: use /v2/price_feeds instead**","description":"**Deprecated: use /v2/price_feeds instead**\n\nGet the set of price feed IDs.\n\nThis endpoint fetches all of the price feed IDs for which price updates can be retrieved.","operationId":"price_feed_ids","responses":{"200":{"description":"Price feed ids retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RpcPriceIdentifier"}}}}}},"deprecated":true}},"/v2/price_feeds":{"get":{"tags":["rest"],"summary":"Get the set of price feeds.","description":"Get the set of price feeds.\n\nThis endpoint fetches all price feeds from the Pyth network. It can be filtered by asset type\nand query string.","operationId":"price_feeds_metadata","parameters":[{"name":"query","in":"query","description":"Optional query parameter. If provided, the results will be filtered to all price feeds whose symbol contains the query string. Query string is case insensitive.","required":false,"schema":{"type":"string","nullable":true},"example":"bitcoin"},{"name":"asset_type","in":"query","description":"Optional query parameter. If provided, the results will be filtered by asset type. Possible values are crypto, equity, fx, metal, rates. Filter string is case insensitive.","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/AssetType"}],"nullable":true},"example":"crypto"}],"responses":{"200":{"description":"Price feeds metadata retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceFeedMetadata"}}}}}}}},"/v2/updates/price/latest":{"get":{"tags":["rest"],"summary":"Get the latest price updates by price feed id.","description":"Get the latest price updates by price feed id.\n\nGiven a collection of price feed ids, retrieve the latest Pyth price for each price feed.","operationId":"latest_price_updates","parameters":[{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the price update in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed price update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceUpdate"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v2/updates/price/stream":{"get":{"tags":["rest"],"summary":"SSE route handler for streaming price updates.","description":"SSE route handler for streaming price updates.","operationId":"price_stream_sse_handler","parameters":[{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the price update in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed price update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"allow_unordered","in":"query","description":"If true, allows unordered price updates to be included in the stream.","required":false,"schema":{"type":"boolean"}},{"name":"benchmarks_only","in":"query","description":"If true, only include benchmark prices that are the initial price updates at a given timestamp (i.e., prevPubTime != pubTime).","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceUpdate"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v2/updates/price/{publish_time}":{"get":{"tags":["rest"],"summary":"Get the latest price updates by price feed id.","description":"Get the latest price updates by price feed id.\n\nGiven a collection of price feed ids, retrieve the latest Pyth price for each price feed.","operationId":"timestamp_price_updates","parameters":[{"name":"publish_time","in":"path","description":"The unix timestamp in seconds. This endpoint will return the first update whose\npublish_time is >= the provided value.","required":true,"schema":{"type":"integer","format":"int64"},"example":1717632000},{"name":"ids[]","in":"query","description":"Get the most recent price update for this set of price feed ids.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the price update in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed price update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Price updates retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceUpdate"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v2/updates/publisher_stake_caps/latest":{"get":{"tags":["rest"],"summary":"Get the most recent publisher stake caps update data.","description":"Get the most recent publisher stake caps update data.","operationId":"latest_publisher_stake_caps","parameters":[{"name":"encoding","in":"query","description":"Get the most recent publisher stake caps update data.\nOptional encoding type. If true, return the message in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the parsed update in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Publisher stake caps update data retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestPublisherStakeCapsUpdateDataResponse"}}}}}}},"/v2/updates/twap/{window_seconds}/latest":{"get":{"tags":["rest"],"summary":"Get the latest TWAP by price feed id with a custom time window.","description":"Get the latest TWAP by price feed id with a custom time window.\n\nGiven a collection of price feed ids, retrieve the latest Pyth TWAP price for each price feed.","operationId":"latest_twaps","parameters":[{"name":"window_seconds","in":"path","description":"The time window in seconds over which to calculate the TWAP, ending at the current time.\nFor example, a value of 300 would return the most recent 5 minute TWAP.\nMust be greater than 0 and less than or equal to 600 seconds (10 minutes).","required":true,"schema":{"type":"integer","format":"int64","minimum":0},"example":"300"},{"name":"ids[]","in":"query","description":"Get the most recent TWAP (time weighted average price) for this set of price feed ids.\nThe `binary` data contains the signed start & end cumulative price updates needed to calculate\nthe TWAPs on-chain. The `parsed` data contains the calculated TWAPs.\n\nThis parameter can be provided multiple times to retrieve multiple price updates,\nfor example see the following query string:\n\n```\n?ids[]=a12...&ids[]=b4c...\n```","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceIdInput"}},"example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},{"name":"encoding","in":"query","description":"Optional encoding type. If true, return the cumulative price updates in the encoding specified by the encoding parameter. Default is `hex`.","required":false,"schema":{"$ref":"#/components/schemas/EncodingType"}},{"name":"parsed","in":"query","description":"If true, include the calculated TWAP in the `parsed` field of each returned feed. Default is `true`.","required":false,"schema":{"type":"boolean"}},{"name":"ignore_invalid_price_ids","in":"query","description":"If true, invalid price IDs in the `ids` parameter are ignored. Only applicable to the v2 APIs. Default is `false`.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"TWAPs retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwapsResponse"}}}},"404":{"description":"Price ids not found","content":{"text/plain":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"AssetType":{"type":"string","enum":["crypto","fx","equity","metal","rates","crypto_redemption_rate"]},"BinaryUpdate":{"type":"object","required":["encoding","data"],"properties":{"data":{"type":"array","items":{"type":"string"}},"encoding":{"$ref":"#/components/schemas/EncodingType"}}},"EncodingType":{"type":"string","enum":["hex","base64"]},"GetVaaCcipInput":{"type":"string","format":"binary"},"GetVaaCcipResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"string"}}},"GetVaaResponse":{"type":"object","required":["vaa","publishTime"],"properties":{"publishTime":{"type":"integer","format":"int64","example":1690576641},"vaa":{"type":"string","description":"The VAA binary represented as a base64 string.","example":"UE5BVQEAAAADuAEAAAADDQC1H7meY5fTed0FsykIb8dt+7nKpbuzfvU2DplDi+dcUl8MC+UIkS65+rkiq+zmNBxE2gaxkBkjdIicZ/fBo+X7AAEqp+WtlWb84np8jJfLpuQ2W+l5KXTigsdAhz5DyVgU3xs+EnaIZxBwcE7EKzjMam+V9rlRy0CGsiQ1kjqqLzfAAQLsoVO0Vu5gVmgc8XGQ7xYhoz36rsBgMjG+e3l/B01esQi/KzPuBf/Ar8Sg5aSEOvEU0muSDb+KIr6d8eEC+FtcAAPZEaBSt4ysXVL84LUcJemQD3SiG30kOfUpF8o7/wI2M2Jf/LyCsbKEQUyLtLbZqnJBSfZJR5AMsrnHDqngMLEGAAY4UDG9GCpRuPvg8hOlsrXuPP3zq7yVPqyG0SG+bNo8rEhP5b1vXlHdG4bZsutX47d5VZ6xnFROKudx3T3/fnWUAQgAU1+kUFc3e0ZZeX1dLRVEryNIVyxMQIcxWwdey+jlIAYowHRM0fJX3Scs80OnT/CERwh5LMlFyU1w578NqxW+AQl2E/9fxjgUTi8crOfDpwsUsmOWw0+Q5OUGhELv/2UZoHAjsaw9OinWUggKACo4SdpPlHYldoWF+J2yGWOW+F4iAQre4c+ocb6a9uSWOnTldFkioqhd9lhmV542+VonCvuy4Tu214NP+2UNd/4Kk3KJCf3iziQJrCBeLi1cLHdLUikgAQtvRFR/nepcF9legl+DywAkUHi5/1MNjlEQvlHyh2XbMiS85yu7/9LgM6Sr+0ukfZY5mSkOcvUkpHn+T+Nw/IrQAQ7lty5luvKUmBpI3ITxSmojJ1aJ0kj/dc0ZcQk+/qo0l0l3/eRLkYjw5j+MZKA8jEubrHzUCke98eSoj8l08+PGAA+DAKNtCwNZe4p6J1Ucod8Lo5RKFfA84CPLVyEzEPQFZ25U9grUK6ilF4GhEia/ndYXLBt3PGW3qa6CBBPM7rH3ABGAyYEtUwzB4CeVedA5o6cKpjRkIebqDNSOqltsr+w7kXdfFVtsK2FMGFZNt5rbpIR+ppztoJ6eOKHmKmi9nQ99ARKkTxRErOs9wJXNHaAuIRV38o1pxRrlQRzGsRuKBqxcQEpC8OPFpyKYcp6iD5l7cO/gRDTamLFyhiUBwKKMP07FAWTEJv8AAAAAABrhAfrtrFhR4yubI7X5QRqMK6xKrj7U3XuBHdGnLqSqcQAAAAAAGp0GAUFVV1YAAAAAAAUYUmIAACcQBsfKUtr4PgZbIXRxRESU79PjE4IBAFUA5i32yLSoX+GmfbRNwS3l2zMPesZrctxliv7fD0pBW0MAAAKqqMJFwAAAAAAqE/NX////+AAAAABkxCb7AAAAAGTEJvoAAAKqIcWxYAAAAAAlR5m4CP/mPsh1IezjYpDlJ4GRb5q4fTs2LjtyO6M0XgVimrIQ4kSh1qg7JKW4gbGkyRntVFR9JO/GNd3FPDit0BK6M+JzXh/h12YNCz9wxlZTvXrNtWNbzqT+91pvl5cphhSPMfAHyEzTPaGR9tKDy9KNu56pmhaY32d2vfEWQmKo22guegeR98oDxs67MmnUraco46a3zEnac2Bm80pasUgMO24="}}},"LatestPublisherStakeCapsUpdateDataResponse":{"type":"object","required":["binary"],"properties":{"binary":{"$ref":"#/components/schemas/BinaryUpdate"},"parsed":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPublisherStakeCapsUpdate"},"nullable":true}}},"ParsedPriceFeedTwap":{"type":"object","required":["id","start_timestamp","end_timestamp","twap","down_slots_ratio"],"properties":{"down_slots_ratio":{"type":"string","description":"The % of slots where the network was down over the TWAP window.\nA value of zero indicates no slots were missed over the window, and\na value of one indicates that every slot was missed over the window.\nThis is a float value stored as a string to avoid precision loss."},"end_timestamp":{"type":"integer","format":"int64","description":"The end unix timestamp of the window"},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"},"start_timestamp":{"type":"integer","format":"int64","description":"The start unix timestamp of the window"},"twap":{"$ref":"#/components/schemas/RpcPrice"}}},"ParsedPriceUpdate":{"type":"object","required":["id","price","ema_price","metadata"],"properties":{"ema_price":{"$ref":"#/components/schemas/RpcPrice"},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"},"metadata":{"$ref":"#/components/schemas/RpcPriceFeedMetadataV2"},"price":{"$ref":"#/components/schemas/RpcPrice"}}},"ParsedPublisherStakeCap":{"type":"object","required":["publisher","cap"],"properties":{"cap":{"type":"integer","format":"int64","minimum":0},"publisher":{"type":"string"}}},"ParsedPublisherStakeCapsUpdate":{"type":"object","required":["publisher_stake_caps"],"properties":{"publisher_stake_caps":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPublisherStakeCap"}}}},"PriceFeedMetadata":{"type":"object","required":["id","attributes"],"properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"}},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"}}},"PriceIdInput":{"type":"string","description":"A price id is a 32-byte hex string, optionally prefixed with \"0x\".\nPrice ids are case insensitive.\n\nExamples:\n* 0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43\n* e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43\n\nSee https://pyth.network/developers/price-feed-ids for a list of all price feed ids.","example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},"PriceUpdate":{"type":"object","required":["binary"],"properties":{"binary":{"$ref":"#/components/schemas/BinaryUpdate"},"parsed":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPriceUpdate"},"nullable":true}}},"RpcPrice":{"type":"object","description":"A price with a degree of uncertainty at a certain time, represented as a price +- a confidence\ninterval.\n\nThe confidence interval roughly corresponds to the standard error of a normal distribution.\nBoth the price and confidence are stored in a fixed-point numeric representation, `x *\n10^expo`, where `expo` is the exponent. For example:","required":["price","conf","expo","publish_time"],"properties":{"conf":{"type":"string","description":"The confidence interval associated with the price, stored as a string to avoid precision loss","example":"509500001"},"expo":{"type":"integer","format":"int32","description":"The exponent associated with both the price and confidence interval. Multiply those values\nby `10^expo` to get the real value.","example":-8},"price":{"type":"string","description":"The price itself, stored as a string to avoid precision loss","example":"2920679499999"},"publish_time":{"type":"integer","format":"int64","description":"When the price was published. The `publish_time` is a unix timestamp, i.e., the number of\nseconds since the Unix epoch (00:00:00 UTC on 1 Jan 1970).","example":1717632000}}},"RpcPriceFeed":{"type":"object","required":["id","price","ema_price"],"properties":{"ema_price":{"$ref":"#/components/schemas/RpcPrice"},"id":{"$ref":"#/components/schemas/RpcPriceIdentifier"},"metadata":{"allOf":[{"$ref":"#/components/schemas/RpcPriceFeedMetadata"}],"nullable":true},"price":{"$ref":"#/components/schemas/RpcPrice"},"vaa":{"type":"string","description":"The VAA binary represented as a base64 string.","example":"UE5BVQEAAAADuAEAAAADDQC1H7meY5fTed0FsykIb8dt+7nKpbuzfvU2DplDi+dcUl8MC+UIkS65+rkiq+zmNBxE2gaxkBkjdIicZ/fBo+X7AAEqp+WtlWb84np8jJfLpuQ2W+l5KXTigsdAhz5DyVgU3xs+EnaIZxBwcE7EKzjMam+V9rlRy0CGsiQ1kjqqLzfAAQLsoVO0Vu5gVmgc8XGQ7xYhoz36rsBgMjG+e3l/B01esQi/KzPuBf/Ar8Sg5aSEOvEU0muSDb+KIr6d8eEC+FtcAAPZEaBSt4ysXVL84LUcJemQD3SiG30kOfUpF8o7/wI2M2Jf/LyCsbKEQUyLtLbZqnJBSfZJR5AMsrnHDqngMLEGAAY4UDG9GCpRuPvg8hOlsrXuPP3zq7yVPqyG0SG+bNo8rEhP5b1vXlHdG4bZsutX47d5VZ6xnFROKudx3T3/fnWUAQgAU1+kUFc3e0ZZeX1dLRVEryNIVyxMQIcxWwdey+jlIAYowHRM0fJX3Scs80OnT/CERwh5LMlFyU1w578NqxW+AQl2E/9fxjgUTi8crOfDpwsUsmOWw0+Q5OUGhELv/2UZoHAjsaw9OinWUggKACo4SdpPlHYldoWF+J2yGWOW+F4iAQre4c+ocb6a9uSWOnTldFkioqhd9lhmV542+VonCvuy4Tu214NP+2UNd/4Kk3KJCf3iziQJrCBeLi1cLHdLUikgAQtvRFR/nepcF9legl+DywAkUHi5/1MNjlEQvlHyh2XbMiS85yu7/9LgM6Sr+0ukfZY5mSkOcvUkpHn+T+Nw/IrQAQ7lty5luvKUmBpI3ITxSmojJ1aJ0kj/dc0ZcQk+/qo0l0l3/eRLkYjw5j+MZKA8jEubrHzUCke98eSoj8l08+PGAA+DAKNtCwNZe4p6J1Ucod8Lo5RKFfA84CPLVyEzEPQFZ25U9grUK6ilF4GhEia/ndYXLBt3PGW3qa6CBBPM7rH3ABGAyYEtUwzB4CeVedA5o6cKpjRkIebqDNSOqltsr+w7kXdfFVtsK2FMGFZNt5rbpIR+ppztoJ6eOKHmKmi9nQ99ARKkTxRErOs9wJXNHaAuIRV38o1pxRrlQRzGsRuKBqxcQEpC8OPFpyKYcp6iD5l7cO/gRDTamLFyhiUBwKKMP07FAWTEJv8AAAAAABrhAfrtrFhR4yubI7X5QRqMK6xKrj7U3XuBHdGnLqSqcQAAAAAAGp0GAUFVV1YAAAAAAAUYUmIAACcQBsfKUtr4PgZbIXRxRESU79PjE4IBAFUA5i32yLSoX+GmfbRNwS3l2zMPesZrctxliv7fD0pBW0MAAAKqqMJFwAAAAAAqE/NX////+AAAAABkxCb7AAAAAGTEJvoAAAKqIcWxYAAAAAAlR5m4CP/mPsh1IezjYpDlJ4GRb5q4fTs2LjtyO6M0XgVimrIQ4kSh1qg7JKW4gbGkyRntVFR9JO/GNd3FPDit0BK6M+JzXh/h12YNCz9wxlZTvXrNtWNbzqT+91pvl5cphhSPMfAHyEzTPaGR9tKDy9KNu56pmhaY32d2vfEWQmKo22guegeR98oDxs67MmnUraco46a3zEnac2Bm80pasUgMO24=","nullable":true}}},"RpcPriceFeedMetadata":{"type":"object","required":["emitter_chain"],"properties":{"emitter_chain":{"type":"integer","format":"int32","example":26,"minimum":0},"prev_publish_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"price_service_receive_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"slot":{"type":"integer","format":"int64","example":85480034,"nullable":true,"minimum":0}}},"RpcPriceFeedMetadataV2":{"type":"object","properties":{"prev_publish_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"proof_available_time":{"type":"integer","format":"int64","example":1717632000,"nullable":true},"slot":{"type":"integer","format":"int64","example":85480034,"nullable":true,"minimum":0}}},"RpcPriceIdentifier":{"type":"string","example":"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"},"TwapsResponse":{"type":"object","required":["binary"],"properties":{"binary":{"$ref":"#/components/schemas/BinaryUpdate"},"parsed":{"type":"array","items":{"$ref":"#/components/schemas/ParsedPriceFeedTwap"},"description":"The calculated TWAPs for each price ID","nullable":true}}}}},"tags":[{"name":"hermes","description":"Pyth Real-Time Pricing API"}]} \ No newline at end of file From f2bf656f82fe64f86942b42d283d81eddc933926 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Thu, 30 Jan 2025 17:33:39 +0700 Subject: [PATCH 46/58] ok --- packages/core/src/types.ts | 55 +++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 7231ec090e2..0a0eede983c 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -408,7 +408,7 @@ export type Handler = ( message: Memory, state?: State, options?: { [key: string]: unknown }, - callback?: HandlerCallback, + callback?: HandlerCallback ) => Promise<unknown>; /** @@ -416,7 +416,7 @@ export type Handler = ( */ export type HandlerCallback = ( response: Content, - files?: any, + files?: any ) => Promise<Memory[]>; /** @@ -425,7 +425,7 @@ export type HandlerCallback = ( export type Validator = ( runtime: IAgentRuntime, message: Memory, - state?: State, + state?: State ) => Promise<boolean>; /** @@ -502,7 +502,7 @@ export interface Provider { get: ( runtime: IAgentRuntime, message: Memory, - state?: State, + state?: State ) => Promise<any>; } @@ -1022,13 +1022,13 @@ export interface IDatabaseAdapter { agentId?: UUID; unique?: boolean; tableName: string; - }, + } ): Promise<Memory[]>; createMemory( memory: Memory, tableName: string, - unique?: boolean, + unique?: boolean ): Promise<void>; removeMemory(memoryId: UUID, tableName: string): Promise<void>; @@ -1038,7 +1038,7 @@ export interface IDatabaseAdapter { countMemories( roomId: UUID, unique?: boolean, - tableName?: string, + tableName?: string ): Promise<number>; getGoals(params: { @@ -1077,13 +1077,13 @@ export interface IDatabaseAdapter { getParticipantUserState( roomId: UUID, - userId: UUID, + userId: UUID ): Promise<"FOLLOWED" | "MUTED" | null>; setParticipantUserState( roomId: UUID, userId: UUID, - state: "FOLLOWED" | "MUTED" | null, + state: "FOLLOWED" | "MUTED" | null ): Promise<void>; createRelationship(params: { userA: UUID; userB: UUID }): Promise<boolean>; @@ -1147,7 +1147,7 @@ export interface IMemoryManager { }): Promise<Memory[]>; getCachedEmbeddings( - content: string, + content: string ): Promise<{ embedding: number[]; levenshtein_score: number }[]>; getMemoryById(id: UUID): Promise<Memory | null>; @@ -1162,7 +1162,7 @@ export interface IMemoryManager { count?: number; roomId: UUID; unique?: boolean; - }, + } ): Promise<Memory[]>; createMemory(memory: Memory, unique?: boolean): Promise<void>; @@ -1294,14 +1294,14 @@ export interface IAgentRuntime { message: Memory, responses: Memory[], state?: State, - callback?: HandlerCallback, + callback?: HandlerCallback ): Promise<void>; evaluate( message: Memory, state?: State, didRespond?: boolean, - callback?: HandlerCallback, + callback?: HandlerCallback ): Promise<string[] | null>; ensureParticipantExists(userId: UUID, roomId: UUID): Promise<void>; @@ -1310,7 +1310,7 @@ export interface IAgentRuntime { userId: UUID, userName: string | null, name: string | null, - source: string | null, + source: string | null ): Promise<void>; registerAction(action: Action): void; @@ -1320,7 +1320,7 @@ export interface IAgentRuntime { roomId: UUID, userName?: string, userScreenName?: string, - source?: string, + source?: string ): Promise<void>; ensureParticipantInRoom(userId: UUID, roomId: UUID): Promise<void>; @@ -1329,7 +1329,7 @@ export interface IAgentRuntime { composeState( message: Memory, - additionalKeys?: { [key: string]: unknown }, + additionalKeys?: { [key: string]: unknown } ): Promise<State>; updateRecentMessageState(state: State): Promise<State>; @@ -1337,14 +1337,14 @@ export interface IAgentRuntime { export interface IImageDescriptionService extends Service { describeImage( - imageUrl: string, + imageUrl: string ): Promise<{ title: string; description: string }>; } export interface ITranscriptionService extends Service { transcribeAttachment(audioBuffer: ArrayBuffer): Promise<string | null>; transcribeAttachmentLocally( - audioBuffer: ArrayBuffer, + audioBuffer: ArrayBuffer ): Promise<string | null>; transcribe(audioBuffer: ArrayBuffer): Promise<string | null>; transcribeLocally(audioBuffer: ArrayBuffer): Promise<string | null>; @@ -1365,7 +1365,7 @@ export interface ITextGenerationService extends Service { stop: string[], frequency_penalty: number, presence_penalty: number, - max_tokens: number, + max_tokens: number ): Promise<any>; queueTextCompletion( context: string, @@ -1373,7 +1373,7 @@ export interface ITextGenerationService extends Service { stop: string[], frequency_penalty: number, presence_penalty: number, - max_tokens: number, + max_tokens: number ): Promise<string>; getEmbeddingResponse(input: string): Promise<number[] | undefined>; } @@ -1382,7 +1382,7 @@ export interface IBrowserService extends Service { closeBrowser(): Promise<void>; getPageContent( url: string, - runtime: IAgentRuntime, + runtime: IAgentRuntime ): Promise<{ title: string; description: string; bodyContent: string }>; } @@ -1401,7 +1401,7 @@ export interface IAwsS3Service extends Service { imagePath: string, subDirectory: string, useSignedUrl: boolean, - expiresIn: number, + expiresIn: number ): Promise<{ success: boolean; url?: string; @@ -1449,7 +1449,7 @@ export interface IIrysService extends Service { getDataFromAnAgent( agentsWalletPublicKeys: string[], tags: GraphQLTag[], - timestamp: IrysTimestamp, + timestamp: IrysTimestamp ): Promise<DataIrysFetchedFromGQL>; workerUploadDataOnIrys( data: any, @@ -1460,13 +1460,13 @@ export interface IIrysService extends Service { validationThreshold: number[], minimumProviders: number[], testProvider: boolean[], - reputation: number[], + reputation: number[] ): Promise<UploadIrysResult>; providerUploadDataOnIrys( data: any, dataType: IrysDataType, serviceCategory: string[], - protocol: string[], + protocol: string[] ): Promise<UploadIrysResult>; } @@ -1477,7 +1477,7 @@ export interface ITeeLogService extends Service { roomId: string, userId: string, type: string, - content: string, + content: string ): Promise<boolean>; } @@ -1547,6 +1547,7 @@ export enum ServiceType { TEE_LOG = "tee_log", GOPLUS_SECURITY = "goplus_security", WEB_SEARCH = "web_search", + NEOCORTEX_NEWS_FEED = "neocortex_news_feed", } export enum LoggingLevel { @@ -1645,7 +1646,7 @@ export interface IVerifiableInferenceAdapter { generateText( context: string, modelClass: string, - options?: VerifiableInferenceOptions, + options?: VerifiableInferenceOptions ): Promise<VerifiableInferenceResult>; /** From a915e378874bad7b59278dcb481972be883f0fb2 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 31 Jan 2025 10:44:15 +0700 Subject: [PATCH 47/58] news puller --- agent/package.json | 4 +- agent/src/index.ts | 8 +- packages/client-twitter/src/index.ts | 7 +- packages/core/src/generation.ts | 2 + packages/plugin-crypto-news/package.json | 8 +- packages/plugin-crypto-news/src/index.ts | 2 + .../src/providers/cryptoNewsData.ts | 175 +++-- .../src/services/NewsPullerService.ts | 611 ++++++++++++++++++ .../src/templates/tweets.ts | 24 + .../src/utils/chainCatcher.ts | 2 +- 10 files changed, 736 insertions(+), 107 deletions(-) create mode 100644 packages/plugin-crypto-news/src/services/NewsPullerService.ts create mode 100644 packages/plugin-crypto-news/src/templates/tweets.ts diff --git a/agent/package.json b/agent/package.json index 289c5ce43d9..a7b6f3e03b5 100644 --- a/agent/package.json +++ b/agent/package.json @@ -39,7 +39,6 @@ "@elizaos/client-simsai": "workspace:*", "@elizaos/core": "workspace:*", "@elizaos/plugin-0g": "workspace:*", - "@elizaos/plugin-abstract": "workspace:*", "@elizaos/plugin-agentkit": "workspace:*", "@elizaos/plugin-aptos": "workspace:*", "@elizaos/plugin-birdeye": "workspace:*", @@ -49,7 +48,6 @@ "@elizaos/plugin-bnb": "workspace:*", "@elizaos/plugin-bootstrap": "workspace:*", "@elizaos/plugin-di": "workspace:*", - "@elizaos/plugin-intiface": "workspace:*", "@elizaos/plugin-coinbase": "workspace:*", "@elizaos/plugin-coingecko": "workspace:*", "@elizaos/plugin-coinmarketcap": "workspace:*", @@ -103,7 +101,6 @@ "@elizaos/plugin-video-generation": "workspace:*", "@elizaos/plugin-web-search": "workspace:*", "@elizaos/plugin-dexscreener": "workspace:*", - "@elizaos/plugin-letzai": "workspace:*", "@elizaos/plugin-thirdweb": "workspace:*", "@elizaos/plugin-genlayer": "workspace:*", "@elizaos/plugin-tee-verifiable-log": "workspace:*", @@ -154,6 +151,7 @@ "@elizaos/plugin-zksync-era": "workspace:*", "@srise/plugin-crypto-news": "workspace:*", "@srise/plugin-neocortex-market": "workspace:*", + "@elizaos/plugin-goplus": "workspace:*", "readline": "1.3.0", "ws": "8.18.0", "yargs": "17.7.2" diff --git a/agent/src/index.ts b/agent/src/index.ts index 6c7972787a7..843b9da49d5 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -23,6 +23,7 @@ import { XmtpClientInterface } from "@elizaos/client-xmtp"; import { agentKitPlugin } from "@elizaos/plugin-agentkit"; import { dcapPlugin } from "@elizaos/plugin-dcap"; import { gelatoPlugin } from "@elizaos/plugin-gelato"; +import { goplusPlugin } from "@elizaos/plugin-goplus"; import { elizaCodeinPlugin, onchainJson } from "@elizaos/plugin-iq6900"; import { lightningPlugin } from "@elizaos/plugin-lightning"; import { OmniflixPlugin } from "@elizaos/plugin-omniflix"; @@ -959,13 +960,6 @@ export async function createAgent( ); } - let zilliqaPlugin: any | undefined; - if (getSecret(character, "ZILLIQA_PRIVATE_KEY")) { - zilliqaPlugin = await createZilliqaPlugin((secret) => - getSecret(character, secret) - ); - } - // Initialize Reclaim adapter if environment variables are present // let verifiableInferenceAdapter; // if ( diff --git a/packages/client-twitter/src/index.ts b/packages/client-twitter/src/index.ts index 52957c1878b..521db67a6a8 100644 --- a/packages/client-twitter/src/index.ts +++ b/packages/client-twitter/src/index.ts @@ -1,4 +1,4 @@ -import { type Client, elizaLogger, type IAgentRuntime } from "@elizaos/core"; +import { elizaLogger, type Client, type IAgentRuntime } from "@elizaos/core"; import { ClientBase } from "./base.ts"; import { validateTwitterConfig, type TwitterConfig } from "./environment.ts"; import { TwitterInteractionClient } from "./interactions.ts"; @@ -50,8 +50,9 @@ class TwitterManager { export const TwitterClientInterface: Client = { async start(runtime: IAgentRuntime) { - const twitterConfig: TwitterConfig = - await validateTwitterConfig(runtime); + const twitterConfig: TwitterConfig = await validateTwitterConfig( + runtime + ); elizaLogger.log("Twitter client started"); diff --git a/packages/core/src/generation.ts b/packages/core/src/generation.ts index e648914c02c..710e7af522e 100644 --- a/packages/core/src/generation.ts +++ b/packages/core/src/generation.ts @@ -4,6 +4,7 @@ import { createGoogleGenerativeAI } from "@ai-sdk/google"; import { createGroq } from "@ai-sdk/groq"; import { createMistral } from "@ai-sdk/mistral"; import { createOpenAI } from "@ai-sdk/openai"; +import { AutoTokenizer } from "@huggingface/transformers"; import { generateObject as aiGenerateObject, generateText as aiGenerateText, @@ -52,6 +53,7 @@ import { type VerifiableInferenceResult, } from "./types.ts"; +import { fal } from "@fal-ai/client"; import BigNumber from "bignumber.js"; import { createPublicClient, http } from "viem"; diff --git a/packages/plugin-crypto-news/package.json b/packages/plugin-crypto-news/package.json index b29969a4afa..153434248bc 100644 --- a/packages/plugin-crypto-news/package.json +++ b/packages/plugin-crypto-news/package.json @@ -8,12 +8,14 @@ "dependencies": { "@elizaos/core": "workspace:*", "google-sr": "^4.1.0", - "rss-to-json": "^2.1.1" + "rss-to-json": "^2.1.1", + "agent-twitter-client": "0.0.18", + "tsup": "8.3.5" }, "devDependencies": { "@types/node": "^20.0.0", - "tsup": "8.3.5", - "tsx": "^4.19.2" + "tsx": "^4.19.2", + "vitest": "^1.0.0" }, "scripts": { "build": "tsup --format esm --dts", diff --git a/packages/plugin-crypto-news/src/index.ts b/packages/plugin-crypto-news/src/index.ts index 30c6e4961b9..9de2bac236d 100644 --- a/packages/plugin-crypto-news/src/index.ts +++ b/packages/plugin-crypto-news/src/index.ts @@ -1,5 +1,6 @@ import { Plugin } from "@elizaos/core"; import { cryptoNewsData } from "./providers/cryptoNewsData"; +import NewsPullerService from "./services/NewsPullerService"; //import { getTokenOverviewAction } from "./actions/tokenOverview"; //import { twitterTrendingMarketData } from "./providers/twitterTrendingMarketData"; @@ -9,4 +10,5 @@ export const cryptoNewsPlugin: Plugin = { actions: [], providers: [cryptoNewsData], evaluators: [], + services: [new NewsPullerService()], }; diff --git a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts index 4c30b8b3c67..260a4a7449a 100644 --- a/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts +++ b/packages/plugin-crypto-news/src/providers/cryptoNewsData.ts @@ -1,9 +1,4 @@ -import { embed, Provider, stringToUuid } from "@elizaos/core"; -import { - ChainCatcherItem, - ChainCatcherResponse, - fetchChainCatcher, -} from "../utils/chainCatcher"; +import { Provider } from "@elizaos/core"; // interface FormattedMarketData { // symbol: string; @@ -53,97 +48,97 @@ export const cryptoNewsData: Provider = { return ""; } - try { - // fetch several times - const chainCatcher: ChainCatcherResponse = - await fetchChainCatcher(); - const cacheManager = runtime.cacheManager; - const articles: ChainCatcherItem[] = []; - let output; + // try { + // // fetch several times + // const chainCatcher: ChainCatcherResponse = + // await fetchChainCatcher(); + // const cacheManager = runtime.cacheManager; + // const articles: ChainCatcherItem[] = []; + // let output; - for (const article of chainCatcher.data.list) { - const cached = await cacheManager.get( - `cryptoNews_${article.id}` - ); - if (!cached) { - // new acrticle - console.log( - `NEW ARTICLE : ${article.title} # ${article.id}` - ); - // means it's not cached, then we push it to the articles - articles.push(article); - // cache it - await cacheManager.set(`cryptoNews_${article.id}`, article); - const embedding = await embed(runtime, article.description); - console.log("embedding", embedding); - // put the news to knowledge as well - await runtime.ragKnowledgeManager.createKnowledge({ - id: stringToUuid(`cryptoNews_${article.id}`), - agentId: runtime.agentId, - content: { - text: article.description, - metadata: { - isMain: true, - isShared: true, - source: "articles", - }, - }, - embedding: new Float32Array(embedding), - }); + // for (const article of chainCatcher.data.list) { + // const cached = await cacheManager.get( + // `cryptoNews_${article.id}` + // ); + // if (!cached) { + // // new acrticle + // console.log( + // `NEW ARTICLE : ${article.title} # ${article.id}` + // ); + // // means it's not cached, then we push it to the articles + // articles.push(article); + // // cache it + // await cacheManager.set(`cryptoNews_${article.id}`, article); + // const embedding = await embed(runtime, article.description); + // console.log("embedding", embedding); + // // put the news to knowledge as well + // await runtime.ragKnowledgeManager.createKnowledge({ + // id: stringToUuid(`cryptoNews_${article.id}`), + // agentId: runtime.agentId, + // content: { + // text: article.description, + // metadata: { + // isMain: true, + // isShared: true, + // source: "articles", + // }, + // }, + // embedding: new Float32Array(embedding), + // }); - // await runtime.knowledgeManager.createMemory({ - // // We namespace the knowledge base uuid to avoid id - // // collision with the document above. - // id: stringToUuid(`cryptoNews_${article.id}`), - // agentId: runtime.agentId, - // roomId: runtime.agentId, + // // await runtime.knowledgeManager.createMemory({ + // // // We namespace the knowledge base uuid to avoid id + // // // collision with the document above. + // // id: stringToUuid(`cryptoNews_${article.id}`), + // // agentId: runtime.agentId, + // // roomId: runtime.agentId, - // userId: runtime.agentId, - // createdAt: Date.now(), - // content: { - // text: article.description, - // type: "news", - // }, - // embedding, - // }); - } else { - console.log( - `ARTICLE ${article.id} is already cached, skipping` - ); - } - } + // // userId: runtime.agentId, + // // createdAt: Date.now(), + // // content: { + // // text: article.description, + // // type: "news", + // // }, + // // embedding, + // // }); + // } else { + // console.log( + // `ARTICLE ${article.id} is already cached, skipping` + // ); + // } + // } - // const cryptoNews: SerperNewsResponse = - // await fetchSerperNews("crypto"); - // const suiNews: SerperNewsResponse = await fetchSerperNews("$SUI"); - if (articles.length > 0) { - output = `# NEWS for ${runtime.character.name}\n\n`; - // output += `The News have this format:\n\n`; - // output += ` - // - Title <--- Title of the news\n - // Description <--- Content of the news\n - // Timestamp <--- the time of the news\n\n - // `; + // // const cryptoNews: SerperNewsResponse = + // // await fetchSerperNews("crypto"); + // // const suiNews: SerperNewsResponse = await fetchSerperNews("$SUI"); + // if (articles.length > 0) { + // output = `# NEWS for ${runtime.character.name}\n\n`; + // // output += `The News have this format:\n\n`; + // // output += ` + // // - Title <--- Title of the news\n + // // Description <--- Content of the news\n + // // Timestamp <--- the time of the news\n\n + // // `; - articles.forEach((article) => { - output += `- ${article.title}\n${article.description}\nTime: ${article.releaseTime}\n\n`; - }); + // articles.forEach((article) => { + // output += `- ${article.title}\n${article.description}\nTime: ${article.releaseTime}\n\n`; + // }); - // cryptoNews.news.forEach((article) => { - // output += `- ${article.title}\n${article.snippet}\n\n`; - // }); - // suiNews.news.forEach((article) => { - // output += `- ${article.title}\n${article.snippet}\n\n`; - // }); - output += `# ADDITIONAL_NOTES: if there's any decimal numbers you should convert the decimal separator into comma instead of dot\n\n# END NEWS\n\n`; - } + // // cryptoNews.news.forEach((article) => { + // // output += `- ${article.title}\n${article.snippet}\n\n`; + // // }); + // // suiNews.news.forEach((article) => { + // // output += `- ${article.title}\n${article.snippet}\n\n`; + // // }); + // output += `# ADDITIONAL_NOTES: if there's any decimal numbers you should convert the decimal separator into comma instead of dot\n\n# END NEWS\n\n`; + // } - // elizaLogger.log(output); + // // elizaLogger.log(output); - return output; - } catch (error) { - console.error("Error in fetching news provider:", error); - return ""; - } + // return output; + // } catch (error) { + // console.error("Error in fetching news provider:", error); + // return ""; + // } }, }; diff --git a/packages/plugin-crypto-news/src/services/NewsPullerService.ts b/packages/plugin-crypto-news/src/services/NewsPullerService.ts new file mode 100644 index 00000000000..6a1c52d8dce --- /dev/null +++ b/packages/plugin-crypto-news/src/services/NewsPullerService.ts @@ -0,0 +1,611 @@ +import { + cleanJsonResponse, + composeContext, + elizaLogger, + embed, + extractAttributes, + generateText, + ModelClass, + parseJSONObjectFromText, + Service, + ServiceType, + stringToUuid, + truncateToCompleteSentence, + type IAgentRuntime, +} from "@elizaos/core"; +import { Profile, Scraper } from "agent-twitter-client"; +import { twitterPostTemplate } from "../templates/tweets"; +import { ChainCatcherResponse, fetchChainCatcher } from "../utils/chainCatcher"; +export const DEFAULT_MAX_TWEET_LENGTH = 280; + +// import { sampleProvider } from "../providers/sampleProvider"; // TODO: Uncomment this line to use the sampleProvider + +// declare module "@elizaos/core" { +// export enum ServiceType { +// NEOCORTEX_NEWS_FEED = "neocortex_news_feed", +// } +// } +// The SampleService is a simple service that logs "Hello world" every 15 minutes. +export class NewsPullerService extends Service { + private runtime: IAgentRuntime | null = null; + private intervalId: NodeJS.Timeout | null = null; + private DEFAULT_INTERVAL = 60 * 60 * 1000; // 1hr / 60 minutes + private twitterClient; + private me: Profile; + private processingNews = false; + + static get serviceType(): ServiceType { + return ServiceType.NEOCORTEX_NEWS_FEED; + } + + private static isInitialized = false; + + async initialize(runtime: IAgentRuntime): Promise<void> { + // Verify if the service is already initialized + if (NewsPullerService.isInitialized) { + return; + } + this.DEFAULT_INTERVAL = + (Number(runtime.getSetting("NEWS_PULLER_INTERVAL")) || 60) * + 60 * + 1000; + this.runtime = runtime; + // init twitter + await this.twitterLogin(); + // Start the periodic task + this.startPeriodicTask(); + NewsPullerService.isInitialized = true; + console.log( + "NewsPullerService : initialized and started periodic task" + ); + } + + private static activeTaskCount = 0; + + private startPeriodicTask(): void { + // Verify if a task is already active + if (NewsPullerService.activeTaskCount > 0) { + console.log( + "NewsPullerService: Periodic task already running, skipping" + ); + return; + } + + // Clear any existing interval + if (this.intervalId) { + clearInterval(this.intervalId); + } + + NewsPullerService.activeTaskCount++; + console.log( + `SampleService: Starting periodic task (active tasks: ${NewsPullerService.activeTaskCount})` + ); + + // Initial call immediately + this.fetchSample(); + + // Set up periodic calls + this.intervalId = setInterval(() => { + this.fetchSample(); + }, this.DEFAULT_INTERVAL); + } + + private async twitterLogin() { + // initiate the twitter login + const twitterClient = + this.runtime.clients?.twitter?.client?.twitterClient; + this.twitterClient = twitterClient || new Scraper(); + let retries = 3; + if (!twitterClient) { + const username = this.runtime.getSetting("TWITTER_USERNAME"); + const password = this.runtime.getSetting("TWITTER_PASSWORD"); + const email = this.runtime.getSetting("TWITTER_EMAIL"); + const twitter2faSecret = + this.runtime.getSetting("TWITTER_2FA_SECRET"); + + if (!username || !password) { + elizaLogger.error( + "Twitter credentials not configured in environment" + ); + return false; + } + + const cachedCookies = await this.getCachedCookies(username); + if (cachedCookies) { + elizaLogger.info("Using cached cookies"); + await this.setCookiesFromArray(cachedCookies); + } + // Login with credentials + // await this.twitterClient.login( + // username, + // password, + // email, + // twitter2faSecret + // ); + // if (!(await this.twitterClient.isLoggedIn())) { + // elizaLogger.error("Failed to login to Twitter"); + // return false; + // } + + while (retries > 0) { + try { + if (await this.twitterClient.isLoggedIn()) { + // cookies are valid, no login required + elizaLogger.info("Successfully logged in."); + break; + } else { + await this.twitterClient.login( + username, + password, + email, + twitter2faSecret + ); + if (await this.twitterClient.isLoggedIn()) { + // fresh login, store new cookies + elizaLogger.info("Successfully logged in."); + elizaLogger.info("Caching cookies"); + await this.cacheCookies( + username, + await this.twitterClient.getCookies() + ); + break; + } + } + } catch (error) { + elizaLogger.error(`Login attempt failed: ${error.message}`); + } + + retries--; + elizaLogger.error( + `Failed to login to Twitter. Retrying... (${retries} attempts left)` + ); + + if (retries === 0) { + elizaLogger.error( + "Max retries reached. Exiting login process." + ); + throw new Error( + "Twitter login failed after maximum retries." + ); + } + + await new Promise((resolve) => setTimeout(resolve, 2000)); + } + this.me = await this.twitterClient.me(); + } + } + private async fetchSample(): Promise<void> { + if (!this.runtime) { + console.log("NewsPullerService: Runtime not initialized"); + return; + } + if (this.processingNews) { + console.log("NewsPullerService: Already processing news"); + } + this.processingNews = true; + + try { + // fetch several times + const chainCatcher: ChainCatcherResponse = + await fetchChainCatcher(); + const cacheManager = this.runtime.cacheManager; + //const articles: ChainCatcherItem[] = []; + let tweetId; + let tempNews = ""; + let count = 0; + + for (const article of chainCatcher.data.list) { + const cached = await cacheManager.get( + `cryptoNews_${article.id}` + ); + if (!cached) { + // new acrticle + // console.log( + // `NEW ARTICLE : ${article.title} # ${article.id}` + // ); + // means it's not cached, then we push it to the articles + //articles.push(article); + // cache it + await cacheManager.set(`cryptoNews_${article.id}`, article); + const embedding = await embed( + this.runtime, + article.description + ); + //console.log("embedding", embedding); + // put the news to knowledge as well + + await this.runtime.ragKnowledgeManager.createKnowledge({ + id: stringToUuid(`cryptoNews_${article.id}`), + agentId: this.runtime.agentId, + content: { + text: article.description, + metadata: { + isMain: true, + isShared: true, + source: "articles", + }, + }, + embedding: new Float32Array(embedding), + }); + + // combine news + tempNews += `- ${article.title}\n${article.description}\nTime: ${article.releaseTime}\n\n`; + count++; + // post the tweet + if ( + count === 2 || + article.id === + chainCatcher.data.list[ + chainCatcher.data.list.length - 1 + ].id + ) { + const tweetR = await this.generateTweet( + article.description, + tweetId + ); + if (tweetR.success) { + tweetId = tweetR.id; + } + tempNews = ""; + count = 0; + } + } else { + console.log( + `ARTICLE ${article.id} is already cached, skipping` + ); + } + } + this.processingNews = false; + + // const cryptoNews: SerperNewsResponse = + // await fetchSerperNews("crypto"); + // const suiNews: SerperNewsResponse = await fetchSerperNews("$SUI"); + // if (articles.length > 0) { + // output = `# NEWS for ${this.runtime.character.name}\n\n`; + // // output += `The News have this format:\n\n`; + // // output += ` + // // - Title <--- Title of the news\n + // // Description <--- Content of the news\n + // // Timestamp <--- the time of the news\n\n + // // `; + + // articles.forEach((article) => { + // output += `- ${article.title}\n${article.description}\nTime: ${article.releaseTime}\n\n`; + // }); + + // // cryptoNews.news.forEach((article) => { + // // output += `- ${article.title}\n${article.snippet}\n\n`; + // // }); + // // suiNews.news.forEach((article) => { + // // output += `- ${article.title}\n${article.snippet}\n\n`; + // // }); + // output += `# ADDITIONAL_NOTES: if there's any decimal numbers you should convert the decimal separator into comma instead of dot\n\n# END NEWS\n\n`; + // } + + // elizaLogger.log(output); + + // return output; + } catch (error) { + console.error("Error in fetching news provider:", error); + this.processingNews = false; + return; + } + + // try { + // // Example of using the sampleProvider + // // Create dummy memory and state objects for the provider + // // const dummyMemory: Memory = { + // // id: stringToUuid("sample-service-trigger"), + // // userId: this.runtime.agentId, + // // agentId: this.runtime.agentId, + // // roomId: this.runtime.agentId, + // // content: { text: "Periodic sample fetch" }, + // // createdAt: Date.now(), + // // }; + + // // const dummyState: State = { + // // userId: this.runtime.agentId, + // // bio: "", + // // lore: "", + // // messageDirections: "", + // // postDirections: "", + // // roomId: this.runtime.agentId, + // // actors: "", + // // recentMessages: "", + // // recentMessagesData: [], + // // }; + // // await sampleProvider.get(this.runtime, dummyMemory, dummyState); + + // // hello world log example + // console.log("SampleService: Hello world"); + + // console.log( + // "SampleService: Successfully fetched and processed sample" + // ); + // } catch (error) { + // console.log("SampleService: Error fetching sample:", error); + // } + } + + private async generateTweet(text: any, tweetId?: string) { + elizaLogger.log("NewsPuller : Generating tweet"); + if (!this.runtime) { + console.log("NewsPullerService: Twitter Runtime not initialized"); + return; + } + + //console.log("NewsPullerService: Twitter client", twitterClient); + try { + const roomId = stringToUuid( + "twitter_generate_room-" + this.me.username + ); + await this.runtime.ensureUserExists( + this.runtime.agentId, + this.me.username, + this.runtime.character.name, + "twitter" + ); + + const maxTweetLength = Number(DEFAULT_MAX_TWEET_LENGTH); + const state = await this.runtime.composeState( + { + userId: this.runtime.agentId, + roomId: roomId, + agentId: this.runtime.agentId, + content: { + text: "", + }, + }, + { + twitterUserName: this.me.username, + maxTweetLength, + news: text, + } + ); + + const context = composeContext({ + state, + template: twitterPostTemplate, + }); + // console.log("PROMPT", context); + //elizaLogger.debug("generate post prompt:\n" + context); + + const response = await generateText({ + runtime: this.runtime, + context, + modelClass: ModelClass.MEDIUM, + }); + + const rawTweetContent = cleanJsonResponse(response); + + // First attempt to clean content + let tweetTextForPosting = null; + let mediaData = null; + + // Try parsing as JSON first + const parsedResponse = parseJSONObjectFromText(rawTweetContent); + if (parsedResponse?.text) { + tweetTextForPosting = parsedResponse.text; + } + + // if ( + // parsedResponse?.attachments && + // parsedResponse?.attachments.length > 0 + // ) { + // mediaData = await fetchMediaData(parsedResponse.attachments); + // } + + // Try extracting text attribute + if (!tweetTextForPosting) { + const parsingText = extractAttributes(rawTweetContent, [ + "text", + ]).text; + if (parsingText) { + tweetTextForPosting = truncateToCompleteSentence( + extractAttributes(rawTweetContent, ["text"]).text, + maxTweetLength + ); + } + } + + // Use the raw text + if (!tweetTextForPosting) { + tweetTextForPosting = rawTweetContent; + } + + // Truncate the content to the maximum tweet length specified in the environment settings, ensuring the truncation respects sentence boundaries. + if (maxTweetLength) { + tweetTextForPosting = truncateToCompleteSentence( + tweetTextForPosting, + maxTweetLength + ); + } + + const removeQuotes = (str: string) => + str.replace(/^['"](.*)['"]$/, "$1"); + + const fixNewLines = (str: string) => str.replaceAll(/\\n/g, "\n\n"); //ensures double spaces + + // Final cleaning + tweetTextForPosting = removeQuotes( + fixNewLines(tweetTextForPosting) + ); + + try { + console.log( + `NEWS PULLER: would have posted tweet: ${tweetTextForPosting} | Length: ${tweetTextForPosting.length}` + ); + return await this.postTweet(tweetTextForPosting, tweetId); // return the tweet ID + } catch (err) { + console.error("NEWS_PULLER: ERROR posting tweet:", err); + } + return; + // if (this.isDryRun) { + // elizaLogger.info( + // `Dry run: would have posted tweet: ${tweetTextForPosting}` + // ); + // return; + // } + + // try { + // if (this.approvalRequired) { + // // Send for approval instead of posting directly + // elizaLogger.log( + // `Sending Tweet For Approval:\n ${tweetTextForPosting}` + // ); + // await this.sendForApproval( + // tweetTextForPosting, + // roomId, + // rawTweetContent + // ); + // elizaLogger.log("Tweet sent for approval"); + // } else { + // elizaLogger.log( + // `Posting new tweet:\n ${tweetTextForPosting}` + // ); + // this.postTweet( + // this.runtime, + // this.client, + // tweetTextForPosting, + // roomId, + // rawTweetContent, + // this.twitterUsername, + // mediaData + // ); + // } + // } catch (error) { + // elizaLogger.error("Error sending tweet:", error); + // } + } catch (error) { + console.error("NEWS_PULLER: ERROR generating new tweet:", error); + } + } + + private async postTweet( + content: string, + tweetId: string + ): Promise<{ success: boolean; id: string }> { + try { + // Send the tweet + elizaLogger.log("Attempting to send tweet:", content); + + try { + if (content.length > DEFAULT_MAX_TWEET_LENGTH) { + const noteTweetResult = + await this.twitterClient.sendNoteTweet( + content, + tweetId + ); + if ( + noteTweetResult.errors && + noteTweetResult.errors.length > 0 + ) { + // Note Tweet failed due to authorization. Falling back to standard Tweet. + return await this.sendTweet(content, tweetId); + } + return { + success: true, + id: noteTweetResult?.data?.notetweet_create + ?.tweet_results?.result?.rest_id, + }; // return the ID of the tweet + } + return await this.sendTweet(content, tweetId); + } catch (error) { + throw new Error(`Note Tweet failed: ${error}`); + } + } catch (error) { + // Log the full error details + elizaLogger.error("Error posting tweet:", { + message: error.message, + stack: error.stack, + name: error.name, + cause: error.cause, + }); + return { + success: false, + id: null, + }; + } + } + + private async sendTweet(content: string, tweetId: string | null) { + const result = await this.twitterClient.sendTweet(content, tweetId); + + const body = await result.json(); + //console.dir(body, { depth: null, colors: true }); + + // Check for Twitter API errors + if (body.errors) { + const error = body.errors[0]; + elizaLogger.error( + `Twitter API error (${error.code}): ${error.message}` + ); + return { + success: false, + id: null, + }; + } + + // Check for successful tweet creation + if (!body?.data?.create_tweet?.tweet_results?.result) { + elizaLogger.error( + "Failed to post tweet: No tweet result in response" + ); + return { + success: false, + id: null, + }; + } + return { + success: true, + id: body?.data?.create_tweet?.tweet_results?.result?.rest_id, + }; // return the ID of the tweet + //return body?.data?.create_tweet?.tweet_results?.result?.rest_id; // returns the ID of the tweet + //return true; + } + + async getCachedCookies(username: string) { + return await this.runtime.cacheManager.get<any[]>( + `twitter/${username}/cookies` + ); + } + + async cacheCookies(username: string, cookies: any[]) { + await this.runtime.cacheManager.set( + `twitter/${username}/cookies`, + cookies + ); + } + + async setCookiesFromArray(cookiesArray: any[]) { + const cookieStrings = cookiesArray.map( + (cookie) => + `${cookie.key}=${cookie.value}; Domain=${cookie.domain}; Path=${ + cookie.path + }; ${cookie.secure ? "Secure" : ""}; ${ + cookie.httpOnly ? "HttpOnly" : "" + }; SameSite=${cookie.sameSite || "Lax"}` + ); + await this.twitterClient.setCookies(cookieStrings); + } + + // Method to stop the service + stop(): void { + if (this.intervalId) { + clearInterval(this.intervalId); + this.intervalId = null; + NewsPullerService.activeTaskCount--; + console.log( + `NewsPullerService stopped (active tasks: ${NewsPullerService.activeTaskCount})` + ); + } + NewsPullerService.isInitialized = false; + } + + // Method to manually trigger a sample fetch (for testing) + async forceFetch(): Promise<void> { + await this.fetchSample(); + } +} + +export default NewsPullerService; diff --git a/packages/plugin-crypto-news/src/templates/tweets.ts b/packages/plugin-crypto-news/src/templates/tweets.ts new file mode 100644 index 00000000000..1ab107ba26e --- /dev/null +++ b/packages/plugin-crypto-news/src/templates/tweets.ts @@ -0,0 +1,24 @@ +export const twitterPostTemplate = ` +# Areas of Expertise +{{knowledge}} + +# About {{agentName}} (@{{twitterUserName}}): +{{bio}} +{{lore}} + +# NEWS : +{{news}} + +{{characterPostExamples}} + +{{postDirections}} + +# Task: Generate a post in the voice and style and perspective of {{agentName}} @{{twitterUserName}}. +Write a post that is {{adjective}} about the #NEWS, from the perspective of {{agentName}}. You are allowed to add opinion about the #NEWS, but it should be in the voice of {{agentName}}. +If the news isnt about SUI or SUIRISE, dont mix the context with SUI Shilling. keep the original and relevant context of the news. +Your response should be 1, 2 sentences (choose the length at random). +Your response should not contain any questions. Brief, concise statements only. The total character count MUST be less than 280. No emojis. Use \n\n (double spaces) between statements if there are multiple statements in your response. +Your response should replace any crypto currency name such as Ethereum, Bitcoin, or something else with its ticker starting with $. +Your response should replace any crypto currency ticker that doesnt have $ before it you have to add the $ so for example ETH become $ETH ( ticker has length up to 4 characters ). +Your response should not include ChainCatcher text on it. +`; diff --git a/packages/plugin-crypto-news/src/utils/chainCatcher.ts b/packages/plugin-crypto-news/src/utils/chainCatcher.ts index 8c6cde3076e..a03a3c54f3a 100644 --- a/packages/plugin-crypto-news/src/utils/chainCatcher.ts +++ b/packages/plugin-crypto-news/src/utils/chainCatcher.ts @@ -34,7 +34,7 @@ export async function fetchChainCatcher(): Promise<ChainCatcherResponse> { body: JSON.stringify({ type: 2, page: 1, - limit: 5, + limit: 10, }), }; const response = await fetch( From e30865843319f95e05815f945763303381798620 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 31 Jan 2025 13:20:20 +0700 Subject: [PATCH 48/58] asdasd --- .../plugin-crypto-news/src/services/NewsPullerService.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/plugin-crypto-news/src/services/NewsPullerService.ts b/packages/plugin-crypto-news/src/services/NewsPullerService.ts index 6a1c52d8dce..f6450b04cfd 100644 --- a/packages/plugin-crypto-news/src/services/NewsPullerService.ts +++ b/packages/plugin-crypto-news/src/services/NewsPullerService.ts @@ -45,10 +45,8 @@ export class NewsPullerService extends Service { if (NewsPullerService.isInitialized) { return; } - this.DEFAULT_INTERVAL = - (Number(runtime.getSetting("NEWS_PULLER_INTERVAL")) || 60) * - 60 * - 1000; + const intv = Number(runtime.getSetting("NEWS_PULLER_INTERVAL")); + this.DEFAULT_INTERVAL = (intv ? intv : 60) * 60 * 1000; this.runtime = runtime; // init twitter await this.twitterLogin(); From 5c633d3de51e6b00f3b5739580da1f8b6b30f5ca Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 31 Jan 2025 13:23:16 +0700 Subject: [PATCH 49/58] asdas --- packages/plugin-crypto-news/src/services/NewsPullerService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin-crypto-news/src/services/NewsPullerService.ts b/packages/plugin-crypto-news/src/services/NewsPullerService.ts index f6450b04cfd..4bcaac3d88d 100644 --- a/packages/plugin-crypto-news/src/services/NewsPullerService.ts +++ b/packages/plugin-crypto-news/src/services/NewsPullerService.ts @@ -54,7 +54,7 @@ export class NewsPullerService extends Service { this.startPeriodicTask(); NewsPullerService.isInitialized = true; console.log( - "NewsPullerService : initialized and started periodic task" + `NewsPullerService : initialized and started periodic task (interval: ${this.DEFAULT_INTERVAL} ms || ${intv})` ); } From 028d33a91f87be31625dc0e2d42b32da122ede96 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 31 Jan 2025 13:27:10 +0700 Subject: [PATCH 50/58] xx --- .../src/services/NewsPullerService.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/plugin-crypto-news/src/services/NewsPullerService.ts b/packages/plugin-crypto-news/src/services/NewsPullerService.ts index 4bcaac3d88d..df5694068fb 100644 --- a/packages/plugin-crypto-news/src/services/NewsPullerService.ts +++ b/packages/plugin-crypto-news/src/services/NewsPullerService.ts @@ -51,7 +51,7 @@ export class NewsPullerService extends Service { // init twitter await this.twitterLogin(); // Start the periodic task - this.startPeriodicTask(); + await this.startPeriodicTask(); NewsPullerService.isInitialized = true; console.log( `NewsPullerService : initialized and started periodic task (interval: ${this.DEFAULT_INTERVAL} ms || ${intv})` @@ -60,7 +60,7 @@ export class NewsPullerService extends Service { private static activeTaskCount = 0; - private startPeriodicTask(): void { + private async startPeriodicTask(): Promise<void> { // Verify if a task is already active if (NewsPullerService.activeTaskCount > 0) { console.log( @@ -80,11 +80,11 @@ export class NewsPullerService extends Service { ); // Initial call immediately - this.fetchSample(); + await this.fetchSample(); // Set up periodic calls - this.intervalId = setInterval(() => { - this.fetchSample(); + this.intervalId = setInterval(async () => { + await this.fetchSample(); }, this.DEFAULT_INTERVAL); } From c9b8d38defc41d5a0ff4000c2cd91b1c8ebac023 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Fri, 31 Jan 2025 13:33:18 +0700 Subject: [PATCH 51/58] tpl --- packages/plugin-crypto-news/src/templates/tweets.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/plugin-crypto-news/src/templates/tweets.ts b/packages/plugin-crypto-news/src/templates/tweets.ts index 1ab107ba26e..effd44f45fd 100644 --- a/packages/plugin-crypto-news/src/templates/tweets.ts +++ b/packages/plugin-crypto-news/src/templates/tweets.ts @@ -14,10 +14,10 @@ export const twitterPostTemplate = ` {{postDirections}} # Task: Generate a post in the voice and style and perspective of {{agentName}} @{{twitterUserName}}. -Write a post that is {{adjective}} about the #NEWS, from the perspective of {{agentName}}. You are allowed to add opinion about the #NEWS, but it should be in the voice of {{agentName}}. -If the news isnt about SUI or SUIRISE, dont mix the context with SUI Shilling. keep the original and relevant context of the news. +Write a post that is {{adjective}} about the #NEWS, from the perspective of {{agentName}}. You must include the conclusion or summary of the NEWS, and you must include all important numbers, statistics and context of the NEWS. +If the news isnt about SUI or SUIRISE, dont mix the context with SUI Shilling. Your response should be 1, 2 sentences (choose the length at random). -Your response should not contain any questions. Brief, concise statements only. The total character count MUST be less than 280. No emojis. Use \n\n (double spaces) between statements if there are multiple statements in your response. +Your response should not contain any questions. Brief, concise statements only. The total character count MUST be less than 400. No emojis. Use \n\n (double spaces) between statements if there are multiple statements in your response. Your response should replace any crypto currency name such as Ethereum, Bitcoin, or something else with its ticker starting with $. Your response should replace any crypto currency ticker that doesnt have $ before it you have to add the $ so for example ETH become $ETH ( ticker has length up to 4 characters ). Your response should not include ChainCatcher text on it. From 129fbf924024983593dbb77f22a84dde89149d16 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Sat, 1 Feb 2025 09:40:18 +0700 Subject: [PATCH 52/58] xx --- packages/plugin-crypto-news/src/services/NewsPullerService.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/plugin-crypto-news/src/services/NewsPullerService.ts b/packages/plugin-crypto-news/src/services/NewsPullerService.ts index df5694068fb..52cd6e72da9 100644 --- a/packages/plugin-crypto-news/src/services/NewsPullerService.ts +++ b/packages/plugin-crypto-news/src/services/NewsPullerService.ts @@ -220,7 +220,6 @@ export class NewsPullerService extends Service { metadata: { isMain: true, isShared: true, - source: "articles", }, }, embedding: new Float32Array(embedding), From b8bcfb8309d466bd423076cd8690f4640d1b8a60 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Sat, 1 Feb 2025 14:53:24 +0700 Subject: [PATCH 53/58] xxx --- packages/core/src/runtime.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/core/src/runtime.ts b/packages/core/src/runtime.ts index 4cba2d0dd54..22de1be7186 100644 --- a/packages/core/src/runtime.ts +++ b/packages/core/src/runtime.ts @@ -1502,6 +1502,15 @@ Text: ${attachment.text} }); formattedKnowledge = formatKnowledge(knowledgeData); + console.log("[FEEETCHING KNOWLEDGE]"); + console.dir( + { + knowledgeData: knowledgeData, + query: message.content.text, + formattedKnowledge, + }, + { depth: null, colors: true } + ); } else { knowledgeData = await knowledge.get(this, message); From 9dfa137a05c800af833cd6c94ca1a1b1a4a5f361 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Sat, 1 Feb 2025 15:32:38 +0700 Subject: [PATCH 54/58] lower the treshold --- packages/core/src/ragknowledge.ts | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/core/src/ragknowledge.ts b/packages/core/src/ragknowledge.ts index 3d6be4ab42c..6a00dc62e56 100644 --- a/packages/core/src/ragknowledge.ts +++ b/packages/core/src/ragknowledge.ts @@ -1,3 +1,5 @@ +import { existsSync } from "fs"; +import { join } from "path"; import { embed } from "./embedding.ts"; import { splitChunks } from "./generation.ts"; import elizaLogger from "./logger.ts"; @@ -9,8 +11,6 @@ import { KnowledgeScope, } from "./types.ts"; import { stringToUuid } from "./uuid.ts"; -import { existsSync } from "fs"; -import { join } from "path"; /** * Manage knowledge in the database. @@ -47,7 +47,7 @@ export class RAGKnowledgeManager implements IRAGKnowledgeManager { this.knowledgeRoot = opts.knowledgeRoot; } - private readonly defaultRAGMatchThreshold = 0.85; + private readonly defaultRAGMatchThreshold = 0.75; private readonly defaultRAGMatchCount = 5; /** @@ -507,7 +507,9 @@ export class RAGKnowledgeManager implements IRAGKnowledgeManager { try { const fileSizeKB = new TextEncoder().encode(content).length / 1024; elizaLogger.info( - `[File Progress] Starting ${file.path} (${fileSizeKB.toFixed(2)} KB)` + `[File Progress] Starting ${file.path} (${fileSizeKB.toFixed( + 2 + )} KB)` ); // Generate scoped ID for the file @@ -571,8 +573,9 @@ export class RAGKnowledgeManager implements IRAGKnowledgeManager { // Batch database operations await Promise.all( embeddings.map(async (embeddingArray, index) => { - const chunkId = - `${scopedId}-chunk-${i + index}` as UUID; + const chunkId = `${scopedId}-chunk-${ + i + index + }` as UUID; const chunkEmbedding = new Float32Array(embeddingArray); await this.runtime.databaseAdapter.createKnowledge({ @@ -599,7 +602,11 @@ export class RAGKnowledgeManager implements IRAGKnowledgeManager { processedChunks += batch.length; const batchTime = (Date.now() - batchStart) / 1000; elizaLogger.info( - `[Batch Progress] ${file.path}: Processed ${processedChunks}/${totalChunks} chunks (${batchTime.toFixed(2)}s for batch)` + `[Batch Progress] ${ + file.path + }: Processed ${processedChunks}/${totalChunks} chunks (${batchTime.toFixed( + 2 + )}s for batch)` ); } From de4bc84ba1ccfd9ffce3654c63ddd2ba770b9da1 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Sat, 1 Feb 2025 15:47:13 +0700 Subject: [PATCH 55/58] restore it to 0.85 --- packages/core/src/ragknowledge.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/ragknowledge.ts b/packages/core/src/ragknowledge.ts index 6a00dc62e56..3932282ac6e 100644 --- a/packages/core/src/ragknowledge.ts +++ b/packages/core/src/ragknowledge.ts @@ -47,7 +47,7 @@ export class RAGKnowledgeManager implements IRAGKnowledgeManager { this.knowledgeRoot = opts.knowledgeRoot; } - private readonly defaultRAGMatchThreshold = 0.75; + private readonly defaultRAGMatchThreshold = 0.85; // default 0.85 private readonly defaultRAGMatchCount = 5; /** From 8f998243060e8cc4513084dd8d356064e745ac5b Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Sat, 1 Feb 2025 16:44:19 +0700 Subject: [PATCH 56/58] improveee --- packages/client-twitter/src/interactions.ts | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/client-twitter/src/interactions.ts b/packages/client-twitter/src/interactions.ts index 1a5bfc561ea..0ea66a60087 100644 --- a/packages/client-twitter/src/interactions.ts +++ b/packages/client-twitter/src/interactions.ts @@ -71,14 +71,13 @@ PRIORITY RULE: ALWAYS RESPOND to these users regardless of topic or message cont 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 IGNORE to any marketing messages, shilling messages, promotion messages, or controversial topics - {{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. IMPORTANT: -- {{agentName}} (aka @{{twitterUserName}}) is particularly sensitive about being annoying, so if there is any doubt, it is better to IGNORE than to RESPOND. - For users not in the priority list, {{agentName}} (@{{twitterUserName}}) should err on the side of IGNORE rather than RESPOND if in doubt. Recent Posts: @@ -280,9 +279,10 @@ export class TwitterInteractionClient { ); const message = { - content: { + content: { text: tweet.text, - imageUrls: tweet.photos?.map(photo => photo.url) || [] + imageUrls: + tweet.photos?.map((photo) => photo.url) || [], }, agentId: this.runtime.agentId, userId: userIdUUID, @@ -410,7 +410,7 @@ export class TwitterInteractionClient { content: { text: tweet.text, url: tweet.permanentUrl, - imageUrls: tweet.photos?.map(photo => photo.url) || [], + imageUrls: tweet.photos?.map((photo) => photo.url) || [], inReplyTo: tweet.inReplyToStatusId ? stringToUuid( tweet.inReplyToStatusId + @@ -543,8 +543,8 @@ export class TwitterInteractionClient { ); } const responseTweetId = - responseMessages[responseMessages.length - 1]?.content - ?.tweetId; + responseMessages[responseMessages.length - 1]?.content + ?.tweetId; await this.runtime.processActions( message, responseMessages, @@ -619,7 +619,9 @@ export class TwitterInteractionClient { text: currentTweet.text, source: "twitter", url: currentTweet.permanentUrl, - imageUrls: currentTweet.photos?.map(photo => photo.url) || [], + imageUrls: + currentTweet.photos?.map((photo) => photo.url) || + [], inReplyTo: currentTweet.inReplyToStatusId ? stringToUuid( currentTweet.inReplyToStatusId + From be1d69013842b5dbd5f2fab965285c053f701453 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Sat, 1 Feb 2025 19:09:11 +0700 Subject: [PATCH 57/58] image descriptions --- packages/client-twitter/src/interactions.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/client-twitter/src/interactions.ts b/packages/client-twitter/src/interactions.ts index 0ea66a60087..83d4206e10e 100644 --- a/packages/client-twitter/src/interactions.ts +++ b/packages/client-twitter/src/interactions.ts @@ -59,6 +59,8 @@ Here is the current post text again. Remember to include an action if the curren {{currentPost}} Here is the descriptions of images in the Current post. {{imageDescriptions}} + +# ADDITIONAL NOTES : If there's any image descriptions, please include the conclusion of the image description within your context. You shouldnt discard any information from the image descriptions. You should make the image description as your additional topic to react or respond. If there's no image descriptions, you can ignore this part. ` + messageCompletionFooter; export const twitterShouldRespondTemplate = (targetUsersStr: string) => From 64ace80c0b048ff5f9de135a8c16b503f2cb5687 Mon Sep 17 00:00:00 2001 From: Indowebdeveloper <git@indowebdeveloper.com> Date: Sun, 2 Feb 2025 11:35:41 +0700 Subject: [PATCH 58/58] fix --- agent/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/src/index.ts b/agent/src/index.ts index 843b9da49d5..d14779231d0 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -1055,7 +1055,7 @@ export async function createAgent( getSecret(character, "SERPER_API_KEY") ? webSearchPlugin : null, - getSecret(character, "SERPER_API_KEY") ? cryptoNewsPlugin : null, + cryptoNewsPlugin, getSecret(character, "SOLANA_PUBLIC_KEY") || (getSecret(character, "WALLET_PUBLIC_KEY") &&