Skip to content

Commit daaf458

Browse files
committed
feat: add internationalized error titles to all tool handleError calls
1 parent b34dc7c commit daaf458

34 files changed

+528
-76
lines changed

src/core/tools/__tests__/writeToFileTool.spec.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,11 @@ describe("writeToFileTool", () => {
403403

404404
await executeWriteFileTool({})
405405

406-
expect(mockHandleError).toHaveBeenCalledWith("writing file", expect.any(Error), "Write File Error")
406+
expect(mockHandleError).toHaveBeenCalledWith(
407+
"writing file",
408+
expect.any(Error),
409+
"writeToFile.errors.writeFileError",
410+
)
407411
expect(mockCline.diffViewProvider.reset).toHaveBeenCalled()
408412
})
409413

@@ -412,7 +416,11 @@ describe("writeToFileTool", () => {
412416

413417
await executeWriteFileTool({}, { isPartial: true })
414418

415-
expect(mockHandleError).toHaveBeenCalledWith("writing file", expect.any(Error), "Write File Error")
419+
expect(mockHandleError).toHaveBeenCalledWith(
420+
"writing file",
421+
expect.any(Error),
422+
"writeToFile.errors.writeFileError",
423+
)
416424
expect(mockCline.diffViewProvider.reset).toHaveBeenCalled()
417425
})
418426
})

src/core/tools/applyDiffTool.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ export async function applyDiffToolLegacy(
251251
return
252252
}
253253
} catch (error) {
254-
await handleError("applying diff", error, "Apply Diff Error")
254+
await handleError("applying diff", error, t("tools:applyDiff.errors.applyDiffError"))
255255
await cline.diffViewProvider.reset()
256256
return
257257
}

src/core/tools/askFollowupQuestionTool.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Task } from "../task/Task"
22
import { ToolUse, AskApproval, HandleError, PushToolResult, RemoveClosingTag } from "../../shared/tools"
33
import { formatResponse } from "../prompts/responses"
44
import { parseXml } from "../../utils/xml"
5+
import { t } from "../../i18n"
56

67
export async function askFollowupQuestionTool(
78
cline: Task,
@@ -93,7 +94,7 @@ export async function askFollowupQuestionTool(
9394
return
9495
}
9596
} catch (error) {
96-
await handleError("asking question", error)
97+
await handleError("asking question", error, t("tools:askFollowupQuestion.errors.askError"))
9798
return
9899
}
99100
}

src/core/tools/executeCommandTool.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ export async function executeCommandTool(
128128
return
129129
}
130130
} catch (error) {
131-
await handleError("executing command", error)
131+
await handleError("executing command", error, t("tools:executeCommand.errors.executeError"))
132132
return
133133
}
134134
}

src/core/tools/fetchInstructionsTool.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { fetchInstructions } from "../prompts/instructions/instructions"
33
import { ClineSayTool } from "../../shared/ExtensionMessage"
44
import { formatResponse } from "../prompts/responses"
55
import { ToolUse, AskApproval, HandleError, PushToolResult } from "../../shared/tools"
6+
import { t } from "../../i18n"
67

78
export async function fetchInstructionsTool(
89
cline: Task,
@@ -58,6 +59,6 @@ export async function fetchInstructionsTool(
5859
return
5960
}
6061
} catch (error) {
61-
await handleError("fetch instructions", error)
62+
await handleError("fetch instructions", error, t("tools:fetchInstructions.errors.fetchError"))
6263
}
6364
}

src/core/tools/insertContentTool.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ export async function insertContentTool(
191191

192192
await cline.diffViewProvider.reset()
193193
} catch (error) {
194-
handleError("insert content", error, "Insert Content Error")
194+
handleError("insert content", error, t("tools:insertContent.errors.insertContentError"))
195195
await cline.diffViewProvider.reset()
196196
}
197197
}

src/core/tools/listCodeDefinitionNamesTool.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { getReadablePath } from "../../utils/path"
88
import { isPathOutsideWorkspace } from "../../utils/pathUtils"
99
import { parseSourceCodeForDefinitionsTopLevel, parseSourceCodeDefinitionsForFile } from "../../services/tree-sitter"
1010
import { RecordSource } from "../context-tracking/FileContextTrackerTypes"
11+
import { t } from "../../i18n"
1112

1213
export async function listCodeDefinitionNamesTool(
1314
cline: Task,
@@ -76,7 +77,11 @@ export async function listCodeDefinitionNamesTool(
7677
return
7778
}
7879
} catch (error) {
79-
await handleError("parsing source code definitions", error)
80+
await handleError(
81+
"parsing source code definitions",
82+
error,
83+
t("tools:listCodeDefinitionNames.errors.parseError"),
84+
)
8085
return
8186
}
8287
}

