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