UNPKG

scai

Version:

> **AI-powered CLI for local code analysis, commit message suggestions, and natural-language queries.** > **100% local • No token cost • Private by design • GDPR-friendly** — made in Denmark/EU with ❤️.

69 lines (63 loc) 2.48 kB
// File: src/pipeline/modules/explainModule.ts import { logInputOutput } from "../../utils/promptLogHelper.js"; import { generate } from "../../lib/generate.js"; export const explainModule = { name: "explainModule", description: "Generates a textual explanation for explain mode based on query and pre-file check context", groups: ["finalize"], run: async (input) => { const query = input.query; const context = input.context; if (!context) { throw new Error("[explainModule] No context provided"); } // --------------------------- // Gather preFileSearchCheck output // --------------------------- const focus = context.analysis?.focus ?? {}; const intent = context.analysis?.intent ?? {}; const rationale = context.analysis?.focus?.rationale ?? "No rationale available"; // --------------------------- // Build prompt for the model // --------------------------- const prompt = ` You are an AI assistant tasked with explaining the requested work. User query: ${query} Intent (user goal): ${JSON.stringify(intent, null, 2)} Relevant files: ${JSON.stringify(focus.relevantFiles ?? [], null, 2)} Rationale for selected files: ${rationale} INSTRUCTIONS: - Provide a concise explanation answering the user query based primarily on the query itself. - Use the intent and file rationale to support your explanation. - Do NOT suggest code changes. - Do NOT include unrelated folder summaries or analysis not yet performed. - Keep answer clear, factual, and direct. `.trim(); // --------------------------- // Generate explanation // --------------------------- const aiResponse = await generate({ query, content: prompt, }); const explanationText = typeof aiResponse.data === "string" ? aiResponse.data : JSON.stringify(aiResponse.data, null, 2); // --------------------------- // Show explanation to user // --------------------------- console.log(`\n[EXPLAIN OUTPUT]\n${explanationText}\n`); // --------------------------- // Keep input/output logging // --------------------------- logInputOutput("explainModule", "output", aiResponse.data); const output = { query, content: explanationText, data: aiResponse.data, }; return output; }, };