can1357/oh-my-pi · warning · Error
${error.message} (augmented with "\nCurrent file content nea
Error message
${error.message} (augmented with "\nCurrent file content near the closest match (no re-read needed):\n${numberedPreview(content, 0)}" when lacking grounding, plus the atomicity notice) What it means
The top-level catch in applySloppyEdit augments any error message with grounding and atomicity context before re-throwing. If the message does not already contain a copy-ready section or the closest-match preview, a numbered preview of the file content (from offset 0) is appended so the author can see the current text without re-reading; the ATOMICITY_NOTICE is appended if absent, stating that failed applications leave the file untouched.
Source
Thrown at packages/coding-agent/src/edit/sloppy.ts:3875
}
function apply(content: string, input: string, context: SloppyApplyContext): string {
try {
return applyOperations(content, input, context);
} catch (error) {
if (!(error instanceof Error)) throw error;
let message = error.message;
if (
!message.includes("Current file content near the closest match (no re-read needed):") &&
!/\bNear line \d+:/u.test(message) &&
!message.includes("Copy-ready corrected operation:") &&
!message.includes("Copy-ready corrected payload:") &&
!message.includes("Copy-ready per-selection interpretation:")
) {
message += `\nCurrent file content near the closest match (no re-read needed):\n${numberedPreview(content, 0)}`;
}
if (!message.includes(ATOMICITY_NOTICE)) message += `\n${ATOMICITY_NOTICE}`;
throw new Error(message);
}
}
/** The official sloppy implementation; docs re-skinned to the active marker alphabet. */
export const sloppyVariant: SloppyVariant = { id: "sloppy", description, apply };
/** Lark grammar for constrained decoding, in the active marker alphabet. */
export const sloppyGrammar: string = sloppyGrammarSource;
export interface ExecuteSloppyOptions {
session: ToolSession;
/** Payload sections with display paths already workspace-resolved. */
sections: SloppySection[];
signal?: AbortSignal;
batchRequest?: LspBatchRequest;
writethrough: WritethroughCallback;
beginDeferredDiagnosticsForPath: (path: string) => WritethroughDeferredHandle;
/** Observes a committed content transition before result snapshots are pruned. */View on GitHub (pinned to 9690622007)
Solutions
- Read the appended preview and adjust PATTERN to exactly match the current file text shown.
- Use the atomicity notice as reassurance: retry freely; a failed multi-operation application changes nothing.
- If the message already includes a copy-ready payload or interpretation, fix that payload directly instead of re-deriving it.
Defensive patterns
Strategy: try-catch
Try / catch
try {
applySloppyEdit(payload);
} catch (err) {
if (err instanceof Error && err.message.includes("Current file content near the closest match")) {
const preview = err.message.split("no re-read needed):\n")[1]?.split("\n")[0];
// file is unchanged (atomic); re-author payload using the preview
} else throw err;
} Prevention
- Treat failed applications as atomic: the file is untouched, so retry safely
- Parse the appended numbered preview to re-anchor PATTERN to current file text
- Match on the message substrings ('Copy-ready', 'Current file content') when programmatically handling sloppy errors, since augmentation is conditional
When it happens
Trigger: Any error thrown during application (no-match, ambiguity, overlap, parse) reaching the catch at sloppy.ts:3875 whose message lacks 'Current file content near the closest match' and the copy-ready markers; the augmented message is re-thrown.
Common situations: Model iterating on a failing edit payload and needing file context to fix it; callers logging this error and seeing the file preview plus atomicity guarantee; duplicate-augmentation avoided for already-grounded messages.
Related errors
- ${error.message} Copy-ready corrected payload: ${retry}
- Operation ${operationNumber} has selection markers in REWRIT
- Operation ${operationNumber} REWRITE has a whole-line ${GAP}
- ${REWRITE_HEADER}${reference[1]} must reference an earlier d
- ${base}${grounding}${hint ? `\n${hint}` : ""} (no-op: e.g. "
AI-assisted analysis of can1357/oh-my-pi@9690622007 (2026-08-31).
Data as JSON: /api/errors/68a9bfd8ff45e06e.
Report an issue: GitHub.