@hashgraphonline/standards-agent-kit 0.2.119 → 0.2.121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/cjs/config/ContentReferenceConfig.d.ts +8 -0
  2. package/dist/cjs/index.d.ts +2 -0
  3. package/dist/cjs/standards-agent-kit.cjs +1 -1
  4. package/dist/cjs/standards-agent-kit.cjs.map +1 -1
  5. package/dist/cjs/tools/hcs6/CreateDynamicRegistryTool.d.ts +7 -7
  6. package/dist/cjs/tools/hcs6/QueryDynamicRegistryTool.d.ts +3 -3
  7. package/dist/cjs/tools/hcs6/RegisterDynamicHashinalTool.d.ts +7 -7
  8. package/dist/cjs/tools/hcs6/UpdateDynamicHashinalTool.d.ts +7 -7
  9. package/dist/cjs/tools/inscriber/InscribeFromBufferTool.d.ts +7 -6
  10. package/dist/cjs/tools/inscriber/base-inscriber-tools.d.ts +11 -0
  11. package/dist/cjs/tools/inscriber/inscriber-tool-params.d.ts +3 -0
  12. package/dist/cjs/types/content-resolver.d.ts +6 -0
  13. package/dist/es/config/ContentReferenceConfig.d.ts +8 -0
  14. package/dist/es/index.d.ts +2 -0
  15. package/dist/es/standards-agent-kit.es.js +42 -40
  16. package/dist/es/standards-agent-kit.es.js.map +1 -1
  17. package/dist/es/standards-agent-kit.es10.js +72 -23
  18. package/dist/es/standards-agent-kit.es10.js.map +1 -1
  19. package/dist/es/standards-agent-kit.es11.js +27 -27
  20. package/dist/es/standards-agent-kit.es11.js.map +1 -1
  21. package/dist/es/standards-agent-kit.es12.js +20 -30
  22. package/dist/es/standards-agent-kit.es12.js.map +1 -1
  23. package/dist/es/standards-agent-kit.es13.js +27 -37
  24. package/dist/es/standards-agent-kit.es13.js.map +1 -1
  25. package/dist/es/standards-agent-kit.es14.js +48 -60
  26. package/dist/es/standards-agent-kit.es14.js.map +1 -1
  27. package/dist/es/standards-agent-kit.es15.js +60 -23
  28. package/dist/es/standards-agent-kit.es15.js.map +1 -1
  29. package/dist/es/standards-agent-kit.es16.js +23 -23
  30. package/dist/es/standards-agent-kit.es16.js.map +1 -1
  31. package/dist/es/standards-agent-kit.es17.js +23 -33
  32. package/dist/es/standards-agent-kit.es17.js.map +1 -1
  33. package/dist/es/standards-agent-kit.es18.js +34 -10
  34. package/dist/es/standards-agent-kit.es18.js.map +1 -1
  35. package/dist/es/standards-agent-kit.es19.js +16 -155
  36. package/dist/es/standards-agent-kit.es19.js.map +1 -1
  37. package/dist/es/standards-agent-kit.es2.js +21 -1567
  38. package/dist/es/standards-agent-kit.es2.js.map +1 -1
  39. package/dist/es/standards-agent-kit.es20.js +150 -22
  40. package/dist/es/standards-agent-kit.es20.js.map +1 -1
  41. package/dist/es/standards-agent-kit.es21.js +25 -39
  42. package/dist/es/standards-agent-kit.es21.js.map +1 -1
  43. package/dist/es/standards-agent-kit.es22.js +26 -28
  44. package/dist/es/standards-agent-kit.es22.js.map +1 -1
  45. package/dist/es/standards-agent-kit.es23.js +16 -19
  46. package/dist/es/standards-agent-kit.es23.js.map +1 -1
  47. package/dist/es/standards-agent-kit.es24.js +21 -15
  48. package/dist/es/standards-agent-kit.es24.js.map +1 -1
  49. package/dist/es/standards-agent-kit.es25.js +18 -21
  50. package/dist/es/standards-agent-kit.es25.js.map +1 -1
  51. package/dist/es/standards-agent-kit.es26.js +35 -32
  52. package/dist/es/standards-agent-kit.es26.js.map +1 -1
  53. package/dist/es/standards-agent-kit.es27.js +38 -25
  54. package/dist/es/standards-agent-kit.es27.js.map +1 -1
  55. package/dist/es/standards-agent-kit.es28.js +24 -37
  56. package/dist/es/standards-agent-kit.es28.js.map +1 -1
  57. package/dist/es/standards-agent-kit.es29.js +26 -43
  58. package/dist/es/standards-agent-kit.es29.js.map +1 -1
  59. package/dist/es/standards-agent-kit.es3.js +1532 -55
  60. package/dist/es/standards-agent-kit.es3.js.map +1 -1
  61. package/dist/es/standards-agent-kit.es30.js +35 -40
  62. package/dist/es/standards-agent-kit.es30.js.map +1 -1
  63. package/dist/es/standards-agent-kit.es31.js +35 -39
  64. package/dist/es/standards-agent-kit.es31.js.map +1 -1
  65. package/dist/es/standards-agent-kit.es32.js +39 -23
  66. package/dist/es/standards-agent-kit.es32.js.map +1 -1
  67. package/dist/es/standards-agent-kit.es33.js +39 -168
  68. package/dist/es/standards-agent-kit.es33.js.map +1 -1
  69. package/dist/es/standards-agent-kit.es34.js +93 -96
  70. package/dist/es/standards-agent-kit.es34.js.map +1 -1
  71. package/dist/es/standards-agent-kit.es35.js +99 -64
  72. package/dist/es/standards-agent-kit.es35.js.map +1 -1
  73. package/dist/es/standards-agent-kit.es36.js +166 -64
  74. package/dist/es/standards-agent-kit.es36.js.map +1 -1
  75. package/dist/es/standards-agent-kit.es37.js +87 -30
  76. package/dist/es/standards-agent-kit.es37.js.map +1 -1
  77. package/dist/es/standards-agent-kit.es38.js +38 -242
  78. package/dist/es/standards-agent-kit.es38.js.map +1 -1
  79. package/dist/es/standards-agent-kit.es39.js +246 -138
  80. package/dist/es/standards-agent-kit.es39.js.map +1 -1
  81. package/dist/es/standards-agent-kit.es4.js +39 -33
  82. package/dist/es/standards-agent-kit.es4.js.map +1 -1
  83. package/dist/es/standards-agent-kit.es40.js +134 -26
  84. package/dist/es/standards-agent-kit.es40.js.map +1 -1
  85. package/dist/es/standards-agent-kit.es41.js +27 -22
  86. package/dist/es/standards-agent-kit.es41.js.map +1 -1
  87. package/dist/es/standards-agent-kit.es42.js +24 -3
  88. package/dist/es/standards-agent-kit.es42.js.map +1 -1
  89. package/dist/es/standards-agent-kit.es43.js +7 -0
  90. package/dist/es/standards-agent-kit.es43.js.map +1 -0
  91. package/dist/es/standards-agent-kit.es5.js +65 -32
  92. package/dist/es/standards-agent-kit.es5.js.map +1 -1
  93. package/dist/es/standards-agent-kit.es6.js +35 -311
  94. package/dist/es/standards-agent-kit.es6.js.map +1 -1
  95. package/dist/es/standards-agent-kit.es7.js +320 -20
  96. package/dist/es/standards-agent-kit.es7.js.map +1 -1
  97. package/dist/es/standards-agent-kit.es8.js +19 -227
  98. package/dist/es/standards-agent-kit.es8.js.map +1 -1
  99. package/dist/es/standards-agent-kit.es9.js +216 -65
  100. package/dist/es/standards-agent-kit.es9.js.map +1 -1
  101. package/dist/es/tools/hcs6/CreateDynamicRegistryTool.d.ts +7 -7
  102. package/dist/es/tools/hcs6/QueryDynamicRegistryTool.d.ts +3 -3
  103. package/dist/es/tools/hcs6/RegisterDynamicHashinalTool.d.ts +7 -7
  104. package/dist/es/tools/hcs6/UpdateDynamicHashinalTool.d.ts +7 -7
  105. package/dist/es/tools/inscriber/InscribeFromBufferTool.d.ts +7 -6
  106. package/dist/es/tools/inscriber/base-inscriber-tools.d.ts +11 -0
  107. package/dist/es/tools/inscriber/inscriber-tool-params.d.ts +3 -0
  108. package/dist/es/types/content-resolver.d.ts +6 -0
  109. package/dist/umd/config/ContentReferenceConfig.d.ts +8 -0
  110. package/dist/umd/index.d.ts +2 -0
  111. package/dist/umd/standards-agent-kit.umd.js +1 -1
  112. package/dist/umd/standards-agent-kit.umd.js.map +1 -1
  113. package/dist/umd/tools/hcs6/CreateDynamicRegistryTool.d.ts +7 -7
  114. package/dist/umd/tools/hcs6/QueryDynamicRegistryTool.d.ts +3 -3
  115. package/dist/umd/tools/hcs6/RegisterDynamicHashinalTool.d.ts +7 -7
  116. package/dist/umd/tools/hcs6/UpdateDynamicHashinalTool.d.ts +7 -7
  117. package/dist/umd/tools/inscriber/InscribeFromBufferTool.d.ts +7 -6
  118. package/dist/umd/tools/inscriber/base-inscriber-tools.d.ts +11 -0
  119. package/dist/umd/tools/inscriber/inscriber-tool-params.d.ts +3 -0
  120. package/dist/umd/types/content-resolver.d.ts +6 -0
  121. package/package.json +2 -2
  122. package/src/builders/hcs10/hcs10-builder.ts +2 -3
  123. package/src/config/ContentReferenceConfig.ts +30 -0
  124. package/src/index.ts +3 -1
  125. package/src/tools/hcs6/CreateDynamicRegistryTool.ts +22 -33
  126. package/src/tools/hcs6/QueryDynamicRegistryTool.ts +23 -33
  127. package/src/tools/hcs6/RegisterDynamicHashinalTool.ts +25 -35
  128. package/src/tools/hcs6/UpdateDynamicHashinalTool.ts +25 -36
  129. package/src/tools/inscriber/InscribeFromBufferTool.ts +239 -120
  130. package/src/tools/inscriber/base-inscriber-tools.ts +19 -0
  131. package/src/tools/inscriber/inscriber-tool-params.ts +3 -0
  132. package/src/types/content-resolver.ts +11 -0
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es8.js","sources":["../../src/tools/hcs10/RegisterAgentTool.ts"],"sourcesContent":["import { AIAgentCapability } from '@hashgraphonline/standards-sdk';\nimport { z } from 'zod';\nimport { BaseServiceBuilder } from 'hedera-agent-kit';\nimport { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';\nimport {\n HCS10Builder,\n RegisterAgentParams,\n} from '../../builders/hcs10/hcs10-builder';\nimport { BaseHCS10TransactionTool } from './base-hcs10-tools';\nimport { HCS10TransactionToolParams } from './hcs10-tool-params';\nimport { RegisteredAgent } from '../../state/state-types';\nimport { NaturalLanguageMapper } from './natural-language-mapper';\n\nconst RegisterAgentZodSchema = z.object({\n name: z\n .string()\n .min(1)\n .max(50)\n .describe('A unique name for the agent (1-50 characters)'),\n description: z\n .string()\n .max(500)\n .optional()\n .describe('Optional bio description for the agent (max 500 characters)'),\n alias: z\n .string()\n .optional()\n .transform((val) => {\n if (!val || val.toLowerCase().includes('random')) {\n const timestamp = Date.now().toString(36);\n const randomChars = Math.random().toString(36);\n return `bot${timestamp}${randomChars}`;\n }\n return val;\n })\n .describe(\n 'Optional custom username/alias for the agent. Use \"random\" to generate a unique alias'\n ),\n type: z\n .enum(['autonomous', 'manual'])\n .optional()\n .describe('Agent type (default: autonomous)'),\n model: z\n .string()\n .optional()\n .describe('AI model identifier (default: agent-model-2024)'),\n capabilities: z\n .union([\n z.array(z.nativeEnum(AIAgentCapability)),\n z.array(z.string()),\n z.string(),\n ])\n .optional()\n .transform((val) => {\n if (!val) return undefined;\n if (typeof val === 'string') {\n return NaturalLanguageMapper.parseCapabilities(val);\n }\n if (Array.isArray(val) && val.length > 0 && typeof val[0] === 'string') {\n return NaturalLanguageMapper.parseTagsOrCapabilities(val);\n }\n return val as AIAgentCapability[];\n })\n .describe('Agent capabilities - can be capability names (e.g. \"ai\", \"data processing\"), capability enum values, or array of either. Common values: \"ai\"/\"text\" (TEXT_GENERATION), \"data\" (DATA_INTEGRATION), \"analytics\" (TRANSACTION_ANALYTICS)'),\n tags: z\n .union([\n z.array(z.string()),\n z.string(),\n ])\n .optional()\n .transform((val) => {\n if (!val) return undefined;\n if (typeof val === 'string') {\n return NaturalLanguageMapper.parseCapabilities(val);\n }\n return NaturalLanguageMapper.parseTagsOrCapabilities(val);\n })\n .describe('Tags for the agent (alternative to capabilities) - e.g. \"ai\", \"data\", \"analytics\". Will be converted to appropriate capabilities.'),\n creator: z.string().optional().describe('Creator attribution for the agent'),\n socials: z\n .record(\n z.enum([\n 'twitter',\n 'github',\n 'discord',\n 'telegram',\n 'linkedin',\n 'youtube',\n 'website',\n 'x',\n ] as const),\n z.string()\n )\n .optional()\n .describe(\n 'Social media links (e.g., {\"twitter\": \"@handle\", \"discord\": \"username\"})'\n ),\n properties: z\n .record(z.unknown())\n .optional()\n .describe('Custom metadata properties for the agent'),\n profilePicture: z\n .union([\n z.string().describe('URL or local file path to profile picture'),\n z.object({\n url: z.string().optional(),\n path: z.string().optional(),\n filename: z.string().optional(),\n }),\n ])\n .optional()\n .describe(\n 'Optional profile picture as URL, file path, or object with url/path/filename'\n ),\n existingProfilePictureTopicId: z\n .string()\n .optional()\n .describe(\n 'Topic ID of an existing profile picture to reuse (e.g., 0.0.12345)'\n ),\n initialBalance: z\n .number()\n .positive()\n .optional()\n .describe(\n 'Optional initial HBAR balance for the new agent account (will create new account if provided)'\n ),\n userAccountId: z\n .string()\n .optional()\n .describe(\n 'Optional account ID (e.g., 0.0.12345) to use as the agent account instead of creating a new one'\n ),\n hbarFee: z\n .number()\n .positive()\n .optional()\n .describe(\n 'Optional HBAR fee amount to charge per message on the inbound topic'\n ),\n tokenFees: z\n .array(\n z.object({\n amount: z.number().positive(),\n tokenId: z.string(),\n })\n )\n .optional()\n .describe('Optional token fees to charge per message'),\n exemptAccountIds: z\n .array(z.string())\n .optional()\n .describe('Optional account IDs to exempt from fees'),\n setAsCurrent: z\n .boolean()\n .optional()\n .describe('Whether to set as current agent (default: true)'),\n persistence: z\n .object({\n prefix: z.string().optional(),\n })\n .optional()\n .describe('Optional persistence configuration'),\n});\n\nexport class RegisterAgentTool extends BaseHCS10TransactionTool<\n typeof RegisterAgentZodSchema\n> {\n name = 'register_agent';\n description =\n 'Creates and registers the AI agent on the Hedera network. Returns JSON string with agent details (accountId, privateKey, topics) on success. Supports natural language for capabilities/tags like \"ai\", \"data processing\", \"analytics\". Note: This tool requires multiple transactions and cannot be used in returnBytes mode. If alias is set to \"random\" or contains \"random\", a unique alias will be generated.';\n specificInputSchema = RegisterAgentZodSchema;\n private specificArgs: z.infer<typeof RegisterAgentZodSchema> | undefined;\n\n constructor(params: HCS10TransactionToolParams) {\n super(params);\n this.neverScheduleThisTool = true;\n this.requiresMultipleTransactions = true;\n }\n\n protected async callBuilderMethod(\n builder: BaseServiceBuilder,\n specificArgs: z.infer<typeof RegisterAgentZodSchema>\n ): Promise<void> {\n const hcs10Builder = builder as HCS10Builder;\n this.specificArgs = specificArgs;\n const params: RegisterAgentParams = {\n name: specificArgs.name,\n };\n\n if (specificArgs.description !== undefined) {\n params.bio = specificArgs.description;\n }\n if (specificArgs.alias !== undefined) {\n params.alias = specificArgs.alias;\n } else {\n const randomSuffix = Date.now().toString(36);\n params.alias = `${specificArgs.name}${randomSuffix}`;\n }\n if (specificArgs.type !== undefined) {\n params.type = specificArgs.type;\n }\n if (specificArgs.model !== undefined) {\n params.model = specificArgs.model;\n }\n // Handle both capabilities and tags (tags takes precedence if both provided)\n if (specificArgs.tags !== undefined) {\n params.capabilities = specificArgs.tags as AIAgentCapability[];\n } else if (specificArgs.capabilities !== undefined) {\n params.capabilities = specificArgs.capabilities as AIAgentCapability[];\n }\n if (specificArgs.creator !== undefined) {\n params.creator = specificArgs.creator;\n }\n if (specificArgs.socials !== undefined) {\n params.socials = specificArgs.socials;\n }\n if (specificArgs.properties !== undefined) {\n params.properties = specificArgs.properties;\n }\n if (specificArgs.profilePicture !== undefined) {\n if (typeof specificArgs.profilePicture === 'string') {\n params.profilePicture = specificArgs.profilePicture;\n } else {\n const profilePicObj: {\n url?: string;\n path?: string;\n filename?: string;\n } = {};\n if (specificArgs.profilePicture.url !== undefined) {\n profilePicObj.url = specificArgs.profilePicture.url;\n }\n if (specificArgs.profilePicture.path !== undefined) {\n profilePicObj.path = specificArgs.profilePicture.path;\n }\n if (specificArgs.profilePicture.filename !== undefined) {\n profilePicObj.filename = specificArgs.profilePicture.filename;\n }\n params.profilePicture = profilePicObj;\n }\n }\n if (specificArgs.existingProfilePictureTopicId !== undefined) {\n params.existingProfilePictureTopicId =\n specificArgs.existingProfilePictureTopicId;\n }\n if (specificArgs.userAccountId !== undefined) {\n params.userAccountId = specificArgs.userAccountId;\n }\n if (specificArgs.hbarFee !== undefined) {\n params.hbarFee = specificArgs.hbarFee;\n }\n if (specificArgs.tokenFees !== undefined) {\n params.tokenFees = specificArgs.tokenFees;\n }\n if (specificArgs.exemptAccountIds !== undefined) {\n params.exemptAccountIds = specificArgs.exemptAccountIds;\n }\n if (specificArgs.initialBalance !== undefined) {\n params.initialBalance = specificArgs.initialBalance;\n }\n\n await hcs10Builder.registerAgent(params);\n }\n\n /**\n * Override _call to intercept the result and save agent to state if needed\n */\n protected override async _call(\n args: z.infer<ReturnType<this['schema']>>,\n runManager?: CallbackManagerForToolRun\n ): Promise<string> {\n const result = await super._call(args, runManager);\n\n const shouldSetAsCurrent = this.specificArgs?.setAsCurrent !== false;\n\n if (this.specificArgs && shouldSetAsCurrent) {\n try {\n const parsed = JSON.parse(result);\n if (parsed.rawResult) {\n this._handleRegistrationResult(parsed.rawResult);\n } else if (parsed.state || parsed.accountId || parsed.metadata) {\n this._handleRegistrationResult(parsed);\n }\n } catch (e) {}\n }\n\n return result;\n }\n\n /**\n * Extract agent data from registration result and save to state\n */\n private _handleRegistrationResult(rawResult: any): void {\n let accountId = rawResult.accountId || rawResult.metadata?.accountId;\n\n if (!accountId && rawResult.state?.createdResources) {\n const accountResource = rawResult.state.createdResources.find(\n (r: string) => r.startsWith('account:')\n );\n if (accountResource) {\n accountId = accountResource.split(':')[1];\n }\n }\n\n const inboundTopicId =\n rawResult.inboundTopicId ||\n rawResult.metadata?.inboundTopicId ||\n rawResult.state?.inboundTopicId;\n\n const outboundTopicId =\n rawResult.outboundTopicId ||\n rawResult.metadata?.outboundTopicId ||\n rawResult.state?.outboundTopicId;\n\n const profileTopicId =\n rawResult.profileTopicId ||\n rawResult.metadata?.profileTopicId ||\n rawResult.state?.profileTopicId;\n\n const privateKey = rawResult.privateKey || rawResult.metadata?.privateKey;\n\n if (accountId && inboundTopicId && outboundTopicId && this.specificArgs) {\n const registeredAgent: RegisteredAgent = {\n name: this.specificArgs.name,\n accountId,\n inboundTopicId,\n outboundTopicId,\n profileTopicId,\n privateKey,\n };\n\n const hcs10Builder = this.getServiceBuilder() as HCS10Builder;\n const stateManager = hcs10Builder.getStateManager();\n if (stateManager) {\n stateManager.setCurrentAgent(registeredAgent);\n\n if (stateManager.persistAgentData) {\n const prefix =\n this.specificArgs.persistence?.prefix ||\n this.specificArgs.name.toUpperCase().replace(/[^A-Z0-9]/g, '_');\n stateManager\n .persistAgentData(registeredAgent, {\n type: 'env-file',\n prefix: prefix,\n })\n .catch(() => {});\n }\n }\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-agent-kit.es8.js","sources":["../../src/tools/hcs10/base-hcs10-tools.ts"],"sourcesContent":["import {\n BaseHederaTransactionTool,\n BaseHederaQueryTool,\n BaseServiceBuilder,\n} from 'hedera-agent-kit';\nimport { HCS10Builder } from '../../builders/hcs10/hcs10-builder';\nimport {\n HCS10TransactionToolParams,\n HCS10QueryToolParams,\n} from './hcs10-tool-params';\nimport { z } from 'zod';\n\n/**\n * Base class for HCS10 transaction tools\n */\nexport abstract class BaseHCS10TransactionTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaTransactionTool<T> {\n protected hcs10Builder: HCS10Builder;\n namespace = 'hcs10' as const;\n\n constructor(params: HCS10TransactionToolParams) {\n super(params);\n this.hcs10Builder = params.hcs10Builder;\n }\n\n /**\n * Override to return the HCS10Builder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.hcs10Builder;\n }\n}\n\n/**\n * Base class for HCS10 query tools\n */\nexport abstract class BaseHCS10QueryTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaQueryTool<T> {\n protected hcs10Builder: HCS10Builder;\n namespace = 'hcs10' as const;\n\n constructor(params: HCS10QueryToolParams) {\n super(params);\n this.hcs10Builder = params.hcs10Builder;\n }\n\n /**\n * Override to return the HCS10Builder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.hcs10Builder;\n }\n}\n"],"names":[],"mappings":";AAeO,MAAe,iCAMZ,0BAA6B;AAAA,EAIrC,YAAY,QAAoC;AAC9C,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,eAAe,OAAO;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,2BAMZ,oBAAuB;AAAA,EAI/B,YAAY,QAA8B;AACxC,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,eAAe,OAAO;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;"}
@@ -1,89 +1,240 @@
1
+ import { AIAgentCapability } from "@hashgraphonline/standards-sdk";
1
2
  import { z } from "zod";
