@mastra/server 1.16.0-alpha.2 → 1.16.0-alpha.4
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/CHANGELOG.md +76 -0
- package/dist/{chunk-PUMBMYBX.cjs → chunk-37LAVKFO.cjs} +11 -11
- package/dist/{chunk-PUMBMYBX.cjs.map → chunk-37LAVKFO.cjs.map} +1 -1
- package/dist/{chunk-62GR2C36.cjs → chunk-3BRCE7JC.cjs} +11 -11
- package/dist/{chunk-62GR2C36.cjs.map → chunk-3BRCE7JC.cjs.map} +1 -1
- package/dist/{chunk-Z7BMOL42.cjs → chunk-3W54ZNYP.cjs} +30 -30
- package/dist/{chunk-Z7BMOL42.cjs.map → chunk-3W54ZNYP.cjs.map} +1 -1
- package/dist/{chunk-MZ275AAF.js → chunk-4D7KSU4X.js} +4 -4
- package/dist/{chunk-MZ275AAF.js.map → chunk-4D7KSU4X.js.map} +1 -1
- package/dist/{chunk-XWN66HIC.cjs → chunk-4G5KVXN6.cjs} +17 -17
- package/dist/{chunk-XWN66HIC.cjs.map → chunk-4G5KVXN6.cjs.map} +1 -1
- package/dist/{chunk-YAQDFKGR.js → chunk-4NRXB7VI.js} +3 -3
- package/dist/{chunk-YAQDFKGR.js.map → chunk-4NRXB7VI.js.map} +1 -1
- package/dist/{chunk-WOU6ROOP.js → chunk-5GXB4IME.js} +3 -3
- package/dist/{chunk-WOU6ROOP.js.map → chunk-5GXB4IME.js.map} +1 -1
- package/dist/{chunk-PIORYI6S.js → chunk-645P6ZAV.js} +11 -3
- package/dist/chunk-645P6ZAV.js.map +1 -0
- package/dist/{chunk-O52KF4SM.js → chunk-6QBPL7ME.js} +4 -4
- package/dist/{chunk-O52KF4SM.js.map → chunk-6QBPL7ME.js.map} +1 -1
- package/dist/{chunk-3ZPZHQRS.js → chunk-7TESOQZ3.js} +3 -3
- package/dist/{chunk-3ZPZHQRS.js.map → chunk-7TESOQZ3.js.map} +1 -1
- package/dist/{chunk-4I2LMHTI.js → chunk-7ZHBGYZB.js} +3 -3
- package/dist/{chunk-4I2LMHTI.js.map → chunk-7ZHBGYZB.js.map} +1 -1
- package/dist/{chunk-QD7NPKXK.cjs → chunk-A5J2TY2W.cjs} +6 -6
- package/dist/{chunk-QD7NPKXK.cjs.map → chunk-A5J2TY2W.cjs.map} +1 -1
- package/dist/{chunk-OSZ6AAFG.cjs → chunk-ALMN74MG.cjs} +106 -102
- package/dist/chunk-ALMN74MG.cjs.map +1 -0
- package/dist/{chunk-K3TANUFC.js → chunk-ATZ7V3XS.js} +5 -5
- package/dist/{chunk-K3TANUFC.js.map → chunk-ATZ7V3XS.js.map} +1 -1
- package/dist/{chunk-MR2JXSLN.js → chunk-B5KNWY2P.js} +3 -3
- package/dist/{chunk-MR2JXSLN.js.map → chunk-B5KNWY2P.js.map} +1 -1
- package/dist/{chunk-OQCQTAI6.js → chunk-CZUJUB46.js} +14 -5
- package/dist/chunk-CZUJUB46.js.map +1 -0
- package/dist/{chunk-375NFGLA.js → chunk-E56FRMZY.js} +3 -3
- package/dist/{chunk-375NFGLA.js.map → chunk-E56FRMZY.js.map} +1 -1
- package/dist/{chunk-2OGP3GTW.cjs → chunk-EGSCXVMR.cjs} +5 -52
- package/dist/chunk-EGSCXVMR.cjs.map +1 -0
- package/dist/{chunk-3LBYNV6U.js → chunk-FB5NRM2M.js} +3 -3
- package/dist/{chunk-3LBYNV6U.js.map → chunk-FB5NRM2M.js.map} +1 -1
- package/dist/{chunk-E3ZR4JAK.cjs → chunk-FPEX6KOJ.cjs} +46 -43
- package/dist/chunk-FPEX6KOJ.cjs.map +1 -0
- package/dist/{chunk-3CILCP75.js → chunk-FU5Z5NSF.js} +4 -4
- package/dist/{chunk-3CILCP75.js.map → chunk-FU5Z5NSF.js.map} +1 -1
- package/dist/{chunk-Y5MUJIDZ.js → chunk-G2ZZKKQI.js} +4 -4
- package/dist/{chunk-Y5MUJIDZ.js.map → chunk-G2ZZKKQI.js.map} +1 -1
- package/dist/{chunk-EGFJ3CSS.cjs → chunk-G5KXPZUB.cjs} +7 -7
- package/dist/{chunk-EGFJ3CSS.cjs.map → chunk-G5KXPZUB.cjs.map} +1 -1
- package/dist/{chunk-MSGUG7XP.js → chunk-GF42M6A3.js} +3 -3
- package/dist/{chunk-MSGUG7XP.js.map → chunk-GF42M6A3.js.map} +1 -1
- package/dist/{chunk-ODP5DUNL.cjs → chunk-GVZ7VB33.cjs} +16 -7
- package/dist/chunk-GVZ7VB33.cjs.map +1 -0
- package/dist/{chunk-HDF6J2PA.js → chunk-GYD5JBBZ.js} +3 -3
- package/dist/{chunk-HDF6J2PA.js.map → chunk-GYD5JBBZ.js.map} +1 -1
- package/dist/{chunk-C3VLRWVN.cjs → chunk-H6ZLN6EU.cjs} +11 -11
- package/dist/{chunk-C3VLRWVN.cjs.map → chunk-H6ZLN6EU.cjs.map} +1 -1
- package/dist/{chunk-OIBX76JU.cjs → chunk-HBMIUVV4.cjs} +10 -10
- package/dist/{chunk-OIBX76JU.cjs.map → chunk-HBMIUVV4.cjs.map} +1 -1
- package/dist/{chunk-2HD547CV.js → chunk-HI5EDX3F.js} +3 -3
- package/dist/{chunk-2HD547CV.js.map → chunk-HI5EDX3F.js.map} +1 -1
- package/dist/{chunk-NASA6WQI.cjs → chunk-HXICAUTW.cjs} +9 -5
- package/dist/chunk-HXICAUTW.cjs.map +1 -0
- package/dist/{chunk-HOAPBP32.cjs → chunk-JH576GTI.cjs} +10 -10
- package/dist/{chunk-HOAPBP32.cjs.map → chunk-JH576GTI.cjs.map} +1 -1
- package/dist/{chunk-EP7BGEQN.js → chunk-JL6JURL5.js} +4 -4
- package/dist/{chunk-EP7BGEQN.js.map → chunk-JL6JURL5.js.map} +1 -1
- package/dist/{chunk-PY465Q3R.js → chunk-K6RNBFGH.js} +4 -4
- package/dist/{chunk-PY465Q3R.js.map → chunk-K6RNBFGH.js.map} +1 -1
- package/dist/{chunk-YENPIZNE.cjs → chunk-KAWEDYGS.cjs} +11 -11
- package/dist/{chunk-YENPIZNE.cjs.map → chunk-KAWEDYGS.cjs.map} +1 -1
- package/dist/{chunk-AYBVZYKG.js → chunk-M6AQTASN.js} +3 -3
- package/dist/{chunk-AYBVZYKG.js.map → chunk-M6AQTASN.js.map} +1 -1
- package/dist/{chunk-7U4AWIZN.js → chunk-MH2WUZWZ.js} +4 -4
- package/dist/{chunk-7U4AWIZN.js.map → chunk-MH2WUZWZ.js.map} +1 -1
- package/dist/{chunk-FSAN76YB.js → chunk-MKW43AJ3.js} +4 -4
- package/dist/{chunk-FSAN76YB.js.map → chunk-MKW43AJ3.js.map} +1 -1
- package/dist/{chunk-7XTRDSIB.cjs → chunk-MNEANLCY.cjs} +10 -10
- package/dist/{chunk-7XTRDSIB.cjs.map → chunk-MNEANLCY.cjs.map} +1 -1
- package/dist/{chunk-F6OAHS7U.cjs → chunk-NCCK5NVX.cjs} +10 -10
- package/dist/{chunk-F6OAHS7U.cjs.map → chunk-NCCK5NVX.cjs.map} +1 -1
- package/dist/{chunk-5LHQGPOK.js → chunk-NMS2SC2B.js} +4 -50
- package/dist/chunk-NMS2SC2B.js.map +1 -0
- package/dist/{chunk-37WHTNK3.cjs → chunk-NOBDUHIG.cjs} +10 -10
- package/dist/{chunk-37WHTNK3.cjs.map → chunk-NOBDUHIG.cjs.map} +1 -1
- package/dist/{chunk-4Y4RMTIA.cjs → chunk-OCSZZ5UK.cjs} +11 -3
- package/dist/chunk-OCSZZ5UK.cjs.map +1 -0
- package/dist/{chunk-4RNME2SG.js → chunk-OXE6JN54.js} +3 -3
- package/dist/{chunk-4RNME2SG.js.map → chunk-OXE6JN54.js.map} +1 -1
- package/dist/{chunk-OMZ2AFE6.js → chunk-QJZOWORS.js} +4 -4
- package/dist/{chunk-OMZ2AFE6.js.map → chunk-QJZOWORS.js.map} +1 -1
- package/dist/{chunk-BB6XFMH3.js → chunk-R3IO7NKS.js} +12 -9
- package/dist/chunk-R3IO7NKS.js.map +1 -0
- package/dist/{chunk-3UXER23P.js → chunk-RGI5IQDO.js} +3 -3
- package/dist/{chunk-3UXER23P.js.map → chunk-RGI5IQDO.js.map} +1 -1
- package/dist/{chunk-VEAVTM4P.js → chunk-RW62AXQH.js} +5 -3
- package/dist/chunk-RW62AXQH.js.map +1 -0
- package/dist/{chunk-75A4PINQ.js → chunk-SCHPGBMK.js} +5 -5
- package/dist/{chunk-75A4PINQ.js.map → chunk-SCHPGBMK.js.map} +1 -1
- package/dist/{chunk-5LURYWNF.cjs → chunk-SEMV475G.cjs} +5 -5
- package/dist/{chunk-5LURYWNF.cjs.map → chunk-SEMV475G.cjs.map} +1 -1
- package/dist/{chunk-J4OPB4KS.cjs → chunk-TYYGY4H4.cjs} +11 -11
- package/dist/{chunk-J4OPB4KS.cjs.map → chunk-TYYGY4H4.cjs.map} +1 -1
- package/dist/{chunk-UOYOF6ZJ.cjs → chunk-UFK5THVP.cjs} +10 -10
- package/dist/{chunk-UOYOF6ZJ.cjs.map → chunk-UFK5THVP.cjs.map} +1 -1
- package/dist/{chunk-FLIDCUYX.js → chunk-UKYIFRF3.js} +3 -3
- package/dist/{chunk-FLIDCUYX.js.map → chunk-UKYIFRF3.js.map} +1 -1
- package/dist/{chunk-C4U6B3QN.cjs → chunk-ULLR3RN3.cjs} +10 -10
- package/dist/{chunk-C4U6B3QN.cjs.map → chunk-ULLR3RN3.cjs.map} +1 -1
- package/dist/{chunk-457RSMZH.cjs → chunk-UTQV3JAT.cjs} +338 -117
- package/dist/chunk-UTQV3JAT.cjs.map +1 -0
- package/dist/{chunk-ZGDE3DVS.cjs → chunk-UUQ6I673.cjs} +6 -6
- package/dist/{chunk-ZGDE3DVS.cjs.map → chunk-UUQ6I673.cjs.map} +1 -1
- package/dist/{chunk-U67CHRAK.js → chunk-V4IWGD6S.js} +10 -6
- package/dist/chunk-V4IWGD6S.js.map +1 -0
- package/dist/{chunk-GIEF7CQR.cjs → chunk-VCBFCDP3.cjs} +103 -100
- package/dist/chunk-VCBFCDP3.cjs.map +1 -0
- package/dist/{chunk-ZRUDCNFS.js → chunk-W2QMKHBI.js} +338 -118
- package/dist/chunk-W2QMKHBI.js.map +1 -0
- package/dist/{chunk-2CO6GUN2.cjs → chunk-WC4OPIB4.cjs} +6 -6
- package/dist/{chunk-2CO6GUN2.cjs.map → chunk-WC4OPIB4.cjs.map} +1 -1
- package/dist/{chunk-JURBS7AW.cjs → chunk-WIQDQTKG.cjs} +12 -12
- package/dist/{chunk-JURBS7AW.cjs.map → chunk-WIQDQTKG.cjs.map} +1 -1
- package/dist/{chunk-VDMJKGYJ.cjs → chunk-WUCJRGTK.cjs} +10 -10
- package/dist/{chunk-VDMJKGYJ.cjs.map → chunk-WUCJRGTK.cjs.map} +1 -1
- package/dist/{chunk-S3OSXKBZ.js → chunk-WYAFNFFM.js} +55 -42
- package/dist/chunk-WYAFNFFM.js.map +1 -0
- package/dist/{chunk-FFX5KP4Y.cjs → chunk-XBMICDYC.cjs} +26 -26
- package/dist/{chunk-FFX5KP4Y.cjs.map → chunk-XBMICDYC.cjs.map} +1 -1
- package/dist/{chunk-XUBQNV4W.cjs → chunk-Y2OBOWHZ.cjs} +33 -33
- package/dist/{chunk-XUBQNV4W.cjs.map → chunk-Y2OBOWHZ.cjs.map} +1 -1
- package/dist/{chunk-JTKK7ZEC.cjs → chunk-YEYWCSMW.cjs} +14 -14
- package/dist/{chunk-JTKK7ZEC.cjs.map → chunk-YEYWCSMW.cjs.map} +1 -1
- package/dist/{chunk-OOTESG4L.js → chunk-YKS5HCGB.js} +12 -9
- package/dist/chunk-YKS5HCGB.js.map +1 -0
- package/dist/{chunk-DZHGLVLY.cjs → chunk-YTB4DWYU.cjs} +30 -30
- package/dist/{chunk-DZHGLVLY.cjs.map → chunk-YTB4DWYU.cjs.map} +1 -1
- package/dist/{chunk-F37L2WVR.cjs → chunk-YV7FX2SA.cjs} +10 -10
- package/dist/{chunk-F37L2WVR.cjs.map → chunk-YV7FX2SA.cjs.map} +1 -1
- package/dist/{chunk-KVLNMWUF.cjs → chunk-YWPRH3D3.cjs} +132 -119
- package/dist/chunk-YWPRH3D3.cjs.map +1 -0
- package/dist/{chunk-DWIUNYVY.cjs → chunk-ZFCNTRZ2.cjs} +5 -3
- package/dist/chunk-ZFCNTRZ2.cjs.map +1 -0
- package/dist/{chunk-C2ITUXN6.js → chunk-ZHULRNJG.js} +9 -6
- package/dist/chunk-ZHULRNJG.js.map +1 -0
- package/dist/{chunk-BHMMMTPE.js → chunk-ZKXIAID6.js} +4 -4
- package/dist/{chunk-BHMMMTPE.js.map → chunk-ZKXIAID6.js.map} +1 -1
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/{observational-memory-OZ7TG4DZ-COUORCVN.cjs → observational-memory-K2U3QQIO-MBBXGVVG.cjs} +32 -28
- package/dist/{observational-memory-OZ7TG4DZ-COUORCVN.cjs.map → observational-memory-K2U3QQIO-MBBXGVVG.cjs.map} +1 -1
- package/dist/observational-memory-K2U3QQIO-MOPJN5M7.js +3 -0
- package/dist/{observational-memory-OZ7TG4DZ-MYYBYEP6.js.map → observational-memory-K2U3QQIO-MOPJN5M7.js.map} +1 -1
- package/dist/server/handlers/a2a.cjs +9 -9
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +16 -16
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agent-versions.cjs +8 -8
- package/dist/server/handlers/agent-versions.js +1 -1
- package/dist/server/handlers/agents.cjs +33 -33
- package/dist/server/handlers/agents.d.ts +10 -5
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/auth.cjs +10 -10
- package/dist/server/handlers/auth.js +1 -1
- package/dist/server/handlers/datasets.cjs +24 -24
- package/dist/server/handlers/datasets.js +1 -1
- package/dist/server/handlers/logs.cjs +4 -4
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/mcp-client-versions.cjs +8 -8
- package/dist/server/handlers/mcp-client-versions.js +1 -1
- package/dist/server/handlers/mcp.cjs +9 -9
- package/dist/server/handlers/mcp.js +1 -1
- package/dist/server/handlers/memory.cjs +27 -27
- package/dist/server/handlers/memory.d.ts +16 -0
- package/dist/server/handlers/memory.d.ts.map +1 -1
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/observability-new-endpoints.cjs +19 -19
- package/dist/server/handlers/observability-new-endpoints.js +1 -1
- package/dist/server/handlers/observability.cjs +24 -24
- package/dist/server/handlers/observability.js +2 -2
- package/dist/server/handlers/processor-providers.cjs +3 -3
- package/dist/server/handlers/processor-providers.js +1 -1
- package/dist/server/handlers/processors.cjs +4 -4
- package/dist/server/handlers/processors.js +1 -1
- package/dist/server/handlers/prompt-block-versions.cjs +8 -8
- package/dist/server/handlers/prompt-block-versions.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +8 -8
- package/dist/server/handlers/scorer-versions.js +1 -1
- package/dist/server/handlers/scores.cjs +7 -7
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/stored-agents.cjs +7 -7
- package/dist/server/handlers/stored-agents.js +1 -1
- package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
- package/dist/server/handlers/stored-mcp-clients.js +1 -1
- package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
- package/dist/server/handlers/stored-prompt-blocks.js +1 -1
- package/dist/server/handlers/stored-scorers.cjs +6 -6
- package/dist/server/handlers/stored-scorers.js +1 -1
- package/dist/server/handlers/stored-skills.cjs +7 -7
- package/dist/server/handlers/stored-skills.js +1 -1
- package/dist/server/handlers/stored-workspaces.cjs +6 -6
- package/dist/server/handlers/stored-workspaces.js +1 -1
- package/dist/server/handlers/system.cjs +2 -2
- package/dist/server/handlers/system.d.ts +4 -0
- package/dist/server/handlers/system.d.ts.map +1 -1
- package/dist/server/handlers/system.js +1 -1
- package/dist/server/handlers/tool-providers.cjs +5 -5
- package/dist/server/handlers/tool-providers.js +1 -1
- package/dist/server/handlers/tools.cjs +6 -6
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/vector.cjs +16 -16
- package/dist/server/handlers/vector.js +1 -1
- package/dist/server/handlers/voice.cjs +8 -8
- package/dist/server/handlers/voice.js +1 -1
- package/dist/server/handlers/workflows.cjs +24 -24
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers/workspace.cjs +26 -26
- package/dist/server/handlers/workspace.d.ts +60 -32
- package/dist/server/handlers/workspace.d.ts.map +1 -1
- package/dist/server/handlers/workspace.js +1 -1
- package/dist/server/handlers.cjs +26 -26
- package/dist/server/handlers.js +13 -13
- package/dist/server/schemas/index.cjs +103 -99
- package/dist/server/schemas/index.js +3 -3
- package/dist/server/schemas/memory.d.ts +8 -0
- package/dist/server/schemas/memory.d.ts.map +1 -1
- package/dist/server/schemas/system.d.ts +2 -0
- package/dist/server/schemas/system.d.ts.map +1 -1
- package/dist/server/schemas/workspace.d.ts +6 -0
- package/dist/server/schemas/workspace.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +284 -284
- package/dist/server/server-adapter/index.js +34 -34
- package/dist/server/server-adapter/routes/memory.d.ts +16 -0
- package/dist/server/server-adapter/routes/memory.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/system.d.ts +4 -0
- package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/workspace.d.ts +30 -16
- package/dist/server/server-adapter/routes/workspace.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/chunk-2OGP3GTW.cjs.map +0 -1
- package/dist/chunk-457RSMZH.cjs.map +0 -1
- package/dist/chunk-4Y4RMTIA.cjs.map +0 -1
- package/dist/chunk-5LHQGPOK.js.map +0 -1
- package/dist/chunk-BB6XFMH3.js.map +0 -1
- package/dist/chunk-C2ITUXN6.js.map +0 -1
- package/dist/chunk-DWIUNYVY.cjs.map +0 -1
- package/dist/chunk-E3ZR4JAK.cjs.map +0 -1
- package/dist/chunk-GIEF7CQR.cjs.map +0 -1
- package/dist/chunk-KVLNMWUF.cjs.map +0 -1
- package/dist/chunk-NASA6WQI.cjs.map +0 -1
- package/dist/chunk-ODP5DUNL.cjs.map +0 -1
- package/dist/chunk-OOTESG4L.js.map +0 -1
- package/dist/chunk-OQCQTAI6.js.map +0 -1
- package/dist/chunk-OSZ6AAFG.cjs.map +0 -1
- package/dist/chunk-PIORYI6S.js.map +0 -1
- package/dist/chunk-S3OSXKBZ.js.map +0 -1
- package/dist/chunk-U67CHRAK.js.map +0 -1
- package/dist/chunk-VEAVTM4P.js.map +0 -1
- package/dist/chunk-ZRUDCNFS.js.map +0 -1
- package/dist/observational-memory-OZ7TG4DZ-MYYBYEP6.js +0 -3
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/agents.ts","../src/server/constants.ts"],"names":["agent","acc","key","editor"],"mappings":"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","file":"chunk-OOTESG4L.js","sourcesContent":["import { Agent } from '@mastra/core/agent';\nimport type { AgentModelManagerConfig } from '@mastra/core/agent';\nimport { ErrorCategory, ErrorDomain, MastraError } from '@mastra/core/error';\nimport { PROVIDER_REGISTRY } from '@mastra/core/llm';\nimport type { ProviderConfig, SystemMessage } from '@mastra/core/llm';\nimport type {\n InputProcessor,\n OutputProcessor,\n InputProcessorOrWorkflow,\n OutputProcessorOrWorkflow,\n} from '@mastra/core/processors';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';\nimport { toStandardSchema, standardSchemaToJSONSchema } from '@mastra/schema-compat/schema';\nimport type { PublicSchema } from '@mastra/schema-compat/schema';\nimport { stringify } from 'superjson';\n\nimport { z } from 'zod/v4';\nimport { WORKSPACE_TOOLS, resolveToolConfig } from '../constants';\nimport type { WorkspaceToolName } from '../constants';\n\nimport { HTTPException } from '../http-exception';\nimport {\n agentIdPathParams,\n agentSkillPathParams,\n agentVersionQuerySchema,\n listAgentsResponseSchema,\n serializedAgentSchema,\n agentExecutionBodySchema,\n agentExecutionLegacyBodySchema,\n generateResponseSchema,\n streamResponseSchema,\n providersResponseSchema,\n approveToolCallBodySchema,\n declineToolCallBodySchema,\n toolCallResponseSchema,\n updateAgentModelBodySchema,\n reorderAgentModelListBodySchema,\n updateAgentModelInModelListBodySchema,\n modelManagementResponseSchema,\n modelConfigIdPathParams,\n enhanceInstructionsBodySchema,\n enhanceInstructionsResponseSchema,\n approveNetworkToolCallBodySchema,\n declineNetworkToolCallBodySchema,\n} from '../schemas/agents';\nimport { createStoredAgentResponseSchema } from '../schemas/stored-agents';\nimport { getAgentSkillResponseSchema } from '../schemas/workspace';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\n\nimport { toSlug } from '../utils';\n\nimport { handleError } from './error';\nimport {\n sanitizeBody,\n validateBody,\n getEffectiveResourceId,\n getEffectiveThreadId,\n validateThreadOwnership,\n} from './utils';\n\n/**\n * Checks if a provider has its required API key environment variable(s) configured.\n * Handles provider IDs with suffixes (e.g., \"openai.chat\" -> \"openai\").\n * Also handles custom gateway providers that are stored with gateway prefix (e.g., \"acme/acme-openai\").\n * @param providerId - The provider identifier (may include a suffix like \".chat\" or be from a custom gateway)\n * @param customProviders - Optional record of custom gateway providers to check\n * @returns true if all required environment variables are set, false otherwise\n */\nexport function isProviderConnected(providerId: string, customProviders?: Record<string, ProviderConfig>): boolean {\n // Clean provider ID (e.g., \"openai.chat\" -> \"openai\")\n const cleanId = providerId.includes('.') ? providerId.split('.')[0]! : providerId;\n\n // First, try direct lookup in static registry\n let provider: ProviderConfig | undefined = PROVIDER_REGISTRY[cleanId as keyof typeof PROVIDER_REGISTRY];\n\n // If not found, check custom providers\n if (!provider && customProviders) {\n provider = customProviders[cleanId];\n }\n\n // If not found and doesn't contain a slash, check if it exists with a gateway prefix\n // This handles custom gateway providers stored as \"gateway/provider\" in the registry\n if (!provider && !cleanId.includes('/')) {\n // Search for a provider ID that matches the pattern \"*/cleanId\"\n const registryKeys = Object.keys(PROVIDER_REGISTRY);\n const matchingKey = registryKeys.find(key => {\n // Check if the key matches the pattern \"gateway/providerId\"\n const parts = key.split('/');\n return parts.length === 2 && parts[1] === cleanId;\n });\n\n if (matchingKey) {\n provider = PROVIDER_REGISTRY[matchingKey as keyof typeof PROVIDER_REGISTRY];\n }\n\n if (!provider && customProviders) {\n const customMatchingKey = Object.keys(customProviders).find(key => {\n const parts = key.split('/');\n return parts.length === 2 && parts[1] === cleanId;\n });\n if (customMatchingKey) {\n provider = customProviders[customMatchingKey];\n }\n }\n }\n\n if (!provider) return false;\n\n const envVars = Array.isArray(provider.apiKeyEnvVar) ? provider.apiKeyEnvVar : [provider.apiKeyEnvVar];\n return envVars.every(envVar => !!process.env[envVar]);\n}\n\nexport interface SerializedProcessor {\n id: string;\n name?: string;\n}\n\nexport interface SerializedSkill {\n name: string;\n description: string;\n license?: string;\n}\n\nexport interface SerializedTool {\n id: string;\n description?: string;\n inputSchema?: string;\n outputSchema?: string;\n requestContextSchema?: string;\n requireApproval?: boolean;\n}\n\ninterface SerializedToolInput {\n id?: string;\n description?: string;\n inputSchema?: { jsonSchema?: unknown } | unknown;\n outputSchema?: { jsonSchema?: unknown } | unknown;\n requestContextSchema?: { jsonSchema?: unknown } | unknown;\n}\n\nfunction resolveLazySchema(schema: unknown): unknown {\n if (typeof schema === 'function') {\n return resolveLazySchema(schema());\n }\n return schema;\n}\n\nfunction schemaToJsonSchema(schema: PublicSchema<unknown> | undefined) {\n if (!schema) {\n return undefined;\n }\n\n return standardSchemaToJSONSchema(toStandardSchema(schema), { target: 'draft-2020-12' });\n}\n\nexport interface SerializedWorkflow {\n name: string;\n steps?: Record<string, { id: string; description?: string }>;\n}\n\nexport interface SerializedAgent {\n name: string;\n description?: string;\n instructions?: SystemMessage;\n tools: Record<string, SerializedTool>;\n agents: Record<string, SerializedAgentDefinition>;\n workflows: Record<string, SerializedWorkflow>;\n skills: SerializedSkill[];\n workspaceTools: string[];\n /** ID of the agent's workspace (if configured) */\n workspaceId?: string;\n inputProcessors: SerializedProcessor[];\n outputProcessors: SerializedProcessor[];\n provider?: string;\n modelId?: string;\n modelVersion?: string;\n modelList?: Array<\n Omit<AgentModelManagerConfig, 'model'> & {\n model: {\n modelId: string;\n provider: string;\n modelVersion: string;\n };\n }\n >;\n // We can't use the true types here because they are not serializable\n defaultOptions?: Record<string, unknown>;\n defaultGenerateOptionsLegacy?: Record<string, unknown>;\n defaultStreamOptionsLegacy?: Record<string, unknown>;\n /** Serialized JSON schema for request context validation */\n requestContextSchema?: string;\n source?: 'code' | 'stored';\n status?: 'draft' | 'published' | 'archived';\n activeVersionId?: string;\n hasDraft?: boolean;\n}\n\nexport interface SerializedAgentWithId extends SerializedAgent {\n id: string;\n}\n\nexport async function getSerializedAgentTools(\n tools: Record<string, SerializedToolInput>,\n partial: boolean = false,\n): Promise<Record<string, SerializedTool>> {\n return Object.entries(tools || {}).reduce<Record<string, SerializedTool>>((acc, [key, tool]) => {\n const toolId = tool.id ?? `tool-${key}`;\n\n let inputSchemaForReturn: string | undefined = undefined;\n let outputSchemaForReturn: string | undefined = undefined;\n let requestContextSchemaForReturn: string | undefined = undefined;\n\n // Only process schemas if not in partial mode\n if (!partial) {\n try {\n const inputSchema = schemaToJsonSchema(\n resolveLazySchema(tool.inputSchema) as PublicSchema<unknown> | undefined,\n );\n if (inputSchema !== undefined) {\n inputSchemaForReturn = stringify(inputSchema);\n }\n\n const outputSchema = schemaToJsonSchema(\n resolveLazySchema(tool.outputSchema) as PublicSchema<unknown> | undefined,\n );\n if (outputSchema !== undefined) {\n outputSchemaForReturn = stringify(outputSchema);\n }\n\n const requestContextSchema = schemaToJsonSchema(\n resolveLazySchema(tool.requestContextSchema) as PublicSchema<unknown> | undefined,\n );\n if (requestContextSchema !== undefined) {\n requestContextSchemaForReturn = stringify(requestContextSchema);\n }\n } catch (error) {\n console.error(`Error getting serialized tool`, {\n toolId: tool.id,\n error,\n });\n }\n }\n\n acc[key] = {\n ...tool,\n id: toolId,\n inputSchema: inputSchemaForReturn,\n outputSchema: outputSchemaForReturn,\n requestContextSchema: requestContextSchemaForReturn,\n };\n return acc;\n }, {});\n}\n\nexport function getSerializedProcessors(\n processors: (InputProcessor | OutputProcessor | InputProcessorOrWorkflow | OutputProcessorOrWorkflow)[],\n): SerializedProcessor[] {\n return processors.map(processor => {\n // Processors are class instances or objects with a name property\n // Use the name property if available, otherwise fall back to constructor name\n return {\n id: processor.id,\n name: processor.name || processor.constructor.name,\n };\n });\n}\n\n/**\n * Extract skills from agent's workspace.\n * Uses agent.getWorkspace() to get the workspace and then workspace.skills.list().\n */\nexport async function getSerializedSkillsFromAgent(\n agent: Agent,\n requestContext?: RequestContext,\n): Promise<SerializedSkill[]> {\n try {\n const workspace = await agent.getWorkspace({ requestContext });\n if (!workspace?.skills) {\n return [];\n }\n\n const skillsList = await workspace.skills.list();\n return skillsList.map(skill => ({\n name: skill.name,\n description: skill.description,\n license: skill.license,\n }));\n } catch {\n return [];\n }\n}\n\n/**\n * Get the list of available workspace tools for an agent.\n *\n * Tries to use core's `createWorkspaceTools` for an accurate tool list that\n * respects runtime availability (e.g. `@ast-grep/napi` for ast_edit).\n * Falls back to inlined config-based logic for older core versions that don't\n * export `createWorkspaceTools`.\n */\nexport async function getWorkspaceToolsFromAgent(agent: Agent, requestContext?: RequestContext): Promise<string[]> {\n try {\n const workspace = await agent.getWorkspace({ requestContext });\n if (!workspace) {\n return [];\n }\n\n // Try core's createWorkspaceTools — it checks runtime dep availability\n try {\n const mod = await import('@mastra/core/workspace');\n if (typeof mod.createWorkspaceTools === 'function') {\n return Object.keys(mod.createWorkspaceTools(workspace));\n }\n } catch {\n // Older core version without workspace module — fall through\n }\n\n // Fallback: inlined logic for older core versions.\n // Does not include AST_EDIT — only available via createWorkspaceTools above.\n const tools: string[] = [];\n const isReadOnly = workspace.filesystem?.readOnly ?? false;\n const toolsConfig = workspace.getToolsConfig();\n\n // Helper to check if a tool is enabled\n const isEnabled = (toolName: WorkspaceToolName) => {\n return resolveToolConfig(toolsConfig, toolName).enabled;\n };\n\n // Filesystem tools\n if (workspace.filesystem) {\n // Read tools\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.READ_FILE)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.READ_FILE);\n }\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.LIST_FILES)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.LIST_FILES);\n }\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.FILE_STAT)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.FILE_STAT);\n }\n\n // Write tools only if not readonly\n if (!isReadOnly) {\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.WRITE_FILE)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.WRITE_FILE);\n }\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.EDIT_FILE)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.EDIT_FILE);\n }\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.DELETE)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.DELETE);\n }\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.MKDIR)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.MKDIR);\n }\n }\n\n // Grep tool (filesystem-based, not BM25/vector)\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.GREP)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.GREP);\n }\n }\n\n // Search tools (available if BM25 or vector search is enabled)\n if (workspace.canBM25 || workspace.canVector) {\n if (isEnabled(WORKSPACE_TOOLS.SEARCH.SEARCH)) {\n tools.push(WORKSPACE_TOOLS.SEARCH.SEARCH);\n }\n if (!isReadOnly && isEnabled(WORKSPACE_TOOLS.SEARCH.INDEX)) {\n tools.push(WORKSPACE_TOOLS.SEARCH.INDEX);\n }\n }\n\n // Sandbox tools\n if (workspace.sandbox) {\n if (workspace.sandbox.executeCommand && isEnabled(WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND)) {\n tools.push(WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND);\n }\n }\n\n return tools;\n } catch {\n return [];\n }\n}\n\ninterface SerializedAgentDefinition {\n id: string;\n name: string;\n}\n\nasync function getSerializedAgentDefinition({\n agent,\n requestContext,\n}: {\n agent: Agent;\n requestContext: RequestContext;\n}): Promise<Record<string, SerializedAgentDefinition>> {\n let serializedAgentAgents: Record<string, SerializedAgentDefinition> = {};\n\n if ('listAgents' in agent) {\n const agents = await agent.listAgents({ requestContext });\n serializedAgentAgents = Object.entries(agents || {}).reduce<Record<string, SerializedAgentDefinition>>(\n (acc, [key, agent]) => {\n return {\n ...acc,\n [key]: { id: agent.id, name: agent.name },\n };\n },\n {},\n );\n }\n return serializedAgentAgents;\n}\n\nasync function formatAgentList({\n id,\n mastra,\n agent,\n requestContext,\n partial = false,\n}: {\n id: string;\n mastra: Context['mastra'];\n agent: Agent;\n requestContext: RequestContext;\n partial?: boolean;\n}): Promise<SerializedAgentWithId> {\n const description = agent.getDescription();\n const instructions = await agent.getInstructions({ requestContext });\n const tools = await agent.listTools({ requestContext });\n const llm = await agent.getLLM({ requestContext });\n const defaultGenerateOptionsLegacy = await agent.getDefaultGenerateOptionsLegacy({ requestContext });\n const defaultStreamOptionsLegacy = await agent.getDefaultStreamOptionsLegacy({ requestContext });\n const defaultOptions = await agent.getDefaultOptions({ requestContext });\n const serializedAgentTools = await getSerializedAgentTools(tools, partial);\n\n let serializedAgentWorkflows: Record<\n string,\n { name: string; steps?: Record<string, { id: string; description?: string }> }\n > = {};\n\n const logger = mastra.getLogger();\n\n if ('listWorkflows' in agent) {\n try {\n const workflows = await agent.listWorkflows({ requestContext });\n serializedAgentWorkflows = Object.entries(workflows || {}).reduce<\n Record<string, { name: string; steps?: Record<string, { id: string; description?: string }> }>\n >((acc, [key, workflow]) => {\n return {\n ...acc,\n [key]: {\n name: workflow.name || 'Unnamed workflow',\n },\n };\n }, {});\n } catch (error) {\n logger.error('Error getting workflows for agent', { agentName: agent.name, error });\n }\n }\n\n const serializedAgentAgents = await getSerializedAgentDefinition({ agent, requestContext });\n\n // Get and serialize only user-configured processors (excludes memory-derived processors)\n // This ensures the UI only shows processors explicitly configured by the user\n let serializedInputProcessors: ReturnType<typeof getSerializedProcessors> = [];\n let serializedOutputProcessors: ReturnType<typeof getSerializedProcessors> = [];\n try {\n const configuredProcessorWorkflows = await agent.getConfiguredProcessorWorkflows();\n const inputProcessorWorkflows = configuredProcessorWorkflows.filter(w => w.id.endsWith('-input-processor'));\n const outputProcessorWorkflows = configuredProcessorWorkflows.filter(w => w.id.endsWith('-output-processor'));\n serializedInputProcessors = getSerializedProcessors(inputProcessorWorkflows);\n serializedOutputProcessors = getSerializedProcessors(outputProcessorWorkflows);\n } catch (error) {\n logger.error('Error getting configured processors for agent', { agentName: agent.name, error });\n }\n\n // Extract skills, workspace tools, and workspaceId from agent's workspace\n const serializedSkills = await getSerializedSkillsFromAgent(agent, requestContext);\n const workspaceTools = await getWorkspaceToolsFromAgent(agent, requestContext);\n\n // Get workspaceId if agent has a workspace\n let workspaceId: string | undefined;\n try {\n const workspace = await agent.getWorkspace({ requestContext });\n workspaceId = workspace?.id;\n } catch {\n // Agent doesn't have a workspace or can't access it\n }\n\n const model = llm?.getModel();\n const models = await agent.getModelList(requestContext);\n const modelList = models?.map(md => ({\n ...md,\n model: {\n modelId: md.model.modelId,\n provider: md.model.provider,\n modelVersion: md.model.specificationVersion,\n },\n }));\n\n // Serialize requestContextSchema if present\n let serializedRequestContextSchema: string | undefined;\n if (agent.requestContextSchema) {\n try {\n serializedRequestContextSchema = stringify(zodToJsonSchema(agent.requestContextSchema));\n } catch (error) {\n logger.error('Error serializing requestContextSchema for agent', { agentName: agent.name, error });\n }\n }\n\n return {\n id: agent.id || id,\n name: agent.name,\n description,\n instructions,\n agents: serializedAgentAgents,\n tools: serializedAgentTools,\n workflows: serializedAgentWorkflows,\n skills: serializedSkills,\n workspaceTools,\n workspaceId,\n inputProcessors: serializedInputProcessors,\n outputProcessors: serializedOutputProcessors,\n provider: llm?.getProvider(),\n modelId: llm?.getModelId(),\n modelVersion: model?.specificationVersion,\n defaultOptions,\n modelList,\n defaultGenerateOptionsLegacy,\n defaultStreamOptionsLegacy,\n requestContextSchema: serializedRequestContextSchema,\n source: (agent as any).source ?? 'code',\n ...(agent.toRawConfig()?.status\n ? { status: agent.toRawConfig()!.status as 'draft' | 'published' | 'archived' }\n : {}),\n ...(agent.toRawConfig()?.activeVersionId\n ? { activeVersionId: agent.toRawConfig()!.activeVersionId as string }\n : {}),\n hasDraft: !!(\n agent.toRawConfig()?.resolvedVersionId &&\n agent.toRawConfig()?.activeVersionId &&\n agent.toRawConfig()!.resolvedVersionId !== agent.toRawConfig()!.activeVersionId\n ),\n };\n}\n\nexport async function getAgentFromSystem({\n mastra,\n agentId,\n versionOptions,\n}: {\n mastra: Context['mastra'];\n agentId: string;\n versionOptions?: { status?: 'draft' | 'published' } | { versionId: string };\n}) {\n const logger = mastra.getLogger();\n\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n let agent;\n\n try {\n agent = mastra.getAgentById(agentId);\n } catch (error) {\n logger.debug('Error getting agent from mastra, searching agents for agent', error);\n }\n\n if (!agent) {\n logger.debug(`Agent ${agentId} not found, looking through sub-agents`);\n const agents = mastra.listAgents();\n if (Object.keys(agents || {}).length) {\n for (const [_, ag] of Object.entries(agents)) {\n try {\n const subAgents = await ag.listAgents();\n\n if (subAgents[agentId]) {\n agent = subAgents[agentId];\n break;\n }\n } catch (error) {\n logger.debug('Error getting agent from agent', error);\n }\n }\n }\n }\n\n // If a code-defined agent was found, apply stored config overrides (if any)\n if (agent && mastra.getEditor) {\n try {\n const editorAgent = mastra.getEditor()?.agent;\n if (editorAgent) {\n agent = await editorAgent.applyStoredOverrides(agent, versionOptions);\n }\n } catch (error) {\n logger.debug('Error applying stored overrides to code agent', error);\n }\n }\n\n // If still not found, try to get stored agent\n if (!agent) {\n logger.debug(`Agent ${agentId} not found in code-defined agents, looking in stored agents`);\n try {\n agent = (await mastra.getEditor()?.agent.getById(agentId)) ?? null;\n } catch (error) {\n logger.debug('Error getting stored agent', error);\n }\n }\n\n if (!agent) {\n throw new HTTPException(404, { message: `Agent with id ${agentId} not found` });\n }\n\n return agent;\n}\n\nasync function formatAgent({\n mastra,\n agent,\n requestContext,\n isStudio,\n}: {\n mastra: Context['mastra'];\n agent: Agent;\n requestContext: RequestContext;\n isStudio: boolean;\n}): Promise<SerializedAgent> {\n const description = agent.getDescription();\n\n const tools = await agent.listTools({ requestContext });\n const serializedAgentTools = await getSerializedAgentTools(tools);\n\n let serializedAgentWorkflows: Record<\n string,\n { name: string; steps: Record<string, { id: string; description?: string }> }\n > = {};\n\n if ('listWorkflows' in agent) {\n const logger = mastra.getLogger();\n try {\n const workflows = await agent.listWorkflows({ requestContext });\n\n serializedAgentWorkflows = Object.entries(workflows || {}).reduce<\n Record<string, { name: string; steps: Record<string, { id: string; description?: string }> }>\n >((acc, [key, workflow]) => {\n return {\n ...acc,\n [key]: {\n name: workflow.name || 'Unnamed workflow',\n steps: Object.entries(workflow.steps).reduce<Record<string, { id: string; description?: string }>>(\n (acc, [key, step]) => {\n return {\n ...acc,\n [key]: {\n id: step.id,\n description: step.description,\n },\n };\n },\n {},\n ),\n },\n };\n }, {});\n } catch (error) {\n logger.error('Error getting workflows for agent', { agentName: agent.name, error });\n }\n }\n\n let proxyRequestContext = requestContext;\n if (isStudio) {\n proxyRequestContext = new Proxy(requestContext, {\n get(target, prop) {\n if (prop === 'get') {\n return function (key: string) {\n const value = target.get(key);\n return value ?? `<${key}>`;\n };\n }\n return Reflect.get(target, prop);\n },\n });\n }\n\n const instructions = await agent.getInstructions({ requestContext: proxyRequestContext });\n const llm = await agent.getLLM({ requestContext });\n const defaultGenerateOptionsLegacy = await agent.getDefaultGenerateOptionsLegacy({\n requestContext: proxyRequestContext,\n });\n const defaultStreamOptionsLegacy = await agent.getDefaultStreamOptionsLegacy({ requestContext: proxyRequestContext });\n const defaultOptions = await agent.getDefaultOptions({ requestContext: proxyRequestContext });\n\n const model = llm?.getModel();\n const models = await agent.getModelList(requestContext);\n const modelList = models?.map(md => ({\n ...md,\n model: {\n modelId: md.model.modelId,\n provider: md.model.provider,\n modelVersion: md.model.specificationVersion,\n },\n }));\n\n const serializedAgentAgents = await getSerializedAgentDefinition({ agent, requestContext: proxyRequestContext });\n\n // Get and serialize only user-configured processors (excludes memory-derived processors)\n // This ensures the UI only shows processors explicitly configured by the user\n let serializedInputProcessors: ReturnType<typeof getSerializedProcessors> = [];\n let serializedOutputProcessors: ReturnType<typeof getSerializedProcessors> = [];\n try {\n const configuredProcessorWorkflows = await agent.getConfiguredProcessorWorkflows();\n const inputProcessorWorkflows = configuredProcessorWorkflows.filter(w => w.id.endsWith('-input-processor'));\n const outputProcessorWorkflows = configuredProcessorWorkflows.filter(w => w.id.endsWith('-output-processor'));\n serializedInputProcessors = getSerializedProcessors(inputProcessorWorkflows);\n serializedOutputProcessors = getSerializedProcessors(outputProcessorWorkflows);\n } catch (error) {\n mastra.getLogger().error('Error getting configured processors for agent', { agentName: agent.name, error });\n }\n\n // Extract skills, workspace tools, and workspaceId from agent's workspace\n const serializedSkills = await getSerializedSkillsFromAgent(agent, proxyRequestContext);\n const workspaceTools = await getWorkspaceToolsFromAgent(agent, proxyRequestContext);\n\n // Get workspaceId if agent has a workspace\n let workspaceId: string | undefined;\n try {\n const workspace = await agent.getWorkspace({ requestContext: proxyRequestContext });\n workspaceId = workspace?.id;\n } catch {\n // Agent doesn't have a workspace or can't access it\n }\n\n // Serialize requestContextSchema if present\n let serializedRequestContextSchema: string | undefined;\n if (agent.requestContextSchema) {\n try {\n serializedRequestContextSchema = stringify(zodToJsonSchema(agent.requestContextSchema));\n } catch (error) {\n mastra.getLogger().error('Error serializing requestContextSchema for agent', { agentName: agent.name, error });\n }\n }\n\n return {\n name: agent.name,\n description,\n instructions,\n tools: serializedAgentTools,\n agents: serializedAgentAgents,\n workflows: serializedAgentWorkflows,\n skills: serializedSkills,\n workspaceTools,\n workspaceId,\n inputProcessors: serializedInputProcessors,\n outputProcessors: serializedOutputProcessors,\n provider: llm?.getProvider(),\n modelId: llm?.getModelId(),\n modelVersion: model?.specificationVersion,\n modelList,\n defaultOptions,\n defaultGenerateOptionsLegacy,\n defaultStreamOptionsLegacy,\n requestContextSchema: serializedRequestContextSchema,\n source: (agent as any).source ?? 'code',\n ...(agent.toRawConfig()?.status\n ? { status: agent.toRawConfig()!.status as 'draft' | 'published' | 'archived' }\n : {}),\n };\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_AGENTS_ROUTE = createRoute({\n method: 'GET',\n path: '/agents',\n responseType: 'json',\n queryParamSchema: z.object({\n partial: z.string().optional(),\n }),\n responseSchema: listAgentsResponseSchema,\n summary: 'List all agents',\n description: 'Returns a list of all available agents in the system (both code-defined and stored)',\n tags: ['Agents'],\n requiresAuth: true,\n requiresPermission: 'agents:read',\n handler: async ({ mastra, requestContext, partial }) => {\n try {\n const codeAgents = mastra.listAgents();\n\n const isPartial = partial === 'true';\n\n // Apply stored config overrides to code-defined agents before serializing\n const editor = mastra.getEditor?.();\n const serializedCodeAgentsMap = await Promise.all(\n Object.entries(codeAgents).map(async ([id, agent]) => {\n let mergedAgent = agent;\n if (editor) {\n try {\n mergedAgent = await editor.agent.applyStoredOverrides(agent);\n } catch {\n // If overrides fail, use the original code agent\n }\n }\n return formatAgentList({ id, mastra, agent: mergedAgent, requestContext, partial: isPartial });\n }),\n );\n\n const serializedAgents = serializedCodeAgentsMap.reduce<Record<string, (typeof serializedCodeAgentsMap)[number]>>(\n (acc, { id, ...rest }) => {\n acc[id] = { id, ...rest };\n return acc;\n },\n {},\n );\n\n // Also fetch and include stored agents\n try {\n const editor = mastra.getEditor();\n\n let storedAgentsResult;\n try {\n storedAgentsResult = await editor?.agent.list();\n } catch (error) {\n console.error('Error listing stored agents:', error);\n storedAgentsResult = null;\n }\n\n if (storedAgentsResult?.agents) {\n // Process each agent individually to avoid one bad agent breaking the whole list\n for (const storedAgentConfig of storedAgentsResult.agents) {\n try {\n const agent = await editor?.agent.getById(storedAgentConfig.id, { status: 'draft' });\n if (!agent) continue;\n\n const serialized = await formatAgentList({\n id: agent.id,\n mastra,\n agent,\n requestContext,\n partial: isPartial,\n });\n\n // Don't overwrite code-defined agents with same ID\n if (!serializedAgents[serialized.id]) {\n serializedAgents[serialized.id] = serialized;\n }\n } catch (agentError) {\n // Log but continue with other agents\n const logger = mastra.getLogger();\n logger.warn('Failed to serialize stored agent', { agentId: storedAgentConfig.id, error: agentError });\n }\n }\n }\n } catch (storageError) {\n // Storage not configured or doesn't support agents - log and ignore\n const logger = mastra.getLogger();\n logger.debug('Could not fetch stored agents', { error: storageError });\n }\n\n return serializedAgents;\n } catch (error) {\n return handleError(error, 'Error getting agents');\n }\n },\n});\n\nexport const GET_AGENT_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n queryParamSchema: agentVersionQuerySchema,\n responseSchema: serializedAgentSchema,\n summary: 'Get agent by ID',\n description:\n 'Returns details for a specific agent including configuration, tools, and memory settings. Use query params to control which stored config version is used for overrides: ?status=draft (latest, default), ?status=published (active version), or ?versionId=<id> (specific version). Use either status or versionId, not both.',\n tags: ['Agents'],\n requiresAuth: true,\n requiresPermission: 'agents:read',\n handler: async ({ agentId, mastra, requestContext, status, versionId }) => {\n try {\n const versionOptions = versionId ? { versionId } : status ? { status } : undefined;\n const agent = await getAgentFromSystem({ mastra, agentId, versionOptions });\n const isStudio = false; // TODO: Get from context if needed\n const result = await formatAgent({\n mastra,\n agent,\n requestContext,\n isStudio,\n });\n return result;\n } catch (error) {\n return handleError(error, 'Error getting agent');\n }\n },\n});\n\n/**\n * POST /agents/:agentId/clone - Clone an agent to a stored agent\n */\nexport const CLONE_AGENT_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/clone',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: z.object({\n newId: z.string().optional().describe('ID for the cloned agent. If not provided, derived from agent ID.'),\n newName: z.string().optional().describe('Name for the cloned agent. Defaults to \"{name} (Clone)\".'),\n metadata: z.record(z.string(), z.unknown()).optional(),\n authorId: z.string().optional(),\n }),\n responseSchema: createStoredAgentResponseSchema,\n summary: 'Clone agent',\n description: 'Clones a code-defined or stored agent to a new stored agent in the database',\n tags: ['Agents'],\n requiresAuth: true,\n handler: async ({ agentId, mastra, newId, newName, metadata, authorId, requestContext }) => {\n try {\n const editor = mastra.getEditor();\n if (!editor) {\n return handleError(new Error('Editor is not configured on the Mastra instance'), 'Error cloning agent');\n }\n\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const cloneId = toSlug(newId || `${agentId}-clone`);\n\n const result = await editor.agent.clone(agent, {\n newId: cloneId,\n newName,\n metadata,\n authorId,\n requestContext,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error cloning agent');\n }\n },\n});\n\nexport const GENERATE_AGENT_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/generate',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: generateResponseSchema,\n summary: 'Generate agent response',\n description: 'Executes an agent with the provided messages and returns the complete response',\n tags: ['Agents'],\n requiresAuth: true,\n requiresPermission: 'agents:execute',\n handler: async ({ agentId, mastra, abortSignal, requestContext: serverRequestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const { messages, memory: memoryOption, requestContext: bodyRequestContext, ...rest } = params;\n\n validateBody({ messages });\n\n // Merge body's requestContext values into the server's RequestContext instance\n // Only set values that don't already exist on the server context to prevent\n // clients from overwriting server-populated auth/tenant values\n if (bodyRequestContext && typeof bodyRequestContext === 'object') {\n for (const [key, value] of Object.entries(bodyRequestContext)) {\n if (serverRequestContext.get(key) === undefined) {\n serverRequestContext.set(key, value);\n }\n }\n }\n\n // Authorization: apply context overrides to memory option if present\n let authorizedMemoryOption = memoryOption;\n if (memoryOption) {\n const clientThreadId = typeof memoryOption.thread === 'string' ? memoryOption.thread : memoryOption.thread?.id;\n\n const effectiveResourceId = getEffectiveResourceId(serverRequestContext, memoryOption.resource);\n const effectiveThreadId = getEffectiveThreadId(serverRequestContext, clientThreadId);\n\n // Validate thread ownership if accessing an existing thread\n if (effectiveThreadId && effectiveResourceId) {\n const memoryInstance = await agent.getMemory({ requestContext: serverRequestContext });\n if (memoryInstance) {\n const thread = await memoryInstance.getThreadById({ threadId: effectiveThreadId });\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n }\n\n // Build authorized memory option with effective values\n authorizedMemoryOption = {\n ...memoryOption,\n resource: effectiveResourceId ?? memoryOption.resource,\n thread: effectiveThreadId ?? memoryOption.thread,\n };\n }\n\n const { structuredOutput, ...restOptions } = rest;\n\n const options = {\n ...restOptions,\n requestContext: serverRequestContext,\n memory: authorizedMemoryOption,\n abortSignal,\n };\n\n const result = structuredOutput\n ? await agent.generate(messages, { ...options, structuredOutput })\n : await agent.generate(messages, options);\n\n return result;\n } catch (error) {\n return handleError(error, 'Error generating from agent');\n }\n },\n});\n\n// Legacy routes (deprecated)\nexport const GENERATE_LEGACY_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/generate-legacy',\n responseType: 'json' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionLegacyBodySchema,\n responseSchema: generateResponseSchema,\n summary: '[DEPRECATED] Generate with legacy format',\n description: 'Legacy endpoint for generating agent responses. Use /agents/:agentId/generate instead.',\n tags: ['Agents', 'Legacy'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, requestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const { messages, resourceId, resourceid, threadId, ...rest } = params;\n // Use resourceId if provided, fall back to resourceid (deprecated)\n const clientResourceId = resourceId ?? resourceid;\n\n // Authorization: context values take precedence over client-provided values\n const effectiveResourceId = getEffectiveResourceId(requestContext, clientResourceId);\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n\n validateBody({ messages });\n\n if ((effectiveThreadId && !effectiveResourceId) || (!effectiveThreadId && effectiveResourceId)) {\n throw new HTTPException(400, { message: 'Both threadId or resourceId must be provided' });\n }\n\n // Validate thread ownership if accessing an existing thread\n if (effectiveThreadId && effectiveResourceId) {\n const memory = await agent.getMemory({ requestContext });\n if (memory) {\n const thread = await memory.getThreadById({ threadId: effectiveThreadId });\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n }\n\n const result = await agent.generateLegacy(messages, {\n ...rest,\n abortSignal,\n resourceId: effectiveResourceId ?? '',\n threadId: effectiveThreadId ?? '',\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error generating from agent');\n }\n },\n});\n\nexport const STREAM_GENERATE_LEGACY_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/stream-legacy',\n responseType: 'datastream-response' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionLegacyBodySchema,\n responseSchema: streamResponseSchema,\n summary: '[DEPRECATED] Stream with legacy format',\n description: 'Legacy endpoint for streaming agent responses. Use /agents/:agentId/stream instead.',\n tags: ['Agents', 'Legacy'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, requestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const { messages, resourceId, resourceid, threadId, ...rest } = params;\n // Use resourceId if provided, fall back to resourceid (deprecated)\n const clientResourceId = resourceId ?? resourceid;\n\n // Authorization: context values take precedence over client-provided values\n const effectiveResourceId = getEffectiveResourceId(requestContext, clientResourceId);\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n\n validateBody({ messages });\n\n if ((effectiveThreadId && !effectiveResourceId) || (!effectiveThreadId && effectiveResourceId)) {\n throw new HTTPException(400, { message: 'Both threadId or resourceId must be provided' });\n }\n\n // Validate thread ownership if accessing an existing thread\n if (effectiveThreadId && effectiveResourceId) {\n const memory = await agent.getMemory({ requestContext });\n if (memory) {\n const thread = await memory.getThreadById({ threadId: effectiveThreadId });\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n }\n\n const streamResult = await agent.streamLegacy(messages, {\n ...rest,\n abortSignal,\n resourceId: effectiveResourceId ?? '',\n threadId: effectiveThreadId ?? '',\n });\n\n // Note: Do NOT set Transfer-Encoding header explicitly in the headers option.\n // Runtimes automatically add this header for streaming responses,\n // and setting it explicitly causes duplicate headers which break HTTP protocol.\n const streamResponse = rest.output\n ? streamResult.toTextStreamResponse()\n : streamResult.toDataStreamResponse({\n sendUsage: true,\n sendReasoning: true,\n getErrorMessage: (error: any) => {\n return `An error occurred while processing your request. ${error instanceof Error ? error.message : JSON.stringify(error)}`;\n },\n });\n\n return streamResponse;\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n },\n});\n\nexport const GET_PROVIDERS_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/providers',\n responseType: 'json',\n responseSchema: providersResponseSchema,\n summary: 'List AI providers',\n description: 'Returns a list of all configured AI model providers',\n tags: ['Agents'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const allProviders: Record<string, ProviderConfig> = {};\n\n for (const [id, provider] of Object.entries(PROVIDER_REGISTRY)) {\n allProviders[id] = provider;\n }\n\n if (mastra) {\n const customGateways = mastra.listGateways();\n if (customGateways) {\n for (const gateway of Object.values(customGateways)) {\n try {\n const customProviders = await gateway.fetchProviders();\n for (const [providerId, config] of Object.entries(customProviders)) {\n allProviders[providerId] = config;\n }\n } catch (error) {\n console.warn(`Failed to fetch providers from gateway \"${gateway.id}\":`, error);\n }\n }\n }\n }\n\n const providers = Object.entries(allProviders).map(([id, provider]) => {\n return {\n id,\n name: provider.name,\n label: (provider as any).label || provider.name,\n description: (provider as any).description || '',\n envVar: provider.apiKeyEnvVar,\n connected: isProviderConnected(id, allProviders),\n docUrl: provider.docUrl,\n models: [...provider.models],\n };\n });\n return { providers };\n } catch (error) {\n return handleError(error, 'Error fetching providers');\n }\n },\n});\n\nexport const GENERATE_AGENT_VNEXT_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/generate/vnext',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: generateResponseSchema,\n summary: 'Generate a response from an agent',\n description: 'Generate a response from an agent',\n tags: ['Agents'],\n requiresAuth: true,\n handler: GENERATE_AGENT_ROUTE.handler,\n});\n\nexport const STREAM_GENERATE_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream agent response',\n description: 'Executes an agent with the provided messages and streams the response in real-time',\n tags: ['Agents'],\n requiresAuth: true,\n requiresPermission: 'agents:execute',\n handler: async ({ mastra, agentId, abortSignal, requestContext: serverRequestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const { messages, memory: memoryOption, requestContext: bodyRequestContext, ...rest } = params;\n validateBody({ messages });\n\n // Merge body's requestContext values into the server's RequestContext instance\n // Only set values that don't already exist on the server context to prevent\n // clients from overwriting server-populated auth/tenant values\n if (bodyRequestContext && typeof bodyRequestContext === 'object') {\n for (const [key, value] of Object.entries(bodyRequestContext)) {\n if (serverRequestContext.get(key) === undefined) {\n serverRequestContext.set(key, value);\n }\n }\n }\n\n // Authorization: apply context overrides to memory option if present\n let authorizedMemoryOption = memoryOption;\n if (memoryOption) {\n const clientThreadId = typeof memoryOption.thread === 'string' ? memoryOption.thread : memoryOption.thread?.id;\n\n const effectiveResourceId = getEffectiveResourceId(serverRequestContext, memoryOption.resource);\n const effectiveThreadId = getEffectiveThreadId(serverRequestContext, clientThreadId);\n\n // Validate thread ownership if accessing an existing thread\n if (effectiveThreadId && effectiveResourceId) {\n const memoryInstance = await agent.getMemory({ requestContext: serverRequestContext });\n if (memoryInstance) {\n const thread = await memoryInstance.getThreadById({ threadId: effectiveThreadId });\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n }\n\n // Build authorized memory option with effective values\n authorizedMemoryOption = {\n ...memoryOption,\n resource: effectiveResourceId ?? memoryOption.resource,\n thread: effectiveThreadId ?? memoryOption.thread,\n };\n }\n\n const { structuredOutput, ...restOptions } = rest;\n\n const options = {\n ...restOptions,\n requestContext: serverRequestContext,\n memory: authorizedMemoryOption,\n abortSignal,\n };\n\n const streamResult = structuredOutput\n ? await agent.stream(messages, { ...options, structuredOutput })\n : await agent.stream(messages, options);\n\n return streamResult.fullStream;\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n },\n});\n\nexport const STREAM_GENERATE_VNEXT_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/stream/vnext',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream a response from an agent',\n description: '[DEPRECATED] This endpoint is deprecated. Please use /stream instead.',\n tags: ['Agents'],\n requiresAuth: true,\n deprecated: true,\n handler: STREAM_GENERATE_ROUTE.handler,\n});\n\nexport const APPROVE_TOOL_CALL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/approve-tool-call',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: approveToolCallBodySchema,\n responseSchema: toolCallResponseSchema,\n summary: 'Approve tool call',\n description: 'Approves a pending tool call and continues agent execution',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n if (!params.toolCallId) {\n throw new HTTPException(400, { message: 'Tool call id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const streamResult = await agent.approveToolCall({\n ...params,\n abortSignal,\n });\n\n return streamResult.fullStream;\n } catch (error) {\n return handleError(error, 'error approving tool call');\n }\n },\n});\n\nexport const DECLINE_TOOL_CALL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/decline-tool-call',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: declineToolCallBodySchema,\n responseSchema: toolCallResponseSchema,\n summary: 'Decline tool call',\n description: 'Declines a pending tool call and continues agent execution without executing the tool',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n if (!params.toolCallId) {\n throw new HTTPException(400, { message: 'Tool call id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const streamResult = await agent.declineToolCall({\n ...params,\n abortSignal,\n });\n\n return streamResult.fullStream;\n } catch (error) {\n return handleError(error, 'error declining tool call');\n }\n },\n});\n\nexport const APPROVE_TOOL_CALL_GENERATE_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/approve-tool-call-generate',\n responseType: 'json' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: approveToolCallBodySchema,\n responseSchema: generateResponseSchema,\n summary: 'Approve tool call (non-streaming)',\n description: 'Approves a pending tool call and returns the complete response',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n if (!params.toolCallId) {\n throw new HTTPException(400, { message: 'Tool call id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const result = await agent.approveToolCallGenerate({\n ...params,\n abortSignal,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'error approving tool call');\n }\n },\n});\n\nexport const DECLINE_TOOL_CALL_GENERATE_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/decline-tool-call-generate',\n responseType: 'json' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: declineToolCallBodySchema,\n responseSchema: generateResponseSchema,\n summary: 'Decline tool call (non-streaming)',\n description: 'Declines a pending tool call and returns the complete response',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n if (!params.toolCallId) {\n throw new HTTPException(400, { message: 'Tool call id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const result = await agent.declineToolCallGenerate({\n ...params,\n abortSignal,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'error declining tool call');\n }\n },\n});\n\nexport const STREAM_NETWORK_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/network',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream agent network',\n description: 'Executes an agent network with multiple agents and streams the response',\n tags: ['Agents'],\n requiresAuth: true,\n handler: async ({ mastra, messages, agentId, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n validateBody({ messages });\n\n const streamResult = await agent.network(messages, {\n ...params,\n });\n\n return streamResult;\n } catch (error) {\n return handleError(error, 'error streaming agent loop response');\n }\n },\n});\n\nexport const APPROVE_NETWORK_TOOL_CALL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/approve-network-tool-call',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: approveNetworkToolCallBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Approve network tool call',\n description: 'Approves a pending network tool call and continues network agent execution',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const streamResult = await agent.approveNetworkToolCall({\n ...params,\n });\n\n return streamResult;\n } catch (error) {\n return handleError(error, 'error approving network tool call');\n }\n },\n});\n\nexport const DECLINE_NETWORK_TOOL_CALL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/decline-network-tool-call',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: declineNetworkToolCallBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Decline network tool call',\n description: 'Declines a pending network tool call and continues network agent execution without executing the tool',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const streamResult = await agent.declineNetworkToolCall({\n ...params,\n });\n\n return streamResult;\n } catch (error) {\n return handleError(error, 'error declining network tool call');\n }\n },\n});\n\nexport const UPDATE_AGENT_MODEL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/model',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: updateAgentModelBodySchema,\n responseSchema: modelManagementResponseSchema,\n summary: 'Update agent model',\n description: 'Updates the AI model used by the agent',\n tags: ['Agents', 'Models'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, modelId, provider }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // Use the universal Mastra router format: provider/model\n const newModel = `${provider}/${modelId}`;\n\n // Update the model in-memory only (for temporary testing)\n // This allows users to test different models without persisting\n // To save permanently, users should use the Edit agent dialog\n agent.__updateModel({ model: newModel });\n\n return { message: 'Agent model updated' };\n } catch (error) {\n return handleError(error, 'error updating agent model');\n }\n },\n});\n\nexport const RESET_AGENT_MODEL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/model/reset',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n responseSchema: modelManagementResponseSchema,\n summary: 'Reset agent model',\n description: 'Resets the agent model to its original configuration',\n tags: ['Agents', 'Models'],\n requiresAuth: true,\n handler: async ({ mastra, agentId }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n agent.__resetToOriginalModel();\n\n return { message: 'Agent model reset to original' };\n } catch (error) {\n return handleError(error, 'error resetting agent model');\n }\n },\n});\n\nexport const REORDER_AGENT_MODEL_LIST_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/models/reorder',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: reorderAgentModelListBodySchema,\n responseSchema: modelManagementResponseSchema,\n summary: 'Reorder agent model list',\n description: 'Reorders the model list for agents with multiple model configurations',\n tags: ['Agents', 'Models'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, reorderedModelIds }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const modelList = await agent.getModelList();\n if (!modelList || modelList.length === 0) {\n throw new HTTPException(400, { message: 'Agent model list is not found or empty' });\n }\n\n agent.reorderModels(reorderedModelIds);\n\n return { message: 'Model list reordered' };\n } catch (error) {\n return handleError(error, 'error reordering model list');\n }\n },\n});\n\nexport const UPDATE_AGENT_MODEL_IN_MODEL_LIST_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/models/:modelConfigId',\n responseType: 'json',\n pathParamSchema: modelConfigIdPathParams,\n bodySchema: updateAgentModelInModelListBodySchema,\n responseSchema: modelManagementResponseSchema,\n summary: 'Update model in model list',\n description: 'Updates a specific model configuration in the agent model list',\n tags: ['Agents', 'Models'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, modelConfigId, model: bodyModel, maxRetries, enabled }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const modelList = await agent.getModelList();\n if (!modelList || modelList.length === 0) {\n throw new HTTPException(400, { message: 'Agent model list is not found or empty' });\n }\n\n const modelConfig = modelList.find(config => config.id === modelConfigId);\n if (!modelConfig) {\n throw new HTTPException(404, { message: `Model config with id ${modelConfigId} not found` });\n }\n\n const newModel =\n bodyModel?.modelId && bodyModel?.provider ? `${bodyModel.provider}/${bodyModel.modelId}` : modelConfig.model;\n\n const updated = {\n ...modelConfig,\n model: newModel,\n ...(maxRetries !== undefined ? { maxRetries } : {}),\n ...(enabled !== undefined ? { enabled } : {}),\n };\n\n agent.updateModelInModelList(updated);\n\n return { message: 'Model updated in model list' };\n } catch (error) {\n return handleError(error, 'error updating model in model list');\n }\n },\n});\n\nconst ENHANCE_SYSTEM_PROMPT_INSTRUCTIONS = `You are an expert system prompt engineer, specialized in analyzing and enhancing instructions to create clear, effective, and comprehensive system prompts. Your goal is to help users transform their basic instructions into well-structured system prompts that will guide AI behavior effectively.\n\nFollow these steps to analyze and enhance the instructions:\n\n1. ANALYSIS PHASE\n- Identify the core purpose and goals\n- Extract key constraints and requirements\n- Recognize domain-specific terminology and concepts\n- Note any implicit assumptions that should be made explicit\n\n2. PROMPT STRUCTURE\nCreate a system prompt with these components:\na) ROLE DEFINITION\n - Clear statement of the AI's role and purpose\n - Key responsibilities and scope\n - Primary stakeholders and users\nb) CORE CAPABILITIES\n - Main functions and abilities\n - Specific domain knowledge required\n - Tools and resources available\nc) BEHAVIORAL GUIDELINES\n - Communication style and tone\n - Decision-making framework\n - Error handling approach\n - Ethical considerations\nd) CONSTRAINTS & BOUNDARIES\n - Explicit limitations\n - Out-of-scope activities\n - Security and privacy considerations\ne) SUCCESS CRITERIA\n - Quality standards\n - Expected outcomes\n - Performance metrics\n\n3. QUALITY CHECKS\nEnsure the prompt is:\n- Clear and unambiguous\n- Comprehensive yet concise\n- Properly scoped\n- Technically accurate\n- Ethically sound\n\n4. OUTPUT FORMAT\nReturn your response as JSON with exactly these two fields:\n- explanation: A brief explanation of the changes you made and why\n- new_prompt: The complete enhanced system prompt as a single string\n\nRemember: A good system prompt should be specific enough to guide behavior but flexible enough to handle edge cases. Focus on creating prompts that are clear, actionable, and aligned with the intended use case.`;\n\n// Helper to find the first model with a connected provider\nasync function findConnectedModel(agent: Agent): Promise<Awaited<ReturnType<Agent['getModel']>> | null> {\n const modelList = await agent.getModelList();\n\n if (modelList && modelList.length > 0) {\n // Find the first enabled model with a connected provider\n for (const modelConfig of modelList) {\n if (modelConfig.enabled !== false) {\n const model = modelConfig.model;\n if (isProviderConnected(model.provider)) {\n return model;\n }\n }\n }\n return null;\n }\n\n // No model list, check the default model\n const defaultModel = await agent.getModel();\n if (isProviderConnected(defaultModel.provider)) {\n return defaultModel;\n }\n return null;\n}\n\ntype EnhanceInstructionsResponse = z.infer<typeof enhanceInstructionsResponseSchema>;\n\nexport const ENHANCE_INSTRUCTIONS_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/instructions/enhance',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: enhanceInstructionsBodySchema,\n responseSchema: enhanceInstructionsResponseSchema,\n summary: 'Enhance agent instructions',\n description: 'Uses AI to enhance or modify agent instructions based on user feedback',\n tags: ['Agents'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, instructions, comment }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // Find the first model with a connected provider (similar to how chat works)\n const model = await findConnectedModel(agent);\n if (!model) {\n throw new HTTPException(400, {\n message:\n 'No model with a configured API key found. Please set the required environment variable for your model provider.',\n });\n }\n\n const systemPromptAgent = new Agent({\n id: 'system-prompt-enhancer',\n name: 'system-prompt-enhancer',\n instructions: ENHANCE_SYSTEM_PROMPT_INSTRUCTIONS,\n model,\n });\n\n const result = await systemPromptAgent.generate(\n `We need to improve the system prompt.\nCurrent: ${instructions}\n${comment ? `User feedback: ${comment}` : ''}`,\n {\n structuredOutput: {\n schema: enhanceInstructionsResponseSchema,\n },\n },\n );\n\n return (await result.object) as unknown as EnhanceInstructionsResponse;\n } catch (error) {\n return handleError(error, 'Error enhancing instructions');\n }\n },\n});\n\nexport const STREAM_VNEXT_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/streamVNext',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream a response from an agent',\n description: '[DEPRECATED] This endpoint is deprecated. Please use /stream instead.',\n tags: ['Agents'],\n requiresAuth: true,\n deprecated: true,\n handler: async () => {\n throw new HTTPException(410, { message: 'This endpoint is deprecated. Please use /stream instead.' });\n },\n});\n\nexport const STREAM_UI_MESSAGE_VNEXT_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/stream/vnext/ui',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream UI messages from an agent',\n description:\n '[DEPRECATED] This endpoint is deprecated. Please use the @mastra/ai-sdk package for uiMessage transformations',\n tags: ['Agents'],\n requiresAuth: true,\n deprecated: true,\n handler: async () => {\n try {\n throw new MastraError({\n category: ErrorCategory.USER,\n domain: ErrorDomain.MASTRA_SERVER,\n id: 'DEPRECATED_ENDPOINT',\n text: 'This endpoint is deprecated. Please use the @mastra/ai-sdk package to for uiMessage transformations',\n });\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n },\n});\n\nexport const STREAM_UI_MESSAGE_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/stream/ui',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream UI messages from an agent',\n description:\n '[DEPRECATED] This endpoint is deprecated. Please use the @mastra/ai-sdk package for uiMessage transformations',\n tags: ['Agents'],\n requiresAuth: true,\n deprecated: true,\n handler: STREAM_UI_MESSAGE_VNEXT_DEPRECATED_ROUTE.handler,\n});\n\n// ============================================================================\n// Agent Skill Routes\n// ============================================================================\n\nexport const GET_AGENT_SKILL_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/skills/:skillName',\n responseType: 'json',\n pathParamSchema: agentSkillPathParams,\n responseSchema: getAgentSkillResponseSchema,\n summary: 'Get agent skill',\n description: 'Returns details for a specific skill available to the agent via its workspace',\n tags: ['Agents', 'Skills'],\n handler: async ({ mastra, agentId, skillName, requestContext }) => {\n try {\n const agent = agentId ? mastra.getAgentById(agentId) : null;\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n // Get the agent's workspace\n const workspace = await agent.getWorkspace({ requestContext });\n if (!workspace?.skills) {\n throw new HTTPException(404, { message: 'Agent does not have skills configured' });\n }\n\n // Get the skill from the workspace\n const skill = await workspace.skills.get(skillName);\n if (!skill) {\n throw new HTTPException(404, { message: `Skill \"${skillName}\" not found` });\n }\n\n return {\n name: skill.name,\n description: skill.description,\n license: skill.license,\n compatibility: skill.compatibility,\n metadata: skill.metadata,\n path: skill.path,\n instructions: skill.instructions,\n source: skill.source,\n references: skill.references,\n scripts: skill.scripts,\n assets: skill.assets,\n };\n } catch (error) {\n return handleError(error, 'Error getting agent skill');\n }\n },\n});\n","/**\n * Workspace tool constants and utilities.\n *\n * Inlined from @mastra/core/workspace to avoid import compatibility\n * issues with older core versions that don't have the workspace module.\n */\n\nexport const WORKSPACE_TOOLS_PREFIX = 'mastra_workspace' as const;\n\nexport const WORKSPACE_TOOLS = {\n FILESYSTEM: {\n READ_FILE: `${WORKSPACE_TOOLS_PREFIX}_read_file` as const,\n WRITE_FILE: `${WORKSPACE_TOOLS_PREFIX}_write_file` as const,\n EDIT_FILE: `${WORKSPACE_TOOLS_PREFIX}_edit_file` as const,\n LIST_FILES: `${WORKSPACE_TOOLS_PREFIX}_list_files` as const,\n DELETE: `${WORKSPACE_TOOLS_PREFIX}_delete` as const,\n FILE_STAT: `${WORKSPACE_TOOLS_PREFIX}_file_stat` as const,\n MKDIR: `${WORKSPACE_TOOLS_PREFIX}_mkdir` as const,\n GREP: `${WORKSPACE_TOOLS_PREFIX}_grep` as const,\n },\n SANDBOX: {\n EXECUTE_COMMAND: `${WORKSPACE_TOOLS_PREFIX}_execute_command` as const,\n },\n SEARCH: {\n SEARCH: `${WORKSPACE_TOOLS_PREFIX}_search` as const,\n INDEX: `${WORKSPACE_TOOLS_PREFIX}_index` as const,\n },\n} as const;\n\nexport type WorkspaceToolName =\n | (typeof WORKSPACE_TOOLS.FILESYSTEM)[keyof typeof WORKSPACE_TOOLS.FILESYSTEM]\n | (typeof WORKSPACE_TOOLS.SEARCH)[keyof typeof WORKSPACE_TOOLS.SEARCH]\n | (typeof WORKSPACE_TOOLS.SANDBOX)[keyof typeof WORKSPACE_TOOLS.SANDBOX];\n\n/**\n * Configuration for a single workspace tool.\n */\nexport interface WorkspaceToolConfig {\n enabled?: boolean;\n requireApproval?: boolean;\n requireReadBeforeWrite?: boolean;\n}\n\n/**\n * Configuration for workspace tools.\n */\nexport type WorkspaceToolsConfig = {\n enabled?: boolean;\n requireApproval?: boolean;\n} & Partial<Record<WorkspaceToolName, WorkspaceToolConfig>>;\n\n/**\n * Resolve the effective configuration for a workspace tool.\n * Inlined from @mastra/core/workspace for compatibility.\n */\nexport function resolveToolConfig(\n toolsConfig: WorkspaceToolsConfig | undefined,\n toolName: WorkspaceToolName,\n): { enabled: boolean; requireApproval: boolean; requireReadBeforeWrite?: boolean } {\n let enabled = true;\n let requireApproval = false;\n let requireReadBeforeWrite: boolean | undefined;\n\n if (toolsConfig) {\n if (toolsConfig.enabled !== undefined) {\n enabled = toolsConfig.enabled;\n }\n if (toolsConfig.requireApproval !== undefined) {\n requireApproval = toolsConfig.requireApproval;\n }\n\n const perToolConfig = toolsConfig[toolName];\n if (perToolConfig) {\n if (perToolConfig.enabled !== undefined) {\n enabled = perToolConfig.enabled;\n }\n if (perToolConfig.requireApproval !== undefined) {\n requireApproval = perToolConfig.requireApproval;\n }\n if (perToolConfig.requireReadBeforeWrite !== undefined) {\n requireReadBeforeWrite = perToolConfig.requireReadBeforeWrite;\n }\n }\n }\n\n return { enabled, requireApproval, requireReadBeforeWrite };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/system.ts"],"names":[],"mappings":";;;;;AAOO,IAAM,4BAA4B,WAAA,CAAY;AAAA,EACnD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,kBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,cAAA,EAAgB,4BAAA;AAAA,EAChB,OAAA,EAAS,+BAAA;AAAA,EACT,WAAA,EAAa,qFAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,IAAA,IAAI;AACF,MAAA,MAAM,gBAAA,GAAmB,QAAQ,GAAA,CAAI,oBAAA;AAErC,MAAA,IAAI,WAA4B,EAAC;AAEjC,MAAA,IAAI,gBAAA,EAAkB;AACpB,QAAA,IAAI;AACF,UAAA,MAAM,WAAA,GAAc,YAAA,CAAa,gBAAA,EAAkB,OAAO,CAAA;AAC1D,UAAA,QAAA,GAAW,IAAA,CAAK,MAAM,WAAW,CAAA;AAAA,QACnC,CAAA,CAAA,MAAQ;AACN,UAAA,QAAA,GAAW,EAAC;AAAA,QACd;AAAA,MACF;AAEA,MAAA,OAAO,EAAE,QAAA,EAAU,KAAA,EAAO,OAAA,CAAQ,GAAA,CAAI,UAAA,KAAe,MAAA,EAAQ,UAAA,EAAY,CAAC,CAAC,MAAA,CAAO,SAAA,EAAU,EAAE;AAAA,IAChG,SAAS,KAAA,EAAO;AACd,MAAA,OAAO,WAAA,CAAY,OAAO,+BAA+B,CAAA;AAAA,IAC3D;AAAA,EACF;AACF,CAAC","file":"chunk-OQCQTAI6.js","sourcesContent":["import { readFileSync } from 'node:fs';\n\nimport type { MastraPackage } from '../schemas/system';\nimport { systemPackagesResponseSchema } from '../schemas/system';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\n\nexport const GET_SYSTEM_PACKAGES_ROUTE = createRoute({\n method: 'GET',\n path: '/system/packages',\n responseType: 'json',\n responseSchema: systemPackagesResponseSchema,\n summary: 'Get installed Mastra packages',\n description: 'Returns a list of all installed Mastra packages and their versions from the project',\n tags: ['System'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const packagesFilePath = process.env.MASTRA_PACKAGES_FILE;\n\n let packages: MastraPackage[] = [];\n\n if (packagesFilePath) {\n try {\n const fileContent = readFileSync(packagesFilePath, 'utf-8');\n packages = JSON.parse(fileContent);\n } catch {\n packages = [];\n }\n }\n\n return { packages, isDev: process.env.MASTRA_DEV === 'true', cmsEnabled: !!mastra.getEditor() };\n } catch (error) {\n return handleError(error, 'Error getting system packages');\n }\n },\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/memory.ts"],"names":["__export","HTTPException","createRoute","getMemoryStatusQuerySchema","memoryStatusResponseSchema","handleError","getMemoryConfigQuerySchema","memoryConfigResponseSchema","getObservationalMemoryQuerySchema","getObservationalMemoryResponseSchema","awaitBufferStatusBodySchema","awaitBufferStatusResponseSchema","listThreadsQuerySchema","listThreadsResponseSchema","getEffectiveResourceId","threadIdPathParams","getThreadByIdQuerySchema","getThreadByIdResponseSchema","getEffectiveThreadId","validateBody","validateThreadOwnership","listMessagesQuerySchema","listMessagesResponseSchema","getWorkingMemoryQuerySchema","getWorkingMemoryResponseSchema","generateEmptyFromSchema","agentIdQuerySchema","saveMessagesBodySchema","saveMessagesResponseSchema","createThreadBodySchema","updateThreadBodySchema","deleteThreadQuerySchema","deleteThreadResponseSchema","cloneThreadBodySchema","cloneThreadResponseSchema","updateWorkingMemoryBodySchema","updateWorkingMemoryResponseSchema","deleteMessagesQuerySchema","deleteMessagesBodySchema","deleteMessagesResponseSchema","searchMemoryQuerySchema","searchMemoryResponseSchema","getMemoryStatusNetworkQuerySchema","listThreadsNetworkQuerySchema","getThreadByIdNetworkQuerySchema","listMessagesNetworkQuerySchema","saveMessagesNetworkQuerySchema","createThreadNetworkQuerySchema","updateThreadNetworkQuerySchema","deleteThreadNetworkQuerySchema","deleteMessagesNetworkQuerySchema"],"mappings":";;;;;;;;;;;AAAA,IAAA,cAAA,GAAA;AAAAA,0BAAA,CAAA,cAAA,EAAA;AAAA,EAAA,yBAAA,EAAA,MAAA,yBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,2BAAA,EAAA,MAAA,2BAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,6BAAA,EAAA,MAAA,6BAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,2BAAA,EAAA,MAAA,2BAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,+BAAA,EAAA,MAAA,+BAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,8BAAA,EAAA,MAAA,8BAAA;AAAA,EAAA,8BAAA,EAAA,MAAA,8BAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,EAAA,2BAAA,EAAA,MAAA,2BAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,0BAAA,EAAA,MAAA,0BAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,2BAAA,EAAA,MAAA,2BAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,2BAAA,EAAA,MAAA,2BAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,2BAAA,EAAA,MAAA,2BAAA;AAAA,EAAA,cAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AA6EO,SAAS,eAAe,OAAA,EAAkC;AAC/D,EAAA,IAAI,OAAO,OAAA,CAAQ,OAAA,KAAY,QAAA,EAAU;AACvC,IAAA,OAAO,OAAA,CAAQ,OAAA;AAAA,EACjB;AACA,EAAA,IAAI,OAAA,CAAQ,WAAW,OAAO,OAAA,CAAQ,YAAY,QAAA,IAAY,OAAA,IAAW,QAAQ,OAAA,EAAS;AACxF,IAAA,MAAM,QAAA,GAAW,QAAQ,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,CAAA,KAAK,CAAA,CAAE,SAAS,MAAM,CAAA;AAClE,IAAA,OAAO,UAAU,IAAA,IAAQ,EAAA;AAAA,EAC3B;AACA,EAAA,OAAO,EAAA;AACT;AAEA,eAAe,oBAAA,CAAqB;AAAA,EAClC,MAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAA2G;AACzG,EAAA,MAAM,MAAA,GAAS,OAAO,SAAA,EAAU;AAChC,EAAA,IAAI,KAAA;AACJ,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,IAAI;AACF,MAAA,KAAA,GAAQ,MAAA,CAAO,aAAa,OAAO,CAAA;AAAA,IACrC,SAAS,KAAA,EAAO;AACd,MAAA,MAAA,CAAO,KAAA,CAAM,+DAA+D,KAAK,CAAA;AAAA,IACnF;AAAA,EACF;AACA,EAAA,IAAI,OAAA,IAAW,CAAC,KAAA,EAAO;AACrB,IAAA,MAAA,CAAO,KAAA,CAAM,4DAAA,EAA8D,EAAE,OAAA,EAAS,CAAA;AACtF,IAAA,IAAI;AACF,MAAA,MAAM,WAAA,GAAe,MAAM,MAAA,CAAO,SAAA,IAAa,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,IAAM,IAAA;AAC1E,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,KAAA,GAAQ,WAAA;AAAA,MACV;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,MAAA,CAAO,KAAA,CAAM,8BAA8B,KAAK,CAAA;AAAA,IAClD;AAAA,EACF;AAEA,EAAA,IAAI,OAAA,IAAW,CAAC,KAAA,EAAO;AACrB,IAAA,MAAA,CAAO,KAAA,CAAM,8CAAA,EAAgD,EAAE,OAAA,EAAS,CAAA;AACxE,IAAA,MAAM,MAAA,GAAS,OAAO,UAAA,EAAW;AACjC,IAAA,IAAI,OAAO,IAAA,CAAK,MAAA,IAAU,EAAE,EAAE,MAAA,EAAQ;AACpC,MAAA,KAAA,MAAW,CAAC,CAAA,EAAG,EAAE,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAAG;AAC5C,QAAA,IAAI;AACF,UAAA,MAAM,YAAY,MAAM,EAAA,CAAG,UAAA,CAAW,EAAE,gBAAgB,CAAA;AAExD,UAAA,IAAI,SAAA,CAAU,OAAO,CAAA,EAAG;AACtB,YAAA,KAAA,GAAQ,UAAU,OAAO,CAAA;AACzB,YAAA;AAAA,UACF;AAAA,QACF,SAAS,KAAA,EAAO;AACd,UAAA,MAAA,CAAO,KAAA,CAAM,kCAAkC,KAAK,CAAA;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,MAAM,IAAIC,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,mBAAmB,CAAA;AAAA,IAC7D;AAAA,EACF;AAEA,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,OAAO,MAAM,OAAO,SAAA,CAAU;AAAA,MAC5B;AAAA,KACD,CAAA;AAAA,EACH;AACF;AAMA,SAAS,qBAAA,CAAsB,EAAE,MAAA,EAAO,EAA6D;AACnG,EAAA,OAAO,OAAO,UAAA,EAAW;AAC3B;AAKA,eAAe,mBAAA,CAAoB;AAAA,EACjC,MAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAwF;AACtF,EAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AAErB,EAAA,MAAM,MAAA,GAAS,OAAO,SAAA,EAAU;AAChC,EAAA,IAAI,KAAA,GAAsB,IAAA;AAG1B,EAAA,IAAI;AACF,IAAA,KAAA,GAAQ,MAAA,CAAO,aAAa,OAAO,CAAA;AAAA,EACrC,SAAS,KAAA,EAAO;AACd,IAAA,MAAA,CAAO,KAAA,CAAM,mCAAmC,KAAK,CAAA;AAAA,EACvD;AAGA,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAA,CAAO,KAAA,CAAM,4DAAA,EAA8D,EAAE,OAAA,EAAS,CAAA;AACtF,IAAA,IAAI;AACF,MAAA,MAAM,WAAA,GAAe,MAAM,MAAA,CAAO,SAAA,IAAa,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,IAAM,IAAA;AAC1E,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,KAAA,GAAQ,WAAA;AAAA,MACV;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,MAAA,CAAO,KAAA,CAAM,8BAA8B,KAAK,CAAA;AAAA,IAClD;AAAA,EACF;AAGA,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAA,CAAO,KAAA,CAAM,8CAAA,EAAgD,EAAE,OAAA,EAAS,CAAA;AACxE,IAAA,MAAM,MAAA,GAAS,OAAO,UAAA,EAAW;AACjC,IAAA,IAAI,OAAO,IAAA,CAAK,MAAA,IAAU,EAAE,EAAE,MAAA,EAAQ;AACpC,MAAA,KAAA,MAAW,CAAC,CAAA,EAAG,EAAE,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAAG;AAC5C,QAAA,IAAI;AACF,UAAA,MAAM,eAAe,MAAM,EAAA,CAAG,UAAA,CAAW,EAAE,gBAAgB,CAAA;AAC3D,UAAA,IAAI,YAAA,CAAa,OAAO,CAAA,EAAG;AACzB,YAAA,KAAA,GAAQ,aAAa,OAAO,CAAA;AAC5B,YAAA;AAAA,UACF;AAAA,QACF,SAAS,KAAA,EAAO;AACd,UAAA,MAAA,CAAO,KAAA,CAAM,kCAAkC,KAAK,CAAA;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;AAMA,eAAe,oBAAA,CACb,OACA,cAAA,EASQ;AACR,EAAA,IAAI;AAEF,IAAA,IAAI,OAAO,KAAA,CAAM,oBAAA,KAAyB,UAAA,EAAY;AACpD,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,MAAM,WAAA,GAAc,MAAM,KAAA,CAAM,oBAAA,CAAqB,wBAAwB,cAAc,CAAA;AAC3F,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA,OAAO,IAAA;AAAA,IACT;AAIA,IAAA,MAAM,iBAAA,GAAoB,OAAQ,WAAA,CAAoB,iBAAA,KAAsB,UAAA;AAE5E,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,MAAM,cAAA,GAAiB,MAAO,WAAA,CAAoB,iBAAA,CAAkB,cAAc,CAAA;AAClF,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,IAAA;AAAA,QACT,KAAA,EAAO,eAAe,KAAA,IAAS,UAAA;AAAA,QAC/B,kBAAkB,cAAA,CAAe,gBAAA;AAAA,QACjC,aAAA,EAAe,eAAe,WAAA,EAAa,aAAA;AAAA,QAC3C,iBAAA,EAAmB,eAAe,UAAA,EAAY,iBAAA;AAAA,QAC9C,gBAAA,EAAkB,eAAe,WAAA,EAAa,KAAA;AAAA,QAC9C,eAAA,EAAiB,eAAe,UAAA,EAAY;AAAA,OAC9C;AAAA,IACF;AAGA,IAAA,MAAM,eAAA,GAAmB,WAAA,CAAoB,MAAA,IAAU,EAAC;AACxD,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,IAAA;AAAA,MACT,KAAA,EAAO,gBAAgB,KAAA,IAAS,UAAA;AAAA,MAChC,kBAAkB,eAAA,CAAgB,gBAAA;AAAA,MAClC,aAAA,EAAe,gBAAgB,WAAA,EAAa,aAAA;AAAA,MAC5C,iBAAA,EAAmB,gBAAgB,UAAA,EAAY,iBAAA;AAAA,MAC/C,gBAAA,EAAkB,MAAA;AAAA,MAClB,eAAA,EAAiB;AAAA,KACnB;AAAA,EACF,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAKA,eAAe,WAAA,CACb,aAAA,EACA,UAAA,EACA,QAAA,EASQ;AACR,EAAA,IAAI;AACF,IAAA,MAAM,SAAS,MAAM,aAAA,CAAc,sBAAA,CAAuB,QAAA,IAAY,MAAM,UAAU,CAAA;AACtF,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAO,EAAE,WAAW,KAAA,EAAM;AAAA,IAC5B;AAEA,IAAA,OAAO;AAAA,MACL,SAAA,EAAW,IAAA;AAAA,MACX,YAAY,MAAA,CAAO,UAAA;AAAA,MACnB,cAAA,EAAgB,OAAO,cAAA,IAAkB,IAAA;AAAA,MACzC,YAAY,MAAA,CAAO,mBAAA;AAAA,MACnB,uBAAuB,MAAA,CAAO,qBAAA;AAAA,MAC9B,aAAa,MAAA,CAAO,WAAA;AAAA,MACpB,cAAc,MAAA,CAAO;AAAA,KACvB;AAAA,EACF,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAMO,IAAM,0BAA0BC,6BAAA,CAAY;AAAA,EACjD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,gBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,gBAAA,EAAkBC,4CAAA;AAAA,EAClB,cAAA,EAAgBC,4CAAA;AAAA,EAChB,OAAA,EAAS,mBAAA;AAAA,EACT,WAAA,EAAa,gGAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,SAAS,UAAA,EAAY,QAAA,EAAU,gBAAe,KAAM;AAC5E,IAAA,IAAI;AACF,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAE7E,MAAA,IAAI,MAAA,EAAQ;AAEV,QAAA,MAAM,QAAQ,MAAM,mBAAA,CAAoB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAC3E,QAAA,IAAI,QAAA;AAaJ,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,MAAM,QAAA,GAAW,MAAM,oBAAA,CAAqB,KAAA,EAAO,cAAc,CAAA;AACjE,UAAA,IAAI,QAAA,EAAU,WAAW,UAAA,EAAY;AAEnC,YAAA,MAAM,UAAA,GAAa,QAAA,CAAS,KAAA,KAAU,UAAA,GAAa,MAAA,GAAY,QAAA;AAE/D,YAAA,IAAI;AACF,cAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAO,OAAA,CAAQ,SAAS,QAAQ,CAAA;AAC1D,cAAA,IAAI,WAAA,EAAa;AACf,gBAAA,MAAM,MAAA,GAAS,MAAM,WAAA,CAAY,WAAA,EAAa,YAAY,UAAU,CAAA;AACpE,gBAAA,IAAI,MAAA,EAAQ;AACV,kBAAA,QAAA,GAAW;AAAA,oBACT,OAAA,EAAS,IAAA;AAAA,oBACT,GAAG,MAAA;AAAA;AAAA,oBAEH,cAAA,EAAgB,OAAO,cAAA,IAAkB;AAAA,mBAC3C;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,QAAA,GAAW,EAAE,OAAA,EAAS,IAAA,EAAM,SAAA,EAAW,KAAA,EAAM;AAAA,gBAC/C;AAAA,cACF;AAAA,YACF,CAAA,CAAA,MAAQ;AAEN,cAAA,QAAA,GAAW,EAAE,SAAS,IAAA,EAAK;AAAA,YAC7B;AAAA,UACF,CAAA,MAAA,IAAW,UAAU,OAAA,EAAS;AAC5B,YAAA,QAAA,GAAW,EAAE,SAAS,IAAA,EAAK;AAAA,UAC7B;AAAA,QACF;AAEA,QAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,mBAAA,EAAqB,QAAA,EAAS;AAAA,MACvD;AAGA,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,MAAM,OAAA,GAAU,qBAAA,CAAsB,EAAE,MAAA,EAAQ,CAAA;AAChD,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,OAAO,EAAE,QAAQ,IAAA,EAAK;AAAA,QACxB;AAAA,MACF;AAEA,MAAA,OAAO,EAAE,QAAQ,KAAA,EAAM;AAAA,IACzB,SAAS,KAAA,EAAO;AACd,MAAA,OAAOC,6BAAA,CAAY,OAAO,6BAA6B,CAAA;AAAA,IACzD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,0BAA0BH,6BAAA,CAAY;AAAA,EACjD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,gBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,gBAAA,EAAkBI,4CAAA;AAAA,EAClB,cAAA,EAAgBC,4CAAA;AAAA,EAChB,OAAA,EAAS,0BAAA;AAAA,EACT,WAAA,EAAa,6EAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAe,KAAM;AACtD,IAAA,IAAI;AACF,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAE7E,MAAA,IAAI,CAAC,MAAA,EAAQ;AAGX,QAAA,OAAO,EAAE,QAAQ,IAAA,EAAK;AAAA,MACxB;AAGA,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,qBAAA,CAAsB,EAAE,CAAA;AAG9C,MAAA,MAAM,QAAQ,MAAM,mBAAA,CAAoB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAC3E,MAAA,IAAI,QAAA;AAWJ,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,QAAA,GAAY,MAAM,oBAAA,CAAqB,KAAA,EAAO,cAAc,CAAA,IAAM,EAAE,SAAS,KAAA,EAAM;AAAA,MACrF;AAEA,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ;AAAA,UACN,GAAG,MAAA;AAAA,UACH,mBAAA,EAAqB;AAAA;AACvB,OACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOF,6BAAA,CAAY,OAAO,oCAAoC,CAAA;AAAA,IAChE;AAAA,EACF;AACF,CAAC;AAEM,IAAM,iCAAiCH,6BAAA,CAAY;AAAA,EACxD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,8BAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,gBAAA,EAAkBM,mDAAA;AAAA,EAClB,cAAA,EAAgBC,sDAAA;AAAA,EAChB,OAAA,EAAS,+BAAA;AAAA,EACT,WAAA,EAAa,4FAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,SAAS,UAAA,EAAY,QAAA,EAAU,gBAAe,KAAM;AAC5E,IAAA,IAAI;AAEF,MAAA,MAAM,QAAQ,MAAM,mBAAA,CAAoB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAC3E,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,MAAM,IAAIR,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,mBAAmB,CAAA;AAAA,MAC7D;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,oBAAA,CAAqB,KAAA,EAAO,cAAc,CAAA;AACjE,MAAA,IAAI,CAAC,UAAU,OAAA,EAAS;AACtB,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,sDAAsD,CAAA;AAAA,MAChG;AAIA,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAC7E,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,2CAA2C,CAAA;AAAA,MACrF;AAEA,MAAA,IAAI,WAAA;AACJ,MAAA,IAAI;AACF,QAAA,WAAA,GAAc,MAAM,MAAA,CAAO,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA;AAAA,MACtD,CAAA,CAAA,MAAQ;AACN,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,qCAAqC,CAAA;AAAA,MAC/E;AACA,MAAA,IAAI,CAAC,WAAA,EAAa;AAChB,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,qCAAqC,CAAA;AAAA,MAC/E;AAGA,MAAA,MAAM,mBAAA,GAAsB,UAAA;AAC5B,MAAA,IAAI,CAAC,mBAAA,EAAqB;AACxB,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,0DAA0D,CAAA;AAAA,MACpG;AAGA,MAAA,MAAM,UAAA,GAAa,QAAA,CAAS,KAAA,KAAU,UAAA,GAAa,OAAQ,QAAA,IAAY,IAAA;AAGvE,MAAA,MAAM,MAAA,GAAS,MAAM,WAAA,CAAY,sBAAA,CAAuB,YAAY,mBAAmB,CAAA;AAGvF,MAAA,MAAM,UAAU,MAAM,WAAA,CAAY,6BAAA,CAA8B,UAAA,EAAY,qBAAqB,CAAC,CAAA;AAElG,MAAA,OAAO;AAAA,QACL,QAAQ,MAAA,IAAU,IAAA;AAAA,QAClB,OAAA,EAAS,OAAA,CAAQ,MAAA,GAAS,CAAA,GAAI,OAAA,GAAU;AAAA,OAC1C;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOI,6BAAA,CAAY,OAAO,oCAAoC,CAAA;AAAA,IAChE;AAAA,EACF;AACF,CAAC;AAEM,IAAM,4BAA4BH,6BAAA,CAAY;AAAA,EACnD,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,4CAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,UAAA,EAAYQ,6CAAA;AAAA,EACZ,cAAA,EAAgBC,iDAAA;AAAA,EAChB,OAAA,EAAS,iDAAA;AAAA,EACT,WAAA,EACE,yHAAA;AAAA,EACF,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,SAAS,UAAA,EAAY,QAAA,EAAU,gBAAe,KAAqB;AAC3F,IAAA,IAAI;AACF,MAAA,MAAM,QAAQ,MAAM,mBAAA,CAAoB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAC3E,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,MAAM,IAAIV,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,mBAAmB,CAAA;AAAA,MAC7D;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,oBAAA,CAAqB,KAAA,EAAO,cAAc,CAAA;AACjE,MAAA,IAAI,CAAC,UAAU,OAAA,EAAS;AACtB,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,sDAAsD,CAAA;AAAA,MAChG;AAGA,MAAA,MAAM,WAAA,GAAc,MAAM,KAAA,CAAM,oBAAA,CAAqB,wBAAwB,cAAc,CAAA;AAC3F,MAAA,IAAI,CAAC,WAAA,IAAe,OAAQ,WAAA,CAAoB,qBAAqB,UAAA,EAAY;AAC/E,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,gDAAgD,CAAA;AAAA,MAC1F;AAGA,MAAA,MAAO,WAAA,CAAoB,gBAAA,CAAiB,QAAA,EAAU,UAAU,CAAA;AAGhE,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAC7E,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,2CAA2C,CAAA;AAAA,MACrF;AAEA,MAAA,IAAI,WAAA;AACJ,MAAA,IAAI;AACF,QAAA,WAAA,GAAc,MAAM,MAAA,CAAO,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA;AAAA,MACtD,CAAA,CAAA,MAAQ;AACN,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,qCAAqC,CAAA;AAAA,MAC/E;AACA,MAAA,IAAI,CAAC,WAAA,EAAa;AAChB,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,qCAAqC,CAAA;AAAA,MAC/E;AAEA,MAAA,MAAM,mBAAA,GAAsB,UAAA;AAC5B,MAAA,IAAI,CAAC,mBAAA,EAAqB;AACxB,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,0BAA0B,CAAA;AAAA,MACpE;AAEA,MAAA,MAAM,UAAA,GAAa,QAAA,CAAS,KAAA,KAAU,UAAA,GAAa,OAAQ,QAAA,IAAY,IAAA;AACvE,MAAA,MAAM,MAAA,GAAS,MAAM,WAAA,CAAY,sBAAA,CAAuB,YAAY,mBAAmB,CAAA;AAEvF,MAAA,OAAO,EAAE,MAAA,EAAQ,MAAA,IAAU,IAAA,EAAK;AAAA,IAClC,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,gCAAgC,KAAK,CAAA;AACnD,MAAA,OAAOI,6BAAA,CAAY,OAAO,8BAA8B,CAAA;AAAA,IAC1D;AAAA,EACF;AACF,CAAC;AAEM,IAAM,qBAAqBH,6BAAA,CAAY;AAAA,EAC5C,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,iBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,gBAAA,EAAkBU,wCAAA;AAAA,EAClB,cAAA,EAAgBC,2CAAA;AAAA,EAChB,OAAA,EAAS,qBAAA;AAAA,EACT,WAAA,EACE,yGAAA;AAAA,EACF,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,UAAA,EAAY,QAAA,EAAU,cAAA,EAAgB,IAAA,EAAM,OAAA,EAAS,OAAA,EAAQ,KAAM;AACpG,IAAA,IAAI;AAEF,MAAA,MAAM,mBAAA,GAAsBC,wCAAA,CAAuB,cAAA,EAAgB,UAAU,CAAA;AAG7E,MAAA,MAAM,MAAA,GACJ,mBAAA,IAAuB,QAAA,GAAW,EAAC,GAAI,MAAA;AAEzC,MAAA,IAAI,mBAAA,EAAqB;AACvB,QAAA,MAAA,CAAQ,UAAA,GAAa,mBAAA;AAAA,MACvB;AACA,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,MAAA,CAAQ,QAAA,GAAW,QAAA;AAAA,MACrB;AAEA,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAE7E,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,WAAA,CAAY;AAAA,UACtC,MAAA;AAAA,UACA,IAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,OAAO,MAAA;AAAA,MACT;AAGA,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,MAAM,OAAA,GAAU,qBAAA,CAAsB,EAAE,MAAA,EAAQ,CAAA;AAChD,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,MAAM,WAAA,GAAc,MAAM,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA;AACnD,UAAA,IAAI,WAAA,EAAa;AACf,YAAA,MAAM,MAAA,GAAS,MAAM,WAAA,CAAY,WAAA,CAAY;AAAA,cAC3C,MAAA;AAAA,cACA,IAAA;AAAA,cACA,OAAA;AAAA,cACA;AAAA,aACD,CAAA;AACD,YAAA,OAAO,MAAA;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAEA,MAAA,MAAM,IAAIb,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,6BAA6B,CAAA;AAAA,IACvE,SAAS,KAAA,EAAO;AACd,MAAA,OAAOI,6BAAA,CAAY,OAAO,uBAAuB,CAAA;AAAA,IACnD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,yBAAyBH,6BAAA,CAAY;AAAA,EAChD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,2BAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBa,oCAAA;AAAA,EACjB,gBAAA,EAAkBC,0CAAA;AAAA,EAClB,cAAA,EAAgBC,6CAAA;AAAA,EAChB,OAAA,EAAS,kBAAA;AAAA,EACT,WAAA,EAAa,oDAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,SAAS,QAAA,EAAU,UAAA,EAAY,gBAAe,KAAM;AAC5E,IAAA,IAAI;AACF,MAAA,MAAM,iBAAA,GAAoBC,sCAAA,CAAqB,cAAA,EAAgB,QAAQ,CAAA;AACvE,MAAA,MAAM,mBAAA,GAAsBJ,wCAAA,CAAuB,cAAA,EAAgB,UAAU,CAAA;AAC7E,MAAAK,8BAAA,CAAa,EAAE,QAAA,EAAU,iBAAA,EAAmB,CAAA;AAE5C,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAC7E,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAM,SAAS,MAAM,MAAA,CAAO,cAAc,EAAE,QAAA,EAAU,mBAAoB,CAAA;AAC1E,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,MAAM,IAAIlB,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,oBAAoB,CAAA;AAAA,QAC9D;AACA,QAAA,MAAMmB,yCAAA,CAAwB,QAAQ,mBAAmB,CAAA;AACzD,QAAA,OAAO,MAAA;AAAA,MACT;AAGA,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,MAAM,OAAA,GAAU,qBAAA,CAAsB,EAAE,MAAA,EAAQ,CAAA;AAChD,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,MAAM,WAAA,GAAc,MAAM,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA;AACnD,UAAA,IAAI,WAAA,EAAa;AACf,YAAA,MAAM,SAAS,MAAM,WAAA,CAAY,cAAc,EAAE,QAAA,EAAU,mBAAoB,CAAA;AAC/E,YAAA,IAAI,CAAC,MAAA,EAAQ;AACX,cAAA,MAAM,IAAInB,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,oBAAoB,CAAA;AAAA,YAC9D;AACA,YAAA,MAAMmB,yCAAA,CAAwB,QAAQ,mBAAmB,CAAA;AACzD,YAAA,OAAO,MAAA;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAEA,MAAA,MAAM,IAAInB,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,6BAA6B,CAAA;AAAA,IACvE,SAAS,KAAA,EAAO;AACd,MAAA,OAAOI,6BAAA,CAAY,OAAO,sBAAsB,CAAA;AAAA,IAClD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,sBAAsBH,6BAAA,CAAY;AAAA,EAC7C,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,oCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBa,oCAAA;AAAA,EACjB,gBAAA,EAAkBM,yCAAA;AAAA,EAClB,cAAA,EAAgBC,4CAAA;AAAA,EAChB,OAAA,EAAS,sBAAA;AAAA,EACT,WAAA,EAAa,+DAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,UAAU,OAAO;AAAA,IACf,MAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF,KAAW;AACT,IAAA,IAAI;AACF,MAAA,MAAM,iBAAA,GAAoBJ,sCAAA,CAAqB,cAAA,EAAgB,QAAQ,CAAA;AACvE,MAAA,MAAM,mBAAA,GAAsBJ,wCAAA,CAAuB,cAAA,EAAgB,UAAU,CAAA;AAC7E,MAAAK,8BAAA,CAAa,EAAE,QAAA,EAAU,iBAAA,EAAmB,CAAA;AAE5C,MAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,QAAA,MAAM,IAAIlB,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,qBAAqB,CAAA;AAAA,MAC/D;AAEA,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAE7E,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAM,SAAS,MAAM,MAAA,CAAO,cAAc,EAAE,QAAA,EAAU,mBAAmB,CAAA;AACzE,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,oBAAoB,CAAA;AAAA,QAC9D;AACA,QAAA,MAAMmB,yCAAA,CAAwB,QAAQ,mBAAmB,CAAA;AAEzD,QAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,MAAA,CAAO;AAAA,UACjC,QAAA,EAAU,iBAAA;AAAA,UACV,UAAA,EAAY,mBAAA;AAAA,UACZ,OAAA;AAAA,UACA,IAAA;AAAA,UACA,OAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,OAAO,MAAA;AAAA,MACT;AAGA,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,MAAM,OAAA,GAAU,qBAAA,CAAsB,EAAE,MAAA,EAAQ,CAAA;AAChD,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,MAAM,WAAA,GAAc,MAAM,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA;AACnD,UAAA,IAAI,WAAA,EAAa;AACf,YAAA,MAAM,SAAS,MAAM,WAAA,CAAY,cAAc,EAAE,QAAA,EAAU,mBAAmB,CAAA;AAC9E,YAAA,IAAI,CAAC,MAAA,EAAQ;AACX,cAAA,MAAM,IAAInB,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,oBAAoB,CAAA;AAAA,YAC9D;AACA,YAAA,MAAMmB,yCAAA,CAAwB,QAAQ,mBAAmB,CAAA;AAEzD,YAAA,MAAM,MAAA,GAAS,MAAM,WAAA,CAAY,YAAA,CAAa;AAAA,cAC5C,QAAA,EAAU,iBAAA;AAAA,cACV,UAAA,EAAY,mBAAA;AAAA,cACZ,OAAA;AAAA,cACA,IAAA;AAAA,cACA,OAAA;AAAA,cACA,OAAA;AAAA,cACA;AAAA,aACD,CAAA;AACD,YAAA,OAAO,MAAA;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAIA,MAAA,OAAO,EAAE,QAAA,EAAU,EAAC,EAAG,UAAA,EAAY,EAAC,EAAE;AAAA,IACxC,SAAS,KAAA,EAAO;AACd,MAAA,OAAOf,6BAAA,CAAY,OAAO,wBAAwB,CAAA;AAAA,IACpD;AAAA,EACF,CAAA;AACF,CAAC;AAEM,IAAM,2BAA2BH,6BAAA,CAAY;AAAA,EAClD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,0CAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBa,oCAAA;AAAA,EACjB,gBAAA,EAAkBQ,6CAAA;AAAA,EAClB,cAAA,EAAgBC,gDAAA;AAAA,EAChB,OAAA,EAAS,oBAAA;AAAA,EACT,WAAA,EAAa,+CAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,SAAS,QAAA,EAAU,UAAA,EAAY,cAAA,EAAgB,YAAA,EAAa,KAAM;AAC1F,IAAA,IAAI;AACF,MAAA,MAAM,iBAAA,GAAoBN,sCAAA,CAAqB,cAAA,EAAgB,QAAQ,CAAA;AACvE,MAAA,MAAM,mBAAA,GAAsBJ,wCAAA,CAAuB,cAAA,EAAgB,UAAU,CAAA;AAC7E,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAC7E,MAAAK,8BAAA,CAAa,EAAE,QAAA,EAAU,iBAAA,EAAmB,CAAA;AAC5C,MAAA,IAAI,CAAC,MAAA,EAAQ;AAGX,QAAA,OAAO,EAAE,eAAe,IAAA,EAAM,MAAA,EAAQ,UAAmB,qBAAA,EAAuB,IAAA,EAAM,cAAc,KAAA,EAAM;AAAA,MAC5G;AACA,MAAA,MAAM,SAAS,MAAM,MAAA,CAAO,cAAc,EAAE,QAAA,EAAU,mBAAoB,CAAA;AAC1E,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAMC,yCAAA,CAAwB,QAAQ,mBAAmB,CAAA;AAAA,MAC3D;AACA,MAAA,MAAM,YAAA,GAAe,CAAC,CAAC,MAAA;AACvB,MAAA,MAAM,WAAW,MAAM,MAAA,CAAO,wBAAA,CAAyB,EAAE,cAAc,CAAA;AACvE,MAAA,MAAM,qBAAA,GACJ,QAAA,EAAU,MAAA,KAAW,MAAA,GACjB,EAAE,GAAG,QAAA,EAAU,OAAA,EAAS,IAAA,CAAK,UAAUK,6BAAA,CAAwB,QAAA,CAAS,OAAO,CAAC,GAAE,GAClF,QAAA;AACN,MAAA,MAAM,aAAA,GAAgB,MAAM,MAAA,CAAO,gBAAA,CAAiB;AAAA,QAClD,QAAA,EAAU,iBAAA;AAAA,QACV,UAAA,EAAY,mBAAA;AAAA,QACZ;AAAA,OACD,CAAA;AACD,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,qBAAA,CAAsB,YAAA,IAAgB,EAAE,CAAA;AAC9D,MAAA,MAAM,SACJ,MAAA,CAAO,aAAA,EAAe,KAAA,KAAU,QAAA,IAAY,sBAAsB,UAAA,GAAa,QAAA;AACjF,MAAA,OAAO,EAAE,aAAA,EAAe,MAAA,EAAQ,qBAAA,EAAuB,YAAA,EAAa;AAAA,IACtE,SAAS,KAAA,EAAO;AACd,MAAA,OAAOpB,6BAAA,CAAY,OAAO,8BAA8B,CAAA;AAAA,IAC1D;AAAA,EACF;AACF,CAAC;AAEM,IAAM,sBAAsBH,6BAAA,CAAY;AAAA,EAC7C,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,uBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,gBAAA,EAAkBwB,oCAAA;AAAA,EAClB,UAAA,EAAYC,wCAAA;AAAA,EACZ,cAAA,EAAgBC,4CAAA;AAAA,EAChB,OAAA,EAAS,eAAA;AAAA,EACT,WAAA,EAAa,8BAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,OAAO,EAAE,QAAQ,OAAA,EAAS,QAAA,EAAU,gBAAe,KAAM;AAChE,IAAA,IAAI;AACF,MAAA,MAAM,mBAAA,GAAsBd,wCAAA,CAAuB,cAAA,EAAgB,MAAS,CAAA;AAC5E,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAE7E,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIb,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,6BAA6B,CAAA;AAAA,MACvE;AAEA,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,yBAAyB,CAAA;AAAA,MACnE;AAEA,MAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAC5B,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,+BAA+B,CAAA;AAAA,MACzE;AAGA,MAAA,MAAM,eAAA,GAAkB,SAAS,MAAA,CAAO,CAAA,OAAA,KAAW,CAAC,OAAA,CAAQ,QAAA,IAAY,CAAC,OAAA,CAAQ,UAAU,CAAA;AAC3F,MAAA,IAAI,eAAA,CAAgB,SAAS,CAAA,EAAG;AAC9B,QAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK;AAAA,UAC3B,OAAA,EAAS,CAAA,6DAAA,EAAgE,eAAA,CAAgB,MAAM,CAAA,oBAAA;AAAA,SAChG,CAAA;AAAA,MACH;AAGA,MAAA,IAAI,mBAAA,EAAqB;AACvB,QAAA,MAAM,uBAAuB,QAAA,CAAS,MAAA,CAAO,CAAA,OAAA,KAAW,OAAA,CAAQ,eAAe,mBAAmB,CAAA;AAClG,QAAA,IAAI,oBAAA,CAAqB,SAAS,CAAA,EAAG;AACnC,UAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK;AAAA,YAC3B,OAAA,EAAS;AAAA,WACV,CAAA;AAAA,QACH;AAGA,QAAA,MAAM,SAAA,GAAY,CAAC,GAAG,IAAI,IAAI,QAAA,CAAS,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,QAAQ,CAAA,CAAE,MAAA,CAAO,OAAO,CAAC,CAAC,CAAA;AAC5E,QAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,UAAA,MAAM,SAAS,MAAM,MAAA,CAAO,aAAA,CAAc,EAAE,UAAU,CAAA;AAGtD,UAAA,MAAMmB,yCAAA,CAAwB,QAAQ,mBAAmB,CAAA;AAAA,QAC3D;AAAA,MACF;AAEA,MAAA,MAAM,iBAAA,GAAoB,QAAA,CAAS,GAAA,CAAI,CAAA,OAAA,MAAY;AAAA,QACjD,GAAG,OAAA;AAAA,QACH,EAAA,EAAI,OAAA,CAAQ,EAAA,IAAM,MAAA,CAAO,UAAA,EAAW;AAAA,QACpC,SAAA,EAAW,QAAQ,SAAA,GAAY,IAAI,KAAK,OAAA,CAAQ,SAAS,CAAA,mBAAI,IAAI,IAAA;AAAK,OACxE,CAAE,CAAA;AAEF,MAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,YAAA,CAAa,EAAE,UAAU,iBAAA,EAA0B,YAAA,EAAc,EAAC,EAAG,CAAA;AACjG,MAAA,OAAO,MAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,OAAOf,6BAAA,CAAY,OAAO,uBAAuB,CAAA;AAAA,IACnD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,sBAAsBH,6BAAA,CAAY;AAAA,EAC7C,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,iBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,gBAAA,EAAkBwB,oCAAA;AAAA,EAClB,UAAA,EAAYG,wCAAA;AAAA,EACZ,cAAA,EAAgBZ,6CAAA;AAAA,EAChB,OAAA,EAAS,eAAA;AAAA,EACT,WAAA,EAAa,mCAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,YAAY,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,cAAA,EAAe,KAAM;AAC7F,IAAA,IAAI;AACF,MAAA,MAAM,mBAAA,GAAsBH,wCAAA,CAAuB,cAAA,EAAgB,UAAU,CAAA;AAC7E,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAE7E,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIb,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,6BAA6B,CAAA;AAAA,MACvE;AAEA,MAAAkB,8BAAA,CAAa,EAAE,UAAA,EAAY,mBAAA,EAAqB,CAAA;AAEhD,MAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,YAAA,CAAa;AAAA,QACvC,UAAA,EAAY,mBAAA;AAAA,QACZ,KAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACD,CAAA;AACD,MAAA,OAAO,MAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,OAAOd,6BAAA,CAAY,OAAO,+BAA+B,CAAA;AAAA,IAC3D;AAAA,EACF;AACF,CAAC;AAEM,IAAM,sBAAsBH,6BAAA,CAAY;AAAA,EAC7C,MAAA,EAAQ,OAAA;AAAA,EACR,IAAA,EAAM,2BAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBa,oCAAA;AAAA,EACjB,gBAAA,EAAkBW,oCAAA;AAAA,EAClB,UAAA,EAAYI,wCAAA;AAAA,EACZ,cAAA,EAAgBb,6CAAA;AAAA,EAChB,OAAA,EAAS,eAAA;AAAA,EACT,WAAA,EAAa,+BAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,UAAU,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY,cAAA,EAAe,KAAM;AAC7F,IAAA,IAAI;AACF,MAAA,MAAM,iBAAA,GAAoBC,sCAAA,CAAqB,cAAA,EAAgB,QAAQ,CAAA;AACvE,MAAA,MAAM,mBAAA,GAAsBJ,wCAAA,CAAuB,cAAA,EAAgB,UAAU,CAAA;AAC7E,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAE7E,MAAA,MAAM,SAAA,uBAAgB,IAAA,EAAK;AAE3B,MAAAK,8BAAA,CAAa,EAAE,QAAA,EAAU,iBAAA,EAAmB,CAAA;AAE5C,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIlB,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,6BAA6B,CAAA;AAAA,MACvE;AAEA,MAAA,MAAM,SAAS,MAAM,MAAA,CAAO,cAAc,EAAE,QAAA,EAAU,mBAAoB,CAAA;AAC1E,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,oBAAoB,CAAA;AAAA,MAC9D;AACA,MAAA,MAAMmB,yCAAA,CAAwB,QAAQ,mBAAmB,CAAA;AAEzD,MAAA,MAAM,aAAA,GAAgB;AAAA,QACpB,GAAG,MAAA;AAAA,QACH,KAAA,EAAO,SAAS,MAAA,CAAO,KAAA;AAAA,QACvB,QAAA,EAAU,YAAY,MAAA,CAAO,QAAA;AAAA;AAAA,QAE7B,UAAA,EAAY,mBAAA,IAAuB,UAAA,IAAc,MAAA,CAAO,UAAA;AAAA,QACxD,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB;AAAA,OACF;AAEA,MAAA,MAAM,SAAS,MAAM,MAAA,CAAO,WAAW,EAAE,MAAA,EAAQ,eAAe,CAAA;AAChE,MAAA,OAAO;AAAA,QACL,GAAG,MAAA;AAAA,QACH,UAAA,EAAY,OAAO,UAAA,IAAc;AAAA,OACnC;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOf,6BAAA,CAAY,OAAO,uBAAuB,CAAA;AAAA,IACnD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,sBAAsBH,6BAAA,CAAY;AAAA,EAC7C,MAAA,EAAQ,QAAA;AAAA,EACR,IAAA,EAAM,2BAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBa,oCAAA;AAAA,EACjB,gBAAA,EAAkBgB,yCAAA;AAAA,EAClB,cAAA,EAAgBC,4CAAA;AAAA,EAChB,OAAA,EAAS,eAAA;AAAA,EACT,WAAA,EAAa,+BAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,SAAS,QAAA,EAAU,UAAA,EAAY,gBAAe,KAAM;AAC5E,IAAA,IAAI;AACF,MAAA,MAAM,iBAAA,GAAoBd,sCAAA,CAAqB,cAAA,EAAgB,QAAQ,CAAA;AACvE,MAAA,MAAM,mBAAA,GAAsBJ,wCAAA,CAAuB,cAAA,EAAgB,UAAU,CAAA;AAC7E,MAAAK,8BAAA,CAAa,EAAE,QAAA,EAAU,iBAAA,EAAmB,CAAA;AAE5C,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAC7E,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIlB,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,6BAA6B,CAAA;AAAA,MACvE;AAEA,MAAA,MAAM,SAAS,MAAM,MAAA,CAAO,cAAc,EAAE,QAAA,EAAU,mBAAoB,CAAA;AAC1E,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,oBAAoB,CAAA;AAAA,MAC9D;AACA,MAAA,MAAMmB,yCAAA,CAAwB,QAAQ,mBAAmB,CAAA;AAEzD,MAAA,MAAM,MAAA,CAAO,aAAa,iBAAkB,CAAA;AAC5C,MAAA,OAAO,EAAE,QAAQ,gBAAA,EAAiB;AAAA,IACpC,SAAS,KAAA,EAAO;AACd,MAAA,OAAOf,6BAAA,CAAY,OAAO,uBAAuB,CAAA;AAAA,IACnD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,qBAAqBH,6BAAA,CAAY;AAAA,EAC5C,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,iCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBa,oCAAA;AAAA,EACjB,gBAAA,EAAkBW,oCAAA;AAAA,EAClB,UAAA,EAAYO,uCAAA;AAAA,EACZ,cAAA,EAAgBC,2CAAA;AAAA,EAChB,OAAA,EAAS,cAAA;AAAA,EACT,WAAA,EAAa,+DAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,QAAA,EAAU,WAAA,EAAa,UAAA,EAAY,KAAA,EAAO,QAAA,EAAU,OAAA,EAAS,cAAA,EAAe,KAAM;AACnH,IAAA,IAAI;AACF,MAAA,MAAM,iBAAA,GAAoBhB,sCAAA,CAAqB,cAAA,EAAgB,QAAQ,CAAA;AACvE,MAAA,MAAM,mBAAA,GAAsBJ,wCAAA,CAAuB,cAAA,EAAgB,UAAU,CAAA;AAC7E,MAAAK,8BAAA,CAAa,EAAE,QAAA,EAAU,iBAAA,EAAmB,CAAA;AAE5C,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAC7E,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIlB,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,6BAA6B,CAAA;AAAA,MACvE;AAGA,MAAA,MAAM,eAAe,MAAM,MAAA,CAAO,cAAc,EAAE,QAAA,EAAU,mBAAoB,CAAA;AAChF,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,2BAA2B,CAAA;AAAA,MACrE;AACA,MAAA,MAAMmB,yCAAA,CAAwB,cAAc,mBAAmB,CAAA;AAE/D,MAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,WAAA,CAAY;AAAA,QACtC,cAAA,EAAgB,iBAAA;AAAA,QAChB,WAAA;AAAA;AAAA,QAEA,UAAA,EAAY,mBAAA;AAAA,QACZ,KAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACD,CAAA;AAED,MAAA,OAAO,MAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,OAAOf,6BAAA,CAAY,OAAO,sBAAsB,CAAA;AAAA,IAClD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,8BAA8BH,6BAAA,CAAY;AAAA,EACrD,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,0CAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBa,oCAAA;AAAA,EACjB,gBAAA,EAAkBW,oCAAA;AAAA,EAClB,UAAA,EAAYS,+CAAA;AAAA,EACZ,cAAA,EAAgBC,mDAAA;AAAA,EAChB,OAAA,EAAS,uBAAA;AAAA,EACT,WAAA,EAAa,+CAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,UAAU,UAAA,EAAY,YAAA,EAAc,aAAA,EAAe,cAAA,EAAe,KAAM;AACzG,IAAA,IAAI;AACF,MAAA,MAAM,iBAAA,GAAoBlB,sCAAA,CAAqB,cAAA,EAAgB,QAAQ,CAAA;AACvE,MAAA,MAAM,mBAAA,GAAsBJ,wCAAA,CAAuB,cAAA,EAAgB,UAAU,CAAA;AAC7E,MAAAK,8BAAA,CAAa,EAAE,QAAA,EAAU,iBAAA,EAAmB,aAAA,EAAe,CAAA;AAC3D,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAC7E,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIlB,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,6BAA6B,CAAA;AAAA,MACvE;AACA,MAAA,MAAM,SAAS,MAAM,MAAA,CAAO,cAAc,EAAE,QAAA,EAAU,mBAAoB,CAAA;AAC1E,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,oBAAoB,CAAA;AAAA,MAC9D;AACA,MAAA,MAAMmB,yCAAA,CAAwB,QAAQ,mBAAmB,CAAA;AAEzD,MAAA,MAAM,OAAO,mBAAA,CAAoB;AAAA,QAC/B,QAAA,EAAU,iBAAA;AAAA,QACV,UAAA,EAAY,mBAAA;AAAA,QACZ,aAAA;AAAA,QACA;AAAA,OACD,CAAA;AACD,MAAA,OAAO,EAAE,SAAS,IAAA,EAAK;AAAA,IACzB,SAAS,KAAA,EAAO;AACd,MAAA,OAAOf,6BAAA,CAAY,OAAO,+BAA+B,CAAA;AAAA,IAC3D;AAAA,EACF;AACF,CAAC;AAEM,IAAM,wBAAwBH,6BAAA,CAAY;AAAA,EAC/C,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,yBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,gBAAA,EAAkBmC,2CAAA;AAAA,EAClB,UAAA,EAAYC,0CAAA;AAAA,EACZ,cAAA,EAAgBC,8CAAA;AAAA,EAChB,OAAA,EAAS,iBAAA;AAAA,EACT,WAAA,EAAa,uCAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,SAAS,UAAA,EAAY,UAAA,EAAY,gBAAe,KAAM;AAC9E,IAAA,IAAI;AACF,MAAA,MAAM,mBAAA,GAAsBzB,wCAAA,CAAuB,cAAA,EAAgB,UAAU,CAAA;AAE7E,MAAA,IAAI,UAAA,KAAe,MAAA,IAAa,UAAA,KAAe,IAAA,EAAM;AACnD,QAAA,MAAM,IAAIb,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,0BAA0B,CAAA;AAAA,MACpE;AAIA,MAAA,IAAI,aAAA;AAEJ,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA,EAAG;AAE7B,QAAA,aAAA,GAAgB,UAAA;AAAA,MAClB,CAAA,MAAA,IAAW,OAAO,UAAA,KAAe,QAAA,EAAU;AAEzC,QAAA,aAAA,GAAgB,CAAC,UAAU,CAAA;AAAA,MAC7B,CAAA,MAAO;AAEL,QAAA,aAAA,GAAgB,CAAC,UAAU,CAAA;AAAA,MAC7B;AAGA,MAAA,MAAM,SAAA,GAAY,cAAc,GAAA,CAAI,CAAA,EAAA,KAAO,OAAO,EAAA,KAAO,QAAA,GAAW,EAAA,GAAK,EAAA,CAAG,EAAG,CAAA;AAE/E,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAI7E,MAAA,IAAI,mBAAA,IAAuB,SAAA,CAAU,MAAA,GAAS,CAAA,EAAG;AAC/C,QAAA,MAAM,UAAU,MAAA,EAAQ,OAAA,IAAW,qBAAA,CAAsB,EAAE,QAAQ,CAAA;AACnE,QAAA,IAAI,CAAC,OAAA,EAAS;AACZ,UAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,qDAAqD,CAAA;AAAA,QAC/F;AACA,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA;AACnD,QAAA,IAAI,CAAC,WAAA,EAAa;AAChB,UAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,6BAA6B,CAAA;AAAA,QACvE;AAGA,QAAA,MAAM,EAAE,UAAS,GAAI,MAAM,YAAY,gBAAA,CAAiB,EAAE,UAAA,EAAY,SAAA,EAAW,CAAA;AAGjF,QAAA,MAAM,SAAA,GAAY,CAAC,GAAG,IAAI,IAAI,QAAA,CAAS,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,QAAQ,CAAA,CAAE,MAAA,CAAO,OAAO,CAAC,CAAC,CAAA;AAG5E,QAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,UAAA,MAAM,SAAS,MAAM,WAAA,CAAY,aAAA,CAAc,EAAE,UAAU,CAAA;AAC3D,UAAA,IAAI,MAAA,IAAU,MAAA,CAAO,UAAA,IAAc,MAAA,CAAO,eAAe,mBAAA,EAAqB;AAC5E,YAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK;AAAA,cAC3B,OAAA,EAAS;AAAA,aACV,CAAA;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAEA,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAM,MAAA,CAAO,eAAe,aAAa,CAAA;AAAA,MAC3C,CAAA,MAAA,IAAW,CAAC,OAAA,EAAS;AAEnB,QAAA,MAAM,OAAA,GAAU,qBAAA,CAAsB,EAAE,MAAA,EAAQ,CAAA;AAChD,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,MAAM,WAAA,GAAc,MAAM,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA;AACnD,UAAA,IAAI,WAAA,EAAa;AACf,YAAA,MAAM,WAAA,CAAY,eAAe,SAAS,CAAA;AAAA,UAC5C,CAAA,MAAO;AACL,YAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,6BAA6B,CAAA;AAAA,UACvE;AAAA,QACF,CAAA,MAAO;AACL,UAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,6BAA6B,CAAA;AAAA,QACvE;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,6BAA6B,CAAA;AAAA,MACvE;AAGA,MAAA,MAAM,QAAQ,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA,GAAI,WAAW,MAAA,GAAS,CAAA;AAE9D,MAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,KAAK,CAAA,QAAA,EAAW,KAAA,KAAU,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,qBAAA,CAAA,EAAwB;AAAA,IACpG,SAAS,KAAA,EAAO;AACd,MAAA,OAAOI,6BAAA,CAAY,OAAO,yBAAyB,CAAA;AAAA,IACrD;AAAA,EACF;AACF,CAAC;AAEM,IAAM,sBAAsBH,6BAAA,CAAY;AAAA,EAC7C,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,gBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,gBAAA,EAAkBsC,yCAAA;AAAA,EAClB,cAAA,EAAgBC,4CAAA;AAAA,EAChB,OAAA,EAAS,eAAA;AAAA,EACT,WAAA,EAAa,sDAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,WAAA,EAAa,UAAA,EAAY,QAAA,EAAU,KAAA,GAAQ,EAAA,EAAI,cAAA,EAAgB,YAAA,EAAa,KAAM;AACnH,IAAA,IAAI;AACF,MAAA,MAAM,mBAAA,GAAsB3B,wCAAA,CAAuB,cAAA,EAAgB,UAAU,CAAA;AAC7E,MAAA,MAAM,iBAAA,GAAoBI,sCAAA,CAAqB,cAAA,EAAgB,QAAQ,CAAA;AACvE,MAAAC,8BAAA,CAAa,EAAE,WAAA,EAAa,UAAA,EAAY,mBAAA,EAAqB,CAAA;AAE7D,MAAA,MAAM,SAAS,MAAM,oBAAA,CAAqB,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,CAAA;AAC7E,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAM,IAAIlB,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,6BAA6B,CAAA;AAAA,MACvE;AAGA,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,qBAAA,CAAsB,YAAA,IAAgB,EAAE,CAAA;AAC9D,MAAA,MAAM,iBAAA,GAAoB,CAAC,CAAC,MAAA,EAAQ,cAAA;AACpC,MAAA,MAAM,aAAA,GACJ,OAAO,MAAA,EAAQ,cAAA,KAAmB,WAAW,MAAA,EAAQ,cAAA,EAAgB,UAAU,QAAA,GAAW,IAAA;AAE5F,MAAA,MAAM,gBAAgC,EAAC;AAGvC,MAAA,IAAI,iBAAA,IAAqB,CAAC,aAAA,EAAe;AACvC,QAAA,MAAM,SAAS,MAAM,MAAA,CAAO,cAAc,EAAE,QAAA,EAAU,mBAAmB,CAAA;AACzE,QAAA,IAAI,CAAC,MAAA,EAAQ;AAEX,UAAA,OAAO;AAAA,YACL,SAAS,EAAC;AAAA,YACV,KAAA,EAAO,CAAA;AAAA,YACP,KAAA,EAAO,WAAA;AAAA,YACP,WAAA,EAAa,gBAAgB,UAAA,GAAa,QAAA;AAAA,YAC1C,UAAA,EAAY,oBAAoB,UAAA,GAAa;AAAA,WAC/C;AAAA,QACF;AACA,QAAA,MAAMmB,yCAAA,CAAwB,QAAQ,mBAAmB,CAAA;AAAA,MAC3D;AAGA,MAAA,IAAI,cAAA,GAAiB,iBAAA;AAGrB,MAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,QAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,OAAO,WAAA,CAAY;AAAA,UAC3C,MAAA,EAAQ,EAAE,UAAA,EAAY,mBAAA,EAAoB;AAAA,UAC1C,IAAA,EAAM,CAAA;AAAA,UACN,OAAA,EAAS,CAAA;AAAA,UACT,OAAA,EAAS,EAAE,KAAA,EAAO,WAAA,EAAa,WAAW,MAAA;AAAO,SAClD,CAAA;AAED,QAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,UAAA,OAAO;AAAA,YACL,SAAS,EAAC;AAAA,YACV,KAAA,EAAO,CAAA;AAAA,YACP,KAAA,EAAO,WAAA;AAAA,YACP,WAAA,EAAa,gBAAgB,UAAA,GAAa,QAAA;AAAA,YAC1C,UAAA,EAAY,oBAAoB,UAAA,GAAa;AAAA,WAC/C;AAAA,QACF;AAGA,QAAA,cAAA,GAAiB,OAAA,CAAQ,CAAC,CAAA,CAAG,EAAA;AAAA,MAC/B;AAEA,MAAA,MAAM,cACJ,OAAO,MAAA,CAAO,cAAA,KAAmB,CAAA,OAAA,CAAA,GAC7B,IACA,OAAO,MAAA,CAAO,cAAA,EAAgB,YAAA,KAAiB,WAC7C,MAAA,CAAO,cAAA,CAAe,eACtB,MAAA,CAAO,cAAA,EAAgB,aAAa,MAAA,IAAU,CAAA;AACtD,MAAA,MAAM,aACJ,OAAO,MAAA,CAAO,cAAA,KAAmB,CAAA,OAAA,CAAA,GAC7B,IACA,OAAO,MAAA,CAAO,cAAA,EAAgB,YAAA,KAAiB,WAC7C,MAAA,CAAO,cAAA,CAAe,eACtB,MAAA,CAAO,cAAA,EAAgB,aAAa,KAAA,IAAS,CAAA;AAErD,MAAA,IAAI,aAAA,IAAiB,OAAO,cAAA,EAAgB;AAC1C,QAAA,MAAA,CAAO,cAAA,GACL,OAAO,MAAA,CAAO,cAAA,KAAmB,CAAA,OAAA,CAAA;AAAA;AAAA;AAAA,UAG7B,EAAE,YAAA,EAAc,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,OAAO,UAAA;AAAW,YAC9C,EAAE,GAAG,MAAA,CAAO,cAAA,EAAgB,cAAc,CAAA,EAAE;AAAA,MACpD;AAIA,MAAA,MAAM,YAAA,GAAe,MAAA,CAAO,qBAAA,CAAsB,MAAA,IAAU,EAAE,CAAA;AAC9D,MAAA,IAAI,CAAC,YAAA,CAAa,YAAA,IAAgB,CAAC,aAAa,cAAA,EAAgB;AAC9D,QAAA,OAAO,EAAE,OAAA,EAAS,IAAI,KAAA,EAAO,CAAA,EAAG,OAAO,WAAA,EAAY;AAAA,MACrD;AAEA,MAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,MAAA,CAAO;AAAA,QACjC,QAAA,EAAU,cAAA;AAAA,QACV,UAAA,EAAY,mBAAA;AAAA,QACZ,SAAS,YAAA,CAAa,YAAA;AAAA,QACtB,YAAA,EAAc,MAAA;AAAA,QACd,kBAAA,EAAoB,YAAA,CAAa,cAAA,IAAkB,WAAA,GAAc,WAAA,GAAc;AAAA,OAChF,CAAA;AAID,MAAA,MAAM,YAAY,KAAA,CAAM,IAAA;AAAA,QACtB,IAAI,GAAA,CAAI,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,KAAuB,CAAA,CAAE,QAAA,IAAY,cAAe,CAAA,CAAE,MAAA,CAAO,OAAO,CAAC;AAAA,OACpG;AACA,MAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,GAAA,CAAI,UAAU,GAAA,CAAI,CAAC,EAAA,KAAe,MAAA,CAAO,cAAc,EAAE,QAAA,EAAU,EAAA,EAAI,CAAC,CAAC,CAAA;AACvG,MAAA,MAAM,SAAA,GAAY,IAAI,GAAA,CAAI,OAAA,CAAQ,OAAO,OAAO,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,KAAK,CAAC,CAAA,CAAG,EAAA,EAAI,CAAE,CAAC,CAAC,CAAA;AAGvE,MAAA,KAAA,MAAW,GAAA,IAAO,OAAO,QAAA,EAAU;AACjC,QAAA,MAAM,OAAA,GAAU,eAAe,GAAG,CAAA;AAElC,QAAA,MAAM,WAAA,GAAc,IAAI,QAAA,IAAY,cAAA;AACpC,QAAA,MAAM,MAAA,GAAS,SAAA,CAAU,GAAA,CAAI,WAAW,CAAA;AAGxC,QAAA,MAAM,cAAA,GAAA,CAAkB,MAAM,MAAA,CAAO,MAAA,CAAO,EAAE,QAAA,EAAU,WAAA,EAAa,CAAA,EAAG,QAAA;AACxE,QAAA,MAAM,eAAe,cAAA,CAAe,SAAA,CAAU,OAAK,CAAA,CAAE,EAAA,KAAO,IAAI,EAAE,CAAA;AAElE,QAAA,MAAM,YAAA,GAA6B;AAAA,UACjC,IAAI,GAAA,CAAI,EAAA;AAAA,UACR,MAAM,GAAA,CAAI,IAAA;AAAA,UACV,OAAA;AAAA,UACA,WAAW,GAAA,CAAI,SAAA;AAAA,UACf,QAAA,EAAU,WAAA;AAAA,UACV,WAAA,EAAa,QAAQ,KAAA,IAAS;AAAA,SAChC;AAEA,QAAA,IAAI,iBAAiB,EAAA,EAAI;AACvB,UAAA,YAAA,CAAa,OAAA,GAAU;AAAA,YACrB,MAAA,EAAQ,cAAA,CAAe,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,YAAA,GAAe,WAAW,CAAA,EAAG,YAAY,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,MAAM;AAAA,cAC5F,IAAI,CAAA,CAAE,EAAA;AAAA,cACN,MAAM,CAAA,CAAE,IAAA;AAAA,cACR,OAAA,EAAS,eAAe,CAAC,CAAA;AAAA,cACzB,SAAA,EAAW,CAAA,CAAE,SAAA,oBAAa,IAAI,IAAA;AAAK,aACrC,CAAE,CAAA;AAAA,YACF,KAAA,EAAO,cAAA,CAAe,KAAA,CAAM,YAAA,GAAe,CAAA,EAAG,eAAe,UAAA,GAAa,CAAC,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,MAAM;AAAA,cACrF,IAAI,CAAA,CAAE,EAAA;AAAA,cACN,MAAM,CAAA,CAAE,IAAA;AAAA,cACR,OAAA,EAAS,eAAe,CAAC,CAAA;AAAA,cACzB,SAAA,EAAW,CAAA,CAAE,SAAA,oBAAa,IAAI,IAAA;AAAK,aACrC,CAAE;AAAA,WACJ;AAAA,QACF;AAEA,QAAA,aAAA,CAAc,KAAK,YAAY,CAAA;AAAA,MACjC;AAGA,MAAA,MAAM,aAAA,GAAgB,cACnB,IAAA,CAAK,CAAC,GAAG,CAAA,KAAM,IAAI,IAAA,CAAK,CAAA,CAAE,SAAS,CAAA,CAAE,SAAQ,GAAI,IAAI,IAAA,CAAK,CAAA,CAAE,SAAS,CAAA,CAAE,SAAS,CAAA,CAChF,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA;AAEjB,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,aAAA;AAAA,QACT,OAAO,aAAA,CAAc,MAAA;AAAA,QACrB,KAAA,EAAO,WAAA;AAAA,QACP,WAAA,EAAa,gBAAgB,UAAA,GAAa,QAAA;AAAA,QAC1C,UAAA,EAAY,oBAAoB,UAAA,GAAa;AAAA,OAC/C;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOf,6BAAA,CAAY,OAAO,wBAAwB,CAAA;AAAA,IACpD;AAAA,EACF;AACF,CAAC;AAGM,IAAM,kCAAkCH,6BAAA,CAAY;AAAA,EACzD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,wBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,gBAAA,EAAkBwC,mDAAA;AAAA,EAClB,cAAA,EAAgBtC,4CAAA;AAAA,EAChB,OAAA,EAAS,6BAAA;AAAA,EACT,WAAA,EAAa,iEAAA;AAAA,EACb,IAAA,EAAM,CAAC,kBAAkB,CAAA;AAAA,EACzB,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,uBAAA,CAAwB;AACnC,CAAC;AAEM,IAAM,6BAA6BF,6BAAA,CAAY;AAAA,EACpD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,yBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,gBAAA,EAAkByC,+CAAA;AAAA,EAClB,cAAA,EAAgB9B,2CAAA;AAAA,EAChB,OAAA,EAAS,+BAAA;AAAA,EACT,WAAA,EAAa,kEAAA;AAAA,EACb,IAAA,EAAM,CAAC,kBAAkB,CAAA;AAAA,EACzB,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,kBAAA,CAAmB;AAC9B,CAAC;AAEM,IAAM,iCAAiCX,6BAAA,CAAY;AAAA,EACxD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,mCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBa,oCAAA;AAAA,EACjB,gBAAA,EAAkB6B,iDAAA;AAAA,EAClB,cAAA,EAAgB3B,6CAAA;AAAA,EAChB,OAAA,EAAS,4BAAA;AAAA,EACT,WAAA,EAAa,oEAAA;AAAA,EACb,IAAA,EAAM,CAAC,kBAAkB,CAAA;AAAA,EACzB,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,sBAAA,CAAuB;AAClC,CAAC;AAEM,IAAM,8BAA8Bf,6BAAA,CAAY;AAAA,EACrD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,4CAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBa,oCAAA;AAAA,EACjB,gBAAA,EAAkB8B,gDAAA;AAAA,EAClB,cAAA,EAAgBvB,4CAAA;AAAA,EAChB,OAAA,EAAS,gCAAA;AAAA,EACT,WAAA,EAAa,+EAAA;AAAA,EACb,IAAA,EAAM,CAAC,kBAAkB,CAAA;AAAA,EACzB,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,mBAAA,CAAoB;AAC/B,CAAC;AAEM,IAAM,8BAA8BpB,6BAAA,CAAY;AAAA,EACrD,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,+BAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,gBAAA,EAAkB4C,gDAAA;AAAA,EAClB,UAAA,EAAYnB,wCAAA;AAAA,EACZ,cAAA,EAAgBC,4CAAA;AAAA,EAChB,OAAA,EAAS,yBAAA;AAAA,EACT,WAAA,EAAa,8CAAA;AAAA,EACb,IAAA,EAAM,CAAC,kBAAkB,CAAA;AAAA,EACzB,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,mBAAA,CAAoB;AAC/B,CAAC;AAEM,IAAM,8BAA8B1B,6BAAA,CAAY;AAAA,EACrD,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,yBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,gBAAA,EAAkB6C,gDAAA;AAAA,EAClB,UAAA,EAAYlB,wCAAA;AAAA,EACZ,cAAA,EAAgBZ,6CAAA;AAAA,EAChB,OAAA,EAAS,yBAAA;AAAA,EACT,WAAA,EAAa,mDAAA;AAAA,EACb,IAAA,EAAM,CAAC,kBAAkB,CAAA;AAAA,EACzB,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,mBAAA,CAAoB;AAC/B,CAAC;AAEM,IAAM,8BAA8Bf,6BAAA,CAAY;AAAA,EACrD,MAAA,EAAQ,OAAA;AAAA,EACR,IAAA,EAAM,mCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBa,oCAAA;AAAA,EACjB,gBAAA,EAAkBiC,gDAAA;AAAA,EAClB,UAAA,EAAYlB,wCAAA;AAAA,EACZ,cAAA,EAAgBb,6CAAA;AAAA,EAChB,OAAA,EAAS,yBAAA;AAAA,EACT,WAAA,EAAa,+CAAA;AAAA,EACb,IAAA,EAAM,CAAC,kBAAkB,CAAA;AAAA,EACzB,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,mBAAA,CAAoB;AAC/B,CAAC;AAEM,IAAM,8BAA8Bf,6BAAA,CAAY;AAAA,EACrD,MAAA,EAAQ,QAAA;AAAA,EACR,IAAA,EAAM,mCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBa,oCAAA;AAAA,EACjB,gBAAA,EAAkBkC,gDAAA;AAAA,EAClB,cAAA,EAAgBjB,4CAAA;AAAA,EAChB,OAAA,EAAS,yBAAA;AAAA,EACT,WAAA,EAAa,+CAAA;AAAA,EACb,IAAA,EAAM,CAAC,kBAAkB,CAAA;AAAA,EACzB,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,mBAAA,CAAoB;AAC/B,CAAC;AAEM,IAAM,gCAAgC9B,6BAAA,CAAY;AAAA,EACvD,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,iCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,gBAAA,EAAkBgD,kDAAA;AAAA,EAClB,UAAA,EAAYZ,0CAAA;AAAA,EACZ,cAAA,EAAgBC,8CAAA;AAAA,EAChB,OAAA,EAAS,2BAAA;AAAA,EACT,WAAA,EAAa,uDAAA;AAAA,EACb,IAAA,EAAM,CAAC,kBAAkB,CAAA;AAAA,EACzB,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,qBAAA,CAAsB;AACjC,CAAC","file":"chunk-OSZ6AAFG.cjs","sourcesContent":["import type { Agent, MastraDBMessage } from '@mastra/core/agent';\nimport type { RequestContext } from '@mastra/core/di';\nimport type { MastraMemory } from '@mastra/core/memory';\nimport type { MastraStorage, MemoryStorage } from '@mastra/core/storage';\nimport { generateEmptyFromSchema } from '@mastra/core/utils';\nimport { HTTPException } from '../http-exception';\nimport {\n threadIdPathParams,\n agentIdQuerySchema,\n getMemoryStatusQuerySchema,\n getMemoryConfigQuerySchema,\n listThreadsQuerySchema,\n getThreadByIdQuerySchema,\n listMessagesQuerySchema,\n getWorkingMemoryQuerySchema,\n deleteThreadQuerySchema,\n deleteMessagesQuerySchema,\n getMemoryStatusNetworkQuerySchema,\n listThreadsNetworkQuerySchema,\n getThreadByIdNetworkQuerySchema,\n listMessagesNetworkQuerySchema,\n saveMessagesNetworkQuerySchema,\n createThreadNetworkQuerySchema,\n updateThreadNetworkQuerySchema,\n deleteThreadNetworkQuerySchema,\n deleteMessagesNetworkQuerySchema,\n memoryStatusResponseSchema,\n memoryConfigResponseSchema,\n listThreadsResponseSchema,\n getThreadByIdResponseSchema,\n listMessagesResponseSchema,\n getWorkingMemoryResponseSchema,\n saveMessagesBodySchema,\n createThreadBodySchema,\n updateThreadBodySchema,\n updateWorkingMemoryBodySchema,\n deleteMessagesBodySchema,\n searchMemoryQuerySchema,\n saveMessagesResponseSchema,\n updateWorkingMemoryResponseSchema,\n searchMemoryResponseSchema,\n deleteThreadResponseSchema,\n deleteMessagesResponseSchema,\n cloneThreadBodySchema,\n cloneThreadResponseSchema,\n getObservationalMemoryQuerySchema,\n getObservationalMemoryResponseSchema,\n awaitBufferStatusBodySchema,\n awaitBufferStatusResponseSchema,\n} from '../schemas/memory';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\nimport { validateBody, getEffectiveResourceId, getEffectiveThreadId, validateThreadOwnership } from './utils';\n\ninterface MemoryContext extends Context {\n agentId?: string;\n resourceId?: string;\n threadId?: string;\n requestContext?: RequestContext;\n}\n\ninterface SearchResult {\n id: string;\n role: string;\n content: string;\n createdAt: Date;\n threadId?: string;\n threadTitle?: string;\n score?: number;\n context?: {\n before?: SearchResult[];\n after?: SearchResult[];\n };\n}\n\nexport function getTextContent(message: MastraDBMessage): string {\n if (typeof message.content === 'string') {\n return message.content;\n }\n if (message.content && typeof message.content === 'object' && 'parts' in message.content) {\n const textPart = message.content.parts.find(p => p.type === 'text');\n return textPart?.text || '';\n }\n return '';\n}\n\nasync function getMemoryFromContext({\n mastra,\n agentId,\n requestContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'requestContext'>): Promise<MastraMemory | null | undefined> {\n const logger = mastra.getLogger();\n let agent;\n if (agentId) {\n try {\n agent = mastra.getAgentById(agentId);\n } catch (error) {\n logger.debug('Error getting agent from mastra, searching agents for agent', error);\n }\n }\n if (agentId && !agent) {\n logger.debug('Agent not found in registered agents, trying stored agents', { agentId });\n try {\n const storedAgent = (await mastra.getEditor()?.agent.getById(agentId)) ?? null;\n if (storedAgent) {\n agent = storedAgent;\n }\n } catch (error) {\n logger.debug('Error getting stored agent', error);\n }\n }\n\n if (agentId && !agent) {\n logger.debug('Stored agent not found, searching sub-agents', { agentId });\n const agents = mastra.listAgents();\n if (Object.keys(agents || {}).length) {\n for (const [_, ag] of Object.entries(agents)) {\n try {\n const subAgents = await ag.listAgents({ requestContext });\n\n if (subAgents[agentId]) {\n agent = subAgents[agentId];\n break;\n }\n } catch (error) {\n logger.debug('Error getting agent from agent', error);\n }\n }\n }\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n }\n\n if (agent) {\n return await agent?.getMemory({\n requestContext,\n });\n }\n}\n\n/**\n * Gets the storage from context, used as a fallback when no agentId is provided.\n * This allows fetching threads/messages without knowing which agents were involved.\n */\nfunction getStorageFromContext({ mastra }: Pick<MemoryContext, 'mastra'>): MastraStorage | undefined {\n return mastra.getStorage();\n}\n\n/**\n * Gets the agent from context for OM processor detection.\n */\nasync function getAgentFromContext({\n mastra,\n agentId,\n requestContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'requestContext'>): Promise<Agent | null> {\n if (!agentId) return null;\n\n const logger = mastra.getLogger();\n let agent: Agent | null = null;\n\n // First try registered agents\n try {\n agent = mastra.getAgentById(agentId);\n } catch (error) {\n logger.debug('Error getting agent from mastra', error);\n }\n\n // Then try stored agents\n if (!agent) {\n logger.debug('Agent not found in registered agents, trying stored agents', { agentId });\n try {\n const storedAgent = (await mastra.getEditor()?.agent.getById(agentId)) ?? null;\n if (storedAgent) {\n agent = storedAgent;\n }\n } catch (error) {\n logger.debug('Error getting stored agent', error);\n }\n }\n\n // Finally search sub-agents with requestContext\n if (!agent) {\n logger.debug('Stored agent not found, searching sub-agents', { agentId });\n const agents = mastra.listAgents();\n if (Object.keys(agents || {}).length) {\n for (const [_, ag] of Object.entries(agents)) {\n try {\n const nestedAgents = await ag.listAgents({ requestContext });\n if (nestedAgents[agentId]) {\n agent = nestedAgents[agentId];\n break;\n }\n } catch (error) {\n logger.debug('Error getting agent from agent', error);\n }\n }\n }\n }\n\n return agent;\n}\n\n/**\n * Gets Observational Memory configuration from an agent's processors.\n * Returns null if OM is not enabled.\n */\nasync function getOMConfigFromAgent(\n agent: Agent,\n requestContext?: RequestContext,\n): Promise<{\n enabled: boolean;\n scope?: 'thread' | 'resource';\n shareTokenBudget?: boolean;\n messageTokens?: number | { min: number; max: number };\n observationTokens?: number | { min: number; max: number };\n observationModel?: string;\n reflectionModel?: string;\n} | null> {\n try {\n // Guard against older @mastra/core versions that don't have resolveProcessorById\n if (typeof agent.resolveProcessorById !== 'function') {\n return null;\n }\n const omProcessor = await agent.resolveProcessorById('observational-memory', requestContext);\n if (!omProcessor) {\n return null;\n }\n\n // Use getResolvedConfig if available (properly resolves model names)\n // Fall back to .config for backwards compatibility\n const hasResolvedConfig = typeof (omProcessor as any).getResolvedConfig === 'function';\n\n if (hasResolvedConfig) {\n const resolvedConfig = await (omProcessor as any).getResolvedConfig(requestContext);\n return {\n enabled: true,\n scope: resolvedConfig.scope || 'resource',\n shareTokenBudget: resolvedConfig.shareTokenBudget,\n messageTokens: resolvedConfig.observation?.messageTokens,\n observationTokens: resolvedConfig.reflection?.observationTokens,\n observationModel: resolvedConfig.observation?.model,\n reflectionModel: resolvedConfig.reflection?.model,\n };\n }\n\n // Fallback for older processor versions\n const processorConfig = (omProcessor as any).config || {};\n return {\n enabled: true,\n scope: processorConfig.scope || 'resource',\n shareTokenBudget: processorConfig.shareTokenBudget,\n messageTokens: processorConfig.observation?.messageTokens,\n observationTokens: processorConfig.reflection?.observationTokens,\n observationModel: undefined,\n reflectionModel: undefined,\n };\n } catch {\n return null;\n }\n}\n\n/**\n * Gets Observational Memory status for a specific resource/thread.\n */\nasync function getOMStatus(\n memoryStorage: MemoryStorage,\n resourceId: string,\n threadId?: string,\n): Promise<{\n hasRecord: boolean;\n originType?: string;\n lastObservedAt?: Date | null;\n tokenCount?: number;\n observationTokenCount?: number;\n isObserving?: boolean;\n isReflecting?: boolean;\n} | null> {\n try {\n const record = await memoryStorage.getObservationalMemory(threadId ?? null, resourceId);\n if (!record) {\n return { hasRecord: false };\n }\n\n return {\n hasRecord: true,\n originType: record.originType,\n lastObservedAt: record.lastObservedAt ?? null,\n tokenCount: record.totalTokensObserved,\n observationTokenCount: record.observationTokenCount,\n isObserving: record.isObserving,\n isReflecting: record.isReflecting,\n };\n } catch {\n return null;\n }\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const GET_MEMORY_STATUS_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/status',\n responseType: 'json',\n queryParamSchema: getMemoryStatusQuerySchema,\n responseSchema: memoryStatusResponseSchema,\n summary: 'Get memory status',\n description: 'Returns the current status of the memory system including configuration and health information',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, resourceId, threadId, requestContext }) => {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n if (memory) {\n // Check for Observational Memory\n const agent = await getAgentFromContext({ mastra, agentId, requestContext });\n let omStatus:\n | {\n enabled: boolean;\n hasRecord?: boolean;\n originType?: string;\n lastObservedAt?: Date;\n tokenCount?: number;\n observationTokenCount?: number;\n isObserving?: boolean;\n isReflecting?: boolean;\n }\n | undefined;\n\n if (agent) {\n const omConfig = await getOMConfigFromAgent(agent, requestContext);\n if (omConfig?.enabled && resourceId) {\n // For resource-scoped OM, lookup by resourceId only (threadId=null)\n const omThreadId = omConfig.scope === 'resource' ? undefined : threadId;\n // Get OM status from the agent's memory storage (not mastra.getStorage())\n try {\n const memoryStore = await memory.storage.getStore('memory');\n if (memoryStore) {\n const status = await getOMStatus(memoryStore, resourceId, omThreadId);\n if (status) {\n omStatus = {\n enabled: true,\n ...status,\n // Convert null to undefined for schema compatibility\n lastObservedAt: status.lastObservedAt ?? undefined,\n };\n } else {\n omStatus = { enabled: true, hasRecord: false };\n }\n }\n } catch {\n // Storage not configured, just mark as enabled\n omStatus = { enabled: true };\n }\n } else if (omConfig?.enabled) {\n omStatus = { enabled: true };\n }\n }\n\n return { result: true, observationalMemory: omStatus };\n }\n\n // Only fallback to storage if no agentId was provided\n if (!agentId) {\n const storage = getStorageFromContext({ mastra });\n if (storage) {\n return { result: true };\n }\n }\n\n return { result: false };\n } catch (error) {\n return handleError(error, 'Error getting memory status');\n }\n },\n});\n\nexport const GET_MEMORY_CONFIG_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/config',\n responseType: 'json',\n queryParamSchema: getMemoryConfigQuerySchema,\n responseSchema: memoryConfigResponseSchema,\n summary: 'Get memory configuration',\n description: 'Returns the memory configuration for a specific agent or the system default',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, requestContext }) => {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n if (!memory) {\n // Return null config when memory is not configured (Issue #11765)\n // This allows the playground UI to gracefully handle agents without memory\n return { config: null };\n }\n\n // Get the merged configuration (defaults + custom)\n const config = memory.getMergedThreadConfig({});\n\n // Check for Observational Memory config\n const agent = await getAgentFromContext({ mastra, agentId, requestContext });\n let omConfig:\n | {\n enabled: boolean;\n scope?: 'thread' | 'resource';\n messageTokens?: number | { min: number; max: number };\n observationTokens?: number | { min: number; max: number };\n observationModel?: string;\n reflectionModel?: string;\n }\n | undefined;\n\n if (agent) {\n omConfig = (await getOMConfigFromAgent(agent, requestContext)) ?? { enabled: false };\n }\n\n return {\n config: {\n ...config,\n observationalMemory: omConfig,\n },\n };\n } catch (error) {\n return handleError(error, 'Error getting memory configuration');\n }\n },\n});\n\nexport const GET_OBSERVATIONAL_MEMORY_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/observational-memory',\n responseType: 'json',\n queryParamSchema: getObservationalMemoryQuerySchema,\n responseSchema: getObservationalMemoryResponseSchema,\n summary: 'Get observational memory data',\n description: 'Returns the current observational memory record and optional history for a resource/thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, resourceId, threadId, requestContext }) => {\n try {\n // Verify agent has OM enabled\n const agent = await getAgentFromContext({ mastra, agentId, requestContext });\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const omConfig = await getOMConfigFromAgent(agent, requestContext);\n if (!omConfig?.enabled) {\n throw new HTTPException(400, { message: 'Observational Memory is not enabled for this agent' });\n }\n\n // Get storage from the agent's memory (not mastra.getStorage())\n // This ensures we use the same storage the agent uses for OM\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not configured for this agent' });\n }\n\n let memoryStore: MemoryStorage | undefined;\n try {\n memoryStore = await memory.storage.getStore('memory');\n } catch {\n throw new HTTPException(400, { message: 'Memory storage is not initialized' });\n }\n if (!memoryStore) {\n throw new HTTPException(400, { message: 'Memory storage is not initialized' });\n }\n\n // Determine the resourceId to use\n const effectiveResourceId = resourceId;\n if (!effectiveResourceId) {\n throw new HTTPException(400, { message: 'resourceId is required for observational memory lookup' });\n }\n\n // For resource-scoped OM, lookup by resourceId only (threadId=null)\n const omThreadId = omConfig.scope === 'resource' ? null : (threadId ?? null);\n\n // Get current record\n const record = await memoryStore.getObservationalMemory(omThreadId, effectiveResourceId);\n\n // Get history (last 5 generations)\n const history = await memoryStore.getObservationalMemoryHistory(omThreadId, effectiveResourceId, 5);\n\n return {\n record: record ?? null,\n history: history.length > 0 ? history : undefined,\n };\n } catch (error) {\n return handleError(error, 'Error getting observational memory');\n }\n },\n});\n\nexport const AWAIT_BUFFER_STATUS_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/observational-memory/buffer-status',\n responseType: 'json',\n bodySchema: awaitBufferStatusBodySchema,\n responseSchema: awaitBufferStatusResponseSchema,\n summary: 'Await observational memory buffering completion',\n description:\n 'Blocks until any in-flight buffering operations complete for the given thread/resource, then returns the updated record',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, resourceId, threadId, requestContext }: MemoryContext) => {\n try {\n const agent = await getAgentFromContext({ mastra, agentId, requestContext });\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const omConfig = await getOMConfigFromAgent(agent, requestContext);\n if (!omConfig?.enabled) {\n throw new HTTPException(400, { message: 'Observational Memory is not enabled for this agent' });\n }\n\n // Resolve the OM processor to call waitForBuffering\n const omProcessor = await agent.resolveProcessorById('observational-memory', requestContext);\n if (!omProcessor || typeof (omProcessor as any).waitForBuffering !== 'function') {\n throw new HTTPException(400, { message: 'Observational Memory processor not available' });\n }\n\n // Block until buffering completes (30s timeout)\n await (omProcessor as any).waitForBuffering(threadId, resourceId);\n\n // After buffering, fetch the updated record\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not configured for this agent' });\n }\n\n let memoryStore: MemoryStorage | undefined;\n try {\n memoryStore = await memory.storage.getStore('memory');\n } catch {\n throw new HTTPException(400, { message: 'Memory storage is not initialized' });\n }\n if (!memoryStore) {\n throw new HTTPException(400, { message: 'Memory storage is not initialized' });\n }\n\n const effectiveResourceId = resourceId;\n if (!effectiveResourceId) {\n throw new HTTPException(400, { message: 'resourceId is required' });\n }\n\n const omThreadId = omConfig.scope === 'resource' ? null : (threadId ?? null);\n const record = await memoryStore.getObservationalMemory(omThreadId, effectiveResourceId);\n\n return { record: record ?? null };\n } catch (error) {\n console.error('Error awaiting buffer status', error);\n return handleError(error, 'Error awaiting buffer status');\n }\n },\n});\n\nexport const LIST_THREADS_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/threads',\n responseType: 'json',\n queryParamSchema: listThreadsQuerySchema,\n responseSchema: listThreadsResponseSchema,\n summary: 'List memory threads',\n description:\n 'Returns a paginated list of conversation threads with optional filtering by resource ID and/or metadata',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, resourceId, metadata, requestContext, page, perPage, orderBy }) => {\n try {\n // Use effective resourceId (context key takes precedence over client-provided value)\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n\n // Build filter object dynamically based on provided parameters\n const filter: { resourceId?: string; metadata?: Record<string, unknown> } | undefined =\n effectiveResourceId || metadata ? {} : undefined;\n\n if (effectiveResourceId) {\n filter!.resourceId = effectiveResourceId;\n }\n if (metadata) {\n filter!.metadata = metadata;\n }\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n if (memory) {\n const result = await memory.listThreads({\n filter,\n page,\n perPage,\n orderBy,\n });\n return result;\n }\n\n // Only fallback to storage if no agentId was provided\n if (!agentId) {\n const storage = getStorageFromContext({ mastra });\n if (storage) {\n const memoryStore = await storage.getStore('memory');\n if (memoryStore) {\n const result = await memoryStore.listThreads({\n filter,\n page,\n perPage,\n orderBy,\n });\n return result;\n }\n }\n }\n\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n } catch (error) {\n return handleError(error, 'Error listing threads');\n }\n },\n});\n\nexport const GET_THREAD_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/threads/:threadId',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: getThreadByIdQuerySchema,\n responseSchema: getThreadByIdResponseSchema,\n summary: 'Get thread by ID',\n description: 'Returns details for a specific conversation thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, threadId, resourceId, requestContext }) => {\n try {\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n validateBody({ threadId: effectiveThreadId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (memory) {\n const thread = await memory.getThreadById({ threadId: effectiveThreadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n return thread;\n }\n\n // Only fallback to storage if no agentId was provided\n if (!agentId) {\n const storage = getStorageFromContext({ mastra });\n if (storage) {\n const memoryStore = await storage.getStore('memory');\n if (memoryStore) {\n const thread = await memoryStore.getThreadById({ threadId: effectiveThreadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n return thread;\n }\n }\n }\n\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n } catch (error) {\n return handleError(error, 'Error getting thread');\n }\n },\n});\n\nexport const LIST_MESSAGES_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/threads/:threadId/messages',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: listMessagesQuerySchema,\n responseSchema: listMessagesResponseSchema,\n summary: 'List thread messages',\n description: 'Returns a paginated list of messages in a conversation thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: (async ({\n mastra,\n agentId,\n threadId,\n resourceId,\n perPage,\n page,\n orderBy,\n include,\n filter,\n requestContext,\n }: any) => {\n try {\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n validateBody({ threadId: effectiveThreadId });\n\n if (!effectiveThreadId) {\n throw new HTTPException(400, { message: 'No threadId found' });\n }\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n if (memory) {\n const thread = await memory.getThreadById({ threadId: effectiveThreadId });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n\n const result = await memory.recall({\n threadId: effectiveThreadId,\n resourceId: effectiveResourceId,\n perPage,\n page,\n orderBy,\n include,\n filter,\n });\n return result;\n }\n\n // Only fallback to storage if no agentId was provided\n if (!agentId) {\n const storage = getStorageFromContext({ mastra });\n if (storage) {\n const memoryStore = await storage.getStore('memory');\n if (memoryStore) {\n const thread = await memoryStore.getThreadById({ threadId: effectiveThreadId });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n\n const result = await memoryStore.listMessages({\n threadId: effectiveThreadId,\n resourceId: effectiveResourceId,\n perPage,\n page,\n orderBy,\n include,\n filter,\n });\n return result;\n }\n }\n }\n\n // Return empty messages when memory is not configured (Issue #11765)\n // This allows the playground UI to gracefully handle agents without memory\n return { messages: [], uiMessages: [] };\n } catch (error) {\n return handleError(error, 'Error getting messages');\n }\n }) as any,\n});\n\nexport const GET_WORKING_MEMORY_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/threads/:threadId/working-memory',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: getWorkingMemoryQuerySchema,\n responseSchema: getWorkingMemoryResponseSchema,\n summary: 'Get working memory',\n description: 'Returns the working memory state for a thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, threadId, resourceId, requestContext, memoryConfig }) => {\n try {\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n validateBody({ threadId: effectiveThreadId });\n if (!memory) {\n // Return null working memory when memory is not configured (Issue #11765)\n // This allows the playground UI to gracefully handle agents without memory\n return { workingMemory: null, source: 'thread' as const, workingMemoryTemplate: null, threadExists: false };\n }\n const thread = await memory.getThreadById({ threadId: effectiveThreadId! });\n if (thread) {\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n const threadExists = !!thread;\n const template = await memory.getWorkingMemoryTemplate({ memoryConfig });\n const workingMemoryTemplate =\n template?.format === 'json'\n ? { ...template, content: JSON.stringify(generateEmptyFromSchema(template.content)) }\n : template;\n const workingMemory = await memory.getWorkingMemory({\n threadId: effectiveThreadId!,\n resourceId: effectiveResourceId,\n memoryConfig,\n });\n const config = memory.getMergedThreadConfig(memoryConfig || {});\n const source: 'thread' | 'resource' =\n config.workingMemory?.scope !== 'thread' && effectiveResourceId ? 'resource' : 'thread';\n return { workingMemory, source, workingMemoryTemplate, threadExists };\n } catch (error) {\n return handleError(error, 'Error getting working memory');\n }\n },\n});\n\nexport const SAVE_MESSAGES_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/save-messages',\n responseType: 'json',\n queryParamSchema: agentIdQuerySchema,\n bodySchema: saveMessagesBodySchema,\n responseSchema: saveMessagesResponseSchema,\n summary: 'Save messages',\n description: 'Saves new messages to memory',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, messages, requestContext }) => {\n try {\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n if (!messages) {\n throw new HTTPException(400, { message: 'Messages are required' });\n }\n\n if (!Array.isArray(messages)) {\n throw new HTTPException(400, { message: 'Messages should be an array' });\n }\n\n // Validate that all messages have threadId and resourceId\n const invalidMessages = messages.filter(message => !message.threadId || !message.resourceId);\n if (invalidMessages.length > 0) {\n throw new HTTPException(400, {\n message: `All messages must have threadId and resourceId fields. Found ${invalidMessages.length} invalid message(s).`,\n });\n }\n\n // If effectiveResourceId is set, validate all messages belong to this resource\n if (effectiveResourceId) {\n const unauthorizedMessages = messages.filter(message => message.resourceId !== effectiveResourceId);\n if (unauthorizedMessages.length > 0) {\n throw new HTTPException(403, {\n message: 'Access denied: cannot save messages for a different resource',\n });\n }\n\n // Validate that all threads belong to this resource (prevents cross-resource data pollution)\n const threadIds = [...new Set(messages.map(m => m.threadId).filter(Boolean))] as string[];\n for (const threadId of threadIds) {\n const thread = await memory.getThreadById({ threadId });\n // Thread may not exist yet (will be created on first message save), which is allowed\n // But if it exists, it must belong to the same resource\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n }\n\n const processedMessages = messages.map(message => ({\n ...message,\n id: message.id || memory.generateId(),\n createdAt: message.createdAt ? new Date(message.createdAt) : new Date(),\n }));\n\n const result = await memory.saveMessages({ messages: processedMessages as any, memoryConfig: {} });\n return result;\n } catch (error) {\n return handleError(error, 'Error saving messages');\n }\n },\n});\n\nexport const CREATE_THREAD_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/threads',\n responseType: 'json',\n queryParamSchema: agentIdQuerySchema,\n bodySchema: createThreadBodySchema,\n responseSchema: getThreadByIdResponseSchema,\n summary: 'Create thread',\n description: 'Creates a new conversation thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, resourceId, title, metadata, threadId, requestContext }) => {\n try {\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n validateBody({ resourceId: effectiveResourceId });\n\n const result = await memory.createThread({\n resourceId: effectiveResourceId!,\n title,\n metadata,\n threadId,\n });\n return result;\n } catch (error) {\n return handleError(error, 'Error saving thread to memory');\n }\n },\n});\n\nexport const UPDATE_THREAD_ROUTE = createRoute({\n method: 'PATCH',\n path: '/memory/threads/:threadId',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: agentIdQuerySchema,\n bodySchema: updateThreadBodySchema,\n responseSchema: getThreadByIdResponseSchema,\n summary: 'Update thread',\n description: 'Updates a conversation thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, threadId, title, metadata, resourceId, requestContext }) => {\n try {\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n const updatedAt = new Date();\n\n validateBody({ threadId: effectiveThreadId });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n const thread = await memory.getThreadById({ threadId: effectiveThreadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n\n const updatedThread = {\n ...thread,\n title: title || thread.title,\n metadata: metadata || thread.metadata,\n // Don't allow changing resourceId if effectiveResourceId is set (prevents reassigning threads)\n resourceId: effectiveResourceId || resourceId || thread.resourceId,\n createdAt: thread.createdAt,\n updatedAt,\n };\n\n const result = await memory.saveThread({ thread: updatedThread });\n return {\n ...result,\n resourceId: result.resourceId ?? null,\n };\n } catch (error) {\n return handleError(error, 'Error updating thread');\n }\n },\n});\n\nexport const DELETE_THREAD_ROUTE = createRoute({\n method: 'DELETE',\n path: '/memory/threads/:threadId',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: deleteThreadQuerySchema,\n responseSchema: deleteThreadResponseSchema,\n summary: 'Delete thread',\n description: 'Deletes a conversation thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, threadId, resourceId, requestContext }) => {\n try {\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n validateBody({ threadId: effectiveThreadId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n const thread = await memory.getThreadById({ threadId: effectiveThreadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n\n await memory.deleteThread(effectiveThreadId!);\n return { result: 'Thread deleted' };\n } catch (error) {\n return handleError(error, 'Error deleting thread');\n }\n },\n});\n\nexport const CLONE_THREAD_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/threads/:threadId/clone',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: agentIdQuerySchema,\n bodySchema: cloneThreadBodySchema,\n responseSchema: cloneThreadResponseSchema,\n summary: 'Clone thread',\n description: 'Creates a copy of a conversation thread with all its messages',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, threadId, newThreadId, resourceId, title, metadata, options, requestContext }) => {\n try {\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n validateBody({ threadId: effectiveThreadId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n // Validate source thread ownership\n const sourceThread = await memory.getThreadById({ threadId: effectiveThreadId! });\n if (!sourceThread) {\n throw new HTTPException(404, { message: 'Source thread not found' });\n }\n await validateThreadOwnership(sourceThread, effectiveResourceId);\n\n const result = await memory.cloneThread({\n sourceThreadId: effectiveThreadId!,\n newThreadId,\n // Use effective resourceId for the cloned thread\n resourceId: effectiveResourceId,\n title,\n metadata,\n options,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error cloning thread');\n }\n },\n});\n\nexport const UPDATE_WORKING_MEMORY_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/threads/:threadId/working-memory',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: agentIdQuerySchema,\n bodySchema: updateWorkingMemoryBodySchema,\n responseSchema: updateWorkingMemoryResponseSchema,\n summary: 'Update working memory',\n description: 'Updates the working memory state for a thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, threadId, resourceId, memoryConfig, workingMemory, requestContext }) => {\n try {\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n validateBody({ threadId: effectiveThreadId, workingMemory });\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n const thread = await memory.getThreadById({ threadId: effectiveThreadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n\n await memory.updateWorkingMemory({\n threadId: effectiveThreadId!,\n resourceId: effectiveResourceId,\n workingMemory,\n memoryConfig,\n });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error updating working memory');\n }\n },\n});\n\nexport const DELETE_MESSAGES_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/messages/delete',\n responseType: 'json',\n queryParamSchema: deleteMessagesQuerySchema,\n bodySchema: deleteMessagesBodySchema,\n responseSchema: deleteMessagesResponseSchema,\n summary: 'Delete messages',\n description: 'Deletes specific messages from memory',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, resourceId, messageIds, requestContext }) => {\n try {\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n\n if (messageIds === undefined || messageIds === null) {\n throw new HTTPException(400, { message: 'messageIds is required' });\n }\n\n // Normalize messageIds to the format expected by deleteMessages\n // Convert single values to arrays and extract IDs from objects\n let normalizedIds: string[] | { id: string }[];\n\n if (Array.isArray(messageIds)) {\n // Already an array - keep as is (could be string[] or { id: string }[])\n normalizedIds = messageIds;\n } else if (typeof messageIds === 'string') {\n // Single string ID - wrap in array\n normalizedIds = [messageIds];\n } else {\n // Single object with id property - wrap in array\n normalizedIds = [messageIds];\n }\n\n // Extract string IDs for validation and deletion\n const stringIds = normalizedIds.map(id => (typeof id === 'string' ? id : id.id));\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n // If effectiveResourceId is set, validate ownership of all messages before deletion\n // Fail closed: if we can't verify ownership, deny deletion\n if (effectiveResourceId && stringIds.length > 0) {\n const storage = memory?.storage || getStorageFromContext({ mastra });\n if (!storage) {\n throw new HTTPException(403, { message: 'Access denied: unable to verify message ownership' });\n }\n const memoryStore = await storage.getStore('memory');\n if (!memoryStore) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n // Get messages to find their threads\n const { messages } = await memoryStore.listMessagesById({ messageIds: stringIds });\n\n // Collect unique thread IDs\n const threadIds = [...new Set(messages.map(m => m.threadId).filter(Boolean))] as string[];\n\n // Validate ownership of all threads\n for (const threadId of threadIds) {\n const thread = await memoryStore.getThreadById({ threadId });\n if (thread && thread.resourceId && thread.resourceId !== effectiveResourceId) {\n throw new HTTPException(403, {\n message: 'Access denied: message belongs to a thread owned by a different resource',\n });\n }\n }\n }\n\n if (memory) {\n await memory.deleteMessages(normalizedIds);\n } else if (!agentId) {\n // Only fallback to storage if no agentId was provided\n const storage = getStorageFromContext({ mastra });\n if (storage) {\n const memoryStore = await storage.getStore('memory');\n if (memoryStore) {\n await memoryStore.deleteMessages(stringIds);\n } else {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n } else {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n } else {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n // Count messages for response\n const count = Array.isArray(messageIds) ? messageIds.length : 1;\n\n return { success: true, message: `${count} message${count === 1 ? '' : 's'} deleted successfully` };\n } catch (error) {\n return handleError(error, 'Error deleting messages');\n }\n },\n});\n\nexport const SEARCH_MEMORY_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/search',\n responseType: 'json',\n queryParamSchema: searchMemoryQuerySchema,\n responseSchema: searchMemoryResponseSchema,\n summary: 'Search memory',\n description: 'Searches across memory using semantic or text search',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, searchQuery, resourceId, threadId, limit = 20, requestContext, memoryConfig }) => {\n try {\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n validateBody({ searchQuery, resourceId: effectiveResourceId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n // Get memory configuration first to check scope\n const config = memory.getMergedThreadConfig(memoryConfig || {});\n const hasSemanticRecall = !!config?.semanticRecall;\n const resourceScope =\n typeof config?.semanticRecall === 'object' ? config?.semanticRecall?.scope !== 'thread' : true;\n\n const searchResults: SearchResult[] = [];\n\n // If threadId is provided and scope is thread-based, check if the thread exists\n if (effectiveThreadId && !resourceScope) {\n const thread = await memory.getThreadById({ threadId: effectiveThreadId });\n if (!thread) {\n // Thread doesn't exist yet (new unsaved thread) - return empty results\n return {\n results: [],\n count: 0,\n query: searchQuery,\n searchScope: resourceScope ? 'resource' : 'thread',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n\n // Use effectiveThreadId or find one from the resource\n let searchThreadId = effectiveThreadId;\n\n // If no threadId provided, get one from the resource\n if (!searchThreadId) {\n const { threads } = await memory.listThreads({\n filter: { resourceId: effectiveResourceId },\n page: 0,\n perPage: 1,\n orderBy: { field: 'updatedAt', direction: 'DESC' },\n });\n\n if (threads.length === 0) {\n return {\n results: [],\n count: 0,\n query: searchQuery,\n searchScope: resourceScope ? 'resource' : 'thread',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n }\n\n // Use first thread - Memory class will handle scope internally\n searchThreadId = threads[0]!.id;\n }\n\n const beforeRange =\n typeof config.semanticRecall === `boolean`\n ? 2\n : typeof config.semanticRecall?.messageRange === `number`\n ? config.semanticRecall.messageRange\n : config.semanticRecall?.messageRange.before || 2;\n const afterRange =\n typeof config.semanticRecall === `boolean`\n ? 2\n : typeof config.semanticRecall?.messageRange === `number`\n ? config.semanticRecall.messageRange\n : config.semanticRecall?.messageRange.after || 2;\n\n if (resourceScope && config.semanticRecall) {\n config.semanticRecall =\n typeof config.semanticRecall === `boolean`\n ? // make message range 0 so we can highlight the matches in search, message range will include other messages, not the matching ones\n // and we add prev/next messages in a special section on each message anyway\n { messageRange: 0, topK: 2, scope: 'resource' }\n : { ...config.semanticRecall, messageRange: 0 };\n }\n\n // Single call to recall - just like the agent does\n // The Memory class handles scope (thread vs resource) internally\n const threadConfig = memory.getMergedThreadConfig(config || {});\n if (!threadConfig.lastMessages && !threadConfig.semanticRecall) {\n return { results: [], count: 0, query: searchQuery };\n }\n\n const result = await memory.recall({\n threadId: searchThreadId,\n resourceId: effectiveResourceId,\n perPage: threadConfig.lastMessages,\n threadConfig: config,\n vectorSearchString: threadConfig.semanticRecall && searchQuery ? searchQuery : undefined,\n });\n\n // Get all threads to build context and show which thread each message is from\n // Fetch threads by IDs from the actual messages to avoid truncation\n const threadIds = Array.from(\n new Set(result.messages.map((m: MastraDBMessage) => m.threadId || searchThreadId!).filter(Boolean)),\n );\n const fetched = await Promise.all(threadIds.map((id: string) => memory.getThreadById({ threadId: id })));\n const threadMap = new Map(fetched.filter(Boolean).map(t => [t!.id, t!]));\n\n // Process each message in the results\n for (const msg of result.messages) {\n const content = getTextContent(msg);\n\n const msgThreadId = msg.threadId || searchThreadId;\n const thread = threadMap.get(msgThreadId);\n\n // Get thread messages for context\n const threadMessages = (await memory.recall({ threadId: msgThreadId })).messages;\n const messageIndex = threadMessages.findIndex(m => m.id === msg.id);\n\n const searchResult: SearchResult = {\n id: msg.id,\n role: msg.role,\n content,\n createdAt: msg.createdAt,\n threadId: msgThreadId,\n threadTitle: thread?.title || msgThreadId,\n };\n\n if (messageIndex !== -1) {\n searchResult.context = {\n before: threadMessages.slice(Math.max(0, messageIndex - beforeRange), messageIndex).map(m => ({\n id: m.id,\n role: m.role,\n content: getTextContent(m),\n createdAt: m.createdAt || new Date(),\n })),\n after: threadMessages.slice(messageIndex + 1, messageIndex + afterRange + 1).map(m => ({\n id: m.id,\n role: m.role,\n content: getTextContent(m),\n createdAt: m.createdAt || new Date(),\n })),\n };\n }\n\n searchResults.push(searchResult);\n }\n\n // Sort by date (newest first) and limit\n const sortedResults = searchResults\n .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())\n .slice(0, limit);\n\n return {\n results: sortedResults,\n count: sortedResults.length,\n query: searchQuery,\n searchScope: resourceScope ? 'resource' : 'thread',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n } catch (error) {\n return handleError(error, 'Error searching memory');\n }\n },\n});\n\n// Network routes (same handlers with /network/ prefix)\nexport const GET_MEMORY_STATUS_NETWORK_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/network/status',\n responseType: 'json',\n queryParamSchema: getMemoryStatusNetworkQuerySchema,\n responseSchema: memoryStatusResponseSchema,\n summary: 'Get memory status (network)',\n description: 'Returns the current status of the memory system (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: GET_MEMORY_STATUS_ROUTE.handler,\n});\n\nexport const LIST_THREADS_NETWORK_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/network/threads',\n responseType: 'json',\n queryParamSchema: listThreadsNetworkQuerySchema,\n responseSchema: listThreadsResponseSchema,\n summary: 'List memory threads (network)',\n description: 'Returns a paginated list of conversation threads (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: LIST_THREADS_ROUTE.handler,\n});\n\nexport const GET_THREAD_BY_ID_NETWORK_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/network/threads/:threadId',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: getThreadByIdNetworkQuerySchema,\n responseSchema: getThreadByIdResponseSchema,\n summary: 'Get thread by ID (network)',\n description: 'Returns details for a specific conversation thread (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: GET_THREAD_BY_ID_ROUTE.handler,\n});\n\nexport const LIST_MESSAGES_NETWORK_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/network/threads/:threadId/messages',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: listMessagesNetworkQuerySchema,\n responseSchema: listMessagesResponseSchema,\n summary: 'List thread messages (network)',\n description: 'Returns a paginated list of messages in a conversation thread (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: LIST_MESSAGES_ROUTE.handler,\n});\n\nexport const SAVE_MESSAGES_NETWORK_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/network/save-messages',\n responseType: 'json',\n queryParamSchema: saveMessagesNetworkQuerySchema,\n bodySchema: saveMessagesBodySchema,\n responseSchema: saveMessagesResponseSchema,\n summary: 'Save messages (network)',\n description: 'Saves new messages to memory (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: SAVE_MESSAGES_ROUTE.handler,\n});\n\nexport const CREATE_THREAD_NETWORK_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/network/threads',\n responseType: 'json',\n queryParamSchema: createThreadNetworkQuerySchema,\n bodySchema: createThreadBodySchema,\n responseSchema: getThreadByIdResponseSchema,\n summary: 'Create thread (network)',\n description: 'Creates a new conversation thread (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: CREATE_THREAD_ROUTE.handler,\n});\n\nexport const UPDATE_THREAD_NETWORK_ROUTE = createRoute({\n method: 'PATCH',\n path: '/memory/network/threads/:threadId',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: updateThreadNetworkQuerySchema,\n bodySchema: updateThreadBodySchema,\n responseSchema: getThreadByIdResponseSchema,\n summary: 'Update thread (network)',\n description: 'Updates a conversation thread (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: UPDATE_THREAD_ROUTE.handler,\n});\n\nexport const DELETE_THREAD_NETWORK_ROUTE = createRoute({\n method: 'DELETE',\n path: '/memory/network/threads/:threadId',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: deleteThreadNetworkQuerySchema,\n responseSchema: deleteThreadResponseSchema,\n summary: 'Delete thread (network)',\n description: 'Deletes a conversation thread (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: DELETE_THREAD_ROUTE.handler,\n});\n\nexport const DELETE_MESSAGES_NETWORK_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/network/messages/delete',\n responseType: 'json',\n queryParamSchema: deleteMessagesNetworkQuerySchema,\n bodySchema: deleteMessagesBodySchema,\n responseSchema: deleteMessagesResponseSchema,\n summary: 'Delete messages (network)',\n description: 'Deletes specific messages from memory (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: DELETE_MESSAGES_ROUTE.handler,\n});\n"]}
|