scai
Version:
> AI-powered CLI tool for commit messages **and** pull request reviews — using local models.
37 lines (32 loc) • 1.33 kB
JavaScript
import { generate } from '../../lib/generate.js';
import { Config } from '../../config.js';
export const commitSuggesterModule = {
name: 'commitSuggester',
description: 'Suggests conventional commit messages from Git diff',
async run({ content }) {
const model = Config.getModel();
const prompt = `
Suggest ALWAYS 3 concise, conventional Git commit messages based on the input code diff.
- Follow the Conventional Commits specification for prefixes (e.g., feat:, fix:, refactor:, docs:, style:, test:, chore:).
- Choose the most appropriate prefix for each message based on the changes in the diff.
- Do NOT repeat the same prefix unless it is clearly the most appropriate.
- Keep each message short, clear, and action-oriented.
Format your response exactly as:
1. <type>: <message>
2. <type>: <message>
3. <type>: <message>
Here is the diff:
${content}
`.trim();
const response = await generate({ content: prompt }, model);
const lines = response.content
.split('\n')
.map(line => line.trim())
.filter(line => /^\d+\.\s+/.test(line));
const suggestions = lines.map(line => line.replace(/^\d+\.\s+/, '').replace(/^"(.*)"$/, '$1').trim());
return {
content,
suggestions
};
}
};