src/core/tools/listFilesTool.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { listFiles } from "../../services/glob/list-files"
77
import { getReadablePath } from "../../utils/path"
88
import { isPathOutsideWorkspace } from "../../utils/pathUtils"
99
import { ToolUse, AskApproval, HandleError, PushToolResult, RemoveClosingTag } from "../../shared/tools"
10+
import { t } from "../../i18n"
1011

1112
/**
1213
* Implements the list_files tool.
@@ -82,6 +83,6 @@ export async function listFilesTool(
8283
pushToolResult(result)
8384
}
8485
} catch (error) {
85-
await handleError("listing files", error)
86+
await handleError("listing files", error, t("tools:listFiles.errors.listFilesError"))
8687
}
8788
}

src/core/tools/multiApplyDiffTool.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import fs from "fs/promises"
33

44
import { TelemetryService } from "@roo-code/telemetry"
55
import { DEFAULT_WRITE_DELAY_MS } from "@roo-code/types"
6+
import { t } from "../../i18n"
67

78
import { ClineSayTool } from "../../shared/ExtensionMessage"
89
import { getReadablePath } from "../../utils/path"
@@ -677,7 +678,7 @@ ${errorDetails ? `\nTechnical details:\n${errorDetails}\n` : ""}
677678
pushToolResult(results.join("\n\n") + singleBlockNotice)
678679
return
679680
} catch (error) {
680-
await handleError("applying diff", error, "Apply Diff Error")
681+
await handleError("applying diff", error, t("tools:applyDiff.errors.applyDiffError"))
681682
await cline.diffViewProvider.reset()
682683
return
683684
}

src/core/tools/readFileTool.ts

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ export async function readFileTool(
155155
}
156156
} catch (error) {
157157
const errorMessage = `Failed to parse read_file XML args: ${error instanceof Error ? error.message : String(error)}`
158-
await handleError("parsing read_file args", new Error(errorMessage))
158+
await handleError("parsing read_file args", new Error(errorMessage), t("tools:readFile.errors.parseError"))
159159
pushToolResult(`<files><error>${errorMessage}</error></files>`)
160160
return
161161
}
@@ -226,7 +226,11 @@ export async function readFileTool(
226226
error: errorMsg,
227227
xmlContent: `<file><path>${relPath}</path><error>Error reading file: ${errorMsg}</error></file>`,
228228
})
229-
await handleError(`reading file ${relPath}`, new Error(errorMsg))
229+
await handleError(
230+
`reading file ${relPath}`,
231+
new Error(errorMsg),
232+
t("tools:readFile.errors.invalidLineRange"),
233+
)
230234
hasRangeError = true
231235
break
232236
}
@@ -237,7 +241,11 @@ export async function readFileTool(
237241
error: errorMsg,
238242
xmlContent: `<file><path>${relPath}</path><error>Error reading file: ${errorMsg}</error></file>`,
239243
})
240-
await handleError(`reading file ${relPath}`, new Error(errorMsg))
244+
await handleError(
245+
`reading file ${relPath}`,
246+
new Error(errorMsg),
247+
t("tools:readFile.errors.invalidLineRange"),
248+
)
241249
hasRangeError = true
242250
break
243251
}
@@ -508,6 +516,7 @@ export async function readFileTool(
508516
await handleError(
509517
`reading image file ${relPath}`,
510518
error instanceof Error ? error : new Error(errorMsg),
519+
t("tools:readFile.errors.imageReadError"),
511520
)
512521
continue
513522
}
@@ -616,7 +625,11 @@ export async function readFileTool(
616625
error: `Error reading file: ${errorMsg}`,
617626
xmlContent: `<file><path>${relPath}</path><error>Error reading file: ${errorMsg}</error></file>`,
618627
})
619-
await handleError(`reading file ${relPath}`, error instanceof Error ? error : new Error(errorMsg))
628+
await handleError(
629+
`reading file ${relPath}`,
630+
error instanceof Error ? error : new Error(errorMsg),
631+
t("tools:readFile.errors.fileReadError"),
632+
)
620633
}
621634
}
622635

@@ -704,8 +717,11 @@ export async function readFileTool(
704717
xmlContent: `<file><path>${relPath}</path><error>Error reading file: ${errorMsg}</error></file>`,
705718
})
706719
}
707-
708-
await handleError(`reading file ${relPath}`, error instanceof Error ? error : new Error(errorMsg))
720+
await handleError(
721+
`reading file ${relPath}`,
722+
error instanceof Error ? error : new Error(errorMsg),
723+
t("tools:readFile.errors.fileReadError"),
724+
)
709725

710726
// Generate final XML result from all file results
711727
const xmlResults = fileResults.filter((result) => result.xmlContent).map((result) => result.xmlContent)

0 commit comments

Comments
 (0)