@mastra/server 1.79.0-alpha.10 → 1.79.0-alpha.11

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 (381) hide show
  1. package/dist/{a2a-CHBSYHxu.js → a2a-BqLB3McP.js} +17 -16
  2. package/dist/a2a-BqLB3McP.js.map +1 -0
  3. package/dist/{a2a-B465DD1u.cjs → a2a-Uood_0DN.cjs} +19 -18
  4. package/dist/a2a-Uood_0DN.cjs.map +1 -0
  5. package/dist/agent-builder-CuBD1tpv.cjs +728 -0
  6. package/dist/agent-builder-CuBD1tpv.cjs.map +1 -0
  7. package/dist/agent-builder-VhM8ADW-.js +627 -0
  8. package/dist/agent-builder-VhM8ADW-.js.map +1 -0
  9. package/dist/{agents-X1E7fW3p.js → agents-BHLTMBff.js} +2 -2
  10. package/dist/{agents-X1E7fW3p.js.map → agents-BHLTMBff.js.map} +1 -1
  11. package/dist/agents-BOWEUKyV.cjs +3127 -0
  12. package/dist/agents-BOWEUKyV.cjs.map +1 -0
  13. package/dist/agents-DRQ3ScbX.js +2828 -0
  14. package/dist/agents-DRQ3ScbX.js.map +1 -0
  15. package/dist/{agents-DoNMSCMt.cjs → agents-T-OIM9IK.cjs} +2 -2
  16. package/dist/{agents-DoNMSCMt.cjs.map → agents-T-OIM9IK.cjs.map} +1 -1
  17. package/dist/{api-schema-manifest-DUseI2VG.cjs → api-schema-manifest-A2qfi54Y.cjs} +4 -4
  18. package/dist/{api-schema-manifest-DUseI2VG.cjs.map → api-schema-manifest-A2qfi54Y.cjs.map} +1 -1
  19. package/dist/{api-schema-manifest-CWRIJP-B.js → api-schema-manifest-Dun5VMRT.js} +3 -3
  20. package/dist/{api-schema-manifest-CWRIJP-B.js.map → api-schema-manifest-Dun5VMRT.js.map} +1 -1
  21. package/dist/{background-tasks-CabImVak.cjs → background-tasks-B3VAKTJh.cjs} +3 -3
  22. package/dist/{background-tasks-CabImVak.cjs.map → background-tasks-B3VAKTJh.cjs.map} +1 -1
  23. package/dist/{background-tasks-oBaLtnCn.js → background-tasks-Du2zYOPl.js} +2 -2
  24. package/dist/{background-tasks-oBaLtnCn.js.map → background-tasks-Du2zYOPl.js.map} +1 -1
  25. package/dist/{builder-registry-DOkLe8ES.js → builder-registry-DLdu9bWH.js} +3 -3
  26. package/dist/{builder-registry-DOkLe8ES.js.map → builder-registry-DLdu9bWH.js.map} +1 -1
  27. package/dist/{builder-registry-D0frV8lQ.cjs → builder-registry-DaFAaMTf.cjs} +3 -3
  28. package/dist/{builder-registry-D0frV8lQ.cjs.map → builder-registry-DaFAaMTf.cjs.map} +1 -1
  29. package/dist/{channels-CBIopVWd.cjs → channels-BnVRmnzK.cjs} +6 -3
  30. package/dist/{channels-CBIopVWd.cjs.map → channels-BnVRmnzK.cjs.map} +1 -1
  31. package/dist/{channels-BOxgHvzI.js → channels-Db-4pXVZ.js} +6 -3
  32. package/dist/{channels-BOxgHvzI.js.map → channels-Db-4pXVZ.js.map} +1 -1
  33. package/dist/conversations-8BWryNlF.js +165 -0
  34. package/dist/conversations-8BWryNlF.js.map +1 -0
  35. package/dist/conversations-C5MkQBB8.cjs +194 -0
  36. package/dist/conversations-C5MkQBB8.cjs.map +1 -0
  37. package/dist/{conversations-Bj5TLNqF.cjs → conversations-DasqEDCF.cjs} +3 -3
  38. package/dist/{conversations-Bj5TLNqF.cjs.map → conversations-DasqEDCF.cjs.map} +1 -1
  39. package/dist/{dist-9c3PXXpk.cjs → dist-B-bEVWlJ.cjs} +4733 -1251
  40. package/dist/dist-B-bEVWlJ.cjs.map +1 -0
  41. package/dist/dist-B3kC8Yd0.cjs +3 -0
  42. package/dist/{dist-CQ3FSKT-.cjs → dist-B9ery9Zw.cjs} +38 -35
  43. package/dist/{dist-CQ3FSKT-.cjs.map → dist-B9ery9Zw.cjs.map} +1 -1
  44. package/dist/{dist-BxMmGD3n.js → dist-BBOnrL_A.js} +10 -12
  45. package/dist/{dist-BxMmGD3n.js.map → dist-BBOnrL_A.js.map} +1 -1
  46. package/dist/{dist-DOWsEmo6.js → dist-BIrQLUV9.js} +20 -20
  47. package/dist/{dist-DOWsEmo6.js.map → dist-BIrQLUV9.js.map} +1 -1
  48. package/dist/dist-BM9J-PTK.js +1 -0
  49. package/dist/{dist-DC1Pewf5.cjs → dist-Bo3GdQwf.cjs} +21 -21
  50. package/dist/{dist-DC1Pewf5.cjs.map → dist-Bo3GdQwf.cjs.map} +1 -1
  51. package/dist/{dist-BwYL7Ykb.js → dist-CREG82cy.js} +37 -34
  52. package/dist/{dist-BwYL7Ykb.js.map → dist-CREG82cy.js.map} +1 -1
  53. package/dist/{dist-rDRetJVY.cjs → dist-CeTLA-e5.cjs} +2 -3
  54. package/dist/{dist-rDRetJVY.cjs.map → dist-CeTLA-e5.cjs.map} +1 -1
  55. package/dist/{dist-CBRJax5e.js → dist-DLld1qjf.js} +25 -31
  56. package/dist/{dist-CBRJax5e.js.map → dist-DLld1qjf.js.map} +1 -1
  57. package/dist/{dist-B_bet8uz.js → dist-DjkPkAzV.js} +2 -3
  58. package/dist/{dist-B_bet8uz.js.map → dist-DjkPkAzV.js.map} +1 -1
  59. package/dist/{dist-UKEksCGq.cjs → dist-DsrJXwic.cjs} +11 -13
  60. package/dist/{dist-UKEksCGq.cjs.map → dist-DsrJXwic.cjs.map} +1 -1
  61. package/dist/{dist-DGCnbhNe.js → dist-k77XQGUn.js} +4493 -1043
  62. package/dist/dist-k77XQGUn.js.map +1 -0
  63. package/dist/{dist-3FPW9nVj.cjs → dist-lT2rqyY9.cjs} +26 -32
  64. package/dist/{dist-3FPW9nVj.cjs.map → dist-lT2rqyY9.cjs.map} +1 -1
  65. package/dist/docs/SKILL.md +1 -1
  66. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  67. package/dist/{dynamic-workflows-Rr_6ac1y.js → dynamic-workflows-CTUO0SFu.js} +3 -3
  68. package/dist/{dynamic-workflows-Rr_6ac1y.js.map → dynamic-workflows-CTUO0SFu.js.map} +1 -1
  69. package/dist/{dynamic-workflows-DXlkr-jK.cjs → dynamic-workflows-HwPX3mcf.cjs} +3 -3
  70. package/dist/{dynamic-workflows-DXlkr-jK.cjs.map → dynamic-workflows-HwPX3mcf.cjs.map} +1 -1
  71. package/dist/{editor-builder-BclcHxN6.cjs → editor-builder-BDtiWw0f.cjs} +2 -2
  72. package/dist/{editor-builder-BclcHxN6.cjs.map → editor-builder-BDtiWw0f.cjs.map} +1 -1
  73. package/dist/{editor-builder-D16kc1P6.js → editor-builder-ClFlGXoX.js} +4 -4
  74. package/dist/{editor-builder-D16kc1P6.js.map → editor-builder-ClFlGXoX.js.map} +1 -1
  75. package/dist/{editor-builder-s9WqPJgA.js → editor-builder-DnLCfqnY.js} +2 -2
  76. package/dist/{editor-builder-s9WqPJgA.js.map → editor-builder-DnLCfqnY.js.map} +1 -1
  77. package/dist/{editor-builder-DXHiPX1A.cjs → editor-builder-DtpP1FtW.cjs} +5 -5
  78. package/dist/{editor-builder-DXHiPX1A.cjs.map → editor-builder-DtpP1FtW.cjs.map} +1 -1
  79. package/dist/{helpers-ElhPeCSK.cjs → helpers-CAcEhq38.cjs} +21 -17
  80. package/dist/{helpers-ElhPeCSK.cjs.map → helpers-CAcEhq38.cjs.map} +1 -1
  81. package/dist/{helpers-DLhX1fqc.js → helpers-vrqddDd5.js} +21 -17
  82. package/dist/{helpers-DLhX1fqc.js.map → helpers-vrqddDd5.js.map} +1 -1
  83. package/dist/index.cjs +1 -1
  84. package/dist/logs-CiSw7r0s.cjs +119 -0
  85. package/dist/logs-CiSw7r0s.cjs.map +1 -0
  86. package/dist/logs-CxfPk-iL.js +96 -0
  87. package/dist/logs-CxfPk-iL.js.map +1 -0
  88. package/dist/mcp-BTdLh6E_.js +274 -0
  89. package/dist/mcp-BTdLh6E_.js.map +1 -0
  90. package/dist/mcp-BYqFR5q-.cjs +339 -0
  91. package/dist/mcp-BYqFR5q-.cjs.map +1 -0
  92. package/dist/memory-BHtTSzvJ.js +1739 -0
  93. package/dist/memory-BHtTSzvJ.js.map +1 -0
  94. package/dist/memory-CwwkVDh1.cjs +1906 -0
  95. package/dist/memory-CwwkVDh1.cjs.map +1 -0
  96. package/dist/observability-BBMCMeT-.cjs +502 -0
  97. package/dist/observability-BBMCMeT-.cjs.map +1 -0
  98. package/dist/observability-ZRgRcvoX.js +431 -0
  99. package/dist/observability-ZRgRcvoX.js.map +1 -0
  100. package/dist/{observability-new-endpoints-BU8JYPfh.js → observability-new-endpoints-fjoZzEtk.js} +10 -9
  101. package/dist/{observability-new-endpoints-BU8JYPfh.js.map → observability-new-endpoints-fjoZzEtk.js.map} +1 -1
  102. package/dist/{observability-new-endpoints-AMp9bnMV.cjs → observability-new-endpoints-tG3-odLa.cjs} +11 -10
  103. package/dist/observability-new-endpoints-tG3-odLa.cjs.map +1 -0
  104. package/dist/plans-CiPgWBhO.cjs +68 -0
  105. package/dist/plans-CiPgWBhO.cjs.map +1 -0
  106. package/dist/plans-DCepEY7n.js +57 -0
  107. package/dist/plans-DCepEY7n.js.map +1 -0
  108. package/dist/{probe-image-size-DBGjhUtJ.cjs → probe-image-size-Alv3gwKl.cjs} +194 -184
  109. package/dist/probe-image-size-Alv3gwKl.cjs.map +1 -0
  110. package/dist/{probe-image-size-Dmoxv93t.js → probe-image-size-BdfbUHxx.js} +158 -148
  111. package/dist/probe-image-size-BdfbUHxx.js.map +1 -0
  112. package/dist/responses-4FwMNxoJ.js +628 -0
  113. package/dist/responses-4FwMNxoJ.js.map +1 -0
  114. package/dist/responses-CCRijwDF.cjs +651 -0
  115. package/dist/responses-CCRijwDF.cjs.map +1 -0
  116. package/dist/{responses-CKNdSRkS.cjs → responses-CfcIc53b.cjs} +2 -2
  117. package/dist/{responses-CKNdSRkS.cjs.map → responses-CfcIc53b.cjs.map} +1 -1
  118. package/dist/{rolldown-runtime-Bd6kNlEP.cjs → rolldown-runtime-BwC_XMyb.cjs} +2 -2
  119. package/dist/{rolldown-runtime-maW3aOIk.js → rolldown-runtime-D3Hj5m0v.js} +2 -2
  120. package/dist/{route-builder-BNZs643f.cjs → route-builder-B2Qhhd7C.cjs} +52 -66
  121. package/dist/route-builder-B2Qhhd7C.cjs.map +1 -0
  122. package/dist/{route-builder-BfQYtclb.js → route-builder-CjkWxv4E.js} +51 -65
  123. package/dist/route-builder-CjkWxv4E.js.map +1 -0
  124. package/dist/{routes-Dl6_kWm7.js → routes-CKfXiwRc.js} +5 -3
  125. package/dist/routes-CKfXiwRc.js.map +1 -0
  126. package/dist/{routes-rwufkyUe.js → routes-D1cP2OeF.js} +26 -26
  127. package/dist/{routes-rwufkyUe.js.map → routes-D1cP2OeF.js.map} +1 -1
  128. package/dist/{routes-DPojsNf1.cjs → routes-bxG4x1MV.cjs} +199 -199
  129. package/dist/{routes-DPojsNf1.cjs.map → routes-bxG4x1MV.cjs.map} +1 -1
  130. package/dist/{routes-BULZI-PU.cjs → routes-jXksmX9G.cjs} +5 -3
  131. package/dist/routes-jXksmX9G.cjs.map +1 -0
  132. package/dist/{schedules-Bj-giFbc.cjs → schedules-CTTTCgbk.cjs} +3 -3
  133. package/dist/{schedules-Bj-giFbc.cjs.map → schedules-CTTTCgbk.cjs.map} +1 -1
  134. package/dist/{schedules-BQYgaz66.js → schedules-DXh37n6-.js} +2 -2
  135. package/dist/{schedules-BQYgaz66.js.map → schedules-DXh37n6-.js.map} +1 -1
  136. package/dist/{schema-e0VHpMt0-C0452jOk.cjs → schema-CzbEIyhE-20gGIWkz.cjs} +83 -88
  137. package/dist/schema-CzbEIyhE-20gGIWkz.cjs.map +1 -0
  138. package/dist/{schema-e0VHpMt0-CVP5Hnxy.js → schema-CzbEIyhE-BsMcj9Ws.js} +82 -87
  139. package/dist/schema-CzbEIyhE-BsMcj9Ws.js.map +1 -0
  140. package/dist/scores-D9UgETt_.js +288 -0
  141. package/dist/scores-D9UgETt_.js.map +1 -0
  142. package/dist/scores-DRdtS7NT.cjs +329 -0
  143. package/dist/scores-DRdtS7NT.cjs.map +1 -0
  144. package/dist/server/a2a/store.cjs +1 -1
  145. package/dist/server/auth/index.cjs +2 -2
  146. package/dist/server/auth/index.js +1 -1
  147. package/dist/server/browser-stream/index.cjs +9 -11
  148. package/dist/server/browser-stream/index.cjs.map +1 -1
  149. package/dist/server/browser-stream/index.js +8 -10
  150. package/dist/server/browser-stream/index.js.map +1 -1
  151. package/dist/server/handlers/a2a.cjs +2 -2
  152. package/dist/server/handlers/a2a.js +1 -2
  153. package/dist/server/handlers/agent-builder.cjs +18 -648
  154. package/dist/server/handlers/agent-builder.js +1 -627
  155. package/dist/server/handlers/agent-controller.cjs +5 -5
  156. package/dist/server/handlers/agent-controller.cjs.map +1 -1
  157. package/dist/server/handlers/agent-controller.js +11 -9
  158. package/dist/server/handlers/agent-controller.js.map +1 -1
  159. package/dist/server/handlers/agent-versions.cjs +15 -8
  160. package/dist/server/handlers/agent-versions.cjs.map +1 -1
  161. package/dist/server/handlers/agent-versions.js +14 -7
  162. package/dist/server/handlers/agent-versions.js.map +1 -1
  163. package/dist/server/handlers/agents.cjs +51 -2860
  164. package/dist/server/handlers/agents.js +1 -2806
  165. package/dist/server/handlers/auth.cjs +14 -12
  166. package/dist/server/handlers/auth.cjs.map +1 -1
  167. package/dist/server/handlers/auth.js +20 -16
  168. package/dist/server/handlers/auth.js.map +1 -1
  169. package/dist/server/handlers/author-enrichment.cjs +1 -1
  170. package/dist/server/handlers/authorship.cjs +1 -1
  171. package/dist/server/handlers/authorship.cjs.map +1 -1
  172. package/dist/server/handlers/background-tasks.cjs +2 -2
  173. package/dist/server/handlers/background-tasks.js +1 -2
  174. package/dist/server/handlers/builder-registry.cjs +2 -2
  175. package/dist/server/handlers/builder-registry.js +1 -2
  176. package/dist/server/handlers/channels.cjs +2 -2
  177. package/dist/server/handlers/channels.js +1 -2
  178. package/dist/server/handlers/conversations.cjs +6 -171
  179. package/dist/server/handlers/conversations.js +1 -162
  180. package/dist/server/handlers/datasets.cjs +2 -2
  181. package/dist/server/handlers/datasets.cjs.map +1 -1
  182. package/dist/server/handlers/datasets.js +1 -1
  183. package/dist/server/handlers/dynamic-workflows.cjs +2 -2
  184. package/dist/server/handlers/dynamic-workflows.js +1 -2
  185. package/dist/server/handlers/editor-builder.cjs +2 -2
  186. package/dist/server/handlers/editor-builder.js +1 -2
  187. package/dist/server/handlers/error.cjs +18 -13
  188. package/dist/server/handlers/error.cjs.map +1 -1
  189. package/dist/server/handlers/error.js +17 -12
  190. package/dist/server/handlers/error.js.map +1 -1
  191. package/dist/server/handlers/favorites-enrichment.cjs +2 -2
  192. package/dist/server/handlers/favorites-enrichment.js +1 -1
  193. package/dist/server/handlers/gateway-memory-client.cjs +1 -1
  194. package/dist/server/handlers/logs.cjs +5 -104
  195. package/dist/server/handlers/logs.js +1 -96
  196. package/dist/server/handlers/mcp-client-versions.cjs +15 -8
  197. package/dist/server/handlers/mcp-client-versions.cjs.map +1 -1
  198. package/dist/server/handlers/mcp-client-versions.js +14 -7
  199. package/dist/server/handlers/mcp-client-versions.js.map +1 -1
  200. package/dist/server/handlers/mcp.cjs +12 -289
  201. package/dist/server/handlers/mcp.js +1 -274
  202. package/dist/server/handlers/memory.cjs +29 -1763
  203. package/dist/server/handlers/memory.js +1 -1731
  204. package/dist/server/handlers/observability-list-query-schemas.cjs +1 -1
  205. package/dist/server/handlers/observability-new-endpoints.cjs +2 -2
  206. package/dist/server/handlers/observability-new-endpoints.js +1 -2
  207. package/dist/server/handlers/observability-shared.cjs +2 -2
  208. package/dist/server/handlers/observability-shared.js +1 -1
  209. package/dist/server/handlers/observability-storage-schemas.cjs +1 -1
  210. package/dist/server/handlers/observability.cjs +14 -445
  211. package/dist/server/handlers/observability.js +3 -429
  212. package/dist/server/handlers/plans.cjs +3 -63
  213. package/dist/server/handlers/plans.js +1 -57
  214. package/dist/server/handlers/processor-providers.cjs +2 -2
  215. package/dist/server/handlers/processor-providers.cjs.map +1 -1
  216. package/dist/server/handlers/processor-providers.js +1 -1
  217. package/dist/server/handlers/processors.cjs +13 -15
  218. package/dist/server/handlers/processors.cjs.map +1 -1
  219. package/dist/server/handlers/processors.js +12 -14
  220. package/dist/server/handlers/processors.js.map +1 -1
  221. package/dist/server/handlers/prompt-block-versions.cjs +15 -8
  222. package/dist/server/handlers/prompt-block-versions.cjs.map +1 -1
  223. package/dist/server/handlers/prompt-block-versions.js +14 -7
  224. package/dist/server/handlers/prompt-block-versions.js.map +1 -1
  225. package/dist/server/handlers/responses.adapter.cjs +1 -1
  226. package/dist/server/handlers/responses.adapter.cjs.map +1 -1
  227. package/dist/server/handlers/responses.cjs +5 -632
  228. package/dist/server/handlers/responses.js +1 -624
  229. package/dist/server/handlers/responses.storage.cjs +2 -2
  230. package/dist/server/handlers/schedules-workflows-shim.cjs +1 -1
  231. package/dist/server/handlers/schedules.cjs +2 -2
  232. package/dist/server/handlers/schedules.js +1 -2
  233. package/dist/server/handlers/scorer-versions.cjs +15 -8
  234. package/dist/server/handlers/scorer-versions.cjs.map +1 -1
  235. package/dist/server/handlers/scorer-versions.js +14 -7
  236. package/dist/server/handlers/scorer-versions.js.map +1 -1
  237. package/dist/server/handlers/scores.cjs +8 -299
  238. package/dist/server/handlers/scores.js +1 -288
  239. package/dist/server/handlers/skills-sh-shared.cjs +1 -1
  240. package/dist/server/handlers/stored-agent-favorites.cjs +4 -4
  241. package/dist/server/handlers/stored-agent-favorites.js +3 -3
  242. package/dist/server/handlers/stored-agents.cjs +19 -13
  243. package/dist/server/handlers/stored-agents.cjs.map +1 -1
  244. package/dist/server/handlers/stored-agents.js +18 -12
  245. package/dist/server/handlers/stored-agents.js.map +1 -1
  246. package/dist/server/handlers/stored-mcp-clients.cjs +8 -6
  247. package/dist/server/handlers/stored-mcp-clients.cjs.map +1 -1
  248. package/dist/server/handlers/stored-mcp-clients.js +7 -5
  249. package/dist/server/handlers/stored-mcp-clients.js.map +1 -1
  250. package/dist/server/handlers/stored-prompt-blocks.cjs +3 -3
  251. package/dist/server/handlers/stored-prompt-blocks.js +2 -2
  252. package/dist/server/handlers/stored-scorers.cjs +3 -3
  253. package/dist/server/handlers/stored-scorers.js +2 -2
  254. package/dist/server/handlers/stored-skill-favorites.cjs +4 -4
  255. package/dist/server/handlers/stored-skill-favorites.js +3 -3
  256. package/dist/server/handlers/stored-skills.cjs +6 -5
  257. package/dist/server/handlers/stored-skills.cjs.map +1 -1
  258. package/dist/server/handlers/stored-skills.js +5 -4
  259. package/dist/server/handlers/stored-skills.js.map +1 -1
  260. package/dist/server/handlers/stored-workspaces.cjs +3 -3
  261. package/dist/server/handlers/stored-workspaces.js +2 -2
  262. package/dist/server/handlers/system.cjs +3 -3
  263. package/dist/server/handlers/system.cjs.map +1 -1
  264. package/dist/server/handlers/system.js +2 -2
  265. package/dist/server/handlers/test-utils.cjs +1 -1
  266. package/dist/server/handlers/tool-providers.cjs +2 -2
  267. package/dist/server/handlers/tool-providers.js +1 -1
  268. package/dist/server/handlers/tool-schema-overrides.cjs +1 -1
  269. package/dist/server/handlers/tools.cjs +7 -267
  270. package/dist/server/handlers/tools.js +1 -257
  271. package/dist/server/handlers/utils.cjs +2 -2
  272. package/dist/server/handlers/utils.js +1 -2
  273. package/dist/server/handlers/validate-agent-instructions.cjs +2 -2
  274. package/dist/server/handlers/validate-agent-instructions.js +1 -1
  275. package/dist/server/handlers/validate-avatar.cjs +2 -2
  276. package/dist/server/handlers/validate-avatar.cjs.map +1 -1
  277. package/dist/server/handlers/validate-avatar.js +1 -1
  278. package/dist/server/handlers/validate-avatar.js.map +1 -1
  279. package/dist/server/handlers/vector.cjs +17 -334
  280. package/dist/server/handlers/vector.js +1 -314
  281. package/dist/server/handlers/version-helpers.cjs +1 -1
  282. package/dist/server/handlers/voice.cjs +9 -35
  283. package/dist/server/handlers/voice.js +1 -23
  284. package/dist/server/handlers/workflow-builder.cjs +2 -2
  285. package/dist/server/handlers/workflow-builder.js +1 -2
  286. package/dist/server/handlers/workflows.cjs +30 -1293
  287. package/dist/server/handlers/workflows.js +1 -1257
  288. package/dist/server/handlers/workspace.cjs +27 -1176
  289. package/dist/server/handlers/workspace.js +1 -1146
  290. package/dist/server/handlers.cjs +33 -33
  291. package/dist/server/handlers.js +17 -17
  292. package/dist/server/schemas/index.cjs +6 -6
  293. package/dist/server/schemas/index.js +3 -3
  294. package/dist/server/server-adapter/index.cjs +5 -5
  295. package/dist/server/server-adapter/index.cjs.map +1 -1
  296. package/dist/server/server-adapter/index.js +4 -4
  297. package/dist/server/server-adapter/index.js.map +1 -1
  298. package/dist/tools-CmFSfDMn.js +256 -0
  299. package/dist/tools-CmFSfDMn.js.map +1 -0
  300. package/dist/tools-SPJtxG9N.cjs +291 -0
  301. package/dist/tools-SPJtxG9N.cjs.map +1 -0
  302. package/dist/{utils-DCgeTrq2.cjs → utils-CF76qzZR.cjs} +12 -17
  303. package/dist/{utils-DCgeTrq2.cjs.map → utils-CF76qzZR.cjs.map} +1 -1
  304. package/dist/{utils-DCAUeb6M.js → utils-aoLN3Wfi.js} +11 -16
  305. package/dist/{utils-DCAUeb6M.js.map → utils-aoLN3Wfi.js.map} +1 -1
  306. package/dist/{utils-Du-EpvDs.cjs → utils-dDLIDg8O.cjs} +2 -2
  307. package/dist/{utils-Du-EpvDs.cjs.map → utils-dDLIDg8O.cjs.map} +1 -1
  308. package/dist/vector-BKDD1kwc.cjs +409 -0
  309. package/dist/vector-BKDD1kwc.cjs.map +1 -0
  310. package/dist/vector-TWv4t-4g.js +314 -0
  311. package/dist/vector-TWv4t-4g.js.map +1 -0
  312. package/dist/voice-BnGwlZ75.cjs +70 -0
  313. package/dist/voice-BnGwlZ75.cjs.map +1 -0
  314. package/dist/voice-DjG8tBAD.js +23 -0
  315. package/dist/voice-DjG8tBAD.js.map +1 -0
  316. package/dist/{workflow-builder-Brj3IArM.cjs → workflow-builder-C9-8ZOWF.cjs} +5 -5
  317. package/dist/{workflow-builder-Brj3IArM.cjs.map → workflow-builder-C9-8ZOWF.cjs.map} +1 -1
  318. package/dist/{workflow-builder-DOa1Vx6w.js → workflow-builder-CjlLoQvo.js} +10 -8
  319. package/dist/{workflow-builder-DOa1Vx6w.js.map → workflow-builder-CjlLoQvo.js.map} +1 -1
  320. package/dist/workflows-DjqeJcdJ.cjs +1446 -0
  321. package/dist/workflows-DjqeJcdJ.cjs.map +1 -0
  322. package/dist/workflows-bb-otd2o.js +1273 -0
  323. package/dist/workflows-bb-otd2o.js.map +1 -0
  324. package/dist/workspace-B6kzp-bo.js +1154 -0
  325. package/dist/workspace-B6kzp-bo.js.map +1 -0
  326. package/dist/workspace-COKR1SxH.cjs +1309 -0
  327. package/dist/workspace-COKR1SxH.cjs.map +1 -0
  328. package/package.json +4 -4
  329. package/dist/a2a-B465DD1u.cjs.map +0 -1
  330. package/dist/a2a-CHBSYHxu.js.map +0 -1
  331. package/dist/dist-9c3PXXpk.cjs.map +0 -1
  332. package/dist/dist-B5OwHWTo.cjs +0 -2294
  333. package/dist/dist-B5OwHWTo.cjs.map +0 -1
  334. package/dist/dist-DGCnbhNe.js.map +0 -1
  335. package/dist/dist-DcoIg_tp.js +0 -2293
  336. package/dist/dist-DcoIg_tp.js.map +0 -1
  337. package/dist/observability-new-endpoints-AMp9bnMV.cjs.map +0 -1
  338. package/dist/probe-image-size-DBGjhUtJ.cjs.map +0 -1
  339. package/dist/probe-image-size-Dmoxv93t.js.map +0 -1
  340. package/dist/route-builder-BNZs643f.cjs.map +0 -1
  341. package/dist/route-builder-BfQYtclb.js.map +0 -1
  342. package/dist/routes-BULZI-PU.cjs.map +0 -1
  343. package/dist/routes-Dl6_kWm7.js.map +0 -1
  344. package/dist/schema-Drf2W04o.js +0 -2
  345. package/dist/schema-EQanefYq.cjs +0 -1
  346. package/dist/schema-e0VHpMt0-C0452jOk.cjs.map +0 -1
  347. package/dist/schema-e0VHpMt0-CVP5Hnxy.js.map +0 -1
  348. package/dist/server/handlers/agent-builder.cjs.map +0 -1
  349. package/dist/server/handlers/agent-builder.js.map +0 -1
  350. package/dist/server/handlers/agents.cjs.map +0 -1
  351. package/dist/server/handlers/agents.js.map +0 -1
  352. package/dist/server/handlers/conversations.cjs.map +0 -1
  353. package/dist/server/handlers/conversations.js.map +0 -1
  354. package/dist/server/handlers/logs.cjs.map +0 -1
  355. package/dist/server/handlers/logs.js.map +0 -1
  356. package/dist/server/handlers/mcp.cjs.map +0 -1
  357. package/dist/server/handlers/mcp.js.map +0 -1
  358. package/dist/server/handlers/memory.cjs.map +0 -1
  359. package/dist/server/handlers/memory.js.map +0 -1
  360. package/dist/server/handlers/observability.cjs.map +0 -1
  361. package/dist/server/handlers/observability.js.map +0 -1
  362. package/dist/server/handlers/plans.cjs.map +0 -1
  363. package/dist/server/handlers/plans.js.map +0 -1
  364. package/dist/server/handlers/responses.cjs.map +0 -1
  365. package/dist/server/handlers/responses.js.map +0 -1
  366. package/dist/server/handlers/scores.cjs.map +0 -1
  367. package/dist/server/handlers/scores.js.map +0 -1
  368. package/dist/server/handlers/tools.cjs.map +0 -1
  369. package/dist/server/handlers/tools.js.map +0 -1
  370. package/dist/server/handlers/vector.cjs.map +0 -1
  371. package/dist/server/handlers/vector.js.map +0 -1
  372. package/dist/server/handlers/voice.cjs.map +0 -1
  373. package/dist/server/handlers/voice.js.map +0 -1
  374. package/dist/server/handlers/workflows.cjs.map +0 -1
  375. package/dist/server/handlers/workflows.js.map +0 -1
  376. package/dist/server/handlers/workspace.cjs.map +0 -1
  377. package/dist/server/handlers/workspace.js.map +0 -1
  378. package/dist/sync-Ai_ZDz7U.js +0 -1700
  379. package/dist/sync-Ai_ZDz7U.js.map +0 -1
  380. package/dist/sync-BrO5MtSe.cjs +0 -1729
  381. package/dist/sync-BrO5MtSe.cjs.map +0 -1
