@mastra/server 1.32.0-alpha.1 → 1.32.0-alpha.2

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.
Files changed (305) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/_types/@internal_core/dist/index.d.ts +82 -1
  3. package/dist/{chunk-44JNOREB.cjs → chunk-2REMDR2Q.cjs} +12 -12
  4. package/dist/{chunk-44JNOREB.cjs.map → chunk-2REMDR2Q.cjs.map} +1 -1
  5. package/dist/{chunk-W53ZIS6J.js → chunk-33USMBWV.js} +3 -3
  6. package/dist/{chunk-W53ZIS6J.js.map → chunk-33USMBWV.js.map} +1 -1
  7. package/dist/{chunk-ZQVMWCVT.js → chunk-4JWF4VAL.js} +3 -3
  8. package/dist/{chunk-ZQVMWCVT.js.map → chunk-4JWF4VAL.js.map} +1 -1
  9. package/dist/{chunk-53YFG5AY.js → chunk-4L2UVFJO.js} +8 -2
  10. package/dist/chunk-4L2UVFJO.js.map +1 -0
  11. package/dist/{chunk-CXBX2UAP.cjs → chunk-4UMO2IGR.cjs} +7 -7
  12. package/dist/{chunk-CXBX2UAP.cjs.map → chunk-4UMO2IGR.cjs.map} +1 -1
  13. package/dist/{chunk-5KM5P23Q.cjs → chunk-5VMRQT5S.cjs} +29 -29
  14. package/dist/{chunk-5KM5P23Q.cjs.map → chunk-5VMRQT5S.cjs.map} +1 -1
  15. package/dist/{chunk-BCBNR2J2.js → chunk-64M357LE.js} +6 -6
  16. package/dist/{chunk-BCBNR2J2.js.map → chunk-64M357LE.js.map} +1 -1
  17. package/dist/{chunk-CUIH4FYN.js → chunk-67TYG7WH.js} +3 -3
  18. package/dist/{chunk-CUIH4FYN.js.map → chunk-67TYG7WH.js.map} +1 -1
  19. package/dist/{chunk-EAOBAXC7.js → chunk-6M7OOHNA.js} +6 -6
  20. package/dist/{chunk-EAOBAXC7.js.map → chunk-6M7OOHNA.js.map} +1 -1
  21. package/dist/{chunk-HSU5D2KT.js → chunk-72RVQAAZ.js} +4 -4
  22. package/dist/{chunk-HSU5D2KT.js.map → chunk-72RVQAAZ.js.map} +1 -1
  23. package/dist/{chunk-5UKYK7YK.cjs → chunk-7LAFXMXB.cjs} +2 -2
  24. package/dist/{chunk-5UKYK7YK.cjs.map → chunk-7LAFXMXB.cjs.map} +1 -1
  25. package/dist/{chunk-CC6HRROH.cjs → chunk-AF6AYXRW.cjs} +86 -86
  26. package/dist/{chunk-CC6HRROH.cjs.map → chunk-AF6AYXRW.cjs.map} +1 -1
  27. package/dist/{chunk-NB2NE7QS.cjs → chunk-ANEBYNP6.cjs} +89 -67
  28. package/dist/chunk-ANEBYNP6.cjs.map +1 -0
  29. package/dist/{chunk-YI2LXCWB.js → chunk-AOKUS5NX.js} +3 -3
  30. package/dist/{chunk-YI2LXCWB.js.map → chunk-AOKUS5NX.js.map} +1 -1
  31. package/dist/{chunk-GITUJAKR.cjs → chunk-ASVWXKET.cjs} +12 -12
  32. package/dist/{chunk-GITUJAKR.cjs.map → chunk-ASVWXKET.cjs.map} +1 -1
  33. package/dist/{chunk-XG2VRXG5.cjs → chunk-BK2PRWVJ.cjs} +22 -2
  34. package/dist/chunk-BK2PRWVJ.cjs.map +1 -0
  35. package/dist/{chunk-DFEFYM5I.js → chunk-CBSIIPHQ.js} +6 -6
  36. package/dist/{chunk-DFEFYM5I.js.map → chunk-CBSIIPHQ.js.map} +1 -1
  37. package/dist/{chunk-VGR4DSXQ.cjs → chunk-CEZZQMPM.cjs} +11 -11
  38. package/dist/{chunk-VGR4DSXQ.cjs.map → chunk-CEZZQMPM.cjs.map} +1 -1
  39. package/dist/{chunk-OES3CANB.js → chunk-CR7RGILH.js} +3 -3
  40. package/dist/{chunk-OES3CANB.js.map → chunk-CR7RGILH.js.map} +1 -1
  41. package/dist/{chunk-OBYYH7DX.cjs → chunk-CTYPGLJG.cjs} +46 -21
  42. package/dist/chunk-CTYPGLJG.cjs.map +1 -0
  43. package/dist/{chunk-H6NJWTER.cjs → chunk-CZU262RD.cjs} +20 -15
  44. package/dist/chunk-CZU262RD.cjs.map +1 -0
  45. package/dist/{chunk-4IYALPXO.js → chunk-DCMRHRHR.js} +4 -4
  46. package/dist/{chunk-4IYALPXO.js.map → chunk-DCMRHRHR.js.map} +1 -1
  47. package/dist/{chunk-B346SGRP.cjs → chunk-DIBOFJUK.cjs} +11 -11
  48. package/dist/{chunk-B346SGRP.cjs.map → chunk-DIBOFJUK.cjs.map} +1 -1
  49. package/dist/{chunk-DY6OYCMG.js → chunk-DOTOVTE2.js} +4 -4
  50. package/dist/{chunk-DY6OYCMG.js.map → chunk-DOTOVTE2.js.map} +1 -1
  51. package/dist/{chunk-VOAVPKTH.js → chunk-EAJSW5GK.js} +3 -3
  52. package/dist/{chunk-VOAVPKTH.js.map → chunk-EAJSW5GK.js.map} +1 -1
  53. package/dist/{chunk-S7REEERK.cjs → chunk-EWNTXTFB.cjs} +11 -11
  54. package/dist/{chunk-S7REEERK.cjs.map → chunk-EWNTXTFB.cjs.map} +1 -1
  55. package/dist/{chunk-R76F63OE.js → chunk-F23SQINQ.js} +30 -8
  56. package/dist/chunk-F23SQINQ.js.map +1 -0
  57. package/dist/{chunk-6QL3PDQ7.cjs → chunk-F5RU45N6.cjs} +7 -7
  58. package/dist/{chunk-6QL3PDQ7.cjs.map → chunk-F5RU45N6.cjs.map} +1 -1
  59. package/dist/{chunk-TNNU7IZK.cjs → chunk-FFDMYX2V.cjs} +25 -25
  60. package/dist/{chunk-TNNU7IZK.cjs.map → chunk-FFDMYX2V.cjs.map} +1 -1
  61. package/dist/{chunk-ANP3ESTF.js → chunk-FICILXAQ.js} +3 -3
  62. package/dist/{chunk-ANP3ESTF.js.map → chunk-FICILXAQ.js.map} +1 -1
  63. package/dist/{chunk-2QNJHTKM.cjs → chunk-GME2ZNSG.cjs} +11 -11
  64. package/dist/{chunk-2QNJHTKM.cjs.map → chunk-GME2ZNSG.cjs.map} +1 -1
  65. package/dist/{chunk-6SBH6SYP.js → chunk-GOFGQSF7.js} +20 -7
  66. package/dist/chunk-GOFGQSF7.js.map +1 -0
  67. package/dist/{chunk-PQETTP2F.js → chunk-GQOWV33T.js} +3 -3
  68. package/dist/{chunk-PQETTP2F.js.map → chunk-GQOWV33T.js.map} +1 -1
  69. package/dist/{chunk-7RAGUCER.js → chunk-HBWNPGIL.js} +5 -5
  70. package/dist/{chunk-7RAGUCER.js.map → chunk-HBWNPGIL.js.map} +1 -1
  71. package/dist/{chunk-H23VTK56.js → chunk-HKXIZNJC.js} +4 -4
  72. package/dist/{chunk-H23VTK56.js.map → chunk-HKXIZNJC.js.map} +1 -1
  73. package/dist/{chunk-ME255ZWD.cjs → chunk-HN3V6UA4.cjs} +12 -12
  74. package/dist/{chunk-ME255ZWD.cjs.map → chunk-HN3V6UA4.cjs.map} +1 -1
  75. package/dist/{chunk-OGV23F3H.cjs → chunk-IMPWOZUQ.cjs} +28 -15
  76. package/dist/chunk-IMPWOZUQ.cjs.map +1 -0
  77. package/dist/{chunk-ZEESV2HZ.js → chunk-IRKGFNRR.js} +34 -9
  78. package/dist/chunk-IRKGFNRR.js.map +1 -0
  79. package/dist/{chunk-EPM6ILRW.js → chunk-IYEGDP3G.js} +22 -3
  80. package/dist/chunk-IYEGDP3G.js.map +1 -0
  81. package/dist/{chunk-TJAYLVG5.js → chunk-K2KWDOYR.js} +31 -4
  82. package/dist/chunk-K2KWDOYR.js.map +1 -0
  83. package/dist/{chunk-2TRRXAQK.cjs → chunk-K745HNW2.cjs} +11 -11
  84. package/dist/{chunk-2TRRXAQK.cjs.map → chunk-K745HNW2.cjs.map} +1 -1
  85. package/dist/{chunk-YJQYJ5WD.cjs → chunk-K7IVZQKI.cjs} +6 -6
  86. package/dist/{chunk-YJQYJ5WD.cjs.map → chunk-K7IVZQKI.cjs.map} +1 -1
  87. package/dist/{chunk-PA2BYLKF.js → chunk-KDUX3YN3.js} +2 -2
  88. package/dist/{chunk-PA2BYLKF.js.map → chunk-KDUX3YN3.js.map} +1 -1
  89. package/dist/{chunk-LVGLLXRY.cjs → chunk-KQU6VKAO.cjs} +7 -7
  90. package/dist/{chunk-LVGLLXRY.cjs.map → chunk-KQU6VKAO.cjs.map} +1 -1
  91. package/dist/{chunk-QGNNJRKA.js → chunk-KTTHNIBJ.js} +89 -26
  92. package/dist/chunk-KTTHNIBJ.js.map +1 -0
  93. package/dist/{chunk-YP2KYGCY.cjs → chunk-LGR7SFQ5.cjs} +38 -25
  94. package/dist/chunk-LGR7SFQ5.cjs.map +1 -0
  95. package/dist/{chunk-DTB2PQPA.js → chunk-LO7CBY5Q.js} +6 -6
  96. package/dist/{chunk-DTB2PQPA.js.map → chunk-LO7CBY5Q.js.map} +1 -1
  97. package/dist/{chunk-TGZNNEAI.cjs → chunk-M7L5EVQE.cjs} +12 -12
  98. package/dist/{chunk-TGZNNEAI.cjs.map → chunk-M7L5EVQE.cjs.map} +1 -1
  99. package/dist/{chunk-BMWSQ6HM.cjs → chunk-NIRJGDC6.cjs} +4 -4
  100. package/dist/{chunk-BMWSQ6HM.cjs.map → chunk-NIRJGDC6.cjs.map} +1 -1
  101. package/dist/{chunk-HAOI6QSD.js → chunk-NKD5XK43.js} +5 -5
  102. package/dist/{chunk-HAOI6QSD.js.map → chunk-NKD5XK43.js.map} +1 -1
  103. package/dist/{chunk-LTLTS3RN.js → chunk-NRKGN3C5.js} +4 -4
  104. package/dist/{chunk-LTLTS3RN.js.map → chunk-NRKGN3C5.js.map} +1 -1
  105. package/dist/{chunk-NHJFLZZN.cjs → chunk-OBRYBTX6.cjs} +12 -12
  106. package/dist/{chunk-NHJFLZZN.cjs.map → chunk-OBRYBTX6.cjs.map} +1 -1
  107. package/dist/{chunk-N6EQZJFN.js → chunk-OCBL7S62.js} +6 -6
  108. package/dist/{chunk-N6EQZJFN.js.map → chunk-OCBL7S62.js.map} +1 -1
  109. package/dist/{chunk-JCWPQ5DD.cjs → chunk-ODCWNXTX.cjs} +8 -8
  110. package/dist/{chunk-JCWPQ5DD.cjs.map → chunk-ODCWNXTX.cjs.map} +1 -1
  111. package/dist/{chunk-PQDR7XQP.js → chunk-OJ7SK6PH.js} +373 -52
  112. package/dist/chunk-OJ7SK6PH.js.map +1 -0
  113. package/dist/{chunk-LHY3IIL2.js → chunk-OPBMOOBR.js} +5 -5
  114. package/dist/{chunk-LHY3IIL2.js.map → chunk-OPBMOOBR.js.map} +1 -1
  115. package/dist/{chunk-2MWLNHBG.cjs → chunk-OQHTG2JK.cjs} +11 -11
  116. package/dist/{chunk-2MWLNHBG.cjs.map → chunk-OQHTG2JK.cjs.map} +1 -1
  117. package/dist/{chunk-4BSJHDYP.js → chunk-OUS6FNA7.js} +11 -6
  118. package/dist/chunk-OUS6FNA7.js.map +1 -0
  119. package/dist/{chunk-OGEXISZT.cjs → chunk-OZC7GEO5.cjs} +11 -11
  120. package/dist/{chunk-OGEXISZT.cjs.map → chunk-OZC7GEO5.cjs.map} +1 -1
  121. package/dist/{chunk-WFVK6ZXR.cjs → chunk-Q2T2Q4S5.cjs} +6 -6
  122. package/dist/{chunk-WFVK6ZXR.cjs.map → chunk-Q2T2Q4S5.cjs.map} +1 -1
  123. package/dist/{chunk-CKZMJIUO.cjs → chunk-R3DQGOTC.cjs} +6 -6
  124. package/dist/{chunk-CKZMJIUO.cjs.map → chunk-R3DQGOTC.cjs.map} +1 -1
  125. package/dist/{chunk-IQA7HL2V.js → chunk-R7X4YOSH.js} +51 -10
  126. package/dist/chunk-R7X4YOSH.js.map +1 -0
  127. package/dist/{chunk-NRFMMYTG.js → chunk-RF5ZDERV.js} +4 -4
  128. package/dist/{chunk-NRFMMYTG.js.map → chunk-RF5ZDERV.js.map} +1 -1
  129. package/dist/{chunk-O6YA7VM3.cjs → chunk-RL34ZMLF.cjs} +159 -96
  130. package/dist/chunk-RL34ZMLF.cjs.map +1 -0
  131. package/dist/{chunk-DITB4LGJ.js → chunk-RPEPKUZQ.js} +12 -11
  132. package/dist/chunk-RPEPKUZQ.js.map +1 -0
  133. package/dist/{chunk-TU7U5XUE.cjs → chunk-SUT6SU4I.cjs} +8 -2
  134. package/dist/chunk-SUT6SU4I.cjs.map +1 -0
  135. package/dist/{chunk-FRKJAWEK.cjs → chunk-T6MMZWHW.cjs} +426 -105
  136. package/dist/chunk-T6MMZWHW.cjs.map +1 -0
  137. package/dist/{chunk-KG2CULOS.js → chunk-TLOT3CIB.js} +6 -6
  138. package/dist/{chunk-KG2CULOS.js.map → chunk-TLOT3CIB.js.map} +1 -1
  139. package/dist/{chunk-3NNQG5XP.js → chunk-VG6A54JE.js} +3 -3
  140. package/dist/{chunk-3NNQG5XP.js.map → chunk-VG6A54JE.js.map} +1 -1
  141. package/dist/{chunk-UMVQATCY.js → chunk-VRPAOMXW.js} +25 -12
  142. package/dist/chunk-VRPAOMXW.js.map +1 -0
  143. package/dist/{chunk-EFP5PJBY.cjs → chunk-WMFH3SH2.cjs} +136 -94
  144. package/dist/chunk-WMFH3SH2.cjs.map +1 -0
  145. package/dist/{chunk-NBEKX4M5.js → chunk-WYSQECWW.js} +8 -8
  146. package/dist/{chunk-NBEKX4M5.js.map → chunk-WYSQECWW.js.map} +1 -1
  147. package/dist/{chunk-ERKUFMCT.js → chunk-X2LYM3QK.js} +3 -3
  148. package/dist/{chunk-ERKUFMCT.js.map → chunk-X2LYM3QK.js.map} +1 -1
  149. package/dist/{chunk-OGZ6ROYD.js → chunk-X3RINDH6.js} +6 -5
  150. package/dist/chunk-X3RINDH6.js.map +1 -0
  151. package/dist/{chunk-7QAQXIA4.cjs → chunk-X47OINMY.cjs} +17 -17
  152. package/dist/{chunk-7QAQXIA4.cjs.map → chunk-X47OINMY.cjs.map} +1 -1
  153. package/dist/{chunk-RTYIV265.cjs → chunk-XCXPPGJ3.cjs} +13 -13
  154. package/dist/{chunk-RTYIV265.cjs.map → chunk-XCXPPGJ3.cjs.map} +1 -1
  155. package/dist/{chunk-3S5WOAYR.cjs → chunk-XEERRXWL.cjs} +31 -3
  156. package/dist/chunk-XEERRXWL.cjs.map +1 -0
  157. package/dist/{chunk-NUGBBASK.js → chunk-XOHBH6NQ.js} +4 -4
  158. package/dist/{chunk-NUGBBASK.js.map → chunk-XOHBH6NQ.js.map} +1 -1
  159. package/dist/{chunk-OLPARCPM.cjs → chunk-XUFQVLBC.cjs} +5 -5
  160. package/dist/{chunk-OLPARCPM.cjs.map → chunk-XUFQVLBC.cjs.map} +1 -1
  161. package/dist/{chunk-U4ZN4PDI.cjs → chunk-YMBKVVDF.cjs} +22 -21
  162. package/dist/chunk-YMBKVVDF.cjs.map +1 -0
  163. package/dist/{chunk-I2IUAPQE.cjs → chunk-ZCCXXT7V.cjs} +12 -12
  164. package/dist/{chunk-I2IUAPQE.cjs.map → chunk-ZCCXXT7V.cjs.map} +1 -1
  165. package/dist/{chunk-EBKNX5RM.cjs → chunk-ZHEQYOTL.cjs} +53 -52
  166. package/dist/chunk-ZHEQYOTL.cjs.map +1 -0
  167. package/dist/docs/SKILL.md +1 -1
  168. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  169. package/dist/server/auth/helpers.d.ts +9 -1
  170. package/dist/server/auth/helpers.d.ts.map +1 -1
  171. package/dist/server/auth/index.cjs +18 -14
  172. package/dist/server/auth/index.js +1 -1
  173. package/dist/server/handlers/a2a.cjs +10 -10
  174. package/dist/server/handlers/a2a.js +1 -1
  175. package/dist/server/handlers/agent-builder.cjs +16 -16
  176. package/dist/server/handlers/agent-builder.js +1 -1
  177. package/dist/server/handlers/agent-versions.cjs +8 -8
  178. package/dist/server/handlers/agent-versions.js +1 -1
  179. package/dist/server/handlers/agents.cjs +38 -38
  180. package/dist/server/handlers/agents.d.ts.map +1 -1
  181. package/dist/server/handlers/agents.js +1 -1
  182. package/dist/server/handlers/auth.cjs +11 -11
  183. package/dist/server/handlers/auth.d.ts.map +1 -1
  184. package/dist/server/handlers/auth.js +1 -1
  185. package/dist/server/handlers/background-tasks.cjs +4 -4
  186. package/dist/server/handlers/background-tasks.js +1 -1
  187. package/dist/server/handlers/channels.cjs +5 -5
  188. package/dist/server/handlers/channels.js +1 -1
  189. package/dist/server/handlers/conversations.cjs +5 -5
  190. package/dist/server/handlers/conversations.d.ts.map +1 -1
  191. package/dist/server/handlers/conversations.js +1 -1
  192. package/dist/server/handlers/datasets.cjs +26 -26
  193. package/dist/server/handlers/datasets.js +1 -1
  194. package/dist/server/handlers/logs.cjs +4 -4
  195. package/dist/server/handlers/logs.js +1 -1
  196. package/dist/server/handlers/mcp-client-versions.cjs +8 -8
  197. package/dist/server/handlers/mcp-client-versions.js +1 -1
  198. package/dist/server/handlers/mcp.cjs +9 -9
  199. package/dist/server/handlers/mcp.d.ts.map +1 -1
  200. package/dist/server/handlers/mcp.js +1 -1
  201. package/dist/server/handlers/memory.cjs +27 -27
  202. package/dist/server/handlers/memory.d.ts.map +1 -1
  203. package/dist/server/handlers/memory.js +1 -1
  204. package/dist/server/handlers/observability-new-endpoints.cjs +31 -27
  205. package/dist/server/handlers/observability-new-endpoints.d.ts +315 -19
  206. package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
  207. package/dist/server/handlers/observability-new-endpoints.js +1 -1
  208. package/dist/server/handlers/observability-shared.cjs +5 -5
  209. package/dist/server/handlers/observability-shared.d.ts +6 -0
  210. package/dist/server/handlers/observability-shared.d.ts.map +1 -1
  211. package/dist/server/handlers/observability-shared.js +1 -1
  212. package/dist/server/handlers/observability.cjs +39 -35
  213. package/dist/server/handlers/observability.js +2 -2
  214. package/dist/server/handlers/processor-providers.cjs +3 -3
  215. package/dist/server/handlers/processor-providers.js +1 -1
  216. package/dist/server/handlers/processors.cjs +4 -4
  217. package/dist/server/handlers/processors.js +1 -1
  218. package/dist/server/handlers/prompt-block-versions.cjs +8 -8
  219. package/dist/server/handlers/prompt-block-versions.js +1 -1
  220. package/dist/server/handlers/responses.cjs +4 -4
  221. package/dist/server/handlers/responses.d.ts.map +1 -1
  222. package/dist/server/handlers/responses.js +1 -1
  223. package/dist/server/handlers/responses.storage.cjs +8 -8
  224. package/dist/server/handlers/responses.storage.js +1 -1
  225. package/dist/server/handlers/schedules.cjs +6 -6
  226. package/dist/server/handlers/schedules.js +1 -1
  227. package/dist/server/handlers/scorer-versions.cjs +8 -8
  228. package/dist/server/handlers/scorer-versions.js +1 -1
  229. package/dist/server/handlers/scores.cjs +7 -7
  230. package/dist/server/handlers/scores.js +1 -1
  231. package/dist/server/handlers/stored-agents.cjs +7 -7
  232. package/dist/server/handlers/stored-agents.js +1 -1
  233. package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
  234. package/dist/server/handlers/stored-mcp-clients.js +1 -1
  235. package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
  236. package/dist/server/handlers/stored-prompt-blocks.js +1 -1
  237. package/dist/server/handlers/stored-scorers.cjs +6 -6
  238. package/dist/server/handlers/stored-scorers.js +1 -1
  239. package/dist/server/handlers/stored-skills.cjs +7 -7
  240. package/dist/server/handlers/stored-skills.js +1 -1
  241. package/dist/server/handlers/stored-workspaces.cjs +6 -6
  242. package/dist/server/handlers/stored-workspaces.js +1 -1
  243. package/dist/server/handlers/system.cjs +2 -2
  244. package/dist/server/handlers/system.js +1 -1
  245. package/dist/server/handlers/tool-providers.cjs +5 -5
  246. package/dist/server/handlers/tool-providers.js +1 -1
  247. package/dist/server/handlers/tools.cjs +6 -6
  248. package/dist/server/handlers/tools.d.ts.map +1 -1
  249. package/dist/server/handlers/tools.js +1 -1
  250. package/dist/server/handlers/utils.cjs +13 -9
  251. package/dist/server/handlers/utils.d.ts +15 -0
  252. package/dist/server/handlers/utils.d.ts.map +1 -1
  253. package/dist/server/handlers/utils.js +1 -1
  254. package/dist/server/handlers/vector.cjs +16 -16
  255. package/dist/server/handlers/vector.js +1 -1
  256. package/dist/server/handlers/voice.cjs +8 -8
  257. package/dist/server/handlers/voice.js +1 -1
  258. package/dist/server/handlers/workflows.cjs +24 -24
  259. package/dist/server/handlers/workflows.d.ts.map +1 -1
  260. package/dist/server/handlers/workflows.js +1 -1
  261. package/dist/server/handlers/workspace.cjs +26 -26
  262. package/dist/server/handlers/workspace.js +1 -1
  263. package/dist/server/handlers.cjs +37 -37
  264. package/dist/server/handlers.js +15 -15
  265. package/dist/server/schemas/index.cjs +307 -307
  266. package/dist/server/schemas/index.js +5 -5
  267. package/dist/server/server-adapter/index.cjs +385 -324
  268. package/dist/server/server-adapter/index.cjs.map +1 -1
  269. package/dist/server/server-adapter/index.d.ts +9 -0
  270. package/dist/server/server-adapter/index.d.ts.map +1 -1
  271. package/dist/server/server-adapter/index.js +101 -41
  272. package/dist/server/server-adapter/index.js.map +1 -1
  273. package/dist/server/server-adapter/routes/index.d.ts +19 -3
  274. package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
  275. package/dist/server/server-adapter/routes/observability.d.ts +156 -9
  276. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
  277. package/dist/server/server-adapter/routes/route-builder.d.ts +15 -1
  278. package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -1
  279. package/package.json +6 -4
  280. package/dist/chunk-3S5WOAYR.cjs.map +0 -1
  281. package/dist/chunk-4BSJHDYP.js.map +0 -1
  282. package/dist/chunk-53YFG5AY.js.map +0 -1
  283. package/dist/chunk-6SBH6SYP.js.map +0 -1
  284. package/dist/chunk-DITB4LGJ.js.map +0 -1
  285. package/dist/chunk-EBKNX5RM.cjs.map +0 -1
  286. package/dist/chunk-EFP5PJBY.cjs.map +0 -1
  287. package/dist/chunk-EPM6ILRW.js.map +0 -1
  288. package/dist/chunk-FRKJAWEK.cjs.map +0 -1
  289. package/dist/chunk-H6NJWTER.cjs.map +0 -1
  290. package/dist/chunk-IQA7HL2V.js.map +0 -1
  291. package/dist/chunk-NB2NE7QS.cjs.map +0 -1
  292. package/dist/chunk-O6YA7VM3.cjs.map +0 -1
  293. package/dist/chunk-OBYYH7DX.cjs.map +0 -1
  294. package/dist/chunk-OGV23F3H.cjs.map +0 -1
  295. package/dist/chunk-OGZ6ROYD.js.map +0 -1
  296. package/dist/chunk-PQDR7XQP.js.map +0 -1
  297. package/dist/chunk-QGNNJRKA.js.map +0 -1
  298. package/dist/chunk-R76F63OE.js.map +0 -1
  299. package/dist/chunk-TJAYLVG5.js.map +0 -1
  300. package/dist/chunk-TU7U5XUE.cjs.map +0 -1
  301. package/dist/chunk-U4ZN4PDI.cjs.map +0 -1
  302. package/dist/chunk-UMVQATCY.js.map +0 -1
  303. package/dist/chunk-XG2VRXG5.cjs.map +0 -1
  304. package/dist/chunk-YP2KYGCY.cjs.map +0 -1
  305. package/dist/chunk-ZEESV2HZ.js.map +0 -1
