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
186 lines • 6.04 kB
JavaScript
/**
* Configuration Adapter
* Converts between SystemConfig and V3Config types
*/
/**
* Convert SystemConfig to V3Config (CLI-specific format)
*/
export function systemConfigToV3Config(systemConfig) {
return {
version: '3.0.0',
projectRoot: systemConfig.orchestrator?.session?.dataDir || process.cwd(),
// Agent configuration
agents: {
defaultType: 'coder',
autoSpawn: false, // Not in SystemConfig
maxConcurrent: systemConfig.orchestrator?.lifecycle?.maxConcurrentAgents ?? 15,
timeout: systemConfig.orchestrator?.lifecycle?.spawnTimeout ?? 300000,
providers: [],
},
// Swarm configuration
swarm: {
topology: normalizeTopology(systemConfig.swarm?.topology),
maxAgents: systemConfig.swarm?.maxAgents ?? 15,
autoScale: systemConfig.swarm?.autoScale?.enabled ?? false,
coordinationStrategy: systemConfig.swarm?.coordination?.consensusRequired ? 'consensus' : 'leader',
healthCheckInterval: systemConfig.swarm?.coordination?.timeoutMs ?? 10000,
},
// Memory configuration
memory: {
backend: normalizeMemoryBackend(systemConfig.memory?.type),
persistPath: systemConfig.memory?.path || './data/memory',
cacheSize: systemConfig.memory?.maxSize ?? 1000000,
enableHNSW: systemConfig.memory?.agentdb?.indexType === 'hnsw',
vectorDimension: systemConfig.memory?.agentdb?.dimensions ?? 1536,
},
// MCP configuration
mcp: {
serverHost: systemConfig.mcp?.transport?.host || 'localhost',
serverPort: systemConfig.mcp?.transport?.port ?? 3000,
autoStart: false, // Not in SystemConfig
transportType: systemConfig.mcp?.transport?.type || 'stdio',
tools: [], // Not in SystemConfig
},
// CLI preferences
cli: {
colorOutput: true,
interactive: true,
verbosity: 'normal',
outputFormat: 'text',
progressStyle: 'spinner',
},
// Hooks configuration
hooks: {
enabled: false,
autoExecute: false,
hooks: [],
},
};
}
/**
* Convert V3Config to SystemConfig
*/
export function v3ConfigToSystemConfig(v3Config) {
return {
orchestrator: {
lifecycle: {
maxConcurrentAgents: v3Config.agents.maxConcurrent,
spawnTimeout: v3Config.agents.timeout,
terminateTimeout: 10000,
maxSpawnRetries: 3,
},
session: {
dataDir: v3Config.projectRoot,
persistSessions: true,
sessionRetentionMs: 3600000,
},
health: {
checkInterval: v3Config.swarm.healthCheckInterval,
historyLimit: 100,
degradedThreshold: 1,
unhealthyThreshold: 2,
},
},
swarm: {
topology: denormalizeTopology(v3Config.swarm.topology),
maxAgents: v3Config.swarm.maxAgents,
autoScale: {
enabled: v3Config.swarm.autoScale,
minAgents: 1,
maxAgents: v3Config.swarm.maxAgents,
scaleUpThreshold: 0.8,
scaleDownThreshold: 0.3,
},
coordination: {
consensusRequired: v3Config.swarm.coordinationStrategy === 'consensus',
timeoutMs: v3Config.swarm.healthCheckInterval,
retryPolicy: {
maxRetries: 3,
backoffMs: 500,
},
},
communication: {
protocol: 'events',
batchSize: 10,
flushIntervalMs: 100,
},
},
memory: {
type: denormalizeMemoryBackend(v3Config.memory.backend),
path: v3Config.memory.persistPath,
maxSize: v3Config.memory.cacheSize,
agentdb: {
dimensions: v3Config.memory.vectorDimension,
indexType: v3Config.memory.enableHNSW ? 'hnsw' : 'flat',
efConstruction: 200,
m: 16,
quantization: 'none',
},
},
mcp: {
name: 'claude-flow',
version: '3.0.0',
transport: {
type: v3Config.mcp.transportType,
host: v3Config.mcp.serverHost,
port: v3Config.mcp.serverPort,
},
capabilities: {
tools: true,
resources: true,
prompts: true,
logging: true,
},
},
};
}
/**
* Normalize topology from SystemConfig to V3Config
*/
function normalizeTopology(topology) {
switch (topology) {
case 'hierarchical':
case 'mesh':
case 'ring':
case 'star':
case 'hybrid':
case 'hierarchical-mesh':
return topology;
case 'adaptive':
return 'hybrid';
default:
return 'hierarchical';
}
}
/**
* Denormalize topology from V3Config to SystemConfig
*/
function denormalizeTopology(topology) {
if (topology === 'hybrid') {
return 'hierarchical-mesh';
}
return topology;
}
/**
* Normalize memory backend from SystemConfig to V3Config
*/
function normalizeMemoryBackend(backend) {
switch (backend) {
case 'memory':
case 'sqlite':
case 'agentdb':
case 'hybrid':
return backend;
case 'redis':
return 'memory'; // Redis maps to memory for CLI purposes
default:
return 'hybrid';
}
}
/**
* Denormalize memory backend from V3Config to SystemConfig
*/
function denormalizeMemoryBackend(backend) {
return backend;
}
//# sourceMappingURL=config-adapter.js.map