import { fail, type HousekeepingResult, ok } from "../contracts"; import { normalizeHousekeepingReason, requiresHousekeepingReason, } from "./reason-policy"; import type { HousekeepingCommand } from "./registry"; export interface HousekeepingCommandConfirmation { commandId: string; risk: "safe" | "sensitive"; requiresReason: boolean; reason?: string; } export function confirmHousekeepingCommand( command: HousekeepingCommand, reason: string | undefined, correlationId: string, input?: I, ): HousekeepingResult { const normalizedReason = normalizeHousekeepingReason(reason); const reasonRequired = requiresHousekeepingReason( command.requiresReason, input, ); if (reasonRequired && !normalizedReason) { return fail("VALIDATION", "errors.housekeeping.validation", correlationId, { reason: ["errors.validation.required"], }); } return ok( { commandId: command.id, risk: command.risk, requiresReason: reasonRequired, ...(normalizedReason === undefined ? {} : { reason: normalizedReason }), }, correlationId, ); }