From b2a9ddcd06c6cb570d9b0844f142cc5677a61469 Mon Sep 17 00:00:00 2001 From: Scriptscrypt Date: Thu, 28 Nov 2024 01:50:31 +0530 Subject: [PATCH 1/9] Feat: Added Pumpfun Token Launch --- src/agent/index.ts | 60 +- src/langchain/index.ts | 148 ++- src/tools/index.ts | 19 +- src/tools/launch_pumpfun_token.ts | 182 ++++ src/types/index.ts | 36 +- yarn.lock | 1603 +++++++++++++++++++++++++++++ 6 files changed, 1897 insertions(+), 151 deletions(-) create mode 100644 src/tools/launch_pumpfun_token.ts create mode 100644 yarn.lock diff --git a/src/agent/index.ts b/src/agent/index.ts index b165ccc..6234d24 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -9,11 +9,9 @@ import { transfer, trade, registerDomain, - lendAsset, - getLendingDetails, - getTPS, + launchpumpfuntoken, } from "../tools"; -import { CollectionOptions, LuloDepositAssetMint } from "../types"; +import { CollectionOptions } from "../types"; import { DEFAULT_OPTIONS } from "../constants"; /** @@ -31,23 +29,11 @@ export class SolanaAgentKit { public wallet_address: PublicKey; constructor( - privateKey?: string, - rpcURL = "https://api.mainnet-beta.solana.com", + private_key: string, + rpc_url = "https://api.mainnet-beta.solana.com" ) { - this.connection = new Connection(rpcURL); - if (privateKey) { - this.wallet = Keypair.fromSecretKey(bs58.decode(privateKey)); - } else { - this.wallet = Keypair.generate(); - console.log("Generated new wallet: ", this.wallet.publicKey.toBase58()); - console.log( - "Safely store the private key: ", - "\n----------------------------------\n", - this.wallet.secretKey, - "\n----------------------------------\n", - "Please fund this wallet with SOL to use it (on mainnet), or use the faucet method to request funds (only on devnet/testnet).", - ); - } + this.connection = new Connection(rpc_url); + this.wallet = Keypair.fromSecretKey(bs58.decode(private_key)); this.wallet_address = this.wallet.publicKey; } @@ -57,7 +43,7 @@ export class SolanaAgentKit { } async deployToken( - decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS, + decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS // initialSupply?: number ) { return deploy_token(this, decimals); @@ -74,7 +60,7 @@ export class SolanaAgentKit { async mintNFT( collectionMint: PublicKey, metadata: Parameters[2], - recipient?: PublicKey, + recipient?: PublicKey ) { return mintCollectionNFT(this, collectionMint, metadata, recipient); } @@ -91,24 +77,24 @@ export class SolanaAgentKit { outputMint: PublicKey, inputAmount: number, inputMint?: PublicKey, - slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS, + slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS ) { return trade(this, outputMint, inputAmount, inputMint, slippageBps); } - - async lendAssets( - asset: LuloDepositAssetMint, - amount: number, - LULO_API_KEY: string, + + async launchpumpfuntoken( + tokenName: string, + tokenTicker: string, + options: { + description: string; + twitter: string; + telegram: string; + website: string; + imageUrl: string; + initialLiquiditySOL: any; + mintAddress: string; + } ) { - return lendAsset(this, asset, amount, LULO_API_KEY); - } - - async fetchLendingDetails(LULO_API_KEY: string) { - return getLendingDetails(this, LULO_API_KEY); - } - - async getTPS() { - return getTPS(this); + return launchpumpfuntoken(this, tokenName, tokenTicker, options); } } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 3819a5c..f7d2175 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -4,9 +4,8 @@ import { PublicKey } from "@solana/web3.js"; export class SolanaBalanceTool extends Tool { name = "solana_balance"; - description = - "Get the balance of a Solana wallet or token account. Input can be a token address or empty for SOL balance."; - + description = "Get the balance of a Solana wallet or token account. Input can be a token address or empty for SOL balance."; + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -24,9 +23,8 @@ export class SolanaBalanceTool extends Tool { export class SolanaTransferTool extends Tool { name = "solana_transfer"; - description = - "Transfer tokens or SOL to another address. Input should be JSON string with: {to: string, amount: number, mint?: string}"; - + description = "Transfer tokens or SOL to another address. Input should be JSON string with: {to: string, amount: number, mint?: string}"; + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -36,7 +34,7 @@ export class SolanaTransferTool extends Tool { const { to, amount, mint } = JSON.parse(input); const recipient = new PublicKey(to); const mintAddress = mint ? new PublicKey(mint) : undefined; - + await this.solanaKit.transfer(recipient, amount, mintAddress); return `Successfully transferred ${amount} to ${to}`; } catch (error: any) { @@ -47,16 +45,15 @@ export class SolanaTransferTool extends Tool { export class SolanaDeployTokenTool extends Tool { name = "solana_deploy_token"; - description = - "Deploy a new SPL token. Input should be JSON string with: {decimals?: number, initialSupply?: number}"; - + description = "Deploy a new SPL token. Input should be JSON string with: {decimals?: number, initialSupply?: number}"; + constructor(private solanaKit: SolanaAgentKit) { super(); } async _call(input: string): Promise { try { - const validJson = input + const validJson = input .replace(/([a-zA-Z0-9_]+):/g, '"$1":') // Add quotes around keys .trim(); const { decimals = 9 } = JSON.parse(validJson); @@ -70,9 +67,8 @@ export class SolanaDeployTokenTool extends Tool { export class SolanaDeployCollectionTool extends Tool { name = "solana_deploy_collection"; - description = - "Deploy a new NFT collection. Input should be JSON with: {name: string, uri: string, royaltyBasisPoints?: number, creators?: Array<{address: string, percentage: number}>}"; - + description = "Deploy a new NFT collection. Input should be JSON with: {name: string, uri: string, royaltyBasisPoints?: number, creators?: Array<{address: string, percentage: number}>}"; + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -90,9 +86,8 @@ export class SolanaDeployCollectionTool extends Tool { export class SolanaMintNFTTool extends Tool { name = "solana_mint_nft"; - description = - "Mint a new NFT in a collection. Input should be JSON with: {collectionMint: string, metadata: {name: string, symbol: string, uri: string}, recipient?: string}"; - + description = "Mint a new NFT in a collection. Input should be JSON with: {collectionMint: string, metadata: {name: string, symbol: string, uri: string}, recipient?: string}"; + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -104,7 +99,7 @@ export class SolanaMintNFTTool extends Tool { const result = await this.solanaKit.mintNFT( new PublicKey(collectionMint), metadata, - recipientPubkey, + recipientPubkey ); return `NFT minted successfully. Mint address: ${result.mint.toString()}`; } catch (error: any) { @@ -115,22 +110,20 @@ export class SolanaMintNFTTool extends Tool { export class SolanaTradeTool extends Tool { name = "solana_trade"; - description = - "Swap tokens using Jupiter Exchange. Input should be JSON with: {outputMint: string, inputAmount: number, inputMint?: string, slippageBps?: number}"; - + description = "Swap tokens using Jupiter Exchange. Input should be JSON with: {outputMint: string, inputAmount: number, inputMint?: string, slippageBps?: number}"; + constructor(private solanaKit: SolanaAgentKit) { super(); } async _call(input: string): Promise { try { - const { outputMint, inputAmount, inputMint, slippageBps } = - JSON.parse(input); + const { outputMint, inputAmount, inputMint, slippageBps } = JSON.parse(input); const tx = await this.solanaKit.trade( new PublicKey(outputMint), inputAmount, inputMint ? new PublicKey(inputMint) : undefined, - slippageBps, + slippageBps ); return `Trade executed successfully. Transaction: ${tx}`; } catch (error: any) { @@ -142,7 +135,7 @@ export class SolanaTradeTool extends Tool { export class SolanaRequestFundsTool extends Tool { name = "solana_request_funds"; description = "Request SOL from Solana faucet (devnet/testnet only)"; - + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -159,9 +152,8 @@ export class SolanaRequestFundsTool extends Tool { export class SolanaRegisterDomainTool extends Tool { name = "solana_register_domain"; - description = - "Register a .sol domain name. Input should be JSON with: {name: string, spaceKB?: number}"; - + description = "Register a .sol domain name. Input should be JSON with: {name: string, spaceKB?: number}"; + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -180,7 +172,7 @@ export class SolanaRegisterDomainTool extends Tool { export class SolanaGetWalletAddressTool extends Tool { name = "solana_get_wallet_address"; description = "Get the wallet address of the agent"; - + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -190,69 +182,57 @@ export class SolanaGetWalletAddressTool extends Tool { } } -export class SolanaLendAssetTool extends Tool { - name = "solana_lend_asset"; - description = - "Lend idle assets for yield using Lulo. Input should be JSON with: {asset: string, amount: number, luloApiKey: string}"; - +export class SolanaPumpfunTokenLaunch extends Tool { + name = "solana_launch_pumpfun_token"; + description = "Launch a new token on Pump.fun via Solana Agent Kit. Input should be JSON with: {tokenName: string, tokenTicker: string, description?: string, twitter?: string, telegram?: string, website?: string, imageUrl?: string, initialLiquiditySOL?: number, mintAddress?: string}"; + constructor(private solanaKit: SolanaAgentKit) { super(); } async _call(input: string): Promise { try { - const { asset, amount, luloApiKey } = JSON.parse(input); + // Parse and validate input + const validJson = input + .replace(/([a-zA-Z0-9_]+):/g, '"$1":') + .trim(); + const { + tokenName, + tokenTicker, + description, + twitter, + telegram, + website, + imageUrl, + initialLiquiditySOL, + mintAddress + } = JSON.parse(validJson); - const tx = await this.solanaKit.lendAssets( - new PublicKey(asset), - amount, - luloApiKey, + if (!tokenName || !tokenTicker) { + throw new Error("tokenName and tokenTicker are required"); + } + + // Launch token with options + const result = await this.solanaKit.launchpumpfuntoken( + tokenName, + tokenTicker, + { + description, + twitter, + telegram, + website, + imageUrl, + initialLiquiditySOL, + mintAddress, + } ); - return `Asset lent successfully. Transaction: ${tx}`; + return `Token launched successfully. + Transaction: ${result.signature} + Mint Address: ${result.mint} + Metadata URI: ${result.metadataUri}`; } catch (error: any) { - return `Error lending asset: ${error.message}`; - } - } -} - -export class SolanaFetchLendingDetailsTool extends Tool { - name = "solana_get_lending_details"; - description = - "Get details of assets lent on Lulo. Input should be JSON with: {luloApiKey: string}"; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const { luloApiKey } = JSON.parse(input); - - const lendingDetails = - await this.solanaKit.fetchLendingDetails(luloApiKey); - - return `Lending details: ${lendingDetails}`; - } catch (error: any) { - return `Error fetching lending details: ${error.message}`; - } - } -} - -export class SolanaTPSCalculatorTool extends Tool { - name = "solana_get_tps"; - description = "Get the current TPS of the Solana network"; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(_input: string): Promise { - try { - const tps = await this.solanaKit.getTPS(); - return `Solana (mainnet-beta) current transactions per second: ${tps}`; - } catch (error: any) { - return `Error fetching TPS: ${error.message}`; + return `Error launching token: ${error.message}`; } } } @@ -269,8 +249,6 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaRequestFundsTool(solanaKit), new SolanaRegisterDomainTool(solanaKit), new SolanaGetWalletAddressTool(solanaKit), - new SolanaLendAssetTool(solanaKit), - new SolanaFetchLendingDetailsTool(solanaKit), - new SolanaTPSCalculatorTool(solanaKit), + new SolanaPumpfunTokenLaunch(solanaKit) ]; } diff --git a/src/tools/index.ts b/src/tools/index.ts index 47ae5f3..b559ab4 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -1,10 +1,9 @@ -export * from "./request_faucet_funds"; -export * from "./deploy_token"; -export * from "./deploy_collection"; -export * from "./get_balance"; -export * from "./mint_nft"; -export * from "./transfer"; -export * from "./trade"; -export * from "./register_domain"; -export * from "./lend"; -export * from "./get_tps"; +export * from './request_faucet_funds'; +export * from './deploy_token'; +export * from './deploy_collection'; +export * from './get_balance'; +export * from './mint_nft'; +export * from './transfer'; +export * from './trade'; +export * from './register_domain'; +export * from './launch_pumpfun_token'; diff --git a/src/tools/launch_pumpfun_token.ts b/src/tools/launch_pumpfun_token.ts new file mode 100644 index 0000000..1e450c0 --- /dev/null +++ b/src/tools/launch_pumpfun_token.ts @@ -0,0 +1,182 @@ +// src/tools/launch_pumpfun_token.ts +import { VersionedTransaction, Keypair } from "@solana/web3.js"; +import { PumpFunTokenOptions, SolanaAgentKit } from "../index"; +import fetch from "node-fetch"; +import FormData from 'form-data'; + +async function uploadMetadata( + tokenName: string, + tokenTicker: string, + options: PumpFunTokenOptions +): Promise { + + // Create form data for IPFS + const formData: FormData = new FormData(); + + // required fields + formData.append("name", tokenName); + formData.append("symbol", tokenTicker); + formData.append("description", options.description || `${tokenName} token created via PumpPortal.fun`); + formData.append("showName", "true"); + + // optional fields + if (options.twitter) formData.append("twitter", options.twitter); + if (options.telegram) formData.append("telegram", options.telegram); + if (options.website) formData.append("website", options.website); + + // If imageUrl is provided, fetch and append the image + if (options.imageUrl) { + const imageResponse = await fetch(options.imageUrl); + const imageBuffer = await imageResponse.buffer(); + formData.append("file", imageBuffer, { + filename: "token_image.png", + contentType: "image/png" + }); + } + + // TBD : Remove after approval + console.log("Uploading metadata with fields:", { + name: tokenName, + symbol: tokenTicker, + description: options.description, + hasImage: !!options.imageUrl + }); + + const metadataResponse = await fetch("https://pump.fun/api/ipfs", { + method: "POST", + body: formData as any, + headers: formData.getHeaders() + }); + + if (!metadataResponse.ok) { + const errorText = await metadataResponse.text(); + throw new Error(`Metadata upload failed: ${errorText || metadataResponse.statusText}`); + } + + return await metadataResponse.json(); +} + +async function createTokenTransaction( + kit: SolanaAgentKit, + mintKeypair: Keypair, + metadataResponse: any, + options: PumpFunTokenOptions +) { + const response = await fetch("https://pumpportal.fun/api/trade-local", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + publicKey: kit.wallet_address.toBase58(), + action: "create", + tokenMetadata: { + name: metadataResponse.metadata.name, + symbol: metadataResponse.metadata.symbol, + uri: metadataResponse.metadataUri, + }, + mint: mintKeypair.publicKey.toBase58(), + denominatedInSol: "true", + amount: options.initialLiquiditySOL || 0.0001, + slippage: 5, + priorityFee: 0.00005, + pool: "pump", + }), + }); + + if (!response.ok) { + const errorText = await response.text(); + throw new Error(`Transaction creation failed: ${response.status} - ${errorText}`); + } + + return response; +} + +async function signAndSendTransaction( + kit: SolanaAgentKit, + tx: VersionedTransaction, + mintKeypair: Keypair +) { + try { + // Get the latest blockhash + const { blockhash, lastValidBlockHeight } = await kit.connection.getLatestBlockhash(); + + // Update transaction with latest blockhash + tx.message.recentBlockhash = blockhash; + + // Sign the transaction + tx.sign([mintKeypair, kit.wallet]); + + // Send and confirm transaction with options + const signature = await kit.connection.sendTransaction(tx, { + skipPreflight: false, + preflightCommitment: 'confirmed', + maxRetries: 5 + }); + + // Wait for confirmation + const confirmation = await kit.connection.confirmTransaction({ + signature, + blockhash, + lastValidBlockHeight + }); + + if (confirmation.value.err) { + throw new Error(`Transaction failed: ${confirmation.value.err}`); + } + + return signature; + } catch (error) { + console.error('Transaction send error:', error); + if (error instanceof Error && 'logs' in error) { + console.error('Transaction logs:', error.logs); + } + throw error; + } +} + +export async function launchpumpfuntoken( + kit: SolanaAgentKit, + tokenName: string, + tokenTicker: string, + options: PumpFunTokenOptions = {} +) { + try { + // TBD : Remove clgs after approval + console.log("Starting token launch process..."); + + // Generate mint keypair + const mintKeypair = Keypair.generate(); + console.log("Mint public key:", mintKeypair.publicKey.toBase58()); + + // Upload metadata + console.log("Uploading metadata to IPFS..."); + const metadataResponse = await uploadMetadata(tokenName, tokenTicker, options); + console.log("Metadata response:", metadataResponse); + + // Create token transaction + console.log("Creating token transaction..."); + const response = await createTokenTransaction(kit, mintKeypair, metadataResponse, options); + + const transactionData = await response.arrayBuffer(); + const tx = VersionedTransaction.deserialize(new Uint8Array(transactionData)); + + // Send transaction with proper blockhash handling + console.log("Sending transaction..."); + const signature = await signAndSendTransaction(kit, tx, mintKeypair); + + console.log("Token launch successful!"); + return { + signature, + mint: mintKeypair.publicKey.toBase58(), + metadataUri: metadataResponse.metadataUri, + }; + + } catch (error) { + console.error("Error in launchpumpfuntoken:", error); + if (error instanceof Error && 'logs' in error) { + console.error('Transaction logs:', (error as any).logs); + } + throw error; + } +} \ No newline at end of file diff --git a/src/types/index.ts b/src/types/index.ts index 16d2c4c..ed78547 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,5 +1,4 @@ import { PublicKey } from "@solana/web3.js"; -import { TOKENS } from "../constants"; export interface Creator { address: string; @@ -24,22 +23,21 @@ export interface MintCollectionNFTResponse { metadata: PublicKey; } -/** - * Mint addresses of supported tokens for lending on Lulo - */ -export type LuloDepositAssetMint = (typeof TOKENS)[keyof typeof TOKENS]; - -/** - * Lulo Account Details response format - */ -export interface LuloAccountDetailsResponse { - totalValue: number; - interestEarned: number; - realtimeApy: number; - settings: { - owner: string; - allowedProtocols: string | null; - homebase: string | null; - minimumRate: string; - }; +export interface PumpFunTokenOptions { + description?: string; + twitter?: string; + telegram?: string; + website?: string; + imageUrl?: string; + initialLiquiditySOL?: any; + slippageBps?: number; + priorityFee?: number; + mintAddress?: string; // Optional mint address +} + +export interface PumpfunLaunchResponse { + signature: string; + mint: string; + metadataUri?: string; + error?: string; } diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..42ae92a --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1603 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime@^7.25.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + dependencies: + regenerator-runtime "^0.14.0" + +"@bonfida/sns-records@0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@bonfida/sns-records/-/sns-records-0.0.1.tgz#e178dece0aeeb1670c57703568ae3e1218e7e5fe" + integrity sha512-i28w9+BMFufhhpmLQCNx1CKKXTsEn+5RT18VFpPqdGO3sqaYlnUWC1m3wDpOvlzGk498dljgRpRo5wmcsnuEMg== + dependencies: + borsh "1.0.0" + bs58 "5.0.0" + buffer "^6.0.3" + +"@bonfida/spl-name-service@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@bonfida/spl-name-service/-/spl-name-service-3.0.7.tgz#f645f510a886510d661db7625453d7339b681de9" + integrity sha512-okOLXhy+fQoyQ/sZgMleO5RrIZfTkWEoHMxWgUqg6RP/MTBlrKxlhKC6ymKn4UUe0C5s3Nb8A+3Ams7vX0nMDg== + dependencies: + "@bonfida/sns-records" "0.0.1" + "@noble/curves" "^1.4.0" + "@scure/base" "^1.1.6" + "@solana/spl-token" "0.4.6" + borsh "2.0.0" + buffer "^6.0.3" + graphemesplit "^2.4.4" + ipaddr.js "^2.2.0" + punycode "^2.3.1" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@langchain/core@^0.3.18": + version "0.3.19" + resolved "https://registry.yarnpkg.com/@langchain/core/-/core-0.3.19.tgz#8e2038dbb7cb70264d892cf9c3b506125ee68d77" + integrity sha512-pJVOAHShefu1SRO8uhzUs0Pexah/Ib66WETLMScIC2w9vXlpwQy3DzXJPJ5X7ixry9N666jYO5cHtM2Z1DnQIQ== + dependencies: + ansi-styles "^5.0.0" + camelcase "6" + decamelize "1.2.0" + js-tiktoken "^1.0.12" + langsmith "^0.2.0" + mustache "^4.2.0" + p-queue "^6.6.2" + p-retry "4" + uuid "^10.0.0" + zod "^3.22.4" + zod-to-json-schema "^3.22.3" + +"@langchain/openai@>=0.1.0 <0.4.0", "@langchain/openai@^0.3.13": + version "0.3.14" + resolved "https://registry.yarnpkg.com/@langchain/openai/-/openai-0.3.14.tgz#c2f50fe963769851287f0171385232a344a5484a" + integrity sha512-lNWjUo1tbvsss45IF7UQtMu1NJ6oUKvhgPYWXnX9f/d6OmuLu7D99HQ3Y88vLcUo9XjjOy417olYHignMduMjA== + dependencies: + js-tiktoken "^1.0.12" + openai "^4.71.0" + zod "^3.22.4" + zod-to-json-schema "^3.22.3" + +"@langchain/textsplitters@>=0.0.0 <0.2.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@langchain/textsplitters/-/textsplitters-0.1.0.tgz#f37620992192df09ecda3dfbd545b36a6bcbae46" + integrity sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw== + dependencies: + js-tiktoken "^1.0.12" + +"@metaplex-foundation/mpl-core@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-core/-/mpl-core-1.1.1.tgz#f3a61cc647b2cdf461e0403350a7136b90d9d51a" + integrity sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA== + dependencies: + "@msgpack/msgpack" "^3.0.0-beta2" + +"@metaplex-foundation/mpl-token-metadata@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-3.3.0.tgz#a6134bf807d23413cfce2db583bad4ca3539f4fb" + integrity sha512-t5vO8Wr3ZZZPGrVrGNcosX5FMkwQSgBiVMQMRNDG2De7voYFJmIibD5jdG05EoQ4Y5kZVEiwhYaO+wJB3aO5AA== + dependencies: + "@metaplex-foundation/mpl-toolbox" "^0.9.4" + +"@metaplex-foundation/mpl-toolbox@^0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-toolbox/-/mpl-toolbox-0.9.4.tgz#2211b2f726b1e5745c03908d26fd8ee580838b6f" + integrity sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ== + +"@metaplex-foundation/umi-bundle-defaults@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-bundle-defaults/-/umi-bundle-defaults-0.9.2.tgz#f8e296b1a0ecb3a6511dbaca4131bc9263071cfc" + integrity sha512-kV3tfvgvRjVP1p9OFOtH+ibOtN9omVJSwKr0We4/9r45e5LTj+32su0V/rixZUkG1EZzzOYBsxhtIE0kIw/Hrw== + dependencies: + "@metaplex-foundation/umi-downloader-http" "^0.9.2" + "@metaplex-foundation/umi-eddsa-web3js" "^0.9.2" + "@metaplex-foundation/umi-http-fetch" "^0.9.2" + "@metaplex-foundation/umi-program-repository" "^0.9.2" + "@metaplex-foundation/umi-rpc-chunk-get-accounts" "^0.9.2" + "@metaplex-foundation/umi-rpc-web3js" "^0.9.2" + "@metaplex-foundation/umi-serializer-data-view" "^0.9.2" + "@metaplex-foundation/umi-transaction-factory-web3js" "^0.9.2" + +"@metaplex-foundation/umi-downloader-http@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-downloader-http/-/umi-downloader-http-0.9.2.tgz#df84b11df9141854ca1cf7c6c8374658e67de767" + integrity sha512-tzPT9hBwenzTzAQg07rmsrqZfgguAXELbcJrsYMoASp5VqWFXYIP00g94KET6XLjWUXH4P1J2zoa6hGennPXHA== + +"@metaplex-foundation/umi-eddsa-web3js@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-eddsa-web3js/-/umi-eddsa-web3js-0.9.2.tgz#92225595137c5585dae63b148786ab77fcb6d625" + integrity sha512-hhPCxXbYIp4BC4z9gK78sXpWLkNSrfv4ndhF5ruAkdIp7GcRVYKj0QnOUO6lGYGiIkNlw20yoTwOe1CT//OfTQ== + dependencies: + "@metaplex-foundation/umi-web3js-adapters" "^0.9.2" + "@noble/curves" "^1.0.0" + +"@metaplex-foundation/umi-http-fetch@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-http-fetch/-/umi-http-fetch-0.9.2.tgz#e233ec34b789ed5257168b97d72fc9b039155046" + integrity sha512-YCZuBu24T9ZzEDe4+w12LEZm/fO9pkyViZufGgASC5NX93814Lvf6Ssjn/hZzjfA7CvZbvLFbmujc6CV3Q/m9Q== + dependencies: + node-fetch "^2.6.7" + +"@metaplex-foundation/umi-options@^0.8.9": + version "0.8.9" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-options/-/umi-options-0.8.9.tgz#9c9e269d9eee7d055ad6831dcb30a30127dcb0c5" + integrity sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A== + +"@metaplex-foundation/umi-program-repository@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-program-repository/-/umi-program-repository-0.9.2.tgz#53fce2bf506bb97fdb6a53e2118f8d1dd28fd0b5" + integrity sha512-g3+FPqXEmYsBa8eETtUE2gb2Oe3mqac0z3/Ur1TvAg5TtIy3mzRzOy/nza+sgzejnfcxcVg835rmpBaxpBnjDA== + +"@metaplex-foundation/umi-public-keys@^0.8.9": + version "0.8.9" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-public-keys/-/umi-public-keys-0.8.9.tgz#ca7a927c924ed8e28d0f8bb3dc0f2adc1f9011ec" + integrity sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q== + dependencies: + "@metaplex-foundation/umi-serializers-encodings" "^0.8.9" + +"@metaplex-foundation/umi-rpc-chunk-get-accounts@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-rpc-chunk-get-accounts/-/umi-rpc-chunk-get-accounts-0.9.2.tgz#f93bd43d4c65cdfdb0a68145a837fb6b13e0e832" + integrity sha512-YRwVf6xH0jPBAUgMhEPi+UbjioAeqTXmjsN2TnmQCPAmHbrHrMRj0rlWYwFLWAgkmoxazYrXP9lqOFRrfOGAEA== + +"@metaplex-foundation/umi-rpc-web3js@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-rpc-web3js/-/umi-rpc-web3js-0.9.2.tgz#b00a4cc1a9bd5d930164d1ba43f816107655c0d9" + integrity sha512-MqcsBz8B4wGl6jxsf2Jo/rAEpYReU9VCSR15QSjhvADHMmdFxCIZCCAgE+gDE2Vuanfl437VhOcP3g5Uw8C16Q== + dependencies: + "@metaplex-foundation/umi-web3js-adapters" "^0.9.2" + +"@metaplex-foundation/umi-serializer-data-view@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializer-data-view/-/umi-serializer-data-view-0.9.2.tgz#a05d88e7120b839e3acba35f7b4e12fe8be2becc" + integrity sha512-5vGptadJxUxvUcyrwFZxXlEc6Q7AYySBesizCtrBFUY8w8PnF2vzmS45CP1MLySEATNH6T9mD4Rs0tLb87iQyA== + +"@metaplex-foundation/umi-serializers-core@^0.8.9": + version "0.8.9" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-core/-/umi-serializers-core-0.8.9.tgz#cd5ae763a59e54dd01f1284f4a6bf4e78e4aab9c" + integrity sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w== + +"@metaplex-foundation/umi-serializers-encodings@^0.8.9": + version "0.8.9" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-encodings/-/umi-serializers-encodings-0.8.9.tgz#0f02605ee3e6fbeac1abc4fb267a7cc96ecb4410" + integrity sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q== + dependencies: + "@metaplex-foundation/umi-serializers-core" "^0.8.9" + +"@metaplex-foundation/umi-serializers-numbers@^0.8.9": + version "0.8.9" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-numbers/-/umi-serializers-numbers-0.8.9.tgz#28c10367f6aebac0276ec1bce81d0d8db54b05de" + integrity sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg== + dependencies: + "@metaplex-foundation/umi-serializers-core" "^0.8.9" + +"@metaplex-foundation/umi-serializers@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers/-/umi-serializers-0.9.0.tgz#af6d03a3bf821bf73b7b3450bb8df0407f2f69d6" + integrity sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg== + dependencies: + "@metaplex-foundation/umi-options" "^0.8.9" + "@metaplex-foundation/umi-public-keys" "^0.8.9" + "@metaplex-foundation/umi-serializers-core" "^0.8.9" + "@metaplex-foundation/umi-serializers-encodings" "^0.8.9" + "@metaplex-foundation/umi-serializers-numbers" "^0.8.9" + +"@metaplex-foundation/umi-transaction-factory-web3js@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-transaction-factory-web3js/-/umi-transaction-factory-web3js-0.9.2.tgz#294c3ca996897bb95b993b808fb9252bd085db15" + integrity sha512-fR1Kf21uylMFd1Smkltmj4jTNxhqSWf416owsJ+T+cvJi2VCOcOwq/3UFzOrpz78fA0RhsajKYKj0HYsRnQI1g== + dependencies: + "@metaplex-foundation/umi-web3js-adapters" "^0.9.2" + +"@metaplex-foundation/umi-web3js-adapters@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-web3js-adapters/-/umi-web3js-adapters-0.9.2.tgz#1e0ebb4e3c31e8bead27892b20204292ad6955c5" + integrity sha512-RQqUTtHYY9fmEMnq7s3Hiv/81flGaoI0ZVVoafnFVaQLnxU6QBKxtboRZHk43XtD9CiFh5f9izrMJX7iK7KlOA== + dependencies: + buffer "^6.0.3" + +"@metaplex-foundation/umi@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi/-/umi-0.9.2.tgz#6460bff91d2ac7745842eda1ee6a28fba4d2ffb2" + integrity sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw== + dependencies: + "@metaplex-foundation/umi-options" "^0.8.9" + "@metaplex-foundation/umi-public-keys" "^0.8.9" + "@metaplex-foundation/umi-serializers" "^0.9.0" + +"@msgpack/msgpack@^3.0.0-beta2": + version "3.0.0-beta2" + resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-3.0.0-beta2.tgz#5bccee30f84df220b33905e3d8249ba96deca0b7" + integrity sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw== + +"@noble/curves@^1.0.0", "@noble/curves@^1.4.0", "@noble/curves@^1.4.2": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.7.0.tgz#0512360622439256df892f21d25b388f52505e45" + integrity sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw== + dependencies: + "@noble/hashes" "1.6.0" + +"@noble/hashes@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.0.tgz#d4bfb516ad6e7b5111c216a5cc7075f4cf19e6c5" + integrity sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ== + +"@noble/hashes@^1.4.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.1.tgz#df6e5943edcea504bac61395926d6fd67869a0d5" + integrity sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w== + +"@scure/base@^1.1.6": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.1.tgz#dd0b2a533063ca612c17aa9ad26424a2ff5aa865" + integrity sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ== + +"@shikijs/core@1.23.1": + version "1.23.1" + resolved "https://registry.yarnpkg.com/@shikijs/core/-/core-1.23.1.tgz#911473e672e4f2d15ca36b28b28179c0959aa7af" + integrity sha512-NuOVgwcHgVC6jBVH5V7iblziw6iQbWWHrj5IlZI3Fqu2yx9awH7OIQkXIcsHsUmY19ckwSgUMgrqExEyP5A0TA== + dependencies: + "@shikijs/engine-javascript" "1.23.1" + "@shikijs/engine-oniguruma" "1.23.1" + "@shikijs/types" "1.23.1" + "@shikijs/vscode-textmate" "^9.3.0" + "@types/hast" "^3.0.4" + hast-util-to-html "^9.0.3" + +"@shikijs/engine-javascript@1.23.1": + version "1.23.1" + resolved "https://registry.yarnpkg.com/@shikijs/engine-javascript/-/engine-javascript-1.23.1.tgz#0f634bea22cb14f471835b7b5f1da66bc34bd359" + integrity sha512-i/LdEwT5k3FVu07SiApRFwRcSJs5QM9+tod5vYCPig1Ywi8GR30zcujbxGQFJHwYD7A5BUqagi8o5KS+LEVgBg== + dependencies: + "@shikijs/types" "1.23.1" + "@shikijs/vscode-textmate" "^9.3.0" + oniguruma-to-es "0.4.1" + +"@shikijs/engine-oniguruma@1.23.1": + version "1.23.1" + resolved "https://registry.yarnpkg.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.23.1.tgz#c6c34c9152cf90c1ee75fcdbd124253c8ad0635f" + integrity sha512-KQ+lgeJJ5m2ISbUZudLR1qHeH3MnSs2mjFg7bnencgs5jDVPeJ2NVDJ3N5ZHbcTsOIh0qIueyAJnwg7lg7kwXQ== + dependencies: + "@shikijs/types" "1.23.1" + "@shikijs/vscode-textmate" "^9.3.0" + +"@shikijs/types@1.23.1": + version "1.23.1" + resolved "https://registry.yarnpkg.com/@shikijs/types/-/types-1.23.1.tgz#2386d49258be03e7b40fea1f28fda952739ad93d" + integrity sha512-98A5hGyEhzzAgQh2dAeHKrWW4HfCMeoFER2z16p5eJ+vmPeF6lZ/elEne6/UCU551F/WqkopqRsr1l2Yu6+A0g== + dependencies: + "@shikijs/vscode-textmate" "^9.3.0" + "@types/hast" "^3.0.4" + +"@shikijs/vscode-textmate@^9.3.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz#b2f1776e488c1d6c2b6cd129bab62f71bbc9c7ab" + integrity sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA== + +"@solana/buffer-layout-utils@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" + integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/web3.js" "^1.32.0" + bigint-buffer "^1.1.5" + bignumber.js "^9.0.1" + +"@solana/buffer-layout@^4.0.0", "@solana/buffer-layout@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" + integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== + dependencies: + buffer "~6.0.3" + +"@solana/codecs-core@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-preview.2.tgz#689784d032fbc1fedbde40bb25d76cdcecf6553b" + integrity sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg== + dependencies: + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-core@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-rc.1.tgz#1a2d76b9c7b9e7b7aeb3bd78be81c2ba21e3ce22" + integrity sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ== + dependencies: + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs-data-structures@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.2.tgz#e82cb1b6d154fa636cd5c8953ff3f32959cc0370" + integrity sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-data-structures@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-rc.1.tgz#d47b2363d99fb3d643f5677c97d64a812982b888" + integrity sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs-numbers@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.2.tgz#56995c27396cd8ee3bae8bd055363891b630bbd0" + integrity sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-numbers@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-rc.1.tgz#f34978ddf7ea4016af3aaed5f7577c1d9869a614" + integrity sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs-strings@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.2.tgz#8bd01a4e48614d5289d72d743c3e81305d445c46" + integrity sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-strings@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-rc.1.tgz#e1d9167075b8c5b0b60849f8add69c0f24307018" + integrity sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-preview.2.tgz#d6615fec98f423166fb89409f9a4ad5b74c10935" + integrity sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-data-structures" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + "@solana/codecs-strings" "2.0.0-preview.2" + "@solana/options" "2.0.0-preview.2" + +"@solana/codecs@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-rc.1.tgz#146dc5db58bd3c28e04b4c805e6096c2d2a0a875" + integrity sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-data-structures" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/codecs-strings" "2.0.0-rc.1" + "@solana/options" "2.0.0-rc.1" + +"@solana/errors@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.2.tgz#e0ea8b008c5c02528d5855bc1903e5e9bbec322e" + integrity sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA== + dependencies: + chalk "^5.3.0" + commander "^12.0.0" + +"@solana/errors@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-rc.1.tgz#3882120886eab98a37a595b85f81558861b29d62" + integrity sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ== + dependencies: + chalk "^5.3.0" + commander "^12.1.0" + +"@solana/options@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-preview.2.tgz#13ff008bf43a5056ef9a091dc7bb3f39321e867e" + integrity sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + +"@solana/options@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-rc.1.tgz#06924ba316dc85791fc46726a51403144a85fc4d" + integrity sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-data-structures" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/codecs-strings" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/spl-token-group@^0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.4.tgz#4f45d9526c96a33b9a1929a264d0aa21c7e38a2d" + integrity sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw== + dependencies: + "@solana/codecs" "2.0.0-preview.2" + "@solana/spl-type-length-value" "0.1.0" + +"@solana/spl-token-group@^0.0.7": + version "0.0.7" + resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.7.tgz#83c00f0cd0bda33115468cd28b89d94f8ec1fee4" + integrity sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug== + dependencies: + "@solana/codecs" "2.0.0-rc.1" + +"@solana/spl-token-metadata@^0.1.4", "@solana/spl-token-metadata@^0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@solana/spl-token-metadata/-/spl-token-metadata-0.1.6.tgz#d240947aed6e7318d637238022a7b0981b32ae80" + integrity sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA== + dependencies: + "@solana/codecs" "2.0.0-rc.1" + +"@solana/spl-token@0.4.6": + version "0.4.6" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.6.tgz#eb44e5080ea7b6fc976abcb39457223211bd9076" + integrity sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-group" "^0.0.4" + "@solana/spl-token-metadata" "^0.1.4" + buffer "^6.0.3" + +"@solana/spl-token@^0.4.9": + version "0.4.9" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.9.tgz#24d032d2935f237925c3b058ba6bb1e1ece5428c" + integrity sha512-g3wbj4F4gq82YQlwqhPB0gHFXfgsC6UmyGMxtSLf/BozT/oKd59465DbnlUK8L8EcimKMavxsVAMoLcEdeCicg== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-group" "^0.0.7" + "@solana/spl-token-metadata" "^0.1.6" + buffer "^6.0.3" + +"@solana/spl-type-length-value@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz#b5930cf6c6d8f50c7ff2a70463728a4637a2f26b" + integrity sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA== + dependencies: + buffer "^6.0.3" + +"@solana/web3.js@^1.32.0", "@solana/web3.js@^1.95.4": + version "1.95.5" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.95.5.tgz#ba70da4c205c64249ed94369fe2d617c0347cd85" + integrity sha512-hU9cBrbg1z6gEjLH9vwIckGBVB78Ijm0iZFNk4ocm5OD82piPwuk3MeQ1rfiKD9YQtr95krrcaopb49EmQJlRg== + dependencies: + "@babel/runtime" "^7.25.0" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + agentkeepalive "^4.5.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.1" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + +"@swc/helpers@^0.5.11": + version "0.5.15" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7" + integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g== + dependencies: + tslib "^2.8.0" + +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/connect@^3.4.33": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/hast@^3.0.0", "@types/hast@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" + integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== + dependencies: + "@types/unist" "*" + +"@types/mdast@^4.0.0": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" + integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== + dependencies: + "@types/unist" "*" + +"@types/node-fetch@^2.6.4": + version "2.6.12" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.12.tgz#8ab5c3ef8330f13100a7479e2cd56d3386830a03" + integrity sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA== + dependencies: + "@types/node" "*" + form-data "^4.0.0" + +"@types/node@*", "@types/node@^22.9.0": + version "22.10.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.0.tgz#89bfc9e82496b9c7edea3382583fa94f75896e81" + integrity sha512-XC70cRZVElFHfIUB40FgZOBbgJYFKKMa5nb9lxcwYstFG/Mi+/Y0bGS+rs6Dmhmkpq4pnNiLiuZAbc02YCOnmA== + dependencies: + undici-types "~6.20.0" + +"@types/node@^12.12.54": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/node@^18.11.18": + version "18.19.66" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.66.tgz#0937a47904ceba5994eedf5cf4b6d503d8d6136c" + integrity sha512-14HmtUdGxFUalGRfLLn9Gc1oNWvWh5zNbsyOLo5JV6WARSeN1QcEBKRnZm9QqNfrutgsl/hY4eJW63aZ44aBCg== + dependencies: + undici-types "~5.26.4" + +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + +"@types/unist@*", "@types/unist@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" + integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== + +"@types/uuid@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-10.0.0.tgz#e9c07fe50da0f53dc24970cca94d619ff03f6f6d" + integrity sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ== + +"@types/uuid@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + +"@types/ws@^7.4.4": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + +"@types/ws@^8.2.2": + version "8.5.13" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.13.tgz#6414c280875e2691d0d1e080b05addbf5cb91e20" + integrity sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA== + dependencies: + "@types/node" "*" + +"@ungap/structured-clone@^1.0.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +acorn-walk@^8.1.1: + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +acorn@^8.11.0, acorn@^8.4.1: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + +agentkeepalive@^4.2.1, agentkeepalive@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== + dependencies: + humanize-ms "^1.2.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2: + version "3.0.10" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.10.tgz#62de58653f8762b5d6f8d9fe30fa75f7b2585a75" + integrity sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ== + dependencies: + safe-buffer "^5.0.1" + +base-x@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" + integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== + +base-x@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-5.0.0.tgz#6d835ceae379130e1a4cb846a70ac4746f28ea9b" + integrity sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ== + +base64-js@^1.3.1, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bigint-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" + integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== + dependencies: + bindings "^1.3.0" + +bignumber.js@^9.0.1: + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== + +bindings@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +borsh@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-1.0.0.tgz#b564c8cc8f7a91e3772b9aef9e07f62b84213c1f" + integrity sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ== + +borsh@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-2.0.0.tgz#042a9f109565caac3c6a21297cd8c0ae8db3149d" + integrity sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg== + +borsh@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +bs58@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== + dependencies: + base-x "^4.0.0" + +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-6.0.0.tgz#a2cda0130558535dd281a2f8697df79caaf425d8" + integrity sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw== + dependencies: + base-x "^5.0.0" + +buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bufferutil@^4.0.1: + version "4.0.8" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" + integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== + dependencies: + node-gyp-build "^4.3.0" + +camelcase@6: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +ccount@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + +chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +character-entities-html4@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" + integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== + +character-entities-legacy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +comma-separated-tokens@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" + integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== + +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^12.0.0, commander@^12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== + +commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +decamelize@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +devlop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" + integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== + dependencies: + dequal "^2.0.0" + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dotenv@^16.4.5: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + +emoji-regex-xs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz#e8af22e5d9dbd7f7f22d280af3d19d2aab5b0724" + integrity sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg== + +entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@^4.0.4: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +eyes@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-stable-stringify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" + integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +form-data-encoder@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.2.tgz#1f1ae3dccf58ed4690b86d87e4f57c654fbab040" + integrity sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A== + +form-data@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +formdata-node@^4.3.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-4.4.1.tgz#23f6a5cb9cb55315912cbec4ff7b0f59bbd191e2" + integrity sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ== + dependencies: + node-domexception "1.0.0" + web-streams-polyfill "4.0.0-beta.3" + +graphemesplit@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/graphemesplit/-/graphemesplit-2.4.4.tgz#6d325c61e928efdaec2189f54a9b87babf89b75a" + integrity sha512-lKrpp1mk1NH26USxC/Asw4OHbhSQf5XfrWZ+CDv/dFVvd1j17kFgMotdJvOesmHkbFX9P9sBfpH8VogxOWLg8w== + dependencies: + js-base64 "^3.6.0" + unicode-trie "^2.0.0" + +hast-util-to-html@^9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz#a9999a0ba6b4919576a9105129fead85d37f302b" + integrity sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + ccount "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-whitespace "^3.0.0" + html-void-elements "^3.0.0" + mdast-util-to-hast "^13.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + stringify-entities "^4.0.0" + zwitch "^2.0.4" + +hast-util-whitespace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" + integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== + dependencies: + "@types/hast" "^3.0.0" + +html-void-elements@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" + integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ipaddr.js@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +jayson@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.1.3.tgz#db9be2e4287d9fef4fc05b5fe367abe792c2eee8" + integrity sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + uuid "^8.3.2" + ws "^7.5.10" + +js-base64@^3.6.0: + version "3.7.7" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.7.tgz#e51b84bf78fbf5702b9541e2cb7bfcb893b43e79" + integrity sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw== + +js-tiktoken@^1.0.12: + version "1.0.15" + resolved "https://registry.yarnpkg.com/js-tiktoken/-/js-tiktoken-1.0.15.tgz#92a7d829f6950c2cfb35cc52555502e3d6e2ebac" + integrity sha512-65ruOWWXDEZHHbAo7EjOcNxOGasQKbL4Fq3jEr2xsCqSsoOo6VVSqzWQb6PRIqypFSDcma4jO90YP0w5X8qVXQ== + dependencies: + base64-js "^1.5.1" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +jsonpointer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== + +langchain@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/langchain/-/langchain-0.3.6.tgz#f4313d202ce168d29bfcf81a551147cd4986779f" + integrity sha512-erZOIKXzwCOrQHqY9AyjkQmaX62zUap1Sigw1KrwMUOnVoLKkVNRmAyxFlNZDZ9jLs/58MaQcaT9ReJtbj3x6w== + dependencies: + "@langchain/openai" ">=0.1.0 <0.4.0" + "@langchain/textsplitters" ">=0.0.0 <0.2.0" + js-tiktoken "^1.0.12" + js-yaml "^4.1.0" + jsonpointer "^5.0.1" + langsmith "^0.2.0" + openapi-types "^12.1.3" + p-retry "4" + uuid "^10.0.0" + yaml "^2.2.1" + zod "^3.22.4" + zod-to-json-schema "^3.22.3" + +langsmith@^0.2.0: + version "0.2.8" + resolved "https://registry.yarnpkg.com/langsmith/-/langsmith-0.2.8.tgz#926a857df206a67fd912f9a201a08cdffa8870e2" + integrity sha512-wKVNZoYtd8EqQWUEsfDZlZ77rH7vVqgNtONXRwynUp7ZFMFUIPhSlqE9pXqrmYPE8ZTBFj7diag2lFgUuaOEKw== + dependencies: + "@types/uuid" "^10.0.0" + commander "^10.0.1" + p-queue "^6.6.2" + p-retry "4" + semver "^7.6.3" + uuid "^10.0.0" + +linkify-it@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" + integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== + dependencies: + uc.micro "^2.0.0" + +lunr@^2.3.9: + version "2.3.9" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" + integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +markdown-it@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.0.tgz#3c3c5992883c633db4714ccb4d7b5935d98b7d45" + integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== + dependencies: + argparse "^2.0.1" + entities "^4.4.0" + linkify-it "^5.0.0" + mdurl "^2.0.0" + punycode.js "^2.3.1" + uc.micro "^2.1.0" + +mdast-util-to-hast@^13.0.0: + version "13.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz#5ca58e5b921cc0a3ded1bc02eed79a4fe4fe41f4" + integrity sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA== + dependencies: + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + "@ungap/structured-clone" "^1.0.0" + devlop "^1.0.0" + micromark-util-sanitize-uri "^2.0.0" + trim-lines "^3.0.0" + unist-util-position "^5.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" + +mdurl@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" + integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== + +micromark-util-character@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz#2f987831a40d4c510ac261e89852c4e9703ccda6" + integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-encode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz#0d51d1c095551cfaac368326963cf55f15f540b8" + integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== + +micromark-util-sanitize-uri@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz#ab89789b818a58752b73d6b55238621b7faa8fd7" + integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-symbol "^2.0.0" + +micromark-util-symbol@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz#e5da494e8eb2b071a0d08fb34f6cefec6c0a19b8" + integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q== + +micromark-util-types@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.1.tgz#a3edfda3022c6c6b55bfb049ef5b75d70af50709" + integrity sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimatch@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +ms@^2.0.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mustache@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" + integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== + +node-domexception@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + +node-fetch@^2.6.7, node-fetch@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.3.0: + version "4.8.4" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" + integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== + +oniguruma-to-es@0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/oniguruma-to-es/-/oniguruma-to-es-0.4.1.tgz#112fbcd5fafe4f635983425a6db88f3e2de37107" + integrity sha512-rNcEohFz095QKGRovP/yqPIKc+nP+Sjs4YTHMv33nMePGKrq/r2eu9Yh4646M5XluGJsUnmwoXuiXE69KDs+fQ== + dependencies: + emoji-regex-xs "^1.0.0" + regex "^5.0.0" + regex-recursion "^4.2.1" + +openai@^4.71.0: + version "4.73.1" + resolved "https://registry.yarnpkg.com/openai/-/openai-4.73.1.tgz#532bd000d5f1a558e4fff1119da6749992ac41e4" + integrity sha512-nWImDJBcUsqrhy7yJScXB4+iqjzbUEgzfA3un/6UnHFdwWhjX24oztj69Ped/njABfOdLcO/F7CeWTI5dt8Xmg== + dependencies: + "@types/node" "^18.11.18" + "@types/node-fetch" "^2.6.4" + abort-controller "^3.0.0" + agentkeepalive "^4.2.1" + form-data-encoder "1.7.2" + formdata-node "^4.3.2" + node-fetch "^2.6.7" + +openapi-types@^12.1.3: + version "12.1.3" + resolved "https://registry.yarnpkg.com/openapi-types/-/openapi-types-12.1.3.tgz#471995eb26c4b97b7bd356aacf7b91b73e777dd3" + integrity sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-queue@^6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + +p-retry@4: + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" + +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + +pako@^0.2.5: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== + +property-information@^6.0.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.5.0.tgz#6212fbb52ba757e92ef4fb9d657563b933b7ffec" + integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig== + +punycode.js@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" + integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== + +punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regex-recursion@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/regex-recursion/-/regex-recursion-4.3.0.tgz#32c3a42a57d78bf2d0c83875074c2f7ebaf2a4f6" + integrity sha512-5LcLnizwjcQ2ALfOj95MjcatxyqF5RPySx9yT+PaXu3Gox2vyAtLDjHB8NTJLtMGkvyau6nI3CfpwFCjPUIs/A== + dependencies: + regex-utilities "^2.3.0" + +regex-utilities@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/regex-utilities/-/regex-utilities-2.3.0.tgz#87163512a15dce2908cf079c8960d5158ff43280" + integrity sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng== + +regex@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/regex/-/regex-5.0.2.tgz#291d960467e6499a79ceec022d20a4e0df67c54f" + integrity sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ== + dependencies: + regex-utilities "^2.3.0" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +rpc-websockets@^9.0.2: + version "9.0.4" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.4.tgz#9d8ee82533b5d1e13d9ded729e3e38d0d8fa083f" + integrity sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ== + dependencies: + "@swc/helpers" "^0.5.11" + "@types/uuid" "^8.3.4" + "@types/ws" "^8.2.2" + buffer "^6.0.3" + eventemitter3 "^5.0.1" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + +safe-buffer@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +semver@^7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +shiki@^1.16.2: + version "1.23.1" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-1.23.1.tgz#02f149e8f2592509e701f3a806fd4f3dd64d17e9" + integrity sha512-8kxV9TH4pXgdKGxNOkrSMydn1Xf6It8lsle0fiqxf7a1149K1WGtdOu3Zb91T5r1JpvRPxqxU3C2XdZZXQnrig== + dependencies: + "@shikijs/core" "1.23.1" + "@shikijs/engine-javascript" "1.23.1" + "@shikijs/engine-oniguruma" "1.23.1" + "@shikijs/types" "1.23.1" + "@shikijs/vscode-textmate" "^9.3.0" + "@types/hast" "^3.0.4" + +space-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" + integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== + +stringify-entities@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3" + integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== + dependencies: + character-entities-html4 "^2.0.0" + character-entities-legacy "^3.0.0" + +superstruct@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" + integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== + +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + +"through@>=2.2.7 <3": + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tiny-inflate@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" + integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +trim-lines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" + integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== + +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tslib@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +typedoc@^0.26.11: + version "0.26.11" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.26.11.tgz#124b43a5637b7f3237b8c721691b44738c5c9dc9" + integrity sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw== + dependencies: + lunr "^2.3.9" + markdown-it "^14.1.0" + minimatch "^9.0.5" + shiki "^1.16.2" + yaml "^2.5.1" + +uc.micro@^2.0.0, uc.micro@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" + integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== + +unicode-trie@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-2.0.0.tgz#8fd8845696e2e14a8b67d78fa9e0dd2cad62fec8" + integrity sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ== + dependencies: + pako "^0.2.5" + tiny-inflate "^1.0.0" + +unist-util-is@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" + integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-position@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" + integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-stringify-position@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" + integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-visit-parents@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" + integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + +unist-util-visit@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" + integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +uuid@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" + integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +vfile-message@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" + integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-stringify-position "^4.0.0" + +vfile@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.3.tgz#3652ab1c496531852bf55a6bac57af981ebc38ab" + integrity sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q== + dependencies: + "@types/unist" "^3.0.0" + vfile-message "^4.0.0" + +web-streams-polyfill@4.0.0-beta.3: + version "4.0.0-beta.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz#2898486b74f5156095e473efe989dcf185047a38" + integrity sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +ws@^7.5.10: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +ws@^8.5.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + +yaml@^2.2.1, yaml@^2.5.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.1.tgz#42f2b1ba89203f374609572d5349fb8686500773" + integrity sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg== + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +zod-to-json-schema@^3.22.3: + version "3.23.5" + resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.23.5.tgz#ec23def47dcafe3a4d640eba6a346b34f9a693a5" + integrity sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA== + +zod@^3.22.4: + version "3.23.8" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" + integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== + +zwitch@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== From 4d140f33dfff1b2ac02db756dc98142f97b05a8f Mon Sep 17 00:00:00 2001 From: aryan Date: Wed, 4 Dec 2024 17:07:53 +0530 Subject: [PATCH 2/9] chore: refractor --- docs/CNAME | 1 - docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 11 +- docs/functions/createSolanaTools.html | 2 +- docs/index.html | 12 +- docs/interfaces/CollectionDeployment.html | 4 +- docs/interfaces/CollectionOptions.html | 4 +- docs/interfaces/Creator.html | 4 +- .../LuloAccountDetailsResponse.html | 4 +- .../interfaces/MintCollectionNFTResponse.html | 4 +- docs/types/LuloDepositAssetMint.html | 2 +- package.json | 1 + pnpm-lock.yaml | 3 + src/agent/index.ts | 20 +- src/langchain/index.ts | 46 +---- src/tools/launch_pumpfun_token.ts | 116 ++++++----- src/types/index.ts | 3 +- test/index.ts | 194 +++++++++++++++--- tsconfig.json | 6 - 19 files changed, 266 insertions(+), 173 deletions(-) delete mode 100644 docs/CNAME diff --git a/docs/CNAME b/docs/CNAME deleted file mode 100644 index 2708636..0000000 --- a/docs/CNAME +++ /dev/null @@ -1 +0,0 @@ -solanaagentkit.xyz \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index f42ab3e..9c2b490 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index 328f91d..3d2bb59 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,7 +1,7 @@ SolanaAgentKit | solana-agent-kit

Class SolanaAgentKit

Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, and trading

SolanaAgentKit

-

Constructors

Constructors

Properties

connection wallet wallet_address @@ -9,13 +9,14 @@ Provides a unified interface for token operations, NFT management, and tradingdeployToken fetchLendingDetails getBalance +getTPS lendAssets mintNFT registerDomain requestFaucetFunds trade transfer -

Constructors

Properties

connection: Connection

Solana RPC connection

-
wallet: Keypair

Wallet keypair for signing transactions

-
wallet_address: PublicKey

Public key of the wallet

-

Methods

  • Parameters

    • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS

    Returns Promise<{
        mint: PublicKey;
    }>

  • Parameters

    • Optionaltoken_address: PublicKey

    Returns Promise<null | number>

  • Parameters

    • asset: PublicKey
    • amount: number
    • LULO_API_KEY: string

    Returns Promise<string>

  • Parameters

    • collectionMint: PublicKey
    • metadata: {
          creators?: {
              address: string;
              share: number;
          }[];
          name: string;
          sellerFeeBasisPoints?: number;
          symbol: string;
          uri: string;
      }
      • Optionalcreators?: {
            address: string;
            share: number;
        }[]
      • name: string
      • OptionalsellerFeeBasisPoints?: number
      • symbol: string
      • uri: string
    • Optionalrecipient: PublicKey

    Returns Promise<MintCollectionNFTResponse>

  • Parameters

    • name: string
    • OptionalspaceKB: number

    Returns Promise<string>

  • Returns Promise<string>

  • Parameters

    • outputMint: PublicKey
    • inputAmount: number
    • OptionalinputMint: PublicKey
    • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

    Returns Promise<string>

  • Parameters

    • to: PublicKey
    • amount: number
    • Optionalmint: PublicKey

    Returns Promise<string>

+

Constructors

Properties

connection: Connection

Solana RPC connection

+
wallet: Keypair

Wallet keypair for signing transactions

+
wallet_address: PublicKey

Public key of the wallet

+

Methods

  • Parameters

    • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS

    Returns Promise<{
        mint: PublicKey;
    }>

  • Parameters

    • Optionaltoken_address: PublicKey

    Returns Promise<null | number>

  • Parameters

    • asset: PublicKey
    • amount: number
    • LULO_API_KEY: string

    Returns Promise<string>

  • Parameters

    • collectionMint: PublicKey
    • metadata: {
          creators?: {
              address: string;
              share: number;
          }[];
          name: string;
          sellerFeeBasisPoints?: number;
          symbol: string;
          uri: string;
      }
      • Optionalcreators?: {
            address: string;
            share: number;
        }[]
      • name: string
      • OptionalsellerFeeBasisPoints?: number
      • symbol: string
      • uri: string
    • Optionalrecipient: PublicKey

    Returns Promise<MintCollectionNFTResponse>

  • Parameters

    • name: string
    • OptionalspaceKB: number

    Returns Promise<string>

  • Returns Promise<string>

  • Parameters

    • outputMint: PublicKey
    • inputAmount: number
    • OptionalinputMint: PublicKey
    • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

    Returns Promise<string>

  • Parameters

    • to: PublicKey
    • amount: number
    • Optionalmint: PublicKey

    Returns Promise<string>

diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index 41f0f88..b713625 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

Function createSolanaTools

  • Parameters

    Returns (
        | SolanaBalanceTool
        | SolanaTransferTool
        | SolanaDeployTokenTool
        | SolanaDeployCollectionTool
        | SolanaMintNFTTool
        | SolanaTradeTool
        | SolanaRequestFundsTool
        | SolanaRegisterDomainTool
        | SolanaGetWalletAddressTool
        | SolanaLendAssetTool
        | SolanaFetchLendingDetailsTool)[]

+createSolanaTools | solana-agent-kit

Function createSolanaTools

  • Parameters

    Returns (
        | SolanaBalanceTool
        | SolanaTransferTool
        | SolanaDeployTokenTool
        | SolanaDeployCollectionTool
        | SolanaMintNFTTool
        | SolanaTradeTool
        | SolanaRequestFundsTool
        | SolanaRegisterDomainTool
        | SolanaGetWalletAddressTool
        | SolanaLendAssetTool
        | SolanaFetchLendingDetailsTool
        | SolanaTPSCalculatorTool)[]

diff --git a/docs/index.html b/docs/index.html index 19f4cce..021597b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -25,6 +25,12 @@
  • +

    🏦 Yield Farming

    +
      +
    • Lend idle assets to earn interest with Lulo
    • +
    +
  • +
  • 🔗 LangChain Integration

    • Utilize LangChain tools for enhanced blockchain interactions
    • @@ -47,12 +53,16 @@
      import { trade } from 'solana-agent-kit';
      import { PublicKey } from '@solana/web3.js';

      const signature = await trade(
      agent,
      new PublicKey('target-token-mint'),
      100, // amount
      new PublicKey('source-token-mint'),
      300 // 3% slippage
      );
      +
      import { lendAsset } from 'solana-agent-kit';
      import { PublicKey } from '@solana/web3.js';

      const signature = await lendAsset(
      agent,
      new PublicKey('asset-mint'),
      100, // amount
      "lulo-api-key"
      ); +
      +

      Deploy a new SPL token with optional initial supply.

      Create a new NFT collection with customizable metadata and royalties.

      Mint a new NFT as part of an existing collection.

      Transfer SOL or SPL tokens to a recipient.

      Swap tokens using Jupiter Exchange integration.

      Check SOL or token balance for the agent's wallet.

      +

      Lend idle assets to earn interest with Lulo.

      The toolkit relies on several key Solana and Metaplex libraries:

      • @solana/web3.js
      • @@ -63,4 +73,4 @@

        Contributions are welcome! Please feel free to submit a Pull Request.

        ISC License

        This toolkit handles private keys and transactions. Always ensure you're using it in a secure environment and never share your private keys.

        -
        +
        diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index 634816a..c8aae03 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

        Interface CollectionDeployment

        interface CollectionDeployment {
            collectionAddress: PublicKey;
            signature: Uint8Array;
        }

        Properties

        collectionAddress +CollectionDeployment | solana-agent-kit

        Interface CollectionDeployment

        interface CollectionDeployment {
            collectionAddress: PublicKey;
            signature: Uint8Array;
        }

        Properties

        collectionAddress: PublicKey
        signature: Uint8Array
        +

        Properties

        collectionAddress: PublicKey
        signature: Uint8Array
        diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index ad2b92a..4dc95c0 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

        Interface CollectionOptions

        interface CollectionOptions {
            creators?: Creator[];
            name: string;
            royaltyBasisPoints?: number;
            uri: string;
        }

        Properties

        creators? +CollectionOptions | solana-agent-kit

        Interface CollectionOptions

        interface CollectionOptions {
            creators?: Creator[];
            name: string;
            royaltyBasisPoints?: number;
            uri: string;
        }

        Properties

        creators?: Creator[]
        name: string
        royaltyBasisPoints?: number
        uri: string
        +

        Properties

        creators?: Creator[]
        name: string
        royaltyBasisPoints?: number
        uri: string
        diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index e7fc0dc..1c0921a 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

        Interface Creator

        interface Creator {
            address: string;
            percentage: number;
        }

        Properties

        address +Creator | solana-agent-kit

        Interface Creator

        interface Creator {
            address: string;
            percentage: number;
        }

        Properties

        Properties

        address: string
        percentage: number
        +

        Properties

        address: string
        percentage: number
        diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index ee466a5..ad41209 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ LuloAccountDetailsResponse | solana-agent-kit

        Interface LuloAccountDetailsResponse

        Lulo Account Details response format

        -
        interface LuloAccountDetailsResponse {
            interestEarned: number;
            realtimeApy: number;
            settings: {
                allowedProtocols: null | string;
                homebase: null | string;
                minimumRate: string;
                owner: string;
            };
            totalValue: number;
        }

        Properties

        interface LuloAccountDetailsResponse {
            interestEarned: number;
            realtimeApy: number;
            settings: {
                allowedProtocols: null | string;
                homebase: null | string;
                minimumRate: string;
                owner: string;
            };
            totalValue: number;
        }

        Properties

        interestEarned: number
        realtimeApy: number
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        }
        totalValue: number
        +

        Properties

        interestEarned: number
        realtimeApy: number
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        }
        totalValue: number
        diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index b3dd867..147b4c2 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

        Interface MintCollectionNFTResponse

        interface MintCollectionNFTResponse {
            metadata: PublicKey;
            mint: PublicKey;
        }

        Properties

        metadata +MintCollectionNFTResponse | solana-agent-kit

        Interface MintCollectionNFTResponse

        interface MintCollectionNFTResponse {
            metadata: PublicKey;
            mint: PublicKey;
        }

        Properties

        Properties

        metadata: PublicKey
        mint: PublicKey
        +

        Properties

        metadata: PublicKey
        mint: PublicKey
        diff --git a/docs/types/LuloDepositAssetMint.html b/docs/types/LuloDepositAssetMint.html index 60c5f74..b67a06d 100644 --- a/docs/types/LuloDepositAssetMint.html +++ b/docs/types/LuloDepositAssetMint.html @@ -1,2 +1,2 @@ LuloDepositAssetMint | solana-agent-kit

        Type Alias LuloDepositAssetMint

        LuloDepositAssetMint: typeof TOKENS[keyof typeof TOKENS]

        Mint addresses of supported tokens for lending on Lulo

        -
        +
        diff --git a/package.json b/package.json index 08ce54a..79c2d57 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@solana/web3.js": "^1.95.4", "bs58": "^6.0.0", "dotenv": "^16.4.5", + "form-data": "^4.0.1", "langchain": "^0.3.6", "typedoc": "^0.26.11" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 47f3516..0229538 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -44,6 +44,9 @@ importers: dotenv: specifier: ^16.4.5 version: 16.4.5 + form-data: + specifier: ^4.0.1 + version: 4.0.1 langchain: specifier: ^0.3.6 version: 0.3.6(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))(axios@1.7.7)(openai@4.72.0(zod@3.23.8)) diff --git a/src/agent/index.ts b/src/agent/index.ts index 6234d24..1a48f0b 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -9,9 +9,9 @@ import { transfer, trade, registerDomain, - launchpumpfuntoken, + launchPumpFunToken, } from "../tools"; -import { CollectionOptions } from "../types"; +import { CollectionOptions, PumpFunTokenOptions } from "../types"; import { DEFAULT_OPTIONS } from "../constants"; /** @@ -81,20 +81,12 @@ export class SolanaAgentKit { ) { return trade(this, outputMint, inputAmount, inputMint, slippageBps); } - - async launchpumpfuntoken( + + async launchPumpFunToken( tokenName: string, tokenTicker: string, - options: { - description: string; - twitter: string; - telegram: string; - website: string; - imageUrl: string; - initialLiquiditySOL: any; - mintAddress: string; - } + options?: PumpFunTokenOptions ) { - return launchpumpfuntoken(this, tokenName, tokenTicker, options); + return launchPumpFunToken(this, tokenName, tokenTicker, options); } } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index f7d2175..226abc8 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1,6 +1,7 @@ import { Tool } from "langchain/tools"; import { SolanaAgentKit } from "../index"; import { PublicKey } from "@solana/web3.js"; +import { launchPumpFunToken } from "../tools"; export class SolanaBalanceTool extends Tool { name = "solana_balance"; @@ -185,58 +186,21 @@ export class SolanaGetWalletAddressTool extends Tool { export class SolanaPumpfunTokenLaunch extends Tool { name = "solana_launch_pumpfun_token"; description = "Launch a new token on Pump.fun via Solana Agent Kit. Input should be JSON with: {tokenName: string, tokenTicker: string, description?: string, twitter?: string, telegram?: string, website?: string, imageUrl?: string, initialLiquiditySOL?: number, mintAddress?: string}"; - + constructor(private solanaKit: SolanaAgentKit) { super(); } async _call(input: string): Promise { try { - // Parse and validate input - const validJson = input - .replace(/([a-zA-Z0-9_]+):/g, '"$1":') - .trim(); - const { - tokenName, - tokenTicker, - description, - twitter, - telegram, - website, - imageUrl, - initialLiquiditySOL, - mintAddress - } = JSON.parse(validJson); - - if (!tokenName || !tokenTicker) { - throw new Error("tokenName and tokenTicker are required"); - } - - // Launch token with options - const result = await this.solanaKit.launchpumpfuntoken( - tokenName, - tokenTicker, - { - description, - twitter, - telegram, - website, - imageUrl, - initialLiquiditySOL, - mintAddress, - } - ); - - return `Token launched successfully. - Transaction: ${result.signature} - Mint Address: ${result.mint} - Metadata URI: ${result.metadataUri}`; + const options = JSON.parse(input); + await launchPumpFunToken(this.solanaKit, options.tokenName, options.tokenTicker, options); + return "Token launched successfully on Pump.fun"; } catch (error: any) { return `Error launching token: ${error.message}`; } } } - // Updated createSolanaTools function export function createSolanaTools(solanaKit: SolanaAgentKit) { return [ diff --git a/src/tools/launch_pumpfun_token.ts b/src/tools/launch_pumpfun_token.ts index 1e450c0..00ae2c5 100644 --- a/src/tools/launch_pumpfun_token.ts +++ b/src/tools/launch_pumpfun_token.ts @@ -1,87 +1,84 @@ // src/tools/launch_pumpfun_token.ts import { VersionedTransaction, Keypair } from "@solana/web3.js"; import { PumpFunTokenOptions, SolanaAgentKit } from "../index"; -import fetch from "node-fetch"; -import FormData from 'form-data'; async function uploadMetadata( tokenName: string, tokenTicker: string, - options: PumpFunTokenOptions + options?: PumpFunTokenOptions ): Promise { + // Create metadata object + const formData = new URLSearchParams(); + formData.append('name', tokenName); + formData.append('symbol', tokenTicker); + formData.append('description', options?.description || `${tokenName} token created via SolanaAgentKit`); + formData.append('showName', 'true'); - // Create form data for IPFS - const formData: FormData = new FormData(); - - // required fields - formData.append("name", tokenName); - formData.append("symbol", tokenTicker); - formData.append("description", options.description || `${tokenName} token created via PumpPortal.fun`); - formData.append("showName", "true"); + if (options?.twitter) formData.append('twitter', options.twitter); + if (options?.telegram) formData.append('telegram', options.telegram); + if (options?.website) formData.append('website', options.website); - // optional fields - if (options.twitter) formData.append("twitter", options.twitter); - if (options.telegram) formData.append("telegram", options.telegram); - if (options.website) formData.append("website", options.website); - - // If imageUrl is provided, fetch and append the image - if (options.imageUrl) { + let files; + // If imageUrl is provided, fetch and prepare the image + if (options?.imageUrl) { const imageResponse = await fetch(options.imageUrl); - const imageBuffer = await imageResponse.buffer(); - formData.append("file", imageBuffer, { - filename: "token_image.png", - contentType: "image/png" - }); + const imageBlob = await imageResponse.blob(); + files = { + file: new File([imageBlob], 'token_image.png', { type: 'image/png' }) + }; } - // TBD : Remove after approval - console.log("Uploading metadata with fields:", { - name: tokenName, - symbol: tokenTicker, - description: options.description, - hasImage: !!options.imageUrl - }); + // Create form data with both metadata and file + const finalFormData = new FormData(); + // Add all metadata fields + for (const [key, value] of formData.entries()) { + finalFormData.append(key, value); + } + // Add file if exists + if (files?.file) { + finalFormData.append('file', files.file); + } const metadataResponse = await fetch("https://pump.fun/api/ipfs", { method: "POST", - body: formData as any, - headers: formData.getHeaders() + body: finalFormData }); if (!metadataResponse.ok) { - const errorText = await metadataResponse.text(); - throw new Error(`Metadata upload failed: ${errorText || metadataResponse.statusText}`); + throw new Error(`Metadata upload failed: ${metadataResponse.statusText}`); } return await metadataResponse.json(); } async function createTokenTransaction( - kit: SolanaAgentKit, + agent: SolanaAgentKit, mintKeypair: Keypair, metadataResponse: any, - options: PumpFunTokenOptions + options?: PumpFunTokenOptions ) { + const payload = { + publicKey: agent.wallet_address.toBase58(), + action: "create", + tokenMetadata: { + name: metadataResponse.metadata.name, + symbol: metadataResponse.metadata.symbol, + uri: metadataResponse.metadataUri, + }, + mint: mintKeypair.publicKey.toBase58(), + denominatedInSol: "true", // API expects string "true" + amount: options?.initialLiquiditySOL || 0.0001, + slippage: options?.slippageBps || 5, + priorityFee: options?.priorityFee || 0.00005, + pool: "pump", + }; + const response = await fetch("https://pumpportal.fun/api/trade-local", { method: "POST", headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ - publicKey: kit.wallet_address.toBase58(), - action: "create", - tokenMetadata: { - name: metadataResponse.metadata.name, - symbol: metadataResponse.metadata.symbol, - uri: metadataResponse.metadataUri, - }, - mint: mintKeypair.publicKey.toBase58(), - denominatedInSol: "true", - amount: options.initialLiquiditySOL || 0.0001, - slippage: 5, - priorityFee: 0.00005, - pool: "pump", - }), + body: JSON.stringify(payload) }); if (!response.ok) { @@ -135,11 +132,18 @@ async function signAndSendTransaction( } } -export async function launchpumpfuntoken( - kit: SolanaAgentKit, +/** + * Launch a token on Pump.fun + * @param agent - SolanaAgentKit instance + * @param tokenName - Name of the token + * @param tokenTicker - Ticker of the token + * @param options - Optional token options (description, twitter, telegram, website, imageUrl, initialLiquiditySOL, slippageBps, priorityFee) + */ +export async function launchPumpFunToken( + agent: SolanaAgentKit, tokenName: string, tokenTicker: string, - options: PumpFunTokenOptions = {} + options?: PumpFunTokenOptions ) { try { // TBD : Remove clgs after approval @@ -156,14 +160,14 @@ export async function launchpumpfuntoken( // Create token transaction console.log("Creating token transaction..."); - const response = await createTokenTransaction(kit, mintKeypair, metadataResponse, options); + const response = await createTokenTransaction(agent, mintKeypair, metadataResponse, options); const transactionData = await response.arrayBuffer(); const tx = VersionedTransaction.deserialize(new Uint8Array(transactionData)); // Send transaction with proper blockhash handling console.log("Sending transaction..."); - const signature = await signAndSendTransaction(kit, tx, mintKeypair); + const signature = await signAndSendTransaction(agent, tx, mintKeypair); console.log("Token launch successful!"); return { diff --git a/src/types/index.ts b/src/types/index.ts index ed78547..6ff1ffb 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -29,10 +29,9 @@ export interface PumpFunTokenOptions { telegram?: string; website?: string; imageUrl?: string; - initialLiquiditySOL?: any; + initialLiquiditySOL?: number; slippageBps?: number; priorityFee?: number; - mintAddress?: string; // Optional mint address } export interface PumpfunLaunchResponse { diff --git a/test/index.ts b/test/index.ts index d86324d..31b066b 100644 --- a/test/index.ts +++ b/test/index.ts @@ -1,42 +1,168 @@ -// import { SolanaAgentKit } from "../src"; -// import { createSolanaTools } from "../src/langchain"; -// import { OpenAI } from "@langchain/openai"; -// import { AgentExecutor } from "langchain/agents"; -// import { PromptTemplate } from "@langchain/core/prompts"; -// import { pull } from "langchain/hub"; -// import { createReactAgent } from "langchain/agents"; +import { SolanaAgentKit } from "../src"; +import { createSolanaTools } from "../src/langchain"; +import { OpenAI } from "@langchain/openai"; +import { AgentExecutor } from "langchain/agents"; +import { PromptTemplate } from "@langchain/core/prompts"; +import { pull } from "langchain/hub"; +import { createReactAgent } from "langchain/agents"; +import { HumanMessage, AIMessage, BaseMessage } from "@langchain/core/messages"; +import * as readline from "readline"; -// // Initialize SolanaAgentKit -// const solanaKit = new SolanaAgentKit(undefined, "rpc-url"); +async function initializeAgent() { + const solanaKit = new SolanaAgentKit( + "5wuqAMP68kNiqs935hDfYkm9ngLzPAxWwYuk12eqVvdMVGJfaVcmYgcz8Met7w61goYubwegRJ7btEBWYsBtpubU", + "https://mainnet.helius-rpc.com/?api-key=da5b04e7-ae1c-4474-ae18-cf81af2b0653" + ); -// // Create Solana-specific tools -// const tools = createSolanaTools(solanaKit); + // Create Solana-specific tools + const tools = createSolanaTools(solanaKit); -// (async () => { -// // Define a Prompt Template for the Agent -// const prompt = await pull("hwchase17/react"); + // Create an LLM Chain + const llm = new OpenAI({ + modelName: "gpt-4o-mini", + temperature: 0.7, + }); -// // Create an LLM Chain -// const llm = new OpenAI({ -// modelName: "gpt-4o-mini", -// temperature: 0, -// }); + const prompt = await pull("hwchase17/react"); -// const agent = await createReactAgent({ -// llm, -// tools, -// prompt, -// }); + const agent = await createReactAgent({ + llm, + tools, + prompt, + }); -// const agentExecutor = new AgentExecutor({ -// agent, -// tools, -// maxIterations: 50, -// }); + const agentExecutor = new AgentExecutor({ + agent, + tools, + maxIterations: 5, + }); -// const result = await agentExecutor.invoke({ -// input: "Deploy a token with 6 decimals ", -// }); + return { agentExecutor }; +} -// console.log(result); -// })(); +async function runAutonomousMode( + agentExecutor: AgentExecutor, + interval: number = 10000 +) { + console.log("Starting autonomous mode..."); + + // Initialize message history + const messageHistory: BaseMessage[] = []; + + while (true) { + try { + // Use the same thought prompt as in the Python example + const thought = + "Be creative and do something interesting on the blockchain. " + + "Choose an action or set of actions and execute it that highlights your abilities."; + + const result = await agentExecutor.invoke({ + input: thought, // Changed from messages to input + history: messageHistory, + returnIntermediateSteps: true, + }); + + console.log(result); + + // Add the interaction to history + messageHistory.push(new HumanMessage(thought)); + messageHistory.push(new AIMessage(result.output)); + + console.log(result.output); + console.log("-------------------"); + + // Wait before the next action + await new Promise((resolve) => setTimeout(resolve, interval)); + } catch (error) { + console.error("Error in autonomous mode:", error); + await new Promise((resolve) => setTimeout(resolve, interval)); + } + } +} + +async function runChatMode(agentExecutor: AgentExecutor) { + console.log("Starting chat mode... Type 'exit' to end."); + + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); + + // Initialize message history + const messageHistory: BaseMessage[] = []; + + while (true) { + try { + const userInput = await new Promise((resolve) => { + rl.question("\nUser: ", resolve); + }); + + if (userInput.toLowerCase() === "exit") { + break; + } + + const result = await agentExecutor.invoke({ + input: userInput, // Changed from messages to input + history: messageHistory, + }); + + // Add the interaction to history + messageHistory.push(new HumanMessage(userInput)); + messageHistory.push(new AIMessage(result.output)); + + console.log(result.output); + console.log("-------------------"); + } catch (error) { + console.error("Error in chat mode:", error); + } + } + + rl.close(); +} + +function chooseMode(): Promise { + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); + + console.log("\nAvailable modes:"); + console.log("1. chat - Interactive chat mode"); + console.log("2. auto - Autonomous action mode"); + + return new Promise((resolve) => { + rl.question("\nChoose a mode (enter number or name): ", (answer) => { + rl.close(); + const mode = answer.toLowerCase().trim(); + if (mode === "1" || mode === "chat") { + resolve("chat"); + } else if (mode === "2" || mode === "auto") { + resolve("auto"); + } else { + console.log("Invalid choice. Defaulting to chat mode."); + resolve("chat"); + } + }); + }); +} + +async function main() { + console.log("Starting Agent..."); + const { agentExecutor } = await initializeAgent(); + + const mode = await chooseMode(); + if (mode === "chat") { + await runChatMode(agentExecutor); + } else { + await runAutonomousMode(agentExecutor); + } +} + +// Handle Ctrl+C gracefully +process.on("SIGINT", () => { + console.log("\nGoodbye Agent!"); + process.exit(0); +}); + +// Start the agent +main().catch(console.error); diff --git a/tsconfig.json b/tsconfig.json index fce86ef..ba8a225 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,21 +10,15 @@ "rootDir": "./src", "strict": true, "noImplicitAny": true, - "strictNullChecks": true, - "strictFunctionTypes": true, "strictBindCallApply": true, "strictPropertyInitialization": true, "noImplicitThis": true, "useUnknownInCatchVariables": true, "alwaysStrict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, "exactOptionalPropertyTypes": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, - "noUncheckedIndexedAccess": true, "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "skipLibCheck": true, From c31146031a87dd0546d5b0ae420a6990a8bf9d44 Mon Sep 17 00:00:00 2001 From: aryan Date: Wed, 4 Dec 2024 17:08:37 +0530 Subject: [PATCH 3/9] fix: rm yarn lock file --- yarn.lock | 1603 ----------------------------------------------------- 1 file changed, 1603 deletions(-) delete mode 100644 yarn.lock diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 42ae92a..0000000 --- a/yarn.lock +++ /dev/null @@ -1,1603 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/runtime@^7.25.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" - integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== - dependencies: - regenerator-runtime "^0.14.0" - -"@bonfida/sns-records@0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@bonfida/sns-records/-/sns-records-0.0.1.tgz#e178dece0aeeb1670c57703568ae3e1218e7e5fe" - integrity sha512-i28w9+BMFufhhpmLQCNx1CKKXTsEn+5RT18VFpPqdGO3sqaYlnUWC1m3wDpOvlzGk498dljgRpRo5wmcsnuEMg== - dependencies: - borsh "1.0.0" - bs58 "5.0.0" - buffer "^6.0.3" - -"@bonfida/spl-name-service@^3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@bonfida/spl-name-service/-/spl-name-service-3.0.7.tgz#f645f510a886510d661db7625453d7339b681de9" - integrity sha512-okOLXhy+fQoyQ/sZgMleO5RrIZfTkWEoHMxWgUqg6RP/MTBlrKxlhKC6ymKn4UUe0C5s3Nb8A+3Ams7vX0nMDg== - dependencies: - "@bonfida/sns-records" "0.0.1" - "@noble/curves" "^1.4.0" - "@scure/base" "^1.1.6" - "@solana/spl-token" "0.4.6" - borsh "2.0.0" - buffer "^6.0.3" - graphemesplit "^2.4.4" - ipaddr.js "^2.2.0" - punycode "^2.3.1" - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@langchain/core@^0.3.18": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@langchain/core/-/core-0.3.19.tgz#8e2038dbb7cb70264d892cf9c3b506125ee68d77" - integrity sha512-pJVOAHShefu1SRO8uhzUs0Pexah/Ib66WETLMScIC2w9vXlpwQy3DzXJPJ5X7ixry9N666jYO5cHtM2Z1DnQIQ== - dependencies: - ansi-styles "^5.0.0" - camelcase "6" - decamelize "1.2.0" - js-tiktoken "^1.0.12" - langsmith "^0.2.0" - mustache "^4.2.0" - p-queue "^6.6.2" - p-retry "4" - uuid "^10.0.0" - zod "^3.22.4" - zod-to-json-schema "^3.22.3" - -"@langchain/openai@>=0.1.0 <0.4.0", "@langchain/openai@^0.3.13": - version "0.3.14" - resolved "https://registry.yarnpkg.com/@langchain/openai/-/openai-0.3.14.tgz#c2f50fe963769851287f0171385232a344a5484a" - integrity sha512-lNWjUo1tbvsss45IF7UQtMu1NJ6oUKvhgPYWXnX9f/d6OmuLu7D99HQ3Y88vLcUo9XjjOy417olYHignMduMjA== - dependencies: - js-tiktoken "^1.0.12" - openai "^4.71.0" - zod "^3.22.4" - zod-to-json-schema "^3.22.3" - -"@langchain/textsplitters@>=0.0.0 <0.2.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@langchain/textsplitters/-/textsplitters-0.1.0.tgz#f37620992192df09ecda3dfbd545b36a6bcbae46" - integrity sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw== - dependencies: - js-tiktoken "^1.0.12" - -"@metaplex-foundation/mpl-core@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-core/-/mpl-core-1.1.1.tgz#f3a61cc647b2cdf461e0403350a7136b90d9d51a" - integrity sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA== - dependencies: - "@msgpack/msgpack" "^3.0.0-beta2" - -"@metaplex-foundation/mpl-token-metadata@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-3.3.0.tgz#a6134bf807d23413cfce2db583bad4ca3539f4fb" - integrity sha512-t5vO8Wr3ZZZPGrVrGNcosX5FMkwQSgBiVMQMRNDG2De7voYFJmIibD5jdG05EoQ4Y5kZVEiwhYaO+wJB3aO5AA== - dependencies: - "@metaplex-foundation/mpl-toolbox" "^0.9.4" - -"@metaplex-foundation/mpl-toolbox@^0.9.4": - version "0.9.4" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-toolbox/-/mpl-toolbox-0.9.4.tgz#2211b2f726b1e5745c03908d26fd8ee580838b6f" - integrity sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ== - -"@metaplex-foundation/umi-bundle-defaults@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-bundle-defaults/-/umi-bundle-defaults-0.9.2.tgz#f8e296b1a0ecb3a6511dbaca4131bc9263071cfc" - integrity sha512-kV3tfvgvRjVP1p9OFOtH+ibOtN9omVJSwKr0We4/9r45e5LTj+32su0V/rixZUkG1EZzzOYBsxhtIE0kIw/Hrw== - dependencies: - "@metaplex-foundation/umi-downloader-http" "^0.9.2" - "@metaplex-foundation/umi-eddsa-web3js" "^0.9.2" - "@metaplex-foundation/umi-http-fetch" "^0.9.2" - "@metaplex-foundation/umi-program-repository" "^0.9.2" - "@metaplex-foundation/umi-rpc-chunk-get-accounts" "^0.9.2" - "@metaplex-foundation/umi-rpc-web3js" "^0.9.2" - "@metaplex-foundation/umi-serializer-data-view" "^0.9.2" - "@metaplex-foundation/umi-transaction-factory-web3js" "^0.9.2" - -"@metaplex-foundation/umi-downloader-http@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-downloader-http/-/umi-downloader-http-0.9.2.tgz#df84b11df9141854ca1cf7c6c8374658e67de767" - integrity sha512-tzPT9hBwenzTzAQg07rmsrqZfgguAXELbcJrsYMoASp5VqWFXYIP00g94KET6XLjWUXH4P1J2zoa6hGennPXHA== - -"@metaplex-foundation/umi-eddsa-web3js@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-eddsa-web3js/-/umi-eddsa-web3js-0.9.2.tgz#92225595137c5585dae63b148786ab77fcb6d625" - integrity sha512-hhPCxXbYIp4BC4z9gK78sXpWLkNSrfv4ndhF5ruAkdIp7GcRVYKj0QnOUO6lGYGiIkNlw20yoTwOe1CT//OfTQ== - dependencies: - "@metaplex-foundation/umi-web3js-adapters" "^0.9.2" - "@noble/curves" "^1.0.0" - -"@metaplex-foundation/umi-http-fetch@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-http-fetch/-/umi-http-fetch-0.9.2.tgz#e233ec34b789ed5257168b97d72fc9b039155046" - integrity sha512-YCZuBu24T9ZzEDe4+w12LEZm/fO9pkyViZufGgASC5NX93814Lvf6Ssjn/hZzjfA7CvZbvLFbmujc6CV3Q/m9Q== - dependencies: - node-fetch "^2.6.7" - -"@metaplex-foundation/umi-options@^0.8.9": - version "0.8.9" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-options/-/umi-options-0.8.9.tgz#9c9e269d9eee7d055ad6831dcb30a30127dcb0c5" - integrity sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A== - -"@metaplex-foundation/umi-program-repository@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-program-repository/-/umi-program-repository-0.9.2.tgz#53fce2bf506bb97fdb6a53e2118f8d1dd28fd0b5" - integrity sha512-g3+FPqXEmYsBa8eETtUE2gb2Oe3mqac0z3/Ur1TvAg5TtIy3mzRzOy/nza+sgzejnfcxcVg835rmpBaxpBnjDA== - -"@metaplex-foundation/umi-public-keys@^0.8.9": - version "0.8.9" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-public-keys/-/umi-public-keys-0.8.9.tgz#ca7a927c924ed8e28d0f8bb3dc0f2adc1f9011ec" - integrity sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q== - dependencies: - "@metaplex-foundation/umi-serializers-encodings" "^0.8.9" - -"@metaplex-foundation/umi-rpc-chunk-get-accounts@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-rpc-chunk-get-accounts/-/umi-rpc-chunk-get-accounts-0.9.2.tgz#f93bd43d4c65cdfdb0a68145a837fb6b13e0e832" - integrity sha512-YRwVf6xH0jPBAUgMhEPi+UbjioAeqTXmjsN2TnmQCPAmHbrHrMRj0rlWYwFLWAgkmoxazYrXP9lqOFRrfOGAEA== - -"@metaplex-foundation/umi-rpc-web3js@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-rpc-web3js/-/umi-rpc-web3js-0.9.2.tgz#b00a4cc1a9bd5d930164d1ba43f816107655c0d9" - integrity sha512-MqcsBz8B4wGl6jxsf2Jo/rAEpYReU9VCSR15QSjhvADHMmdFxCIZCCAgE+gDE2Vuanfl437VhOcP3g5Uw8C16Q== - dependencies: - "@metaplex-foundation/umi-web3js-adapters" "^0.9.2" - -"@metaplex-foundation/umi-serializer-data-view@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializer-data-view/-/umi-serializer-data-view-0.9.2.tgz#a05d88e7120b839e3acba35f7b4e12fe8be2becc" - integrity sha512-5vGptadJxUxvUcyrwFZxXlEc6Q7AYySBesizCtrBFUY8w8PnF2vzmS45CP1MLySEATNH6T9mD4Rs0tLb87iQyA== - -"@metaplex-foundation/umi-serializers-core@^0.8.9": - version "0.8.9" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-core/-/umi-serializers-core-0.8.9.tgz#cd5ae763a59e54dd01f1284f4a6bf4e78e4aab9c" - integrity sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w== - -"@metaplex-foundation/umi-serializers-encodings@^0.8.9": - version "0.8.9" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-encodings/-/umi-serializers-encodings-0.8.9.tgz#0f02605ee3e6fbeac1abc4fb267a7cc96ecb4410" - integrity sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q== - dependencies: - "@metaplex-foundation/umi-serializers-core" "^0.8.9" - -"@metaplex-foundation/umi-serializers-numbers@^0.8.9": - version "0.8.9" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-numbers/-/umi-serializers-numbers-0.8.9.tgz#28c10367f6aebac0276ec1bce81d0d8db54b05de" - integrity sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg== - dependencies: - "@metaplex-foundation/umi-serializers-core" "^0.8.9" - -"@metaplex-foundation/umi-serializers@^0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers/-/umi-serializers-0.9.0.tgz#af6d03a3bf821bf73b7b3450bb8df0407f2f69d6" - integrity sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg== - dependencies: - "@metaplex-foundation/umi-options" "^0.8.9" - "@metaplex-foundation/umi-public-keys" "^0.8.9" - "@metaplex-foundation/umi-serializers-core" "^0.8.9" - "@metaplex-foundation/umi-serializers-encodings" "^0.8.9" - "@metaplex-foundation/umi-serializers-numbers" "^0.8.9" - -"@metaplex-foundation/umi-transaction-factory-web3js@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-transaction-factory-web3js/-/umi-transaction-factory-web3js-0.9.2.tgz#294c3ca996897bb95b993b808fb9252bd085db15" - integrity sha512-fR1Kf21uylMFd1Smkltmj4jTNxhqSWf416owsJ+T+cvJi2VCOcOwq/3UFzOrpz78fA0RhsajKYKj0HYsRnQI1g== - dependencies: - "@metaplex-foundation/umi-web3js-adapters" "^0.9.2" - -"@metaplex-foundation/umi-web3js-adapters@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-web3js-adapters/-/umi-web3js-adapters-0.9.2.tgz#1e0ebb4e3c31e8bead27892b20204292ad6955c5" - integrity sha512-RQqUTtHYY9fmEMnq7s3Hiv/81flGaoI0ZVVoafnFVaQLnxU6QBKxtboRZHk43XtD9CiFh5f9izrMJX7iK7KlOA== - dependencies: - buffer "^6.0.3" - -"@metaplex-foundation/umi@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi/-/umi-0.9.2.tgz#6460bff91d2ac7745842eda1ee6a28fba4d2ffb2" - integrity sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw== - dependencies: - "@metaplex-foundation/umi-options" "^0.8.9" - "@metaplex-foundation/umi-public-keys" "^0.8.9" - "@metaplex-foundation/umi-serializers" "^0.9.0" - -"@msgpack/msgpack@^3.0.0-beta2": - version "3.0.0-beta2" - resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-3.0.0-beta2.tgz#5bccee30f84df220b33905e3d8249ba96deca0b7" - integrity sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw== - -"@noble/curves@^1.0.0", "@noble/curves@^1.4.0", "@noble/curves@^1.4.2": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.7.0.tgz#0512360622439256df892f21d25b388f52505e45" - integrity sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw== - dependencies: - "@noble/hashes" "1.6.0" - -"@noble/hashes@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.0.tgz#d4bfb516ad6e7b5111c216a5cc7075f4cf19e6c5" - integrity sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ== - -"@noble/hashes@^1.4.0": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.1.tgz#df6e5943edcea504bac61395926d6fd67869a0d5" - integrity sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w== - -"@scure/base@^1.1.6": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.1.tgz#dd0b2a533063ca612c17aa9ad26424a2ff5aa865" - integrity sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ== - -"@shikijs/core@1.23.1": - version "1.23.1" - resolved "https://registry.yarnpkg.com/@shikijs/core/-/core-1.23.1.tgz#911473e672e4f2d15ca36b28b28179c0959aa7af" - integrity sha512-NuOVgwcHgVC6jBVH5V7iblziw6iQbWWHrj5IlZI3Fqu2yx9awH7OIQkXIcsHsUmY19ckwSgUMgrqExEyP5A0TA== - dependencies: - "@shikijs/engine-javascript" "1.23.1" - "@shikijs/engine-oniguruma" "1.23.1" - "@shikijs/types" "1.23.1" - "@shikijs/vscode-textmate" "^9.3.0" - "@types/hast" "^3.0.4" - hast-util-to-html "^9.0.3" - -"@shikijs/engine-javascript@1.23.1": - version "1.23.1" - resolved "https://registry.yarnpkg.com/@shikijs/engine-javascript/-/engine-javascript-1.23.1.tgz#0f634bea22cb14f471835b7b5f1da66bc34bd359" - integrity sha512-i/LdEwT5k3FVu07SiApRFwRcSJs5QM9+tod5vYCPig1Ywi8GR30zcujbxGQFJHwYD7A5BUqagi8o5KS+LEVgBg== - dependencies: - "@shikijs/types" "1.23.1" - "@shikijs/vscode-textmate" "^9.3.0" - oniguruma-to-es "0.4.1" - -"@shikijs/engine-oniguruma@1.23.1": - version "1.23.1" - resolved "https://registry.yarnpkg.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.23.1.tgz#c6c34c9152cf90c1ee75fcdbd124253c8ad0635f" - integrity sha512-KQ+lgeJJ5m2ISbUZudLR1qHeH3MnSs2mjFg7bnencgs5jDVPeJ2NVDJ3N5ZHbcTsOIh0qIueyAJnwg7lg7kwXQ== - dependencies: - "@shikijs/types" "1.23.1" - "@shikijs/vscode-textmate" "^9.3.0" - -"@shikijs/types@1.23.1": - version "1.23.1" - resolved "https://registry.yarnpkg.com/@shikijs/types/-/types-1.23.1.tgz#2386d49258be03e7b40fea1f28fda952739ad93d" - integrity sha512-98A5hGyEhzzAgQh2dAeHKrWW4HfCMeoFER2z16p5eJ+vmPeF6lZ/elEne6/UCU551F/WqkopqRsr1l2Yu6+A0g== - dependencies: - "@shikijs/vscode-textmate" "^9.3.0" - "@types/hast" "^3.0.4" - -"@shikijs/vscode-textmate@^9.3.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz#b2f1776e488c1d6c2b6cd129bab62f71bbc9c7ab" - integrity sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA== - -"@solana/buffer-layout-utils@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" - integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g== - dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/web3.js" "^1.32.0" - bigint-buffer "^1.1.5" - bignumber.js "^9.0.1" - -"@solana/buffer-layout@^4.0.0", "@solana/buffer-layout@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" - integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== - dependencies: - buffer "~6.0.3" - -"@solana/codecs-core@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-preview.2.tgz#689784d032fbc1fedbde40bb25d76cdcecf6553b" - integrity sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg== - dependencies: - "@solana/errors" "2.0.0-preview.2" - -"@solana/codecs-core@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-rc.1.tgz#1a2d76b9c7b9e7b7aeb3bd78be81c2ba21e3ce22" - integrity sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ== - dependencies: - "@solana/errors" "2.0.0-rc.1" - -"@solana/codecs-data-structures@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.2.tgz#e82cb1b6d154fa636cd5c8953ff3f32959cc0370" - integrity sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg== - dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" - "@solana/errors" "2.0.0-preview.2" - -"@solana/codecs-data-structures@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-rc.1.tgz#d47b2363d99fb3d643f5677c97d64a812982b888" - integrity sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog== - dependencies: - "@solana/codecs-core" "2.0.0-rc.1" - "@solana/codecs-numbers" "2.0.0-rc.1" - "@solana/errors" "2.0.0-rc.1" - -"@solana/codecs-numbers@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.2.tgz#56995c27396cd8ee3bae8bd055363891b630bbd0" - integrity sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw== - dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/errors" "2.0.0-preview.2" - -"@solana/codecs-numbers@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-rc.1.tgz#f34978ddf7ea4016af3aaed5f7577c1d9869a614" - integrity sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ== - dependencies: - "@solana/codecs-core" "2.0.0-rc.1" - "@solana/errors" "2.0.0-rc.1" - -"@solana/codecs-strings@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.2.tgz#8bd01a4e48614d5289d72d743c3e81305d445c46" - integrity sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g== - dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" - "@solana/errors" "2.0.0-preview.2" - -"@solana/codecs-strings@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-rc.1.tgz#e1d9167075b8c5b0b60849f8add69c0f24307018" - integrity sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g== - dependencies: - "@solana/codecs-core" "2.0.0-rc.1" - "@solana/codecs-numbers" "2.0.0-rc.1" - "@solana/errors" "2.0.0-rc.1" - -"@solana/codecs@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-preview.2.tgz#d6615fec98f423166fb89409f9a4ad5b74c10935" - integrity sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA== - dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-data-structures" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" - "@solana/codecs-strings" "2.0.0-preview.2" - "@solana/options" "2.0.0-preview.2" - -"@solana/codecs@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-rc.1.tgz#146dc5db58bd3c28e04b4c805e6096c2d2a0a875" - integrity sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ== - dependencies: - "@solana/codecs-core" "2.0.0-rc.1" - "@solana/codecs-data-structures" "2.0.0-rc.1" - "@solana/codecs-numbers" "2.0.0-rc.1" - "@solana/codecs-strings" "2.0.0-rc.1" - "@solana/options" "2.0.0-rc.1" - -"@solana/errors@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.2.tgz#e0ea8b008c5c02528d5855bc1903e5e9bbec322e" - integrity sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA== - dependencies: - chalk "^5.3.0" - commander "^12.0.0" - -"@solana/errors@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-rc.1.tgz#3882120886eab98a37a595b85f81558861b29d62" - integrity sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ== - dependencies: - chalk "^5.3.0" - commander "^12.1.0" - -"@solana/options@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-preview.2.tgz#13ff008bf43a5056ef9a091dc7bb3f39321e867e" - integrity sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w== - dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" - -"@solana/options@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-rc.1.tgz#06924ba316dc85791fc46726a51403144a85fc4d" - integrity sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA== - dependencies: - "@solana/codecs-core" "2.0.0-rc.1" - "@solana/codecs-data-structures" "2.0.0-rc.1" - "@solana/codecs-numbers" "2.0.0-rc.1" - "@solana/codecs-strings" "2.0.0-rc.1" - "@solana/errors" "2.0.0-rc.1" - -"@solana/spl-token-group@^0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.4.tgz#4f45d9526c96a33b9a1929a264d0aa21c7e38a2d" - integrity sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw== - dependencies: - "@solana/codecs" "2.0.0-preview.2" - "@solana/spl-type-length-value" "0.1.0" - -"@solana/spl-token-group@^0.0.7": - version "0.0.7" - resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.7.tgz#83c00f0cd0bda33115468cd28b89d94f8ec1fee4" - integrity sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug== - dependencies: - "@solana/codecs" "2.0.0-rc.1" - -"@solana/spl-token-metadata@^0.1.4", "@solana/spl-token-metadata@^0.1.6": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@solana/spl-token-metadata/-/spl-token-metadata-0.1.6.tgz#d240947aed6e7318d637238022a7b0981b32ae80" - integrity sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA== - dependencies: - "@solana/codecs" "2.0.0-rc.1" - -"@solana/spl-token@0.4.6": - version "0.4.6" - resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.6.tgz#eb44e5080ea7b6fc976abcb39457223211bd9076" - integrity sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA== - dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/buffer-layout-utils" "^0.2.0" - "@solana/spl-token-group" "^0.0.4" - "@solana/spl-token-metadata" "^0.1.4" - buffer "^6.0.3" - -"@solana/spl-token@^0.4.9": - version "0.4.9" - resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.9.tgz#24d032d2935f237925c3b058ba6bb1e1ece5428c" - integrity sha512-g3wbj4F4gq82YQlwqhPB0gHFXfgsC6UmyGMxtSLf/BozT/oKd59465DbnlUK8L8EcimKMavxsVAMoLcEdeCicg== - dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/buffer-layout-utils" "^0.2.0" - "@solana/spl-token-group" "^0.0.7" - "@solana/spl-token-metadata" "^0.1.6" - buffer "^6.0.3" - -"@solana/spl-type-length-value@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz#b5930cf6c6d8f50c7ff2a70463728a4637a2f26b" - integrity sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA== - dependencies: - buffer "^6.0.3" - -"@solana/web3.js@^1.32.0", "@solana/web3.js@^1.95.4": - version "1.95.5" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.95.5.tgz#ba70da4c205c64249ed94369fe2d617c0347cd85" - integrity sha512-hU9cBrbg1z6gEjLH9vwIckGBVB78Ijm0iZFNk4ocm5OD82piPwuk3MeQ1rfiKD9YQtr95krrcaopb49EmQJlRg== - dependencies: - "@babel/runtime" "^7.25.0" - "@noble/curves" "^1.4.2" - "@noble/hashes" "^1.4.0" - "@solana/buffer-layout" "^4.0.1" - agentkeepalive "^4.5.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.1" - node-fetch "^2.7.0" - rpc-websockets "^9.0.2" - superstruct "^2.0.2" - -"@swc/helpers@^0.5.11": - version "0.5.15" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7" - integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g== - dependencies: - tslib "^2.8.0" - -"@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - -"@types/connect@^3.4.33": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== - dependencies: - "@types/node" "*" - -"@types/hast@^3.0.0", "@types/hast@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" - integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== - dependencies: - "@types/unist" "*" - -"@types/mdast@^4.0.0": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" - integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== - dependencies: - "@types/unist" "*" - -"@types/node-fetch@^2.6.4": - version "2.6.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.12.tgz#8ab5c3ef8330f13100a7479e2cd56d3386830a03" - integrity sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA== - dependencies: - "@types/node" "*" - form-data "^4.0.0" - -"@types/node@*", "@types/node@^22.9.0": - version "22.10.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.0.tgz#89bfc9e82496b9c7edea3382583fa94f75896e81" - integrity sha512-XC70cRZVElFHfIUB40FgZOBbgJYFKKMa5nb9lxcwYstFG/Mi+/Y0bGS+rs6Dmhmkpq4pnNiLiuZAbc02YCOnmA== - dependencies: - undici-types "~6.20.0" - -"@types/node@^12.12.54": - version "12.20.55" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" - integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== - -"@types/node@^18.11.18": - version "18.19.66" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.66.tgz#0937a47904ceba5994eedf5cf4b6d503d8d6136c" - integrity sha512-14HmtUdGxFUalGRfLLn9Gc1oNWvWh5zNbsyOLo5JV6WARSeN1QcEBKRnZm9QqNfrutgsl/hY4eJW63aZ44aBCg== - dependencies: - undici-types "~5.26.4" - -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - -"@types/unist@*", "@types/unist@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" - integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== - -"@types/uuid@^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-10.0.0.tgz#e9c07fe50da0f53dc24970cca94d619ff03f6f6d" - integrity sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ== - -"@types/uuid@^8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" - integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== - -"@types/ws@^7.4.4": - version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" - integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== - dependencies: - "@types/node" "*" - -"@types/ws@^8.2.2": - version "8.5.13" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.13.tgz#6414c280875e2691d0d1e080b05addbf5cb91e20" - integrity sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA== - dependencies: - "@types/node" "*" - -"@ungap/structured-clone@^1.0.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -acorn-walk@^8.1.1: - version "8.3.4" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== - dependencies: - acorn "^8.11.0" - -acorn@^8.11.0, acorn@^8.4.1: - version "8.14.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" - integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== - -agentkeepalive@^4.2.1, agentkeepalive@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" - integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== - dependencies: - humanize-ms "^1.2.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base-x@^3.0.2: - version "3.0.10" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.10.tgz#62de58653f8762b5d6f8d9fe30fa75f7b2585a75" - integrity sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ== - dependencies: - safe-buffer "^5.0.1" - -base-x@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" - integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== - -base-x@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-5.0.0.tgz#6d835ceae379130e1a4cb846a70ac4746f28ea9b" - integrity sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ== - -base64-js@^1.3.1, base64-js@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bigint-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" - integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== - dependencies: - bindings "^1.3.0" - -bignumber.js@^9.0.1: - version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" - integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== - -bindings@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bn.js@^5.2.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -borsh@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/borsh/-/borsh-1.0.0.tgz#b564c8cc8f7a91e3772b9aef9e07f62b84213c1f" - integrity sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ== - -borsh@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/borsh/-/borsh-2.0.0.tgz#042a9f109565caac3c6a21297cd8c0ae8db3149d" - integrity sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg== - -borsh@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" - integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== - dependencies: - bn.js "^5.2.0" - bs58 "^4.0.0" - text-encoding-utf-8 "^1.0.2" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -bs58@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" - integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== - dependencies: - base-x "^4.0.0" - -bs58@^4.0.0, bs58@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== - dependencies: - base-x "^3.0.2" - -bs58@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-6.0.0.tgz#a2cda0130558535dd281a2f8697df79caaf425d8" - integrity sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw== - dependencies: - base-x "^5.0.0" - -buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -bufferutil@^4.0.1: - version "4.0.8" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" - integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== - dependencies: - node-gyp-build "^4.3.0" - -camelcase@6: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -ccount@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" - integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== - -chalk@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" - integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== - -character-entities-html4@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" - integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== - -character-entities-legacy@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" - integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -comma-separated-tokens@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" - integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== - -commander@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - -commander@^12.0.0, commander@^12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" - integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== - -commander@^2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -decamelize@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -delay@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" - integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -dequal@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -devlop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" - integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== - dependencies: - dequal "^2.0.0" - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -dotenv@^16.4.5: - version "16.4.5" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" - integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== - -emoji-regex-xs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz#e8af22e5d9dbd7f7f22d280af3d19d2aab5b0724" - integrity sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg== - -entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== - dependencies: - es6-promise "^4.0.3" - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -eventemitter3@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -eventemitter3@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" - integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== - -eyes@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" - integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== - -fast-stable-stringify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" - integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -form-data-encoder@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.2.tgz#1f1ae3dccf58ed4690b86d87e4f57c654fbab040" - integrity sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A== - -form-data@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" - integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -formdata-node@^4.3.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-4.4.1.tgz#23f6a5cb9cb55315912cbec4ff7b0f59bbd191e2" - integrity sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ== - dependencies: - node-domexception "1.0.0" - web-streams-polyfill "4.0.0-beta.3" - -graphemesplit@^2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/graphemesplit/-/graphemesplit-2.4.4.tgz#6d325c61e928efdaec2189f54a9b87babf89b75a" - integrity sha512-lKrpp1mk1NH26USxC/Asw4OHbhSQf5XfrWZ+CDv/dFVvd1j17kFgMotdJvOesmHkbFX9P9sBfpH8VogxOWLg8w== - dependencies: - js-base64 "^3.6.0" - unicode-trie "^2.0.0" - -hast-util-to-html@^9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz#a9999a0ba6b4919576a9105129fead85d37f302b" - integrity sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg== - dependencies: - "@types/hast" "^3.0.0" - "@types/unist" "^3.0.0" - ccount "^2.0.0" - comma-separated-tokens "^2.0.0" - hast-util-whitespace "^3.0.0" - html-void-elements "^3.0.0" - mdast-util-to-hast "^13.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - stringify-entities "^4.0.0" - zwitch "^2.0.4" - -hast-util-whitespace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" - integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== - dependencies: - "@types/hast" "^3.0.0" - -html-void-elements@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" - integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ipaddr.js@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" - integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== - -isomorphic-ws@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" - integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== - -jayson@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.1.3.tgz#db9be2e4287d9fef4fc05b5fe367abe792c2eee8" - integrity sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ== - dependencies: - "@types/connect" "^3.4.33" - "@types/node" "^12.12.54" - "@types/ws" "^7.4.4" - JSONStream "^1.3.5" - commander "^2.20.3" - delay "^5.0.0" - es6-promisify "^5.0.0" - eyes "^0.1.8" - isomorphic-ws "^4.0.1" - json-stringify-safe "^5.0.1" - uuid "^8.3.2" - ws "^7.5.10" - -js-base64@^3.6.0: - version "3.7.7" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.7.tgz#e51b84bf78fbf5702b9541e2cb7bfcb893b43e79" - integrity sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw== - -js-tiktoken@^1.0.12: - version "1.0.15" - resolved "https://registry.yarnpkg.com/js-tiktoken/-/js-tiktoken-1.0.15.tgz#92a7d829f6950c2cfb35cc52555502e3d6e2ebac" - integrity sha512-65ruOWWXDEZHHbAo7EjOcNxOGasQKbL4Fq3jEr2xsCqSsoOo6VVSqzWQb6PRIqypFSDcma4jO90YP0w5X8qVXQ== - dependencies: - base64-js "^1.5.1" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -json-stringify-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== - -jsonpointer@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" - integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== - -langchain@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/langchain/-/langchain-0.3.6.tgz#f4313d202ce168d29bfcf81a551147cd4986779f" - integrity sha512-erZOIKXzwCOrQHqY9AyjkQmaX62zUap1Sigw1KrwMUOnVoLKkVNRmAyxFlNZDZ9jLs/58MaQcaT9ReJtbj3x6w== - dependencies: - "@langchain/openai" ">=0.1.0 <0.4.0" - "@langchain/textsplitters" ">=0.0.0 <0.2.0" - js-tiktoken "^1.0.12" - js-yaml "^4.1.0" - jsonpointer "^5.0.1" - langsmith "^0.2.0" - openapi-types "^12.1.3" - p-retry "4" - uuid "^10.0.0" - yaml "^2.2.1" - zod "^3.22.4" - zod-to-json-schema "^3.22.3" - -langsmith@^0.2.0: - version "0.2.8" - resolved "https://registry.yarnpkg.com/langsmith/-/langsmith-0.2.8.tgz#926a857df206a67fd912f9a201a08cdffa8870e2" - integrity sha512-wKVNZoYtd8EqQWUEsfDZlZ77rH7vVqgNtONXRwynUp7ZFMFUIPhSlqE9pXqrmYPE8ZTBFj7diag2lFgUuaOEKw== - dependencies: - "@types/uuid" "^10.0.0" - commander "^10.0.1" - p-queue "^6.6.2" - p-retry "4" - semver "^7.6.3" - uuid "^10.0.0" - -linkify-it@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" - integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== - dependencies: - uc.micro "^2.0.0" - -lunr@^2.3.9: - version "2.3.9" - resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" - integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -markdown-it@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.0.tgz#3c3c5992883c633db4714ccb4d7b5935d98b7d45" - integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== - dependencies: - argparse "^2.0.1" - entities "^4.4.0" - linkify-it "^5.0.0" - mdurl "^2.0.0" - punycode.js "^2.3.1" - uc.micro "^2.1.0" - -mdast-util-to-hast@^13.0.0: - version "13.2.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz#5ca58e5b921cc0a3ded1bc02eed79a4fe4fe41f4" - integrity sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA== - dependencies: - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - "@ungap/structured-clone" "^1.0.0" - devlop "^1.0.0" - micromark-util-sanitize-uri "^2.0.0" - trim-lines "^3.0.0" - unist-util-position "^5.0.0" - unist-util-visit "^5.0.0" - vfile "^6.0.0" - -mdurl@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" - integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== - -micromark-util-character@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz#2f987831a40d4c510ac261e89852c4e9703ccda6" - integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q== - dependencies: - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-encode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz#0d51d1c095551cfaac368326963cf55f15f540b8" - integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== - -micromark-util-sanitize-uri@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz#ab89789b818a58752b73d6b55238621b7faa8fd7" - integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-encode "^2.0.0" - micromark-util-symbol "^2.0.0" - -micromark-util-symbol@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz#e5da494e8eb2b071a0d08fb34f6cefec6c0a19b8" - integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q== - -micromark-util-types@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.1.tgz#a3edfda3022c6c6b55bfb049ef5b75d70af50709" - integrity sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ== - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -minimatch@^9.0.5: - version "9.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -ms@^2.0.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -mustache@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" - integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== - -node-domexception@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" - integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== - -node-fetch@^2.6.7, node-fetch@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-gyp-build@^4.3.0: - version "4.8.4" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" - integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== - -oniguruma-to-es@0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/oniguruma-to-es/-/oniguruma-to-es-0.4.1.tgz#112fbcd5fafe4f635983425a6db88f3e2de37107" - integrity sha512-rNcEohFz095QKGRovP/yqPIKc+nP+Sjs4YTHMv33nMePGKrq/r2eu9Yh4646M5XluGJsUnmwoXuiXE69KDs+fQ== - dependencies: - emoji-regex-xs "^1.0.0" - regex "^5.0.0" - regex-recursion "^4.2.1" - -openai@^4.71.0: - version "4.73.1" - resolved "https://registry.yarnpkg.com/openai/-/openai-4.73.1.tgz#532bd000d5f1a558e4fff1119da6749992ac41e4" - integrity sha512-nWImDJBcUsqrhy7yJScXB4+iqjzbUEgzfA3un/6UnHFdwWhjX24oztj69Ped/njABfOdLcO/F7CeWTI5dt8Xmg== - dependencies: - "@types/node" "^18.11.18" - "@types/node-fetch" "^2.6.4" - abort-controller "^3.0.0" - agentkeepalive "^4.2.1" - form-data-encoder "1.7.2" - formdata-node "^4.3.2" - node-fetch "^2.6.7" - -openapi-types@^12.1.3: - version "12.1.3" - resolved "https://registry.yarnpkg.com/openapi-types/-/openapi-types-12.1.3.tgz#471995eb26c4b97b7bd356aacf7b91b73e777dd3" - integrity sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-queue@^6.6.2: - version "6.6.2" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" - integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.2.0" - -p-retry@4: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== - dependencies: - "@types/retry" "0.12.0" - retry "^0.13.1" - -p-timeout@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - -pako@^0.2.5: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== - -property-information@^6.0.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.5.0.tgz#6212fbb52ba757e92ef4fb9d657563b933b7ffec" - integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig== - -punycode.js@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" - integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== - -punycode@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - -regex-recursion@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/regex-recursion/-/regex-recursion-4.3.0.tgz#32c3a42a57d78bf2d0c83875074c2f7ebaf2a4f6" - integrity sha512-5LcLnizwjcQ2ALfOj95MjcatxyqF5RPySx9yT+PaXu3Gox2vyAtLDjHB8NTJLtMGkvyau6nI3CfpwFCjPUIs/A== - dependencies: - regex-utilities "^2.3.0" - -regex-utilities@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/regex-utilities/-/regex-utilities-2.3.0.tgz#87163512a15dce2908cf079c8960d5158ff43280" - integrity sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng== - -regex@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/regex/-/regex-5.0.2.tgz#291d960467e6499a79ceec022d20a4e0df67c54f" - integrity sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ== - dependencies: - regex-utilities "^2.3.0" - -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -rpc-websockets@^9.0.2: - version "9.0.4" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.4.tgz#9d8ee82533b5d1e13d9ded729e3e38d0d8fa083f" - integrity sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ== - dependencies: - "@swc/helpers" "^0.5.11" - "@types/uuid" "^8.3.4" - "@types/ws" "^8.2.2" - buffer "^6.0.3" - eventemitter3 "^5.0.1" - uuid "^8.3.2" - ws "^8.5.0" - optionalDependencies: - bufferutil "^4.0.1" - utf-8-validate "^5.0.2" - -safe-buffer@^5.0.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -semver@^7.6.3: - version "7.6.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" - integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== - -shiki@^1.16.2: - version "1.23.1" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-1.23.1.tgz#02f149e8f2592509e701f3a806fd4f3dd64d17e9" - integrity sha512-8kxV9TH4pXgdKGxNOkrSMydn1Xf6It8lsle0fiqxf7a1149K1WGtdOu3Zb91T5r1JpvRPxqxU3C2XdZZXQnrig== - dependencies: - "@shikijs/core" "1.23.1" - "@shikijs/engine-javascript" "1.23.1" - "@shikijs/engine-oniguruma" "1.23.1" - "@shikijs/types" "1.23.1" - "@shikijs/vscode-textmate" "^9.3.0" - "@types/hast" "^3.0.4" - -space-separated-tokens@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" - integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== - -stringify-entities@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3" - integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== - dependencies: - character-entities-html4 "^2.0.0" - character-entities-legacy "^3.0.0" - -superstruct@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" - integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== - -text-encoding-utf-8@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" - integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== - -"through@>=2.2.7 <3": - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -tiny-inflate@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" - integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -trim-lines@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" - integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== - -ts-node@^10.9.2: - version "10.9.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -tslib@^2.8.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -typedoc@^0.26.11: - version "0.26.11" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.26.11.tgz#124b43a5637b7f3237b8c721691b44738c5c9dc9" - integrity sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw== - dependencies: - lunr "^2.3.9" - markdown-it "^14.1.0" - minimatch "^9.0.5" - shiki "^1.16.2" - yaml "^2.5.1" - -uc.micro@^2.0.0, uc.micro@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" - integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -undici-types@~6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" - integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== - -unicode-trie@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-2.0.0.tgz#8fd8845696e2e14a8b67d78fa9e0dd2cad62fec8" - integrity sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ== - dependencies: - pako "^0.2.5" - tiny-inflate "^1.0.0" - -unist-util-is@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" - integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-position@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" - integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-stringify-position@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" - integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-visit-parents@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" - integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - -unist-util-visit@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" - integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - unist-util-visit-parents "^6.0.0" - -utf-8-validate@^5.0.2: - version "5.0.10" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" - integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== - dependencies: - node-gyp-build "^4.3.0" - -uuid@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" - integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -vfile-message@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" - integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-stringify-position "^4.0.0" - -vfile@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.3.tgz#3652ab1c496531852bf55a6bac57af981ebc38ab" - integrity sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q== - dependencies: - "@types/unist" "^3.0.0" - vfile-message "^4.0.0" - -web-streams-polyfill@4.0.0-beta.3: - version "4.0.0-beta.3" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz#2898486b74f5156095e473efe989dcf185047a38" - integrity sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -ws@^7.5.10: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== - -ws@^8.5.0: - version "8.18.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" - integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== - -yaml@^2.2.1, yaml@^2.5.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.1.tgz#42f2b1ba89203f374609572d5349fb8686500773" - integrity sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg== - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -zod-to-json-schema@^3.22.3: - version "3.23.5" - resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.23.5.tgz#ec23def47dcafe3a4d640eba6a346b34f9a693a5" - integrity sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA== - -zod@^3.22.4: - version "3.23.8" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" - integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== - -zwitch@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" - integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== From 205ff4891c1eac3edcbd256d76d89872ed333b14 Mon Sep 17 00:00:00 2001 From: aryan Date: Thu, 5 Dec 2024 20:28:02 +0530 Subject: [PATCH 4/9] fix: json --- package.json | 1 + pnpm-lock.yaml | 46 +++++++++++- src/langchain/index.ts | 115 +++++++++++++++++++++--------- src/tools/launch_pumpfun_token.ts | 3 + src/utils/toJSON.ts | 26 +++++++ 5 files changed, 155 insertions(+), 36 deletions(-) create mode 100644 src/utils/toJSON.ts diff --git a/package.json b/package.json index 79c2d57..e2f9c23 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "dependencies": { "@bonfida/spl-name-service": "^3.0.7", "@langchain/core": "^0.3.18", + "@langchain/groq": "^0.1.2", "@langchain/openai": "^0.3.13", "@metaplex-foundation/mpl-core": "^1.1.1", "@metaplex-foundation/mpl-token-metadata": "^3.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0229538..562ff0e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: '@langchain/core': specifier: ^0.3.18 version: 0.3.18(openai@4.72.0(zod@3.23.8)) + '@langchain/groq': + specifier: ^0.1.2 + version: 0.1.2(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) '@langchain/openai': specifier: ^0.3.13 version: 0.3.13(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) @@ -49,7 +52,7 @@ importers: version: 4.0.1 langchain: specifier: ^0.3.6 - version: 0.3.6(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))(axios@1.7.7)(openai@4.72.0(zod@3.23.8)) + version: 0.3.6(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))(@langchain/groq@0.1.2(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))))(axios@1.7.7)(openai@4.72.0(zod@3.23.8)) typedoc: specifier: ^0.26.11 version: 0.26.11(typescript@5.6.3) @@ -95,6 +98,12 @@ packages: resolution: {integrity: sha512-IEZCrFs1Xd0J2FTH1D3Lnm3/Yk2r8LSpwDeLYwcCom3rNAK5k4mKQ2rwIpNq3YuqBdrTNMKRO+PopjkP1SB17A==} engines: {node: '>=18'} + '@langchain/groq@0.1.2': + resolution: {integrity: sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + '@langchain/openai@0.3.13': resolution: {integrity: sha512-lfiauYttb1Vv1GVGDNZlse8475RUsKm9JJ7X9kMVtYoOQnK8xxzMVSrpW7HYLmJokrtVgF6STwRzNJI2gZ3uBw==} engines: {node: '>=18'} @@ -609,6 +618,9 @@ packages: graphemesplit@2.4.4: resolution: {integrity: sha512-lKrpp1mk1NH26USxC/Asw4OHbhSQf5XfrWZ+CDv/dFVvd1j17kFgMotdJvOesmHkbFX9P9sBfpH8VogxOWLg8w==} + groq-sdk@0.5.0: + resolution: {integrity: sha512-RVmhW7qZ+XZoy5fIuSdx/LGQJONpL8MHgZEW7dFwTdgkzStub2XQx6OKv28CHogijdwH41J+Npj/z2jBPu3vmw==} + hast-util-to-html@9.0.3: resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} @@ -963,6 +975,10 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + web-streams-polyfill@4.0.0-beta.3: resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} engines: {node: '>= 14'} @@ -1078,6 +1094,16 @@ snapshots: transitivePeerDependencies: - openai + '@langchain/groq@0.1.2(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))': + dependencies: + '@langchain/core': 0.3.18(openai@4.72.0(zod@3.23.8)) + '@langchain/openai': 0.3.13(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) + groq-sdk: 0.5.0 + zod: 3.23.8 + zod-to-json-schema: 3.23.5(zod@3.23.8) + transitivePeerDependencies: + - encoding + '@langchain/openai@0.3.13(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))': dependencies: '@langchain/core': 0.3.18(openai@4.72.0(zod@3.23.8)) @@ -1667,6 +1693,19 @@ snapshots: js-base64: 3.7.7 unicode-trie: 2.0.0 + groq-sdk@0.5.0: + dependencies: + '@types/node': 18.19.64 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + web-streams-polyfill: 3.3.3 + transitivePeerDependencies: + - encoding + hast-util-to-html@9.0.3: dependencies: '@types/hast': 3.0.4 @@ -1733,7 +1772,7 @@ snapshots: jsonpointer@5.0.1: {} - langchain@0.3.6(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))(axios@1.7.7)(openai@4.72.0(zod@3.23.8)): + langchain@0.3.6(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))(@langchain/groq@0.1.2(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))))(axios@1.7.7)(openai@4.72.0(zod@3.23.8)): dependencies: '@langchain/core': 0.3.18(openai@4.72.0(zod@3.23.8)) '@langchain/openai': 0.3.13(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) @@ -1749,6 +1788,7 @@ snapshots: zod: 3.23.8 zod-to-json-schema: 3.23.5(zod@3.23.8) optionalDependencies: + '@langchain/groq': 0.1.2(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) axios: 1.7.7 transitivePeerDependencies: - encoding @@ -2028,6 +2068,8 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 + web-streams-polyfill@3.3.3: {} + web-streams-polyfill@4.0.0-beta.3: {} webidl-conversions@3.0.1: {} diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 226abc8..a121394 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1,12 +1,13 @@ import { Tool } from "langchain/tools"; import { SolanaAgentKit } from "../index"; import { PublicKey } from "@solana/web3.js"; -import { launchPumpFunToken } from "../tools"; - +import { PumpFunTokenOptions } from "../types"; +import { toJSON } from "../utils/toJSON"; export class SolanaBalanceTool extends Tool { name = "solana_balance"; - description = "Get the balance of a Solana wallet or token account. Input can be a token address or empty for SOL balance."; - + description = + "Get the balance of a Solana wallet or token account. Input can be a token address or empty for SOL balance."; + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -24,8 +25,9 @@ export class SolanaBalanceTool extends Tool { export class SolanaTransferTool extends Tool { name = "solana_transfer"; - description = "Transfer tokens or SOL to another address. Input should be JSON string with: {to: string, amount: number, mint?: string}"; - + description = + "Transfer tokens or SOL to another address. Input should be JSON string with: {to: string, amount: number, mint?: string}"; + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -35,7 +37,7 @@ export class SolanaTransferTool extends Tool { const { to, amount, mint } = JSON.parse(input); const recipient = new PublicKey(to); const mintAddress = mint ? new PublicKey(mint) : undefined; - + await this.solanaKit.transfer(recipient, amount, mintAddress); return `Successfully transferred ${amount} to ${to}`; } catch (error: any) { @@ -46,15 +48,16 @@ export class SolanaTransferTool extends Tool { export class SolanaDeployTokenTool extends Tool { name = "solana_deploy_token"; - description = "Deploy a new SPL token. Input should be JSON string with: {decimals?: number, initialSupply?: number}"; - + description = + "Deploy a new SPL token. Input should be JSON string with: {decimals?: number, initialSupply?: number}"; + constructor(private solanaKit: SolanaAgentKit) { super(); } async _call(input: string): Promise { try { - const validJson = input + const validJson = input .replace(/([a-zA-Z0-9_]+):/g, '"$1":') // Add quotes around keys .trim(); const { decimals = 9 } = JSON.parse(validJson); @@ -68,8 +71,9 @@ export class SolanaDeployTokenTool extends Tool { export class SolanaDeployCollectionTool extends Tool { name = "solana_deploy_collection"; - description = "Deploy a new NFT collection. Input should be JSON with: {name: string, uri: string, royaltyBasisPoints?: number, creators?: Array<{address: string, percentage: number}>}"; - + description = + "Deploy a new NFT collection. Input should be JSON with: {name: string, uri: string, royaltyBasisPoints?: number, creators?: Array<{address: string, percentage: number}>}"; + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -87,8 +91,9 @@ export class SolanaDeployCollectionTool extends Tool { export class SolanaMintNFTTool extends Tool { name = "solana_mint_nft"; - description = "Mint a new NFT in a collection. Input should be JSON with: {collectionMint: string, metadata: {name: string, symbol: string, uri: string}, recipient?: string}"; - + description = + "Mint a new NFT in a collection. Input should be JSON with: {collectionMint: string, metadata: {name: string, symbol: string, uri: string}, recipient?: string}"; + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -111,15 +116,17 @@ export class SolanaMintNFTTool extends Tool { export class SolanaTradeTool extends Tool { name = "solana_trade"; - description = "Swap tokens using Jupiter Exchange. Input should be JSON with: {outputMint: string, inputAmount: number, inputMint?: string, slippageBps?: number}"; - + description = + "Swap tokens using Jupiter Exchange. Input should be JSON with: {outputMint: string, inputAmount: number, inputMint?: string, slippageBps?: number}"; + constructor(private solanaKit: SolanaAgentKit) { super(); } async _call(input: string): Promise { try { - const { outputMint, inputAmount, inputMint, slippageBps } = JSON.parse(input); + const { outputMint, inputAmount, inputMint, slippageBps } = + JSON.parse(input); const tx = await this.solanaKit.trade( new PublicKey(outputMint), inputAmount, @@ -136,7 +143,7 @@ export class SolanaTradeTool extends Tool { export class SolanaRequestFundsTool extends Tool { name = "solana_request_funds"; description = "Request SOL from Solana faucet (devnet/testnet only)"; - + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -153,8 +160,9 @@ export class SolanaRequestFundsTool extends Tool { export class SolanaRegisterDomainTool extends Tool { name = "solana_register_domain"; - description = "Register a .sol domain name. Input should be JSON with: {name: string, spaceKB?: number}"; - + description = + "Register a .sol domain name. Input should be JSON with: {name: string, spaceKB?: number}"; + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -173,7 +181,7 @@ export class SolanaRegisterDomainTool extends Tool { export class SolanaGetWalletAddressTool extends Tool { name = "solana_get_wallet_address"; description = "Get the wallet address of the agent"; - + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -183,25 +191,64 @@ export class SolanaGetWalletAddressTool extends Tool { } } -export class SolanaPumpfunTokenLaunch extends Tool { +export class SolanaPumpfunTokenLaunchTool extends Tool { name = "solana_launch_pumpfun_token"; - description = "Launch a new token on Pump.fun via Solana Agent Kit. Input should be JSON with: {tokenName: string, tokenTicker: string, description?: string, twitter?: string, telegram?: string, website?: string, imageUrl?: string, initialLiquiditySOL?: number, mintAddress?: string}"; + description = "Launch a new token on Pump.fun via Solana Agent Kit. Requires a JSON input with tokenName and tokenTicker, with optional fields for description, twitter, telegram, website, imageUrl, initialLiquiditySOL, and mintAddress."; constructor(private solanaKit: SolanaAgentKit) { - super(); + super(); } - async _call(input: string): Promise { - try { - const options = JSON.parse(input); - await launchPumpFunToken(this.solanaKit, options.tokenName, options.tokenTicker, options); - return "Token launched successfully on Pump.fun"; - } catch (error: any) { - return `Error launching token: ${error.message}`; - } + private validateInput(input : any): void { + if (!input.tokenName || typeof input.tokenName !== 'string') { + throw new Error('tokenName is required and must be a string'); + } + if (!input.tokenTicker || typeof input.tokenTicker !== 'string') { + throw new Error('tokenTicker is required and must be a string'); + } + if (input.initialLiquiditySOL !== undefined && typeof input.initialLiquiditySOL !== 'number') { + throw new Error('initialLiquiditySOL must be a number when provided'); + } + } + + protected async _call(input: string): Promise { + try { + // Parse and normalize input + const parsedInput = toJSON(input); + // Validate the input + this.validateInput(parsedInput); + + // Launch token with validated input + await this.solanaKit.launchPumpFunToken( + parsedInput.tokenName, + parsedInput.tokenTicker, + { + description: parsedInput.description, + twitter: parsedInput.twitter, + telegram: parsedInput.telegram, + website: parsedInput.website, + imageUrl: parsedInput.imageUrl, + initialLiquiditySOL: parsedInput.initialLiquiditySOL, + } + ); + + return JSON.stringify({ + status: "success", + message: "Token launched successfully on Pump.fun", + tokenName: parsedInput.tokenName, + tokenTicker: parsedInput.tokenTicker + }); + + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR" + }); + } } } -// Updated createSolanaTools function + export function createSolanaTools(solanaKit: SolanaAgentKit) { return [ new SolanaBalanceTool(solanaKit), @@ -213,6 +260,6 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaRequestFundsTool(solanaKit), new SolanaRegisterDomainTool(solanaKit), new SolanaGetWalletAddressTool(solanaKit), - new SolanaPumpfunTokenLaunch(solanaKit) + new SolanaPumpfunTokenLaunchTool(solanaKit), ]; } diff --git a/src/tools/launch_pumpfun_token.ts b/src/tools/launch_pumpfun_token.ts index 00ae2c5..d777995 100644 --- a/src/tools/launch_pumpfun_token.ts +++ b/src/tools/launch_pumpfun_token.ts @@ -39,12 +39,15 @@ async function uploadMetadata( finalFormData.append('file', files.file); } + console.log("Final form data:", finalFormData); + const metadataResponse = await fetch("https://pump.fun/api/ipfs", { method: "POST", body: finalFormData }); if (!metadataResponse.ok) { + console.log("Metadata response:", await metadataResponse.json()); throw new Error(`Metadata upload failed: ${metadataResponse.statusText}`); } diff --git a/src/utils/toJSON.ts b/src/utils/toJSON.ts new file mode 100644 index 0000000..2581f4d --- /dev/null +++ b/src/utils/toJSON.ts @@ -0,0 +1,26 @@ +export const toJSON = (str: string): any => { + try { + // Remove curly braces and split by comma + const pairs = str.trim().slice(1, -1).split(","); + + // Convert to object with explicit type + const obj: Record = {}; + + pairs.forEach((pair) => { + const [key, value] = pair + .trim() + .split(":") + .map((s) => s.trim()); + + if (!key || value === undefined) { + throw new Error("Invalid key-value pair format"); + } + + obj[key] = isNaN(Number(value)) ? value : Number(value); + }); + + return JSON.parse(JSON.stringify(obj)); + } catch (error) { + throw new Error(`Failed to parse string to JSON: ${error}`); + } +}; From 5cdb4fd9e711223492cf05cb48941d95678df7b3 Mon Sep 17 00:00:00 2001 From: aryan Date: Thu, 5 Dec 2024 21:33:09 +0530 Subject: [PATCH 5/9] feat: add image support --- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 14 +-- docs/functions/createSolanaTools.html | 2 +- docs/interfaces/CollectionDeployment.html | 4 +- docs/interfaces/CollectionOptions.html | 4 +- docs/interfaces/Creator.html | 4 +- .../LuloAccountDetailsResponse.html | 4 +- .../interfaces/MintCollectionNFTResponse.html | 4 +- docs/interfaces/PumpFunTokenOptions.html | 9 ++ docs/interfaces/PumpfunLaunchResponse.html | 5 + docs/modules.html | 2 + docs/types/LuloDepositAssetMint.html | 2 +- package.json | 1 + pnpm-lock.yaml | 53 +++++---- src/agent/index.ts | 5 +- src/langchain/index.ts | 109 +++++++++++------- src/tools/create_image.ts | 40 +++++++ src/types/index.ts | 22 ++++ 19 files changed, 197 insertions(+), 91 deletions(-) create mode 100644 docs/interfaces/PumpFunTokenOptions.html create mode 100644 docs/interfaces/PumpfunLaunchResponse.html create mode 100644 src/tools/create_image.ts diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 9dabcc9..1fbea8f 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE4XSwU7DMAwG4HfxuaJbxQb0VlFxAYYEuyEOUfBYhGdHtSttmvbuqGxi7ei6Sy7+8zlO8r4Fw7VBDm9Cjl3xhWyPwSCB6GwJOXhyqqhpt361tBVBAt+BPyEfZ7e75E+6FyL0FoRLjCSbFXLLC2xYLZxHTfuCXTibTHvhl9isekE9pAbJCp1J1Q/ta0Pbn2qSwnup2Uo0F0hfUaOwYq94Pj7U5DmwHYeaPcwHe5xNX5qjxCgarFBFa5Cjbpt4OPxp5sQc3d2MJ1nL9c0V4v7rzEWo9WKLmn9PqOm/UFedXu8+fgCaFcWUpwIAAA==" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE4WSTU/DMAyG/0vOFWUVG9DbRLUL40PQG+IQBZdGS+2odiQmtP+OyibWji695OInj+PXeftWAl+icvVKTqNefgLKvRWVKK+lVrkyTjMDp8P6RS2NU4naWPxQ+Sy72SV/pjtyDoxYwgK8o20D2PNZFGgrbYDTMXAozuaLUfGT706esB6oqLIFLdSOi/a12PV1cLQ0hgJKAaKt4xdgT8gwajyPx5o8WJTjUI+rMtrjLB1r8RwaXwVc64CmjupHySn1KmBJG4iubYSbSr4AT2xlyQzSjX30ytYf4j5lTpyXt9ezedbzmm7psP/sJZHrPbYK+Jspp/+goXVxtXv/ATHeAoJZAwAA" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 9c2b490..7948610 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index 3d2bb59..552e3a6 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,22 +1,20 @@ SolanaAgentKit | solana-agent-kit

        Class SolanaAgentKit

        Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, and trading

        SolanaAgentKit

        -

        Constructors

        Constructors

        Properties

        connection: Connection

        Solana RPC connection

        -
        wallet: Keypair

        Wallet keypair for signing transactions

        -
        wallet_address: PublicKey

        Public key of the wallet

        -

        Methods

        • Parameters

          • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS

          Returns Promise<{
              mint: PublicKey;
          }>

        • Parameters

          • Optionaltoken_address: PublicKey

          Returns Promise<null | number>

        • Parameters

          • asset: PublicKey
          • amount: number
          • LULO_API_KEY: string

          Returns Promise<string>

        • Parameters

          • collectionMint: PublicKey
          • metadata: {
                creators?: {
                    address: string;
                    share: number;
                }[];
                name: string;
                sellerFeeBasisPoints?: number;
                symbol: string;
                uri: string;
            }
            • Optionalcreators?: {
                  address: string;
                  share: number;
              }[]
            • name: string
            • OptionalsellerFeeBasisPoints?: number
            • symbol: string
            • uri: string
          • Optionalrecipient: PublicKey

          Returns Promise<MintCollectionNFTResponse>

        • Parameters

          • name: string
          • OptionalspaceKB: number

          Returns Promise<string>

        • Returns Promise<string>

        • Parameters

          • outputMint: PublicKey
          • inputAmount: number
          • OptionalinputMint: PublicKey
          • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

          Returns Promise<string>

        • Parameters

          • to: PublicKey
          • amount: number
          • Optionalmint: PublicKey

          Returns Promise<string>

        +

        Constructors

        Properties

        connection: Connection

        Solana RPC connection

        +
        wallet: Keypair

        Wallet keypair for signing transactions

        +
        wallet_address: PublicKey

        Public key of the wallet

        +

        Methods

        • Parameters

          • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS

          Returns Promise<{
              mint: PublicKey;
          }>

        • Parameters

          • Optionaltoken_address: PublicKey

          Returns Promise<null | number>

        • Parameters

          Returns Promise<{
              metadataUri: any;
              mint: string;
              signature: string;
          }>

        • Parameters

          • collectionMint: PublicKey
          • metadata: {
                creators?: {
                    address: string;
                    share: number;
                }[];
                name: string;
                sellerFeeBasisPoints?: number;
                symbol: string;
                uri: string;
            }
            • Optionalcreators?: {
                  address: string;
                  share: number;
              }[]
            • name: string
            • OptionalsellerFeeBasisPoints?: number
            • symbol: string
            • uri: string
          • Optionalrecipient: PublicKey

          Returns Promise<MintCollectionNFTResponse>

        • Parameters

          • name: string
          • OptionalspaceKB: number

          Returns Promise<string>

        • Returns Promise<string>

        • Parameters

          • outputMint: PublicKey
          • inputAmount: number
          • OptionalinputMint: PublicKey
          • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

          Returns Promise<string>

        • Parameters

          • to: PublicKey
          • amount: number
          • Optionalmint: PublicKey

          Returns Promise<string>

        diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index b713625..f921005 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

        Function createSolanaTools

        • Parameters

          Returns (
              | SolanaBalanceTool
              | SolanaTransferTool
              | SolanaDeployTokenTool
              | SolanaDeployCollectionTool
              | SolanaMintNFTTool
              | SolanaTradeTool
              | SolanaRequestFundsTool
              | SolanaRegisterDomainTool
              | SolanaGetWalletAddressTool
              | SolanaLendAssetTool
              | SolanaFetchLendingDetailsTool
              | SolanaTPSCalculatorTool)[]

        +createSolanaTools | solana-agent-kit

        Function createSolanaTools

        • Parameters

          Returns (
              | SolanaBalanceTool
              | SolanaTransferTool
              | SolanaDeployTokenTool
              | SolanaDeployCollectionTool
              | SolanaMintNFTTool
              | SolanaTradeTool
              | SolanaRequestFundsTool
              | SolanaRegisterDomainTool
              | SolanaGetWalletAddressTool
              | SolanaPumpfunTokenLaunchTool)[]

        diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index c8aae03..f964980 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

        Interface CollectionDeployment

        interface CollectionDeployment {
            collectionAddress: PublicKey;
            signature: Uint8Array;
        }

        Properties

        collectionAddress +CollectionDeployment | solana-agent-kit

        Interface CollectionDeployment

        interface CollectionDeployment {
            collectionAddress: PublicKey;
            signature: Uint8Array;
        }

        Properties

        collectionAddress: PublicKey
        signature: Uint8Array
        +

        Properties

        collectionAddress: PublicKey
        signature: Uint8Array
        diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index 4dc95c0..e6ff08c 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

        Interface CollectionOptions

        interface CollectionOptions {
            creators?: Creator[];
            name: string;
            royaltyBasisPoints?: number;
            uri: string;
        }

        Properties

        creators? +CollectionOptions | solana-agent-kit

        Interface CollectionOptions

        interface CollectionOptions {
            creators?: Creator[];
            name: string;
            royaltyBasisPoints?: number;
            uri: string;
        }

        Properties

        creators?: Creator[]
        name: string
        royaltyBasisPoints?: number
        uri: string
        +

        Properties

        creators?: Creator[]
        name: string
        royaltyBasisPoints?: number
        uri: string
        diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index 1c0921a..a93a8c0 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

        Interface Creator

        interface Creator {
            address: string;
            percentage: number;
        }

        Properties

        address +Creator | solana-agent-kit

        Interface Creator

        interface Creator {
            address: string;
            percentage: number;
        }

        Properties

        Properties

        address: string
        percentage: number
        +

        Properties

        address: string
        percentage: number
        diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index ad41209..1278cfd 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ LuloAccountDetailsResponse | solana-agent-kit

        Interface LuloAccountDetailsResponse

        Lulo Account Details response format

        -
        interface LuloAccountDetailsResponse {
            interestEarned: number;
            realtimeApy: number;
            settings: {
                allowedProtocols: null | string;
                homebase: null | string;
                minimumRate: string;
                owner: string;
            };
            totalValue: number;
        }

        Properties

        interface LuloAccountDetailsResponse {
            interestEarned: number;
            realtimeApy: number;
            settings: {
                allowedProtocols: null | string;
                homebase: null | string;
                minimumRate: string;
                owner: string;
            };
            totalValue: number;
        }

        Properties

        interestEarned: number
        realtimeApy: number
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        }
        totalValue: number
        +

        Properties

        interestEarned: number
        realtimeApy: number
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        }
        totalValue: number
        diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index 147b4c2..eb8841b 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

        Interface MintCollectionNFTResponse

        interface MintCollectionNFTResponse {
            metadata: PublicKey;
            mint: PublicKey;
        }

        Properties

        metadata +MintCollectionNFTResponse | solana-agent-kit

        Interface MintCollectionNFTResponse

        interface MintCollectionNFTResponse {
            metadata: PublicKey;
            mint: PublicKey;
        }

        Properties

        Properties

        metadata: PublicKey
        mint: PublicKey
        +

        Properties

        metadata: PublicKey
        mint: PublicKey
        diff --git a/docs/interfaces/PumpFunTokenOptions.html b/docs/interfaces/PumpFunTokenOptions.html new file mode 100644 index 0000000..e74c17f --- /dev/null +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -0,0 +1,9 @@ +PumpFunTokenOptions | solana-agent-kit

        Interface PumpFunTokenOptions

        interface PumpFunTokenOptions {
            description?: string;
            imageUrl?: string;
            initialLiquiditySOL?: number;
            priorityFee?: number;
            slippageBps?: number;
            telegram?: string;
            twitter?: string;
            website?: string;
        }

        Properties

        description?: string
        imageUrl?: string
        initialLiquiditySOL?: number
        priorityFee?: number
        slippageBps?: number
        telegram?: string
        twitter?: string
        website?: string
        diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html new file mode 100644 index 0000000..d6968bf --- /dev/null +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -0,0 +1,5 @@ +PumpfunLaunchResponse | solana-agent-kit

        Interface PumpfunLaunchResponse

        interface PumpfunLaunchResponse {
            error?: string;
            metadataUri?: string;
            mint: string;
            signature: string;
        }

        Properties

        error?: string
        metadataUri?: string
        mint: string
        signature: string
        diff --git a/docs/modules.html b/docs/modules.html index ae48dd7..bffe782 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -4,6 +4,8 @@ Creator LuloAccountDetailsResponse MintCollectionNFTResponse +PumpfunLaunchResponse +PumpFunTokenOptions

        Type Aliases

        Functions

        diff --git a/docs/types/LuloDepositAssetMint.html b/docs/types/LuloDepositAssetMint.html index b67a06d..d38defd 100644 --- a/docs/types/LuloDepositAssetMint.html +++ b/docs/types/LuloDepositAssetMint.html @@ -1,2 +1,2 @@ LuloDepositAssetMint | solana-agent-kit

        Type Alias LuloDepositAssetMint

        LuloDepositAssetMint: typeof TOKENS[keyof typeof TOKENS]

        Mint addresses of supported tokens for lending on Lulo

        -
        +
        diff --git a/package.json b/package.json index e2f9c23..4d0e5d8 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "dotenv": "^16.4.5", "form-data": "^4.0.1", "langchain": "^0.3.6", + "openai": "^4.75.0", "typedoc": "^0.26.11" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 562ff0e..445564c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,13 +13,13 @@ importers: version: 3.0.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@langchain/core': specifier: ^0.3.18 - version: 0.3.18(openai@4.72.0(zod@3.23.8)) + version: 0.3.18(openai@4.75.0(zod@3.23.8)) '@langchain/groq': specifier: ^0.1.2 - version: 0.1.2(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) + version: 0.1.2(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) '@langchain/openai': specifier: ^0.3.13 - version: 0.3.13(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) + version: 0.3.13(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) '@metaplex-foundation/mpl-core': specifier: ^1.1.1 version: 1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.5.0) @@ -52,7 +52,10 @@ importers: version: 4.0.1 langchain: specifier: ^0.3.6 - version: 0.3.6(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))(@langchain/groq@0.1.2(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))))(axios@1.7.7)(openai@4.72.0(zod@3.23.8)) + version: 0.3.6(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8)))(@langchain/groq@0.1.2(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))))(axios@1.7.7)(openai@4.75.0(zod@3.23.8)) + openai: + specifier: ^4.75.0 + version: 4.75.0(zod@3.23.8) typedoc: specifier: ^0.26.11 version: 0.26.11(typescript@5.6.3) @@ -798,8 +801,8 @@ packages: oniguruma-to-es@0.1.2: resolution: {integrity: sha512-sBYKVJlIMB0WPO+tSu/NNB1ytSFeHyyJZ3Ayxfx3f/QUuXu0lvZk0VB4K7npmdlHSC0ldqanzh/sUSlAbgCTfw==} - openai@4.72.0: - resolution: {integrity: sha512-hFqG9BWCs7L7ifrhJXw7mJXmUBr7d9N6If3J9563o0jfwVA4wFANFDDaOIWFdgDdwgCXg5emf0Q+LoLCGszQYA==} + openai@4.75.0: + resolution: {integrity: sha512-8cWaK3td0qLspaflKWD6AvpQnl0gynWFbHg7sMAgiu//F20I4GJlCCpllDrECO6WFSuY8HXJj8gji3urw2BGGg==} hasBin: true peerDependencies: zod: ^3.23.8 @@ -1078,13 +1081,13 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))': + '@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))': dependencies: ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.15 - langsmith: 0.2.5(openai@4.72.0(zod@3.23.8)) + langsmith: 0.2.5(openai@4.75.0(zod@3.23.8)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -1094,29 +1097,29 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/groq@0.1.2(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))': + '@langchain/groq@0.1.2(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.18(openai@4.72.0(zod@3.23.8)) - '@langchain/openai': 0.3.13(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) + '@langchain/core': 0.3.18(openai@4.75.0(zod@3.23.8)) + '@langchain/openai': 0.3.13(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) groq-sdk: 0.5.0 zod: 3.23.8 zod-to-json-schema: 3.23.5(zod@3.23.8) transitivePeerDependencies: - encoding - '@langchain/openai@0.3.13(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))': + '@langchain/openai@0.3.13(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.18(openai@4.72.0(zod@3.23.8)) + '@langchain/core': 0.3.18(openai@4.75.0(zod@3.23.8)) js-tiktoken: 1.0.15 - openai: 4.72.0(zod@3.23.8) + openai: 4.75.0(zod@3.23.8) zod: 3.23.8 zod-to-json-schema: 3.23.5(zod@3.23.8) transitivePeerDependencies: - encoding - '@langchain/textsplitters@0.1.0(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))': + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.18(openai@4.72.0(zod@3.23.8)) + '@langchain/core': 0.3.18(openai@4.75.0(zod@3.23.8)) js-tiktoken: 1.0.15 '@metaplex-foundation/mpl-core@1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.5.0)': @@ -1772,15 +1775,15 @@ snapshots: jsonpointer@5.0.1: {} - langchain@0.3.6(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))(@langchain/groq@0.1.2(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))))(axios@1.7.7)(openai@4.72.0(zod@3.23.8)): + langchain@0.3.6(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8)))(@langchain/groq@0.1.2(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))))(axios@1.7.7)(openai@4.75.0(zod@3.23.8)): dependencies: - '@langchain/core': 0.3.18(openai@4.72.0(zod@3.23.8)) - '@langchain/openai': 0.3.13(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) + '@langchain/core': 0.3.18(openai@4.75.0(zod@3.23.8)) + '@langchain/openai': 0.3.13(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) js-tiktoken: 1.0.15 js-yaml: 4.1.0 jsonpointer: 5.0.1 - langsmith: 0.2.5(openai@4.72.0(zod@3.23.8)) + langsmith: 0.2.5(openai@4.75.0(zod@3.23.8)) openapi-types: 12.1.3 p-retry: 4.6.2 uuid: 10.0.0 @@ -1788,13 +1791,13 @@ snapshots: zod: 3.23.8 zod-to-json-schema: 3.23.5(zod@3.23.8) optionalDependencies: - '@langchain/groq': 0.1.2(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) + '@langchain/groq': 0.1.2(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) axios: 1.7.7 transitivePeerDependencies: - encoding - openai - langsmith@0.2.5(openai@4.72.0(zod@3.23.8)): + langsmith@0.2.5(openai@4.75.0(zod@3.23.8)): dependencies: '@types/uuid': 10.0.0 commander: 10.0.1 @@ -1803,7 +1806,7 @@ snapshots: semver: 7.6.3 uuid: 10.0.0 optionalDependencies: - openai: 4.72.0(zod@3.23.8) + openai: 4.75.0(zod@3.23.8) linkify-it@5.0.0: dependencies: @@ -1882,7 +1885,7 @@ snapshots: regex: 4.4.0 regex-recursion: 4.2.1 - openai@4.72.0(zod@3.23.8): + openai@4.75.0(zod@3.23.8): dependencies: '@types/node': 18.19.64 '@types/node-fetch': 2.6.12 diff --git a/src/agent/index.ts b/src/agent/index.ts index 1a48f0b..7ab96da 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -27,14 +27,17 @@ export class SolanaAgentKit { public connection: Connection; public wallet: Keypair; public wallet_address: PublicKey; + public openai_api_key: string; constructor( private_key: string, - rpc_url = "https://api.mainnet-beta.solana.com" + rpc_url = "https://api.mainnet-beta.solana.com", + openai_api_key: string ) { this.connection = new Connection(rpc_url); this.wallet = Keypair.fromSecretKey(bs58.decode(private_key)); this.wallet_address = this.wallet.publicKey; + this.openai_api_key = openai_api_key; } // Tool methods diff --git a/src/langchain/index.ts b/src/langchain/index.ts index a121394..b207459 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -3,6 +3,7 @@ import { SolanaAgentKit } from "../index"; import { PublicKey } from "@solana/web3.js"; import { PumpFunTokenOptions } from "../types"; import { toJSON } from "../utils/toJSON"; +import { create_image } from "../tools/create_image"; export class SolanaBalanceTool extends Tool { name = "solana_balance"; description = @@ -193,59 +194,80 @@ export class SolanaGetWalletAddressTool extends Tool { export class SolanaPumpfunTokenLaunchTool extends Tool { name = "solana_launch_pumpfun_token"; - description = "Launch a new token on Pump.fun via Solana Agent Kit. Requires a JSON input with tokenName and tokenTicker, with optional fields for description, twitter, telegram, website, imageUrl, initialLiquiditySOL, and mintAddress."; + description = + "Launch a new token on Pump.fun via Solana Agent Kit. Requires a JSON input with tokenName and tokenTicker, with optional fields for description, twitter, telegram, website, imageUrl, initialLiquiditySOL, and mintAddress."; constructor(private solanaKit: SolanaAgentKit) { - super(); + super(); } - private validateInput(input : any): void { - if (!input.tokenName || typeof input.tokenName !== 'string') { - throw new Error('tokenName is required and must be a string'); - } - if (!input.tokenTicker || typeof input.tokenTicker !== 'string') { - throw new Error('tokenTicker is required and must be a string'); - } - if (input.initialLiquiditySOL !== undefined && typeof input.initialLiquiditySOL !== 'number') { - throw new Error('initialLiquiditySOL must be a number when provided'); - } + private validateInput(input: any): void { + if (!input.tokenName || typeof input.tokenName !== "string") { + throw new Error("tokenName is required and must be a string"); + } + if (!input.tokenTicker || typeof input.tokenTicker !== "string") { + throw new Error("tokenTicker is required and must be a string"); + } + if ( + input.initialLiquiditySOL !== undefined && + typeof input.initialLiquiditySOL !== "number" + ) { + throw new Error("initialLiquiditySOL must be a number when provided"); + } } protected async _call(input: string): Promise { - try { - // Parse and normalize input - const parsedInput = toJSON(input); - // Validate the input - this.validateInput(parsedInput); + try { + // Parse and normalize input + const parsedInput = toJSON(input); + // Validate the input + this.validateInput(parsedInput); - // Launch token with validated input - await this.solanaKit.launchPumpFunToken( - parsedInput.tokenName, - parsedInput.tokenTicker, - { - description: parsedInput.description, - twitter: parsedInput.twitter, - telegram: parsedInput.telegram, - website: parsedInput.website, - imageUrl: parsedInput.imageUrl, - initialLiquiditySOL: parsedInput.initialLiquiditySOL, - } - ); + // Launch token with validated input + await this.solanaKit.launchPumpFunToken( + parsedInput.tokenName, + parsedInput.tokenTicker, + { + description: parsedInput.description, + twitter: parsedInput.twitter, + telegram: parsedInput.telegram, + website: parsedInput.website, + imageUrl: parsedInput.imageUrl, + initialLiquiditySOL: parsedInput.initialLiquiditySOL, + } + ); - return JSON.stringify({ - status: "success", - message: "Token launched successfully on Pump.fun", - tokenName: parsedInput.tokenName, - tokenTicker: parsedInput.tokenTicker - }); + return JSON.stringify({ + status: "success", + message: "Token launched successfully on Pump.fun", + tokenName: parsedInput.tokenName, + tokenTicker: parsedInput.tokenTicker, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR" - }); - } +export class SolanaCreateImageTool extends Tool { + name = "solana_create_image"; + description = "Create an image using OpenAI's DALL-E"; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const result = await create_image(this.solanaKit, input); + return JSON.stringify(result); + } catch (error: any) { + return `Error creating image: ${error.message}`; + } } } @@ -261,5 +283,6 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaRegisterDomainTool(solanaKit), new SolanaGetWalletAddressTool(solanaKit), new SolanaPumpfunTokenLaunchTool(solanaKit), + new SolanaCreateImageTool(solanaKit), ]; } diff --git a/src/tools/create_image.ts b/src/tools/create_image.ts new file mode 100644 index 0000000..e2c4bd4 --- /dev/null +++ b/src/tools/create_image.ts @@ -0,0 +1,40 @@ +import { SolanaAgentKit } from "../index"; +import OpenAI from "openai"; + +/** + * Generate an image using OpenAI's DALL-E + * @param agent SolanaAgentKit instance + * @param prompt Text description of the image to generate + * @param size Image size ('256x256', '512x512', or '1024x1024') (default: '1024x1024') + * @param n Number of images to generate (default: 1) + * @returns Object containing the generated image URLs + */ +export async function create_image( + agent: SolanaAgentKit, + prompt: string, + size: "256x256" | "512x512" | "1024x1024" = "1024x1024", + n: number = 1 +) { + try { + if (!agent.openai_api_key) { + throw new Error("OpenAI API key not found in agent configuration"); + } + + const openai = new OpenAI({ + apiKey: agent.openai_api_key + }); + + const response = await openai.images.generate({ + prompt, + n, + size, + }); + + return { + images: response.data.map((img) => img.url), + }; + + } catch (error: any) { + throw new Error(`Image generation failed: ${error.message}`); + } +} diff --git a/src/types/index.ts b/src/types/index.ts index 6ff1ffb..4fd92d6 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,4 +1,5 @@ import { PublicKey } from "@solana/web3.js"; +import { TOKENS } from "../constants"; export interface Creator { address: string; @@ -40,3 +41,24 @@ export interface PumpfunLaunchResponse { metadataUri?: string; error?: string; } + + +/** + * Mint addresses of supported tokens for lending on Lulo + */ +export type LuloDepositAssetMint = (typeof TOKENS)[keyof typeof TOKENS]; + +/** + * Lulo Account Details response format + */ +export interface LuloAccountDetailsResponse { + totalValue: number; + interestEarned: number; + realtimeApy: number; + settings: { + owner: string; + allowedProtocols: string | null; + homebase: string | null; + minimumRate: string; + }; +} From 43b210573ab00d57fa367acfd95c2144b36a250b Mon Sep 17 00:00:00 2001 From: aryan Date: Thu, 5 Dec 2024 22:25:10 +0530 Subject: [PATCH 6/9] fix: bugggs --- src/agent/index.ts | 11 +- src/langchain/index.ts | 332 +++++++++++++++++++++++++----- src/tools/launch_pumpfun_token.ts | 31 +-- src/types/index.ts | 2 - 4 files changed, 301 insertions(+), 75 deletions(-) diff --git a/src/agent/index.ts b/src/agent/index.ts index 7ab96da..483763d 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -88,8 +88,17 @@ export class SolanaAgentKit { async launchPumpFunToken( tokenName: string, tokenTicker: string, + description: string, + imageUrl: string, options?: PumpFunTokenOptions ) { - return launchPumpFunToken(this, tokenName, tokenTicker, options); + return launchPumpFunToken( + this, + tokenName, + tokenTicker, + description, + imageUrl, + options + ); } } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index b207459..a0615c6 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -13,13 +13,22 @@ export class SolanaBalanceTool extends Tool { super(); } - async _call(input: string): Promise { + protected async _call(input: string): Promise { try { const tokenAddress = input ? new PublicKey(input) : undefined; const balance = await this.solanaKit.getBalance(tokenAddress); - return `Balance: ${balance}`; + + return JSON.stringify({ + status: "success", + balance: balance, + token: input || "SOL" + }); } catch (error: any) { - return `Error getting balance: ${error.message}`; + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR" + }); } } } @@ -33,16 +42,41 @@ export class SolanaTransferTool extends Tool { super(); } - async _call(input: string): Promise { - try { - const { to, amount, mint } = JSON.parse(input); - const recipient = new PublicKey(to); - const mintAddress = mint ? new PublicKey(mint) : undefined; + private validateInput(input: any): void { + if (!input.to || typeof input.to !== "string") { + throw new Error("to address is required and must be a string"); + } + if (typeof input.amount !== "number" || input.amount <= 0) { + throw new Error("amount is required and must be a positive number"); + } + if (input.mint !== undefined && typeof input.mint !== "string") { + throw new Error("mint must be a string when provided"); + } + } - await this.solanaKit.transfer(recipient, amount, mintAddress); - return `Successfully transferred ${amount} to ${to}`; + protected async _call(input: string): Promise { + try { + const parsedInput = toJSON(input); + this.validateInput(parsedInput); + + const recipient = new PublicKey(parsedInput.to); + const mintAddress = parsedInput.mint ? new PublicKey(parsedInput.mint) : undefined; + + await this.solanaKit.transfer(recipient, parsedInput.amount, mintAddress); + + return JSON.stringify({ + status: "success", + message: "Transfer completed successfully", + amount: parsedInput.amount, + recipient: parsedInput.to, + token: parsedInput.mint || "SOL" + }); } catch (error: any) { - return `Error making transfer: ${error.message}`; + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR" + }); } } } @@ -56,16 +90,36 @@ export class SolanaDeployTokenTool extends Tool { super(); } - async _call(input: string): Promise { + private validateInput(input: any): void { + if (input.decimals !== undefined && + (typeof input.decimals !== "number" || input.decimals < 0 || input.decimals > 9)) { + throw new Error("decimals must be a number between 0 and 9 when provided"); + } + if (input.initialSupply !== undefined && + (typeof input.initialSupply !== "number" || input.initialSupply <= 0)) { + throw new Error("initialSupply must be a positive number when provided"); + } + } + + protected async _call(input: string): Promise { try { - const validJson = input - .replace(/([a-zA-Z0-9_]+):/g, '"$1":') // Add quotes around keys - .trim(); - const { decimals = 9 } = JSON.parse(validJson); - const result = await this.solanaKit.deployToken(decimals); - return `Token deployed successfully. Mint address: ${result.mint.toString()}`; + const parsedInput = toJSON(input); + this.validateInput(parsedInput); + + const result = await this.solanaKit.deployToken(parsedInput.decimals); + + return JSON.stringify({ + status: "success", + message: "Token deployed successfully", + mintAddress: result.mint.toString(), + decimals: parsedInput.decimals || 9 + }); } catch (error: any) { - return `Error deploying token: ${error.message}`; + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR" + }); } } } @@ -79,13 +133,53 @@ export class SolanaDeployCollectionTool extends Tool { super(); } - async _call(input: string): Promise { + private validateInput(input: any): void { + if (!input.name || typeof input.name !== "string") { + throw new Error("name is required and must be a string"); + } + if (!input.uri || typeof input.uri !== "string") { + throw new Error("uri is required and must be a string"); + } + if (input.royaltyBasisPoints !== undefined && + (typeof input.royaltyBasisPoints !== "number" || + input.royaltyBasisPoints < 0 || + input.royaltyBasisPoints > 10000)) { + throw new Error("royaltyBasisPoints must be a number between 0 and 10000 when provided"); + } + if (input.creators) { + if (!Array.isArray(input.creators)) { + throw new Error("creators must be an array when provided"); + } + input.creators.forEach((creator: any, index: number) => { + if (!creator.address || typeof creator.address !== "string") { + throw new Error(`creator[${index}].address is required and must be a string`); + } + if (typeof creator.percentage !== "number" || creator.percentage < 0 || creator.percentage > 100) { + throw new Error(`creator[${index}].percentage must be a number between 0 and 100`); + } + }); + } + } + + protected async _call(input: string): Promise { try { - const options = JSON.parse(input); - const result = await this.solanaKit.deployCollection(options); - return `Collection deployed successfully. Address: ${result.collectionAddress.toString()}`; + const parsedInput = toJSON(input); + this.validateInput(parsedInput); + + const result = await this.solanaKit.deployCollection(parsedInput); + + return JSON.stringify({ + status: "success", + message: "Collection deployed successfully", + collectionAddress: result.collectionAddress.toString(), + name: parsedInput.name + }); } catch (error: any) { - return `Error deploying collection: ${error.message}`; + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR" + }); } } } @@ -99,18 +193,51 @@ export class SolanaMintNFTTool extends Tool { super(); } - async _call(input: string): Promise { + private validateInput(input: any): void { + if (!input.collectionMint || typeof input.collectionMint !== "string") { + throw new Error("collectionMint is required and must be a string"); + } + if (!input.metadata || typeof input.metadata !== "object") { + throw new Error("metadata is required and must be an object"); + } + if (!input.metadata.name || typeof input.metadata.name !== "string") { + throw new Error("metadata.name is required and must be a string"); + } + if (!input.metadata.symbol || typeof input.metadata.symbol !== "string") { + throw new Error("metadata.symbol is required and must be a string"); + } + if (!input.metadata.uri || typeof input.metadata.uri !== "string") { + throw new Error("metadata.uri is required and must be a string"); + } + if (input.recipient !== undefined && typeof input.recipient !== "string") { + throw new Error("recipient must be a string when provided"); + } + } + + protected async _call(input: string): Promise { try { - const { collectionMint, metadata, recipient } = JSON.parse(input); - const recipientPubkey = recipient ? new PublicKey(recipient) : undefined; + const parsedInput = toJSON(input); + this.validateInput(parsedInput); + const result = await this.solanaKit.mintNFT( - new PublicKey(collectionMint), - metadata, - recipientPubkey + new PublicKey(parsedInput.collectionMint), + parsedInput.metadata, + parsedInput.recipient ? new PublicKey(parsedInput.recipient) : undefined ); - return `NFT minted successfully. Mint address: ${result.mint.toString()}`; + + return JSON.stringify({ + status: "success", + message: "NFT minted successfully", + mintAddress: result.mint.toString(), + name: parsedInput.metadata.name, + recipient: parsedInput.recipient || result.mint.toString() + }); } catch (error: any) { - return `Error minting NFT: ${error.message}`; + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR" + }); } } } @@ -124,19 +251,50 @@ export class SolanaTradeTool extends Tool { super(); } - async _call(input: string): Promise { + private validateInput(input: any): void { + if (!input.outputMint || typeof input.outputMint !== "string") { + throw new Error("outputMint is required and must be a string"); + } + if (typeof input.inputAmount !== "number" || input.inputAmount <= 0) { + throw new Error("inputAmount is required and must be a positive number"); + } + if (input.inputMint !== undefined && typeof input.inputMint !== "string") { + throw new Error("inputMint must be a string when provided"); + } + if (input.slippageBps !== undefined && + (typeof input.slippageBps !== "number" || + input.slippageBps < 0 || + input.slippageBps > 10000)) { + throw new Error("slippageBps must be a number between 0 and 10000 when provided"); + } + } + + protected async _call(input: string): Promise { try { - const { outputMint, inputAmount, inputMint, slippageBps } = - JSON.parse(input); + const parsedInput = toJSON(input); + this.validateInput(parsedInput); + const tx = await this.solanaKit.trade( - new PublicKey(outputMint), - inputAmount, - inputMint ? new PublicKey(inputMint) : undefined, - slippageBps + new PublicKey(parsedInput.outputMint), + parsedInput.inputAmount, + parsedInput.inputMint ? new PublicKey(parsedInput.inputMint) : undefined, + parsedInput.slippageBps ); - return `Trade executed successfully. Transaction: ${tx}`; + + return JSON.stringify({ + status: "success", + message: "Trade executed successfully", + transaction: tx, + inputAmount: parsedInput.inputAmount, + inputToken: parsedInput.inputMint || "SOL", + outputToken: parsedInput.outputMint + }); } catch (error: any) { - return `Error executing trade: ${error.message}`; + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR" + }); } } } @@ -149,12 +307,21 @@ export class SolanaRequestFundsTool extends Tool { super(); } - async _call(_input: string): Promise { + protected async _call(_input: string): Promise { try { await this.solanaKit.requestFaucetFunds(); - return "Successfully requested faucet funds"; + + return JSON.stringify({ + status: "success", + message: "Successfully requested faucet funds", + network: this.solanaKit.connection.rpcEndpoint.split("/")[2] + }); } catch (error: any) { - return `Error requesting funds: ${error.message}`; + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR" + }); } } } @@ -168,13 +335,39 @@ export class SolanaRegisterDomainTool extends Tool { super(); } - async _call(input: string): Promise { + private validateInput(input: any): void { + if (!input.name || typeof input.name !== "string") { + throw new Error("name is required and must be a string"); + } + if (input.spaceKB !== undefined && + (typeof input.spaceKB !== "number" || input.spaceKB <= 0)) { + throw new Error("spaceKB must be a positive number when provided"); + } + } + + protected async _call(input: string): Promise { try { - const { name, spaceKB = 1 } = JSON.parse(input); - const tx = await this.solanaKit.registerDomain(name, spaceKB); - return `Domain registered successfully. Transaction: ${tx}`; + const parsedInput = toJSON(input); + this.validateInput(parsedInput); + + const tx = await this.solanaKit.registerDomain( + parsedInput.name, + parsedInput.spaceKB || 1 + ); + + return JSON.stringify({ + status: "success", + message: "Domain registered successfully", + transaction: tx, + domain: `${parsedInput.name}.sol`, + spaceKB: parsedInput.spaceKB || 1 + }); } catch (error: any) { - return `Error registering domain: ${error.message}`; + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR" + }); } } } @@ -195,7 +388,7 @@ export class SolanaGetWalletAddressTool extends Tool { export class SolanaPumpfunTokenLaunchTool extends Tool { name = "solana_launch_pumpfun_token"; description = - "Launch a new token on Pump.fun via Solana Agent Kit. Requires a JSON input with tokenName and tokenTicker, with optional fields for description, twitter, telegram, website, imageUrl, initialLiquiditySOL, and mintAddress."; + "Launch a new token on Pump.fun via Solana Agent Kit. Requires a JSON input with tokenName, tokenTicker, description, imageUrl, and optional fields for twitter, telegram, website, and initialLiquiditySOL."; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -208,6 +401,12 @@ export class SolanaPumpfunTokenLaunchTool extends Tool { if (!input.tokenTicker || typeof input.tokenTicker !== "string") { throw new Error("tokenTicker is required and must be a string"); } + if (!input.description || typeof input.description !== "string") { + throw new Error("description is required and must be a string"); + } + if (!input.imageUrl || typeof input.imageUrl !== "string") { + throw new Error("imageUrl is required and must be a string"); + } if ( input.initialLiquiditySOL !== undefined && typeof input.initialLiquiditySOL !== "number" @@ -223,16 +422,18 @@ export class SolanaPumpfunTokenLaunchTool extends Tool { // Validate the input this.validateInput(parsedInput); + console.log(parsedInput); + // Launch token with validated input await this.solanaKit.launchPumpFunToken( parsedInput.tokenName, parsedInput.tokenTicker, + parsedInput.description, + parsedInput.imageUrl, { - description: parsedInput.description, twitter: parsedInput.twitter, telegram: parsedInput.telegram, website: parsedInput.website, - imageUrl: parsedInput.imageUrl, initialLiquiditySOL: parsedInput.initialLiquiditySOL, } ); @@ -255,18 +456,35 @@ export class SolanaPumpfunTokenLaunchTool extends Tool { export class SolanaCreateImageTool extends Tool { name = "solana_create_image"; - description = "Create an image using OpenAI's DALL-E"; + description = + "Create an image using OpenAI's DALL-E. Input should be a string prompt for the image."; constructor(private solanaKit: SolanaAgentKit) { super(); } - async _call(input: string): Promise { + private validateInput(input: string): void { + if (typeof input !== "string" || input.trim().length === 0) { + throw new Error("Input must be a non-empty string prompt"); + } + } + + protected async _call(input: string): Promise { try { - const result = await create_image(this.solanaKit, input); - return JSON.stringify(result); + this.validateInput(input); + const result = await create_image(this.solanaKit, input.trim()); + + return JSON.stringify({ + status: "success", + message: "Image created successfully", + ...result + }); } catch (error: any) { - return `Error creating image: ${error.message}`; + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR" + }); } } } diff --git a/src/tools/launch_pumpfun_token.ts b/src/tools/launch_pumpfun_token.ts index d777995..e391c28 100644 --- a/src/tools/launch_pumpfun_token.ts +++ b/src/tools/launch_pumpfun_token.ts @@ -5,28 +5,27 @@ import { PumpFunTokenOptions, SolanaAgentKit } from "../index"; async function uploadMetadata( tokenName: string, tokenTicker: string, + description: string, + imageUrl: string, options?: PumpFunTokenOptions ): Promise { // Create metadata object const formData = new URLSearchParams(); formData.append('name', tokenName); - formData.append('symbol', tokenTicker); - formData.append('description', options?.description || `${tokenName} token created via SolanaAgentKit`); - formData.append('showName', 'true'); + formData.append("symbol", tokenTicker); + formData.append("description", description); + + formData.append("showName", "true"); if (options?.twitter) formData.append('twitter', options.twitter); - if (options?.telegram) formData.append('telegram', options.telegram); - if (options?.website) formData.append('website', options.website); + if (options?.telegram) formData.append("telegram", options.telegram); + if (options?.website) formData.append("website", options.website); - let files; - // If imageUrl is provided, fetch and prepare the image - if (options?.imageUrl) { - const imageResponse = await fetch(options.imageUrl); - const imageBlob = await imageResponse.blob(); - files = { - file: new File([imageBlob], 'token_image.png', { type: 'image/png' }) - }; - } + const imageResponse = await fetch(imageUrl); + const imageBlob = await imageResponse.blob(); + const files = { + file: new File([imageBlob], "token_image.png", { type: "image/png" }), + }; // Create form data with both metadata and file const finalFormData = new FormData(); @@ -146,6 +145,8 @@ export async function launchPumpFunToken( agent: SolanaAgentKit, tokenName: string, tokenTicker: string, + description: string, + imageUrl: string, options?: PumpFunTokenOptions ) { try { @@ -158,7 +159,7 @@ export async function launchPumpFunToken( // Upload metadata console.log("Uploading metadata to IPFS..."); - const metadataResponse = await uploadMetadata(tokenName, tokenTicker, options); + const metadataResponse = await uploadMetadata(tokenName, tokenTicker, description, imageUrl, options); console.log("Metadata response:", metadataResponse); // Create token transaction diff --git a/src/types/index.ts b/src/types/index.ts index 4fd92d6..10c2cfc 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -25,11 +25,9 @@ export interface MintCollectionNFTResponse { } export interface PumpFunTokenOptions { - description?: string; twitter?: string; telegram?: string; website?: string; - imageUrl?: string; initialLiquiditySOL?: number; slippageBps?: number; priorityFee?: number; From d057645db3f60562041ace8cb845b0bf4a97b6bf Mon Sep 17 00:00:00 2001 From: aryan Date: Sat, 7 Dec 2024 14:11:48 +0530 Subject: [PATCH 7/9] fix: params --- src/tools/launch_pumpfun_token.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tools/launch_pumpfun_token.ts b/src/tools/launch_pumpfun_token.ts index e391c28..42c9ee0 100644 --- a/src/tools/launch_pumpfun_token.ts +++ b/src/tools/launch_pumpfun_token.ts @@ -139,7 +139,9 @@ async function signAndSendTransaction( * @param agent - SolanaAgentKit instance * @param tokenName - Name of the token * @param tokenTicker - Ticker of the token - * @param options - Optional token options (description, twitter, telegram, website, imageUrl, initialLiquiditySOL, slippageBps, priorityFee) + * @param description - Description of the token + * @param imageUrl - URL of the token image + * @param options - Optional token options (twitter, telegram, website, initialLiquiditySOL, slippageBps, priorityFee) */ export async function launchPumpFunToken( agent: SolanaAgentKit, From b40f65d5c02bcb20381f8c2c273b3f8208eaf241 Mon Sep 17 00:00:00 2001 From: aryan Date: Sun, 8 Dec 2024 01:54:41 +0530 Subject: [PATCH 8/9] fix: pump launch --- package.json | 4 +- pnpm-lock.yaml | 49 +++++++++++++ src/langchain/index.ts | 154 ++++++++++++++++++++++++++--------------- 3 files changed, 150 insertions(+), 57 deletions(-) diff --git a/package.json b/package.json index 4d0e5d8..97600fb 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "scripts": { "build": "tsc", "docs": "typedoc src --out docs", - "test": "ts-node test/index.ts" + "test": "ts-node test/index.ts", + "generate": "ts-node src/utils/keypair.ts" }, "keywords": [], "author": "", @@ -16,6 +17,7 @@ "@bonfida/spl-name-service": "^3.0.7", "@langchain/core": "^0.3.18", "@langchain/groq": "^0.1.2", + "@langchain/langgraph": "^0.2.27", "@langchain/openai": "^0.3.13", "@metaplex-foundation/mpl-core": "^1.1.1", "@metaplex-foundation/mpl-token-metadata": "^3.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 445564c..a019726 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,9 @@ importers: '@langchain/groq': specifier: ^0.1.2 version: 0.1.2(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) + '@langchain/langgraph': + specifier: ^0.2.27 + version: 0.2.27(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) '@langchain/openai': specifier: ^0.3.13 version: 0.3.13(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) @@ -107,6 +110,21 @@ packages: peerDependencies: '@langchain/core': '>=0.2.21 <0.4.0' + '@langchain/langgraph-checkpoint@0.0.13': + resolution: {integrity: sha512-amdmBcNT8a9xP2VwcEWxqArng4gtRDcnVyVI4DsQIo1Aaz8e8+hH17zSwrUF3pt1pIYztngIfYnBOim31mtKMg==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.31 <0.4.0' + + '@langchain/langgraph-sdk@0.0.31': + resolution: {integrity: sha512-oYZWoC3x7vH9bAL1Y30XjtuWnic1j3knXD4BbldsY0chFLxwIT5i6/GMThNy3Oiwb4SB+c6gvaSuxBNDkp7dkw==} + + '@langchain/langgraph@0.2.27': + resolution: {integrity: sha512-7+PlVXlNpswzXzZp/k8O99YBN3zBkUdusfyxISkZ/gdXz1p5RySQEpKQ4EVIZnzBrZ98zZ3FArj4OWOgeF0EeA==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.36 <0.3.0 || >=0.3.9 < 0.4.0' + '@langchain/openai@0.3.13': resolution: {integrity: sha512-lfiauYttb1Vv1GVGDNZlse8475RUsKm9JJ7X9kMVtYoOQnK8xxzMVSrpW7HYLmJokrtVgF6STwRzNJI2gZ3uBw==} engines: {node: '>=18'} @@ -368,6 +386,9 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -969,6 +990,10 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -1107,6 +1132,26 @@ snapshots: transitivePeerDependencies: - encoding + '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8)))': + dependencies: + '@langchain/core': 0.3.18(openai@4.75.0(zod@3.23.8)) + uuid: 10.0.0 + + '@langchain/langgraph-sdk@0.0.31': + dependencies: + '@types/json-schema': 7.0.15 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 9.0.1 + + '@langchain/langgraph@0.2.27(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8)))': + dependencies: + '@langchain/core': 0.3.18(openai@4.75.0(zod@3.23.8)) + '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) + '@langchain/langgraph-sdk': 0.0.31 + uuid: 10.0.0 + zod: 3.23.8 + '@langchain/openai@0.3.13(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8)))': dependencies: '@langchain/core': 0.3.18(openai@4.75.0(zod@3.23.8)) @@ -1478,6 +1523,8 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/json-schema@7.0.15': {} + '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 @@ -2059,6 +2106,8 @@ snapshots: uuid@8.3.2: {} + uuid@9.0.1: {} + v8-compile-cache-lib@3.0.1: {} vfile-message@4.0.2: diff --git a/src/langchain/index.ts b/src/langchain/index.ts index a0615c6..e987552 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -4,6 +4,7 @@ import { PublicKey } from "@solana/web3.js"; import { PumpFunTokenOptions } from "../types"; import { toJSON } from "../utils/toJSON"; import { create_image } from "../tools/create_image"; + export class SolanaBalanceTool extends Tool { name = "solana_balance"; description = @@ -17,17 +18,17 @@ export class SolanaBalanceTool extends Tool { try { const tokenAddress = input ? new PublicKey(input) : undefined; const balance = await this.solanaKit.getBalance(tokenAddress); - + return JSON.stringify({ status: "success", balance: balance, - token: input || "SOL" + token: input || "SOL", }); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -60,22 +61,24 @@ export class SolanaTransferTool extends Tool { this.validateInput(parsedInput); const recipient = new PublicKey(parsedInput.to); - const mintAddress = parsedInput.mint ? new PublicKey(parsedInput.mint) : undefined; + const mintAddress = parsedInput.mint + ? new PublicKey(parsedInput.mint) + : undefined; await this.solanaKit.transfer(recipient, parsedInput.amount, mintAddress); - + return JSON.stringify({ status: "success", message: "Transfer completed successfully", amount: parsedInput.amount, recipient: parsedInput.to, - token: parsedInput.mint || "SOL" + token: parsedInput.mint || "SOL", }); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -91,12 +94,20 @@ export class SolanaDeployTokenTool extends Tool { } private validateInput(input: any): void { - if (input.decimals !== undefined && - (typeof input.decimals !== "number" || input.decimals < 0 || input.decimals > 9)) { - throw new Error("decimals must be a number between 0 and 9 when provided"); + if ( + input.decimals !== undefined && + (typeof input.decimals !== "number" || + input.decimals < 0 || + input.decimals > 9) + ) { + throw new Error( + "decimals must be a number between 0 and 9 when provided" + ); } - if (input.initialSupply !== undefined && - (typeof input.initialSupply !== "number" || input.initialSupply <= 0)) { + if ( + input.initialSupply !== undefined && + (typeof input.initialSupply !== "number" || input.initialSupply <= 0) + ) { throw new Error("initialSupply must be a positive number when provided"); } } @@ -107,18 +118,18 @@ export class SolanaDeployTokenTool extends Tool { this.validateInput(parsedInput); const result = await this.solanaKit.deployToken(parsedInput.decimals); - + return JSON.stringify({ status: "success", message: "Token deployed successfully", mintAddress: result.mint.toString(), - decimals: parsedInput.decimals || 9 + decimals: parsedInput.decimals || 9, }); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -140,11 +151,15 @@ export class SolanaDeployCollectionTool extends Tool { if (!input.uri || typeof input.uri !== "string") { throw new Error("uri is required and must be a string"); } - if (input.royaltyBasisPoints !== undefined && - (typeof input.royaltyBasisPoints !== "number" || - input.royaltyBasisPoints < 0 || - input.royaltyBasisPoints > 10000)) { - throw new Error("royaltyBasisPoints must be a number between 0 and 10000 when provided"); + if ( + input.royaltyBasisPoints !== undefined && + (typeof input.royaltyBasisPoints !== "number" || + input.royaltyBasisPoints < 0 || + input.royaltyBasisPoints > 10000) + ) { + throw new Error( + "royaltyBasisPoints must be a number between 0 and 10000 when provided" + ); } if (input.creators) { if (!Array.isArray(input.creators)) { @@ -152,10 +167,18 @@ export class SolanaDeployCollectionTool extends Tool { } input.creators.forEach((creator: any, index: number) => { if (!creator.address || typeof creator.address !== "string") { - throw new Error(`creator[${index}].address is required and must be a string`); + throw new Error( + `creator[${index}].address is required and must be a string` + ); } - if (typeof creator.percentage !== "number" || creator.percentage < 0 || creator.percentage > 100) { - throw new Error(`creator[${index}].percentage must be a number between 0 and 100`); + if ( + typeof creator.percentage !== "number" || + creator.percentage < 0 || + creator.percentage > 100 + ) { + throw new Error( + `creator[${index}].percentage must be a number between 0 and 100` + ); } }); } @@ -167,18 +190,18 @@ export class SolanaDeployCollectionTool extends Tool { this.validateInput(parsedInput); const result = await this.solanaKit.deployCollection(parsedInput); - + return JSON.stringify({ status: "success", message: "Collection deployed successfully", collectionAddress: result.collectionAddress.toString(), - name: parsedInput.name + name: parsedInput.name, }); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -224,19 +247,19 @@ export class SolanaMintNFTTool extends Tool { parsedInput.metadata, parsedInput.recipient ? new PublicKey(parsedInput.recipient) : undefined ); - + return JSON.stringify({ status: "success", message: "NFT minted successfully", mintAddress: result.mint.toString(), name: parsedInput.metadata.name, - recipient: parsedInput.recipient || result.mint.toString() + recipient: parsedInput.recipient || result.mint.toString(), }); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -261,11 +284,15 @@ export class SolanaTradeTool extends Tool { if (input.inputMint !== undefined && typeof input.inputMint !== "string") { throw new Error("inputMint must be a string when provided"); } - if (input.slippageBps !== undefined && - (typeof input.slippageBps !== "number" || - input.slippageBps < 0 || - input.slippageBps > 10000)) { - throw new Error("slippageBps must be a number between 0 and 10000 when provided"); + if ( + input.slippageBps !== undefined && + (typeof input.slippageBps !== "number" || + input.slippageBps < 0 || + input.slippageBps > 10000) + ) { + throw new Error( + "slippageBps must be a number between 0 and 10000 when provided" + ); } } @@ -277,23 +304,25 @@ export class SolanaTradeTool extends Tool { const tx = await this.solanaKit.trade( new PublicKey(parsedInput.outputMint), parsedInput.inputAmount, - parsedInput.inputMint ? new PublicKey(parsedInput.inputMint) : undefined, + parsedInput.inputMint + ? new PublicKey(parsedInput.inputMint) + : undefined, parsedInput.slippageBps ); - + return JSON.stringify({ status: "success", message: "Trade executed successfully", transaction: tx, inputAmount: parsedInput.inputAmount, inputToken: parsedInput.inputMint || "SOL", - outputToken: parsedInput.outputMint + outputToken: parsedInput.outputMint, }); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -310,17 +339,17 @@ export class SolanaRequestFundsTool extends Tool { protected async _call(_input: string): Promise { try { await this.solanaKit.requestFaucetFunds(); - + return JSON.stringify({ status: "success", message: "Successfully requested faucet funds", - network: this.solanaKit.connection.rpcEndpoint.split("/")[2] + network: this.solanaKit.connection.rpcEndpoint.split("/")[2], }); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -339,8 +368,10 @@ export class SolanaRegisterDomainTool extends Tool { if (!input.name || typeof input.name !== "string") { throw new Error("name is required and must be a string"); } - if (input.spaceKB !== undefined && - (typeof input.spaceKB !== "number" || input.spaceKB <= 0)) { + if ( + input.spaceKB !== undefined && + (typeof input.spaceKB !== "number" || input.spaceKB <= 0) + ) { throw new Error("spaceKB must be a positive number when provided"); } } @@ -351,22 +382,22 @@ export class SolanaRegisterDomainTool extends Tool { this.validateInput(parsedInput); const tx = await this.solanaKit.registerDomain( - parsedInput.name, + parsedInput.name, parsedInput.spaceKB || 1 ); - + return JSON.stringify({ status: "success", message: "Domain registered successfully", transaction: tx, domain: `${parsedInput.name}.sol`, - spaceKB: parsedInput.spaceKB || 1 + spaceKB: parsedInput.spaceKB || 1, }); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -387,14 +418,26 @@ export class SolanaGetWalletAddressTool extends Tool { export class SolanaPumpfunTokenLaunchTool extends Tool { name = "solana_launch_pumpfun_token"; - description = - "Launch a new token on Pump.fun via Solana Agent Kit. Requires a JSON input with tokenName, tokenTicker, description, imageUrl, and optional fields for twitter, telegram, website, and initialLiquiditySOL."; + // description = + // "Launch a new token on Pump.fun via Solana Agent Kit. Requires a JSON input with tokenName, tokenTicker, description, imageUrl, and optional fields for twitter, telegram, website, and initialLiquiditySOL."; + + description = `This tool can be used to launch a token on Pump.fun, + do not use this tool for any other purpose, or for creating SPL tokens. + If the user asks you to chose the parameters, you should generate valid values. + For generating the image, you can use the solana_create_image tool. + + Inputs: + tokenName: string, eg "PumpFun Token", + tokenTicker: string, eg "PUMP", + description: string, eg "PumpFun Token is a token on the Solana blockchain", + imageUrl: string, eg "https://i.imgur.com/UFm07Np_d.png`; constructor(private solanaKit: SolanaAgentKit) { super(); } private validateInput(input: any): void { + console.log(input); if (!input.tokenName || typeof input.tokenName !== "string") { throw new Error("tokenName is required and must be a string"); } @@ -418,11 +461,10 @@ export class SolanaPumpfunTokenLaunchTool extends Tool { protected async _call(input: string): Promise { try { // Parse and normalize input - const parsedInput = toJSON(input); - // Validate the input - this.validateInput(parsedInput); + input = input.trim(); + let parsedInput = JSON.parse(input); - console.log(parsedInput); + this.validateInput(parsedInput); // Launch token with validated input await this.solanaKit.launchPumpFunToken( @@ -473,17 +515,17 @@ export class SolanaCreateImageTool extends Tool { try { this.validateInput(input); const result = await create_image(this.solanaKit, input.trim()); - + return JSON.stringify({ status: "success", message: "Image created successfully", - ...result + ...result, }); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } From 84a9b697a0126e518057f4c819cf79cc0e1d6271 Mon Sep 17 00:00:00 2001 From: aryan Date: Sun, 8 Dec 2024 03:03:17 +0530 Subject: [PATCH 9/9] fix: prompts --- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 11 +-- docs/functions/createSolanaTools.html | 2 +- docs/interfaces/CollectionDeployment.html | 4 +- docs/interfaces/CollectionOptions.html | 4 +- docs/interfaces/Creator.html | 4 +- .../LuloAccountDetailsResponse.html | 4 +- .../interfaces/MintCollectionNFTResponse.html | 4 +- docs/interfaces/PumpFunTokenOptions.html | 6 +- docs/interfaces/PumpfunLaunchResponse.html | 4 +- docs/types/LuloDepositAssetMint.html | 2 +- src/langchain/index.ts | 90 ++++++++----------- src/tools/trade.ts | 8 +- 13 files changed, 65 insertions(+), 80 deletions(-) diff --git a/docs/assets/search.js b/docs/assets/search.js index 7948610..73c468a 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index 552e3a6..3b6a544 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,8 +1,9 @@ SolanaAgentKit | solana-agent-kit

        Class SolanaAgentKit

        Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, and trading

        SolanaAgentKit

        -

        Constructors

        Constructors

        Properties

        Methods

        deployCollection @@ -14,7 +15,7 @@ Provides a unified interface for token operations, NFT management, and tradingrequestFaucetFunds trade transfer -

        Constructors

        Properties

        connection: Connection

        Solana RPC connection

        -
        wallet: Keypair

        Wallet keypair for signing transactions

        -
        wallet_address: PublicKey

        Public key of the wallet

        -

        Methods

        • Parameters

          • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS

          Returns Promise<{
              mint: PublicKey;
          }>

        • Parameters

          • Optionaltoken_address: PublicKey

          Returns Promise<null | number>

        • Parameters

          Returns Promise<{
              metadataUri: any;
              mint: string;
              signature: string;
          }>

        • Parameters

          • collectionMint: PublicKey
          • metadata: {
                creators?: {
                    address: string;
                    share: number;
                }[];
                name: string;
                sellerFeeBasisPoints?: number;
                symbol: string;
                uri: string;
            }
            • Optionalcreators?: {
                  address: string;
                  share: number;
              }[]
            • name: string
            • OptionalsellerFeeBasisPoints?: number
            • symbol: string
            • uri: string
          • Optionalrecipient: PublicKey

          Returns Promise<MintCollectionNFTResponse>

        • Parameters

          • name: string
          • OptionalspaceKB: number

          Returns Promise<string>

        • Returns Promise<string>

        • Parameters

          • outputMint: PublicKey
          • inputAmount: number
          • OptionalinputMint: PublicKey
          • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

          Returns Promise<string>

        • Parameters

          • to: PublicKey
          • amount: number
          • Optionalmint: PublicKey

          Returns Promise<string>

        +

        Constructors

        • Parameters

          • private_key: string
          • rpc_url: string = "https://api.mainnet-beta.solana.com"
          • openai_api_key: string

          Returns SolanaAgentKit

        Properties

        connection: Connection

        Solana RPC connection

        +
        openai_api_key: string
        wallet: Keypair

        Wallet keypair for signing transactions

        +
        wallet_address: PublicKey

        Public key of the wallet

        +

        Methods

        • Parameters

          • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS

          Returns Promise<{
              mint: PublicKey;
          }>

        • Parameters

          • Optionaltoken_address: PublicKey

          Returns Promise<null | number>

        • Parameters

          • tokenName: string
          • tokenTicker: string
          • description: string
          • imageUrl: string
          • Optionaloptions: PumpFunTokenOptions

          Returns Promise<{
              metadataUri: any;
              mint: string;
              signature: string;
          }>

        • Parameters

          • collectionMint: PublicKey
          • metadata: {
                creators?: {
                    address: string;
                    share: number;
                }[];
                name: string;
                sellerFeeBasisPoints?: number;
                symbol: string;
                uri: string;
            }
            • Optionalcreators?: {
                  address: string;
                  share: number;
              }[]
            • name: string
            • OptionalsellerFeeBasisPoints?: number
            • symbol: string
            • uri: string
          • Optionalrecipient: PublicKey

          Returns Promise<MintCollectionNFTResponse>

        • Parameters

          • name: string
          • OptionalspaceKB: number

          Returns Promise<string>

        • Returns Promise<string>

        • Parameters

          • outputMint: PublicKey
          • inputAmount: number
          • OptionalinputMint: PublicKey
          • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

          Returns Promise<string>

        • Parameters

          • to: PublicKey
          • amount: number
          • Optionalmint: PublicKey

          Returns Promise<string>

        diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index f921005..0689a13 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

        Function createSolanaTools

        • Parameters

          Returns (
              | SolanaBalanceTool
              | SolanaTransferTool
              | SolanaDeployTokenTool
              | SolanaDeployCollectionTool
              | SolanaMintNFTTool
              | SolanaTradeTool
              | SolanaRequestFundsTool
              | SolanaRegisterDomainTool
              | SolanaGetWalletAddressTool
              | SolanaPumpfunTokenLaunchTool)[]

        +createSolanaTools | solana-agent-kit

        Function createSolanaTools

        • Parameters

          Returns (
              | SolanaBalanceTool
              | SolanaTransferTool
              | SolanaDeployTokenTool
              | SolanaDeployCollectionTool
              | SolanaMintNFTTool
              | SolanaTradeTool
              | SolanaRequestFundsTool
              | SolanaRegisterDomainTool
              | SolanaGetWalletAddressTool
              | SolanaPumpfunTokenLaunchTool
              | SolanaCreateImageTool)[]

        diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index f964980..56b0948 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

        Interface CollectionDeployment

        interface CollectionDeployment {
            collectionAddress: PublicKey;
            signature: Uint8Array;
        }

        Properties

        collectionAddress +CollectionDeployment | solana-agent-kit

        Interface CollectionDeployment

        interface CollectionDeployment {
            collectionAddress: PublicKey;
            signature: Uint8Array;
        }

        Properties

        collectionAddress: PublicKey
        signature: Uint8Array
        +

        Properties

        collectionAddress: PublicKey
        signature: Uint8Array
        diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index e6ff08c..69c5eab 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

        Interface CollectionOptions

        interface CollectionOptions {
            creators?: Creator[];
            name: string;
            royaltyBasisPoints?: number;
            uri: string;
        }

        Properties

        creators? +CollectionOptions | solana-agent-kit

        Interface CollectionOptions

        interface CollectionOptions {
            creators?: Creator[];
            name: string;
            royaltyBasisPoints?: number;
            uri: string;
        }

        Properties

        creators?: Creator[]
        name: string
        royaltyBasisPoints?: number
        uri: string
        +

        Properties

        creators?: Creator[]
        name: string
        royaltyBasisPoints?: number
        uri: string
        diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index a93a8c0..40ecce7 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

        Interface Creator

        interface Creator {
            address: string;
            percentage: number;
        }

        Properties

        address +Creator | solana-agent-kit

        Interface Creator

        interface Creator {
            address: string;
            percentage: number;
        }

        Properties

        Properties

        address: string
        percentage: number
        +

        Properties

        address: string
        percentage: number
        diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index 1278cfd..c112461 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ LuloAccountDetailsResponse | solana-agent-kit

        Interface LuloAccountDetailsResponse

        Lulo Account Details response format

        -
        interface LuloAccountDetailsResponse {
            interestEarned: number;
            realtimeApy: number;
            settings: {
                allowedProtocols: null | string;
                homebase: null | string;
                minimumRate: string;
                owner: string;
            };
            totalValue: number;
        }

        Properties

        interface LuloAccountDetailsResponse {
            interestEarned: number;
            realtimeApy: number;
            settings: {
                allowedProtocols: null | string;
                homebase: null | string;
                minimumRate: string;
                owner: string;
            };
            totalValue: number;
        }

        Properties

        interestEarned: number
        realtimeApy: number
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        }
        totalValue: number
        +

        Properties

        interestEarned: number
        realtimeApy: number
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        }
        totalValue: number
        diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index eb8841b..ecc3c1d 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

        Interface MintCollectionNFTResponse

        interface MintCollectionNFTResponse {
            metadata: PublicKey;
            mint: PublicKey;
        }

        Properties

        metadata +MintCollectionNFTResponse | solana-agent-kit

        Interface MintCollectionNFTResponse

        interface MintCollectionNFTResponse {
            metadata: PublicKey;
            mint: PublicKey;
        }

        Properties

        Properties

        metadata: PublicKey
        mint: PublicKey
        +

        Properties

        metadata: PublicKey
        mint: PublicKey
        diff --git a/docs/interfaces/PumpFunTokenOptions.html b/docs/interfaces/PumpFunTokenOptions.html index e74c17f..8c0e69e 100644 --- a/docs/interfaces/PumpFunTokenOptions.html +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -1,9 +1,7 @@ -PumpFunTokenOptions | solana-agent-kit

        Interface PumpFunTokenOptions

        interface PumpFunTokenOptions {
            description?: string;
            imageUrl?: string;
            initialLiquiditySOL?: number;
            priorityFee?: number;
            slippageBps?: number;
            telegram?: string;
            twitter?: string;
            website?: string;
        }

        Properties

        description? -imageUrl? -initialLiquiditySOL? +PumpFunTokenOptions | solana-agent-kit

        Interface PumpFunTokenOptions

        interface PumpFunTokenOptions {
            initialLiquiditySOL?: number;
            priorityFee?: number;
            slippageBps?: number;
            telegram?: string;
            twitter?: string;
            website?: string;
        }

        Properties

        description?: string
        imageUrl?: string
        initialLiquiditySOL?: number
        priorityFee?: number
        slippageBps?: number
        telegram?: string
        twitter?: string
        website?: string
        +

        Properties

        initialLiquiditySOL?: number
        priorityFee?: number
        slippageBps?: number
        telegram?: string
        twitter?: string
        website?: string
        diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html index d6968bf..c5b14ca 100644 --- a/docs/interfaces/PumpfunLaunchResponse.html +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -1,5 +1,5 @@ -PumpfunLaunchResponse | solana-agent-kit

        Interface PumpfunLaunchResponse

        interface PumpfunLaunchResponse {
            error?: string;
            metadataUri?: string;
            mint: string;
            signature: string;
        }

        Properties

        error? +PumpfunLaunchResponse | solana-agent-kit

        Interface PumpfunLaunchResponse

        interface PumpfunLaunchResponse {
            error?: string;
            metadataUri?: string;
            mint: string;
            signature: string;
        }

        Properties

        error?: string
        metadataUri?: string
        mint: string
        signature: string
        +

        Properties

        error?: string
        metadataUri?: string
        mint: string
        signature: string
        diff --git a/docs/types/LuloDepositAssetMint.html b/docs/types/LuloDepositAssetMint.html index d38defd..1015fda 100644 --- a/docs/types/LuloDepositAssetMint.html +++ b/docs/types/LuloDepositAssetMint.html @@ -1,2 +1,2 @@ LuloDepositAssetMint | solana-agent-kit

        Type Alias LuloDepositAssetMint

        LuloDepositAssetMint: typeof TOKENS[keyof typeof TOKENS]

        Mint addresses of supported tokens for lending on Lulo

        -
        +
        diff --git a/src/langchain/index.ts b/src/langchain/index.ts index e987552..da063c1 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1,14 +1,18 @@ import { Tool } from "langchain/tools"; import { SolanaAgentKit } from "../index"; import { PublicKey } from "@solana/web3.js"; -import { PumpFunTokenOptions } from "../types"; import { toJSON } from "../utils/toJSON"; import { create_image } from "../tools/create_image"; export class SolanaBalanceTool extends Tool { name = "solana_balance"; - description = - "Get the balance of a Solana wallet or token account. Input can be a token address or empty for SOL balance."; + description = `Get the balance of a Solana wallet or token account. + + If you want to get the balance of your wallet, you don't need to provide the tokenAddress. + If no tokenAddress is provided, the balance will be in SOL. + + Inputs: + tokenAddress: string, eg "So11111111111111111111111111111111111111112" (optional)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -36,36 +40,32 @@ export class SolanaBalanceTool extends Tool { export class SolanaTransferTool extends Tool { name = "solana_transfer"; - description = - "Transfer tokens or SOL to another address. Input should be JSON string with: {to: string, amount: number, mint?: string}"; + description = `Transfer tokens or SOL to another address ( also called as wallet address ). + + Inputs ( input is a JSON string ): + to: string, eg "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk" (required) + amount: number, eg 1 (required) + mint?: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (optional)`; constructor(private solanaKit: SolanaAgentKit) { super(); } - private validateInput(input: any): void { - if (!input.to || typeof input.to !== "string") { - throw new Error("to address is required and must be a string"); - } - if (typeof input.amount !== "number" || input.amount <= 0) { - throw new Error("amount is required and must be a positive number"); - } - if (input.mint !== undefined && typeof input.mint !== "string") { - throw new Error("mint must be a string when provided"); - } - } - protected async _call(input: string): Promise { try { - const parsedInput = toJSON(input); - this.validateInput(parsedInput); + const parsedInput = JSON.parse(input); + console.log(parsedInput); const recipient = new PublicKey(parsedInput.to); const mintAddress = parsedInput.mint ? new PublicKey(parsedInput.mint) : undefined; - await this.solanaKit.transfer(recipient, parsedInput.amount, mintAddress); + const tx = await this.solanaKit.transfer( + recipient, + parsedInput.amount, + mintAddress + ); return JSON.stringify({ status: "success", @@ -73,6 +73,7 @@ export class SolanaTransferTool extends Tool { amount: parsedInput.amount, recipient: parsedInput.to, token: parsedInput.mint || "SOL", + transaction: tx, }); } catch (error: any) { return JSON.stringify({ @@ -267,46 +268,28 @@ export class SolanaMintNFTTool extends Tool { export class SolanaTradeTool extends Tool { name = "solana_trade"; - description = - "Swap tokens using Jupiter Exchange. Input should be JSON with: {outputMint: string, inputAmount: number, inputMint?: string, slippageBps?: number}"; + description = `This tool can be used to swap tokens to another token ( It uses Jupiter Exchange ). + + Inputs ( input is a JSON string ): + outputMint: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (required) + inputAmount: number, eg 1 or 0.01 (required) + inputMint?: string, eg "So11111111111111111111111111111111111111112" (optional) + slippageBps?: number, eg 100 (optional)`; constructor(private solanaKit: SolanaAgentKit) { super(); } - private validateInput(input: any): void { - if (!input.outputMint || typeof input.outputMint !== "string") { - throw new Error("outputMint is required and must be a string"); - } - if (typeof input.inputAmount !== "number" || input.inputAmount <= 0) { - throw new Error("inputAmount is required and must be a positive number"); - } - if (input.inputMint !== undefined && typeof input.inputMint !== "string") { - throw new Error("inputMint must be a string when provided"); - } - if ( - input.slippageBps !== undefined && - (typeof input.slippageBps !== "number" || - input.slippageBps < 0 || - input.slippageBps > 10000) - ) { - throw new Error( - "slippageBps must be a number between 0 and 10000 when provided" - ); - } - } - protected async _call(input: string): Promise { try { - const parsedInput = toJSON(input); - this.validateInput(parsedInput); + const parsedInput = JSON.parse(input); const tx = await this.solanaKit.trade( new PublicKey(parsedInput.outputMint), parsedInput.inputAmount, parsedInput.inputMint ? new PublicKey(parsedInput.inputMint) - : undefined, + : new PublicKey("So11111111111111111111111111111111111111112"), parsedInput.slippageBps ); @@ -319,6 +302,7 @@ export class SolanaTradeTool extends Tool { outputToken: parsedInput.outputMint, }); } catch (error: any) { + console.log(error); return JSON.stringify({ status: "error", message: error.message, @@ -357,8 +341,12 @@ export class SolanaRequestFundsTool extends Tool { export class SolanaRegisterDomainTool extends Tool { name = "solana_register_domain"; - description = - "Register a .sol domain name. Input should be JSON with: {name: string, spaceKB?: number}"; + description = `Register a .sol domain name for your wallet. + + Inputs: + name: string, eg "pumpfun.sol" (required) + spaceKB: number, eg 1 (optional, default is 1) + `; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -405,7 +393,7 @@ export class SolanaRegisterDomainTool extends Tool { export class SolanaGetWalletAddressTool extends Tool { name = "solana_get_wallet_address"; - description = "Get the wallet address of the agent"; + description = `Get the wallet address of the agent`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -418,8 +406,6 @@ export class SolanaGetWalletAddressTool extends Tool { export class SolanaPumpfunTokenLaunchTool extends Tool { name = "solana_launch_pumpfun_token"; - // description = - // "Launch a new token on Pump.fun via Solana Agent Kit. Requires a JSON input with tokenName, tokenTicker, description, imageUrl, and optional fields for twitter, telegram, website, and initialLiquiditySOL."; description = `This tool can be used to launch a token on Pump.fun, do not use this tool for any other purpose, or for creating SPL tokens. diff --git a/src/tools/trade.ts b/src/tools/trade.ts index 75dab8d..d31055d 100644 --- a/src/tools/trade.ts +++ b/src/tools/trade.ts @@ -1,4 +1,4 @@ -import { VersionedTransaction, PublicKey } from "@solana/web3.js"; +import { VersionedTransaction, PublicKey, LAMPORTS_PER_SOL } from "@solana/web3.js"; import { SolanaAgentKit } from "../index"; import { TOKENS, DEFAULT_OPTIONS, JUP_API } from "../constants"; @@ -20,12 +20,13 @@ export async function trade( ): Promise { try { // Get quote for the swap + console.log(inputMint.toString(), outputMint.toString(), inputAmount, slippageBps); const quoteResponse = await ( await fetch( `${JUP_API}/quote?` + `inputMint=${inputMint.toString()}` + `&outputMint=${outputMint.toString()}` + - `&amount=${inputAmount}` + + `&amount=${inputAmount * LAMPORTS_PER_SOL}` + `&slippageBps=${slippageBps}` + `&onlyDirectRoutes=true` + `&maxAccounts=20`, @@ -48,11 +49,10 @@ export async function trade( }), }) ).json(); - // Deserialize transaction const swapTransactionBuf = Buffer.from(swapTransaction, "base64"); - const transaction = VersionedTransaction.deserialize(swapTransactionBuf); + const transaction = VersionedTransaction.deserialize(swapTransactionBuf); // Sign and send transaction transaction.sign([agent.wallet]); const signature = await agent.connection.sendTransaction(transaction);