From b1db7841c7328fde3563c77b22c3288c2b76da63 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 8 May 2026 07:09:26 +0800 Subject: [PATCH] feat(errs): add 8 MCP error codes + HTTPStatus mapping --- internal/infra/errs/errs.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/internal/infra/errs/errs.go b/internal/infra/errs/errs.go index 24de03c..55e50af 100644 --- a/internal/infra/errs/errs.go +++ b/internal/infra/errs/errs.go @@ -86,6 +86,16 @@ const ( CodeAcpSpawnFailed Code = "acp.spawn_failed" CodeAcpHandshakeTimeout Code = "acp.handshake_timeout" CodeAcpFsPathOutsideWorktree Code = "acp.fs_path_outside_worktree" + + // MCP 域 + CodeMcpTokenInvalid Code = "mcp.token_invalid" + CodeMcpTokenRevoked Code = "mcp.token_revoked" + CodeMcpTokenExpired Code = "mcp.token_expired" + CodeMcpTokenNotFound Code = "mcp.token_not_found" + CodeMcpTokenScopeViolation Code = "mcp.token_scope_violation" + CodeMcpTokenNameRequired Code = "mcp.token_name_required" + CodeMcpTokenExpiresRequired Code = "mcp.token_expires_required" + CodeMcpRateLimited Code = "mcp.rate_limited" ) // AppError is the application's structured error type. It carries a stable @@ -210,6 +220,16 @@ func HTTPStatus(code Code) int { return http.StatusInternalServerError case CodeWebhookNotConfigured: return http.StatusServiceUnavailable + case CodeMcpTokenInvalid, CodeMcpTokenRevoked, CodeMcpTokenExpired: + return http.StatusUnauthorized + case CodeMcpTokenNotFound: + return http.StatusNotFound + case CodeMcpTokenScopeViolation: + return http.StatusForbidden + case CodeMcpTokenNameRequired, CodeMcpTokenExpiresRequired: + return http.StatusBadRequest + case CodeMcpRateLimited: + return http.StatusTooManyRequests default: return http.StatusInternalServerError }