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

160 lines 6.23 kB
/** * V3 Configuration Schemas * Zod schemas for all configuration types */ import { z } from 'zod'; /** * Agent configuration schema */ export const AgentConfigSchema = z.object({ id: z.string().min(1), name: z.string().min(1), type: z.string().min(1), capabilities: z.array(z.string()).default([]), maxConcurrentTasks: z.number().int().min(1).default(5), priority: z.number().int().min(0).max(100).default(50), timeout: z.number().int().positive().optional(), retryPolicy: z.object({ maxRetries: z.number().int().min(0).default(3), backoffMs: z.number().int().positive().default(1000), backoffMultiplier: z.number().positive().default(2), }).optional(), resources: z.object({ maxMemoryMb: z.number().int().positive().optional(), maxCpuPercent: z.number().min(0).max(100).optional(), }).optional(), metadata: z.record(z.unknown()).optional(), }); /** * Task configuration schema */ export const TaskConfigSchema = z.object({ type: z.string().min(1), description: z.string().min(1), priority: z.number().int().min(0).max(100).default(50), timeout: z.number().int().positive().optional(), assignedAgent: z.string().optional(), input: z.record(z.unknown()).optional(), metadata: z.object({ requiredCapabilities: z.array(z.string()).optional(), retryCount: z.number().int().min(0).optional(), maxRetries: z.number().int().min(0).optional(), critical: z.boolean().optional(), parentTaskId: z.string().optional(), childTaskIds: z.array(z.string()).optional(), tags: z.array(z.string()).optional(), }).optional(), }); /** * Swarm configuration schema */ export const SwarmConfigSchema = z.object({ topology: z.enum(['hierarchical', 'mesh', 'ring', 'star', 'adaptive', 'hierarchical-mesh']), maxAgents: z.number().int().positive().default(20), autoScale: z.object({ enabled: z.boolean().default(false), minAgents: z.number().int().min(0).default(1), maxAgents: z.number().int().positive().default(20), scaleUpThreshold: z.number().min(0).max(1).default(0.8), scaleDownThreshold: z.number().min(0).max(1).default(0.3), }).optional(), coordination: z.object({ consensusRequired: z.boolean().default(false), timeoutMs: z.number().int().positive().default(10000), retryPolicy: z.object({ maxRetries: z.number().int().min(0).default(3), backoffMs: z.number().int().positive().default(500), }), }).optional(), communication: z.object({ protocol: z.enum(['events', 'messages', 'shared-memory']).default('events'), batchSize: z.number().int().positive().default(10), flushIntervalMs: z.number().int().positive().default(100), }).optional(), metadata: z.record(z.unknown()).optional(), }); /** * Memory configuration schema */ export const MemoryConfigSchema = z.object({ type: z.enum(['sqlite', 'agentdb', 'hybrid', 'redis', 'memory']).default('hybrid'), path: z.string().optional(), maxSize: z.number().int().positive().optional(), ttlMs: z.number().int().positive().optional(), sqlite: z.object({ filename: z.string().optional(), inMemory: z.boolean().default(false), wal: z.boolean().default(true), }).optional(), agentdb: z.object({ dimensions: z.number().int().positive().default(1536), indexType: z.enum(['hnsw', 'flat', 'ivf']).default('hnsw'), efConstruction: z.number().int().positive().default(200), m: z.number().int().positive().default(16), quantization: z.enum(['none', 'scalar', 'product']).default('none'), }).optional(), redis: z.object({ host: z.string().default('localhost'), port: z.number().int().positive().default(6379), password: z.string().optional(), db: z.number().int().min(0).default(0), keyPrefix: z.string().default('claude-flow:'), }).optional(), hybrid: z.object({ vectorThreshold: z.number().int().positive().default(100), }).optional(), }); /** * MCP server configuration schema */ export const MCPServerConfigSchema = z.object({ name: z.string().min(1).default('claude-flow'), version: z.string().min(1).default('3.0.0'), transport: z.object({ type: z.enum(['stdio', 'http', 'websocket']).default('stdio'), port: z.number().int().positive().optional(), host: z.string().optional(), path: z.string().optional(), }), capabilities: z.object({ tools: z.boolean().default(true), resources: z.boolean().default(true), prompts: z.boolean().default(true), logging: z.boolean().default(true), experimental: z.record(z.boolean()).optional(), }).optional(), }); /** * Orchestrator configuration schema */ export const OrchestratorConfigSchema = z.object({ session: z.object({ persistSessions: z.boolean().default(true), dataDir: z.string().default('./data'), sessionRetentionMs: z.number().int().positive().default(3600000), }), health: z.object({ checkInterval: z.number().int().positive().default(30000), historyLimit: z.number().int().positive().default(100), degradedThreshold: z.number().int().min(0).default(1), unhealthyThreshold: z.number().int().min(0).default(2), }), lifecycle: z.object({ maxConcurrentAgents: z.number().int().positive().default(20), spawnTimeout: z.number().int().positive().default(30000), terminateTimeout: z.number().int().positive().default(10000), maxSpawnRetries: z.number().int().min(0).default(3), }), }); /** * Full system configuration schema * Uses passthrough() to accept unknown extra keys from user configs * without failing validation (e.g., simple key-value pairs, custom fields). */ export const SystemConfigSchema = z.object({ orchestrator: OrchestratorConfigSchema, memory: MemoryConfigSchema.optional(), mcp: MCPServerConfigSchema.optional(), swarm: SwarmConfigSchema.optional(), }).passthrough(); //# sourceMappingURL=schema.js.map