From aa2c565f3135547a8ef97031b4ff780d7e90e6fe Mon Sep 17 00:00:00 2001 From: StevenSF1998 Date: Thu, 22 May 2025 18:07:06 +0800 Subject: [PATCH 1/7] Implement 1. Twitter Client 2. on initate job and response to job follow each other --- .../acp_base/external_evaluation/.env.example | 10 +- .../acp_base/external_evaluation/buyer.ts | 84 ++++++++------- examples/acp_base/external_evaluation/env.ts | 49 ++++++--- .../acp_base/external_evaluation/evaluator.ts | 32 +++--- .../acp_base/external_evaluation/seller.ts | 70 ++++++------ .../acp_base/self_evaluation/.env.example | 8 +- examples/acp_base/self_evaluation/buyer.ts | 88 ++++++++------- examples/acp_base/self_evaluation/env.ts | 35 +++--- examples/acp_base/self_evaluation/seller.ts | 75 +++++++------ package-lock.json | 101 ++++++++++++++++-- package.json | 5 +- src/acpClient.ts | 75 ++++++++++++- src/acpJob.ts | 12 ++- src/acpJobOffering.ts | 4 +- src/interfaces.ts | 3 +- 15 files changed, 443 insertions(+), 208 deletions(-) diff --git a/examples/acp_base/external_evaluation/.env.example b/examples/acp_base/external_evaluation/.env.example index c549dc3..c0e7cb2 100644 --- a/examples/acp_base/external_evaluation/.env.example +++ b/examples/acp_base/external_evaluation/.env.example @@ -1,5 +1,9 @@ WHITELISTED_WALLET_PRIVATE_KEY=0x- -WHITELISTED_WALLET_ENTITY_ID= -BUYER_AGENT_WALLET_ADDRESS= -SELLER_AGENT_WALLET_ADDRESS= +BUYER_AGENT_WALLET_ADDRESS= +SELLER_AGENT_WALLET_ADDRESS= +BUYER_ENTITY_ID= +SELLER_ENTITY_ID= +GAME_TWITTER_BEARER_TOKEN= EVALUATOR_AGENT_WALLET_ADDRESS= +EVALUATOR_ENTITY_ID= + diff --git a/examples/acp_base/external_evaluation/buyer.ts b/examples/acp_base/external_evaluation/buyer.ts index cc9b972..e6bbef5 100644 --- a/examples/acp_base/external_evaluation/buyer.ts +++ b/examples/acp_base/external_evaluation/buyer.ts @@ -1,52 +1,58 @@ // TODO: Point the imports to acp-node after publishing import AcpClient from "../../../src/acpClient"; -import AcpContractClient, { AcpJobPhases } from "../../../src/acpContractClient"; +import AcpContractClient, { + AcpJobPhases, +} from "../../../src/acpContractClient"; import AcpJob from "../../../src/acpJob"; import { baseSepoliaAcpConfig } from "../../../src"; import { - BUYER_AGENT_WALLET_ADDRESS, - EVALUATOR_AGENT_WALLET_ADDRESS, - WHITELISTED_WALLET_ENTITY_ID, - WHITELISTED_WALLET_PRIVATE_KEY + BUYER_AGENT_WALLET_ADDRESS, + EVALUATOR_AGENT_WALLET_ADDRESS, + BUYER_ENTITY_ID, + GAME_TWITTER_BEARER_TOKEN, + WHITELISTED_WALLET_PRIVATE_KEY, } from "./env"; - +import { TwitterApi } from "@virtuals-protocol/game-twitter-node"; async function buyer() { - const acpClient = new AcpClient({ - acpContractClient: await AcpContractClient.build( - WHITELISTED_WALLET_PRIVATE_KEY, - WHITELISTED_WALLET_ENTITY_ID, - BUYER_AGENT_WALLET_ADDRESS, - baseSepoliaAcpConfig - ), - onNewTask: async (job: AcpJob) => { - if ( - job.phase === AcpJobPhases.NEGOTIATION && - job.memos.find((m) => m.nextPhase === AcpJobPhases.TRANSACTION) - ) { - console.log("Paying job", job); - await job.pay(1); - console.log(`Job ${job.id} paid`); - } else if (job.phase === AcpJobPhases.COMPLETED) { - console.log(`Job ${job.id} completed`); - } - }, - }); + const acpClient = new AcpClient({ + acpContractClient: await AcpContractClient.build( + WHITELISTED_WALLET_PRIVATE_KEY, + BUYER_ENTITY_ID, + BUYER_AGENT_WALLET_ADDRESS, + baseSepoliaAcpConfig + ), + onNewTask: async (job: AcpJob) => { + if ( + job.phase === AcpJobPhases.NEGOTIATION && + job.memos.find((m) => m.nextPhase === AcpJobPhases.TRANSACTION) + ) { + console.log("Paying job", job); + await job.pay(1); + console.log(`Job ${job.id} paid`); + } else if (job.phase === AcpJobPhases.COMPLETED) { + console.log(`Job ${job.id} completed`); + } + }, + gameTwitterClient: new TwitterApi({ + gameTwitterAccessToken: GAME_TWITTER_BEARER_TOKEN, + }), + }); + + const relevantAgents = await acpClient.browseAgents("meme", "999"); + console.log("Relevant seller agents: ", relevantAgents); + // Pick one of the agents based on your criteria (in this example we just pick the second one) + const chosenAgent = relevantAgents[1]; + // Pick one of the service offerings based on your criteria (in this example we just pick the first one) + const chosenJobOffering = chosenAgent.offerings[0]; - const relevantAgents = await acpClient.browseAgents("meme", "999"); - console.log("Relevant seller agents: ", relevantAgents); - // Pick one of the agents based on your criteria (in this example we just pick the second one) - const chosenAgent = relevantAgents[1]; - // Pick one of the service offerings based on your criteria (in this example we just pick the first one) - const chosenJobOffering = chosenAgent.offerings[0] + const jobId = await chosenJobOffering.initiateJob( + chosenJobOffering.requirementSchema || {}, + new Date(Date.now() + 1000 * 60 * 60 * 24), + EVALUATOR_AGENT_WALLET_ADDRESS + ); - const jobId = await chosenJobOffering.initiateJob( - chosenJobOffering.requirementSchema || {}, - new Date(Date.now() + 1000 * 60 * 60 * 24), - EVALUATOR_AGENT_WALLET_ADDRESS, - ); - - console.log(`Job ${jobId} initiated`); + console.log(`Job ${jobId} initiated`); } buyer(); diff --git a/examples/acp_base/external_evaluation/env.ts b/examples/acp_base/external_evaluation/env.ts index cbf7105..3beb3ab 100644 --- a/examples/acp_base/external_evaluation/env.ts +++ b/examples/acp_base/external_evaluation/env.ts @@ -1,22 +1,45 @@ import dotenv from "dotenv"; import { Address } from "viem"; -dotenv.config({ path: __dirname + '/.env' }); +dotenv.config({ path: __dirname + "/.env" }); function getEnvVar(key: string, required = true): T { - const value = process.env[key]; - if (required && (value === undefined || value === '')) { - throw new Error(`${key} is not defined or is empty in the .env file`); - } - return value as T; + const value = process.env[key]; + if (required && (value === undefined || value === "")) { + throw new Error(`${key} is not defined or is empty in the .env file`); + } + return value as T; } -export const WHITELISTED_WALLET_PRIVATE_KEY = getEnvVar
('WHITELISTED_WALLET_PRIVATE_KEY'); -export const WHITELISTED_WALLET_ENTITY_ID = parseInt(getEnvVar('WHITELISTED_WALLET_ENTITY_ID'), 10); -export const BUYER_AGENT_WALLET_ADDRESS = getEnvVar
('BUYER_AGENT_WALLET_ADDRESS'); -export const SELLER_AGENT_WALLET_ADDRESS = getEnvVar
('SELLER_AGENT_WALLET_ADDRESS'); -export const EVALUATOR_AGENT_WALLET_ADDRESS = getEnvVar
('EVALUATOR_AGENT_WALLET_ADDRESS'); +export const WHITELISTED_WALLET_PRIVATE_KEY = getEnvVar
( + "WHITELISTED_WALLET_PRIVATE_KEY" +); +export const BUYER_AGENT_WALLET_ADDRESS = getEnvVar
( + "BUYER_AGENT_WALLET_ADDRESS" +); +export const SELLER_AGENT_WALLET_ADDRESS = getEnvVar
( + "SELLER_AGENT_WALLET_ADDRESS" +); +export const EVALUATOR_AGENT_WALLET_ADDRESS = getEnvVar
( + "EVALUATOR_AGENT_WALLET_ADDRESS" +); +export const BUYER_ENTITY_ID = parseInt(getEnvVar("BUYER_ENTITY_ID")); +export const SELLER_ENTITY_ID = parseInt(getEnvVar("SELLER_ENTITY_ID")); +export const EVALUATOR_ENTITY_ID = parseInt(getEnvVar("EVALUATOR_ENTITY_ID")); +export const GAME_TWITTER_BEARER_TOKEN = getEnvVar( + "GAME_TWITTER_BEARER_TOKEN" +); -if (isNaN(WHITELISTED_WALLET_ENTITY_ID)) { - throw new Error('WHITELISTED_WALLET_ENTITY_ID must be a valid number in the .env file'); +if (isNaN(BUYER_ENTITY_ID)) { + throw new Error("BUYER_ENTITY_ID must be a valid number in the .env file"); +} + +if (isNaN(SELLER_ENTITY_ID)) { + throw new Error("SELLER_ENTITY_ID must be a valid number in the .env file"); +} + +if (isNaN(EVALUATOR_ENTITY_ID)) { + throw new Error( + "EVALUATOR_ENTITY_ID must be a valid number in the .env file" + ); } diff --git a/examples/acp_base/external_evaluation/evaluator.ts b/examples/acp_base/external_evaluation/evaluator.ts index 2656a14..c725940 100644 --- a/examples/acp_base/external_evaluation/evaluator.ts +++ b/examples/acp_base/external_evaluation/evaluator.ts @@ -5,25 +5,25 @@ import AcpContractClient from "../../../src/acpContractClient"; import AcpJob from "../../../src/acpJob"; import { baseSepoliaAcpConfig } from "../../../src"; import { - EVALUATOR_AGENT_WALLET_ADDRESS, - WHITELISTED_WALLET_ENTITY_ID, - WHITELISTED_WALLET_PRIVATE_KEY + EVALUATOR_AGENT_WALLET_ADDRESS, + EVALUATOR_ENTITY_ID, + WHITELISTED_WALLET_PRIVATE_KEY, } from "./env"; async function evaluator() { - new AcpClient({ - acpContractClient: await AcpContractClient.build( - WHITELISTED_WALLET_PRIVATE_KEY, - WHITELISTED_WALLET_ENTITY_ID, - EVALUATOR_AGENT_WALLET_ADDRESS, - baseSepoliaAcpConfig - ), - onEvaluate: async (job: AcpJob) => { - console.log("Evaluation function called", job); - await job.evaluate(true, "Externally evaluated and approved"); - console.log(`Job ${job.id} evaluated`); - }, - }); + new AcpClient({ + acpContractClient: await AcpContractClient.build( + WHITELISTED_WALLET_PRIVATE_KEY, + EVALUATOR_ENTITY_ID, + EVALUATOR_AGENT_WALLET_ADDRESS, + baseSepoliaAcpConfig + ), + onEvaluate: async (job: AcpJob) => { + console.log("Evaluation function called", job); + await job.evaluate(true, "Externally evaluated and approved"); + console.log(`Job ${job.id} evaluated`); + }, + }); } evaluator(); diff --git a/examples/acp_base/external_evaluation/seller.ts b/examples/acp_base/external_evaluation/seller.ts index 8e0550b..5106dad 100644 --- a/examples/acp_base/external_evaluation/seller.ts +++ b/examples/acp_base/external_evaluation/seller.ts @@ -1,46 +1,48 @@ // TODO: Point the imports to acp-node after publishing import AcpClient from "../../../src/acpClient"; -import AcpContractClient, { AcpJobPhases } from "../../../src/acpContractClient"; +import AcpContractClient, { + AcpJobPhases, +} from "../../../src/acpContractClient"; import AcpJob from "../../../src/acpJob"; import { baseSepoliaAcpConfig } from "../../../src"; import { - SELLER_AGENT_WALLET_ADDRESS, - WHITELISTED_WALLET_ENTITY_ID, - WHITELISTED_WALLET_PRIVATE_KEY + SELLER_AGENT_WALLET_ADDRESS, + SELLER_ENTITY_ID, + WHITELISTED_WALLET_PRIVATE_KEY, } from "./env"; async function seller() { - new AcpClient({ - acpContractClient: await AcpContractClient.build( - WHITELISTED_WALLET_PRIVATE_KEY, - WHITELISTED_WALLET_ENTITY_ID, - SELLER_AGENT_WALLET_ADDRESS, - baseSepoliaAcpConfig - ), - onNewTask: async (job: AcpJob) => { - if ( - job.phase === AcpJobPhases.REQUEST && - job.memos.find((m) => m.nextPhase === AcpJobPhases.NEGOTIATION) - ) { - console.log("Responding to job", job); - await job.respond(true); - console.log(`Job ${job.id} responded`); - } else if ( - job.phase === AcpJobPhases.TRANSACTION && - job.memos.find((m) => m.nextPhase === AcpJobPhases.EVALUATION) - ) { - console.log("Delivering job", job); - await job.deliver( - JSON.stringify({ - type: "url", - value: "https://example.com", - }) - ); - console.log(`Job ${job.id} delivered`); - } - }, - }); + new AcpClient({ + acpContractClient: await AcpContractClient.build( + WHITELISTED_WALLET_PRIVATE_KEY, + SELLER_ENTITY_ID, + SELLER_AGENT_WALLET_ADDRESS, + baseSepoliaAcpConfig + ), + onNewTask: async (job: AcpJob) => { + if ( + job.phase === AcpJobPhases.REQUEST && + job.memos.find((m) => m.nextPhase === AcpJobPhases.NEGOTIATION) + ) { + console.log("Responding to job", job); + await job.respond(true); + console.log(`Job ${job.id} responded`); + } else if ( + job.phase === AcpJobPhases.TRANSACTION && + job.memos.find((m) => m.nextPhase === AcpJobPhases.EVALUATION) + ) { + console.log("Delivering job", job); + await job.deliver( + JSON.stringify({ + type: "url", + value: "https://example.com", + }) + ); + console.log(`Job ${job.id} delivered`); + } + }, + }); } seller(); diff --git a/examples/acp_base/self_evaluation/.env.example b/examples/acp_base/self_evaluation/.env.example index 2b8a37f..e054f57 100644 --- a/examples/acp_base/self_evaluation/.env.example +++ b/examples/acp_base/self_evaluation/.env.example @@ -1,4 +1,6 @@ WHITELISTED_WALLET_PRIVATE_KEY=0x- -WHITELISTED_WALLET_ENTITY_ID= -BUYER_AGENT_WALLET_ADDRESS= -SELLER_AGENT_WALLET_ADDRESS= +BUYER_AGENT_WALLET_ADDRESS= +SELLER_AGENT_WALLET_ADDRESS= +BUYER_ENTITY_ID= +SELLER_ENTITY_ID= +GAME_TWITTER_BEARER_TOKEN= diff --git a/examples/acp_base/self_evaluation/buyer.ts b/examples/acp_base/self_evaluation/buyer.ts index 8c22f18..2128856 100644 --- a/examples/acp_base/self_evaluation/buyer.ts +++ b/examples/acp_base/self_evaluation/buyer.ts @@ -1,54 +1,62 @@ // TODO: Point the imports to acp-node after publishing import AcpClient from "../../../src/acpClient"; -import AcpContractClient, { AcpJobPhases } from "../../../src/acpContractClient"; +import AcpContractClient, { + AcpJobPhases, +} from "../../../src/acpContractClient"; import AcpJob from "../../../src/acpJob"; import { baseSepoliaAcpConfig } from "../../../src"; import { - BUYER_AGENT_WALLET_ADDRESS, - WHITELISTED_WALLET_ENTITY_ID, - WHITELISTED_WALLET_PRIVATE_KEY + BUYER_AGENT_WALLET_ADDRESS, + BUYER_ENTITY_ID, + WHITELISTED_WALLET_PRIVATE_KEY, } from "./env"; - +import { TwitterApi } from "@virtuals-protocol/game-twitter-node"; async function buyer() { - const acpClient = new AcpClient({ - acpContractClient: await AcpContractClient.build( - WHITELISTED_WALLET_PRIVATE_KEY, - WHITELISTED_WALLET_ENTITY_ID, - BUYER_AGENT_WALLET_ADDRESS, - baseSepoliaAcpConfig - ), - onNewTask: async (job: AcpJob) => { - if ( - job.phase === AcpJobPhases.NEGOTIATION && - job.memos.find((m) => m.nextPhase === AcpJobPhases.TRANSACTION) - ) { - console.log("Paying job", job); - await job.pay(1); - console.log(`Job ${job.id} paid`); - } else if (job.phase === AcpJobPhases.COMPLETED) { - console.log(`Job ${job.id} completed`); - } - }, - onEvaluate: async (job: AcpJob) => { - console.log("Evaluation function called", job); - await job.evaluate(true, "Self-evaluated and approved"); - console.log(`Job ${job.id} evaluated`); - }, - }); + const acpClient = new AcpClient({ + acpContractClient: await AcpContractClient.build( + WHITELISTED_WALLET_PRIVATE_KEY, + BUYER_ENTITY_ID, + BUYER_AGENT_WALLET_ADDRESS, + baseSepoliaAcpConfig + ), + gameTwitterClient: new TwitterApi({ + gameTwitterAccessToken: process.env.GAME_TWITTER_BEARER_TOKEN, + }), + onNewTask: async (job: AcpJob) => { + if ( + job.phase === AcpJobPhases.NEGOTIATION && + job.memos.find((m) => m.nextPhase === AcpJobPhases.TRANSACTION) + ) { + console.log("Paying job", job); + await job.pay(1); + console.log(`Job ${job.id} paid`); + } else if (job.phase === AcpJobPhases.COMPLETED) { + console.log(`Job ${job.id} completed`); + } + }, + onEvaluate: async (job: AcpJob) => { + console.log("Evaluation function called", job); + await job.evaluate(true, "Self-evaluated and approved"); + console.log(`Job ${job.id} evaluated`); + }, + }); - const relevantAgents = await acpClient.browseAgents("meme", "999"); - // Pick one of the agents based on your criteria (in this example we just pick the first one) - const chosenAgent = relevantAgents[0]; - // Pick one of the service offerings based on your criteria (in this example we just pick the first one) - const chosenJobOffering = chosenAgent.offerings[0] + const relevantAgents = await acpClient.browseAgents("meme", "999"); + console.log("Relevant seller agents: ", relevantAgents); + // Pick one of the agents based on your criteria (in this example we just pick the second one) + const chosenAgent = relevantAgents[1]; + // Pick one of the service offerings based on your criteria (in this example we just pick the first one) + const chosenJobOffering = chosenAgent.offerings[0]; - const jobId = await chosenJobOffering.initiateJob( - chosenJobOffering.requirementSchema || {}, - new Date(Date.now() + 1000 * 60 * 60 * 24), - ); + const jobId = await chosenJobOffering.initiateJob( + chosenJobOffering.requirementSchema || {}, + new Date(Date.now() + 1000 * 60 * 60 * 24), + BUYER_AGENT_WALLET_ADDRESS, + chosenAgent.twitterHandle + ); - console.log(`Job ${jobId} initiated`); + console.log(`Job ${jobId} initiated`); } buyer(); diff --git a/examples/acp_base/self_evaluation/env.ts b/examples/acp_base/self_evaluation/env.ts index 40c1096..6b3715a 100644 --- a/examples/acp_base/self_evaluation/env.ts +++ b/examples/acp_base/self_evaluation/env.ts @@ -1,21 +1,32 @@ import dotenv from "dotenv"; import { Address } from "viem"; -dotenv.config({ path: __dirname + '/.env' }); +dotenv.config({ path: __dirname + "/.env" }); function getEnvVar(key: string, required = true): T { - const value = process.env[key]; - if (required && (value === undefined || value === '')) { - throw new Error(`${key} is not defined or is empty in the .env file`); - } - return value as T; + const value = process.env[key]; + if (required && (value === undefined || value === "")) { + throw new Error(`${key} is not defined or is empty in the .env file`); + } + return value as T; } -export const WHITELISTED_WALLET_PRIVATE_KEY = getEnvVar
('WHITELISTED_WALLET_PRIVATE_KEY'); -export const WHITELISTED_WALLET_ENTITY_ID = parseInt(getEnvVar('WHITELISTED_WALLET_ENTITY_ID'), 10); -export const BUYER_AGENT_WALLET_ADDRESS = getEnvVar
('BUYER_AGENT_WALLET_ADDRESS'); -export const SELLER_AGENT_WALLET_ADDRESS = getEnvVar
('SELLER_AGENT_WALLET_ADDRESS'); +export const WHITELISTED_WALLET_PRIVATE_KEY = getEnvVar
( + "WHITELISTED_WALLET_PRIVATE_KEY" +); -if (isNaN(WHITELISTED_WALLET_ENTITY_ID)) { - throw new Error('WHITELISTED_WALLET_ENTITY_ID must be a valid number in the .env file'); +export const BUYER_ENTITY_ID = parseInt(getEnvVar("BUYER_ENTITY_ID")); +export const SELLER_ENTITY_ID = parseInt(getEnvVar("SELLER_ENTITY_ID")); +export const BUYER_AGENT_WALLET_ADDRESS = getEnvVar
( + "BUYER_AGENT_WALLET_ADDRESS" +); +export const SELLER_AGENT_WALLET_ADDRESS = getEnvVar
( + "SELLER_AGENT_WALLET_ADDRESS" +); + +if (isNaN(BUYER_ENTITY_ID)) { + throw new Error("BUYER_ENTITY_ID must be a valid number in the .env file"); +} +if (isNaN(SELLER_ENTITY_ID)) { + throw new Error("SELLER_ENTITY_ID must be a valid number in the .env file"); } diff --git a/examples/acp_base/self_evaluation/seller.ts b/examples/acp_base/self_evaluation/seller.ts index 8e0550b..3a210b6 100644 --- a/examples/acp_base/self_evaluation/seller.ts +++ b/examples/acp_base/self_evaluation/seller.ts @@ -1,46 +1,51 @@ // TODO: Point the imports to acp-node after publishing import AcpClient from "../../../src/acpClient"; -import AcpContractClient, { AcpJobPhases } from "../../../src/acpContractClient"; +import AcpContractClient, { + AcpJobPhases, +} from "../../../src/acpContractClient"; import AcpJob from "../../../src/acpJob"; import { baseSepoliaAcpConfig } from "../../../src"; import { - SELLER_AGENT_WALLET_ADDRESS, - WHITELISTED_WALLET_ENTITY_ID, - WHITELISTED_WALLET_PRIVATE_KEY + SELLER_AGENT_WALLET_ADDRESS, + SELLER_ENTITY_ID, + WHITELISTED_WALLET_PRIVATE_KEY, } from "./env"; - +import { TwitterApi } from "@virtuals-protocol/game-twitter-node"; async function seller() { - new AcpClient({ - acpContractClient: await AcpContractClient.build( - WHITELISTED_WALLET_PRIVATE_KEY, - WHITELISTED_WALLET_ENTITY_ID, - SELLER_AGENT_WALLET_ADDRESS, - baseSepoliaAcpConfig - ), - onNewTask: async (job: AcpJob) => { - if ( - job.phase === AcpJobPhases.REQUEST && - job.memos.find((m) => m.nextPhase === AcpJobPhases.NEGOTIATION) - ) { - console.log("Responding to job", job); - await job.respond(true); - console.log(`Job ${job.id} responded`); - } else if ( - job.phase === AcpJobPhases.TRANSACTION && - job.memos.find((m) => m.nextPhase === AcpJobPhases.EVALUATION) - ) { - console.log("Delivering job", job); - await job.deliver( - JSON.stringify({ - type: "url", - value: "https://example.com", - }) - ); - console.log(`Job ${job.id} delivered`); - } - }, - }); + new AcpClient({ + acpContractClient: await AcpContractClient.build( + WHITELISTED_WALLET_PRIVATE_KEY, + SELLER_ENTITY_ID, + SELLER_AGENT_WALLET_ADDRESS, + baseSepoliaAcpConfig + ), + gameTwitterClient: new TwitterApi({ + gameTwitterAccessToken: process.env.GAME_TWITTER_BEARER_TOKEN, + }), + onNewTask: async (job: AcpJob) => { + if ( + job.phase === AcpJobPhases.REQUEST && + job.memos.find((m) => m.nextPhase === AcpJobPhases.NEGOTIATION) + ) { + console.log("Responding to job", job); + await job.respond(true); + console.log(`Job ${job.id} responded`); + } else if ( + job.phase === AcpJobPhases.TRANSACTION && + job.memos.find((m) => m.nextPhase === AcpJobPhases.EVALUATION) + ) { + console.log("Delivering job", job); + await job.deliver( + JSON.stringify({ + type: "url", + value: "https://example.com", + }) + ); + console.log(`Job ${job.id} delivered`); + } + }, + }); } seller(); diff --git a/package-lock.json b/package-lock.json index c6f12d1..6819fc2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,11 +12,14 @@ "@aa-sdk/core": "^4.30.0", "@account-kit/infra": "^4.30.0", "@account-kit/smart-contracts": "^4.30.0", + "@virtuals-protocol/game-twitter-node": "^0.1.4", "ajv": "^8.17.1", + "dotenv": "^16.4.5", "socket.io-client": "^4.8.1", "viem": "^2.28.2" }, "devDependencies": { + "@types/node": "^22.15.21", "typescript": "^5.8.3" } }, @@ -1128,11 +1131,13 @@ } }, "node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "license": "MIT", - "optional": true + "version": "22.15.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.21.tgz", + "integrity": "sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==", + "devOptional": true, + "dependencies": { + "undici-types": "~6.21.0" + } }, "node_modules/@types/uuid": { "version": "8.3.4", @@ -1151,6 +1156,18 @@ "@types/node": "*" } }, + "node_modules/@virtuals-protocol/game-twitter-node": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@virtuals-protocol/game-twitter-node/-/game-twitter-node-0.1.4.tgz", + "integrity": "sha512-XmyIne62fch/9N1TEbpNMvpQ55EEsW7rDmQZx1KYlEApL2JkGRUqIEx0dYiFq866vUfFoirgpAMXLmNIkaJtPw==", + "dependencies": { + "commander": "^13.1.0", + "open": "^8.4.2" + }, + "bin": { + "game-twitter-node": "dist/esm/bin.js" + } + }, "node_modules/abitype": { "version": "0.8.11", "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.8.11.tgz", @@ -1403,7 +1420,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "license": "MIT", - "optional": true, "engines": { "node": ">=18" } @@ -1439,6 +1455,14 @@ "license": "MIT", "optional": true }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, "node_modules/delay": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", @@ -1462,6 +1486,18 @@ "node": ">=0.4.0" } }, + "node_modules/dotenv": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/dset": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", @@ -1960,6 +1996,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -1967,6 +2017,17 @@ "license": "MIT", "optional": true }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isomorphic-ws": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", @@ -2019,6 +2080,12 @@ "node": ">=8" } }, + "node_modules/jayson/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "optional": true + }, "node_modules/jayson/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -2194,6 +2261,22 @@ "integrity": "sha512-PquYBBTy+Y6Ob/O2574XHhDtHJlV1cJHMCgW+rDRc9J5hhmRelJB3k5dTK/3cVmFVtzvAKuENeuLpoyTzMzkOg==", "license": "MIT" }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ox": { "version": "0.6.9", "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.9.tgz", @@ -2476,6 +2559,12 @@ "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "devOptional": true + }, "node_modules/unfetch": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", diff --git a/package.json b/package.json index fb285c1..9233724 100644 --- a/package.json +++ b/package.json @@ -9,14 +9,17 @@ "license": "ISC", "description": "", "devDependencies": { + "@types/node": "^22.15.21", "typescript": "^5.8.3" }, "dependencies": { "@aa-sdk/core": "^4.30.0", "@account-kit/infra": "^4.30.0", "@account-kit/smart-contracts": "^4.30.0", + "@virtuals-protocol/game-twitter-node": "^0.1.11", + "ajv": "^8.17.1", "socket.io-client": "^4.8.1", "viem": "^2.28.2", - "ajv": "^8.17.1" + "dotenv": "^16.4.5" } } diff --git a/src/acpClient.ts b/src/acpClient.ts index 98e1219..68e5681 100644 --- a/src/acpClient.ts +++ b/src/acpClient.ts @@ -11,7 +11,7 @@ import { IAcpJobResponse, IAcpMemo, } from "./interfaces"; - +import { TwitterApi } from "@virtuals-protocol/game-twitter-node"; enum SocketEvents { ROOM_JOINED = "roomJoined", ON_EVALUATE = "onEvaluate", @@ -30,6 +30,7 @@ export class EvaluateResult { class AcpClient { private acpUrl; public acpContractClient: AcpContractClient; + public gameTwitterClient?: TwitterApi; private onNewTask?: (job: AcpJob) => void; private onEvaluate?: (job: AcpJob) => void; @@ -38,6 +39,10 @@ class AcpClient { this.onNewTask = options.onNewTask; this.onEvaluate = options.onEvaluate || this.defaultOnEvaluate; + if (options.gameTwitterClient) { + this.gameTwitterClient = options.gameTwitterClient; + } + this.acpUrl = this.acpContractClient.config.acpUrl; this.init(); } @@ -166,8 +171,38 @@ class AcpClient { providerAddress: Address, serviceRequirement: Object | string, expiredAt: Date = new Date(Date.now() + 1000 * 60 * 60 * 24), - evaluatorAddress?: Address + evaluatorAddress?: Address, + twitterHandle?: string ) { + if (this.gameTwitterClient) { + if (!twitterHandle) { + throw new Error("Provider did not provide a twitter handle"); + } + + try { + const user = await this.gameTwitterClient.v2.me(); + + const providerUser = await this.gameTwitterClient.v2.userByUsername( + twitterHandle + ); + + if (!providerUser) { + throw new Error("Provider did not provide a valid twitter handle"); + } + + const follow = await this.gameTwitterClient.v2.follow( + user.data.id, + providerUser.data.id + ); + + if (!follow.data.following) { + throw new Error("Failed to follow seller/provider"); + } + } catch (error) { + console.error("Error following provider", error); + } + } + const { jobId } = await this.acpContractClient.createJob( providerAddress, evaluatorAddress || this.acpContractClient.walletAddress, @@ -191,8 +226,42 @@ class AcpClient { jobId: number, memoId: number, accept: boolean, - reason?: string + reason?: string, + providerTwitterHandle?: string, + clientTwitterHandle?: string ) { + if (this.gameTwitterClient) { + if (!providerTwitterHandle || !clientTwitterHandle) { + throw new Error("Provider or client did not provide a twitter handle"); + } + + try { + const clientUser = await this.gameTwitterClient.v2.userByUsername( + clientTwitterHandle + ); + + const providerUser = await this.gameTwitterClient.v2.userByUsername( + providerTwitterHandle + ); + + if (!clientUser || !providerUser) { + throw new Error( + "Provider or client did not provide a valid twitter handle" + ); + } + + const follow = await this.gameTwitterClient.v2.follow( + providerUser.data.id, + clientUser.data.id + ); + + if (!follow.data.following) { + throw new Error("Failed to follow buyer/client"); + } + } catch (error) { + console.error("Error following provider", error); + } + } await this.acpContractClient.signMemo(memoId, accept, reason); return await this.acpContractClient.createMemo( diff --git a/src/acpJob.ts b/src/acpJob.ts index 7896c03..6129ffa 100644 --- a/src/acpJob.ts +++ b/src/acpJob.ts @@ -57,7 +57,17 @@ class AcpJob { throw new Error("No negotiation memo found"); } - return await this.acpClient.respondJob(this.id, memo.id, accept, reason); + const providerAgent = await this.providerAgent; + const clientAgent = await this.clientAgent; + + return await this.acpClient.respondJob( + this.id, + memo.id, + accept, + reason, + providerAgent?.twitterHandle, + clientAgent?.twitterHandle + ); } async deliver(deliverable: string) { diff --git a/src/acpJobOffering.ts b/src/acpJobOffering.ts index 1391f20..2335d33 100644 --- a/src/acpJobOffering.ts +++ b/src/acpJobOffering.ts @@ -19,6 +19,7 @@ class AcpJobOffering { serviceRequirement: Object | string, expiredAt: Date = new Date(Date.now() + 1000 * 60 * 60 * 24), // default: 1 day evaluatorAddress?: Address, + twitterHandle?: string ) { if (this.requirementSchema) { const validator = this.ajv.compile(this.requirementSchema); @@ -33,7 +34,8 @@ class AcpJobOffering { this.providerAddress, serviceRequirement, expiredAt, - evaluatorAddress + evaluatorAddress, + twitterHandle ); } } diff --git a/src/interfaces.ts b/src/interfaces.ts index 45ca190..3bf443f 100644 --- a/src/interfaces.ts +++ b/src/interfaces.ts @@ -1,7 +1,7 @@ import { Address } from "viem"; import AcpContractClient, { AcpJobPhases, MemoType } from "./acpContractClient"; import AcpJob from "./acpJob"; - +import GameTwitterClient from "@virtuals-protocol/game-twitter-node"; export interface IDeliverable { type: string; value: string; @@ -52,4 +52,5 @@ export interface IAcpClientOptions { acpContractClient: AcpContractClient; onNewTask?: (job: AcpJob) => void; onEvaluate?: (job: AcpJob) => void; + gameTwitterClient?: GameTwitterClient; } From 5a81768d9a994c9fdf075ae0c6652e951a249fe7 Mon Sep 17 00:00:00 2001 From: StevenSF1998 Date: Thu, 22 May 2025 18:14:50 +0800 Subject: [PATCH 2/7] qc --- examples/acp_base/external_evaluation/seller.ts | 5 +++++ examples/acp_base/self_evaluation/buyer.ts | 3 ++- examples/acp_base/self_evaluation/env.ts | 3 +++ examples/acp_base/self_evaluation/seller.ts | 3 ++- src/acpClient.ts | 9 ++++++++- 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/examples/acp_base/external_evaluation/seller.ts b/examples/acp_base/external_evaluation/seller.ts index 5106dad..ba19211 100644 --- a/examples/acp_base/external_evaluation/seller.ts +++ b/examples/acp_base/external_evaluation/seller.ts @@ -10,7 +10,9 @@ import { SELLER_AGENT_WALLET_ADDRESS, SELLER_ENTITY_ID, WHITELISTED_WALLET_PRIVATE_KEY, + GAME_TWITTER_BEARER_TOKEN, } from "./env"; +import { TwitterApi } from "@virtuals-protocol/game-twitter-node"; async function seller() { new AcpClient({ @@ -42,6 +44,9 @@ async function seller() { console.log(`Job ${job.id} delivered`); } }, + gameTwitterClient: new TwitterApi({ + gameTwitterAccessToken: GAME_TWITTER_BEARER_TOKEN, + }), }); } diff --git a/examples/acp_base/self_evaluation/buyer.ts b/examples/acp_base/self_evaluation/buyer.ts index 2128856..4479fbb 100644 --- a/examples/acp_base/self_evaluation/buyer.ts +++ b/examples/acp_base/self_evaluation/buyer.ts @@ -10,6 +10,7 @@ import { BUYER_AGENT_WALLET_ADDRESS, BUYER_ENTITY_ID, WHITELISTED_WALLET_PRIVATE_KEY, + GAME_TWITTER_BEARER_TOKEN, } from "./env"; import { TwitterApi } from "@virtuals-protocol/game-twitter-node"; async function buyer() { @@ -21,7 +22,7 @@ async function buyer() { baseSepoliaAcpConfig ), gameTwitterClient: new TwitterApi({ - gameTwitterAccessToken: process.env.GAME_TWITTER_BEARER_TOKEN, + gameTwitterAccessToken: GAME_TWITTER_BEARER_TOKEN, }), onNewTask: async (job: AcpJob) => { if ( diff --git a/examples/acp_base/self_evaluation/env.ts b/examples/acp_base/self_evaluation/env.ts index 6b3715a..c40710e 100644 --- a/examples/acp_base/self_evaluation/env.ts +++ b/examples/acp_base/self_evaluation/env.ts @@ -17,6 +17,9 @@ export const WHITELISTED_WALLET_PRIVATE_KEY = getEnvVar
( export const BUYER_ENTITY_ID = parseInt(getEnvVar("BUYER_ENTITY_ID")); export const SELLER_ENTITY_ID = parseInt(getEnvVar("SELLER_ENTITY_ID")); +export const GAME_TWITTER_BEARER_TOKEN = getEnvVar( + "GAME_TWITTER_BEARER_TOKEN" +); export const BUYER_AGENT_WALLET_ADDRESS = getEnvVar
( "BUYER_AGENT_WALLET_ADDRESS" ); diff --git a/examples/acp_base/self_evaluation/seller.ts b/examples/acp_base/self_evaluation/seller.ts index 3a210b6..05fe14c 100644 --- a/examples/acp_base/self_evaluation/seller.ts +++ b/examples/acp_base/self_evaluation/seller.ts @@ -10,6 +10,7 @@ import { SELLER_AGENT_WALLET_ADDRESS, SELLER_ENTITY_ID, WHITELISTED_WALLET_PRIVATE_KEY, + GAME_TWITTER_BEARER_TOKEN, } from "./env"; import { TwitterApi } from "@virtuals-protocol/game-twitter-node"; async function seller() { @@ -21,7 +22,7 @@ async function seller() { baseSepoliaAcpConfig ), gameTwitterClient: new TwitterApi({ - gameTwitterAccessToken: process.env.GAME_TWITTER_BEARER_TOKEN, + gameTwitterAccessToken: GAME_TWITTER_BEARER_TOKEN, }), onNewTask: async (job: AcpJob) => { if ( diff --git a/src/acpClient.ts b/src/acpClient.ts index 68e5681..75e948e 100644 --- a/src/acpClient.ts +++ b/src/acpClient.ts @@ -40,7 +40,14 @@ class AcpClient { this.onEvaluate = options.onEvaluate || this.defaultOnEvaluate; if (options.gameTwitterClient) { - this.gameTwitterClient = options.gameTwitterClient; + options.gameTwitterClient.v2 + .me() + .then((user) => { + this.gameTwitterClient = options.gameTwitterClient; + }) + .catch((error) => { + this.gameTwitterClient = undefined; + }); } this.acpUrl = this.acpContractClient.config.acpUrl; From 977e4eb7f9e89614fcc8b443ff56f4f24542d376 Mon Sep 17 00:00:00 2001 From: StevenSF1998 Date: Fri, 23 May 2025 10:26:11 +0800 Subject: [PATCH 3/7] adjust naming --- examples/acp_base/external_evaluation/.env.example | 4 +++- examples/acp_base/external_evaluation/buyer.ts | 4 ++-- examples/acp_base/external_evaluation/env.ts | 13 +++++++++++-- examples/acp_base/external_evaluation/evaluator.ts | 4 ++-- examples/acp_base/external_evaluation/seller.ts | 4 ++-- examples/acp_base/self_evaluation/.env.example | 3 ++- examples/acp_base/self_evaluation/buyer.ts | 4 ++-- examples/acp_base/self_evaluation/env.ts | 8 ++++++-- examples/acp_base/self_evaluation/seller.ts | 4 ++-- src/configs.ts | 2 +- 10 files changed, 33 insertions(+), 17 deletions(-) diff --git a/examples/acp_base/external_evaluation/.env.example b/examples/acp_base/external_evaluation/.env.example index c0e7cb2..c2947ce 100644 --- a/examples/acp_base/external_evaluation/.env.example +++ b/examples/acp_base/external_evaluation/.env.example @@ -1,4 +1,6 @@ -WHITELISTED_WALLET_PRIVATE_KEY=0x- +BUYER_WALLET_PRIVATE_KEY=0x- +SELLER_WALLET_PRIVATE_KEY=0x- +EVALUATOR_WALLET_PRIVATE_KEY=0x- BUYER_AGENT_WALLET_ADDRESS= SELLER_AGENT_WALLET_ADDRESS= BUYER_ENTITY_ID= diff --git a/examples/acp_base/external_evaluation/buyer.ts b/examples/acp_base/external_evaluation/buyer.ts index e6bbef5..de95528 100644 --- a/examples/acp_base/external_evaluation/buyer.ts +++ b/examples/acp_base/external_evaluation/buyer.ts @@ -11,13 +11,13 @@ import { EVALUATOR_AGENT_WALLET_ADDRESS, BUYER_ENTITY_ID, GAME_TWITTER_BEARER_TOKEN, - WHITELISTED_WALLET_PRIVATE_KEY, + BUYER_WALLET_PRIVATE_KEY, } from "./env"; import { TwitterApi } from "@virtuals-protocol/game-twitter-node"; async function buyer() { const acpClient = new AcpClient({ acpContractClient: await AcpContractClient.build( - WHITELISTED_WALLET_PRIVATE_KEY, + BUYER_WALLET_PRIVATE_KEY, BUYER_ENTITY_ID, BUYER_AGENT_WALLET_ADDRESS, baseSepoliaAcpConfig diff --git a/examples/acp_base/external_evaluation/env.ts b/examples/acp_base/external_evaluation/env.ts index 3beb3ab..dc1082c 100644 --- a/examples/acp_base/external_evaluation/env.ts +++ b/examples/acp_base/external_evaluation/env.ts @@ -11,9 +11,18 @@ function getEnvVar(key: string, required = true): T { return value as T; } -export const WHITELISTED_WALLET_PRIVATE_KEY = getEnvVar
( - "WHITELISTED_WALLET_PRIVATE_KEY" +export const BUYER_WALLET_PRIVATE_KEY = getEnvVar
( + "BUYER_WALLET_PRIVATE_KEY" ); + +export const SELLER_WALLET_PRIVATE_KEY = getEnvVar
( + "SELLER_WALLET_PRIVATE_KEY" +); + +export const EVALUATOR_WALLET_PRIVATE_KEY = getEnvVar
( + "EVALUATOR_WALLET_PRIVATE_KEY" +); + export const BUYER_AGENT_WALLET_ADDRESS = getEnvVar
( "BUYER_AGENT_WALLET_ADDRESS" ); diff --git a/examples/acp_base/external_evaluation/evaluator.ts b/examples/acp_base/external_evaluation/evaluator.ts index c725940..75e9d62 100644 --- a/examples/acp_base/external_evaluation/evaluator.ts +++ b/examples/acp_base/external_evaluation/evaluator.ts @@ -7,13 +7,13 @@ import { baseSepoliaAcpConfig } from "../../../src"; import { EVALUATOR_AGENT_WALLET_ADDRESS, EVALUATOR_ENTITY_ID, - WHITELISTED_WALLET_PRIVATE_KEY, + EVALUATOR_WALLET_PRIVATE_KEY, } from "./env"; async function evaluator() { new AcpClient({ acpContractClient: await AcpContractClient.build( - WHITELISTED_WALLET_PRIVATE_KEY, + EVALUATOR_WALLET_PRIVATE_KEY, EVALUATOR_ENTITY_ID, EVALUATOR_AGENT_WALLET_ADDRESS, baseSepoliaAcpConfig diff --git a/examples/acp_base/external_evaluation/seller.ts b/examples/acp_base/external_evaluation/seller.ts index ba19211..d2453ee 100644 --- a/examples/acp_base/external_evaluation/seller.ts +++ b/examples/acp_base/external_evaluation/seller.ts @@ -9,7 +9,7 @@ import { baseSepoliaAcpConfig } from "../../../src"; import { SELLER_AGENT_WALLET_ADDRESS, SELLER_ENTITY_ID, - WHITELISTED_WALLET_PRIVATE_KEY, + SELLER_WALLET_PRIVATE_KEY, GAME_TWITTER_BEARER_TOKEN, } from "./env"; import { TwitterApi } from "@virtuals-protocol/game-twitter-node"; @@ -17,7 +17,7 @@ import { TwitterApi } from "@virtuals-protocol/game-twitter-node"; async function seller() { new AcpClient({ acpContractClient: await AcpContractClient.build( - WHITELISTED_WALLET_PRIVATE_KEY, + SELLER_WALLET_PRIVATE_KEY, SELLER_ENTITY_ID, SELLER_AGENT_WALLET_ADDRESS, baseSepoliaAcpConfig diff --git a/examples/acp_base/self_evaluation/.env.example b/examples/acp_base/self_evaluation/.env.example index e054f57..004cf10 100644 --- a/examples/acp_base/self_evaluation/.env.example +++ b/examples/acp_base/self_evaluation/.env.example @@ -1,5 +1,6 @@ -WHITELISTED_WALLET_PRIVATE_KEY=0x- +BUYER_WALLET_PRIVATE_KEY=0x- BUYER_AGENT_WALLET_ADDRESS= +SELLER_WALLET_PRIVATE_KEY=0x- SELLER_AGENT_WALLET_ADDRESS= BUYER_ENTITY_ID= SELLER_ENTITY_ID= diff --git a/examples/acp_base/self_evaluation/buyer.ts b/examples/acp_base/self_evaluation/buyer.ts index 4479fbb..481b72f 100644 --- a/examples/acp_base/self_evaluation/buyer.ts +++ b/examples/acp_base/self_evaluation/buyer.ts @@ -9,14 +9,14 @@ import { baseSepoliaAcpConfig } from "../../../src"; import { BUYER_AGENT_WALLET_ADDRESS, BUYER_ENTITY_ID, - WHITELISTED_WALLET_PRIVATE_KEY, + BUYER_WALLET_PRIVATE_KEY, GAME_TWITTER_BEARER_TOKEN, } from "./env"; import { TwitterApi } from "@virtuals-protocol/game-twitter-node"; async function buyer() { const acpClient = new AcpClient({ acpContractClient: await AcpContractClient.build( - WHITELISTED_WALLET_PRIVATE_KEY, + BUYER_WALLET_PRIVATE_KEY, BUYER_ENTITY_ID, BUYER_AGENT_WALLET_ADDRESS, baseSepoliaAcpConfig diff --git a/examples/acp_base/self_evaluation/env.ts b/examples/acp_base/self_evaluation/env.ts index c40710e..4d78fe5 100644 --- a/examples/acp_base/self_evaluation/env.ts +++ b/examples/acp_base/self_evaluation/env.ts @@ -11,8 +11,12 @@ function getEnvVar(key: string, required = true): T { return value as T; } -export const WHITELISTED_WALLET_PRIVATE_KEY = getEnvVar
( - "WHITELISTED_WALLET_PRIVATE_KEY" +export const BUYER_WALLET_PRIVATE_KEY = getEnvVar
( + "BUYER_WALLET_PRIVATE_KEY" +); + +export const SELLER_WALLET_PRIVATE_KEY = getEnvVar
( + "SELLER_WALLET_PRIVATE_KEY" ); export const BUYER_ENTITY_ID = parseInt(getEnvVar("BUYER_ENTITY_ID")); diff --git a/examples/acp_base/self_evaluation/seller.ts b/examples/acp_base/self_evaluation/seller.ts index 05fe14c..95114fe 100644 --- a/examples/acp_base/self_evaluation/seller.ts +++ b/examples/acp_base/self_evaluation/seller.ts @@ -9,14 +9,14 @@ import { baseSepoliaAcpConfig } from "../../../src"; import { SELLER_AGENT_WALLET_ADDRESS, SELLER_ENTITY_ID, - WHITELISTED_WALLET_PRIVATE_KEY, + SELLER_WALLET_PRIVATE_KEY, GAME_TWITTER_BEARER_TOKEN, } from "./env"; import { TwitterApi } from "@virtuals-protocol/game-twitter-node"; async function seller() { new AcpClient({ acpContractClient: await AcpContractClient.build( - WHITELISTED_WALLET_PRIVATE_KEY, + SELLER_WALLET_PRIVATE_KEY, SELLER_ENTITY_ID, SELLER_AGENT_WALLET_ADDRESS, baseSepoliaAcpConfig diff --git a/src/configs.ts b/src/configs.ts index a7f09a3..a549bd3 100644 --- a/src/configs.ts +++ b/src/configs.ts @@ -12,7 +12,7 @@ const baseSepoliaAcpConfig: AcpContractConfig = { chain: baseSepolia, contractAddress: "0x2422c1c43451Eb69Ff49dfD39c4Dc8C5230fA1e6", virtualsTokenAddress: "0xbfAB80ccc15DF6fb7185f9498d6039317331846a", - acpUrl: "https://acpx-staging.virtuals.io", + acpUrl: "https://acpx.virtuals.gg", }; const baseAcpConfig: AcpContractConfig = { From 3cdcba6004a67f35707be94691974f7aaf71200c Mon Sep 17 00:00:00 2001 From: StevenSF1998 Date: Fri, 23 May 2025 10:46:40 +0800 Subject: [PATCH 4/7] fix package --- package-lock.json | 1821 +-------------------------------------------- package.json | 2 +- 2 files changed, 33 insertions(+), 1790 deletions(-) diff --git a/package-lock.json b/package-lock.json index 37d7f0c..7246dc5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@virtuals-protocol/acp-node", - "version": "0.1.0-beta.1", + "version": "0.1.0-beta.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@virtuals-protocol/acp-node", - "version": "0.1.0-beta.1", + "version": "0.1.0-beta.2", "license": "ISC", "dependencies": { "@aa-sdk/core": "^4.30.0", @@ -16,7 +16,6 @@ "ajv": "^8.17.1", "dotenv": "^16.4.5", "socket.io-client": "^4.8.1", - "tsup": "^8.5.0", "viem": "^2.28.2" }, "devDependencies": { @@ -95,406 +94,6 @@ "node": ">=6.9.0" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", - "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", - "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", - "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", - "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz", - "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", - "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", - "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", - "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", - "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", - "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", - "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", - "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", - "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", - "cpu": [ - "mips64el" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", - "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", - "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", - "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", - "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", - "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", - "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", - "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", - "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", - "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", - "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", - "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", - "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@ethersproject/abi": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz", @@ -1201,71 +800,6 @@ "@ethersproject/strings": "^5.8.0" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, "node_modules/@lukeed/csprng": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", @@ -1314,289 +848,19 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@scure/base": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.5.tgz", + "integrity": "sha512-9rE6EOVeIQzt5TSu4v+K523F8u6DhBsoZWPGKlnCshhlDhy0kJzUX4V+tr2dWmzF1GdekvThABoEQBGBQI7xZw==", "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.0.tgz", - "integrity": "sha512-KxN+zCjOYHGwCl4UCtSfZ6jrq/qi88JDUtiEFk8LELEHq2Egfc/FgW+jItZiOLRuQfb/3xJSgFuNPC9jzggX+A==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.0.tgz", - "integrity": "sha512-yDvqx3lWlcugozax3DItKJI5j05B0d4Kvnjx+5mwiUpWramVvmAByYigMplaoAQ3pvdprGCTCE03eduqE/8mPQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.0.tgz", - "integrity": "sha512-2KOU574vD3gzcPSjxO0eyR5iWlnxxtmW1F5CkNOHmMlueKNCQkxR6+ekgWyVnz6zaZihpUNkGxjsYrkTJKhkaw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.0.tgz", - "integrity": "sha512-gE5ACNSxHcEZyP2BA9TuTakfZvULEW4YAOtxl/A/YDbIir/wPKukde0BNPlnBiP88ecaN4BJI2TtAd+HKuZPQQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.0.tgz", - "integrity": "sha512-GSxU6r5HnWij7FoSo7cZg3l5GPg4HFLkzsFFh0N/b16q5buW1NAWuCJ+HMtIdUEi6XF0qH+hN0TEd78laRp7Dg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.0.tgz", - "integrity": "sha512-KGiGKGDg8qLRyOWmk6IeiHJzsN/OYxO6nSbT0Vj4MwjS2XQy/5emsmtoqLAabqrohbgLWJ5GV3s/ljdrIr8Qjg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.0.tgz", - "integrity": "sha512-46OzWeqEVQyX3N2/QdiU/CMXYDH/lSHpgfBkuhl3igpZiaB3ZIfSjKuOnybFVBQzjsLwkus2mjaESy8H41SzvA==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.0.tgz", - "integrity": "sha512-lfgW3KtQP4YauqdPpcUZHPcqQXmTmH4nYU0cplNeW583CMkAGjtImw4PKli09NFi2iQgChk4e9erkwlfYem6Lg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.0.tgz", - "integrity": "sha512-nn8mEyzMbdEJzT7cwxgObuwviMx6kPRxzYiOl6o/o+ChQq23gfdlZcUNnt89lPhhz3BYsZ72rp0rxNqBSfqlqw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.0.tgz", - "integrity": "sha512-l+QK99je2zUKGd31Gh+45c4pGDAqZSuWQiuRFCdHYC2CSiO47qUWsCcenrI6p22hvHZrDje9QjwSMAFL3iwXwQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.0.tgz", - "integrity": "sha512-WbnJaxPv1gPIm6S8O/Wg+wfE/OzGSXlBMbOe4ie+zMyykMOeqmgD1BhPxZQuDqwUN+0T/xOFtL2RUWBspnZj3w==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.0.tgz", - "integrity": "sha512-eRDWR5t67/b2g8Q/S8XPi0YdbKcCs4WQ8vklNnUYLaSWF+Cbv2axZsp4jni6/j7eKvMLYCYdcsv8dcU+a6QNFg==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.0.tgz", - "integrity": "sha512-TWrZb6GF5jsEKG7T1IHwlLMDRy2f3DPqYldmIhnA2DVqvvhY2Ai184vZGgahRrg8k9UBWoSlHv+suRfTN7Ua4A==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.0.tgz", - "integrity": "sha512-ieQljaZKuJpmWvd8gW87ZmSFwid6AxMDk5bhONJ57U8zT77zpZ/TPKkU9HpnnFrM4zsgr4kiGuzbIbZTGi7u9A==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.0.tgz", - "integrity": "sha512-/L3pW48SxrWAlVsKCN0dGLB2bi8Nv8pr5S5ocSM+S0XCn5RCVCXqi8GVtHFsOBBCSeR+u9brV2zno5+mg3S4Aw==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.0.tgz", - "integrity": "sha512-XMLeKjyH8NsEDCRptf6LO8lJk23o9wvB+dJwcXMaH6ZQbbkHu2dbGIUindbMtRN6ux1xKi16iXWu6q9mu7gDhQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.0.tgz", - "integrity": "sha512-m/P7LycHZTvSQeXhFmgmdqEiTqSV80zn6xHaQ1JSqwCtD1YGtwEK515Qmy9DcB2HK4dOUVypQxvhVSy06cJPEg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.0.tgz", - "integrity": "sha512-4yodtcOrFHpbomJGVEqZ8fzD4kfBeCbpsUy5Pqk4RluXOdsWdjLnjhiKy2w3qzcASWd04fp52Xz7JKarVJ5BTg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.0.tgz", - "integrity": "sha512-tmazCrAsKzdkXssEc65zIE1oC6xPHwfy9d5Ta25SRCDOZS+I6RypVVShWALNuU9bxIfGA0aqrmzlzoM5wO5SPQ==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.0.tgz", - "integrity": "sha512-h1J+Yzjo/X+0EAvR2kIXJDuTuyT7drc+t2ALY0nIcGPbTatNOf0VWdhEA2Z4AAjv6X1NJV7SYo5oCTYRJhSlVA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@scure/base": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.5.tgz", - "integrity": "sha512-9rE6EOVeIQzt5TSu4v+K523F8u6DhBsoZWPGKlnCshhlDhy0kJzUX4V+tr2dWmzF1GdekvThABoEQBGBQI7xZw==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", - "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", + "node_modules/@scure/bip32": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", + "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", "license": "MIT", "dependencies": { "@noble/curves": "~1.8.1", @@ -1866,12 +1130,6 @@ "@types/node": "*" } }, - "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", - "license": "MIT" - }, "node_modules/@types/node": { "version": "22.15.21", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.21.tgz", @@ -1925,18 +1183,6 @@ } } }, - "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", @@ -1997,36 +1243,6 @@ "websocket": "^1.0.34" } }, - "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "license": "MIT" - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -2046,12 +1262,6 @@ "proxy-from-env": "^1.1.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, "node_modules/base-x": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", @@ -2109,15 +1319,6 @@ "text-encoding-utf-8": "^1.0.2" } }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -2174,30 +1375,6 @@ "node": ">=6.14.2" } }, - "node_modules/bundle-require": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", - "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==", - "license": "MIT", - "dependencies": { - "load-tsconfig": "^0.2.3" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "esbuild": ">=0.18" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -2225,39 +1402,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -2280,35 +1424,6 @@ "node": ">=18" } }, - "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "license": "MIT" - }, - "node_modules/consola": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", - "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", - "license": "MIT", - "engines": { - "node": "^14.18.0 || >=16.10.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/d": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", @@ -2407,12 +1522,6 @@ "node": ">= 0.4" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, "node_modules/elliptic": { "version": "6.6.1", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", @@ -2436,12 +1545,6 @@ "license": "MIT", "optional": true }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, "node_modules/engine.io-client": { "version": "6.6.3", "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz", @@ -2611,46 +1714,6 @@ "node": ">=0.12" } }, - "node_modules/esbuild": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", - "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.4", - "@esbuild/android-arm": "0.25.4", - "@esbuild/android-arm64": "0.25.4", - "@esbuild/android-x64": "0.25.4", - "@esbuild/darwin-arm64": "0.25.4", - "@esbuild/darwin-x64": "0.25.4", - "@esbuild/freebsd-arm64": "0.25.4", - "@esbuild/freebsd-x64": "0.25.4", - "@esbuild/linux-arm": "0.25.4", - "@esbuild/linux-arm64": "0.25.4", - "@esbuild/linux-ia32": "0.25.4", - "@esbuild/linux-loong64": "0.25.4", - "@esbuild/linux-mips64el": "0.25.4", - "@esbuild/linux-ppc64": "0.25.4", - "@esbuild/linux-riscv64": "0.25.4", - "@esbuild/linux-s390x": "0.25.4", - "@esbuild/linux-x64": "0.25.4", - "@esbuild/netbsd-arm64": "0.25.4", - "@esbuild/netbsd-x64": "0.25.4", - "@esbuild/openbsd-arm64": "0.25.4", - "@esbuild/openbsd-x64": "0.25.4", - "@esbuild/sunos-x64": "0.25.4", - "@esbuild/win32-arm64": "0.25.4", - "@esbuild/win32-ia32": "0.25.4", - "@esbuild/win32-x64": "0.25.4" - } - }, "node_modules/esniff": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", @@ -2732,31 +1795,6 @@ ], "license": "BSD-3-Clause" }, - "node_modules/fdir": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", - "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/fix-dts-default-cjs-exports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fix-dts-default-cjs-exports/-/fix-dts-default-cjs-exports-1.0.1.tgz", - "integrity": "sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==", - "license": "MIT", - "dependencies": { - "magic-string": "^0.30.17", - "mlly": "^1.7.4", - "rollup": "^4.34.8" - } - }, "node_modules/follow-redirects": { "version": "1.15.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", @@ -2778,22 +1816,6 @@ } } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/form-data": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", @@ -2810,20 +1832,6 @@ "node": ">= 6" } }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -2873,26 +1881,6 @@ "node": ">= 0.4" } }, - "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -3008,13 +1996,18 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-typedarray": { @@ -3024,11 +2017,16 @@ "license": "MIT", "optional": true }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/isomorphic-ws": { "version": "4.0.1", @@ -3055,21 +2053,6 @@ "ws": "*" } }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/jayson": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.2.0.tgz", @@ -3142,15 +2125,6 @@ } } }, - "node_modules/joycon": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", - "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/js-cookie": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz", @@ -3180,54 +2154,6 @@ "license": "ISC", "optional": true }, - "node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "license": "MIT" - }, - "node_modules/load-tsconfig": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", - "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -3275,59 +2201,12 @@ "license": "MIT", "optional": true }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mlly": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", - "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", - "license": "MIT", - "dependencies": { - "acorn": "^8.14.0", - "pathe": "^2.0.1", - "pkg-types": "^1.3.0", - "ufo": "^1.5.4" - } - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, "node_modules/new-date": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/new-date/-/new-date-1.0.3.tgz", @@ -3382,7 +2261,6 @@ "integrity": "sha512-PquYBBTy+Y6Ob/O2574XHhDtHJlV1cJHMCgW+rDRc9J5hhmRelJB3k5dTK/3cVmFVtzvAKuENeuLpoyTzMzkOg==", "license": "MIT" }, -<<<<<<< HEAD "node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -3397,15 +2275,6 @@ }, "funding": { "url": "https://github.com/sponsors/sindresorhus" -======= - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" ->>>>>>> df119f048040949035047fcc24da6aa7c2e24499 } }, "node_modules/ox": { @@ -3458,123 +2327,6 @@ } } }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "license": "BlueOak-1.0.0" - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", - "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "license": "MIT", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" - } - }, - "node_modules/postcss-load-config": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", - "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "lilconfig": "^3.1.1" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "jiti": ">=1.21.0", - "postcss": ">=8.0.9", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - }, - "postcss": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -3582,28 +2334,6 @@ "license": "MIT", "optional": true }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -3613,54 +2343,6 @@ "node": ">=0.10.0" } }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/rollup": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.0.tgz", - "integrity": "sha512-HqMFpUbWlf/tvcxBFNKnJyzc7Lk+XO3FGc3pbNBLqEbOz0gPLRgcrlS3UF4MfUrVlstOaP/q0kM6GVvi+LrLRg==", - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.7" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.41.0", - "@rollup/rollup-android-arm64": "4.41.0", - "@rollup/rollup-darwin-arm64": "4.41.0", - "@rollup/rollup-darwin-x64": "4.41.0", - "@rollup/rollup-freebsd-arm64": "4.41.0", - "@rollup/rollup-freebsd-x64": "4.41.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.41.0", - "@rollup/rollup-linux-arm-musleabihf": "4.41.0", - "@rollup/rollup-linux-arm64-gnu": "4.41.0", - "@rollup/rollup-linux-arm64-musl": "4.41.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.41.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.41.0", - "@rollup/rollup-linux-riscv64-gnu": "4.41.0", - "@rollup/rollup-linux-riscv64-musl": "4.41.0", - "@rollup/rollup-linux-s390x-gnu": "4.41.0", - "@rollup/rollup-linux-x64-gnu": "4.41.0", - "@rollup/rollup-linux-x64-musl": "4.41.0", - "@rollup/rollup-win32-arm64-msvc": "4.41.0", - "@rollup/rollup-win32-ia32-msvc": "4.41.0", - "@rollup/rollup-win32-x64-msvc": "4.41.0", - "fsevents": "~2.3.2" - } - }, "node_modules/rpc-websockets": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.1.1.tgz", @@ -3733,39 +2415,6 @@ "license": "MIT", "optional": true }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/socket.io-client": { "version": "4.8.1", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", @@ -3828,44 +2477,6 @@ } } }, - "node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "license": "BSD-3-Clause", - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "license": "MIT", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/source-map/node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "license": "BSD-2-Clause" - }, - "node_modules/source-map/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "license": "MIT", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "node_modules/stream-chain": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", @@ -3883,102 +2494,6 @@ "stream-chain": "^2.2.5" } }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/sturdy-websocket": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.2.1.tgz", @@ -3986,37 +2501,6 @@ "license": "MIT", "optional": true }, - "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, "node_modules/superstruct": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", @@ -4033,145 +2517,18 @@ "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==", "optional": true }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "license": "MIT", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "license": "MIT" - }, - "node_modules/tinyglobby": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", - "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", - "license": "MIT", - "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "license": "Apache-2.0" - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, - "node_modules/tsup": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.5.0.tgz", - "integrity": "sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==", - "license": "MIT", - "dependencies": { - "bundle-require": "^5.1.0", - "cac": "^6.7.14", - "chokidar": "^4.0.3", - "consola": "^3.4.0", - "debug": "^4.4.0", - "esbuild": "^0.25.0", - "fix-dts-default-cjs-exports": "^1.0.0", - "joycon": "^3.1.1", - "picocolors": "^1.1.1", - "postcss-load-config": "^6.0.1", - "resolve-from": "^5.0.0", - "rollup": "^4.34.8", - "source-map": "0.8.0-beta.0", - "sucrase": "^3.35.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.11", - "tree-kill": "^1.2.2" - }, - "bin": { - "tsup": "dist/cli-default.js", - "tsup-node": "dist/cli-node.js" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@microsoft/api-extractor": "^7.36.0", - "@swc/core": "^1", - "postcss": "^8.4.12", - "typescript": ">=4.5.0" - }, - "peerDependenciesMeta": { - "@microsoft/api-extractor": { - "optional": true - }, - "@swc/core": { - "optional": true - }, - "postcss": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/tsup/node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/type": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", @@ -4202,19 +2559,11 @@ "node": ">=14.17" } }, -<<<<<<< HEAD "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "devOptional": true -======= - "node_modules/ufo": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", - "license": "MIT" ->>>>>>> df119f048040949035047fcc24da6aa7c2e24499 }, "node_modules/unfetch": { "version": "4.2.0", @@ -4382,112 +2731,6 @@ "webidl-conversions": "^3.0.0" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", diff --git a/package.json b/package.json index eb88205..2ec8abc 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "@aa-sdk/core": "^4.30.0", "@account-kit/infra": "^4.30.0", "@account-kit/smart-contracts": "^4.30.0", - "@virtuals-protocol/game-twitter-node": "^0.1.11", + "@virtuals-protocol/game-twitter-node": "^0.1.4", "ajv": "^8.17.1", "socket.io-client": "^4.8.1", "viem": "^2.28.2", From 419e81a946026266c7e7d6563030af9f29c76ae4 Mon Sep 17 00:00:00 2001 From: StevenSF1998 Date: Fri, 23 May 2025 10:47:56 +0800 Subject: [PATCH 5/7] fix config --- src/configs.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/configs.ts b/src/configs.ts index a549bd3..a75abe5 100644 --- a/src/configs.ts +++ b/src/configs.ts @@ -6,19 +6,22 @@ type AcpContractConfig = { contractAddress: Address; virtualsTokenAddress: Address; acpUrl: string; + alchemyRpcUrl: string; }; const baseSepoliaAcpConfig: AcpContractConfig = { chain: baseSepolia, contractAddress: "0x2422c1c43451Eb69Ff49dfD39c4Dc8C5230fA1e6", virtualsTokenAddress: "0xbfAB80ccc15DF6fb7185f9498d6039317331846a", - acpUrl: "https://acpx.virtuals.gg", + alchemyRpcUrl: "https://alchemy-proxy.virtuals.io/api/proxy/rpc", + acpUrl: "https://acpx-staging.virtuals.io", }; const baseAcpConfig: AcpContractConfig = { chain: base, contractAddress: "0x2422c1c43451Eb69Ff49dfD39c4Dc8C5230fA1e6", virtualsTokenAddress: "0xbfAB80ccc15DF6fb7185f9498d6039317331846a", + alchemyRpcUrl: "https://alchemy-proxy-prod.virtuals.io/api/proxy/rpc", acpUrl: "https://acpx.virtuals.io", }; From a2626a9443987a2d135782d3e1d8e26f2706d620 Mon Sep 17 00:00:00 2001 From: StevenSF1998 Date: Fri, 23 May 2025 18:03:44 +0800 Subject: [PATCH 6/7] fix follow user --- src/acpClient.ts | 63 +++++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/src/acpClient.ts b/src/acpClient.ts index 3ab2b3d..8fb1e77 100644 --- a/src/acpClient.ts +++ b/src/acpClient.ts @@ -184,6 +184,27 @@ class AcpClient { evaluatorAddress?: Address, twitterHandle?: string ) { + const { jobId } = await this.acpContractClient.createJob( + providerAddress, + evaluatorAddress || this.acpContractClient.walletAddress, + expiredAt + ); + + await this.acpContractClient.setBudget( + jobId, + parseEther(amount.toString()) + ); + + await this.acpContractClient.createMemo( + jobId, + typeof serviceRequirement === "string" + ? serviceRequirement + : JSON.stringify(serviceRequirement), + MemoType.MESSAGE, + true, + AcpJobPhases.NEGOTIATION + ); + if (this.gameTwitterClient) { if (!twitterHandle) { throw new Error("Provider did not provide a twitter handle"); @@ -213,27 +234,6 @@ class AcpClient { } } - const { jobId } = await this.acpContractClient.createJob( - providerAddress, - evaluatorAddress || this.acpContractClient.walletAddress, - expiredAt - ); - - await this.acpContractClient.setBudget( - jobId, - parseEther(amount.toString()) - ); - - await this.acpContractClient.createMemo( - jobId, - typeof serviceRequirement === "string" - ? serviceRequirement - : JSON.stringify(serviceRequirement), - MemoType.MESSAGE, - true, - AcpJobPhases.NEGOTIATION - ); - return jobId; } @@ -245,7 +245,17 @@ class AcpClient { providerTwitterHandle?: string, clientTwitterHandle?: string ) { - if (this.gameTwitterClient) { + await this.acpContractClient.signMemo(memoId, accept, reason); + + const result = await this.acpContractClient.createMemo( + jobId, + `Job ${jobId} accepted. ${reason ?? ""}`, + MemoType.MESSAGE, + false, + AcpJobPhases.TRANSACTION + ); + + if (this.gameTwitterClient && accept) { if (!providerTwitterHandle || !clientTwitterHandle) { throw new Error("Provider or client did not provide a twitter handle"); } @@ -277,15 +287,8 @@ class AcpClient { console.error("Error following provider", error); } } - await this.acpContractClient.signMemo(memoId, accept, reason); - return await this.acpContractClient.createMemo( - jobId, - `Job ${jobId} accepted. ${reason ?? ""}`, - MemoType.MESSAGE, - false, - AcpJobPhases.TRANSACTION - ); + return result; } async payJob(jobId: number, amount: number, memoId: number, reason?: string) { From e8ccc6eab11e584166048a3da91679a446394216 Mon Sep 17 00:00:00 2001 From: StevenSF1998 Date: Fri, 23 May 2025 18:13:29 +0800 Subject: [PATCH 7/7] fix missing twitter handler --- examples/acp_base/external_evaluation/buyer.ts | 3 ++- examples/acp_base/self_evaluation/buyer.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/acp_base/external_evaluation/buyer.ts b/examples/acp_base/external_evaluation/buyer.ts index 2d189bb..16b7bba 100644 --- a/examples/acp_base/external_evaluation/buyer.ts +++ b/examples/acp_base/external_evaluation/buyer.ts @@ -55,7 +55,8 @@ async function buyer() { // Reference: (./images/specify-requirement-toggle-switch.png) { "": "Help me to generate a flower meme." }, new Date(Date.now() + 1000 * 60 * 60 * 24), - EVALUATOR_AGENT_WALLET_ADDRESS + EVALUATOR_AGENT_WALLET_ADDRESS, + chosenAgent.twitterHandle ); console.log(`Job ${jobId} initiated`); diff --git a/examples/acp_base/self_evaluation/buyer.ts b/examples/acp_base/self_evaluation/buyer.ts index e5f4e44..a8feacf 100644 --- a/examples/acp_base/self_evaluation/buyer.ts +++ b/examples/acp_base/self_evaluation/buyer.ts @@ -58,7 +58,8 @@ async function buyer() { // Reference: (./images/specify-requirement-toggle-switch.png) { "": "Help me to generate a flower meme." }, process.env.EVALUATOR_WALLET_ADDRESS as `0x${string}`, // Use default evaluator address - new Date(Date.now() + 1000 * 60 * 60 * 24) // expiredAt as last parameter + new Date(Date.now() + 1000 * 60 * 60 * 24), // expiredAt as last parameter + chosenAgent.twitterHandle ); console.log(`Job ${jobId} initiated`);