UNPKG

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

49 lines (48 loc) 1.98 kB
import { logInputOutput } from "../utils/promptLogHelper.js"; export const planTargetFilesStep = { name: "planTargetFilesStep", description: "Sync files from analysis.focus into plan.targetFiles. Ensures only workingFiles are moved and does not redo intent or risks.", groups: ["analysis"], run: async (input) => { const context = input.context; const query = input.query ?? ""; if (!context) { const output = { query, data: { notes: "[planTargetFilesStep] No context provided; skipping." }, }; logInputOutput("planTargetFilesStep", "output", output.data); return output; } // Ensure analysis.focus exists const focusFiles = context.analysis?.focus?.relevantFiles ?? []; if (!focusFiles.length) { const output = { query, data: { notes: "[planTargetFilesStep] No relevant files in analysis.focus; nothing to move." }, }; logInputOutput("planTargetFilesStep", "output", output.data); return output; } // Ensure plan exists context.plan || (context.plan = {}); // Move relevant files to plan.targetFiles, only if they exist in workingFiles const workingFilePaths = new Set(context.workingFiles?.map(f => f.path) ?? []); const targetFiles = new Set(context.plan.targetFiles ?? []); focusFiles.forEach(f => { if (workingFilePaths.has(f)) { targetFiles.add(f); } }); context.plan.targetFiles = Array.from(targetFiles); const output = { query, data: { movedFiles: Array.from(targetFiles), notes: "Focus files successfully moved to plan.targetFiles.", }, }; logInputOutput("planTargetFilesStep", "output", output.data); return output; }, };