run method
Runs this command.
The return value is wrapped in a Future if necessary and returned by
CommandRunner.runCommand.
Implementation
@override
Future<void> run() async {
final planFile = File('.spectra/PLAN.md');
if (!planFile.existsSync()) {
logger.err('PLAN.md not found. Run `spectra plan` first.');
return;
}
final content = planFile.readAsStringSync();
final taskDocs = _parseTasks(content);
if (taskDocs.isEmpty) {
logger.warn('No tasks found in PLAN.md.');
return;
}
final provider = await _llmService.getPreferredProvider();
if (provider == null) {
logger.err('No LLM provider configured.');
return;
}
logger.info('Executing ${taskDocs.length} tasks using ${provider.name}...');
for (final taskDoc in taskDocs) {
await _executeTask(taskDoc, provider);
}
// Prune state if it gets too large
_stateManager.pruneState();
logger.success('All tasks executed successfully!');
}