@kenkaiiii/ggcoder 4.3.230 → 4.3.231
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/goal-controller.d.ts +27 -6
- package/dist/core/goal-controller.d.ts.map +1 -1
- package/dist/core/goal-controller.js +246 -141
- package/dist/core/goal-controller.js.map +1 -1
- package/dist/core/goal-controller.test.js +210 -79
- package/dist/core/goal-controller.test.js.map +1 -1
- package/dist/core/goal-engine.d.ts +61 -0
- package/dist/core/goal-engine.d.ts.map +1 -0
- package/dist/core/goal-engine.js +123 -0
- package/dist/core/goal-engine.js.map +1 -0
- package/dist/core/goal-engine.test.d.ts +2 -0
- package/dist/core/goal-engine.test.d.ts.map +1 -0
- package/dist/core/goal-engine.test.js +295 -0
- package/dist/core/goal-engine.test.js.map +1 -0
- package/dist/core/goal-integration.d.ts +80 -0
- package/dist/core/goal-integration.d.ts.map +1 -0
- package/dist/core/goal-integration.js +296 -0
- package/dist/core/goal-integration.js.map +1 -0
- package/dist/core/goal-integration.test.d.ts +2 -0
- package/dist/core/goal-integration.test.d.ts.map +1 -0
- package/dist/core/goal-integration.test.js +369 -0
- package/dist/core/goal-integration.test.js.map +1 -0
- package/dist/core/goal-prerequisites.test.js +37 -1
- package/dist/core/goal-prerequisites.test.js.map +1 -1
- package/dist/core/goal-store.d.ts +80 -1
- package/dist/core/goal-store.d.ts.map +1 -1
- package/dist/core/goal-store.js +232 -65
- package/dist/core/goal-store.js.map +1 -1
- package/dist/core/goal-store.test.js +111 -2
- package/dist/core/goal-store.test.js.map +1 -1
- package/dist/core/goal-worker.d.ts.map +1 -1
- package/dist/core/goal-worker.js +55 -4
- package/dist/core/goal-worker.js.map +1 -1
- package/dist/core/goal-worker.test.js +75 -6
- package/dist/core/goal-worker.test.js.map +1 -1
- package/dist/core/goal-worktree.d.ts +55 -1
- package/dist/core/goal-worktree.d.ts.map +1 -1
- package/dist/core/goal-worktree.js +164 -1
- package/dist/core/goal-worktree.js.map +1 -1
- package/dist/core/goal-worktree.test.js +226 -4
- package/dist/core/goal-worktree.test.js.map +1 -1
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +9 -6
- package/dist/system-prompt.js.map +1 -1
- package/dist/system-prompt.test.js +1 -1
- package/dist/system-prompt.test.js.map +1 -1
- package/dist/tools/edit-diff.d.ts +17 -4
- package/dist/tools/edit-diff.d.ts.map +1 -1
- package/dist/tools/edit-diff.js +78 -16
- package/dist/tools/edit-diff.js.map +1 -1
- package/dist/tools/edit-diff.test.js +31 -1
- package/dist/tools/edit-diff.test.js.map +1 -1
- package/dist/tools/edit-robustness.test.d.ts +2 -0
- package/dist/tools/edit-robustness.test.d.ts.map +1 -0
- package/dist/tools/edit-robustness.test.js +415 -0
- package/dist/tools/edit-robustness.test.js.map +1 -0
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +15 -16
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/edit.test.js +23 -12
- package/dist/tools/edit.test.js.map +1 -1
- package/dist/tools/goals.d.ts +9 -1
- package/dist/tools/goals.d.ts.map +1 -1
- package/dist/tools/goals.js +78 -25
- package/dist/tools/goals.js.map +1 -1
- package/dist/tools/goals.test.js +142 -11
- package/dist/tools/goals.test.js.map +1 -1
- package/dist/ui/App.d.ts +9 -1
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +78 -16
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/components/ChatLayout.d.ts +8 -1
- package/dist/ui/components/ChatLayout.d.ts.map +1 -1
- package/dist/ui/components/ChatLayout.js +4 -1
- package/dist/ui/components/ChatLayout.js.map +1 -1
- package/dist/ui/components/ChatScreen.d.ts +14 -1
- package/dist/ui/components/ChatScreen.d.ts.map +1 -1
- package/dist/ui/components/ChatScreen.js +3 -2
- package/dist/ui/components/ChatScreen.js.map +1 -1
- package/dist/ui/components/InputArea.d.ts +13 -1
- package/dist/ui/components/InputArea.d.ts.map +1 -1
- package/dist/ui/components/InputArea.js +96 -12
- package/dist/ui/components/InputArea.js.map +1 -1
- package/dist/ui/components/TranscriptViewport.d.ts +34 -0
- package/dist/ui/components/TranscriptViewport.d.ts.map +1 -0
- package/dist/ui/components/TranscriptViewport.js +45 -0
- package/dist/ui/components/TranscriptViewport.js.map +1 -0
- package/dist/ui/footer-jump-regression.test.d.ts +2 -0
- package/dist/ui/footer-jump-regression.test.d.ts.map +1 -0
- package/dist/ui/footer-jump-regression.test.js +167 -0
- package/dist/ui/footer-jump-regression.test.js.map +1 -0
- package/dist/ui/goal-events.d.ts +1 -1
- package/dist/ui/goal-events.d.ts.map +1 -1
- package/dist/ui/goal-events.js +2 -2
- package/dist/ui/goal-events.js.map +1 -1
- package/dist/ui/goal-events.test.js +2 -2
- package/dist/ui/goal-events.test.js.map +1 -1
- package/dist/ui/goal-lifecycle-orchestration.test.js +13 -97
- package/dist/ui/goal-lifecycle-orchestration.test.js.map +1 -1
- package/dist/ui/goal-progress.d.ts.map +1 -1
- package/dist/ui/goal-progress.js +0 -1
- package/dist/ui/goal-progress.js.map +1 -1
- package/dist/ui/goal-run-helpers.d.ts +0 -4
- package/dist/ui/goal-run-helpers.d.ts.map +1 -1
- package/dist/ui/goal-run-helpers.js +2 -21
- package/dist/ui/goal-run-helpers.js.map +1 -1
- package/dist/ui/hooks/useChatLayoutMeasurements.d.ts +8 -0
- package/dist/ui/hooks/useChatLayoutMeasurements.d.ts.map +1 -1
- package/dist/ui/hooks/useChatLayoutMeasurements.js +2 -0
- package/dist/ui/hooks/useChatLayoutMeasurements.js.map +1 -1
- package/dist/ui/hooks/useGoalOrchestration.d.ts +2 -1
- package/dist/ui/hooks/useGoalOrchestration.d.ts.map +1 -1
- package/dist/ui/hooks/useGoalOrchestration.js +198 -80
- package/dist/ui/hooks/useGoalOrchestration.js.map +1 -1
- package/dist/ui/hooks/useTerminalSize.d.ts +8 -1
- package/dist/ui/hooks/useTerminalSize.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalSize.js +12 -2
- package/dist/ui/hooks/useTerminalSize.js.map +1 -1
- package/dist/ui/hooks/useTranscriptHistory.d.ts +1 -1
- package/dist/ui/hooks/useTranscriptHistory.d.ts.map +1 -1
- package/dist/ui/hooks/useTranscriptHistory.js +23 -9
- package/dist/ui/hooks/useTranscriptHistory.js.map +1 -1
- package/dist/ui/hooks/useTranscriptHistory.test.d.ts +2 -0
- package/dist/ui/hooks/useTranscriptHistory.test.d.ts.map +1 -0
- package/dist/ui/hooks/useTranscriptHistory.test.js +61 -0
- package/dist/ui/hooks/useTranscriptHistory.test.js.map +1 -0
- package/dist/ui/hooks/useTranscriptScroll.d.ts +30 -0
- package/dist/ui/hooks/useTranscriptScroll.d.ts.map +1 -0
- package/dist/ui/hooks/useTranscriptScroll.js +44 -0
- package/dist/ui/hooks/useTranscriptScroll.js.map +1 -0
- package/dist/ui/hooks/useTranscriptScroll.test.d.ts +2 -0
- package/dist/ui/hooks/useTranscriptScroll.test.d.ts.map +1 -0
- package/dist/ui/hooks/useTranscriptScroll.test.js +119 -0
- package/dist/ui/hooks/useTranscriptScroll.test.js.map +1 -0
- package/dist/ui/live-area-clamp.test.js +11 -2
- package/dist/ui/live-area-clamp.test.js.map +1 -1
- package/dist/ui/render.d.ts +8 -0
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +69 -7
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/stores/transcript-scroll-store.d.ts +27 -0
- package/dist/ui/stores/transcript-scroll-store.d.ts.map +1 -0
- package/dist/ui/stores/transcript-scroll-store.js +73 -0
- package/dist/ui/stores/transcript-scroll-store.js.map +1 -0
- package/dist/ui/stores/transcript-scroll-store.test.d.ts +2 -0
- package/dist/ui/stores/transcript-scroll-store.test.d.ts.map +1 -0
- package/dist/ui/stores/transcript-scroll-store.test.js +73 -0
- package/dist/ui/stores/transcript-scroll-store.test.js.map +1 -0
- package/dist/ui/testing/screen-recorder.d.ts +29 -0
- package/dist/ui/testing/screen-recorder.d.ts.map +1 -0
- package/dist/ui/testing/screen-recorder.js +179 -0
- package/dist/ui/testing/screen-recorder.js.map +1 -0
- package/dist/ui/transcript/TranscriptRenderer.d.ts.map +1 -1
- package/dist/ui/transcript/TranscriptRenderer.js +1 -1
- package/dist/ui/transcript/TranscriptRenderer.js.map +1 -1
- package/dist/ui/transcript/spacing.d.ts +1 -0
- package/dist/ui/transcript/spacing.d.ts.map +1 -1
- package/dist/ui/transcript/spacing.js +7 -0
- package/dist/ui/transcript/spacing.js.map +1 -1
- package/dist/ui/transcript/spacing.test.js +29 -0
- package/dist/ui/transcript/spacing.test.js.map +1 -1
- package/dist/ui/transcript/transcript-lines.d.ts +32 -0
- package/dist/ui/transcript/transcript-lines.d.ts.map +1 -0
- package/dist/ui/transcript/transcript-lines.js +82 -0
- package/dist/ui/transcript/transcript-lines.js.map +1 -0
- package/dist/ui/transcript/transcript-lines.test.d.ts +2 -0
- package/dist/ui/transcript/transcript-lines.test.d.ts.map +1 -0
- package/dist/ui/transcript/transcript-lines.test.js +76 -0
- package/dist/ui/transcript/transcript-lines.test.js.map +1 -0
- package/dist/ui/transcript-viewport-pinning.test.d.ts +2 -0
- package/dist/ui/transcript-viewport-pinning.test.d.ts.map +1 -0
- package/dist/ui/transcript-viewport-pinning.test.js +148 -0
- package/dist/ui/transcript-viewport-pinning.test.js.map +1 -0
- package/dist/ui/tui-simulation.test.d.ts +2 -0
- package/dist/ui/tui-simulation.test.d.ts.map +1 -0
- package/dist/ui/tui-simulation.test.js +138 -0
- package/dist/ui/tui-simulation.test.js.map +1 -0
- package/dist/ui/tui-terminal-recorder.test.d.ts +2 -0
- package/dist/ui/tui-terminal-recorder.test.d.ts.map +1 -0
- package/dist/ui/tui-terminal-recorder.test.js +134 -0
- package/dist/ui/tui-terminal-recorder.test.js.map +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Robustness benchmark for the edit/update tool's matcher.
|
|
3
|
+
*
|
|
4
|
+
* "old_text not found" is the dominant edit failure. Models rarely reproduce a
|
|
5
|
+
* snippet byte-for-byte — they drift on whitespace, quotes, indentation, line
|
|
6
|
+
* endings, and invisible unicode. This benchmark throws 50+ realistic LLM
|
|
7
|
+
* perturbations at the REAL tool against realistic source files and reports the
|
|
8
|
+
* pass rate per category.
|
|
9
|
+
*
|
|
10
|
+
* Three expectations, so this measures correctness — not just leniency:
|
|
11
|
+
* - "match" → the matcher MUST locate and apply the edit.
|
|
12
|
+
* - "reject" → the snippet genuinely differs (rename/reorder); applying it
|
|
13
|
+
* would corrupt the file, so the matcher MUST NOT match.
|
|
14
|
+
* - "limitation" → a drift we deliberately don't handle (internal-whitespace
|
|
15
|
+
* paraphrasing); failing is acceptable and reported only.
|
|
16
|
+
*/
|
|
17
|
+
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
18
|
+
import fs from "node:fs/promises";
|
|
19
|
+
import path from "node:path";
|
|
20
|
+
import os from "node:os";
|
|
21
|
+
import { createEditTool } from "./edit.js";
|
|
22
|
+
const spaces = {
|
|
23
|
+
source: `export const SETTINGS = {
|
|
24
|
+
name: "widget",
|
|
25
|
+
retries: 3,
|
|
26
|
+
label: 'auto-sync',
|
|
27
|
+
mode: "fast",
|
|
28
|
+
};
|
|
29
|
+
`,
|
|
30
|
+
old: [' name: "widget",', " retries: 3,", " label: 'auto-sync',"].join("\n"),
|
|
31
|
+
new: [' name: "gadget",', " retries: 5,", " label: 'auto-sync',"].join("\n"),
|
|
32
|
+
oldMark: '"widget"',
|
|
33
|
+
newMark: '"gadget"',
|
|
34
|
+
};
|
|
35
|
+
const tabs = {
|
|
36
|
+
source: `function run() {
|
|
37
|
+
\tconst host = "alpha";
|
|
38
|
+
\tconst port = 8080;
|
|
39
|
+
\treturn host;
|
|
40
|
+
}
|
|
41
|
+
`,
|
|
42
|
+
old: ['\tconst host = "alpha";', "\tconst port = 8080;"].join("\n"),
|
|
43
|
+
new: ['\tconst host = "beta";', "\tconst port = 9090;"].join("\n"),
|
|
44
|
+
oldMark: '"alpha"',
|
|
45
|
+
newMark: '"beta"',
|
|
46
|
+
};
|
|
47
|
+
const single = {
|
|
48
|
+
source: `const greeting = "hello world";
|
|
49
|
+
`,
|
|
50
|
+
old: `const greeting = "hello world";`,
|
|
51
|
+
new: `const greeting = "hi there";`,
|
|
52
|
+
oldMark: "hello world",
|
|
53
|
+
newMark: "hi there",
|
|
54
|
+
};
|
|
55
|
+
// ── Perturbation primitives ────────────────────────────────
|
|
56
|
+
const NBSP = "\u00A0";
|
|
57
|
+
const id = (s) => s;
|
|
58
|
+
const compose = (...fns) => (s) => fns.reduce((acc, f) => f(acc), s);
|
|
59
|
+
const trailAll = (s) => s
|
|
60
|
+
.split("\n")
|
|
61
|
+
.map((l) => (l === "" ? l : l + " "))
|
|
62
|
+
.join("\n");
|
|
63
|
+
const trailFirst = (s) => s.replace(/^(.*)$/m, "$1 ");
|
|
64
|
+
const leadBlank = (s) => "\n" + s;
|
|
65
|
+
const twoLeadBlank = (s) => "\n\n" + s;
|
|
66
|
+
const trailNewline = (s) => s + "\n";
|
|
67
|
+
const crlf = (s) => s.replace(/\n/g, "\r\n");
|
|
68
|
+
const underIndent = (s) => s.replace(/^ {2}/gm, "");
|
|
69
|
+
const stripIndent = (s) => s.replace(/^\s+/gm, "");
|
|
70
|
+
const overIndent = (s) => s.replace(/^/gm, " ");
|
|
71
|
+
const spacesForTab = (s) => s.replace(/^\t/gm, " ");
|
|
72
|
+
const smartD = (s) => s.replace(/"/g, "\u201C");
|
|
73
|
+
const smartS = (s) => s.replace(/'/g, "\u2018");
|
|
74
|
+
const enDash = (s) => s.replace(/-/g, "\u2013");
|
|
75
|
+
const emDash = (s) => s.replace(/-/g, "\u2014");
|
|
76
|
+
const uMinus = (s) => s.replace(/-/g, "\u2212");
|
|
77
|
+
const nbspInternal = (s) => s.replace(/: /g, ":" + NBSP);
|
|
78
|
+
const nbspLeading = (s) => s.replace(/^ +/gm, (m) => NBSP.repeat(m.length));
|
|
79
|
+
const zeroWidth = (s) => s.replace(/: /g, ": \u200B");
|
|
80
|
+
const bom = (s) => "\uFEFF" + s;
|
|
81
|
+
const wordJoiner = (s) => s.replace(/: /g, ":\u2060 ");
|
|
82
|
+
const ideographic = (s) => s.replace(/ /g, "\u3000");
|
|
83
|
+
const thinSpace = (s) => s.replace(/: /g, ":\u2009");
|
|
84
|
+
const narrowNbsp = (s) => s.replace(/: /g, ":\u202F");
|
|
85
|
+
const collapseInternal = (s) => s.replace(/: /g, ":");
|
|
86
|
+
const expandInternal = (s) => s.replace(/: /g, ": ");
|
|
87
|
+
const renameVar = (s) => s.replace(/\bname\b/, "title").replace(/\bhost\b/, "server");
|
|
88
|
+
const reorderLines = (s) => {
|
|
89
|
+
const lines = s.split("\n");
|
|
90
|
+
if (lines.length >= 2)
|
|
91
|
+
[lines[0], lines[1]] = [lines[1], lines[0]];
|
|
92
|
+
return lines.join("\n");
|
|
93
|
+
};
|
|
94
|
+
const scenarios = [
|
|
95
|
+
// ── whitespace / structure (spaces base) ──
|
|
96
|
+
{ name: "exact", base: spaces, expect: "match", oldFn: id },
|
|
97
|
+
{ name: "trailing-ws-all", base: spaces, expect: "match", oldFn: trailAll },
|
|
98
|
+
{ name: "trailing-ws-first-line", base: spaces, expect: "match", oldFn: trailFirst },
|
|
99
|
+
{ name: "leading-blank-line", base: spaces, expect: "match", oldFn: leadBlank },
|
|
100
|
+
{ name: "two-leading-blank-lines", base: spaces, expect: "match", oldFn: twoLeadBlank },
|
|
101
|
+
{ name: "trailing-newline-extra", base: spaces, expect: "match", oldFn: trailNewline },
|
|
102
|
+
{
|
|
103
|
+
name: "under-indent-uniform",
|
|
104
|
+
base: spaces,
|
|
105
|
+
expect: "match",
|
|
106
|
+
oldFn: underIndent,
|
|
107
|
+
newFn: underIndent,
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: "strip-all-indent",
|
|
111
|
+
base: spaces,
|
|
112
|
+
expect: "match",
|
|
113
|
+
oldFn: stripIndent,
|
|
114
|
+
newFn: stripIndent,
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: "over-indent-uniform",
|
|
118
|
+
base: spaces,
|
|
119
|
+
expect: "match",
|
|
120
|
+
oldFn: overIndent,
|
|
121
|
+
newFn: overIndent,
|
|
122
|
+
},
|
|
123
|
+
{ name: "crlf-line-endings", base: spaces, expect: "match", oldFn: crlf },
|
|
124
|
+
// ── invisible unicode (spaces base) ──
|
|
125
|
+
{ name: "nbsp-internal", base: spaces, expect: "match", oldFn: nbspInternal },
|
|
126
|
+
{ name: "nbsp-leading", base: spaces, expect: "match", oldFn: nbspLeading },
|
|
127
|
+
{ name: "zero-width-space", base: spaces, expect: "match", oldFn: zeroWidth },
|
|
128
|
+
{ name: "bom-prefix", base: spaces, expect: "match", oldFn: bom },
|
|
129
|
+
{ name: "word-joiner", base: spaces, expect: "match", oldFn: wordJoiner },
|
|
130
|
+
{ name: "ideographic-space", base: spaces, expect: "match", oldFn: ideographic },
|
|
131
|
+
{ name: "thin-space", base: spaces, expect: "match", oldFn: thinSpace },
|
|
132
|
+
{ name: "narrow-nbsp", base: spaces, expect: "match", oldFn: narrowNbsp },
|
|
133
|
+
// ── quotes / dashes (spaces base) ──
|
|
134
|
+
{ name: "smart-double-quotes", base: spaces, expect: "match", oldFn: smartD },
|
|
135
|
+
{ name: "smart-single-quotes", base: spaces, expect: "match", oldFn: smartS },
|
|
136
|
+
{ name: "smart-both-quotes", base: spaces, expect: "match", oldFn: compose(smartD, smartS) },
|
|
137
|
+
{ name: "en-dash", base: spaces, expect: "match", oldFn: enDash },
|
|
138
|
+
{ name: "em-dash", base: spaces, expect: "match", oldFn: emDash },
|
|
139
|
+
{ name: "unicode-minus", base: spaces, expect: "match", oldFn: uMinus },
|
|
140
|
+
// ── realistic combos (spaces base) ──
|
|
141
|
+
{ name: "smart+trailing", base: spaces, expect: "match", oldFn: compose(smartD, trailAll) },
|
|
142
|
+
{ name: "nbsp+smart", base: spaces, expect: "match", oldFn: compose(nbspInternal, smartD) },
|
|
143
|
+
{ name: "emdash+trailing", base: spaces, expect: "match", oldFn: compose(emDash, trailAll) },
|
|
144
|
+
{
|
|
145
|
+
name: "leadingblank+trailing",
|
|
146
|
+
base: spaces,
|
|
147
|
+
expect: "match",
|
|
148
|
+
oldFn: compose(leadBlank, trailAll),
|
|
149
|
+
},
|
|
150
|
+
{ name: "zerowidth+smart", base: spaces, expect: "match", oldFn: compose(zeroWidth, smartD) },
|
|
151
|
+
{ name: "crlf+smart", base: spaces, expect: "match", oldFn: compose(crlf, smartD) },
|
|
152
|
+
{
|
|
153
|
+
name: "under-indent+smart",
|
|
154
|
+
base: spaces,
|
|
155
|
+
expect: "match",
|
|
156
|
+
oldFn: compose(underIndent, smartD),
|
|
157
|
+
newFn: underIndent,
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
name: "over-indent+smart",
|
|
161
|
+
base: spaces,
|
|
162
|
+
expect: "match",
|
|
163
|
+
oldFn: compose(overIndent, smartD),
|
|
164
|
+
newFn: overIndent,
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
name: "strip-indent+trailing",
|
|
168
|
+
base: spaces,
|
|
169
|
+
expect: "match",
|
|
170
|
+
oldFn: compose(stripIndent, trailAll),
|
|
171
|
+
newFn: stripIndent,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
name: "nbsp-leading+trailing",
|
|
175
|
+
base: spaces,
|
|
176
|
+
expect: "match",
|
|
177
|
+
oldFn: compose(nbspLeading, trailAll),
|
|
178
|
+
},
|
|
179
|
+
{ name: "ideographic+smart", base: spaces, expect: "match", oldFn: compose(ideographic, smartD) },
|
|
180
|
+
{
|
|
181
|
+
name: "thinspace+trailing",
|
|
182
|
+
base: spaces,
|
|
183
|
+
expect: "match",
|
|
184
|
+
oldFn: compose(thinSpace, trailAll),
|
|
185
|
+
},
|
|
186
|
+
{ name: "narrownbsp+smart", base: spaces, expect: "match", oldFn: compose(narrowNbsp, smartD) },
|
|
187
|
+
{ name: "bom+trailing", base: spaces, expect: "match", oldFn: compose(bom, trailAll) },
|
|
188
|
+
{ name: "uminus+trailing", base: spaces, expect: "match", oldFn: compose(uMinus, trailAll) },
|
|
189
|
+
{
|
|
190
|
+
name: "twoblank+trailing",
|
|
191
|
+
base: spaces,
|
|
192
|
+
expect: "match",
|
|
193
|
+
oldFn: compose(twoLeadBlank, trailAll),
|
|
194
|
+
},
|
|
195
|
+
// ── tabs base ──
|
|
196
|
+
{ name: "tabs-exact", base: tabs, expect: "match", oldFn: id },
|
|
197
|
+
{ name: "tabs-trailing-ws", base: tabs, expect: "match", oldFn: trailAll },
|
|
198
|
+
{ name: "tabs-smart-double", base: tabs, expect: "match", oldFn: smartD },
|
|
199
|
+
{ name: "tabs-crlf", base: tabs, expect: "match", oldFn: crlf },
|
|
200
|
+
{
|
|
201
|
+
name: "spaces-for-tab-indent",
|
|
202
|
+
base: tabs,
|
|
203
|
+
expect: "match",
|
|
204
|
+
oldFn: spacesForTab,
|
|
205
|
+
newFn: spacesForTab,
|
|
206
|
+
},
|
|
207
|
+
// ── single-line base ──
|
|
208
|
+
{ name: "single-exact", base: single, expect: "match", oldFn: id },
|
|
209
|
+
{ name: "single-trailing-ws", base: single, expect: "match", oldFn: trailAll },
|
|
210
|
+
{ name: "single-smart-double", base: single, expect: "match", oldFn: smartD },
|
|
211
|
+
{ name: "single-nbsp", base: single, expect: "match", oldFn: nbspInternal },
|
|
212
|
+
{ name: "single-zero-width", base: single, expect: "match", oldFn: zeroWidth },
|
|
213
|
+
{ name: "single-em-dash", base: single, expect: "match", oldFn: emDash },
|
|
214
|
+
{ name: "single-leading-blank", base: single, expect: "match", oldFn: leadBlank },
|
|
215
|
+
// ── correctness controls: MUST be rejected (would corrupt the file) ──
|
|
216
|
+
{ name: "renamed-token", base: spaces, expect: "reject", oldFn: renameVar },
|
|
217
|
+
{ name: "reordered-lines", base: spaces, expect: "reject", oldFn: reorderLines },
|
|
218
|
+
{ name: "renamed-token-tabs", base: tabs, expect: "reject", oldFn: renameVar },
|
|
219
|
+
// ── NFKC agnostic layer (curated) ──
|
|
220
|
+
{
|
|
221
|
+
name: "ligature-fi",
|
|
222
|
+
base: {
|
|
223
|
+
source: 'const profile = "config-file";\n',
|
|
224
|
+
old: 'const profile = "config-file";',
|
|
225
|
+
new: 'const profile = "config-data";',
|
|
226
|
+
oldMark: "config-file",
|
|
227
|
+
newMark: "config-data",
|
|
228
|
+
},
|
|
229
|
+
expect: "match",
|
|
230
|
+
// "config" contains "fi" -> ligature fi; NFKC folds it back to "fi".
|
|
231
|
+
oldFn: (s) => s.replace("fi", "\uFB01"),
|
|
232
|
+
},
|
|
233
|
+
// ── known limitations (internal-whitespace paraphrasing) ──
|
|
234
|
+
{ name: "collapsed-internal-space", base: spaces, expect: "limitation", oldFn: collapseInternal },
|
|
235
|
+
{ name: "expanded-internal-space", base: spaces, expect: "limitation", oldFn: expandInternal },
|
|
236
|
+
];
|
|
237
|
+
// Build a base from two content lines; line one carries the mark that changes.
|
|
238
|
+
function gen(id, indent, pre, line1, line2, post, marks) {
|
|
239
|
+
const oldBlock = `${indent}${line1.old}\n${indent}${line2}`;
|
|
240
|
+
const newBlock = `${indent}${line1.new}\n${indent}${line2}`;
|
|
241
|
+
const source = `${pre}\n${oldBlock}\n${post}\n`;
|
|
242
|
+
return {
|
|
243
|
+
id,
|
|
244
|
+
source,
|
|
245
|
+
old: oldBlock,
|
|
246
|
+
new: newBlock,
|
|
247
|
+
oldMark: marks.old,
|
|
248
|
+
newMark: marks.new,
|
|
249
|
+
indent,
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
const genBases = [
|
|
253
|
+
gen("ts-object", " ", "export const settings = {", { old: 'api_host: "edge-1.example.com",', new: 'api_host: "edge-2.example.com",' }, "max_items: 25,", "};", { old: "edge-1", new: "edge-2" }),
|
|
254
|
+
gen("python", " ", "def connect():", { old: 'host = "db-primary" # primary-node', new: 'host = "db-replica" # primary-node' }, "timeout: int = 30", " return host", { old: "db-primary", new: "db-replica" }),
|
|
255
|
+
gen("json", " ", "{", { old: '"name": "co-pilot",', new: '"name": "co-driver",' }, '"flag": "on-off"', "}", { old: "co-pilot", new: "co-driver" }),
|
|
256
|
+
gen("yaml", " ", "service:", { old: 'image: "nginx-stable"', new: 'image: "nginx-latest"' }, 'note: "multi-arch"', " port: 8080", { old: "nginx-stable", new: "nginx-latest" }),
|
|
257
|
+
gen("go-tabs", "\t", "func dial() string {", { old: 'addr := "node-a-1:7000"', new: 'addr := "node-b-1:7000"' }, 'mode := "read-only"', "}", { old: "node-a-1", new: "node-b-1" }),
|
|
258
|
+
gen("css", " ", ".btn {", { old: 'content: "step-one";', new: 'content: "step-two";' }, "margin: 0 auto;", "}", { old: "step-one", new: "step-two" }),
|
|
259
|
+
gen("nested-ts", " ", " return {", { old: 'kind: "task-run",', new: 'kind: "task-done",' }, "id: nextId(),", " };", { old: "task-run", new: "task-done" }),
|
|
260
|
+
gen("shell", " ", "deploy() {", { old: 'local target = "prod-west"', new: 'local target = "prod-east"' }, 'local tag = "v1-2"', "}", { old: "prod-west", new: "prod-east" }),
|
|
261
|
+
gen("markdown", "", "## Setup", { old: 'Install the "core-lib" package.', new: 'Install the "core-api" package.' }, "Run the setup-script now.", "Done.", { old: "core-lib", new: "core-api" }),
|
|
262
|
+
gen("sql", "", "SELECT * FROM users", { old: 'WHERE status = "active-1"', new: 'WHERE status = "active-2"' }, 'AND role = "read-only";', "LIMIT 10;", { old: "active-1", new: "active-2" }),
|
|
263
|
+
gen("toml", "", "[server]", { old: 'host = "web-01"', new: 'host = "web-02"' }, 'tags = "edge-cache"', "enabled = true", { old: "web-01", new: "web-02" }),
|
|
264
|
+
gen("jsx", " ", "return (", { old: '<Button label="sign-in" />', new: '<Button label="sign-up" />' }, "<Spacer size={8} />", ");", { old: "sign-in", new: "sign-up" }),
|
|
265
|
+
];
|
|
266
|
+
const IDEO = "\u3000";
|
|
267
|
+
const firstInner = (repl) => (s) => s.replace(/(\S) /, `$1${repl}`); // first space following a non-space char
|
|
268
|
+
const insertAfterInner = (ins) => (s) => s.replace(/(\S) /, `$1 ${ins}`);
|
|
269
|
+
const underIndentB = (s, b) => b.indent
|
|
270
|
+
? s
|
|
271
|
+
.split("\n")
|
|
272
|
+
.map((l) => (l.startsWith(b.indent) ? l.slice(b.indent.length) : l))
|
|
273
|
+
.join("\n")
|
|
274
|
+
: s;
|
|
275
|
+
const overIndentB = (s, b) => s.replace(/^/gm, b.indent);
|
|
276
|
+
const stripIndentB = (s) => s.replace(/^[ \t]+/gm, "");
|
|
277
|
+
const renameToken = (s) => s.replace(/[A-Za-z]{3,}/, (m) => `${m}_XYZ`);
|
|
278
|
+
// Map printable ASCII (0x21-0x7E) to fullwidth forms; NFKC folds them back.
|
|
279
|
+
const toFullwidth = (s) => s.replace(/[!-~]/g, (c) => String.fromCharCode(c.charCodeAt(0) + 0xfee0));
|
|
280
|
+
const genTransforms = [
|
|
281
|
+
{ name: "trailing-ws", expect: "match", old: (s) => trailAll(s) },
|
|
282
|
+
{ name: "leading-blank", expect: "match", old: (s) => leadBlank(s) },
|
|
283
|
+
{ name: "leading-blanks-3", expect: "match", old: (s) => "\n\n\n" + s },
|
|
284
|
+
{ name: "trailing-blank", expect: "match", old: (s) => s + "\n\n" },
|
|
285
|
+
{ name: "crlf", expect: "match", old: (s) => crlf(s) },
|
|
286
|
+
{ name: "smart-double", expect: "match", old: (s) => smartD(s) },
|
|
287
|
+
{ name: "internal-nbsp", expect: "match", old: (s) => firstInner(NBSP)(s) },
|
|
288
|
+
{ name: "internal-zwsp", expect: "match", old: (s) => insertAfterInner("\u200B")(s) },
|
|
289
|
+
{ name: "internal-ideographic", expect: "match", old: (s) => firstInner(IDEO)(s) },
|
|
290
|
+
{ name: "em-dash", expect: "match", old: (s) => emDash(s) },
|
|
291
|
+
{ name: "en-dash", expect: "match", old: (s) => enDash(s) },
|
|
292
|
+
{ name: "word-joiner", expect: "match", old: (s) => insertAfterInner("\u2060")(s) },
|
|
293
|
+
// NFKC agnostic layer — folded generically, not enumerated.
|
|
294
|
+
{ name: "fullwidth-quotes", expect: "match", old: (s) => s.replace(/"/g, "\uFF02") },
|
|
295
|
+
{ name: "horizontal-bar", expect: "match", old: (s) => s.replace(/-/g, "\u2015") },
|
|
296
|
+
{ name: "fullwidth-content", expect: "match", old: (s) => toFullwidth(s) },
|
|
297
|
+
{
|
|
298
|
+
name: "under-indent",
|
|
299
|
+
expect: "match",
|
|
300
|
+
needsIndent: true,
|
|
301
|
+
old: (s, b) => underIndentB(s, b),
|
|
302
|
+
new: (s, b) => underIndentB(s, b),
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
name: "over-indent",
|
|
306
|
+
expect: "match",
|
|
307
|
+
needsIndent: true,
|
|
308
|
+
old: (s, b) => overIndentB(s, b),
|
|
309
|
+
new: (s, b) => overIndentB(s, b),
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
name: "strip-indent",
|
|
313
|
+
expect: "match",
|
|
314
|
+
needsIndent: true,
|
|
315
|
+
old: (s) => stripIndentB(s),
|
|
316
|
+
new: (s) => stripIndentB(s),
|
|
317
|
+
},
|
|
318
|
+
{ name: "smart+trailing", expect: "match", old: (s) => trailAll(smartD(s)) },
|
|
319
|
+
{ name: "nbsp+smart", expect: "match", old: (s) => smartD(firstInner(NBSP)(s)) },
|
|
320
|
+
{ name: "crlf+smart", expect: "match", old: (s) => smartD(crlf(s)) },
|
|
321
|
+
{ name: "leadingblank+trailing", expect: "match", old: (s) => leadBlank(trailAll(s)) },
|
|
322
|
+
{
|
|
323
|
+
name: "underindent+smart",
|
|
324
|
+
expect: "match",
|
|
325
|
+
needsIndent: true,
|
|
326
|
+
old: (s, b) => smartD(underIndentB(s, b)),
|
|
327
|
+
new: (s, b) => underIndentB(s, b),
|
|
328
|
+
},
|
|
329
|
+
// Correctness controls: must NOT be applied.
|
|
330
|
+
{ name: "renamed-token", expect: "reject", old: (s) => renameToken(s) },
|
|
331
|
+
{ name: "reordered-lines", expect: "reject", old: (s) => reorderLines(s) },
|
|
332
|
+
];
|
|
333
|
+
const generatedScenarios = genBases.flatMap((b) => genTransforms
|
|
334
|
+
.filter((t) => !(t.needsIndent && b.indent === ""))
|
|
335
|
+
.map((t) => {
|
|
336
|
+
const base = {
|
|
337
|
+
source: b.source,
|
|
338
|
+
old: b.old,
|
|
339
|
+
new: b.new,
|
|
340
|
+
oldMark: b.oldMark,
|
|
341
|
+
newMark: b.newMark,
|
|
342
|
+
};
|
|
343
|
+
return {
|
|
344
|
+
name: `${b.id}/${t.name}`,
|
|
345
|
+
base,
|
|
346
|
+
expect: t.expect,
|
|
347
|
+
oldFn: (s) => t.old(s, b),
|
|
348
|
+
newFn: t.new ? (s) => t.new(s, b) : id,
|
|
349
|
+
};
|
|
350
|
+
}));
|
|
351
|
+
const allScenarios = [...scenarios, ...generatedScenarios];
|
|
352
|
+
describe("edit tool matcher robustness benchmark", () => {
|
|
353
|
+
let tmpDir;
|
|
354
|
+
beforeEach(async () => {
|
|
355
|
+
tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "edit-robustness-"));
|
|
356
|
+
});
|
|
357
|
+
afterEach(async () => {
|
|
358
|
+
await fs.rm(tmpDir, { recursive: true, force: true });
|
|
359
|
+
});
|
|
360
|
+
async function run(sc) {
|
|
361
|
+
const fileName = `${sc.name.replace(/[^A-Za-z0-9]+/g, "_")}.txt`;
|
|
362
|
+
const filePath = path.join(tmpDir, fileName);
|
|
363
|
+
await fs.writeFile(filePath, sc.base.source);
|
|
364
|
+
const tool = createEditTool(tmpDir);
|
|
365
|
+
try {
|
|
366
|
+
await tool.execute({
|
|
367
|
+
file_path: fileName,
|
|
368
|
+
edits: [{ old_text: sc.oldFn(sc.base.old), new_text: (sc.newFn ?? id)(sc.base.new) }],
|
|
369
|
+
}, { signal: new AbortController().signal, toolCallId: sc.name });
|
|
370
|
+
}
|
|
371
|
+
catch {
|
|
372
|
+
/* failed match throws */
|
|
373
|
+
}
|
|
374
|
+
const written = await fs.readFile(filePath, "utf-8");
|
|
375
|
+
const applied = written !== sc.base.source;
|
|
376
|
+
const hasNew = written.includes(sc.base.newMark);
|
|
377
|
+
const hasOld = written.includes(sc.base.oldMark);
|
|
378
|
+
const correct = sc.expect === "match"
|
|
379
|
+
? applied && hasNew && !hasOld
|
|
380
|
+
: // reject + limitation: must NOT have mis-applied a wrong edit
|
|
381
|
+
!applied && hasOld && !hasNew;
|
|
382
|
+
return { correct, applied };
|
|
383
|
+
}
|
|
384
|
+
it("matches realistic LLM drift and rejects genuine mismatches (150+ scenarios)", async () => {
|
|
385
|
+
const rows = [];
|
|
386
|
+
for (const sc of allScenarios) {
|
|
387
|
+
const { correct } = await run(sc);
|
|
388
|
+
rows.push({ name: sc.name, expect: sc.expect, correct });
|
|
389
|
+
}
|
|
390
|
+
const byExpect = (e) => rows.filter((r) => r.expect === e);
|
|
391
|
+
const matchRows = byExpect("match");
|
|
392
|
+
const rejectRows = byExpect("reject");
|
|
393
|
+
const limitationRows = byExpect("limitation");
|
|
394
|
+
const matchPass = matchRows.filter((r) => r.correct).length;
|
|
395
|
+
const rejectPass = rejectRows.filter((r) => r.correct).length;
|
|
396
|
+
const misses = rows.filter((r) => !r.correct);
|
|
397
|
+
const missTable = misses.length
|
|
398
|
+
? misses.map((r) => ` MISS [${r.expect.padEnd(10)}] ${r.name}`).join("\n")
|
|
399
|
+
: " (none)";
|
|
400
|
+
console.info(`\nEdit matcher robustness — ${allScenarios.length} scenarios\n` +
|
|
401
|
+
` match : ${matchPass}/${matchRows.length}\n` +
|
|
402
|
+
` reject: ${rejectPass}/${rejectRows.length} (genuine mismatches correctly NOT applied)\n` +
|
|
403
|
+
` limitations (tracked, not asserted): ${limitationRows.length}\n` +
|
|
404
|
+
` failures:\n${missTable}\n`);
|
|
405
|
+
// Every realistic drift must match.
|
|
406
|
+
for (const r of matchRows) {
|
|
407
|
+
expect(`${r.name}:${r.correct}`).toBe(`${r.name}:true`);
|
|
408
|
+
}
|
|
409
|
+
// Every genuine mismatch must be rejected — never silently mis-applied.
|
|
410
|
+
for (const r of rejectRows) {
|
|
411
|
+
expect(`${r.name}:${r.correct}`).toBe(`${r.name}:true`);
|
|
412
|
+
}
|
|
413
|
+
});
|
|
414
|
+
});
|
|
415
|
+
//# sourceMappingURL=edit-robustness.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-robustness.test.js","sourceRoot":"","sources":["../../src/tools/edit-robustness.test.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/edit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAYrD,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAKL,KAAK,QAAQ,EACd,MAAM,yBAAyB,CAAC;AAEjC,KAAK,gBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAuCnE,QAAA,MAAM,UAAU;;;;;;;;iBAgBd,CAAC;AAsDH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,WAAW,EACvB,GAAG,GAAE,cAAgC,EACrC,0BAA0B,CAAC,EAAE;IAAE,OAAO,EAAE,QAAQ,CAAA;CAAE,GAAG,gBAAgB,EACrE,0BAA0B,CAAC,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,gBAAgB,EACpE,aAAa,CAAC,EAAE,gBAAgB,EAChC,iBAAiB,CAAC,EAAE,gBAAgB,GACnC,SAAS,CAAC,OAAO,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAYrD,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAKL,KAAK,QAAQ,EACd,MAAM,yBAAyB,CAAC;AAEjC,KAAK,gBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAuCnE,QAAA,MAAM,UAAU;;;;;;;;iBAgBd,CAAC;AAsDH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,WAAW,EACvB,GAAG,GAAE,cAAgC,EACrC,0BAA0B,CAAC,EAAE;IAAE,OAAO,EAAE,QAAQ,CAAA;CAAE,GAAG,gBAAgB,EACrE,0BAA0B,CAAC,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,gBAAgB,EACpE,aAAa,CAAC,EAAE,gBAAgB,EAChC,iBAAiB,CAAC,EAAE,gBAAgB,GACnC,SAAS,CAAC,OAAO,UAAU,CAAC,CA6O9B"}
|
package/dist/tools/edit.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { resolvePath, rejectSymlink } from "./path-utils.js";
|
|
4
|
-
import { fuzzyFindText, countOccurrences, generateDiff, findClosestSnippet, findOccurrenceLines,
|
|
4
|
+
import { fuzzyFindText, countOccurrences, generateDiff, findClosestSnippet, findOccurrenceLines, stripBlankEdges, applyDotdotdots, applyMissingLeadingWhitespace, } from "./edit-diff.js";
|
|
5
5
|
import { localOperations } from "./operations.js";
|
|
6
6
|
import { assertFresh, recordWrite } from "./read-tracker.js";
|
|
7
7
|
import { goalModeRestriction, isGoalModeActive, isPlanModeActive, planModeRestriction, } from "../core/runtime-mode.js";
|
|
@@ -133,7 +133,7 @@ export function createEditTool(cwd, readFiles, ops = localOperations, goalModeRe
|
|
|
133
133
|
// Order mirrors aider/coders/editblock_coder.py:
|
|
134
134
|
// 1. exact + smart-quote/dash fuzzy (in tryMatch)
|
|
135
135
|
// 2. indent-flex (model omitted/shortened leading whitespace)
|
|
136
|
-
// 3. drop leading blank
|
|
136
|
+
// 3. drop spurious leading/trailing blank lines, retry 1+2
|
|
137
137
|
// 4. dotdotdots (`...` elision with preserved middle)
|
|
138
138
|
let result = tryMatch(working, normalizedOld, normalizedNew, replaceAll);
|
|
139
139
|
const tryFallbacks = (oldText) => {
|
|
@@ -153,7 +153,7 @@ export function createEditTool(cwd, readFiles, ops = localOperations, goalModeRe
|
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
155
|
if (!result.ok && result.reason === "not_found") {
|
|
156
|
-
const stripped =
|
|
156
|
+
const stripped = stripBlankEdges(normalizedOld);
|
|
157
157
|
if (stripped !== null) {
|
|
158
158
|
const candidate = tryFallbacks(stripped);
|
|
159
159
|
if (candidate !== null)
|
|
@@ -199,7 +199,6 @@ export function createEditTool(cwd, readFiles, ops = localOperations, goalModeRe
|
|
|
199
199
|
.map((o, i) => (o.ok || !o.failure ? null : { index: i, failure: o.failure }))
|
|
200
200
|
.filter((x) => x !== null);
|
|
201
201
|
const successCount = outcomes.length - failures.length;
|
|
202
|
-
const hasNotFound = failures.some((f) => f.failure.reason === "not_found");
|
|
203
202
|
// Closest-match snippets only get suppressed when successes will ACTUALLY
|
|
204
203
|
// be persisted (partial-apply with at least one win). In atomic mode we
|
|
205
204
|
// throw before writing, so the model retries against an unchanged file
|
|
@@ -219,7 +218,8 @@ export function createEditTool(cwd, readFiles, ops = localOperations, goalModeRe
|
|
|
219
218
|
}
|
|
220
219
|
const base = `old_text not found in ${fileName}. ` +
|
|
221
220
|
"Text must match verbatim — do not paraphrase. " +
|
|
222
|
-
"
|
|
221
|
+
"Fix this edit's old_text to match the file exactly (re-read the region below if unsure); " +
|
|
222
|
+
"the file is unchanged, so successful edits and prior reads are still valid.";
|
|
223
223
|
// Build a bounded read suggestion around the closest-match line so the
|
|
224
224
|
// model can re-read just that region (e.g. ±25 lines) instead of the
|
|
225
225
|
// whole file. Skipped when willPersistSuccesses — see comment above.
|
|
@@ -242,12 +242,12 @@ export function createEditTool(cwd, readFiles, ops = localOperations, goalModeRe
|
|
|
242
242
|
// succeeded. Either way nothing should be written and we throw to make
|
|
243
243
|
// the model retry the whole batch.
|
|
244
244
|
if (failures.length > 0 && (atomic || successCount === 0)) {
|
|
245
|
-
//
|
|
246
|
-
//
|
|
247
|
-
//
|
|
248
|
-
//
|
|
249
|
-
|
|
250
|
-
|
|
245
|
+
// Nothing was written — the file is byte-identical to the last read, so
|
|
246
|
+
// the read tracker stays valid. We deliberately do NOT invalidate it
|
|
247
|
+
// here: doing so turned a precise "old_text not found (closest match
|
|
248
|
+
// below)" error into a misleading "File must be read first" on every
|
|
249
|
+
// following edit, hiding the real fix from the model. assertFresh still
|
|
250
|
+
// catches genuine on-disk changes (formatter/external edit).
|
|
251
251
|
const header = atomic && failures.length > 0
|
|
252
252
|
? `${failures.length} of ${edits.length} edit${edits.length === 1 ? "" : "s"} failed; no changes written (atomic).\n\n`
|
|
253
253
|
: edits.length > 1
|
|
@@ -265,11 +265,10 @@ export function createEditTool(cwd, readFiles, ops = localOperations, goalModeRe
|
|
|
265
265
|
await ops.writeFile(resolved, finalContent);
|
|
266
266
|
await recordWrite(readFiles, resolved, finalContent, ops);
|
|
267
267
|
await mutationCallback?.(resolved);
|
|
268
|
-
//
|
|
269
|
-
//
|
|
270
|
-
//
|
|
271
|
-
|
|
272
|
-
readFiles?.delete(resolved);
|
|
268
|
+
// recordWrite refreshed the tracker to the just-written content, so the
|
|
269
|
+
// next edit (including retries of the skipped ones) validates against an
|
|
270
|
+
// accurate snapshot. No invalidation — the failure message already
|
|
271
|
+
// carries the closest match and a bounded re-read hint.
|
|
273
272
|
}
|
|
274
273
|
if (failures.length === 0) {
|
|
275
274
|
if (!changed) {
|
package/dist/tools/edit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"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"}
|