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
JavaScript
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
});
}
};