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 }