start method

Future<void> start({
  1. int workerCount = 2,
})

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());
}