spaider
Version:
Deterministic-first AI code assistant that crawls your codebase to implement changes using open source LLMs
41 lines • 1.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.pipeline = void 0;
const logger_1 = require("../services/logger");
const pipeline = (...steps) => async (context) => {
let result = context;
for (const step of steps) {
if (typeof step === "function") {
// Simple step function
logger_1.Logger.debug(`Executing step: ${step.name}`);
result = await step(result);
}
else if (Array.isArray(step)) {
// Conditional step: [condition, function]
const [condition, fn] = step;
if (condition(result)) {
logger_1.Logger.debug(`Executing conditional step: ${fn.name}`);
result = await fn(result);
}
else {
logger_1.Logger.debug(`Skipping conditional step: ${fn.name}`);
}
}
else {
// Object syntax: { when: condition, steps: [...] }
if (step.when(result)) {
logger_1.Logger.debug(`Executing step group (${step.steps.length} steps)`);
for (const fn of step.steps) {
logger_1.Logger.debug(` - ${fn.name}`);
result = await fn(result);
}
}
else {
logger_1.Logger.debug(`Skipping step group (${step.steps.length} steps)`);
}
}
}
return result;
};
exports.pipeline = pipeline;
//# sourceMappingURL=pipeline.js.map