/** * Multi-Agent Constants * * Configuration defaults, messages, and descriptions for multi-agent execution. */ import type { AgentExecutionMode, ConflictStrategy } from "@/types/multi-agent"; /** * Default configuration values */ export const MULTI_AGENT_DEFAULTS = { maxConcurrent: 3, timeout: 300000, // 5 minutes executionMode: "adaptive" as AgentExecutionMode, conflictStrategy: "serialize" as ConflictStrategy, abortOnFirstError: false, conflictCheckInterval: 1000, // 1 second maxRetries: 2, } as const; /** * Resource limits */ export const MULTI_AGENT_LIMITS = { maxAgentsPerRequest: 10, maxConcurrentRequests: 3, maxQueuedAgents: 20, maxConflictsBeforeAbort: 5, } as const; /** * Execution mode descriptions */ export const EXECUTION_MODE_DESCRIPTIONS: Record = { sequential: "Execute agents one after another, safest for file modifications", parallel: "Execute all agents concurrently, fastest but may cause conflicts", adaptive: "Start parallel, automatically serialize when conflicts detected", } as const; /** * Conflict strategy descriptions */ export const CONFLICT_STRATEGY_DESCRIPTIONS: Record = { serialize: "Wait for conflicting agent to complete before proceeding", "abort-newer": "Abort the agent that started later when conflict detected", "merge-results": "Attempt to merge changes from both agents", isolated: "Each agent works in isolated context, merge at end", } as const; /** * Error messages */ export const MULTI_AGENT_ERRORS = { MAX_AGENTS_EXCEEDED: (max: number) => `Cannot spawn more than ${max} agents in a single request`, MAX_CONCURRENT_EXCEEDED: (max: number) => `Maximum concurrent agents (${max}) reached`, AGENT_NOT_FOUND: (name: string) => `Agent "${name}" not found in registry`, AGENT_ALREADY_RUNNING: (id: string) => `Agent "${id}" is already running`, EXECUTION_TIMEOUT: (agentId: string, timeout: number) => `Agent "${agentId}" timed out after ${timeout}ms`, CONFLICT_RESOLUTION_FAILED: (filePath: string) => `Failed to resolve conflict for file: ${filePath}`, EXECUTION_ABORTED: "Execution aborted by user", INVALID_EXECUTION_MODE: (mode: string) => `Invalid execution mode: ${mode}`, INVALID_CONFLICT_STRATEGY: (strategy: string) => `Invalid conflict strategy: ${strategy}`, TOO_MANY_CONFLICTS: (count: number) => `Too many conflicts detected (${count}), aborting execution`, } as const; /** * Status messages */ export const MULTI_AGENT_MESSAGES = { STARTING: "Starting multi-agent execution", AGENT_SPAWNED: (name: string) => `Spawned agent: ${name}`, AGENT_COMPLETED: (name: string) => `Agent completed: ${name}`, AGENT_FAILED: (name: string, error: string) => `Agent failed: ${name} - ${error}`, CONFLICT_DETECTED: (file: string, agents: string[]) => `Conflict detected on ${file} between agents: ${agents.join(", ")}`, CONFLICT_RESOLVED: (file: string, strategy: string) => `Conflict resolved for ${file} using ${strategy}`, EXECUTION_COMPLETE: (success: number, failed: number) => `Execution complete: ${success} succeeded, ${failed} failed`, WAITING_FOR_CONFLICT: (agentId: string) => `Agent ${agentId} waiting for conflict resolution`, } as const; /** * Agent ID generation prefix */ export const AGENT_ID_PREFIX = "agent_"; /** * Request ID generation prefix */ export const REQUEST_ID_PREFIX = "req_"; /** * File lock constants */ export const FILE_LOCK = { acquireTimeout: 5000, // 5 seconds retryInterval: 100, // 100ms maxRetries: 50, } as const;