UNPKG

claude-flow-multilang

Version:

Revolutionary multilingual AI orchestration framework with cultural awareness and DDD architecture

1,148 lines (945 loc) 26.2 kB
/** * Comprehensive types and interfaces for the swarm system */ import { EventEmitter } from 'node:events'; // ===== CORE SWARM TYPES ===== export interface SwarmId { id: string; timestamp: number; namespace: string; } export interface AgentId { id: string; swarmId: string; type: AgentType; instance: number; } export interface TaskId { id: string; swarmId: string; sequence: number; priority: number; } // ===== AGENT TYPES ===== export type AgentType = | 'coordinator' // Orchestrates and manages other agents | 'researcher' // Performs research and data gathering | 'coder' // Writes and maintains code | 'analyst' // Analyzes data and generates insights | 'architect' // Designs system architecture and solutions | 'tester' // Tests and validates functionality | 'reviewer' // Reviews and validates work | 'optimizer' // Optimizes performance and efficiency | 'documenter' // Creates and maintains documentation | 'monitor' // Monitors system health and performance | 'specialist' // Domain-specific specialized agent // Maestro-specific agent types | 'design-architect' // UI/UX and component design | 'system-architect' // System-level architecture design | 'task-planner' // Project management and task breakdown | 'developer' // Full-stack development and implementation | 'requirements-engineer' // Requirements analysis and documentation | 'steering-author'; // Governance and steering documentation export type AgentStatus = | 'initializing' // Agent is starting up | 'idle' // Available for tasks | 'busy' // Currently executing task | 'paused' // Temporarily unavailable | 'error' // In error state | 'offline' // Not available | 'terminating' // Shutting down | 'terminated'; // Shut down export interface AgentCapabilities { // Core capabilities codeGeneration: boolean; codeReview: boolean; testing: boolean; documentation: boolean; research: boolean; analysis: boolean; // Communication capabilities webSearch: boolean; apiIntegration: boolean; fileSystem: boolean; terminalAccess: boolean; // Specialized capabilities languages: string[]; // Programming languages frameworks: string[]; // Frameworks and libraries domains: string[]; // Domain expertise tools: string[]; // Available tools // Resource limits maxConcurrentTasks: number; maxMemoryUsage: number; maxExecutionTime: number; // Performance characteristics reliability: number; // 0-1 reliability score speed: number; // Relative speed rating quality: number; // Quality rating } export interface AgentMetrics { // Performance metrics tasksCompleted: number; tasksFailed: number; averageExecutionTime: number; successRate: number; // Resource usage cpuUsage: number; memoryUsage: number; diskUsage: number; networkUsage: number; // Quality metrics codeQuality: number; testCoverage: number; bugRate: number; userSatisfaction: number; // Time tracking totalUptime: number; lastActivity: Date; responseTime: number; } export interface AgentState { id: AgentId; name: string; type: AgentType; status: AgentStatus; capabilities: AgentCapabilities; metrics: AgentMetrics; // Current state currentTask?: TaskId; workload: number; // 0-1 current workload health: number; // 0-1 health score // Configuration config: AgentConfig; environment: AgentEnvironment; // Communication endpoints: string[]; lastHeartbeat: Date; // History taskHistory: TaskId[]; errorHistory: AgentError[]; // Relationships parentAgent?: AgentId; childAgents: AgentId[]; collaborators: AgentId[]; } export interface AgentConfig { // Behavior settings autonomyLevel: number; // 0-1 how autonomous the agent is learningEnabled: boolean; adaptationEnabled: boolean; // Resource limits maxTasksPerHour: number; maxConcurrentTasks: number; timeoutThreshold: number; // Communication settings reportingInterval: number; heartbeatInterval: number; // Security settings permissions: string[]; trustedAgents: AgentId[]; // Specialization expertise: Record<string, number>; preferences: Record<string, any>; } export interface AgentEnvironment { // Runtime environment runtime: 'deno' | 'node' | 'claude' | 'browser'; version: string; // Available resources workingDirectory: string; tempDirectory: string; logDirectory: string; // Network configuration apiEndpoints: Record<string, string>; credentials: Record<string, string>; // Tool access availableTools: string[]; toolConfigs: Record<string, any>; } export interface AgentError { timestamp: Date; type: string; message: string; stack?: string; context: Record<string, any>; severity: 'low' | 'medium' | 'high' | 'critical'; resolved: boolean; } // ===== TASK TYPES ===== export type TaskType = | 'research' // Information gathering and research | 'analysis' // Data analysis and insights | 'coding' // Code generation and modification | 'testing' // Test creation and execution | 'review' // Code and content review | 'documentation' // Documentation creation | 'deployment' // Deployment and operations | 'monitoring' // System monitoring | 'coordination' // Cross-agent coordination | 'communication' // External communication | 'maintenance' // System maintenance | 'optimization' // Performance optimization | 'validation' // Validation and verification | 'integration' // System integration | 'custom' // Custom task type // Analyst-specific task types | 'data-analysis' | 'performance-analysis' | 'statistical-analysis' | 'visualization' | 'predictive-modeling' | 'anomaly-detection' | 'trend-analysis' | 'business-intelligence' | 'quality-analysis' | 'system-design' | 'architecture-review' | 'api-design' | 'cloud-architecture' | 'microservices-design' | 'security-architecture' | 'scalability-design' | 'database-architecture' | 'code-generation' | 'code-review' | 'refactoring' | 'debugging' | 'api-development' | 'database-design' | 'performance-optimization' | 'task-orchestration' | 'progress-tracking' | 'resource-allocation' | 'workflow-management' | 'team-coordination' | 'status-reporting' | 'fact-check' | 'literature-review' | 'market-analysis' | 'unit-testing' | 'integration-testing' | 'e2e-testing' | 'performance-testing' | 'security-testing' | 'api-testing' | 'test-automation' | 'test-analysis'; export type TaskStatus = | 'created' // Task has been created | 'queued' // Waiting for assignment | 'assigned' // Assigned to an agent | 'running' // Currently being executed | 'paused' // Temporarily paused | 'completed' // Successfully completed | 'failed' // Failed with error | 'cancelled' // Cancelled by user/system | 'timeout' // Timed out | 'retrying' // Being retried | 'blocked'; // Blocked by dependencies export type TaskPriority = | 'critical' // Must be done immediately | 'high' // Important, do soon | 'normal' // Standard priority | 'low' // Can be delayed | 'background'; // Run when resources available export interface TaskRequirements { // Agent requirements agentType?: AgentType; capabilities: string[]; minReliability?: number; // Resource requirements estimatedDuration?: number; maxDuration?: number; memoryRequired?: number; cpuRequired?: number; // Environment requirements tools: string[]; permissions: string[]; environment?: Record<string, any>; // Quality requirements reviewRequired?: boolean; testingRequired?: boolean; documentationRequired?: boolean; } export interface TaskConstraints { // Time constraints deadline?: Date; startAfter?: Date; maxRetries?: number; maxTokens?: number; timeoutAfter?: number; // Resource constraints maxCost?: number; exclusiveAccess?: string[]; // Dependency constraints dependencies: TaskId[]; dependents: TaskId[]; conflicts: TaskId[]; // Agent constraints preferredAgents?: AgentId[]; excludedAgents?: AgentId[]; requiresHuman?: boolean; } export interface TaskResult { // Result data output: any; artifacts: Record<string, any>; metadata: Record<string, any>; // Quality metrics quality: number; completeness: number; accuracy: number; // Performance metrics executionTime: number; resourcesUsed: Record<string, number>; // Validation validated: boolean; validationResults?: any; // Follow-up recommendations?: string[]; nextSteps?: string[]; } export interface TaskDefinition { id: TaskId; type: TaskType; name: string; description: string; // Task specification requirements: TaskRequirements; constraints: TaskConstraints; priority: TaskPriority; // Input/Output input: any; expectedOutput?: any; // Execution details instructions: string; context: Record<string, any>; parameters?: Record<string, any>; examples?: any[]; // Tracking status: TaskStatus; createdAt: Date; updatedAt: Date; // Assignment assignedTo?: AgentId; assignedAt?: Date; // Execution startedAt?: Date; completedAt?: Date; result?: TaskResult; error?: TaskError; // History attempts: TaskAttempt[]; statusHistory: TaskStatusChange[]; } export interface TaskAttempt { attemptNumber: number; agent: AgentId; startedAt: Date; completedAt?: Date; status: TaskStatus; result?: TaskResult; error?: TaskError; resourcesUsed: Record<string, number>; } export interface TaskStatusChange { timestamp: Date; from: TaskStatus; to: TaskStatus; reason: string; triggeredBy: AgentId | 'system' | 'user'; } export interface TaskError { type: string; message: string; code?: string; stack?: string; context: Record<string, any>; recoverable: boolean; retryable: boolean; } // ===== SWARM TYPES ===== export type SwarmMode = | 'centralized' // Single coordinator manages all | 'distributed' // Multiple coordinators | 'hierarchical' // Tree structure of coordinators | 'mesh' // Peer-to-peer coordination | 'hybrid'; // Mixed coordination strategies export type SwarmStrategy = | 'auto' // Automatically determine approach | 'research' // Research-focused strategy | 'development' // Development-focused strategy | 'analysis' // Analysis-focused strategy | 'testing' // Testing-focused strategy | 'optimization' // Performance optimization | 'maintenance' // System maintenance | 'custom'; // Custom strategy export interface SwarmObjective { id: string; name: string; description: string; // Strategy strategy: SwarmStrategy; mode: SwarmMode; // Requirements requirements: SwarmRequirements; constraints: SwarmConstraints; // Decomposition tasks: TaskDefinition[]; dependencies: TaskDependency[]; // Execution status: SwarmStatus; progress: SwarmProgress; // Timeline createdAt: Date; startedAt?: Date; completedAt?: Date; deadline?: Date; // Results results?: SwarmResults; metrics: SwarmMetrics; } export interface SwarmRequirements { // Agent requirements minAgents: number; maxAgents: number; agentTypes: AgentType[]; // Resource requirements estimatedDuration: number; maxDuration: number; resourceBudget?: Record<string, number>; // Quality requirements qualityThreshold: number; reviewCoverage: number; testCoverage: number; // Performance requirements throughputTarget?: number; latencyTarget?: number; reliabilityTarget: number; } export interface SwarmConstraints { // Time constraints deadline?: Date; milestones: SwarmMilestone[]; // Resource constraints maxCost?: number; resourceLimits: Record<string, number>; // Quality constraints minQuality: number; requiredApprovals: string[]; // Operational constraints allowedFailures: number; recoveryTime: number; maintenanceWindows?: TimeWindow[]; } export interface SwarmMilestone { id: string; name: string; description: string; deadline: Date; requirements: string[]; dependencies: string[]; completed: boolean; completedAt?: Date; } export interface TimeWindow { start: Date; end: Date; type: 'maintenance' | 'blackout' | 'preferred'; description: string; } export type SwarmStatus = | 'planning' // Decomposing objectives into tasks | 'initializing' // Setting up agents and resources | 'executing' // Running tasks | 'paused' // Temporarily paused | 'completed' // Successfully completed | 'failed' // Failed to complete | 'cancelled' // Cancelled by user | 'recovering' // Recovering from failure | 'optimizing'; // Optimizing performance export interface SwarmProgress { // Task progress totalTasks: number; completedTasks: number; failedTasks: number; runningTasks: number; // Time progress estimatedCompletion: Date; timeRemaining: number; percentComplete: number; // Quality progress averageQuality: number; passedReviews: number; passedTests: number; // Resource usage resourceUtilization: Record<string, number>; costSpent: number; // Agent utilization activeAgents: number; idleAgents: number; busyAgents: number; } export interface SwarmResults { // Primary outputs outputs: Record<string, any>; artifacts: Record<string, any>; reports: Record<string, any>; // Quality metrics overallQuality: number; qualityByTask: Record<string, number>; // Performance metrics totalExecutionTime: number; resourcesUsed: Record<string, number>; efficiency: number; // Success metrics objectivesMet: string[]; objectivesFailed: string[]; // Recommendations improvements: string[]; nextActions: string[]; } export interface SwarmMetrics { // Performance metrics throughput: number; latency: number; efficiency: number; reliability: number; // Quality metrics averageQuality: number; defectRate: number; reworkRate: number; // Resource metrics resourceUtilization: Record<string, number>; costEfficiency: number; // Agent metrics agentUtilization: number; agentSatisfaction: number; collaborationEffectiveness: number; // Timeline metrics scheduleVariance: number; deadlineAdherence: number; } // ===== COORDINATION TYPES ===== export interface TaskDependency { task: TaskId; dependsOn: TaskId; type: DependencyType; constraint?: string; } export type DependencyType = | 'finish-start' // Must finish before next starts | 'start-start' // Must start before next starts | 'finish-finish' // Must finish before next finishes | 'start-finish' // Must start before next finishes | 'resource' // Shares a resource | 'data' // Data dependency | 'approval'; // Requires approval export interface CoordinationStrategy { name: string; description: string; // Agent selection agentSelection: AgentSelectionStrategy; // Task scheduling taskScheduling: TaskSchedulingStrategy; // Load balancing loadBalancing: LoadBalancingStrategy; // Fault tolerance faultTolerance: FaultToleranceStrategy; // Communication communication: CommunicationStrategy; } export type AgentSelectionStrategy = | 'capability-based' // Select based on capabilities | 'load-based' // Select based on current load | 'performance-based' // Select based on performance history | 'random' // Random selection | 'round-robin' // Round-robin selection | 'affinity-based' // Prefer agents with domain affinity | 'cost-based' // Select based on cost | 'hybrid'; // Combination of strategies export type TaskSchedulingStrategy = | 'fifo' // First in, first out | 'priority' // Priority-based scheduling | 'deadline' // Earliest deadline first | 'shortest-job' // Shortest job first | 'critical-path' // Critical path method | 'resource-aware' // Consider resource availability | 'adaptive'; // Adaptive scheduling export type LoadBalancingStrategy = | 'work-stealing' // Agents steal work from busy agents | 'work-sharing' // Work is proactively shared | 'centralized' // Central dispatcher | 'distributed' // Distributed load balancing | 'predictive' // Predict and prevent overload | 'reactive'; // React to overload conditions export type FaultToleranceStrategy = | 'retry' // Retry failed tasks | 'redundancy' // Redundant execution | 'checkpoint' // Checkpoint and recovery | 'circuit-breaker' // Circuit breaker pattern | 'bulkhead' // Isolate failures | 'timeout' // Timeout protection | 'graceful-degradation'; // Degrade gracefully export type CommunicationStrategy = | 'direct' // Direct agent-to-agent | 'broadcast' // Broadcast to all | 'publish-subscribe' // Pub/sub messaging | 'request-response' // Request/response | 'event-driven' // Event-driven communication | 'gossip' // Gossip protocol | 'hierarchical'; // Hierarchical communication // ===== MEMORY TYPES ===== export interface SwarmMemory { // Memory organization namespace: string; partitions: MemoryPartition[]; // Access control permissions: MemoryPermissions; // Persistence persistent: boolean; backupEnabled: boolean; // Synchronization distributed: boolean; consistency: ConsistencyLevel; // Performance cacheEnabled: boolean; compressionEnabled: boolean; } export interface MemoryPartition { id: string; name: string; type: MemoryType; // Data entries: MemoryEntry[]; // Configuration maxSize: number; ttl?: number; // Access patterns readOnly: boolean; shared: boolean; // Performance indexed: boolean; compressed: boolean; } export type MemoryType = | 'knowledge' // Knowledge base | 'state' // Agent state | 'cache' // Temporary cache | 'logs' // Log entries | 'results' // Task results | 'communication' // Communication history | 'configuration' // Configuration data | 'metrics'; // Performance metrics export interface MemoryEntry { id: string; key: string; value: any; // Metadata type: string; tags: string[]; // Ownership owner: AgentId; accessLevel: AccessLevel; // Lifecycle createdAt: Date; updatedAt: Date; expiresAt?: Date; // Versioning version: number; previousVersions?: MemoryEntry[]; // Relationships references: string[]; dependencies: string[]; } export type AccessLevel = | 'private' // Only owner can access | 'team' // Team members can access | 'swarm' // All swarm agents can access | 'public' // Publicly accessible | 'system'; // System-level access export interface MemoryPermissions { read: AccessLevel; write: AccessLevel; delete: AccessLevel; share: AccessLevel; } export type ConsistencyLevel = | 'strong' // Strong consistency | 'eventual' // Eventual consistency | 'weak' // Weak consistency | 'session'; // Session consistency // ===== MONITORING TYPES ===== export interface MonitoringConfig { // Collection settings metricsEnabled: boolean; loggingEnabled: boolean; tracingEnabled: boolean; // Collection intervals metricsInterval: number; heartbeatInterval: number; healthCheckInterval: number; // Retention settings retentionPeriod: number; maxLogSize: number; maxMetricPoints: number; // Alerting alertingEnabled: boolean; alertThresholds: Record<string, number>; // Export settings exportEnabled: boolean; exportFormat: string; exportDestination: string; } export interface SystemMetrics { timestamp: Date; // System metrics cpuUsage: number; memoryUsage: number; diskUsage: number; networkUsage: number; // Swarm metrics activeSwarms: number; totalAgents: number; activeAgents: number; totalTasks: number; runningTasks: number; // Performance metrics throughput: number; latency: number; errorRate: number; successRate: number; // Resource metrics resourceUtilization: Record<string, number>; queueLengths: Record<string, number>; } export interface Alert { id: string; timestamp: Date; level: AlertLevel; type: AlertType; message: string; // Context source: string; context: Record<string, any>; // Handling acknowledged: boolean; resolved: boolean; assignedTo?: string; // Escalation escalationLevel: number; escalatedAt?: Date; } export type AlertLevel = | 'info' // Informational | 'warning' // Warning condition | 'error' // Error condition | 'critical'; // Critical condition export type AlertType = | 'system' // System-level alert | 'performance' // Performance issue | 'resource' // Resource issue | 'security' // Security issue | 'agent' // Agent-specific issue | 'task' // Task-specific issue | 'swarm' // Swarm-level issue | 'custom'; // Custom alert type // ===== EVENT TYPES ===== export interface SwarmEvent { id: string; timestamp: Date; type: EventType; source: string; // Event data data: Record<string, any>; // Routing targets?: string[]; broadcast: boolean; // Processing processed: boolean; processedAt?: Date; // Correlation correlationId?: string; causationId?: string; } export type EventType = // Swarm events | 'swarm.created' | 'swarm.started' | 'swarm.paused' | 'swarm.resumed' | 'swarm.completed' | 'swarm.failed' | 'swarm.cancelled' // Agent events | 'agent.created' | 'agent.started' | 'agent.stopped' | 'agent.error' | 'agent.heartbeat' // Task events | 'task.created' | 'task.assigned' | 'task.started' | 'task.paused' | 'task.resumed' | 'task.completed' | 'task.failed' | 'task.cancelled' | 'task.retried' // Coordination events | 'coordination.load_balanced' | 'coordination.work_stolen' | 'coordination.agent_selected' | 'coordination.dependency_resolved' // System events | 'system.startup' | 'system.shutdown' | 'system.resource_limit' | 'system.performance_degradation' // Custom events | 'custom.user_defined'; // ===== INTERFACE EXTENSIONS ===== export interface SwarmEventEmitter extends EventEmitter { // Event emission emitSwarmEvent(event: SwarmEvent): boolean; emitSwarmEvents(events: SwarmEvent[]): boolean; // Event handling onSwarmEvent(type: EventType, handler: (event: SwarmEvent) => void): this; offSwarmEvent(type: EventType, handler: (event: SwarmEvent) => void): this; // Event filtering filterEvents(predicate: (event: SwarmEvent) => boolean): SwarmEvent[]; // Event correlation correlateEvents(correlationId: string): SwarmEvent[]; } // ===== UTILITY TYPES ===== export interface SwarmConfig { // Basic configuration name: string; description: string; version: string; // Operational settings mode: SwarmMode; strategy: SwarmStrategy; coordinationStrategy: CoordinationStrategy; // Resource limits maxAgents: number; maxTasks: number; maxDuration: number; taskTimeoutMinutes?: number; resourceLimits: Record<string, number>; // Quality settings qualityThreshold: number; reviewRequired: boolean; testingRequired: boolean; // Monitoring settings monitoring: MonitoringConfig; // Memory settings memory: SwarmMemory; // Security settings security: SecurityConfig; // Performance settings performance: PerformanceConfig; } export interface SecurityConfig { authenticationRequired: boolean; authorizationRequired: boolean; encryptionEnabled: boolean; // Access control defaultPermissions: string[]; adminRoles: string[]; // Audit auditEnabled: boolean; auditLevel: string; // Validation inputValidation: boolean; outputSanitization: boolean; } export interface PerformanceConfig { // Concurrency maxConcurrency: number; defaultTimeout: number; // Caching cacheEnabled: boolean; cacheSize: number; cacheTtl: number; // Optimization optimizationEnabled: boolean; adaptiveScheduling: boolean; predictiveLoading: boolean; // Resource management resourcePooling: boolean; connectionPooling: boolean; memoryPooling: boolean; } export interface ValidationResult { valid: boolean; errors: ValidationError[]; warnings: ValidationWarning[]; // Context validatedAt: Date; validator: string; context: Record<string, any>; } export interface ValidationError { field: string; message: string; code: string; severity: 'error' | 'critical'; } export interface ValidationWarning { field: string; message: string; code: string; recommendation: string; } // ===== TYPE GUARDS ===== export function isAgentId(obj: any): obj is AgentId { return obj && typeof obj.id === 'string' && typeof obj.swarmId === 'string'; } export function isTaskId(obj: any): obj is TaskId { return obj && typeof obj.id === 'string' && typeof obj.swarmId === 'string'; } export function isSwarmEvent(obj: any): obj is SwarmEvent { return obj && typeof obj.id === 'string' && typeof obj.type === 'string'; } export function isTaskDefinition(obj: any): obj is TaskDefinition { return obj && isTaskId(obj.id) && typeof obj.type === 'string'; } export function isAgentState(obj: any): obj is AgentState { return obj && isAgentId(obj.id) && typeof obj.status === 'string'; } // ===== CONSTANTS ===== export const SWARM_CONSTANTS = { // Timeouts DEFAULT_TASK_TIMEOUT: 5 * 60 * 1000, // 5 minutes DEFAULT_AGENT_TIMEOUT: 30 * 1000, // 30 seconds DEFAULT_HEARTBEAT_INTERVAL: 10 * 1000, // 10 seconds // Limits MAX_AGENTS_PER_SWARM: 100, MAX_TASKS_PER_AGENT: 10, MAX_RETRIES: 3, // Quality thresholds MIN_QUALITY_THRESHOLD: 0.7, DEFAULT_QUALITY_THRESHOLD: 0.8, HIGH_QUALITY_THRESHOLD: 0.9, // Performance targets DEFAULT_THROUGHPUT_TARGET: 10, // tasks per minute DEFAULT_LATENCY_TARGET: 1000, // milliseconds DEFAULT_RELIABILITY_TARGET: 0.95, // 95% // Resource limits DEFAULT_MEMORY_LIMIT: 512 * 1024 * 1024, // 512MB DEFAULT_CPU_LIMIT: 1.0, // 1 CPU core DEFAULT_DISK_LIMIT: 1024 * 1024 * 1024, // 1GB } as const; // ===== EXPORTS ===== export default { // Type exports are handled by TypeScript SWARM_CONSTANTS, // Utility functions isAgentId, isTaskId, isSwarmEvent, isTaskDefinition, isAgentState, };