fix(cli): make 'fix --ai' command provider-agnostic

This commit is contained in:
s41r4j
2026-01-29 00:15:07 +05:30
parent 12021869a9
commit 9f7522039e
+29 -8
View File
@@ -1687,15 +1687,22 @@ program.command('fix')
Recommended Command: <command>
`;
// Use the preferred provider to generate response
// Use preferred provider or auto-resolve
const provider = aiProvider.resolveProvider(opts.provider);
if (provider === 'none') {
Progress.stop('');
console.log(color.yellow('No AI provider configured. Falling back to simple heuristics.'));
// ... heuristic fallback ...
let rec = '';
if (ahead > 0 && behind === 0) rec = 'Push (g push)';
else if (behind > 0 && ahead === 0) rec = 'Pull (g pull)';
else rec = 'Rebase (g fix --rebase)';
console.log(`Recommendation: ${rec}`);
return;
}
try {
const response = await aiProvider.generateWithGemini(prompt, null, { temperature: 0.3 }); // Defaulting to using the generate methods available
// Note: In a cleaner refactor, we would expose a generic 'generate' on AIProviderManager
// For now, we assume Gemini or fallback logic is inside manager, but let's assume we can call generateText or similar
// Wait, looking at previous file reads, AIProviderManager has 'generateWithGemini' etc but maybe not a generic 'generate'.
// Let's use the 'generateCommitMessage's underlying logic or just call the provider directly if we can't genericize.
// Actually, I should check if there is a 'ask' method.
// ... (Self-correction: I'll use a safer approach below)
const response = await aiProvider.generateWithProvider(provider, prompt, { temperature: 0.3 }); // Use generic provider method
Progress.stop('');
console.log(`\n${color.bold('🤖 AI Analysis:')}`);
@@ -1712,6 +1719,20 @@ program.command('fix')
}
return;
}
console.log(`\n${color.bold('🤖 AI Analysis:')}`);
console.log(response.trim());
} catch (e) {
Progress.stop('');
console.log(color.yellow('AI Analysis failed, falling back to heuristics.'));
// ... heuristic fallback code ...
let rec = '';
if (ahead > 0 && behind === 0) rec = 'Push (g push)';
else if (behind > 0 && ahead === 0) rec = 'Pull (g pull)';
else rec = 'Rebase (g fix --rebase)';
console.log(`Recommendation: ${rec}`);
}
return;
}
// Show interactive menu
console.log(color.bold('🔧 Fix Options:\n'));