@@ -1,1764 +1,30 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_rolldown_runtime = require("../../rolldown-runtime-Bd6kNlEP.cjs");
3
- const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
4
- const require_route_builder = require("../../route-builder-BNZs643f.cjs");
5
- const require_server_handlers_error = require("./error.cjs");
6
- const require_utils = require("../../utils-Du-EpvDs.cjs");
7
- const require_memory = require("../../memory-CizEIbl1.cjs");
8
- const require_server_handlers_gateway_memory_client = require("./gateway-memory-client.cjs");
9
- let _mastra_core_agent = require("@mastra/core/agent");
10
- let _mastra_core_error = require("@mastra/core/error");
11
- let _mastra_core_utils = require("@mastra/core/utils");
12
- //#region src/server/handlers/memory.ts
13
- var memory_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
14
- AWAIT_BUFFER_STATUS_ROUTE: () => AWAIT_BUFFER_STATUS_ROUTE,
15
- CLONE_THREAD_ROUTE: () => CLONE_THREAD_ROUTE,
16
- CREATE_THREAD_NETWORK_ROUTE: () => CREATE_THREAD_NETWORK_ROUTE,
17
- CREATE_THREAD_ROUTE: () => CREATE_THREAD_ROUTE,
18
- DELETE_MESSAGES_NETWORK_ROUTE: () => DELETE_MESSAGES_NETWORK_ROUTE,
19
- DELETE_MESSAGES_ROUTE: () => DELETE_MESSAGES_ROUTE,
20
- DELETE_THREAD_NETWORK_ROUTE: () => DELETE_THREAD_NETWORK_ROUTE,
21
- DELETE_THREAD_ROUTE: () => DELETE_THREAD_ROUTE,
22
- GET_MEMORY_CONFIG_ROUTE: () => GET_MEMORY_CONFIG_ROUTE,
23
- GET_MEMORY_STATUS_NETWORK_ROUTE: () => GET_MEMORY_STATUS_NETWORK_ROUTE,
24
- GET_MEMORY_STATUS_ROUTE: () => GET_MEMORY_STATUS_ROUTE,
25
- GET_OBSERVATIONAL_MEMORY_ROUTE: () => GET_OBSERVATIONAL_MEMORY_ROUTE,
26
- GET_THREAD_BY_ID_NETWORK_ROUTE: () => GET_THREAD_BY_ID_NETWORK_ROUTE,
27
- GET_THREAD_BY_ID_ROUTE: () => GET_THREAD_BY_ID_ROUTE,
28
- GET_WORKING_MEMORY_ROUTE: () => GET_WORKING_MEMORY_ROUTE,
29
- LIST_MESSAGES_NETWORK_ROUTE: () => LIST_MESSAGES_NETWORK_ROUTE,
30
- LIST_MESSAGES_ROUTE: () => LIST_MESSAGES_ROUTE,
31
- LIST_THREADS_NETWORK_ROUTE: () => LIST_THREADS_NETWORK_ROUTE,
32
- LIST_THREADS_ROUTE: () => LIST_THREADS_ROUTE,
33
- SAVE_MESSAGES_NETWORK_ROUTE: () => SAVE_MESSAGES_NETWORK_ROUTE,
34
- SAVE_MESSAGES_ROUTE: () => SAVE_MESSAGES_ROUTE,
35
- SEARCH_MEMORY_ROUTE: () => SEARCH_MEMORY_ROUTE,
36
- TRANSFER_THREAD_ROUTE: () => TRANSFER_THREAD_ROUTE,
37
- UPDATE_THREAD_NETWORK_ROUTE: () => UPDATE_THREAD_NETWORK_ROUTE,
38
- UPDATE_THREAD_ROUTE: () => UPDATE_THREAD_ROUTE,
39
- UPDATE_WORKING_MEMORY_ROUTE: () => UPDATE_WORKING_MEMORY_ROUTE,
40
- getTextContent: () => getTextContent
41
- });
42
- function hasFGAUser(requestContext) {
43
- const user = requestContext?.get("user");
44
- return !!user && typeof user === "object";
45
- }
46
- function shouldFilterThreadsWithFGA(mastra, requestContext) {
47
- return !!mastra.getServer?.()?.fga && hasFGAUser(requestContext);
48
- }
49
- async function filterAccessibleThreads({ mastra, requestContext, threads }) {
50
- const fgaProvider = mastra.getServer?.()?.fga;
51
- if (!fgaProvider || !hasFGAUser(requestContext) || threads.length === 0) return threads;
52
- return fgaProvider.filterAccessible(requestContext.get("user"), threads, "thread", require_utils.MastraFGAPermissions.MEMORY_READ);
53
- }
54
- function paginateThreads({ threads, page, perPage }) {
55
- const effectivePage = page ?? 0;
56
- const effectivePerPage = perPage ?? 100;
57
- if (effectivePerPage === false) return {
58
- threads,
59
- page: effectivePage,
60
- perPage: false,
61
- total: threads.length,
62
- hasMore: false
63
- };
64
- const start = effectivePage * effectivePerPage;
65
- const pagedThreads = threads.slice(start, start + effectivePerPage);
66
- return {
67
- threads: pagedThreads,
68
- page: effectivePage,
69
- perPage: effectivePerPage,
70
- total: threads.length,
71
- hasMore: start + pagedThreads.length < threads.length
72
- };
73
- }
74
- async function enforceDeleteMessagesThreadAccess({ mastra, requestContext, memoryStore, messageIds, effectiveResourceId }) {
75
- const { messages } = await memoryStore.listMessagesById({ messageIds });
76
- const threadIds = [...new Set(messages.map((m) => m.threadId).filter(Boolean))];
77
- if (messages.some((message) => !message.threadId)) throw new require_http_exception.HTTPException(403, { message: "Access denied: unable to verify message thread access" });
78
- for (const threadId of threadIds) {
79
- const thread = await memoryStore.getThreadById({ threadId });
80
- if (!thread) throw new require_http_exception.HTTPException(403, { message: "Access denied: unable to verify message thread access" });
81
- await require_utils.enforceThreadAccess({
82
- mastra,
83
- requestContext,
84
- threadId,
85
- thread,
86
- effectiveResourceId,
87
- permission: require_utils.MastraFGAPermissions.MEMORY_DELETE
88
- });
89
- }
90
- }
91
- function getTextContent(message) {
92
- if (typeof message.content === "string") return message.content;
93
- if (message.content && typeof message.content === "object" && "parts" in message.content) return message.content.parts.find((p) => p.type === "text")?.text || "";
94
- return "";
95
- }
96
- async function getMemoryFromContext({ mastra, agentId, requestContext, allowMissingAgent = false }) {
97
- const logger = mastra.getLogger();
98
- let agent;
99
- if (agentId) try {
100
- agent = mastra.getAgentById(agentId);
101
- } catch (error) {
102
- logger.debug("Error getting agent from mastra, searching agents for agent", error);
103
- }
104
- if (agentId && !agent) {
105
- logger.debug("Agent not found in registered agents, trying stored agents", { agentId });
106
- try {
107
- const storedAgent = await mastra.getEditor()?.agent.getById(agentId) ?? null;
108
- if (storedAgent) agent = storedAgent;
109
- } catch (error) {
110
- logger.debug("Error getting stored agent", error);
111
- }
112
- }
113
- if (agentId && !agent) {
114
- logger.debug("Stored agent not found, searching sub-agents", { agentId });
115
- const agents = mastra.listAgents();
116
- if (Object.keys(agents || {}).length) for (const [_, ag] of Object.entries(agents)) try {
117
- const subAgents = await ag.listAgents({ requestContext });
118
- if (subAgents[agentId]) {
119
- agent = subAgents[agentId];
120
- break;
121
- }
122
- } catch (error) {
123
- logger.debug("Error getting agent from agent", error);
124
- }
125
- if (!agent) {
126
- if (allowMissingAgent) {
127
- logger.debug("Agent not found in any resolution tier, returning null for storage fallback", { agentId });
128
- return null;
129
- }
130
- throw new require_http_exception.HTTPException(404, { message: "Agent not found" });
131
- }
132
- }
133
- if (agent) return await agent?.getMemory({ requestContext });
134
- }
135
- /**
136
- * Gets the storage from context, used as a fallback when agent memory can't be resolved.
137
- * This covers both cases where no agentId is provided and where the agentId refers to
138
- * a stored agent whose memory instance can't be hydrated (e.g. no editor configured).
139
- */
140
- function getStorageFromContext({ mastra }) {
141
- return mastra.getStorage();
142
- }
143
- function agentSupportsMemory(agent) {
144
- if (!agent) return true;
145
- const candidate = agent;
146
- if (typeof candidate.supportsMemory === "function" && !candidate.supportsMemory()) return false;
147
- if (typeof candidate.hasOwnMemory === "function" && !candidate.hasOwnMemory()) return false;
148
- return true;
149
- }
150
- /**
151
- * Gets the agent from context for OM processor detection.
152
- */
153
- async function getAgentFromContext({ mastra, agentId, requestContext }) {
154
- if (!agentId) return null;
155
- const logger = mastra.getLogger();
156
- let agent = null;
157
- try {
158
- agent = mastra.getAgentById(agentId);
159
- } catch (error) {
160
- logger.debug("Error getting agent from mastra", error);
161
- }
162
- if (!agent) {
163
- logger.debug("Agent not found in registered agents, trying stored agents", { agentId });
164
- try {
165
- const storedAgent = await mastra.getEditor()?.agent.getById(agentId) ?? null;
166
- if (storedAgent) agent = storedAgent;
167
- } catch (error) {
168
- logger.debug("Error getting stored agent", error);
169
- }
170
- }
171
- if (!agent) {
172
- logger.debug("Stored agent not found, searching sub-agents", { agentId });
173
- const agents = mastra.listAgents();
174
- if (Object.keys(agents || {}).length) for (const [_, ag] of Object.entries(agents)) try {
175
- const nestedAgent = (await ag.listAgents({ requestContext }))[agentId];
176
- if (nestedAgent instanceof _mastra_core_agent.Agent) {
177
- agent = nestedAgent;
178
- break;
179
- }
180
- } catch (error) {
181
- logger.debug("Error getting agent from agent", error);
182
- }
183
- }
184
- return agent;
185
- }
186
- /**
187
- * Gets Observational Memory configuration from an agent's processors.
188
- * Returns null if OM is not enabled.
189
- */
190
- async function getOMConfigFromAgent(agent, requestContext) {
191
- try {
192
- if (typeof agent.resolveProcessorById !== "function") return null;
193
- const omProcessor = await agent.resolveProcessorById("observational-memory", requestContext);
194
- if (!omProcessor) return null;
195
- if (typeof omProcessor.getResolvedConfig === "function") {
196
- const resolvedConfig = await omProcessor.getResolvedConfig(requestContext);
197
- return {
198
- enabled: true,
199
- scope: resolvedConfig.scope || "resource",
200
- shareTokenBudget: resolvedConfig.shareTokenBudget,
201
- messageTokens: resolvedConfig.observation?.messageTokens,
202
- observationTokens: resolvedConfig.reflection?.observationTokens,
203
- observationModel: resolvedConfig.observation?.model,
204
- reflectionModel: resolvedConfig.reflection?.model,
205
- observationModelRouting: resolvedConfig.observation?.routing,
206
- reflectionModelRouting: resolvedConfig.reflection?.routing
207
- };
208
- }
209
- const processorConfig = omProcessor.config || {};
210
- return {
211
- enabled: true,
212
- scope: processorConfig.scope || "resource",
213
- shareTokenBudget: processorConfig.shareTokenBudget,
214
- messageTokens: processorConfig.observation?.messageTokens,
215
- observationTokens: processorConfig.reflection?.observationTokens,
216
- observationModel: void 0,
217
- reflectionModel: void 0,
218
- observationModelRouting: void 0,
219
- reflectionModelRouting: void 0
220
- };
221
- } catch {
222
- return null;
223
- }
224
- }
225
- /**
226
- * Gets Observational Memory status for a specific resource/thread.
227
- */
228
- async function getOMStatus(memoryStorage, resourceId, threadId) {
229
- try {
230
- const record = await memoryStorage.getObservationalMemory(threadId ?? null, resourceId);
231
- if (!record) return { hasRecord: false };
232
- return {
233
- hasRecord: true,
234
- originType: record.originType,
235
- lastObservedAt: record.lastObservedAt ?? null,
236
- tokenCount: record.totalTokensObserved,
237
- observationTokenCount: record.observationTokenCount,
238
- isObserving: record.isObserving,
239
- isReflecting: record.isReflecting
240
- };
241
- } catch {
242
- return null;
243
- }
244
- }
245
- const GET_MEMORY_STATUS_ROUTE = require_route_builder.createRoute({
246
- method: "GET",
247
- path: "/memory/status",
248
- responseType: "json",
249
- queryParamSchema: require_memory.getMemoryStatusQuerySchema,
250
- responseSchema: require_memory.memoryStatusResponseSchema,
251
- summary: "Get memory status",
252
- description: "Returns the current status of the memory system including configuration and health information",
253
- tags: ["Memory"],
254
- requiresAuth: true,
255
- handler: async ({ mastra, agentId, resourceId, threadId, requestContext }) => {
256
- try {
257
- const agent = await getAgentFromContext({
258
- mastra,
259
- agentId,
260
- requestContext
261
- });
262
- const isGateway = agent ? await require_server_handlers_gateway_memory_client.isGatewayAgentAsync(agent) : false;
263
- if (agent && isGateway) {
264
- const gwClient = require_server_handlers_gateway_memory_client.getGatewayClient();
265
- if (gwClient) {
266
- let omStatus;
267
- if (resourceId && threadId) try {
268
- const { record } = await gwClient.getObservationRecord(threadId, resourceId);
269
- if (record) omStatus = {
270
- enabled: true,
271
- hasRecord: true,
272
- originType: record.originType,
273
- lastObservedAt: record.lastObservedAt ? new Date(record.lastObservedAt) : void 0,
274
- tokenCount: record.totalTokensObserved,
275
- observationTokenCount: record.observationTokenCount,
276
- isObserving: record.isObserving,
277
- isReflecting: record.isReflecting
278
- };
279
- else omStatus = {
280
- enabled: true,
281
- hasRecord: false
282
- };
283
- } catch {
284
- omStatus = { enabled: true };
285
- }
286
- else omStatus = { enabled: true };
287
- return {
288
- result: true,
289
- memoryType: "gateway",
290
- observationalMemory: omStatus
291
- };
292
- }
293
- }
294
- const memory = await getMemoryFromContext({
295
- mastra,
296
- agentId,
297
- requestContext,
298
- allowMissingAgent: true
299
- });
300
- if (memory) {
301
- let omStatus;
302
- if (agent) {
303
- const omConfig = await getOMConfigFromAgent(agent, requestContext);
304
- if (omConfig?.enabled && resourceId) {
305
- const omThreadId = omConfig.scope === "resource" ? void 0 : threadId;
306
- try {
307
- const memoryStore = await memory.storage.getStore("memory");
308
- if (memoryStore) {
309
- const status = await getOMStatus(memoryStore, resourceId, omThreadId);
310
- if (status) omStatus = {
311
- enabled: true,
312
- ...status,
313
- lastObservedAt: status.lastObservedAt ?? void 0
314
- };
315
- else omStatus = {
316
- enabled: true,
317
- hasRecord: false
318
- };
319
- }
320
- } catch {
321
- omStatus = { enabled: true };
322
- }
323
- } else if (omConfig?.enabled) omStatus = { enabled: true };
324
- }
325
- return {
326
- result: true,
327
- memoryType: "local",
328
- observationalMemory: omStatus
329
- };
330
- }
331
- if (!agentSupportsMemory(agent)) return { result: false };
332
- if (getStorageFromContext({ mastra })) return { result: true };
333
- return { result: false };
334
- } catch (error) {
335
- return require_server_handlers_error.handleError(error, "Error getting memory status");
336
- }
337
- }
338
- });
339
- const GET_MEMORY_CONFIG_ROUTE = require_route_builder.createRoute({
340
- method: "GET",
341
- path: "/memory/config",
342
- responseType: "json",
343
- queryParamSchema: require_memory.getMemoryConfigQuerySchema,
344
- responseSchema: require_memory.memoryConfigResponseSchema,
345
- summary: "Get memory configuration",
346
- description: "Returns the memory configuration for a specific agent or the system default",
347
- tags: ["Memory"],
348
- requiresAuth: true,
349
- handler: async ({ mastra, agentId, requestContext }) => {
350
- try {
351
- const agent = await getAgentFromContext({
352
- mastra,
353
- agentId,
354
- requestContext
355
- });
356
- if (agent && await require_server_handlers_gateway_memory_client.isGatewayAgentAsync(agent) && require_server_handlers_gateway_memory_client.getGatewayClient()) return {
357
- memoryType: "gateway",
358
- config: { observationalMemory: {
359
- enabled: true,
360
- scope: "thread",
361
- messageTokens: 3e4,
362
- observationTokens: 4e4
363
- } }
364
- };
365
- const memory = await getMemoryFromContext({
366
- mastra,
367
- agentId,
368
- requestContext,
369
- allowMissingAgent: true
370
- });
371
- if (!memory) return { config: null };
372
- const config = memory.getMergedThreadConfig({});
373
- let omConfig;
374
- if (agent) omConfig = await getOMConfigFromAgent(agent, requestContext) ?? { enabled: false };
375
- return { config: {
376
- ...config,
377
- observationalMemory: omConfig
378
- } };
379
- } catch (error) {
380
- return require_server_handlers_error.handleError(error, "Error getting memory configuration");
381
- }
382
- }
383
- });
384
- const GET_OBSERVATIONAL_MEMORY_ROUTE = require_route_builder.createRoute({
385
- method: "GET",
386
- path: "/memory/observational-memory",
387
- responseType: "json",
388
- queryParamSchema: require_memory.getObservationalMemoryQuerySchema,
389
- responseSchema: require_memory.getObservationalMemoryResponseSchema,
390
- summary: "Get observational memory data",
391
- description: "Returns the current observational memory record and optional history for a resource/thread",
392
- tags: ["Memory"],
393
- requiresAuth: true,
394
- handler: async ({ mastra, agentId, resourceId, threadId, from, to, offset, limit, requestContext }) => {
395
- try {
396
- const agent = await getAgentFromContext({
397
- mastra,
398
- agentId,
399
- requestContext
400
- });
401
- if (!agent) throw new require_http_exception.HTTPException(404, { message: "Agent not found" });
402
- const historyLimit = limit ?? 5;
403
- const historyOptions = {
404
- from,
405
- to,
406
- offset
407
- };
408
- if (await require_server_handlers_gateway_memory_client.isGatewayAgentAsync(agent)) {
409
- const gwClient = require_server_handlers_gateway_memory_client.getGatewayClient();
410
- if (gwClient && resourceId && threadId) {
411
- const [recordResult, historyResult] = await Promise.all([gwClient.getObservationRecord(threadId, resourceId), gwClient.getObservationHistory(threadId, {
412
- resourceId,
413
- limit: historyLimit,
414
- from,
415
- to,
416
- offset
417
- })]);
418
- return {
419
- record: recordResult.record ? require_server_handlers_gateway_memory_client.toLocalOMRecord(recordResult.record) : null,
420
- history: historyResult.records?.length > 0 ? historyResult.records.map(require_server_handlers_gateway_memory_client.toLocalOMRecord) : void 0
421
- };
422
- }
423
- return {
424
- record: null,
425
- history: void 0
426
- };
427
- }
428
- const omConfig = await getOMConfigFromAgent(agent, requestContext);
429
- if (!omConfig?.enabled) throw new require_http_exception.HTTPException(400, { message: "Observational Memory is not enabled for this agent" });
430
- const memory = await getMemoryFromContext({
431
- mastra,
432
- agentId,
433
- requestContext
434
- });
435
- if (!memory) throw new require_http_exception.HTTPException(400, { message: "Memory is not configured for this agent" });
436
- let memoryStore;
437
- try {
438
- memoryStore = await memory.storage.getStore("memory");
439
- } catch {
440
- throw new require_http_exception.HTTPException(400, { message: "Memory storage is not initialized" });
441
- }
442
- if (!memoryStore) throw new require_http_exception.HTTPException(400, { message: "Memory storage is not initialized" });
443
- const effectiveResourceId = resourceId;
444
- if (!effectiveResourceId) throw new require_http_exception.HTTPException(400, { message: "resourceId is required for observational memory lookup" });
445
- const omThreadId = omConfig.scope === "resource" ? null : threadId ?? null;
446
- const record = await memoryStore.getObservationalMemory(omThreadId, effectiveResourceId);
447
- const history = await memoryStore.getObservationalMemoryHistory(omThreadId, effectiveResourceId, historyLimit, historyOptions);
448
- return {
449
- record: record ?? null,
450
- history: history.length > 0 ? history : void 0
451
- };
452
- } catch (error) {
453
- return require_server_handlers_error.handleError(error, "Error getting observational memory");
454
- }
455
- }
456
- });
457
- const AWAIT_BUFFER_STATUS_ROUTE = require_route_builder.createRoute({
458
- method: "POST",
459
- path: "/memory/observational-memory/buffer-status",
460
- responseType: "json",
461
- bodySchema: require_memory.awaitBufferStatusBodySchema,
462
- responseSchema: require_memory.awaitBufferStatusResponseSchema,
463
- summary: "Await observational memory buffering completion",
464
- description: "Blocks until any in-flight buffering operations complete for the given thread/resource, then returns the updated record",
465
- tags: ["Memory"],
466
- requiresAuth: true,
467
- handler: async ({ mastra, agentId, resourceId, threadId, requestContext }) => {
468
- try {
469
- const agent = await getAgentFromContext({
470
- mastra,
471
- agentId,
472
- requestContext
473
- });
474
- if (!agent) throw new require_http_exception.HTTPException(404, { message: "Agent not found" });
475
- if (await require_server_handlers_gateway_memory_client.isGatewayAgentAsync(agent)) {
476
- const gwClient = require_server_handlers_gateway_memory_client.getGatewayClient();
477
- if (gwClient && resourceId && threadId) {
478
- const maxWaitMs = 3e4;
479
- const pollIntervalMs = 1e3;
480
- const deadline = Date.now() + maxWaitMs;
481
- let record = null;
482
- while (Date.now() < deadline) {
483
- const result = await gwClient.getObservationRecord(threadId, resourceId);
484
- record = result.record ? require_server_handlers_gateway_memory_client.toLocalOMRecord(result.record) : null;
485
- if (!record || !record.isBufferingObservation && !record.isBufferingReflection) break;
486
- await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
487
- }
488
- return { record };
489
- }
490
- return { record: null };
491
- }
492
- const omConfig = await getOMConfigFromAgent(agent, requestContext);
493
- if (!omConfig?.enabled) throw new require_http_exception.HTTPException(400, { message: "Observational Memory is not enabled for this agent" });
494
- const omProcessor = await agent.resolveProcessorById("observational-memory", requestContext);
495
- if (!omProcessor || typeof omProcessor.waitForBuffering !== "function") throw new require_http_exception.HTTPException(400, { message: "Observational Memory processor not available" });
496
- await omProcessor.waitForBuffering(threadId, resourceId);
497
- const memory = await getMemoryFromContext({
498
- mastra,
499
- agentId,
500
- requestContext
501
- });
502
- if (!memory) throw new require_http_exception.HTTPException(400, { message: "Memory is not configured for this agent" });
503
- let memoryStore;
504
- try {
505
- memoryStore = await memory.storage.getStore("memory");
506
- } catch {
507
- throw new require_http_exception.HTTPException(400, { message: "Memory storage is not initialized" });
508
- }
509
- if (!memoryStore) throw new require_http_exception.HTTPException(400, { message: "Memory storage is not initialized" });
510
- const effectiveResourceId = resourceId;
511
- if (!effectiveResourceId) throw new require_http_exception.HTTPException(400, { message: "resourceId is required" });
512
- const omThreadId = omConfig.scope === "resource" ? null : threadId ?? null;
513
- return { record: await memoryStore.getObservationalMemory(omThreadId, effectiveResourceId) ?? null };
514
- } catch (error) {
515
- console.error("Error awaiting buffer status", error);
516
- return require_server_handlers_error.handleError(error, "Error awaiting buffer status");
517
- }
518
- }
519
- });
520
- const LIST_THREADS_ROUTE = require_route_builder.createRoute({
521
- method: "GET",
522
- path: "/memory/threads",
523
- responseType: "json",
524
- queryParamSchema: require_memory.listThreadsQuerySchema,
525
- responseSchema: require_memory.listThreadsResponseSchema,
526
- summary: "List memory threads",
527
- description: "Returns a paginated list of conversation threads with optional filtering by resource ID and/or metadata",
528
- tags: ["Memory"],
529
- requiresAuth: true,
530
- handler: async ({ mastra, agentId, resourceId, metadata, requestContext, page, perPage, orderBy }) => {
531
- try {
532
- const effectiveResourceId = require_utils.getEffectiveResourceId(requestContext, resourceId);
533
- const agent = await getAgentFromContext({
534
- mastra,
535
- agentId,
536
- requestContext
537
- });
538
- const isGateway = agent ? await require_server_handlers_gateway_memory_client.isGatewayAgentAsync(agent) : false;
539
- if (agent && isGateway) {
540
- const gwClient = require_server_handlers_gateway_memory_client.getGatewayClient();
541
- if (gwClient) {
542
- if (shouldFilterThreadsWithFGA(mastra, requestContext)) {
543
- const initialResult = await gwClient.listThreads({
544
- resourceId: effectiveResourceId,
545
- limit: 1,
546
- offset: 0
547
- });
548
- return paginateThreads({
549
- threads: await filterAccessibleThreads({
550
- mastra,
551
- requestContext,
552
- threads: initialResult.total > 0 ? (await gwClient.listThreads({
553
- resourceId: effectiveResourceId,
554
- limit: initialResult.total,
555
- offset: 0
556
- })).threads.map(require_server_handlers_gateway_memory_client.toLocalThread) : []
557
- }),
558
- page,
559
- perPage
560
- });
561
- }
562
- const effectivePage = page ?? 0;
563
- const effectivePerPage = perPage ?? 100;
564
- const offset = effectivePage * effectivePerPage;
565
- const result = await gwClient.listThreads({
566
- resourceId: effectiveResourceId,
567
- limit: effectivePerPage,
568
- offset
569
- });
570
- return {
571
- threads: result.threads.map(require_server_handlers_gateway_memory_client.toLocalThread),
572
- page: effectivePage,
573
- perPage: effectivePerPage,
574
- total: result.total,
575
- hasMore: offset + result.threads.length < result.total
576
- };
577
- }
578
- }
579
- const filter = effectiveResourceId || metadata ? {} : void 0;
580
- if (effectiveResourceId) filter.resourceId = effectiveResourceId;
581
- if (metadata) filter.metadata = metadata;
582
- const memory = await getMemoryFromContext({
583
- mastra,
584
- agentId,
585
- requestContext,
586
- allowMissingAgent: true
587
- });
588
- if (memory) {
589
- const result = await memory.listThreads(shouldFilterThreadsWithFGA(mastra, requestContext) ? {
590
- filter,
591
- perPage: false,
592
- orderBy
593
- } : {
594
- filter,
595
- page,
596
- perPage,
597
- orderBy
598
- });
599
- if (!shouldFilterThreadsWithFGA(mastra, requestContext)) return result;
600
- return paginateThreads({
601
- threads: await filterAccessibleThreads({
602
- mastra,
603
- requestContext,
604
- threads: result.threads
605
- }),
606
- page,
607
- perPage
608
- });
609
- }
610
- const storage = getStorageFromContext({ mastra });
611
- if (storage) {
612
- const memoryStore = await storage.getStore("memory");
613
- if (memoryStore) {
614
- const result = await memoryStore.listThreads(shouldFilterThreadsWithFGA(mastra, requestContext) ? {
615
- filter,
616
- perPage: false,
617
- orderBy
618
- } : {
619
- filter,
620
- page,
621
- perPage,
622
- orderBy
623
- });
624
- if (!shouldFilterThreadsWithFGA(mastra, requestContext)) return result;
625
- return paginateThreads({
626
- threads: await filterAccessibleThreads({
627
- mastra,
628
- requestContext,
629
- threads: result.threads
630
- }),
631
- page,
632
- perPage
633
- });
634
- }
635
- }
636
- throw new require_http_exception.HTTPException(400, { message: "Memory is not initialized" });
637
- } catch (error) {
638
- return require_server_handlers_error.handleError(error, "Error listing threads");
639
- }
640
- }
641
- });
642
- const GET_THREAD_BY_ID_ROUTE = require_route_builder.createRoute({
643
- method: "GET",
644
- path: "/memory/threads/:threadId",
645
- responseType: "json",
646
- pathParamSchema: require_memory.threadIdPathParams,
647
- queryParamSchema: require_memory.getThreadByIdQuerySchema,
648
- responseSchema: require_memory.getThreadByIdResponseSchema,
649
- summary: "Get thread by ID",
650
- description: "Returns details for a specific conversation thread",
651
- tags: ["Memory"],
652
- requiresAuth: true,
653
- handler: async ({ mastra, agentId, threadId, resourceId, requestContext }) => {
654
- try {
655
- const effectiveThreadId = require_utils.getEffectiveThreadId(requestContext, threadId);
656
- const effectiveResourceId = require_utils.getEffectiveResourceId(requestContext, resourceId);
657
- require_utils.validateBody({ threadId: effectiveThreadId });
658
- const agent = await getAgentFromContext({
659
- mastra,
660
- agentId,
661
- requestContext
662
- });
663
- const isGateway = agent ? await require_server_handlers_gateway_memory_client.isGatewayAgentAsync(agent) : false;
664
- if (agent && isGateway) {
665
- const gwClient = require_server_handlers_gateway_memory_client.getGatewayClient();
666
- if (gwClient) {
667
- const result = await gwClient.getThread(effectiveThreadId);
668
- if (!result) return {
669
- id: effectiveThreadId,
670
- resourceId: effectiveResourceId ?? "",
671
- title: "",
672
- metadata: {},
673
- createdAt: /* @__PURE__ */ new Date(),
674
- updatedAt: /* @__PURE__ */ new Date()
675
- };
676
- const thread = require_server_handlers_gateway_memory_client.toLocalThread(result.thread);
677
- await require_utils.enforceThreadAccess({
678
- mastra,
679
- requestContext,
680
- threadId: effectiveThreadId,
681
- thread,
682
- effectiveResourceId
683
- });
684
- return thread;
685
- }
686
- }
687
- const memory = await getMemoryFromContext({
688
- mastra,
689
- agentId,
690
- requestContext,
691
- allowMissingAgent: true
692
- });
693
- if (memory) {
694
- const thread = await memory.getThreadById({ threadId: effectiveThreadId });
695
- if (!thread) throw new require_http_exception.HTTPException(404, { message: "Thread not found" });
696
- await require_utils.enforceThreadAccess({
697
- mastra,
698
- requestContext,
699
- threadId: effectiveThreadId,
700
- thread,
701
- effectiveResourceId
702
- });
703
- return thread;
704
- }
705
- const storage = getStorageFromContext({ mastra });
706
- if (storage) {
707
- const memoryStore = await storage.getStore("memory");
708
- if (memoryStore) {
709
- const thread = await memoryStore.getThreadById({ threadId: effectiveThreadId });
710
- if (!thread) throw new require_http_exception.HTTPException(404, { message: "Thread not found" });
711
- await require_utils.enforceThreadAccess({
712
- mastra,
713
- requestContext,
714
- threadId: effectiveThreadId,
715
- thread,
716
- effectiveResourceId
717
- });
718
- return thread;
719
- }
720
- }
721
- throw new require_http_exception.HTTPException(400, { message: "Memory is not initialized" });
722
- } catch (error) {
723
- return require_server_handlers_error.handleError(error, "Error getting thread");
724
- }
725
- }
726
- });
727
- const LIST_MESSAGES_ROUTE = require_route_builder.createRoute({
728
- method: "GET",
729
- path: "/memory/threads/:threadId/messages",
730
- responseType: "json",
731
- pathParamSchema: require_memory.threadIdPathParams,
732
- queryParamSchema: require_memory.listMessagesQuerySchema,
733
- responseSchema: require_memory.listMessagesResponseSchema,
734
- summary: "List thread messages",
735
- description: "Returns a paginated list of messages in a conversation thread",
736
- tags: ["Memory"],
737
- requiresAuth: true,
738
- handler: (async ({ mastra, agentId, threadId, resourceId, perPage, page, orderBy, include, filter, includeSystemReminders, requestContext }) => {
739
- try {
740
- const effectiveThreadId = require_utils.getEffectiveThreadId(requestContext, threadId);
741
- const effectiveResourceId = require_utils.getEffectiveResourceId(requestContext, resourceId);
742
- require_utils.validateBody({ threadId: effectiveThreadId });
743
- if (!effectiveThreadId) throw new require_http_exception.HTTPException(400, { message: "No threadId found" });
744
- const agent = await getAgentFromContext({
745
- mastra,
746
- agentId,
747
- requestContext
748
- });
749
- if (agent && await require_server_handlers_gateway_memory_client.isGatewayAgentAsync(agent)) {
750
- const gwClient = require_server_handlers_gateway_memory_client.getGatewayClient();
751
- if (gwClient) {
752
- if (filter?.metadata && Object.keys(filter.metadata).length > 0) throw new require_http_exception.HTTPException(501, { message: "Gateway memory message metadata filters are not supported by this gateway endpoint. Remove filter.metadata or query a local memory store." });
753
- const threadResult = await gwClient.getThread(effectiveThreadId);
754
- if (threadResult) await require_utils.enforceThreadAccess({
755
- mastra,
756
- requestContext,
757
- threadId: effectiveThreadId,
758
- thread: require_server_handlers_gateway_memory_client.toLocalThread(threadResult.thread),
759
- effectiveResourceId
760
- });
761
- const effectivePage = page ?? 0;
762
- const effectivePerPage = perPage ?? 100;
763
- const offset = effectivePage * effectivePerPage;
764
- const result = await gwClient.listMessages(effectiveThreadId, {
765
- limit: effectivePerPage,
766
- offset,
767
- order: orderBy?.direction?.toLowerCase()
768
- });
769
- if (!result) throw new require_http_exception.HTTPException(404, { message: "Thread not found" });
770
- return {
771
- messages: result.messages.map(require_server_handlers_gateway_memory_client.toLocalMessage),
772
- uiMessages: result.messages.map(require_server_handlers_gateway_memory_client.toLocalMessage)
773
- };
774
- }
775
- }
776
- const memory = await getMemoryFromContext({
777
- mastra,
778
- agentId,
779
- requestContext,
780
- allowMissingAgent: true
781
- });
782
- if (memory) {
783
- const thread = await memory.getThreadById({ threadId: effectiveThreadId });
784
- if (!thread) throw new require_http_exception.HTTPException(404, { message: "Thread not found" });
785
- await require_utils.enforceThreadAccess({
786
- mastra,
787
- requestContext,
788
- threadId: effectiveThreadId,
789
- thread,
790
- effectiveResourceId
791
- });
792
- const result = await memory.recall({
793
- threadId: effectiveThreadId,
794
- resourceId: effectiveResourceId,
795
- perPage,
796
- page,
797
- orderBy,
798
- include,
799
- filter,
800
- includeSystemReminders
801
- });
802
- const uiMessages = result.uiMessages;
803
- return {
804
- ...result,
805
- uiMessages: Array.isArray(uiMessages) ? uiMessages : null
806
- };
807
- }
808
- const storage = getStorageFromContext({ mastra });
809
- if (storage) {
810
- const memoryStore = await storage.getStore("memory");
811
- if (memoryStore) {
812
- const thread = await memoryStore.getThreadById({ threadId: effectiveThreadId });
813
- if (!thread) throw new require_http_exception.HTTPException(404, { message: "Thread not found" });
814
- await require_utils.enforceThreadAccess({
815
- mastra,
816
- requestContext,
817
- threadId: effectiveThreadId,
818
- thread,
819
- effectiveResourceId
820
- });
821
- return {
822
- ...await memoryStore.listMessages({
823
- threadId: effectiveThreadId,
824
- resourceId: effectiveResourceId,
825
- perPage,
826
- page,
827
- orderBy,
828
- include,
829
- filter
830
- }),
831
- uiMessages: null
832
- };
833
- }
834
- }
835
- return {
836
- messages: [],
837
- uiMessages: []
838
- };
839
- } catch (error) {
840
- return require_server_handlers_error.handleError(error, "Error getting messages");
841
- }
842
- })
843
- });
844
- const GET_WORKING_MEMORY_ROUTE = require_route_builder.createRoute({
845
- method: "GET",
846
- path: "/memory/threads/:threadId/working-memory",
847
- responseType: "json",
848
- pathParamSchema: require_memory.threadIdPathParams,
849
- queryParamSchema: require_memory.getWorkingMemoryQuerySchema,
850
- responseSchema: require_memory.getWorkingMemoryResponseSchema,
851
- summary: "Get working memory",
852
- description: "Returns the working memory state for a thread",
853
- tags: ["Memory"],
854
- requiresAuth: true,
855
- handler: async ({ mastra, agentId, threadId, resourceId, requestContext, memoryConfig }) => {
856
- try {
857
- const effectiveThreadId = require_utils.getEffectiveThreadId(requestContext, threadId);
858
- const effectiveResourceId = require_utils.getEffectiveResourceId(requestContext, resourceId);
859
- require_utils.validateBody({ threadId: effectiveThreadId });
860
- const gwAgent = await getAgentFromContext({
861
- mastra,
862
- agentId,
863
- requestContext
864
- });
865
- if (gwAgent && await require_server_handlers_gateway_memory_client.isGatewayAgentAsync(gwAgent) && require_server_handlers_gateway_memory_client.getGatewayClient()) return {
866
- workingMemory: null,
867
- source: "thread",
868
- workingMemoryTemplate: null,
869
- threadExists: true
870
- };
871
- const memory = await getMemoryFromContext({
872
- mastra,
873
- agentId,
874
- requestContext,
875
- allowMissingAgent: true
876
- });
877
- if (!memory) return {
878
- workingMemory: null,
879
- source: "thread",
880
- workingMemoryTemplate: null,
881
- threadExists: false
882
- };
883
- const thread = await memory.getThreadById({ threadId: effectiveThreadId });
884
- const source = memory.getMergedThreadConfig(memoryConfig || {}).workingMemory?.scope !== "thread" && effectiveResourceId ? "resource" : "thread";
885
- if (thread || source === "resource") await require_utils.enforceThreadAccess({
886
- mastra,
887
- requestContext,
888
- threadId: effectiveThreadId,
889
- thread,
890
- effectiveResourceId
891
- });
892
- const threadExists = !!thread;
893
- const template = await memory.getWorkingMemoryTemplate({ memoryConfig });
894
- const workingMemoryTemplate = template?.format === "json" ? {
895
- ...template,
896
- content: JSON.stringify((0, _mastra_core_utils.generateEmptyFromSchema)(template.content))
897
- } : template;
898
- return {
899
- workingMemory: await memory.getWorkingMemory({
900
- threadId: effectiveThreadId,
901
- resourceId: effectiveResourceId,
902
- memoryConfig
903
- }),
904
- source,
905
- workingMemoryTemplate,
906
- threadExists
907
- };
908
- } catch (error) {
909
- return require_server_handlers_error.handleError(error, "Error getting working memory");
910
- }
911
- }
912
- });
913
- const SAVE_MESSAGES_ROUTE = require_route_builder.createRoute({
914
- method: "POST",
915
- path: "/memory/save-messages",
916
- responseType: "json",
917
- queryParamSchema: require_memory.agentIdQuerySchema,
918
- bodySchema: require_memory.saveMessagesBodySchema,
919
- responseSchema: require_memory.saveMessagesResponseSchema,
920
- summary: "Save messages",
921
- description: "Saves new messages to memory",
922
- tags: ["Memory"],
923
- requiresAuth: true,
924
- handler: async ({ mastra, agentId, messages, requestContext }) => {
925
- try {
926
- const effectiveResourceId = require_utils.getEffectiveResourceId(requestContext, void 0);
927
- const memory = await getMemoryFromContext({
928
- mastra,
929
- agentId,
930
- requestContext
931
- });
932
- if (!memory) throw new require_http_exception.HTTPException(400, { message: "Memory is not initialized" });
933
- if (!messages) throw new require_http_exception.HTTPException(400, { message: "Messages are required" });
934
- if (!Array.isArray(messages)) throw new require_http_exception.HTTPException(400, { message: "Messages should be an array" });
935
- const incomingMessages = messages;
936
- const resourceIdByThread = /* @__PURE__ */ new Map();
937
- for (const message of incomingMessages) {
938
- if (!message.threadId || !message.resourceId) continue;
939
- const existingResourceId = resourceIdByThread.get(message.threadId);
940
- if (!existingResourceId) resourceIdByThread.set(message.threadId, message.resourceId);
941
- else if (existingResourceId !== message.resourceId) throw new require_http_exception.HTTPException(400, { message: "All messages for the same threadId must use the same resourceId." });
942
- }
943
- const invalidMessages = incomingMessages.filter((message) => !message.threadId || !message.resourceId);
944
- if (invalidMessages.length > 0) throw new require_http_exception.HTTPException(400, { message: `All messages must have threadId and resourceId fields. Found ${invalidMessages.length} invalid message(s).` });
945
- if (effectiveResourceId) {
946
- if (incomingMessages.filter((message) => message.resourceId !== effectiveResourceId).length > 0) throw new require_http_exception.HTTPException(403, { message: "Access denied: cannot save messages for a different resource" });
947
- const threadIds = [...new Set(incomingMessages.map((m) => m.threadId).filter(Boolean))];
948
- for (const threadId of threadIds) await require_utils.enforceThreadAccess({
949
- mastra,
950
- requestContext,
951
- threadId,
952
- thread: await memory.getThreadById({ threadId }),
953
- effectiveResourceId,
954
- permission: require_utils.MastraFGAPermissions.MEMORY_WRITE
955
- });
956
- } else {
957
- const threadIds = [...new Set(incomingMessages.map((m) => m.threadId).filter(Boolean))];
958
- for (const threadId of threadIds) await require_utils.enforceThreadAccess({
959
- mastra,
960
- requestContext,
961
- threadId,
962
- thread: await memory.getThreadById({ threadId }),
963
- effectiveResourceId: resourceIdByThread.get(threadId),
964
- permission: require_utils.MastraFGAPermissions.MEMORY_WRITE
965
- });
966
- }
967
- const processedMessages = incomingMessages.map((message) => ({
968
- ...message,
969
- id: message.id || memory.generateId(),
970
- createdAt: message.createdAt ? new Date(message.createdAt) : /* @__PURE__ */ new Date()
971
- }));
972
- return await memory.saveMessages({
973
- messages: processedMessages,
974
- memoryConfig: {}
975
- });
976
- } catch (error) {
977
- return require_server_handlers_error.handleError(error, "Error saving messages");
978
- }
979
- }
980
- });
981
- const CREATE_THREAD_ROUTE = require_route_builder.createRoute({
982
- method: "POST",
983
- path: "/memory/threads",
984
- responseType: "json",
985
- queryParamSchema: require_memory.agentIdQuerySchema,
986
- bodySchema: require_memory.createThreadBodySchema,
987
- responseSchema: require_memory.getThreadByIdResponseSchema,
988
- summary: "Create thread",
989
- description: "Creates a new conversation thread",
990
- tags: ["Memory"],
991
- requiresAuth: true,
992
- handler: async ({ mastra, agentId, resourceId, title, metadata, threadId, requestContext }) => {
993
- try {
994
- const effectiveResourceId = require_utils.getEffectiveResourceId(requestContext, resourceId);
995
- const effectiveThreadId = threadId ?? mastra.generateId();
996
- require_utils.validateBody({ resourceId: effectiveResourceId });
997
- const agent = await getAgentFromContext({
998
- mastra,
999
- agentId,
1000
- requestContext
1001
- });
1002
- if (agent && await require_server_handlers_gateway_memory_client.isGatewayAgentAsync(agent)) {
1003
- const gwClient = require_server_handlers_gateway_memory_client.getGatewayClient();
1004
- if (gwClient) {
1005
- const existing = threadId ? await gwClient.getThread(effectiveThreadId) : null;
1006
- await require_utils.enforceThreadAccess({
1007
- mastra,
1008
- requestContext,
1009
- threadId: effectiveThreadId,
1010
- thread: existing ? require_server_handlers_gateway_memory_client.toLocalThread(existing.thread) : null,
1011
- effectiveResourceId,
1012
- permission: require_utils.MastraFGAPermissions.MEMORY_WRITE
1013
- });
1014
- return require_server_handlers_gateway_memory_client.toLocalThread((await gwClient.createThread({
1015
- id: effectiveThreadId,
1016
- resourceId: effectiveResourceId,
1017
- title,
1018
- metadata
1019
- })).thread);
1020
- }
1021
- }
1022
- const memory = await getMemoryFromContext({
1023
- mastra,
1024
- agentId,
1025
- requestContext
1026
- });
1027
- if (!memory) throw new require_http_exception.HTTPException(400, { message: "Memory is not initialized" });
1028
- await require_utils.enforceThreadAccess({
1029
- mastra,
1030
- requestContext,
1031
- threadId: effectiveThreadId,
1032
- thread: threadId ? await memory.getThreadById({ threadId: effectiveThreadId }) : null,
1033
- effectiveResourceId,
1034
- permission: require_utils.MastraFGAPermissions.MEMORY_WRITE
1035
- });
1036
- return await memory.createThread({
1037
- resourceId: effectiveResourceId,
1038
- title,
1039
- metadata,
1040
- threadId: effectiveThreadId
1041
- });
1042
- } catch (error) {
1043
- return require_server_handlers_error.handleError(error, "Error saving thread to memory");
1044
- }
1045
- }
1046
- });
1047
- const UPDATE_THREAD_ROUTE = require_route_builder.createRoute({
1048
- method: "PATCH",
1049
- path: "/memory/threads/:threadId",
1050
- responseType: "json",
1051
- pathParamSchema: require_memory.threadIdPathParams,
1052
- queryParamSchema: require_memory.agentIdQuerySchema,
1053
- bodySchema: require_memory.updateThreadBodySchema,
1054
- responseSchema: require_memory.getThreadByIdResponseSchema,
1055
- summary: "Update thread",
1056
- description: "Updates a conversation thread",
1057
- tags: ["Memory"],
1058
- requiresAuth: true,
1059
- handler: async ({ mastra, agentId, threadId, title, metadata, resourceId, requestContext }) => {
1060
- try {
1061
- const effectiveThreadId = require_utils.getEffectiveThreadId(requestContext, threadId);
1062
- const effectiveResourceId = require_utils.getEffectiveResourceId(requestContext, resourceId);
1063
- require_utils.validateBody({ threadId: effectiveThreadId });
1064
- const agent = await getAgentFromContext({
1065
- mastra,
1066
- agentId,
1067
- requestContext
1068
- });
1069
- if (agent && await require_server_handlers_gateway_memory_client.isGatewayAgentAsync(agent)) {
1070
- const gwClient = require_server_handlers_gateway_memory_client.getGatewayClient();
1071
- if (gwClient) {
1072
- const existing = await gwClient.getThread(effectiveThreadId);
1073
- if (existing) await require_utils.enforceThreadAccess({
1074
- mastra,
1075
- requestContext,
1076
- threadId: effectiveThreadId,
1077
- thread: require_server_handlers_gateway_memory_client.toLocalThread(existing.thread),
1078
- effectiveResourceId,
1079
- permission: require_utils.MastraFGAPermissions.MEMORY_WRITE
1080
- });
1081
- const result = await gwClient.updateThread(effectiveThreadId, {
1082
- title,
1083
- metadata
1084
- });
1085
- if (!result) throw new require_http_exception.HTTPException(404, { message: "Thread not found" });
1086
- return require_server_handlers_gateway_memory_client.toLocalThread(result.thread);
1087
- }
1088
- }
1089
- const memory = await getMemoryFromContext({
1090
- mastra,
1091
- agentId,
1092
- requestContext
1093
- });
1094
- const updatedAt = /* @__PURE__ */ new Date();
1095
- if (!memory) throw new require_http_exception.HTTPException(400, { message: "Memory is not initialized" });
1096
- const thread = await memory.getThreadById({ threadId: effectiveThreadId });
1097
- if (!thread) throw new require_http_exception.HTTPException(404, { message: "Thread not found" });
1098
- await require_utils.enforceThreadAccess({
1099
- mastra,
1100
- requestContext,
1101
- threadId: effectiveThreadId,
1102
- thread,
1103
- effectiveResourceId,
1104
- permission: require_utils.MastraFGAPermissions.MEMORY_WRITE
1105
- });
1106
- const updatedThread = {
1107
- ...thread,
1108
- title: title !== void 0 ? title : thread.title,
1109
- metadata: metadata !== void 0 ? metadata : thread.metadata,
1110
- resourceId: effectiveResourceId || resourceId || thread.resourceId,
1111
- createdAt: thread.createdAt,
1112
- updatedAt
1113
- };
1114
- const result = await memory.saveThread({ thread: updatedThread });
1115
- return {
1116
- ...result,
1117
- resourceId: result.resourceId ?? null
1118
- };
1119
- } catch (error) {
1120
- return require_server_handlers_error.handleError(error, "Error updating thread");
1121
- }
1122
- }
1123
- });
1124
- const DELETE_THREAD_ROUTE = require_route_builder.createRoute({
1125
- method: "DELETE",
1126
- path: "/memory/threads/:threadId",
1127
- responseType: "json",
1128
- pathParamSchema: require_memory.threadIdPathParams,
1129
- queryParamSchema: require_memory.deleteThreadQuerySchema,
1130
- responseSchema: require_memory.deleteThreadResponseSchema,
1131
- summary: "Delete thread",
1132
- description: "Deletes a conversation thread",
1133
- tags: ["Memory"],
1134
- requiresAuth: true,
1135
- handler: async ({ mastra, agentId, threadId, resourceId, requestContext }) => {
1136
- try {
1137
- const effectiveThreadId = require_utils.getEffectiveThreadId(requestContext, threadId);
1138
- const effectiveResourceId = require_utils.getEffectiveResourceId(requestContext, resourceId);
1139
- require_utils.validateBody({ threadId: effectiveThreadId });
1140
- const agent = await getAgentFromContext({
1141
- mastra,
1142
- agentId,
1143
- requestContext
1144
- });
1145
- if (agent && await require_server_handlers_gateway_memory_client.isGatewayAgentAsync(agent)) {
1146
- const gwClient = require_server_handlers_gateway_memory_client.getGatewayClient();
1147
- if (gwClient) {
1148
- const existing = await gwClient.getThread(effectiveThreadId);
1149
- if (existing) await require_utils.enforceThreadAccess({
1150
- mastra,
1151
- requestContext,
1152
- threadId: effectiveThreadId,
1153
- thread: require_server_handlers_gateway_memory_client.toLocalThread(existing.thread),
1154
- effectiveResourceId,
1155
- permission: require_utils.MastraFGAPermissions.MEMORY_DELETE
1156
- });
1157
- if (!(await gwClient.deleteThread(effectiveThreadId)).ok) throw new require_http_exception.HTTPException(404, { message: "Thread not found on gateway" });
1158
- return { result: "Thread deleted" };
1159
- }
1160
- }
1161
- const memory = await getMemoryFromContext({
1162
- mastra,
1163
- agentId,
1164
- requestContext
1165
- });
1166
- if (!memory) throw new require_http_exception.HTTPException(400, { message: "Memory is not initialized" });
1167
- const thread = await memory.getThreadById({ threadId: effectiveThreadId });
1168
- if (!thread) throw new require_http_exception.HTTPException(404, { message: "Thread not found" });
1169
- await require_utils.enforceThreadAccess({
1170
- mastra,
1171
- requestContext,
1172
- threadId: effectiveThreadId,
1173
- thread,
1174
- effectiveResourceId,
1175
- permission: require_utils.MastraFGAPermissions.MEMORY_DELETE
1176
- });
1177
- await memory.deleteThread(effectiveThreadId);
1178
- return { result: "Thread deleted" };
1179
- } catch (error) {
1180
- return require_server_handlers_error.handleError(error, "Error deleting thread");
1181
- }
1182
- }
1183
- });
1184
- const CLONE_THREAD_ROUTE = require_route_builder.createRoute({
1185
- method: "POST",
1186
- path: "/memory/threads/:threadId/clone",
1187
- responseType: "json",
1188
- pathParamSchema: require_memory.threadIdPathParams,
1189
- queryParamSchema: require_memory.agentIdQuerySchema,
1190
- bodySchema: require_memory.cloneThreadBodySchema,
1191
- responseSchema: require_memory.cloneThreadResponseSchema,
1192
- summary: "Clone thread",
1193
- description: "Creates a copy of a conversation thread with all its messages",
1194
- tags: ["Memory"],
1195
- requiresAuth: true,
1196
- handler: async ({ mastra, agentId, threadId, newThreadId, resourceId, title, metadata, options, requestContext }) => {
1197
- try {
1198
- const effectiveThreadId = require_utils.getEffectiveThreadId(requestContext, threadId);
1199
- const effectiveResourceId = require_utils.getEffectiveResourceId(requestContext, resourceId);
1200
- const effectiveNewThreadId = newThreadId ?? mastra.generateId();
1201
- require_utils.validateBody({ threadId: effectiveThreadId });
1202
- const memory = await getMemoryFromContext({
1203
- mastra,
1204
- agentId,
1205
- requestContext
1206
- });
1207
- if (!memory) throw new require_http_exception.HTTPException(400, { message: "Memory is not initialized" });
1208
- const sourceThread = await memory.getThreadById({ threadId: effectiveThreadId });
1209
- if (!sourceThread) throw new require_http_exception.HTTPException(404, { message: "Source thread not found" });
1210
- const cloneResourceId = effectiveResourceId ?? sourceThread.resourceId ?? void 0;
1211
- await require_utils.enforceThreadAccess({
1212
- mastra,
1213
- requestContext,
1214
- threadId: effectiveThreadId,
1215
- thread: sourceThread,
1216
- effectiveResourceId
1217
- });
1218
- await require_utils.enforceThreadAccess({
1219
- mastra,
1220
- requestContext,
1221
- threadId: effectiveNewThreadId,
1222
- effectiveResourceId: cloneResourceId,
1223
- permission: require_utils.MastraFGAPermissions.MEMORY_WRITE
1224
- });
1225
- return await memory.cloneThread({
1226
- sourceThreadId: effectiveThreadId,
1227
- newThreadId: effectiveNewThreadId,
1228
- resourceId: cloneResourceId,
1229
- title,
1230
- metadata,
1231
- options
1232
- });
1233
- } catch (error) {
1234
- return require_server_handlers_error.handleError(error, "Error cloning thread");
1235
- }
1236
- }
1237
- });
1238
- const TRANSFER_THREAD_ROUTE = require_route_builder.createRoute({
1239
- method: "POST",
1240
- path: "/memory/threads/:threadId/transfer",
1241
- responseType: "json",
1242
- pathParamSchema: require_memory.threadIdPathParams,
1243
- queryParamSchema: require_memory.optionalAgentIdQuerySchema,
1244
- bodySchema: require_memory.transferThreadBodySchema,
1245
- responseSchema: require_memory.transferThreadResponseSchema,
1246
- summary: "Transfer thread ownership",
1247
- description: "Reassigns a thread and all of its messages to a different resource. Requires a privileged (non-resource-scoped) context.",
1248
- tags: ["Memory"],
1249
- requiresAuth: true,
1250
- handler: async ({ mastra, agentId, threadId, resourceId, requestContext }) => {
1251
- try {
1252
- const effectiveThreadId = require_utils.getEffectiveThreadId(requestContext, threadId);
1253
- require_utils.validateBody({ threadId: effectiveThreadId });
1254
- if (require_utils.getContextResourceId(requestContext)) throw new require_http_exception.HTTPException(403, { message: "Thread transfer requires a privileged (non-resource-scoped) context" });
1255
- const server = mastra.getServer?.();
1256
- if (server?.auth && !server?.fga) throw new require_http_exception.HTTPException(403, { message: "Thread transfer requires explicit authorization. Configure an FGA provider (memory:write) to authorize privileged, non-resource-scoped transfers." });
1257
- const agent = agentId ? await getAgentFromContext({
1258
- mastra,
1259
- agentId,
1260
- requestContext
1261
- }) : void 0;
1262
- if (agent && await require_server_handlers_gateway_memory_client.isGatewayAgentAsync(agent)) throw new require_http_exception.HTTPException(501, { message: "Thread transfer is not supported for gateway agents" });
1263
- const memory = await getMemoryFromContext({
1264
- mastra,
1265
- agentId,
1266
- requestContext,
1267
- allowMissingAgent: true
1268
- });
1269
- const memoryStore = memory ? void 0 : await getStorageFromContext({ mastra })?.getStore("memory");
1270
- if (!memory && !memoryStore) throw new require_http_exception.HTTPException(400, { message: "Memory is not initialized" });
1271
- const sourceThread = memory ? await memory.getThreadById({ threadId: effectiveThreadId }) : await memoryStore.getThreadById({ threadId: effectiveThreadId });
1272
- if (!sourceThread) throw new require_http_exception.HTTPException(404, { message: "Thread not found" });
1273
- await require_utils.enforceThreadAccess({
1274
- mastra,
1275
- requestContext,
1276
- threadId: effectiveThreadId,
1277
- thread: sourceThread,
1278
- effectiveResourceId: void 0,
1279
- permission: require_utils.MastraFGAPermissions.MEMORY_WRITE
1280
- });
1281
- const result = memory ? await memory.updateThreadResourceId({
1282
- threadId: effectiveThreadId,
1283
- resourceId
1284
- }) : await memoryStore.updateThreadResourceId({
1285
- threadId: effectiveThreadId,
1286
- resourceId
1287
- });
1288
- return {
1289
- ...result,
1290
- resourceId: result.resourceId ?? null
1291
- };
1292
- } catch (error) {
1293
- return require_server_handlers_error.handleError(error, "Error transferring thread");
1294
- }
1295
- }
1296
- });
1297
- const UPDATE_WORKING_MEMORY_ROUTE = require_route_builder.createRoute({
1298
- method: "POST",
1299
- path: "/memory/threads/:threadId/working-memory",
1300
- responseType: "json",
1301
- pathParamSchema: require_memory.threadIdPathParams,
1302
- queryParamSchema: require_memory.agentIdQuerySchema,
1303
- bodySchema: require_memory.updateWorkingMemoryBodySchema,
1304
- responseSchema: require_memory.updateWorkingMemoryResponseSchema,
1305
- summary: "Update working memory",
1306
- description: "Updates the working memory state for a thread",
1307
- tags: ["Memory"],
1308
- requiresAuth: true,
1309
- handler: async ({ mastra, agentId, threadId, resourceId, memoryConfig, workingMemory, mode, requestContext }) => {
1310
- try {
1311
- const effectiveThreadId = require_utils.getEffectiveThreadId(requestContext, threadId);
1312
- const effectiveResourceId = require_utils.getEffectiveResourceId(requestContext, resourceId);
1313
- require_utils.validateBody({
1314
- threadId: effectiveThreadId,
1315
- workingMemory
1316
- });
1317
- const gwAgent = await getAgentFromContext({
1318
- mastra,
1319
- agentId,
1320
- requestContext
1321
- });
1322
- if (gwAgent && await require_server_handlers_gateway_memory_client.isGatewayAgentAsync(gwAgent) && require_server_handlers_gateway_memory_client.getGatewayClient()) return { success: true };
1323
- const memory = await getMemoryFromContext({
1324
- mastra,
1325
- agentId,
1326
- requestContext
1327
- });
1328
- if (!memory) throw new require_http_exception.HTTPException(400, { message: "Memory is not initialized" });
1329
- const thread = await memory.getThreadById({ threadId: effectiveThreadId });
1330
- if (!thread) throw new require_http_exception.HTTPException(404, { message: "Thread not found" });
1331
- await require_utils.enforceThreadAccess({
1332
- mastra,
1333
- requestContext,
1334
- threadId: effectiveThreadId,
1335
- thread,
1336
- effectiveResourceId,
1337
- permission: require_utils.MastraFGAPermissions.MEMORY_WRITE
1338
- });
1339
- if (mode === "merge") {
1340
- if (!await memory.supportsAtomicWorkingMemoryMerge()) throw new require_http_exception.HTTPException(400, { message: "Working memory merge is not supported by the configured storage adapter" });
1341
- try {
1342
- await memory.mergeWorkingMemory({
1343
- threadId: effectiveThreadId,
1344
- resourceId: effectiveResourceId,
1345
- workingMemory,
1346
- memoryConfig
1347
- });
1348
- } catch (error) {
1349
- if (error instanceof _mastra_core_error.MastraError && error.category === _mastra_core_error.ErrorCategory.USER) throw new require_http_exception.HTTPException(400, { message: error.message });
1350
- throw error;
1351
- }
1352
- return { success: true };
1353
- }
1354
- await memory.updateWorkingMemory({
1355
- threadId: effectiveThreadId,
1356
- resourceId: effectiveResourceId,
1357
- workingMemory,
1358
- memoryConfig
1359
- });
1360
- return { success: true };
1361
- } catch (error) {
1362
- return require_server_handlers_error.handleError(error, "Error updating working memory");
1363
- }
1364
- }
1365
- });
1366
- const DELETE_MESSAGES_ROUTE = require_route_builder.createRoute({
1367
- method: "POST",
1368
- path: "/memory/messages/delete",
1369
- responseType: "json",
1370
- queryParamSchema: require_memory.deleteMessagesQuerySchema,
1371
- bodySchema: require_memory.deleteMessagesBodySchema,
1372
- responseSchema: require_memory.deleteMessagesResponseSchema,
1373
- summary: "Delete messages",
1374
- description: "Deletes specific messages from memory",
1375
- tags: ["Memory"],
1376
- requiresAuth: true,
1377
- handler: async ({ mastra, agentId, resourceId, messageIds, requestContext }) => {
1378
- try {
1379
- const effectiveResourceId = require_utils.getEffectiveResourceId(requestContext, resourceId);
1380
- if (messageIds === void 0 || messageIds === null) throw new require_http_exception.HTTPException(400, { message: "messageIds is required" });
1381
- let normalizedIds;
1382
- if (Array.isArray(messageIds)) normalizedIds = messageIds;
1383
- else if (typeof messageIds === "string") normalizedIds = [messageIds];
1384
- else normalizedIds = [messageIds];
1385
- const stringIds = normalizedIds.map((id) => typeof id === "string" ? id : id.id);
1386
- const memory = await getMemoryFromContext({
1387
- mastra,
1388
- agentId,
1389
- requestContext,
1390
- allowMissingAgent: true
1391
- });
1392
- if (effectiveResourceId && stringIds.length > 0) {
1393
- const storage = memory?.storage || getStorageFromContext({ mastra });
1394
- if (!storage) throw new require_http_exception.HTTPException(403, { message: "Access denied: unable to verify message ownership" });
1395
- const memoryStore = await storage.getStore("memory");
1396
- if (!memoryStore) throw new require_http_exception.HTTPException(400, { message: "Memory is not initialized" });
1397
- await enforceDeleteMessagesThreadAccess({
1398
- mastra,
1399
- requestContext,
1400
- memoryStore,
1401
- messageIds: stringIds,
1402
- effectiveResourceId
1403
- });
1404
- } else if (stringIds.length > 0) {
1405
- const storage = memory?.storage || getStorageFromContext({ mastra });
1406
- if (!storage) throw new require_http_exception.HTTPException(400, { message: "Memory is not initialized" });
1407
- const memoryStore = await storage.getStore("memory");
1408
- if (!memoryStore) throw new require_http_exception.HTTPException(400, { message: "Memory is not initialized" });
1409
- await enforceDeleteMessagesThreadAccess({
1410
- mastra,
1411
- requestContext,
1412
- memoryStore,
1413
- messageIds: stringIds
1414
- });
1415
- }
1416
- if (memory) await memory.deleteMessages(normalizedIds);
1417
- else {
1418
- const storage = getStorageFromContext({ mastra });
1419
- if (storage) {
1420
- const memoryStore = await storage.getStore("memory");
1421
- if (memoryStore) await memoryStore.deleteMessages(stringIds);
1422
- else throw new require_http_exception.HTTPException(400, { message: "Memory is not initialized" });
1423
- } else throw new require_http_exception.HTTPException(400, { message: "Memory is not initialized" });
1424
- }
1425
- const count = Array.isArray(messageIds) ? messageIds.length : 1;
1426
- return {
1427
- success: true,
1428
- message: `${count} message${count === 1 ? "" : "s"} deleted successfully`
1429
- };
1430
- } catch (error) {
1431
- return require_server_handlers_error.handleError(error, "Error deleting messages");
1432
- }
1433
- }
1434
- });
1435
- const SEARCH_MEMORY_ROUTE = require_route_builder.createRoute({
1436
- method: "GET",
1437
- path: "/memory/search",
1438
- responseType: "json",
1439
- queryParamSchema: require_memory.searchMemoryQuerySchema,
1440
- responseSchema: require_memory.searchMemoryResponseSchema,
1441
- summary: "Search memory",
1442
- description: "Searches across memory using semantic or text search",
1443
- tags: ["Memory"],
1444
- requiresAuth: true,
1445
- handler: async ({ mastra, agentId, searchQuery, resourceId, threadId, limit = 20, requestContext, memoryConfig }) => {
1446
- try {
1447
- const effectiveResourceId = require_utils.getEffectiveResourceId(requestContext, resourceId);
1448
- const effectiveThreadId = require_utils.getEffectiveThreadId(requestContext, threadId);
1449
- require_utils.validateBody({
1450
- searchQuery,
1451
- resourceId: effectiveResourceId
1452
- });
1453
- const agent = await getAgentFromContext({
1454
- mastra,
1455
- agentId,
1456
- requestContext
1457
- });
1458
- if (agent && await require_server_handlers_gateway_memory_client.isGatewayAgentAsync(agent) && require_server_handlers_gateway_memory_client.getGatewayClient()) return {
1459
- results: [],
1460
- count: 0,
1461
- query: searchQuery,
1462
- searchScope: "resource",
1463
- searchType: "semantic"
1464
- };
1465
- const memory = await getMemoryFromContext({
1466
- mastra,
1467
- agentId,
1468
- requestContext
1469
- });
1470
- if (!memory) throw new require_http_exception.HTTPException(400, { message: "Memory is not initialized" });
1471
- const config = memory.getMergedThreadConfig(memoryConfig || {});
1472
- const hasSemanticRecall = !!config?.semanticRecall;
1473
- const resourceScope = typeof config?.semanticRecall === "object" ? config?.semanticRecall?.scope !== "thread" : true;
1474
- const searchResults = [];
1475
- let accessibleThreadsForResource;
1476
- let accessibleThreadIds;
1477
- if (resourceScope && effectiveResourceId && shouldFilterThreadsWithFGA(mastra, requestContext)) {
1478
- const { threads } = await memory.listThreads({
1479
- filter: { resourceId: effectiveResourceId },
1480
- perPage: false,
1481
- orderBy: {
1482
- field: "updatedAt",
1483
- direction: "DESC"
1484
- }
1485
- });
1486
- accessibleThreadsForResource = await filterAccessibleThreads({
1487
- mastra,
1488
- requestContext,
1489
- threads
1490
- });
1491
- accessibleThreadIds = new Set(accessibleThreadsForResource.map((thread) => thread.id));
1492
- if (accessibleThreadsForResource.length === 0) return {
1493
- results: [],
1494
- count: 0,
1495
- query: searchQuery,
1496
- searchScope: resourceScope ? "resource" : "thread",
1497
- searchType: hasSemanticRecall ? "semantic" : "text"
1498
- };
1499
- }
1500
- if (effectiveThreadId && !resourceScope) {
1501
- const thread = await memory.getThreadById({ threadId: effectiveThreadId });
1502
- if (!thread) return {
1503
- results: [],
1504
- count: 0,
1505
- query: searchQuery,
1506
- searchScope: resourceScope ? "resource" : "thread",
1507
- searchType: hasSemanticRecall ? "semantic" : "text"
1508
- };
1509
- await require_utils.enforceThreadAccess({
1510
- mastra,
1511
- requestContext,
1512
- threadId: effectiveThreadId,
1513
- thread,
1514
- effectiveResourceId
1515
- });
1516
- }
1517
- let searchThreadId = effectiveThreadId;
1518
- if (!searchThreadId) {
1519
- const threads = accessibleThreadsForResource ?? (await memory.listThreads({
1520
- filter: { resourceId: effectiveResourceId },
1521
- page: 0,
1522
- perPage: 1,
1523
- orderBy: {
1524
- field: "updatedAt",
1525
- direction: "DESC"
1526
- }
1527
- })).threads;
1528
- if (threads.length === 0) return {
1529
- results: [],
1530
- count: 0,
1531
- query: searchQuery,
1532
- searchScope: resourceScope ? "resource" : "thread",
1533
- searchType: hasSemanticRecall ? "semantic" : "text"
1534
- };
1535
- searchThreadId = threads[0].id;
1536
- }
1537
- const beforeRange = typeof config.semanticRecall === `boolean` ? 2 : typeof config.semanticRecall?.messageRange === `number` ? config.semanticRecall.messageRange : config.semanticRecall?.messageRange.before || 2;
1538
- const afterRange = typeof config.semanticRecall === `boolean` ? 2 : typeof config.semanticRecall?.messageRange === `number` ? config.semanticRecall.messageRange : config.semanticRecall?.messageRange.after || 2;
1539
- if (resourceScope && config.semanticRecall) config.semanticRecall = typeof config.semanticRecall === `boolean` ? {
1540
- messageRange: 0,
1541
- topK: 2,
1542
- scope: "resource"
1543
- } : {
1544
- ...config.semanticRecall,
1545
- messageRange: 0
1546
- };
1547
- const threadConfig = memory.getMergedThreadConfig(config || {});
1548
- if (!(threadConfig.lastMessages !== false && (threadConfig.lastMessages || threadConfig.messageHistory)) && !threadConfig.semanticRecall) return {
1549
- results: [],
1550
- count: 0,
1551
- query: searchQuery
1552
- };
1553
- const result = await memory.recall({
1554
- threadId: searchThreadId,
1555
- resourceId: effectiveResourceId,
1556
- threadConfig: config,
1557
- vectorSearchString: threadConfig.semanticRecall && searchQuery ? searchQuery : void 0
1558
- });
1559
- const accessibleMessages = accessibleThreadIds ? result.messages.filter((message) => accessibleThreadIds.has(message.threadId || searchThreadId)) : result.messages;
1560
- if (accessibleMessages.length === 0) return {
1561
- results: [],
1562
- count: 0,
1563
- query: searchQuery,
1564
- searchScope: resourceScope ? "resource" : "thread",
1565
- searchType: hasSemanticRecall ? "semantic" : "text"
1566
- };
1567
- const threadIds = Array.from(new Set(accessibleMessages.map((m) => m.threadId || searchThreadId).filter(Boolean)));
1568
- const fetched = await Promise.all(threadIds.map((id) => memory.getThreadById({ threadId: id })));
1569
- const threadMap = new Map(fetched.filter(Boolean).map((t) => [t.id, t]));
1570
- for (const msg of accessibleMessages) {
1571
- const content = getTextContent(msg);
1572
- const msgThreadId = msg.threadId || searchThreadId;
1573
- const thread = threadMap.get(msgThreadId);
1574
- const threadMessages = (await memory.recall({ threadId: msgThreadId })).messages;
1575
- const messageIndex = threadMessages.findIndex((m) => m.id === msg.id);
1576
- const searchResult = {
1577
- id: msg.id,
1578
- role: msg.role,
1579
- content,
1580
- createdAt: msg.createdAt,
1581
- threadId: msgThreadId,
1582
- threadTitle: thread?.title || msgThreadId
1583
- };
1584
- if (messageIndex !== -1) searchResult.context = {
1585
- before: threadMessages.slice(Math.max(0, messageIndex - beforeRange), messageIndex).map((m) => ({
1586
- id: m.id,
1587
- role: m.role,
1588
- content: getTextContent(m),
1589
- createdAt: m.createdAt || /* @__PURE__ */ new Date()
1590
- })),
1591
- after: threadMessages.slice(messageIndex + 1, messageIndex + afterRange + 1).map((m) => ({
1592
- id: m.id,
1593
- role: m.role,
1594
- content: getTextContent(m),
1595
- createdAt: m.createdAt || /* @__PURE__ */ new Date()
1596
- }))
1597
- };
1598
- searchResults.push(searchResult);
1599
- }
1600
- const sortedResults = searchResults.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()).slice(0, limit);
1601
- return {
1602
- results: sortedResults,
1603
- count: sortedResults.length,
1604
- query: searchQuery,
1605
- searchScope: resourceScope ? "resource" : "thread",
1606
- searchType: hasSemanticRecall ? "semantic" : "text"
1607
- };
1608
- } catch (error) {
1609
- return require_server_handlers_error.handleError(error, "Error searching memory");
1610
- }
1611
- }
1612
- });
1613
- const GET_MEMORY_STATUS_NETWORK_ROUTE = require_route_builder.createRoute({
1614
- method: "GET",
1615
- path: "/memory/network/status",
1616
- responseType: "json",
1617
- queryParamSchema: require_memory.getMemoryStatusNetworkQuerySchema,
1618
- responseSchema: require_memory.memoryStatusResponseSchema,
1619
- summary: "Get memory status (network)",
1620
- description: "Returns the current status of the memory system (network route)",
1621
- tags: ["Memory - Network"],
1622
- requiresAuth: true,
1623
- handler: GET_MEMORY_STATUS_ROUTE.handler
1624
- });
1625
- const LIST_THREADS_NETWORK_ROUTE = require_route_builder.createRoute({
1626
- method: "GET",
1627
- path: "/memory/network/threads",
1628
- responseType: "json",
1629
- queryParamSchema: require_memory.listThreadsNetworkQuerySchema,
1630
- responseSchema: require_memory.listThreadsResponseSchema,
1631
- summary: "List memory threads (network)",
1632
- description: "Returns a paginated list of conversation threads (network route)",
1633
- tags: ["Memory - Network"],
1634
- requiresAuth: true,
1635
- handler: LIST_THREADS_ROUTE.handler
1636
- });
1637
- const GET_THREAD_BY_ID_NETWORK_ROUTE = require_route_builder.createRoute({
1638
- method: "GET",
1639
- path: "/memory/network/threads/:threadId",
1640
- responseType: "json",
1641
- pathParamSchema: require_memory.threadIdPathParams,
1642
- queryParamSchema: require_memory.getThreadByIdNetworkQuerySchema,
1643
- responseSchema: require_memory.getThreadByIdResponseSchema,
1644
- summary: "Get thread by ID (network)",
1645
- description: "Returns details for a specific conversation thread (network route)",
1646
- tags: ["Memory - Network"],
1647
- requiresAuth: true,
1648
- handler: GET_THREAD_BY_ID_ROUTE.handler
1649
- });
1650
- const LIST_MESSAGES_NETWORK_ROUTE = require_route_builder.createRoute({
1651
- method: "GET",
1652
- path: "/memory/network/threads/:threadId/messages",
1653
- responseType: "json",
1654
- pathParamSchema: require_memory.threadIdPathParams,
1655
- queryParamSchema: require_memory.listMessagesNetworkQuerySchema,
1656
- responseSchema: require_memory.listMessagesResponseSchema,
1657
- summary: "List thread messages (network)",
1658
- description: "Returns a paginated list of messages in a conversation thread (network route)",
1659
- tags: ["Memory - Network"],
1660
- requiresAuth: true,
1661
- handler: LIST_MESSAGES_ROUTE.handler
1662
- });
1663
- const SAVE_MESSAGES_NETWORK_ROUTE = require_route_builder.createRoute({
1664
- method: "POST",
1665
- path: "/memory/network/save-messages",
1666
- responseType: "json",
1667
- queryParamSchema: require_memory.saveMessagesNetworkQuerySchema,
1668
- bodySchema: require_memory.saveMessagesBodySchema,
1669
- responseSchema: require_memory.saveMessagesResponseSchema,
1670
- summary: "Save messages (network)",
1671
- description: "Saves new messages to memory (network route)",
1672
- tags: ["Memory - Network"],
1673
- requiresAuth: true,
1674
- handler: SAVE_MESSAGES_ROUTE.handler
1675
- });
1676
- const CREATE_THREAD_NETWORK_ROUTE = require_route_builder.createRoute({
1677
- method: "POST",
1678
- path: "/memory/network/threads",
1679
- responseType: "json",
1680
- queryParamSchema: require_memory.createThreadNetworkQuerySchema,
1681
- bodySchema: require_memory.createThreadBodySchema,
1682
- responseSchema: require_memory.getThreadByIdResponseSchema,
1683
- summary: "Create thread (network)",
1684
- description: "Creates a new conversation thread (network route)",
1685
- tags: ["Memory - Network"],
1686
- requiresAuth: true,
1687
- handler: CREATE_THREAD_ROUTE.handler
1688
- });
1689
- const UPDATE_THREAD_NETWORK_ROUTE = require_route_builder.createRoute({
1690
- method: "PATCH",
1691
- path: "/memory/network/threads/:threadId",
1692
- responseType: "json",
1693
- pathParamSchema: require_memory.threadIdPathParams,
1694
- queryParamSchema: require_memory.updateThreadNetworkQuerySchema,
1695
- bodySchema: require_memory.updateThreadBodySchema,
1696
- responseSchema: require_memory.getThreadByIdResponseSchema,
1697
- summary: "Update thread (network)",
1698
- description: "Updates a conversation thread (network route)",
1699
- tags: ["Memory - Network"],
1700
- requiresAuth: true,
1701
- handler: UPDATE_THREAD_ROUTE.handler
1702
- });
1703
- const DELETE_THREAD_NETWORK_ROUTE = require_route_builder.createRoute({
1704
- method: "DELETE",
1705
- path: "/memory/network/threads/:threadId",
1706
- responseType: "json",
1707
- pathParamSchema: require_memory.threadIdPathParams,
1708
- queryParamSchema: require_memory.deleteThreadNetworkQuerySchema,
1709
- responseSchema: require_memory.deleteThreadResponseSchema,
1710
- summary: "Delete thread (network)",
1711
- description: "Deletes a conversation thread (network route)",
1712
- tags: ["Memory - Network"],
1713
- requiresAuth: true,
1714
- handler: DELETE_THREAD_ROUTE.handler
1715
- });
1716
- const DELETE_MESSAGES_NETWORK_ROUTE = require_route_builder.createRoute({
1717
- method: "POST",
1718
- path: "/memory/network/messages/delete",
1719
- responseType: "json",
1720
- queryParamSchema: require_memory.deleteMessagesNetworkQuerySchema,
1721
- bodySchema: require_memory.deleteMessagesBodySchema,
1722
- responseSchema: require_memory.deleteMessagesResponseSchema,
1723
- summary: "Delete messages (network)",
1724
- description: "Deletes specific messages from memory (network route)",
1725
- tags: ["Memory - Network"],
1726
- requiresAuth: true,
1727
- handler: DELETE_MESSAGES_ROUTE.handler
1728
- });
1729
- //#endregion
1730
- exports.AWAIT_BUFFER_STATUS_ROUTE = AWAIT_BUFFER_STATUS_ROUTE;
1731
- exports.CLONE_THREAD_ROUTE = CLONE_THREAD_ROUTE;
1732
- exports.CREATE_THREAD_NETWORK_ROUTE = CREATE_THREAD_NETWORK_ROUTE;
1733
- exports.CREATE_THREAD_ROUTE = CREATE_THREAD_ROUTE;
1734
- exports.DELETE_MESSAGES_NETWORK_ROUTE = DELETE_MESSAGES_NETWORK_ROUTE;
1735
- exports.DELETE_MESSAGES_ROUTE = DELETE_MESSAGES_ROUTE;
1736
- exports.DELETE_THREAD_NETWORK_ROUTE = DELETE_THREAD_NETWORK_ROUTE;
1737
- exports.DELETE_THREAD_ROUTE = DELETE_THREAD_ROUTE;
1738
- exports.GET_MEMORY_CONFIG_ROUTE = GET_MEMORY_CONFIG_ROUTE;
1739
- exports.GET_MEMORY_STATUS_NETWORK_ROUTE = GET_MEMORY_STATUS_NETWORK_ROUTE;
1740
- exports.GET_MEMORY_STATUS_ROUTE = GET_MEMORY_STATUS_ROUTE;
1741
- exports.GET_OBSERVATIONAL_MEMORY_ROUTE = GET_OBSERVATIONAL_MEMORY_ROUTE;
1742
- exports.GET_THREAD_BY_ID_NETWORK_ROUTE = GET_THREAD_BY_ID_NETWORK_ROUTE;
1743
- exports.GET_THREAD_BY_ID_ROUTE = GET_THREAD_BY_ID_ROUTE;
1744
- exports.GET_WORKING_MEMORY_ROUTE = GET_WORKING_MEMORY_ROUTE;
1745
- exports.LIST_MESSAGES_NETWORK_ROUTE = LIST_MESSAGES_NETWORK_ROUTE;
1746
- exports.LIST_MESSAGES_ROUTE = LIST_MESSAGES_ROUTE;
1747
- exports.LIST_THREADS_NETWORK_ROUTE = LIST_THREADS_NETWORK_ROUTE;
1748
- exports.LIST_THREADS_ROUTE = LIST_THREADS_ROUTE;
1749
- exports.SAVE_MESSAGES_NETWORK_ROUTE = SAVE_MESSAGES_NETWORK_ROUTE;
1750
- exports.SAVE_MESSAGES_ROUTE = SAVE_MESSAGES_ROUTE;
1751
- exports.SEARCH_MEMORY_ROUTE = SEARCH_MEMORY_ROUTE;
1752
- exports.TRANSFER_THREAD_ROUTE = TRANSFER_THREAD_ROUTE;
1753
- exports.UPDATE_THREAD_NETWORK_ROUTE = UPDATE_THREAD_NETWORK_ROUTE;
1754
- exports.UPDATE_THREAD_ROUTE = UPDATE_THREAD_ROUTE;
1755
- exports.UPDATE_WORKING_MEMORY_ROUTE = UPDATE_WORKING_MEMORY_ROUTE;
1756
- exports.getTextContent = getTextContent;
1757
- Object.defineProperty(exports, "memory_exports", {
1758
- enumerable: true,
1759
- get: function() {
1760
- return memory_exports;
1761
- }
1762
- });
1763
-
1764
- //# sourceMappingURL=memory.cjs.map
2
+ require("../../rolldown-runtime-BwC_XMyb.cjs");
3
+ const require_memory = require("../../memory-CwwkVDh1.cjs");
4
+ exports.AWAIT_BUFFER_STATUS_ROUTE = require_memory.AWAIT_BUFFER_STATUS_ROUTE;
5
+ exports.CLONE_THREAD_ROUTE = require_memory.CLONE_THREAD_ROUTE;
6
+ exports.CREATE_THREAD_NETWORK_ROUTE = require_memory.CREATE_THREAD_NETWORK_ROUTE;
7
+ exports.CREATE_THREAD_ROUTE = require_memory.CREATE_THREAD_ROUTE;
8
+ exports.DELETE_MESSAGES_NETWORK_ROUTE = require_memory.DELETE_MESSAGES_NETWORK_ROUTE;
9
+ exports.DELETE_MESSAGES_ROUTE = require_memory.DELETE_MESSAGES_ROUTE;
10
+ exports.DELETE_THREAD_NETWORK_ROUTE = require_memory.DELETE_THREAD_NETWORK_ROUTE;
11
+ exports.DELETE_THREAD_ROUTE = require_memory.DELETE_THREAD_ROUTE;
12
+ exports.GET_MEMORY_CONFIG_ROUTE = require_memory.GET_MEMORY_CONFIG_ROUTE;
13
+ exports.GET_MEMORY_STATUS_NETWORK_ROUTE = require_memory.GET_MEMORY_STATUS_NETWORK_ROUTE;
14
+ exports.GET_MEMORY_STATUS_ROUTE = require_memory.GET_MEMORY_STATUS_ROUTE;
15
+ exports.GET_OBSERVATIONAL_MEMORY_ROUTE = require_memory.GET_OBSERVATIONAL_MEMORY_ROUTE;
16
+ exports.GET_THREAD_BY_ID_NETWORK_ROUTE = require_memory.GET_THREAD_BY_ID_NETWORK_ROUTE;
17
+ exports.GET_THREAD_BY_ID_ROUTE = require_memory.GET_THREAD_BY_ID_ROUTE;
18
+ exports.GET_WORKING_MEMORY_ROUTE = require_memory.GET_WORKING_MEMORY_ROUTE;
19
+ exports.LIST_MESSAGES_NETWORK_ROUTE = require_memory.LIST_MESSAGES_NETWORK_ROUTE;
20
+ exports.LIST_MESSAGES_ROUTE = require_memory.LIST_MESSAGES_ROUTE;
21
+ exports.LIST_THREADS_NETWORK_ROUTE = require_memory.LIST_THREADS_NETWORK_ROUTE;
22
+ exports.LIST_THREADS_ROUTE = require_memory.LIST_THREADS_ROUTE;
23
+ exports.SAVE_MESSAGES_NETWORK_ROUTE = require_memory.SAVE_MESSAGES_NETWORK_ROUTE;
24
+ exports.SAVE_MESSAGES_ROUTE = require_memory.SAVE_MESSAGES_ROUTE;
25
+ exports.SEARCH_MEMORY_ROUTE = require_memory.SEARCH_MEMORY_ROUTE;
26
+ exports.TRANSFER_THREAD_ROUTE = require_memory.TRANSFER_THREAD_ROUTE;
27
+ exports.UPDATE_THREAD_NETWORK_ROUTE = require_memory.UPDATE_THREAD_NETWORK_ROUTE;
28
+ exports.UPDATE_THREAD_ROUTE = require_memory.UPDATE_THREAD_ROUTE;
29
+ exports.UPDATE_WORKING_MEMORY_ROUTE = require_memory.UPDATE_WORKING_MEMORY_ROUTE;
30
+ exports.getTextContent = require_memory.getTextContent;