execute method

  1. @override
Future<CommandResult> execute(
  1. String args,
  2. ToolUseContext context
)
override

Execute the command.

Implementation

@override
Future<CommandResult> execute(String args, ToolUseContext context) async {
  final buffer = StringBuffer();
  buffer.writeln('System Health Check');
  buffer.writeln('===================');
  buffer.writeln();

  // Check API key
  final hasApiKey = Platform.environment.containsKey('ANTHROPIC_API_KEY');
  buffer.writeln(_check('API Key', hasApiKey, 'Set ANTHROPIC_API_KEY'));

  // Check git
  final gitResult = await _runCommand('git', ['--version']);
  buffer.writeln(_check('Git', gitResult != null, 'Install git'));

  // Check .neomage directory
  final neomageDir = Directory('${context.cwd}/.neomage');
  final hasNeomageDir = await neomageDir.exists();
  buffer.writeln(_check('.neomage/ config', hasNeomageDir, 'Run /init'));

  // Check NEOMAGE.md
  final claudeMd = File('${context.cwd}/NEOMAGE.md');
  final hasNeomageMd = await claudeMd.exists();
  buffer.writeln(
    _check('NEOMAGE.md', hasNeomageMd, 'Run /init or create manually'),
  );

  // Check ripgrep
  final rgResult = await _runCommand('rg', ['--version']);
  buffer.writeln(
    _check('ripgrep (rg)', rgResult != null, 'brew install ripgrep'),
  );

  // Check node (for MCP)
  final nodeResult = await _runCommand('node', ['--version']);
  buffer.writeln(
    _check('Node.js (MCP)', nodeResult != null, 'Install Node.js'),
  );

  // Check gh CLI
  final ghResult = await _runCommand('gh', ['--version']);
  buffer.writeln(
    _check('GitHub CLI (gh)', ghResult != null, 'brew install gh'),
  );

  // Check jq
  final jqResult = await _runCommand('jq', ['--version']);
  buffer.writeln(_check('jq', jqResult != null, 'brew install jq'));

  buffer.writeln();

  // OS info
  buffer.writeln('Environment:');
  buffer.writeln(
    '  OS: ${Platform.operatingSystem} ${Platform.operatingSystemVersion}',
  );
  buffer.writeln('  Dart: ${Platform.version.split(' ').first}');
  buffer.writeln('  Shell: ${Platform.environment['SHELL'] ?? 'unknown'}');
  buffer.writeln(
    '  Terminal: ${Platform.environment['TERM_PROGRAM'] ?? 'unknown'}',
  );

  return TextCommandResult(buffer.toString());
}