diff --git a/packages/plugin-nft-generation/src/actions/mintNFTAction.ts b/packages/plugin-nft-generation/src/actions/mintNFTAction.ts index cd09706d316..3d3c3841ebf 100644 --- a/packages/plugin-nft-generation/src/actions/mintNFTAction.ts +++ b/packages/plugin-nft-generation/src/actions/mintNFTAction.ts @@ -24,6 +24,7 @@ const _SupportedChainList = Object.keys(viemChains) as Array< keyof typeof viemChains >; + function isMintNFTContent(content: any): content is MintNFTContent { return typeof content.collectionAddress === "string" && typeof content.collectionAddress === "string"; } @@ -68,19 +69,27 @@ const mintNFTAction: Action = { runtime: IAgentRuntime, message: Memory, state: State, - options: { [key: string]: unknown }, + _options: { [key: string]: unknown }, callback: HandlerCallback ) => { try { elizaLogger.log("Composing state for message:", message); + + // if (!state) { + // state = (await runtime.composeState(message)) as State; + // } else { + // state = await runtime.updateRecentMessageState(state); + // } + + let currentState: State; if (!state) { - state = (await runtime.composeState(message)) as State; + currentState = (await runtime.composeState(message)) as State; } else { - state = await runtime.updateRecentMessageState(state); + currentState = await runtime.updateRecentMessageState(state); } - + const context = composeContext({ - state, + state: currentState, template: mintNFTTemplate, }); @@ -229,7 +238,7 @@ const mintNFTAction: Action = { } } return []; - } catch (e: any) { + } catch (e: unknown) { elizaLogger.log(e); throw e; } diff --git a/packages/plugin-nft-generation/src/actions/nftCollectionGeneration.ts b/packages/plugin-nft-generation/src/actions/nftCollectionGeneration.ts index 793ef1892d6..d4ce91605fc 100644 --- a/packages/plugin-nft-generation/src/actions/nftCollectionGeneration.ts +++ b/packages/plugin-nft-generation/src/actions/nftCollectionGeneration.ts @@ -61,8 +61,8 @@ const nftCollectionGeneration: Action = { handler: async ( runtime: IAgentRuntime, message: Memory, - state: State, - options: { [key: string]: unknown }, + _state: State, + _options: { [key: string]: unknown }, callback: HandlerCallback ) => { try { diff --git a/packages/plugin-nft-generation/src/handlers/createSolanaCollection.ts b/packages/plugin-nft-generation/src/handlers/createSolanaCollection.ts index 37197d6e4ba..7ebd4ec62db 100644 --- a/packages/plugin-nft-generation/src/handlers/createSolanaCollection.ts +++ b/packages/plugin-nft-generation/src/handlers/createSolanaCollection.ts @@ -30,7 +30,8 @@ export async function createCollectionMetadata({ elizaLogger.log("User ID:", userId); const awsS3Service: AwsS3Service = runtime.getService(ServiceType.AWS_S3); const agentName = runtime.character.name; - const roomId = stringToUuid("nft_generate_room-" + agentName); + // const roomId = stringToUuid("nft_generate_room-" + agentName); + const roomId = stringToUuid(`nft_generate_room-${agentName}`); // Create memory for the message const memory: Memory = { agentId: userId, @@ -61,7 +62,7 @@ export async function createCollectionMetadata({ ); if (images.success && images.data && images.data.length > 0) { const image = images.data[0]; - const filename = `collection-image`; + const filename = 'collection-image'; if (image.startsWith("http")) { elizaLogger.log("Generating image url:", image); } diff --git a/packages/plugin-nft-generation/src/utils/deployEVMContract.ts b/packages/plugin-nft-generation/src/utils/deployEVMContract.ts index 99f2d618738..ff12a9f2998 100644 --- a/packages/plugin-nft-generation/src/utils/deployEVMContract.ts +++ b/packages/plugin-nft-generation/src/utils/deployEVMContract.ts @@ -1,4 +1,11 @@ import { encodeAbiParameters } from "viem"; +import type { + Address, + WalletClient, + PublicClient, + Hash, + Abi +} from 'viem'; import { compileWithImports } from "./generateERC721ContractCode.ts"; import CustomERC721 from "../contract/CustomERC721.sol" @@ -39,6 +46,7 @@ export async function deployContract({ } // 调用 mint 方法 + export async function mintNFT({ walletClient, publicClient, @@ -46,11 +54,12 @@ export async function mintNFT({ abi, recipient, }: { - contractAddress: any; + contractAddress: string; abi: any; recipient: any; walletClient: any; publicClient: any; + }) { console.log("Minting NFT..."); const txHash = await walletClient.writeContract({ diff --git a/packages/plugin-nft-generation/src/utils/generateERC721ContractCode.ts b/packages/plugin-nft-generation/src/utils/generateERC721ContractCode.ts index 588c144aae7..c4f3ab02850 100644 --- a/packages/plugin-nft-generation/src/utils/generateERC721ContractCode.ts +++ b/packages/plugin-nft-generation/src/utils/generateERC721ContractCode.ts @@ -1,7 +1,7 @@ import solc from "solc"; -import fs from "fs"; -import path from "path"; -import { fileURLToPath } from "url"; +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; // Load OpenZeppelin contract source code export function loadOpenZeppelinFile(contractPath) { @@ -45,7 +45,9 @@ export function compileWithImports(contractName, sourceCode) { ); if (output.errors) { - output.errors.forEach((err) => console.error(err)); + for (const err of output.errors) { + console.error(err); + } } const contractFile = output.contracts[`${contractName}.sol`][`${contractName}`]; diff --git a/packages/plugin-nft-generation/src/utils/verifyEVMContract.ts b/packages/plugin-nft-generation/src/utils/verifyEVMContract.ts index 91d264af5da..091b92c872f 100644 --- a/packages/plugin-nft-generation/src/utils/verifyEVMContract.ts +++ b/packages/plugin-nft-generation/src/utils/verifyEVMContract.ts @@ -3,6 +3,12 @@ import { loadOpenZeppelinFile, } from "./generateERC721ContractCode.ts"; +interface VerificationStatus { + result: string; + status?: string; + message?: string; +} + function getSources(metadata, sourceCode) { const fileName = Object.keys(metadata.settings.compilationTarget)[0] const obj = { @@ -69,7 +75,7 @@ export async function verifyEVMContract({ }; // Poll for completion - let status; + let status: VerificationStatus; do { await new Promise((resolve) => setTimeout(resolve, 3000)); status = await checkStatus();