scai
Version:
> **AI-powered CLI for local code analysis, commit message suggestions, and natural-language queries.** 100% local, private, GDPR-friendly, made in Denmark/EU with ❤️.
48 lines (43 loc) • 1.73 kB
JavaScript
// File: src/pipeline/modules/reviewModule.ts
import { generate } from '../../lib/generate.js';
export const reviewModule = {
name: 'review',
description: 'Reviews code diff or PR content and provides actionable suggestions',
run: async (input) => {
const query = input.query ?? '';
const codeDiff = typeof input.content === 'string' ? input.content : '';
if (!codeDiff) {
throw new Error('⚠️ No code diff provided for review.');
}
const prompt = `
Suggest ALWAYS 3 concise suggestions for improvements based on the input code diff.
- Use one of these types for each suggestion: style, refactor, bug, docs, test
- Keep each message short, clear, and actionable
Format your response exactly as:
1. <type>: <message>
2. <type>: <message>
3. <type>: <message>
Changes:
${codeDiff}
`.trim();
const response = await generate({
query,
content: prompt,
});
// Ensure content is string
const responseText = typeof response.content === 'string' ? response.content : JSON.stringify(response.content ?? '', null, 2);
// Parse response: only keep numbered lines
const lines = responseText
.split('\n')
.map(line => line.trim())
.filter(line => /^\d+\.\s+/.test(line));
// Remove numbering and any surrounding quotes
const suggestions = lines.map(line => line.replace(/^\d+\.\s+/, '').replace(/^"(.*)"$/, '$1').trim());
const output = {
query,
content: responseText, // raw model output
data: { suggestions }, // structured suggestions
};
return output;
},
};