UNPKG

scai

Version:

> **A local-first AI CLI for understanding, querying, and iterating on large codebases.** > **100% local • No token costs • No cloud • No prompt injection • Private by design**

67 lines (66 loc) 2.31 kB
import { contextReviewModule } from "../modules/contextReviewModule.js"; import { finalAnswerModule } from "../modules/finalAnswerModule.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"; import { semanticAnalysisModule } from "../modules/semanticAnalysisModule.js"; /** * Active built-in modules — all use ModuleIO for input/output. */ export const builtInModules = { // ===================================================== // INFORMATION // ===================================================== fileSearch: fileSearchModule, summary: summaryModule, // ===================================================== // ANALYSIS // ===================================================== semanticAnalysis: semanticAnalysisModule, contextReview: contextReviewModule, // ===================================================== // TRANSFORM / WRITE SUPPORT // ===================================================== codeTransform: codeTransformModule, cleanup: cleanupModule, comments: addCommentsModule, // ===================================================== // FINALIZE // ===================================================== 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; }