@mastra/server 1.47.0-alpha.4 → 1.47.0-alpha.6

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 (267) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/_types/@mastra_schema-compat/dist/schema.types.d.ts +4 -1
  3. package/dist/{api-schema-manifest-OQOZ53HZ.js → api-schema-manifest-LT57YVGI.js} +3 -3
  4. package/dist/{api-schema-manifest-OQOZ53HZ.js.map → api-schema-manifest-LT57YVGI.js.map} +1 -1
  5. package/dist/{api-schema-manifest-SYCCXMOC.cjs → api-schema-manifest-SJMFHZHR.cjs} +4 -4
  6. package/dist/{api-schema-manifest-SYCCXMOC.cjs.map → api-schema-manifest-SJMFHZHR.cjs.map} +1 -1
  7. package/dist/{chunk-XOQEKMY2.cjs → chunk-2NGSYVI3.cjs} +34 -34
  8. package/dist/{chunk-XOQEKMY2.cjs.map → chunk-2NGSYVI3.cjs.map} +1 -1
  9. package/dist/{chunk-S2HKHYJ3.cjs → chunk-2R52ZPSI.cjs} +9 -9
  10. package/dist/{chunk-S2HKHYJ3.cjs.map → chunk-2R52ZPSI.cjs.map} +1 -1
  11. package/dist/{chunk-ZZOHO2FT.js → chunk-34WNPIGV.js} +5 -5
  12. package/dist/{chunk-ZZOHO2FT.js.map → chunk-34WNPIGV.js.map} +1 -1
  13. package/dist/{chunk-UZ43QCIA.cjs → chunk-3KBURDTO.cjs} +12 -12
  14. package/dist/{chunk-UZ43QCIA.cjs.map → chunk-3KBURDTO.cjs.map} +1 -1
  15. package/dist/{chunk-RVD3DGBZ.cjs → chunk-42M6Y2OD.cjs} +3 -3
  16. package/dist/{chunk-RVD3DGBZ.cjs.map → chunk-42M6Y2OD.cjs.map} +1 -1
  17. package/dist/{chunk-Q7EQLQS5.js → chunk-43T7OG7P.js} +16 -9
  18. package/dist/chunk-43T7OG7P.js.map +1 -0
  19. package/dist/{chunk-5V2QWK2S.js → chunk-4E7VGBSM.js} +5 -5
  20. package/dist/{chunk-5V2QWK2S.js.map → chunk-4E7VGBSM.js.map} +1 -1
  21. package/dist/{chunk-PLWZVSGT.js → chunk-4UZTUQYZ.js} +5 -5
  22. package/dist/{chunk-PLWZVSGT.js.map → chunk-4UZTUQYZ.js.map} +1 -1
  23. package/dist/{chunk-V23ANIEC.cjs → chunk-4WRZ6BK4.cjs} +4 -4
  24. package/dist/{chunk-V23ANIEC.cjs.map → chunk-4WRZ6BK4.cjs.map} +1 -1
  25. package/dist/{chunk-VRERZRJQ.js → chunk-4ZD4KLXD.js} +4 -4
  26. package/dist/{chunk-VRERZRJQ.js.map → chunk-4ZD4KLXD.js.map} +1 -1
  27. package/dist/{chunk-K3FM6RLZ.cjs → chunk-5JVILML3.cjs} +9 -9
  28. package/dist/{chunk-K3FM6RLZ.cjs.map → chunk-5JVILML3.cjs.map} +1 -1
  29. package/dist/{chunk-7FIDKZUG.cjs → chunk-6CUVVNHE.cjs} +6 -6
  30. package/dist/{chunk-7FIDKZUG.cjs.map → chunk-6CUVVNHE.cjs.map} +1 -1
  31. package/dist/{chunk-QQCQV7ZF.cjs → chunk-7GNT5KQE.cjs} +3 -2
  32. package/dist/chunk-7GNT5KQE.cjs.map +1 -0
  33. package/dist/{chunk-4ZHHKMDQ.cjs → chunk-AC4YST2M.cjs} +3 -3
  34. package/dist/{chunk-4ZHHKMDQ.cjs.map → chunk-AC4YST2M.cjs.map} +1 -1
  35. package/dist/{chunk-R4O5HVDI.js → chunk-AGWL3ZLU.js} +3 -3
  36. package/dist/{chunk-R4O5HVDI.js.map → chunk-AGWL3ZLU.js.map} +1 -1
  37. package/dist/{chunk-C2A2BZFY.js → chunk-AMWGBQZU.js} +4 -4
  38. package/dist/{chunk-C2A2BZFY.js.map → chunk-AMWGBQZU.js.map} +1 -1
  39. package/dist/{chunk-TPZFGGU4.cjs → chunk-CCUQDEQW.cjs} +283 -283
  40. package/dist/chunk-CCUQDEQW.cjs.map +1 -0
  41. package/dist/{chunk-E2JNW3QM.js → chunk-D6RO4IFO.js} +3 -3
  42. package/dist/{chunk-E2JNW3QM.js.map → chunk-D6RO4IFO.js.map} +1 -1
  43. package/dist/{chunk-DULEYONH.cjs → chunk-D7YMTEPI.cjs} +13 -13
  44. package/dist/{chunk-DULEYONH.cjs.map → chunk-D7YMTEPI.cjs.map} +1 -1
  45. package/dist/{chunk-2Z3TLC4L.js → chunk-DSHITLJ4.js} +4 -4
  46. package/dist/{chunk-2Z3TLC4L.js.map → chunk-DSHITLJ4.js.map} +1 -1
  47. package/dist/{chunk-SJPWXUKZ.js → chunk-DVCCSRFP.js} +3 -3
  48. package/dist/{chunk-SJPWXUKZ.js.map → chunk-DVCCSRFP.js.map} +1 -1
  49. package/dist/{chunk-Y3MYKCTO.cjs → chunk-EBUK5R3S.cjs} +13 -13
  50. package/dist/{chunk-Y3MYKCTO.cjs.map → chunk-EBUK5R3S.cjs.map} +1 -1
  51. package/dist/{chunk-JY2LHUT4.cjs → chunk-EKRIVYU4.cjs} +22 -22
  52. package/dist/{chunk-JY2LHUT4.cjs.map → chunk-EKRIVYU4.cjs.map} +1 -1
  53. package/dist/{chunk-IBUJJIRW.js → chunk-EOGTJIPF.js} +3 -3
  54. package/dist/{chunk-IBUJJIRW.js.map → chunk-EOGTJIPF.js.map} +1 -1
  55. package/dist/{chunk-ONBABU5V.cjs → chunk-EYCW4Z4H.cjs} +10 -10
  56. package/dist/{chunk-ONBABU5V.cjs.map → chunk-EYCW4Z4H.cjs.map} +1 -1
  57. package/dist/{chunk-GU4AEOGA.cjs → chunk-F6VL25IA.cjs} +7 -7
  58. package/dist/{chunk-GU4AEOGA.cjs.map → chunk-F6VL25IA.cjs.map} +1 -1
  59. package/dist/{chunk-JZJ3PP2H.cjs → chunk-GOD4LLZT.cjs} +10 -10
  60. package/dist/{chunk-JZJ3PP2H.cjs.map → chunk-GOD4LLZT.cjs.map} +1 -1
  61. package/dist/{chunk-NEPOKWAA.js → chunk-GQI4NKKD.js} +5 -5
  62. package/dist/{chunk-NEPOKWAA.js.map → chunk-GQI4NKKD.js.map} +1 -1
  63. package/dist/{chunk-KGUHJRHZ.cjs → chunk-HDIYJI2Z.cjs} +3 -3
  64. package/dist/{chunk-KGUHJRHZ.cjs.map → chunk-HDIYJI2Z.cjs.map} +1 -1
  65. package/dist/{chunk-TPGA2ZTS.js → chunk-IEONDWGQ.js} +4 -4
  66. package/dist/{chunk-TPGA2ZTS.js.map → chunk-IEONDWGQ.js.map} +1 -1
  67. package/dist/{chunk-6HRGFBAF.cjs → chunk-IY4MNGI3.cjs} +63 -63
  68. package/dist/{chunk-6HRGFBAF.cjs.map → chunk-IY4MNGI3.cjs.map} +1 -1
  69. package/dist/{chunk-3ENQND57.js → chunk-JBSUT5XF.js} +3 -3
  70. package/dist/{chunk-3ENQND57.js.map → chunk-JBSUT5XF.js.map} +1 -1
  71. package/dist/{chunk-VNWPOCOT.cjs → chunk-JJDLXVWR.cjs} +19 -19
  72. package/dist/{chunk-VNWPOCOT.cjs.map → chunk-JJDLXVWR.cjs.map} +1 -1
  73. package/dist/{chunk-F5EEKLC4.js → chunk-KA6FUBC5.js} +6 -6
  74. package/dist/{chunk-F5EEKLC4.js.map → chunk-KA6FUBC5.js.map} +1 -1
  75. package/dist/{chunk-E345K7K7.js → chunk-KGJGR6GO.js} +5 -5
  76. package/dist/{chunk-E345K7K7.js.map → chunk-KGJGR6GO.js.map} +1 -1
  77. package/dist/{chunk-YLWKZ3VK.cjs → chunk-KIDHIRVO.cjs} +7 -7
  78. package/dist/{chunk-YLWKZ3VK.cjs.map → chunk-KIDHIRVO.cjs.map} +1 -1
  79. package/dist/{chunk-T32FQPWH.cjs → chunk-KR7FUFVK.cjs} +10 -10
  80. package/dist/{chunk-T32FQPWH.cjs.map → chunk-KR7FUFVK.cjs.map} +1 -1
  81. package/dist/{chunk-RY5RETAD.js → chunk-L4DD3HSB.js} +3 -3
  82. package/dist/{chunk-RY5RETAD.js.map → chunk-L4DD3HSB.js.map} +1 -1
  83. package/dist/{chunk-BB6RVOJY.js → chunk-LA4AQGZA.js} +3 -3
  84. package/dist/{chunk-BB6RVOJY.js.map → chunk-LA4AQGZA.js.map} +1 -1
  85. package/dist/{chunk-MMY24AC4.js → chunk-LUPNAVPL.js} +3 -3
  86. package/dist/{chunk-MMY24AC4.js.map → chunk-LUPNAVPL.js.map} +1 -1
  87. package/dist/{chunk-PSC3HAPW.cjs → chunk-MM7ONP57.cjs} +59 -59
  88. package/dist/{chunk-PSC3HAPW.cjs.map → chunk-MM7ONP57.cjs.map} +1 -1
  89. package/dist/{chunk-CIWN2JM4.js → chunk-MX3JQ3ZU.js} +3 -3
  90. package/dist/{chunk-CIWN2JM4.js.map → chunk-MX3JQ3ZU.js.map} +1 -1
  91. package/dist/{chunk-M5DAKMVZ.cjs → chunk-OE3KATAT.cjs} +4 -4
  92. package/dist/{chunk-M5DAKMVZ.cjs.map → chunk-OE3KATAT.cjs.map} +1 -1
  93. package/dist/{chunk-OT2JWWCT.cjs → chunk-OU4L45LL.cjs} +8 -8
  94. package/dist/{chunk-OT2JWWCT.cjs.map → chunk-OU4L45LL.cjs.map} +1 -1
  95. package/dist/{chunk-IRJJ2JJG.cjs → chunk-OZ64QWKA.cjs} +12 -12
  96. package/dist/{chunk-IRJJ2JJG.cjs.map → chunk-OZ64QWKA.cjs.map} +1 -1
  97. package/dist/{chunk-PUW3RA3B.js → chunk-P6TSZJ4I.js} +4 -4
  98. package/dist/{chunk-PUW3RA3B.js.map → chunk-P6TSZJ4I.js.map} +1 -1
  99. package/dist/{chunk-M25LVAUH.js → chunk-P7HCBIOK.js} +4 -4
  100. package/dist/{chunk-M25LVAUH.js.map → chunk-P7HCBIOK.js.map} +1 -1
  101. package/dist/{chunk-3ZV6GYQI.cjs → chunk-PVZX6FFO.cjs} +16 -9
  102. package/dist/chunk-PVZX6FFO.cjs.map +1 -0
  103. package/dist/{chunk-UXO4GWPT.js → chunk-Q6TDIK2A.js} +6 -6
  104. package/dist/{chunk-UXO4GWPT.js.map → chunk-Q6TDIK2A.js.map} +1 -1
  105. package/dist/{chunk-4BJSE3LM.js → chunk-QECRXNAM.js} +3 -3
  106. package/dist/{chunk-4BJSE3LM.js.map → chunk-QECRXNAM.js.map} +1 -1
  107. package/dist/{chunk-RM4ITWAQ.cjs → chunk-QRTZCP42.cjs} +10 -10
  108. package/dist/{chunk-RM4ITWAQ.cjs.map → chunk-QRTZCP42.cjs.map} +1 -1
  109. package/dist/{chunk-KBOC52HT.js → chunk-RETWAY24.js} +3 -3
  110. package/dist/{chunk-KBOC52HT.js.map → chunk-RETWAY24.js.map} +1 -1
  111. package/dist/{chunk-3WE5YAL5.js → chunk-RLAOC73C.js} +330 -327
  112. package/dist/chunk-RLAOC73C.js.map +1 -0
  113. package/dist/{chunk-MLLGO6XZ.js → chunk-S57DVRYK.js} +3 -3
  114. package/dist/{chunk-MLLGO6XZ.js.map → chunk-S57DVRYK.js.map} +1 -1
  115. package/dist/{chunk-XQ5INMFW.js → chunk-SK2BQPVT.js} +5 -5
  116. package/dist/{chunk-XQ5INMFW.js.map → chunk-SK2BQPVT.js.map} +1 -1
  117. package/dist/{chunk-7DKSWNOM.cjs → chunk-SOQPH6H2.cjs} +182 -182
  118. package/dist/{chunk-7DKSWNOM.cjs.map → chunk-SOQPH6H2.cjs.map} +1 -1
  119. package/dist/{chunk-56AYHXOU.js → chunk-SXZS6VZ3.js} +3 -3
  120. package/dist/{chunk-56AYHXOU.js.map → chunk-SXZS6VZ3.js.map} +1 -1
  121. package/dist/{chunk-OHWAEEZJ.js → chunk-UACKERCG.js} +3 -3
  122. package/dist/{chunk-OHWAEEZJ.js.map → chunk-UACKERCG.js.map} +1 -1
  123. package/dist/{chunk-4LQSGGSH.cjs → chunk-UGI45E76.cjs} +363 -360
  124. package/dist/chunk-UGI45E76.cjs.map +1 -0
  125. package/dist/{chunk-DEK4ZGUR.cjs → chunk-UQWJQWSK.cjs} +15 -15
  126. package/dist/{chunk-DEK4ZGUR.cjs.map → chunk-UQWJQWSK.cjs.map} +1 -1
  127. package/dist/{chunk-46Y4Y2RB.js → chunk-VEKFI5QZ.js} +3 -3
  128. package/dist/{chunk-46Y4Y2RB.js.map → chunk-VEKFI5QZ.js.map} +1 -1
  129. package/dist/{chunk-4JILES3G.js → chunk-VJYMPHQQ.js} +3 -2
  130. package/dist/chunk-VJYMPHQQ.js.map +1 -0
  131. package/dist/{chunk-C4U5EL4H.js → chunk-VQQSMW6M.js} +7 -7
  132. package/dist/{chunk-C4U5EL4H.js.map → chunk-VQQSMW6M.js.map} +1 -1
  133. package/dist/{chunk-BTMYAVRX.cjs → chunk-WUT3UHD6.cjs} +12 -12
  134. package/dist/{chunk-BTMYAVRX.cjs.map → chunk-WUT3UHD6.cjs.map} +1 -1
  135. package/dist/{chunk-HZWJL5Y4.js → chunk-XILM7MA7.js} +4 -4
  136. package/dist/{chunk-HZWJL5Y4.js.map → chunk-XILM7MA7.js.map} +1 -1
  137. package/dist/{chunk-73MURMD2.cjs → chunk-XLSJQAEP.cjs} +6 -6
  138. package/dist/{chunk-73MURMD2.cjs.map → chunk-XLSJQAEP.cjs.map} +1 -1
  139. package/dist/{chunk-WKSF3TVK.js → chunk-XRE4KFIZ.js} +7 -7
  140. package/dist/{chunk-WKSF3TVK.js.map → chunk-XRE4KFIZ.js.map} +1 -1
  141. package/dist/{chunk-TCWIDHH6.cjs → chunk-XTRPN52A.cjs} +3 -3
  142. package/dist/{chunk-TCWIDHH6.cjs.map → chunk-XTRPN52A.cjs.map} +1 -1
  143. package/dist/{chunk-UD7JBYUI.cjs → chunk-YIBM2OYI.cjs} +38 -38
  144. package/dist/{chunk-UD7JBYUI.cjs.map → chunk-YIBM2OYI.cjs.map} +1 -1
  145. package/dist/{chunk-UITLSJUW.cjs → chunk-YOHMEY6Q.cjs} +24 -24
  146. package/dist/{chunk-UITLSJUW.cjs.map → chunk-YOHMEY6Q.cjs.map} +1 -1
  147. package/dist/{chunk-56TEDJND.js → chunk-YUQSGB5C.js} +3 -3
  148. package/dist/{chunk-56TEDJND.js.map → chunk-YUQSGB5C.js.map} +1 -1
  149. package/dist/{chunk-GZ4HWZWE.cjs → chunk-YWUVDFQZ.cjs} +3 -3
  150. package/dist/{chunk-GZ4HWZWE.cjs.map → chunk-YWUVDFQZ.cjs.map} +1 -1
  151. package/dist/{chunk-EQ7LRJEB.cjs → chunk-Z6YXO2T6.cjs} +48 -48
  152. package/dist/{chunk-EQ7LRJEB.cjs.map → chunk-Z6YXO2T6.cjs.map} +1 -1
  153. package/dist/{chunk-TS5QYSEZ.js → chunk-Z7C226TD.js} +6 -6
  154. package/dist/{chunk-TS5QYSEZ.js.map → chunk-Z7C226TD.js.map} +1 -1
  155. package/dist/{chunk-M43CP74T.js → chunk-ZQSX425Q.js} +70 -70
  156. package/dist/chunk-ZQSX425Q.js.map +1 -0
  157. package/dist/{chunk-BTIK5TXF.cjs → chunk-ZVZBZOBY.cjs} +8 -8
  158. package/dist/{chunk-BTIK5TXF.cjs.map → chunk-ZVZBZOBY.cjs.map} +1 -1
  159. package/dist/{dist-OWZWIJZY.js → dist-EWY5C2JK.js} +5 -5
  160. package/dist/{dist-OWZWIJZY.js.map → dist-EWY5C2JK.js.map} +1 -1
  161. package/dist/{dist-TXDLPF66.cjs → dist-VNWFQ5X6.cjs} +20 -20
  162. package/dist/{dist-TXDLPF66.cjs.map → dist-VNWFQ5X6.cjs.map} +1 -1
  163. package/dist/docs/SKILL.md +1 -1
  164. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  165. package/dist/{observational-memory-Y5T2OR2Y-XDEBXWNA.cjs → observational-memory-NC6DQQWD-JNRVNM7E.cjs} +26 -26
  166. package/dist/{observational-memory-Y5T2OR2Y-XDEBXWNA.cjs.map → observational-memory-NC6DQQWD-JNRVNM7E.cjs.map} +1 -1
  167. package/dist/{observational-memory-Y5T2OR2Y-QDHR4QEU.js → observational-memory-NC6DQQWD-WWE3XZFF.js} +3 -3
  168. package/dist/{observational-memory-Y5T2OR2Y-QDHR4QEU.js.map → observational-memory-NC6DQQWD-WWE3XZFF.js.map} +1 -1
  169. package/dist/server/handlers/a2a.cjs +14 -14
  170. package/dist/server/handlers/a2a.js +1 -1
  171. package/dist/server/handlers/agent-builder.cjs +17 -17
  172. package/dist/server/handlers/agent-builder.js +1 -1
  173. package/dist/server/handlers/agent-controller.cjs +144 -0
  174. package/dist/server/handlers/agent-controller.cjs.map +1 -0
  175. package/dist/server/handlers/{harness.d.ts → agent-controller.d.ts} +141 -141
  176. package/dist/server/handlers/agent-controller.d.ts.map +1 -0
  177. package/dist/server/handlers/agent-controller.js +3 -0
  178. package/dist/server/handlers/agent-controller.js.map +1 -0
  179. package/dist/server/handlers/agent-versions.cjs +8 -8
  180. package/dist/server/handlers/agent-versions.js +1 -1
  181. package/dist/server/handlers/agents.cjs +46 -46
  182. package/dist/server/handlers/agents.d.ts +2 -0
  183. package/dist/server/handlers/agents.d.ts.map +1 -1
  184. package/dist/server/handlers/agents.js +1 -1
  185. package/dist/server/handlers/auth.cjs +13 -13
  186. package/dist/server/handlers/auth.js +1 -1
  187. package/dist/server/handlers/authorship.cjs +12 -12
  188. package/dist/server/handlers/authorship.js +1 -1
  189. package/dist/server/handlers/builder-registry.cjs +6 -6
  190. package/dist/server/handlers/builder-registry.js +1 -1
  191. package/dist/server/handlers/channels.cjs +5 -5
  192. package/dist/server/handlers/channels.js +1 -1
  193. package/dist/server/handlers/conversations.cjs +5 -5
  194. package/dist/server/handlers/conversations.js +1 -1
  195. package/dist/server/handlers/editor-builder.cjs +6 -6
  196. package/dist/server/handlers/editor-builder.js +1 -1
  197. package/dist/server/handlers/favorites-enrichment.cjs +4 -4
  198. package/dist/server/handlers/favorites-enrichment.js +1 -1
  199. package/dist/server/handlers/logs.cjs +4 -4
  200. package/dist/server/handlers/logs.js +1 -1
  201. package/dist/server/handlers/mcp-client-versions.cjs +8 -8
  202. package/dist/server/handlers/mcp-client-versions.js +1 -1
  203. package/dist/server/handlers/memory.cjs +27 -27
  204. package/dist/server/handlers/memory.js +1 -1
  205. package/dist/server/handlers/prompt-block-versions.cjs +8 -8
  206. package/dist/server/handlers/prompt-block-versions.js +1 -1
  207. package/dist/server/handlers/responses.cjs +4 -4
  208. package/dist/server/handlers/responses.js +1 -1
  209. package/dist/server/handlers/responses.storage.cjs +8 -8
  210. package/dist/server/handlers/responses.storage.js +1 -1
  211. package/dist/server/handlers/scorer-versions.cjs +8 -8
  212. package/dist/server/handlers/scorer-versions.js +1 -1
  213. package/dist/server/handlers/scores.cjs +7 -7
  214. package/dist/server/handlers/scores.js +1 -1
  215. package/dist/server/handlers/stored-agent-favorites.cjs +3 -3
  216. package/dist/server/handlers/stored-agent-favorites.js +1 -1
  217. package/dist/server/handlers/stored-agents.cjs +10 -10
  218. package/dist/server/handlers/stored-agents.js +1 -1
  219. package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
  220. package/dist/server/handlers/stored-mcp-clients.js +1 -1
  221. package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
  222. package/dist/server/handlers/stored-prompt-blocks.js +1 -1
  223. package/dist/server/handlers/stored-scorers.cjs +6 -6
  224. package/dist/server/handlers/stored-scorers.js +1 -1
  225. package/dist/server/handlers/stored-skill-favorites.cjs +3 -3
  226. package/dist/server/handlers/stored-skill-favorites.js +1 -1
  227. package/dist/server/handlers/stored-skills.cjs +7 -7
  228. package/dist/server/handlers/stored-skills.js +1 -1
  229. package/dist/server/handlers/stored-workspaces.cjs +6 -6
  230. package/dist/server/handlers/stored-workspaces.js +1 -1
  231. package/dist/server/handlers/system.cjs +3 -3
  232. package/dist/server/handlers/system.js +1 -1
  233. package/dist/server/handlers/tool-providers.cjs +14 -14
  234. package/dist/server/handlers/tool-providers.js +1 -1
  235. package/dist/server/handlers/tools.cjs +6 -6
  236. package/dist/server/handlers/tools.js +1 -1
  237. package/dist/server/handlers/utils.cjs +10 -10
  238. package/dist/server/handlers/utils.js +1 -1
  239. package/dist/server/handlers/workflows.cjs +27 -27
  240. package/dist/server/handlers/workflows.js +1 -1
  241. package/dist/server/handlers.cjs +22 -22
  242. package/dist/server/handlers.js +10 -10
  243. package/dist/server/schemas/agents.d.ts +1 -0
  244. package/dist/server/schemas/agents.d.ts.map +1 -1
  245. package/dist/server/schemas/index.cjs +536 -536
  246. package/dist/server/schemas/index.js +9 -9
  247. package/dist/server/server-adapter/index.cjs +42 -42
  248. package/dist/server/server-adapter/index.js +6 -6
  249. package/dist/server/server-adapter/routes/agent-controller.d.ts +6 -0
  250. package/dist/server/server-adapter/routes/agent-controller.d.ts.map +1 -0
  251. package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
  252. package/package.json +8 -8
  253. package/dist/chunk-3WE5YAL5.js.map +0 -1
  254. package/dist/chunk-3ZV6GYQI.cjs.map +0 -1
  255. package/dist/chunk-4JILES3G.js.map +0 -1
  256. package/dist/chunk-4LQSGGSH.cjs.map +0 -1
  257. package/dist/chunk-M43CP74T.js.map +0 -1
  258. package/dist/chunk-Q7EQLQS5.js.map +0 -1
  259. package/dist/chunk-QQCQV7ZF.cjs.map +0 -1
  260. package/dist/chunk-TPZFGGU4.cjs.map +0 -1
  261. package/dist/server/handlers/harness.cjs +0 -144
  262. package/dist/server/handlers/harness.cjs.map +0 -1
  263. package/dist/server/handlers/harness.d.ts.map +0 -1
  264. package/dist/server/handlers/harness.js +0 -3
  265. package/dist/server/handlers/harness.js.map +0 -1
  266. package/dist/server/server-adapter/routes/harness.d.ts +0 -3
  267. package/dist/server/server-adapter/routes/harness.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/handlers/stored-workspaces.ts"],"names":[],"mappings":"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","file":"chunk-M25LVAUH.js","sourcesContent":["import { HTTPException } from '../http-exception';\nimport {\n storedWorkspaceIdPathParams,\n listStoredWorkspacesQuerySchema,\n createStoredWorkspaceBodySchema,\n updateStoredWorkspaceBodySchema,\n listStoredWorkspacesResponseSchema,\n getStoredWorkspaceResponseSchema,\n createStoredWorkspaceResponseSchema,\n updateStoredWorkspaceResponseSchema,\n deleteStoredWorkspaceResponseSchema,\n} from '../schemas/stored-workspaces';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { assertStoredResourceScope, getStoredResourceScope, scopeStoredResourceMetadata, toSlug } from '../utils';\n\nimport {\n assertReadAccess,\n assertWriteAccess,\n getCallerAuthorId,\n matchesAuthorFilter,\n resolveAuthorFilter,\n} from './authorship';\nimport { handleError } from './error';\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /stored/workspaces - List all stored workspaces\n */\nexport const LIST_STORED_WORKSPACES_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workspaces',\n responseType: 'json',\n queryParamSchema: listStoredWorkspacesQuerySchema,\n responseSchema: listStoredWorkspacesResponseSchema,\n summary: 'List stored workspaces',\n description: 'Returns a paginated list of all workspace configurations stored in the database',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, page, perPage, orderBy, authorId, metadata, requestContext }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Resolve the visibility scope for this caller. Non-owner queries for\n // another author return nothing (workspaces have no `public` visibility\n // yet); default lists return the caller's rows plus legacy unowned\n // records.\n const filter = resolveAuthorFilter({\n requestContext,\n resource: 'stored-workspaces',\n queryAuthorId: authorId,\n });\n\n const scope = await getStoredResourceScope(mastra, requestContext);\n const result = await workspaceStore.listResolved({\n page,\n perPage,\n orderBy,\n authorId: filter.kind === 'exact' ? filter.authorId : undefined,\n metadata: scopeStoredResourceMetadata(metadata, scope),\n });\n\n // Post-filter to enforce ownership rules across all backends. Storage\n // adapters can only do an equality filter on authorId, so we apply the\n // ownedOrPublic / ownedOrPublicOthers logic here. `total` is left as the\n // storage-reported count to keep pagination math working.\n const visibleWorkspaces = result.workspaces.filter(record => matchesAuthorFilter(record, filter));\n\n // Annotate each workspace with whether it's registered at runtime\n const runtimeWorkspaces = mastra.listWorkspaces();\n const workspaces = visibleWorkspaces.map(ws => ({\n ...ws,\n runtimeRegistered: ws.id in runtimeWorkspaces,\n }));\n\n return { ...result, workspaces };\n } catch (error) {\n return handleError(error, 'Error listing stored workspaces');\n }\n },\n});\n\n/**\n * GET /stored/workspaces/:storedWorkspaceId - Get a stored workspace by ID\n */\nexport const GET_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n responseSchema: getStoredWorkspaceResponseSchema,\n summary: 'Get stored workspace by ID',\n description:\n 'Returns a specific workspace from storage by its unique identifier (resolved with active version config)',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, storedWorkspaceId, requestContext }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n const workspace = await workspaceStore.getByIdResolved(storedWorkspaceId);\n\n if (!workspace) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n assertStoredResourceScope(workspace, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, or `stored-workspaces:read[:<id>]` holder.\n assertReadAccess({\n requestContext,\n resource: 'stored-workspaces',\n resourceId: storedWorkspaceId,\n record: workspace,\n });\n\n return workspace;\n } catch (error) {\n return handleError(error, 'Error getting stored workspace');\n }\n },\n});\n\n/**\n * POST /stored/workspaces - Create a new stored workspace\n */\nexport const CREATE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/workspaces',\n responseType: 'json',\n bodySchema: createStoredWorkspaceBodySchema,\n responseSchema: createStoredWorkspaceResponseSchema,\n summary: 'Create stored workspace',\n description: 'Creates a new workspace configuration in storage with the provided settings',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({\n mastra,\n id: providedId,\n metadata,\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n requestContext,\n }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Derive ID from name if not explicitly provided\n const id = providedId || toSlug(name);\n\n if (!id) {\n throw new HTTPException(400, {\n message: 'Could not derive workspace ID from name. Please provide an explicit id.',\n });\n }\n\n // Check if workspace with this ID already exists\n const existing = await workspaceStore.getById(id);\n if (existing) {\n throw new HTTPException(409, { message: `Workspace with id ${id} already exists` });\n }\n\n // Force authorId from the authenticated caller; ignore any body-provided value.\n // No caller (auth not configured) leaves authorId undefined so legacy\n // single-user setups continue to behave as today.\n const authorId = getCallerAuthorId(requestContext) ?? undefined;\n\n await workspaceStore.create({\n workspace: {\n id,\n authorId,\n metadata: scopeStoredResourceMetadata(metadata, await getStoredResourceScope(mastra, requestContext)),\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n },\n });\n\n // Return the resolved workspace (thin record + version config)\n const resolved = await workspaceStore.getByIdResolved(id);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve created workspace' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error creating stored workspace');\n }\n },\n});\n\n/**\n * PATCH /stored/workspaces/:storedWorkspaceId - Update a stored workspace\n */\nexport const UPDATE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'PATCH',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n bodySchema: updateStoredWorkspaceBodySchema,\n responseSchema: updateStoredWorkspaceResponseSchema,\n summary: 'Update stored workspace',\n description: 'Updates an existing workspace in storage with the provided fields',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({\n mastra,\n storedWorkspaceId,\n // Metadata-level fields\n metadata,\n // Config fields (snapshot-level)\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n requestContext,\n }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Check if workspace exists\n const existing = await workspaceStore.getById(storedWorkspaceId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n const scope = await getStoredResourceScope(mastra, requestContext);\n assertStoredResourceScope(existing, scope);\n\n // Throws 404 if the caller isn't the owner, admin, or `stored-workspaces:edit[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-workspaces',\n resourceId: storedWorkspaceId,\n action: 'edit',\n record: existing,\n });\n\n const scopedMetadata =\n metadata !== undefined\n ? scopeStoredResourceMetadata({ ...(existing.metadata ?? {}), ...metadata }, scope)\n : undefined;\n\n // Update the workspace with both metadata-level and config-level fields.\n // The storage layer handles separating these into record updates vs\n // new-version creation. Strip undefined keys so omitted fields don't\n // overwrite persisted values (same pattern as stored-skills PATCH).\n // Note: authorId is intentionally not accepted here. Ownership cannot be\n // transferred via PATCH; admins must use a dedicated flow if that is ever\n // needed.\n const updateInput: Record<string, unknown> = { id: storedWorkspaceId };\n const candidate: Record<string, unknown> = {\n ...(scopedMetadata !== undefined ? { metadata: scopedMetadata } : {}),\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n };\n for (const [key, value] of Object.entries(candidate)) {\n if (value !== undefined) updateInput[key] = value;\n }\n await workspaceStore.update(updateInput as Parameters<typeof workspaceStore.update>[0]);\n\n // Return the resolved workspace with the updated config\n const resolved = await workspaceStore.getByIdResolved(storedWorkspaceId);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve updated workspace' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error updating stored workspace');\n }\n },\n});\n\n/**\n * DELETE /stored/workspaces/:storedWorkspaceId - Delete a stored workspace\n */\nexport const DELETE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n responseSchema: deleteStoredWorkspaceResponseSchema,\n summary: 'Delete stored workspace',\n description: 'Deletes a workspace from storage by its unique identifier',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, storedWorkspaceId, requestContext }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Check if workspace exists\n const existing = await workspaceStore.getById(storedWorkspaceId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n assertStoredResourceScope(existing, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, or `stored-workspaces:delete[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-workspaces',\n resourceId: storedWorkspaceId,\n action: 'delete',\n record: existing,\n });\n\n await workspaceStore.delete(storedWorkspaceId);\n\n return {\n success: true,\n message: `Workspace ${storedWorkspaceId} deleted successfully`,\n };\n } catch (error) {\n return handleError(error, 'Error deleting stored workspace');\n }\n },\n});\n"]}
