@hashgraphonline/standards-agent-kit
Version:
A modular SDK for building on-chain autonomous agents using Hashgraph Online Standards, including HCS-10 for agent discovery and communication.
72 lines (66 loc) • 2.16 kB
text/typescript
import { z } from 'zod';
import { BaseHCS6QueryTool } from './base-hcs6-tools';
import { HCS6QueryToolParams } from './hcs6-tool-params';
import type { TransactionResponse } from 'hedera-agent-kit';
/**
* Schema for querying a dynamic registry
*/
const QueryDynamicRegistrySchema = z.object({
topicId: z.string()
.describe('The registry topic ID to query'),
limit: z.number()
.optional()
.default(100)
.describe('Maximum number of entries to retrieve'),
order: z.enum(['asc', 'desc'])
.optional()
.default('desc')
.describe('Order of entries (desc shows latest first)'),
skip: z.number()
.optional()
.describe('Number of entries to skip'),
});
export type QueryDynamicRegistryInput = z.infer<typeof QueryDynamicRegistrySchema>;
/**
* Tool for querying HCS-6 dynamic registries
*/
export class QueryDynamicRegistryTool extends BaseHCS6QueryTool<typeof QueryDynamicRegistrySchema> {
name = 'queryDynamicRegistry';
description = 'Query a dynamic registry to get the current state of a dynamic hashinal';
schema = QueryDynamicRegistrySchema;
constructor(params: HCS6QueryToolParams) {
super(params);
}
protected async _call(
params: QueryDynamicRegistryInput
): Promise<TransactionResponse> {
try {
const registry = await this.hcs6Builder.getRegistry(params.topicId, {
limit: params.limit,
order: params.order,
skip: params.skip,
});
return {
status: 'success',
data: {
topicId: registry.topicId,
registryType: 'NON_INDEXED',
ttl: registry.ttl,
latestEntry: registry.latestEntry ? {
topicId: registry.latestEntry.message.t_id,
timestamp: registry.latestEntry.timestamp,
memo: registry.latestEntry.message.m,
sequence: registry.latestEntry.sequence,
payer: registry.latestEntry.payer,
} : null,
totalEntries: registry.entries.length,
},
};
} catch (error) {
return {
status: 'error',
message: error instanceof Error ? error.message : 'Unknown error',
};
}
}
}