Skip to content

Commit 025277e

Browse files
authored
fix(error-code): optimize error handling and localization (#398)
1 parent fd61558 commit 025277e

File tree

5 files changed

+29
-12
lines changed

5 files changed

+29
-12
lines changed

src/core/costrict/error-code/ErrorCodeManager.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export interface IErrorMap {
1717
export class ErrorCodeManager {
1818
private static instance: ErrorCodeManager
1919
private errorMap: IErrorMap = {}
20+
private unknownError = { message: t("apiErrors:status.unknown"), solution: t("apiErrors:solution.unknown") }
2021
private provider!: ClineProvider
2122

2223
private constructor() {}
@@ -116,7 +117,6 @@ export class ErrorCodeManager {
116117
const isHtml = error?.headers && error.headers["content-type"] && error.headers["content-type"] === "text/html"
117118
let rawError = error.error?.metadata?.raw ? JSON.stringify(error.error.metadata.raw, null, 2) : error.message
118119
let status = error.status as number
119-
const unknownError = { message: t("apiErrors:status.unknown"), solution: t("apiErrors:solution.unknown") }
120120
const { code, headers } = error
121121
const requestId = headers?.get("x-request-id") ?? null
122122
const { apiConfiguration } = await this.provider.getState()
@@ -154,7 +154,7 @@ export class ErrorCodeManager {
154154
"quota-manager.voucher_expired",
155155
]
156156
if (code) {
157-
let { message, solution } = this.errorMap[code] || unknownError
157+
let { message, solution } = this.errorMap[code] || this.unknownError
158158
if (authRequiredCodes.includes(code)) {
159159
rawError = message
160160
message = defaultError["401"].message
@@ -186,7 +186,7 @@ ${checkRemainingQuotaStr}
186186
this.provider.log(`[Costrict#apiErrors] task ${taskId}.${instanceId} Raw Error: ${rawError}`)
187187
return `${t("apiErrors:request.error_details")}\n\n${message}\n\n${requestId ? `RequestID: ${requestId}\n\n` : ""}${t("apiErrors:request.solution")}\n${solution}`
188188
}
189-
const { message, solution } = defaultError[status] || unknownError
189+
const { message, solution } = defaultError[status] || this.unknownError
190190
if (defaultError[status]) {
191191
TelemetryService.instance.captureError(
192192
status === undefined ? `ApiError_unknown` : `ApiError_status_${status}`,
@@ -205,4 +205,8 @@ ${checkRemainingQuotaStr}
205205
.map((b) => b.toString(16).padStart(2, "0"))
206206
.join("")
207207
}
208+
209+
getErrorMessageByCode(code: string) {
210+
return this.errorMap[code] || this.unknownError
211+
}
208212
}

src/core/webview/webviewMessageHandler.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ import { MarketplaceManager, MarketplaceItemType } from "../../services/marketpl
5959
import { setPendingTodoList } from "../tools/updateTodoListTool"
6060
import { ZgsmAuthConfig } from "../costrict/auth"
6161
import { CodeReviewService, startReview } from "../costrict/code-review"
62-
import { ZgsmCodebaseIndexManager, IndexSwitchRequest } from "../costrict/codebase-index"
62+
import { ZgsmCodebaseIndexManager, IndexSwitchRequest, IndexStatusInfo } from "../costrict/codebase-index"
6363
import { ErrorCodeManager } from "../costrict/error-code"
6464
import { writeCostrictAccessToken } from "../costrict/codebase-index/utils"
6565

@@ -2460,8 +2460,21 @@ export const webviewMessageHandler = async (
24602460
// Call ZgsmCodebaseIndexManager.getIndexStatus()
24612461
const zgsmCodebaseIndexManager = ZgsmCodebaseIndexManager.getInstance()
24622462
const response = await zgsmCodebaseIndexManager.getIndexStatus(workspacePath)
2463+
const errorCodeManager = ErrorCodeManager.getInstance()
2464+
2465+
const updateFailedReason = (item: IndexStatusInfo) => {
2466+
if (item.status === "failed") {
2467+
item.failedReason = errorCodeManager.getErrorMessageByCode(item.failedReason).message
2468+
}
2469+
}
2470+
2471+
if (response?.data?.codegraph) {
2472+
updateFailedReason(response.data.codegraph)
2473+
}
2474+
if (response?.data?.embedding) {
2475+
updateFailedReason(response.data.embedding)
2476+
}
24632477

2464-
// Return response message
24652478
await provider.postMessageToWebview({
24662479
type: "codebaseIndexStatusResponse",
24672480
payload: {

webview-ui/src/i18n/costrict-i18n/locales/en/settings.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,10 @@
148148
"pendingSync": "Pending Sync",
149149
"syncSuccess": "Sync Success",
150150
"syncFailed": "Sync Failed",
151-
"syncFailedFiles": "Sync Failed Files",
151+
"syncFailedFiles": "Sync Failed Details",
152152
"viewDetails": "View Details",
153-
"syncFailedFilesTitle": "Sync Failed Files",
154-
"failedFileList": "Failed Files:",
153+
"syncFailedFilesTitle": "Number of Sync Failed Files",
154+
"failedFileList": "Failed Files List:",
155155
"copy": "Copy",
156156
"noFailedFiles": "No failed files information",
157157
"rebuild": "Rebuild",

webview-ui/src/i18n/costrict-i18n/locales/zh-CN/settings.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,9 @@
148148
"pendingSync": "待同步",
149149
"syncSuccess": "同步成功",
150150
"syncFailed": "同步失败",
151-
"syncFailedFiles": "同步失败文件",
151+
"syncFailedFiles": "同步失败详情",
152152
"viewDetails": "查看详情",
153-
"syncFailedFilesTitle": "同步失败文件",
153+
"syncFailedFilesTitle": "同步失败文件数量",
154154
"failedFileList": "失败文件列表:",
155155
"copy": "复制",
156156
"noFailedFiles": "暂无失败文件信息",

webview-ui/src/i18n/costrict-i18n/locales/zh-TW/settings.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,9 @@
145145
"pendingSync": "待同步",
146146
"syncSuccess": "同步成功",
147147
"syncFailed": "同步失敗",
148-
"syncFailedFiles": "同步失敗檔案",
148+
"syncFailedFiles": "同步失敗詳情",
149149
"viewDetails": "查看詳情",
150-
"syncFailedFilesTitle": "同步失敗檔案",
150+
"syncFailedFilesTitle": "同步失敗檔案數量",
151151
"failedFileList": "失敗檔案列表:",
152152
"copy": "複製",
153153
"noFailedFiles": "暫無失敗檔案資訊",

0 commit comments

Comments
 (0)