@ithena-one/mcp-governance
Version:
Governance layer (Identity, RBAC, Credentials, Audit, Logging, Tracing) for Model Context Protocol (MCP) servers.
64 lines • 2.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mapErrorToPayload = mapErrorToPayload;
exports.mapErrorToAuditPayload = mapErrorToAuditPayload;
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
const index_js_1 = require("../errors/index.js");
/** Maps internal errors to JSON-RPC error payloads */
function mapErrorToPayload(error, defaultCode, defaultMessage) {
if (error instanceof types_js_1.McpError) {
return { code: error.code, message: error.message, data: error.data };
}
if (error instanceof index_js_1.AuthorizationError) {
return { code: -32001, message: error.message, data: { reason: error.reason, details: error.details } }; // Custom code for AuthZ
}
if (error instanceof index_js_1.AuthenticationError) {
return { code: types_js_1.ErrorCode.InvalidRequest, message: error.message, data: error.details };
}
if (error instanceof index_js_1.CredentialResolutionError) {
return { code: types_js_1.ErrorCode.InternalError, message: error.message, data: error.details };
}
if (error instanceof index_js_1.HandlerError) {
return { code: types_js_1.ErrorCode.InternalError, message: "Handler execution failed", data: error.details };
}
if (error instanceof index_js_1.GovernanceError) {
return { code: types_js_1.ErrorCode.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 */
function mapErrorToAuditPayload(error) {
if (error instanceof index_js_1.GovernanceError) {
return {
type: error.constructor.name,
message: error.message,
details: typeof error.details === 'object' && error.details !== null ? { ...error.details } : error.details,
...(error instanceof index_js_1.AuthorizationError && { code: "ACCESS_DENIED", reason: error.reason }),
...(error instanceof index_js_1.AuthenticationError && { code: "AUTHENTICATION_FAILED" }),
...(error instanceof index_js_1.CredentialResolutionError && { code: "CREDENTIAL_RESOLUTION_FAILED" }),
...(error instanceof index_js_1.HandlerError && { code: "HANDLER_EXECUTION_FAILED" }),
};
}
if (error instanceof types_js_1.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