@@ -2,11 +2,12 @@
2
2
 
3
3
  var chunkLFZO2LHV_cjs = require('./chunk-LFZO2LHV.cjs');
4
4
  var chunkBYX5LHPW_cjs = require('./chunk-BYX5LHPW.cjs');
5
- var chunk3S5WOAYR_cjs = require('./chunk-3S5WOAYR.cjs');
6
- var chunk5UKYK7YK_cjs = require('./chunk-5UKYK7YK.cjs');
5
+ var chunkXEERRXWL_cjs = require('./chunk-XEERRXWL.cjs');
7
6
  var chunkB34S64RC_cjs = require('./chunk-B34S64RC.cjs');
7
+ var chunk7LAFXMXB_cjs = require('./chunk-7LAFXMXB.cjs');
8
8
  var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
9
9
  var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
10
+ var ee = require('@mastra/core/auth/ee');
10
11
  var utils = require('@mastra/core/utils');
11
12
 
12
13
  // src/server/handlers/memory.ts
@@ -39,6 +40,82 @@ chunkO7I5CWRX_cjs.__export(memory_exports, {
39
40
  UPDATE_WORKING_MEMORY_ROUTE: () => UPDATE_WORKING_MEMORY_ROUTE,
40
41
  getTextContent: () => getTextContent
41
42
  });
