@hashgraphonline/standards-agent-kit 0.2.112 → 0.2.113
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.
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/standards-agent-kit.cjs +1 -1
- package/dist/cjs/standards-agent-kit.cjs.map +1 -1
- package/dist/cjs/tools/hcs6/CreateDynamicRegistryTool.d.ts +44 -0
- package/dist/cjs/tools/hcs6/QueryDynamicRegistryTool.d.ts +50 -0
- package/dist/cjs/tools/hcs6/RegisterDynamicHashinalTool.d.ts +102 -0
- package/dist/cjs/tools/hcs6/UpdateDynamicHashinalTool.d.ts +96 -0
- package/dist/cjs/tools/hcs6/base-hcs6-tools.d.ts +28 -0
- package/dist/cjs/tools/hcs6/hcs6-tool-params.d.ts +18 -0
- package/dist/cjs/tools/hcs6/index.d.ts +6 -0
- package/dist/cjs/tools/index.d.ts +1 -0
- package/dist/cjs/tools/inscriber/InscribeFromBufferTool.d.ts +4 -4
- package/dist/es/index.d.ts +1 -1
- package/dist/es/standards-agent-kit.es.js +44 -31
- package/dist/es/standards-agent-kit.es.js.map +1 -1
- package/dist/es/standards-agent-kit.es10.js +27 -27
- package/dist/es/standards-agent-kit.es10.js.map +1 -1
- package/dist/es/standards-agent-kit.es11.js +20 -30
- package/dist/es/standards-agent-kit.es11.js.map +1 -1
- package/dist/es/standards-agent-kit.es12.js +27 -37
- package/dist/es/standards-agent-kit.es12.js.map +1 -1
- package/dist/es/standards-agent-kit.es13.js +48 -60
- package/dist/es/standards-agent-kit.es13.js.map +1 -1
- package/dist/es/standards-agent-kit.es14.js +60 -23
- package/dist/es/standards-agent-kit.es14.js.map +1 -1
- package/dist/es/standards-agent-kit.es15.js +23 -23
- package/dist/es/standards-agent-kit.es15.js.map +1 -1
- package/dist/es/standards-agent-kit.es16.js +23 -33
- package/dist/es/standards-agent-kit.es16.js.map +1 -1
- package/dist/es/standards-agent-kit.es17.js +34 -10
- package/dist/es/standards-agent-kit.es17.js.map +1 -1
- package/dist/es/standards-agent-kit.es18.js +16 -155
- package/dist/es/standards-agent-kit.es18.js.map +1 -1
- package/dist/es/standards-agent-kit.es19.js +150 -22
- package/dist/es/standards-agent-kit.es19.js.map +1 -1
- package/dist/es/standards-agent-kit.es20.js +25 -39
- package/dist/es/standards-agent-kit.es20.js.map +1 -1
- package/dist/es/standards-agent-kit.es21.js +26 -28
- package/dist/es/standards-agent-kit.es21.js.map +1 -1
- package/dist/es/standards-agent-kit.es22.js +16 -19
- package/dist/es/standards-agent-kit.es22.js.map +1 -1
- package/dist/es/standards-agent-kit.es23.js +21 -15
- package/dist/es/standards-agent-kit.es23.js.map +1 -1
- package/dist/es/standards-agent-kit.es24.js +18 -21
- package/dist/es/standards-agent-kit.es24.js.map +1 -1
- package/dist/es/standards-agent-kit.es25.js +35 -32
- package/dist/es/standards-agent-kit.es25.js.map +1 -1
- package/dist/es/standards-agent-kit.es26.js +38 -25
- package/dist/es/standards-agent-kit.es26.js.map +1 -1
- package/dist/es/standards-agent-kit.es27.js +25 -116
- package/dist/es/standards-agent-kit.es27.js.map +1 -1
- package/dist/es/standards-agent-kit.es28.js +33 -166
- package/dist/es/standards-agent-kit.es28.js.map +1 -1
- package/dist/es/standards-agent-kit.es29.js +42 -121
- package/dist/es/standards-agent-kit.es29.js.map +1 -1
- package/dist/es/standards-agent-kit.es30.js +40 -77
- package/dist/es/standards-agent-kit.es30.js.map +1 -1
- package/dist/es/standards-agent-kit.es31.js +42 -37
- package/dist/es/standards-agent-kit.es31.js.map +1 -1
- package/dist/es/standards-agent-kit.es32.js +20 -237
- package/dist/es/standards-agent-kit.es32.js.map +1 -1
- package/dist/es/standards-agent-kit.es33.js +154 -135
- package/dist/es/standards-agent-kit.es33.js.map +1 -1
- package/dist/es/standards-agent-kit.es34.js +168 -23
- package/dist/es/standards-agent-kit.es34.js.map +1 -1
- package/dist/es/standards-agent-kit.es35.js +126 -21
- package/dist/es/standards-agent-kit.es35.js.map +1 -1
- package/dist/es/standards-agent-kit.es36.js +86 -3
- package/dist/es/standards-agent-kit.es36.js.map +1 -1
- package/dist/es/standards-agent-kit.es37.js +45 -0
- package/dist/es/standards-agent-kit.es37.js.map +1 -0
- package/dist/es/standards-agent-kit.es38.js +249 -0
- package/dist/es/standards-agent-kit.es38.js.map +1 -0
- package/dist/es/standards-agent-kit.es39.js +141 -0
- package/dist/es/standards-agent-kit.es39.js.map +1 -0
- package/dist/es/standards-agent-kit.es4.js +65 -32
- package/dist/es/standards-agent-kit.es4.js.map +1 -1
- package/dist/es/standards-agent-kit.es40.js +33 -0
- package/dist/es/standards-agent-kit.es40.js.map +1 -0
- package/dist/es/standards-agent-kit.es41.js +28 -0
- package/dist/es/standards-agent-kit.es41.js.map +1 -0
- package/dist/es/standards-agent-kit.es42.js +7 -0
- package/dist/es/standards-agent-kit.es42.js.map +1 -0
- package/dist/es/standards-agent-kit.es5.js +35 -311
- package/dist/es/standards-agent-kit.es5.js.map +1 -1
- package/dist/es/standards-agent-kit.es6.js +320 -20
- package/dist/es/standards-agent-kit.es6.js.map +1 -1
- package/dist/es/standards-agent-kit.es7.js +19 -227
- package/dist/es/standards-agent-kit.es7.js.map +1 -1
- package/dist/es/standards-agent-kit.es8.js +216 -65
- package/dist/es/standards-agent-kit.es8.js.map +1 -1
- package/dist/es/standards-agent-kit.es9.js +72 -23
- package/dist/es/standards-agent-kit.es9.js.map +1 -1
- package/dist/es/tools/hcs6/CreateDynamicRegistryTool.d.ts +44 -0
- package/dist/es/tools/hcs6/QueryDynamicRegistryTool.d.ts +50 -0
- package/dist/es/tools/hcs6/RegisterDynamicHashinalTool.d.ts +102 -0
- package/dist/es/tools/hcs6/UpdateDynamicHashinalTool.d.ts +96 -0
- package/dist/es/tools/hcs6/base-hcs6-tools.d.ts +28 -0
- package/dist/es/tools/hcs6/hcs6-tool-params.d.ts +18 -0
- package/dist/es/tools/hcs6/index.d.ts +6 -0
- package/dist/es/tools/index.d.ts +1 -0
- package/dist/es/tools/inscriber/InscribeFromBufferTool.d.ts +4 -4
- package/dist/umd/index.d.ts +1 -1
- package/dist/umd/standards-agent-kit.umd.js +1 -1
- package/dist/umd/standards-agent-kit.umd.js.map +1 -1
- package/dist/umd/tools/hcs6/CreateDynamicRegistryTool.d.ts +44 -0
- package/dist/umd/tools/hcs6/QueryDynamicRegistryTool.d.ts +50 -0
- package/dist/umd/tools/hcs6/RegisterDynamicHashinalTool.d.ts +102 -0
- package/dist/umd/tools/hcs6/UpdateDynamicHashinalTool.d.ts +96 -0
- package/dist/umd/tools/hcs6/base-hcs6-tools.d.ts +28 -0
- package/dist/umd/tools/hcs6/hcs6-tool-params.d.ts +18 -0
- package/dist/umd/tools/hcs6/index.d.ts +6 -0
- package/dist/umd/tools/index.d.ts +1 -0
- package/dist/umd/tools/inscriber/InscribeFromBufferTool.d.ts +4 -4
- package/package.json +1 -1
- package/src/index.ts +1 -1
- package/src/tools/hcs6/CreateDynamicRegistryTool.ts +66 -0
- package/src/tools/hcs6/QueryDynamicRegistryTool.ts +72 -0
- package/src/tools/hcs6/RegisterDynamicHashinalTool.ts +79 -0
- package/src/tools/hcs6/UpdateDynamicHashinalTool.ts +74 -0
- package/src/tools/hcs6/base-hcs6-tools.ts +63 -0
- package/src/tools/hcs6/hcs6-tool-params.ts +21 -0
- package/src/tools/hcs6/index.ts +6 -0
- package/src/tools/index.ts +1 -0
- package/src/tools/inscriber/InscribeFromBufferTool.ts +1 -1
- package/src/tools/inscriber/InscribeFromUrlTool.ts +60 -7
|
@@ -1,133 +1,54 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
import { BaseHCS6TransactionTool } from "./standards-agent-kit.es27.js";
|
|
3
|
+
const RegisterDynamicHashinalSchema = z.object({
|
|
4
|
+
metadata: z.record(z.unknown()).describe("Metadata object for the hashinal (e.g., name, description, attributes)"),
|
|
5
|
+
data: z.object({
|
|
6
|
+
base64: z.string().optional().describe("Base64 encoded data for the hashinal"),
|
|
7
|
+
url: z.string().optional().describe("URL to fetch data from"),
|
|
8
|
+
mimeType: z.string().optional().describe("MIME type of the data")
|
|
9
|
+
}).optional().describe("Data to inscribe with the hashinal"),
|
|
10
|
+
memo: z.string().optional().describe("Optional memo for the registration"),
|
|
11
|
+
ttl: z.number().min(3600).default(86400).describe("Time-to-live in seconds for the inscription"),
|
|
12
|
+
registryTopicId: z.string().optional().describe("Registry topic ID to use. If not provided, a new registry will be created"),
|
|
13
|
+
submitKey: z.string().optional().describe("Submit key for the registry (required if registry has a submit key)")
|
|
14
14
|
});
|
|
15
|
-
class
|
|
16
|
-
constructor() {
|
|
17
|
-
super(
|
|
18
|
-
this.name = "
|
|
19
|
-
this.description = "
|
|
15
|
+
class RegisterDynamicHashinalTool extends BaseHCS6TransactionTool {
|
|
16
|
+
constructor(params) {
|
|
17
|
+
super(params);
|
|
18
|
+
this.name = "registerDynamicHashinal";
|
|
19
|
+
this.description = "Create and register a new dynamic hashinal that can be updated over time";
|
|
20
|
+
this.schema = RegisterDynamicHashinalSchema;
|
|
20
21
|
}
|
|
21
|
-
|
|
22
|
-
return inscribeFromBufferSchema;
|
|
23
|
-
}
|
|
24
|
-
async executeQuery(params, _runManager) {
|
|
25
|
-
console.log(`[DEBUG] InscribeFromBufferTool.executeQuery called`);
|
|
26
|
-
console.log(`[DEBUG] Buffer tool received base64Data length: ${params.base64Data?.length || 0}`);
|
|
27
|
-
console.log(`[DEBUG] Buffer tool fileName: ${params.fileName}`);
|
|
28
|
-
console.log(`[DEBUG] Buffer tool mimeType: ${params.mimeType}`);
|
|
29
|
-
if (!params.base64Data || params.base64Data.trim() === "") {
|
|
30
|
-
console.log(`[InscribeFromBufferTool] ERROR: No data provided`);
|
|
31
|
-
throw new Error("No data provided. Cannot inscribe empty content. Please provide valid base64 encoded data.");
|
|
32
|
-
}
|
|
33
|
-
if (!params.fileName || params.fileName.trim() === "") {
|
|
34
|
-
console.log(`[InscribeFromBufferTool] ERROR: No fileName provided`);
|
|
35
|
-
throw new Error("No fileName provided. A valid fileName is required for inscription.");
|
|
36
|
-
}
|
|
37
|
-
let buffer;
|
|
22
|
+
async _call(params) {
|
|
38
23
|
try {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if (buffer.length < 10) {
|
|
50
|
-
console.log(`[InscribeFromBufferTool] WARNING: Buffer is very small (${buffer.length} bytes)`);
|
|
51
|
-
console.log(`[InscribeFromBufferTool] Buffer content preview: ${buffer.toString("utf8", 0, Math.min(buffer.length, 50))}`);
|
|
52
|
-
throw new Error(`Buffer content is too small (${buffer.length} bytes). This may indicate empty or invalid content. Please verify the source data contains actual content.`);
|
|
53
|
-
}
|
|
54
|
-
const isValidBase64 = /^[A-Za-z0-9+/]*={0,2}$/.test(params.base64Data);
|
|
55
|
-
if (!isValidBase64) {
|
|
56
|
-
console.log(`[InscribeFromBufferTool] ERROR: Invalid base64 format`);
|
|
57
|
-
throw new Error("Invalid base64 format. The data does not appear to be properly base64 encoded.");
|
|
58
|
-
}
|
|
59
|
-
if (buffer.toString("utf8", 0, Math.min(buffer.length, 100)).trim() === "") {
|
|
60
|
-
console.log(`[InscribeFromBufferTool] ERROR: Buffer contains only whitespace or empty content`);
|
|
61
|
-
throw new Error("Buffer contains only whitespace or empty content. Cannot inscribe meaningless data.");
|
|
62
|
-
}
|
|
63
|
-
const options = {
|
|
64
|
-
mode: params.mode,
|
|
65
|
-
metadata: params.metadata,
|
|
66
|
-
tags: params.tags,
|
|
67
|
-
chunkSize: params.chunkSize,
|
|
68
|
-
waitForConfirmation: params.waitForConfirmation ?? true,
|
|
69
|
-
waitMaxAttempts: 10,
|
|
70
|
-
waitIntervalMs: 3e3,
|
|
71
|
-
apiKey: params.apiKey,
|
|
72
|
-
network: this.inscriberBuilder["hederaKit"].client.network.toString().includes("mainnet") ? "mainnet" : "testnet"
|
|
73
|
-
};
|
|
74
|
-
try {
|
|
75
|
-
let result;
|
|
76
|
-
if (params.timeoutMs) {
|
|
77
|
-
const timeoutPromise = new Promise((_, reject) => {
|
|
78
|
-
setTimeout(
|
|
79
|
-
() => reject(new Error(`Inscription timed out after ${params.timeoutMs}ms`)),
|
|
80
|
-
params.timeoutMs
|
|
81
|
-
);
|
|
82
|
-
});
|
|
83
|
-
result = await Promise.race([
|
|
84
|
-
this.inscriberBuilder.inscribe(
|
|
85
|
-
{
|
|
86
|
-
type: "buffer",
|
|
87
|
-
buffer,
|
|
88
|
-
fileName: params.fileName,
|
|
89
|
-
mimeType: params.mimeType
|
|
90
|
-
},
|
|
91
|
-
options
|
|
92
|
-
),
|
|
93
|
-
timeoutPromise
|
|
94
|
-
]);
|
|
95
|
-
} else {
|
|
96
|
-
result = await this.inscriberBuilder.inscribe(
|
|
97
|
-
{
|
|
98
|
-
type: "buffer",
|
|
99
|
-
buffer,
|
|
100
|
-
fileName: params.fileName,
|
|
101
|
-
mimeType: params.mimeType
|
|
102
|
-
},
|
|
103
|
-
options
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
if (result.confirmed) {
|
|
107
|
-
const topicId = result.inscription?.topic_id || result.result.topicId;
|
|
108
|
-
const network = options.network || "testnet";
|
|
109
|
-
const cdnUrl = topicId ? `https://kiloscribe.com/api/inscription-cdn/${topicId}?network=${network}` : null;
|
|
110
|
-
return `Successfully inscribed and confirmed content on the Hedera network!
|
|
111
|
-
|
|
112
|
-
Transaction ID: ${result.result.transactionId}
|
|
113
|
-
Topic ID: ${topicId || "N/A"}${cdnUrl ? `
|
|
114
|
-
View inscription: ${cdnUrl}` : ""}
|
|
115
|
-
|
|
116
|
-
The inscription is now available.`;
|
|
117
|
-
} else {
|
|
118
|
-
return `Successfully submitted inscription to the Hedera network!
|
|
119
|
-
|
|
120
|
-
Transaction ID: ${result.result.transactionId}
|
|
121
|
-
|
|
122
|
-
The inscription is processing and will be confirmed shortly.`;
|
|
24
|
+
const result = await this.hcs6Builder.register({
|
|
25
|
+
metadata: params.metadata,
|
|
26
|
+
data: params.data,
|
|
27
|
+
memo: params.memo,
|
|
28
|
+
ttl: params.ttl,
|
|
29
|
+
registryTopicId: params.registryTopicId,
|
|
30
|
+
submitKey: params.submitKey
|
|
31
|
+
});
|
|
32
|
+
if (!result.success || !result.registryTopicId || !result.inscriptionTopicId) {
|
|
33
|
+
throw new Error(result.error || "Failed to register dynamic hashinal");
|
|
123
34
|
}
|
|
35
|
+
return {
|
|
36
|
+
status: "success",
|
|
37
|
+
data: {
|
|
38
|
+
registryTopicId: result.registryTopicId,
|
|
39
|
+
inscriptionTopicId: result.inscriptionTopicId,
|
|
40
|
+
transactionId: result.transactionId
|
|
41
|
+
}
|
|
42
|
+
};
|
|
124
43
|
} catch (error) {
|
|
125
|
-
|
|
126
|
-
|
|
44
|
+
return {
|
|
45
|
+
status: "error",
|
|
46
|
+
message: error instanceof Error ? error.message : "Unknown error"
|
|
47
|
+
};
|
|
127
48
|
}
|
|
128
49
|
}
|
|
129
50
|
}
|
|
130
51
|
export {
|
|
131
|
-
|
|
52
|
+
RegisterDynamicHashinalTool
|
|
132
53
|
};
|
|
133
54
|
//# sourceMappingURL=standards-agent-kit.es29.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-agent-kit.es29.js","sources":["../../src/tools/inscriber/InscribeFromBufferTool.ts"],"sourcesContent":["import { z } from 'zod';\nimport { BaseInscriberQueryTool } from './base-inscriber-tools';\nimport { InscriptionOptions } from '@hashgraphonline/standards-sdk';\nimport { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';\n\n/**\n * Schema for inscribing from buffer\n */\nconst inscribeFromBufferSchema = z.object({\n base64Data: z.string().min(1, 'Base64 data cannot be empty').describe('Base64 encoded content to inscribe. Must contain valid, non-empty content (minimum 10 bytes after decoding).'),\n fileName: z.string().min(1, 'File name cannot be empty').describe('Name for the inscribed content. Required for all inscriptions.'),\n mimeType: z\n .string()\n .optional()\n .describe('MIME type of the content'),\n mode: z\n .enum(['file', 'hashinal'])\n .optional()\n .describe('Inscription mode: file or hashinal NFT'),\n metadata: z\n .record(z.unknown())\n .optional()\n .describe('Metadata to attach to the inscription'),\n tags: z\n .array(z.string())\n .optional()\n .describe('Tags to categorize the inscription'),\n chunkSize: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Chunk size for large files'),\n waitForConfirmation: z\n .boolean()\n .optional()\n .describe('Whether to wait for inscription confirmation'),\n timeoutMs: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Timeout in milliseconds for inscription (default: no timeout)'),\n apiKey: z\n .string()\n .optional()\n .describe('API key for inscription service'),\n});\n\n\n/**\n * Tool for inscribing content from buffer\n */\nexport class InscribeFromBufferTool extends BaseInscriberQueryTool<typeof inscribeFromBufferSchema> {\n name = 'inscribeFromBuffer';\n description = 'Inscribe content that you already have (text, data, or files) to the Hedera network. Use this tool when you have content from: Wikipedia articles, MCP tool responses, text data, API responses, or any content you\\'ve retrieved. Convert your content to base64 first. DO NOT use inscribeFromUrl for web page content - use this tool instead after retrieving the actual content.';\n\n get specificInputSchema() {\n return inscribeFromBufferSchema;\n }\n\n protected async executeQuery(\n params: z.infer<typeof inscribeFromBufferSchema>,\n _runManager?: CallbackManagerForToolRun\n ): Promise<unknown> {\n console.log(`[DEBUG] InscribeFromBufferTool.executeQuery called`);\n console.log(`[DEBUG] Buffer tool received base64Data length: ${params.base64Data?.length || 0}`);\n console.log(`[DEBUG] Buffer tool fileName: ${params.fileName}`);\n console.log(`[DEBUG] Buffer tool mimeType: ${params.mimeType}`);\n \n if (!params.base64Data || params.base64Data.trim() === '') {\n console.log(`[InscribeFromBufferTool] ERROR: No data provided`);\n throw new Error('No data provided. Cannot inscribe empty content. Please provide valid base64 encoded data.');\n }\n\n if (!params.fileName || params.fileName.trim() === '') {\n console.log(`[InscribeFromBufferTool] ERROR: No fileName provided`);\n throw new Error('No fileName provided. A valid fileName is required for inscription.');\n }\n\n let buffer: Buffer;\n try {\n buffer = Buffer.from(params.base64Data, 'base64');\n } catch (error) {\n console.log(`[InscribeFromBufferTool] ERROR: Invalid base64 data`);\n throw new Error('Invalid base64 data provided. Please ensure the data is properly base64 encoded.');\n }\n \n console.log(`[InscribeFromBufferTool] Buffer length after conversion: ${buffer.length}`);\n \n if (buffer.length === 0) {\n console.log(`[InscribeFromBufferTool] ERROR: Buffer is empty after conversion`);\n throw new Error('Buffer is empty after base64 conversion. The provided data appears to be invalid or empty.');\n }\n\n if (buffer.length < 10) {\n console.log(`[InscribeFromBufferTool] WARNING: Buffer is very small (${buffer.length} bytes)`);\n console.log(`[InscribeFromBufferTool] Buffer content preview: ${buffer.toString('utf8', 0, Math.min(buffer.length, 50))}`);\n throw new Error(`Buffer content is too small (${buffer.length} bytes). This may indicate empty or invalid content. Please verify the source data contains actual content.`);\n }\n\n const isValidBase64 = /^[A-Za-z0-9+/]*={0,2}$/.test(params.base64Data);\n if (!isValidBase64) {\n console.log(`[InscribeFromBufferTool] ERROR: Invalid base64 format`);\n throw new Error('Invalid base64 format. The data does not appear to be properly base64 encoded.');\n }\n\n if (buffer.toString('utf8', 0, Math.min(buffer.length, 100)).trim() === '') {\n console.log(`[InscribeFromBufferTool] ERROR: Buffer contains only whitespace or empty content`);\n throw new Error('Buffer contains only whitespace or empty content. Cannot inscribe meaningless data.');\n }\n\n const options: InscriptionOptions = {\n mode: params.mode,\n metadata: params.metadata,\n tags: params.tags,\n chunkSize: params.chunkSize,\n waitForConfirmation: params.waitForConfirmation ?? true,\n waitMaxAttempts: 10,\n waitIntervalMs: 3000,\n apiKey: params.apiKey,\n network: this.inscriberBuilder['hederaKit'].client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet',\n };\n\n try {\n let result: any;\n \n if (params.timeoutMs) {\n const timeoutPromise = new Promise((_, reject) => {\n setTimeout(\n () => reject(new Error(`Inscription timed out after ${params.timeoutMs}ms`)),\n params.timeoutMs\n );\n });\n\n result = await Promise.race([\n this.inscriberBuilder.inscribe(\n {\n type: 'buffer',\n buffer,\n fileName: params.fileName,\n mimeType: params.mimeType,\n },\n options\n ),\n timeoutPromise,\n ]);\n } else {\n result = await this.inscriberBuilder.inscribe(\n {\n type: 'buffer',\n buffer,\n fileName: params.fileName,\n mimeType: params.mimeType,\n },\n options\n );\n }\n\n if (result.confirmed) {\n const topicId = result.inscription?.topic_id || result.result.topicId;\n const network = options.network || 'testnet';\n const cdnUrl = topicId ? `https://kiloscribe.com/api/inscription-cdn/${topicId}?network=${network}` : null;\n return `Successfully inscribed and confirmed content on the Hedera network!\\n\\nTransaction ID: ${result.result.transactionId}\\nTopic ID: ${topicId || 'N/A'}${cdnUrl ? `\\nView inscription: ${cdnUrl}` : ''}\\n\\nThe inscription is now available.`;\n } else {\n return `Successfully submitted inscription to the Hedera network!\\n\\nTransaction ID: ${result.result.transactionId}\\n\\nThe inscription is processing and will be confirmed shortly.`;\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to inscribe from buffer';\n throw new Error(`Inscription failed: ${errorMessage}`);\n }\n }\n}"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-agent-kit.es29.js","sources":["../../src/tools/hcs6/RegisterDynamicHashinalTool.ts"],"sourcesContent":["import { z } from 'zod';\nimport { BaseHCS6TransactionTool } from './base-hcs6-tools';\nimport { HCS6TransactionToolParams } from './hcs6-tool-params';\nimport type { TransactionResponse } from 'hedera-agent-kit';\n\n/**\n * Schema for registering a dynamic hashinal\n */\nconst RegisterDynamicHashinalSchema = z.object({\n metadata: z.record(z.unknown())\n .describe('Metadata object for the hashinal (e.g., name, description, attributes)'),\n data: z.object({\n base64: z.string().optional().describe('Base64 encoded data for the hashinal'),\n url: z.string().optional().describe('URL to fetch data from'),\n mimeType: z.string().optional().describe('MIME type of the data'),\n }).optional()\n .describe('Data to inscribe with the hashinal'),\n memo: z.string()\n .optional()\n .describe('Optional memo for the registration'),\n ttl: z.number()\n .min(3600)\n .default(86400)\n .describe('Time-to-live in seconds for the inscription'),\n registryTopicId: z.string()\n .optional()\n .describe('Registry topic ID to use. If not provided, a new registry will be created'),\n submitKey: z.string()\n .optional()\n .describe('Submit key for the registry (required if registry has a submit key)'),\n});\n\nexport type RegisterDynamicHashinalInput = z.infer<typeof RegisterDynamicHashinalSchema>;\n\n/**\n * Tool for registering (creating) dynamic hashinals\n */\nexport class RegisterDynamicHashinalTool extends BaseHCS6TransactionTool<typeof RegisterDynamicHashinalSchema> {\n name = 'registerDynamicHashinal';\n description = 'Create and register a new dynamic hashinal that can be updated over time';\n schema = RegisterDynamicHashinalSchema;\n\n constructor(params: HCS6TransactionToolParams) {\n super(params);\n }\n\n protected async _call(\n params: RegisterDynamicHashinalInput\n ): Promise<TransactionResponse> {\n try {\n const result = await this.hcs6Builder.register({\n metadata: params.metadata,\n data: params.data,\n memo: params.memo,\n ttl: params.ttl,\n registryTopicId: params.registryTopicId,\n submitKey: params.submitKey,\n });\n\n if (!result.success || !result.registryTopicId || !result.inscriptionTopicId) {\n throw new Error(result.error || 'Failed to register dynamic hashinal');\n }\n\n return {\n status: 'success',\n data: {\n registryTopicId: result.registryTopicId,\n inscriptionTopicId: result.inscriptionTopicId,\n transactionId: result.transactionId,\n },\n };\n } catch (error) {\n return {\n status: 'error',\n message: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n}"],"names":[],"mappings":";;AAQA,MAAM,gCAAgC,EAAE,OAAO;AAAA,EAC7C,UAAU,EAAE,OAAO,EAAE,SAAS,EAC3B,SAAS,wEAAwE;AAAA,EACpF,MAAM,EAAE,OAAO;AAAA,IACb,QAAQ,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,sCAAsC;AAAA,IAC7E,KAAK,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,wBAAwB;AAAA,IAC5D,UAAU,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,uBAAuB;AAAA,EAAA,CACjE,EAAE,SAAA,EACA,SAAS,oCAAoC;AAAA,EAChD,MAAM,EAAE,OAAA,EACL,SAAA,EACA,SAAS,oCAAoC;AAAA,EAChD,KAAK,EAAE,OAAA,EACJ,IAAI,IAAI,EACR,QAAQ,KAAK,EACb,SAAS,6CAA6C;AAAA,EACzD,iBAAiB,EAAE,OAAA,EAChB,SAAA,EACA,SAAS,2EAA2E;AAAA,EACvF,WAAW,EAAE,OAAA,EACV,SAAA,EACA,SAAS,qEAAqE;AACnF,CAAC;AAOM,MAAM,oCAAoC,wBAA8D;AAAA,EAK7G,YAAY,QAAmC;AAC7C,UAAM,MAAM;AALd,SAAA,OAAO;AACP,SAAA,cAAc;AACd,SAAA,SAAS;AAAA,EAIT;AAAA,EAEA,MAAgB,MACd,QAC8B;AAC9B,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,YAAY,SAAS;AAAA,QAC7C,UAAU,OAAO;AAAA,QACjB,MAAM,OAAO;AAAA,QACb,MAAM,OAAO;AAAA,QACb,KAAK,OAAO;AAAA,QACZ,iBAAiB,OAAO;AAAA,QACxB,WAAW,OAAO;AAAA,MAAA,CACnB;AAED,UAAI,CAAC,OAAO,WAAW,CAAC,OAAO,mBAAmB,CAAC,OAAO,oBAAoB;AAC5E,cAAM,IAAI,MAAM,OAAO,SAAS,qCAAqC;AAAA,MACvE;AAEA,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,UACJ,iBAAiB,OAAO;AAAA,UACxB,oBAAoB,OAAO;AAAA,UAC3B,eAAe,OAAO;AAAA,QAAA;AAAA,MACxB;AAAA,IAEJ,SAAS,OAAO;AACd,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,MAAA;AAAA,IAEtD;AAAA,EACF;AACF;"}
|
|
@@ -1,90 +1,53 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
})
|
|
14
|
-
).optional().describe("NFT attributes"),
|
|
15
|
-
properties: z.record(z.unknown()).optional().describe("Additional properties"),
|
|
16
|
-
jsonFileURL: z.string().url().optional().describe("URL to JSON metadata file"),
|
|
17
|
-
tags: z.array(z.string()).optional().describe("Tags to categorize the NFT"),
|
|
18
|
-
chunkSize: z.number().int().positive().optional().describe("Chunk size for large files"),
|
|
19
|
-
waitForConfirmation: z.boolean().optional().describe("Whether to wait for inscription confirmation"),
|
|
20
|
-
apiKey: z.string().optional().describe("API key for inscription service")
|
|
2
|
+
import { BaseHCS6TransactionTool } from "./standards-agent-kit.es27.js";
|
|
3
|
+
const UpdateDynamicHashinalSchema = z.object({
|
|
4
|
+
registryTopicId: z.string().describe("The registry topic ID that tracks this dynamic hashinal"),
|
|
5
|
+
metadata: z.record(z.unknown()).describe("Updated metadata object for the hashinal"),
|
|
6
|
+
data: z.object({
|
|
7
|
+
base64: z.string().optional().describe("Base64 encoded data for the updated hashinal"),
|
|
8
|
+
url: z.string().optional().describe("URL to fetch updated data from"),
|
|
9
|
+
mimeType: z.string().optional().describe("MIME type of the data")
|
|
10
|
+
}).optional().describe("Updated data to inscribe"),
|
|
11
|
+
memo: z.string().optional().describe('Optional memo for the update (e.g., "Level up", "Version 2.0")'),
|
|
12
|
+
submitKey: z.string().describe("Submit key for the registry (required to update)")
|
|
21
13
|
});
|
|
22
|
-
class
|
|
23
|
-
constructor() {
|
|
24
|
-
super(
|
|
25
|
-
this.name = "
|
|
26
|
-
this.description = "
|
|
14
|
+
class UpdateDynamicHashinalTool extends BaseHCS6TransactionTool {
|
|
15
|
+
constructor(params) {
|
|
16
|
+
super(params);
|
|
17
|
+
this.name = "updateDynamicHashinal";
|
|
18
|
+
this.description = "Update an existing dynamic hashinal with new content while maintaining the same registry";
|
|
19
|
+
this.schema = UpdateDynamicHashinalSchema;
|
|
27
20
|
}
|
|
28
|
-
|
|
29
|
-
return inscribeHashinalSchema;
|
|
30
|
-
}
|
|
31
|
-
async executeQuery(params, _runManager) {
|
|
32
|
-
const metadata = {
|
|
33
|
-
name: params.name,
|
|
34
|
-
creator: params.creator,
|
|
35
|
-
description: params.description,
|
|
36
|
-
type: params.type,
|
|
37
|
-
attributes: params.attributes,
|
|
38
|
-
properties: params.properties
|
|
39
|
-
};
|
|
40
|
-
const options = {
|
|
41
|
-
mode: "hashinal",
|
|
42
|
-
metadata,
|
|
43
|
-
jsonFileURL: params.jsonFileURL,
|
|
44
|
-
tags: params.tags,
|
|
45
|
-
chunkSize: params.chunkSize,
|
|
46
|
-
waitForConfirmation: params.waitForConfirmation ?? true,
|
|
47
|
-
waitMaxAttempts: 10,
|
|
48
|
-
waitIntervalMs: 3e3,
|
|
49
|
-
apiKey: params.apiKey,
|
|
50
|
-
network: this.inscriberBuilder["hederaKit"].client.network.toString().includes("mainnet") ? "mainnet" : "testnet"
|
|
51
|
-
};
|
|
21
|
+
async _call(params) {
|
|
52
22
|
try {
|
|
53
|
-
const
|
|
54
|
-
|
|
23
|
+
const result = await this.hcs6Builder.register({
|
|
24
|
+
metadata: params.metadata,
|
|
25
|
+
data: params.data,
|
|
26
|
+
memo: params.memo,
|
|
27
|
+
registryTopicId: params.registryTopicId,
|
|
28
|
+
submitKey: params.submitKey
|
|
55
29
|
});
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
{ type: "url", url: params.url },
|
|
59
|
-
options
|
|
60
|
-
),
|
|
61
|
-
timeoutPromise
|
|
62
|
-
]);
|
|
63
|
-
if (result.confirmed) {
|
|
64
|
-
const topicId = result.inscription?.topic_id || result.result.topicId;
|
|
65
|
-
const network = options.network || "testnet";
|
|
66
|
-
const cdnUrl = topicId ? `https://kiloscribe.com/api/inscription-cdn/${topicId}?network=${network}` : null;
|
|
67
|
-
return `Successfully inscribed and confirmed Hashinal NFT on the Hedera network!
|
|
68
|
-
|
|
69
|
-
Transaction ID: ${result.result.transactionId}
|
|
70
|
-
Topic ID: ${topicId || "N/A"}${cdnUrl ? `
|
|
71
|
-
View inscription: ${cdnUrl}` : ""}
|
|
72
|
-
|
|
73
|
-
The Hashinal NFT is now available.`;
|
|
74
|
-
} else {
|
|
75
|
-
return `Successfully submitted Hashinal NFT inscription to the Hedera network!
|
|
76
|
-
|
|
77
|
-
Transaction ID: ${result.result.transactionId}
|
|
78
|
-
|
|
79
|
-
The inscription is processing and will be confirmed shortly.`;
|
|
30
|
+
if (!result.success) {
|
|
31
|
+
throw new Error(result.error || "Failed to update dynamic hashinal");
|
|
80
32
|
}
|
|
33
|
+
return {
|
|
34
|
+
status: "success",
|
|
35
|
+
data: {
|
|
36
|
+
registryTopicId: result.registryTopicId,
|
|
37
|
+
newInscriptionTopicId: result.inscriptionTopicId,
|
|
38
|
+
transactionId: result.transactionId,
|
|
39
|
+
updateMemo: params.memo
|
|
40
|
+
}
|
|
41
|
+
};
|
|
81
42
|
} catch (error) {
|
|
82
|
-
|
|
83
|
-
|
|
43
|
+
return {
|
|
44
|
+
status: "error",
|
|
45
|
+
message: error instanceof Error ? error.message : "Unknown error"
|
|
46
|
+
};
|
|
84
47
|
}
|
|
85
48
|
}
|
|
86
49
|
}
|
|
87
50
|
export {
|
|
88
|
-
|
|
51
|
+
UpdateDynamicHashinalTool
|
|
89
52
|
};
|
|
90
53
|
//# sourceMappingURL=standards-agent-kit.es30.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-agent-kit.es30.js","sources":["../../src/tools/
|
|
1
|
+
{"version":3,"file":"standards-agent-kit.es30.js","sources":["../../src/tools/hcs6/UpdateDynamicHashinalTool.ts"],"sourcesContent":["import { z } from 'zod';\nimport { BaseHCS6TransactionTool } from './base-hcs6-tools';\nimport { HCS6TransactionToolParams } from './hcs6-tool-params';\nimport type { TransactionResponse } from 'hedera-agent-kit';\n\n/**\n * Schema for updating a dynamic hashinal\n */\nconst UpdateDynamicHashinalSchema = z.object({\n registryTopicId: z.string()\n .describe('The registry topic ID that tracks this dynamic hashinal'),\n metadata: z.record(z.unknown())\n .describe('Updated metadata object for the hashinal'),\n data: z.object({\n base64: z.string().optional().describe('Base64 encoded data for the updated hashinal'),\n url: z.string().optional().describe('URL to fetch updated data from'),\n mimeType: z.string().optional().describe('MIME type of the data'),\n }).optional()\n .describe('Updated data to inscribe'),\n memo: z.string()\n .optional()\n .describe('Optional memo for the update (e.g., \"Level up\", \"Version 2.0\")'),\n submitKey: z.string()\n .describe('Submit key for the registry (required to update)'),\n});\n\nexport type UpdateDynamicHashinalInput = z.infer<typeof UpdateDynamicHashinalSchema>;\n\n/**\n * Tool for updating dynamic hashinals\n */\nexport class UpdateDynamicHashinalTool extends BaseHCS6TransactionTool<typeof UpdateDynamicHashinalSchema> {\n name = 'updateDynamicHashinal';\n description = 'Update an existing dynamic hashinal with new content while maintaining the same registry';\n schema = UpdateDynamicHashinalSchema;\n\n constructor(params: HCS6TransactionToolParams) {\n super(params);\n }\n\n protected async _call(\n params: UpdateDynamicHashinalInput\n ): Promise<TransactionResponse> {\n try {\n // Use the register method with the existing registry ID\n const result = await this.hcs6Builder.register({\n metadata: params.metadata,\n data: params.data,\n memo: params.memo,\n registryTopicId: params.registryTopicId,\n submitKey: params.submitKey,\n });\n\n if (!result.success) {\n throw new Error(result.error || 'Failed to update dynamic hashinal');\n }\n\n return {\n status: 'success',\n data: {\n registryTopicId: result.registryTopicId,\n newInscriptionTopicId: result.inscriptionTopicId,\n transactionId: result.transactionId,\n updateMemo: params.memo,\n },\n };\n } catch (error) {\n return {\n status: 'error',\n message: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n}"],"names":[],"mappings":";;AAQA,MAAM,8BAA8B,EAAE,OAAO;AAAA,EAC3C,iBAAiB,EAAE,SAChB,SAAS,yDAAyD;AAAA,EACrE,UAAU,EAAE,OAAO,EAAE,SAAS,EAC3B,SAAS,0CAA0C;AAAA,EACtD,MAAM,EAAE,OAAO;AAAA,IACb,QAAQ,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,8CAA8C;AAAA,IACrF,KAAK,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,gCAAgC;AAAA,IACpE,UAAU,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,uBAAuB;AAAA,EAAA,CACjE,EAAE,SAAA,EACA,SAAS,0BAA0B;AAAA,EACtC,MAAM,EAAE,OAAA,EACL,SAAA,EACA,SAAS,gEAAgE;AAAA,EAC5E,WAAW,EAAE,OAAA,EACV,SAAS,kDAAkD;AAChE,CAAC;AAOM,MAAM,kCAAkC,wBAA4D;AAAA,EAKzG,YAAY,QAAmC;AAC7C,UAAM,MAAM;AALd,SAAA,OAAO;AACP,SAAA,cAAc;AACd,SAAA,SAAS;AAAA,EAIT;AAAA,EAEA,MAAgB,MACd,QAC8B;AAC9B,QAAI;AAEF,YAAM,SAAS,MAAM,KAAK,YAAY,SAAS;AAAA,QAC7C,UAAU,OAAO;AAAA,QACjB,MAAM,OAAO;AAAA,QACb,MAAM,OAAO;AAAA,QACb,iBAAiB,OAAO;AAAA,QACxB,WAAW,OAAO;AAAA,MAAA,CACnB;AAED,UAAI,CAAC,OAAO,SAAS;AACnB,cAAM,IAAI,MAAM,OAAO,SAAS,mCAAmC;AAAA,MACrE;AAEA,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,UACJ,iBAAiB,OAAO;AAAA,UACxB,uBAAuB,OAAO;AAAA,UAC9B,eAAe,OAAO;AAAA,UACtB,YAAY,OAAO;AAAA,QAAA;AAAA,MACrB;AAAA,IAEJ,SAAS,OAAO;AACd,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,MAAA;AAAA,IAEtD;AAAA,EACF;AACF;"}
|
|
@@ -1,45 +1,50 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import { BaseHCS6QueryTool } from "./standards-agent-kit.es27.js";
|
|
3
|
+
const QueryDynamicRegistrySchema = z.object({
|
|
4
|
+
topicId: z.string().describe("The registry topic ID to query"),
|
|
5
|
+
limit: z.number().optional().default(100).describe("Maximum number of entries to retrieve"),
|
|
6
|
+
order: z.enum(["asc", "desc"]).optional().default("desc").describe("Order of entries (desc shows latest first)"),
|
|
7
|
+
skip: z.number().optional().describe("Number of entries to skip")
|
|
6
8
|
});
|
|
7
|
-
class
|
|
8
|
-
constructor() {
|
|
9
|
-
super(
|
|
10
|
-
this.name = "
|
|
11
|
-
this.description = "
|
|
9
|
+
class QueryDynamicRegistryTool extends BaseHCS6QueryTool {
|
|
10
|
+
constructor(params) {
|
|
11
|
+
super(params);
|
|
12
|
+
this.name = "queryDynamicRegistry";
|
|
13
|
+
this.description = "Query a dynamic registry to get the current state of a dynamic hashinal";
|
|
14
|
+
this.schema = QueryDynamicRegistrySchema;
|
|
12
15
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
16
|
+
async _call(params) {
|
|
17
|
+
try {
|
|
18
|
+
const registry = await this.hcs6Builder.getRegistry(params.topicId, {
|
|
19
|
+
limit: params.limit,
|
|
20
|
+
order: params.order,
|
|
21
|
+
skip: params.skip
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
status: "success",
|
|
25
|
+
data: {
|
|
26
|
+
topicId: registry.topicId,
|
|
27
|
+
registryType: "NON_INDEXED",
|
|
28
|
+
ttl: registry.ttl,
|
|
29
|
+
latestEntry: registry.latestEntry ? {
|
|
30
|
+
topicId: registry.latestEntry.message.t_id,
|
|
31
|
+
timestamp: registry.latestEntry.timestamp,
|
|
32
|
+
memo: registry.latestEntry.message.m,
|
|
33
|
+
sequence: registry.latestEntry.sequence,
|
|
34
|
+
payer: registry.latestEntry.payer
|
|
35
|
+
} : null,
|
|
36
|
+
totalEntries: registry.entries.length
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
} catch (error) {
|
|
40
|
+
return {
|
|
41
|
+
status: "error",
|
|
42
|
+
message: error instanceof Error ? error.message : "Unknown error"
|
|
43
|
+
};
|
|
44
|
+
}
|
|
40
45
|
}
|
|
41
46
|
}
|
|
42
47
|
export {
|
|
43
|
-
|
|
48
|
+
QueryDynamicRegistryTool
|
|
44
49
|
};
|
|
45
50
|
//# sourceMappingURL=standards-agent-kit.es31.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-agent-kit.es31.js","sources":["../../src/tools/
|
|
1
|
+
{"version":3,"file":"standards-agent-kit.es31.js","sources":["../../src/tools/hcs6/QueryDynamicRegistryTool.ts"],"sourcesContent":["import { z } from 'zod';\nimport { BaseHCS6QueryTool } from './base-hcs6-tools';\nimport { HCS6QueryToolParams } from './hcs6-tool-params';\nimport type { TransactionResponse } from 'hedera-agent-kit';\n\n/**\n * Schema for querying a dynamic registry\n */\nconst QueryDynamicRegistrySchema = z.object({\n topicId: z.string()\n .describe('The registry topic ID to query'),\n limit: z.number()\n .optional()\n .default(100)\n .describe('Maximum number of entries to retrieve'),\n order: z.enum(['asc', 'desc'])\n .optional()\n .default('desc')\n .describe('Order of entries (desc shows latest first)'),\n skip: z.number()\n .optional()\n .describe('Number of entries to skip'),\n});\n\nexport type QueryDynamicRegistryInput = z.infer<typeof QueryDynamicRegistrySchema>;\n\n/**\n * Tool for querying HCS-6 dynamic registries\n */\nexport class QueryDynamicRegistryTool extends BaseHCS6QueryTool<typeof QueryDynamicRegistrySchema> {\n name = 'queryDynamicRegistry';\n description = 'Query a dynamic registry to get the current state of a dynamic hashinal';\n schema = QueryDynamicRegistrySchema;\n\n constructor(params: HCS6QueryToolParams) {\n super(params);\n }\n\n protected async _call(\n params: QueryDynamicRegistryInput\n ): Promise<TransactionResponse> {\n try {\n const registry = await this.hcs6Builder.getRegistry(params.topicId, {\n limit: params.limit,\n order: params.order,\n skip: params.skip,\n });\n\n return {\n status: 'success',\n data: {\n topicId: registry.topicId,\n registryType: 'NON_INDEXED',\n ttl: registry.ttl,\n latestEntry: registry.latestEntry ? {\n topicId: registry.latestEntry.message.t_id,\n timestamp: registry.latestEntry.timestamp,\n memo: registry.latestEntry.message.m,\n sequence: registry.latestEntry.sequence,\n payer: registry.latestEntry.payer,\n } : null,\n totalEntries: registry.entries.length,\n },\n };\n } catch (error) {\n return {\n status: 'error',\n message: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n}"],"names":[],"mappings":";;AAQA,MAAM,6BAA6B,EAAE,OAAO;AAAA,EAC1C,SAAS,EAAE,SACR,SAAS,gCAAgC;AAAA,EAC5C,OAAO,EAAE,OAAA,EACN,SAAA,EACA,QAAQ,GAAG,EACX,SAAS,uCAAuC;AAAA,EACnD,OAAO,EAAE,KAAK,CAAC,OAAO,MAAM,CAAC,EAC1B,SAAA,EACA,QAAQ,MAAM,EACd,SAAS,4CAA4C;AAAA,EACxD,MAAM,EAAE,OAAA,EACL,SAAA,EACA,SAAS,2BAA2B;AACzC,CAAC;AAOM,MAAM,iCAAiC,kBAAqD;AAAA,EAKjG,YAAY,QAA6B;AACvC,UAAM,MAAM;AALd,SAAA,OAAO;AACP,SAAA,cAAc;AACd,SAAA,SAAS;AAAA,EAIT;AAAA,EAEA,MAAgB,MACd,QAC8B;AAC9B,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,YAAY,YAAY,OAAO,SAAS;AAAA,QAClE,OAAO,OAAO;AAAA,QACd,OAAO,OAAO;AAAA,QACd,MAAM,OAAO;AAAA,MAAA,CACd;AAED,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,UACJ,SAAS,SAAS;AAAA,UAClB,cAAc;AAAA,UACd,KAAK,SAAS;AAAA,UACd,aAAa,SAAS,cAAc;AAAA,YAClC,SAAS,SAAS,YAAY,QAAQ;AAAA,YACtC,WAAW,SAAS,YAAY;AAAA,YAChC,MAAM,SAAS,YAAY,QAAQ;AAAA,YACnC,UAAU,SAAS,YAAY;AAAA,YAC/B,OAAO,SAAS,YAAY;AAAA,UAAA,IAC1B;AAAA,UACJ,cAAc,SAAS,QAAQ;AAAA,QAAA;AAAA,MACjC;AAAA,IAEJ,SAAS,OAAO;AACd,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,MAAA;AAAA,IAEtD;AAAA,EACF;AACF;"}
|