spaider
Version:
Deterministic-first AI code assistant that crawls your codebase to implement changes using open source LLMs
50 lines • 1.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.processRequest = processRequest;
const pipeline_1 = require("./lib/pipeline");
const steps_1 = require("./steps");
const conditions_1 = require("./steps/conditions");
const logger_1 = require("./services/logger");
async function processRequest(userPrompt, initialFilePaths, projectRoot = process.cwd(), writeOnly = false) {
logger_1.Logger.info(`Spaider starting ...`);
logger_1.Logger.info(`Project root: ${projectRoot}`);
logger_1.Logger.info(`Initial files: ${initialFilePaths.length}`);
logger_1.Logger.info(`Write-only mode: ${writeOnly}`);
const initialContext = {
userPrompt,
files: initialFilePaths.map((path) => ({ path })),
projectRoot,
intent: {
editMode: false,
description: "",
needsMoreContext: false,
filePaths: [],
searchTerms: [],
},
changes: [],
result: {
modifiedFiles: [],
deletedFiles: [],
createdFiles: [],
},
};
const processRequest = (0, pipeline_1.pipeline)(steps_1.readFiles, steps_1.parseAST, steps_1.analyzeIntent, {
when: conditions_1.needsMoreContext,
steps: [steps_1.discoverFiles, steps_1.readFiles, steps_1.parseAST],
}, {
when: conditions_1.isAskMode,
steps: [steps_1.generateAnswer],
}, {
when: conditions_1.isEditMode,
steps: writeOnly
? [steps_1.generateChanges, steps_1.writeChanges]
: [steps_1.generateChanges, steps_1.applyChanges],
});
const ctx = await processRequest(initialContext);
return {
intent: ctx.intent,
answer: ctx.answer,
result: ctx.result,
};
}
//# sourceMappingURL=index.js.map