43
+ function hasFGAUser(requestContext) {
44
+ const user = requestContext?.get("user");
45
+ return !!user && typeof user === "object";
46
+ }
47
+ function shouldFilterThreadsWithFGA(mastra, requestContext) {
48
+ return !!mastra.getServer?.()?.fga && hasFGAUser(requestContext);
49
+ }
50
+ async function filterAccessibleThreads({
51
+ mastra,
52
+ requestContext,
53
+ threads
54
+ }) {
55
+ const fgaProvider = mastra.getServer?.()?.fga;
56
+ if (!fgaProvider || !hasFGAUser(requestContext) || threads.length === 0) {
57
+ return threads;
58
+ }
59
+ return fgaProvider.filterAccessible(
60
+ requestContext.get("user"),
61
+ threads,
62
+ "thread",
63
+ ee.MastraFGAPermissions.MEMORY_READ
64
+ );
65
+ }
66
+ function paginateThreads({
67
+ threads,
68
+ page,
69
+ perPage
70
+ }) {
71
+ const effectivePage = page ?? 0;
72
+ const effectivePerPage = perPage ?? 100;
73
+ if (effectivePerPage === false) {
74
+ return {
75
+ threads,
76
+ page: effectivePage,
77
+ perPage: false,
78
+ total: threads.length,
79
+ hasMore: false
80
+ };
81
+ }
82
+ const start = effectivePage * effectivePerPage;
83
+ const pagedThreads = threads.slice(start, start + effectivePerPage);
84
+ return {
85
+ threads: pagedThreads,
86
+ page: effectivePage,
87
+ perPage: effectivePerPage,
88
+ total: threads.length,
89
+ hasMore: start + pagedThreads.length < threads.length
90
+ };
91
+ }
92
+ async function enforceDeleteMessagesThreadAccess({
93
+ mastra,
94
+ requestContext,
95
+ memoryStore,
96
+ messageIds,
97
+ effectiveResourceId
98
+ }) {
99
+ const { messages } = await memoryStore.listMessagesById({ messageIds });
100
+ const threadIds = [...new Set(messages.map((m) => m.threadId).filter(Boolean))];
101
+ if (messages.some((message) => !message.threadId)) {
102
+ throw new chunk64ITUOXI_cjs.HTTPException(403, { message: "Access denied: unable to verify message thread access" });
103
+ }
104
+ for (const threadId of threadIds) {
105
+ const thread = await memoryStore.getThreadById({ threadId });
106
+ if (!thread) {
107
+ throw new chunk64ITUOXI_cjs.HTTPException(403, { message: "Access denied: unable to verify message thread access" });
108
+ }
109
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
110
+ mastra,
111
+ requestContext,
112
+ threadId,
113
+ thread,
114
+ effectiveResourceId,
115
+ permission: ee.MastraFGAPermissions.MEMORY_DELETE
116
+ });
117
+ }
118
+ }
42
119
  function getTextContent(message) {
43
120
  if (typeof message.content === "string") {
44
121
  return message.content;
@@ -210,7 +287,7 @@ async function getOMStatus(memoryStorage, resourceId, threadId) {
210
287
  return null;
211
288
  }
212
289
  }
213
- var GET_MEMORY_STATUS_ROUTE = chunk5UKYK7YK_cjs.createRoute({
290
+ var GET_MEMORY_STATUS_ROUTE = chunk7LAFXMXB_cjs.createRoute({
214
291
  method: "GET",
215
292
  path: "/memory/status",
216
293
  responseType: "json",
@@ -295,7 +372,7 @@ var GET_MEMORY_STATUS_ROUTE = chunk5UKYK7YK_cjs.createRoute({
295
372
  }
296
373
  }
297
374
  });
298
- var GET_MEMORY_CONFIG_ROUTE = chunk5UKYK7YK_cjs.createRoute({
375
+ var GET_MEMORY_CONFIG_ROUTE = chunk7LAFXMXB_cjs.createRoute({
299
376
  method: "GET",
300
377
  path: "/memory/config",
301
378
  responseType: "json",
@@ -341,7 +418,7 @@ var GET_MEMORY_CONFIG_ROUTE = chunk5UKYK7YK_cjs.createRoute({
341
418
  }
342
419
  }
343
420
  });
344
- var GET_OBSERVATIONAL_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
421
+ var GET_OBSERVATIONAL_MEMORY_ROUTE = chunk7LAFXMXB_cjs.createRoute({
345
422
  method: "GET",
346
423
  path: "/memory/observational-memory",
347
424
  responseType: "json",
@@ -411,7 +488,7 @@ var GET_OBSERVATIONAL_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
411
488
  }
412
489
  }
413
490
  });
414
- var AWAIT_BUFFER_STATUS_ROUTE = chunk5UKYK7YK_cjs.createRoute({
491
+ var AWAIT_BUFFER_STATUS_ROUTE = chunk7LAFXMXB_cjs.createRoute({
415
492
  method: "POST",
416
493
  path: "/memory/observational-memory/buffer-status",
417
494
  responseType: "json",
@@ -481,7 +558,7 @@ var AWAIT_BUFFER_STATUS_ROUTE = chunk5UKYK7YK_cjs.createRoute({
481
558
  }
482
559
  }
483
560
  });
484
- var LIST_THREADS_ROUTE = chunk5UKYK7YK_cjs.createRoute({
561
+ var LIST_THREADS_ROUTE = chunk7LAFXMXB_cjs.createRoute({
485
562
  method: "GET",
486
563
  path: "/memory/threads",
487
564
  responseType: "json",
@@ -493,12 +570,34 @@ var LIST_THREADS_ROUTE = chunk5UKYK7YK_cjs.createRoute({
493
570
  requiresAuth: true,
494
571
  handler: async ({ mastra, agentId, resourceId, metadata, requestContext, page, perPage, orderBy }) => {
495
572
  try {
496
- const effectiveResourceId = chunk3S5WOAYR_cjs.getEffectiveResourceId(requestContext, resourceId);
573
+ const effectiveResourceId = chunkXEERRXWL_cjs.getEffectiveResourceId(requestContext, resourceId);
497
574
  const agent = await getAgentFromContext({ mastra, agentId, requestContext });
498
575
  const isGateway = agent ? await chunkLFZO2LHV_cjs.isGatewayAgentAsync(agent) : false;
499
576
  if (agent && isGateway) {
500
577
  const gwClient = chunkLFZO2LHV_cjs.getGatewayClient();
501
578
  if (gwClient) {
579
+ if (shouldFilterThreadsWithFGA(mastra, requestContext)) {
580
+ const initialResult = await gwClient.listThreads({
581
+ resourceId: effectiveResourceId,
582
+ limit: 1,
583
+ offset: 0
584
+ });
585
+ const allThreads = initialResult.total > 0 ? (await gwClient.listThreads({
586
+ resourceId: effectiveResourceId,
587
+ limit: initialResult.total,
588
+ offset: 0
589
+ })).threads.map(chunkLFZO2LHV_cjs.toLocalThread) : [];
590
+ const accessibleThreads = await filterAccessibleThreads({
591
+ mastra,
592
+ requestContext,
593
+ threads: allThreads
594
+ });
595
+ return paginateThreads({
596
+ threads: accessibleThreads,
597
+ page,
598
+ perPage
599
+ });
600
+ }
502
601
  const effectivePage = page ?? 0;
503
602
  const effectivePerPage = perPage ?? 100;
504
603
  const offset = effectivePage * effectivePerPage;
@@ -525,25 +624,61 @@ var LIST_THREADS_ROUTE = chunk5UKYK7YK_cjs.createRoute({
525
624
  }
526
625
  const memory = await getMemoryFromContext({ mastra, agentId, requestContext, allowMissingAgent: true });
527
626
  if (memory) {
528
- const result = await memory.listThreads({
529
- filter,
627
+ const result = await memory.listThreads(
628
+ shouldFilterThreadsWithFGA(mastra, requestContext) ? {
629
+ filter,
630
+ perPage: false,
631
+ orderBy
632
+ } : {
633
+ filter,
634
+ page,
635
+ perPage,
636
+ orderBy
637
+ }
638
+ );
639
+ if (!shouldFilterThreadsWithFGA(mastra, requestContext)) {
640
+ return result;
641
+ }
642
+ const accessibleThreads = await filterAccessibleThreads({
643
+ mastra,
644
+ requestContext,
645
+ threads: result.threads
646
+ });
647
+ return paginateThreads({
648
+ threads: accessibleThreads,
530
649
  page,
531
- perPage,
532
- orderBy
650
+ perPage
533
651
  });
534
- return result;
535
652
  }
536
653
  const storage = getStorageFromContext({ mastra });
537
654
  if (storage) {
538
655
  const memoryStore = await storage.getStore("memory");
539
656
  if (memoryStore) {
540
- const result = await memoryStore.listThreads({
541
- filter,
657
+ const result = await memoryStore.listThreads(
658
+ shouldFilterThreadsWithFGA(mastra, requestContext) ? {
659
+ filter,
660
+ perPage: false,
661
+ orderBy
662
+ } : {
663
+ filter,
664
+ page,
665
+ perPage,
666
+ orderBy
667
+ }
668
+ );
669
+ if (!shouldFilterThreadsWithFGA(mastra, requestContext)) {
670
+ return result;
671
+ }
672
+ const accessibleThreads = await filterAccessibleThreads({
673
+ mastra,
674
+ requestContext,
675
+ threads: result.threads
676
+ });
677
+ return paginateThreads({
678
+ threads: accessibleThreads,
542
679
  page,
543
- perPage,
544
- orderBy
680
+ perPage
545
681
  });
546
- return result;
547
682
  }
548
683
  }
549
684
  throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
@@ -552,7 +687,7 @@ var LIST_THREADS_ROUTE = chunk5UKYK7YK_cjs.createRoute({
552
687
  }
553
688
  }
554
689
  });
555
- var GET_THREAD_BY_ID_ROUTE = chunk5UKYK7YK_cjs.createRoute({
690
+ var GET_THREAD_BY_ID_ROUTE = chunk7LAFXMXB_cjs.createRoute({
556
691
  method: "GET",
557
692
  path: "/memory/threads/:threadId",
558
693
  responseType: "json",
@@ -565,9 +700,9 @@ var GET_THREAD_BY_ID_ROUTE = chunk5UKYK7YK_cjs.createRoute({
565
700
  requiresAuth: true,
566
701
  handler: async ({ mastra, agentId, threadId, resourceId, requestContext }) => {
567
702
  try {
568
- const effectiveThreadId = chunk3S5WOAYR_cjs.getEffectiveThreadId(requestContext, threadId);
569
- const effectiveResourceId = chunk3S5WOAYR_cjs.getEffectiveResourceId(requestContext, resourceId);
570
- chunk3S5WOAYR_cjs.validateBody({ threadId: effectiveThreadId });
703
+ const effectiveThreadId = chunkXEERRXWL_cjs.getEffectiveThreadId(requestContext, threadId);
704
+ const effectiveResourceId = chunkXEERRXWL_cjs.getEffectiveResourceId(requestContext, resourceId);
705
+ chunkXEERRXWL_cjs.validateBody({ threadId: effectiveThreadId });
571
706
  const agent = await getAgentFromContext({ mastra, agentId, requestContext });
572
707
  const isGateway = agent ? await chunkLFZO2LHV_cjs.isGatewayAgentAsync(agent) : false;
573
708
  if (agent && isGateway) {
@@ -585,7 +720,13 @@ var GET_THREAD_BY_ID_ROUTE = chunk5UKYK7YK_cjs.createRoute({
585
720
  };
586
721
  }
587
722
  const thread = chunkLFZO2LHV_cjs.toLocalThread(result.thread);
588
- await chunk3S5WOAYR_cjs.validateThreadOwnership(thread, effectiveResourceId);
723
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
724
+ mastra,
725
+ requestContext,
726
+ threadId: effectiveThreadId,
727
+ thread,
728
+ effectiveResourceId
729
+ });
589
730
  return thread;
590
731
  }
591
732
  }
@@ -595,7 +736,13 @@ var GET_THREAD_BY_ID_ROUTE = chunk5UKYK7YK_cjs.createRoute({
595
736
  if (!thread) {
596
737
  throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Thread not found" });
597
738
  }
598
- await chunk3S5WOAYR_cjs.validateThreadOwnership(thread, effectiveResourceId);
739
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
740
+ mastra,
741
+ requestContext,
742
+ threadId: effectiveThreadId,
743
+ thread,
744
+ effectiveResourceId
745
+ });
599
746
  return thread;
600
747
  }
601
748
  const storage = getStorageFromContext({ mastra });
@@ -606,7 +753,13 @@ var GET_THREAD_BY_ID_ROUTE = chunk5UKYK7YK_cjs.createRoute({
606
753
  if (!thread) {
607
754
  throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Thread not found" });
608
755
  }
609
- await chunk3S5WOAYR_cjs.validateThreadOwnership(thread, effectiveResourceId);
756
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
757
+ mastra,
758
+ requestContext,
759
+ threadId: effectiveThreadId,
760
+ thread,
761
+ effectiveResourceId
762
+ });
610
763
  return thread;
611
764
  }
612
765
  }
@@ -616,7 +769,7 @@ var GET_THREAD_BY_ID_ROUTE = chunk5UKYK7YK_cjs.createRoute({
616
769
  }
617
770
  }
618
771
  });
619
- var LIST_MESSAGES_ROUTE = chunk5UKYK7YK_cjs.createRoute({
772
+ var LIST_MESSAGES_ROUTE = chunk7LAFXMXB_cjs.createRoute({
620
773
  method: "GET",
621
774
  path: "/memory/threads/:threadId/messages",
622
775
  responseType: "json",
@@ -641,9 +794,9 @@ var LIST_MESSAGES_ROUTE = chunk5UKYK7YK_cjs.createRoute({
641
794
  requestContext
642
795
  }) => {
643
796
  try {
644
- const effectiveThreadId = chunk3S5WOAYR_cjs.getEffectiveThreadId(requestContext, threadId);
645
- const effectiveResourceId = chunk3S5WOAYR_cjs.getEffectiveResourceId(requestContext, resourceId);
646
- chunk3S5WOAYR_cjs.validateBody({ threadId: effectiveThreadId });
797
+ const effectiveThreadId = chunkXEERRXWL_cjs.getEffectiveThreadId(requestContext, threadId);
798
+ const effectiveResourceId = chunkXEERRXWL_cjs.getEffectiveResourceId(requestContext, resourceId);
799
+ chunkXEERRXWL_cjs.validateBody({ threadId: effectiveThreadId });
647
800
  if (!effectiveThreadId) {
648
801
  throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "No threadId found" });
649
802
  }
@@ -653,7 +806,13 @@ var LIST_MESSAGES_ROUTE = chunk5UKYK7YK_cjs.createRoute({
653
806
  if (gwClient) {
654
807
  const threadResult = await gwClient.getThread(effectiveThreadId);
655
808
  if (threadResult) {
656
- await chunk3S5WOAYR_cjs.validateThreadOwnership(chunkLFZO2LHV_cjs.toLocalThread(threadResult.thread), effectiveResourceId);
809
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
810
+ mastra,
811
+ requestContext,
812
+ threadId: effectiveThreadId,
813
+ thread: chunkLFZO2LHV_cjs.toLocalThread(threadResult.thread),
814
+ effectiveResourceId
815
+ });
657
816
  }
658
817
  const effectivePage = page ?? 0;
659
818
  const effectivePerPage = perPage ?? 100;
@@ -678,7 +837,13 @@ var LIST_MESSAGES_ROUTE = chunk5UKYK7YK_cjs.createRoute({
678
837
  if (!thread) {
679
838
  throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Thread not found" });
680
839
  }
681
- await chunk3S5WOAYR_cjs.validateThreadOwnership(thread, effectiveResourceId);
840
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
841
+ mastra,
842
+ requestContext,
843
+ threadId: effectiveThreadId,
844
+ thread,
845
+ effectiveResourceId
846
+ });
682
847
  const result = await memory.recall({
683
848
  threadId: effectiveThreadId,
684
849
  resourceId: effectiveResourceId,
@@ -699,7 +864,13 @@ var LIST_MESSAGES_ROUTE = chunk5UKYK7YK_cjs.createRoute({
699
864
  if (!thread) {
700
865
  throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Thread not found" });
701
866
  }
702
- await chunk3S5WOAYR_cjs.validateThreadOwnership(thread, effectiveResourceId);
867
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
868
+ mastra,
869
+ requestContext,
870
+ threadId: effectiveThreadId,
871
+ thread,
872
+ effectiveResourceId
873
+ });
703
874
  const result = await memoryStore.listMessages({
704
875
  threadId: effectiveThreadId,
705
876
  resourceId: effectiveResourceId,
@@ -718,7 +889,7 @@ var LIST_MESSAGES_ROUTE = chunk5UKYK7YK_cjs.createRoute({
718
889
  }
719
890
  })
720
891
  });
721
- var GET_WORKING_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
892
+ var GET_WORKING_MEMORY_ROUTE = chunk7LAFXMXB_cjs.createRoute({
722
893
  method: "GET",
723
894
  path: "/memory/threads/:threadId/working-memory",
724
895
  responseType: "json",
@@ -731,9 +902,9 @@ var GET_WORKING_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
731
902
  requiresAuth: true,
732
903
  handler: async ({ mastra, agentId, threadId, resourceId, requestContext, memoryConfig }) => {
733
904
  try {
734
- const effectiveThreadId = chunk3S5WOAYR_cjs.getEffectiveThreadId(requestContext, threadId);
735
- const effectiveResourceId = chunk3S5WOAYR_cjs.getEffectiveResourceId(requestContext, resourceId);
736
- chunk3S5WOAYR_cjs.validateBody({ threadId: effectiveThreadId });
905
+ const effectiveThreadId = chunkXEERRXWL_cjs.getEffectiveThreadId(requestContext, threadId);
906
+ const effectiveResourceId = chunkXEERRXWL_cjs.getEffectiveResourceId(requestContext, resourceId);
907
+ chunkXEERRXWL_cjs.validateBody({ threadId: effectiveThreadId });
737
908
  const gwAgent = await getAgentFromContext({ mastra, agentId, requestContext });
738
909
  if (gwAgent && await chunkLFZO2LHV_cjs.isGatewayAgentAsync(gwAgent) && chunkLFZO2LHV_cjs.getGatewayClient()) {
739
910
  return { workingMemory: null, source: "thread", workingMemoryTemplate: null, threadExists: true };
@@ -743,8 +914,16 @@ var GET_WORKING_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
743
914
  return { workingMemory: null, source: "thread", workingMemoryTemplate: null, threadExists: false };
744
915
  }
745
916
  const thread = await memory.getThreadById({ threadId: effectiveThreadId });
746
- if (thread) {
747
- await chunk3S5WOAYR_cjs.validateThreadOwnership(thread, effectiveResourceId);
917
+ const config = memory.getMergedThreadConfig(memoryConfig || {});
918
+ const source = config.workingMemory?.scope !== "thread" && effectiveResourceId ? "resource" : "thread";
919
+ if (thread || source === "resource") {
920
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
921
+ mastra,
922
+ requestContext,
923
+ threadId: effectiveThreadId,
924
+ thread,
925
+ effectiveResourceId
926
+ });
748
927
  }
749
928
  const threadExists = !!thread;
750
929
  const template = await memory.getWorkingMemoryTemplate({ memoryConfig });
@@ -754,15 +933,13 @@ var GET_WORKING_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
754
933
  resourceId: effectiveResourceId,
755
934
  memoryConfig
756
935
  });
757
- const config = memory.getMergedThreadConfig(memoryConfig || {});
758
- const source = config.workingMemory?.scope !== "thread" && effectiveResourceId ? "resource" : "thread";
759
936
  return { workingMemory, source, workingMemoryTemplate, threadExists };
760
937
  } catch (error) {
761
938
  return chunkB34S64RC_cjs.handleError(error, "Error getting working memory");
762
939
  }
763
940
  }
764
941
  });
765
- var SAVE_MESSAGES_ROUTE = chunk5UKYK7YK_cjs.createRoute({
942
+ var SAVE_MESSAGES_ROUTE = chunk7LAFXMXB_cjs.createRoute({
766
943
  method: "POST",
767
944
  path: "/memory/save-messages",
768
945
  responseType: "json",
@@ -775,7 +952,7 @@ var SAVE_MESSAGES_ROUTE = chunk5UKYK7YK_cjs.createRoute({
775
952
  requiresAuth: true,
776
953
  handler: async ({ mastra, agentId, messages, requestContext }) => {
777
954
  try {
778
- const effectiveResourceId = chunk3S5WOAYR_cjs.getEffectiveResourceId(requestContext, void 0);
955
+ const effectiveResourceId = chunkXEERRXWL_cjs.getEffectiveResourceId(requestContext, void 0);
779
956
  const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
780
957
  if (!memory) {
781
958
  throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
@@ -786,6 +963,20 @@ var SAVE_MESSAGES_ROUTE = chunk5UKYK7YK_cjs.createRoute({
786
963
  if (!Array.isArray(messages)) {
787
964
  throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Messages should be an array" });
788
965
  }
966
+ const resourceIdByThread = /* @__PURE__ */ new Map();
967
+ for (const message of messages) {
968
+ if (!message.threadId || !message.resourceId) {
969
+ continue;
970
+ }
971
+ const existingResourceId = resourceIdByThread.get(message.threadId);
972
+ if (!existingResourceId) {
973
+ resourceIdByThread.set(message.threadId, message.resourceId);
974
+ } else if (existingResourceId !== message.resourceId) {
975
+ throw new chunk64ITUOXI_cjs.HTTPException(400, {
976
+ message: "All messages for the same threadId must use the same resourceId."
977
+ });
978
+ }
979
+ }
789
980
  const invalidMessages = messages.filter((message) => !message.threadId || !message.resourceId);
790
981
  if (invalidMessages.length > 0) {
791
982
  throw new chunk64ITUOXI_cjs.HTTPException(400, {
@@ -802,7 +993,27 @@ var SAVE_MESSAGES_ROUTE = chunk5UKYK7YK_cjs.createRoute({
802
993
  const threadIds = [...new Set(messages.map((m) => m.threadId).filter(Boolean))];
803
994
  for (const threadId of threadIds) {
804
995
  const thread = await memory.getThreadById({ threadId });
805
- await chunk3S5WOAYR_cjs.validateThreadOwnership(thread, effectiveResourceId);
996
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
997
+ mastra,
998
+ requestContext,
999
+ threadId,
1000
+ thread,
1001
+ effectiveResourceId,
1002
+ permission: ee.MastraFGAPermissions.MEMORY_WRITE
1003
+ });
1004
+ }
1005
+ } else {
1006
+ const threadIds = [...new Set(messages.map((m) => m.threadId).filter(Boolean))];
1007
+ for (const threadId of threadIds) {
1008
+ const thread = await memory.getThreadById({ threadId });
1009
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
1010
+ mastra,
1011
+ requestContext,
1012
+ threadId,
1013
+ thread,
1014
+ effectiveResourceId: resourceIdByThread.get(threadId),
1015
+ permission: ee.MastraFGAPermissions.MEMORY_WRITE
1016
+ });
806
1017
  }
807
1018
  }
808
1019
  const processedMessages = messages.map((message) => ({
@@ -817,7 +1028,7 @@ var SAVE_MESSAGES_ROUTE = chunk5UKYK7YK_cjs.createRoute({
817
1028
  }
818
1029
  }
819
1030
  });
820
- var CREATE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1031
+ var CREATE_THREAD_ROUTE = chunk7LAFXMXB_cjs.createRoute({
821
1032
  method: "POST",
822
1033
  path: "/memory/threads",
823
1034
  responseType: "json",
@@ -830,14 +1041,22 @@ var CREATE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
830
1041
  requiresAuth: true,
831
1042
  handler: async ({ mastra, agentId, resourceId, title, metadata, threadId, requestContext }) => {
832
1043
  try {
833
- const effectiveResourceId = chunk3S5WOAYR_cjs.getEffectiveResourceId(requestContext, resourceId);
1044
+ const effectiveResourceId = chunkXEERRXWL_cjs.getEffectiveResourceId(requestContext, resourceId);
1045
+ const effectiveThreadId = threadId ?? mastra.generateId();
1046
+ chunkXEERRXWL_cjs.validateBody({ resourceId: effectiveResourceId });
1047
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
1048
+ mastra,
1049
+ requestContext,
1050
+ threadId: effectiveThreadId,
1051
+ effectiveResourceId,
1052
+ permission: ee.MastraFGAPermissions.MEMORY_WRITE
1053
+ });
834
1054
  const agent = await getAgentFromContext({ mastra, agentId, requestContext });
835
1055
  if (agent && await chunkLFZO2LHV_cjs.isGatewayAgentAsync(agent)) {
836
1056
  const gwClient = chunkLFZO2LHV_cjs.getGatewayClient();
837
1057
  if (gwClient) {
838
- chunk3S5WOAYR_cjs.validateBody({ resourceId: effectiveResourceId });
839
1058
  const result2 = await gwClient.createThread({
840
- id: threadId,
1059
+ id: effectiveThreadId,
841
1060
  resourceId: effectiveResourceId,
842
1061
  title,
843
1062
  metadata
@@ -849,12 +1068,11 @@ var CREATE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
849
1068
  if (!memory) {
850
1069
  throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
851
1070
  }
852
- chunk3S5WOAYR_cjs.validateBody({ resourceId: effectiveResourceId });
853
1071
  const result = await memory.createThread({
854
1072
  resourceId: effectiveResourceId,
855
1073
  title,
856
1074
  metadata,
857
- threadId
1075
+ threadId: effectiveThreadId
858
1076
  });
859
1077
  return result;
860
1078
  } catch (error) {
@@ -862,7 +1080,7 @@ var CREATE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
862
1080
  }
863
1081
  }
864
1082
  });
865
- var UPDATE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1083
+ var UPDATE_THREAD_ROUTE = chunk7LAFXMXB_cjs.createRoute({
866
1084
  method: "PATCH",
867
1085
  path: "/memory/threads/:threadId",
868
1086
  responseType: "json",
@@ -876,16 +1094,23 @@ var UPDATE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
876
1094
  requiresAuth: true,
877
1095
  handler: async ({ mastra, agentId, threadId, title, metadata, resourceId, requestContext }) => {
878
1096
  try {
879
- const effectiveThreadId = chunk3S5WOAYR_cjs.getEffectiveThreadId(requestContext, threadId);
880
- const effectiveResourceId = chunk3S5WOAYR_cjs.getEffectiveResourceId(requestContext, resourceId);
881
- chunk3S5WOAYR_cjs.validateBody({ threadId: effectiveThreadId });
1097
+ const effectiveThreadId = chunkXEERRXWL_cjs.getEffectiveThreadId(requestContext, threadId);
1098
+ const effectiveResourceId = chunkXEERRXWL_cjs.getEffectiveResourceId(requestContext, resourceId);
1099
+ chunkXEERRXWL_cjs.validateBody({ threadId: effectiveThreadId });
882
1100
  const agent = await getAgentFromContext({ mastra, agentId, requestContext });
883
1101
  if (agent && await chunkLFZO2LHV_cjs.isGatewayAgentAsync(agent)) {
884
1102
  const gwClient = chunkLFZO2LHV_cjs.getGatewayClient();
885
1103
  if (gwClient) {
886
1104
  const existing = await gwClient.getThread(effectiveThreadId);
887
1105
  if (existing) {
888
- await chunk3S5WOAYR_cjs.validateThreadOwnership(chunkLFZO2LHV_cjs.toLocalThread(existing.thread), effectiveResourceId);
1106
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
1107
+ mastra,
1108
+ requestContext,
1109
+ threadId: effectiveThreadId,
1110
+ thread: chunkLFZO2LHV_cjs.toLocalThread(existing.thread),
1111
+ effectiveResourceId,
1112
+ permission: ee.MastraFGAPermissions.MEMORY_WRITE
1113
+ });
889
1114
  }
890
1115
  const result2 = await gwClient.updateThread(effectiveThreadId, { title, metadata });
891
1116
  if (!result2) {
@@ -903,7 +1128,14 @@ var UPDATE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
903
1128
  if (!thread) {
904
1129
  throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Thread not found" });
905
1130
  }
906
- await chunk3S5WOAYR_cjs.validateThreadOwnership(thread, effectiveResourceId);
1131
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
1132
+ mastra,
1133
+ requestContext,
1134
+ threadId: effectiveThreadId,
1135
+ thread,
1136
+ effectiveResourceId,
1137
+ permission: ee.MastraFGAPermissions.MEMORY_WRITE
1138
+ });
907
1139
  const updatedThread = {
908
1140
  ...thread,
909
1141
  title: title || thread.title,
@@ -923,7 +1155,7 @@ var UPDATE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
923
1155
  }
924
1156
  }
925
1157
  });
926
- var DELETE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1158
+ var DELETE_THREAD_ROUTE = chunk7LAFXMXB_cjs.createRoute({
927
1159
  method: "DELETE",
928
1160
  path: "/memory/threads/:threadId",
929
1161
  responseType: "json",
@@ -936,16 +1168,23 @@ var DELETE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
936
1168
  requiresAuth: true,
937
1169
  handler: async ({ mastra, agentId, threadId, resourceId, requestContext }) => {
938
1170
  try {
939
- const effectiveThreadId = chunk3S5WOAYR_cjs.getEffectiveThreadId(requestContext, threadId);
940
- const effectiveResourceId = chunk3S5WOAYR_cjs.getEffectiveResourceId(requestContext, resourceId);
941
- chunk3S5WOAYR_cjs.validateBody({ threadId: effectiveThreadId });
1171
+ const effectiveThreadId = chunkXEERRXWL_cjs.getEffectiveThreadId(requestContext, threadId);
1172
+ const effectiveResourceId = chunkXEERRXWL_cjs.getEffectiveResourceId(requestContext, resourceId);
1173
+ chunkXEERRXWL_cjs.validateBody({ threadId: effectiveThreadId });
942
1174
  const agent = await getAgentFromContext({ mastra, agentId, requestContext });
943
1175
  if (agent && await chunkLFZO2LHV_cjs.isGatewayAgentAsync(agent)) {
944
1176
  const gwClient = chunkLFZO2LHV_cjs.getGatewayClient();
945
1177
  if (gwClient) {
946
1178
  const existing = await gwClient.getThread(effectiveThreadId);
947
1179
  if (existing) {
948
- await chunk3S5WOAYR_cjs.validateThreadOwnership(chunkLFZO2LHV_cjs.toLocalThread(existing.thread), effectiveResourceId);
1180
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
1181
+ mastra,
1182
+ requestContext,
1183
+ threadId: effectiveThreadId,
1184
+ thread: chunkLFZO2LHV_cjs.toLocalThread(existing.thread),
1185
+ effectiveResourceId,
1186
+ permission: ee.MastraFGAPermissions.MEMORY_DELETE
1187
+ });
949
1188
  }
950
1189
  const deleteResult = await gwClient.deleteThread(effectiveThreadId);
951
1190
  if (!deleteResult.ok) {
@@ -962,7 +1201,14 @@ var DELETE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
962
1201
  if (!thread) {
963
1202
  throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Thread not found" });
964
1203
  }
965
- await chunk3S5WOAYR_cjs.validateThreadOwnership(thread, effectiveResourceId);
1204
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
1205
+ mastra,
1206
+ requestContext,
1207
+ threadId: effectiveThreadId,
1208
+ thread,
1209
+ effectiveResourceId,
1210
+ permission: ee.MastraFGAPermissions.MEMORY_DELETE
1211
+ });
966
1212
  await memory.deleteThread(effectiveThreadId);
967
1213
  return { result: "Thread deleted" };
968
1214
  } catch (error) {
@@ -970,7 +1216,7 @@ var DELETE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
970
1216
  }
971
1217
  }
972
1218
  });
973
- var CLONE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1219
+ var CLONE_THREAD_ROUTE = chunk7LAFXMXB_cjs.createRoute({
974
1220
  method: "POST",
975
1221
  path: "/memory/threads/:threadId/clone",
976
1222
  responseType: "json",
@@ -984,9 +1230,10 @@ var CLONE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
984
1230
  requiresAuth: true,
985
1231
  handler: async ({ mastra, agentId, threadId, newThreadId, resourceId, title, metadata, options, requestContext }) => {
986
1232
  try {
987
- const effectiveThreadId = chunk3S5WOAYR_cjs.getEffectiveThreadId(requestContext, threadId);
988
- const effectiveResourceId = chunk3S5WOAYR_cjs.getEffectiveResourceId(requestContext, resourceId);
989
- chunk3S5WOAYR_cjs.validateBody({ threadId: effectiveThreadId });
1233
+ const effectiveThreadId = chunkXEERRXWL_cjs.getEffectiveThreadId(requestContext, threadId);
1234
+ const effectiveResourceId = chunkXEERRXWL_cjs.getEffectiveResourceId(requestContext, resourceId);
1235
+ const effectiveNewThreadId = newThreadId ?? mastra.generateId();
1236
+ chunkXEERRXWL_cjs.validateBody({ threadId: effectiveThreadId });
990
1237
  const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
991
1238
  if (!memory) {
992
1239
  throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
@@ -995,12 +1242,25 @@ var CLONE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
995
1242
  if (!sourceThread) {
996
1243
  throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Source thread not found" });
997
1244
  }
998
- await chunk3S5WOAYR_cjs.validateThreadOwnership(sourceThread, effectiveResourceId);
1245
+ const cloneResourceId = effectiveResourceId ?? sourceThread.resourceId ?? void 0;
1246
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
1247
+ mastra,
1248
+ requestContext,
1249
+ threadId: effectiveThreadId,
1250
+ thread: sourceThread,
1251
+ effectiveResourceId
1252
+ });
1253
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
1254
+ mastra,
1255
+ requestContext,
1256
+ threadId: effectiveNewThreadId,
1257
+ effectiveResourceId: cloneResourceId,
1258
+ permission: ee.MastraFGAPermissions.MEMORY_WRITE
1259
+ });
999
1260
  const result = await memory.cloneThread({
1000
1261
  sourceThreadId: effectiveThreadId,
1001
- newThreadId,
1002
- // Use effective resourceId for the cloned thread
1003
- resourceId: effectiveResourceId,
1262
+ newThreadId: effectiveNewThreadId,
1263
+ resourceId: cloneResourceId,
1004
1264
  title,
1005
1265
  metadata,
1006
1266
  options
@@ -1011,7 +1271,7 @@ var CLONE_THREAD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1011
1271
  }
1012
1272
  }
1013
1273
  });
1014
- var UPDATE_WORKING_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1274
+ var UPDATE_WORKING_MEMORY_ROUTE = chunk7LAFXMXB_cjs.createRoute({
1015
1275
  method: "POST",
1016
1276
  path: "/memory/threads/:threadId/working-memory",
1017
1277
  responseType: "json",
@@ -1025,9 +1285,9 @@ var UPDATE_WORKING_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1025
1285
  requiresAuth: true,
1026
1286
  handler: async ({ mastra, agentId, threadId, resourceId, memoryConfig, workingMemory, requestContext }) => {
1027
1287
  try {
1028
- const effectiveThreadId = chunk3S5WOAYR_cjs.getEffectiveThreadId(requestContext, threadId);
1029
- const effectiveResourceId = chunk3S5WOAYR_cjs.getEffectiveResourceId(requestContext, resourceId);
1030
- chunk3S5WOAYR_cjs.validateBody({ threadId: effectiveThreadId, workingMemory });
1288
+ const effectiveThreadId = chunkXEERRXWL_cjs.getEffectiveThreadId(requestContext, threadId);
1289
+ const effectiveResourceId = chunkXEERRXWL_cjs.getEffectiveResourceId(requestContext, resourceId);
1290
+ chunkXEERRXWL_cjs.validateBody({ threadId: effectiveThreadId, workingMemory });
1031
1291
  const gwAgent = await getAgentFromContext({ mastra, agentId, requestContext });
1032
1292
  if (gwAgent && await chunkLFZO2LHV_cjs.isGatewayAgentAsync(gwAgent) && chunkLFZO2LHV_cjs.getGatewayClient()) {
1033
1293
  return { success: true };
@@ -1040,7 +1300,14 @@ var UPDATE_WORKING_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1040
1300
  if (!thread) {
1041
1301
  throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Thread not found" });
1042
1302
  }
1043
- await chunk3S5WOAYR_cjs.validateThreadOwnership(thread, effectiveResourceId);
1303
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
1304
+ mastra,
1305
+ requestContext,
1306
+ threadId: effectiveThreadId,
1307
+ thread,
1308
+ effectiveResourceId,
1309
+ permission: ee.MastraFGAPermissions.MEMORY_WRITE
1310
+ });
1044
1311
  await memory.updateWorkingMemory({
1045
1312
  threadId: effectiveThreadId,
1046
1313
  resourceId: effectiveResourceId,
@@ -1053,7 +1320,7 @@ var UPDATE_WORKING_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1053
1320
  }
1054
1321
  }
1055
1322
  });
1056
- var DELETE_MESSAGES_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1323
+ var DELETE_MESSAGES_ROUTE = chunk7LAFXMXB_cjs.createRoute({
1057
1324
  method: "POST",
1058
1325
  path: "/memory/messages/delete",
1059
1326
  responseType: "json",
@@ -1066,7 +1333,7 @@ var DELETE_MESSAGES_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1066
1333
  requiresAuth: true,
1067
1334
  handler: async ({ mastra, agentId, resourceId, messageIds, requestContext }) => {
1068
1335
  try {
1069
- const effectiveResourceId = chunk3S5WOAYR_cjs.getEffectiveResourceId(requestContext, resourceId);
1336
+ const effectiveResourceId = chunkXEERRXWL_cjs.getEffectiveResourceId(requestContext, resourceId);
1070
1337
  if (messageIds === void 0 || messageIds === null) {
1071
1338
  throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "messageIds is required" });
1072
1339
  }
@@ -1089,16 +1356,28 @@ var DELETE_MESSAGES_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1089
1356
  if (!memoryStore) {
1090
1357
  throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
1091
1358
  }
1092
- const { messages } = await memoryStore.listMessagesById({ messageIds: stringIds });
1093
- const threadIds = [...new Set(messages.map((m) => m.threadId).filter(Boolean))];
1094
- for (const threadId of threadIds) {
1095
- const thread = await memoryStore.getThreadById({ threadId });
1096
- if (thread && thread.resourceId && thread.resourceId !== effectiveResourceId) {
1097
- throw new chunk64ITUOXI_cjs.HTTPException(403, {
1098
- message: "Access denied: message belongs to a thread owned by a different resource"
1099
- });
1100
- }
1359
+ await enforceDeleteMessagesThreadAccess({
1360
+ mastra,
1361
+ requestContext,
1362
+ memoryStore,
1363
+ messageIds: stringIds,
1364
+ effectiveResourceId
1365
+ });
1366
+ } else if (stringIds.length > 0) {
1367
+ const storage = memory?.storage || getStorageFromContext({ mastra });
1368
+ if (!storage) {
1369
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
1370
+ }
1371
+ const memoryStore = await storage.getStore("memory");
1372
+ if (!memoryStore) {
1373
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
1101
1374
  }
1375
+ await enforceDeleteMessagesThreadAccess({
1376
+ mastra,
1377
+ requestContext,
1378
+ memoryStore,
1379
+ messageIds: stringIds
1380
+ });
1102
1381
  }
1103
1382
  if (memory) {
1104
1383
  await memory.deleteMessages(normalizedIds);
@@ -1122,7 +1401,7 @@ var DELETE_MESSAGES_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1122
1401
  }
1123
1402
  }
1124
1403
  });
1125
- var SEARCH_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1404
+ var SEARCH_MEMORY_ROUTE = chunk7LAFXMXB_cjs.createRoute({
1126
1405
  method: "GET",
1127
1406
  path: "/memory/search",
1128
1407
  responseType: "json",
@@ -1134,9 +1413,9 @@ var SEARCH_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1134
1413
  requiresAuth: true,
1135
1414
  handler: async ({ mastra, agentId, searchQuery, resourceId, threadId, limit = 20, requestContext, memoryConfig }) => {
1136
1415
  try {
1137
- const effectiveResourceId = chunk3S5WOAYR_cjs.getEffectiveResourceId(requestContext, resourceId);
1138
- const effectiveThreadId = chunk3S5WOAYR_cjs.getEffectiveThreadId(requestContext, threadId);
1139
- chunk3S5WOAYR_cjs.validateBody({ searchQuery, resourceId: effectiveResourceId });
1416
+ const effectiveResourceId = chunkXEERRXWL_cjs.getEffectiveResourceId(requestContext, resourceId);
1417
+ const effectiveThreadId = chunkXEERRXWL_cjs.getEffectiveThreadId(requestContext, threadId);
1418
+ chunkXEERRXWL_cjs.validateBody({ searchQuery, resourceId: effectiveResourceId });
1140
1419
  const agent = await getAgentFromContext({ mastra, agentId, requestContext });
1141
1420
  if (agent && await chunkLFZO2LHV_cjs.isGatewayAgentAsync(agent) && chunkLFZO2LHV_cjs.getGatewayClient()) {
1142
1421
  return {
@@ -1155,6 +1434,30 @@ var SEARCH_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1155
1434
  const hasSemanticRecall = !!config?.semanticRecall;
1156
1435
  const resourceScope = typeof config?.semanticRecall === "object" ? config?.semanticRecall?.scope !== "thread" : true;
1157
1436
  const searchResults = [];
1437
+ let accessibleThreadsForResource;
1438
+ let accessibleThreadIds;
1439
+ if (resourceScope && effectiveResourceId && shouldFilterThreadsWithFGA(mastra, requestContext)) {
1440
+ const { threads } = await memory.listThreads({
1441
+ filter: { resourceId: effectiveResourceId },
1442
+ perPage: false,
1443
+ orderBy: { field: "updatedAt", direction: "DESC" }
1444
+ });
1445
+ accessibleThreadsForResource = await filterAccessibleThreads({
1446
+ mastra,
1447
+ requestContext,
1448
+ threads
1449
+ });
1450
+ accessibleThreadIds = new Set(accessibleThreadsForResource.map((thread) => thread.id));
1451
+ if (accessibleThreadsForResource.length === 0) {
1452
+ return {
1453
+ results: [],
1454
+ count: 0,
1455
+ query: searchQuery,
1456
+ searchScope: resourceScope ? "resource" : "thread",
1457
+ searchType: hasSemanticRecall ? "semantic" : "text"
1458
+ };
1459
+ }
1460
+ }
1158
1461
  if (effectiveThreadId && !resourceScope) {
1159
1462
  const thread = await memory.getThreadById({ threadId: effectiveThreadId });
1160
1463
  if (!thread) {
@@ -1166,16 +1469,22 @@ var SEARCH_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1166
1469
  searchType: hasSemanticRecall ? "semantic" : "text"
1167
1470
  };
1168
1471
  }
1169
- await chunk3S5WOAYR_cjs.validateThreadOwnership(thread, effectiveResourceId);
1472
+ await chunkXEERRXWL_cjs.enforceThreadAccess({
1473
+ mastra,
1474
+ requestContext,
1475
+ threadId: effectiveThreadId,
1476
+ thread,
1477
+ effectiveResourceId
1478
+ });
1170
1479
  }
1171
1480
  let searchThreadId = effectiveThreadId;
1172
1481
  if (!searchThreadId) {
1173
- const { threads } = await memory.listThreads({
1482
+ const threads = accessibleThreadsForResource ?? (await memory.listThreads({
1174
1483
  filter: { resourceId: effectiveResourceId },
1175
1484
  page: 0,
1176
1485
  perPage: 1,
1177
1486
  orderBy: { field: "updatedAt", direction: "DESC" }
1178
- });
1487
+ })).threads;
1179
1488
  if (threads.length === 0) {
1180
1489
  return {
1181
1490
  results: [],
@@ -1207,12 +1516,24 @@ var SEARCH_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1207
1516
  threadConfig: config,
1208
1517
  vectorSearchString: threadConfig.semanticRecall && searchQuery ? searchQuery : void 0
1209
1518
  });
1519
+ const accessibleMessages = accessibleThreadIds ? result.messages.filter(
1520
+ (message) => accessibleThreadIds.has(message.threadId || searchThreadId)
1521
+ ) : result.messages;
1522
+ if (accessibleMessages.length === 0) {
1523
+ return {
1524
+ results: [],
1525
+ count: 0,
1526
+ query: searchQuery,
1527
+ searchScope: resourceScope ? "resource" : "thread",
1528
+ searchType: hasSemanticRecall ? "semantic" : "text"
1529
+ };
1530
+ }
1210
1531
  const threadIds = Array.from(
1211
- new Set(result.messages.map((m) => m.threadId || searchThreadId).filter(Boolean))
1532
+ new Set(accessibleMessages.map((m) => m.threadId || searchThreadId).filter(Boolean))
1212
1533
  );
1213
1534
  const fetched = await Promise.all(threadIds.map((id) => memory.getThreadById({ threadId: id })));
1214
1535
  const threadMap = new Map(fetched.filter(Boolean).map((t) => [t.id, t]));
1215
- for (const msg of result.messages) {
1536
+ for (const msg of accessibleMessages) {
1216
1537
  const content = getTextContent(msg);
1217
1538
  const msgThreadId = msg.threadId || searchThreadId;
1218
1539
  const thread = threadMap.get(msgThreadId);
@@ -1257,7 +1578,7 @@ var SEARCH_MEMORY_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1257
1578
  }
1258
1579
  }
1259
1580
  });
1260
- var GET_MEMORY_STATUS_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1581
+ var GET_MEMORY_STATUS_NETWORK_ROUTE = chunk7LAFXMXB_cjs.createRoute({
1261
1582
  method: "GET",
1262
1583
  path: "/memory/network/status",
1263
1584
  responseType: "json",
@@ -1269,7 +1590,7 @@ var GET_MEMORY_STATUS_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1269
1590
  requiresAuth: true,
1270
1591
  handler: GET_MEMORY_STATUS_ROUTE.handler
1271
1592
  });
1272
- var LIST_THREADS_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1593
+ var LIST_THREADS_NETWORK_ROUTE = chunk7LAFXMXB_cjs.createRoute({
1273
1594
  method: "GET",
1274
1595
  path: "/memory/network/threads",
1275
1596
  responseType: "json",
@@ -1281,7 +1602,7 @@ var LIST_THREADS_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1281
1602
  requiresAuth: true,
1282
1603
  handler: LIST_THREADS_ROUTE.handler
1283
1604
  });
1284
- var GET_THREAD_BY_ID_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1605
+ var GET_THREAD_BY_ID_NETWORK_ROUTE = chunk7LAFXMXB_cjs.createRoute({
1285
1606
  method: "GET",
1286
1607
  path: "/memory/network/threads/:threadId",
1287
1608
  responseType: "json",
@@ -1294,7 +1615,7 @@ var GET_THREAD_BY_ID_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1294
1615
  requiresAuth: true,
1295
1616
  handler: GET_THREAD_BY_ID_ROUTE.handler
1296
1617
  });
1297
- var LIST_MESSAGES_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1618
+ var LIST_MESSAGES_NETWORK_ROUTE = chunk7LAFXMXB_cjs.createRoute({
1298
1619
  method: "GET",
1299
1620
  path: "/memory/network/threads/:threadId/messages",
1300
1621
  responseType: "json",
@@ -1307,7 +1628,7 @@ var LIST_MESSAGES_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1307
1628
  requiresAuth: true,
1308
1629
  handler: LIST_MESSAGES_ROUTE.handler
1309
1630
  });
1310
- var SAVE_MESSAGES_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1631
+ var SAVE_MESSAGES_NETWORK_ROUTE = chunk7LAFXMXB_cjs.createRoute({
1311
1632
  method: "POST",
1312
1633
  path: "/memory/network/save-messages",
1313
1634
  responseType: "json",
@@ -1320,7 +1641,7 @@ var SAVE_MESSAGES_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1320
1641
  requiresAuth: true,
1321
1642
  handler: SAVE_MESSAGES_ROUTE.handler
1322
1643
  });
1323
- var CREATE_THREAD_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1644
+ var CREATE_THREAD_NETWORK_ROUTE = chunk7LAFXMXB_cjs.createRoute({
1324
1645
  method: "POST",
1325
1646
  path: "/memory/network/threads",
1326
1647
  responseType: "json",
@@ -1333,7 +1654,7 @@ var CREATE_THREAD_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1333
1654
  requiresAuth: true,
1334
1655
  handler: CREATE_THREAD_ROUTE.handler
1335
1656
  });
1336
- var UPDATE_THREAD_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1657
+ var UPDATE_THREAD_NETWORK_ROUTE = chunk7LAFXMXB_cjs.createRoute({
1337
1658
  method: "PATCH",
1338
1659
  path: "/memory/network/threads/:threadId",
1339
1660
  responseType: "json",
@@ -1347,7 +1668,7 @@ var UPDATE_THREAD_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1347
1668
  requiresAuth: true,
1348
1669
  handler: UPDATE_THREAD_ROUTE.handler
1349
1670
  });
1350
- var DELETE_THREAD_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1671
+ var DELETE_THREAD_NETWORK_ROUTE = chunk7LAFXMXB_cjs.createRoute({
1351
1672
  method: "DELETE",
1352
1673
  path: "/memory/network/threads/:threadId",
1353
1674
  responseType: "json",
@@ -1360,7 +1681,7 @@ var DELETE_THREAD_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1360
1681
  requiresAuth: true,
1361
1682
  handler: DELETE_THREAD_ROUTE.handler
1362
1683
  });
1363
- var DELETE_MESSAGES_NETWORK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
1684
+ var DELETE_MESSAGES_NETWORK_ROUTE = chunk7LAFXMXB_cjs.createRoute({
1364
1685
  method: "POST",
1365
1686
  path: "/memory/network/messages/delete",
1366
1687
  responseType: "json",
@@ -1401,5 +1722,5 @@ exports.UPDATE_THREAD_ROUTE = UPDATE_THREAD_ROUTE;
1401
1722
  exports.UPDATE_WORKING_MEMORY_ROUTE = UPDATE_WORKING_MEMORY_ROUTE;
1402
1723
  exports.getTextContent = getTextContent;
1403
1724
  exports.memory_exports = memory_exports;
1404
- //# sourceMappingURL=chunk-FRKJAWEK.cjs.map
1405
- //# sourceMappingURL=chunk-FRKJAWEK.cjs.map
1725
+ //# sourceMappingURL=chunk-T6MMZWHW.cjs.map
1726
+ //# sourceMappingURL=chunk-T6MMZWHW.cjs.map