UNPKG

@hashgraphonline/conversational-agent

Version:

Hashgraph Online conversational AI agent implementing HCS-10 communication, HCS-2 registries, and content inscription on Hedera

104 lines (102 loc) 3.51 kB
import { BaseMessage } from '@langchain/core/messages'; import { StructuredTool } from '@langchain/core/tools'; import { TransactionReceipt } from '@hashgraph/sdk'; import { HederaAgentKit, ServerSigner, TokenUsageCallbackHandler, TokenUsage, BasePlugin, CostCalculation } from 'hedera-agent-kit'; import { AIProvider, VercelAIProvider, BAMLProvider } from './providers'; import { Logger } from '@hashgraphonline/standards-sdk'; import { MCPServerConfig, MCPConnectionStatus } from './mcp/types'; export interface ToolFilterConfig { namespaceWhitelist?: string[]; toolBlacklist?: string[]; toolPredicate?: (tool: StructuredTool) => boolean; } export type ExecutionMode = 'direct' | 'bytes'; export type OperationalMode = 'autonomous' | 'returnBytes'; export interface HederaAgentConfiguration { signer: ServerSigner; execution?: { mode?: ExecutionMode; operationalMode?: OperationalMode; userAccountId?: string; scheduleUserTransactions?: boolean; scheduleUserTransactionsInBytesMode?: boolean; }; ai?: { provider?: AIProvider; llm?: unknown; apiKey?: string; modelName?: string; temperature?: number; }; filtering?: ToolFilterConfig; messaging?: { systemPreamble?: string; systemPostamble?: string; conciseMode?: boolean; }; extensions?: { plugins?: BasePlugin[]; mirrorConfig?: Record<string, unknown>; modelCapability?: string; }; mcp?: { servers?: MCPServerConfig[]; autoConnect?: boolean; }; debug?: { verbose?: boolean; silent?: boolean; }; } export interface ConversationContext { messages: BaseMessage[]; metadata?: Record<string, unknown>; } export interface ChatResponse { output: string; message?: string; transactionBytes?: string; receipt?: TransactionReceipt | object; scheduleId?: string; transactionId?: string; notes?: string[]; error?: string; intermediateSteps?: unknown; rawToolOutput?: unknown; tokenUsage?: TokenUsage; cost?: CostCalculation; metadata?: Record<string, unknown>; tool_calls?: Array<{ id: string; name: string; args: Record<string, unknown>; output?: string; }>; [key: string]: unknown; } export interface UsageStats extends TokenUsage { cost: CostCalculation; } export declare abstract class BaseAgent { protected config: HederaAgentConfiguration; protected logger: Logger; protected agentKit: HederaAgentKit | undefined; protected tools: StructuredTool[]; protected initialized: boolean; protected tokenTracker: TokenUsageCallbackHandler | undefined; constructor(config: HederaAgentConfiguration); abstract boot(): Promise<void>; abstract chat(message: string, context?: ConversationContext): Promise<ChatResponse>; abstract shutdown(): Promise<void>; abstract switchMode(mode: OperationalMode): void; abstract getUsageStats(): UsageStats; abstract getUsageLog(): UsageStats[]; abstract clearUsageStats(): void; abstract connectMCPServers(): Promise<void>; abstract getMCPConnectionStatus(): Map<string, MCPConnectionStatus>; getCore(): HederaAgentKit | undefined; protected filterTools(tools: StructuredTool[]): StructuredTool[]; protected buildSystemPrompt(): string; isReady(): boolean; } export type { AIProvider, VercelAIProvider, BAMLProvider };