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**
31 lines (30 loc) • 1.2 kB
JavaScript
export async function runModulePipeline(modules, initialInput) {
const logPrefix = `[runModulePipeline]`;
console.log(`${logPrefix} 🚀 Starting pipeline with ${modules.length} module(s)`);
// Copy initial input
let currentIO = { ...initialInput };
for (const mod of modules) {
try {
const output = await mod.run(currentIO);
// Validate shape
if (!output) {
throw new Error(`Module '${mod.name}' returned empty output`);
}
// --- FIX: Pipeline semantics ---
// Next module receives:
// - same query
// - content = previous module's data
// - (data is the last produced data only, never merged)
currentIO = {
query: currentIO.query,
content: output.data, // data -> content handoff
data: '',
};
console.log(`${logPrefix} 🔁 '${mod.name}' → content replaced with data`);
}
catch (err) {
console.error(`${logPrefix} ❌ Module '${mod.name}' failed:`, err instanceof Error ? err.message : err);
}
}
return currentIO;
}