pruneState method

void pruneState()

Implementation

void pruneState() {
  final stateFile = File('.spectra/STATE.md');
  if (!stateFile.existsSync()) return;

  final lines = stateFile.readAsLinesSync();
  if (lines.length > 200) {
    logger.info('STATE.md exceeds 200 lines. Pruning...');

    final timestamp = DateTime.now().millisecondsSinceEpoch;
    final historyDir = Directory('.spectra/history');
    if (!historyDir.existsSync()) {
      historyDir.createSync(recursive: true);
    }

    final archiveFile = File('.spectra/history/state-$timestamp.md');
    archiveFile.writeAsStringSync(lines.join('\n'));

    // Keep only the last 50 lines as context
    final prunedLines = lines.sublist(lines.length - 50);
    stateFile
        .writeAsStringSync('# STATE (Pruned)\n\n${prunedLines.join('\n')}');

    logger.success(
        'State pruned successfully. archived to ${archiveFile.path}');
  }
}