2
- import { BaseHCS10TransactionTool } from "./standards-agent-kit.es7.js";
3
- const SendMessageToConnectionZodSchema = z.object({
4
- targetIdentifier: z.string().optional().describe(
5
- "The request key (e.g., 'req-1:0.0.6155171@0.0.6154875'), account ID (e.g., 0.0.12345) of the target agent, OR the connection number (e.g., '1', '2') from the 'list_connections' tool. Request key is most deterministic."
3
+ import { BaseHCS10TransactionTool } from "./standards-agent-kit.es8.js";
4
+ import { NaturalLanguageMapper } from "./standards-agent-kit.es20.js";
5
+ const RegisterAgentZodSchema = z.object({
6
+ name: z.string().min(1).max(50).describe("A unique name for the agent (1-50 characters)"),
7
+ description: z.string().max(500).optional().describe("Optional bio description for the agent (max 500 characters)"),
8
+ alias: z.string().optional().transform((val) => {
9
+ if (!val || val.toLowerCase().includes("random")) {
10
+ const timestamp = Date.now().toString(36);
11
+ const randomChars = Math.random().toString(36);
12
+ return `bot${timestamp}${randomChars}`;
13
+ }
14
+ return val;
15
+ }).describe(
16
+ 'Optional custom username/alias for the agent. Use "random" to generate a unique alias'
17
+ ),
18
+ type: z.enum(["autonomous", "manual"]).optional().describe("Agent type (default: autonomous)"),
19
+ model: z.string().optional().describe("AI model identifier (default: agent-model-2024)"),
20
+ capabilities: z.union([
21
+ z.array(z.nativeEnum(AIAgentCapability)),
22
+ z.array(z.string()),
23
+ z.string()
24
+ ]).optional().transform((val) => {
25
+ if (!val) return void 0;
26
+ if (typeof val === "string") {
27
+ return NaturalLanguageMapper.parseCapabilities(val);
28
+ }
29
+ if (Array.isArray(val) && val.length > 0 && typeof val[0] === "string") {
30
+ return NaturalLanguageMapper.parseTagsOrCapabilities(val);
31
+ }
32
+ return val;
33
+ }).describe('Agent capabilities - can be capability names (e.g. "ai", "data processing"), capability enum values, or array of either. Common values: "ai"/"text" (TEXT_GENERATION), "data" (DATA_INTEGRATION), "analytics" (TRANSACTION_ANALYTICS)'),
34
+ tags: z.union([
35
+ z.array(z.string()),
36
+ z.string()
37
+ ]).optional().transform((val) => {
38
+ if (!val) return void 0;
39
+ if (typeof val === "string") {
40
+ return NaturalLanguageMapper.parseCapabilities(val);
41
+ }
42
+ return NaturalLanguageMapper.parseTagsOrCapabilities(val);
43
+ }).describe('Tags for the agent (alternative to capabilities) - e.g. "ai", "data", "analytics". Will be converted to appropriate capabilities.'),
44
+ creator: z.string().optional().describe("Creator attribution for the agent"),
45
+ socials: z.record(
46
+ z.enum([
47
+ "twitter",
48
+ "github",
49
+ "discord",
50
+ "telegram",
51
+ "linkedin",
52
+ "youtube",
53
+ "website",
54
+ "x"
55
+ ]),
56
+ z.string()
57
+ ).optional().describe(
58
+ 'Social media links (e.g., {"twitter": "@handle", "discord": "username"})'
59
+ ),
60
+ properties: z.record(z.unknown()).optional().describe("Custom metadata properties for the agent"),
61
+ profilePicture: z.union([
62
+ z.string().describe("URL or local file path to profile picture"),
63
+ z.object({
64
+ url: z.string().optional(),
65
+ path: z.string().optional(),
66
+ filename: z.string().optional()
67
+ })
68
+ ]).optional().describe(
69
+ "Optional profile picture as URL, file path, or object with url/path/filename"
70
+ ),
71
+ existingProfilePictureTopicId: z.string().optional().describe(
72
+ "Topic ID of an existing profile picture to reuse (e.g., 0.0.12345)"
73
+ ),
74
+ initialBalance: z.number().positive().optional().describe(
75
+ "Optional initial HBAR balance for the new agent account (will create new account if provided)"
76
+ ),
77
+ userAccountId: z.string().optional().describe(
78
+ "Optional account ID (e.g., 0.0.12345) to use as the agent account instead of creating a new one"
6
79
  ),
7
- connectionId: z.string().optional().describe(
8
- "The connection number (e.g., '1', '2') from the 'list_connections' tool."
80
+ hbarFee: z.number().positive().optional().describe(
81
+ "Optional HBAR fee amount to charge per message on the inbound topic"
9
82
  ),
10
- agentId: z.string().optional().describe("The account ID (e.g., 0.0.12345) of the target agent."),
11
- message: z.string().describe("The text message content to send."),
12
- disableMonitoring: z.boolean().optional().default(false)
83
+ tokenFees: z.array(
84
+ z.object({
85
+ amount: z.number().positive(),
86
+ tokenId: z.string()
87
+ })
88
+ ).optional().describe("Optional token fees to charge per message"),
89
+ exemptAccountIds: z.array(z.string()).optional().describe("Optional account IDs to exempt from fees"),
90
+ setAsCurrent: z.boolean().optional().describe("Whether to set as current agent (default: true)"),
91
+ persistence: z.object({
92
+ prefix: z.string().optional()
93
+ }).optional().describe("Optional persistence configuration")
13
94
  });
14
- class SendMessageToConnectionTool extends BaseHCS10TransactionTool {
95
+ class RegisterAgentTool extends BaseHCS10TransactionTool {
15
96
  constructor(params) {
16
97
  super(params);
17
- this.name = "send_message_to_connection";
18
- this.description = "Use this to send a message to an agent you already have an active connection with. Provide the target agent's account ID (e.g., 0.0.12345) and your message. If no active connection exists, this will fail - use initiate_connection instead to create a new connection first.";
19
- this.specificInputSchema = SendMessageToConnectionZodSchema;
20
- this.requiresMultipleTransactions = true;
98
+ this.name = "register_agent";
99
+ this.description = 'Creates and registers the AI agent on the Hedera network. Returns JSON string with agent details (accountId, privateKey, topics) on success. Supports natural language for capabilities/tags like "ai", "data processing", "analytics". Note: This tool requires multiple transactions and cannot be used in returnBytes mode. If alias is set to "random" or contains "random", a unique alias will be generated.';
100
+ this.specificInputSchema = RegisterAgentZodSchema;
21
101
  this.neverScheduleThisTool = true;
102
+ this.requiresMultipleTransactions = true;
22
103
  }
23
104
  async callBuilderMethod(builder, specificArgs) {
24
105
  const hcs10Builder = builder;
25
- const targetIdentifier = specificArgs.targetIdentifier || specificArgs.agentId || specificArgs.connectionId;
26
- if (!targetIdentifier) {
27
- throw new Error(
28
- "Either targetIdentifier, connectionId, or agentId must be provided"
29
- );
106
+ this.specificArgs = specificArgs;
107
+ const params = {
108
+ name: specificArgs.name
109
+ };
110
+ if (specificArgs.description !== void 0) {
111
+ params.bio = specificArgs.description;
112
+ }
113
+ if (specificArgs.alias !== void 0) {
114
+ params.alias = specificArgs.alias;
115
+ } else {
116
+ const randomSuffix = Date.now().toString(36);
117
+ params.alias = `${specificArgs.name}${randomSuffix}`;
118
+ }
119
+ if (specificArgs.type !== void 0) {
120
+ params.type = specificArgs.type;
121
+ }
122
+ if (specificArgs.model !== void 0) {
123
+ params.model = specificArgs.model;
124
+ }
125
+ if (specificArgs.tags !== void 0) {
126
+ params.capabilities = specificArgs.tags;
127
+ } else if (specificArgs.capabilities !== void 0) {
128
+ params.capabilities = specificArgs.capabilities;
129
+ }
130
+ if (specificArgs.creator !== void 0) {
131
+ params.creator = specificArgs.creator;
30
132
  }
31
- const stateManager = hcs10Builder.getStateManager();
32
- if (stateManager) {
33
- const connectionsManager = stateManager.getConnectionsManager();
34
- if (connectionsManager) {
35
- try {
36
- const currentAgent = stateManager.getCurrentAgent();
37
- if (currentAgent && currentAgent.accountId) {
38
- await connectionsManager.fetchConnectionData(
39
- currentAgent.accountId
40
- );
41
- }
42
- } catch (error) {
43
- console.debug("Could not refresh connections:", error);
133
+ if (specificArgs.socials !== void 0) {
134
+ params.socials = specificArgs.socials;
135
+ }
136
+ if (specificArgs.properties !== void 0) {
137
+ params.properties = specificArgs.properties;
138
+ }
139
+ if (specificArgs.profilePicture !== void 0) {
140
+ if (typeof specificArgs.profilePicture === "string") {
141
+ params.profilePicture = specificArgs.profilePicture;
142
+ } else {
143
+ const profilePicObj = {};
144
+ if (specificArgs.profilePicture.url !== void 0) {
145
+ profilePicObj.url = specificArgs.profilePicture.url;
146
+ }
147
+ if (specificArgs.profilePicture.path !== void 0) {
148
+ profilePicObj.path = specificArgs.profilePicture.path;
44
149
  }
150
+ if (specificArgs.profilePicture.filename !== void 0) {
151
+ profilePicObj.filename = specificArgs.profilePicture.filename;
152
+ }
153
+ params.profilePicture = profilePicObj;
45
154
  }
46
- if (targetIdentifier.match(/^\d+$/)) {
47
- const connections = stateManager.listConnections();
48
- const connectionIndex = parseInt(targetIdentifier) - 1;
49
- const establishedConnections = connections.filter(
50
- (conn) => conn.status === "established" && !conn.isPending && !conn.needsConfirmation
51
- );
52
- if (connectionIndex >= 0 && connectionIndex < establishedConnections.length) {
53
- const selectedConnection = establishedConnections[connectionIndex];
54
- if (selectedConnection && selectedConnection.connectionTopicId) {
55
- await hcs10Builder.sendMessageToConnection({
56
- targetIdentifier: selectedConnection.connectionTopicId,
57
- message: specificArgs.message,
58
- disableMonitoring: specificArgs.disableMonitoring
59
- });
60
- return;
61
- }
155
+ }
156
+ if (specificArgs.existingProfilePictureTopicId !== void 0) {
157
+ params.existingProfilePictureTopicId = specificArgs.existingProfilePictureTopicId;
158
+ }
159
+ if (specificArgs.userAccountId !== void 0) {
160
+ params.userAccountId = specificArgs.userAccountId;
161
+ }
162
+ if (specificArgs.hbarFee !== void 0) {
163
+ params.hbarFee = specificArgs.hbarFee;
164
+ }
165
+ if (specificArgs.tokenFees !== void 0) {
166
+ params.tokenFees = specificArgs.tokenFees;
167
+ }
168
+ if (specificArgs.exemptAccountIds !== void 0) {
169
+ params.exemptAccountIds = specificArgs.exemptAccountIds;
170
+ }
171
+ if (specificArgs.initialBalance !== void 0) {
172
+ params.initialBalance = specificArgs.initialBalance;
173
+ }
174
+ await hcs10Builder.registerAgent(params);
175
+ }
176
+ /**
177
+ * Override _call to intercept the result and save agent to state if needed
178
+ */
179
+ async _call(args, runManager) {
180
+ const result = await super._call(args, runManager);
181
+ const shouldSetAsCurrent = this.specificArgs?.setAsCurrent !== false;
182
+ if (this.specificArgs && shouldSetAsCurrent) {
183
+ try {
184
+ const parsed = JSON.parse(result);
185
+ if (parsed.rawResult) {
186
+ this._handleRegistrationResult(parsed.rawResult);
187
+ } else if (parsed.state || parsed.accountId || parsed.metadata) {
188
+ this._handleRegistrationResult(parsed);
62
189
  }
190
+ } catch (e) {
191
+ }
192
+ }
193
+ return result;
194
+ }
195
+ /**
196
+ * Extract agent data from registration result and save to state
197
+ */
198
+ _handleRegistrationResult(rawResult) {
199
+ let accountId = rawResult.accountId || rawResult.metadata?.accountId;
200
+ if (!accountId && rawResult.state?.createdResources) {
201
+ const accountResource = rawResult.state.createdResources.find(
202
+ (r) => r.startsWith("account:")
203
+ );
204
+ if (accountResource) {
205
+ accountId = accountResource.split(":")[1];
63
206
  }
64
- if (targetIdentifier.match(/^\d+\.\d+\.\d+$/)) {
65
- const connections = stateManager.listConnections();
66
- const establishedConnection = connections.find(
67
- (conn) => (conn.targetAccountId === targetIdentifier || conn.targetAccountId === `0.0.${targetIdentifier}`) && conn.status === "established" && !conn.isPending && !conn.needsConfirmation
68
- );
69
- if (establishedConnection && establishedConnection.connectionTopicId) {
70
- await hcs10Builder.sendMessageToConnection({
71
- targetIdentifier: establishedConnection.connectionTopicId,
72
- message: specificArgs.message,
73
- disableMonitoring: specificArgs.disableMonitoring
207
+ }
208
+ const inboundTopicId = rawResult.inboundTopicId || rawResult.metadata?.inboundTopicId || rawResult.state?.inboundTopicId;
209
+ const outboundTopicId = rawResult.outboundTopicId || rawResult.metadata?.outboundTopicId || rawResult.state?.outboundTopicId;
210
+ const profileTopicId = rawResult.profileTopicId || rawResult.metadata?.profileTopicId || rawResult.state?.profileTopicId;
211
+ const privateKey = rawResult.privateKey || rawResult.metadata?.privateKey;
212
+ if (accountId && inboundTopicId && outboundTopicId && this.specificArgs) {
213
+ const registeredAgent = {
214
+ name: this.specificArgs.name,
215
+ accountId,
216
+ inboundTopicId,
217
+ outboundTopicId,
218
+ profileTopicId,
219
+ privateKey
220
+ };
221
+ const hcs10Builder = this.getServiceBuilder();
222
+ const stateManager = hcs10Builder.getStateManager();
223
+ if (stateManager) {
224
+ stateManager.setCurrentAgent(registeredAgent);
225
+ if (stateManager.persistAgentData) {
226
+ const prefix = this.specificArgs.persistence?.prefix || this.specificArgs.name.toUpperCase().replace(/[^A-Z0-9]/g, "_");
227
+ stateManager.persistAgentData(registeredAgent, {
228
+ type: "env-file",
229
+ prefix
230
+ }).catch(() => {
74
231
  });
75
- return;
76
232
  }
77
233
  }
78
234
  }
79
- await hcs10Builder.sendMessageToConnection({
80
- targetIdentifier,
81
- message: specificArgs.message,
82
- disableMonitoring: specificArgs.disableMonitoring
83
- });
84
235
  }
85
236
  }
86
237
  export {
87
- SendMessageToConnectionTool
238
+ RegisterAgentTool
88
239
  };
89
240
  //# sourceMappingURL=standards-agent-kit.es9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es9.js","sources":["../../src/tools/hcs10/SendMessageToConnectionTool.ts"],"sourcesContent":["import { z } from 'zod';\nimport { BaseHCS10TransactionTool } from './base-hcs10-tools';\nimport { HCS10Builder } from '../../builders/hcs10/hcs10-builder';\nimport { HCS10TransactionToolParams } from './hcs10-tool-params';\nimport { BaseServiceBuilder } from 'hedera-agent-kit';\n\nconst SendMessageToConnectionZodSchema = z.object({\n targetIdentifier: z\n .string()\n .optional()\n .describe(\n \"The request key (e.g., 'req-1:0.0.6155171@0.0.6154875'), account ID (e.g., 0.0.12345) of the target agent, OR the connection number (e.g., '1', '2') from the 'list_connections' tool. Request key is most deterministic.\"\n ),\n connectionId: z\n .string()\n .optional()\n .describe(\n \"The connection number (e.g., '1', '2') from the 'list_connections' tool.\"\n ),\n agentId: z\n .string()\n .optional()\n .describe('The account ID (e.g., 0.0.12345) of the target agent.'),\n message: z.string().describe('The text message content to send.'),\n disableMonitoring: z.boolean().optional().default(false),\n});\n\n/**\n * A tool to send a message to an agent over an established HCS-10 connection.\n */\nexport class SendMessageToConnectionTool extends BaseHCS10TransactionTool<\n typeof SendMessageToConnectionZodSchema\n> {\n name = 'send_message_to_connection';\n description =\n \"Use this to send a message to an agent you already have an active connection with. Provide the target agent's account ID (e.g., 0.0.12345) and your message. If no active connection exists, this will fail - use initiate_connection instead to create a new connection first.\";\n specificInputSchema = SendMessageToConnectionZodSchema;\n constructor(params: HCS10TransactionToolParams) {\n super(params);\n this.requiresMultipleTransactions = true;\n this.neverScheduleThisTool = true;\n }\n\n protected async callBuilderMethod(\n builder: BaseServiceBuilder,\n specificArgs: z.infer<typeof SendMessageToConnectionZodSchema>\n ): Promise<void> {\n const hcs10Builder = builder as HCS10Builder;\n\n const targetIdentifier =\n specificArgs.targetIdentifier ||\n specificArgs.agentId ||\n specificArgs.connectionId;\n\n if (!targetIdentifier) {\n throw new Error(\n 'Either targetIdentifier, connectionId, or agentId must be provided'\n );\n }\n\n const stateManager = hcs10Builder.getStateManager();\n if (stateManager) {\n const connectionsManager = stateManager.getConnectionsManager();\n if (connectionsManager) {\n try {\n const currentAgent = stateManager.getCurrentAgent();\n if (currentAgent && currentAgent.accountId) {\n await connectionsManager.fetchConnectionData(\n currentAgent.accountId\n );\n }\n } catch (error) {\n console.debug('Could not refresh connections:', error);\n }\n }\n\n if (targetIdentifier.match(/^\\d+$/)) {\n const connections = stateManager.listConnections();\n const connectionIndex = parseInt(targetIdentifier) - 1; // Connection numbers are 1-based\n\n const establishedConnections = connections.filter(\n (conn) =>\n conn.status === 'established' &&\n !conn.isPending &&\n !conn.needsConfirmation\n );\n\n if (\n connectionIndex >= 0 &&\n connectionIndex < establishedConnections.length\n ) {\n const selectedConnection = establishedConnections[connectionIndex];\n if (selectedConnection && selectedConnection.connectionTopicId) {\n await hcs10Builder.sendMessageToConnection({\n targetIdentifier: selectedConnection.connectionTopicId,\n message: specificArgs.message,\n disableMonitoring: specificArgs.disableMonitoring,\n });\n return;\n }\n }\n }\n\n if (targetIdentifier.match(/^\\d+\\.\\d+\\.\\d+$/)) {\n const connections = stateManager.listConnections();\n const establishedConnection = connections.find(\n (conn) =>\n (conn.targetAccountId === targetIdentifier ||\n conn.targetAccountId === `0.0.${targetIdentifier}`) &&\n conn.status === 'established' &&\n !conn.isPending &&\n !conn.needsConfirmation\n );\n\n if (establishedConnection && establishedConnection.connectionTopicId) {\n await hcs10Builder.sendMessageToConnection({\n targetIdentifier: establishedConnection.connectionTopicId,\n message: specificArgs.message,\n disableMonitoring: specificArgs.disableMonitoring,\n });\n return;\n }\n }\n }\n\n await hcs10Builder.sendMessageToConnection({\n targetIdentifier: targetIdentifier,\n message: specificArgs.message,\n disableMonitoring: specificArgs.disableMonitoring,\n });\n }\n}\n"],"names":[],"mappings":";;AAMA,MAAM,mCAAmC,EAAE,OAAO;AAAA,EAChD,kBAAkB,EACf,SACA,WACA;AAAA,IACC;AAAA,EAAA;AAAA,EAEJ,cAAc,EACX,SACA,WACA;AAAA,IACC;AAAA,EAAA;AAAA,EAEJ,SAAS,EACN,OAAA,EACA,SAAA,EACA,SAAS,uDAAuD;AAAA,EACnE,SAAS,EAAE,SAAS,SAAS,mCAAmC;AAAA,EAChE,mBAAmB,EAAE,QAAA,EAAU,SAAA,EAAW,QAAQ,KAAK;AACzD,CAAC;AAKM,MAAM,oCAAoC,yBAE/C;AAAA,EAKA,YAAY,QAAoC;AAC9C,UAAM,MAAM;AALd,SAAA,OAAO;AACP,SAAA,cACE;AACF,SAAA,sBAAsB;AAGpB,SAAK,+BAA+B;AACpC,SAAK,wBAAwB;AAAA,EAC/B;AAAA,EAEA,MAAgB,kBACd,SACA,cACe;AACf,UAAM,eAAe;AAErB,UAAM,mBACJ,aAAa,oBACb,aAAa,WACb,aAAa;AAEf,QAAI,CAAC,kBAAkB;AACrB,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAAA,IAEJ;AAEA,UAAM,eAAe,aAAa,gBAAA;AAClC,QAAI,cAAc;AAChB,YAAM,qBAAqB,aAAa,sBAAA;AACxC,UAAI,oBAAoB;AACtB,YAAI;AACF,gBAAM,eAAe,aAAa,gBAAA;AAClC,cAAI,gBAAgB,aAAa,WAAW;AAC1C,kBAAM,mBAAmB;AAAA,cACvB,aAAa;AAAA,YAAA;AAAA,UAEjB;AAAA,QACF,SAAS,OAAO;AACd,kBAAQ,MAAM,kCAAkC,KAAK;AAAA,QACvD;AAAA,MACF;AAEA,UAAI,iBAAiB,MAAM,OAAO,GAAG;AACnC,cAAM,cAAc,aAAa,gBAAA;AACjC,cAAM,kBAAkB,SAAS,gBAAgB,IAAI;AAErD,cAAM,yBAAyB,YAAY;AAAA,UACzC,CAAC,SACC,KAAK,WAAW,iBAChB,CAAC,KAAK,aACN,CAAC,KAAK;AAAA,QAAA;AAGV,YACE,mBAAmB,KACnB,kBAAkB,uBAAuB,QACzC;AACA,gBAAM,qBAAqB,uBAAuB,eAAe;AACjE,cAAI,sBAAsB,mBAAmB,mBAAmB;AAC9D,kBAAM,aAAa,wBAAwB;AAAA,cACzC,kBAAkB,mBAAmB;AAAA,cACrC,SAAS,aAAa;AAAA,cACtB,mBAAmB,aAAa;AAAA,YAAA,CACjC;AACD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,UAAI,iBAAiB,MAAM,iBAAiB,GAAG;AAC7C,cAAM,cAAc,aAAa,gBAAA;AACjC,cAAM,wBAAwB,YAAY;AAAA,UACxC,CAAC,UACE,KAAK,oBAAoB,oBACxB,KAAK,oBAAoB,OAAO,gBAAgB,OAClD,KAAK,WAAW,iBAChB,CAAC,KAAK,aACN,CAAC,KAAK;AAAA,QAAA;AAGV,YAAI,yBAAyB,sBAAsB,mBAAmB;AACpE,gBAAM,aAAa,wBAAwB;AAAA,YACzC,kBAAkB,sBAAsB;AAAA,YACxC,SAAS,aAAa;AAAA,YACtB,mBAAmB,aAAa;AAAA,UAAA,CACjC;AACD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,aAAa,wBAAwB;AAAA,MACzC;AAAA,MACA,SAAS,aAAa;AAAA,MACtB,mBAAmB,aAAa;AAAA,IAAA,CACjC;AAAA,EACH;AACF;"}
1
+ {"version":3,"file":"standards-agent-kit.es9.js","sources":["../../src/tools/hcs10/RegisterAgentTool.ts"],"sourcesContent":["import { AIAgentCapability } from '@hashgraphonline/standards-sdk';\nimport { z } from 'zod';\nimport { BaseServiceBuilder } from 'hedera-agent-kit';\nimport { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';\nimport {\n HCS10Builder,\n RegisterAgentParams,\n} from '../../builders/hcs10/hcs10-builder';\nimport { BaseHCS10TransactionTool } from './base-hcs10-tools';\nimport { HCS10TransactionToolParams } from './hcs10-tool-params';\nimport { RegisteredAgent } from '../../state/state-types';\nimport { NaturalLanguageMapper } from './natural-language-mapper';\n\nconst RegisterAgentZodSchema = z.object({\n name: z\n .string()\n .min(1)\n .max(50)\n .describe('A unique name for the agent (1-50 characters)'),\n description: z\n .string()\n .max(500)\n .optional()\n .describe('Optional bio description for the agent (max 500 characters)'),\n alias: z\n .string()\n .optional()\n .transform((val) => {\n if (!val || val.toLowerCase().includes('random')) {\n const timestamp = Date.now().toString(36);\n const randomChars = Math.random().toString(36);\n return `bot${timestamp}${randomChars}`;\n }\n return val;\n })\n .describe(\n 'Optional custom username/alias for the agent. Use \"random\" to generate a unique alias'\n ),\n type: z\n .enum(['autonomous', 'manual'])\n .optional()\n .describe('Agent type (default: autonomous)'),\n model: z\n .string()\n .optional()\n .describe('AI model identifier (default: agent-model-2024)'),\n capabilities: z\n .union([\n z.array(z.nativeEnum(AIAgentCapability)),\n z.array(z.string()),\n z.string(),\n ])\n .optional()\n .transform((val) => {\n if (!val) return undefined;\n if (typeof val === 'string') {\n return NaturalLanguageMapper.parseCapabilities(val);\n }\n if (Array.isArray(val) && val.length > 0 && typeof val[0] === 'string') {\n return NaturalLanguageMapper.parseTagsOrCapabilities(val);\n }\n return val as AIAgentCapability[];\n })\n .describe('Agent capabilities - can be capability names (e.g. \"ai\", \"data processing\"), capability enum values, or array of either. Common values: \"ai\"/\"text\" (TEXT_GENERATION), \"data\" (DATA_INTEGRATION), \"analytics\" (TRANSACTION_ANALYTICS)'),\n tags: z\n .union([\n z.array(z.string()),\n z.string(),\n ])\n .optional()\n .transform((val) => {\n if (!val) return undefined;\n if (typeof val === 'string') {\n return NaturalLanguageMapper.parseCapabilities(val);\n }\n return NaturalLanguageMapper.parseTagsOrCapabilities(val);\n })\n .describe('Tags for the agent (alternative to capabilities) - e.g. \"ai\", \"data\", \"analytics\". Will be converted to appropriate capabilities.'),\n creator: z.string().optional().describe('Creator attribution for the agent'),\n socials: z\n .record(\n z.enum([\n 'twitter',\n 'github',\n 'discord',\n 'telegram',\n 'linkedin',\n 'youtube',\n 'website',\n 'x',\n ] as const),\n z.string()\n )\n .optional()\n .describe(\n 'Social media links (e.g., {\"twitter\": \"@handle\", \"discord\": \"username\"})'\n ),\n properties: z\n .record(z.unknown())\n .optional()\n .describe('Custom metadata properties for the agent'),\n profilePicture: z\n .union([\n z.string().describe('URL or local file path to profile picture'),\n z.object({\n url: z.string().optional(),\n path: z.string().optional(),\n filename: z.string().optional(),\n }),\n ])\n .optional()\n .describe(\n 'Optional profile picture as URL, file path, or object with url/path/filename'\n ),\n existingProfilePictureTopicId: z\n .string()\n .optional()\n .describe(\n 'Topic ID of an existing profile picture to reuse (e.g., 0.0.12345)'\n ),\n initialBalance: z\n .number()\n .positive()\n .optional()\n .describe(\n 'Optional initial HBAR balance for the new agent account (will create new account if provided)'\n ),\n userAccountId: z\n .string()\n .optional()\n .describe(\n 'Optional account ID (e.g., 0.0.12345) to use as the agent account instead of creating a new one'\n ),\n hbarFee: z\n .number()\n .positive()\n .optional()\n .describe(\n 'Optional HBAR fee amount to charge per message on the inbound topic'\n ),\n tokenFees: z\n .array(\n z.object({\n amount: z.number().positive(),\n tokenId: z.string(),\n })\n )\n .optional()\n .describe('Optional token fees to charge per message'),\n exemptAccountIds: z\n .array(z.string())\n .optional()\n .describe('Optional account IDs to exempt from fees'),\n setAsCurrent: z\n .boolean()\n .optional()\n .describe('Whether to set as current agent (default: true)'),\n persistence: z\n .object({\n prefix: z.string().optional(),\n })\n .optional()\n .describe('Optional persistence configuration'),\n});\n\nexport class RegisterAgentTool extends BaseHCS10TransactionTool<\n typeof RegisterAgentZodSchema\n> {\n name = 'register_agent';\n description =\n 'Creates and registers the AI agent on the Hedera network. Returns JSON string with agent details (accountId, privateKey, topics) on success. Supports natural language for capabilities/tags like \"ai\", \"data processing\", \"analytics\". Note: This tool requires multiple transactions and cannot be used in returnBytes mode. If alias is set to \"random\" or contains \"random\", a unique alias will be generated.';\n specificInputSchema = RegisterAgentZodSchema;\n private specificArgs: z.infer<typeof RegisterAgentZodSchema> | undefined;\n\n constructor(params: HCS10TransactionToolParams) {\n super(params);\n this.neverScheduleThisTool = true;\n this.requiresMultipleTransactions = true;\n }\n\n protected async callBuilderMethod(\n builder: BaseServiceBuilder,\n specificArgs: z.infer<typeof RegisterAgentZodSchema>\n ): Promise<void> {\n const hcs10Builder = builder as HCS10Builder;\n this.specificArgs = specificArgs;\n const params: RegisterAgentParams = {\n name: specificArgs.name,\n };\n\n if (specificArgs.description !== undefined) {\n params.bio = specificArgs.description;\n }\n if (specificArgs.alias !== undefined) {\n params.alias = specificArgs.alias;\n } else {\n const randomSuffix = Date.now().toString(36);\n params.alias = `${specificArgs.name}${randomSuffix}`;\n }\n if (specificArgs.type !== undefined) {\n params.type = specificArgs.type;\n }\n if (specificArgs.model !== undefined) {\n params.model = specificArgs.model;\n }\n // Handle both capabilities and tags (tags takes precedence if both provided)\n if (specificArgs.tags !== undefined) {\n params.capabilities = specificArgs.tags as AIAgentCapability[];\n } else if (specificArgs.capabilities !== undefined) {\n params.capabilities = specificArgs.capabilities as AIAgentCapability[];\n }\n if (specificArgs.creator !== undefined) {\n params.creator = specificArgs.creator;\n }\n if (specificArgs.socials !== undefined) {\n params.socials = specificArgs.socials;\n }\n if (specificArgs.properties !== undefined) {\n params.properties = specificArgs.properties;\n }\n if (specificArgs.profilePicture !== undefined) {\n if (typeof specificArgs.profilePicture === 'string') {\n params.profilePicture = specificArgs.profilePicture;\n } else {\n const profilePicObj: {\n url?: string;\n path?: string;\n filename?: string;\n } = {};\n if (specificArgs.profilePicture.url !== undefined) {\n profilePicObj.url = specificArgs.profilePicture.url;\n }\n if (specificArgs.profilePicture.path !== undefined) {\n profilePicObj.path = specificArgs.profilePicture.path;\n }\n if (specificArgs.profilePicture.filename !== undefined) {\n profilePicObj.filename = specificArgs.profilePicture.filename;\n }\n params.profilePicture = profilePicObj;\n }\n }\n if (specificArgs.existingProfilePictureTopicId !== undefined) {\n params.existingProfilePictureTopicId =\n specificArgs.existingProfilePictureTopicId;\n }\n if (specificArgs.userAccountId !== undefined) {\n params.userAccountId = specificArgs.userAccountId;\n }\n if (specificArgs.hbarFee !== undefined) {\n params.hbarFee = specificArgs.hbarFee;\n }\n if (specificArgs.tokenFees !== undefined) {\n params.tokenFees = specificArgs.tokenFees;\n }\n if (specificArgs.exemptAccountIds !== undefined) {\n params.exemptAccountIds = specificArgs.exemptAccountIds;\n }\n if (specificArgs.initialBalance !== undefined) {\n params.initialBalance = specificArgs.initialBalance;\n }\n\n await hcs10Builder.registerAgent(params);\n }\n\n /**\n * Override _call to intercept the result and save agent to state if needed\n */\n protected override async _call(\n args: z.infer<ReturnType<this['schema']>>,\n runManager?: CallbackManagerForToolRun\n ): Promise<string> {\n const result = await super._call(args, runManager);\n\n const shouldSetAsCurrent = this.specificArgs?.setAsCurrent !== false;\n\n if (this.specificArgs && shouldSetAsCurrent) {\n try {\n const parsed = JSON.parse(result);\n if (parsed.rawResult) {\n this._handleRegistrationResult(parsed.rawResult);\n } else if (parsed.state || parsed.accountId || parsed.metadata) {\n this._handleRegistrationResult(parsed);\n }\n } catch (e) {}\n }\n\n return result;\n }\n\n /**\n * Extract agent data from registration result and save to state\n */\n private _handleRegistrationResult(rawResult: any): void {\n let accountId = rawResult.accountId || rawResult.metadata?.accountId;\n\n if (!accountId && rawResult.state?.createdResources) {\n const accountResource = rawResult.state.createdResources.find(\n (r: string) => r.startsWith('account:')\n );\n if (accountResource) {\n accountId = accountResource.split(':')[1];\n }\n }\n\n const inboundTopicId =\n rawResult.inboundTopicId ||\n rawResult.metadata?.inboundTopicId ||\n rawResult.state?.inboundTopicId;\n\n const outboundTopicId =\n rawResult.outboundTopicId ||\n rawResult.metadata?.outboundTopicId ||\n rawResult.state?.outboundTopicId;\n\n const profileTopicId =\n rawResult.profileTopicId ||\n rawResult.metadata?.profileTopicId ||\n rawResult.state?.profileTopicId;\n\n const privateKey = rawResult.privateKey || rawResult.metadata?.privateKey;\n\n if (accountId && inboundTopicId && outboundTopicId && this.specificArgs) {\n const registeredAgent: RegisteredAgent = {\n name: this.specificArgs.name,\n accountId,\n inboundTopicId,\n outboundTopicId,\n profileTopicId,\n privateKey,\n };\n\n const hcs10Builder = this.getServiceBuilder() as HCS10Builder;\n const stateManager = hcs10Builder.getStateManager();\n if (stateManager) {\n stateManager.setCurrentAgent(registeredAgent);\n\n if (stateManager.persistAgentData) {\n const prefix =\n this.specificArgs.persistence?.prefix ||\n this.specificArgs.name.toUpperCase().replace(/[^A-Z0-9]/g, '_');\n stateManager\n .persistAgentData(registeredAgent, {\n type: 'env-file',\n prefix: prefix,\n })\n .catch(() => {});\n }\n }\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
- import { BaseHCS6TransactionTool } from './base-hcs6-tools';
3
- import { HCS6TransactionToolParams } from './hcs6-tool-params';
4
- import { TransactionResponse } from 'hedera-agent-kit';
2
+ import { BaseHCS6QueryTool } from './base-hcs6-tools';
3
+ import { HCS6QueryToolParams } from './hcs6-tool-params';
4
+ import { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';
5
5
  /**
6
6
  * Schema for creating a dynamic hashinal registry
7
7
  */
@@ -22,10 +22,10 @@ export type CreateDynamicRegistryInput = z.infer<typeof CreateDynamicRegistrySch
22
22
  /**
23
23
  * Tool for creating HCS-6 dynamic registries
24
24
  */
25
- export declare class CreateDynamicRegistryTool extends BaseHCS6TransactionTool<typeof CreateDynamicRegistrySchema> {
25
+ export declare class CreateDynamicRegistryTool extends BaseHCS6QueryTool<typeof CreateDynamicRegistrySchema> {
26
26
  name: string;
27
27
  description: string;
28
- schema: z.ZodObject<{
28
+ get specificInputSchema(): z.ZodObject<{
29
29
  ttl: z.ZodDefault<z.ZodNumber>;
30
30
  adminKey: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString]>>;
31
31
  submitKey: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString]>>;
@@ -38,7 +38,7 @@ export declare class CreateDynamicRegistryTool extends BaseHCS6TransactionTool<t
38
38
  adminKey?: string | boolean | undefined;
39
39
  submitKey?: string | boolean | undefined;
40
40
  }>;
41
- constructor(params: HCS6TransactionToolParams);
42
- protected _call(params: CreateDynamicRegistryInput): Promise<TransactionResponse>;
41
+ constructor(params: HCS6QueryToolParams);
42
+ protected executeQuery(params: CreateDynamicRegistryInput, _runManager?: CallbackManagerForToolRun): Promise<unknown>;
43
43
  }
44
44
  export {};
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { BaseHCS6QueryTool } from './base-hcs6-tools';
3
3
  import { HCS6QueryToolParams } from './hcs6-tool-params';
4
- import { TransactionResponse } from 'hedera-agent-kit';
4
+ import { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';
5
5
  /**
6
6
  * Schema for querying a dynamic registry
7
7
  */
@@ -28,7 +28,7 @@ export type QueryDynamicRegistryInput = z.infer<typeof QueryDynamicRegistrySchem
28
28
  export declare class QueryDynamicRegistryTool extends BaseHCS6QueryTool<typeof QueryDynamicRegistrySchema> {
29
29
  name: string;
30
30
  description: string;
31
- schema: z.ZodObject<{
31
+ get specificInputSchema(): z.ZodObject<{
32
32
  topicId: z.ZodString;
33
33
  limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
34
34
  order: z.ZodDefault<z.ZodOptional<z.ZodEnum<["asc", "desc"]>>>;
@@ -45,6 +45,6 @@ export declare class QueryDynamicRegistryTool extends BaseHCS6QueryTool<typeof Q
45
45
  skip?: number | undefined;
46
46
  }>;
47
47
  constructor(params: HCS6QueryToolParams);
48
- protected _call(params: QueryDynamicRegistryInput): Promise<TransactionResponse>;
48
+ protected executeQuery(params: QueryDynamicRegistryInput, _runManager?: CallbackManagerForToolRun): Promise<unknown>;
49
49
  }
50
50
  export {};
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
- import { BaseHCS6TransactionTool } from './base-hcs6-tools';
3
- import { HCS6TransactionToolParams } from './hcs6-tool-params';
4
- import { TransactionResponse } from 'hedera-agent-kit';
2
+ import { BaseHCS6QueryTool } from './base-hcs6-tools';
3
+ import { HCS6QueryToolParams } from './hcs6-tool-params';
4
+ import { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';
5
5
  /**
6
6
  * Schema for registering a dynamic hashinal
7
7
  */
@@ -51,10 +51,10 @@ export type RegisterDynamicHashinalInput = z.infer<typeof RegisterDynamicHashina
51
51
  /**
52
52
  * Tool for registering (creating) dynamic hashinals
53
53
  */
54
- export declare class RegisterDynamicHashinalTool extends BaseHCS6TransactionTool<typeof RegisterDynamicHashinalSchema> {
54
+ export declare class RegisterDynamicHashinalTool extends BaseHCS6QueryTool<typeof RegisterDynamicHashinalSchema> {
55
55
  name: string;
56
56
  description: string;
57
- schema: z.ZodObject<{
57
+ get specificInputSchema(): z.ZodObject<{
58
58
  metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
59
59
  data: z.ZodOptional<z.ZodObject<{
60
60
  base64: z.ZodOptional<z.ZodString>;
@@ -96,7 +96,7 @@ export declare class RegisterDynamicHashinalTool extends BaseHCS6TransactionTool
96
96
  submitKey?: string | undefined;
97
97
  registryTopicId?: string | undefined;
98
98
  }>;
99
- constructor(params: HCS6TransactionToolParams);
100
- protected _call(params: RegisterDynamicHashinalInput): Promise<TransactionResponse>;
99
+ constructor(params: HCS6QueryToolParams);
100
+ protected executeQuery(params: RegisterDynamicHashinalInput, _runManager?: CallbackManagerForToolRun): Promise<unknown>;
101
101
  }
102
102
  export {};
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
- import { BaseHCS6TransactionTool } from './base-hcs6-tools';
3
- import { HCS6TransactionToolParams } from './hcs6-tool-params';
4
- import { TransactionResponse } from 'hedera-agent-kit';
2
+ import { BaseHCS6QueryTool } from './base-hcs6-tools';
3
+ import { HCS6QueryToolParams } from './hcs6-tool-params';
4
+ import { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';
5
5
  /**
6
6
  * Schema for updating a dynamic hashinal
7
7
  */
@@ -48,10 +48,10 @@ export type UpdateDynamicHashinalInput = z.infer<typeof UpdateDynamicHashinalSch
48
48
  /**
49
49
  * Tool for updating dynamic hashinals
50
50
  */
51
- export declare class UpdateDynamicHashinalTool extends BaseHCS6TransactionTool<typeof UpdateDynamicHashinalSchema> {
51
+ export declare class UpdateDynamicHashinalTool extends BaseHCS6QueryTool<typeof UpdateDynamicHashinalSchema> {
52
52
  name: string;
53
53
  description: string;
54
- schema: z.ZodObject<{
54
+ get specificInputSchema(): z.ZodObject<{
55
55
  registryTopicId: z.ZodString;
56
56
  metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
57
57
  data: z.ZodOptional<z.ZodObject<{
@@ -90,7 +90,7 @@ export declare class UpdateDynamicHashinalTool extends BaseHCS6TransactionTool<t
90
90
  } | undefined;
91
91
  memo?: string | undefined;
92
92
  }>;
93
- constructor(params: HCS6TransactionToolParams);
94
- protected _call(params: UpdateDynamicHashinalInput): Promise<TransactionResponse>;
93
+ constructor(params: HCS6QueryToolParams);
94
+ protected executeQuery(params: UpdateDynamicHashinalInput, _runManager?: CallbackManagerForToolRun): Promise<unknown>;
95
95
  }
96
96
  export {};
@@ -1,9 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { BaseInscriberQueryTool } from './base-inscriber-tools';
3
3
  import { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';
4
- /**
5
- * Schema for inscribing from buffer
6
- */
7
4
  declare const inscribeFromBufferSchema: z.ZodObject<{
8
5
  base64Data: z.ZodString;
9
6
  fileName: z.ZodString;
@@ -38,12 +35,10 @@ declare const inscribeFromBufferSchema: z.ZodObject<{
38
35
  timeoutMs?: number | undefined;
39
36
  apiKey?: string | undefined;
40
37
  }>;
41
- /**
42
- * Tool for inscribing content from buffer
43
- */
44
38
  export declare class InscribeFromBufferTool extends BaseInscriberQueryTool<typeof inscribeFromBufferSchema> {
45
39
  name: string;
46
40
  description: string;
41
+ private config;
47
42
  get specificInputSchema(): z.ZodObject<{
48
43
  base64Data: z.ZodString;
49
44
  fileName: z.ZodString;
@@ -79,5 +74,11 @@ export declare class InscribeFromBufferTool extends BaseInscriberQueryTool<typeo
79
74
  apiKey?: string | undefined;
80
75
  }>;
81
76
  protected executeQuery(params: z.infer<typeof inscribeFromBufferSchema>, _runManager?: CallbackManagerForToolRun): Promise<unknown>;
77
+ private validateInput;
78
+ private validateContent;
79
+ private executeInscription;
80
+ private formatInscriptionResult;
81
+ private resolveContent;
82
+ private handleDirectContent;
82
83
  }
83
84
  export {};
@@ -1,28 +1,39 @@
1
1
  import { BaseHederaTransactionTool, BaseHederaQueryTool, BaseServiceBuilder } from 'hedera-agent-kit';
2
2
  import { InscriberBuilder } from '../../builders/inscriber/inscriber-builder';
3
3
  import { InscriberTransactionToolParams, InscriberQueryToolParams } from './inscriber-tool-params';
4
+ import { ContentResolverInterface } from '../../types/content-resolver';
4
5
  import { z } from 'zod';
5
6
  /**
6
7
  * Base class for Inscriber transaction tools
7
8
  */
8
9
  export declare abstract class BaseInscriberTransactionTool<T extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny> = z.ZodObject<z.ZodRawShape>> extends BaseHederaTransactionTool<T> {
9
10
  protected inscriberBuilder: InscriberBuilder;
11
+ protected contentResolver: ContentResolverInterface | null;
10
12
  namespace: "inscriber";
11
13
  constructor(params: InscriberTransactionToolParams);
12
14
  /**
13
15
  * Override to return the InscriberBuilder
14
16
  */
15
17
  protected getServiceBuilder(): BaseServiceBuilder;
18
+ /**
19
+ * Get content resolver with fallback to registry
20
+ */
21
+ protected getContentResolver(): ContentResolverInterface | null;
16
22
  }
17
23
  /**
18
24
  * Base class for Inscriber query tools
19
25
  */
20
26
  export declare abstract class BaseInscriberQueryTool<T extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny> = z.ZodObject<z.ZodRawShape>> extends BaseHederaQueryTool<T> {
21
27
  protected inscriberBuilder: InscriberBuilder;
28
+ protected contentResolver: ContentResolverInterface | null;
22
29
  namespace: "inscriber";
23
30
  constructor(params: InscriberQueryToolParams);
24
31
  /**
25
32
  * Override to return the InscriberBuilder
26
33
  */
27
34
  protected getServiceBuilder(): BaseServiceBuilder;
35
+ /**
36
+ * Get content resolver with fallback to registry
37
+ */
38
+ protected getContentResolver(): ContentResolverInterface | null;
28
39
  }