@mastra/server 1.77.0-alpha.4 → 1.78.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_types/@internal_voice/dist/_types/@internal_core/dist/request-context/index.d.ts +22 -1
- package/dist/{a2a-Ddo5dOMm.js → a2a-BWKuwXQY.js} +2 -2
- package/dist/{a2a-Ddo5dOMm.js.map → a2a-BWKuwXQY.js.map} +1 -1
- package/dist/{a2a-BZlUyHOa.cjs → a2a-BeW8w9CL.cjs} +2 -2
- package/dist/{a2a-BZlUyHOa.cjs.map → a2a-BeW8w9CL.cjs.map} +1 -1
- package/dist/{api-schema-manifest-DC45FBI7.cjs → api-schema-manifest-7Mkcahcz.cjs} +2 -2
- package/dist/{api-schema-manifest-DC45FBI7.cjs.map → api-schema-manifest-7Mkcahcz.cjs.map} +1 -1
- package/dist/{api-schema-manifest-BQOonczJ.js → api-schema-manifest-BSc3N7kx.js} +2 -2
- package/dist/{api-schema-manifest-BQOonczJ.js.map → api-schema-manifest-BSc3N7kx.js.map} +1 -1
- package/dist/{background-tasks-CIp3Ltam.cjs → background-tasks-Cu89GYC6.cjs} +33 -7
- package/dist/background-tasks-Cu89GYC6.cjs.map +1 -0
- package/dist/{background-tasks-DgskLon8.js → background-tasks-_e2S8LLH.js} +35 -8
- package/dist/background-tasks-_e2S8LLH.js.map +1 -0
- package/dist/{builder-registry-CEx2-J6_.js → builder-registry-6A0b4EwP.js} +2 -2
- package/dist/{builder-registry-CEx2-J6_.js.map → builder-registry-6A0b4EwP.js.map} +1 -1
- package/dist/{builder-registry-bpbwRFZE.cjs → builder-registry-DbSG3HJ8.cjs} +2 -2
- package/dist/{builder-registry-bpbwRFZE.cjs.map → builder-registry-DbSG3HJ8.cjs.map} +1 -1
- package/dist/{channels-Ce2IRRmI.cjs → channels-DNWITrYK.cjs} +2 -2
- package/dist/{channels-Ce2IRRmI.cjs.map → channels-DNWITrYK.cjs.map} +1 -1
- package/dist/{channels-BOdvOy0n.js → channels-DjOa1rPQ.js} +2 -2
- package/dist/{channels-BOdvOy0n.js.map → channels-DjOa1rPQ.js.map} +1 -1
- package/dist/{constants-1TDVXCCT.js → constants-C631oS02.js} +6 -1
- package/dist/constants-C631oS02.js.map +1 -0
- package/dist/{constants-6d6tCMH8.cjs → constants-epIL4td4.cjs} +6 -1
- package/dist/constants-epIL4td4.cjs.map +1 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/{helpers-BL_XfkF0.cjs → helpers-59ZdrW8t.cjs} +2 -2
- package/dist/{helpers-BL_XfkF0.cjs.map → helpers-59ZdrW8t.cjs.map} +1 -1
- package/dist/{helpers-CaSnDz4f.js → helpers-C_FYiA-F.js} +2 -2
- package/dist/{helpers-CaSnDz4f.js.map → helpers-C_FYiA-F.js.map} +1 -1
- package/dist/{observability-new-endpoints-C5ROsHu_.js → observability-new-endpoints-C70wlMFY.js} +2 -2
- package/dist/{observability-new-endpoints-C5ROsHu_.js.map → observability-new-endpoints-C70wlMFY.js.map} +1 -1
- package/dist/{observability-new-endpoints-BCmkibMp.cjs → observability-new-endpoints-CcDGSm8x.cjs} +2 -2
- package/dist/{observability-new-endpoints-BCmkibMp.cjs.map → observability-new-endpoints-CcDGSm8x.cjs.map} +1 -1
- package/dist/{routes-Dl6lzZIQ.cjs → routes-BOpfBZw5.cjs} +8 -8
- package/dist/{routes-Dl6lzZIQ.cjs.map → routes-BOpfBZw5.cjs.map} +1 -1
- package/dist/{routes-DhwMARHw.js → routes-CccVLchZ.js} +8 -8
- package/dist/{routes-DhwMARHw.js.map → routes-CccVLchZ.js.map} +1 -1
- package/dist/{schedules-C4uNWRwW.js → schedules-6XpznRPz.js} +2 -2
- package/dist/{schedules-C4uNWRwW.js.map → schedules-6XpznRPz.js.map} +1 -1
- package/dist/{schedules-QNH7CUxG.cjs → schedules-BiqVrJH7.cjs} +2 -2
- package/dist/{schedules-QNH7CUxG.cjs.map → schedules-BiqVrJH7.cjs.map} +1 -1
- package/dist/server/auth/index.cjs +2 -2
- package/dist/server/auth/index.js +2 -2
- package/dist/server/constants.d.ts +4 -0
- package/dist/server/constants.d.ts.map +1 -1
- package/dist/server/handlers/a2a.cjs +1 -1
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +1 -1
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agent-controller.cjs +2 -2
- package/dist/server/handlers/agent-controller.js +2 -2
- package/dist/server/handlers/agent-versions.cjs +1 -1
- package/dist/server/handlers/agent-versions.js +1 -1
- package/dist/server/handlers/agents.cjs +79 -19
- package/dist/server/handlers/agents.cjs.map +1 -1
- package/dist/server/handlers/agents.js +79 -19
- package/dist/server/handlers/agents.js.map +1 -1
- package/dist/server/handlers/auth.cjs +2 -2
- package/dist/server/handlers/auth.js +2 -2
- package/dist/server/handlers/authorship.cjs +1 -1
- package/dist/server/handlers/authorship.js +1 -1
- package/dist/server/handlers/background-tasks.cjs +1 -1
- package/dist/server/handlers/background-tasks.d.ts.map +1 -1
- package/dist/server/handlers/background-tasks.js +1 -1
- package/dist/server/handlers/builder-registry.cjs +1 -1
- package/dist/server/handlers/builder-registry.js +1 -1
- package/dist/server/handlers/channels.cjs +1 -1
- package/dist/server/handlers/channels.js +1 -1
- package/dist/server/handlers/conversations.cjs +1 -1
- package/dist/server/handlers/conversations.js +1 -1
- package/dist/server/handlers/datasets.cjs +1 -1
- package/dist/server/handlers/datasets.js +1 -1
- package/dist/server/handlers/logs.cjs +1 -1
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/mcp-client-versions.cjs +1 -1
- package/dist/server/handlers/mcp-client-versions.js +1 -1
- package/dist/server/handlers/memory.cjs +1 -1
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/observability-new-endpoints.cjs +1 -1
- package/dist/server/handlers/observability-new-endpoints.js +1 -1
- package/dist/server/handlers/observability.cjs +1 -1
- package/dist/server/handlers/observability.js +1 -1
- package/dist/server/handlers/plans.cjs +1 -1
- package/dist/server/handlers/plans.js +1 -1
- package/dist/server/handlers/prompt-block-versions.cjs +1 -1
- package/dist/server/handlers/prompt-block-versions.js +1 -1
- package/dist/server/handlers/responses.cjs +1 -1
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/responses.storage.cjs +1 -1
- package/dist/server/handlers/responses.storage.js +1 -1
- package/dist/server/handlers/schedules.cjs +1 -1
- package/dist/server/handlers/schedules.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +1 -1
- package/dist/server/handlers/scorer-versions.js +1 -1
- package/dist/server/handlers/stored-agent-favorites.cjs +1 -1
- package/dist/server/handlers/stored-agent-favorites.js +1 -1
- package/dist/server/handlers/stored-agents.cjs +1 -1
- package/dist/server/handlers/stored-agents.js +1 -1
- package/dist/server/handlers/stored-mcp-clients.cjs +1 -1
- package/dist/server/handlers/stored-mcp-clients.js +1 -1
- package/dist/server/handlers/stored-prompt-blocks.cjs +1 -1
- package/dist/server/handlers/stored-prompt-blocks.js +1 -1
- package/dist/server/handlers/stored-scorers.cjs +1 -1
- package/dist/server/handlers/stored-scorers.js +1 -1
- package/dist/server/handlers/stored-skill-favorites.cjs +1 -1
- package/dist/server/handlers/stored-skill-favorites.js +1 -1
- package/dist/server/handlers/stored-skills.cjs +1 -1
- package/dist/server/handlers/stored-skills.js +1 -1
- package/dist/server/handlers/stored-workspaces.cjs +1 -1
- package/dist/server/handlers/stored-workspaces.js +1 -1
- package/dist/server/handlers/system.cjs +1 -1
- package/dist/server/handlers/system.js +1 -1
- package/dist/server/handlers/tool-providers.cjs +1 -1
- package/dist/server/handlers/tool-providers.js +1 -1
- package/dist/server/handlers/tools.cjs +2 -2
- package/dist/server/handlers/tools.js +2 -2
- package/dist/server/handlers/utils.cjs +1 -1
- package/dist/server/handlers/utils.js +1 -1
- package/dist/server/handlers/validate-agent-instructions.cjs +1 -1
- package/dist/server/handlers/validate-agent-instructions.js +1 -1
- package/dist/server/handlers/workflow-builder.cjs +1 -1
- package/dist/server/handlers/workflow-builder.js +1 -1
- package/dist/server/handlers/workflows.cjs +2 -2
- package/dist/server/handlers/workflows.js +2 -2
- package/dist/server/handlers.cjs +1 -1
- package/dist/server/handlers.js +1 -1
- package/dist/server/server-adapter/index.cjs +6 -4
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.d.ts +2 -0
- package/dist/server/server-adapter/index.d.ts.map +1 -1
- package/dist/server/server-adapter/index.js +6 -4
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/{utils-BD7aRZ1o.cjs → utils-BF2Kbju4.cjs} +2 -2
- package/dist/{utils-BD7aRZ1o.cjs.map → utils-BF2Kbju4.cjs.map} +1 -1
- package/dist/{utils-DTgkpEdc.js → utils-BpQY-tBr.js} +2 -2
- package/dist/{utils-DTgkpEdc.js.map → utils-BpQY-tBr.js.map} +1 -1
- package/dist/{utils-CfF-SHpC.cjs → utils-CJxnYdr3.cjs} +2 -2
- package/dist/{utils-CfF-SHpC.cjs.map → utils-CJxnYdr3.cjs.map} +1 -1
- package/dist/{utils-UwDFLi8y.js → utils-GVYTDbr2.js} +2 -2
- package/dist/{utils-UwDFLi8y.js.map → utils-GVYTDbr2.js.map} +1 -1
- package/dist/{workflow-builder-DwApMkS3.js → workflow-builder-U2jFH8o7.js} +3 -3
- package/dist/workflow-builder-U2jFH8o7.js.map +1 -0
- package/dist/{workflow-builder-DPTDL6sn.cjs → workflow-builder-UVflLOfv.cjs} +3 -3
- package/dist/workflow-builder-UVflLOfv.cjs.map +1 -0
- package/package.json +9 -9
- package/dist/background-tasks-CIp3Ltam.cjs.map +0 -1
- package/dist/background-tasks-DgskLon8.js.map +0 -1
- package/dist/constants-1TDVXCCT.js.map +0 -1
- package/dist/constants-6d6tCMH8.cjs.map +0 -1
- package/dist/workflow-builder-DPTDL6sn.cjs.map +0 -1
- package/dist/workflow-builder-DwApMkS3.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-CfF-SHpC.cjs","names":["getType","isPlainObject","isArray","isArray","isArray","isPlainObject","isArray","isPlainObject","standardSchemaToJSONSchema","toStandardSchema","MASTRA_RESOURCE_ID_KEY","HTTPException"],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/double-indexed-kv.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/registry.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/class-registry.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/util.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/custom-transformer-registry.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/is.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/pathstringifier.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/transformer.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/accessDeep.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/plainer.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/is-what/5.5.0/6a17e1f04f109bfa55bd3a32beb0649d4f15de71496a7b56ad89c5617c48dbcf/node_modules/is-what/dist/getType.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/is-what/5.5.0/6a17e1f04f109bfa55bd3a32beb0649d4f15de71496a7b56ad89c5617c48dbcf/node_modules/is-what/dist/isArray.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/is-what/5.5.0/6a17e1f04f109bfa55bd3a32beb0649d4f15de71496a7b56ad89c5617c48dbcf/node_modules/is-what/dist/isPlainObject.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/copy-anything/4.0.5/22cc8bea9fb94edd0adbb1b532950c62b530da34e51811884acea49340e0256c/node_modules/copy-anything/dist/index.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/index.js","../src/server/utils.ts"],"sourcesContent":["export class DoubleIndexedKV {\n constructor() {\n this.keyToValue = new Map();\n this.valueToKey = new Map();\n }\n set(key, value) {\n this.keyToValue.set(key, value);\n this.valueToKey.set(value, key);\n }\n getByKey(key) {\n return this.keyToValue.get(key);\n }\n getByValue(value) {\n return this.valueToKey.get(value);\n }\n clear() {\n this.keyToValue.clear();\n this.valueToKey.clear();\n }\n}\n//# sourceMappingURL=double-indexed-kv.js.map","import { DoubleIndexedKV } from './double-indexed-kv.js';\nexport class Registry {\n constructor(generateIdentifier) {\n this.generateIdentifier = generateIdentifier;\n this.kv = new DoubleIndexedKV();\n }\n register(value, identifier) {\n if (this.kv.getByValue(value)) {\n return;\n }\n if (!identifier) {\n identifier = this.generateIdentifier(value);\n }\n this.kv.set(identifier, value);\n }\n clear() {\n this.kv.clear();\n }\n getIdentifier(value) {\n return this.kv.getByValue(value);\n }\n getValue(identifier) {\n return this.kv.getByKey(identifier);\n }\n}\n//# sourceMappingURL=registry.js.map","import { Registry } from './registry.js';\nexport class ClassRegistry extends Registry {\n constructor() {\n super(c => c.name);\n this.classToAllowedProps = new Map();\n }\n register(value, options) {\n if (typeof options === 'object') {\n if (options.allowProps) {\n this.classToAllowedProps.set(value, options.allowProps);\n }\n super.register(value, options.identifier);\n }\n else {\n super.register(value, options);\n }\n }\n getAllowedProps(value) {\n return this.classToAllowedProps.get(value);\n }\n}\n//# sourceMappingURL=class-registry.js.map","function valuesOfObj(record) {\n if ('values' in Object) {\n // eslint-disable-next-line es5/no-es6-methods\n return Object.values(record);\n }\n const values = [];\n // eslint-disable-next-line no-restricted-syntax\n for (const key in record) {\n if (record.hasOwnProperty(key)) {\n values.push(record[key]);\n }\n }\n return values;\n}\nexport function find(record, predicate) {\n const values = valuesOfObj(record);\n if ('find' in values) {\n // eslint-disable-next-line es5/no-es6-methods\n return values.find(predicate);\n }\n const valuesNotNever = values;\n for (let i = 0; i < valuesNotNever.length; i++) {\n const value = valuesNotNever[i];\n if (predicate(value)) {\n return value;\n }\n }\n return undefined;\n}\nexport function forEach(record, run) {\n Object.entries(record).forEach(([key, value]) => run(value, key));\n}\nexport function includes(arr, value) {\n return arr.indexOf(value) !== -1;\n}\nexport function findArr(record, predicate) {\n for (let i = 0; i < record.length; i++) {\n const value = record[i];\n if (predicate(value)) {\n return value;\n }\n }\n return undefined;\n}\n//# sourceMappingURL=util.js.map","import { find } from './util.js';\nexport class CustomTransformerRegistry {\n constructor() {\n this.transfomers = {};\n }\n register(transformer) {\n this.transfomers[transformer.name] = transformer;\n }\n findApplicable(v) {\n return find(this.transfomers, transformer => transformer.isApplicable(v));\n }\n findByName(name) {\n return this.transfomers[name];\n }\n}\n//# sourceMappingURL=custom-transformer-registry.js.map","const getType = (payload) => Object.prototype.toString.call(payload).slice(8, -1);\nexport const isUndefined = (payload) => typeof payload === 'undefined';\nexport const isNull = (payload) => payload === null;\nexport const isPlainObject = (payload) => {\n if (typeof payload !== 'object' || payload === null)\n return false;\n if (payload === Object.prototype)\n return false;\n if (Object.getPrototypeOf(payload) === null)\n return true;\n return Object.getPrototypeOf(payload) === Object.prototype;\n};\nexport const isEmptyObject = (payload) => isPlainObject(payload) && Object.keys(payload).length === 0;\nexport const isArray = (payload) => Array.isArray(payload);\nexport const isString = (payload) => typeof payload === 'string';\nexport const isNumber = (payload) => typeof payload === 'number' && !isNaN(payload);\nexport const isBoolean = (payload) => typeof payload === 'boolean';\nexport const isRegExp = (payload) => payload instanceof RegExp;\nexport const isMap = (payload) => payload instanceof Map;\nexport const isSet = (payload) => payload instanceof Set;\nexport const isSymbol = (payload) => getType(payload) === 'Symbol';\nexport const isDate = (payload) => payload instanceof Date && !isNaN(payload.valueOf());\nexport const isError = (payload) => payload instanceof Error;\nexport const isNaNValue = (payload) => typeof payload === 'number' && isNaN(payload);\nexport const isPrimitive = (payload) => isBoolean(payload) ||\n isNull(payload) ||\n isUndefined(payload) ||\n isNumber(payload) ||\n isString(payload) ||\n isSymbol(payload);\nexport const isBigint = (payload) => typeof payload === 'bigint';\nexport const isInfinite = (payload) => payload === Infinity || payload === -Infinity;\nexport const isTypedArray = (payload) => ArrayBuffer.isView(payload) && !(payload instanceof DataView);\nexport const isURL = (payload) => payload instanceof URL;\n//# sourceMappingURL=is.js.map","export const escapeKey = (key) => key.replace(/\\\\/g, '\\\\\\\\').replace(/\\./g, '\\\\.');\nexport const stringifyPath = (path) => path\n .map(String)\n .map(escapeKey)\n .join('.');\nexport const parsePath = (string, legacyPaths) => {\n const result = [];\n let segment = '';\n for (let i = 0; i < string.length; i++) {\n let char = string.charAt(i);\n if (!legacyPaths && char === '\\\\') {\n const escaped = string.charAt(i + 1);\n if (escaped === '\\\\') {\n segment += '\\\\';\n i++;\n continue;\n }\n else if (escaped !== '.') {\n throw Error('invalid path');\n }\n }\n const isEscapedDot = char === '\\\\' && string.charAt(i + 1) === '.';\n if (isEscapedDot) {\n segment += '.';\n i++;\n continue;\n }\n const isEndOfSegment = char === '.';\n if (isEndOfSegment) {\n result.push(segment);\n segment = '';\n continue;\n }\n segment += char;\n }\n const lastSegment = segment;\n result.push(lastSegment);\n return result;\n};\n//# sourceMappingURL=pathstringifier.js.map","import { isBigint, isDate, isInfinite, isMap, isNaNValue, isRegExp, isSet, isUndefined, isSymbol, isArray, isError, isTypedArray, isURL, } from './is.js';\nimport { findArr } from './util.js';\nfunction simpleTransformation(isApplicable, annotation, transform, untransform) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform,\n };\n}\nconst simpleRules = [\n simpleTransformation(isUndefined, 'undefined', () => null, () => undefined),\n simpleTransformation(isBigint, 'bigint', v => v.toString(), v => {\n if (typeof BigInt !== 'undefined') {\n return BigInt(v);\n }\n console.error('Please add a BigInt polyfill.');\n return v;\n }),\n simpleTransformation(isDate, 'Date', v => v.toISOString(), v => new Date(v)),\n simpleTransformation(isError, 'Error', (v, superJson) => {\n const baseError = {\n name: v.name,\n message: v.message,\n };\n if ('cause' in v) {\n baseError.cause = v.cause;\n }\n superJson.allowedErrorProps.forEach(prop => {\n baseError[prop] = v[prop];\n });\n return baseError;\n }, (v, superJson) => {\n const e = new Error(v.message, { cause: v.cause });\n e.name = v.name;\n e.stack = v.stack;\n superJson.allowedErrorProps.forEach(prop => {\n e[prop] = v[prop];\n });\n return e;\n }),\n simpleTransformation(isRegExp, 'regexp', v => '' + v, regex => {\n const body = regex.slice(1, regex.lastIndexOf('/'));\n const flags = regex.slice(regex.lastIndexOf('/') + 1);\n return new RegExp(body, flags);\n }),\n simpleTransformation(isSet, 'set', \n // (sets only exist in es6+)\n // eslint-disable-next-line es5/no-es6-methods\n v => [...v.values()], v => new Set(v)),\n simpleTransformation(isMap, 'map', v => [...v.entries()], v => new Map(v)),\n simpleTransformation((v) => isNaNValue(v) || isInfinite(v), 'number', v => {\n if (isNaNValue(v)) {\n return 'NaN';\n }\n if (v > 0) {\n return 'Infinity';\n }\n else {\n return '-Infinity';\n }\n }, Number),\n simpleTransformation((v) => v === 0 && 1 / v === -Infinity, 'number', () => {\n return '-0';\n }, Number),\n simpleTransformation(isURL, 'URL', v => v.toString(), v => new URL(v)),\n];\nfunction compositeTransformation(isApplicable, annotation, transform, untransform) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform,\n };\n}\nconst symbolRule = compositeTransformation((s, superJson) => {\n if (isSymbol(s)) {\n const isRegistered = !!superJson.symbolRegistry.getIdentifier(s);\n return isRegistered;\n }\n return false;\n}, (s, superJson) => {\n const identifier = superJson.symbolRegistry.getIdentifier(s);\n return ['symbol', identifier];\n}, v => v.description, (_, a, superJson) => {\n const value = superJson.symbolRegistry.getValue(a[1]);\n if (!value) {\n throw new Error('Trying to deserialize unknown symbol');\n }\n return value;\n});\nconst constructorToName = [\n Int8Array,\n Uint8Array,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array,\n Uint8ClampedArray,\n].reduce((obj, ctor) => {\n obj[ctor.name] = ctor;\n return obj;\n}, {});\nconst typedArrayRule = compositeTransformation(isTypedArray, v => ['typed-array', v.constructor.name], v => [...v], (v, a) => {\n const ctor = constructorToName[a[1]];\n if (!ctor) {\n throw new Error('Trying to deserialize unknown typed array');\n }\n return new ctor(v);\n});\nexport function isInstanceOfRegisteredClass(potentialClass, superJson) {\n if (potentialClass?.constructor) {\n const isRegistered = !!superJson.classRegistry.getIdentifier(potentialClass.constructor);\n return isRegistered;\n }\n return false;\n}\nconst classRule = compositeTransformation(isInstanceOfRegisteredClass, (clazz, superJson) => {\n const identifier = superJson.classRegistry.getIdentifier(clazz.constructor);\n return ['class', identifier];\n}, (clazz, superJson) => {\n const allowedProps = superJson.classRegistry.getAllowedProps(clazz.constructor);\n if (!allowedProps) {\n return { ...clazz };\n }\n const result = {};\n allowedProps.forEach(prop => {\n result[prop] = clazz[prop];\n });\n return result;\n}, (v, a, superJson) => {\n const clazz = superJson.classRegistry.getValue(a[1]);\n if (!clazz) {\n throw new Error(`Trying to deserialize unknown class '${a[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);\n }\n return Object.assign(Object.create(clazz.prototype), v);\n});\nconst customRule = compositeTransformation((value, superJson) => {\n return !!superJson.customTransformerRegistry.findApplicable(value);\n}, (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(value);\n return ['custom', transformer.name];\n}, (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(value);\n return transformer.serialize(value);\n}, (v, a, superJson) => {\n const transformer = superJson.customTransformerRegistry.findByName(a[1]);\n if (!transformer) {\n throw new Error('Trying to deserialize unknown custom value');\n }\n return transformer.deserialize(v);\n});\nconst compositeRules = [classRule, symbolRule, customRule, typedArrayRule];\nexport const transformValue = (value, superJson) => {\n const applicableCompositeRule = findArr(compositeRules, rule => rule.isApplicable(value, superJson));\n if (applicableCompositeRule) {\n return {\n value: applicableCompositeRule.transform(value, superJson),\n type: applicableCompositeRule.annotation(value, superJson),\n };\n }\n const applicableSimpleRule = findArr(simpleRules, rule => rule.isApplicable(value, superJson));\n if (applicableSimpleRule) {\n return {\n value: applicableSimpleRule.transform(value, superJson),\n type: applicableSimpleRule.annotation,\n };\n }\n return undefined;\n};\nconst simpleRulesByAnnotation = {};\nsimpleRules.forEach(rule => {\n simpleRulesByAnnotation[rule.annotation] = rule;\n});\nexport const untransformValue = (json, type, superJson) => {\n if (isArray(type)) {\n switch (type[0]) {\n case 'symbol':\n return symbolRule.untransform(json, type, superJson);\n case 'class':\n return classRule.untransform(json, type, superJson);\n case 'custom':\n return customRule.untransform(json, type, superJson);\n case 'typed-array':\n return typedArrayRule.untransform(json, type, superJson);\n default:\n throw new Error('Unknown transformation: ' + type);\n }\n }\n else {\n const transformation = simpleRulesByAnnotation[type];\n if (!transformation) {\n throw new Error('Unknown transformation: ' + type);\n }\n return transformation.untransform(json, superJson);\n }\n};\n//# sourceMappingURL=transformer.js.map","import { isMap, isArray, isPlainObject, isSet } from './is.js';\nimport { includes } from './util.js';\nconst getNthKey = (value, n) => {\n if (n > value.size)\n throw new Error('index out of bounds');\n const keys = value.keys();\n while (n > 0) {\n keys.next();\n n--;\n }\n return keys.next().value;\n};\nfunction validatePath(path) {\n if (includes(path, '__proto__')) {\n throw new Error('__proto__ is not allowed as a property');\n }\n if (includes(path, 'prototype')) {\n throw new Error('prototype is not allowed as a property');\n }\n if (includes(path, 'constructor')) {\n throw new Error('constructor is not allowed as a property');\n }\n}\nexport const getDeep = (object, path) => {\n validatePath(path);\n for (let i = 0; i < path.length; i++) {\n const key = path[i];\n if (isSet(object)) {\n object = getNthKey(object, +key);\n }\n else if (isMap(object)) {\n const row = +key;\n const type = +path[++i] === 0 ? 'key' : 'value';\n const keyOfRow = getNthKey(object, row);\n switch (type) {\n case 'key':\n object = keyOfRow;\n break;\n case 'value':\n object = object.get(keyOfRow);\n break;\n }\n }\n else {\n object = object[key];\n }\n }\n return object;\n};\nexport const setDeep = (object, path, mapper) => {\n validatePath(path);\n if (path.length === 0) {\n return mapper(object);\n }\n let parent = object;\n for (let i = 0; i < path.length - 1; i++) {\n const key = path[i];\n if (isArray(parent)) {\n const index = +key;\n parent = parent[index];\n }\n else if (isPlainObject(parent)) {\n parent = parent[key];\n }\n else if (isSet(parent)) {\n const row = +key;\n parent = getNthKey(parent, row);\n }\n else if (isMap(parent)) {\n const isEnd = i === path.length - 2;\n if (isEnd) {\n break;\n }\n const row = +key;\n const type = +path[++i] === 0 ? 'key' : 'value';\n const keyOfRow = getNthKey(parent, row);\n switch (type) {\n case 'key':\n parent = keyOfRow;\n break;\n case 'value':\n parent = parent.get(keyOfRow);\n break;\n }\n }\n }\n const lastKey = path[path.length - 1];\n if (isArray(parent)) {\n parent[+lastKey] = mapper(parent[+lastKey]);\n }\n else if (isPlainObject(parent)) {\n parent[lastKey] = mapper(parent[lastKey]);\n }\n if (isSet(parent)) {\n const oldValue = getNthKey(parent, +lastKey);\n const newValue = mapper(oldValue);\n if (oldValue !== newValue) {\n parent.delete(oldValue);\n parent.add(newValue);\n }\n }\n if (isMap(parent)) {\n const row = +path[path.length - 2];\n const keyToRow = getNthKey(parent, row);\n const type = +lastKey === 0 ? 'key' : 'value';\n switch (type) {\n case 'key': {\n const newKey = mapper(keyToRow);\n parent.set(newKey, parent.get(keyToRow));\n if (newKey !== keyToRow) {\n parent.delete(keyToRow);\n }\n break;\n }\n case 'value': {\n parent.set(keyToRow, mapper(parent.get(keyToRow)));\n break;\n }\n }\n }\n return object;\n};\n//# sourceMappingURL=accessDeep.js.map","import { isArray, isEmptyObject, isError, isMap, isPlainObject, isPrimitive, isSet, } from './is.js';\nimport { escapeKey, stringifyPath } from './pathstringifier.js';\nimport { isInstanceOfRegisteredClass, transformValue, untransformValue, } from './transformer.js';\nimport { includes, forEach } from './util.js';\nimport { parsePath } from './pathstringifier.js';\nimport { getDeep, setDeep } from './accessDeep.js';\nconst enableLegacyPaths = (version) => version < 1;\nfunction traverse(tree, walker, version, origin = []) {\n if (!tree) {\n return;\n }\n const legacyPaths = enableLegacyPaths(version);\n if (!isArray(tree)) {\n forEach(tree, (subtree, key) => traverse(subtree, walker, version, [\n ...origin,\n ...parsePath(key, legacyPaths),\n ]));\n return;\n }\n const [nodeValue, children] = tree;\n if (children) {\n forEach(children, (child, key) => {\n traverse(child, walker, version, [\n ...origin,\n ...parsePath(key, legacyPaths),\n ]);\n });\n }\n walker(nodeValue, origin);\n}\nexport function applyValueAnnotations(plain, annotations, version, superJson) {\n traverse(annotations, (type, path) => {\n plain = setDeep(plain, path, v => untransformValue(v, type, superJson));\n }, version);\n return plain;\n}\nexport function applyReferentialEqualityAnnotations(plain, annotations, version) {\n const legacyPaths = enableLegacyPaths(version);\n function apply(identicalPaths, path) {\n const object = getDeep(plain, parsePath(path, legacyPaths));\n identicalPaths\n .map(path => parsePath(path, legacyPaths))\n .forEach(identicalObjectPath => {\n plain = setDeep(plain, identicalObjectPath, () => object);\n });\n }\n if (isArray(annotations)) {\n const [root, other] = annotations;\n root.forEach(identicalPath => {\n plain = setDeep(plain, parsePath(identicalPath, legacyPaths), () => plain);\n });\n if (other) {\n forEach(other, apply);\n }\n }\n else {\n forEach(annotations, apply);\n }\n return plain;\n}\nconst isDeep = (object, superJson) => isPlainObject(object) ||\n isArray(object) ||\n isMap(object) ||\n isSet(object) ||\n isError(object) ||\n isInstanceOfRegisteredClass(object, superJson);\nfunction addIdentity(object, path, identities) {\n const existingSet = identities.get(object);\n if (existingSet) {\n existingSet.push(path);\n }\n else {\n identities.set(object, [path]);\n }\n}\nexport function generateReferentialEqualityAnnotations(identitites, dedupe) {\n const result = {};\n let rootEqualityPaths = undefined;\n identitites.forEach(paths => {\n if (paths.length <= 1) {\n return;\n }\n // if we're not deduping, all of these objects continue existing.\n // putting the shortest path first makes it easier to parse for humans\n // if we're deduping though, only the first entry will still exist, so we can't do this optimisation.\n if (!dedupe) {\n paths = paths\n .map(path => path.map(String))\n .sort((a, b) => a.length - b.length);\n }\n const [representativePath, ...identicalPaths] = paths;\n if (representativePath.length === 0) {\n rootEqualityPaths = identicalPaths.map(stringifyPath);\n }\n else {\n result[stringifyPath(representativePath)] = identicalPaths.map(stringifyPath);\n }\n });\n if (rootEqualityPaths) {\n if (isEmptyObject(result)) {\n return [rootEqualityPaths];\n }\n else {\n return [rootEqualityPaths, result];\n }\n }\n else {\n return isEmptyObject(result) ? undefined : result;\n }\n}\nexport const walker = (object, identities, superJson, dedupe, path = [], objectsInThisPath = [], seenObjects = new Map()) => {\n const primitive = isPrimitive(object);\n if (!primitive) {\n addIdentity(object, path, identities);\n const seen = seenObjects.get(object);\n if (seen) {\n // short-circuit result if we've seen this object before\n return dedupe\n ? {\n transformedValue: null,\n }\n : seen;\n }\n }\n if (!isDeep(object, superJson)) {\n const transformed = transformValue(object, superJson);\n const result = transformed\n ? {\n transformedValue: transformed.value,\n annotations: [transformed.type],\n }\n : {\n transformedValue: object,\n };\n if (!primitive) {\n seenObjects.set(object, result);\n }\n return result;\n }\n if (includes(objectsInThisPath, object)) {\n // prevent circular references\n return {\n transformedValue: null,\n };\n }\n const transformationResult = transformValue(object, superJson);\n const transformed = transformationResult?.value ?? object;\n const transformedValue = isArray(transformed) ? [] : {};\n const innerAnnotations = {};\n forEach(transformed, (value, index) => {\n if (index === '__proto__' ||\n index === 'constructor' ||\n index === 'prototype') {\n throw new Error(`Detected property ${index}. This is a prototype pollution risk, please remove it from your object.`);\n }\n const recursiveResult = walker(value, identities, superJson, dedupe, [...path, index], [...objectsInThisPath, object], seenObjects);\n transformedValue[index] = recursiveResult.transformedValue;\n if (isArray(recursiveResult.annotations)) {\n innerAnnotations[escapeKey(index)] = recursiveResult.annotations;\n }\n else if (isPlainObject(recursiveResult.annotations)) {\n forEach(recursiveResult.annotations, (tree, key) => {\n innerAnnotations[escapeKey(index) + '.' + key] = tree;\n });\n }\n });\n const result = isEmptyObject(innerAnnotations)\n ? {\n transformedValue,\n annotations: !!transformationResult\n ? [transformationResult.type]\n : undefined,\n }\n : {\n transformedValue,\n annotations: !!transformationResult\n ? [transformationResult.type, innerAnnotations]\n : innerAnnotations,\n };\n if (!primitive) {\n seenObjects.set(object, result);\n }\n return result;\n};\n//# sourceMappingURL=plainer.js.map","/** Returns the object type of the given payload */\nexport function getType(payload) {\n return Object.prototype.toString.call(payload).slice(8, -1);\n}\n","import { getType } from './getType.js';\n/** Returns whether the payload is an array */\nexport function isArray(payload) {\n return getType(payload) === 'Array';\n}\n","import { getType } from './getType.js';\n/**\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects\n * with other prototypes)\n */\nexport function isPlainObject(payload) {\n if (getType(payload) !== 'Object')\n return false;\n const prototype = Object.getPrototypeOf(payload);\n return !!prototype && prototype.constructor === Object && prototype === Object.prototype;\n}\n","import { isArray, isPlainObject } from 'is-what';\nfunction assignProp(carry, key, newVal, originalObject, includeNonenumerable) {\n const propType = {}.propertyIsEnumerable.call(originalObject, key)\n ? 'enumerable'\n : 'nonenumerable';\n if (propType === 'enumerable')\n carry[key] = newVal;\n if (includeNonenumerable && propType === 'nonenumerable') {\n Object.defineProperty(carry, key, {\n value: newVal,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n }\n}\n/**\n * Copy (clone) an object and all its props recursively to get rid of any prop referenced of the\n * original object. Arrays are also cloned, however objects inside arrays are still linked.\n *\n * @param target Target can be anything\n * @param [options={}] See type {@link Options} for more details.\n *\n * - `{ props: ['key1'] }` will only copy the `key1` property. When using this you will need to cast\n * the return type manually (in order to keep the TS implementation in here simple I didn't\n * built a complex auto resolved type for those few cases people want to use this option)\n * - `{ nonenumerable: true }` will copy all non-enumerable properties. Default is `{}`\n *\n * @returns The target with replaced values\n */\nexport function copy(target, options = {}) {\n if (isArray(target)) {\n return target.map((item) => copy(item, options));\n }\n if (!isPlainObject(target)) {\n return target;\n }\n const props = Object.getOwnPropertyNames(target);\n const symbols = Object.getOwnPropertySymbols(target);\n return [...props, ...symbols].reduce((carry, key) => {\n // Skip __proto__ properties to prevent prototype pollution\n if (key === '__proto__')\n return carry;\n if (isArray(options.props) && !options.props.includes(key)) {\n return carry;\n }\n const val = target[key];\n const newVal = copy(val, options);\n assignProp(carry, key, newVal, target, options.nonenumerable);\n return carry;\n }, {});\n}\n","import { ClassRegistry } from './class-registry.js';\nimport { Registry } from './registry.js';\nimport { CustomTransformerRegistry, } from './custom-transformer-registry.js';\nimport { applyReferentialEqualityAnnotations, applyValueAnnotations, generateReferentialEqualityAnnotations, walker, } from './plainer.js';\nimport { copy } from 'copy-anything';\nclass SuperJSON {\n /**\n * @param dedupeReferentialEqualities If true, SuperJSON will make sure only one instance of referentially equal objects are serialized and the rest are replaced with `null`.\n */\n constructor({ dedupe = false, } = {}) {\n this.classRegistry = new ClassRegistry();\n this.symbolRegistry = new Registry(s => s.description ?? '');\n this.customTransformerRegistry = new CustomTransformerRegistry();\n this.allowedErrorProps = [];\n this.dedupe = dedupe;\n }\n serialize(object) {\n const identities = new Map();\n const output = walker(object, identities, this, this.dedupe);\n const res = {\n json: output.transformedValue,\n };\n if (output.annotations) {\n res.meta = {\n ...res.meta,\n values: output.annotations,\n };\n }\n const equalityAnnotations = generateReferentialEqualityAnnotations(identities, this.dedupe);\n if (equalityAnnotations) {\n res.meta = {\n ...res.meta,\n referentialEqualities: equalityAnnotations,\n };\n }\n if (res.meta)\n res.meta.v = 1;\n return res;\n }\n deserialize(payload, options) {\n const { json, meta } = payload;\n let result = options?.inPlace ? json : copy(json);\n if (meta?.values) {\n result = applyValueAnnotations(result, meta.values, meta.v ?? 0, this);\n }\n if (meta?.referentialEqualities) {\n result = applyReferentialEqualityAnnotations(result, meta.referentialEqualities, meta.v ?? 0);\n }\n return result;\n }\n stringify(object) {\n return JSON.stringify(this.serialize(object));\n }\n parse(string) {\n return this.deserialize(JSON.parse(string), { inPlace: true });\n }\n registerClass(v, options) {\n this.classRegistry.register(v, options);\n }\n registerSymbol(v, identifier) {\n this.symbolRegistry.register(v, identifier);\n }\n registerCustom(transformer, name) {\n this.customTransformerRegistry.register({\n name,\n ...transformer,\n });\n }\n allowErrorProps(...props) {\n this.allowedErrorProps.push(...props);\n }\n}\nSuperJSON.defaultInstance = new SuperJSON();\nSuperJSON.serialize = SuperJSON.defaultInstance.serialize.bind(SuperJSON.defaultInstance);\nSuperJSON.deserialize = SuperJSON.defaultInstance.deserialize.bind(SuperJSON.defaultInstance);\nSuperJSON.stringify = SuperJSON.defaultInstance.stringify.bind(SuperJSON.defaultInstance);\nSuperJSON.parse = SuperJSON.defaultInstance.parse.bind(SuperJSON.defaultInstance);\nSuperJSON.registerClass = SuperJSON.defaultInstance.registerClass.bind(SuperJSON.defaultInstance);\nSuperJSON.registerSymbol = SuperJSON.defaultInstance.registerSymbol.bind(SuperJSON.defaultInstance);\nSuperJSON.registerCustom = SuperJSON.defaultInstance.registerCustom.bind(SuperJSON.defaultInstance);\nSuperJSON.allowErrorProps = SuperJSON.defaultInstance.allowErrorProps.bind(SuperJSON.defaultInstance);\nexport default SuperJSON;\nexport { SuperJSON };\nexport const serialize = SuperJSON.serialize;\nexport const deserialize = SuperJSON.deserialize;\nexport const stringify = SuperJSON.stringify;\nexport const parse = SuperJSON.parse;\nexport const registerClass = SuperJSON.registerClass;\nexport const registerCustom = SuperJSON.registerCustom;\nexport const registerSymbol = SuperJSON.registerSymbol;\nexport const allowErrorProps = SuperJSON.allowErrorProps;\n//# sourceMappingURL=index.js.map","import type { Mastra } from '@mastra/core';\nimport type { RequestContext } from '@mastra/core/di';\nimport type { SystemMessage } from '@mastra/core/llm';\nimport type { StepWithComponent, Workflow, WorkflowInfo } from '@mastra/core/workflows';\nimport { toStandardSchema, standardSchemaToJSONSchema } from '@mastra/schema-compat/schema';\nimport type { PublicSchema } from '@mastra/schema-compat/schema';\n\nimport { stringify } from 'superjson';\nimport { MASTRA_RESOURCE_ID_KEY } from './constants';\nimport { HTTPException } from './http-exception';\n\n/**\n * Convert any PublicSchema to a JSON Schema.\n * Uses toStandardSchema to handle all schema types (Zod v4, AI SDK Schema, JSON Schema).\n */\nfunction schemaToJsonSchema(schema: PublicSchema<unknown> | undefined) {\n if (!schema) return undefined;\n\n // Convert any PublicSchema to StandardSchemaWithJSON, then extract JSON Schema\n const standardSchema = toStandardSchema(schema);\n return standardSchemaToJSONSchema(standardSchema);\n}\n\n/**\n * Normalizes a route path to ensure consistent formatting.\n * - Removes leading/trailing whitespace\n * - Validates no path traversal (..), query strings (?), or fragments (#)\n * - Collapses multiple consecutive slashes\n * - Removes trailing slashes\n * - Ensures leading slash (unless empty)\n *\n * @param path - The route path to normalize\n * @returns The normalized path (empty string for root paths)\n * @throws Error if path contains invalid characters\n */\nexport function normalizeRoutePath(path: string): string {\n let normalized = path.trim();\n if (normalized.includes('..') || normalized.includes('?') || normalized.includes('#')) {\n throw new Error(`Invalid route path: \"${path}\". Path cannot contain '..', '?', or '#'`);\n }\n normalized = normalized.replace(/\\/+/g, '/');\n if (normalized === '/' || normalized === '') {\n return '';\n }\n if (normalized.endsWith('/')) {\n normalized = normalized.slice(0, -1);\n }\n if (!normalized.startsWith('/')) {\n normalized = `/${normalized}`;\n }\n return normalized;\n}\n\nconst DEFAULT_STORED_RESOURCE_SCOPE_METADATA_KEY = 'mastra.resourceId';\n\nexport type StoredResourceScope = {\n metadataKey: string;\n value: string;\n};\n\nexport type StoredResourceLike = {\n metadata?: Record<string, unknown> | null;\n};\n\nexport async function getStoredResourceScope(\n mastra: Pick<Mastra, 'getServer'>,\n requestContext: RequestContext | undefined,\n): Promise<StoredResourceScope | undefined> {\n const scopeConfig = mastra?.getServer?.()?.storedResources?.scope;\n if (!scopeConfig) {\n return undefined;\n }\n\n const options = scopeConfig === true ? {} : scopeConfig;\n const metadataKey = options.metadataKey ?? DEFAULT_STORED_RESOURCE_SCOPE_METADATA_KEY;\n const user = requestContext?.get('user');\n const resolved = options.resolve\n ? await options.resolve({ requestContext, user })\n : (requestContext?.get(MASTRA_RESOURCE_ID_KEY) as string | undefined);\n\n if (!resolved) {\n if (options.requireScope === false) {\n return undefined;\n }\n throw new HTTPException(403, { message: 'Stored resource scope is required' });\n }\n\n return { metadataKey, value: resolved };\n}\n\nexport function scopeStoredResourceMetadata(\n metadata: Record<string, unknown> | undefined,\n scope: StoredResourceScope | undefined,\n): Record<string, unknown> | undefined {\n if (!scope) {\n return metadata;\n }\n\n return {\n ...(metadata ?? {}),\n [scope.metadataKey]: scope.value,\n };\n}\n\nexport function assertStoredResourceScope(\n resource: StoredResourceLike | null | undefined,\n scope: StoredResourceScope | undefined,\n): void {\n if (!resource || !scope) {\n return;\n }\n\n if (resource.metadata?.[scope.metadataKey] !== scope.value) {\n throw new HTTPException(404, { message: 'Stored resource not found' });\n }\n}\n\n/**\n * Check if a schema looks like a processor step schema.\n * Processor step schemas are discriminated unions on 'phase' with specific values.\n */\nfunction looksLikeProcessorStepSchema(schema: PublicSchema<unknown> | undefined): boolean {\n if (!schema) return false;\n\n try {\n const jsonSchema = standardSchemaToJSONSchema(toStandardSchema(schema)) as Record<string, unknown> | undefined;\n if (!jsonSchema) return false;\n\n // Check for discriminated union pattern: anyOf/oneOf with phase discriminator\n const variants = (jsonSchema.anyOf || jsonSchema.oneOf) as Array<Record<string, unknown>> | undefined;\n if (!variants || !Array.isArray(variants)) return false;\n\n // Check if all variants have a 'phase' property with processor phase values\n const processorPhases = new Set(['input', 'inputStep', 'outputStream', 'outputResult', 'outputStep', 'toolResult']);\n\n for (const variant of variants) {\n const properties = variant.properties as Record<string, unknown> | undefined;\n if (!properties?.phase) return false;\n\n const phaseSchema = properties.phase as Record<string, unknown>;\n const phaseConst = phaseSchema?.const as string | undefined;\n const phaseEnum = Array.isArray(phaseSchema?.enum) ? (phaseSchema.enum as string[]) : [];\n const phaseValues = phaseConst ? [phaseConst] : phaseEnum;\n\n if (!phaseValues.length || phaseValues.some(phase => !processorPhases.has(phase))) {\n return false;\n }\n }\n\n return variants.length > 0;\n } catch {\n return false;\n }\n}\n\nfunction getSteps(steps: Record<string, StepWithComponent>, path?: string) {\n return Object.entries(steps).reduce<any>((acc, [key, step]) => {\n const fullKey = path ? `${path}.${key}` : key;\n acc[fullKey] = {\n id: step.id,\n description: step.description,\n inputSchema: step.inputSchema ? stringify(schemaToJsonSchema(step.inputSchema)) : undefined,\n outputSchema: step.outputSchema ? stringify(schemaToJsonSchema(step.outputSchema)) : undefined,\n resumeSchema: step.resumeSchema ? stringify(schemaToJsonSchema(step.resumeSchema)) : undefined,\n suspendSchema: step.suspendSchema ? stringify(schemaToJsonSchema(step.suspendSchema)) : undefined,\n stateSchema: step.stateSchema ? stringify(schemaToJsonSchema(step.stateSchema)) : undefined,\n isWorkflow: step.component === 'WORKFLOW',\n component: step.component,\n metadata: step.metadata,\n };\n\n if (step.component === 'WORKFLOW' && step.steps) {\n const nestedSteps = getSteps(step.steps, fullKey) || {};\n acc = { ...acc, ...nestedSteps };\n }\n\n return acc;\n }, {});\n}\n\nexport function getWorkflowInfo(workflow: Workflow, partial: boolean = false): WorkflowInfo {\n if (partial) {\n // Return minimal info in partial mode\n return {\n name: workflow.name,\n description: workflow.description,\n metadata: workflow.metadata,\n stepCount: Object.keys(workflow.steps).length,\n stepGraph: workflow.serializedStepGraph,\n options: workflow.options,\n steps: {},\n allSteps: {},\n inputSchema: undefined,\n outputSchema: undefined,\n stateSchema: undefined,\n requestContextSchema: undefined,\n origin: workflow.origin,\n } as WorkflowInfo;\n }\n\n return {\n name: workflow.name,\n description: workflow.description,\n metadata: workflow.metadata,\n origin: workflow.origin,\n steps: Object.entries(workflow.steps).reduce<any>((acc, [key, step]) => {\n acc[key] = {\n id: step.id,\n description: step.description,\n inputSchema: step.inputSchema ? stringify(schemaToJsonSchema(step.inputSchema)) : undefined,\n outputSchema: step.outputSchema ? stringify(schemaToJsonSchema(step.outputSchema)) : undefined,\n resumeSchema: step.resumeSchema ? stringify(schemaToJsonSchema(step.resumeSchema)) : undefined,\n suspendSchema: step.suspendSchema ? stringify(schemaToJsonSchema(step.suspendSchema)) : undefined,\n stateSchema: step.stateSchema ? stringify(schemaToJsonSchema(step.stateSchema)) : undefined,\n requestContextSchema: step.requestContextSchema\n ? stringify(schemaToJsonSchema(step.requestContextSchema))\n : undefined,\n component: step.component,\n metadata: step.metadata,\n };\n return acc;\n }, {}),\n allSteps: getSteps(workflow.steps) || {},\n stepGraph: workflow.serializedStepGraph,\n inputSchema: workflow.inputSchema ? stringify(schemaToJsonSchema(workflow.inputSchema)) : undefined,\n outputSchema: workflow.outputSchema ? stringify(schemaToJsonSchema(workflow.outputSchema)) : undefined,\n stateSchema: workflow.stateSchema ? stringify(schemaToJsonSchema(workflow.stateSchema)) : undefined,\n requestContextSchema: workflow.requestContextSchema\n ? stringify(schemaToJsonSchema(workflow.requestContextSchema))\n : undefined,\n options: workflow.options,\n isProcessorWorkflow: workflow.type === 'processor' || looksLikeProcessorStepSchema(workflow.inputSchema),\n };\n}\n\n/**\n * Workflow Registry for temporarily registering additional workflows\n * that are not part of the user's Mastra instance (e.g., internal template workflows)\n */\nexport class WorkflowRegistry {\n private static additionalWorkflows: Record<string, Workflow> = {};\n\n /**\n * Register a workflow temporarily\n */\n static registerTemporaryWorkflow(id: string, workflow: Workflow): void {\n this.additionalWorkflows[id] = workflow;\n }\n\n /**\n * Register all workflows from map\n */\n static registerTemporaryWorkflows(\n workflows: Record<string, Workflow>,\n mastra?: Mastra<any, any, any, any, any, any, any, any, any>,\n ): void {\n for (const [id, workflow] of Object.entries(workflows)) {\n // Register Mastra instance with the workflow if provided\n if (mastra) {\n workflow.__registerMastra(mastra);\n workflow.__registerPrimitives({\n logger: mastra.getLogger(),\n storage: mastra.getStorage(),\n agents: mastra.listAgents(),\n tts: mastra.getTTS(),\n vectors: mastra.listVectors(),\n });\n }\n this.additionalWorkflows[id] = workflow;\n }\n }\n\n /**\n * Get a workflow by ID from the registry (returns undefined if not found)\n */\n static getWorkflow(workflowId: string): Workflow | undefined {\n return this.additionalWorkflows[workflowId];\n }\n\n /**\n * Get all workflows from the registry\n */\n static getAllWorkflows(): Record<string, Workflow> {\n return { ...this.additionalWorkflows };\n }\n\n /**\n * Clean up a temporary workflow\n */\n static cleanupTemporaryWorkflow(workflowId: string): void {\n delete this.additionalWorkflows[workflowId];\n }\n /**\n * Clean up all registered workflows\n */\n static cleanup(): void {\n // Clear all workflows (since we register all agent-builder workflows each time)\n this.additionalWorkflows = {};\n }\n\n /**\n * Check if a workflow ID is a valid agent-builder workflow\n */\n static isAgentBuilderWorkflow(workflowId: string): boolean {\n return workflowId in this.additionalWorkflows;\n }\n\n /**\n * Get all registered temporary workflow IDs (for debugging)\n */\n static getRegisteredWorkflowIds(): string[] {\n return Object.keys(this.additionalWorkflows);\n }\n}\n\n/**\n * Converts a string to a URL-friendly slug.\n * Lowercases, replaces non-alphanumeric characters with hyphens,\n * collapses consecutive hyphens, and trims leading/trailing hyphens.\n */\nexport function toSlug(input: string): string {\n return input\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\nexport function convertInstructionsToString(message: SystemMessage): string {\n if (!message) {\n return '';\n }\n\n if (typeof message === 'string') {\n return message;\n }\n\n if (Array.isArray(message)) {\n return message\n .map(m => {\n if (typeof m === 'string') {\n return m;\n }\n // Safely extract content from message objects\n return typeof m.content === 'string' ? m.content : '';\n })\n .filter(content => content) // Remove empty strings\n .join('\\n');\n }\n\n // Handle single message object - safely extract content\n return typeof message.content === 'string' ? message.content : '';\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils-CJxnYdr3.cjs","names":["getType","isPlainObject","isArray","isArray","isArray","isPlainObject","isArray","isPlainObject","standardSchemaToJSONSchema","toStandardSchema","MASTRA_RESOURCE_ID_KEY","HTTPException"],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/double-indexed-kv.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/registry.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/class-registry.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/util.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/custom-transformer-registry.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/is.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/pathstringifier.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/transformer.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/accessDeep.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/plainer.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/is-what/5.5.0/6a17e1f04f109bfa55bd3a32beb0649d4f15de71496a7b56ad89c5617c48dbcf/node_modules/is-what/dist/getType.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/is-what/5.5.0/6a17e1f04f109bfa55bd3a32beb0649d4f15de71496a7b56ad89c5617c48dbcf/node_modules/is-what/dist/isArray.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/is-what/5.5.0/6a17e1f04f109bfa55bd3a32beb0649d4f15de71496a7b56ad89c5617c48dbcf/node_modules/is-what/dist/isPlainObject.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/copy-anything/4.0.5/22cc8bea9fb94edd0adbb1b532950c62b530da34e51811884acea49340e0256c/node_modules/copy-anything/dist/index.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/superjson/2.2.6/b5fefaeae5105e92d752f15cd158913d848e5075a9f80278488919f0941a70dd/node_modules/superjson/dist/index.js","../src/server/utils.ts"],"sourcesContent":["export class DoubleIndexedKV {\n constructor() {\n this.keyToValue = new Map();\n this.valueToKey = new Map();\n }\n set(key, value) {\n this.keyToValue.set(key, value);\n this.valueToKey.set(value, key);\n }\n getByKey(key) {\n return this.keyToValue.get(key);\n }\n getByValue(value) {\n return this.valueToKey.get(value);\n }\n clear() {\n this.keyToValue.clear();\n this.valueToKey.clear();\n }\n}\n//# sourceMappingURL=double-indexed-kv.js.map","import { DoubleIndexedKV } from './double-indexed-kv.js';\nexport class Registry {\n constructor(generateIdentifier) {\n this.generateIdentifier = generateIdentifier;\n this.kv = new DoubleIndexedKV();\n }\n register(value, identifier) {\n if (this.kv.getByValue(value)) {\n return;\n }\n if (!identifier) {\n identifier = this.generateIdentifier(value);\n }\n this.kv.set(identifier, value);\n }\n clear() {\n this.kv.clear();\n }\n getIdentifier(value) {\n return this.kv.getByValue(value);\n }\n getValue(identifier) {\n return this.kv.getByKey(identifier);\n }\n}\n//# sourceMappingURL=registry.js.map","import { Registry } from './registry.js';\nexport class ClassRegistry extends Registry {\n constructor() {\n super(c => c.name);\n this.classToAllowedProps = new Map();\n }\n register(value, options) {\n if (typeof options === 'object') {\n if (options.allowProps) {\n this.classToAllowedProps.set(value, options.allowProps);\n }\n super.register(value, options.identifier);\n }\n else {\n super.register(value, options);\n }\n }\n getAllowedProps(value) {\n return this.classToAllowedProps.get(value);\n }\n}\n//# sourceMappingURL=class-registry.js.map","function valuesOfObj(record) {\n if ('values' in Object) {\n // eslint-disable-next-line es5/no-es6-methods\n return Object.values(record);\n }\n const values = [];\n // eslint-disable-next-line no-restricted-syntax\n for (const key in record) {\n if (record.hasOwnProperty(key)) {\n values.push(record[key]);\n }\n }\n return values;\n}\nexport function find(record, predicate) {\n const values = valuesOfObj(record);\n if ('find' in values) {\n // eslint-disable-next-line es5/no-es6-methods\n return values.find(predicate);\n }\n const valuesNotNever = values;\n for (let i = 0; i < valuesNotNever.length; i++) {\n const value = valuesNotNever[i];\n if (predicate(value)) {\n return value;\n }\n }\n return undefined;\n}\nexport function forEach(record, run) {\n Object.entries(record).forEach(([key, value]) => run(value, key));\n}\nexport function includes(arr, value) {\n return arr.indexOf(value) !== -1;\n}\nexport function findArr(record, predicate) {\n for (let i = 0; i < record.length; i++) {\n const value = record[i];\n if (predicate(value)) {\n return value;\n }\n }\n return undefined;\n}\n//# sourceMappingURL=util.js.map","import { find } from './util.js';\nexport class CustomTransformerRegistry {\n constructor() {\n this.transfomers = {};\n }\n register(transformer) {\n this.transfomers[transformer.name] = transformer;\n }\n findApplicable(v) {\n return find(this.transfomers, transformer => transformer.isApplicable(v));\n }\n findByName(name) {\n return this.transfomers[name];\n }\n}\n//# sourceMappingURL=custom-transformer-registry.js.map","const getType = (payload) => Object.prototype.toString.call(payload).slice(8, -1);\nexport const isUndefined = (payload) => typeof payload === 'undefined';\nexport const isNull = (payload) => payload === null;\nexport const isPlainObject = (payload) => {\n if (typeof payload !== 'object' || payload === null)\n return false;\n if (payload === Object.prototype)\n return false;\n if (Object.getPrototypeOf(payload) === null)\n return true;\n return Object.getPrototypeOf(payload) === Object.prototype;\n};\nexport const isEmptyObject = (payload) => isPlainObject(payload) && Object.keys(payload).length === 0;\nexport const isArray = (payload) => Array.isArray(payload);\nexport const isString = (payload) => typeof payload === 'string';\nexport const isNumber = (payload) => typeof payload === 'number' && !isNaN(payload);\nexport const isBoolean = (payload) => typeof payload === 'boolean';\nexport const isRegExp = (payload) => payload instanceof RegExp;\nexport const isMap = (payload) => payload instanceof Map;\nexport const isSet = (payload) => payload instanceof Set;\nexport const isSymbol = (payload) => getType(payload) === 'Symbol';\nexport const isDate = (payload) => payload instanceof Date && !isNaN(payload.valueOf());\nexport const isError = (payload) => payload instanceof Error;\nexport const isNaNValue = (payload) => typeof payload === 'number' && isNaN(payload);\nexport const isPrimitive = (payload) => isBoolean(payload) ||\n isNull(payload) ||\n isUndefined(payload) ||\n isNumber(payload) ||\n isString(payload) ||\n isSymbol(payload);\nexport const isBigint = (payload) => typeof payload === 'bigint';\nexport const isInfinite = (payload) => payload === Infinity || payload === -Infinity;\nexport const isTypedArray = (payload) => ArrayBuffer.isView(payload) && !(payload instanceof DataView);\nexport const isURL = (payload) => payload instanceof URL;\n//# sourceMappingURL=is.js.map","export const escapeKey = (key) => key.replace(/\\\\/g, '\\\\\\\\').replace(/\\./g, '\\\\.');\nexport const stringifyPath = (path) => path\n .map(String)\n .map(escapeKey)\n .join('.');\nexport const parsePath = (string, legacyPaths) => {\n const result = [];\n let segment = '';\n for (let i = 0; i < string.length; i++) {\n let char = string.charAt(i);\n if (!legacyPaths && char === '\\\\') {\n const escaped = string.charAt(i + 1);\n if (escaped === '\\\\') {\n segment += '\\\\';\n i++;\n continue;\n }\n else if (escaped !== '.') {\n throw Error('invalid path');\n }\n }\n const isEscapedDot = char === '\\\\' && string.charAt(i + 1) === '.';\n if (isEscapedDot) {\n segment += '.';\n i++;\n continue;\n }\n const isEndOfSegment = char === '.';\n if (isEndOfSegment) {\n result.push(segment);\n segment = '';\n continue;\n }\n segment += char;\n }\n const lastSegment = segment;\n result.push(lastSegment);\n return result;\n};\n//# sourceMappingURL=pathstringifier.js.map","import { isBigint, isDate, isInfinite, isMap, isNaNValue, isRegExp, isSet, isUndefined, isSymbol, isArray, isError, isTypedArray, isURL, } from './is.js';\nimport { findArr } from './util.js';\nfunction simpleTransformation(isApplicable, annotation, transform, untransform) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform,\n };\n}\nconst simpleRules = [\n simpleTransformation(isUndefined, 'undefined', () => null, () => undefined),\n simpleTransformation(isBigint, 'bigint', v => v.toString(), v => {\n if (typeof BigInt !== 'undefined') {\n return BigInt(v);\n }\n console.error('Please add a BigInt polyfill.');\n return v;\n }),\n simpleTransformation(isDate, 'Date', v => v.toISOString(), v => new Date(v)),\n simpleTransformation(isError, 'Error', (v, superJson) => {\n const baseError = {\n name: v.name,\n message: v.message,\n };\n if ('cause' in v) {\n baseError.cause = v.cause;\n }\n superJson.allowedErrorProps.forEach(prop => {\n baseError[prop] = v[prop];\n });\n return baseError;\n }, (v, superJson) => {\n const e = new Error(v.message, { cause: v.cause });\n e.name = v.name;\n e.stack = v.stack;\n superJson.allowedErrorProps.forEach(prop => {\n e[prop] = v[prop];\n });\n return e;\n }),\n simpleTransformation(isRegExp, 'regexp', v => '' + v, regex => {\n const body = regex.slice(1, regex.lastIndexOf('/'));\n const flags = regex.slice(regex.lastIndexOf('/') + 1);\n return new RegExp(body, flags);\n }),\n simpleTransformation(isSet, 'set', \n // (sets only exist in es6+)\n // eslint-disable-next-line es5/no-es6-methods\n v => [...v.values()], v => new Set(v)),\n simpleTransformation(isMap, 'map', v => [...v.entries()], v => new Map(v)),\n simpleTransformation((v) => isNaNValue(v) || isInfinite(v), 'number', v => {\n if (isNaNValue(v)) {\n return 'NaN';\n }\n if (v > 0) {\n return 'Infinity';\n }\n else {\n return '-Infinity';\n }\n }, Number),\n simpleTransformation((v) => v === 0 && 1 / v === -Infinity, 'number', () => {\n return '-0';\n }, Number),\n simpleTransformation(isURL, 'URL', v => v.toString(), v => new URL(v)),\n];\nfunction compositeTransformation(isApplicable, annotation, transform, untransform) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform,\n };\n}\nconst symbolRule = compositeTransformation((s, superJson) => {\n if (isSymbol(s)) {\n const isRegistered = !!superJson.symbolRegistry.getIdentifier(s);\n return isRegistered;\n }\n return false;\n}, (s, superJson) => {\n const identifier = superJson.symbolRegistry.getIdentifier(s);\n return ['symbol', identifier];\n}, v => v.description, (_, a, superJson) => {\n const value = superJson.symbolRegistry.getValue(a[1]);\n if (!value) {\n throw new Error('Trying to deserialize unknown symbol');\n }\n return value;\n});\nconst constructorToName = [\n Int8Array,\n Uint8Array,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array,\n Uint8ClampedArray,\n].reduce((obj, ctor) => {\n obj[ctor.name] = ctor;\n return obj;\n}, {});\nconst typedArrayRule = compositeTransformation(isTypedArray, v => ['typed-array', v.constructor.name], v => [...v], (v, a) => {\n const ctor = constructorToName[a[1]];\n if (!ctor) {\n throw new Error('Trying to deserialize unknown typed array');\n }\n return new ctor(v);\n});\nexport function isInstanceOfRegisteredClass(potentialClass, superJson) {\n if (potentialClass?.constructor) {\n const isRegistered = !!superJson.classRegistry.getIdentifier(potentialClass.constructor);\n return isRegistered;\n }\n return false;\n}\nconst classRule = compositeTransformation(isInstanceOfRegisteredClass, (clazz, superJson) => {\n const identifier = superJson.classRegistry.getIdentifier(clazz.constructor);\n return ['class', identifier];\n}, (clazz, superJson) => {\n const allowedProps = superJson.classRegistry.getAllowedProps(clazz.constructor);\n if (!allowedProps) {\n return { ...clazz };\n }\n const result = {};\n allowedProps.forEach(prop => {\n result[prop] = clazz[prop];\n });\n return result;\n}, (v, a, superJson) => {\n const clazz = superJson.classRegistry.getValue(a[1]);\n if (!clazz) {\n throw new Error(`Trying to deserialize unknown class '${a[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);\n }\n return Object.assign(Object.create(clazz.prototype), v);\n});\nconst customRule = compositeTransformation((value, superJson) => {\n return !!superJson.customTransformerRegistry.findApplicable(value);\n}, (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(value);\n return ['custom', transformer.name];\n}, (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(value);\n return transformer.serialize(value);\n}, (v, a, superJson) => {\n const transformer = superJson.customTransformerRegistry.findByName(a[1]);\n if (!transformer) {\n throw new Error('Trying to deserialize unknown custom value');\n }\n return transformer.deserialize(v);\n});\nconst compositeRules = [classRule, symbolRule, customRule, typedArrayRule];\nexport const transformValue = (value, superJson) => {\n const applicableCompositeRule = findArr(compositeRules, rule => rule.isApplicable(value, superJson));\n if (applicableCompositeRule) {\n return {\n value: applicableCompositeRule.transform(value, superJson),\n type: applicableCompositeRule.annotation(value, superJson),\n };\n }\n const applicableSimpleRule = findArr(simpleRules, rule => rule.isApplicable(value, superJson));\n if (applicableSimpleRule) {\n return {\n value: applicableSimpleRule.transform(value, superJson),\n type: applicableSimpleRule.annotation,\n };\n }\n return undefined;\n};\nconst simpleRulesByAnnotation = {};\nsimpleRules.forEach(rule => {\n simpleRulesByAnnotation[rule.annotation] = rule;\n});\nexport const untransformValue = (json, type, superJson) => {\n if (isArray(type)) {\n switch (type[0]) {\n case 'symbol':\n return symbolRule.untransform(json, type, superJson);\n case 'class':\n return classRule.untransform(json, type, superJson);\n case 'custom':\n return customRule.untransform(json, type, superJson);\n case 'typed-array':\n return typedArrayRule.untransform(json, type, superJson);\n default:\n throw new Error('Unknown transformation: ' + type);\n }\n }\n else {\n const transformation = simpleRulesByAnnotation[type];\n if (!transformation) {\n throw new Error('Unknown transformation: ' + type);\n }\n return transformation.untransform(json, superJson);\n }\n};\n//# sourceMappingURL=transformer.js.map","import { isMap, isArray, isPlainObject, isSet } from './is.js';\nimport { includes } from './util.js';\nconst getNthKey = (value, n) => {\n if (n > value.size)\n throw new Error('index out of bounds');\n const keys = value.keys();\n while (n > 0) {\n keys.next();\n n--;\n }\n return keys.next().value;\n};\nfunction validatePath(path) {\n if (includes(path, '__proto__')) {\n throw new Error('__proto__ is not allowed as a property');\n }\n if (includes(path, 'prototype')) {\n throw new Error('prototype is not allowed as a property');\n }\n if (includes(path, 'constructor')) {\n throw new Error('constructor is not allowed as a property');\n }\n}\nexport const getDeep = (object, path) => {\n validatePath(path);\n for (let i = 0; i < path.length; i++) {\n const key = path[i];\n if (isSet(object)) {\n object = getNthKey(object, +key);\n }\n else if (isMap(object)) {\n const row = +key;\n const type = +path[++i] === 0 ? 'key' : 'value';\n const keyOfRow = getNthKey(object, row);\n switch (type) {\n case 'key':\n object = keyOfRow;\n break;\n case 'value':\n object = object.get(keyOfRow);\n break;\n }\n }\n else {\n object = object[key];\n }\n }\n return object;\n};\nexport const setDeep = (object, path, mapper) => {\n validatePath(path);\n if (path.length === 0) {\n return mapper(object);\n }\n let parent = object;\n for (let i = 0; i < path.length - 1; i++) {\n const key = path[i];\n if (isArray(parent)) {\n const index = +key;\n parent = parent[index];\n }\n else if (isPlainObject(parent)) {\n parent = parent[key];\n }\n else if (isSet(parent)) {\n const row = +key;\n parent = getNthKey(parent, row);\n }\n else if (isMap(parent)) {\n const isEnd = i === path.length - 2;\n if (isEnd) {\n break;\n }\n const row = +key;\n const type = +path[++i] === 0 ? 'key' : 'value';\n const keyOfRow = getNthKey(parent, row);\n switch (type) {\n case 'key':\n parent = keyOfRow;\n break;\n case 'value':\n parent = parent.get(keyOfRow);\n break;\n }\n }\n }\n const lastKey = path[path.length - 1];\n if (isArray(parent)) {\n parent[+lastKey] = mapper(parent[+lastKey]);\n }\n else if (isPlainObject(parent)) {\n parent[lastKey] = mapper(parent[lastKey]);\n }\n if (isSet(parent)) {\n const oldValue = getNthKey(parent, +lastKey);\n const newValue = mapper(oldValue);\n if (oldValue !== newValue) {\n parent.delete(oldValue);\n parent.add(newValue);\n }\n }\n if (isMap(parent)) {\n const row = +path[path.length - 2];\n const keyToRow = getNthKey(parent, row);\n const type = +lastKey === 0 ? 'key' : 'value';\n switch (type) {\n case 'key': {\n const newKey = mapper(keyToRow);\n parent.set(newKey, parent.get(keyToRow));\n if (newKey !== keyToRow) {\n parent.delete(keyToRow);\n }\n break;\n }\n case 'value': {\n parent.set(keyToRow, mapper(parent.get(keyToRow)));\n break;\n }\n }\n }\n return object;\n};\n//# sourceMappingURL=accessDeep.js.map","import { isArray, isEmptyObject, isError, isMap, isPlainObject, isPrimitive, isSet, } from './is.js';\nimport { escapeKey, stringifyPath } from './pathstringifier.js';\nimport { isInstanceOfRegisteredClass, transformValue, untransformValue, } from './transformer.js';\nimport { includes, forEach } from './util.js';\nimport { parsePath } from './pathstringifier.js';\nimport { getDeep, setDeep } from './accessDeep.js';\nconst enableLegacyPaths = (version) => version < 1;\nfunction traverse(tree, walker, version, origin = []) {\n if (!tree) {\n return;\n }\n const legacyPaths = enableLegacyPaths(version);\n if (!isArray(tree)) {\n forEach(tree, (subtree, key) => traverse(subtree, walker, version, [\n ...origin,\n ...parsePath(key, legacyPaths),\n ]));\n return;\n }\n const [nodeValue, children] = tree;\n if (children) {\n forEach(children, (child, key) => {\n traverse(child, walker, version, [\n ...origin,\n ...parsePath(key, legacyPaths),\n ]);\n });\n }\n walker(nodeValue, origin);\n}\nexport function applyValueAnnotations(plain, annotations, version, superJson) {\n traverse(annotations, (type, path) => {\n plain = setDeep(plain, path, v => untransformValue(v, type, superJson));\n }, version);\n return plain;\n}\nexport function applyReferentialEqualityAnnotations(plain, annotations, version) {\n const legacyPaths = enableLegacyPaths(version);\n function apply(identicalPaths, path) {\n const object = getDeep(plain, parsePath(path, legacyPaths));\n identicalPaths\n .map(path => parsePath(path, legacyPaths))\n .forEach(identicalObjectPath => {\n plain = setDeep(plain, identicalObjectPath, () => object);\n });\n }\n if (isArray(annotations)) {\n const [root, other] = annotations;\n root.forEach(identicalPath => {\n plain = setDeep(plain, parsePath(identicalPath, legacyPaths), () => plain);\n });\n if (other) {\n forEach(other, apply);\n }\n }\n else {\n forEach(annotations, apply);\n }\n return plain;\n}\nconst isDeep = (object, superJson) => isPlainObject(object) ||\n isArray(object) ||\n isMap(object) ||\n isSet(object) ||\n isError(object) ||\n isInstanceOfRegisteredClass(object, superJson);\nfunction addIdentity(object, path, identities) {\n const existingSet = identities.get(object);\n if (existingSet) {\n existingSet.push(path);\n }\n else {\n identities.set(object, [path]);\n }\n}\nexport function generateReferentialEqualityAnnotations(identitites, dedupe) {\n const result = {};\n let rootEqualityPaths = undefined;\n identitites.forEach(paths => {\n if (paths.length <= 1) {\n return;\n }\n // if we're not deduping, all of these objects continue existing.\n // putting the shortest path first makes it easier to parse for humans\n // if we're deduping though, only the first entry will still exist, so we can't do this optimisation.\n if (!dedupe) {\n paths = paths\n .map(path => path.map(String))\n .sort((a, b) => a.length - b.length);\n }\n const [representativePath, ...identicalPaths] = paths;\n if (representativePath.length === 0) {\n rootEqualityPaths = identicalPaths.map(stringifyPath);\n }\n else {\n result[stringifyPath(representativePath)] = identicalPaths.map(stringifyPath);\n }\n });\n if (rootEqualityPaths) {\n if (isEmptyObject(result)) {\n return [rootEqualityPaths];\n }\n else {\n return [rootEqualityPaths, result];\n }\n }\n else {\n return isEmptyObject(result) ? undefined : result;\n }\n}\nexport const walker = (object, identities, superJson, dedupe, path = [], objectsInThisPath = [], seenObjects = new Map()) => {\n const primitive = isPrimitive(object);\n if (!primitive) {\n addIdentity(object, path, identities);\n const seen = seenObjects.get(object);\n if (seen) {\n // short-circuit result if we've seen this object before\n return dedupe\n ? {\n transformedValue: null,\n }\n : seen;\n }\n }\n if (!isDeep(object, superJson)) {\n const transformed = transformValue(object, superJson);\n const result = transformed\n ? {\n transformedValue: transformed.value,\n annotations: [transformed.type],\n }\n : {\n transformedValue: object,\n };\n if (!primitive) {\n seenObjects.set(object, result);\n }\n return result;\n }\n if (includes(objectsInThisPath, object)) {\n // prevent circular references\n return {\n transformedValue: null,\n };\n }\n const transformationResult = transformValue(object, superJson);\n const transformed = transformationResult?.value ?? object;\n const transformedValue = isArray(transformed) ? [] : {};\n const innerAnnotations = {};\n forEach(transformed, (value, index) => {\n if (index === '__proto__' ||\n index === 'constructor' ||\n index === 'prototype') {\n throw new Error(`Detected property ${index}. This is a prototype pollution risk, please remove it from your object.`);\n }\n const recursiveResult = walker(value, identities, superJson, dedupe, [...path, index], [...objectsInThisPath, object], seenObjects);\n transformedValue[index] = recursiveResult.transformedValue;\n if (isArray(recursiveResult.annotations)) {\n innerAnnotations[escapeKey(index)] = recursiveResult.annotations;\n }\n else if (isPlainObject(recursiveResult.annotations)) {\n forEach(recursiveResult.annotations, (tree, key) => {\n innerAnnotations[escapeKey(index) + '.' + key] = tree;\n });\n }\n });\n const result = isEmptyObject(innerAnnotations)\n ? {\n transformedValue,\n annotations: !!transformationResult\n ? [transformationResult.type]\n : undefined,\n }\n : {\n transformedValue,\n annotations: !!transformationResult\n ? [transformationResult.type, innerAnnotations]\n : innerAnnotations,\n };\n if (!primitive) {\n seenObjects.set(object, result);\n }\n return result;\n};\n//# sourceMappingURL=plainer.js.map","/** Returns the object type of the given payload */\nexport function getType(payload) {\n return Object.prototype.toString.call(payload).slice(8, -1);\n}\n","import { getType } from './getType.js';\n/** Returns whether the payload is an array */\nexport function isArray(payload) {\n return getType(payload) === 'Array';\n}\n","import { getType } from './getType.js';\n/**\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects\n * with other prototypes)\n */\nexport function isPlainObject(payload) {\n if (getType(payload) !== 'Object')\n return false;\n const prototype = Object.getPrototypeOf(payload);\n return !!prototype && prototype.constructor === Object && prototype === Object.prototype;\n}\n","import { isArray, isPlainObject } from 'is-what';\nfunction assignProp(carry, key, newVal, originalObject, includeNonenumerable) {\n const propType = {}.propertyIsEnumerable.call(originalObject, key)\n ? 'enumerable'\n : 'nonenumerable';\n if (propType === 'enumerable')\n carry[key] = newVal;\n if (includeNonenumerable && propType === 'nonenumerable') {\n Object.defineProperty(carry, key, {\n value: newVal,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n }\n}\n/**\n * Copy (clone) an object and all its props recursively to get rid of any prop referenced of the\n * original object. Arrays are also cloned, however objects inside arrays are still linked.\n *\n * @param target Target can be anything\n * @param [options={}] See type {@link Options} for more details.\n *\n * - `{ props: ['key1'] }` will only copy the `key1` property. When using this you will need to cast\n * the return type manually (in order to keep the TS implementation in here simple I didn't\n * built a complex auto resolved type for those few cases people want to use this option)\n * - `{ nonenumerable: true }` will copy all non-enumerable properties. Default is `{}`\n *\n * @returns The target with replaced values\n */\nexport function copy(target, options = {}) {\n if (isArray(target)) {\n return target.map((item) => copy(item, options));\n }\n if (!isPlainObject(target)) {\n return target;\n }\n const props = Object.getOwnPropertyNames(target);\n const symbols = Object.getOwnPropertySymbols(target);\n return [...props, ...symbols].reduce((carry, key) => {\n // Skip __proto__ properties to prevent prototype pollution\n if (key === '__proto__')\n return carry;\n if (isArray(options.props) && !options.props.includes(key)) {\n return carry;\n }\n const val = target[key];\n const newVal = copy(val, options);\n assignProp(carry, key, newVal, target, options.nonenumerable);\n return carry;\n }, {});\n}\n","import { ClassRegistry } from './class-registry.js';\nimport { Registry } from './registry.js';\nimport { CustomTransformerRegistry, } from './custom-transformer-registry.js';\nimport { applyReferentialEqualityAnnotations, applyValueAnnotations, generateReferentialEqualityAnnotations, walker, } from './plainer.js';\nimport { copy } from 'copy-anything';\nclass SuperJSON {\n /**\n * @param dedupeReferentialEqualities If true, SuperJSON will make sure only one instance of referentially equal objects are serialized and the rest are replaced with `null`.\n */\n constructor({ dedupe = false, } = {}) {\n this.classRegistry = new ClassRegistry();\n this.symbolRegistry = new Registry(s => s.description ?? '');\n this.customTransformerRegistry = new CustomTransformerRegistry();\n this.allowedErrorProps = [];\n this.dedupe = dedupe;\n }\n serialize(object) {\n const identities = new Map();\n const output = walker(object, identities, this, this.dedupe);\n const res = {\n json: output.transformedValue,\n };\n if (output.annotations) {\n res.meta = {\n ...res.meta,\n values: output.annotations,\n };\n }\n const equalityAnnotations = generateReferentialEqualityAnnotations(identities, this.dedupe);\n if (equalityAnnotations) {\n res.meta = {\n ...res.meta,\n referentialEqualities: equalityAnnotations,\n };\n }\n if (res.meta)\n res.meta.v = 1;\n return res;\n }\n deserialize(payload, options) {\n const { json, meta } = payload;\n let result = options?.inPlace ? json : copy(json);\n if (meta?.values) {\n result = applyValueAnnotations(result, meta.values, meta.v ?? 0, this);\n }\n if (meta?.referentialEqualities) {\n result = applyReferentialEqualityAnnotations(result, meta.referentialEqualities, meta.v ?? 0);\n }\n return result;\n }\n stringify(object) {\n return JSON.stringify(this.serialize(object));\n }\n parse(string) {\n return this.deserialize(JSON.parse(string), { inPlace: true });\n }\n registerClass(v, options) {\n this.classRegistry.register(v, options);\n }\n registerSymbol(v, identifier) {\n this.symbolRegistry.register(v, identifier);\n }\n registerCustom(transformer, name) {\n this.customTransformerRegistry.register({\n name,\n ...transformer,\n });\n }\n allowErrorProps(...props) {\n this.allowedErrorProps.push(...props);\n }\n}\nSuperJSON.defaultInstance = new SuperJSON();\nSuperJSON.serialize = SuperJSON.defaultInstance.serialize.bind(SuperJSON.defaultInstance);\nSuperJSON.deserialize = SuperJSON.defaultInstance.deserialize.bind(SuperJSON.defaultInstance);\nSuperJSON.stringify = SuperJSON.defaultInstance.stringify.bind(SuperJSON.defaultInstance);\nSuperJSON.parse = SuperJSON.defaultInstance.parse.bind(SuperJSON.defaultInstance);\nSuperJSON.registerClass = SuperJSON.defaultInstance.registerClass.bind(SuperJSON.defaultInstance);\nSuperJSON.registerSymbol = SuperJSON.defaultInstance.registerSymbol.bind(SuperJSON.defaultInstance);\nSuperJSON.registerCustom = SuperJSON.defaultInstance.registerCustom.bind(SuperJSON.defaultInstance);\nSuperJSON.allowErrorProps = SuperJSON.defaultInstance.allowErrorProps.bind(SuperJSON.defaultInstance);\nexport default SuperJSON;\nexport { SuperJSON };\nexport const serialize = SuperJSON.serialize;\nexport const deserialize = SuperJSON.deserialize;\nexport const stringify = SuperJSON.stringify;\nexport const parse = SuperJSON.parse;\nexport const registerClass = SuperJSON.registerClass;\nexport const registerCustom = SuperJSON.registerCustom;\nexport const registerSymbol = SuperJSON.registerSymbol;\nexport const allowErrorProps = SuperJSON.allowErrorProps;\n//# sourceMappingURL=index.js.map","import type { Mastra } from '@mastra/core';\nimport type { RequestContext } from '@mastra/core/di';\nimport type { SystemMessage } from '@mastra/core/llm';\nimport type { StepWithComponent, Workflow, WorkflowInfo } from '@mastra/core/workflows';\nimport { toStandardSchema, standardSchemaToJSONSchema } from '@mastra/schema-compat/schema';\nimport type { PublicSchema } from '@mastra/schema-compat/schema';\n\nimport { stringify } from 'superjson';\nimport { MASTRA_RESOURCE_ID_KEY } from './constants';\nimport { HTTPException } from './http-exception';\n\n/**\n * Convert any PublicSchema to a JSON Schema.\n * Uses toStandardSchema to handle all schema types (Zod v4, AI SDK Schema, JSON Schema).\n */\nfunction schemaToJsonSchema(schema: PublicSchema<unknown> | undefined) {\n if (!schema) return undefined;\n\n // Convert any PublicSchema to StandardSchemaWithJSON, then extract JSON Schema\n const standardSchema = toStandardSchema(schema);\n return standardSchemaToJSONSchema(standardSchema);\n}\n\n/**\n * Normalizes a route path to ensure consistent formatting.\n * - Removes leading/trailing whitespace\n * - Validates no path traversal (..), query strings (?), or fragments (#)\n * - Collapses multiple consecutive slashes\n * - Removes trailing slashes\n * - Ensures leading slash (unless empty)\n *\n * @param path - The route path to normalize\n * @returns The normalized path (empty string for root paths)\n * @throws Error if path contains invalid characters\n */\nexport function normalizeRoutePath(path: string): string {\n let normalized = path.trim();\n if (normalized.includes('..') || normalized.includes('?') || normalized.includes('#')) {\n throw new Error(`Invalid route path: \"${path}\". Path cannot contain '..', '?', or '#'`);\n }\n normalized = normalized.replace(/\\/+/g, '/');\n if (normalized === '/' || normalized === '') {\n return '';\n }\n if (normalized.endsWith('/')) {\n normalized = normalized.slice(0, -1);\n }\n if (!normalized.startsWith('/')) {\n normalized = `/${normalized}`;\n }\n return normalized;\n}\n\nconst DEFAULT_STORED_RESOURCE_SCOPE_METADATA_KEY = 'mastra.resourceId';\n\nexport type StoredResourceScope = {\n metadataKey: string;\n value: string;\n};\n\nexport type StoredResourceLike = {\n metadata?: Record<string, unknown> | null;\n};\n\nexport async function getStoredResourceScope(\n mastra: Pick<Mastra, 'getServer'>,\n requestContext: RequestContext | undefined,\n): Promise<StoredResourceScope | undefined> {\n const scopeConfig = mastra?.getServer?.()?.storedResources?.scope;\n if (!scopeConfig) {\n return undefined;\n }\n\n const options = scopeConfig === true ? {} : scopeConfig;\n const metadataKey = options.metadataKey ?? DEFAULT_STORED_RESOURCE_SCOPE_METADATA_KEY;\n const user = requestContext?.get('user');\n const resolved = options.resolve\n ? await options.resolve({ requestContext, user })\n : (requestContext?.get(MASTRA_RESOURCE_ID_KEY) as string | undefined);\n\n if (!resolved) {\n if (options.requireScope === false) {\n return undefined;\n }\n throw new HTTPException(403, { message: 'Stored resource scope is required' });\n }\n\n return { metadataKey, value: resolved };\n}\n\nexport function scopeStoredResourceMetadata(\n metadata: Record<string, unknown> | undefined,\n scope: StoredResourceScope | undefined,\n): Record<string, unknown> | undefined {\n if (!scope) {\n return metadata;\n }\n\n return {\n ...(metadata ?? {}),\n [scope.metadataKey]: scope.value,\n };\n}\n\nexport function assertStoredResourceScope(\n resource: StoredResourceLike | null | undefined,\n scope: StoredResourceScope | undefined,\n): void {\n if (!resource || !scope) {\n return;\n }\n\n if (resource.metadata?.[scope.metadataKey] !== scope.value) {\n throw new HTTPException(404, { message: 'Stored resource not found' });\n }\n}\n\n/**\n * Check if a schema looks like a processor step schema.\n * Processor step schemas are discriminated unions on 'phase' with specific values.\n */\nfunction looksLikeProcessorStepSchema(schema: PublicSchema<unknown> | undefined): boolean {\n if (!schema) return false;\n\n try {\n const jsonSchema = standardSchemaToJSONSchema(toStandardSchema(schema)) as Record<string, unknown> | undefined;\n if (!jsonSchema) return false;\n\n // Check for discriminated union pattern: anyOf/oneOf with phase discriminator\n const variants = (jsonSchema.anyOf || jsonSchema.oneOf) as Array<Record<string, unknown>> | undefined;\n if (!variants || !Array.isArray(variants)) return false;\n\n // Check if all variants have a 'phase' property with processor phase values\n const processorPhases = new Set(['input', 'inputStep', 'outputStream', 'outputResult', 'outputStep', 'toolResult']);\n\n for (const variant of variants) {\n const properties = variant.properties as Record<string, unknown> | undefined;\n if (!properties?.phase) return false;\n\n const phaseSchema = properties.phase as Record<string, unknown>;\n const phaseConst = phaseSchema?.const as string | undefined;\n const phaseEnum = Array.isArray(phaseSchema?.enum) ? (phaseSchema.enum as string[]) : [];\n const phaseValues = phaseConst ? [phaseConst] : phaseEnum;\n\n if (!phaseValues.length || phaseValues.some(phase => !processorPhases.has(phase))) {\n return false;\n }\n }\n\n return variants.length > 0;\n } catch {\n return false;\n }\n}\n\nfunction getSteps(steps: Record<string, StepWithComponent>, path?: string) {\n return Object.entries(steps).reduce<any>((acc, [key, step]) => {\n const fullKey = path ? `${path}.${key}` : key;\n acc[fullKey] = {\n id: step.id,\n description: step.description,\n inputSchema: step.inputSchema ? stringify(schemaToJsonSchema(step.inputSchema)) : undefined,\n outputSchema: step.outputSchema ? stringify(schemaToJsonSchema(step.outputSchema)) : undefined,\n resumeSchema: step.resumeSchema ? stringify(schemaToJsonSchema(step.resumeSchema)) : undefined,\n suspendSchema: step.suspendSchema ? stringify(schemaToJsonSchema(step.suspendSchema)) : undefined,\n stateSchema: step.stateSchema ? stringify(schemaToJsonSchema(step.stateSchema)) : undefined,\n isWorkflow: step.component === 'WORKFLOW',\n component: step.component,\n metadata: step.metadata,\n };\n\n if (step.component === 'WORKFLOW' && step.steps) {\n const nestedSteps = getSteps(step.steps, fullKey) || {};\n acc = { ...acc, ...nestedSteps };\n }\n\n return acc;\n }, {});\n}\n\nexport function getWorkflowInfo(workflow: Workflow, partial: boolean = false): WorkflowInfo {\n if (partial) {\n // Return minimal info in partial mode\n return {\n name: workflow.name,\n description: workflow.description,\n metadata: workflow.metadata,\n stepCount: Object.keys(workflow.steps).length,\n stepGraph: workflow.serializedStepGraph,\n options: workflow.options,\n steps: {},\n allSteps: {},\n inputSchema: undefined,\n outputSchema: undefined,\n stateSchema: undefined,\n requestContextSchema: undefined,\n origin: workflow.origin,\n } as WorkflowInfo;\n }\n\n return {\n name: workflow.name,\n description: workflow.description,\n metadata: workflow.metadata,\n origin: workflow.origin,\n steps: Object.entries(workflow.steps).reduce<any>((acc, [key, step]) => {\n acc[key] = {\n id: step.id,\n description: step.description,\n inputSchema: step.inputSchema ? stringify(schemaToJsonSchema(step.inputSchema)) : undefined,\n outputSchema: step.outputSchema ? stringify(schemaToJsonSchema(step.outputSchema)) : undefined,\n resumeSchema: step.resumeSchema ? stringify(schemaToJsonSchema(step.resumeSchema)) : undefined,\n suspendSchema: step.suspendSchema ? stringify(schemaToJsonSchema(step.suspendSchema)) : undefined,\n stateSchema: step.stateSchema ? stringify(schemaToJsonSchema(step.stateSchema)) : undefined,\n requestContextSchema: step.requestContextSchema\n ? stringify(schemaToJsonSchema(step.requestContextSchema))\n : undefined,\n component: step.component,\n metadata: step.metadata,\n };\n return acc;\n }, {}),\n allSteps: getSteps(workflow.steps) || {},\n stepGraph: workflow.serializedStepGraph,\n inputSchema: workflow.inputSchema ? stringify(schemaToJsonSchema(workflow.inputSchema)) : undefined,\n outputSchema: workflow.outputSchema ? stringify(schemaToJsonSchema(workflow.outputSchema)) : undefined,\n stateSchema: workflow.stateSchema ? stringify(schemaToJsonSchema(workflow.stateSchema)) : undefined,\n requestContextSchema: workflow.requestContextSchema\n ? stringify(schemaToJsonSchema(workflow.requestContextSchema))\n : undefined,\n options: workflow.options,\n isProcessorWorkflow: workflow.type === 'processor' || looksLikeProcessorStepSchema(workflow.inputSchema),\n };\n}\n\n/**\n * Workflow Registry for temporarily registering additional workflows\n * that are not part of the user's Mastra instance (e.g., internal template workflows)\n */\nexport class WorkflowRegistry {\n private static additionalWorkflows: Record<string, Workflow> = {};\n\n /**\n * Register a workflow temporarily\n */\n static registerTemporaryWorkflow(id: string, workflow: Workflow): void {\n this.additionalWorkflows[id] = workflow;\n }\n\n /**\n * Register all workflows from map\n */\n static registerTemporaryWorkflows(\n workflows: Record<string, Workflow>,\n mastra?: Mastra<any, any, any, any, any, any, any, any, any>,\n ): void {\n for (const [id, workflow] of Object.entries(workflows)) {\n // Register Mastra instance with the workflow if provided\n if (mastra) {\n workflow.__registerMastra(mastra);\n workflow.__registerPrimitives({\n logger: mastra.getLogger(),\n storage: mastra.getStorage(),\n agents: mastra.listAgents(),\n tts: mastra.getTTS(),\n vectors: mastra.listVectors(),\n });\n }\n this.additionalWorkflows[id] = workflow;\n }\n }\n\n /**\n * Get a workflow by ID from the registry (returns undefined if not found)\n */\n static getWorkflow(workflowId: string): Workflow | undefined {\n return this.additionalWorkflows[workflowId];\n }\n\n /**\n * Get all workflows from the registry\n */\n static getAllWorkflows(): Record<string, Workflow> {\n return { ...this.additionalWorkflows };\n }\n\n /**\n * Clean up a temporary workflow\n */\n static cleanupTemporaryWorkflow(workflowId: string): void {\n delete this.additionalWorkflows[workflowId];\n }\n /**\n * Clean up all registered workflows\n */\n static cleanup(): void {\n // Clear all workflows (since we register all agent-builder workflows each time)\n this.additionalWorkflows = {};\n }\n\n /**\n * Check if a workflow ID is a valid agent-builder workflow\n */\n static isAgentBuilderWorkflow(workflowId: string): boolean {\n return workflowId in this.additionalWorkflows;\n }\n\n /**\n * Get all registered temporary workflow IDs (for debugging)\n */\n static getRegisteredWorkflowIds(): string[] {\n return Object.keys(this.additionalWorkflows);\n }\n}\n\n/**\n * Converts a string to a URL-friendly slug.\n * Lowercases, replaces non-alphanumeric characters with hyphens,\n * collapses consecutive hyphens, and trims leading/trailing hyphens.\n */\nexport function toSlug(input: string): string {\n return input\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\nexport function convertInstructionsToString(message: SystemMessage): string {\n if (!message) {\n return '';\n }\n\n if (typeof message === 'string') {\n return message;\n }\n\n if (Array.isArray(message)) {\n return message\n .map(m => {\n if (typeof m === 'string') {\n return m;\n }\n // Safely extract content from message objects\n return typeof m.content === 'string' ? m.content : '';\n })\n .filter(content => content) // Remove empty strings\n .join('\\n');\n }\n\n // Handle single message object - safely extract content\n return typeof message.content === 'string' ? message.content : '';\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as HTTPException } from "./http-exception-CyfxZB6W.js";
|
|
2
|
-
import { o as MASTRA_RESOURCE_ID_KEY, p as isReservedRequestContextKey } from "./constants-
|
|
2
|
+
import { o as MASTRA_RESOURCE_ID_KEY, p as isReservedRequestContextKey } from "./constants-C631oS02.js";
|
|
3
3
|
import * as authEE from "@mastra/core/auth/ee";
|
|
4
4
|
import { MastraMemory } from "@mastra/core/memory";
|
|
5
5
|
//#region src/server/fga-permissions.ts
|
|
@@ -197,4 +197,4 @@ async function validateRunOwnership(run, effectiveResourceId) {
|
|
|
197
197
|
//#endregion
|
|
198
198
|
export { getPublicWorkflowById as a, parsePerPage as c, stripClientCredentialHeaders as d, validateBody as f, MastraFGAPermissions as h, getEffectiveThreadId as i, requireEffectiveResourceId as l, validateThreadOwnership as m, getContextResourceId as n, mergeBodyRequestContext as o, validateRunOwnership as p, getEffectiveResourceId as r, parseFilters as s, enforceThreadAccess as t, sanitizeBody as u };
|
|
199
199
|
|
|
200
|
-
//# sourceMappingURL=utils-
|
|
200
|
+
//# sourceMappingURL=utils-GVYTDbr2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-UwDFLi8y.js","names":[],"sources":["../src/server/fga-permissions.ts","../src/server/handlers/utils.ts"],"sourcesContent":["/**\n * Safe re-export of `MastraFGAPermissions` from `@mastra/core/auth/ee`.\n *\n * Why this shim exists:\n * `MastraFGAPermissions` was introduced in `@mastra/core@1.32.0`. Earlier\n * versions of `@mastra/core` ship `@mastra/core/auth/ee` but do not export\n * this constant. A direct named import (`import { MastraFGAPermissions }\n * from '@mastra/core/auth/ee'`) fails at ESM link time when this version\n * of `@mastra/server` is paired with `@mastra/core < 1.32.0`, taking the\n * entire user bundle down before any code runs.\n *\n * A namespace import tolerates missing names — `ns.MissingExport` is just\n * `undefined`, no link-time error. We then expose the permission map.\n *\n * Fallback values:\n * If the consuming `@mastra/core` does not export `MastraFGAPermissions`,\n * we substitute a hardcoded map of the canonical permission strings used\n * by routes in `@mastra/server`. This preserves the explicit RBAC\n * permission overrides those routes already had as string literals in\n * `@mastra/server@1.31.0` (e.g. `requiresPermission: \"agents:execute\"`\n * on `/v1/responses`). Without this fallback, `requiresPermission` would\n * be `undefined` on old core and the auth layer would derive the wrong\n * permission from the route path (e.g. `v1:write` instead of\n * `agents:execute`), breaking RBAC users who upgrade `@mastra/server`\n * but stay on `@mastra/core@1.31.0`.\n *\n * Once the consuming `@mastra/core` is on `1.32.0+` the values are real\n * and behaviour is identical to a direct named import.\n */\n\nimport * as authEE from '@mastra/core/auth/ee';\n\n// Canonical strings for the FGA permission keys actually referenced by\n// `@mastra/server` source. Mirrors `MastraFGAPermissions` in\n// `@mastra/core@1.32.0+` for these specific keys, and matches the string\n// literals previously hardcoded on the same routes in `@mastra/server@1.31.0`.\nconst FALLBACK_PERMISSIONS = {\n AGENTS_CREATE: 'agents:create',\n AGENTS_DELETE: 'agents:delete',\n AGENTS_EXECUTE: 'agents:execute',\n AGENTS_READ: 'agents:read',\n MEMORY_DELETE: 'memory:delete',\n MEMORY_READ: 'memory:read',\n MEMORY_WRITE: 'memory:write',\n TOOLS_EXECUTE: 'tools:execute',\n TOOLS_READ: 'tools:read',\n STORED_WORKFLOWS_READ: 'stored-workflows:read',\n STORED_WORKFLOWS_WRITE: 'stored-workflows:write',\n WORKFLOWS_EXECUTE: 'workflows:execute',\n WORKFLOWS_READ: 'workflows:read',\n} as const;\n\nconst realPermissions = (authEE as any).MastraFGAPermissions;\n\n// Typed as `any` on purpose: consumers of `@mastra/server` may run their\n// typecheck against a `@mastra/core` that doesn't export `MastraFGAPermissions`\n// (anything < 1.32.0). Pinning to the real type would push that name into the\n// emitted `.d.ts` and break downstream typecheck. `any` lets the property\n// accesses (`MastraFGAPermissions.AGENTS_READ`) flow through cleanly on every\n// supported core.\nexport const MastraFGAPermissions: any =\n realPermissions && Object.keys(realPermissions).length > 0 ? realPermissions : FALLBACK_PERMISSIONS;\n","import type { Mastra } from '@mastra/core';\nimport type { MastraFGAPermissionInput } from '@mastra/core/auth/ee';\nimport type { RequestContext } from '@mastra/core/di';\nimport { MastraMemory } from '@mastra/core/memory';\nimport type { Workflow } from '@mastra/core/workflows';\nimport { MASTRA_RESOURCE_ID_KEY, MASTRA_THREAD_ID_KEY, isReservedRequestContextKey } from '../constants';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\n\n/**\n * Resolves a workflow by id or registration key from the set Mastra exposes\n * publicly. Unlike `mastra.getWorkflowById`, this excludes hidden internal\n * workflows (e.g. a durable agent's backing loop), which must never be\n * runnable through HTTP routes.\n */\nexport function getPublicWorkflowById(mastra: Mastra, workflowId: string): Workflow | undefined {\n const workflows = mastra.listWorkflows();\n return (\n Object.values(workflows).find(workflow => workflow.id === workflowId) ??\n (Object.hasOwn(workflows, workflowId) ? workflows[workflowId] : undefined)\n );\n}\n\n// Validation helper\nexport function validateBody(body: Record<string, unknown>) {\n const errorResponse = Object.entries(body).reduce<Record<string, string>>((acc, [key, value]) => {\n if (!value) {\n acc[key] = `Argument \"${key}\" is required`;\n }\n return acc;\n }, {});\n\n if (Object.keys(errorResponse).length > 0) {\n throw new HTTPException(400, { message: Object.values(errorResponse)[0] });\n }\n}\n\n/**\n * sanitizes the body by removing disallowed keys.\n * @param body body to sanitize\n * @param disallowedKeys keys to remove from the body\n */\nexport function sanitizeBody(body: Record<string, unknown>, disallowedKeys: string[]) {\n for (const key of disallowedKeys) {\n if (key in body) {\n delete body[key];\n }\n }\n}\n\nconst CREDENTIAL_HEADER_NAMES = new Set([\n 'authorization',\n 'proxy-authorization',\n 'x-api-key',\n 'api-key',\n 'x-goog-api-key',\n 'cookie',\n]);\n\n/**\n * Removes credential-bearing headers from client-supplied `modelSettings.headers`\n * so a caller's own auth (e.g. the app's bearer token) can never override the\n * provider credential configured on the server. Non-credential headers are kept.\n */\nexport function stripClientCredentialHeaders(body: Record<string, unknown>) {\n const modelSettings = body.modelSettings;\n if (!modelSettings || typeof modelSettings !== 'object') return;\n const headers = (modelSettings as { headers?: unknown }).headers;\n if (!headers || typeof headers !== 'object') return;\n\n const kept = Object.fromEntries(\n Object.entries(headers).filter(([name]) => !CREDENTIAL_HEADER_NAMES.has(name.toLowerCase())),\n );\n body.modelSettings = { ...modelSettings, headers: kept };\n}\n\nexport function parsePerPage(\n value: string | undefined,\n defaultValue: number = 100,\n max: number = 1000,\n): number | false {\n const normalized = (value || '').trim().toLowerCase();\n // Handle explicit false to bypass pagination\n if (normalized === 'false') {\n return false;\n }\n const parsed = parseInt(value || String(defaultValue), 10);\n if (isNaN(parsed)) return defaultValue;\n return Math.min(max, Math.max(1, parsed));\n}\n\n/**\n * Parses filter query parameters into a key-value object.\n */\nexport function parseFilters(filters: string | string[] | undefined): Record<string, string> | undefined {\n if (!filters) return undefined;\n\n return Object.fromEntries(\n (Array.isArray(filters) ? filters : [filters]).map((attr: string) => {\n const [key, ...valueParts] = attr.split(':');\n const value = valueParts.join(':'); // ✅ Handles colons in values\n return [key, value];\n }),\n );\n}\n\n/**\n * Merges a body-supplied requestContext into the trusted server RequestContext.\n * The server context is authoritative: reserved keys are skipped and body values\n * only fill keys the server context has not already set.\n */\nexport function mergeBodyRequestContext(serverRequestContext: RequestContext, bodyRequestContext: unknown): void {\n if (!bodyRequestContext || typeof bodyRequestContext !== 'object') {\n return;\n }\n\n for (const [key, value] of Object.entries(bodyRequestContext)) {\n if (isReservedRequestContextKey(key)) continue;\n if (serverRequestContext.get(key) === undefined) {\n serverRequestContext.set(key, value);\n }\n }\n}\n\n// ============================================================================\n// Authorization Utilities\n// ============================================================================\n\n/**\n * Gets the effective resourceId, preferring the reserved key from requestContext\n * over client-provided values for security.\n */\nexport function getEffectiveResourceId(\n requestContext: RequestContext | undefined,\n clientResourceId: string | undefined,\n): string | undefined {\n const contextResourceId = requestContext?.get(MASTRA_RESOURCE_ID_KEY) as string | undefined;\n return contextResourceId || clientResourceId;\n}\n\n/**\n * Returns the resource id resolved from the request context alone (set via\n * `mapUserToResourceId` or the `x-resource-id` header), ignoring any\n * client-provided value. Its presence indicates a resource-scoped caller;\n * its absence indicates a privileged/service context.\n */\nexport function getContextResourceId(requestContext: RequestContext | undefined): string | undefined {\n return requestContext?.get(MASTRA_RESOURCE_ID_KEY) as string | undefined;\n}\n\n/**\n * Ensures a memory request has a resolvable resource ID. The body's\n * `memory.resource` is optional so authenticated setups can rely on the\n * server-derived resource ID (MASTRA_RESOURCE_ID_KEY set via mapUserToResourceId).\n * When neither the body nor the request context provides one, reject with a\n * clear 400 instead of failing deep inside agent execution.\n */\nexport function requireEffectiveResourceId(\n effectiveResourceId: string | undefined,\n): asserts effectiveResourceId is string {\n if (!effectiveResourceId) {\n throw new HTTPException(400, {\n message:\n 'A resource ID is required when using memory. Provide memory.resource in the request body, or configure server auth with mapUserToResourceId to derive it from the authenticated user.',\n });\n }\n}\n\n/**\n * Gets the effective threadId, preferring the reserved key from requestContext\n * over client-provided values for security.\n */\nexport function getEffectiveThreadId(\n requestContext: RequestContext | undefined,\n clientThreadId: string | undefined,\n): string | undefined {\n const contextThreadId = requestContext?.get(MASTRA_THREAD_ID_KEY) as string | undefined;\n return contextThreadId || clientThreadId;\n}\n\n/**\n * Validates that a thread belongs to the specified resourceId.\n * Throws 403 if the thread exists but belongs to a different resource.\n * Threads with no resourceId are accessible to all (shared threads).\n */\nexport async function validateThreadOwnership(\n thread: { resourceId?: string | null } | null | undefined,\n effectiveResourceId: string | undefined,\n): Promise<void> {\n if (thread && effectiveResourceId && thread.resourceId && thread.resourceId !== effectiveResourceId) {\n throw new HTTPException(403, { message: 'Access denied: thread belongs to a different resource' });\n }\n}\n\n/**\n * Validates both coarse resource ownership and fine-grained thread access.\n * FGA enforcement is a no-op when no FGA provider is configured.\n */\nexport async function enforceThreadAccess({\n mastra,\n requestContext,\n threadId,\n thread,\n effectiveResourceId,\n permission = MastraFGAPermissions.MEMORY_READ,\n}: {\n mastra: any;\n requestContext?: RequestContext;\n threadId: string;\n thread?: { resourceId?: string | null } | null;\n effectiveResourceId?: string;\n permission?: MastraFGAPermissionInput;\n}): Promise<void> {\n await validateThreadOwnership(thread, effectiveResourceId);\n\n const fgaProvider = mastra?.getServer?.()?.fga;\n if (!fgaProvider) {\n return;\n }\n\n const user = requestContext?.get('user');\n if (!user || typeof user !== 'object') {\n throw new HTTPException(403, { message: 'FGA authorization denied: authenticated user is required' });\n }\n\n await MastraMemory.checkThreadFGA({\n mastra,\n user: user as { id: string; [key: string]: unknown },\n threadId,\n resourceId: thread?.resourceId ?? effectiveResourceId,\n requestContext,\n permission,\n });\n}\n\n/**\n * Validates that a workflow run belongs to the specified resourceId.\n * Throws 403 if the run exists but belongs to a different resource.\n */\nexport async function validateRunOwnership(\n run: { resourceId?: string | null } | null | undefined,\n effectiveResourceId: string | undefined,\n): Promise<void> {\n if (run && effectiveResourceId && run.resourceId && run.resourceId !== effectiveResourceId) {\n throw new HTTPException(403, { message: 'Access denied: workflow run belongs to a different resource' });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils-GVYTDbr2.js","names":[],"sources":["../src/server/fga-permissions.ts","../src/server/handlers/utils.ts"],"sourcesContent":["/**\n * Safe re-export of `MastraFGAPermissions` from `@mastra/core/auth/ee`.\n *\n * Why this shim exists:\n * `MastraFGAPermissions` was introduced in `@mastra/core@1.32.0`. Earlier\n * versions of `@mastra/core` ship `@mastra/core/auth/ee` but do not export\n * this constant. A direct named import (`import { MastraFGAPermissions }\n * from '@mastra/core/auth/ee'`) fails at ESM link time when this version\n * of `@mastra/server` is paired with `@mastra/core < 1.32.0`, taking the\n * entire user bundle down before any code runs.\n *\n * A namespace import tolerates missing names — `ns.MissingExport` is just\n * `undefined`, no link-time error. We then expose the permission map.\n *\n * Fallback values:\n * If the consuming `@mastra/core` does not export `MastraFGAPermissions`,\n * we substitute a hardcoded map of the canonical permission strings used\n * by routes in `@mastra/server`. This preserves the explicit RBAC\n * permission overrides those routes already had as string literals in\n * `@mastra/server@1.31.0` (e.g. `requiresPermission: \"agents:execute\"`\n * on `/v1/responses`). Without this fallback, `requiresPermission` would\n * be `undefined` on old core and the auth layer would derive the wrong\n * permission from the route path (e.g. `v1:write` instead of\n * `agents:execute`), breaking RBAC users who upgrade `@mastra/server`\n * but stay on `@mastra/core@1.31.0`.\n *\n * Once the consuming `@mastra/core` is on `1.32.0+` the values are real\n * and behaviour is identical to a direct named import.\n */\n\nimport * as authEE from '@mastra/core/auth/ee';\n\n// Canonical strings for the FGA permission keys actually referenced by\n// `@mastra/server` source. Mirrors `MastraFGAPermissions` in\n// `@mastra/core@1.32.0+` for these specific keys, and matches the string\n// literals previously hardcoded on the same routes in `@mastra/server@1.31.0`.\nconst FALLBACK_PERMISSIONS = {\n AGENTS_CREATE: 'agents:create',\n AGENTS_DELETE: 'agents:delete',\n AGENTS_EXECUTE: 'agents:execute',\n AGENTS_READ: 'agents:read',\n MEMORY_DELETE: 'memory:delete',\n MEMORY_READ: 'memory:read',\n MEMORY_WRITE: 'memory:write',\n TOOLS_EXECUTE: 'tools:execute',\n TOOLS_READ: 'tools:read',\n STORED_WORKFLOWS_READ: 'stored-workflows:read',\n STORED_WORKFLOWS_WRITE: 'stored-workflows:write',\n WORKFLOWS_EXECUTE: 'workflows:execute',\n WORKFLOWS_READ: 'workflows:read',\n} as const;\n\nconst realPermissions = (authEE as any).MastraFGAPermissions;\n\n// Typed as `any` on purpose: consumers of `@mastra/server` may run their\n// typecheck against a `@mastra/core` that doesn't export `MastraFGAPermissions`\n// (anything < 1.32.0). Pinning to the real type would push that name into the\n// emitted `.d.ts` and break downstream typecheck. `any` lets the property\n// accesses (`MastraFGAPermissions.AGENTS_READ`) flow through cleanly on every\n// supported core.\nexport const MastraFGAPermissions: any =\n realPermissions && Object.keys(realPermissions).length > 0 ? realPermissions : FALLBACK_PERMISSIONS;\n","import type { Mastra } from '@mastra/core';\nimport type { MastraFGAPermissionInput } from '@mastra/core/auth/ee';\nimport type { RequestContext } from '@mastra/core/di';\nimport { MastraMemory } from '@mastra/core/memory';\nimport type { Workflow } from '@mastra/core/workflows';\nimport { MASTRA_RESOURCE_ID_KEY, MASTRA_THREAD_ID_KEY, isReservedRequestContextKey } from '../constants';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\n\n/**\n * Resolves a workflow by id or registration key from the set Mastra exposes\n * publicly. Unlike `mastra.getWorkflowById`, this excludes hidden internal\n * workflows (e.g. a durable agent's backing loop), which must never be\n * runnable through HTTP routes.\n */\nexport function getPublicWorkflowById(mastra: Mastra, workflowId: string): Workflow | undefined {\n const workflows = mastra.listWorkflows();\n return (\n Object.values(workflows).find(workflow => workflow.id === workflowId) ??\n (Object.hasOwn(workflows, workflowId) ? workflows[workflowId] : undefined)\n );\n}\n\n// Validation helper\nexport function validateBody(body: Record<string, unknown>) {\n const errorResponse = Object.entries(body).reduce<Record<string, string>>((acc, [key, value]) => {\n if (!value) {\n acc[key] = `Argument \"${key}\" is required`;\n }\n return acc;\n }, {});\n\n if (Object.keys(errorResponse).length > 0) {\n throw new HTTPException(400, { message: Object.values(errorResponse)[0] });\n }\n}\n\n/**\n * sanitizes the body by removing disallowed keys.\n * @param body body to sanitize\n * @param disallowedKeys keys to remove from the body\n */\nexport function sanitizeBody(body: Record<string, unknown>, disallowedKeys: string[]) {\n for (const key of disallowedKeys) {\n if (key in body) {\n delete body[key];\n }\n }\n}\n\nconst CREDENTIAL_HEADER_NAMES = new Set([\n 'authorization',\n 'proxy-authorization',\n 'x-api-key',\n 'api-key',\n 'x-goog-api-key',\n 'cookie',\n]);\n\n/**\n * Removes credential-bearing headers from client-supplied `modelSettings.headers`\n * so a caller's own auth (e.g. the app's bearer token) can never override the\n * provider credential configured on the server. Non-credential headers are kept.\n */\nexport function stripClientCredentialHeaders(body: Record<string, unknown>) {\n const modelSettings = body.modelSettings;\n if (!modelSettings || typeof modelSettings !== 'object') return;\n const headers = (modelSettings as { headers?: unknown }).headers;\n if (!headers || typeof headers !== 'object') return;\n\n const kept = Object.fromEntries(\n Object.entries(headers).filter(([name]) => !CREDENTIAL_HEADER_NAMES.has(name.toLowerCase())),\n );\n body.modelSettings = { ...modelSettings, headers: kept };\n}\n\nexport function parsePerPage(\n value: string | undefined,\n defaultValue: number = 100,\n max: number = 1000,\n): number | false {\n const normalized = (value || '').trim().toLowerCase();\n // Handle explicit false to bypass pagination\n if (normalized === 'false') {\n return false;\n }\n const parsed = parseInt(value || String(defaultValue), 10);\n if (isNaN(parsed)) return defaultValue;\n return Math.min(max, Math.max(1, parsed));\n}\n\n/**\n * Parses filter query parameters into a key-value object.\n */\nexport function parseFilters(filters: string | string[] | undefined): Record<string, string> | undefined {\n if (!filters) return undefined;\n\n return Object.fromEntries(\n (Array.isArray(filters) ? filters : [filters]).map((attr: string) => {\n const [key, ...valueParts] = attr.split(':');\n const value = valueParts.join(':'); // ✅ Handles colons in values\n return [key, value];\n }),\n );\n}\n\n/**\n * Merges a body-supplied requestContext into the trusted server RequestContext.\n * The server context is authoritative: reserved keys are skipped and body values\n * only fill keys the server context has not already set.\n */\nexport function mergeBodyRequestContext(serverRequestContext: RequestContext, bodyRequestContext: unknown): void {\n if (!bodyRequestContext || typeof bodyRequestContext !== 'object') {\n return;\n }\n\n for (const [key, value] of Object.entries(bodyRequestContext)) {\n if (isReservedRequestContextKey(key)) continue;\n if (serverRequestContext.get(key) === undefined) {\n serverRequestContext.set(key, value);\n }\n }\n}\n\n// ============================================================================\n// Authorization Utilities\n// ============================================================================\n\n/**\n * Gets the effective resourceId, preferring the reserved key from requestContext\n * over client-provided values for security.\n */\nexport function getEffectiveResourceId(\n requestContext: RequestContext | undefined,\n clientResourceId: string | undefined,\n): string | undefined {\n const contextResourceId = requestContext?.get(MASTRA_RESOURCE_ID_KEY) as string | undefined;\n return contextResourceId || clientResourceId;\n}\n\n/**\n * Returns the resource id resolved from the request context alone (set via\n * `mapUserToResourceId` or the `x-resource-id` header), ignoring any\n * client-provided value. Its presence indicates a resource-scoped caller;\n * its absence indicates a privileged/service context.\n */\nexport function getContextResourceId(requestContext: RequestContext | undefined): string | undefined {\n return requestContext?.get(MASTRA_RESOURCE_ID_KEY) as string | undefined;\n}\n\n/**\n * Ensures a memory request has a resolvable resource ID. The body's\n * `memory.resource` is optional so authenticated setups can rely on the\n * server-derived resource ID (MASTRA_RESOURCE_ID_KEY set via mapUserToResourceId).\n * When neither the body nor the request context provides one, reject with a\n * clear 400 instead of failing deep inside agent execution.\n */\nexport function requireEffectiveResourceId(\n effectiveResourceId: string | undefined,\n): asserts effectiveResourceId is string {\n if (!effectiveResourceId) {\n throw new HTTPException(400, {\n message:\n 'A resource ID is required when using memory. Provide memory.resource in the request body, or configure server auth with mapUserToResourceId to derive it from the authenticated user.',\n });\n }\n}\n\n/**\n * Gets the effective threadId, preferring the reserved key from requestContext\n * over client-provided values for security.\n */\nexport function getEffectiveThreadId(\n requestContext: RequestContext | undefined,\n clientThreadId: string | undefined,\n): string | undefined {\n const contextThreadId = requestContext?.get(MASTRA_THREAD_ID_KEY) as string | undefined;\n return contextThreadId || clientThreadId;\n}\n\n/**\n * Validates that a thread belongs to the specified resourceId.\n * Throws 403 if the thread exists but belongs to a different resource.\n * Threads with no resourceId are accessible to all (shared threads).\n */\nexport async function validateThreadOwnership(\n thread: { resourceId?: string | null } | null | undefined,\n effectiveResourceId: string | undefined,\n): Promise<void> {\n if (thread && effectiveResourceId && thread.resourceId && thread.resourceId !== effectiveResourceId) {\n throw new HTTPException(403, { message: 'Access denied: thread belongs to a different resource' });\n }\n}\n\n/**\n * Validates both coarse resource ownership and fine-grained thread access.\n * FGA enforcement is a no-op when no FGA provider is configured.\n */\nexport async function enforceThreadAccess({\n mastra,\n requestContext,\n threadId,\n thread,\n effectiveResourceId,\n permission = MastraFGAPermissions.MEMORY_READ,\n}: {\n mastra: any;\n requestContext?: RequestContext;\n threadId: string;\n thread?: { resourceId?: string | null } | null;\n effectiveResourceId?: string;\n permission?: MastraFGAPermissionInput;\n}): Promise<void> {\n await validateThreadOwnership(thread, effectiveResourceId);\n\n const fgaProvider = mastra?.getServer?.()?.fga;\n if (!fgaProvider) {\n return;\n }\n\n const user = requestContext?.get('user');\n if (!user || typeof user !== 'object') {\n throw new HTTPException(403, { message: 'FGA authorization denied: authenticated user is required' });\n }\n\n await MastraMemory.checkThreadFGA({\n mastra,\n user: user as { id: string; [key: string]: unknown },\n threadId,\n resourceId: thread?.resourceId ?? effectiveResourceId,\n requestContext,\n permission,\n });\n}\n\n/**\n * Validates that a workflow run belongs to the specified resourceId.\n * Throws 403 if the run exists but belongs to a different resource.\n */\nexport async function validateRunOwnership(\n run: { resourceId?: string | null } | null | undefined,\n effectiveResourceId: string | undefined,\n): Promise<void> {\n if (run && effectiveResourceId && run.resourceId && run.resourceId !== effectiveResourceId) {\n throw new HTTPException(403, { message: 'Access denied: workflow run belongs to a different resource' });\n }\n}\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { t as HTTPException } from "./http-exception-CyfxZB6W.js";
|
|
|
2
2
|
import { J as streamResponseSchema, r as agentExecutionBodySchema } from "./agents-CW_JJZOf.js";
|
|
3
3
|
import { n as createRoute } from "./route-builder-lBil8Cvo.js";
|
|
4
4
|
import { handleError } from "./server/handlers/error.js";
|
|
5
|
-
import { f as validateBody, i as getEffectiveThreadId, l as requireEffectiveResourceId, o as mergeBodyRequestContext, r as getEffectiveResourceId, t as enforceThreadAccess } from "./utils-
|
|
5
|
+
import { f as validateBody, i as getEffectiveThreadId, l as requireEffectiveResourceId, o as mergeBodyRequestContext, r as getEffectiveResourceId, t as enforceThreadAccess } from "./utils-GVYTDbr2.js";
|
|
6
6
|
import { a as builderModelPolicySchema } from "./editor-builder-CYkaYf6-.js";
|
|
7
7
|
import { z } from "zod/v4";
|
|
8
8
|
//#endregion
|
|
@@ -54,7 +54,7 @@ const STREAM_WORKFLOW_BUILDER_ROUTE = createRoute({
|
|
|
54
54
|
const builder = await editor.resolveWorkflowBuilder();
|
|
55
55
|
if (!builder?.enabled) throw new HTTPException(404, { message: "Workflow builder is not enabled" });
|
|
56
56
|
const agent = builder.getAgent();
|
|
57
|
-
const { messages, memory: memoryOption, requestContext: bodyRequestContext, ...rest } = params;
|
|
57
|
+
const { messages, memory: memoryOption, requestContext: bodyRequestContext, scopes: _scopes, ...rest } = params;
|
|
58
58
|
validateBody({ messages });
|
|
59
59
|
mergeBodyRequestContext(serverRequestContext, bodyRequestContext);
|
|
60
60
|
let authorizedMemoryOption = memoryOption;
|
|
@@ -99,4 +99,4 @@ const STREAM_WORKFLOW_BUILDER_ROUTE = createRoute({
|
|
|
99
99
|
//#endregion
|
|
100
100
|
export { STREAM_WORKFLOW_BUILDER_ROUTE as n, GET_WORKFLOW_BUILDER_SETTINGS_ROUTE as t };
|
|
101
101
|
|
|
102
|
-
//# sourceMappingURL=workflow-builder-
|
|
102
|
+
//# sourceMappingURL=workflow-builder-U2jFH8o7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-builder-U2jFH8o7.js","names":[],"sources":["../src/server/schemas/workflow-builder.ts","../src/server/handlers/workflow-builder.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { builderModelPolicySchema } from './editor-builder';\n\nexport const workflowBuilderSettingsResponseSchema = z.object({\n enabled: z.boolean(),\n modelPolicy: builderModelPolicySchema.optional(),\n});\n\nexport type WorkflowBuilderSettingsResponse = z.infer<typeof workflowBuilderSettingsResponseSchema>;\n","import { HTTPException } from '../http-exception';\nimport { agentExecutionBodySchema, streamResponseSchema } from '../schemas/agents';\nimport { workflowBuilderSettingsResponseSchema } from '../schemas/workflow-builder';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\nimport {\n enforceThreadAccess,\n getEffectiveResourceId,\n getEffectiveThreadId,\n mergeBodyRequestContext,\n requireEffectiveResourceId,\n validateBody,\n} from './utils';\n\nexport const GET_WORKFLOW_BUILDER_SETTINGS_ROUTE = createRoute({\n method: 'GET',\n path: '/editor/workflow-builder/settings',\n responseType: 'json',\n responseSchema: workflowBuilderSettingsResponseSchema,\n summary: 'Get persisted workflow builder settings',\n description: 'Returns whether the editor-owned persisted workflow builder is available',\n tags: ['Editor'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:read',\n handler: async ({ mastra }) => {\n try {\n const editor = mastra.getEditor();\n if (!editor || typeof editor.resolveWorkflowBuilder !== 'function') return { enabled: false };\n if (!editor.hasEnabledWorkflowBuilderConfig?.()) return { enabled: false };\n\n const builder = await editor.resolveWorkflowBuilder();\n return {\n enabled: builder?.enabled === true,\n modelPolicy: builder?.getModelPolicy(),\n };\n } catch (error) {\n return handleError(error, 'Error getting workflow builder settings');\n }\n },\n});\n\nexport const STREAM_WORKFLOW_BUILDER_ROUTE = createRoute({\n method: 'POST',\n path: '/editor/workflow-builder/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream persisted workflow builder response',\n description: 'Streams from the hidden editor-owned workflow builder agent',\n tags: ['Editor'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:write',\n handler: async ({ mastra, abortSignal, requestContext: serverRequestContext, ...params }) => {\n try {\n const editor = mastra.getEditor();\n if (!editor?.hasEnabledWorkflowBuilderConfig?.() || typeof editor.resolveWorkflowBuilder !== 'function') {\n throw new HTTPException(404, { message: 'Workflow builder is not enabled' });\n }\n\n const builder = await editor.resolveWorkflowBuilder();\n if (!builder?.enabled) throw new HTTPException(404, { message: 'Workflow builder is not enabled' });\n const agent = builder.getAgent();\n\n const { messages, memory: memoryOption, requestContext: bodyRequestContext, scopes: _scopes, ...rest } = params;\n validateBody({ messages });\n\n mergeBodyRequestContext(serverRequestContext, bodyRequestContext);\n\n let authorizedMemoryOption = memoryOption;\n if (memoryOption) {\n const clientThreadId = typeof memoryOption.thread === 'string' ? memoryOption.thread : memoryOption.thread?.id;\n const effectiveResourceId = getEffectiveResourceId(serverRequestContext, memoryOption.resource);\n requireEffectiveResourceId(effectiveResourceId);\n const effectiveThreadId = getEffectiveThreadId(serverRequestContext, clientThreadId);\n\n if (effectiveThreadId) {\n const memory = await agent.getMemory({ requestContext: serverRequestContext });\n const thread = await memory?.getThreadById({ threadId: effectiveThreadId });\n if (thread) {\n await enforceThreadAccess({\n mastra,\n requestContext: serverRequestContext,\n threadId: effectiveThreadId,\n thread,\n effectiveResourceId,\n permission: 'memory:write',\n });\n }\n }\n\n authorizedMemoryOption = {\n ...memoryOption,\n resource: effectiveResourceId ?? memoryOption.resource,\n thread: effectiveThreadId ?? memoryOption.thread,\n };\n }\n\n const { structuredOutput, ...streamOptions } = rest;\n const options: Record<string, any> = {\n ...streamOptions,\n requestContext: serverRequestContext,\n memory: authorizedMemoryOption,\n abortSignal,\n };\n const result = structuredOutput\n ? await agent.stream(messages, { ...options, structuredOutput })\n : await agent.stream(messages, options);\n return result.fullStream;\n } catch (error) {\n return handleError(error, 'Error streaming workflow builder response');\n }\n },\n});\n"],"mappings":";;;;;;;;;ACcA,MAAa,sCAAsC,YAAY;CAC7D,QAAQ;CACR,MAAM;CACN,cAAc;CACd,gBDfmD,EAAE,OAAO;EAC5D,SAAS,EAAE,QAAQ;EACnB,aAAa,yBAAyB,SAAS;CACjD,CCYkB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,QAAQ;CACf,cAAc;CACd,oBAAoB;CACpB,SAAS,OAAO,EAAE,aAAa;EAC7B,IAAI;GACF,MAAM,SAAS,OAAO,UAAU;GAChC,IAAI,CAAC,UAAU,OAAO,OAAO,2BAA2B,YAAY,OAAO,EAAE,SAAS,MAAM;GAC5F,IAAI,CAAC,OAAO,kCAAkC,GAAG,OAAO,EAAE,SAAS,MAAM;GAEzE,MAAM,UAAU,MAAM,OAAO,uBAAuB;GACpD,OAAO;IACL,SAAS,SAAS,YAAY;IAC9B,aAAa,SAAS,eAAe;GACvC;EACF,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,yCAAyC;EACrE;CACF;AACF,CAAC;AAED,MAAa,gCAAgC,YAAY;CACvD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,cAAc;CACd,YAAY;CACZ,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,QAAQ;CACf,cAAc;CACd,oBAAoB;CACpB,SAAS,OAAO,EAAE,QAAQ,aAAa,gBAAgB,sBAAsB,GAAG,aAAa;EAC3F,IAAI;GACF,MAAM,SAAS,OAAO,UAAU;GAChC,IAAI,CAAC,QAAQ,kCAAkC,KAAK,OAAO,OAAO,2BAA2B,YAC3F,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,kCAAkC,CAAC;GAG7E,MAAM,UAAU,MAAM,OAAO,uBAAuB;GACpD,IAAI,CAAC,SAAS,SAAS,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,kCAAkC,CAAC;GAClG,MAAM,QAAQ,QAAQ,SAAS;GAE/B,MAAM,EAAE,UAAU,QAAQ,cAAc,gBAAgB,oBAAoB,QAAQ,SAAS,GAAG,SAAS;GACzG,aAAa,EAAE,SAAS,CAAC;GAEzB,wBAAwB,sBAAsB,kBAAkB;GAEhE,IAAI,yBAAyB;GAC7B,IAAI,cAAc;IAChB,MAAM,iBAAiB,OAAO,aAAa,WAAW,WAAW,aAAa,SAAS,aAAa,QAAQ;IAC5G,MAAM,sBAAsB,uBAAuB,sBAAsB,aAAa,QAAQ;IAC9F,2BAA2B,mBAAmB;IAC9C,MAAM,oBAAoB,qBAAqB,sBAAsB,cAAc;IAEnF,IAAI,mBAAmB;KAErB,MAAM,SAAS,OAAM,MADA,MAAM,UAAU,EAAE,gBAAgB,qBAAqB,CAAC,EAAA,EAChD,cAAc,EAAE,UAAU,kBAAkB,CAAC;KAC1E,IAAI,QACF,MAAM,oBAAoB;MACxB;MACA,gBAAgB;MAChB,UAAU;MACV;MACA;MACA,YAAY;KACd,CAAC;IAEL;IAEA,yBAAyB;KACvB,GAAG;KACH,UAAU,uBAAuB,aAAa;KAC9C,QAAQ,qBAAqB,aAAa;IAC5C;GACF;GAEA,MAAM,EAAE,kBAAkB,GAAG,kBAAkB;GAC/C,MAAM,UAA+B;IACnC,GAAG;IACH,gBAAgB;IAChB,QAAQ;IACR;GACF;GAIA,QAHe,mBACX,MAAM,MAAM,OAAO,UAAU;IAAE,GAAG;IAAS;GAAiB,CAAC,IAC7D,MAAM,MAAM,OAAO,UAAU,OAAO,EAAA,CAC1B;EAChB,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,2CAA2C;EACvE;CACF;AACF,CAAC"}
|
|
@@ -2,7 +2,7 @@ const require_http_exception = require("./http-exception-CKDHupKw.cjs");
|
|
|
2
2
|
const require_agents = require("./agents-CKSEPpk1.cjs");
|
|
3
3
|
const require_route_builder = require("./route-builder-2yrD15TL.cjs");
|
|
4
4
|
const require_server_handlers_error = require("./server/handlers/error.cjs");
|
|
5
|
-
const require_utils = require("./utils-
|
|
5
|
+
const require_utils = require("./utils-BF2Kbju4.cjs");
|
|
6
6
|
const require_editor_builder = require("./editor-builder-BtcTQbAC.cjs");
|
|
7
7
|
let zod_v4 = require("zod/v4");
|
|
8
8
|
//#region src/server/schemas/workflow-builder.ts
|
|
@@ -56,7 +56,7 @@ const STREAM_WORKFLOW_BUILDER_ROUTE = require_route_builder.createRoute({
|
|
|
56
56
|
const builder = await editor.resolveWorkflowBuilder();
|
|
57
57
|
if (!builder?.enabled) throw new require_http_exception.HTTPException(404, { message: "Workflow builder is not enabled" });
|
|
58
58
|
const agent = builder.getAgent();
|
|
59
|
-
const { messages, memory: memoryOption, requestContext: bodyRequestContext, ...rest } = params;
|
|
59
|
+
const { messages, memory: memoryOption, requestContext: bodyRequestContext, scopes: _scopes, ...rest } = params;
|
|
60
60
|
require_utils.validateBody({ messages });
|
|
61
61
|
require_utils.mergeBodyRequestContext(serverRequestContext, bodyRequestContext);
|
|
62
62
|
let authorizedMemoryOption = memoryOption;
|
|
@@ -112,4 +112,4 @@ Object.defineProperty(exports, "STREAM_WORKFLOW_BUILDER_ROUTE", {
|
|
|
112
112
|
}
|
|
113
113
|
});
|
|
114
114
|
|
|
115
|
-
//# sourceMappingURL=workflow-builder-
|
|
115
|
+
//# sourceMappingURL=workflow-builder-UVflLOfv.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-builder-UVflLOfv.cjs","names":["z","builderModelPolicySchema","createRoute","handleError","agentExecutionBodySchema","streamResponseSchema","HTTPException","getEffectiveResourceId","getEffectiveThreadId","enforceThreadAccess"],"sources":["../src/server/schemas/workflow-builder.ts","../src/server/handlers/workflow-builder.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { builderModelPolicySchema } from './editor-builder';\n\nexport const workflowBuilderSettingsResponseSchema = z.object({\n enabled: z.boolean(),\n modelPolicy: builderModelPolicySchema.optional(),\n});\n\nexport type WorkflowBuilderSettingsResponse = z.infer<typeof workflowBuilderSettingsResponseSchema>;\n","import { HTTPException } from '../http-exception';\nimport { agentExecutionBodySchema, streamResponseSchema } from '../schemas/agents';\nimport { workflowBuilderSettingsResponseSchema } from '../schemas/workflow-builder';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\nimport {\n enforceThreadAccess,\n getEffectiveResourceId,\n getEffectiveThreadId,\n mergeBodyRequestContext,\n requireEffectiveResourceId,\n validateBody,\n} from './utils';\n\nexport const GET_WORKFLOW_BUILDER_SETTINGS_ROUTE = createRoute({\n method: 'GET',\n path: '/editor/workflow-builder/settings',\n responseType: 'json',\n responseSchema: workflowBuilderSettingsResponseSchema,\n summary: 'Get persisted workflow builder settings',\n description: 'Returns whether the editor-owned persisted workflow builder is available',\n tags: ['Editor'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:read',\n handler: async ({ mastra }) => {\n try {\n const editor = mastra.getEditor();\n if (!editor || typeof editor.resolveWorkflowBuilder !== 'function') return { enabled: false };\n if (!editor.hasEnabledWorkflowBuilderConfig?.()) return { enabled: false };\n\n const builder = await editor.resolveWorkflowBuilder();\n return {\n enabled: builder?.enabled === true,\n modelPolicy: builder?.getModelPolicy(),\n };\n } catch (error) {\n return handleError(error, 'Error getting workflow builder settings');\n }\n },\n});\n\nexport const STREAM_WORKFLOW_BUILDER_ROUTE = createRoute({\n method: 'POST',\n path: '/editor/workflow-builder/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream persisted workflow builder response',\n description: 'Streams from the hidden editor-owned workflow builder agent',\n tags: ['Editor'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:write',\n handler: async ({ mastra, abortSignal, requestContext: serverRequestContext, ...params }) => {\n try {\n const editor = mastra.getEditor();\n if (!editor?.hasEnabledWorkflowBuilderConfig?.() || typeof editor.resolveWorkflowBuilder !== 'function') {\n throw new HTTPException(404, { message: 'Workflow builder is not enabled' });\n }\n\n const builder = await editor.resolveWorkflowBuilder();\n if (!builder?.enabled) throw new HTTPException(404, { message: 'Workflow builder is not enabled' });\n const agent = builder.getAgent();\n\n const { messages, memory: memoryOption, requestContext: bodyRequestContext, scopes: _scopes, ...rest } = params;\n validateBody({ messages });\n\n mergeBodyRequestContext(serverRequestContext, bodyRequestContext);\n\n let authorizedMemoryOption = memoryOption;\n if (memoryOption) {\n const clientThreadId = typeof memoryOption.thread === 'string' ? memoryOption.thread : memoryOption.thread?.id;\n const effectiveResourceId = getEffectiveResourceId(serverRequestContext, memoryOption.resource);\n requireEffectiveResourceId(effectiveResourceId);\n const effectiveThreadId = getEffectiveThreadId(serverRequestContext, clientThreadId);\n\n if (effectiveThreadId) {\n const memory = await agent.getMemory({ requestContext: serverRequestContext });\n const thread = await memory?.getThreadById({ threadId: effectiveThreadId });\n if (thread) {\n await enforceThreadAccess({\n mastra,\n requestContext: serverRequestContext,\n threadId: effectiveThreadId,\n thread,\n effectiveResourceId,\n permission: 'memory:write',\n });\n }\n }\n\n authorizedMemoryOption = {\n ...memoryOption,\n resource: effectiveResourceId ?? memoryOption.resource,\n thread: effectiveThreadId ?? memoryOption.thread,\n };\n }\n\n const { structuredOutput, ...streamOptions } = rest;\n const options: Record<string, any> = {\n ...streamOptions,\n requestContext: serverRequestContext,\n memory: authorizedMemoryOption,\n abortSignal,\n };\n const result = structuredOutput\n ? await agent.stream(messages, { ...options, structuredOutput })\n : await agent.stream(messages, options);\n return result.fullStream;\n } catch (error) {\n return handleError(error, 'Error streaming workflow builder response');\n }\n },\n});\n"],"mappings":";;;;;;;;AAGA,MAAa,wCAAwCA,OAAAA,EAAE,OAAO;CAC5D,SAASA,OAAAA,EAAE,QAAQ;CACnB,aAAaC,uBAAAA,yBAAyB,SAAS;AACjD,CAAC;;;ACQD,MAAa,sCAAsCC,sBAAAA,YAAY;CAC7D,QAAQ;CACR,MAAM;CACN,cAAc;CACd,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,QAAQ;CACf,cAAc;CACd,oBAAoB;CACpB,SAAS,OAAO,EAAE,aAAa;EAC7B,IAAI;GACF,MAAM,SAAS,OAAO,UAAU;GAChC,IAAI,CAAC,UAAU,OAAO,OAAO,2BAA2B,YAAY,OAAO,EAAE,SAAS,MAAM;GAC5F,IAAI,CAAC,OAAO,kCAAkC,GAAG,OAAO,EAAE,SAAS,MAAM;GAEzE,MAAM,UAAU,MAAM,OAAO,uBAAuB;GACpD,OAAO;IACL,SAAS,SAAS,YAAY;IAC9B,aAAa,SAAS,eAAe;GACvC;EACF,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,yCAAyC;EACrE;CACF;AACF,CAAC;AAED,MAAa,gCAAgCD,sBAAAA,YAAY;CACvD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,cAAc;CACd,YAAYE,eAAAA;CACZ,gBAAgBC,eAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,QAAQ;CACf,cAAc;CACd,oBAAoB;CACpB,SAAS,OAAO,EAAE,QAAQ,aAAa,gBAAgB,sBAAsB,GAAG,aAAa;EAC3F,IAAI;GACF,MAAM,SAAS,OAAO,UAAU;GAChC,IAAI,CAAC,QAAQ,kCAAkC,KAAK,OAAO,OAAO,2BAA2B,YAC3F,MAAM,IAAIC,uBAAAA,cAAc,KAAK,EAAE,SAAS,kCAAkC,CAAC;GAG7E,MAAM,UAAU,MAAM,OAAO,uBAAuB;GACpD,IAAI,CAAC,SAAS,SAAS,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,kCAAkC,CAAC;GAClG,MAAM,QAAQ,QAAQ,SAAS;GAE/B,MAAM,EAAE,UAAU,QAAQ,cAAc,gBAAgB,oBAAoB,QAAQ,SAAS,GAAG,SAAS;GACzG,cAAA,aAAa,EAAE,SAAS,CAAC;GAEzB,cAAA,wBAAwB,sBAAsB,kBAAkB;GAEhE,IAAI,yBAAyB;GAC7B,IAAI,cAAc;IAChB,MAAM,iBAAiB,OAAO,aAAa,WAAW,WAAW,aAAa,SAAS,aAAa,QAAQ;IAC5G,MAAM,sBAAsBC,cAAAA,uBAAuB,sBAAsB,aAAa,QAAQ;IAC9F,cAAA,2BAA2B,mBAAmB;IAC9C,MAAM,oBAAoBC,cAAAA,qBAAqB,sBAAsB,cAAc;IAEnF,IAAI,mBAAmB;KAErB,MAAM,SAAS,OAAM,MADA,MAAM,UAAU,EAAE,gBAAgB,qBAAqB,CAAC,EAAA,EAChD,cAAc,EAAE,UAAU,kBAAkB,CAAC;KAC1E,IAAI,QACF,MAAMC,cAAAA,oBAAoB;MACxB;MACA,gBAAgB;MAChB,UAAU;MACV;MACA;MACA,YAAY;KACd,CAAC;IAEL;IAEA,yBAAyB;KACvB,GAAG;KACH,UAAU,uBAAuB,aAAa;KAC9C,QAAQ,qBAAqB,aAAa;IAC5C;GACF;GAEA,MAAM,EAAE,kBAAkB,GAAG,kBAAkB;GAC/C,MAAM,UAA+B;IACnC,GAAG;IACH,gBAAgB;IAChB,QAAQ;IACR;GACF;GAIA,QAHe,mBACX,MAAM,MAAM,OAAO,UAAU;IAAE,GAAG;IAAS;GAAiB,CAAC,IAC7D,MAAM,MAAM,OAAO,UAAU,OAAO,EAAA,CAC1B;EAChB,SAAS,OAAO;GACd,OAAON,8BAAAA,YAAY,OAAO,2CAA2C;EACvE;CACF;AACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.78.0-alpha.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -117,14 +117,14 @@
|
|
|
117
117
|
"zod": "^4.6.4",
|
|
118
118
|
"zod-to-ts": "^2.1.0",
|
|
119
119
|
"@internal/core": "0.1.2",
|
|
120
|
-
"@internal/
|
|
121
|
-
"@internal/storage-test-utils": "0.0.
|
|
122
|
-
"@internal/
|
|
123
|
-
"@
|
|
124
|
-
"@
|
|
125
|
-
"@mastra/
|
|
126
|
-
"@
|
|
127
|
-
"@
|
|
120
|
+
"@internal/test-utils": "0.0.79",
|
|
121
|
+
"@internal/storage-test-utils": "0.0.139",
|
|
122
|
+
"@internal/lint": "0.0.143",
|
|
123
|
+
"@mastra/agent-builder": "1.1.28",
|
|
124
|
+
"@mastra/core": "1.78.0-alpha.0",
|
|
125
|
+
"@mastra/schema-compat": "1.3.14",
|
|
126
|
+
"@internal/types-builder": "0.0.118",
|
|
127
|
+
"@internal/voice": "0.0.41"
|
|
128
128
|
},
|
|
129
129
|
"homepage": "https://mastra.ai",
|
|
130
130
|
"repository": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"background-tasks-CIp3Ltam.cjs","names":["z","paginationNumber","createRoute","HTTPException"],"sources":["../src/server/schemas/background-tasks.ts","../src/server/handlers/background-tasks.ts"],"sourcesContent":["import { z } from 'zod';\nimport { paginationNumber } from './common';\n\nexport const backgroundTaskStatusSchema = z.enum([\n 'pending',\n 'running',\n 'suspended',\n 'completed',\n 'failed',\n 'cancelled',\n 'timed_out',\n]);\n\nexport const backgroundTaskStreamQuerySchema = z.object({\n agentId: z.string().optional(),\n runId: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n taskId: z.string().optional(),\n});\n\nexport const backgroundTaskDateColumnSchema = z.enum(['createdAt', 'startedAt', 'suspendedAt', 'completedAt']);\n\nexport const listBackgroundTasksQuerySchema = z.object({\n agentId: z.string().optional(),\n status: backgroundTaskStatusSchema.optional(),\n runId: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n toolName: z.string().optional(),\n toolCallId: z.string().optional(),\n fromDate: z.coerce.date().optional(),\n toDate: z.coerce.date().optional(),\n dateFilterBy: backgroundTaskDateColumnSchema.optional(),\n orderBy: backgroundTaskDateColumnSchema.optional(),\n orderDirection: z.enum(['asc', 'desc']).optional(),\n page: paginationNumber().optional(),\n perPage: paginationNumber().optional(),\n});\n\nexport const backgroundTaskIdPathParams = z.object({\n backgroundTaskId: z.string(),\n});\n\nexport const backgroundTaskResponseSchema = z.object({\n id: z.string(),\n status: backgroundTaskStatusSchema,\n toolName: z.string(),\n toolCallId: z.string(),\n args: z.record(z.string(), z.unknown()),\n agentId: z.string(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n runId: z.string(),\n result: z.unknown().optional(),\n error: z.object({ message: z.string(), stack: z.string().optional() }).optional(),\n createdAt: z.date(),\n startedAt: z.date().optional(),\n completedAt: z.date().optional(),\n retryCount: z.number(),\n maxRetries: z.number(),\n timeoutMs: z.number(),\n suspendPayload: z.unknown().optional(),\n});\n\nexport const listBackgroundTaskResponseSchema = z.object({\n tasks: z.array(backgroundTaskResponseSchema),\n total: z.number(),\n});\n\nexport const backgroundTaskStreamResponseSchema = z.unknown();\n","import { HTTPException } from '../http-exception';\nimport {\n backgroundTaskResponseSchema,\n backgroundTaskStreamQuerySchema,\n backgroundTaskStreamResponseSchema,\n listBackgroundTaskResponseSchema,\n listBackgroundTasksQuerySchema,\n backgroundTaskIdPathParams,\n} from '../schemas/background-tasks';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nexport const BACKGROUND_TASK_STREAM_ROUTE = createRoute({\n method: 'GET',\n path: '/background-tasks/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n queryParamSchema: backgroundTaskStreamQuerySchema,\n responseSchema: backgroundTaskStreamResponseSchema,\n summary: 'Stream background task events via SSE',\n description: 'Real-time Server-Sent Events stream of background task completion/failure events.',\n tags: ['Background Tasks'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, runId, threadId, resourceId, taskId, abortSignal }) => {\n const bgManager = mastra.backgroundTaskManager;\n if (!bgManager) {\n // Background tasks are not enabled — return an empty stream that stays\n // open until the client disconnects. This avoids spamming the logs with\n // false-positive errors when clients (e.g. the studio UI) optimistically\n // subscribe to the stream.\n return new ReadableStream({\n start(controller) {\n abortSignal?.addEventListener('abort', () => {\n try {\n controller.close();\n } catch {\n // Already closed\n }\n });\n },\n });\n }\n\n return bgManager.stream({ agentId, runId, threadId, resourceId, taskId, abortSignal });\n },\n});\n\nexport const LIST_BACKGROUND_TASKS_ROUTE = createRoute({\n method: 'GET',\n path: '/background-tasks',\n responseType: 'json' as const,\n queryParamSchema: listBackgroundTasksQuerySchema,\n responseSchema: listBackgroundTaskResponseSchema,\n summary: 'List background tasks',\n description: 'Returns background tasks filtered by status, agent, run, etc.',\n tags: ['Background Tasks'],\n requiresAuth: true,\n handler: async ({ mastra, ...params }) => {\n const bgManager = mastra.backgroundTaskManager;\n if (!bgManager) {\n // Background tasks not enabled — there are no tasks to return.\n return { tasks: [], total: 0 };\n }\n\n return bgManager.listTasks(params);\n },\n});\n\nexport const GET_BACKGROUND_TASK_ROUTE = createRoute({\n method: 'GET',\n path: '/background-tasks/:backgroundTaskId',\n responseType: 'json' as const,\n pathParamSchema: backgroundTaskIdPathParams,\n responseSchema: backgroundTaskResponseSchema,\n summary: 'Get a background task by ID',\n description: 'Returns a background task by ID.',\n tags: ['Background Tasks'],\n requiresAuth: true,\n handler: async ({ mastra, backgroundTaskId }) => {\n const bgManager = mastra.backgroundTaskManager;\n if (!bgManager) {\n // Background tasks not enabled — the task can't exist.\n throw new HTTPException(404, { message: 'Background task not found' });\n }\n\n const task = await bgManager.getTask(backgroundTaskId);\n if (!task) {\n throw new HTTPException(404, { message: 'Background task not found' });\n }\n return task;\n },\n});\n"],"mappings":"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"}
|