diff options
| author | Taylor Mullen <[email protected]> | 2025-05-25 13:59:05 -0700 |
|---|---|---|
| committer | N. Taylor Mullen <[email protected]> | 2025-05-25 14:01:52 -0700 |
| commit | 48781272ee32bfbeba58ca3275de4180ac945188 (patch) | |
| tree | 81488cfe329602a440433cba6284a71e2099faa4 /packages/server/src | |
| parent | 2e3eeaf920f51e93d194e36bdd8338e65061afc0 (diff) | |
Trim edits if possible.
- Since we're now LLM correcting a lot of problematic edits we need to also potentially trim bad edits (llms have a bad habbit of adding whitespace places).
Part of https://github.com/google-gemini/gemini-cli/issues/484
Diffstat (limited to 'packages/server/src')
| -rw-r--r-- | packages/server/src/utils/editCorrector.ts | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/packages/server/src/utils/editCorrector.ts b/packages/server/src/utils/editCorrector.ts index 477b2381..a17de6d4 100644 --- a/packages/server/src/utils/editCorrector.ts +++ b/packages/server/src/utils/editCorrector.ts @@ -136,6 +136,14 @@ export async function ensureCorrectEdit( } } + const { targetString, pair } = trimPairIfPossible( + finalOldString, + finalNewString, + currentContent, + ); + finalOldString = targetString; + finalNewString = pair; + // Final result construction const result: CorrectedEditResult = { params: { @@ -359,6 +367,33 @@ Return ONLY the corrected string in the specified JSON format with the key 'corr } } +function trimPairIfPossible( + target: string, + trimIfTargetTrims: string, + currentContent: string, +) { + const trimmedTargetString = target.trim(); + if (target.length !== trimmedTargetString.length) { + const trimmedTargetOccurrences = countOccurrences( + currentContent, + trimmedTargetString, + ); + + if (trimmedTargetOccurrences === 1) { + const trimmedReactiveString = trimIfTargetTrims.trim(); + return { + targetString: trimmedTargetString, + pair: trimmedReactiveString, + }; + } + } + + return { + targetString: target, + pair: trimIfTargetTrims, + }; +} + /** * Unescapes a string that might have been overly escaped by an LLM. */ |
