@mastra/core
Version:
Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack.
166 lines (164 loc) • 5.3 kB
JavaScript
// src/error/utils.ts
function safeParseErrorObject(obj) {
if (typeof obj !== "object" || obj === null) {
return String(obj);
}
try {
const stringified = JSON.stringify(obj);
if (stringified === "{}") {
return String(obj);
}
return stringified;
} catch {
return String(obj);
}
}
function getErrorFromUnknown(unknown, options = {}) {
const defaultOptions = {
fallbackMessage: "Unknown error",
maxDepth: 5,
supportSerialization: true,
includeStack: true
};
const mergedOptions = options ? { ...defaultOptions, ...options } : defaultOptions;
const { fallbackMessage, maxDepth, supportSerialization, includeStack } = mergedOptions;
if (unknown && unknown instanceof Error) {
if (includeStack === false) {
unknown.stack = void 0;
}
if (supportSerialization) {
addErrorToJSON(unknown);
}
return unknown;
}
let error;
if (unknown && typeof unknown === "object") {
const errorMessage = unknown && "message" in unknown && typeof unknown.message === "string" ? unknown.message : safeParseErrorObject(unknown);
const errorCause = "cause" in unknown && unknown.cause !== void 0 ? unknown.cause instanceof Error ? unknown.cause : maxDepth > 0 ? getErrorFromUnknown(unknown.cause, { ...mergedOptions, maxDepth: maxDepth - 1 }) : void 0 : void 0;
error = new Error(errorMessage, errorCause ? { cause: errorCause } : void 0);
const { stack: _, ...propsWithoutStack } = unknown;
Object.assign(error, propsWithoutStack);
if (includeStack) {
error.stack = "stack" in unknown && typeof unknown.stack === "string" ? unknown.stack : void 0;
}
} else if (unknown && typeof unknown === "string") {
error = new Error(unknown);
error.stack = void 0;
} else {
error = new Error(fallbackMessage);
error.stack = void 0;
}
if (supportSerialization) {
addErrorToJSON(error);
}
return error;
}
function addErrorToJSON(error) {
if (error.toJSON) {
return;
}
Object.defineProperty(error, "toJSON", {
value: function() {
const json = {
message: this.message,
name: this.name
};
if (this.stack !== void 0) {
json.stack = this.stack;
}
if (this.cause !== void 0) {
json.cause = this.cause;
}
const errorAsAny = this;
for (const key in errorAsAny) {
if (errorAsAny.hasOwnProperty(key) && !(key in json) && key !== "toJSON") {
json[key] = errorAsAny[key];
}
}
return json;
},
enumerable: false,
writable: true,
configurable: true
});
}
// src/error/index.ts
var ErrorDomain = /* @__PURE__ */ ((ErrorDomain2) => {
ErrorDomain2["TOOL"] = "TOOL";
ErrorDomain2["AGENT"] = "AGENT";
ErrorDomain2["MCP"] = "MCP";
ErrorDomain2["AGENT_NETWORK"] = "AGENT_NETWORK";
ErrorDomain2["MASTRA_SERVER"] = "MASTRA_SERVER";
ErrorDomain2["MASTRA_TELEMETRY"] = "MASTRA_TELEMETRY";
ErrorDomain2["MASTRA_OBSERVABILITY"] = "MASTRA_OBSERVABILITY";
ErrorDomain2["MASTRA_WORKFLOW"] = "MASTRA_WORKFLOW";
ErrorDomain2["MASTRA_VOICE"] = "MASTRA_VOICE";
ErrorDomain2["MASTRA_VECTOR"] = "MASTRA_VECTOR";
ErrorDomain2["LLM"] = "LLM";
ErrorDomain2["EVAL"] = "EVAL";
ErrorDomain2["SCORER"] = "SCORER";
ErrorDomain2["A2A"] = "A2A";
ErrorDomain2["MASTRA_INSTANCE"] = "MASTRA_INSTANCE";
ErrorDomain2["MASTRA"] = "MASTRA";
ErrorDomain2["DEPLOYER"] = "DEPLOYER";
ErrorDomain2["STORAGE"] = "STORAGE";
ErrorDomain2["MODEL_ROUTER"] = "MODEL_ROUTER";
return ErrorDomain2;
})(ErrorDomain || {});
var ErrorCategory = /* @__PURE__ */ ((ErrorCategory2) => {
ErrorCategory2["UNKNOWN"] = "UNKNOWN";
ErrorCategory2["USER"] = "USER";
ErrorCategory2["SYSTEM"] = "SYSTEM";
ErrorCategory2["THIRD_PARTY"] = "THIRD_PARTY";
return ErrorCategory2;
})(ErrorCategory || {});
var MastraBaseError = class extends Error {
id;
domain;
category;
details = {};
message;
constructor(errorDefinition, originalError) {
let error;
if (originalError instanceof Error) {
error = originalError;
} else if (originalError) {
const errorMessage = safeParseErrorObject(originalError);
error = new Error(errorMessage);
}
const message = errorDefinition.text ?? error?.message ?? "Unknown error";
super(message, { cause: error });
this.id = errorDefinition.id;
this.domain = errorDefinition.domain;
this.category = errorDefinition.category;
this.details = errorDefinition.details ?? {};
this.message = message;
Object.setPrototypeOf(this, new.target.prototype);
}
/**
* Returns a structured representation of the error, useful for logging or API responses.
*/
toJSONDetails() {
return {
message: this.message,
domain: this.domain,
category: this.category,
details: this.details
};
}
toJSON() {
return {
message: this.message,
details: this.toJSONDetails(),
code: this.id
};
}
toString() {
return JSON.stringify(this.toJSON());
}
};
var MastraError = class extends MastraBaseError {
};
export { ErrorCategory, ErrorDomain, MastraBaseError, MastraError, getErrorFromUnknown, safeParseErrorObject };
//# sourceMappingURL=chunk-PZUZNPFM.js.map
//# sourceMappingURL=chunk-PZUZNPFM.js.map