UNPKG

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 ❤️.

56 lines (55 loc) 1.75 kB
import { contextReviewModule } from "../modules/contextReviewModule.js"; import { finalAnswerModule } from "../modules/finalAnswerModule.js"; import { writeFileModule } from "../modules/writeFileModule.js"; import { fileSearchModule } from "../modules/fileSearchModule.js"; import { cleanupModule } from "../modules/cleanupModule.js"; import { summaryModule } from "../modules/summaryModule.js"; import { addCommentsModule } from "../modules/commentModule.js"; import { codeTransformModule } from "../modules/codeTransformModule.js"; /** * Active built-in modules — all use ModuleIO for input/output. */ export const builtInModules = { fileSearch: fileSearchModule, summary: summaryModule, contextReview: contextReviewModule, // analysis (as agent options?) codeTransform: codeTransformModule, cleanup: cleanupModule, comments: addCommentsModule, writeFile: writeFileModule, finalAnswer: finalAnswerModule, }; /** * Get module by name. */ export function getModuleByName(name) { return builtInModules[name]; } /** * List available modules for CLI or UI display. */ export function listAvailableModules() { return Object.entries(builtInModules).map(([name, mod]) => ({ name, description: mod.description ?? "No description available", })); } /** * Resolve modules from a list of names. * Returns a unique ordered array of modules. */ export function resolveModulesByNames(names) { const seen = new Set(); const resolved = []; for (const name of names) { if (seen.has(name)) continue; const mod = getModuleByName(name); if (mod) { resolved.push(mod); seen.add(name); } } return resolved; }