greenbump 0.7.0 → 0.9.0

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.
Files changed (121) hide show
  1. package/README.md +73 -15
  2. package/README.zh-CN.md +37 -4
  3. package/dist/action/github.test.js +37 -0
  4. package/dist/action/github.test.js.map +1 -0
  5. package/dist/action/main.js +19 -4
  6. package/dist/action/main.js.map +1 -1
  7. package/dist/agent/calllog.js +23 -0
  8. package/dist/agent/calllog.js.map +1 -0
  9. package/dist/agent/calllog.test.js +77 -0
  10. package/dist/agent/calllog.test.js.map +1 -0
  11. package/dist/agent/fixer.js +246 -29
  12. package/dist/agent/fixer.js.map +1 -1
  13. package/dist/agent/fixer.test.js +299 -0
  14. package/dist/agent/fixer.test.js.map +1 -1
  15. package/dist/agent/guard.js +37 -0
  16. package/dist/agent/guard.js.map +1 -0
  17. package/dist/agent/guard.test.js +48 -0
  18. package/dist/agent/guard.test.js.map +1 -0
  19. package/dist/agent/provider-anthropic.js +2 -2
  20. package/dist/agent/provider-anthropic.js.map +1 -1
  21. package/dist/agent/provider-openai.js +2 -2
  22. package/dist/agent/provider-openai.js.map +1 -1
  23. package/dist/benchmarks/run.js +0 -0
  24. package/dist/benchmarks/run.js.map +1 -0
  25. package/dist/cli/interactive.js +46 -11
  26. package/dist/cli/interactive.js.map +1 -1
  27. package/dist/cli.js +37 -7
  28. package/dist/cli.js.map +1 -1
  29. package/dist/engine/analyzers/changelog-parser.js +51 -2
  30. package/dist/engine/analyzers/changelog-parser.js.map +1 -1
  31. package/dist/engine/batch.js +54 -10
  32. package/dist/engine/batch.js.map +1 -1
  33. package/dist/engine/cache/manager.js +19 -1
  34. package/dist/engine/cache/manager.js.map +1 -1
  35. package/dist/engine/cache/manager.test.js +17 -0
  36. package/dist/engine/cache/manager.test.js.map +1 -1
  37. package/dist/engine/change-detector.js +52 -23
  38. package/dist/engine/change-detector.js.map +1 -1
  39. package/dist/engine/change-detector.test.js +72 -0
  40. package/dist/engine/change-detector.test.js.map +1 -0
  41. package/dist/engine/changelog.js +22 -2
  42. package/dist/engine/changelog.js.map +1 -1
  43. package/dist/engine/changelog.test.js +31 -0
  44. package/dist/engine/changelog.test.js.map +1 -0
  45. package/dist/engine/checks.js +10 -4
  46. package/dist/engine/checks.js.map +1 -1
  47. package/dist/engine/context/optimizer.js +14 -44
  48. package/dist/engine/context/optimizer.js.map +1 -1
  49. package/dist/engine/context/optimizer.test.js +23 -1
  50. package/dist/engine/context/optimizer.test.js.map +1 -1
  51. package/dist/engine/ecosystems/cargo.js +2 -1
  52. package/dist/engine/ecosystems/cargo.js.map +1 -1
  53. package/dist/engine/ecosystems/conan.js +2 -1
  54. package/dist/engine/ecosystems/conan.js.map +1 -1
  55. package/dist/engine/ecosystems/elm.js +2 -1
  56. package/dist/engine/ecosystems/elm.js.map +1 -1
  57. package/dist/engine/ecosystems/gradle.js +2 -1
  58. package/dist/engine/ecosystems/gradle.js.map +1 -1
  59. package/dist/engine/ecosystems/http.js +18 -0
  60. package/dist/engine/ecosystems/http.js.map +1 -0
  61. package/dist/engine/ecosystems/maven.js +2 -1
  62. package/dist/engine/ecosystems/maven.js.map +1 -1
  63. package/dist/engine/ecosystems/swiftpm.js +2 -1
  64. package/dist/engine/ecosystems/swiftpm.js.map +1 -1
  65. package/dist/engine/exec.js +37 -7
  66. package/dist/engine/exec.js.map +1 -1
  67. package/dist/engine/exec.test.js +36 -0
  68. package/dist/engine/exec.test.js.map +1 -0
  69. package/dist/engine/fixer/patterns.js +55 -18
  70. package/dist/engine/fixer/patterns.js.map +1 -1
  71. package/dist/engine/fixer/patterns.test.js +95 -1
  72. package/dist/engine/fixer/patterns.test.js.map +1 -1
  73. package/dist/engine/git.js +38 -16
  74. package/dist/engine/git.js.map +1 -1
  75. package/dist/engine/git.test.js +51 -1
  76. package/dist/engine/git.test.js.map +1 -1
  77. package/dist/engine/perf/metrics.js +44 -57
  78. package/dist/engine/perf/metrics.js.map +1 -1
  79. package/dist/engine/run.js +141 -15
  80. package/dist/engine/run.js.map +1 -1
  81. package/dist/engine/run.test.js +65 -1
  82. package/dist/engine/run.test.js.map +1 -1
  83. package/dist/engine/sandbox/docker-manager.js +52 -26
  84. package/dist/engine/sandbox/docker-manager.js.map +1 -1
  85. package/dist/engine/sandbox/template-generator.js +0 -4
  86. package/dist/engine/sandbox/template-generator.js.map +1 -1
  87. package/dist/engine/sandbox/template-generator.test.js +16 -0
  88. package/dist/engine/sandbox/template-generator.test.js.map +1 -0
  89. package/dist/engine/scan/benchmark-crosscheck.test.js +116 -0
  90. package/dist/engine/scan/benchmark-crosscheck.test.js.map +1 -0
  91. package/dist/engine/scan/detect.js +96 -0
  92. package/dist/engine/scan/detect.js.map +1 -0
  93. package/dist/engine/scan/impact.js +128 -0
  94. package/dist/engine/scan/impact.js.map +1 -0
  95. package/dist/engine/scan/impact.test.js +217 -0
  96. package/dist/engine/scan/impact.test.js.map +1 -0
  97. package/dist/engine/scan/indexer.js +129 -0
  98. package/dist/engine/scan/indexer.js.map +1 -0
  99. package/dist/engine/scan/indexer.test.js +149 -0
  100. package/dist/engine/scan/indexer.test.js.map +1 -0
  101. package/dist/engine/scan/probes.js +92 -0
  102. package/dist/engine/scan/probes.js.map +1 -0
  103. package/dist/engine/scan/probes.test.js +100 -0
  104. package/dist/engine/scan/probes.test.js.map +1 -0
  105. package/dist/engine/verify.js +41 -58
  106. package/dist/engine/verify.js.map +1 -1
  107. package/dist/engine/verify.test.js +49 -0
  108. package/dist/engine/verify.test.js.map +1 -0
  109. package/dist/format.js +96 -0
  110. package/dist/format.js.map +1 -1
  111. package/dist/format.test.js +53 -0
  112. package/dist/format.test.js.map +1 -0
  113. package/dist/pr.test.js +48 -0
  114. package/dist/pr.test.js.map +1 -0
  115. package/package.json +4 -4
  116. package/dist/engine/dep-graph.js +0 -101
  117. package/dist/engine/dep-graph.js.map +0 -1
  118. package/dist/engine/staged-fix.js +0 -108
  119. package/dist/engine/staged-fix.js.map +0 -1
  120. package/dist/engine/stages.js +0 -125
  121. package/dist/engine/stages.js.map +0 -1
