UNPKG

claude-flow

Version:

Ruflo - Enterprise AI agent orchestration for Claude Code. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration

200 lines 4.75 kB
/** * V3 Agent Interfaces * Domain-Driven Design - Agent Lifecycle Bounded Context */ /** * Agent status in the system */ export type AgentStatus = 'spawning' | 'active' | 'idle' | 'busy' | 'error' | 'terminated'; /** * Agent type classification */ export type AgentType = 'coder' | 'reviewer' | 'tester' | 'researcher' | 'planner' | 'architect' | 'coordinator' | 'security' | 'performance' | 'custom'; /** * Agent capability declaration */ export interface IAgentCapability { name: string; level: 'basic' | 'intermediate' | 'advanced' | 'expert'; description?: string; } /** * Agent configuration for spawning */ export interface IAgentConfig { readonly id: string; readonly name: string; readonly type: AgentType | string; capabilities: string[]; maxConcurrentTasks: number; priority: number; timeout?: number; retryPolicy?: { maxRetries: number; backoffMs: number; backoffMultiplier: number; }; resources?: { maxMemoryMb?: number; maxCpuPercent?: number; }; metadata?: Record<string, unknown>; } /** * Core agent entity */ export interface IAgent { readonly id: string; readonly name: string; readonly type: AgentType | string; readonly config: IAgentConfig; readonly createdAt: Date; status: AgentStatus; currentTaskCount: number; lastActivity: Date; sessionId?: string; terminalId?: string; memoryBankId?: string; metrics?: { tasksCompleted: number; tasksFailed: number; avgTaskDuration: number; errorCount: number; uptime: number; }; health?: { status: 'healthy' | 'degraded' | 'unhealthy'; lastCheck: Date; issues?: string[]; }; } /** * Agent session for tracking active work */ export interface IAgentSession { readonly id: string; readonly agentId: string; readonly startTime: Date; status: 'active' | 'idle' | 'terminated'; terminalId: string; memoryBankId: string; lastActivity: Date; endTime?: Date; metadata?: Record<string, unknown>; } /** * Agent pool for managing multiple agents */ export interface IAgentPool { /** * Add an agent to the pool */ add(agent: IAgent): void; /** * Remove an agent from the pool */ remove(agentId: string): boolean; /** * Get an agent by ID */ get(agentId: string): IAgent | undefined; /** * Get all agents in the pool */ getAll(): IAgent[]; /** * Get agents by status */ getByStatus(status: AgentStatus): IAgent[]; /** * Get agents by type */ getByType(type: AgentType | string): IAgent[]; /** * Get available agents (can accept more tasks) */ getAvailable(): IAgent[]; /** * Get pool size */ size(): number; /** * Check if pool has capacity */ hasCapacity(maxSize: number): boolean; /** * Clear all agents */ clear(): void; } /** * Agent lifecycle manager interface */ export interface IAgentLifecycleManager { /** * Spawn a new agent */ spawn(config: IAgentConfig): Promise<IAgent>; /** * Spawn multiple agents in parallel */ spawnBatch(configs: IAgentConfig[]): Promise<Map<string, IAgent>>; /** * Terminate an agent */ terminate(agentId: string, reason?: string): Promise<void>; /** * Terminate all agents */ terminateAll(reason?: string): Promise<void>; /** * Restart an agent */ restart(agentId: string): Promise<IAgent>; /** * Update agent configuration */ updateConfig(agentId: string, config: Partial<IAgentConfig>): Promise<void>; /** * Get agent by ID */ getAgent(agentId: string): IAgent | undefined; /** * Get all agents */ getAllAgents(): IAgent[]; /** * Get active agents count */ getActiveCount(): number; /** * Check agent health */ checkHealth(agentId: string): Promise<IAgent['health']>; } /** * Agent registry for type definitions */ export interface IAgentRegistry { /** * Register an agent type with default config */ register(type: string, defaultConfig: Partial<IAgentConfig>): void; /** * Unregister an agent type */ unregister(type: string): boolean; /** * Get default config for a type */ getDefaultConfig(type: string): Partial<IAgentConfig> | undefined; /** * Get all registered types */ getRegisteredTypes(): string[]; /** * Check if a type is registered */ isRegistered(type: string): boolean; } //# sourceMappingURL=agent.interface.d.ts.map