@mastra/server 1.33.0-alpha.6 → 1.33.0-alpha.8
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 +159 -0
- package/dist/{api-schema-manifest-KDXQELMU.cjs → api-schema-manifest-CX3NL6JS.cjs} +6 -6
- package/dist/{api-schema-manifest-KDXQELMU.cjs.map → api-schema-manifest-CX3NL6JS.cjs.map} +1 -1
- package/dist/{api-schema-manifest-IWGQ5O45.js → api-schema-manifest-IK5MQPAL.js} +4 -4
- package/dist/{api-schema-manifest-IWGQ5O45.js.map → api-schema-manifest-IK5MQPAL.js.map} +1 -1
- package/dist/{chunk-IT26WLSZ.js → chunk-26PANWAR.js} +7 -7
- package/dist/{chunk-IT26WLSZ.js.map → chunk-26PANWAR.js.map} +1 -1
- package/dist/{chunk-LXNZK6NM.cjs → chunk-27VZ5B4Q.cjs} +77 -77
- package/dist/{chunk-LXNZK6NM.cjs.map → chunk-27VZ5B4Q.cjs.map} +1 -1
- package/dist/{chunk-MAG4W3GZ.cjs → chunk-2PS73C7N.cjs} +8 -8
- package/dist/{chunk-MAG4W3GZ.cjs.map → chunk-2PS73C7N.cjs.map} +1 -1
- package/dist/{chunk-34UYZN53.js → chunk-3AKQRYDF.js} +4 -4
- package/dist/{chunk-34UYZN53.js.map → chunk-3AKQRYDF.js.map} +1 -1
- package/dist/{chunk-5HQXXBTM.js → chunk-3DQGNGSK.js} +4 -4
- package/dist/{chunk-5HQXXBTM.js.map → chunk-3DQGNGSK.js.map} +1 -1
- package/dist/{chunk-WEDFF5FH.js → chunk-3SRLGVLX.js} +44 -44
- package/dist/chunk-3SRLGVLX.js.map +1 -0
- package/dist/{chunk-SX3C7B3A.cjs → chunk-4NVC7TM6.cjs} +28 -28
- package/dist/{chunk-SX3C7B3A.cjs.map → chunk-4NVC7TM6.cjs.map} +1 -1
- package/dist/{chunk-N6HISTTP.cjs → chunk-4ZO2MLW5.cjs} +16 -16
- package/dist/{chunk-N6HISTTP.cjs.map → chunk-4ZO2MLW5.cjs.map} +1 -1
- package/dist/{chunk-EQ27BVOT.js → chunk-5WYCXPDY.js} +4 -4
- package/dist/{chunk-EQ27BVOT.js.map → chunk-5WYCXPDY.js.map} +1 -1
- package/dist/{chunk-EFW6MWXU.cjs → chunk-5XW4MKE6.cjs} +22 -2
- package/dist/chunk-5XW4MKE6.cjs.map +1 -0
- package/dist/{chunk-MCS43WKI.cjs → chunk-6JP6Q64G.cjs} +10 -10
- package/dist/{chunk-MCS43WKI.cjs.map → chunk-6JP6Q64G.cjs.map} +1 -1
- package/dist/{chunk-ZO7SOILM.js → chunk-6V2NUA6I.js} +4 -4
- package/dist/{chunk-ZO7SOILM.js.map → chunk-6V2NUA6I.js.map} +1 -1
- package/dist/{chunk-64YJOWH2.cjs → chunk-72W42JL4.cjs} +5 -5
- package/dist/{chunk-64YJOWH2.cjs.map → chunk-72W42JL4.cjs.map} +1 -1
- package/dist/{chunk-NWD2SPUH.js → chunk-7LGTEZBD.js} +4 -4
- package/dist/{chunk-NWD2SPUH.js.map → chunk-7LGTEZBD.js.map} +1 -1
- package/dist/{chunk-2KDOM6QE.js → chunk-7PDQ67ZY.js} +108 -6
- package/dist/chunk-7PDQ67ZY.js.map +1 -0
- package/dist/{chunk-SOH5VORA.js → chunk-7RLQ6356.js} +3 -3
- package/dist/{chunk-SOH5VORA.js.map → chunk-7RLQ6356.js.map} +1 -1
- package/dist/{chunk-CYLX5SJ4.js → chunk-7SVSAMG4.js} +6 -6
- package/dist/{chunk-CYLX5SJ4.js.map → chunk-7SVSAMG4.js.map} +1 -1
- package/dist/{chunk-OAE7ZFYO.cjs → chunk-ALOM42GR.cjs} +24 -24
- package/dist/{chunk-OAE7ZFYO.cjs.map → chunk-ALOM42GR.cjs.map} +1 -1
- package/dist/{chunk-3EK2EVVE.js → chunk-ANIIJVPR.js} +4 -4
- package/dist/{chunk-3EK2EVVE.js.map → chunk-ANIIJVPR.js.map} +1 -1
- package/dist/chunk-B3CHYE7C.js +549 -0
- package/dist/chunk-B3CHYE7C.js.map +1 -0
- package/dist/{chunk-2HM5SQM5.js → chunk-BK2PTTTN.js} +4 -4
- package/dist/{chunk-2HM5SQM5.js.map → chunk-BK2PTTTN.js.map} +1 -1
- package/dist/{chunk-YN57WYLS.cjs → chunk-BNONPEW6.cjs} +11 -11
- package/dist/{chunk-YN57WYLS.cjs.map → chunk-BNONPEW6.cjs.map} +1 -1
- package/dist/{chunk-XPF4VEXO.js → chunk-BZ3NR3IS.js} +40 -38
- package/dist/chunk-BZ3NR3IS.js.map +1 -0
- package/dist/{chunk-4NPFEKIP.js → chunk-CG3AAC7C.js} +4 -4
- package/dist/{chunk-4NPFEKIP.js.map → chunk-CG3AAC7C.js.map} +1 -1
- package/dist/{chunk-VGNQKFWM.js → chunk-DC7NOATT.js} +3 -3
- package/dist/{chunk-VGNQKFWM.js.map → chunk-DC7NOATT.js.map} +1 -1
- package/dist/{chunk-WMS63TTU.cjs → chunk-DDF3ZASL.cjs} +168 -64
- package/dist/chunk-DDF3ZASL.cjs.map +1 -0
- package/dist/{chunk-NB7LJMYF.js → chunk-DPGNOE7R.js} +3 -3
- package/dist/{chunk-NB7LJMYF.js.map → chunk-DPGNOE7R.js.map} +1 -1
- package/dist/{chunk-KRMMYAXW.cjs → chunk-E7IOQCUP.cjs} +10 -10
- package/dist/{chunk-KRMMYAXW.cjs.map → chunk-E7IOQCUP.cjs.map} +1 -1
- package/dist/{chunk-RVAPXLP2.js → chunk-EFQBRUA4.js} +3 -3
- package/dist/{chunk-RVAPXLP2.js.map → chunk-EFQBRUA4.js.map} +1 -1
- package/dist/{chunk-4KNRG3KO.cjs → chunk-EN45CWWM.cjs} +18 -18
- package/dist/{chunk-4KNRG3KO.cjs.map → chunk-EN45CWWM.cjs.map} +1 -1
- package/dist/chunk-F3HP5HM6.cjs +998 -0
- package/dist/chunk-F3HP5HM6.cjs.map +1 -0
- package/dist/{chunk-Y3OQTZDN.js → chunk-FD3TJOO6.js} +44 -15
- package/dist/chunk-FD3TJOO6.js.map +1 -0
- package/dist/{chunk-PYT4SLHO.js → chunk-FJZ67HHA.js} +3 -3
- package/dist/{chunk-PYT4SLHO.js.map → chunk-FJZ67HHA.js.map} +1 -1
- package/dist/{chunk-TE2PWB67.js → chunk-GIMDOFRR.js} +4 -4
- package/dist/{chunk-TE2PWB67.js.map → chunk-GIMDOFRR.js.map} +1 -1
- package/dist/{chunk-MTKGUIFX.js → chunk-GJ3BKRTZ.js} +6 -6
- package/dist/{chunk-MTKGUIFX.js.map → chunk-GJ3BKRTZ.js.map} +1 -1
- package/dist/{chunk-UMXIU6E3.cjs → chunk-GNQ5SKPB.cjs} +7 -7
- package/dist/{chunk-UMXIU6E3.cjs.map → chunk-GNQ5SKPB.cjs.map} +1 -1
- package/dist/{chunk-AMZMBCKG.cjs → chunk-GOXW7A5J.cjs} +10 -10
- package/dist/{chunk-AMZMBCKG.cjs.map → chunk-GOXW7A5J.cjs.map} +1 -1
- package/dist/{chunk-EKS524LA.js → chunk-GP65L3TF.js} +83 -34
- package/dist/chunk-GP65L3TF.js.map +1 -0
- package/dist/{chunk-SYDZFUZI.js → chunk-GSL72DOW.js} +3 -3
- package/dist/{chunk-SYDZFUZI.js.map → chunk-GSL72DOW.js.map} +1 -1
- package/dist/{chunk-CSG535HL.cjs → chunk-GV2J3XQ4.cjs} +137 -108
- package/dist/chunk-GV2J3XQ4.cjs.map +1 -0
- package/dist/{chunk-VESPCO5X.js → chunk-ITIAC2TC.js} +3 -3
- package/dist/{chunk-VESPCO5X.js.map → chunk-ITIAC2TC.js.map} +1 -1
- package/dist/{chunk-BGRKLLHE.cjs → chunk-J62R54QE.cjs} +6 -6
- package/dist/{chunk-BGRKLLHE.cjs.map → chunk-J62R54QE.cjs.map} +1 -1
- package/dist/{chunk-BLK2XYVU.cjs → chunk-JLH5BHLT.cjs} +10 -10
- package/dist/{chunk-BLK2XYVU.cjs.map → chunk-JLH5BHLT.cjs.map} +1 -1
- package/dist/{chunk-UOC4K3RU.js → chunk-JOUPK2UV.js} +3 -3
- package/dist/{chunk-UOC4K3RU.js.map → chunk-JOUPK2UV.js.map} +1 -1
- package/dist/{chunk-HLDBO2H6.js → chunk-JSHKUN5Y.js} +3 -3
- package/dist/{chunk-HLDBO2H6.js.map → chunk-JSHKUN5Y.js.map} +1 -1
- package/dist/chunk-KUCITIUY.cjs +636 -0
- package/dist/chunk-KUCITIUY.cjs.map +1 -0
- package/dist/{chunk-LRYHYARK.js → chunk-KXZBJDFG.js} +4 -4
- package/dist/{chunk-LRYHYARK.js.map → chunk-KXZBJDFG.js.map} +1 -1
- package/dist/{chunk-MWXGGCHD.cjs → chunk-L742HQNI.cjs} +10 -10
- package/dist/{chunk-MWXGGCHD.cjs.map → chunk-L742HQNI.cjs.map} +1 -1
- package/dist/{chunk-ZOILZWQD.cjs → chunk-LKVE4QAW.cjs} +6 -6
- package/dist/{chunk-ZOILZWQD.cjs.map → chunk-LKVE4QAW.cjs.map} +1 -1
- package/dist/{chunk-6DAZZPVO.cjs → chunk-LNV75BVN.cjs} +38 -38
- package/dist/{chunk-6DAZZPVO.cjs.map → chunk-LNV75BVN.cjs.map} +1 -1
- package/dist/{chunk-S4L4CSQD.js → chunk-LRUC4D2Q.js} +3 -3
- package/dist/{chunk-S4L4CSQD.js.map → chunk-LRUC4D2Q.js.map} +1 -1
- package/dist/{chunk-ANXKF4TA.cjs → chunk-M62Z4EEY.cjs} +147 -147
- package/dist/chunk-M62Z4EEY.cjs.map +1 -0
- package/dist/{chunk-IYEGDP3G.js → chunk-M7DF3D2M.js} +3 -3
- package/dist/{chunk-IYEGDP3G.js.map → chunk-M7DF3D2M.js.map} +1 -1
- package/dist/{chunk-LOZT5NDU.cjs → chunk-MZ3RKQKS.cjs} +6 -6
- package/dist/{chunk-LOZT5NDU.cjs.map → chunk-MZ3RKQKS.cjs.map} +1 -1
- package/dist/{chunk-3OTCA7TP.js → chunk-NKCUF5ZH.js} +3 -3
- package/dist/{chunk-3OTCA7TP.js.map → chunk-NKCUF5ZH.js.map} +1 -1
- package/dist/{chunk-UOBKNRHM.cjs → chunk-NKYIWTT3.cjs} +12 -12
- package/dist/{chunk-UOBKNRHM.cjs.map → chunk-NKYIWTT3.cjs.map} +1 -1
- package/dist/{chunk-R7EB3VDI.cjs → chunk-NOQ45USI.cjs} +13 -13
- package/dist/{chunk-R7EB3VDI.cjs.map → chunk-NOQ45USI.cjs.map} +1 -1
- package/dist/{chunk-YQILRC5Y.cjs → chunk-OB4NE2YX.cjs} +10 -10
- package/dist/{chunk-YQILRC5Y.cjs.map → chunk-OB4NE2YX.cjs.map} +1 -1
- package/dist/{chunk-ICJ2ZVI2.cjs → chunk-OJFDLVAO.cjs} +13 -13
- package/dist/{chunk-ICJ2ZVI2.cjs.map → chunk-OJFDLVAO.cjs.map} +1 -1
- package/dist/{chunk-PM3UPQWH.cjs → chunk-P3TJ7MI6.cjs} +11 -11
- package/dist/{chunk-PM3UPQWH.cjs.map → chunk-P3TJ7MI6.cjs.map} +1 -1
- package/dist/{chunk-HYYXUP35.cjs → chunk-PJDFXAOL.cjs} +2 -2
- package/dist/{chunk-HYYXUP35.cjs.map → chunk-PJDFXAOL.cjs.map} +1 -1
- package/dist/{chunk-AWXCTLMK.cjs → chunk-PPCGMD6N.cjs} +11 -11
- package/dist/{chunk-AWXCTLMK.cjs.map → chunk-PPCGMD6N.cjs.map} +1 -1
- package/dist/{chunk-TWT64BVR.js → chunk-PUAKBO3Q.js} +45 -70
- package/dist/chunk-PUAKBO3Q.js.map +1 -0
- package/dist/{chunk-QEM5P746.cjs → chunk-PYGX3GUB.cjs} +71 -96
- package/dist/chunk-PYGX3GUB.cjs.map +1 -0
- package/dist/{chunk-ZSGVBBC4.js → chunk-QFGTTQFQ.js} +3 -3
- package/dist/{chunk-ZSGVBBC4.js.map → chunk-QFGTTQFQ.js.map} +1 -1
- package/dist/{chunk-HFF6QRLL.cjs → chunk-QISQJJPS.cjs} +6 -6
- package/dist/{chunk-HFF6QRLL.cjs.map → chunk-QISQJJPS.cjs.map} +1 -1
- package/dist/{chunk-IDLB647Y.js → chunk-QLJYRTD2.js} +4 -4
- package/dist/{chunk-IDLB647Y.js.map → chunk-QLJYRTD2.js.map} +1 -1
- package/dist/{chunk-STNEFHHA.js → chunk-RYOD3GP4.js} +4 -4
- package/dist/{chunk-STNEFHHA.js.map → chunk-RYOD3GP4.js.map} +1 -1
- package/dist/{chunk-KSQVYDDO.cjs → chunk-RYXKJ55A.cjs} +11 -11
- package/dist/{chunk-KSQVYDDO.cjs.map → chunk-RYXKJ55A.cjs.map} +1 -1
- package/dist/{chunk-GP45BMSR.js → chunk-SEMTGEAA.js} +3 -3
- package/dist/{chunk-GP45BMSR.js.map → chunk-SEMTGEAA.js.map} +1 -1
- package/dist/{chunk-C7Q5IMST.js → chunk-SFJOG2BT.js} +3 -3
- package/dist/{chunk-C7Q5IMST.js.map → chunk-SFJOG2BT.js.map} +1 -1
- package/dist/chunk-TLLV2JP5.js +983 -0
- package/dist/chunk-TLLV2JP5.js.map +1 -0
- package/dist/chunk-TTJ3DYZH.cjs +557 -0
- package/dist/chunk-TTJ3DYZH.cjs.map +1 -0
- package/dist/{chunk-WE5GUI23.js → chunk-UBOLRYFV.js} +3 -3
- package/dist/{chunk-WE5GUI23.js.map → chunk-UBOLRYFV.js.map} +1 -1
- package/dist/{chunk-GAS277DM.cjs → chunk-UVLX3WSX.cjs} +11 -11
- package/dist/{chunk-GAS277DM.cjs.map → chunk-UVLX3WSX.cjs.map} +1 -1
- package/dist/{chunk-HCIKFLLE.js → chunk-VMF4AV2C.js} +2 -2
- package/dist/{chunk-HCIKFLLE.js.map → chunk-VMF4AV2C.js.map} +1 -1
- package/dist/{chunk-KUBAQ732.cjs → chunk-VOBSGFM5.cjs} +10 -10
- package/dist/{chunk-KUBAQ732.cjs.map → chunk-VOBSGFM5.cjs.map} +1 -1
- package/dist/{chunk-5FHBVBU2.js → chunk-VQSY4I4H.js} +3 -3
- package/dist/{chunk-5FHBVBU2.js.map → chunk-VQSY4I4H.js.map} +1 -1
- package/dist/{chunk-GKN4IFE7.js → chunk-VYXPIZJE.js} +3 -3
- package/dist/{chunk-GKN4IFE7.js.map → chunk-VYXPIZJE.js.map} +1 -1
- package/dist/{chunk-WYQDPZNZ.cjs → chunk-W5B34RLN.cjs} +7 -7
- package/dist/{chunk-WYQDPZNZ.cjs.map → chunk-W5B34RLN.cjs.map} +1 -1
- package/dist/{chunk-VWBVA272.cjs → chunk-W6LHLN5M.cjs} +5 -5
- package/dist/{chunk-VWBVA272.cjs.map → chunk-W6LHLN5M.cjs.map} +1 -1
- package/dist/{chunk-KFEM2S5D.cjs → chunk-WWOML5Y4.cjs} +10 -10
- package/dist/{chunk-KFEM2S5D.cjs.map → chunk-WWOML5Y4.cjs.map} +1 -1
- package/dist/{chunk-Z7FXNI2N.cjs → chunk-XFDVU6GZ.cjs} +52 -52
- package/dist/{chunk-Z7FXNI2N.cjs.map → chunk-XFDVU6GZ.cjs.map} +1 -1
- package/dist/{chunk-BK2PRWVJ.cjs → chunk-Y5LNMKEY.cjs} +5 -5
- package/dist/{chunk-BK2PRWVJ.cjs.map → chunk-Y5LNMKEY.cjs.map} +1 -1
- package/dist/{chunk-OJRAH5VV.js → chunk-YARY4I5U.js} +18 -3
- package/dist/chunk-YARY4I5U.js.map +1 -0
- package/dist/{chunk-OJLXPTSL.cjs → chunk-YE56LUEI.cjs} +18 -18
- package/dist/{chunk-OJLXPTSL.cjs.map → chunk-YE56LUEI.cjs.map} +1 -1
- package/dist/{chunk-RQNN75EV.js → chunk-YGNA75MT.js} +5 -5
- package/dist/{chunk-RQNN75EV.js.map → chunk-YGNA75MT.js.map} +1 -1
- package/dist/{chunk-47U5QTGT.cjs → chunk-YYTMNPB7.cjs} +83 -34
- package/dist/chunk-YYTMNPB7.cjs.map +1 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/{observational-memory-HAJ3K5JJ-RB4HNAIV.cjs → observational-memory-2PRVG6BF-3V6S3B2J.cjs} +26 -26
- package/dist/{observational-memory-HAJ3K5JJ-RB4HNAIV.cjs.map → observational-memory-2PRVG6BF-3V6S3B2J.cjs.map} +1 -1
- package/dist/{observational-memory-HAJ3K5JJ-J2PZI56J.js → observational-memory-2PRVG6BF-4MT3GXPA.js} +3 -3
- package/dist/{observational-memory-HAJ3K5JJ-J2PZI56J.js.map → observational-memory-2PRVG6BF-4MT3GXPA.js.map} +1 -1
- package/dist/server/auth/index.cjs +15 -15
- package/dist/server/auth/index.js +1 -1
- package/dist/server/constants.d.ts +5 -0
- package/dist/server/constants.d.ts.map +1 -1
- package/dist/server/handlers/a2a.cjs +14 -14
- 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 +39 -39
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/auth.cjs +11 -11
- package/dist/server/handlers/auth.js +1 -1
- package/dist/server/handlers/background-tasks.cjs +4 -4
- package/dist/server/handlers/background-tasks.js +1 -1
- package/dist/server/handlers/channels.cjs +5 -5
- package/dist/server/handlers/channels.js +1 -1
- package/dist/server/handlers/conversations.cjs +5 -5
- package/dist/server/handlers/conversations.js +1 -1
- package/dist/server/handlers/datasets.cjs +26 -26
- 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 +11 -11
- package/dist/server/handlers/mcp.js +1 -1
- package/dist/server/handlers/memory.cjs +27 -27
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/observability-new-endpoints.cjs +28 -28
- package/dist/server/handlers/observability-new-endpoints.js +1 -1
- package/dist/server/handlers/observability.cjs +38 -38
- 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/responses.adapter.cjs +18 -14
- package/dist/server/handlers/responses.adapter.d.ts +96 -2
- package/dist/server/handlers/responses.adapter.d.ts.map +1 -1
- package/dist/server/handlers/responses.adapter.js +1 -1
- package/dist/server/handlers/responses.cjs +4 -4
- package/dist/server/handlers/responses.d.ts.map +1 -1
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/responses.storage.cjs +8 -8
- package/dist/server/handlers/responses.storage.d.ts +4 -2
- package/dist/server/handlers/responses.storage.d.ts.map +1 -1
- package/dist/server/handlers/responses.storage.js +1 -1
- package/dist/server/handlers/schedules.cjs +6 -6
- package/dist/server/handlers/schedules.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 +3 -3
- 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/utils.cjs +10 -10
- package/dist/server/handlers/utils.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 +32 -24
- package/dist/server/handlers/workflows.d.ts +83 -0
- package/dist/server/handlers/workflows.d.ts.map +1 -1
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers/workspace.cjs +26 -26
- package/dist/server/handlers/workspace.js +1 -1
- package/dist/server/handlers.cjs +30 -30
- package/dist/server/handlers.js +15 -15
- package/dist/server/server-adapter/index.cjs +55 -28
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.d.ts +5 -1
- package/dist/server/server-adapter/index.d.ts.map +1 -1
- package/dist/server/server-adapter/index.js +19 -11
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/routes/workflows.d.ts +66 -1
- package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/chunk-2KDOM6QE.js.map +0 -1
- package/dist/chunk-47U5QTGT.cjs.map +0 -1
- package/dist/chunk-AJYJ4H7P.js +0 -438
- package/dist/chunk-AJYJ4H7P.js.map +0 -1
- package/dist/chunk-ANXKF4TA.cjs.map +0 -1
- package/dist/chunk-CSG535HL.cjs.map +0 -1
- package/dist/chunk-DFSUBEGE.js +0 -226
- package/dist/chunk-DFSUBEGE.js.map +0 -1
- package/dist/chunk-EFW6MWXU.cjs.map +0 -1
- package/dist/chunk-EKS524LA.js.map +0 -1
- package/dist/chunk-OJ72T77G.cjs +0 -452
- package/dist/chunk-OJ72T77G.cjs.map +0 -1
- package/dist/chunk-OJRAH5VV.js.map +0 -1
- package/dist/chunk-PJYQMPXT.cjs +0 -234
- package/dist/chunk-PJYQMPXT.cjs.map +0 -1
- package/dist/chunk-QEM5P746.cjs.map +0 -1
- package/dist/chunk-TWT64BVR.js.map +0 -1
- package/dist/chunk-VZNSMKB7.cjs +0 -634
- package/dist/chunk-VZNSMKB7.cjs.map +0 -1
- package/dist/chunk-WEDFF5FH.js.map +0 -1
- package/dist/chunk-WMS63TTU.cjs.map +0 -1
- package/dist/chunk-XPF4VEXO.js.map +0 -1
- package/dist/chunk-Y3OQTZDN.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/stored-workspaces.ts"],"names":[],"mappings":"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","file":"chunk-3EK2EVVE.js","sourcesContent":["import { HTTPException } from '../http-exception';\nimport {\n storedWorkspaceIdPathParams,\n listStoredWorkspacesQuerySchema,\n createStoredWorkspaceBodySchema,\n updateStoredWorkspaceBodySchema,\n listStoredWorkspacesResponseSchema,\n getStoredWorkspaceResponseSchema,\n createStoredWorkspaceResponseSchema,\n updateStoredWorkspaceResponseSchema,\n deleteStoredWorkspaceResponseSchema,\n} from '../schemas/stored-workspaces';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { toSlug } from '../utils';\n\nimport { handleError } from './error';\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /stored/workspaces - List all stored workspaces\n */\nexport const LIST_STORED_WORKSPACES_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workspaces',\n responseType: 'json',\n queryParamSchema: listStoredWorkspacesQuerySchema,\n responseSchema: listStoredWorkspacesResponseSchema,\n summary: 'List stored workspaces',\n description: 'Returns a paginated list of all workspace configurations stored in the database',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, page, perPage, orderBy, authorId, metadata }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n const result = await workspaceStore.listResolved({\n page,\n perPage,\n orderBy,\n authorId,\n metadata,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error listing stored workspaces');\n }\n },\n});\n\n/**\n * GET /stored/workspaces/:storedWorkspaceId - Get a stored workspace by ID\n */\nexport const GET_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n responseSchema: getStoredWorkspaceResponseSchema,\n summary: 'Get stored workspace by ID',\n description:\n 'Returns a specific workspace from storage by its unique identifier (resolved with active version config)',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, storedWorkspaceId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n const workspace = await workspaceStore.getByIdResolved(storedWorkspaceId);\n\n if (!workspace) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n\n return workspace;\n } catch (error) {\n return handleError(error, 'Error getting stored workspace');\n }\n },\n});\n\n/**\n * POST /stored/workspaces - Create a new stored workspace\n */\nexport const CREATE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/workspaces',\n responseType: 'json',\n bodySchema: createStoredWorkspaceBodySchema,\n responseSchema: createStoredWorkspaceResponseSchema,\n summary: 'Create stored workspace',\n description: 'Creates a new workspace configuration in storage with the provided settings',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({\n mastra,\n id: providedId,\n authorId,\n metadata,\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Derive ID from name if not explicitly provided\n const id = providedId || toSlug(name);\n\n if (!id) {\n throw new HTTPException(400, {\n message: 'Could not derive workspace ID from name. Please provide an explicit id.',\n });\n }\n\n // Check if workspace with this ID already exists\n const existing = await workspaceStore.getById(id);\n if (existing) {\n throw new HTTPException(409, { message: `Workspace with id ${id} already exists` });\n }\n\n await workspaceStore.create({\n workspace: {\n id,\n authorId,\n metadata,\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n },\n });\n\n // Return the resolved workspace (thin record + version config)\n const resolved = await workspaceStore.getByIdResolved(id);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve created workspace' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error creating stored workspace');\n }\n },\n});\n\n/**\n * PATCH /stored/workspaces/:storedWorkspaceId - Update a stored workspace\n */\nexport const UPDATE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'PATCH',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n bodySchema: updateStoredWorkspaceBodySchema,\n responseSchema: updateStoredWorkspaceResponseSchema,\n summary: 'Update stored workspace',\n description: 'Updates an existing workspace in storage with the provided fields',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({\n mastra,\n storedWorkspaceId,\n // Metadata-level fields\n authorId,\n metadata,\n // Config fields (snapshot-level)\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Check if workspace exists\n const existing = await workspaceStore.getById(storedWorkspaceId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n\n // Update the workspace with both metadata-level and config-level fields\n // The storage layer handles separating these into record updates vs new-version creation\n await workspaceStore.update({\n id: storedWorkspaceId,\n authorId,\n metadata,\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n });\n\n // Return the resolved workspace with the updated config\n const resolved = await workspaceStore.getByIdResolved(storedWorkspaceId);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve updated workspace' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error updating stored workspace');\n }\n },\n});\n\n/**\n * DELETE /stored/workspaces/:storedWorkspaceId - Delete a stored workspace\n */\nexport const DELETE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n responseSchema: deleteStoredWorkspaceResponseSchema,\n summary: 'Delete stored workspace',\n description: 'Deletes a workspace from storage by its unique identifier',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, storedWorkspaceId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Check if workspace exists\n const existing = await workspaceStore.getById(storedWorkspaceId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n\n await workspaceStore.delete(storedWorkspaceId);\n\n return {\n success: true,\n message: `Workspace ${storedWorkspaceId} deleted successfully`,\n };\n } catch (error) {\n return handleError(error, 'Error deleting stored workspace');\n }\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/stored-workspaces.ts"],"names":[],"mappings":"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","file":"chunk-ANIIJVPR.js","sourcesContent":["import { HTTPException } from '../http-exception';\nimport {\n storedWorkspaceIdPathParams,\n listStoredWorkspacesQuerySchema,\n createStoredWorkspaceBodySchema,\n updateStoredWorkspaceBodySchema,\n listStoredWorkspacesResponseSchema,\n getStoredWorkspaceResponseSchema,\n createStoredWorkspaceResponseSchema,\n updateStoredWorkspaceResponseSchema,\n deleteStoredWorkspaceResponseSchema,\n} from '../schemas/stored-workspaces';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { toSlug } from '../utils';\n\nimport { handleError } from './error';\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /stored/workspaces - List all stored workspaces\n */\nexport const LIST_STORED_WORKSPACES_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workspaces',\n responseType: 'json',\n queryParamSchema: listStoredWorkspacesQuerySchema,\n responseSchema: listStoredWorkspacesResponseSchema,\n summary: 'List stored workspaces',\n description: 'Returns a paginated list of all workspace configurations stored in the database',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, page, perPage, orderBy, authorId, metadata }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n const result = await workspaceStore.listResolved({\n page,\n perPage,\n orderBy,\n authorId,\n metadata,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error listing stored workspaces');\n }\n },\n});\n\n/**\n * GET /stored/workspaces/:storedWorkspaceId - Get a stored workspace by ID\n */\nexport const GET_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n responseSchema: getStoredWorkspaceResponseSchema,\n summary: 'Get stored workspace by ID',\n description:\n 'Returns a specific workspace from storage by its unique identifier (resolved with active version config)',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, storedWorkspaceId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n const workspace = await workspaceStore.getByIdResolved(storedWorkspaceId);\n\n if (!workspace) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n\n return workspace;\n } catch (error) {\n return handleError(error, 'Error getting stored workspace');\n }\n },\n});\n\n/**\n * POST /stored/workspaces - Create a new stored workspace\n */\nexport const CREATE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/workspaces',\n responseType: 'json',\n bodySchema: createStoredWorkspaceBodySchema,\n responseSchema: createStoredWorkspaceResponseSchema,\n summary: 'Create stored workspace',\n description: 'Creates a new workspace configuration in storage with the provided settings',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({\n mastra,\n id: providedId,\n authorId,\n metadata,\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Derive ID from name if not explicitly provided\n const id = providedId || toSlug(name);\n\n if (!id) {\n throw new HTTPException(400, {\n message: 'Could not derive workspace ID from name. Please provide an explicit id.',\n });\n }\n\n // Check if workspace with this ID already exists\n const existing = await workspaceStore.getById(id);\n if (existing) {\n throw new HTTPException(409, { message: `Workspace with id ${id} already exists` });\n }\n\n await workspaceStore.create({\n workspace: {\n id,\n authorId,\n metadata,\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n },\n });\n\n // Return the resolved workspace (thin record + version config)\n const resolved = await workspaceStore.getByIdResolved(id);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve created workspace' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error creating stored workspace');\n }\n },\n});\n\n/**\n * PATCH /stored/workspaces/:storedWorkspaceId - Update a stored workspace\n */\nexport const UPDATE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'PATCH',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n bodySchema: updateStoredWorkspaceBodySchema,\n responseSchema: updateStoredWorkspaceResponseSchema,\n summary: 'Update stored workspace',\n description: 'Updates an existing workspace in storage with the provided fields',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({\n mastra,\n storedWorkspaceId,\n // Metadata-level fields\n authorId,\n metadata,\n // Config fields (snapshot-level)\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Check if workspace exists\n const existing = await workspaceStore.getById(storedWorkspaceId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n\n // Update the workspace with both metadata-level and config-level fields\n // The storage layer handles separating these into record updates vs new-version creation\n await workspaceStore.update({\n id: storedWorkspaceId,\n authorId,\n metadata,\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n });\n\n // Return the resolved workspace with the updated config\n const resolved = await workspaceStore.getByIdResolved(storedWorkspaceId);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve updated workspace' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error updating stored workspace');\n }\n },\n});\n\n/**\n * DELETE /stored/workspaces/:storedWorkspaceId - Delete a stored workspace\n */\nexport const DELETE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n responseSchema: deleteStoredWorkspaceResponseSchema,\n summary: 'Delete stored workspace',\n description: 'Deletes a workspace from storage by its unique identifier',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, storedWorkspaceId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Check if workspace exists\n const existing = await workspaceStore.getById(storedWorkspaceId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n\n await workspaceStore.delete(storedWorkspaceId);\n\n return {\n success: true,\n message: `Workspace ${storedWorkspaceId} deleted successfully`,\n };\n } catch (error) {\n return handleError(error, 'Error deleting stored workspace');\n }\n },\n});\n"]}
|
|
@@ -0,0 +1,549 @@
|
|
|
1
|
+
import { getEffectiveResourceId, validateThreadOwnership } from './chunk-JOUPK2UV.js';
|
|
2
|
+
import { HTTPException } from './chunk-6QWQZI4Q.js';
|
|
3
|
+
|
|
4
|
+
// src/server/handlers/responses.storage.ts
|
|
5
|
+
function isPlainObject(value) {
|
|
6
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
7
|
+
}
|
|
8
|
+
async function getAgentMemoryStore({
|
|
9
|
+
agent,
|
|
10
|
+
requestContext
|
|
11
|
+
}) {
|
|
12
|
+
const memory = await agent.getMemory({ requestContext });
|
|
13
|
+
if (!memory) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
return await memory.storage.getStore("memory") ?? null;
|
|
18
|
+
} catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function readResponseTurnRecordMetadata(message) {
|
|
23
|
+
const mastraMetadata = isPlainObject(message.content?.metadata?.mastra) ? message.content.metadata.mastra : null;
|
|
24
|
+
const responseMetadata = mastraMetadata && isPlainObject(mastraMetadata.response) ? mastraMetadata.response : null;
|
|
25
|
+
if (!responseMetadata || typeof responseMetadata.agentId !== "string" || typeof responseMetadata.model !== "string" || typeof responseMetadata.createdAt !== "number" || responseMetadata.completedAt !== null && typeof responseMetadata.completedAt !== "number" || responseMetadata.instructions !== void 0 && typeof responseMetadata.instructions !== "string" || responseMetadata.text !== void 0 && (!isPlainObject(responseMetadata.text) || !isPlainObject(responseMetadata.text.format)) || responseMetadata.previousResponseId !== void 0 && typeof responseMetadata.previousResponseId !== "string" || !Array.isArray(responseMetadata.tools) || typeof responseMetadata.store !== "boolean" || !Array.isArray(responseMetadata.messageIds) || responseMetadata.outputItems !== void 0 && !Array.isArray(responseMetadata.outputItems)) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
agentId: responseMetadata.agentId,
|
|
30
|
+
model: responseMetadata.model,
|
|
31
|
+
createdAt: responseMetadata.createdAt,
|
|
32
|
+
completedAt: responseMetadata.completedAt,
|
|
33
|
+
status: responseMetadata.status === "completed" ? "completed" : "incomplete",
|
|
34
|
+
usage: responseMetadata.usage,
|
|
35
|
+
instructions: responseMetadata.instructions,
|
|
36
|
+
text: responseMetadata.text,
|
|
37
|
+
previousResponseId: responseMetadata.previousResponseId,
|
|
38
|
+
providerOptions: responseMetadata.providerOptions,
|
|
39
|
+
tools: responseMetadata.tools,
|
|
40
|
+
store: responseMetadata.store,
|
|
41
|
+
messageIds: responseMetadata.messageIds.filter((value) => typeof value === "string"),
|
|
42
|
+
outputItems: responseMetadata.outputItems
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function writeResponseTurnRecordMetadata(message, metadata) {
|
|
46
|
+
const contentMetadata = isPlainObject(message.content?.metadata) ? message.content.metadata : {};
|
|
47
|
+
const mastraMetadata = isPlainObject(contentMetadata.mastra) ? contentMetadata.mastra : {};
|
|
48
|
+
return {
|
|
49
|
+
...message,
|
|
50
|
+
content: {
|
|
51
|
+
...message.content,
|
|
52
|
+
metadata: {
|
|
53
|
+
...contentMetadata,
|
|
54
|
+
mastra: {
|
|
55
|
+
...mastraMetadata,
|
|
56
|
+
response: metadata
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
async function findResponseTurnRecord({
|
|
63
|
+
agent,
|
|
64
|
+
responseId,
|
|
65
|
+
requestContext
|
|
66
|
+
}) {
|
|
67
|
+
const memoryStore = await getAgentMemoryStore({ agent, requestContext });
|
|
68
|
+
if (!memoryStore) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
const effectiveResourceId = getEffectiveResourceId(requestContext, void 0);
|
|
72
|
+
const { messages: matchedMessages } = await memoryStore.listMessagesById({ messageIds: [responseId] });
|
|
73
|
+
const message = matchedMessages[0];
|
|
74
|
+
if (!message || message.role !== "assistant") {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
const metadata = readResponseTurnRecordMetadata(message);
|
|
78
|
+
if (!metadata || metadata.agentId !== agent.id) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
const thread = message.threadId ? await memoryStore.getThreadById({ threadId: message.threadId }) : null;
|
|
82
|
+
if (!thread) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
await validateThreadOwnership(thread, effectiveResourceId);
|
|
86
|
+
const messageIds = metadata.messageIds.length > 0 ? metadata.messageIds : [message.id];
|
|
87
|
+
const { messages: responseMessages } = await memoryStore.listMessagesById({ messageIds });
|
|
88
|
+
const messagesById = new Map(responseMessages.map((storedMessage) => [storedMessage.id, storedMessage]));
|
|
89
|
+
const orderedMessages = messageIds.map((messageId) => messagesById.get(messageId)).filter((storedMessage) => Boolean(storedMessage));
|
|
90
|
+
return { metadata, message, messages: orderedMessages, thread, memoryStore };
|
|
91
|
+
}
|
|
92
|
+
async function findResponseTurnRecordAcrossAgents({
|
|
93
|
+
mastra,
|
|
94
|
+
responseId,
|
|
95
|
+
requestContext
|
|
96
|
+
}) {
|
|
97
|
+
if (!mastra) {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
const agents = Object.values(mastra.listAgents());
|
|
101
|
+
for (const agent of agents) {
|
|
102
|
+
const match = await findResponseTurnRecord({ agent, responseId, requestContext });
|
|
103
|
+
if (match) {
|
|
104
|
+
return match;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
async function findConversationThreadAcrossAgents({
|
|
110
|
+
mastra,
|
|
111
|
+
conversationId,
|
|
112
|
+
requestContext
|
|
113
|
+
}) {
|
|
114
|
+
if (!mastra) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
const effectiveResourceId = getEffectiveResourceId(requestContext, void 0);
|
|
118
|
+
const agents = Object.values(mastra.listAgents());
|
|
119
|
+
for (const agent of agents) {
|
|
120
|
+
const memoryStore = await getAgentMemoryStore({ agent, requestContext });
|
|
121
|
+
if (!memoryStore) {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
const thread = await memoryStore.getThreadById({ threadId: conversationId });
|
|
125
|
+
if (!thread) {
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
await validateThreadOwnership(thread, effectiveResourceId);
|
|
129
|
+
return { thread, memoryStore };
|
|
130
|
+
}
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
function createSyntheticResponseMessage({
|
|
134
|
+
createdAt,
|
|
135
|
+
responseId,
|
|
136
|
+
text,
|
|
137
|
+
threadContext
|
|
138
|
+
}) {
|
|
139
|
+
return {
|
|
140
|
+
id: responseId,
|
|
141
|
+
role: "assistant",
|
|
142
|
+
type: "text",
|
|
143
|
+
createdAt: createdAt ?? /* @__PURE__ */ new Date(),
|
|
144
|
+
threadId: threadContext.threadId,
|
|
145
|
+
resourceId: threadContext.resourceId,
|
|
146
|
+
content: {
|
|
147
|
+
format: 2,
|
|
148
|
+
parts: text ? [{ type: "text", text }] : []
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
function hasTextPart(message) {
|
|
153
|
+
return Boolean(
|
|
154
|
+
message.content?.parts?.some(
|
|
155
|
+
(part) => isPlainObject(part) && part.type === "text" && typeof part.text === "string" && part.text.length > 0
|
|
156
|
+
)
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
function isEmptyAssistantMessage(message) {
|
|
160
|
+
return message.role === "assistant" && Array.isArray(message.content?.parts) && message.content.parts.length === 0;
|
|
161
|
+
}
|
|
162
|
+
function hasToolInvocationPart(message) {
|
|
163
|
+
return Boolean(
|
|
164
|
+
message.content?.parts?.some(
|
|
165
|
+
(part) => isPlainObject(part) && part.type === "tool-invocation" && isPlainObject(part.toolInvocation)
|
|
166
|
+
)
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
function getMessageText(message) {
|
|
170
|
+
return message.content?.parts?.flatMap(
|
|
171
|
+
(part) => isPlainObject(part) && part.type === "text" && typeof part.text === "string" ? [part.text] : []
|
|
172
|
+
).join("") ?? "";
|
|
173
|
+
}
|
|
174
|
+
function getOutputMessageText(item) {
|
|
175
|
+
return item.content.map((part) => part.text).join("");
|
|
176
|
+
}
|
|
177
|
+
function normalizeFallbackComparisonText(text) {
|
|
178
|
+
return text.trim();
|
|
179
|
+
}
|
|
180
|
+
function matchesFallbackText(messageText, fallbackText) {
|
|
181
|
+
return messageText === fallbackText || normalizeFallbackComparisonText(messageText) === normalizeFallbackComparisonText(fallbackText);
|
|
182
|
+
}
|
|
183
|
+
function hasMatchingAssistantText(messages, item) {
|
|
184
|
+
const fallbackText = getOutputMessageText(item);
|
|
185
|
+
return messages.some(
|
|
186
|
+
(message) => message.role === "assistant" && hasTextPart(message) && matchesFallbackText(getMessageText(message), fallbackText)
|
|
187
|
+
);
|
|
188
|
+
}
|
|
189
|
+
function shouldReplaceAssistantText(messageText, fallbackText) {
|
|
190
|
+
const normalizedMessageText = normalizeFallbackComparisonText(messageText);
|
|
191
|
+
const normalizedFallbackText = normalizeFallbackComparisonText(fallbackText);
|
|
192
|
+
return normalizedFallbackText !== normalizedMessageText && (fallbackText.startsWith(messageText) || normalizedFallbackText.startsWith(normalizedMessageText));
|
|
193
|
+
}
|
|
194
|
+
function getAssistantMessageTexts(messages) {
|
|
195
|
+
return messages.flatMap(
|
|
196
|
+
(message) => message.role === "assistant" && hasTextPart(message) ? [getMessageText(message)] : []
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
function shouldAddFallbackMessageText(messages, item) {
|
|
200
|
+
const assistantTexts = getAssistantMessageTexts(messages);
|
|
201
|
+
if (assistantTexts.length === 0) {
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
const fallbackText = getOutputMessageText(item);
|
|
205
|
+
return assistantTexts.every((messageText) => shouldReplaceAssistantText(messageText, fallbackText));
|
|
206
|
+
}
|
|
207
|
+
function shouldReplaceAssistantTextWithFallback({
|
|
208
|
+
fallbackMessageTexts,
|
|
209
|
+
message,
|
|
210
|
+
textOnlyFallbackMessageTexts
|
|
211
|
+
}) {
|
|
212
|
+
if (message.role !== "assistant" || !hasTextPart(message)) {
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
const messageText = getMessageText(message);
|
|
216
|
+
if (!messageText) {
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
const comparisonTexts = hasToolInvocationPart(message) ? fallbackMessageTexts : textOnlyFallbackMessageTexts;
|
|
220
|
+
return [...comparisonTexts].some((fallbackText) => shouldReplaceAssistantText(messageText, fallbackText));
|
|
221
|
+
}
|
|
222
|
+
function replaceAssistantTextWithFallback({
|
|
223
|
+
fallbackMessageTexts,
|
|
224
|
+
message,
|
|
225
|
+
textOnlyFallbackMessageTexts
|
|
226
|
+
}) {
|
|
227
|
+
if (!shouldReplaceAssistantTextWithFallback({ fallbackMessageTexts, message, textOnlyFallbackMessageTexts })) {
|
|
228
|
+
return message;
|
|
229
|
+
}
|
|
230
|
+
const parts = message.content?.parts ?? [];
|
|
231
|
+
const remainingParts = parts.filter((part) => !(isPlainObject(part) && part.type === "text"));
|
|
232
|
+
return {
|
|
233
|
+
...message,
|
|
234
|
+
content: {
|
|
235
|
+
...message.content,
|
|
236
|
+
parts: remainingParts
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
function parseFunctionCallArguments(value) {
|
|
241
|
+
try {
|
|
242
|
+
return JSON.parse(value);
|
|
243
|
+
} catch {
|
|
244
|
+
return { __raw: value };
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
function createSyntheticToolResultMessage({
|
|
248
|
+
baseMessage,
|
|
249
|
+
item,
|
|
250
|
+
responseId,
|
|
251
|
+
toolCall
|
|
252
|
+
}) {
|
|
253
|
+
return {
|
|
254
|
+
...baseMessage,
|
|
255
|
+
id: `${responseId}:tool-result:${item.call_id}`,
|
|
256
|
+
role: "tool",
|
|
257
|
+
type: "tool-result",
|
|
258
|
+
content: {
|
|
259
|
+
format: 2,
|
|
260
|
+
parts: [
|
|
261
|
+
{
|
|
262
|
+
type: "tool-invocation",
|
|
263
|
+
toolInvocation: {
|
|
264
|
+
state: "result",
|
|
265
|
+
toolCallId: item.call_id,
|
|
266
|
+
toolName: toolCall?.toolName ?? "unknown",
|
|
267
|
+
args: toolCall?.args ?? {},
|
|
268
|
+
result: item.output
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
]
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
function toMastraDBMessage(message) {
|
|
276
|
+
return message;
|
|
277
|
+
}
|
|
278
|
+
function createSyntheticMessagesFromOutputItems({
|
|
279
|
+
contextOutputItems,
|
|
280
|
+
outputItems,
|
|
281
|
+
responseId,
|
|
282
|
+
threadContext
|
|
283
|
+
}) {
|
|
284
|
+
const toolContextItems = contextOutputItems ?? outputItems;
|
|
285
|
+
const toolCallsById = new Map(
|
|
286
|
+
toolContextItems.flatMap(
|
|
287
|
+
(item) => item.type === "function_call" ? [[item.call_id, { args: parseFunctionCallArguments(item.arguments), toolName: item.name }]] : []
|
|
288
|
+
)
|
|
289
|
+
);
|
|
290
|
+
const baseCreatedAt = Date.now();
|
|
291
|
+
return outputItems.map((item, index) => {
|
|
292
|
+
const baseMessage = {
|
|
293
|
+
createdAt: new Date(baseCreatedAt + index),
|
|
294
|
+
threadId: threadContext.threadId,
|
|
295
|
+
resourceId: threadContext.resourceId
|
|
296
|
+
};
|
|
297
|
+
if (item.type === "function_call") {
|
|
298
|
+
return {
|
|
299
|
+
...baseMessage,
|
|
300
|
+
id: `${responseId}:tool-call:${item.call_id}`,
|
|
301
|
+
role: "assistant",
|
|
302
|
+
type: "tool-call",
|
|
303
|
+
content: {
|
|
304
|
+
format: 2,
|
|
305
|
+
parts: [
|
|
306
|
+
{
|
|
307
|
+
type: "tool-invocation",
|
|
308
|
+
toolInvocation: {
|
|
309
|
+
state: "call",
|
|
310
|
+
toolCallId: item.call_id,
|
|
311
|
+
toolName: item.name,
|
|
312
|
+
args: parseFunctionCallArguments(item.arguments)
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
]
|
|
316
|
+
}
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
if (item.type === "function_call_output") {
|
|
320
|
+
const toolCall = toolCallsById.get(item.call_id);
|
|
321
|
+
return toMastraDBMessage(createSyntheticToolResultMessage({ baseMessage, item, responseId, toolCall }));
|
|
322
|
+
}
|
|
323
|
+
return {
|
|
324
|
+
...baseMessage,
|
|
325
|
+
id: item.id,
|
|
326
|
+
role: "assistant",
|
|
327
|
+
type: "text",
|
|
328
|
+
content: {
|
|
329
|
+
format: 2,
|
|
330
|
+
parts: item.content.map((part) => ({ type: "text", text: part.text }))
|
|
331
|
+
}
|
|
332
|
+
};
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
function getToolInvocationParts(message) {
|
|
336
|
+
const parts = Array.isArray(message.content?.parts) ? message.content.parts : [];
|
|
337
|
+
return parts.flatMap(
|
|
338
|
+
(part) => isPlainObject(part) && part.type === "tool-invocation" && isPlainObject(part.toolInvocation) ? [part.toolInvocation] : []
|
|
339
|
+
);
|
|
340
|
+
}
|
|
341
|
+
function getMissingFallbackOutputItems({
|
|
342
|
+
fallbackOutputItems = [],
|
|
343
|
+
messages
|
|
344
|
+
}) {
|
|
345
|
+
if (!fallbackOutputItems.length) {
|
|
346
|
+
return [];
|
|
347
|
+
}
|
|
348
|
+
const existingCallIds = /* @__PURE__ */ new Set();
|
|
349
|
+
const existingResultCallIds = /* @__PURE__ */ new Set();
|
|
350
|
+
for (const message of messages) {
|
|
351
|
+
for (const toolInvocation of getToolInvocationParts(message)) {
|
|
352
|
+
const toolCallId = typeof toolInvocation.toolCallId === "string" ? toolInvocation.toolCallId : null;
|
|
353
|
+
if (!toolCallId) {
|
|
354
|
+
continue;
|
|
355
|
+
}
|
|
356
|
+
if (message.role === "assistant" && (toolInvocation.args !== void 0 || toolInvocation.result === void 0)) {
|
|
357
|
+
existingCallIds.add(toolCallId);
|
|
358
|
+
}
|
|
359
|
+
if (toolInvocation.result !== void 0) {
|
|
360
|
+
existingResultCallIds.add(toolCallId);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
return fallbackOutputItems.filter((item) => {
|
|
365
|
+
if (item.type === "function_call") {
|
|
366
|
+
return !existingCallIds.has(item.call_id);
|
|
367
|
+
}
|
|
368
|
+
if (item.type === "function_call_output") {
|
|
369
|
+
return !existingResultCallIds.has(item.call_id);
|
|
370
|
+
}
|
|
371
|
+
if (item.type === "message") {
|
|
372
|
+
if (!item.content.some((part) => part.text.length > 0) || hasMatchingAssistantText(messages, item)) {
|
|
373
|
+
return false;
|
|
374
|
+
}
|
|
375
|
+
return shouldAddFallbackMessageText(messages, item);
|
|
376
|
+
}
|
|
377
|
+
return false;
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
function getFallbackOutputIdForMessage(message, responseId, fallbackOutputIds) {
|
|
381
|
+
for (const toolInvocation of getToolInvocationParts(message)) {
|
|
382
|
+
const toolCallId = typeof toolInvocation.toolCallId === "string" ? toolInvocation.toolCallId : null;
|
|
383
|
+
if (!toolCallId) {
|
|
384
|
+
continue;
|
|
385
|
+
}
|
|
386
|
+
if (message.role === "assistant" && toolInvocation.args !== void 0) {
|
|
387
|
+
return toolCallId;
|
|
388
|
+
}
|
|
389
|
+
if (toolInvocation.result !== void 0) {
|
|
390
|
+
return `${toolCallId}:output`;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
if (message.role === "assistant" && hasTextPart(message)) {
|
|
394
|
+
return fallbackOutputIds.has(message.id) ? message.id : responseId;
|
|
395
|
+
}
|
|
396
|
+
return null;
|
|
397
|
+
}
|
|
398
|
+
function sortMessagesByFallbackOutputOrder({
|
|
399
|
+
fallbackOutputItems = [],
|
|
400
|
+
messages,
|
|
401
|
+
responseId
|
|
402
|
+
}) {
|
|
403
|
+
if (!fallbackOutputItems.length) {
|
|
404
|
+
return messages;
|
|
405
|
+
}
|
|
406
|
+
const outputOrder = new Map(fallbackOutputItems.map((item, index) => [item.id, index]));
|
|
407
|
+
const fallbackOutputIds = new Set(outputOrder.keys());
|
|
408
|
+
return messages.map((message, index) => ({
|
|
409
|
+
index,
|
|
410
|
+
message,
|
|
411
|
+
outputIndex: outputOrder.get(getFallbackOutputIdForMessage(message, responseId, fallbackOutputIds) ?? "") ?? Number.MAX_SAFE_INTEGER
|
|
412
|
+
})).sort((left, right) => left.outputIndex - right.outputIndex || left.index - right.index).map(({ message }) => message);
|
|
413
|
+
}
|
|
414
|
+
async function resolveResponseTurnMessagesForStorage({
|
|
415
|
+
result,
|
|
416
|
+
responseId,
|
|
417
|
+
text,
|
|
418
|
+
threadContext,
|
|
419
|
+
fallbackOutputItems
|
|
420
|
+
}) {
|
|
421
|
+
const response = await result.response;
|
|
422
|
+
const responseMessages = response?.dbMessages?.length ? response.dbMessages : [];
|
|
423
|
+
if (!threadContext) {
|
|
424
|
+
return responseMessages;
|
|
425
|
+
}
|
|
426
|
+
if (responseMessages.length === 0) {
|
|
427
|
+
if (fallbackOutputItems?.length) {
|
|
428
|
+
const syntheticMessages = createSyntheticMessagesFromOutputItems({
|
|
429
|
+
outputItems: fallbackOutputItems,
|
|
430
|
+
responseId,
|
|
431
|
+
threadContext
|
|
432
|
+
});
|
|
433
|
+
return text && !syntheticMessages.some((message) => message.role === "assistant" && hasTextPart(message)) ? [
|
|
434
|
+
...syntheticMessages,
|
|
435
|
+
createSyntheticResponseMessage({
|
|
436
|
+
createdAt: new Date(new Date(syntheticMessages.at(-1)?.createdAt ?? Date.now()).getTime() + 1),
|
|
437
|
+
responseId,
|
|
438
|
+
text,
|
|
439
|
+
threadContext
|
|
440
|
+
})
|
|
441
|
+
] : syntheticMessages;
|
|
442
|
+
}
|
|
443
|
+
return [createSyntheticResponseMessage({ responseId, text, threadContext })];
|
|
444
|
+
}
|
|
445
|
+
const missingFallbackItems = getMissingFallbackOutputItems({ fallbackOutputItems, messages: responseMessages });
|
|
446
|
+
const missingFallbackMessageIds = new Set(
|
|
447
|
+
missingFallbackItems.filter((item) => item.type === "message").map((item) => item.id)
|
|
448
|
+
);
|
|
449
|
+
const fallbackItemsWithMatchingAssistantText = (fallbackOutputItems ?? []).filter(
|
|
450
|
+
(item) => item.type === "message" && hasMatchingAssistantText(responseMessages, item)
|
|
451
|
+
);
|
|
452
|
+
const textOnlyFallbackMessageTexts = new Set(
|
|
453
|
+
fallbackItemsWithMatchingAssistantText.map(getOutputMessageText).filter(Boolean)
|
|
454
|
+
);
|
|
455
|
+
const fallbackMessageTexts = new Set(
|
|
456
|
+
(fallbackOutputItems ?? []).filter((item) => item.type === "message").filter((item) => missingFallbackMessageIds.has(item.id) || fallbackItemsWithMatchingAssistantText.includes(item)).map(getOutputMessageText).filter(Boolean)
|
|
457
|
+
);
|
|
458
|
+
const baseMessages = fallbackMessageTexts.size ? responseMessages.map(
|
|
459
|
+
(message) => replaceAssistantTextWithFallback({ fallbackMessageTexts, message, textOnlyFallbackMessageTexts })
|
|
460
|
+
) : responseMessages;
|
|
461
|
+
const syntheticFallbackMessages = createSyntheticMessagesFromOutputItems({
|
|
462
|
+
contextOutputItems: fallbackOutputItems ?? [],
|
|
463
|
+
outputItems: missingFallbackItems,
|
|
464
|
+
responseId,
|
|
465
|
+
threadContext
|
|
466
|
+
});
|
|
467
|
+
const resolvedMessages = sortMessagesByFallbackOutputOrder({
|
|
468
|
+
fallbackOutputItems,
|
|
469
|
+
messages: [...baseMessages, ...syntheticFallbackMessages],
|
|
470
|
+
responseId
|
|
471
|
+
});
|
|
472
|
+
if (text && !resolvedMessages.some((message) => message.role === "assistant" && hasTextPart(message))) {
|
|
473
|
+
return [...resolvedMessages, createSyntheticResponseMessage({ responseId, text, threadContext })];
|
|
474
|
+
}
|
|
475
|
+
return resolvedMessages;
|
|
476
|
+
}
|
|
477
|
+
async function persistResponseTurnRecord({
|
|
478
|
+
memoryStore,
|
|
479
|
+
responseId,
|
|
480
|
+
metadata,
|
|
481
|
+
threadContext,
|
|
482
|
+
messages
|
|
483
|
+
}) {
|
|
484
|
+
if (!memoryStore) {
|
|
485
|
+
throw new HTTPException(500, { message: "Memory storage was not available while storing the response" });
|
|
486
|
+
}
|
|
487
|
+
const normalizedMessages = messages.map((message) => ({
|
|
488
|
+
...message,
|
|
489
|
+
threadId: message.threadId ?? threadContext.threadId,
|
|
490
|
+
resourceId: message.resourceId ?? threadContext.resourceId
|
|
491
|
+
}));
|
|
492
|
+
const lastAssistantIndex = [...normalizedMessages].map((message) => message.role).lastIndexOf("assistant");
|
|
493
|
+
const responseAnchorIndex = [...normalizedMessages].map((message, index) => ({ index, message })).reverse().find(({ message }) => message.role === "assistant" && hasTextPart(message))?.index ?? lastAssistantIndex;
|
|
494
|
+
const lastAssistantMessage = responseAnchorIndex >= 0 ? {
|
|
495
|
+
...normalizedMessages[responseAnchorIndex],
|
|
496
|
+
id: responseId
|
|
497
|
+
} : {
|
|
498
|
+
id: responseId,
|
|
499
|
+
role: "assistant",
|
|
500
|
+
type: "text",
|
|
501
|
+
createdAt: new Date(metadata.completedAt ? metadata.completedAt * 1e3 : Date.now()),
|
|
502
|
+
threadId: threadContext.threadId,
|
|
503
|
+
resourceId: threadContext.resourceId,
|
|
504
|
+
content: {
|
|
505
|
+
format: 2,
|
|
506
|
+
parts: []
|
|
507
|
+
}
|
|
508
|
+
};
|
|
509
|
+
if (responseAnchorIndex >= 0) {
|
|
510
|
+
normalizedMessages[responseAnchorIndex] = lastAssistantMessage;
|
|
511
|
+
} else {
|
|
512
|
+
normalizedMessages.push(lastAssistantMessage);
|
|
513
|
+
}
|
|
514
|
+
const storedMessageIndex = responseAnchorIndex >= 0 ? responseAnchorIndex : normalizedMessages.length - 1;
|
|
515
|
+
const droppedSupersededMessageIds = normalizedMessages.flatMap(
|
|
516
|
+
(message, index) => index !== storedMessageIndex && isEmptyAssistantMessage(message) && messages[index]?.id ? [messages[index].id] : []
|
|
517
|
+
);
|
|
518
|
+
const staleMessageIds = responseAnchorIndex >= 0 && messages[responseAnchorIndex]?.id && messages[responseAnchorIndex]?.id !== responseId ? [messages[responseAnchorIndex].id] : [];
|
|
519
|
+
const messagesToSave = normalizedMessages.filter(
|
|
520
|
+
(message, index) => index === storedMessageIndex || !isEmptyAssistantMessage(message)
|
|
521
|
+
);
|
|
522
|
+
const storedMessage = writeResponseTurnRecordMetadata(lastAssistantMessage, {
|
|
523
|
+
...metadata,
|
|
524
|
+
messageIds: messagesToSave.map((message) => message.id)
|
|
525
|
+
});
|
|
526
|
+
if (responseAnchorIndex >= 0) {
|
|
527
|
+
normalizedMessages[responseAnchorIndex] = storedMessage;
|
|
528
|
+
} else {
|
|
529
|
+
normalizedMessages[normalizedMessages.length - 1] = storedMessage;
|
|
530
|
+
}
|
|
531
|
+
const savedMessages = normalizedMessages.filter(
|
|
532
|
+
(message, index) => index === storedMessageIndex || !isEmptyAssistantMessage(message)
|
|
533
|
+
);
|
|
534
|
+
await memoryStore.saveMessages({ messages: savedMessages });
|
|
535
|
+
const deleteMessageIds = [.../* @__PURE__ */ new Set([...staleMessageIds, ...droppedSupersededMessageIds])];
|
|
536
|
+
if (deleteMessageIds.length > 0) {
|
|
537
|
+
await memoryStore.deleteMessages(deleteMessageIds);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
async function deleteResponseTurnRecord({
|
|
541
|
+
responseTurnRecord
|
|
542
|
+
}) {
|
|
543
|
+
const messageIds = responseTurnRecord.messages.length > 0 ? responseTurnRecord.messages.map((message) => message.id) : [responseTurnRecord.message.id];
|
|
544
|
+
await responseTurnRecord.memoryStore.deleteMessages(messageIds);
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
export { deleteResponseTurnRecord, findConversationThreadAcrossAgents, findResponseTurnRecord, findResponseTurnRecordAcrossAgents, getAgentMemoryStore, persistResponseTurnRecord, resolveResponseTurnMessagesForStorage };
|
|
548
|
+
//# sourceMappingURL=chunk-B3CHYE7C.js.map
|
|
549
|
+
//# sourceMappingURL=chunk-B3CHYE7C.js.map
|