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