scai
Version:
> AI-powered CLI tool for commit messages **and** pull request reviews — using local models.
36 lines (35 loc) • 1.23 kB
JavaScript
// File: lib/generate.ts
import { Spinner } from './spinner.js';
import { readConfig } from '../config.js';
export async function generate(input, model) {
const contextLength = readConfig().contextLength ?? 8192;
let prompt = input.content;
if (prompt.length > contextLength) {
console.warn(`⚠️ Warning: Input prompt length (${prompt.length}) exceeds model context length (${contextLength}). `);
}
const spinner = new Spinner(`🧠 Thinking with ${model}...`);
spinner.start();
try {
const res = await fetch('http://localhost:11434/api/generate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
model,
prompt, // use truncated prompt here
stream: false,
}),
});
const data = await res.json();
spinner.succeed('Model response received.');
process.stdout.write('\n');
return {
content: data.response?.trim() ?? '',
filepath: input.filepath,
};
}
catch (err) {
spinner.fail('Model request failed.');
process.stdout.write('\n');
throw err;
}
}