UNPKG

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**

46 lines (45 loc) 1.97 kB
import { logInputOutput } from '../utils/promptLogHelper.js'; /** * COLLABORATOR STEP * Prepares or collects collaborator / human feedback when required. * Does NOT advance execution unless feedback is resolved. */ export const collaboratorStep = { name: 'collaboratorStep', description: 'Requests or integrates collaborator feedback when needed.', requires: ['analysis.iterationReasoning'], produces: ['analysis.collaboratorFeedback', 'analysis.iterationReasoning'], async run(context) { context.analysis || (context.analysis = {}); const reasoning = context.analysis.iterationReasoning; if (!reasoning) return; // If feedback already exists and is applied, do nothing const existing = context.analysis.collaboratorFeedback; if (existing?.status === 'applied') return; // Only act if iteration explicitly requests feedback if (reasoning.nextAction !== 'request-feedback') return; // Initialize collaborator feedback request if missing if (!existing) { const feedback = { summaryForUser: 'Additional review is requested before continuing. Please confirm or correct the recent changes.', status: 'pending', requiresAction: true }; context.analysis.collaboratorFeedback = feedback; } // Update iteration reasoning to reflect wait state (no new fields) context.analysis.iterationReasoning = { ...reasoning, summary: 'Awaiting collaborator feedback', rationale: 'Iteration paused until external confirmation or correction is received', confidence: 0.5 }; logInputOutput("collaboratorStep", "output", { collaboratorFeedback: context.analysis?.collaboratorFeedback, iterationReasoning: context.analysis?.iterationReasoning }); } };