UNPKG

@ithena-one/mcp-governance

Version:

Governance layer (Identity, RBAC, Credentials, Audit, Logging, Tracing) for Model Context Protocol (MCP) servers.

60 lines 2.75 kB
import { ErrorCode as McpErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js'; import { AuthenticationError, AuthorizationError, CredentialResolutionError, HandlerError, GovernanceError } from '../errors/index.js'; /** Maps internal errors to JSON-RPC error payloads */ export function mapErrorToPayload(error, defaultCode, defaultMessage) { if (error instanceof McpError) { return { code: error.code, message: error.message, data: error.data }; } if (error instanceof AuthorizationError) { return { code: -32001, message: error.message, data: { reason: error.reason, details: error.details } }; // Custom code for AuthZ } if (error instanceof AuthenticationError) { return { code: McpErrorCode.InvalidRequest, message: error.message, data: error.details }; } if (error instanceof CredentialResolutionError) { return { code: McpErrorCode.InternalError, message: error.message, data: error.details }; } if (error instanceof HandlerError) { return { code: McpErrorCode.InternalError, message: "Handler execution failed", data: error.details }; } if (error instanceof GovernanceError) { return { code: McpErrorCode.InternalError, message: error.message, data: error.details }; } if (error instanceof Error) { return { code: defaultCode, message: error.message || defaultMessage }; } return { code: defaultCode, message: defaultMessage, data: String(error) }; } /** Maps internal errors to the AuditRecord['outcome']['error'] structure */ export function mapErrorToAuditPayload(error) { if (error instanceof GovernanceError) { return { type: error.constructor.name, message: error.message, details: typeof error.details === 'object' && error.details !== null ? { ...error.details } : error.details, ...(error instanceof AuthorizationError && { code: "ACCESS_DENIED", reason: error.reason }), ...(error instanceof AuthenticationError && { code: "AUTHENTICATION_FAILED" }), ...(error instanceof CredentialResolutionError && { code: "CREDENTIAL_RESOLUTION_FAILED" }), ...(error instanceof HandlerError && { code: "HANDLER_EXECUTION_FAILED" }), }; } if (error instanceof McpError) { return { type: "McpError", message: error.message, code: error.code, details: error.data, }; } if (error instanceof Error) { return { type: error.constructor.name, message: error.message, }; } return { type: "UnknownError", message: String(error), }; } //# sourceMappingURL=error-mapper.js.map