1
+ {"version":3,"sources":["../src/server/handlers/stored-workspaces.ts"],"names":[],"mappings":"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","file":"chunk-P7HCBIOK.js","sourcesContent":["import { HTTPException } from '../http-exception';\nimport {\n storedWorkspaceIdPathParams,\n listStoredWorkspacesQuerySchema,\n createStoredWorkspaceBodySchema,\n updateStoredWorkspaceBodySchema,\n listStoredWorkspacesResponseSchema,\n getStoredWorkspaceResponseSchema,\n createStoredWorkspaceResponseSchema,\n updateStoredWorkspaceResponseSchema,\n deleteStoredWorkspaceResponseSchema,\n} from '../schemas/stored-workspaces';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { assertStoredResourceScope, getStoredResourceScope, scopeStoredResourceMetadata, toSlug } from '../utils';\n\nimport {\n assertReadAccess,\n assertWriteAccess,\n getCallerAuthorId,\n matchesAuthorFilter,\n resolveAuthorFilter,\n} from './authorship';\nimport { handleError } from './error';\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /stored/workspaces - List all stored workspaces\n */\nexport const LIST_STORED_WORKSPACES_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workspaces',\n responseType: 'json',\n queryParamSchema: listStoredWorkspacesQuerySchema,\n responseSchema: listStoredWorkspacesResponseSchema,\n summary: 'List stored workspaces',\n description: 'Returns a paginated list of all workspace configurations stored in the database',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, page, perPage, orderBy, authorId, metadata, requestContext }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Resolve the visibility scope for this caller. Non-owner queries for\n // another author return nothing (workspaces have no `public` visibility\n // yet); default lists return the caller's rows plus legacy unowned\n // records.\n const filter = resolveAuthorFilter({\n requestContext,\n resource: 'stored-workspaces',\n queryAuthorId: authorId,\n });\n\n const scope = await getStoredResourceScope(mastra, requestContext);\n const result = await workspaceStore.listResolved({\n page,\n perPage,\n orderBy,\n authorId: filter.kind === 'exact' ? filter.authorId : undefined,\n metadata: scopeStoredResourceMetadata(metadata, scope),\n });\n\n // Post-filter to enforce ownership rules across all backends. Storage\n // adapters can only do an equality filter on authorId, so we apply the\n // ownedOrPublic / ownedOrPublicOthers logic here. `total` is left as the\n // storage-reported count to keep pagination math working.\n const visibleWorkspaces = result.workspaces.filter(record => matchesAuthorFilter(record, filter));\n\n // Annotate each workspace with whether it's registered at runtime\n const runtimeWorkspaces = mastra.listWorkspaces();\n const workspaces = visibleWorkspaces.map(ws => ({\n ...ws,\n runtimeRegistered: ws.id in runtimeWorkspaces,\n }));\n\n return { ...result, workspaces };\n } catch (error) {\n return handleError(error, 'Error listing stored workspaces');\n }\n },\n});\n\n/**\n * GET /stored/workspaces/:storedWorkspaceId - Get a stored workspace by ID\n */\nexport const GET_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n responseSchema: getStoredWorkspaceResponseSchema,\n summary: 'Get stored workspace by ID',\n description:\n 'Returns a specific workspace from storage by its unique identifier (resolved with active version config)',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, storedWorkspaceId, requestContext }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n const workspace = await workspaceStore.getByIdResolved(storedWorkspaceId);\n\n if (!workspace) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n assertStoredResourceScope(workspace, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, or `stored-workspaces:read[:<id>]` holder.\n assertReadAccess({\n requestContext,\n resource: 'stored-workspaces',\n resourceId: storedWorkspaceId,\n record: workspace,\n });\n\n return workspace;\n } catch (error) {\n return handleError(error, 'Error getting stored workspace');\n }\n },\n});\n\n/**\n * POST /stored/workspaces - Create a new stored workspace\n */\nexport const CREATE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/workspaces',\n responseType: 'json',\n bodySchema: createStoredWorkspaceBodySchema,\n responseSchema: createStoredWorkspaceResponseSchema,\n summary: 'Create stored workspace',\n description: 'Creates a new workspace configuration in storage with the provided settings',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({\n mastra,\n id: providedId,\n metadata,\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n requestContext,\n }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Derive ID from name if not explicitly provided\n const id = providedId || toSlug(name);\n\n if (!id) {\n throw new HTTPException(400, {\n message: 'Could not derive workspace ID from name. Please provide an explicit id.',\n });\n }\n\n // Check if workspace with this ID already exists\n const existing = await workspaceStore.getById(id);\n if (existing) {\n throw new HTTPException(409, { message: `Workspace with id ${id} already exists` });\n }\n\n // Force authorId from the authenticated caller; ignore any body-provided value.\n // No caller (auth not configured) leaves authorId undefined so legacy\n // single-user setups continue to behave as today.\n const authorId = getCallerAuthorId(requestContext) ?? undefined;\n\n await workspaceStore.create({\n workspace: {\n id,\n authorId,\n metadata: scopeStoredResourceMetadata(metadata, await getStoredResourceScope(mastra, requestContext)),\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n },\n });\n\n // Return the resolved workspace (thin record + version config)\n const resolved = await workspaceStore.getByIdResolved(id);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve created workspace' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error creating stored workspace');\n }\n },\n});\n\n/**\n * PATCH /stored/workspaces/:storedWorkspaceId - Update a stored workspace\n */\nexport const UPDATE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'PATCH',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n bodySchema: updateStoredWorkspaceBodySchema,\n responseSchema: updateStoredWorkspaceResponseSchema,\n summary: 'Update stored workspace',\n description: 'Updates an existing workspace in storage with the provided fields',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({\n mastra,\n storedWorkspaceId,\n // Metadata-level fields\n metadata,\n // Config fields (snapshot-level)\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n requestContext,\n }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Check if workspace exists\n const existing = await workspaceStore.getById(storedWorkspaceId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n const scope = await getStoredResourceScope(mastra, requestContext);\n assertStoredResourceScope(existing, scope);\n\n // Throws 404 if the caller isn't the owner, admin, or `stored-workspaces:edit[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-workspaces',\n resourceId: storedWorkspaceId,\n action: 'edit',\n record: existing,\n });\n\n const scopedMetadata =\n metadata !== undefined\n ? scopeStoredResourceMetadata({ ...(existing.metadata ?? {}), ...metadata }, scope)\n : undefined;\n\n // Update the workspace with both metadata-level and config-level fields.\n // The storage layer handles separating these into record updates vs\n // new-version creation. Strip undefined keys so omitted fields don't\n // overwrite persisted values (same pattern as stored-skills PATCH).\n // Note: authorId is intentionally not accepted here. Ownership cannot be\n // transferred via PATCH; admins must use a dedicated flow if that is ever\n // needed.\n const updateInput: Record<string, unknown> = { id: storedWorkspaceId };\n const candidate: Record<string, unknown> = {\n ...(scopedMetadata !== undefined ? { metadata: scopedMetadata } : {}),\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n };\n for (const [key, value] of Object.entries(candidate)) {\n if (value !== undefined) updateInput[key] = value;\n }\n await workspaceStore.update(updateInput as Parameters<typeof workspaceStore.update>[0]);\n\n // Return the resolved workspace with the updated config\n const resolved = await workspaceStore.getByIdResolved(storedWorkspaceId);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve updated workspace' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error updating stored workspace');\n }\n },\n});\n\n/**\n * DELETE /stored/workspaces/:storedWorkspaceId - Delete a stored workspace\n */\nexport const DELETE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n responseSchema: deleteStoredWorkspaceResponseSchema,\n summary: 'Delete stored workspace',\n description: 'Deletes a workspace from storage by its unique identifier',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, storedWorkspaceId, requestContext }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Check if workspace exists\n const existing = await workspaceStore.getById(storedWorkspaceId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n assertStoredResourceScope(existing, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, or `stored-workspaces:delete[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-workspaces',\n resourceId: storedWorkspaceId,\n action: 'delete',\n record: existing,\n });\n\n await workspaceStore.delete(storedWorkspaceId);\n\n return {\n success: true,\n message: `Workspace ${storedWorkspaceId} deleted successfully`,\n };\n } catch (error) {\n return handleError(error, 'Error deleting stored workspace');\n }\n },\n});\n"]}
@@ -1534,7 +1534,7 @@ function getCharacterCount(text) {
1534
1534
  return Array.from(text).length;
1535
1535
  }
