feat: add provider abstraction for review backends

This commit is contained in:
2026-06-12 19:23:45 +01:00
parent 1b8edb7eba
commit 732d6edd38
22 changed files with 1432 additions and 882 deletions
+6 -12
View File
@@ -15,8 +15,7 @@ import { buildReviewCodePrompt } from "../prompts/review-code.js";
* Raw tool input per ARCHITECTURE.md §7 schema.
* @param {{
* loadConfig: () => object,
* createOpenAIClient: (config: object) => any,
* sendOpenAIResponse: (client: any, params: object) => Promise<any>
* createProvider: (config: object) => { send: (input: object, cfg: object) => Promise<{ content: string }> }
* }} deps
* Injected external dependencies.
* @returns {Promise<{ ok: true, answer: string, warnings: string[] } | { ok: false, error: string, warnings: string[] }>}
@@ -49,25 +48,20 @@ export async function handleReviewCode(input, deps) {
const promptMessages = buildReviewCodePrompt(budget.input);
// --- 5. Create OpenAI client ---
// --- 5. Create chat provider ---
let client;
let provider;
try {
client = deps.createOpenAIClient(config);
provider = deps.createProvider(config);
} catch (err) {
return { ok: false, error: String(err), warnings: [] };
}
// --- 6. Send to OpenAI ---
// --- 6. Send via provider ---
let aiResult;
try {
aiResult = await deps.sendOpenAIResponse(client, {
input: [{ role: "system", content: promptMessages }],
model: config.openaiModel,
temperature: config.temperature,
maxOutputTokens: config.maxOutputTokens,
});
aiResult = await provider.send(budget.input, config);
} catch (err) {
return { ok: false, error: String(err), warnings: [] };
}