@@ -1,9 +1,11 @@
1
- import { readFile, writeFile, readdir, stat } from "node:fs/promises";
1
+ import { readFile, writeFile, readdir, stat, rm } from "node:fs/promises";
2
2
  import { resolve, relative, isAbsolute, join } from "node:path";
3
+ import { createHash } from "node:crypto";
3
4
  import { runChecks } from "../engine/checks.js";
4
5
  import { getAdapter } from "../engine/pm.js";
5
6
  import { tryBuiltinCodemods, tryLearnedPatterns, tryCachedLlmFix, learnFromSuccessfulFix, buildContextKey, FixTier, } from "../engine/fixer/patterns.js";
6
7
  import { trimFailureOutput, extractCandidateFiles, findRelatedTests, buildCandidateHint, estimateTokens, } from "../engine/context/optimizer.js";
8
+ import { isProtectedWrite, isSensitivePath } from "./guard.js";
7
9
  function buildSystemPrompt(pm, deps) {
8
10
  const adapter = getAdapter(pm);
9
11
  const protectedFiles = [...adapter.manifestFiles, ...adapter.lockFiles].join(", ");
@@ -17,6 +19,7 @@ Your job: edit the project's source code so that build and tests pass again —
17
19
 
18
20
  Rules:
19
21
  - Make the smallest correct change that adapts the code to the new version's API.
22
+ - Prefer edit_file for updating existing code (targeted search/replace) to avoid accidentally truncating or omitting lines. Only use write_file for new files or complete rewrites.
20
23
  - Prefer following each dependency's documented migration path (renamed exports, changed signatures, moved modules, new required options). If release notes are provided below, treat them as authoritative over guessing.
21
24
  - Use search_code to find ALL call sites of the breaking API across the repo before editing — a partial fix that leaves other files broken wastes rounds.
22
25
  - Never edit ${protectedFiles}. The upgrade is intentional.
@@ -56,9 +59,22 @@ const tools = [
56
59
  required: ["path"],
57
60
  },
58
61
  },
