@hashgraphonline/conversational-agent
Version:
Hashgraph Online conversational AI agent implementing HCS-10 communication, HCS-2 registries, and content inscription on Hedera
108 lines (97 loc) • 2.61 kB
text/typescript
import {
GenericPluginContext,
HederaTool,
BasePlugin,
HederaAgentKit,
} from 'hedera-agent-kit';
import {
HCS2Builder,
CreateRegistryTool,
RegisterEntryTool,
UpdateEntryTool,
DeleteEntryTool,
MigrateRegistryTool,
QueryRegistryTool,
} from '@hashgraphonline/standards-agent-kit';
/**
* Plugin providing HCS-2 registry management tools
*/
export class HCS2Plugin extends BasePlugin {
id = 'hcs-2';
name = 'HCS-2 Plugin';
description =
'HCS-2 registry management tools for decentralized registries on Hedera';
version = '1.0.0';
author = 'Hashgraph Online';
namespace = 'hcs2';
private tools: HederaTool[] = [];
override async initialize(context: GenericPluginContext): Promise<void> {
await super.initialize(context);
const hederaKit = context.config.hederaKit as HederaAgentKit;
if (!hederaKit) {
this.context.logger.warn(
'HederaKit not found in context. HCS-2 tools will not be available.'
);
return;
}
try {
this.initializeTools();
this.context.logger.info(
'HCS-2 Plugin initialized successfully'
);
} catch (error) {
this.context.logger.error(
'Failed to initialize HCS-2 plugin:',
error
);
}
}
private initializeTools(): void {
const hederaKit = this.context.config.hederaKit as HederaAgentKit;
if (!hederaKit) {
throw new Error('HederaKit not found in context config');
}
const hcs2Builder = new HCS2Builder(hederaKit);
this.tools = [
new CreateRegistryTool({
hederaKit: hederaKit,
hcs2Builder: hcs2Builder,
logger: this.context.logger,
}),
new RegisterEntryTool({
hederaKit: hederaKit,
hcs2Builder: hcs2Builder,
logger: this.context.logger,
}),
new UpdateEntryTool({
hederaKit: hederaKit,
hcs2Builder: hcs2Builder,
logger: this.context.logger,
}),
new DeleteEntryTool({
hederaKit: hederaKit,
hcs2Builder: hcs2Builder,
logger: this.context.logger,
}),
new MigrateRegistryTool({
hederaKit: hederaKit,
hcs2Builder: hcs2Builder,
logger: this.context.logger,
}),
new QueryRegistryTool({
hederaKit: hederaKit,
hcs2Builder: hcs2Builder,
logger: this.context.logger,
}),
];
}
getTools(): HederaTool[] {
return this.tools;
}
override async cleanup(): Promise<void> {
this.tools = [];
if (this.context?.logger) {
this.context.logger.info('HCS-2 Plugin cleaned up');
}
}
}