UNPKG

@hashgraphonline/standards-agent-kit

Version:

A modular SDK for building on-chain autonomous agents using Hashgraph Online Standards, including HCS-10 for agent discovery and communication. https://hol.org

62 lines (59 loc) 2.48 kB
import { z } from "zod"; import { BaseHCS2QueryTool } from "./standards-agent-kit.es23.js"; import { isWalletBytesResponse } from "./standards-agent-kit.es50.js"; const registerEntrySchema = z.object({ registryTopicId: z.string().regex(/^\d+\.\d+\.\d+$/).describe("The HCS-2 registry topic ID (e.g., 0.0.123456)"), targetTopicId: z.string().regex(/^\d+\.\d+\.\d+$/).describe("The target topic ID to register (e.g., 0.0.123456)"), metadata: z.string().optional().describe("Optional metadata URI (HIP-412 format)"), memo: z.string().max(500).optional().describe("Optional memo (max 500 characters)") }); class RegisterEntryTool extends BaseHCS2QueryTool { constructor() { super(...arguments); this.name = "registerHCS2Entry"; this.description = "Register an entry in an HCS-2 registry (standard HCS-2). Use this to add a target topic to an existing HCS-2 registry."; } get specificInputSchema() { return registerEntrySchema; } async executeQuery(params, _runManager) { try { const result = await this.hcs2Builder.registerEntry( params.registryTopicId, { targetTopicId: params.targetTopicId, metadata: params.metadata, memo: params.memo } ); if (!("success" in result) || !result.success) { throw new Error(result.error || "Failed to register entry"); } if (isWalletBytesResponse(result)) { const txBytes = result.transactionBytes; return { message: "I prepared an unsigned transaction to register the entry in the HCS-2 registry. Please review and approve to submit.", transactionBytes: txBytes, metadata: { transactionBytes: txBytes, pendingApproval: true, description: `Register HCS-2 entry (registry ${params.registryTopicId} -> target ${params.targetTopicId})` } }; } return `Successfully registered entry in HCS-2 registry! Registry Topic: ${params.registryTopicId} Target Topic ID: ${params.targetTopicId}${params.metadata ? ` Metadata: ${params.metadata}` : ""}${params.memo ? ` Memo: ${params.memo}` : ""} The entry has been added to the registry.`; } catch (error) { const errorMessage = error instanceof Error ? error.message : "Failed to register entry"; throw new Error(`Entry registration failed: ${errorMessage}`); } } } export { RegisterEntryTool }; //# sourceMappingURL=standards-agent-kit.es25.js.map