62
+ {
63
+ name: "edit_file",
64
+ description: "Replace an exact chunk of text in an existing file. Strongly preferred over write_file to avoid accidental truncations or lost code.",
65
+ parameters: {
66
+ type: "object",
67
+ properties: {
68
+ path: { type: "string", description: "project-relative file path" },
69
+ old_string: { type: "string", description: "exact string to replace (must match uniquely in file)" },
70
+ new_string: { type: "string", description: "replacement string" },
71
+ },
72
+ required: ["path", "old_string", "new_string"],
73
+ },
74
+ },
59
75
  {
60
76
  name: "write_file",
61
- description: "Overwrite a project-relative file with new contents.",
77
+ description: "Overwrite a project-relative file with new contents (or create new file). For small edits, prefer edit_file.",
62
78
  parameters: {
63
79
  type: "object",
64
80
  properties: { path: { type: "string" }, content: { type: "string" } },
@@ -119,6 +135,11 @@ async function searchCode(cwd, root, query) {
119
135
  const dot = e.name.lastIndexOf(".");
120
136
  if (dot < 0 || !SEARCHABLE_EXT.has(e.name.slice(dot)))
121
137
  continue;
138
+ // Same secrets boundary as read_file: never let matching lines from a
139
+ // credentials file (e.g. secrets.json) flow into a tool result — they
140
+ // would be sent to the LLM provider.
141
+ if (isSensitivePath(e.name))
142
+ continue;
122
143
  let s;
123
144
  try {
124
145
  s = await stat(abs);
@@ -193,23 +214,100 @@ async function toolResult(cwd, pm, checkOverrides, name, input, onFixSuggestion)
193
214
  }
194
215
  case "read_file": {
195
216
  const abs = safePath(cwd, input.path);
217
+ const rel = relative(cwd, abs);
218
+ if (isSensitivePath(rel)) {
219
+ return { text: `(refused: ${input.path} looks like a secrets/credentials file — its contents are never sent to the model)` };
220
+ }
196
221
  const s = await stat(abs);
197
222
  if (s.size > 200_000)
198
223
  return { text: "(file too large to read)" };
199
224
  return { text: await readFile(abs, "utf8") };
200
225
  }
226
+ case "edit_file": {
227
+ const abs = safePath(cwd, input.path);
228
+ const rel = relative(cwd, abs);
229
+ const adapter = getAdapter(pm);
230
+ if (isProtectedWrite(rel, adapter.manifestFiles, adapter.lockFiles)) {
231
+ return {
232
+ text: `error: edit to ${input.path} blocked — it is a dependency manifest/lockfile or secrets file.`,
233
+ };
234
+ }
235
+ let content = "";
236
+ try {
237
+ content = await readFile(abs, "utf8");
238
+ }
239
+ catch (err) {
240
+ return { text: `error: file ${input.path} does not exist (use write_file to create new files)` };
241
+ }
242
+ const oldStr = input.old_string;
243
+ const newStr = input.new_string;
244
+ if (!oldStr) {
245
+ return { text: `error: old_string cannot be empty` };
246
+ }
247
+ const occurrences = content.split(oldStr).length - 1;
248
+ if (occurrences === 0) {
249
+ return {
250
+ text: `error: old_string not found in ${input.path}. Make sure the string matches verbatim, including indentation and whitespace.`,
251
+ };
252
+ }
253
+ if (occurrences > 1) {
254
+ return {
255
+ text: `error: old_string matched ${occurrences} locations in ${input.path}. Please provide more surrounding lines for unique context.`,
256
+ };
257
+ }
258
+ const updated = content.replace(oldStr, newStr);
259
+ if (onFixSuggestion) {
260
+ const decision = await onFixSuggestion({
261
+ path: input.path,
262
+ diff: simpleDiff(input.path, content, updated),
263
+ });
264
+ switch (decision.action) {
265
+ case "reject":
266
+ return { text: `edit to ${input.path} REJECTED by user — do not retry the same change`, skipped: true };
267
+ case "skip":
268
+ return { text: `edit to ${input.path} skipped by user`, skipped: true };
269
+ case "edit":
270
+ await writeFile(abs, decision.content, "utf8");
271
+ return { text: `applied user-edited changes to ${input.path}` };
272
+ case "accept":
273
+ break;
274
+ }
275
+ }
276
+ await writeFile(abs, updated, "utf8");
277
+ return { text: `edited ${input.path}` };
278
+ }
201
279
  case "write_file": {
202
280
  const abs = safePath(cwd, input.path);
281
+ const rel = relative(cwd, abs);
282
+ const adapter = getAdapter(pm);
283
+ if (isProtectedWrite(rel, adapter.manifestFiles, adapter.lockFiles)) {
284
+ return {
285
+ text: `error: write to ${input.path} blocked — it is a dependency manifest/lockfile or secrets file managed outside the fix agent. Fix the source code instead.`,
286
+ };
287
+ }
203
288
  let content = input.content;
289
+ // Anti-truncation guard: if existing file has > 40 lines and new content drops > 50% lines,
290
+ // warn model to use edit_file or verify it didn't accidentally truncate.
291
+ let oldContent = "";
292
+ let exists = false;
293
+ try {
294
+ oldContent = await readFile(abs, "utf8");
295
+ exists = true;
296
+ }
297
+ catch {
298
+ // new file
299
+ }
300
+ if (exists) {
301
+ const oldLines = oldContent.split("\n").length;
302
+ const newLines = content.split("\n").length;
303
+ if (oldLines > 40 && newLines < oldLines * 0.5) {
304
+ return {
305
+ text: `error: write_file rejected due to code truncation safety guard. The existing file has ${oldLines} lines, but proposed content has only ${newLines} lines (loss of > 50%). If you are fixing a small section, use edit_file instead to avoid deleting code.`,
306
+ };
307
+ }
308
+ }
204
309
  // Interactive gate: show the proposed edit and wait for a decision.
205
310
  if (onFixSuggestion) {
206
- let oldContent = "";
207
- try {
208
- oldContent = await readFile(abs, "utf8");
209
- }
210
- catch {
211
- // new file
212
- }
213
311
  const decision = await onFixSuggestion({
214
312
  path: input.path,
215
313
  diff: simpleDiff(input.path, oldContent, content),
@@ -249,16 +347,40 @@ function isRetryable(err) {
249
347
  return /connection error|ECONNRESET|ETIMEDOUT|EAI_AGAIN|fetch failed|network|429|500|502|503|504/i.test(msg);
250
348
  }
251
349
  /** Call the provider with retry/backoff for transient network or server errors. */
252
- async function sendWithRetry(provider, system, messages, toolSpecs, log) {
350
+ async function sendWithRetry(provider, system, messages, toolSpecs, log, feature, onLlmCall) {
351
+ const startedAt = Date.now();
253
352
  let lastErr;
254
353
  for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
255
354
  try {
256
- return await provider.send(system, messages, toolSpecs);
355
+ const turn = await provider.send(system, messages, toolSpecs);
356
+ await onLlmCall?.({
357
+ feature,
358
+ provider: provider.name,
359
+ model: provider.model,
360
+ inputTokens: turn.usage.inputTokens,
361
+ outputTokens: turn.usage.outputTokens,
362
+ durationMs: Date.now() - startedAt,
363
+ attempts: attempt,
364
+ ok: true,
365
+ });
366
+ return turn;
257
367
  }
258
368
  catch (err) {
259
369
  lastErr = err;
260
- if (attempt === MAX_RETRIES || !isRetryable(err))
370
+ if (attempt === MAX_RETRIES || !isRetryable(err)) {
371
+ await onLlmCall?.({
372
+ feature,
373
+ provider: provider.name,
374
+ model: provider.model,
375
+ inputTokens: 0,
376
+ outputTokens: 0,
377
+ durationMs: Date.now() - startedAt,
378
+ attempts: attempt,
379
+ ok: false,
380
+ error: err.message.slice(0, 200),
381
+ });
261
382
  throw err;
383
+ }
262
384
  const delay = RETRY_BASE_DELAY_MS * 2 ** (attempt - 1);
263
385
  log(`provider request failed (${err.message}) — retrying in ${delay}ms (attempt ${attempt}/${MAX_RETRIES})`);
264
386
  await new Promise((r) => setTimeout(r, delay));
@@ -270,7 +392,6 @@ export async function runFixLoop(opts) {
270
392
  const { provider, pm, checkOverrides } = opts;
271
393
  const log = opts.onLog ?? (() => { });
272
394
  const usage = { inputTokens: 0, outputTokens: 0 };
273
- const editedFiles = new Set();
274
395
  const SYSTEM = buildSystemPrompt(pm, opts.deps);
275
396
  // ── Context optimization: trim failure output, find candidate files ──────
276
397
  const trimmedFailure = trimFailureOutput(opts.failureOutput);
@@ -286,7 +407,19 @@ export async function runFixLoop(opts) {
286
407
  const primaryDep = opts.deps?.[0]?.dep ?? opts.dep;
287
408
  const primaryFrom = opts.deps?.[0]?.from ?? opts.from;
288
409
  const primaryTo = opts.deps?.[0]?.to ?? opts.to;
289
- const contextKey = buildContextKey(primaryDep, primaryFrom, primaryTo, trimmedFailure);
410
+ // Bind the tier-3 cache key to the actual file contents being fixed —
411
+ // same error text + different code must NOT replay another project's fix.
412
+ const fingerprint = createHash("sha256");
413
+ for (const f of candidateFiles) {
414
+ try {
415
+ fingerprint.update(f);
416
+ fingerprint.update(await readFile(join(opts.cwd, f), "utf8"));
417
+ }
418
+ catch {
419
+ // unreadable — leave it out of the fingerprint
420
+ }
421
+ }
422
+ const contextKey = buildContextKey(primaryDep, primaryFrom, primaryTo, trimmedFailure, candidateFiles.length > 0 ? fingerprint.digest("hex").slice(0, 16) : undefined);
290
423
  // ── Free tiers: codemods → learned patterns → cached LLM fix ────────────
291
424
  if (!opts.noFreeTiers) {
292
425
  const patternCtx = {
@@ -297,6 +430,9 @@ export async function runFixLoop(opts) {
297
430
  failureOutput: trimmedFailure,
298
431
  candidateFiles: candidateFiles.length > 0 ? candidateFiles : ["."],
299
432
  };
433
+ // Snapshot candidate files once so any tier whose rewrite fails the check
434
+ // can be rolled back cleanly (regex codemods can produce broken code).
435
+ const preTierSnapshot = await snapshotFiles(opts.cwd, patternCtx.candidateFiles);
300
436
  // Tier 1: built-in codemods
301
437
  const t1 = await tryBuiltinCodemods(patternCtx);
302
438
  if (t1.advice && t1.advice.length > 0) {
@@ -310,9 +446,8 @@ export async function runFixLoop(opts) {
310
446
  log("tier 1 (codemod): check passed — fixed with 0 tokens");
311
447
  return tierResult(true, t1.editedFiles, FixTier.REGEX);
312
448
  }
313
- log("tier 1 (codemod): edit applied but check still failing — escalating");
314
- for (const f of t1.editedFiles)
315
- editedFiles.add(f);
449
+ log("tier 1 (codemod): edit applied but check still failing — rolling back and escalating");
450
+ await rollbackTierEdits(opts.cwd, t1.editedFiles, preTierSnapshot);
316
451
  }
317
452
  // Tier 2: learned patterns from cache
318
453
  if (!opts.noCache) {
@@ -322,11 +457,10 @@ export async function runFixLoop(opts) {
322
457
  const check = await runChecks(pm, opts.cwd, checkOverrides);
323
458
  if (check.ok) {
324
459
  log("tier 2 (learned pattern): check passed — fixed with 0 tokens");
325
- return tierResult(true, [...editedFiles, ...t2.editedFiles], FixTier.RULE, true);
460
+ return tierResult(true, t2.editedFiles, FixTier.RULE, true);
326
461
  }
327
- log("tier 2 (learned pattern): edit applied but check still failing — escalating");
328
- for (const f of t2.editedFiles)
329
- editedFiles.add(f);
462
+ log("tier 2 (learned pattern): edit applied but check still failing — rolling back and escalating");
463
+ await rollbackTierEdits(opts.cwd, t2.editedFiles, preTierSnapshot);
330
464
  }
331
465
  // Tier 3: cached LLM fix for identical failure
332
466
  const t3 = await tryCachedLlmFix(patternCtx, contextKey);
@@ -335,11 +469,10 @@ export async function runFixLoop(opts) {
335
469
  const check = await runChecks(pm, opts.cwd, checkOverrides);
336
470
  if (check.ok) {
337
471
  log("tier 3 (cached fix): check passed — fixed with 0 tokens");
338
- return tierResult(true, [...editedFiles, ...t3.editedFiles], FixTier.CACHED, true);
472
+ return tierResult(true, t3.editedFiles, FixTier.CACHED, true);
339
473
  }
340
- log("tier 3 (cached fix): didn't resolve in this project — escalating to LLM");
341
- for (const f of t3.editedFiles)
342
- editedFiles.add(f);
474
+ log("tier 3 (cached fix): didn't resolve in this project — rolling back and escalating to LLM");
475
+ await rollbackTierEdits(opts.cwd, t3.editedFiles, preTierSnapshot);
343
476
  }
344
477
  }
345
478
  }
@@ -374,10 +507,45 @@ Fix the source code so build and tests pass. Call run_check to verify before fin
374
507
  let budgetExceeded = false;
375
508
  let round = 0;
376
509
  const llmEditedFiles = new Set();
510
+ // ── Enhanced verification feedback ─────────────────────────────────────
511
+ // Verifiers that run after build/tests pass (type check, API surface) used
512
+ // to be one-way notifications to the user. Now their actionable findings go
513
+ // back into the conversation so the agent can fix them itself. Two guards
514
+ // keep this bounded: the loop still lives inside maxRounds/maxTokens, and an
515
+ // identical report twice means the agent provably can't fix it — stop.
516
+ const seenReports = new Set();
517
+ let enhancedRounds = 0;
518
+ let enhancedStuck = false;
519
+ /** Returns "continue" when verifier findings were fed back for another round. */
520
+ async function enhancedFeedback(currentRound) {
521
+ if (!opts.verifyEnhanced)
522
+ return "stop";
523
+ const v = await opts.verifyEnhanced(opts.cwd, [...llmEditedFiles]);
524
+ if (!v.hasIssues)
525
+ return "stop";
526
+ const hash = createHash("sha256").update(v.report).digest("hex");
527
+ if (seenReports.has(hash)) {
528
+ enhancedStuck = true;
529
+ log(`round ${currentRound}: enhanced verification reports the identical problem again (${v.summary}) — agent can't fix it, flagging for review`);
530
+ return "stop";
531
+ }
532
+ if (currentRound >= opts.maxRounds) {
533
+ // No rounds left — end here; the post-loop checks will flag the review.
534
+ return "stop";
535
+ }
536
+ seenReports.add(hash);
537
+ enhancedRounds++;
538
+ log(`round ${currentRound}: enhanced verification — ${v.summary}; feeding back for another round`);
539
+ messages.push({
540
+ role: "user",
541
+ text: `Build and tests pass, but additional verification found problems that must be fixed:\n\n${v.report}\n\nFix these without breaking the build/tests.`,
542
+ });
543
+ return "continue";
544
+ }
377
545
  for (round = 1; round <= opts.maxRounds; round++) {
378
546
  const remaining = opts.maxRounds - round + 1;
379
547
  const system = remaining <= 2 ? `${SYSTEM}\n\nYou have ${remaining} round(s) left. Wrap up and verify now.` : SYSTEM;
380
- const turn = await sendWithRetry(provider, system, messages, tools, log);
548
+ const turn = await sendWithRetry(provider, system, messages, tools, log, "fix-loop", opts.onLlmCall);
381
549
  usage.inputTokens += turn.usage.inputTokens;
382
550
  usage.outputTokens += turn.usage.outputTokens;
383
551
  messages.push({ role: "assistant", text: turn.text, toolCalls: turn.toolCalls });
@@ -389,13 +557,16 @@ Fix the source code so build and tests pass. Call run_check to verify before fin
389
557
  if (turn.toolCalls.length === 0) {
390
558
  // Model stopped without a tool call — verify once and finish.
391
559
  const r = await runChecks(pm, opts.cwd, checkOverrides);
560
+ if (r.ok && (await enhancedFeedback(round)) === "continue") {
561
+ continue;
562
+ }
392
563
  fixed = r.ok;
393
564
  log(`round ${round}: agent stopped, final check ${r.ok ? "PASS" : "FAIL"}`);
394
565
  break;
395
566
  }
396
567
  const results = [];
397
568
  for (const tc of turn.toolCalls) {
398
- if (tc.name === "write_file") {
569
+ if (tc.name === "write_file" || tc.name === "edit_file") {
399
570
  llmEditedFiles.add(tc.input.path);
400
571
  }
401
572
  let out;
@@ -416,13 +587,17 @@ Fix the source code so build and tests pass. Call run_check to verify before fin
416
587
  }
417
588
  messages.push({ role: "tool", results });
418
589
  if (fixed) {
590
+ if ((await enhancedFeedback(round)) === "continue") {
591
+ fixed = false;
592
+ continue;
593
+ }
419
594
  log(`round ${round}: check passed — fixed`);
420
595
  break;
421
596
  }
422
597
  }
423
598
  // Learn from a successful LLM fix so the next identical failure is free.
424
599
  if (fixed && !opts.noCache) {
425
- const allEdited = [...editedFiles, ...llmEditedFiles];
600
+ const allEdited = [...llmEditedFiles];
426
601
  await learnFromSuccessfulFix({
427
602
  cwd: opts.cwd,
428
603
  packageName: primaryDep,
@@ -440,9 +615,11 @@ Fix the source code so build and tests pass. Call run_check to verify before fin
440
615
  rounds: Math.min(round, opts.maxRounds),
441
616
  unverifiable: false,
442
617
  usage,
443
- editedFiles: [...editedFiles, ...llmEditedFiles],
618
+ editedFiles: [...llmEditedFiles],
444
619
  budgetExceeded,
445
620
  fixedByTier: fixed ? FixTier.LLM : undefined,
621
+ enhancedRounds,
622
+ enhancedStuck: enhancedStuck || undefined,
446
623
  };
447
624
  }
448
625
  function tierResult(fixed, editedFiles, tier, cacheHit = false) {
@@ -455,6 +632,46 @@ function tierResult(fixed, editedFiles, tier, cacheHit = false) {
455
632
  budgetExceeded: false,
456
633
  fixedByTier: tier,
457
634
  cacheHit,
635
+ enhancedRounds: 0,
458
636
  };
459
637
  }
638
+ /**
639
+ * Snapshot the current contents of the given candidate files (those that
640
+ * exist) so a failed free-tier rewrite can be rolled back instead of
641
+ * leaving half-broken code for the next tier to trip over.
642
+ */
643
+ async function snapshotFiles(cwd, files) {
644
+ const snap = new Map();
645
+ for (const f of files) {
646
+ try {
647
+ const abs = join(cwd, f);
648
+ if (!(await stat(abs)).isFile())
649
+ continue;
650
+ snap.set(f, await readFile(abs, "utf8"));
651
+ }
652
+ catch {
653
+ // unreadable — nothing to snapshot
654
+ }
655
+ }
656
+ return snap;
657
+ }
658
+ /**
659
+ * Restore tier-edited files to their pre-tier contents; files the tier
660
+ * created (not in the snapshot) are removed. Best-effort.
661
+ */
662
+ async function rollbackTierEdits(cwd, editedFiles, snapshot) {
663
+ for (const f of editedFiles) {
664
+ const abs = join(cwd, f);
665
+ try {
666
+ const prev = snapshot.get(f);
667
+ if (prev === undefined)
668
+ await rm(abs, { force: true });
669
+ else
670
+ await writeFile(abs, prev, "utf8");
671
+ }
672
+ catch {
673
+ // best effort — the git branch is the outer safety net
674
+ }
675
+ }
676
+ }
460
677
  //# sourceMappingURL=fixer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fixer.js","sourceRoot":"","sources":["../../src/agent/fixer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fixer.js","sourceRoot":"","sources":["../../src/agent/fixer.ts"],"names":[],"mappings":"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"}