export type TaskDiffResult = { diff: string; stats: { filesChanged: number; linesAdded: number; linesRemoved: number; } | undefined; skippedPaths: string[]; truncated: boolean; rejection?: { message: string; }; }; /** * Reviewer-facing text for a containment rejection (R4 AC 24). * * STATED here, not inherited. `TaskDiffResult.rejection` now has two producers: * `unwrapDiff` in `review-task.ts`, whose message is a thrown exception's * `.message`, and this assertion. Both classify as `rejected` — which is the * point, since that is what makes a containment failure distinguishable from the * `empty` diff the mis-partition would otherwise masquerade as — but they are not * the same event, and the preamble that fires for either * (`R4_2B_DIFF_REJECTED`) says the utility "threw an unexpected exception", * which is false here. That constant is byte-pinned by seventeen committed * methodology fixtures and a cross-spec drift test, so it is not edited; instead * the text below names the contradiction outright, the way * `NO_REVIEWABLE_FILES_DISCLOSURE` names its own residual. * * That wording reaches the agent on the DIRECT-CALL path only, where it travels * as `data.diffRejection.message`. A dashboard-spawned reviewer never reads it: * `TaskReviewRunner` destructures six fields from the prepare response and none * carries diff data, so neither `data.diff` nor `data.diffRejection` is rendered * into the prompt. The rejection stays distinguishable there — the preamble * flips from `R4_2A_DIFF_EMPTY` to `R4_2B_DIFF_REJECTED` — but only that * classification arrives, not this text. AC 24 is silent on the second path * where AC 19 is explicit, so it is a residual, not a gap: deferral * `d-6e59490b`, owned by the `worktree-review-signals` spec. */ export declare function containmentRejectionMessage(outside: string[], workspacePath: string): string; export declare function computeTaskDiff( /** * The workspace under review (R4 AC 1): git's working directory, and the * containment base every pathspec is asserted against. */ workspacePath: string, allFiles: string[]): Promise; //# sourceMappingURL=task-diff.d.ts.map