diff --git a/typescript/.changeset/upset-parrots-visit.md b/typescript/.changeset/upset-parrots-visit.md new file mode 100644 index 000000000..f22a09db6 --- /dev/null +++ b/typescript/.changeset/upset-parrots-visit.md @@ -0,0 +1,5 @@ +--- +"@coinbase/agentkit": patch +--- + +Added erc8004 action providers diff --git a/typescript/agentkit/package.json b/typescript/agentkit/package.json index 58423bba1..aefb25a54 100644 --- a/typescript/agentkit/package.json +++ b/typescript/agentkit/package.json @@ -53,14 +53,15 @@ "@solana/spl-token": "^0.4.12", "@solana/web3.js": "^1.98.1", "@vaultsfyi/sdk": "^2.1.9", - "@x402/evm": "^2.2.0", - "@x402/fetch": "^2.2.0", - "@x402/svm": "^2.2.0", + "@x402/evm": "2.2.0", + "@x402/fetch": "2.2.0", + "@x402/svm": "2.2.0", "@zerodev/ecdsa-validator": "^5.4.5", "@zerodev/intent": "^0.0.24", "@zerodev/sdk": "^5.4.28", "@zoralabs/coins-sdk": "0.2.8", "@zoralabs/protocol-deployments": "0.6.1", + "agent0-sdk": "^1.5.3", "bs58": "^4.0.1", "canonicalize": "^2.1.0", "clanker-sdk": "^4.1.18", diff --git a/typescript/agentkit/src/action-providers/erc8004/constants.ts b/typescript/agentkit/src/action-providers/erc8004/constants.ts new file mode 100644 index 000000000..7531f79fe --- /dev/null +++ b/typescript/agentkit/src/action-providers/erc8004/constants.ts @@ -0,0 +1,47 @@ +import { NETWORK_ID_TO_CHAIN_ID, Network } from "../../network"; + +// Supported network IDs for ERC-8004 - must match agent0 SDK (contracts.ts DEFAULT_REGISTRIES) +export const SUPPORTED_NETWORK_IDS = [ + "ethereum-mainnet", // 1 + "ethereum-sepolia", // 11155111 + "base-mainnet", // 8453 + "base-sepolia", // 84532 + "polygon-mainnet", // 137 +] as const; + +export type SupportedNetworkId = (typeof SUPPORTED_NETWORK_IDS)[number]; + +/** + * Gets the chain ID from a network object + * + * @param network - The network object + * @returns The chain ID as a number + * @throws Error if network is not supported + */ +export function getChainIdFromNetwork(network: Network): number { + const networkId = network.networkId; + if (!networkId) { + throw new Error("Network ID is not defined"); + } + + const chainIdStr = NETWORK_ID_TO_CHAIN_ID[networkId]; + if (!chainIdStr) { + throw new Error( + `Network ${networkId} is not supported. Supported networks: ${SUPPORTED_NETWORK_IDS.join(", ")}`, + ); + } + + return parseInt(chainIdStr, 10); +} + +/** + * Checks if a network is supported for ERC-8004 + * + * @param network - The network to check + * @returns True if the network is supported + */ +export function isNetworkSupported(network: Network): boolean { + const networkId = network.networkId; + if (!networkId) return false; + return SUPPORTED_NETWORK_IDS.includes(networkId as SupportedNetworkId); +} diff --git a/typescript/agentkit/src/action-providers/erc8004/erc8004IdentityActionProvider.test.ts b/typescript/agentkit/src/action-providers/erc8004/erc8004IdentityActionProvider.test.ts new file mode 100644 index 000000000..57b7d6e7e --- /dev/null +++ b/typescript/agentkit/src/action-providers/erc8004/erc8004IdentityActionProvider.test.ts @@ -0,0 +1,813 @@ +import { + erc8004IdentityActionProvider, + ERC8004IdentityActionProvider, +} from "./erc8004IdentityActionProvider"; +import { + RegisterAgentSchema, + UpdateAgentMetadataSchema, + SearchAgentsSchema, + GetAgentInfoSchema, +} from "./identitySchemas"; +import { EvmWalletProvider } from "../../wallet-providers"; +import { getAgent0SDK } from "./utils"; + +// Configurable reject reason for updateAgentMetadata Agent mock (set in tests before calling) +let updateAgentMockRejectReason: string | null = null; + +// Mock agent0-sdk (ESM-only) before loading the identity provider +jest.mock("agent0-sdk", () => { + /** Mock Agent class simulating agent0-sdk Agent behavior for tests. */ + const MockAgent = class { + updateInfo = jest.fn(); + getRegistrationFile = jest.fn(() => this.regFile); + registerIPFS = jest.fn().mockImplementation(() => { + if (updateAgentMockRejectReason) { + return Promise.reject(new Error(updateAgentMockRejectReason)); + } + return Promise.resolve({ + hash: "0xhash", + waitMined: () => Promise.resolve({ result: { agentURI: "ipfs://Qm" } }), + }); + }); + setAgentURI = jest.fn().mockImplementation(() => { + if (updateAgentMockRejectReason) { + return Promise.reject(new Error(updateAgentMockRejectReason)); + } + return Promise.resolve({ + hash: "0xhash", + waitMined: () => Promise.resolve({}), + }); + }); + + /** + * Creates a new MockAgent instance. + * + * @param _sdk - The SDK instance (unused). + * @param regFile - The registration file object. + */ + constructor( + _sdk: unknown, + private regFile: Record, + ) {} + }; + return { + Agent: MockAgent, + IDENTITY_REGISTRY_ABI: [], + }; +}); + +const MOCK_AGENT_ID = "123"; +const MOCK_ADDRESS = "0x1234567890123456789012345678901234567890"; +const _MOCK_URI = "ipfs://QmTest123456789"; +const _TRANSACTION_HASH = "0xabcdef1234567890"; + +describe("Identity Schema Validation", () => { + describe("RegisterAgentSchema", () => { + it("should successfully parse empty input (all fields optional)", () => { + const validInput = {}; + const result = RegisterAgentSchema.safeParse(validInput); + + expect(result.success).toBe(true); + expect(result.data).toEqual({}); + }); + + it("should successfully parse input with all fields", () => { + const validInput = { + name: "Test Agent", + description: "A test agent", + image: "https://example.com/image.png", + }; + + const result = RegisterAgentSchema.safeParse(validInput); + + expect(result.success).toBe(true); + expect(result.data).toEqual(validInput); + }); + + it("should successfully parse input with only name", () => { + const validInput = { + name: "Test Agent", + }; + + const result = RegisterAgentSchema.safeParse(validInput); + + expect(result.success).toBe(true); + }); + + it("should fail parsing empty name", () => { + const invalidInput = { + name: "", + }; + + const result = RegisterAgentSchema.safeParse(invalidInput); + + expect(result.success).toBe(false); + }); + + it("should fail parsing name too long", () => { + const invalidInput = { + name: "a".repeat(101), + }; + + const result = RegisterAgentSchema.safeParse(invalidInput); + + expect(result.success).toBe(false); + }); + + it("should fail parsing description too long", () => { + const invalidInput = { + name: "Test Agent", + description: "a".repeat(501), + }; + + const result = RegisterAgentSchema.safeParse(invalidInput); + + expect(result.success).toBe(false); + }); + }); + + describe("UpdateAgentMetadataSchema", () => { + it("should successfully parse valid input with all fields", () => { + const validInput = { + agentId: MOCK_AGENT_ID, + name: "Updated Agent", + description: "Updated description", + image: "https://example.com/new-image.png", + }; + + const result = UpdateAgentMetadataSchema.safeParse(validInput); + + expect(result.success).toBe(true); + expect(result.data).toEqual(validInput); + }); + + it("should successfully parse input with only agentId (updates nothing)", () => { + const validInput = { + agentId: MOCK_AGENT_ID, + }; + + const result = UpdateAgentMetadataSchema.safeParse(validInput); + + expect(result.success).toBe(true); + }); + + it("should successfully parse input with partial fields", () => { + const validInput = { + agentId: MOCK_AGENT_ID, + description: "New description only", + }; + + const result = UpdateAgentMetadataSchema.safeParse(validInput); + + expect(result.success).toBe(true); + }); + + it("should fail parsing empty name", () => { + const invalidInput = { + agentId: MOCK_AGENT_ID, + name: "", + }; + + const result = UpdateAgentMetadataSchema.safeParse(invalidInput); + + expect(result.success).toBe(false); + }); + + it("should fail parsing without agentId", () => { + const invalidInput = { + name: "Test Agent", + }; + + const result = UpdateAgentMetadataSchema.safeParse(invalidInput); + + expect(result.success).toBe(false); + }); + }); + + describe("SearchAgentsSchema", () => { + it("should successfully parse empty input (all fields optional)", () => { + const validInput = {}; + const result = SearchAgentsSchema.safeParse(validInput); + + expect(result.success).toBe(true); + // limit has default(10) so empty input produces { limit: 10 } + expect(result.data).toEqual({ limit: 10 }); + }); + + it("should successfully parse input with all filters", () => { + const validInput = { + keyword: "financial data analysis", + name: "AI", + description: "financial", + require: ["mcp", "active", "x402"], + minReputation: 70, + maxReputation: 100, + reputationTag: "enterprise", + sort: "averageValue:desc", + limit: 10, + offset: 5, + }; + + const result = SearchAgentsSchema.safeParse(validInput); + + expect(result.success).toBe(true); + expect(result.data).toMatchObject(validInput); + }); + + it("should strip unknown fields like networkId (schema does not validate it)", () => { + const inputWithUnknownField = { + networkId: "unsupported-network", + }; + + const result = SearchAgentsSchema.safeParse(inputWithUnknownField); + + expect(result.success).toBe(true); + // networkId is not in schema, so it gets stripped; limit defaults to 10 + expect(result.data).toEqual({ limit: 10 }); + }); + + it("should successfully parse input with only keyword", () => { + const validInput = { + keyword: "agent that can analyze trading data", + }; + + const result = SearchAgentsSchema.safeParse(validInput); + + expect(result.success).toBe(true); + }); + + it("should successfully parse input with only name filter", () => { + const validInput = { + name: "Trading Bot", + }; + + const result = SearchAgentsSchema.safeParse(validInput); + + expect(result.success).toBe(true); + }); + + it("should fail parsing limit below minimum", () => { + const invalidInput = { + limit: 0, + }; + + const result = SearchAgentsSchema.safeParse(invalidInput); + + expect(result.success).toBe(false); + }); + + it("should fail parsing limit above maximum", () => { + const invalidInput = { + limit: 100, + }; + + const result = SearchAgentsSchema.safeParse(invalidInput); + + expect(result.success).toBe(false); + }); + + it("should fail parsing negative offset", () => { + const invalidInput = { + offset: -1, + }; + + const result = SearchAgentsSchema.safeParse(invalidInput); + + expect(result.success).toBe(false); + }); + }); + + describe("GetAgentInfoSchema", () => { + it("should successfully parse valid input with simple agentId", () => { + const validInput = { agentId: MOCK_AGENT_ID }; + const result = GetAgentInfoSchema.safeParse(validInput); + + expect(result.success).toBe(true); + expect(result.data).toEqual(validInput); + }); + + it("should successfully parse valid input with chainId:agentId format", () => { + const validInput = { agentId: "84532:123" }; + const result = GetAgentInfoSchema.safeParse(validInput); + + expect(result.success).toBe(true); + expect(result.data).toEqual(validInput); + }); + + it("should fail parsing empty input", () => { + const emptyInput = {}; + const result = GetAgentInfoSchema.safeParse(emptyInput); + + expect(result.success).toBe(false); + }); + }); +}); + +describe("Register Agent Action", () => { + let mockWallet: jest.Mocked; + const { mockAgent, mockSdk } = createRegisterAgentMocks(); + + beforeEach(() => { + mockWallet = { + sendTransaction: jest.fn(), + waitForTransactionReceipt: jest.fn(), + getName: jest.fn().mockReturnValue("evm_wallet_provider"), + getNetwork: jest.fn().mockReturnValue({ + protocolFamily: "evm", + networkId: "base-sepolia", + }), + getAddress: jest.fn().mockReturnValue(MOCK_ADDRESS), + } as unknown as jest.Mocked; + + mockGetAgent0SDK.mockImplementation((_w, jwt) => { + if (!jwt) throw new Error("PINATA_JWT is required"); + return mockSdk as never; + }); + }); + + it("should fail without Pinata JWT", async () => { + const providerWithoutJwt = erc8004IdentityActionProvider(); + + const response = await providerWithoutJwt.registerAgent(mockWallet, {}); + + expect(response).toContain("Error: PINATA_JWT is required"); + }); + + it("should handle error when registration fails", async () => { + mockAgent.registerIPFS.mockRejectedValueOnce(new Error("Transaction failed")); + + const actionProvider = erc8004IdentityActionProvider({ pinataJwt: "test-jwt" }); + + const response = await actionProvider.registerAgent(mockWallet, {}); + + expect(mockSdk.createAgent).toHaveBeenCalled(); + expect(response).toContain("Error during registration"); + }); +}); + +describe("Update Agent Metadata Action", () => { + let mockWallet: jest.Mocked; + const mockUpdateSdk = { + loadAgent: jest.fn().mockRejectedValue(new Error("loadAgent fails for data URIs")), + identityRegistryAddress: jest + .fn() + .mockReturnValue("0x1234567890123456789012345678901234567890"), + }; + + beforeEach(() => { + mockWallet = { + sendTransaction: jest.fn(), + waitForTransactionReceipt: jest.fn(), + readContract: jest.fn(), + getName: jest.fn().mockReturnValue("evm_wallet_provider"), + getNetwork: jest.fn().mockReturnValue({ + protocolFamily: "evm", + networkId: "base-sepolia", + }), + } as unknown as jest.Mocked; + + updateAgentMockRejectReason = null; + mockGetAgent0SDK.mockImplementation((_w, jwt) => { + if (!jwt) throw new Error("PINATA_JWT is required"); + return mockUpdateSdk as never; + }); + }); + + it("should fail without Pinata JWT", async () => { + const providerWithoutJwt = erc8004IdentityActionProvider(); + + const args = { + agentId: MOCK_AGENT_ID, + description: "New description", + }; + + const response = await providerWithoutJwt.updateAgentMetadata(mockWallet, args); + + expect(response).toContain("Error: PINATA_JWT is required"); + }); + + it("should fail when agent has no URI set", async () => { + updateAgentMockRejectReason = "Agent has no registration URI set"; + mockWallet.readContract.mockResolvedValue(null); + + const actionProvider = erc8004IdentityActionProvider({ pinataJwt: "test-jwt" }); + + const args = { + agentId: MOCK_AGENT_ID, + description: "New description", + }; + + const response = await actionProvider.updateAgentMetadata(mockWallet, args); + + expect(response).toContain("has no registration URI set"); + }); + + it("should handle error when updating metadata fails", async () => { + mockWallet.readContract.mockRejectedValue(new Error("Read failed")); + + const actionProvider = erc8004IdentityActionProvider({ pinataJwt: "test-jwt" }); + + const args = { + agentId: MOCK_AGENT_ID, + description: "New description", + }; + + const response = await actionProvider.updateAgentMetadata(mockWallet, args); + + expect(response).toContain("Error updating agent metadata"); + }); +}); + +// Mock the utils module (avoid loading real utils which imports the ESM-only agent0-sdk) +jest.mock("./utils", () => { + const { Agent } = jest.requireMock("agent0-sdk"); + return { + getAgent0SDK: jest.fn(), + ipfsToHttpUrl: jest.fn((uri: string) => uri), + loadOrHydrateAgent: jest + .fn() + .mockImplementation( + async ( + sdk: { loadAgent: (id: string) => Promise }, + walletProvider: { readContract: (args: unknown) => Promise }, + fullAgentId: string, + ) => { + try { + return await sdk.loadAgent(fullAgentId); + } catch { + // fall through to readContract path + } + await walletProvider.readContract({}); + return new Agent(null, {}); + }, + ), + }; +}); + +const mockGetAgent0SDK = getAgent0SDK as jest.MockedFunction; + +/** + * Creates mock agent and SDK objects for use in registerAgent tests. + * + * @returns An object containing mockAgent and mockSdk. + */ +function createRegisterAgentMocks() { + const mockHandle = { + hash: "0xhash", + waitMined: jest.fn().mockResolvedValue({ + result: { agentId: "84532:1", agentURI: "ipfs://Qm", name: "Agent" }, + }), + }; + const mockAgent = { + registerIPFS: jest.fn().mockResolvedValue(mockHandle), + registerHTTP: jest.fn().mockResolvedValue(mockHandle), + setAgentURI: jest.fn().mockResolvedValue(mockHandle), + getRegistrationFile: jest.fn(() => ({ name: "Agent", description: "" })), + }; + const mockSdk = { + createAgent: jest.fn().mockReturnValue(mockAgent), + }; + return { mockAgent, mockSdk }; +} + +describe("Search Agents Action", () => { + let mockWallet: jest.Mocked; + let actionProvider: ERC8004IdentityActionProvider; + let mockSdk: { searchAgents: jest.Mock }; + + beforeEach(() => { + mockSdk = { + searchAgents: jest.fn(), + }; + + mockWallet = { + getName: jest.fn().mockReturnValue("evm_wallet_provider"), + getNetwork: jest.fn().mockReturnValue({ + protocolFamily: "evm", + networkId: "base-sepolia", + }), + getPublicClient: jest.fn().mockReturnValue({ + transport: { url: "https://rpc.example.com" }, + }), + } as unknown as jest.Mocked; + + actionProvider = erc8004IdentityActionProvider(); + mockGetAgent0SDK.mockReturnValue(mockSdk as unknown as ReturnType); + }); + + it("should pass only chains when no filters are set", async () => { + mockSdk.searchAgents.mockResolvedValue([ + { + agentId: "123", + name: "Test Agent", + description: "A test agent", + mcpTools: ["code_generation"], + active: true, + }, + ]); + + const response = await actionProvider.searchAgents(mockWallet, { limit: 10 }); + + expect(mockSdk.searchAgents).toHaveBeenCalledWith({ chains: [84532] }, expect.any(Object)); + expect(response).toContain("Found 1 agent(s)"); + expect(response).toContain("base-sepolia"); + expect(response).toContain("Test Agent"); + }); + + it("should return no agents message when none found", async () => { + mockSdk.searchAgents.mockResolvedValue([]); + + const response = await actionProvider.searchAgents(mockWallet, { limit: 10 }); + + expect(response).toContain("No agents found"); + }); + + it("should return limited results using action-level pagination", async () => { + mockSdk.searchAgents.mockResolvedValue([ + { agentId: "1", name: "Agent 1" }, + { agentId: "2", name: "Agent 2" }, + { agentId: "3", name: "Agent 3" }, + ]); + + const response = await actionProvider.searchAgents(mockWallet, { limit: 2 }); + + expect(mockSdk.searchAgents).toHaveBeenCalledTimes(1); + expect(response).toContain("Found 3 agent(s)"); + expect(response).toContain("showing 1-2"); + expect(response).toContain("Agent 1"); + expect(response).toContain("Agent 2"); + expect(response).not.toContain("Agent 3"); + expect(response).toContain("More results available"); + expect(response).toContain("offset: 2"); + }); + + it("should pass name filter to SDK and return matching agents", async () => { + mockSdk.searchAgents.mockResolvedValue([{ agentId: "2", name: "myAwesomeAgent" }]); + + const response = await actionProvider.searchAgents(mockWallet, { + name: "awesome", + limit: 10, + }); + + expect(mockSdk.searchAgents).toHaveBeenCalledTimes(1); + expect(mockSdk.searchAgents).toHaveBeenCalledWith( + expect.objectContaining({ name: "awesome" }), + expect.any(Object), + ); + expect(response).toContain("Found 1 agent(s)"); + expect(response).toContain("myAwesomeAgent"); + }); + + it("should pass keyword for semantic search", async () => { + mockSdk.searchAgents.mockResolvedValue([ + { agentId: "1", name: "Finance Bot", semanticScore: 0.92 }, + ]); + + const response = await actionProvider.searchAgents(mockWallet, { + keyword: "financial data analysis", + limit: 10, + }); + + expect(mockSdk.searchAgents).toHaveBeenCalledWith( + expect.objectContaining({ keyword: "financial data analysis" }), + expect.any(Object), + ); + expect(response).toContain("Finance Bot"); + expect(response).toContain("Relevance: 0.920"); + }); + + it("should pass description filter to SDK", async () => { + mockSdk.searchAgents.mockResolvedValue([ + { agentId: "1", name: "Data Agent", description: "Handles financial data" }, + ]); + + const response = await actionProvider.searchAgents(mockWallet, { + description: "financial", + limit: 10, + }); + + expect(mockSdk.searchAgents).toHaveBeenCalledWith( + expect.objectContaining({ description: "financial" }), + expect.any(Object), + ); + expect(response).toContain("Data Agent"); + }); + + it("should pass require filters to SDK", async () => { + mockSdk.searchAgents.mockResolvedValue([ + { agentId: "1", name: "MCP Agent", mcp: "https://mcp.example.com" }, + ]); + + const response = await actionProvider.searchAgents(mockWallet, { + require: ["mcp", "active"], + limit: 10, + }); + + expect(mockSdk.searchAgents).toHaveBeenCalledWith( + expect.objectContaining({ hasMCP: true, active: true }), + expect.any(Object), + ); + expect(mockSdk.searchAgents).toHaveBeenCalledWith( + expect.not.objectContaining({ hasA2A: expect.anything(), x402support: expect.anything() }), + expect.any(Object), + ); + expect(response).toContain("MCP Agent"); + }); + + it("should use wallet network when no filters are set", async () => { + mockSdk.searchAgents.mockResolvedValue([{ agentId: "1:5", name: "Mainnet Agent" }]); + + const response = await actionProvider.searchAgents(mockWallet, { + limit: 10, + }); + + // Uses wallet network (base-sepolia = 84532) when no networkId in schema + expect(mockSdk.searchAgents).toHaveBeenCalledWith( + expect.objectContaining({ chains: [84532] }), + expect.any(Object), + ); + expect(response).toContain("base-sepolia"); + }); + + it("should pass sort option to SDK", async () => { + mockSdk.searchAgents.mockResolvedValue([{ agentId: "1", name: "Top Agent" }]); + + await actionProvider.searchAgents(mockWallet, { + sort: "averageValue:desc", + limit: 10, + }); + + expect(mockSdk.searchAgents).toHaveBeenCalledWith( + expect.any(Object), + expect.objectContaining({ sort: ["averageValue:desc"] }), + ); + }); + + it("should pass reputation tag in feedback filters", async () => { + mockSdk.searchAgents.mockResolvedValue([ + { agentId: "1", name: "Enterprise Agent", averageValue: 90 }, + ]); + + const response = await actionProvider.searchAgents(mockWallet, { + minReputation: 80, + reputationTag: "enterprise", + limit: 10, + }); + + expect(mockSdk.searchAgents).toHaveBeenCalledWith( + expect.objectContaining({ + feedback: { minValue: 80, maxValue: undefined, tag: "enterprise" }, + }), + expect.any(Object), + ); + expect(response).toContain("Reputation: 90"); + }); + + it("should include enriched output fields", async () => { + mockSdk.searchAgents.mockResolvedValue([ + { + agentId: "1", + name: "Full Agent", + averageValue: 85, + feedbackCount: 12, + }, + ]); + + const response = await actionProvider.searchAgents(mockWallet, { limit: 10 }); + + expect(response).toContain("Agent ID: 1"); + expect(response).toContain("Name: Full Agent"); + expect(response).toContain("Reputation: 85"); + expect(response).toContain("Feedback count: 12"); + }); + + it("should support offset for pagination", async () => { + mockSdk.searchAgents.mockResolvedValue([ + { agentId: "1", name: "Agent 1" }, + { agentId: "2", name: "Agent 2" }, + { agentId: "3", name: "Agent 3" }, + ]); + + const response = await actionProvider.searchAgents(mockWallet, { offset: 1, limit: 1 }); + + expect(response).toContain("Found 3 agent(s)"); + expect(response).toContain("showing 2-2"); + expect(response).toContain("Agent 2"); + expect(response).not.toContain("Agent 1"); + expect(response).not.toContain("Agent 3"); + }); + + it("should handle errors gracefully", async () => { + mockSdk.searchAgents.mockRejectedValue(new Error("Network error")); + + const response = await actionProvider.searchAgents(mockWallet, { limit: 10 }); + + expect(response).toContain("Error searching agents"); + }); +}); + +describe("Get Agent Info Action", () => { + let mockWallet: jest.Mocked; + let actionProvider: ERC8004IdentityActionProvider; + let mockSdk: { getAgent: jest.Mock }; + + beforeEach(() => { + mockSdk = { + getAgent: jest.fn(), + }; + + mockWallet = { + getName: jest.fn().mockReturnValue("evm_wallet_provider"), + getNetwork: jest.fn().mockReturnValue({ + protocolFamily: "evm", + networkId: "base-sepolia", + }), + getPublicClient: jest.fn().mockReturnValue({ + transport: { url: "https://rpc.example.com" }, + }), + } as unknown as jest.Mocked; + + actionProvider = erc8004IdentityActionProvider(); + mockGetAgent0SDK.mockReturnValue(mockSdk as unknown as ReturnType); + }); + + it("should successfully get agent info", async () => { + mockSdk.getAgent.mockResolvedValue({ + agentId: "123", + name: "Test Agent", + description: "A comprehensive test agent", + owners: [MOCK_ADDRESS], + mcp: true, + mcpTools: ["code_generation", "data_analysis"], + a2aSkills: ["python"], + active: true, + x402support: true, + }); + + const response = await actionProvider.getAgentInfo(mockWallet, { agentId: "123" }); + + expect(mockSdk.getAgent).toHaveBeenCalledWith("84532:123"); + expect(response).toContain("Agent 123"); + expect(response).toContain("Test Agent"); + expect(response).toContain("code_generation"); + expect(response).toContain("Active: true"); + }); + + it("should handle chainId:agentId format", async () => { + mockSdk.getAgent.mockResolvedValue({ + agentId: "11155111:456", + name: "Chain-specific Agent", + }); + + const response = await actionProvider.getAgentInfo(mockWallet, { agentId: "11155111:456" }); + + expect(mockSdk.getAgent).toHaveBeenCalledWith("11155111:456"); + expect(response).toContain("Chain-specific Agent"); + }); + + it("should return not found for missing agent", async () => { + mockSdk.getAgent.mockResolvedValue(null); + + const response = await actionProvider.getAgentInfo(mockWallet, { agentId: "999" }); + + expect(response).toContain("not found"); + }); + + it("should handle errors gracefully", async () => { + mockSdk.getAgent.mockRejectedValue(new Error("Network error")); + + const response = await actionProvider.getAgentInfo(mockWallet, { agentId: "123" }); + + expect(response).toContain("Error getting agent info"); + }); +}); + +describe("supportsNetwork", () => { + const actionProvider = erc8004IdentityActionProvider(); + + it("should return true for supported EVM networks", () => { + expect( + actionProvider.supportsNetwork({ + protocolFamily: "evm", + networkId: "base-sepolia", + }), + ).toBe(true); + }); + + it("should return false for non-EVM networks", () => { + expect( + actionProvider.supportsNetwork({ + protocolFamily: "solana", + }), + ).toBe(false); + }); + + it("should return false for unsupported EVM networks", () => { + expect( + actionProvider.supportsNetwork({ + protocolFamily: "evm", + networkId: "arbitrum-mainnet", + }), + ).toBe(false); + }); +}); diff --git a/typescript/agentkit/src/action-providers/erc8004/erc8004IdentityActionProvider.ts b/typescript/agentkit/src/action-providers/erc8004/erc8004IdentityActionProvider.ts new file mode 100644 index 000000000..7d02171d7 --- /dev/null +++ b/typescript/agentkit/src/action-providers/erc8004/erc8004IdentityActionProvider.ts @@ -0,0 +1,585 @@ +import { z } from "zod"; +import { ActionProvider } from "../actionProvider"; +import { Network } from "../../network"; +import { CreateAction } from "../actionDecorator"; +import { EvmWalletProvider } from "../../wallet-providers"; +import { + RegisterAgentSchema, + UpdateAgentMetadataSchema, + GetOwnedAgentsSchema, + SearchAgentsSchema, + GetAgentInfoSchema, +} from "./identitySchemas"; +import { getChainIdFromNetwork, isNetworkSupported } from "./constants"; +import { + PinataConfig, + getAgent0SDK, + jsonToDataUri, + ipfsToHttpUrl, + loadOrHydrateAgent, +} from "./utils"; + +/** + * Configuration options for the ERC8004 Identity Action Provider + */ +export interface ERC8004IdentityActionProviderConfig { + pinataJwt?: string; +} + +/** + * ERC8004IdentityActionProvider provides actions for the ERC-8004 Identity Registry. + * This includes agent registration, URI management, and on-chain metadata. + */ +export class ERC8004IdentityActionProvider extends ActionProvider { + private pinataConfig?: PinataConfig; + + /** + * Constructor for the ERC8004IdentityActionProvider. + * + * @param config - Optional configuration including Pinata JWT for IPFS uploads + */ + constructor(config?: ERC8004IdentityActionProviderConfig) { + super("erc8004_identity", []); + if (config?.pinataJwt) { + this.pinataConfig = { jwt: config.pinataJwt }; + } + } + + /** + * Updates agent registration metadata by loading the current state, modifying and re-registering. + * + * @param walletProvider - The wallet provider to use for the transaction + * @param args - The agentId and optional fields to update + * @returns A message confirming the update + */ + @CreateAction({ + name: "update_agent_metadata", + description: ` +Updates agent configuration. All fields are optional — only provide what you want to change. + +- Core: name, description, image +- Endpoints: mcpEndpoint (auto-extracts tools/prompts/resources), a2aEndpoint (auto-extracts skills), ensName +- Status: active, x402support +- Trust: trustReputation, trustCryptoEconomic, trustTeeAttestation (replaces all trust settings when any is provided) +- Taxonomies: oasfSkills, oasfDomains (OASF slugs to add) +- Custom: metadata (key-value pairs) + +Examples: +- "Set MCP endpoint to https://mcp.example.com/" +- "Make the agent active and enable x402 support" +- "Add OASF skill data_engineering/data_transformation_pipeline" +`, + schema: UpdateAgentMetadataSchema, + }) + async updateAgentMetadata( + walletProvider: EvmWalletProvider, + args: z.infer, + ): Promise { + try { + const network = walletProvider.getNetwork(); + const chainId = getChainIdFromNetwork(network); + const fullAgentId = `${chainId}:${args.agentId}`; + const sdk = getAgent0SDK(walletProvider, this.pinataConfig?.jwt); + + const agent = await loadOrHydrateAgent(sdk, walletProvider, fullAgentId, args.agentId); + const updates: string[] = []; + + // Core + if (args.name !== undefined || args.description !== undefined || args.image !== undefined) { + agent.updateInfo(args.name, args.description, args.image); + if (args.name !== undefined) updates.push(`Name: ${args.name}`); + if (args.description !== undefined) updates.push(`Description: ${args.description}`); + if (args.image !== undefined) updates.push(`Image: ${args.image}`); + } + + // Endpoints + if (args.mcpEndpoint !== undefined) { + await agent.setMCP(args.mcpEndpoint); + const tools = agent.mcpTools ?? []; + updates.push( + `MCP endpoint: ${args.mcpEndpoint}` + + (tools.length ? ` (extracted ${tools.length} tools)` : ""), + ); + } + if (args.a2aEndpoint !== undefined) { + await agent.setA2A(args.a2aEndpoint); + const skills = agent.a2aSkills ?? []; + updates.push( + `A2A endpoint: ${args.a2aEndpoint}` + + (skills.length ? ` (extracted ${skills.length} skills)` : ""), + ); + } + if (args.ensName !== undefined) { + agent.setENS(args.ensName); + updates.push(`ENS: ${args.ensName}`); + } + + // Status + if (args.active !== undefined) { + agent.setActive(args.active); + updates.push(`Active: ${args.active}`); + } + if (args.x402support !== undefined) { + agent.setX402Support(args.x402support); + updates.push(`x402 support: ${args.x402support}`); + } + + // Trust models + const hasTrustFlag = + args.trustReputation !== undefined || + args.trustCryptoEconomic !== undefined || + args.trustTeeAttestation !== undefined; + if (hasTrustFlag) { + agent.setTrust( + args.trustReputation ?? false, + args.trustCryptoEconomic ?? false, + args.trustTeeAttestation ?? false, + ); + const models: string[] = []; + if (args.trustReputation) models.push("reputation"); + if (args.trustCryptoEconomic) models.push("crypto-economic"); + if (args.trustTeeAttestation) models.push("tee-attestation"); + updates.push(`Trust models: ${models.length > 0 ? models.join(", ") : "(none)"}`); + } + + // OASF taxonomies + if (args.oasfSkills?.length) { + for (const skill of args.oasfSkills) { + agent.addSkill(skill, true); + } + updates.push(`OASF skills added: ${args.oasfSkills.join(", ")}`); + } + if (args.oasfDomains?.length) { + for (const domain of args.oasfDomains) { + agent.addDomain(domain, true); + } + updates.push(`OASF domains added: ${args.oasfDomains.join(", ")}`); + } + + // Custom metadata + if (args.metadata && Object.keys(args.metadata).length > 0) { + agent.setMetadata(args.metadata); + const entries = Object.entries(args.metadata) + .map(([k, v]) => `${k}=${v}`) + .join(", "); + updates.push(`Metadata: ${entries}`); + } + + // Re-register + let newUri: string; + let txHash: string; + + if (this.pinataConfig) { + const handle = await agent.registerIPFS(); + const { result } = await handle.waitMined(); + newUri = result.agentURI ?? ""; + txHash = handle.hash; + } else { + const regFile = agent.getRegistrationFile(); + const dataUri = jsonToDataUri(regFile); + const handle = await agent.setAgentURI(dataUri); + await handle.waitMined(); + newUri = dataUri; + txHash = handle.hash; + } + + const uriDisplay = newUri.startsWith("ipfs://") + ? `Metadata URI: ${newUri}\nHTTP Gateway: ${ipfsToHttpUrl(newUri)}` + : `Metadata URI: (onchain data URI)`; + + return `Agent updated successfully!\n\nAgent ID: ${args.agentId}\nUpdated fields:\n${updates.length > 0 ? updates.map(u => `- ${u}`).join("\n") : "(no changes)"}\n\n${uriDisplay}\nTransaction hash: ${txHash}`; + } catch (error) { + return `Error updating agent metadata: ${error}`; + } + } + + /** + * Registers a new agent (register + set URI). + * All fields are optional - defaults to "Agent " for name, empty for others. + * + * @param walletProvider - The wallet provider to use + * @param args - Optional agent name, description, and image + * @returns A message with the registration details + */ + @CreateAction({ + name: "register_agent", + description: ` +Registers a new agent on the ERC-8004 Identity Registry: +1. Mints an agent NFT +2. Generates registration JSON and sets the agent URI + +All fields are optional! Proceed if not provided, metadata can be updated later with 'update_agent_metadata' action. +Never choose values for optional fields unless explicitly asked to do so. +`, + schema: RegisterAgentSchema, + }) + async registerAgent( + walletProvider: EvmWalletProvider, + args: z.infer, + ): Promise { + try { + const network = walletProvider.getNetwork(); + const sdk = getAgent0SDK(walletProvider, this.pinataConfig?.jwt); + + const agentName = args.name || "Agent"; + const agent = sdk.createAgent(agentName, args.description || "", args.image); + + if (this.pinataConfig) { + const handle = await agent.registerIPFS(); + const { result } = await handle.waitMined(); + + const agentId = result.agentId!; + const agentURI = result.agentURI ?? ""; + const httpUrl = ipfsToHttpUrl(agentURI); + + return `Agent registered successfully!\n\nAgent ID: ${agentId}\nName: ${result.name || agentName}\nDescription: ${args.description || "(empty)"}\nImage: ${args.image || "(empty)"}\nNetwork: ${network.networkId}\n\nMetadata URI: ${agentURI}\nHTTP Gateway: ${httpUrl}\n\nTransaction hash: ${handle.hash}`; + } + + // No IPFS: register with empty URI, then set a data URI containing the agentId + const handle = await agent.registerHTTP(""); + const { result } = await handle.waitMined(); + + const agentId = result.agentId!; + const regFile = agent.getRegistrationFile(); + const dataUri = jsonToDataUri(regFile); + const handle2 = await agent.setAgentURI(dataUri); + await handle2.waitMined(); + + return `Agent registered successfully!\n\nAgent ID: ${agentId}\nName: ${result.name || agentName}\nDescription: ${args.description || "(empty)"}\nImage: ${args.image || "(empty)"}\nNetwork: ${network.networkId}\n\nMetadata: stored on-chain (data URI)\n\nTransaction hashes:\n- Register: ${handle.hash}\n- Set URI: ${handle2.hash}`; + } catch (error) { + return `Error during registration: ${error}`; + } + } + + /** + * Gets all agents owned by a specified wallet address or the connected wallet. + * + * @param walletProvider - The wallet provider to use for reading + * @param args - Optional wallet address to query and pagination parameters + * @returns A message with the list of owned agents + */ + @CreateAction({ + name: "get_owned_agents", + description: ` +Gets all agent IDs owned by an address. If no address is provided, uses the connected wallet address. +Returns a list of agents with their IDs, names and descriptions. +Supports pagination. +`, + schema: GetOwnedAgentsSchema, + }) + async getOwnedAgents( + walletProvider: EvmWalletProvider, + args: z.infer, + ): Promise { + try { + const network = walletProvider.getNetwork(); + const chainId = getChainIdFromNetwork(network); + + // Use provided wallet address or fall back to connected wallet + const walletAddress = args.walletAddress || walletProvider.getAddress(); + + // Initialize agent0 SDK + const sdk = getAgent0SDK(walletProvider); + + // Search for agents owned by the specified wallet + const result = await sdk.searchAgents({ owners: [walletAddress] }); + + if (result.length === 0) { + return `No agents found owned by ${walletAddress} on chain ${chainId}.`; + } + + // Format the response + const agentList = result + .map(agent => { + const name = agent.name || "Unnamed"; + const description = agent.description ? ` - ${agent.description.slice(0, 50)}...` : ""; + return `- Agent ID: ${agent.agentId}\n Name: ${name}${description}`; + }) + .join("\n\n"); + + return `Found ${result.length} agent(s) owned by ${walletAddress}:\n\n${agentList}`; + } catch (error) { + return `Error retrieving owned agents: ${error}`; + } + } + + /** + * Searches for agents by capabilities, attributes, or reputation. + * Supports semantic (keyword) search, structured filters, sorting, and pagination. + * + * @param walletProvider - The wallet provider to use for reading + * @param args - Search filters including keyword, name, tools, skills, reputation + * @returns A message with the list of matching agents + */ + @CreateAction({ + name: "search_agents", + description: ` +Search for registered agents using semantic search, structured filters, or both. +All filters are optional. Only include filters that the user explicitly requests. + +Discovery: +- keyword: Natural-language semantic search (e.g. "financial data analysis agent") +- name / description: Substring match + +Capabilities: +- mcpTools, a2aSkills, oasfSkills, oasfDomains: Filter by specific capabilities +- require: List of status/capability requirements (e.g. ["mcp", "active"]). Only add values the user explicitly asks for. + +Status & reputation: +- minReputation / maxReputation: Filter by average reputation score +- reputationTag: Only consider feedback with this tag + +Scope: +- networkId: Search a specific network (default: current network) + +Sorting & pagination: +- sort: e.g. "averageValue:desc", "updatedAt:desc", "name:asc" +- limit: Max results to return (default: 10, max: 50) +- offset: Number of results to skip (default: 0) + +`, + schema: SearchAgentsSchema, + }) + async searchAgents( + walletProvider: EvmWalletProvider, + args: z.infer, + ): Promise { + try { + console.log("args", args); + const sdk = getAgent0SDK(walletProvider); + const network = walletProvider.getNetwork(); + const currentChainId = getChainIdFromNetwork(network); + + const requirements = new Set(args.require ?? []); + + const hasReputationFilter = + args.minReputation !== undefined || + args.maxReputation !== undefined || + (args.reputationTag !== undefined && args.reputationTag !== "") || + args.minCount !== undefined || + args.maxCount !== undefined || + (args.fromReviewers !== undefined && args.fromReviewers.length > 0); + + const searchFilters: Record = { + chains: [currentChainId], + ...(args.keyword && { keyword: args.keyword }), + ...(args.name && { name: args.name }), + ...(args.description && { description: args.description }), + ...(requirements.has("mcp") && { hasMCP: true }), + ...(requirements.has("a2a") && { hasA2A: true }), + ...(requirements.has("active") && { active: true }), + ...(requirements.has("x402") && { x402support: true }), + ...(hasReputationFilter && { + feedback: { + ...(args.minReputation !== undefined && + args.minReputation > 0 && { minValue: args.minReputation }), + ...(args.maxReputation !== undefined && + args.maxReputation < 100 && { maxValue: args.maxReputation }), + ...(args.minCount !== undefined && { minCount: args.minCount }), + ...(args.maxCount !== undefined && { maxCount: args.maxCount }), + ...(args.fromReviewers && + args.fromReviewers.length > 0 && { + ...(args.fromReviewers && { fromReviewers: args.fromReviewers }), + }), + ...(args.reputationTag && { tag: args.reputationTag }), + }, + }), + }; + + const searchOptions: Record = {}; + if (args.sort) { + searchOptions.sort = [args.sort]; + } + console.log("searchOptions", searchOptions); + console.log("searchFilters", searchFilters); + + const allAgents = await sdk.searchAgents(searchFilters, searchOptions); + console.log("found agents number: ", allAgents.length); + + if (allAgents.length === 0) { + return "No agents found matching the specified criteria."; + } + + const limit = args.limit ?? 10; + const offset = args.offset ?? 0; + const paginatedAgents = allAgents.slice(offset, offset + limit); + const totalFound = allAgents.length; + const hasMore = offset + limit < totalFound; + + const agentList = paginatedAgents + .map(agent => { + const lines: string[] = []; + lines.push(`- Agent ID: ${agent.agentId}`); + lines.push(` Name: ${agent.name || "Unnamed"}`); + + if (agent.description) { + const desc = + agent.description.length > 120 + ? `${agent.description.slice(0, 120)}...` + : agent.description; + lines.push(` Description: ${desc}`); + } + if (agent.averageValue !== undefined) lines.push(` Reputation: ${agent.averageValue}`); + if (agent.feedbackCount) lines.push(` Feedback count: ${agent.feedbackCount}`); + if (agent.semanticScore !== undefined) + lines.push(` Relevance: ${agent.semanticScore.toFixed(3)}`); + + return lines.join("\n"); + }) + .join("\n\n"); + + let response = `Found ${totalFound} agent(s) on ${network.networkId}, showing ${offset + 1}-${offset + paginatedAgents.length}:\n\n${agentList}`; + + if (hasMore) { + response += `\n\n(More results available. Use offset: ${offset + limit} to fetch next page)`; + } + + return response; + } catch (error) { + return `Error searching agents: ${error}`; + } + } + + /** + * Gets comprehensive information about an agent including identity, endpoints, capabilities, and reputation. + * + * @param walletProvider - The wallet provider to use for reading + * @param args - The agentId to look up + * @returns A message with comprehensive agent information + */ + @CreateAction({ + name: "get_agent_info", + description: ` +Gets comprehensive information about an agent including identity, endpoints, capabilities, and reputation. +Uses indexed data for fast retrieval. + +The agentId can be in either format: +- "123" - Uses the current network's chain ID +- "84532:123" - Explicitly specifies the chain ID + +Returns: +- Basic info: name, description, image +- Owner address +- Endpoints: MCP, A2A, ENS +- Capabilities: mcpTools, a2aSkills, oasfSkills/domains +- Reputation summary: averageValue, feedbackCount +- Status: active, x402support +`, + schema: GetAgentInfoSchema, + }) + async getAgentInfo( + walletProvider: EvmWalletProvider, + args: z.infer, + ): Promise { + try { + const sdk = getAgent0SDK(walletProvider); + const network = walletProvider.getNetwork(); + const chainId = getChainIdFromNetwork(network); + + // Handle both "agentId" and "chainId:agentId" formats + const fullAgentId = args.agentId.includes(":") ? args.agentId : `${chainId}:${args.agentId}`; + + const agent = await sdk.getAgent(fullAgentId); + + if (!agent) { + return `Agent ${args.agentId} not found.`; + } + + // Build comprehensive response + const sections: string[] = []; + + // Basic info + sections.push(`## Agent ${agent.agentId}`); + sections.push(`Name: ${agent.name || "Not set"}`); + if (agent.description) { + sections.push(`Description: ${agent.description}`); + } + if (agent.image) { + sections.push(`Image: ${agent.image}`); + } + + // Ownership + if (agent.owners?.length) { + sections.push(`\n## Ownership`); + sections.push(`Owner(s): ${agent.owners.join(", ")}`); + } + if (agent.walletAddress) { + sections.push(`Wallet Address: ${agent.walletAddress}`); + } + + // Endpoints + const endpoints: string[] = []; + if (agent.mcp) endpoints.push(`MCP: Enabled`); + if (agent.a2a) endpoints.push(`A2A: Enabled`); + if (agent.ens) endpoints.push(`ENS: ${agent.ens}`); + if (agent.did) endpoints.push(`DID: ${agent.did}`); + if (endpoints.length > 0) { + sections.push(`\n## Endpoints`); + sections.push(endpoints.join("\n")); + } + + // Capabilities + const capabilities: string[] = []; + if (agent.mcpTools?.length) { + capabilities.push(`MCP Tools: ${agent.mcpTools.join(", ")}`); + } + if (agent.mcpPrompts?.length) { + capabilities.push(`MCP Prompts: ${agent.mcpPrompts.join(", ")}`); + } + if (agent.mcpResources?.length) { + capabilities.push(`MCP Resources: ${agent.mcpResources.join(", ")}`); + } + if (agent.a2aSkills?.length) { + capabilities.push(`A2A Skills: ${agent.a2aSkills.join(", ")}`); + } + if (capabilities.length > 0) { + sections.push(`\n## Capabilities`); + sections.push(capabilities.join("\n")); + } + + // Status + sections.push(`\n## Status`); + sections.push(`Active: ${agent.active ?? "Unknown"}`); + if (agent.x402support !== undefined) { + sections.push(`x402 Support: ${agent.x402support}`); + } + + // Reputation + try { + const reputationSummary = await sdk.getReputationSummary(fullAgentId); + if (reputationSummary && reputationSummary.count > 0) { + sections.push(`\n## Reputation`); + sections.push(`Average Score: ${reputationSummary.averageValue}`); + sections.push(`Total Feedback: ${reputationSummary.count}`); + } else { + sections.push(`\n## Reputation`); + sections.push(`No feedback received yet`); + } + } catch { + // Reputation data not available - skip section + } + + return sections.join("\n"); + } catch (error) { + return `Error getting agent info: ${error}`; + } + } + + /** + * Checks if the action provider supports the given network. + * + * @param network - The network to check + * @returns True if the network is supported for ERC-8004 + */ + supportsNetwork = (network: Network) => + network.protocolFamily === "evm" && isNetworkSupported(network); +} + +/** + * Factory function to create an ERC8004IdentityActionProvider + * + * @param config - Optional configuration including Pinata JWT + * @returns A new ERC8004IdentityActionProvider instance + */ +export const erc8004IdentityActionProvider = (config?: ERC8004IdentityActionProviderConfig) => + new ERC8004IdentityActionProvider(config); diff --git a/typescript/agentkit/src/action-providers/erc8004/erc8004ReputationActionProvider.test.ts b/typescript/agentkit/src/action-providers/erc8004/erc8004ReputationActionProvider.test.ts new file mode 100644 index 000000000..6b7d0d417 --- /dev/null +++ b/typescript/agentkit/src/action-providers/erc8004/erc8004ReputationActionProvider.test.ts @@ -0,0 +1,732 @@ +import { + erc8004ReputationActionProvider, + ERC8004ReputationActionProvider, +} from "./erc8004ReputationActionProvider"; +import { + GiveFeedbackSchema, + RevokeFeedbackSchema, + AppendResponseSchema, + GetAgentFeedbackSchema, +} from "./reputationSchemas"; +import { EvmWalletProvider } from "../../wallet-providers"; +import * as utils from "./utils"; + +// Mock utils to avoid loading the ESM-only agent0-sdk at module load time +jest.mock("./utils", () => ({ + getAgent0SDK: jest.fn(), + ipfsToHttpUrl: jest.fn((uri: string) => uri), +})); + +const MOCK_AGENT_ID = "123"; +const MOCK_ADDRESS = "0x1234567890123456789012345678901234567890"; +const MOCK_CLIENT_ADDRESS = "0x9876543210987654321098765432109876543210"; +const TRANSACTION_HASH = "0xabcdef1234567890"; +const MOCK_FEEDBACK_INDEX = "0"; + +describe("Reputation Schema Validation", () => { + describe("GiveFeedbackSchema", () => { + it("should successfully parse valid input", () => { + const validInput = { + agentId: MOCK_AGENT_ID, + value: 85, + valueDecimals: 0, + tag1: "quality", + tag2: "response-time", + }; + + const result = GiveFeedbackSchema.safeParse(validInput); + + expect(result.success).toBe(true); + expect(result.data).toEqual(validInput); + }); + + it("should successfully parse input with defaults", () => { + const validInput = { + agentId: MOCK_AGENT_ID, + value: 85, + }; + + const result = GiveFeedbackSchema.safeParse(validInput); + + expect(result.success).toBe(true); + expect(result.data?.valueDecimals).toBe(0); + }); + + it("should accept large values per ERC-8004 int128 spec", () => { + // Uptime 99.77% -> value=9977, valueDecimals=2 + const uptimeInput = { + agentId: MOCK_AGENT_ID, + value: 9977, + valueDecimals: 2, + tag1: "uptime", + }; + expect(GiveFeedbackSchema.safeParse(uptimeInput).success).toBe(true); + + // Response time 560ms + const responseTimeInput = { + agentId: MOCK_AGENT_ID, + value: 560, + valueDecimals: 0, + tag1: "responseTime", + }; + expect(GiveFeedbackSchema.safeParse(responseTimeInput).success).toBe(true); + + // Revenues $560 + const revenuesInput = { + agentId: MOCK_AGENT_ID, + value: 560, + valueDecimals: 0, + tag1: "revenues", + }; + expect(GiveFeedbackSchema.safeParse(revenuesInput).success).toBe(true); + }); + + it("should accept negative values for losses/negative yields", () => { + // Trading yield -3.2% + const yieldInput = { + agentId: MOCK_AGENT_ID, + value: -32, + valueDecimals: 1, + tag1: "tradingYield", + tag2: "week", + }; + expect(GiveFeedbackSchema.safeParse(yieldInput).success).toBe(true); + }); + + it("should fail parsing tag1 too long", () => { + const invalidInput = { + agentId: MOCK_AGENT_ID, + value: 85, + tag1: "a".repeat(51), + }; + + const result = GiveFeedbackSchema.safeParse(invalidInput); + + expect(result.success).toBe(false); + }); + + it("should reject valueDecimals greater than 18", () => { + const invalidInput = { + agentId: MOCK_AGENT_ID, + value: 85, + valueDecimals: 19, + }; + + const result = GiveFeedbackSchema.safeParse(invalidInput); + expect(result.success).toBe(false); + }); + }); + + describe("RevokeFeedbackSchema", () => { + it("should successfully parse valid input", () => { + const validInput = { + agentId: MOCK_AGENT_ID, + feedbackIndex: MOCK_FEEDBACK_INDEX, + }; + + const result = RevokeFeedbackSchema.safeParse(validInput); + + expect(result.success).toBe(true); + expect(result.data).toEqual(validInput); + }); + + it("should fail parsing empty input", () => { + const emptyInput = {}; + const result = RevokeFeedbackSchema.safeParse(emptyInput); + + expect(result.success).toBe(false); + }); + }); + + describe("AppendResponseSchema", () => { + it("should successfully parse valid input", () => { + const validInput = { + agentId: MOCK_AGENT_ID, + clientAddress: MOCK_CLIENT_ADDRESS, + feedbackIndex: MOCK_FEEDBACK_INDEX, + responseUri: "ipfs://QmResponse123", + }; + + const result = AppendResponseSchema.safeParse(validInput); + + expect(result.success).toBe(true); + expect(result.data).toEqual(validInput); + }); + + it("should accept optional responseHash for non-IPFS URIs", () => { + const inputWithHash = { + agentId: MOCK_AGENT_ID, + clientAddress: MOCK_CLIENT_ADDRESS, + feedbackIndex: MOCK_FEEDBACK_INDEX, + responseUri: "https://example.com/response.json", + responseHash: "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", + }; + + const result = AppendResponseSchema.safeParse(inputWithHash); + expect(result.success).toBe(true); + expect(result.data?.responseHash).toBe(inputWithHash.responseHash); + }); + + it("should reject invalid responseHash format", () => { + const invalidHashInput = { + agentId: MOCK_AGENT_ID, + clientAddress: MOCK_CLIENT_ADDRESS, + feedbackIndex: MOCK_FEEDBACK_INDEX, + responseUri: "ipfs://QmResponse123", + responseHash: "not-a-valid-hash", + }; + + const result = AppendResponseSchema.safeParse(invalidHashInput); + expect(result.success).toBe(false); + }); + + it("should fail parsing invalid client address", () => { + const invalidInput = { + agentId: MOCK_AGENT_ID, + clientAddress: "invalid-address", + feedbackIndex: MOCK_FEEDBACK_INDEX, + responseUri: "ipfs://QmResponse123", + }; + + const result = AppendResponseSchema.safeParse(invalidInput); + + expect(result.success).toBe(false); + }); + + it("should fail parsing empty input", () => { + const emptyInput = {}; + const result = AppendResponseSchema.safeParse(emptyInput); + + expect(result.success).toBe(false); + }); + }); + + describe("GetAgentFeedbackSchema", () => { + it("should successfully parse valid input with all filters", () => { + const validInput = { + agentId: MOCK_AGENT_ID, + reviewerAddresses: [MOCK_CLIENT_ADDRESS], + minValue: 50, + maxValue: 100, + tag1: "quality", + includeRevoked: false, + pageSize: 20, + }; + + const result = GetAgentFeedbackSchema.safeParse(validInput); + + expect(result.success).toBe(true); + expect(result.data).toEqual(validInput); + }); + + it("should successfully parse input with only agentId", () => { + const validInput = { + agentId: MOCK_AGENT_ID, + }; + + const result = GetAgentFeedbackSchema.safeParse(validInput); + + expect(result.success).toBe(true); + }); + + it("should accept agentId with chainId prefix", () => { + const validInput = { + agentId: "84532:123", + }; + + const result = GetAgentFeedbackSchema.safeParse(validInput); + expect(result.success).toBe(true); + }); + + it("should reject pageSize greater than 50", () => { + const invalidInput = { + agentId: MOCK_AGENT_ID, + pageSize: 51, + }; + + const result = GetAgentFeedbackSchema.safeParse(invalidInput); + expect(result.success).toBe(false); + }); + + it("should fail parsing empty input", () => { + const emptyInput = {}; + const result = GetAgentFeedbackSchema.safeParse(emptyInput); + + expect(result.success).toBe(false); + }); + }); +}); + +/** + * Creates a mock TransactionHandle matching the agent0-sdk shape. + * + * @param hash - The transaction hash string. + * @param result - Optional result object to include in the mined receipt. + * @returns A mock transaction handle with hash and waitMined method. + */ +function mockTxHandle(hash: string, result: Record = {}) { + return { + hash, + waitMined: jest.fn().mockResolvedValue({ + receipt: { transactionHash: hash, status: "success", logs: [] }, + result, + }), + }; +} + +describe("Give Feedback Action", () => { + let mockWallet: jest.Mocked; + let actionProvider: ERC8004ReputationActionProvider; + let mockSdk: { + isAgentOwner: jest.Mock; + giveFeedback: jest.Mock; + }; + let getAgent0SDKSpy: jest.SpyInstance; + + beforeEach(() => { + mockWallet = { + getAddress: jest.fn().mockReturnValue(MOCK_ADDRESS), + getName: jest.fn().mockReturnValue("evm_wallet_provider"), + getNetwork: jest.fn().mockReturnValue({ + protocolFamily: "evm", + networkId: "base-sepolia", + }), + } as unknown as jest.Mocked; + + mockSdk = { + isAgentOwner: jest.fn().mockResolvedValue(false), + giveFeedback: jest.fn().mockResolvedValue(mockTxHandle(TRANSACTION_HASH)), + }; + + getAgent0SDKSpy = jest.spyOn(utils, "getAgent0SDK").mockReturnValue(mockSdk as never); + actionProvider = erc8004ReputationActionProvider({ pinataJwt: "test-jwt" }); + }); + + afterEach(() => { + getAgent0SDKSpy.mockRestore(); + }); + + it("should successfully submit feedback", async () => { + const args = { + agentId: MOCK_AGENT_ID, + value: 85, + valueDecimals: 0, + tag1: "quality", + tag2: "speed", + }; + + const response = await actionProvider.giveFeedback(mockWallet, args); + + expect(mockSdk.isAgentOwner).toHaveBeenCalledWith("84532:123", MOCK_ADDRESS); + expect(mockSdk.giveFeedback).toHaveBeenCalledWith( + "84532:123", + "85", + "quality", + "speed", + undefined, + undefined, + ); + expect(response).toContain("Feedback submitted successfully!"); + expect(response).toContain(MOCK_AGENT_ID); + expect(response).toContain("85"); + expect(response).toContain("quality"); + expect(response).toContain(TRANSACTION_HASH); + }); + + it("should successfully submit feedback with minimal input", async () => { + const args = { + agentId: MOCK_AGENT_ID, + value: 85, + valueDecimals: 0, + tag1: "", + tag2: "", + }; + + const response = await actionProvider.giveFeedback(mockWallet, args); + + expect(mockSdk.giveFeedback).toHaveBeenCalled(); + expect(response).toContain("Feedback submitted successfully!"); + }); + + it("should convert fixed-point value to human-readable string", async () => { + const args = { + agentId: MOCK_AGENT_ID, + value: 9977, + valueDecimals: 2, + tag1: "uptime", + tag2: "", + }; + + await actionProvider.giveFeedback(mockWallet, args); + + expect(mockSdk.giveFeedback).toHaveBeenCalledWith( + "84532:123", + "99.77", + "uptime", + "", + undefined, + undefined, + ); + }); + + it("should pass comment as feedbackFile", async () => { + const args = { + agentId: MOCK_AGENT_ID, + value: 85, + valueDecimals: 0, + tag1: "", + tag2: "", + comment: "Great agent!", + }; + + await actionProvider.giveFeedback(mockWallet, args); + + expect(mockSdk.giveFeedback).toHaveBeenCalledWith("84532:123", "85", "", "", undefined, { + comment: "Great agent!", + }); + }); + + it("should successfully submit feedback without Pinata JWT when no comment", async () => { + const providerWithoutJwt = erc8004ReputationActionProvider(); + + const args = { + agentId: MOCK_AGENT_ID, + value: 85, + valueDecimals: 0, + tag1: "", + tag2: "", + }; + + const response = await providerWithoutJwt.giveFeedback(mockWallet, args); + + expect(response).toContain("Feedback submitted successfully!"); + expect(mockSdk.giveFeedback).toHaveBeenCalled(); + }); + + it("should reject self-feedback", async () => { + mockSdk.isAgentOwner.mockResolvedValue(true); + + const args = { + agentId: MOCK_AGENT_ID, + value: 85, + valueDecimals: 0, + tag1: "", + tag2: "", + }; + + const response = await actionProvider.giveFeedback(mockWallet, args); + + expect(response).toContain("You cannot give feedback to your own agent"); + expect(mockSdk.giveFeedback).not.toHaveBeenCalled(); + }); + + it("should handle error when SDK giveFeedback fails", async () => { + mockSdk.giveFeedback.mockRejectedValue(new Error("Transaction failed")); + + const args = { + agentId: MOCK_AGENT_ID, + value: 85, + valueDecimals: 0, + tag1: "", + tag2: "", + }; + + const response = await actionProvider.giveFeedback(mockWallet, args); + + expect(response).toContain("Error giving feedback"); + expect(response).toContain("Transaction failed"); + }); +}); + +describe("Revoke Feedback Action", () => { + let mockWallet: jest.Mocked; + let actionProvider: ERC8004ReputationActionProvider; + let mockSdk: { revokeFeedback: jest.Mock }; + let getAgent0SDKSpy: jest.SpyInstance; + + beforeEach(() => { + mockWallet = { + getName: jest.fn().mockReturnValue("evm_wallet_provider"), + getNetwork: jest.fn().mockReturnValue({ + protocolFamily: "evm", + networkId: "base-sepolia", + }), + } as unknown as jest.Mocked; + + mockSdk = { + revokeFeedback: jest.fn().mockResolvedValue(mockTxHandle(TRANSACTION_HASH)), + }; + + getAgent0SDKSpy = jest.spyOn(utils, "getAgent0SDK").mockReturnValue(mockSdk as never); + actionProvider = erc8004ReputationActionProvider(); + }); + + afterEach(() => { + getAgent0SDKSpy.mockRestore(); + }); + + it("should successfully revoke feedback", async () => { + const args = { + agentId: MOCK_AGENT_ID, + feedbackIndex: MOCK_FEEDBACK_INDEX, + }; + + const response = await actionProvider.revokeFeedback(mockWallet, args); + + expect(mockSdk.revokeFeedback).toHaveBeenCalledWith("84532:123", 0); + expect(response).toContain("Feedback revoked successfully!"); + expect(response).toContain(MOCK_AGENT_ID); + expect(response).toContain(MOCK_FEEDBACK_INDEX); + expect(response).toContain(TRANSACTION_HASH); + }); + + it("should handle error when revoking feedback fails", async () => { + mockSdk.revokeFeedback.mockRejectedValue(new Error("Transaction failed")); + + const args = { + agentId: MOCK_AGENT_ID, + feedbackIndex: MOCK_FEEDBACK_INDEX, + }; + + const response = await actionProvider.revokeFeedback(mockWallet, args); + + expect(response).toContain("Error revoking feedback"); + }); +}); + +describe("Append Response Action", () => { + let mockWallet: jest.Mocked; + let actionProvider: ERC8004ReputationActionProvider; + let mockSdk: { appendResponse: jest.Mock }; + let getAgent0SDKSpy: jest.SpyInstance; + + beforeEach(() => { + mockWallet = { + getName: jest.fn().mockReturnValue("evm_wallet_provider"), + getNetwork: jest.fn().mockReturnValue({ + protocolFamily: "evm", + networkId: "base-sepolia", + }), + } as unknown as jest.Mocked; + + mockSdk = { + appendResponse: jest.fn().mockResolvedValue(mockTxHandle(TRANSACTION_HASH)), + }; + + getAgent0SDKSpy = jest.spyOn(utils, "getAgent0SDK").mockReturnValue(mockSdk as never); + actionProvider = erc8004ReputationActionProvider(); + }); + + afterEach(() => { + getAgent0SDKSpy.mockRestore(); + }); + + it("should successfully append response", async () => { + const args = { + agentId: MOCK_AGENT_ID, + clientAddress: MOCK_CLIENT_ADDRESS, + feedbackIndex: MOCK_FEEDBACK_INDEX, + responseUri: "ipfs://QmResponse", + }; + + const response = await actionProvider.appendResponse(mockWallet, args); + + const zeroHash = "0x" + "00".repeat(32); + expect(mockSdk.appendResponse).toHaveBeenCalledWith("84532:123", MOCK_CLIENT_ADDRESS, 0, { + uri: "ipfs://QmResponse", + hash: zeroHash, + }); + expect(response).toContain("Response appended successfully!"); + expect(response).toContain(MOCK_AGENT_ID); + expect(response).toContain(MOCK_CLIENT_ADDRESS); + expect(response).toContain(MOCK_FEEDBACK_INDEX); + expect(response).toContain(TRANSACTION_HASH); + }); + + it("should handle error when appending response fails", async () => { + mockSdk.appendResponse.mockRejectedValue(new Error("Transaction failed")); + + const args = { + agentId: MOCK_AGENT_ID, + clientAddress: MOCK_CLIENT_ADDRESS, + feedbackIndex: MOCK_FEEDBACK_INDEX, + responseUri: "ipfs://QmResponse", + }; + + const response = await actionProvider.appendResponse(mockWallet, args); + + expect(response).toContain("Error appending response"); + }); +}); + +describe("Get Agent Feedback Action", () => { + let mockWallet: jest.Mocked; + let actionProvider: ERC8004ReputationActionProvider; + let mockSdk: { searchFeedback: jest.Mock }; + let getAgent0SDKSpy: jest.SpyInstance; + + beforeEach(() => { + mockWallet = { + getPublicClient: jest.fn().mockReturnValue({ transport: { url: "https://rpc.example.com" } }), + getName: jest.fn().mockReturnValue("evm_wallet_provider"), + getNetwork: jest.fn().mockReturnValue({ + protocolFamily: "evm", + networkId: "base-sepolia", + }), + } as unknown as jest.Mocked; + + mockSdk = { + searchFeedback: jest.fn(), + }; + + getAgent0SDKSpy = jest.spyOn(utils, "getAgent0SDK").mockReturnValue(mockSdk as never); + actionProvider = erc8004ReputationActionProvider(); + }); + + afterEach(() => { + getAgent0SDKSpy.mockRestore(); + }); + + it("should successfully get agent feedback", async () => { + mockSdk.searchFeedback.mockResolvedValue([ + { + reviewer: MOCK_CLIENT_ADDRESS, + value: 85, + tags: ["quality"], + isRevoked: false, + createdAt: 1700000000, + }, + ]); + + const args = { + agentId: MOCK_AGENT_ID, + }; + + const response = await actionProvider.getAgentFeedback(mockWallet, args); + + expect(mockSdk.searchFeedback).toHaveBeenCalledWith( + { agentId: "84532:123", reviewers: undefined, includeRevoked: false }, + { minValue: undefined, maxValue: undefined }, + ); + expect(response).toContain("Feedback for Agent"); + expect(response).toContain(MOCK_AGENT_ID); + expect(response).toContain("Reviewer:"); + expect(response).toContain("Value: 85"); + expect(response).toContain("Tags: quality"); + }); + + it("should handle multiple feedback entries", async () => { + mockSdk.searchFeedback.mockResolvedValue([ + { reviewer: MOCK_CLIENT_ADDRESS, value: 85, tags: ["quality"], isRevoked: false }, + { + reviewer: "0xabcdef1234567890123456789012345678901234", + value: 90, + tags: ["speed"], + isRevoked: false, + }, + ]); + + const args = { + agentId: MOCK_AGENT_ID, + }; + + const response = await actionProvider.getAgentFeedback(mockWallet, args); + + expect(response).toContain("2 entries"); + expect(response).toContain("Value: 85"); + expect(response).toContain("Value: 90"); + }); + + it("should apply filters correctly", async () => { + mockSdk.searchFeedback.mockResolvedValue([]); + + const args = { + agentId: MOCK_AGENT_ID, + reviewerAddresses: [MOCK_CLIENT_ADDRESS], + minValue: 50, + maxValue: 100, + includeRevoked: true, + }; + + await actionProvider.getAgentFeedback(mockWallet, args); + + expect(mockSdk.searchFeedback).toHaveBeenCalledWith( + { agentId: "84532:123", reviewers: [MOCK_CLIENT_ADDRESS], includeRevoked: true }, + { minValue: 50, maxValue: 100 }, + ); + }); + + it("should handle agent with no feedback", async () => { + mockSdk.searchFeedback.mockResolvedValue([]); + + const args = { + agentId: MOCK_AGENT_ID, + }; + + const response = await actionProvider.getAgentFeedback(mockWallet, args); + + expect(response).toContain("has no feedback yet"); + }); + + it("should respect pageSize limit", async () => { + const manyFeedback = Array(30).fill({ + reviewer: MOCK_CLIENT_ADDRESS, + value: 85, + tags: ["quality"], + isRevoked: false, + }); + mockSdk.searchFeedback.mockResolvedValue(manyFeedback); + + const args = { + agentId: MOCK_AGENT_ID, + pageSize: 10, + }; + + const response = await actionProvider.getAgentFeedback(mockWallet, args); + + expect(response).toContain("10 entries"); + expect(response).toContain("20 more results available"); + }); + + it("should handle error when getting feedback fails", async () => { + mockSdk.searchFeedback.mockRejectedValue(new Error("SDK error")); + + const args = { + agentId: MOCK_AGENT_ID, + }; + + const response = await actionProvider.getAgentFeedback(mockWallet, args); + + expect(response).toContain("Error getting agent feedback"); + }); +}); + +describe("supportsNetwork", () => { + const actionProvider = erc8004ReputationActionProvider(); + + it("should return true for supported EVM networks", () => { + expect( + actionProvider.supportsNetwork({ + protocolFamily: "evm", + networkId: "base-sepolia", + }), + ).toBe(true); + }); + + it("should return false for non-EVM networks", () => { + expect( + actionProvider.supportsNetwork({ + protocolFamily: "solana", + }), + ).toBe(false); + }); + + it("should return false for unsupported EVM networks", () => { + expect( + actionProvider.supportsNetwork({ + protocolFamily: "evm", + networkId: "arbitrum-mainnet", + }), + ).toBe(false); + }); +}); diff --git a/typescript/agentkit/src/action-providers/erc8004/erc8004ReputationActionProvider.ts b/typescript/agentkit/src/action-providers/erc8004/erc8004ReputationActionProvider.ts new file mode 100644 index 000000000..c0507b950 --- /dev/null +++ b/typescript/agentkit/src/action-providers/erc8004/erc8004ReputationActionProvider.ts @@ -0,0 +1,305 @@ +import { z } from "zod"; +import { ActionProvider } from "../actionProvider"; +import { Network } from "../../network"; +import { CreateAction } from "../actionDecorator"; +import { EvmWalletProvider } from "../../wallet-providers"; +import { + GiveFeedbackSchema, + RevokeFeedbackSchema, + AppendResponseSchema, + GetAgentFeedbackSchema, +} from "./reputationSchemas"; +import { getChainIdFromNetwork, isNetworkSupported } from "./constants"; +import { PinataConfig, getAgent0SDK } from "./utils"; + +/** + * Configuration options for the ERC8004 Reputation Action Provider + */ +export interface ERC8004ReputationActionProviderConfig { + pinataJwt?: string; +} + +/** + * ERC8004ReputationActionProvider provides actions for the ERC-8004 Reputation Registry. + * This includes giving feedback, revoking feedback, responding to feedback, and querying reputation. + */ +export class ERC8004ReputationActionProvider extends ActionProvider { + private pinataConfig?: PinataConfig; + + /** + * Constructor for the ERC8004ReputationActionProvider. + * + * @param config - Optional configuration including Pinata JWT for IPFS uploads + */ + constructor(config?: ERC8004ReputationActionProviderConfig) { + super("erc8004_reputation", []); + if (config?.pinataJwt) { + this.pinataConfig = { jwt: config.pinataJwt }; + } + } + + /** + * Gives feedback to an agent. + * Core feedback data (value, tags, endpoint) is always stored onchain. + * When IPFS is configured (PINATA_JWT), an optional comment is also stored off-chain. + * + * @param walletProvider - The wallet provider to use for the transaction + * @param args - The feedback details + * @returns A message confirming the feedback submission + */ + @CreateAction({ + name: "give_feedback", + description: ` +Submits feedback for an agent on the ERC-8004 Reputation Registry. +The value + valueDecimals pair represents a signed fixed-point number. + + +Examples: +| tag1 | What it measures | Human value | value | valueDecimals | +|------------------|---------------------------|-------------|-------|---------------| +| starred | Quality rating (0-100) | 87/100 | 87 | 0 | +| reachable | Endpoint reachable (bool) | true | 1 | 0 | +| uptime | Endpoint uptime (%) | 99.77% | 9977 | 2 | +| successRate | Success rate (%) | 89% | 89 | 0 | +| responseTime | Response time (ms) | 560ms | 560 | 0 | +| revenues | Cumulative revenues (USD) | $560 | 560 | 0 | +| tradingYield | Yield (with tag2=period) | -3.2% | -32 | 1 | +`, + schema: GiveFeedbackSchema, + }) + async giveFeedback( + walletProvider: EvmWalletProvider, + args: z.infer, + ): Promise { + try { + const network = walletProvider.getNetwork(); + const chainId = getChainIdFromNetwork(network); + const clientAddress = walletProvider.getAddress(); + + const fullAgentId = args.agentId.includes(":") ? args.agentId : `${chainId}:${args.agentId}`; + + const sdk = getAgent0SDK(walletProvider, this.pinataConfig?.jwt); + + const isOwner = await sdk.isAgentOwner(fullAgentId, clientAddress); + if (isOwner) { + return "Error: You cannot give feedback to your own agent."; + } + + const decimals = args.valueDecimals ?? 0; + const humanValue = + decimals > 0 + ? (args.value / Math.pow(10, decimals)).toFixed(decimals) + : args.value.toString(); + + // Only pass the off-chain file when IPFS is configured + const feedbackFile = + this.pinataConfig && args.comment ? { comment: args.comment } : undefined; + + const handle = await sdk.giveFeedback( + fullAgentId, + humanValue, + args.tag1, + args.tag2, + undefined, + feedbackFile, + ); + + await handle.waitMined(); + + const commentLine = args.comment + ? this.pinataConfig + ? `\nComment: ${args.comment}` + : `\nComment: ${args.comment} (not persisted — configure PINATA_JWT for off-chain storage)` + : ""; + return `Feedback submitted successfully!\n\nAgent ID: ${args.agentId}\nValue: ${args.value}${decimals ? ` (${decimals} decimals)` : ""}\nTags: ${args.tag1 || "(none)"}${args.tag2 ? `, ${args.tag2}` : ""}${commentLine}\n\nTransaction hash: ${handle.hash}`; + } catch (error) { + return `Error giving feedback: ${error}`; + } + } + + /** + * Revokes previously submitted feedback. + * + * @param walletProvider - The wallet provider to use for the transaction + * @param args - The agentId and feedbackIndex to revoke + * @returns A message confirming the revocation + */ + @CreateAction({ + name: "revoke_feedback", + description: ` +Revokes feedback that you previously submitted. + +You can only revoke feedback that you gave (from your address). +The feedback index is returned when you submit feedback, or can be +found by reading the feedback entries. +`, + schema: RevokeFeedbackSchema, + }) + async revokeFeedback( + walletProvider: EvmWalletProvider, + args: z.infer, + ): Promise { + try { + const network = walletProvider.getNetwork(); + const chainId = getChainIdFromNetwork(network); + const fullAgentId = args.agentId.includes(":") ? args.agentId : `${chainId}:${args.agentId}`; + + const sdk = getAgent0SDK(walletProvider); + const handle = await sdk.revokeFeedback(fullAgentId, parseInt(args.feedbackIndex, 10)); + await handle.waitMined(); + + return `Feedback revoked successfully!\n\nAgent ID: ${args.agentId}\nFeedback Index: ${args.feedbackIndex}\nTransaction hash: ${handle.hash}`; + } catch (error) { + return `Error revoking feedback: ${error}`; + } + } + + /** + * Appends a response to feedback received by an agent you own. + * + * @param walletProvider - The wallet provider to use for the transaction + * @param args - The feedback details and response URI + * @returns A message confirming the response was appended + */ + @CreateAction({ + name: "append_response", + description: ` +Appends a response to feedback on the ERC-8004 Reputation Registry. + +Per ERC-8004 spec, anyone can append responses to feedback: +- Agent owners can respond to client feedback (e.g., showing a refund) +- Data intelligence aggregators can tag feedback as spam +- Auditors can add verification notes + +Parameters: +- responseHash: Optional KECCAK-256 hash for non-IPFS URIs + +The response is stored as a URI pointing to off-chain content. +`, + schema: AppendResponseSchema, + }) + async appendResponse( + walletProvider: EvmWalletProvider, + args: z.infer, + ): Promise { + try { + const network = walletProvider.getNetwork(); + const chainId = getChainIdFromNetwork(network); + const fullAgentId = args.agentId.includes(":") ? args.agentId : `${chainId}:${args.agentId}`; + const zeroHash = "0x" + "00".repeat(32); + + const sdk = getAgent0SDK(walletProvider); + const handle = await sdk.appendResponse( + fullAgentId, + args.clientAddress, + parseInt(args.feedbackIndex, 10), + { uri: args.responseUri, hash: args.responseHash ?? zeroHash }, + ); + await handle.waitMined(); + + return `Response appended successfully!\n\nAgent ID: ${args.agentId}\nClient: ${args.clientAddress}\nFeedback Index: ${args.feedbackIndex}\nResponse URI: ${args.responseUri}\n\nTransaction hash: ${handle.hash}`; + } catch (error) { + return `Error appending response: ${error}`; + } + } + + /** + * Gets feedback entries for an agent. + * + * @param walletProvider - The wallet provider to use for reading + * @param args - The agentId and optional filters + * @returns A message with the list of feedback entries + */ + @CreateAction({ + name: "get_agent_feedback", + description: ` +Gets feedback entries for an agent. Useful for: +- Viewing all feedback received by an agent +- Filtering by reviewer addresses, value range, or tags + +This is a read-only operation using indexed data for fast queries. +`, + schema: GetAgentFeedbackSchema, + }) + async getAgentFeedback( + walletProvider: EvmWalletProvider, + args: z.infer, + ): Promise { + try { + const sdk = getAgent0SDK(walletProvider); + const network = walletProvider.getNetwork(); + const chainId = getChainIdFromNetwork(network); + + // Handle agentId format - add chainId if not present + let agentId = args.agentId; + if (!agentId.includes(":")) { + agentId = `${chainId}:${agentId}`; + } + + const feedbackItems = await sdk.searchFeedback( + { + agentId, + reviewers: args.reviewerAddresses, + includeRevoked: args.includeRevoked ?? false, + }, + { + minValue: args.minValue, + maxValue: args.maxValue, + }, + ); + + // Apply pageSize limit (SDK may return all results) + const pageSize = args.pageSize ?? 20; + const limitedItems = feedbackItems.slice(0, pageSize); + + if (limitedItems.length === 0) { + return `Agent ${args.agentId} has no feedback yet.`; + } + + // Format the response + const feedbackList = limitedItems + .map(feedback => { + const reviewer = feedback.reviewer ? `Reviewer: ${feedback.reviewer}` : ""; + const value = feedback.value !== undefined ? `\n Value: ${feedback.value}` : ""; + const tags = feedback.tags?.length ? `\n Tags: ${feedback.tags.join(", ")}` : ""; + const endpoint = feedback.endpoint ? `\n Endpoint: ${feedback.endpoint}` : ""; + const revoked = + feedback.isRevoked !== undefined ? `\n Revoked: ${feedback.isRevoked}` : ""; + const timestamp = feedback.createdAt + ? `\n Created: ${new Date(feedback.createdAt * 1000).toISOString()}` + : ""; + + return `- ${reviewer}${value}${tags}${endpoint}${revoked}${timestamp}`; + }) + .join("\n\n"); + + let response = `Feedback for Agent ${args.agentId} (${limitedItems.length} entries):\n\n${feedbackList}`; + + if (feedbackItems.length > pageSize) { + response += `\n\n(${feedbackItems.length - pageSize} more results available, increase pageSize to see more)`; + } + + return response; + } catch (error) { + return `Error getting agent feedback: ${error}`; + } + } + + /** + * Checks if the action provider supports the given network. + * + * @param network - The network to check + * @returns True if the network is supported for ERC-8004 + */ + supportsNetwork = (network: Network) => + network.protocolFamily === "evm" && isNetworkSupported(network); +} + +/** + * Factory function to create an ERC8004ReputationActionProvider + * + * @param config - Optional configuration including Pinata JWT + * @returns A new ERC8004ReputationActionProvider instance + */ +export const erc8004ReputationActionProvider = (config?: ERC8004ReputationActionProviderConfig) => + new ERC8004ReputationActionProvider(config); diff --git a/typescript/agentkit/src/action-providers/erc8004/identitySchemas.ts b/typescript/agentkit/src/action-providers/erc8004/identitySchemas.ts new file mode 100644 index 000000000..58ebe01cf --- /dev/null +++ b/typescript/agentkit/src/action-providers/erc8004/identitySchemas.ts @@ -0,0 +1,166 @@ +import { z } from "zod"; + +/** + * Input schema for registering a new agent. + * All fields are optional - if not provided, defaults will be used: + * - name: "Agent " + * - description: "" (empty) + * - image: "" (empty) + */ +export const RegisterAgentSchema = z + .object({ + name: z.string().min(1).max(100).optional().describe("The name of the agent (optional)"), + description: z + .string() + .max(500) + .optional() + .describe("A description of the agent's capabilities (optional)"), + image: z + .string() + .optional() + .describe("Optional image URL (https:// or ipfs://) for the agent (optional)"), + }) + .strip() + .describe("Registers a new agent."); + +/** + * Input schema for updating agent metadata. + * Loads current metadata, applies updates and stores the result on IPFS or onchain as a data URI. + */ +export const UpdateAgentMetadataSchema = z + .object({ + agentId: z.string().describe("The agent ID to update"), + + // Presentation + name: z.string().min(1).max(100).optional().describe("New name for the agent"), + description: z.string().max(500).optional().describe("New description for the agent"), + image: z.string().optional().describe("New image URL for the agent"), + + // Endpoints + mcpEndpoint: z + .string() + .optional() + .describe( + "MCP server URL. Tools, prompts, and resources are auto-extracted from the endpoint.", + ), + a2aEndpoint: z + .string() + .optional() + .describe("A2A agent card URL. Skills are auto-extracted from the endpoint."), + ensName: z.string().optional().describe("ENS name for the agent (e.g., 'myagent.eth')"), + + // Status + active: z.boolean().optional().describe("Set the agent active or inactive"), + x402support: z.boolean().optional().describe("Enable or disable x402 payment support"), + + // Trust models (replaces all current trust settings when any flag is provided) + trustReputation: z.boolean().optional().describe("Enable reputation trust model"), + trustCryptoEconomic: z.boolean().optional().describe("Enable crypto-economic trust model"), + trustTeeAttestation: z.boolean().optional().describe("Enable TEE attestation trust model"), + + // OASF taxonomies + oasfSkills: z + .array(z.string()) + .optional() + .describe("OASF skill slugs to add (e.g., 'data_engineering/data_transformation_pipeline')"), + oasfDomains: z + .array(z.string()) + .optional() + .describe("OASF domain slugs to add (e.g., 'finance_and_business/investment_services')"), + + // Custom metadata + metadata: z + .record(z.string(), z.string()) + .optional() + .describe("Custom metadata key-value pairs to set on the agent"), + }) + .strip() + .describe("Updates agent configuration."); + +/** + * Input schema for getting all agents owned by a wallet address. + */ +export const GetOwnedAgentsSchema = z + .object({ + walletAddress: z + .string() + .optional() + .describe("The wallet address to query (optional, defaults to the connected wallet address)"), + pageSize: z + .number() + .min(1) + .max(100) + .optional() + .describe("Number of results per page (default: 50, max: 100)"), + cursor: z.string().optional().describe("Pagination cursor from a previous result"), + }) + .strip() + .describe( + "Gets all agent IDs owned by a wallet address using the agent0 SDK search functionality", + ); + +/** + * Input schema for searching agents by capabilities, attributes, or reputation. + * Uses the agent0 SDK's indexed subgraph and optional semantic search. + */ +export const SearchAgentsSchema = z + .object({ + keyword: z + .string() + .optional() + .describe( + "Natural-language semantic search query (e.g. 'financial data analysis agent'). Results are ranked by semantic relevance score.", + ), + name: z.string().optional().describe("Search by agent name (substring match)"), + description: z.string().optional().describe("Search by agent description (substring match)"), + require: z + .array(z.enum(["mcp", "a2a", "active", "x402"])) + .optional() + .describe( + "Status/capability requirements. ONLY add values the user explicitly asks for. " + + "'mcp' = must have MCP endpoint, 'a2a' = must have A2A endpoint, " + + "'active' = must be active, 'x402' = must support x402 payments. " + + "Leave empty or omit if the user does not mention any of these.", + ), + minReputation: z.number().optional().describe("Minimum average reputation score"), + maxReputation: z.number().optional().describe("Maximum average reputation score"), + minCount: z.number().min(0).optional().describe("Minimum feedback count"), + maxCount: z.number().min(0).optional().describe("Maximum feedback count"), + fromReviewers: z + .array(z.string()) + .optional() + .describe("Only consider feedback from these reviewer wallet addresses"), + reputationTag: z + .string() + .optional() + .describe("Only consider feedback matching this tag when filtering by reputation"), + sort: z + .string() + .optional() + .describe( + "Sort order, e.g. 'updatedAt:desc', 'averageValue:desc', 'name:asc'. " + + "Defaults to 'semanticScore:desc' for keyword searches, 'updatedAt:desc' otherwise.", + ), + limit: z + .number() + .min(1) + .max(50) + .default(10) + .describe("Maximum number of results to return (default: 10)"), + offset: z.number().min(0).optional().describe("Number of results to skip (default: 0)"), + }) + .strip() + .describe("Searches for registered agents by capabilities, attributes, or reputation"); + +/** + * Input schema for getting comprehensive agent information. + * Uses the agent0 SDK's indexed data for fast retrieval. + */ +export const GetAgentInfoSchema = z + .object({ + agentId: z.string().describe("The agent ID (format: agentId or chainId:agentId)"), + }) + .strip() + .describe( + "Gets comprehensive information about an agent including identity, endpoints, capabilities, and reputation", + ); diff --git a/typescript/agentkit/src/action-providers/erc8004/index.ts b/typescript/agentkit/src/action-providers/erc8004/index.ts new file mode 100644 index 000000000..e59ef28f6 --- /dev/null +++ b/typescript/agentkit/src/action-providers/erc8004/index.ts @@ -0,0 +1,17 @@ +// ERC-8004 Action Providers +export * from "./erc8004IdentityActionProvider"; +export * from "./erc8004ReputationActionProvider"; + +// Schemas +export * from "./identitySchemas"; +export * from "./reputationSchemas"; + +// Constants +export { SUPPORTED_NETWORK_IDS, getChainIdFromNetwork, isNetworkSupported } from "./constants"; + +export type { SupportedNetworkId } from "./constants"; + +// Shared utilities +export { ipfsToHttpUrl, jsonToDataUri, dataUriToJson } from "./utils"; + +export type { PinataConfig } from "./utils"; diff --git a/typescript/agentkit/src/action-providers/erc8004/reputationSchemas.ts b/typescript/agentkit/src/action-providers/erc8004/reputationSchemas.ts new file mode 100644 index 000000000..0f7828361 --- /dev/null +++ b/typescript/agentkit/src/action-providers/erc8004/reputationSchemas.ts @@ -0,0 +1,126 @@ +import { z } from "zod"; + +/** + * Input schema for giving feedback to an agent. + * + * The value + valueDecimals pair represents a signed fixed-point number (int128). + * Examples from ERC-8004 spec: + * - Quality rating 87/100: value=87, valueDecimals=0, tag1="starred" + * - Uptime 99.77%: value=9977, valueDecimals=2, tag1="uptime" + * - Response time 560ms: value=560, valueDecimals=0, tag1="responseTime" + * - Trading yield -3.2%: value=-32, valueDecimals=1, tag1="tradingYield" + * + * Core feedback data is always stored onchain. When IPFS is configured, an off-chain feedback file (e.g. comment) is also uploaded. + */ +export const GiveFeedbackSchema = z + .object({ + agentId: z.string().describe("The agent ID to give feedback for"), + value: z + .number() + .int() + .describe( + "The feedback value as a signed integer (int128). Combined with valueDecimals to form a fixed-point number. Examples: 87 (rating 87/100), 9977 with decimals=2 (99.77%), 560 (560ms), -32 with decimals=1 (-3.2%)", + ), + valueDecimals: z + .number() + .int() + .min(0) + .max(18) + .optional() + .default(0) + .describe( + "Number of decimal places for the value (0-18, default: 0). E.g., valueDecimals=2 means value=9977 represents 99.77", + ), + tag1: z + .string() + .max(50) + .optional() + .default("") + .describe( + "Primary category tag indicating what is being measured. Examples: 'starred' (quality 0-100), 'reachable' (binary 0/1), 'uptime' (%), 'successRate' (%), 'responseTime' (ms), 'revenues' (USD), 'tradingYield' (%)", + ), + tag2: z + .string() + .max(50) + .optional() + .default("") + .describe( + "Secondary category tag for more specific categorization (e.g., 'day', 'week', 'month' for yield periods)", + ), + comment: z + .string() + .max(500) + .optional() + .describe("Optional user review comment (max 500 characters)"), + }) + .strip() + .describe("Submits feedback for an agent on the ERC-8004 Reputation Registry."); + +/** + * Input schema for revoking feedback. + */ +export const RevokeFeedbackSchema = z + .object({ + agentId: z.string().describe("The agent ID the feedback was given to"), + feedbackIndex: z + .string() + .describe("The index of the feedback to revoke (from when you gave it)"), + }) + .strip() + .describe("Revokes previously submitted feedback"); + +/** + * Input schema for appending a response to feedback. + * Anyone can append responses (e.g., agent owner showing a refund, data intelligence aggregators tagging spam). + */ +export const AppendResponseSchema = z + .object({ + agentId: z.string().describe("The agent ID that received the feedback"), + clientAddress: z + .string() + .regex(/^0x[a-fA-F0-9]{40}$/, "Invalid Ethereum address format") + .describe("The address of the client who gave the feedback"), + feedbackIndex: z.string().describe("The index of the feedback to respond to"), + responseUri: z.string().describe("URI to the response content (e.g., ipfs://Qm... link)"), + responseHash: z + .string() + .regex(/^0x[a-fA-F0-9]{64}$/, "Invalid bytes32 hash format") + .optional() + .describe( + "Optional KECCAK-256 hash of the responseUri content for integrity verification. Not required for IPFS URIs (content-addressed).", + ), + }) + .strip() + .describe( + "Appends a response to feedback. Anyone can respond (agent owners, data aggregators, etc.)", + ); + +/** + * Input schema for getting an agent's feedback entries. + * Uses the agent0 SDK's indexed subgraph for fast queries. + */ +export const GetAgentFeedbackSchema = z + .object({ + agentId: z + .string() + .describe("The agent ID to get feedback for (format: agentId or chainId:agentId)"), + reviewerAddresses: z + .array(z.string()) + .optional() + .describe("Filter by reviewer wallet addresses"), + minValue: z.number().optional().describe("Minimum feedback value"), + maxValue: z.number().optional().describe("Maximum feedback value"), + tag1: z.string().optional().describe("Filter by primary tag"), + includeRevoked: z + .boolean() + .optional() + .describe("Include revoked feedback entries (default: false)"), + pageSize: z + .number() + .min(1) + .max(50) + .optional() + .describe("Number of results per page (default: 20)"), + }) + .strip() + .describe("Gets feedback entries for an agent with optional filters"); diff --git a/typescript/agentkit/src/action-providers/erc8004/utils.ts b/typescript/agentkit/src/action-providers/erc8004/utils.ts new file mode 100644 index 000000000..291d6ab4b --- /dev/null +++ b/typescript/agentkit/src/action-providers/erc8004/utils.ts @@ -0,0 +1,164 @@ +/** + * Shared utilities for ERC-8004 action providers + */ + +import { + SDK as Agent0SDK, + Agent as Agent0Agent, + IDENTITY_REGISTRY_ABI as SDK_IDENTITY_ABI, +} from "agent0-sdk"; +import type { RegistrationFile } from "agent0-sdk"; +import { EvmWalletProvider } from "../../wallet-providers"; +import { getChainIdFromNetwork } from "./constants"; + +/** + * Configuration for Pinata IPFS service + */ +export interface PinataConfig { + jwt: string; +} + +/** + * Creates an Agent0SDK instance from a wallet provider. + * + * + * The wallet provider is bridged via {@link toEip1193Provider} so the SDK can + * send transactions through agentkit's wallet abstraction (including smart wallets). + * + * @param walletProvider - The wallet provider to extract chain/RPC/signer from + * @param pinataJwt - Optional Pinata JWT for IPFS uploads + * @returns An initialized Agent0SDK instance + * @throws Error if unable to determine RPC URL + */ +export function getAgent0SDK(walletProvider: EvmWalletProvider, pinataJwt?: string): Agent0SDK { + const network = walletProvider.getNetwork(); + const chainId = getChainIdFromNetwork(network); + + const publicClient = walletProvider.getPublicClient(); + const rpcUrl = publicClient.transport.url; + + if (!rpcUrl) { + throw new Error("Unable to determine RPC URL from wallet provider"); + } + + return new Agent0SDK({ + chainId, + rpcUrl, + walletProvider: walletProvider.toEip1193Provider(), + ...(pinataJwt ? { ipfs: "pinata" as const, pinataJwt } : {}), + }); +} + +/** + * Converts an IPFS URI to an HTTP gateway URL + * + * @param ipfsUri - The IPFS URI (ipfs://...) + * @param gateway - The gateway to use (default: ipfs.io) + * @returns The HTTP gateway URL + */ +export function ipfsToHttpUrl(ipfsUri: string, gateway = "ipfs.io"): string { + if (!ipfsUri.startsWith("ipfs://")) { + return ipfsUri; + } + const cid = ipfsUri.replace("ipfs://", ""); + return `https://${gateway}/ipfs/${cid}`; +} + +/** + * Encodes a JSON object as a base64-encoded data: URI. + * + * Per ERC-8004 spec this is a valid agentURI for fully on-chain metadata: + * data:application/json;base64,eyJ0eXBlIjoi... + * + * @param json - The JSON-serialisable object + * @returns A data URI string + */ +export function jsonToDataUri(json: object): string { + const jsonString = JSON.stringify(json); + const base64 = Buffer.from(jsonString).toString("base64"); + return `data:application/json;base64,${base64}`; +} + +/** + * Decodes a base64-encoded data: URI back to a JSON object. + * + * @param dataUri - A data URI of the form data:application/json;base64,... + * @returns The decoded JSON object + */ +export function dataUriToJson>(dataUri: string): T { + const match = dataUri.match(/^data:application\/json;base64,(.+)$/); + if (!match) { + throw new Error( + `Invalid data URI: expected data:application/json;base64,... but got: ${dataUri.slice(0, 60)}`, + ); + } + const jsonString = Buffer.from(match[1], "base64").toString("utf-8"); + return JSON.parse(jsonString) as T; +} + +/** + * Loads an agent via the SDK. Falls back to reading a data: URI from the + * contract and constructing the Agent manually (the SDK cannot read data URIs). + * + * @param sdk - The Agent0SDK instance + * @param walletProvider - The wallet provider used to read the contract + * @param fullAgentId - The fully-qualified agent ID (chainId:tokenId) + * @param tokenId - The numeric token ID string + * @returns The loaded or hydrated Agent0Agent instance + */ +export async function loadOrHydrateAgent( + sdk: ReturnType, + walletProvider: EvmWalletProvider, + fullAgentId: string, + tokenId: string, +): Promise { + try { + return await sdk.loadAgent(fullAgentId); + } catch { + // loadAgent fails for data: URIs — hydrate manually + } + + const registryAddress = sdk.identityRegistryAddress(); + const tokenUri = (await walletProvider.readContract({ + address: registryAddress as `0x${string}`, + abi: SDK_IDENTITY_ABI, + functionName: "tokenURI", + args: [BigInt(tokenId)], + })) as string; + + let regFile: RegistrationFile; + if (tokenUri && tokenUri.startsWith("data:")) { + const decoded = dataUriToJson>(tokenUri); + regFile = { + name: (decoded.name as string) || "", + description: (decoded.description as string) || "", + image: decoded.image as string | undefined, + endpoints: (decoded.endpoints as RegistrationFile["endpoints"]) || [], + trustModels: (decoded.trustModels as RegistrationFile["trustModels"]) || [], + owners: (decoded.owners as string[]) || [], + operators: (decoded.operators as string[]) || [], + active: (decoded.active as boolean) ?? false, + x402support: (decoded.x402support as boolean) ?? false, + metadata: (decoded.metadata as Record) || {}, + updatedAt: (decoded.updatedAt as number) || Math.floor(Date.now() / 1000), + agentId: fullAgentId, + agentURI: tokenUri, + }; + } else { + regFile = { + name: "", + description: "", + endpoints: [], + trustModels: [], + owners: [], + operators: [], + active: false, + x402support: false, + metadata: {}, + updatedAt: Math.floor(Date.now() / 1000), + agentId: fullAgentId, + }; + } + + return new Agent0Agent(sdk, regFile); +} diff --git a/typescript/agentkit/src/action-providers/index.ts b/typescript/agentkit/src/action-providers/index.ts index 7f2b0233a..cdcab78a8 100644 --- a/typescript/agentkit/src/action-providers/index.ts +++ b/typescript/agentkit/src/action-providers/index.ts @@ -15,6 +15,7 @@ export * from "./defillama"; export * from "./enso"; export * from "./erc20"; export * from "./erc721"; +export * from "./erc8004"; export * from "./farcaster"; export * from "./jupiter"; export * from "./messari"; diff --git a/typescript/agentkit/src/action-providers/x402/x402ActionProvider.ts b/typescript/agentkit/src/action-providers/x402/x402ActionProvider.ts index 337faeb1d..2ea3e1361 100644 --- a/typescript/agentkit/src/action-providers/x402/x402ActionProvider.ts +++ b/typescript/agentkit/src/action-providers/x402/x402ActionProvider.ts @@ -849,7 +849,22 @@ These are the only services that can be called using make_http_request or make_h const client = new x402Client(); if (walletProvider instanceof EvmWalletProvider) { - const signer = walletProvider.toSigner(); + const account = walletProvider.toSigner(); + const signer = { + ...account, + readContract: (args: { + address: `0x${string}`; + abi: readonly unknown[]; + functionName: string; + args?: readonly unknown[]; + }) => + walletProvider.readContract({ + address: args.address, + abi: args.abi as never, + functionName: args.functionName as never, + args: args.args as never, + }), + }; registerExactEvmScheme(client, { signer }); } else if (walletProvider instanceof SvmWalletProvider) { const signer = await walletProvider.toSigner(); diff --git a/typescript/agentkit/src/wallet-providers/evmWalletProvider.ts b/typescript/agentkit/src/wallet-providers/evmWalletProvider.ts index 04ce421e8..0555cede5 100644 --- a/typescript/agentkit/src/wallet-providers/evmWalletProvider.ts +++ b/typescript/agentkit/src/wallet-providers/evmWalletProvider.ts @@ -13,8 +13,16 @@ import { Address, PublicClient, LocalAccount, + numberToHex, } from "viem"; +/** + * Minimal EIP-1193 provider interface. + */ +export interface EIP1193Provider { + request(args: { method: string; params?: unknown[] | Record }): Promise; +} + /** * EvmWalletProvider is the abstract base class for all EVM wallet providers. * @@ -45,6 +53,49 @@ export abstract class EvmWalletProvider extends WalletProvider { }); } + /** + * Convert the wallet provider to a EIP-1193 provider. + * + * @returns The EIP-1193 provider. + */ + toEip1193Provider(): EIP1193Provider { + return { + request: async (args: { method: string; params?: any }) => { + switch (args.method) { + case "eth_accounts": + case "eth_requestAccounts": + return [this.getAddress()]; + + case "eth_chainId": + return numberToHex(Number(this.getNetwork().chainId)); + + case "eth_sendTransaction": { + const txParams = (args.params as any[])?.[0] ?? {}; + const hash = await this.sendTransaction(txParams); + // Wait for the transaction receipt so that a userOpHash is resolved to a real transaction hash for CDP smart wallets. + const receipt = await this.waitForTransactionReceipt(hash); + return receipt.transactionHash ?? hash; + } + + case "personal_sign": { + const [message] = args.params as [string]; + return this.signMessage(message); + } + + case "eth_signTypedData_v4": { + const [, typedDataJson] = args.params as [string, string]; + const typedData = + typeof typedDataJson === "string" ? JSON.parse(typedDataJson) : typedDataJson; + return this.signTypedData(typedData); + } + + default: + return this.getPublicClient().request(args as any); + } + }, + }; + } + /** * Sign a raw hash. * diff --git a/typescript/examples/langchain-cdp-chatbot/chatbot.ts b/typescript/examples/langchain-cdp-chatbot/chatbot.ts index 8fa2d7b48..4c3c2d851 100644 --- a/typescript/examples/langchain-cdp-chatbot/chatbot.ts +++ b/typescript/examples/langchain-cdp-chatbot/chatbot.ts @@ -10,6 +10,8 @@ import { CdpSolanaWalletProvider, splActionProvider, x402ActionProvider, + erc8004IdentityActionProvider, + erc8004ReputationActionProvider, } from "@coinbase/agentkit"; import { getLangChainTools } from "@coinbase/agentkit-langchain"; import { HumanMessage } from "@langchain/core/messages"; @@ -136,6 +138,8 @@ async function initializeAgent() { erc20ActionProvider(), erc721ActionProvider(), x402ActionProvider(x402Config), + erc8004IdentityActionProvider({ pinataJwt: process.env.PINATA_JWT }), + erc8004ReputationActionProvider({ pinataJwt: process.env.PINATA_JWT }), ] : isSolanaWalletProvider(walletProvider) ? [splActionProvider(), x402ActionProvider(x402Config)] diff --git a/typescript/pnpm-lock.yaml b/typescript/pnpm-lock.yaml index 394575eb5..6944f8619 100644 --- a/typescript/pnpm-lock.yaml +++ b/typescript/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: devDependencies: '@changesets/changelog-github': specifier: ^0.5.1 - version: 0.5.1 + version: 0.5.1(encoding@0.1.13) '@changesets/cli': specifier: ^2.28.1 version: 2.28.1 @@ -73,13 +73,13 @@ importers: version: 2.2.0(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@3.24.2) '@coinbase/cdp-sdk': specifier: ^1.38.0 - version: 1.38.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) + version: 1.38.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) '@coinbase/coinbase-sdk': specifier: ^0.20.0 version: 0.20.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2) '@coinbase/x402': specifier: ^2.1.0 - version: 2.1.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) + version: 2.1.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) '@ensofinance/sdk': specifier: ^2.0.6 version: 2.0.6 @@ -91,28 +91,28 @@ importers: version: 2.18.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@privy-io/server-auth': specifier: 1.18.4 - version: 1.18.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)) + version: 1.18.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)) '@solana/kit': specifier: ^2.1.1 version: 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@solana/spl-token': specifier: ^0.4.12 - version: 0.4.13(@solana/web3.js@1.98.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) + version: 0.4.13(@solana/web3.js@1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) '@solana/web3.js': specifier: ^1.98.1 - version: 1.98.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) + version: 1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10) '@vaultsfyi/sdk': specifier: ^2.1.9 - version: 2.1.9(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 2.1.9(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@x402/evm': - specifier: ^2.2.0 + specifier: 2.2.0 version: 2.2.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) '@x402/fetch': - specifier: ^2.2.0 + specifier: 2.2.0 version: 2.2.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) '@x402/svm': - specifier: ^2.2.0 - version: 2.2.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) + specifier: 2.2.0 + version: 2.2.0(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) '@zerodev/ecdsa-validator': specifier: ^5.4.5 version: 5.4.5(@zerodev/sdk@5.4.28(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)) @@ -128,6 +128,9 @@ importers: '@zoralabs/protocol-deployments': specifier: 0.6.1 version: 0.6.1 + agent0-sdk: + specifier: ^1.5.3 + version: 1.5.3(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.11.0)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2) bs58: specifier: ^4.0.1 version: 4.0.1 @@ -136,7 +139,7 @@ importers: version: 2.1.0 clanker-sdk: specifier: ^4.1.18 - version: 4.1.19(@types/node@20.17.27)(typescript@5.8.2)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)) + version: 4.1.19(@types/node@22.13.14)(typescript@5.8.2)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)) decimal.js: specifier: ^10.5.0 version: 10.5.0 @@ -191,7 +194,7 @@ importers: version: 14.1.1 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.17.27)(ts-node@10.9.2(@types/node@20.17.27)(typescript@5.8.2)) + version: 29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) mock-fs: specifier: ^5.2.0 version: 5.5.0 @@ -209,7 +212,7 @@ importers: version: 2.4.2 ts-jest: specifier: ^29.2.5 - version: 29.3.0(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@20.17.27)(ts-node@10.9.2(@types/node@20.17.27)(typescript@5.8.2)))(typescript@5.8.2) + version: 29.3.0(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)))(typescript@5.8.2) tsd: specifier: ^0.31.2 version: 0.31.2 @@ -270,13 +273,13 @@ importers: version: link:../../framework-extensions/langchain '@langchain/core': specifier: ^0.3.19 - version: 0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + version: 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) '@langchain/langgraph': specifier: ^0.2.21 - version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2)) + version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2)) '@langchain/openai': specifier: ^0.3.14 - version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) dotenv: specifier: ^16.4.5 version: 16.4.7 @@ -301,13 +304,13 @@ importers: version: link:../../framework-extensions/langchain '@langchain/core': specifier: ^0.3.19 - version: 0.3.30(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) + version: 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) '@langchain/langgraph': specifier: ^0.2.21 - version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.25.56)) + version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.25.56)) '@langchain/openai': specifier: ^0.3.14 - version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) dotenv: specifier: ^16.4.5 version: 16.4.7 @@ -335,13 +338,13 @@ importers: version: link:../../framework-extensions/langchain '@langchain/core': specifier: 0.3.30 - version: 0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + version: 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) '@langchain/langgraph': specifier: ^0.2.39 - version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2)) + version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2)) '@langchain/openai': specifier: ^0.3.16 - version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) dotenv: specifier: ^16.4.5 version: 16.4.7 @@ -366,13 +369,13 @@ importers: version: link:../../framework-extensions/langchain '@langchain/core': specifier: ^0.3.19 - version: 0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) + version: 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) '@langchain/langgraph': specifier: ^0.2.21 - version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.25.56)) + version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.25.56)) '@langchain/openai': specifier: ^0.3.14 - version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) dotenv: specifier: ^16.4.5 version: 16.4.7 @@ -397,13 +400,13 @@ importers: version: link:../../framework-extensions/langchain '@langchain/core': specifier: ^0.3.19 - version: 0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + version: 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) '@langchain/langgraph': specifier: ^0.2.21 - version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2)) + version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2)) '@langchain/openai': specifier: ^0.3.14 - version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) dotenv: specifier: ^16.4.5 version: 16.4.7 @@ -428,16 +431,16 @@ importers: version: link:../../framework-extensions/langchain '@langchain/core': specifier: ^0.3.19 - version: 0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + version: 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) '@langchain/langgraph': specifier: ^0.2.21 - version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2)) + version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2)) '@langchain/openai': specifier: ^0.3.14 - version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@solana/web3.js': specifier: ^1.98.0 - version: 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + version: 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bs58: specifier: ^4.0.1 version: 4.0.1 @@ -465,13 +468,13 @@ importers: version: link:../../framework-extensions/langchain '@langchain/core': specifier: ^0.3.19 - version: 0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + version: 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) '@langchain/langgraph': specifier: ^0.2.21 - version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2)) + version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2)) '@langchain/openai': specifier: ^0.3.14 - version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) dotenv: specifier: ^16.4.5 version: 16.4.7 @@ -496,13 +499,13 @@ importers: version: link:../../framework-extensions/langchain '@langchain/core': specifier: ^0.3.19 - version: 0.3.30(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + version: 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) '@langchain/langgraph': specifier: ^0.2.21 - version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2)) + version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2)) '@langchain/openai': specifier: ^0.3.14 - version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@xmtp/agent-sdk': specifier: ^1.1.4 version: 1.1.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2) @@ -542,13 +545,13 @@ importers: version: link:../../framework-extensions/langchain '@langchain/core': specifier: ^0.3.19 - version: 0.3.30(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + version: 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) '@langchain/langgraph': specifier: ^0.2.21 - version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2)) + version: 0.2.59(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2)) '@langchain/openai': specifier: ^0.3.14 - version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 0.3.17(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) dotenv: specifier: ^16.4.5 version: 16.4.7 @@ -600,6 +603,22 @@ importers: specifier: ^4.7.1 version: 4.19.3 + examples/register: + dependencies: + '@coinbase/agentkit': + specifier: latest + version: 0.10.4(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(@types/node@20.17.27)(abitype@1.2.3(typescript@5.8.2)(zod@3.25.56))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(graphql@16.11.0)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + dotenv: + specifier: ^16.4.5 + version: 16.4.7 + viem: + specifier: ^2.21.19 + version: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + devDependencies: + tsx: + specifier: ^4.7.1 + version: 4.19.3 + examples/vercel-ai-sdk-smart-wallet-chatbot: dependencies: '@ai-sdk/openai': @@ -635,7 +654,7 @@ importers: dependencies: '@langchain/core': specifier: ^0.3.19 - version: 0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + version: 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) zod: specifier: ^3.22.4 version: 3.24.2 @@ -904,6 +923,12 @@ packages: '@cfworker/json-schema@4.1.1': resolution: {integrity: sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==} + '@chainsafe/is-ip@2.1.0': + resolution: {integrity: sha512-KIjt+6IfysQ4GCv66xihEitBjvhU/bixbbbFxdJ1sqCp4uJ0wuZiYBPhksZoy4lfaF0k9cwNzY5upEW/VWdw3w==} + + '@chainsafe/netmask@2.0.0': + resolution: {integrity: sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==} + '@changesets/apply-release-plan@7.0.10': resolution: {integrity: sha512-wNyeIJ3yDsVspYvHnEz1xQDq18D9ifed3lI+wxRQRK4pArUcuHgCTrHv0QRnnwjhVCQACxZ+CBih3wgOct6UXw==} @@ -965,6 +990,9 @@ packages: '@changesets/write@0.4.0': resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + '@coinbase/agentkit@0.10.4': + resolution: {integrity: sha512-1ZnjY6ohuBXqseZDUhrkFnlU+UjNBr9TeZjpa4wjR8pGQq2RhhVKXQSe5UOFpitgtK3z8ytsQXTHwKRohkExKw==} + '@coinbase/cdp-sdk@1.38.1': resolution: {integrity: sha512-UOGDjv8KM+bdKF3nl/CxLytcN2SNXgKlQVA6hfAvQNPSRBW3VE4sx7OdVszDqO7fkVcxNZu91Qwfi+ARE8H76g==} @@ -977,6 +1005,9 @@ packages: '@coinbase/wallet-sdk@4.3.6': resolution: {integrity: sha512-4q8BNG1ViL4mSAAvPAtpwlOs1gpC+67eQtgIwNvT3xyeyFFd+guwkc8bcX5rTmQhXpqnhzC4f0obACbP9CqMSA==} + '@coinbase/x402@0.6.4': + resolution: {integrity: sha512-T0tNU8/oZ64GaKC3dbGcOFHqYO0BjII/uZeC/tAS9HOqhWBvewhoa0rzPzaE8SHeKOIwX2YpbFXdG0Hyh0d4mw==} + '@coinbase/x402@2.1.0': resolution: {integrity: sha512-aKeM+cz//+FjzPVu/zgz7830x0KLtKarwCyxoeC71QgCn+Xcf0NhFpn3Qyw0H496y5YOuR/IQ67gP8DZ/hXFqQ==} @@ -984,6 +1015,10 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + '@dnsquery/dns-packet@6.1.1': + resolution: {integrity: sha512-WXTuFvL3G+74SchFAtz3FgIYVOe196ycvGsMgvSH/8Goptb1qpIQtIuM4SOK9G9lhMWYpHxnXyy544ZhluFOew==} + engines: {node: '>=6'} + '@ecies/ciphers@0.2.4': resolution: {integrity: sha512-t+iX+Wf5nRKyNzk8dviW3Ikb/280+aEJAnw9YXvCp2tYGPSkMki+NRY+8aNLmVFv3eNtMdvViPNOPxS8SZNP+w==} engines: {bun: '>=1', deno: '>=2', node: '>=16'} @@ -1314,6 +1349,18 @@ packages: '@types/node': optional: true + '@ipld/dag-cbor@9.2.5': + resolution: {integrity: sha512-84wSr4jv30biui7endhobYhXBQzQE4c/wdoWlFrKcfiwH+ofaPg8fwsM8okX9cOzkkrsAsNdDyH3ou+kiLquwQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@ipld/dag-json@10.2.6': + resolution: {integrity: sha512-51yc5azhmkvc9mp2HV/vtJ8SlgFXADp55wAPuuAjQZ+yPurAYuTVddS3ke5vT4sjcd4DbE+DWjsMZGXjFB2cuA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@ipld/dag-pb@4.1.5': + resolution: {integrity: sha512-w4PZ2yPqvNmlAir7/2hsCRMqny1EY5jj26iZcSgxREJexmbAc2FI21jp26MqiNdfgAxvkCnf2N/TJI18GaDNwA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@istanbuljs/load-nyc-config@1.1.0': resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -1452,6 +1499,44 @@ packages: peerDependencies: '@langchain/core': '>=0.3.29 <0.4.0' + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + + '@libp2p/interface-connection@4.0.0': + resolution: {integrity: sha512-6xx/NmEc84HX7QmsjSC3hHredQYjHv4Dkf4G27adAPf+qN+vnPxmQ7gaTnk243a0++DOFTbZ2gKX/15G2B6SRg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/interface-keychain@2.0.5': + resolution: {integrity: sha512-mb7QNgn9fIvC7CaJCi06GJ+a6DN6RVT9TmEi0NmedZGATeCArPeWWG7r7IfxNVXb9cVOOE1RzV1swK0ZxEJF9Q==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/interface-peer-id@2.0.2': + resolution: {integrity: sha512-9pZp9zhTDoVwzRmp0Wtxw0Yfa//Yc0GqBCJi3EznBDE6HGIAVvppR91wSh2knt/0eYg0AQj7Y35VSesUTzMCUg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/interface-peer-info@1.0.10': + resolution: {integrity: sha512-HQlo8NwQjMyamCHJrnILEZz+YwEOXCB2sIIw3slIrhVUYeYlTaia1R6d9umaAeLHa255Zmdm4qGH8rJLRqhCcg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/interface-pubsub@3.0.7': + resolution: {integrity: sha512-+c74EVUBTfw2sx1GE/z/IjsYO6dhur+ukF0knAppeZsRQ1Kgg6K5R3eECtT28fC6dBWLjFpAvW/7QGfiDAL4RA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/interface@3.1.0': + resolution: {integrity: sha512-RE7/XyvC47fQBe1cHxhMvepYKa5bFCUyFrrpj8PuM0E7JtzxU7F+Du5j4VXbg2yLDcToe0+j8mB7jvwE2AThYw==} + + '@libp2p/interfaces@3.3.2': + resolution: {integrity: sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/logger@2.1.1': + resolution: {integrity: sha512-2UbzDPctg3cPupF6jrv6abQnAUTrbLybNOj0rmmrdGm1cN2HJ1o/hBu0sXuq4KF9P1h/eVRn1HIRbVIEKnEJrA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/peer-id@2.0.4': + resolution: {integrity: sha512-gcOsN8Fbhj6izIK+ejiWsqiqKeJ2yWPapi/m55VjOvDa52/ptQzZszxQP8jUk93u36de92ATFXDfZR/Bi6eeUQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@lit-labs/ssr-dom-shim@1.4.0': resolution: {integrity: sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw==} @@ -1549,6 +1634,22 @@ packages: resolution: {integrity: sha512-e06W7SwrontJDHwCawNO5SGxG+nU9AAx+jpHHZqGl/WrDBdWOpvirC+s58VpJTB5QemI4jTRcjWT4Pt3Q1NPQQ==} engines: {node: '>=18'} + '@multiformats/dns@1.0.13': + resolution: {integrity: sha512-yr4bxtA3MbvJ+2461kYIYMsiiZj/FIqKI64hE4SdvWJUdWF9EtZLar38juf20Sf5tguXKFUruluswAO6JsjS2w==} + + '@multiformats/multiaddr-to-uri@9.0.8': + resolution: {integrity: sha512-4eiN5iEiQfy2A98BxekUfW410L/ivg0sgjYSgSqmklnrBhK+QyMz4yqgfkub8xDTXOc7O5jp4+LVyM3ZqMeWNw==} + + '@multiformats/multiaddr@11.6.1': + resolution: {integrity: sha512-doST0+aB7/3dGK9+U5y3mtF3jq85KGbke1QiH0KE1F5mGQ9y56mFebTeu2D9FNOm+OT6UHb8Ss8vbSnpGjeLNw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@multiformats/multiaddr@12.5.1': + resolution: {integrity: sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==} + + '@multiformats/multiaddr@13.0.1': + resolution: {integrity: sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==} + '@noble/ciphers@1.2.1': resolution: {integrity: sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==} engines: {node: ^14.21.3 || >=16} @@ -1659,6 +1760,7 @@ packages: '@privy-io/server-auth@1.18.4': resolution: {integrity: sha512-FLSQRbzHhxjbkHVCjD+8Iw3+f4U3bJKj97sue9nOmumrpmxJkHhCDusqDR7le7yKrsntHYcOSNAX34FpjkMjQg==} + deprecated: This package is deprecated. If you are looking for the latest features and support, use @privy-io/node instead. peerDependencies: viem: ^2 peerDependenciesMeta: @@ -2588,6 +2690,9 @@ packages: '@types/lodash@4.17.20': resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} + '@types/minimatch@3.0.5': + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + '@types/minimist@1.2.5': resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} @@ -2765,6 +2870,7 @@ packages: '@walletconnect/ethereum-provider@2.21.1': resolution: {integrity: sha512-SSlIG6QEVxClgl1s0LMk4xr2wg4eT3Zn/Hb81IocyqNSGfXpjtawWxKxiC5/9Z95f1INyBD6MctJbL/R1oBwIw==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' '@walletconnect/events@1.0.1': resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} @@ -2809,9 +2915,11 @@ packages: '@walletconnect/sign-client@2.21.0': resolution: {integrity: sha512-z7h+PeLa5Au2R591d/8ZlziE0stJvdzP9jNFzFolf2RG/OiXulgFKum8PrIyXy+Rg2q95U9nRVUF9fWcn78yBA==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' '@walletconnect/sign-client@2.21.1': resolution: {integrity: sha512-QaXzmPsMnKGV6tc4UcdnQVNOz4zyXgarvdIQibJ4L3EmLat73r5ZVl4c0cCOcoaV7rgM9Wbphgu5E/7jNcd3Zg==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' '@walletconnect/time@1.0.2': resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} @@ -2824,9 +2932,11 @@ packages: '@walletconnect/universal-provider@2.21.0': resolution: {integrity: sha512-mtUQvewt+X0VBQay/xOJBvxsB3Xsm1lTwFjZ6WUwSOTR1X+FNb71hSApnV5kbsdDIpYPXeQUbGt2se1n5E5UBg==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' '@walletconnect/universal-provider@2.21.1': resolution: {integrity: sha512-Wjx9G8gUHVMnYfxtasC9poGm8QMiPCpXpbbLFT+iPoQskDDly8BwueWnqKs4Mx2SdIAWAwuXeZ5ojk5qQOxJJg==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' '@walletconnect/utils@2.21.0': resolution: {integrity: sha512-zfHLiUoBrQ8rP57HTPXW7rQMnYxYI4gT9yTACxVW6LhIFROTF6/ytm5SKNoIvi4a5nX5dfXG4D9XwQUCu8Ilig==} @@ -2843,8 +2953,8 @@ packages: '@x402/core@2.0.0': resolution: {integrity: sha512-tgC8Ujj8Bi9zU1318RAOcagffaHRMPupqj0tlmcOm4j/a/iWGoN58SIpqFV98qkZi7z6BpFAsScCyXnmaDvIyQ==} - '@x402/core@2.2.0': - resolution: {integrity: sha512-UyPX7UVrqCyFTMeDWAx9cn9LvcaRlUoAknSehuxJ07vXLVhC7Wx5R1h2CV12YkdB+hE6K48Qvfd4qrvbpqqYfw==} + '@x402/core@2.4.0': + resolution: {integrity: sha512-g4K5dAVjevQftxCcpFlUDjO2AHE43FkO43VxwLCQ8ET3ki4aj2fzCcgvnXEj2eloJoocFS/Evt4pSTnP/4cFJw==} '@x402/evm@2.2.0': resolution: {integrity: sha512-fJaIS97Ir+ykkxLUdI+/cFiQFyruWukJbZ3PLo8518n6IKP9B7HqsJ1cUMRWd/fHFXNqOEAo6tKFW4wHKOxd2A==} @@ -2987,6 +3097,9 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} + abort-error@1.0.1: + resolution: {integrity: sha512-fxqCblJiIPdSXIUrxI0PL+eJG49QdP9SQ70qtB65MVAoMr2rASlOyAbJFOylfB467F/f+5BCLJJq58RYi7mGfg==} + accepts@2.0.0: resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} @@ -3016,6 +3129,10 @@ packages: aes-js@4.0.0-beta.5: resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + agent0-sdk@1.5.3: + resolution: {integrity: sha512-Q7y2aY9OkcdfijrnJVToa3artLlXZIyDLU1hlKNnHlQIQQ99BA0uu5d395vET7nNwfpj74DsC+XnXXII8tGh1g==} + engines: {node: '>=22.0.0'} + agentkeepalive@4.6.0: resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} @@ -3057,6 +3174,9 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + any-signal@3.0.1: + resolution: {integrity: sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -3230,6 +3350,9 @@ packages: bl@5.1.0: resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + blob-to-it@2.0.10: + resolution: {integrity: sha512-I39vO57y+LBEIcAV7fif0sn96fYOYVqrPiOD+53MxQGv4DBgt1/HHZh0BHheWx2hVe24q5LTSXxqeV1Y3Nzkgg==} + bn.js@4.11.6: resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} @@ -3265,6 +3388,12 @@ packages: brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + browser-readablestream-to-it@1.0.3: + resolution: {integrity: sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==} + + browser-readablestream-to-it@2.0.10: + resolution: {integrity: sha512-I/9hEcRtjct8CzD9sVo9Mm4ntn0D+7tOVrjbPl69XAoOfgJ8NBdOQU+WX+5SHhcELJDb14mWt7zuvyqha+MEAQ==} + browserslist@4.24.4: resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -3348,6 +3477,10 @@ packages: resolution: {integrity: sha512-F705O3xrsUtgt98j7leetNhTWPe+5S72rlL5O4jA1pKqBVQ/dT1O1D6PFxmSXvc0SUOinWS57DKx0I3CHrXJHQ==} hasBin: true + cborg@4.5.8: + resolution: {integrity: sha512-6/viltD51JklRhq4L7jC3zgy6gryuG5xfZ3kzpE+PravtyeQLeQmCYLREhQH7pWENg5pY4Yu/XCd6a7dKScVlw==} + hasBin: true + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -3553,6 +3686,9 @@ packages: crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + dag-jose@4.0.0: + resolution: {integrity: sha512-tw595L3UYoOUT9dSJPbBEG/qpRpw24kRZxa5SLRnlnr+g5L7O8oEs1d3W5TiVA1oJZbthVsf0Vi3zFN66qcEBA==} + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -3714,6 +3850,9 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + dns-over-http-resolver@2.1.3: + resolution: {integrity: sha512-zjRYFhq+CsxPAouQWzOsxNMvEN+SHisjzhX8EMxd2Y0EG3thvn6wXQgMJLnTDImkhe4jhLbOQpXtL10nALBOSA==} + doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -3755,6 +3894,10 @@ packages: engines: {node: '>=0.10.0'} hasBin: true + electron-fetch@1.9.1: + resolution: {integrity: sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==} + engines: {node: '>=6'} + electron-to-chromium@1.5.124: resolution: {integrity: sha512-riELkpDUqBi00gqreV3RIGoowxGrfueEKBd6zPdOk/I8lvuFpBGNkYoHof3zUHbiTBsIU8oxdIIL/WNrAG1/7A==} @@ -3778,6 +3921,9 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} @@ -3796,6 +3942,9 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + err-code@3.0.1: + resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -4084,6 +4233,9 @@ packages: fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -4239,6 +4391,9 @@ packages: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} + get-iterator@1.0.2: + resolution: {integrity: sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==} + get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -4268,7 +4423,7 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} @@ -4296,6 +4451,11 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + graphql-request@6.1.0: + resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} + peerDependencies: + graphql: 14 - 16 + graphql-request@7.2.0: resolution: {integrity: sha512-0GR7eQHBFYz372u9lxS16cOtEekFlZYB2qOyq8wDvzRmdRSJ0mgUVX1tzNcIzk3G+4NY+mGtSz411wZdeDF/+A==} peerDependencies: @@ -4346,6 +4506,9 @@ packages: hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + hashlru@2.3.0: + resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -4448,6 +4611,20 @@ packages: resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} engines: {node: '>=12.0.0'} + interface-datastore@7.0.4: + resolution: {integrity: sha512-Q8LZS/jfFFHz6XyZazLTAc078SSCoa27ZPBOfobWdpDiFO7FqPA2yskitUJIhaCgxNK8C+/lMBUTBNfVIDvLiw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + interface-datastore@8.3.2: + resolution: {integrity: sha512-R3NLts7pRbJKc3qFdQf+u40hK8XWc0w4Qkx3OFEstC80VoaDUABY/dXA2EJPhtNC+bsrf41Ehvqb6+pnIclyRA==} + + interface-store@3.0.4: + resolution: {integrity: sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + interface-store@6.0.3: + resolution: {integrity: sha512-+WvfEZnFUhRwFxgz+QCQi7UC6o9AM0EHM9bpIe2Nhqb100NHCsTvNAn4eJgvgV2/tmLo1MP9nGxQKEcZTAueLA==} + internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -4456,6 +4633,29 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} + ipfs-core-types@0.14.1: + resolution: {integrity: sha512-4ujF8NlM9bYi2I6AIqPP9wfGGX0x/gRCkMoFdOQfxxrFg6HcAdfS+0/irK8mp4e7znOHWReOHeWqCGw+dAPwsw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details + + ipfs-core-utils@0.18.1: + resolution: {integrity: sha512-P7jTpdfvlyBG3JR4o+Th3QJADlmXmwMxbkjszXry6VAjfSfLIIqXsdeYPoVRkV69GFEeQozuz2k/jR+U8cUH/Q==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details + + ipfs-http-client@60.0.1: + resolution: {integrity: sha512-amwM5TNuf077J+/q27jPHfatC05vJuIbX6ZnlYLjc2QsjOCKsORNBqV3brNw7l+fPrijV1yrwEDLG3JEnKsfMw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details + + ipfs-unixfs@9.0.1: + resolution: {integrity: sha512-jh2CbXyxID+v3jLml9CqMwjdSS9ZRnsGfQGGPOfem0/hT/L48xUeTPvh7qLFWkZcIMhZtG+fnS1teei8x5uGBg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + ipfs-utils@9.0.14: + resolution: {integrity: sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} @@ -4513,6 +4713,9 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} + is-electron@2.2.2: + resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -4569,6 +4772,10 @@ packages: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} @@ -4645,6 +4852,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + iso-url@1.2.1: + resolution: {integrity: sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==} + engines: {node: '>=12'} + isomorphic-ws@4.0.1: resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} peerDependencies: @@ -4684,6 +4895,42 @@ packages: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} + it-all@1.0.6: + resolution: {integrity: sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==} + + it-all@2.0.1: + resolution: {integrity: sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-first@2.0.1: + resolution: {integrity: sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-glob@1.0.2: + resolution: {integrity: sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==} + + it-last@2.0.1: + resolution: {integrity: sha512-uVMedYW0wa2Cx0TAmcOCLbfuLLII7+vyURmhKa8Zovpd+aBTMsmINtsta2n364wJ5qsEDBH+akY1sUtAkaYBlg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-map@2.0.1: + resolution: {integrity: sha512-a2GcYDHiAh/eSU628xlvB56LA98luXZnniH2GlD0IdBzf15shEq9rBeb0Rg3o1SWtNILUAwqmQxEXcewGCdvmQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-peekable@2.0.1: + resolution: {integrity: sha512-fJ/YTU9rHRhGJOM2hhQKKEfRM6uKB9r4yGGFLBHqp72ACC8Yi6+7/FhuBAMG8cpN6mLoj9auVX7ZJ3ul6qFpTA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-pushable@3.2.3: + resolution: {integrity: sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg==} + + it-stream-types@1.0.5: + resolution: {integrity: sha512-I88Ka1nHgfX62e5mi5LLL+oueqz7Ltg0bUdtsUKDe9SoUqbQPf2Mp5kxDTe9pNhHQGs4pvYPAINwuZ1HAt42TA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-to-stream@1.0.0: + resolution: {integrity: sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==} + jake@10.9.2: resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} engines: {node: '>=10'} @@ -5008,6 +5255,9 @@ packages: lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + main-event@1.0.1: + resolution: {integrity: sha512-NWtdGrAca/69fm6DIVd8T9rtfDII4Q8NQbIbsKQq2VzS9eqOGYs8uaNQjcuaCq/d9H/o625aOTJX2Qoxzqw0Pw==} + make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -5055,6 +5305,10 @@ packages: resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} engines: {node: '>=18'} + merge-options@3.0.4: + resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} + engines: {node: '>=10'} + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -5160,9 +5414,20 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + multiformats@11.0.2: + resolution: {integrity: sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + multiformats@12.1.3: + resolution: {integrity: sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + multiformats@13.3.2: resolution: {integrity: sha512-qbB0CQDt3QKfiAzZ5ZYjLFOs+zW43vA4uyM8g27PeEuXZybUOFyjrVdP93HPBHMoglibwfkdVwbzfUq8qGcH6g==} + multiformats@13.4.2: + resolution: {integrity: sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==} + multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} @@ -5178,6 +5443,21 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@4.0.2: + resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} + engines: {node: ^14 || ^16 || >=18} + hasBin: true + + native-fetch@3.0.0: + resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} + peerDependencies: + node-fetch: '*' + + native-fetch@4.0.2: + resolution: {integrity: sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg==} + peerDependencies: + undici: '*' + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -5357,8 +5637,8 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} - ox@0.10.5: - resolution: {integrity: sha512-mXJRiZswmX46abrzNkJpTN9sPJ/Rhevsp5Dfg0z80D55aoLNmEV4oN+/+feSNW593c2CnHavMqSVBanpJ0lUkQ==} + ox@0.12.4: + resolution: {integrity: sha512-+P+C7QzuwPV8lu79dOwjBKfB2CbnbEXe/hfyyrff1drrO1nOOj3Hc87svHfcW1yneRr3WXaKr6nz11nq+/DF9Q==} peerDependencies: typescript: '>=5.4.0' peerDependenciesMeta: @@ -5389,6 +5669,17 @@ packages: typescript: optional: true + p-defer@3.0.0: + resolution: {integrity: sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==} + engines: {node: '>=8'} + + p-defer@4.0.1: + resolution: {integrity: sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==} + engines: {node: '>=12'} + + p-fifo@1.0.0: + resolution: {integrity: sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==} + p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} @@ -5421,6 +5712,10 @@ packages: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} + p-queue@9.1.0: + resolution: {integrity: sha512-O/ZPaXuQV29uSLbxWBGGZO1mCQXV2BLIwUr59JUU9SoH76mnYvtms7aafH/isNSNGwuEfP6W/4xD0/TJXxrizw==} + engines: {node: '>=20'} + p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} @@ -5429,6 +5724,10 @@ packages: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} + p-timeout@7.0.1: + resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==} + engines: {node: '>=20'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -5440,6 +5739,9 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-duration@1.1.2: + resolution: {integrity: sha512-p8EIONG8L0u7f8GFgfVlL4n8rnChTt8O5FSxgxMz2tjc9FMP199wxVKVB6IbKx11uTbKHACSvaLVIKNnoeNR/A==} + parse-imports@2.2.1: resolution: {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==} engines: {node: '>= 18'} @@ -5570,6 +5872,9 @@ packages: process-warning@1.0.0: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + progress-events@1.0.1: + resolution: {integrity: sha512-MOzLIwhpt64KIVN64h1MwdKWiyKFNc/S6BoYKPIVUHFg0/eIEyBulhWCgn678v/4c0ri3FdGuzXymNCv02MUIw==} + prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -5655,6 +5960,9 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-native-fetch-api@3.0.0: + resolution: {integrity: sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==} + react@18.3.1: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} @@ -5690,6 +5998,9 @@ packages: resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} engines: {node: '>= 12.13.0'} + receptacle@1.3.2: + resolution: {integrity: sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==} + redaxios@0.5.1: resolution: {integrity: sha512-FSD2AmfdbkYwl7KDExYQlVvIrFz6Yd83pGfaGjBzM9F6rpq8g652Q4Yq5QD4c+nf4g2AgeElv1y+8ajUPiOYMg==} @@ -5757,6 +6068,9 @@ packages: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} + retimer@3.0.0: + resolution: {integrity: sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==} + retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} @@ -5995,6 +6309,9 @@ packages: stream-shift@1.0.3: resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + stream-to-it@0.2.4: + resolution: {integrity: sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==} + strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} @@ -6150,6 +6467,9 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + timeout-abort-controller@3.0.0: + resolution: {integrity: sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==} + tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -6376,9 +6696,18 @@ packages: ufo@1.6.1: resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + uint8-varint@2.0.4: + resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} + + uint8arraylist@2.4.8: + resolution: {integrity: sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ==} + uint8arrays@3.1.0: resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + uint8arrays@4.0.10: + resolution: {integrity: sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==} + uint8arrays@5.1.0: resolution: {integrity: sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==} @@ -6404,8 +6733,8 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici-types@7.19.2: - resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} + undici-types@7.22.0: + resolution: {integrity: sha512-RKZvifiL60xdsIuC80UY0dq8Z7DbJUV8/l2hOVbyZAxBzEeQU4Z58+4ZzJ6WN2Lidi9KzT5EbiGX+PI/UGYuRw==} undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} @@ -6514,6 +6843,9 @@ packages: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} + utf8-codec@1.0.0: + resolution: {integrity: sha512-S/QSLezp3qvG4ld5PUfXiH7mCFxLKjSVZRFkB3DOjgwHuJPFDkInAXc/anf7BAbHt/D38ozDzL+QMZ6/7gsI6w==} + utf8@3.0.0: resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} @@ -6561,6 +6893,9 @@ packages: react: optional: true + varint@6.0.0: + resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -6613,8 +6948,8 @@ packages: typescript: optional: true - viem@2.43.1: - resolution: {integrity: sha512-S33pBNlRvOlVv4+L94Z8ydCMDB1j0cuHFUvaC28i6OTxw3uY1P4M3h1YDFK8YC1H9/lIbeBTTvCRhi0FqU/2iw==} + viem@2.46.3: + resolution: {integrity: sha512-2LJS+Hyh2sYjHXQtzfv1kU9pZx9dxFzvoU/ZKIcn0FNtOU0HQuIICuYdWtUDFHaGXbAdVo8J1eCvmjkL9JVGwg==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -6655,6 +6990,7 @@ packages: whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-fetch@3.6.20: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} @@ -6783,6 +7119,9 @@ packages: x402-fetch@0.7.0: resolution: {integrity: sha512-HS7v6wsIVrU8TvAGBwRmA3I+ZXbanPraA3OMj90y6Hn1Mej1wAELOK4VpGh6zI8d6w5E464BnGu9o0FE+8DRAA==} + x402@0.6.1: + resolution: {integrity: sha512-9UmeCSsYzFGav5FdVP70VplKlR3V90P0DZ9fPSrlLVp0ifUVi1S9TztvegkmIHE9xTGZ1GWNi+bkne6N0Ea58w==} + x402@0.7.2: resolution: {integrity: sha512-JleP1GmeOP1bEuwzFVtjusL3t5H1PGufROrBKg5pj/MfcGswkBvfB6j5Gm5UeA+kwp0ZmOkkHAqkoHF1WexbsQ==} @@ -6896,6 +7235,10 @@ snapshots: dependencies: viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2) + '@across-protocol/app-sdk@0.2.0(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))': + dependencies: + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@adraffy/ens-normalize@1.10.1': {} '@adraffy/ens-normalize@1.11.0': {} @@ -7125,7 +7468,7 @@ snapshots: '@babel/parser': 7.27.0 '@babel/template': 7.27.0 '@babel/types': 7.27.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.3 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -7175,10 +7518,36 @@ snapshots: - utf-8-validate - zod + '@base-org/account@2.2.0(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': + dependencies: + '@noble/hashes': 1.4.0 + clsx: 1.2.1 + eventemitter3: 5.0.1 + idb-keyval: 6.2.1 + ox: 0.6.9(typescript@5.8.2)(zod@3.25.56) + preact: 10.24.2 + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + zustand: 5.0.3(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + transitivePeerDependencies: + - '@types/react' + - bufferutil + - immer + - react + - typescript + - use-sync-external-store + - utf-8-validate + - zod + '@bcoe/v8-coverage@0.2.3': {} '@cfworker/json-schema@4.1.1': {} + '@chainsafe/is-ip@2.1.0': {} + + '@chainsafe/netmask@2.0.0': + dependencies: + '@chainsafe/is-ip': 2.1.0 + '@changesets/apply-release-plan@7.0.10': dependencies: '@changesets/config': 3.1.1 @@ -7208,9 +7577,9 @@ snapshots: dependencies: '@changesets/types': 6.1.0 - '@changesets/changelog-github@0.5.1': + '@changesets/changelog-github@0.5.1(encoding@0.1.13)': dependencies: - '@changesets/get-github-info': 0.6.0 + '@changesets/get-github-info': 0.6.0(encoding@0.1.13) '@changesets/types': 6.1.0 dotenv: 8.6.0 transitivePeerDependencies: @@ -7268,10 +7637,10 @@ snapshots: picocolors: 1.1.1 semver: 7.7.1 - '@changesets/get-github-info@0.6.0': + '@changesets/get-github-info@0.6.0(encoding@0.1.13)': dependencies: dataloader: 1.4.0 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: - encoding @@ -7336,10 +7705,87 @@ snapshots: human-id: 4.1.1 prettier: 2.8.8 - '@coinbase/cdp-sdk@1.38.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10)': + '@coinbase/agentkit@0.10.4(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(@types/node@20.17.27)(abitype@1.2.3(typescript@5.8.2)(zod@3.25.56))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(graphql@16.11.0)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@across-protocol/app-sdk': 0.2.0(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)) + '@alloralabs/allora-sdk': 0.1.0 + '@base-org/account': 2.2.0(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@coinbase/cdp-sdk': 1.38.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@coinbase/coinbase-sdk': 0.20.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@coinbase/x402': 0.6.4(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@ensofinance/sdk': 2.0.6 + '@jup-ag/api': 6.0.40 + '@privy-io/public-api': 2.18.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@privy-io/server-auth': 1.18.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)) + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/spl-token': 0.4.13(@solana/web3.js@1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@vaultsfyi/sdk': 2.1.9(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@x402/evm': 2.2.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@x402/fetch': 2.2.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@x402/svm': 2.2.0(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@zerodev/ecdsa-validator': 5.4.5(@zerodev/sdk@5.4.28(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)) + '@zerodev/intent': 0.0.24(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)) + '@zerodev/sdk': 5.4.28(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)) + '@zoralabs/coins-sdk': 0.2.8(abitype@1.2.3(typescript@5.8.2)(zod@3.25.56))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)) + '@zoralabs/protocol-deployments': 0.6.1 + bs58: 4.0.1 + canonicalize: 2.1.0 + clanker-sdk: 4.1.19(@types/node@20.17.27)(typescript@5.8.2)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)) + decimal.js: 10.5.0 + ethers: 6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) + graphql-request: 7.2.0(graphql@16.11.0) + md5: 2.3.0 + opensea-js: 7.1.18(bufferutil@4.0.9)(utf-8-validate@5.0.10) + reflect-metadata: 0.2.2 + sushi: 6.2.1(typescript@5.8.2)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))(zod@3.25.56) + twitter-api-v2: 1.22.0 + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + zod: 3.25.56 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@solana/sysvars' + - '@tanstack/query-core' + - '@tanstack/react-query' + - '@types/node' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - '@zerodev/webauthn-key' + - abitype + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - fastestsmallesttextencoderdecoder + - graphql + - immer + - ioredis + - react + - supports-color + - typescript + - uploadthing + - use-sync-external-store + - utf-8-validate + - ws + + '@coinbase/cdp-sdk@1.38.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10)': dependencies: - '@solana/spl-token': 0.4.13(@solana/web3.js@1.98.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.13(@solana/web3.js@1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10) abitype: 1.0.6(typescript@5.8.2)(zod@3.25.56) axios: 1.12.2 axios-retry: 4.5.0(axios@1.12.2) @@ -7379,6 +7825,29 @@ snapshots: - utf-8-validate - zod + '@coinbase/coinbase-sdk@0.20.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': + dependencies: + '@scure/bip32': 1.6.2 + abitype: 1.0.8(typescript@5.8.2)(zod@3.25.56) + axios: 1.9.0 + axios-mock-adapter: 1.22.0(axios@1.9.0) + axios-retry: 4.5.0(axios@1.9.0) + bip32: 4.0.0 + bip39: 3.1.0 + decimal.js: 10.5.0 + dotenv: 16.4.7 + ed2curve: 0.3.0 + ethers: 6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) + jose: 5.10.0 + secp256k1: 5.0.1 + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + transitivePeerDependencies: + - bufferutil + - debug + - typescript + - utf-8-validate + - zod + '@coinbase/wallet-sdk@3.9.3': dependencies: bn.js: 5.2.2 @@ -7413,9 +7882,50 @@ snapshots: - utf-8-validate - zod - '@coinbase/x402@2.1.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10)': + '@coinbase/x402@0.6.4(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@coinbase/cdp-sdk': 1.38.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + x402: 0.6.1(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + zod: 3.25.56 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@solana/sysvars' + - '@tanstack/query-core' + - '@tanstack/react-query' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - supports-color + - typescript + - uploadthing + - utf-8-validate + - ws + + '@coinbase/x402@2.1.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10)': dependencies: - '@coinbase/cdp-sdk': 1.38.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@coinbase/cdp-sdk': 1.38.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) '@x402/core': 2.0.0 viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) zod: 3.25.56 @@ -7432,6 +7942,11 @@ snapshots: '@jridgewell/trace-mapping': 0.3.9 optional: true + '@dnsquery/dns-packet@6.1.1': + dependencies: + '@leichtgewicht/ip-codec': 2.0.5 + utf8-codec: 1.0.0 + '@ecies/ciphers@0.2.4(@noble/ciphers@1.3.0)': dependencies: '@noble/ciphers': 1.3.0 @@ -7831,6 +8346,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@gemini-wallet/core@0.2.0(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))': + dependencies: + '@metamask/rpc-errors': 7.0.2 + eventemitter3: 5.0.1 + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + transitivePeerDependencies: + - supports-color + '@gerrit0/mini-shiki@1.27.2': dependencies: '@shikijs/engine-oniguruma': 1.29.2 @@ -7862,6 +8385,27 @@ snapshots: optionalDependencies: '@types/node': 20.17.27 + '@inquirer/external-editor@1.0.1(@types/node@22.13.14)': + dependencies: + chardet: 2.1.0 + iconv-lite: 0.6.3 + optionalDependencies: + '@types/node': 22.13.14 + + '@ipld/dag-cbor@9.2.5': + dependencies: + cborg: 4.5.8 + multiformats: 13.4.2 + + '@ipld/dag-json@10.2.6': + dependencies: + cborg: 4.5.8 + multiformats: 13.4.2 + + '@ipld/dag-pb@4.1.5': + dependencies: + multiformats: 13.4.2 + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 @@ -7916,6 +8460,41 @@ snapshots: - supports-color - ts-node + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.17.27 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.17.27)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 @@ -8062,14 +8641,14 @@ snapshots: '@jup-ag/api@6.0.40': {} - '@langchain/core@0.3.30(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56))': + '@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56))': dependencies: '@cfworker/json-schema': 4.1.1 ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.19 - langsmith: 0.2.15(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) + langsmith: 0.2.15(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -8079,14 +8658,14 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/core@0.3.30(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2))': + '@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2))': dependencies: '@cfworker/json-schema': 4.1.1 ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.19 - langsmith: 0.2.15(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + langsmith: 0.2.15(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -8096,14 +8675,14 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/core@0.3.30(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2))': + '@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2))': dependencies: '@cfworker/json-schema': 4.1.1 ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.19 - langsmith: 0.2.15(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + langsmith: 0.2.15(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -8113,14 +8692,14 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2))': + '@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2))': dependencies: '@cfworker/json-schema': 4.1.1 ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.19 - langsmith: 0.2.15(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + langsmith: 0.2.15(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -8130,14 +8709,14 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56))': + '@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56))': dependencies: '@cfworker/json-schema': 4.1.1 ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.19 - langsmith: 0.2.15(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) + langsmith: 0.2.15(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -8147,86 +8726,86 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/langgraph-checkpoint@0.0.16(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))': + '@langchain/langgraph-checkpoint@0.0.16(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))': dependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) uuid: 10.0.0 - '@langchain/langgraph-checkpoint@0.0.16(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))': + '@langchain/langgraph-checkpoint@0.0.16(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))': dependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) uuid: 10.0.0 - '@langchain/langgraph-checkpoint@0.0.16(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))': + '@langchain/langgraph-checkpoint@0.0.16(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))': dependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) uuid: 10.0.0 - '@langchain/langgraph-checkpoint@0.0.16(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))': + '@langchain/langgraph-checkpoint@0.0.16(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))': dependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) uuid: 10.0.0 - '@langchain/langgraph-checkpoint@0.0.16(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))': + '@langchain/langgraph-checkpoint@0.0.16(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))': dependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) uuid: 10.0.0 - '@langchain/langgraph-sdk@0.0.60(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1)': + '@langchain/langgraph-sdk@0.0.60(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1)': dependencies: '@types/json-schema': 7.0.15 p-queue: 6.6.2 p-retry: 4.6.2 uuid: 9.0.1 optionalDependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) react: 18.3.1 - '@langchain/langgraph-sdk@0.0.60(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)': + '@langchain/langgraph-sdk@0.0.60(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)': dependencies: '@types/json-schema': 7.0.15 p-queue: 6.6.2 p-retry: 4.6.2 uuid: 9.0.1 optionalDependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) react: 18.3.1 - '@langchain/langgraph-sdk@0.0.60(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)': + '@langchain/langgraph-sdk@0.0.60(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)': dependencies: '@types/json-schema': 7.0.15 p-queue: 6.6.2 p-retry: 4.6.2 uuid: 9.0.1 optionalDependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) react: 18.3.1 - '@langchain/langgraph-sdk@0.0.60(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)': + '@langchain/langgraph-sdk@0.0.60(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)': dependencies: '@types/json-schema': 7.0.15 p-queue: 6.6.2 p-retry: 4.6.2 uuid: 9.0.1 optionalDependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) react: 18.3.1 - '@langchain/langgraph-sdk@0.0.60(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1)': + '@langchain/langgraph-sdk@0.0.60(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1)': dependencies: '@types/json-schema': 7.0.15 p-queue: 6.6.2 p-retry: 4.6.2 uuid: 9.0.1 optionalDependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) react: 18.3.1 - '@langchain/langgraph@0.2.59(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.25.56))': + '@langchain/langgraph@0.2.59(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.25.56))': dependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) - '@langchain/langgraph-checkpoint': 0.0.16(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56))) - '@langchain/langgraph-sdk': 0.0.60(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) + '@langchain/langgraph-checkpoint': 0.0.16(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56))) + '@langchain/langgraph-sdk': 0.0.60(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1) uuid: 10.0.0 zod: 3.24.2 optionalDependencies: @@ -8234,11 +8813,11 @@ snapshots: transitivePeerDependencies: - react - '@langchain/langgraph@0.2.59(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2))': + '@langchain/langgraph@0.2.59(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2))': dependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) - '@langchain/langgraph-checkpoint': 0.0.16(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2))) - '@langchain/langgraph-sdk': 0.0.60(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + '@langchain/langgraph-checkpoint': 0.0.16(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2))) + '@langchain/langgraph-sdk': 0.0.60(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1) uuid: 10.0.0 zod: 3.24.2 optionalDependencies: @@ -8246,11 +8825,11 @@ snapshots: transitivePeerDependencies: - react - '@langchain/langgraph@0.2.59(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2))': + '@langchain/langgraph@0.2.59(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2))': dependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) - '@langchain/langgraph-checkpoint': 0.0.16(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2))) - '@langchain/langgraph-sdk': 0.0.60(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + '@langchain/langgraph-checkpoint': 0.0.16(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2))) + '@langchain/langgraph-sdk': 0.0.60(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1) uuid: 10.0.0 zod: 3.24.2 optionalDependencies: @@ -8258,11 +8837,11 @@ snapshots: transitivePeerDependencies: - react - '@langchain/langgraph@0.2.59(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2))': + '@langchain/langgraph@0.2.59(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.24.2))': dependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) - '@langchain/langgraph-checkpoint': 0.0.16(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2))) - '@langchain/langgraph-sdk': 0.0.60(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + '@langchain/langgraph-checkpoint': 0.0.16(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2))) + '@langchain/langgraph-sdk': 0.0.60(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(react@18.3.1) uuid: 10.0.0 zod: 3.24.2 optionalDependencies: @@ -8270,11 +8849,11 @@ snapshots: transitivePeerDependencies: - react - '@langchain/langgraph@0.2.59(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.25.56))': + '@langchain/langgraph@0.2.59(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1)(zod-to-json-schema@3.24.5(zod@3.25.56))': dependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) - '@langchain/langgraph-checkpoint': 0.0.16(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56))) - '@langchain/langgraph-sdk': 0.0.60(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) + '@langchain/langgraph-checkpoint': 0.0.16(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56))) + '@langchain/langgraph-sdk': 0.0.60(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(react@18.3.1) uuid: 10.0.0 zod: 3.24.2 optionalDependencies: @@ -8282,61 +8861,121 @@ snapshots: transitivePeerDependencies: - react - '@langchain/openai@0.3.17(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@langchain/openai@0.3.17(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) js-tiktoken: 1.0.19 - openai: 4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) + openai: 4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) zod: 3.24.2 zod-to-json-schema: 3.24.5(zod@3.24.2) transitivePeerDependencies: - encoding - ws - '@langchain/openai@0.3.17(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@langchain/openai@0.3.17(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) js-tiktoken: 1.0.19 - openai: 4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) + openai: 4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) zod: 3.24.2 zod-to-json-schema: 3.24.5(zod@3.24.2) transitivePeerDependencies: - encoding - ws - '@langchain/openai@0.3.17(@langchain/core@0.3.30(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@langchain/openai@0.3.17(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) js-tiktoken: 1.0.19 - openai: 4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) + openai: 4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) zod: 3.24.2 zod-to-json-schema: 3.24.5(zod@3.24.2) transitivePeerDependencies: - encoding - ws - '@langchain/openai@0.3.17(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@langchain/openai@0.3.17(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)))(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)) js-tiktoken: 1.0.19 - openai: 4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) + openai: 4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) zod: 3.24.2 zod-to-json-schema: 3.24.5(zod@3.24.2) transitivePeerDependencies: - encoding - ws - '@langchain/openai@0.3.17(@langchain/core@0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@langchain/openai@0.3.17(@langchain/core@0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)))(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@langchain/core': 0.3.30(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) + '@langchain/core': 0.3.30(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)) js-tiktoken: 1.0.19 - openai: 4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) + openai: 4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) zod: 3.24.2 zod-to-json-schema: 3.24.5(zod@3.24.2) transitivePeerDependencies: - encoding - ws + '@leichtgewicht/ip-codec@2.0.5': {} + + '@libp2p/interface-connection@4.0.0': + dependencies: + '@libp2p/interface-peer-id': 2.0.2 + '@libp2p/interfaces': 3.3.2 + '@multiformats/multiaddr': 12.5.1 + it-stream-types: 1.0.5 + uint8arraylist: 2.4.8 + + '@libp2p/interface-keychain@2.0.5': + dependencies: + '@libp2p/interface-peer-id': 2.0.2 + multiformats: 11.0.2 + + '@libp2p/interface-peer-id@2.0.2': + dependencies: + multiformats: 11.0.2 + + '@libp2p/interface-peer-info@1.0.10': + dependencies: + '@libp2p/interface-peer-id': 2.0.2 + '@multiformats/multiaddr': 12.5.1 + + '@libp2p/interface-pubsub@3.0.7': + dependencies: + '@libp2p/interface-connection': 4.0.0 + '@libp2p/interface-peer-id': 2.0.2 + '@libp2p/interfaces': 3.3.2 + it-pushable: 3.2.3 + uint8arraylist: 2.4.8 + + '@libp2p/interface@3.1.0': + dependencies: + '@multiformats/dns': 1.0.13 + '@multiformats/multiaddr': 13.0.1 + main-event: 1.0.1 + multiformats: 13.4.2 + progress-events: 1.0.1 + uint8arraylist: 2.4.8 + + '@libp2p/interfaces@3.3.2': {} + + '@libp2p/logger@2.1.1': + dependencies: + '@libp2p/interface-peer-id': 2.0.2 + '@multiformats/multiaddr': 12.5.1 + debug: 4.4.3 + interface-datastore: 8.3.2 + multiformats: 11.0.2 + transitivePeerDependencies: + - supports-color + + '@libp2p/peer-id@2.0.4': + dependencies: + '@libp2p/interface-peer-id': 2.0.2 + '@libp2p/interfaces': 3.3.2 + multiformats: 11.0.2 + uint8arrays: 4.0.10 + '@lit-labs/ssr-dom-shim@1.4.0': {} '@lit/reactive-element@2.1.1': @@ -8443,12 +9082,12 @@ snapshots: '@metamask/safe-event-emitter@3.1.2': {} - '@metamask/sdk-communication-layer@0.32.0(cross-fetch@4.1.0)(eciesjs@0.4.15)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@metamask/sdk-communication-layer@0.32.0(cross-fetch@4.1.0(encoding@0.1.13))(eciesjs@0.4.15)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: bufferutil: 4.0.9 - cross-fetch: 4.1.0 + cross-fetch: 4.1.0(encoding@0.1.13) date-fns: 2.30.0 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.3 eciesjs: 0.4.15 eventemitter2: 6.4.9 readable-stream: 3.6.2 @@ -8462,17 +9101,17 @@ snapshots: dependencies: '@paulmillr/qr': 0.2.1 - '@metamask/sdk@0.32.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@metamask/sdk@0.32.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.27.0 '@metamask/onboarding': 1.0.1 '@metamask/providers': 16.1.0 - '@metamask/sdk-communication-layer': 0.32.0(cross-fetch@4.1.0)(eciesjs@0.4.15)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@metamask/sdk-communication-layer': 0.32.0(cross-fetch@4.1.0(encoding@0.1.13))(eciesjs@0.4.15)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@metamask/sdk-install-modal-web': 0.32.0 '@paulmillr/qr': 0.2.1 bowser: 2.12.1 - cross-fetch: 4.1.0 - debug: 4.4.0(supports-color@5.5.0) + cross-fetch: 4.1.0(encoding@0.1.13) + debug: 4.4.3 eciesjs: 0.4.15 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 @@ -8499,7 +9138,7 @@ snapshots: '@scure/base': 1.2.6 '@types/debug': 4.1.12 '@types/lodash': 4.17.20 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.3 lodash: 4.17.21 pony-cause: 2.1.11 semver: 7.7.1 @@ -8524,9 +9163,9 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@types/debug': 4.1.12 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.3 pony-cause: 2.1.11 - semver: 7.7.1 + semver: 7.7.3 uuid: 9.0.1 transitivePeerDependencies: - supports-color @@ -8538,7 +9177,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@types/debug': 4.1.12 - debug: 4.4.0(supports-color@5.5.0) + debug: 4.4.3 pony-cause: 2.1.11 semver: 7.7.1 uuid: 9.0.1 @@ -8560,6 +9199,47 @@ snapshots: transitivePeerDependencies: - supports-color + '@multiformats/dns@1.0.13': + dependencies: + '@dnsquery/dns-packet': 6.1.1 + '@libp2p/interface': 3.1.0 + hashlru: 2.3.0 + p-queue: 9.1.0 + progress-events: 1.0.1 + uint8arrays: 5.1.0 + + '@multiformats/multiaddr-to-uri@9.0.8': + dependencies: + '@multiformats/multiaddr': 12.5.1 + + '@multiformats/multiaddr@11.6.1': + dependencies: + '@chainsafe/is-ip': 2.1.0 + dns-over-http-resolver: 2.1.3 + err-code: 3.0.1 + multiformats: 11.0.2 + uint8arrays: 4.0.10 + varint: 6.0.0 + transitivePeerDependencies: + - supports-color + + '@multiformats/multiaddr@12.5.1': + dependencies: + '@chainsafe/is-ip': 2.1.0 + '@chainsafe/netmask': 2.0.0 + '@multiformats/dns': 1.0.13 + abort-error: 1.0.1 + multiformats: 13.4.2 + uint8-varint: 2.0.4 + uint8arrays: 5.1.0 + + '@multiformats/multiaddr@13.0.1': + dependencies: + '@chainsafe/is-ip': 2.1.0 + multiformats: 13.4.2 + uint8-varint: 2.0.4 + uint8arrays: 5.1.0 + '@noble/ciphers@1.2.1': {} '@noble/ciphers@1.3.0': {} @@ -8660,17 +9340,17 @@ snapshots: - bufferutil - utf-8-validate - '@privy-io/server-auth@1.18.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2))': + '@privy-io/server-auth@1.18.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2))': dependencies: '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 - '@solana/web3.js': 1.98.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10) canonicalize: 2.1.0 dotenv: 16.4.7 jose: 4.15.9 node-fetch-native: 1.6.6 redaxios: 0.5.1 - svix: 1.62.0 + svix: 1.62.0(encoding@0.1.13) ts-case-convert: 2.1.0 type-fest: 3.13.1 optionalDependencies: @@ -8681,6 +9361,27 @@ snapshots: - typescript - utf-8-validate + '@privy-io/server-auth@1.18.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))': + dependencies: + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 + '@solana/web3.js': 1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10) + canonicalize: 2.1.0 + dotenv: 16.4.7 + jose: 4.15.9 + node-fetch-native: 1.6.6 + redaxios: 0.5.1 + svix: 1.62.0(encoding@0.1.13) + ts-case-convert: 2.1.0 + type-fest: 3.13.1 + optionalDependencies: + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + '@protobufjs/aspromise@1.1.2': {} '@protobufjs/base64@1.1.2': {} @@ -8726,11 +9427,11 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-controllers@1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': + '@reown/appkit-controllers@1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) valtio: 1.13.2(react@18.3.1) viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) transitivePeerDependencies: @@ -8761,12 +9462,12 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-pay@1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': + '@reown/appkit-pay@1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) - '@reown/appkit-controllers': 1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) - '@reown/appkit-ui': 1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) - '@reown/appkit-utils': 1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(valtio@1.13.2(react@18.3.1))(zod@3.25.56) + '@reown/appkit-controllers': 1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@reown/appkit-ui': 1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@reown/appkit-utils': 1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(valtio@1.13.2(react@18.3.1))(zod@3.25.56) lit: 3.3.0 valtio: 1.13.2(react@18.3.1) transitivePeerDependencies: @@ -8801,12 +9502,12 @@ snapshots: dependencies: buffer: 6.0.3 - '@reown/appkit-scaffold-ui@1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(valtio@1.13.2(react@18.3.1))(zod@3.25.56)': + '@reown/appkit-scaffold-ui@1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(valtio@1.13.2(react@18.3.1))(zod@3.25.56)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) - '@reown/appkit-controllers': 1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) - '@reown/appkit-ui': 1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) - '@reown/appkit-utils': 1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(valtio@1.13.2(react@18.3.1))(zod@3.25.56) + '@reown/appkit-controllers': 1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@reown/appkit-ui': 1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@reown/appkit-utils': 1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(valtio@1.13.2(react@18.3.1))(zod@3.25.56) '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) lit: 3.3.0 transitivePeerDependencies: @@ -8838,10 +9539,10 @@ snapshots: - valtio - zod - '@reown/appkit-ui@1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': + '@reown/appkit-ui@1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) - '@reown/appkit-controllers': 1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@reown/appkit-controllers': 1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) lit: 3.3.0 qrcode: 1.5.3 @@ -8873,14 +9574,14 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-utils@1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(valtio@1.13.2(react@18.3.1))(zod@3.25.56)': + '@reown/appkit-utils@1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(valtio@1.13.2(react@18.3.1))(zod@3.25.56)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) - '@reown/appkit-controllers': 1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@reown/appkit-controllers': 1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) '@reown/appkit-polyfills': 1.7.8 '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) '@walletconnect/logger': 2.1.2 - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) valtio: 1.13.2(react@18.3.1) viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) transitivePeerDependencies: @@ -8922,18 +9623,18 @@ snapshots: - typescript - utf-8-validate - '@reown/appkit@1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': + '@reown/appkit@1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) - '@reown/appkit-controllers': 1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) - '@reown/appkit-pay': 1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@reown/appkit-controllers': 1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@reown/appkit-pay': 1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) '@reown/appkit-polyfills': 1.7.8 - '@reown/appkit-scaffold-ui': 1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(valtio@1.13.2(react@18.3.1))(zod@3.25.56) - '@reown/appkit-ui': 1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) - '@reown/appkit-utils': 1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(valtio@1.13.2(react@18.3.1))(zod@3.25.56) + '@reown/appkit-scaffold-ui': 1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(valtio@1.13.2(react@18.3.1))(zod@3.25.56) + '@reown/appkit-ui': 1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@reown/appkit-utils': 1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(valtio@1.13.2(react@18.3.1))(zod@3.25.56) '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) '@walletconnect/types': 2.21.0 - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) bs58: 6.0.0 valtio: 1.13.2(react@18.3.1) viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) @@ -9074,18 +9775,32 @@ snapshots: dependencies: '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana-program/compute-budget@0.8.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': + dependencies: + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana-program/token-2022@0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': dependencies: '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana-program/token-2022@0.6.1(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10))': + '@solana-program/token-2022@0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))': + dependencies: + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/sysvars': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + + '@solana-program/token-2022@0.6.1(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))': dependencies: '@solana/kit': 5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@solana/sysvars': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) '@solana-program/token@0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': dependencies: '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana-program/token@0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': + dependencies: + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana-program/token@0.9.0(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10))': dependencies: '@solana/kit': 5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) @@ -9149,10 +9864,10 @@ snapshots: optionalDependencies: typescript: 5.8.2 - '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)': + '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.98.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10) bigint-buffer: 1.1.5 bignumber.js: 9.1.2 transitivePeerDependencies: @@ -9407,6 +10122,31 @@ snapshots: - fastestsmallesttextencoderdecoder - ws + '@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@solana/accounts': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/codecs': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/errors': 2.3.0(typescript@5.8.2) + '@solana/functional': 2.3.0(typescript@5.8.2) + '@solana/instructions': 2.3.0(typescript@5.8.2) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/programs': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/rpc': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/rpc-parsed-types': 2.3.0(typescript@5.8.2) + '@solana/rpc-spec-types': 2.3.0(typescript@5.8.2) + '@solana/rpc-subscriptions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/signers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/sysvars': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/transaction-confirmation': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + typescript: 5.8.2 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - ws + '@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10)': dependencies: '@solana/accounts': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) @@ -9624,6 +10364,15 @@ snapshots: typescript: 5.8.2 ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/rpc-subscriptions-channel-websocket@2.3.0(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@solana/errors': 2.3.0(typescript@5.8.2) + '@solana/functional': 2.3.0(typescript@5.8.2) + '@solana/rpc-subscriptions-spec': 2.3.0(typescript@5.8.2) + '@solana/subscribable': 2.3.0(typescript@5.8.2) + typescript: 5.8.2 + ws: 8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/rpc-subscriptions-channel-websocket@5.5.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)': dependencies: '@solana/errors': 5.5.1(typescript@5.8.2) @@ -9672,6 +10421,24 @@ snapshots: - fastestsmallesttextencoderdecoder - ws + '@solana/rpc-subscriptions@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@solana/errors': 2.3.0(typescript@5.8.2) + '@solana/fast-stable-stringify': 2.3.0(typescript@5.8.2) + '@solana/functional': 2.3.0(typescript@5.8.2) + '@solana/promises': 2.3.0(typescript@5.8.2) + '@solana/rpc-spec-types': 2.3.0(typescript@5.8.2) + '@solana/rpc-subscriptions-api': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/rpc-subscriptions-channel-websocket': 2.3.0(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/rpc-subscriptions-spec': 2.3.0(typescript@5.8.2) + '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/subscribable': 2.3.0(typescript@5.8.2) + typescript: 5.8.2 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - ws + '@solana/rpc-subscriptions@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10)': dependencies: '@solana/errors': 5.5.1(typescript@5.8.2) @@ -9728,7 +10495,7 @@ snapshots: '@solana/errors': 5.5.1(typescript@5.8.2) '@solana/rpc-spec': 5.5.1(typescript@5.8.2) '@solana/rpc-spec-types': 5.5.1(typescript@5.8.2) - undici-types: 7.19.2 + undici-types: 7.22.0 optionalDependencies: typescript: 5.8.2 @@ -9818,29 +10585,29 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)': + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) - '@solana/web3.js': 1.98.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) - '@solana/web3.js': 1.98.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token@0.4.13(@solana/web3.js@1.98.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.13(@solana/web3.js@1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) - '@solana/web3.js': 1.98.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/web3.js': 1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -9898,6 +10665,23 @@ snapshots: - fastestsmallesttextencoderdecoder - ws + '@solana/transaction-confirmation@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/errors': 2.3.0(typescript@5.8.2) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/promises': 2.3.0(typescript@5.8.2) + '@solana/rpc': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/rpc-subscriptions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + typescript: 5.8.2 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - ws + '@solana/transaction-confirmation@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10)': dependencies: '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) @@ -9990,7 +10774,7 @@ snapshots: '@wallet-standard/base': 1.1.0 '@wallet-standard/features': 1.1.0 - '@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.27.0 '@noble/curves': 1.8.1 @@ -10004,7 +10788,7 @@ snapshots: buffer: 6.0.3 fast-stable-stringify: 1.0.0 jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) rpc-websockets: 9.1.1 superstruct: 2.0.2 transitivePeerDependencies: @@ -10012,7 +10796,7 @@ snapshots: - encoding - utf-8-validate - '@solana/web3.js@1.98.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)': + '@solana/web3.js@1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.27.0 '@noble/curves': 1.8.1 @@ -10026,7 +10810,7 @@ snapshots: buffer: 6.0.3 fast-stable-stringify: 1.0.0 jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) rpc-websockets: 9.1.1 superstruct: 2.0.2 transitivePeerDependencies: @@ -10133,6 +10917,8 @@ snapshots: '@types/lodash@4.17.20': {} + '@types/minimatch@3.0.5': {} + '@types/minimist@1.2.5': {} '@types/ms@2.1.0': {} @@ -10288,9 +11074,46 @@ snapshots: '@uniswap/token-lists@1.0.0-beta.33': {} - '@vaultsfyi/sdk@2.1.9(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@vaultsfyi/sdk@2.1.9(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + x402-fetch: 0.7.0(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@solana/sysvars' + - '@tanstack/query-core' + - '@tanstack/react-query' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - supports-color + - typescript + - uploadthing + - utf-8-validate + - ws + + '@vaultsfyi/sdk@2.1.9(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - x402-fetch: 0.7.0(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + x402-fetch: 0.7.0(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -10325,16 +11148,16 @@ snapshots: - utf-8-validate - ws - '@wagmi/connectors@5.10.0(@wagmi/core@2.21.0(@tanstack/query-core@5.89.0)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.25.56)': + '@wagmi/connectors@5.10.0(@wagmi/core@2.21.0(@tanstack/query-core@5.89.0)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)))(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.25.56)': dependencies: '@base-org/account': 1.1.1(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@3.25.56) '@coinbase/wallet-sdk': 4.3.6(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@3.25.56) '@gemini-wallet/core': 0.2.0(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)) - '@metamask/sdk': 0.32.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metamask/sdk': 0.32.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) '@wagmi/core': 2.21.0(@tanstack/query-core@5.89.0)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)) - '@walletconnect/ethereum-provider': 2.21.1(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@walletconnect/ethereum-provider': 2.21.1(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2) optionalDependencies: @@ -10369,6 +11192,50 @@ snapshots: - utf-8-validate - zod + '@wagmi/connectors@5.10.0(@wagmi/core@2.21.0(@tanstack/query-core@5.89.0)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)))(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))(zod@3.25.56)': + dependencies: + '@base-org/account': 1.1.1(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@3.25.56) + '@coinbase/wallet-sdk': 4.3.6(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@3.25.56) + '@gemini-wallet/core': 0.2.0(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)) + '@metamask/sdk': 0.32.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@wagmi/core': 2.21.0(@tanstack/query-core@5.89.0)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)) + '@walletconnect/ethereum-provider': 2.21.1(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + cbw-sdk: '@coinbase/wallet-sdk@3.9.3' + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + optionalDependencies: + typescript: 5.8.2 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - immer + - ioredis + - react + - supports-color + - uploadthing + - use-sync-external-store + - utf-8-validate + - zod + '@wagmi/core@2.21.0(@tanstack/query-core@5.89.0)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2))': dependencies: eventemitter3: 5.0.1 @@ -10384,6 +11251,21 @@ snapshots: - react - use-sync-external-store + '@wagmi/core@2.21.0(@tanstack/query-core@5.89.0)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))': + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.7(typescript@5.8.2) + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + zustand: 5.0.0(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + optionalDependencies: + '@tanstack/query-core': 5.89.0 + typescript: 5.8.2 + transitivePeerDependencies: + - '@types/react' + - immer + - react + - use-sync-external-store + '@wallet-standard/app@1.1.0': dependencies: '@wallet-standard/base': 1.1.0 @@ -10486,17 +11368,17 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.21.1(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': + '@walletconnect/ethereum-provider@2.21.1(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': dependencies: - '@reown/appkit': 1.7.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) - '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@reown/appkit': 1.7.8(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/sign-client': 2.21.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) '@walletconnect/types': 2.21.1 - '@walletconnect/universal-provider': 2.21.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@walletconnect/universal-provider': 2.21.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) events: 3.3.0 transitivePeerDependencies: @@ -10538,11 +11420,11 @@ snapshots: '@walletconnect/time': 1.0.2 events: 3.3.0 - '@walletconnect/jsonrpc-http-connection@1.0.8': + '@walletconnect/jsonrpc-http-connection@1.0.8(encoding@0.1.13)': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 - cross-fetch: 3.2.0 + cross-fetch: 3.2.0(encoding@0.1.13) events: 3.3.0 transitivePeerDependencies: - encoding @@ -10754,10 +11636,10 @@ snapshots: - ioredis - uploadthing - '@walletconnect/universal-provider@2.21.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': + '@walletconnect/universal-provider@2.21.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': dependencies: '@walletconnect/events': 1.0.1 - '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 @@ -10794,10 +11676,10 @@ snapshots: - utf-8-validate - zod - '@walletconnect/universal-provider@2.21.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': + '@walletconnect/universal-provider@2.21.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)': dependencies: '@walletconnect/events': 1.0.1 - '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 @@ -10935,14 +11817,14 @@ snapshots: dependencies: zod: 3.25.56 - '@x402/core@2.2.0': + '@x402/core@2.4.0': dependencies: zod: 3.25.56 '@x402/evm@2.2.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)': dependencies: - '@x402/core': 2.2.0 - viem: 2.43.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@x402/core': 2.4.0 + viem: 2.46.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) zod: 3.25.56 transitivePeerDependencies: - bufferutil @@ -10951,21 +11833,21 @@ snapshots: '@x402/fetch@2.2.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)': dependencies: - '@x402/core': 2.2.0 - viem: 2.43.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@x402/core': 2.4.0 + viem: 2.46.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) zod: 3.25.56 transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - '@x402/svm@2.2.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10)': + '@x402/svm@2.2.0(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10)': dependencies: '@solana-program/compute-budget': 0.11.0(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10)) '@solana-program/token': 0.9.0(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10)) - '@solana-program/token-2022': 0.6.1(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10)) + '@solana-program/token-2022': 0.6.1(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)) '@solana/kit': 5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) - '@x402/core': 2.2.0 + '@x402/core': 2.4.0 transitivePeerDependencies: - '@solana/sysvars' - bufferutil @@ -11045,6 +11927,11 @@ snapshots: '@zerodev/sdk': 5.4.28(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)) viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2) + '@zerodev/ecdsa-validator@5.4.5(@zerodev/sdk@5.4.28(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))': + dependencies: + '@zerodev/sdk': 5.4.28(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)) + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@zerodev/intent@0.0.24(@zerodev/webauthn-key@5.4.3(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2))': dependencies: '@zerodev/ecdsa-validator': 5.4.5(@zerodev/sdk@5.4.28(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)) @@ -11054,6 +11941,15 @@ snapshots: transitivePeerDependencies: - '@zerodev/webauthn-key' + '@zerodev/intent@0.0.24(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))': + dependencies: + '@zerodev/ecdsa-validator': 5.4.5(@zerodev/sdk@5.4.28(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)) + '@zerodev/multi-chain-ecdsa-validator': 5.4.4(@zerodev/sdk@5.4.28(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)) + '@zerodev/sdk': 5.4.28(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)) + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + transitivePeerDependencies: + - '@zerodev/webauthn-key' + '@zerodev/multi-chain-ecdsa-validator@5.4.4(@zerodev/sdk@5.4.28(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)))(@zerodev/webauthn-key@5.4.3(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2))': dependencies: '@simplewebauthn/browser': 9.0.1 @@ -11063,11 +11959,24 @@ snapshots: merkletreejs: 0.3.11 viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2) + '@zerodev/multi-chain-ecdsa-validator@5.4.4(@zerodev/sdk@5.4.28(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))': + dependencies: + '@simplewebauthn/browser': 9.0.1 + '@simplewebauthn/typescript-types': 8.3.4 + '@zerodev/sdk': 5.4.28(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)) + merkletreejs: 0.3.11 + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@zerodev/sdk@5.4.28(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2))': dependencies: semver: 7.7.1 viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2) + '@zerodev/sdk@5.4.28(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))': + dependencies: + semver: 7.7.1 + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@zerodev/webauthn-key@5.4.3(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2))': dependencies: '@noble/curves': 1.9.7 @@ -11082,6 +11991,13 @@ snapshots: abitype: 1.0.8(typescript@5.8.2)(zod@3.24.2) viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2) + '@zoralabs/coins-sdk@0.2.8(abitype@1.2.3(typescript@5.8.2)(zod@3.25.56))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))': + dependencies: + '@hey-api/client-fetch': 0.8.4 + '@zoralabs/protocol-deployments': 0.6.1 + abitype: 1.2.3(typescript@5.8.2)(zod@3.25.56) + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + '@zoralabs/protocol-deployments@0.6.1': {} JSONStream@1.3.5: @@ -11130,6 +12046,8 @@ snapshots: dependencies: event-target-shim: 5.0.1 + abort-error@1.0.1: {} + accepts@2.0.0: dependencies: mime-types: 3.0.0 @@ -11153,6 +12071,20 @@ snapshots: aes-js@4.0.0-beta.5: {} + agent0-sdk@1.5.3(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.11.0)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2): + dependencies: + graphql-request: 6.1.0(encoding@0.1.13)(graphql@16.11.0) + ipfs-http-client: 60.0.1(encoding@0.1.13) + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2) + transitivePeerDependencies: + - bufferutil + - encoding + - graphql + - supports-color + - typescript + - utf-8-validate + - zod + agentkeepalive@4.6.0: dependencies: humanize-ms: 1.2.1 @@ -11192,6 +12124,8 @@ snapshots: ansi-styles@5.2.0: {} + any-signal@3.0.1: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -11426,6 +12360,10 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + blob-to-it@2.0.10: + dependencies: + browser-readablestream-to-it: 2.0.10 + bn.js@4.11.6: {} bn.js@4.12.1: {} @@ -11471,6 +12409,10 @@ snapshots: brorand@1.1.0: {} + browser-readablestream-to-it@1.0.3: {} + + browser-readablestream-to-it@2.0.10: {} + browserslist@4.24.4: dependencies: caniuse-lite: 1.0.30001707 @@ -11559,6 +12501,8 @@ snapshots: canonicalize@2.1.0: {} + cborg@4.5.8: {} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -11601,12 +12545,25 @@ snapshots: cjs-module-lexer@1.4.3: {} - clanker-sdk@4.1.19(@types/node@20.17.27)(typescript@5.8.2)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)): + clanker-sdk@4.1.19(@types/node@20.17.27)(typescript@5.8.2)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)): dependencies: '@openzeppelin/merkle-tree': 1.0.8 abitype: 1.0.8(typescript@5.8.2)(zod@3.25.56) dotenv: 16.4.7 inquirer: 8.2.7(@types/node@20.17.27) + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + zod: 3.25.56 + transitivePeerDependencies: + - '@types/node' + - supports-color + - typescript + + clanker-sdk@4.1.19(@types/node@22.13.14)(typescript@5.8.2)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)): + dependencies: + '@openzeppelin/merkle-tree': 1.0.8 + abitype: 1.0.8(typescript@5.8.2)(zod@3.25.56) + dotenv: 16.4.7 + inquirer: 8.2.7(@types/node@22.13.14) viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2) zod: 3.25.56 transitivePeerDependencies: @@ -11726,18 +12683,33 @@ snapshots: - supports-color - ts-node + create-jest@29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + create-require@1.1.1: optional: true - cross-fetch@3.2.0: + cross-fetch@3.2.0(encoding@0.1.13): dependencies: - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: - encoding - cross-fetch@4.1.0: + cross-fetch@4.1.0(encoding@0.1.13): dependencies: - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: - encoding @@ -11755,6 +12727,11 @@ snapshots: crypto-js@4.2.0: {} + dag-jose@4.0.0: + dependencies: + '@ipld/dag-cbor': 9.2.5 + multiformats: 11.0.2 + data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -11871,6 +12848,15 @@ snapshots: dependencies: path-type: 4.0.0 + dns-over-http-resolver@2.1.3: + dependencies: + debug: 4.4.3 + native-fetch: 4.0.2(undici@5.29.0) + receptacle: 1.3.2 + undici: 5.29.0 + transitivePeerDependencies: + - supports-color + doctrine@2.1.0: dependencies: esutils: 2.0.3 @@ -11915,6 +12901,10 @@ snapshots: dependencies: jake: 10.9.2 + electron-fetch@1.9.1: + dependencies: + encoding: 0.1.13 + electron-to-chromium@1.5.124: {} elliptic@6.6.1: @@ -11937,6 +12927,10 @@ snapshots: encodeurl@2.0.0: {} + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + end-of-stream@1.4.5: dependencies: once: 1.4.0 @@ -11962,6 +12956,8 @@ snapshots: entities@4.5.0: {} + err-code@3.0.1: {} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -12461,6 +13457,8 @@ snapshots: fast-diff@1.3.0: {} + fast-fifo@1.3.2: {} + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -12623,6 +13621,8 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 + get-iterator@1.0.2: {} + get-package-type@0.1.0: {} get-proto@1.0.1: @@ -12685,6 +13685,14 @@ snapshots: graphemer@1.4.0: {} + graphql-request@6.1.0(encoding@0.1.13)(graphql@16.11.0): + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) + cross-fetch: 3.2.0(encoding@0.1.13) + graphql: 16.11.0 + transitivePeerDependencies: + - encoding + graphql-request@7.2.0(graphql@16.11.0): dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) @@ -12737,6 +13745,8 @@ snapshots: inherits: 2.0.4 minimalistic-assert: 1.0.1 + hashlru@2.3.0: {} + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -12865,6 +13875,41 @@ snapshots: transitivePeerDependencies: - '@types/node' + inquirer@8.2.7(@types/node@22.13.14): + dependencies: + '@inquirer/external-editor': 1.0.1(@types/node@22.13.14) + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.2 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + transitivePeerDependencies: + - '@types/node' + + interface-datastore@7.0.4: + dependencies: + interface-store: 3.0.4 + nanoid: 4.0.2 + uint8arrays: 4.0.10 + + interface-datastore@8.3.2: + dependencies: + interface-store: 6.0.3 + uint8arrays: 5.1.0 + + interface-store@3.0.4: {} + + interface-store@6.0.3: {} + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -12873,6 +13918,98 @@ snapshots: ipaddr.js@1.9.1: {} + ipfs-core-types@0.14.1: + dependencies: + '@ipld/dag-pb': 4.1.5 + '@libp2p/interface-keychain': 2.0.5 + '@libp2p/interface-peer-id': 2.0.2 + '@libp2p/interface-peer-info': 1.0.10 + '@libp2p/interface-pubsub': 3.0.7 + '@multiformats/multiaddr': 11.6.1 + '@types/node': 18.19.83 + interface-datastore: 7.0.4 + ipfs-unixfs: 9.0.1 + multiformats: 11.0.2 + transitivePeerDependencies: + - supports-color + + ipfs-core-utils@0.18.1(encoding@0.1.13): + dependencies: + '@libp2p/logger': 2.1.1 + '@multiformats/multiaddr': 11.6.1 + '@multiformats/multiaddr-to-uri': 9.0.8 + any-signal: 3.0.1 + blob-to-it: 2.0.10 + browser-readablestream-to-it: 2.0.10 + err-code: 3.0.1 + ipfs-core-types: 0.14.1 + ipfs-unixfs: 9.0.1 + ipfs-utils: 9.0.14(encoding@0.1.13) + it-all: 2.0.1 + it-map: 2.0.1 + it-peekable: 2.0.1 + it-to-stream: 1.0.0 + merge-options: 3.0.4 + multiformats: 11.0.2 + nanoid: 4.0.2 + parse-duration: 1.1.2 + timeout-abort-controller: 3.0.0 + uint8arrays: 4.0.10 + transitivePeerDependencies: + - encoding + - supports-color + + ipfs-http-client@60.0.1(encoding@0.1.13): + dependencies: + '@ipld/dag-cbor': 9.2.5 + '@ipld/dag-json': 10.2.6 + '@ipld/dag-pb': 4.1.5 + '@libp2p/logger': 2.1.1 + '@libp2p/peer-id': 2.0.4 + '@multiformats/multiaddr': 11.6.1 + any-signal: 3.0.1 + dag-jose: 4.0.0 + err-code: 3.0.1 + ipfs-core-types: 0.14.1 + ipfs-core-utils: 0.18.1(encoding@0.1.13) + ipfs-utils: 9.0.14(encoding@0.1.13) + it-first: 2.0.1 + it-last: 2.0.1 + merge-options: 3.0.4 + multiformats: 11.0.2 + parse-duration: 1.1.2 + stream-to-it: 0.2.4 + uint8arrays: 4.0.10 + transitivePeerDependencies: + - encoding + - supports-color + + ipfs-unixfs@9.0.1: + dependencies: + err-code: 3.0.1 + protobufjs: 7.4.0 + + ipfs-utils@9.0.14(encoding@0.1.13): + dependencies: + any-signal: 3.0.1 + browser-readablestream-to-it: 1.0.3 + buffer: 6.0.3 + electron-fetch: 1.9.1 + err-code: 3.0.1 + is-electron: 2.2.2 + iso-url: 1.2.1 + it-all: 1.0.6 + it-glob: 1.0.2 + it-to-stream: 1.0.0 + merge-options: 3.0.4 + nanoid: 3.3.11 + native-fetch: 3.0.0(node-fetch@2.7.0(encoding@0.1.13)) + node-fetch: 2.7.0(encoding@0.1.13) + react-native-fetch-api: 3.0.0 + stream-to-it: 0.2.4 + transitivePeerDependencies: + - encoding + iron-webcrypto@1.2.1: {} irregular-plurals@3.5.0: {} @@ -12932,6 +14069,8 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 + is-electron@2.2.2: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: @@ -12972,6 +14111,8 @@ snapshots: is-plain-obj@1.1.0: {} + is-plain-obj@2.1.0: {} + is-promise@4.0.0: {} is-regex@1.2.1: @@ -13035,6 +14176,8 @@ snapshots: isexe@2.0.0: {} + iso-url@1.2.1: {} + isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -13092,6 +14235,38 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + it-all@1.0.6: {} + + it-all@2.0.1: {} + + it-first@2.0.1: {} + + it-glob@1.0.2: + dependencies: + '@types/minimatch': 3.0.5 + minimatch: 3.1.2 + + it-last@2.0.1: {} + + it-map@2.0.1: {} + + it-peekable@2.0.1: {} + + it-pushable@3.2.3: + dependencies: + p-defer: 4.0.1 + + it-stream-types@1.0.5: {} + + it-to-stream@1.0.0: + dependencies: + buffer: 6.0.3 + fast-fifo: 1.3.2 + get-iterator: 1.0.2 + p-defer: 3.0.0 + p-fifo: 1.0.0 + readable-stream: 3.6.2 + jake@10.9.2: dependencies: async: 3.2.6 @@ -13168,6 +14343,25 @@ snapshots: - supports-color - ts-node + jest-cli@29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + jest-config@29.7.0(@types/node@20.17.27)(ts-node@10.9.2(@types/node@20.17.27)(typescript@5.8.2)): dependencies: '@babel/core': 7.26.10 @@ -13199,6 +14393,68 @@ snapshots: - babel-plugin-macros - supports-color + jest-config@29.7.0(@types/node@20.17.27)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)): + dependencies: + '@babel/core': 7.26.10 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.10) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.17.27 + ts-node: 10.9.2(@types/node@22.13.14)(typescript@5.8.2) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)): + dependencies: + '@babel/core': 7.26.10 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.10) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 22.13.14 + ts-node: 10.9.2(@types/node@22.13.14)(typescript@5.8.2) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + jest-diff@29.7.0: dependencies: chalk: 4.1.2 @@ -13426,6 +14682,18 @@ snapshots: - supports-color - ts-node + jest@29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + jose@4.15.9: {} jose@5.10.0: {} @@ -13506,7 +14774,7 @@ snapshots: kleur@3.0.3: {} - langsmith@0.2.15(openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)): + langsmith@0.2.15(openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)): dependencies: '@types/uuid': 10.0.0 commander: 10.0.1 @@ -13515,9 +14783,9 @@ snapshots: semver: 7.7.1 uuid: 10.0.0 optionalDependencies: - openai: 4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56) + openai: 4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56) - langsmith@0.2.15(openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)): + langsmith@0.2.15(openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)): dependencies: '@types/uuid': 10.0.0 commander: 10.0.1 @@ -13526,9 +14794,9 @@ snapshots: semver: 7.7.1 uuid: 10.0.0 optionalDependencies: - openai: 4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) + openai: 4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) - langsmith@0.2.15(openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)): + langsmith@0.2.15(openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)): dependencies: '@types/uuid': 10.0.0 commander: 10.0.1 @@ -13537,9 +14805,9 @@ snapshots: semver: 7.7.1 uuid: 10.0.0 optionalDependencies: - openai: 4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) + openai: 4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) - langsmith@0.2.15(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)): + langsmith@0.2.15(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2)): dependencies: '@types/uuid': 10.0.0 commander: 10.0.1 @@ -13548,9 +14816,9 @@ snapshots: semver: 7.7.1 uuid: 10.0.0 optionalDependencies: - openai: 4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) + openai: 4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2) - langsmith@0.2.15(openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)): + langsmith@0.2.15(openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56)): dependencies: '@types/uuid': 10.0.0 commander: 10.0.1 @@ -13559,7 +14827,7 @@ snapshots: semver: 7.7.1 uuid: 10.0.0 optionalDependencies: - openai: 4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56) + openai: 4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56) leven@3.1.0: {} @@ -13641,6 +14909,8 @@ snapshots: lunr@2.3.9: {} + main-event@1.0.1: {} + make-dir@4.0.0: dependencies: semver: 7.7.1 @@ -13699,6 +14969,10 @@ snapshots: merge-descriptors@2.0.0: {} + merge-options@3.0.4: + dependencies: + is-plain-obj: 2.1.0 + merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -13782,8 +15056,14 @@ snapshots: ms@2.1.3: {} + multiformats@11.0.2: {} + + multiformats@12.1.3: {} + multiformats@13.3.2: {} + multiformats@13.4.2: {} + multiformats@9.9.0: {} mustache@4.2.0: {} @@ -13792,6 +15072,16 @@ snapshots: nanoid@3.3.11: {} + nanoid@4.0.2: {} + + native-fetch@3.0.0(node-fetch@2.7.0(encoding@0.1.13)): + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + + native-fetch@4.0.2(undici@5.29.0): + dependencies: + undici: 5.29.0 + natural-compare@1.4.0: {} negotiator@1.0.0: {} @@ -13806,9 +15096,11 @@ snapshots: node-fetch-native@1.6.7: {} - node-fetch@2.7.0: + node-fetch@2.7.0(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 node-gyp-build@4.8.4: {} @@ -13929,7 +15221,7 @@ snapshots: dependencies: mimic-function: 5.0.1 - openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2): + openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2): dependencies: '@types/node': 18.19.83 '@types/node-fetch': 2.6.12 @@ -13937,14 +15229,14 @@ snapshots: agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) optionalDependencies: ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) zod: 3.24.2 transitivePeerDependencies: - encoding - openai@4.89.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56): + openai@4.89.1(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56): dependencies: '@types/node': 18.19.83 '@types/node-fetch': 2.6.12 @@ -13952,7 +15244,7 @@ snapshots: agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) optionalDependencies: ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) zod: 3.25.56 @@ -13960,7 +15252,7 @@ snapshots: - encoding optional: true - openai@4.89.1(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2): + openai@4.89.1(encoding@0.1.13)(ws@8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2): dependencies: '@types/node': 18.19.83 '@types/node-fetch': 2.6.12 @@ -13968,14 +15260,14 @@ snapshots: agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) optionalDependencies: ws: 8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) zod: 3.24.2 transitivePeerDependencies: - encoding - openai@4.89.1(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2): + openai@4.89.1(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2): dependencies: '@types/node': 18.19.83 '@types/node-fetch': 2.6.12 @@ -13983,14 +15275,14 @@ snapshots: agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) optionalDependencies: ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) zod: 3.24.2 transitivePeerDependencies: - encoding - openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2): + openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.2): dependencies: '@types/node': 18.19.83 '@types/node-fetch': 2.6.12 @@ -13998,14 +15290,14 @@ snapshots: agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) optionalDependencies: ws: 8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) zod: 3.24.2 transitivePeerDependencies: - encoding - openai@4.89.1(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56): + openai@4.89.1(encoding@0.1.13)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.56): dependencies: '@types/node': 18.19.83 '@types/node-fetch': 2.6.12 @@ -14013,7 +15305,7 @@ snapshots: agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) optionalDependencies: ws: 8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) zod: 3.25.56 @@ -14086,7 +15378,7 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - ox@0.10.5(typescript@5.8.2)(zod@3.25.56): + ox@0.12.4(typescript@5.8.2)(zod@3.25.56): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -14188,6 +15480,15 @@ snapshots: transitivePeerDependencies: - zod + p-defer@3.0.0: {} + + p-defer@4.0.1: {} + + p-fifo@1.0.0: + dependencies: + fast-fifo: 1.3.2 + p-defer: 3.0.0 + p-filter@2.1.0: dependencies: p-map: 2.1.0 @@ -14217,6 +15518,11 @@ snapshots: eventemitter3: 4.0.7 p-timeout: 3.2.0 + p-queue@9.1.0: + dependencies: + eventemitter3: 5.0.1 + p-timeout: 7.0.1 + p-retry@4.6.2: dependencies: '@types/retry': 0.12.0 @@ -14226,6 +15532,8 @@ snapshots: dependencies: p-finally: 1.0.0 + p-timeout@7.0.1: {} + p-try@2.2.0: {} package-manager-detector@0.2.11: @@ -14236,6 +15544,8 @@ snapshots: dependencies: callsites: 3.1.0 + parse-duration@1.1.2: {} + parse-imports@2.2.1: dependencies: es-module-lexer: 1.6.0 @@ -14342,6 +15652,8 @@ snapshots: process-warning@1.0.0: {} + progress-events@1.0.1: {} + prompts@2.4.2: dependencies: kleur: 3.0.3 @@ -14433,6 +15745,10 @@ snapshots: react-is@18.3.1: {} + react-native-fetch-api@3.0.0: + dependencies: + p-defer: 3.0.0 + react@18.3.1: dependencies: loose-envify: 1.4.0 @@ -14481,6 +15797,10 @@ snapshots: real-require@0.1.0: {} + receptacle@1.3.2: + dependencies: + ms: 2.1.3 + redaxios@0.5.1: {} redent@3.0.0: @@ -14551,6 +15871,8 @@ snapshots: onetime: 7.0.0 signal-exit: 4.1.0 + retimer@3.0.0: {} + retry@0.13.1: {} reusify@1.1.0: {} @@ -14826,6 +16148,10 @@ snapshots: stream-shift@1.0.3: {} + stream-to-it@0.2.4: + dependencies: + get-iterator: 1.0.2 + strict-uri-encode@2.0.0: {} string-length@4.0.2: @@ -14942,20 +16268,33 @@ snapshots: viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2) zod: 3.24.2 - svix-fetch@3.0.0: + sushi@6.2.1(typescript@5.8.2)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))(zod@3.25.56): + dependencies: + '@uniswap/token-lists': 1.0.0-beta.33 + big.js: 6.1.1 + date-fns: 3.3.1 + seedrandom: 3.0.5 + tiny-invariant: 1.3.3 + toformat: 2.0.0 + optionalDependencies: + typescript: 5.8.2 + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + zod: 3.25.56 + + svix-fetch@3.0.0(encoding@0.1.13): dependencies: - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) whatwg-fetch: 3.6.20 transitivePeerDependencies: - encoding - svix@1.62.0: + svix@1.62.0(encoding@0.1.13): dependencies: '@stablelib/base64': 1.0.1 '@types/node': 22.13.14 es6-promise: 4.2.8 fast-sha256: 1.3.0 - svix-fetch: 3.0.0 + svix-fetch: 3.0.0(encoding@0.1.13) url-parse: 1.5.10 transitivePeerDependencies: - encoding @@ -14996,6 +16335,10 @@ snapshots: through@2.3.8: {} + timeout-abort-controller@3.0.0: + dependencies: + retimer: 3.0.0 + tiny-invariant@1.3.3: {} tmp@0.0.33: @@ -15052,6 +16395,26 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.10) + ts-jest@29.3.0(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)))(typescript@5.8.2): + dependencies: + bs-logger: 0.2.6 + ejs: 3.1.10 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.7.1 + type-fest: 4.38.0 + typescript: 5.8.2 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.26.10 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.10) + ts-node@10.9.2(@types/node@20.17.27)(typescript@5.8.2): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -15071,6 +16434,25 @@ snapshots: yn: 3.1.1 optional: true + ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.12 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.13.14 + acorn: 8.15.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.8.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -15208,10 +16590,23 @@ snapshots: ufo@1.6.1: {} + uint8-varint@2.0.4: + dependencies: + uint8arraylist: 2.4.8 + uint8arrays: 5.1.0 + + uint8arraylist@2.4.8: + dependencies: + uint8arrays: 5.1.0 + uint8arrays@3.1.0: dependencies: multiformats: 9.9.0 + uint8arrays@4.0.10: + dependencies: + multiformats: 12.1.3 + uint8arrays@5.1.0: dependencies: multiformats: 13.3.2 @@ -15235,7 +16630,7 @@ snapshots: undici-types@7.16.0: {} - undici-types@7.19.2: {} + undici-types@7.22.0: {} undici@5.29.0: dependencies: @@ -15291,6 +16686,8 @@ snapshots: dependencies: node-gyp-build: 4.8.4 + utf8-codec@1.0.0: {} + utf8@3.0.0: {} util-deprecate@1.0.2: {} @@ -15333,6 +16730,8 @@ snapshots: optionalDependencies: react: 18.3.1 + varint@6.0.0: {} + vary@1.1.2: {} viem@2.22.16(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56): @@ -15471,7 +16870,7 @@ snapshots: - utf-8-validate - zod - viem@2.43.1(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56): + viem@2.46.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 @@ -15479,7 +16878,7 @@ snapshots: '@scure/bip39': 1.6.0 abitype: 1.2.3(typescript@5.8.2)(zod@3.25.56) isows: 1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.10.5(typescript@5.8.2)(zod@3.25.56) + ox: 0.12.4(typescript@5.8.2)(zod@3.25.56) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: typescript: 5.8.2 @@ -15488,10 +16887,10 @@ snapshots: - utf-8-validate - zod - wagmi@2.17.0(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.25.56): + wagmi@2.17.0(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.25.56): dependencies: '@tanstack/react-query': 5.89.0(react@18.3.1) - '@wagmi/connectors': 5.10.0(@wagmi/core@2.21.0(@tanstack/query-core@5.89.0)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.25.56) + '@wagmi/connectors': 5.10.0(@wagmi/core@2.21.0(@tanstack/query-core@5.89.0)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)))(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.25.56) '@wagmi/core': 2.21.0(@tanstack/query-core@5.89.0)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2)) react: 18.3.1 use-sync-external-store: 1.4.0(react@18.3.1) @@ -15527,6 +16926,45 @@ snapshots: - utf-8-validate - zod + wagmi@2.17.0(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))(zod@3.25.56): + dependencies: + '@tanstack/react-query': 5.89.0(react@18.3.1) + '@wagmi/connectors': 5.10.0(@wagmi/core@2.21.0(@tanstack/query-core@5.89.0)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)))(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))(zod@3.25.56) + '@wagmi/core': 2.21.0(@tanstack/query-core@5.89.0)(react@18.3.1)(typescript@5.8.2)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56)) + react: 18.3.1 + use-sync-external-store: 1.4.0(react@18.3.1) + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + optionalDependencies: + typescript: 5.8.2 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@tanstack/query-core' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - immer + - ioredis + - supports-color + - uploadthing + - utf-8-validate + - zod + walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -15665,10 +17103,143 @@ snapshots: bufferutil: 4.0.9 utf-8-validate: 5.0.10 - x402-fetch@0.7.0(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + x402-fetch@0.7.0(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + dependencies: + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + x402: 0.7.2(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + zod: 3.25.56 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@solana/sysvars' + - '@tanstack/query-core' + - '@tanstack/react-query' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - supports-color + - typescript + - uploadthing + - utf-8-validate + - ws + + x402-fetch@0.7.0(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + dependencies: + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + x402: 0.7.2(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + zod: 3.25.56 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@solana/sysvars' + - '@tanstack/query-core' + - '@tanstack/react-query' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - supports-color + - typescript + - uploadthing + - utf-8-validate + - ws + + x402@0.6.1(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + dependencies: + '@scure/base': 1.2.6 + '@solana-program/compute-budget': 0.8.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))) + '@solana-program/token': 0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))) + '@solana-program/token-2022': 0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)) + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/transaction-confirmation': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) + wagmi: 2.17.0(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))(zod@3.25.56) + zod: 3.25.56 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@solana/sysvars' + - '@tanstack/query-core' + - '@tanstack/react-query' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - supports-color + - typescript + - uploadthing + - utf-8-validate + - ws + + x402@0.7.2(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: + '@scure/base': 1.2.6 + '@solana-program/compute-budget': 0.8.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))) + '@solana-program/token': 0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))) + '@solana-program/token-2022': 0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)) + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/transaction-confirmation': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.19.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/wallet-standard-features': 1.3.0 + '@wallet-standard/app': 1.1.0 + '@wallet-standard/base': 1.1.0 + '@wallet-standard/features': 1.1.0 viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) - x402: 0.7.2(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + wagmi: 2.17.0(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56))(zod@3.25.56) zod: 3.25.56 transitivePeerDependencies: - '@azure/app-configuration' @@ -15704,7 +17275,7 @@ snapshots: - utf-8-validate - ws - x402@0.7.2(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + x402@0.7.2(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: '@scure/base': 1.2.6 '@solana-program/compute-budget': 0.8.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) @@ -15717,7 +17288,7 @@ snapshots: '@wallet-standard/base': 1.1.0 '@wallet-standard/features': 1.1.0 viem: 2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.25.56) - wagmi: 2.17.0(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.25.56) + wagmi: 2.17.0(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.25.56) zod: 3.25.56 transitivePeerDependencies: - '@azure/app-configuration'