start method
Starts the orchestrator with the specified number of workers.
Implementation
Future<void> start({int workerCount = 2}) async {
if (_isRunning) {
logger.warn('Orchestrator is already running.');
return;
}
final provider = await _llmService.getPreferredProvider();
if (provider == null) {
logger.err('No LLM provider configured. Cannot start orchestrator.');
return;
}
_isRunning = true;
logger.info('Spectra Multi-Agent Orchestrator starting...');
// Initialize Agents
_agents.add(MayorAgent(
id: 'Mayor-1',
provider: provider,
logger: logger,
orchestrator: this,
));
_agents.add(WitnessAgent(
id: 'Witness-1',
provider: provider,
logger: logger,
orchestrator: this,
));
for (var i = 1; i <= workerCount; i++) {
final worker = WorkerAgent(
id: 'Worker-$i',
provider: provider,
logger: logger,
onTaskCompleted: markTaskCompleted,
);
_agents.add(worker);
}
logger.success('Initialized ${_agents.length} agents.');
// Start the execution loop (proper async loop, not Timer.periodic)
unawaited(_runLoop());
}