const fs = require('fs');
const path = require('path');
const {
getClaudeConfigDir,
getDefaultMode,
} = require('./caveman-config');
const flagPath = path.join(getClaudeConfigDir(), '.caveman-active');
let input = '';
process.stdin.on('data', chunk => { input += chunk; });
process.stdin.on('end', () => {
try {
const data = JSON.parse(input);
const prompt = (data.prompt || '').trim().toLowerCase();
if (prompt.startsWith('/caveman')) {
const parts = prompt.split(/\s+/);
const cmd = parts[0];
const arg = parts[1] || '';
let mode = null;
if (cmd === '/caveman-commit') {
mode = 'commit';
} else if (cmd === '/caveman-review') {
mode = 'review';
} else if (cmd === '/caveman-compress' || cmd === '/caveman:caveman-compress') {
mode = 'compress';
} else if (cmd === '/caveman' || cmd === '/caveman:caveman') {
if (arg === 'lite') mode = 'lite';
else if (arg === 'ultra') mode = 'ultra';
else if (arg === 'wenyan-lite') mode = 'wenyan-lite';
else if (arg === 'wenyan' || arg === 'wenyan-full') mode = 'wenyan';
else if (arg === 'wenyan-ultra') mode = 'wenyan-ultra';
else mode = getDefaultMode();
}
if (mode && mode !== 'off') {
fs.mkdirSync(path.dirname(flagPath), { recursive: true });
fs.writeFileSync(flagPath, mode);
} else if (mode === 'off') {
try { fs.unlinkSync(flagPath); } catch (e) {}
}
}
if (/\b(stop caveman|normal mode)\b/i.test(prompt)) {
try { fs.unlinkSync(flagPath); } catch (e) {}
}
} catch (e) {
}
});