1536
1536
 
1537
- // ../memory/dist/chunk-3I6H2ABM.js
1537
+ // ../memory/dist/chunk-UHQBCO7I.js
1538
1538
  var import_image_size = chunkO7I5CWRX_cjs.__toESM(require_dist(), 1);
1539
1539
  var MINUTE = 6e4;
1540
1540
  var HOUR = 60 * MINUTE;
@@ -9899,7 +9899,9 @@ ${grouped}` : grouped;
9899
9899
  writer,
9900
9900
  requestContext,
9901
9901
  observabilityContext
9902
- ).finally(() => {
9902
+ ).catch((err) => {
9903
+ omError("[OM] async buffering observation failed", err);
9904
+ }).finally(() => {
9903
9905
  BufferingCoordinator.asyncBufferingOps.delete(bufferKey);
9904
9906
  unregisterOp(record.id, "bufferingObservation");
9905
9907
  this.storage.setBufferingObservationFlag(record.id, false).catch((err) => {
@@ -9952,11 +9954,16 @@ ${grouped}` : grouped;
9952
9954
  }
9953
9955
  const messagesToBuffer = candidateMessages;
9954
9956
  this.sealMessagesForBuffering(messagesToBuffer);
9955
- await this.messageHistory.persistMessages({
9956
- messages: messagesToBuffer,
9957
- threadId,
9958
- resourceId: freshRecord.resourceId ?? void 0
9959
- });
9957
+ try {
9958
+ await this.messageHistory.persistMessages({
9959
+ messages: messagesToBuffer,
9960
+ threadId,
9961
+ resourceId: freshRecord.resourceId ?? void 0
9962
+ });
9963
+ } catch (err) {
9964
+ omError("[OM] Failed to persist sealed messages before buffering \u2014 skipping observation cycle", err);
9965
+ return;
9966
+ }
9960
9967
  const cycleId = `buffer-obs-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;
9961
9968
  const startedAt = (/* @__PURE__ */ new Date()).toISOString();
9962
9969
  const tokensToBuffer = await this.tokenCounter.countMessagesAsync(messagesToBuffer);
@@ -11507,5 +11514,5 @@ exports.stripEphemeralAnchorIds = stripEphemeralAnchorIds;
11507
11514
  exports.stripObservationGroups = stripObservationGroups;
11508
11515
  exports.truncateStringByTokens = truncateStringByTokens;
11509
11516
  exports.wrapInObservationGroup = wrapInObservationGroup;
11510
- //# sourceMappingURL=chunk-3ZV6GYQI.cjs.map
11511
- //# sourceMappingURL=chunk-3ZV6GYQI.cjs.map
11517
+ //# sourceMappingURL=chunk-PVZX6FFO.cjs.map
11518
+ //# sourceMappingURL=chunk-PVZX6FFO.cjs.map