@mastra/server 1.53.0-alpha.4 → 1.53.0

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 (252) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/{api-schema-manifest-HHPOQOBA.cjs → api-schema-manifest-2ADWGS44.cjs} +4 -4
  3. package/dist/{api-schema-manifest-HHPOQOBA.cjs.map → api-schema-manifest-2ADWGS44.cjs.map} +1 -1
  4. package/dist/{api-schema-manifest-YZ2UQAKW.js → api-schema-manifest-D5MRUN3F.js} +3 -3
  5. package/dist/{api-schema-manifest-YZ2UQAKW.js.map → api-schema-manifest-D5MRUN3F.js.map} +1 -1
  6. package/dist/{chunk-T7QRJ6CC.cjs → chunk-26PD32NV.cjs} +97 -97
  7. package/dist/{chunk-T7QRJ6CC.cjs.map → chunk-26PD32NV.cjs.map} +1 -1
  8. package/dist/{chunk-UB3FCZK2.js → chunk-2A4R6GSR.js} +4 -4
  9. package/dist/{chunk-UB3FCZK2.js.map → chunk-2A4R6GSR.js.map} +1 -1
  10. package/dist/{chunk-ZJOIVM5L.js → chunk-3TB7OLWM.js} +3 -3
  11. package/dist/{chunk-ZJOIVM5L.js.map → chunk-3TB7OLWM.js.map} +1 -1
  12. package/dist/{chunk-CM6KRKF6.js → chunk-4ESLXJ4G.js} +5 -5
  13. package/dist/{chunk-CM6KRKF6.js.map → chunk-4ESLXJ4G.js.map} +1 -1
  14. package/dist/{chunk-RCRKB2TG.js → chunk-4GWTCVFL.js} +3 -3
  15. package/dist/{chunk-RCRKB2TG.js.map → chunk-4GWTCVFL.js.map} +1 -1
  16. package/dist/{chunk-T64IQJHY.js → chunk-5AM2O3JF.js} +4 -4
  17. package/dist/{chunk-T64IQJHY.js.map → chunk-5AM2O3JF.js.map} +1 -1
  18. package/dist/{chunk-KK6BI6UL.cjs → chunk-5SHV4VN7.cjs} +4 -4
  19. package/dist/{chunk-KK6BI6UL.cjs.map → chunk-5SHV4VN7.cjs.map} +1 -1
  20. package/dist/{chunk-4YZLXIS4.js → chunk-5ZFBQKCW.js} +4 -4
  21. package/dist/{chunk-4YZLXIS4.js.map → chunk-5ZFBQKCW.js.map} +1 -1
  22. package/dist/{chunk-W55OO342.cjs → chunk-6B65YSQN.cjs} +34 -34
  23. package/dist/{chunk-W55OO342.cjs.map → chunk-6B65YSQN.cjs.map} +1 -1
  24. package/dist/{chunk-PLXKFGJB.cjs → chunk-6QSLKMKV.cjs} +5 -5
  25. package/dist/{chunk-PLXKFGJB.cjs.map → chunk-6QSLKMKV.cjs.map} +1 -1
  26. package/dist/{chunk-4IPX4EPA.js → chunk-7OY3AGJJ.js} +4 -4
  27. package/dist/{chunk-4IPX4EPA.js.map → chunk-7OY3AGJJ.js.map} +1 -1
  28. package/dist/{chunk-ZMMOLM35.cjs → chunk-7RTORLI4.cjs} +55 -55
  29. package/dist/{chunk-ZMMOLM35.cjs.map → chunk-7RTORLI4.cjs.map} +1 -1
  30. package/dist/{chunk-24GG74PF.cjs → chunk-7X3YWKHD.cjs} +19 -19
  31. package/dist/{chunk-24GG74PF.cjs.map → chunk-7X3YWKHD.cjs.map} +1 -1
  32. package/dist/{chunk-A6SVMM25.js → chunk-A2VLKDT3.js} +7 -3
  33. package/dist/chunk-A2VLKDT3.js.map +1 -0
  34. package/dist/{chunk-T65G3E5M.js → chunk-A7APTIYJ.js} +3 -3
  35. package/dist/{chunk-T65G3E5M.js.map → chunk-A7APTIYJ.js.map} +1 -1
  36. package/dist/{chunk-ZTE7FRYI.cjs → chunk-A7MIAAKW.cjs} +6 -6
  37. package/dist/{chunk-ZTE7FRYI.cjs.map → chunk-A7MIAAKW.cjs.map} +1 -1
  38. package/dist/{chunk-773UBYWJ.cjs → chunk-ACWI5FJL.cjs} +139 -134
  39. package/dist/chunk-ACWI5FJL.cjs.map +1 -0
  40. package/dist/{chunk-3GMKZKUD.cjs → chunk-AWH2J33A.cjs} +3 -3
  41. package/dist/{chunk-3GMKZKUD.cjs.map → chunk-AWH2J33A.cjs.map} +1 -1
  42. package/dist/{chunk-RFWX53ED.cjs → chunk-BMVLDSDJ.cjs} +23 -23
  43. package/dist/{chunk-RFWX53ED.cjs.map → chunk-BMVLDSDJ.cjs.map} +1 -1
  44. package/dist/{chunk-GXTPE32B.cjs → chunk-C5QHQN5G.cjs} +14 -14
  45. package/dist/{chunk-GXTPE32B.cjs.map → chunk-C5QHQN5G.cjs.map} +1 -1
  46. package/dist/{chunk-U3D7DWOU.js → chunk-C5RH6NNS.js} +7 -7
  47. package/dist/{chunk-U3D7DWOU.js.map → chunk-C5RH6NNS.js.map} +1 -1
  48. package/dist/{chunk-RRKCV7QT.js → chunk-CLZVCJJX.js} +4 -4
  49. package/dist/{chunk-RRKCV7QT.js.map → chunk-CLZVCJJX.js.map} +1 -1
  50. package/dist/{chunk-WINDACJX.js → chunk-CMO4UPNO.js} +33 -33
  51. package/dist/{chunk-WINDACJX.js.map → chunk-CMO4UPNO.js.map} +1 -1
  52. package/dist/{chunk-KWBDEZA7.js → chunk-COBVX6FO.js} +4 -4
  53. package/dist/{chunk-KWBDEZA7.js.map → chunk-COBVX6FO.js.map} +1 -1
  54. package/dist/{chunk-RK45RWAX.js → chunk-DBBQU7I5.js} +5 -5
  55. package/dist/chunk-DBBQU7I5.js.map +1 -0
  56. package/dist/{chunk-ALHEBK6S.js → chunk-DTJXVPYD.js} +4 -4
  57. package/dist/{chunk-ALHEBK6S.js.map → chunk-DTJXVPYD.js.map} +1 -1
  58. package/dist/{chunk-GVEZESOH.js → chunk-EK2YKEO3.js} +9 -4
  59. package/dist/chunk-EK2YKEO3.js.map +1 -0
  60. package/dist/{chunk-CMDXDKJX.js → chunk-ET73PQRG.js} +5 -5
  61. package/dist/{chunk-CMDXDKJX.js.map → chunk-ET73PQRG.js.map} +1 -1
  62. package/dist/{chunk-3TTDIOEU.js → chunk-ETR4XOVD.js} +3 -3
  63. package/dist/{chunk-3TTDIOEU.js.map → chunk-ETR4XOVD.js.map} +1 -1
  64. package/dist/{chunk-ITROB3E5.cjs → chunk-EVOVAWN6.cjs} +3 -3
  65. package/dist/{chunk-ITROB3E5.cjs.map → chunk-EVOVAWN6.cjs.map} +1 -1
  66. package/dist/{chunk-3QCPLI6I.js → chunk-FZLA552S.js} +4 -4
  67. package/dist/{chunk-3QCPLI6I.js.map → chunk-FZLA552S.js.map} +1 -1
  68. package/dist/{chunk-FLFWTZIS.cjs → chunk-GHTMFCWF.cjs} +11 -11
  69. package/dist/{chunk-FLFWTZIS.cjs.map → chunk-GHTMFCWF.cjs.map} +1 -1
  70. package/dist/{chunk-TQ5KIKVK.js → chunk-HPMLQ4AV.js} +3 -3
  71. package/dist/{chunk-TQ5KIKVK.js.map → chunk-HPMLQ4AV.js.map} +1 -1
  72. package/dist/{chunk-U3ZA2A36.js → chunk-HVMCICMF.js} +4 -4
  73. package/dist/{chunk-U3ZA2A36.js.map → chunk-HVMCICMF.js.map} +1 -1
  74. package/dist/{chunk-JF6VE6ZA.js → chunk-IJFVB7CZ.js} +3 -3
  75. package/dist/{chunk-JF6VE6ZA.js.map → chunk-IJFVB7CZ.js.map} +1 -1
  76. package/dist/{chunk-VGGYQ246.cjs → chunk-JVE5HOUL.cjs} +4 -4
  77. package/dist/{chunk-VGGYQ246.cjs.map → chunk-JVE5HOUL.cjs.map} +1 -1
  78. package/dist/{chunk-X6MKRXGS.cjs → chunk-KAWV7C5E.cjs} +14 -14
  79. package/dist/{chunk-X6MKRXGS.cjs.map → chunk-KAWV7C5E.cjs.map} +1 -1
  80. package/dist/{chunk-3BNDX3X4.cjs → chunk-LJNTC2CX.cjs} +14 -14
  81. package/dist/{chunk-3BNDX3X4.cjs.map → chunk-LJNTC2CX.cjs.map} +1 -1
  82. package/dist/{chunk-R4IYLTSR.cjs → chunk-LPM2IGPA.cjs} +4 -4
  83. package/dist/{chunk-R4IYLTSR.cjs.map → chunk-LPM2IGPA.cjs.map} +1 -1
  84. package/dist/{chunk-SBVDQ2PB.cjs → chunk-LYZLM7TQ.cjs} +11 -11
  85. package/dist/{chunk-SBVDQ2PB.cjs.map → chunk-LYZLM7TQ.cjs.map} +1 -1
  86. package/dist/{chunk-U4MYHXYB.js → chunk-MG4AA326.js} +4 -4
  87. package/dist/{chunk-U4MYHXYB.js.map → chunk-MG4AA326.js.map} +1 -1
  88. package/dist/{chunk-WBW5BNAI.cjs → chunk-MSKLEJXP.cjs} +7 -3
  89. package/dist/chunk-MSKLEJXP.cjs.map +1 -0
  90. package/dist/{chunk-QPPCEY5W.cjs → chunk-NKG3PCTS.cjs} +45 -45
  91. package/dist/{chunk-QPPCEY5W.cjs.map → chunk-NKG3PCTS.cjs.map} +1 -1
  92. package/dist/{chunk-YUSXKTBJ.cjs → chunk-NTS3DORC.cjs} +14 -14
  93. package/dist/{chunk-YUSXKTBJ.cjs.map → chunk-NTS3DORC.cjs.map} +1 -1
  94. package/dist/{chunk-D33KJE2C.js → chunk-NYSC6V6I.js} +7 -7
  95. package/dist/{chunk-D33KJE2C.js.map → chunk-NYSC6V6I.js.map} +1 -1
  96. package/dist/{chunk-2XPHKO5K.cjs → chunk-O4PNIMVX.cjs} +11 -11
  97. package/dist/{chunk-2XPHKO5K.cjs.map → chunk-O4PNIMVX.cjs.map} +1 -1
  98. package/dist/{chunk-LFITIFN4.cjs → chunk-OCDUNF52.cjs} +8 -8
  99. package/dist/{chunk-LFITIFN4.cjs.map → chunk-OCDUNF52.cjs.map} +1 -1
  100. package/dist/{chunk-Q5L74UGI.js → chunk-ODT3BA2T.js} +4 -4
  101. package/dist/{chunk-Q5L74UGI.js.map → chunk-ODT3BA2T.js.map} +1 -1
  102. package/dist/{chunk-VC5L737D.cjs → chunk-OFF7L43B.cjs} +7 -7
  103. package/dist/{chunk-VC5L737D.cjs.map → chunk-OFF7L43B.cjs.map} +1 -1
  104. package/dist/{chunk-7JLKJOVG.cjs → chunk-PPJXCZCX.cjs} +8 -8
  105. package/dist/{chunk-7JLKJOVG.cjs.map → chunk-PPJXCZCX.cjs.map} +1 -1
  106. package/dist/{chunk-IK5UTS7Q.cjs → chunk-PXA4EGKL.cjs} +13 -13
  107. package/dist/{chunk-IK5UTS7Q.cjs.map → chunk-PXA4EGKL.cjs.map} +1 -1
  108. package/dist/{chunk-NHVVEZW2.js → chunk-Q632CERJ.js} +5 -5
  109. package/dist/{chunk-NHVVEZW2.js.map → chunk-Q632CERJ.js.map} +1 -1
  110. package/dist/{chunk-NWXAU2T5.cjs → chunk-QQJHGSB2.cjs} +3 -3
  111. package/dist/{chunk-NWXAU2T5.cjs.map → chunk-QQJHGSB2.cjs.map} +1 -1
  112. package/dist/{chunk-4AURMJAJ.cjs → chunk-QTCWFBJ2.cjs} +273 -273
  113. package/dist/{chunk-4AURMJAJ.cjs.map → chunk-QTCWFBJ2.cjs.map} +1 -1
  114. package/dist/{chunk-VCRTOLAT.cjs → chunk-QUCQNTXT.cjs} +9 -9
  115. package/dist/{chunk-VCRTOLAT.cjs.map → chunk-QUCQNTXT.cjs.map} +1 -1
  116. package/dist/{chunk-G2XVC7BX.js → chunk-RA26ZEMJ.js} +6 -6
  117. package/dist/{chunk-G2XVC7BX.js.map → chunk-RA26ZEMJ.js.map} +1 -1
  118. package/dist/{chunk-L4LO7SXL.cjs → chunk-RJFQV7QJ.cjs} +38 -38
  119. package/dist/{chunk-L4LO7SXL.cjs.map → chunk-RJFQV7QJ.cjs.map} +1 -1
  120. package/dist/{chunk-IP73WGJO.js → chunk-RPPHTS6D.js} +4 -4
  121. package/dist/{chunk-IP73WGJO.js.map → chunk-RPPHTS6D.js.map} +1 -1
  122. package/dist/{chunk-FKRKOTCX.cjs → chunk-RPVHLIR7.cjs} +5 -5
  123. package/dist/chunk-RPVHLIR7.cjs.map +1 -0
  124. package/dist/{chunk-ZLVFK6NZ.js → chunk-RWL3CJF7.js} +5 -5
  125. package/dist/{chunk-ZLVFK6NZ.js.map → chunk-RWL3CJF7.js.map} +1 -1
  126. package/dist/{chunk-KUXC22PN.js → chunk-RZZJ4L32.js} +5 -5
  127. package/dist/{chunk-KUXC22PN.js.map → chunk-RZZJ4L32.js.map} +1 -1
  128. package/dist/{chunk-GV6TKASG.cjs → chunk-S7Y6AP64.cjs} +4 -4
  129. package/dist/{chunk-GV6TKASG.cjs.map → chunk-S7Y6AP64.cjs.map} +1 -1
  130. package/dist/{chunk-PJHUFD5O.js → chunk-SPNWC52V.js} +3 -3
  131. package/dist/{chunk-PJHUFD5O.js.map → chunk-SPNWC52V.js.map} +1 -1
  132. package/dist/{chunk-FP6SUEJ5.js → chunk-SQSAIKSL.js} +6 -6
  133. package/dist/{chunk-FP6SUEJ5.js.map → chunk-SQSAIKSL.js.map} +1 -1
  134. package/dist/{chunk-LZMLLK22.cjs → chunk-TASNH6SY.cjs} +24 -24
  135. package/dist/{chunk-LZMLLK22.cjs.map → chunk-TASNH6SY.cjs.map} +1 -1
  136. package/dist/{chunk-JPOJK4HE.js → chunk-TKOUI25C.js} +6 -6
  137. package/dist/{chunk-JPOJK4HE.js.map → chunk-TKOUI25C.js.map} +1 -1
  138. package/dist/{chunk-UZRS4E2K.cjs → chunk-UL3UXUNU.cjs} +11 -11
  139. package/dist/{chunk-UZRS4E2K.cjs.map → chunk-UL3UXUNU.cjs.map} +1 -1
  140. package/dist/{chunk-UFREN5I5.cjs → chunk-USKSOKOS.cjs} +8 -8
  141. package/dist/{chunk-UFREN5I5.cjs.map → chunk-USKSOKOS.cjs.map} +1 -1
  142. package/dist/{chunk-FDGZRSSA.js → chunk-VXN5FEWC.js} +7 -7
  143. package/dist/{chunk-FDGZRSSA.js.map → chunk-VXN5FEWC.js.map} +1 -1
  144. package/dist/{chunk-EASJIOMB.cjs → chunk-W543ZJQB.cjs} +14 -14
  145. package/dist/{chunk-EASJIOMB.cjs.map → chunk-W543ZJQB.cjs.map} +1 -1
  146. package/dist/{chunk-XX25W323.js → chunk-WFGFCWLV.js} +6 -6
  147. package/dist/{chunk-XX25W323.js.map → chunk-WFGFCWLV.js.map} +1 -1
  148. package/dist/{chunk-5GRNWZZS.cjs → chunk-WMS7BOP7.cjs} +3 -3
  149. package/dist/{chunk-5GRNWZZS.cjs.map → chunk-WMS7BOP7.cjs.map} +1 -1
  150. package/dist/{chunk-IGPF637U.cjs → chunk-XNUACBMX.cjs} +6 -6
  151. package/dist/{chunk-IGPF637U.cjs.map → chunk-XNUACBMX.cjs.map} +1 -1
  152. package/dist/{chunk-CCH25WG6.js → chunk-XQB5S433.js} +6 -6
  153. package/dist/{chunk-CCH25WG6.js.map → chunk-XQB5S433.js.map} +1 -1
  154. package/dist/{chunk-6DFQUXJB.js → chunk-YQDPAOM2.js} +6 -6
  155. package/dist/{chunk-6DFQUXJB.js.map → chunk-YQDPAOM2.js.map} +1 -1
  156. package/dist/{chunk-T2GYY7P5.js → chunk-YYJ2TLFP.js} +4 -4
  157. package/dist/{chunk-T2GYY7P5.js.map → chunk-YYJ2TLFP.js.map} +1 -1
  158. package/dist/{dist-JBFEG56T.js → dist-2QXB2QUB.js} +3 -3
  159. package/dist/{dist-JBFEG56T.js.map → dist-2QXB2QUB.js.map} +1 -1
  160. package/dist/{dist-TLH5RN67.cjs → dist-EXOCH7YA.cjs} +4 -4
  161. package/dist/{dist-TLH5RN67.cjs.map → dist-EXOCH7YA.cjs.map} +1 -1
  162. package/dist/docs/SKILL.md +1 -1
  163. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  164. package/dist/{observational-memory-O7ZPZ4DM-FZQ67R4A.cjs → observational-memory-OSTBP4LB-5JLK6D4C.cjs} +29 -29
  165. package/dist/{observational-memory-O7ZPZ4DM-FZQ67R4A.cjs.map → observational-memory-OSTBP4LB-5JLK6D4C.cjs.map} +1 -1
  166. package/dist/{observational-memory-O7ZPZ4DM-67EF7JPH.js → observational-memory-OSTBP4LB-6IRW3U5X.js} +3 -3
  167. package/dist/{observational-memory-O7ZPZ4DM-67EF7JPH.js.map → observational-memory-OSTBP4LB-6IRW3U5X.js.map} +1 -1
  168. package/dist/server/handlers/a2a.cjs +14 -14
  169. package/dist/server/handlers/a2a.js +1 -1
  170. package/dist/server/handlers/agent-builder.cjs +17 -17
  171. package/dist/server/handlers/agent-builder.js +1 -1
  172. package/dist/server/handlers/agent-versions.cjs +8 -8
  173. package/dist/server/handlers/agent-versions.js +1 -1
  174. package/dist/server/handlers/agents.cjs +48 -48
  175. package/dist/server/handlers/agents.js +1 -1
  176. package/dist/server/handlers/auth.cjs +13 -13
  177. package/dist/server/handlers/auth.js +1 -1
  178. package/dist/server/handlers/authorship.cjs +12 -12
  179. package/dist/server/handlers/authorship.js +1 -1
  180. package/dist/server/handlers/builder-registry.cjs +6 -6
  181. package/dist/server/handlers/builder-registry.js +1 -1
  182. package/dist/server/handlers/channels.cjs +5 -5
  183. package/dist/server/handlers/channels.js +1 -1
  184. package/dist/server/handlers/conversations.cjs +5 -5
  185. package/dist/server/handlers/conversations.js +1 -1
  186. package/dist/server/handlers/datasets.cjs +26 -26
  187. package/dist/server/handlers/datasets.js +1 -1
  188. package/dist/server/handlers/editor-builder.cjs +6 -6
  189. package/dist/server/handlers/editor-builder.js +1 -1
  190. package/dist/server/handlers/favorites-enrichment.cjs +4 -4
  191. package/dist/server/handlers/favorites-enrichment.js +1 -1
  192. package/dist/server/handlers/logs.cjs +4 -4
  193. package/dist/server/handlers/logs.js +1 -1
  194. package/dist/server/handlers/mcp-client-versions.cjs +8 -8
  195. package/dist/server/handlers/mcp-client-versions.js +1 -1
  196. package/dist/server/handlers/memory.cjs +27 -27
  197. package/dist/server/handlers/memory.d.ts +8 -0
  198. package/dist/server/handlers/memory.d.ts.map +1 -1
  199. package/dist/server/handlers/memory.js +1 -1
  200. package/dist/server/handlers/prompt-block-versions.cjs +8 -8
  201. package/dist/server/handlers/prompt-block-versions.js +1 -1
  202. package/dist/server/handlers/responses.cjs +4 -4
  203. package/dist/server/handlers/responses.js +1 -1
  204. package/dist/server/handlers/responses.storage.cjs +8 -8
  205. package/dist/server/handlers/responses.storage.js +1 -1
  206. package/dist/server/handlers/scorer-versions.cjs +8 -8
  207. package/dist/server/handlers/scorer-versions.js +1 -1
  208. package/dist/server/handlers/scores.cjs +7 -7
  209. package/dist/server/handlers/scores.js +1 -1
  210. package/dist/server/handlers/stored-agent-favorites.cjs +3 -3
  211. package/dist/server/handlers/stored-agent-favorites.js +1 -1
  212. package/dist/server/handlers/stored-agents.cjs +10 -10
  213. package/dist/server/handlers/stored-agents.js +1 -1
  214. package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
  215. package/dist/server/handlers/stored-mcp-clients.js +1 -1
  216. package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
  217. package/dist/server/handlers/stored-prompt-blocks.js +1 -1
  218. package/dist/server/handlers/stored-scorers.cjs +6 -6
  219. package/dist/server/handlers/stored-scorers.js +1 -1
  220. package/dist/server/handlers/stored-skill-favorites.cjs +3 -3
  221. package/dist/server/handlers/stored-skill-favorites.js +1 -1
  222. package/dist/server/handlers/stored-skills.cjs +7 -7
  223. package/dist/server/handlers/stored-skills.js +1 -1
  224. package/dist/server/handlers/stored-workspaces.cjs +6 -6
  225. package/dist/server/handlers/stored-workspaces.js +1 -1
  226. package/dist/server/handlers/system.cjs +3 -3
  227. package/dist/server/handlers/system.js +1 -1
  228. package/dist/server/handlers/tool-providers.cjs +14 -14
  229. package/dist/server/handlers/tool-providers.js +1 -1
  230. package/dist/server/handlers/tools.cjs +6 -6
  231. package/dist/server/handlers/tools.js +1 -1
  232. package/dist/server/handlers/utils.cjs +11 -11
  233. package/dist/server/handlers/utils.js +1 -1
  234. package/dist/server/handlers/workflows.cjs +27 -27
  235. package/dist/server/handlers/workflows.js +1 -1
  236. package/dist/server/handlers.cjs +20 -20
  237. package/dist/server/handlers.js +10 -10
  238. package/dist/server/schemas/index.cjs +202 -202
  239. package/dist/server/schemas/index.js +6 -6
  240. package/dist/server/schemas/memory.d.ts +4 -0
  241. package/dist/server/schemas/memory.d.ts.map +1 -1
  242. package/dist/server/server-adapter/index.cjs +42 -42
  243. package/dist/server/server-adapter/index.js +6 -6
  244. package/dist/server/server-adapter/routes/memory.d.ts +8 -0
  245. package/dist/server/server-adapter/routes/memory.d.ts.map +1 -1
  246. package/package.json +8 -8
  247. package/dist/chunk-773UBYWJ.cjs.map +0 -1
  248. package/dist/chunk-A6SVMM25.js.map +0 -1
  249. package/dist/chunk-FKRKOTCX.cjs.map +0 -1
  250. package/dist/chunk-GVEZESOH.js.map +0 -1
  251. package/dist/chunk-RK45RWAX.js.map +0 -1
  252. package/dist/chunk-WBW5BNAI.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/handlers/responses.storage.ts"],"names":[],"mappings":"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","file":"chunk-PJHUFD5O.js","sourcesContent":["import type { Agent, MastraDBMessage } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { StorageThreadType } from '@mastra/core/memory';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { MemoryStorage } from '@mastra/core/storage';\nimport { HTTPException } from '../http-exception';\nimport type {\n ResponseObject,\n ResponseOutputItem,\n ResponseTextConfig,\n ResponseTool,\n ResponseUsage,\n} from '../schemas/responses';\nimport { getEffectiveResourceId, validateThreadOwnership } from './utils';\n\nexport type ThreadExecutionContext = {\n threadId: string;\n resourceId: string;\n};\n\nexport type UsageLike = {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n promptTokens?: number;\n completionTokens?: number;\n} | null;\n\nexport type ProviderMetadataLike = Record<string, Record<string, unknown> | undefined> | undefined;\n\nexport type ResponseTurnRecordMetadata = {\n agentId: string;\n model: string;\n createdAt: number;\n completedAt: number | null;\n status: ResponseObject['status'];\n usage: ResponseUsage | null;\n instructions?: string;\n text?: ResponseTextConfig;\n previousResponseId?: string;\n providerOptions?: ProviderMetadataLike;\n tools: ResponseTool[];\n store: boolean;\n messageIds: string[];\n outputItems?: ResponseOutputItem[];\n};\n\nexport type ResponseTurnRecord = {\n metadata: ResponseTurnRecordMetadata;\n message: MastraDBMessage;\n messages: MastraDBMessage[];\n thread: StorageThreadType;\n memoryStore: MemoryStorage;\n};\n\ntype ResponseResultLike = {\n response?:\n | Promise<{\n dbMessages?: MastraDBMessage[];\n }>\n | {\n dbMessages?: MastraDBMessage[];\n };\n};\n\ntype SyntheticToolResultMessage = Omit<MastraDBMessage, 'role'> & { role: 'tool' };\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Resolves the backing memory store for a specific agent.\n *\n * This follows the normal agent-memory path. `agent.getMemory()` injects Mastra\n * root storage when the memory has no own storage, so this naturally prefers\n * agent storage first and falls back to Mastra storage through the same codepath.\n */\nexport async function getAgentMemoryStore({\n agent,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n requestContext: RequestContext;\n}): Promise<MemoryStorage | null> {\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n return null;\n }\n\n try {\n return (await memory.storage.getStore('memory')) ?? null;\n } catch {\n return null;\n }\n}\n\n/**\n * Reads the response-turn record metadata attached to a stored assistant message.\n */\nfunction readResponseTurnRecordMetadata(message: MastraDBMessage): ResponseTurnRecordMetadata | null {\n const mastraMetadata = isPlainObject(message.content?.metadata?.mastra) ? message.content.metadata.mastra : null;\n const responseMetadata = mastraMetadata && isPlainObject(mastraMetadata.response) ? mastraMetadata.response : null;\n\n if (\n !responseMetadata ||\n typeof responseMetadata.agentId !== 'string' ||\n typeof responseMetadata.model !== 'string' ||\n typeof responseMetadata.createdAt !== 'number' ||\n (responseMetadata.completedAt !== null && typeof responseMetadata.completedAt !== 'number') ||\n (responseMetadata.instructions !== undefined && typeof responseMetadata.instructions !== 'string') ||\n (responseMetadata.text !== undefined &&\n (!isPlainObject(responseMetadata.text) || !isPlainObject(responseMetadata.text.format))) ||\n (responseMetadata.previousResponseId !== undefined && typeof responseMetadata.previousResponseId !== 'string') ||\n !Array.isArray(responseMetadata.tools) ||\n typeof responseMetadata.store !== 'boolean' ||\n !Array.isArray(responseMetadata.messageIds) ||\n (responseMetadata.outputItems !== undefined && !Array.isArray(responseMetadata.outputItems))\n ) {\n return null;\n }\n\n return {\n agentId: responseMetadata.agentId,\n model: responseMetadata.model,\n createdAt: responseMetadata.createdAt,\n completedAt: responseMetadata.completedAt,\n status: responseMetadata.status === 'completed' ? 'completed' : 'incomplete',\n usage: responseMetadata.usage as ResponseUsage | null,\n instructions: responseMetadata.instructions,\n text: responseMetadata.text as ResponseTextConfig | undefined,\n previousResponseId: responseMetadata.previousResponseId,\n providerOptions: responseMetadata.providerOptions as ProviderMetadataLike,\n tools: responseMetadata.tools as ResponseTool[],\n store: responseMetadata.store,\n messageIds: responseMetadata.messageIds.filter((value): value is string => typeof value === 'string'),\n outputItems: responseMetadata.outputItems as ResponseOutputItem[] | undefined,\n };\n}\n\n/**\n * Writes response-turn record metadata onto a persisted assistant message.\n */\nfunction writeResponseTurnRecordMetadata(\n message: MastraDBMessage,\n metadata: ResponseTurnRecordMetadata,\n): MastraDBMessage {\n const contentMetadata = isPlainObject(message.content?.metadata) ? message.content.metadata : {};\n const mastraMetadata = isPlainObject(contentMetadata.mastra) ? contentMetadata.mastra : {};\n\n return {\n ...message,\n content: {\n ...message.content,\n metadata: {\n ...contentMetadata,\n mastra: {\n ...mastraMetadata,\n response: metadata,\n },\n },\n },\n };\n}\n\n/**\n * Looks up a stored response-turn record by response id.\n *\n * Response ids are assistant message ids, so this reconstructs the record by\n * loading that persisted assistant message, reading its response metadata, then\n * reloading the full set of stored turn messages referenced by the metadata.\n */\nexport async function findResponseTurnRecord({\n agent,\n responseId,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n const memoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!memoryStore) {\n return null;\n }\n\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const { messages: matchedMessages } = await memoryStore.listMessagesById({ messageIds: [responseId] });\n const message = matchedMessages[0];\n if (!message || message.role !== 'assistant') {\n return null;\n }\n\n const metadata = readResponseTurnRecordMetadata(message);\n if (!metadata || metadata.agentId !== agent.id) {\n return null;\n }\n\n const thread = message.threadId ? await memoryStore.getThreadById({ threadId: message.threadId }) : null;\n if (!thread) {\n return null;\n }\n\n await validateThreadOwnership(thread, effectiveResourceId);\n const messageIds = metadata.messageIds.length > 0 ? metadata.messageIds : [message.id];\n const { messages: responseMessages } = await memoryStore.listMessagesById({ messageIds });\n const messagesById = new Map(responseMessages.map(storedMessage => [storedMessage.id, storedMessage] as const));\n const orderedMessages = messageIds\n .map(messageId => messagesById.get(messageId))\n .filter((storedMessage): storedMessage is MastraDBMessage => Boolean(storedMessage));\n\n return { metadata, message, messages: orderedMessages, thread, memoryStore };\n}\n\nexport async function findResponseTurnRecordAcrossAgents({\n mastra,\n responseId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n if (!mastra) {\n return null;\n }\n\n const agents = Object.values(mastra.listAgents()) as Agent<any, any, any, any>[];\n for (const agent of agents) {\n const match = await findResponseTurnRecord({ agent, responseId, requestContext });\n if (match) {\n return match;\n }\n }\n\n return null;\n}\n\nexport type ConversationThreadRecord = {\n thread: StorageThreadType;\n memoryStore: MemoryStorage;\n};\n\nexport async function findConversationThreadAcrossAgents({\n mastra,\n conversationId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n conversationId: string;\n requestContext: RequestContext;\n}): Promise<ConversationThreadRecord | null> {\n if (!mastra) {\n return null;\n }\n\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const agents = Object.values(mastra.listAgents()) as Agent<any, any, any, any>[];\n\n for (const agent of agents) {\n const memoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!memoryStore) {\n continue;\n }\n\n const thread = await memoryStore.getThreadById({ threadId: conversationId });\n if (!thread) {\n continue;\n }\n\n await validateThreadOwnership(thread, effectiveResourceId);\n return { thread, memoryStore };\n }\n\n return null;\n}\n\n/**\n * Creates a synthetic assistant message for responses that did not emit any\n * persisted DB messages but still need a durable response-turn record.\n */\nfunction createSyntheticResponseMessage({\n createdAt,\n responseId,\n text,\n threadContext,\n}: {\n createdAt?: Date;\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext;\n}): MastraDBMessage {\n return {\n id: responseId,\n role: 'assistant',\n type: 'text',\n createdAt: createdAt ?? new Date(),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: text ? [{ type: 'text', text }] : [],\n },\n };\n}\n\nfunction hasTextPart(message: MastraDBMessage): boolean {\n return Boolean(\n message.content?.parts?.some(\n part => isPlainObject(part) && part.type === 'text' && typeof part.text === 'string' && part.text.length > 0,\n ),\n );\n}\n\nfunction isEmptyAssistantMessage(message: MastraDBMessage): boolean {\n return message.role === 'assistant' && Array.isArray(message.content?.parts) && message.content.parts.length === 0;\n}\n\nfunction hasToolInvocationPart(message: MastraDBMessage): boolean {\n return Boolean(\n message.content?.parts?.some(\n part => isPlainObject(part) && part.type === 'tool-invocation' && isPlainObject(part.toolInvocation),\n ),\n );\n}\n\nfunction getMessageText(message: MastraDBMessage): string {\n return (\n message.content?.parts\n ?.flatMap(part =>\n isPlainObject(part) && part.type === 'text' && typeof part.text === 'string' ? [part.text] : [],\n )\n .join('') ?? ''\n );\n}\n\nfunction getOutputMessageText(item: Extract<ResponseOutputItem, { type: 'message' }>): string {\n return item.content.map(part => part.text).join('');\n}\n\nfunction normalizeFallbackComparisonText(text: string): string {\n return text.trim();\n}\n\nfunction matchesFallbackText(messageText: string, fallbackText: string): boolean {\n return (\n messageText === fallbackText ||\n normalizeFallbackComparisonText(messageText) === normalizeFallbackComparisonText(fallbackText)\n );\n}\n\nfunction hasMatchingAssistantText(\n messages: MastraDBMessage[],\n item: Extract<ResponseOutputItem, { type: 'message' }>,\n): boolean {\n const fallbackText = getOutputMessageText(item);\n\n return messages.some(\n message =>\n message.role === 'assistant' &&\n hasTextPart(message) &&\n matchesFallbackText(getMessageText(message), fallbackText),\n );\n}\n\nfunction shouldReplaceAssistantText(messageText: string, fallbackText: string): boolean {\n const normalizedMessageText = normalizeFallbackComparisonText(messageText);\n const normalizedFallbackText = normalizeFallbackComparisonText(fallbackText);\n\n return (\n normalizedFallbackText !== normalizedMessageText &&\n (fallbackText.startsWith(messageText) || normalizedFallbackText.startsWith(normalizedMessageText))\n );\n}\n\nfunction getAssistantMessageTexts(messages: MastraDBMessage[]): string[] {\n return messages.flatMap(message =>\n message.role === 'assistant' && hasTextPart(message) ? [getMessageText(message)] : [],\n );\n}\n\nfunction shouldAddFallbackMessageText(\n messages: MastraDBMessage[],\n item: Extract<ResponseOutputItem, { type: 'message' }>,\n): boolean {\n const assistantTexts = getAssistantMessageTexts(messages);\n if (assistantTexts.length === 0) {\n return true;\n }\n\n const fallbackText = getOutputMessageText(item);\n return assistantTexts.every(messageText => shouldReplaceAssistantText(messageText, fallbackText));\n}\n\nfunction shouldReplaceAssistantTextWithFallback({\n fallbackMessageTexts,\n message,\n textOnlyFallbackMessageTexts,\n}: {\n fallbackMessageTexts: Set<string>;\n message: MastraDBMessage;\n textOnlyFallbackMessageTexts: Set<string>;\n}): boolean {\n if (message.role !== 'assistant' || !hasTextPart(message)) {\n return false;\n }\n\n const messageText = getMessageText(message);\n if (!messageText) {\n return false;\n }\n\n const comparisonTexts = hasToolInvocationPart(message) ? fallbackMessageTexts : textOnlyFallbackMessageTexts;\n\n return [...comparisonTexts].some(fallbackText => shouldReplaceAssistantText(messageText, fallbackText));\n}\n\nfunction replaceAssistantTextWithFallback({\n fallbackMessageTexts,\n message,\n textOnlyFallbackMessageTexts,\n}: {\n fallbackMessageTexts: Set<string>;\n message: MastraDBMessage;\n textOnlyFallbackMessageTexts: Set<string>;\n}): MastraDBMessage {\n if (!shouldReplaceAssistantTextWithFallback({ fallbackMessageTexts, message, textOnlyFallbackMessageTexts })) {\n return message;\n }\n\n const parts = message.content?.parts ?? [];\n const remainingParts = parts.filter(part => !(isPlainObject(part) && part.type === 'text'));\n\n return {\n ...message,\n content: {\n ...message.content,\n parts: remainingParts,\n },\n };\n}\n\nfunction parseFunctionCallArguments(value: string): unknown {\n try {\n return JSON.parse(value);\n } catch {\n return { __raw: value };\n }\n}\n\nfunction createSyntheticToolResultMessage({\n baseMessage,\n item,\n responseId,\n toolCall,\n}: {\n baseMessage: Pick<MastraDBMessage, 'createdAt' | 'threadId' | 'resourceId'>;\n item: Extract<ResponseOutputItem, { type: 'function_call_output' }>;\n responseId: string;\n toolCall?: { args: unknown; toolName: string };\n}): SyntheticToolResultMessage {\n return {\n ...baseMessage,\n id: `${responseId}:tool-result:${item.call_id}`,\n role: 'tool',\n type: 'tool-result',\n content: {\n format: 2 as const,\n parts: [\n {\n type: 'tool-invocation',\n toolInvocation: {\n state: 'result',\n toolCallId: item.call_id,\n toolName: toolCall?.toolName ?? 'unknown',\n args: toolCall?.args ?? {},\n result: item.output,\n },\n },\n ],\n },\n };\n}\n\nfunction toMastraDBMessage(message: SyntheticToolResultMessage): MastraDBMessage {\n // MastraDBMessage does not yet type persisted v2 tool-role messages, but\n // storage and response mapping already handle them at runtime.\n return message as unknown as MastraDBMessage;\n}\n\nfunction createSyntheticMessagesFromOutputItems({\n contextOutputItems,\n outputItems,\n responseId,\n threadContext,\n}: {\n contextOutputItems?: ResponseOutputItem[];\n outputItems: ResponseOutputItem[];\n responseId: string;\n threadContext: ThreadExecutionContext;\n}): MastraDBMessage[] {\n const toolContextItems = contextOutputItems ?? outputItems;\n const toolCallsById = new Map(\n toolContextItems.flatMap(item =>\n item.type === 'function_call'\n ? [[item.call_id, { args: parseFunctionCallArguments(item.arguments), toolName: item.name }] as const]\n : [],\n ),\n );\n\n const baseCreatedAt = Date.now();\n\n return outputItems.map((item, index): MastraDBMessage => {\n const baseMessage = {\n createdAt: new Date(baseCreatedAt + index),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n };\n\n if (item.type === 'function_call') {\n return {\n ...baseMessage,\n id: `${responseId}:tool-call:${item.call_id}`,\n role: 'assistant',\n type: 'tool-call',\n content: {\n format: 2 as const,\n parts: [\n {\n type: 'tool-invocation',\n toolInvocation: {\n state: 'call',\n toolCallId: item.call_id,\n toolName: item.name,\n args: parseFunctionCallArguments(item.arguments),\n },\n },\n ],\n },\n };\n }\n\n if (item.type === 'function_call_output') {\n const toolCall = toolCallsById.get(item.call_id);\n\n return toMastraDBMessage(createSyntheticToolResultMessage({ baseMessage, item, responseId, toolCall }));\n }\n\n return {\n ...baseMessage,\n id: item.id,\n role: 'assistant',\n type: 'text',\n content: {\n format: 2 as const,\n parts: item.content.map(part => ({ type: 'text' as const, text: part.text })),\n },\n };\n });\n}\n\nfunction getToolInvocationParts(message: MastraDBMessage): Array<Record<string, unknown>> {\n const parts = Array.isArray(message.content?.parts) ? message.content.parts : [];\n\n return parts.flatMap(part =>\n isPlainObject(part) && part.type === 'tool-invocation' && isPlainObject(part.toolInvocation)\n ? [part.toolInvocation]\n : [],\n );\n}\n\nfunction getMissingFallbackOutputItems({\n fallbackOutputItems = [],\n messages,\n}: {\n fallbackOutputItems?: ResponseObject['output'];\n messages: MastraDBMessage[];\n}): ResponseOutputItem[] {\n if (!fallbackOutputItems.length) {\n return [];\n }\n\n const existingCallIds = new Set<string>();\n const existingResultCallIds = new Set<string>();\n\n for (const message of messages) {\n for (const toolInvocation of getToolInvocationParts(message)) {\n const toolCallId = typeof toolInvocation.toolCallId === 'string' ? toolInvocation.toolCallId : null;\n if (!toolCallId) {\n continue;\n }\n\n if (message.role === 'assistant' && (toolInvocation.args !== undefined || toolInvocation.result === undefined)) {\n existingCallIds.add(toolCallId);\n }\n if (toolInvocation.result !== undefined) {\n existingResultCallIds.add(toolCallId);\n }\n }\n }\n\n return fallbackOutputItems.filter(item => {\n if (item.type === 'function_call') {\n return !existingCallIds.has(item.call_id);\n }\n\n if (item.type === 'function_call_output') {\n return !existingResultCallIds.has(item.call_id);\n }\n\n if (item.type === 'message') {\n if (!item.content.some(part => part.text.length > 0) || hasMatchingAssistantText(messages, item)) {\n return false;\n }\n\n return shouldAddFallbackMessageText(messages, item);\n }\n\n return false;\n });\n}\n\nfunction getFallbackOutputIdForMessage(\n message: MastraDBMessage,\n responseId: string,\n fallbackOutputIds: Set<string>,\n): string | null {\n for (const toolInvocation of getToolInvocationParts(message)) {\n const toolCallId = typeof toolInvocation.toolCallId === 'string' ? toolInvocation.toolCallId : null;\n if (!toolCallId) {\n continue;\n }\n\n if (message.role === 'assistant' && toolInvocation.args !== undefined) {\n return toolCallId;\n }\n\n if (toolInvocation.result !== undefined) {\n return `${toolCallId}:output`;\n }\n }\n\n if (message.role === 'assistant' && hasTextPart(message)) {\n return fallbackOutputIds.has(message.id) ? message.id : responseId;\n }\n\n return null;\n}\n\nfunction sortMessagesByFallbackOutputOrder({\n fallbackOutputItems = [],\n messages,\n responseId,\n}: {\n fallbackOutputItems?: ResponseObject['output'];\n messages: MastraDBMessage[];\n responseId: string;\n}): MastraDBMessage[] {\n if (!fallbackOutputItems.length) {\n return messages;\n }\n\n const outputOrder = new Map(fallbackOutputItems.map((item, index) => [item.id, index]));\n const fallbackOutputIds = new Set(outputOrder.keys());\n\n return messages\n .map((message, index) => ({\n index,\n message,\n outputIndex:\n outputOrder.get(getFallbackOutputIdForMessage(message, responseId, fallbackOutputIds) ?? '') ??\n Number.MAX_SAFE_INTEGER,\n }))\n .sort((left, right) => left.outputIndex - right.outputIndex || left.index - right.index)\n .map(({ message }) => message);\n}\n\n/**\n * Resolves the Mastra messages that belong to the response turn being stored.\n */\nexport async function resolveResponseTurnMessagesForStorage({\n result,\n responseId,\n text,\n threadContext,\n fallbackOutputItems,\n}: {\n result: ResponseResultLike;\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext | null;\n fallbackOutputItems?: ResponseObject['output'];\n}): Promise<MastraDBMessage[]> {\n const response = await result.response;\n const responseMessages = response?.dbMessages?.length ? response.dbMessages : [];\n\n if (!threadContext) {\n return responseMessages;\n }\n\n if (responseMessages.length === 0) {\n if (fallbackOutputItems?.length) {\n const syntheticMessages = createSyntheticMessagesFromOutputItems({\n outputItems: fallbackOutputItems,\n responseId,\n threadContext,\n });\n\n return text && !syntheticMessages.some(message => message.role === 'assistant' && hasTextPart(message))\n ? [\n ...syntheticMessages,\n createSyntheticResponseMessage({\n createdAt: new Date(new Date(syntheticMessages.at(-1)?.createdAt ?? Date.now()).getTime() + 1),\n responseId,\n text,\n threadContext,\n }),\n ]\n : syntheticMessages;\n }\n\n return [createSyntheticResponseMessage({ responseId, text, threadContext })];\n }\n\n const missingFallbackItems = getMissingFallbackOutputItems({ fallbackOutputItems, messages: responseMessages });\n const missingFallbackMessageIds = new Set(\n missingFallbackItems\n .filter((item): item is Extract<ResponseOutputItem, { type: 'message' }> => item.type === 'message')\n .map(item => item.id),\n );\n const fallbackItemsWithMatchingAssistantText = (fallbackOutputItems ?? []).filter(\n (item): item is Extract<ResponseOutputItem, { type: 'message' }> =>\n item.type === 'message' && hasMatchingAssistantText(responseMessages, item),\n );\n const textOnlyFallbackMessageTexts = new Set(\n fallbackItemsWithMatchingAssistantText.map(getOutputMessageText).filter(Boolean),\n );\n const fallbackMessageTexts = new Set(\n (fallbackOutputItems ?? [])\n .filter((item): item is Extract<ResponseOutputItem, { type: 'message' }> => item.type === 'message')\n .filter(item => missingFallbackMessageIds.has(item.id) || fallbackItemsWithMatchingAssistantText.includes(item))\n .map(getOutputMessageText)\n .filter(Boolean),\n );\n const baseMessages = fallbackMessageTexts.size\n ? responseMessages.map(message =>\n replaceAssistantTextWithFallback({ fallbackMessageTexts, message, textOnlyFallbackMessageTexts }),\n )\n : responseMessages;\n const syntheticFallbackMessages = createSyntheticMessagesFromOutputItems({\n contextOutputItems: fallbackOutputItems ?? [],\n outputItems: missingFallbackItems,\n responseId,\n threadContext,\n });\n const resolvedMessages = sortMessagesByFallbackOutputOrder({\n fallbackOutputItems,\n messages: [...baseMessages, ...syntheticFallbackMessages],\n responseId,\n });\n\n if (text && !resolvedMessages.some(message => message.role === 'assistant' && hasTextPart(message))) {\n return [...resolvedMessages, createSyntheticResponseMessage({ responseId, text, threadContext })];\n }\n\n return resolvedMessages;\n}\n\n/**\n * Persists a response-turn record by anchoring it on the final assistant\n * message in the stored turn.\n *\n * The response id becomes that assistant message id, and the response-specific\n * metadata is written onto the assistant message so later retrieval can rebuild\n * the Responses object from thread-backed storage.\n */\nexport async function persistResponseTurnRecord({\n memoryStore,\n responseId,\n metadata,\n threadContext,\n messages,\n}: {\n memoryStore: MemoryStorage | null;\n responseId: string;\n metadata: ResponseTurnRecordMetadata;\n threadContext: ThreadExecutionContext;\n messages: MastraDBMessage[];\n}): Promise<void> {\n if (!memoryStore) {\n throw new HTTPException(500, { message: 'Memory storage was not available while storing the response' });\n }\n\n const normalizedMessages: MastraDBMessage[] = messages.map(message => ({\n ...message,\n threadId: message.threadId ?? threadContext.threadId,\n resourceId: message.resourceId ?? threadContext.resourceId,\n }));\n\n const lastAssistantIndex = [...normalizedMessages].map(message => message.role).lastIndexOf('assistant');\n const responseAnchorIndex =\n [...normalizedMessages]\n .map((message, index) => ({ index, message }))\n .reverse()\n .find(({ message }) => message.role === 'assistant' && hasTextPart(message))?.index ?? lastAssistantIndex;\n const lastAssistantMessage =\n responseAnchorIndex >= 0\n ? {\n ...normalizedMessages[responseAnchorIndex]!,\n id: responseId,\n }\n : ({\n id: responseId,\n role: 'assistant' as const,\n type: 'text' as const,\n createdAt: new Date(metadata.completedAt ? metadata.completedAt * 1000 : Date.now()),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: [],\n },\n } satisfies MastraDBMessage);\n\n if (responseAnchorIndex >= 0) {\n normalizedMessages[responseAnchorIndex] = lastAssistantMessage;\n } else {\n normalizedMessages.push(lastAssistantMessage);\n }\n const storedMessageIndex = responseAnchorIndex >= 0 ? responseAnchorIndex : normalizedMessages.length - 1;\n\n const droppedSupersededMessageIds = normalizedMessages.flatMap((message, index) =>\n index !== storedMessageIndex && isEmptyAssistantMessage(message) && messages[index]?.id\n ? [messages[index]!.id]\n : [],\n );\n const staleMessageIds =\n responseAnchorIndex >= 0 && messages[responseAnchorIndex]?.id && messages[responseAnchorIndex]?.id !== responseId\n ? [messages[responseAnchorIndex]!.id]\n : [];\n const messagesToSave = normalizedMessages.filter(\n (message, index) => index === storedMessageIndex || !isEmptyAssistantMessage(message),\n );\n\n const storedMessage = writeResponseTurnRecordMetadata(lastAssistantMessage, {\n ...metadata,\n messageIds: messagesToSave.map(message => message.id),\n });\n\n if (responseAnchorIndex >= 0) {\n normalizedMessages[responseAnchorIndex] = storedMessage;\n } else {\n normalizedMessages[normalizedMessages.length - 1] = storedMessage;\n }\n\n const savedMessages = normalizedMessages.filter(\n (message, index) => index === storedMessageIndex || !isEmptyAssistantMessage(message),\n );\n\n await memoryStore.saveMessages({ messages: savedMessages });\n\n const deleteMessageIds = [...new Set([...staleMessageIds, ...droppedSupersededMessageIds])];\n if (deleteMessageIds.length > 0) {\n await memoryStore.deleteMessages(deleteMessageIds);\n }\n}\n\n/**\n * Removes all persisted messages for a stored response-turn record.\n */\nexport async function deleteResponseTurnRecord({\n responseTurnRecord,\n}: {\n responseTurnRecord: ResponseTurnRecord;\n}): Promise<void> {\n const messageIds =\n responseTurnRecord.messages.length > 0\n ? responseTurnRecord.messages.map(message => message.id)\n : [responseTurnRecord.message.id];\n\n await responseTurnRecord.memoryStore.deleteMessages(messageIds);\n}\n"]}
1
+ {"version":3,"sources":["../src/server/handlers/responses.storage.ts"],"names":[],"mappings":";;;;AAmEA,SAAS,cAAc,KAAA,EAAkD;AACvE,EAAA,OAAO,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,CAAC,KAAA,CAAM,QAAQ,KAAK,CAAA;AAC5E;AASA,eAAsB,mBAAA,CAAoB;AAAA,EACxC,KAAA;AAAA,EACA;AACF,CAAA,EAGkC;AAChC,EAAA,MAAM,SAAS,MAAM,KAAA,CAAM,SAAA,CAAU,EAAE,gBAAgB,CAAA;AACvD,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI;AACF,IAAA,OAAQ,MAAM,MAAA,CAAO,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA,IAAM,IAAA;AAAA,EACtD,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAKA,SAAS,+BAA+B,OAAA,EAA6D;AACnG,EAAA,MAAM,cAAA,GAAiB,aAAA,CAAc,OAAA,CAAQ,OAAA,EAAS,QAAA,EAAU,MAAM,CAAA,GAAI,OAAA,CAAQ,OAAA,CAAQ,QAAA,CAAS,MAAA,GAAS,IAAA;AAC5G,EAAA,MAAM,mBAAmB,cAAA,IAAkB,aAAA,CAAc,eAAe,QAAQ,CAAA,GAAI,eAAe,QAAA,GAAW,IAAA;AAE9G,EAAA,IACE,CAAC,gBAAA,IACD,OAAO,gBAAA,CAAiB,YAAY,QAAA,IACpC,OAAO,gBAAA,CAAiB,KAAA,KAAU,YAClC,OAAO,gBAAA,CAAiB,SAAA,KAAc,QAAA,IACrC,iBAAiB,WAAA,KAAgB,IAAA,IAAQ,OAAO,gBAAA,CAAiB,WAAA,KAAgB,QAAA,IACjF,gBAAA,CAAiB,YAAA,KAAiB,UAAa,OAAO,gBAAA,CAAiB,YAAA,KAAiB,QAAA,IACxF,iBAAiB,IAAA,KAAS,MAAA,KACxB,CAAC,aAAA,CAAc,iBAAiB,IAAI,CAAA,IAAK,CAAC,aAAA,CAAc,gBAAA,CAAiB,IAAA,CAAK,MAAM,CAAA,CAAA,IACtF,iBAAiB,kBAAA,KAAuB,MAAA,IAAa,OAAO,gBAAA,CAAiB,uBAAuB,QAAA,IACrG,CAAC,KAAA,CAAM,OAAA,CAAQ,iBAAiB,KAAK,CAAA,IACrC,OAAO,gBAAA,CAAiB,UAAU,SAAA,IAClC,CAAC,KAAA,CAAM,OAAA,CAAQ,iBAAiB,UAAU,CAAA,IACzC,gBAAA,CAAiB,WAAA,KAAgB,UAAa,CAAC,KAAA,CAAM,OAAA,CAAQ,gBAAA,CAAiB,WAAW,CAAA,EAC1F;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO;AAAA,IACL,SAAS,gBAAA,CAAiB,OAAA;AAAA,IAC1B,OAAO,gBAAA,CAAiB,KAAA;AAAA,IACxB,WAAW,gBAAA,CAAiB,SAAA;AAAA,IAC5B,aAAa,gBAAA,CAAiB,WAAA;AAAA,IAC9B,MAAA,EAAQ,gBAAA,CAAiB,MAAA,KAAW,WAAA,GAAc,WAAA,GAAc,YAAA;AAAA,IAChE,OAAO,gBAAA,CAAiB,KAAA;AAAA,IACxB,cAAc,gBAAA,CAAiB,YAAA;AAAA,IAC/B,MAAM,gBAAA,CAAiB,IAAA;AAAA,IACvB,oBAAoB,gBAAA,CAAiB,kBAAA;AAAA,IACrC,iBAAiB,gBAAA,CAAiB,eAAA;AAAA,IAClC,OAAO,gBAAA,CAAiB,KAAA;AAAA,IACxB,OAAO,gBAAA,CAAiB,KAAA;AAAA,IACxB,UAAA,EAAY,iBAAiB,UAAA,CAAW,MAAA,CAAO,CAAC,KAAA,KAA2B,OAAO,UAAU,QAAQ,CAAA;AAAA,IACpG,aAAa,gBAAA,CAAiB;AAAA,GAChC;AACF;AAKA,SAAS,+BAAA,CACP,SACA,QAAA,EACiB;AACjB,EAAA,MAAM,eAAA,GAAkB,cAAc,OAAA,CAAQ,OAAA,EAAS,QAAQ,CAAA,GAAI,OAAA,CAAQ,OAAA,CAAQ,QAAA,GAAW,EAAC;AAC/F,EAAA,MAAM,iBAAiB,aAAA,CAAc,eAAA,CAAgB,MAAM,CAAA,GAAI,eAAA,CAAgB,SAAS,EAAC;AAEzF,EAAA,OAAO;AAAA,IACL,GAAG,OAAA;AAAA,IACH,OAAA,EAAS;AAAA,MACP,GAAG,OAAA,CAAQ,OAAA;AAAA,MACX,QAAA,EAAU;AAAA,QACR,GAAG,eAAA;AAAA,QACH,MAAA,EAAQ;AAAA,UACN,GAAG,cAAA;AAAA,UACH,QAAA,EAAU;AAAA;AACZ;AACF;AACF,GACF;AACF;AASA,eAAsB,sBAAA,CAAuB;AAAA,EAC3C,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAIuC;AACrC,EAAA,MAAM,cAAc,MAAM,mBAAA,CAAoB,EAAE,KAAA,EAAO,gBAAgB,CAAA;AACvE,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,mBAAA,GAAsB,sBAAA,CAAuB,cAAA,EAAgB,MAAS,CAAA;AAC5E,EAAA,MAAM,EAAE,QAAA,EAAU,eAAA,EAAgB,GAAI,MAAM,WAAA,CAAY,gBAAA,CAAiB,EAAE,UAAA,EAAY,CAAC,UAAU,CAAA,EAAG,CAAA;AACrG,EAAA,MAAM,OAAA,GAAU,gBAAgB,CAAC,CAAA;AACjC,EAAA,IAAI,CAAC,OAAA,IAAW,OAAA,CAAQ,IAAA,KAAS,WAAA,EAAa;AAC5C,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,+BAA+B,OAAO,CAAA;AACvD,EAAA,IAAI,CAAC,QAAA,IAAY,QAAA,CAAS,OAAA,KAAY,MAAM,EAAA,EAAI;AAC9C,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,QAAA,GAAW,MAAM,WAAA,CAAY,aAAA,CAAc,EAAE,QAAA,EAAU,OAAA,CAAQ,QAAA,EAAU,CAAA,GAAI,IAAA;AACpG,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,uBAAA,CAAwB,QAAQ,mBAAmB,CAAA;AACzD,EAAA,MAAM,UAAA,GAAa,SAAS,UAAA,CAAW,MAAA,GAAS,IAAI,QAAA,CAAS,UAAA,GAAa,CAAC,OAAA,CAAQ,EAAE,CAAA;AACrF,EAAA,MAAM,EAAE,UAAU,gBAAA,EAAiB,GAAI,MAAM,WAAA,CAAY,gBAAA,CAAiB,EAAE,UAAA,EAAY,CAAA;AACxF,EAAA,MAAM,YAAA,GAAe,IAAI,GAAA,CAAI,gBAAA,CAAiB,GAAA,CAAI,CAAA,aAAA,KAAiB,CAAC,aAAA,CAAc,EAAA,EAAI,aAAa,CAAU,CAAC,CAAA;AAC9G,EAAA,MAAM,eAAA,GAAkB,UAAA,CACrB,GAAA,CAAI,CAAA,SAAA,KAAa,aAAa,GAAA,CAAI,SAAS,CAAC,CAAA,CAC5C,MAAA,CAAO,CAAC,aAAA,KAAoD,OAAA,CAAQ,aAAa,CAAC,CAAA;AAErF,EAAA,OAAO,EAAE,QAAA,EAAU,OAAA,EAAS,QAAA,EAAU,eAAA,EAAiB,QAAQ,WAAA,EAAY;AAC7E;AAEA,eAAsB,kCAAA,CAAmC;AAAA,EACvD,MAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAIuC;AACrC,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,YAAY,CAAA;AAChD,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,MAAM,QAAQ,MAAM,sBAAA,CAAuB,EAAE,KAAA,EAAO,UAAA,EAAY,gBAAgB,CAAA;AAChF,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,OAAO,IAAA;AACT;AAOA,eAAsB,kCAAA,CAAmC;AAAA,EACvD,MAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EAI6C;AAC3C,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,mBAAA,GAAsB,sBAAA,CAAuB,cAAA,EAAgB,MAAS,CAAA;AAC5E,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,YAAY,CAAA;AAEhD,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,MAAM,cAAc,MAAM,mBAAA,CAAoB,EAAE,KAAA,EAAO,gBAAgB,CAAA;AACvE,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,SAAS,MAAM,WAAA,CAAY,cAAc,EAAE,QAAA,EAAU,gBAAgB,CAAA;AAC3E,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,uBAAA,CAAwB,QAAQ,mBAAmB,CAAA;AACzD,IAAA,OAAO,EAAE,QAAQ,WAAA,EAAY;AAAA,EAC/B;AAEA,EAAA,OAAO,IAAA;AACT;AAMA,SAAS,8BAAA,CAA+B;AAAA,EACtC,SAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAKoB;AAClB,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,UAAA;AAAA,IACJ,IAAA,EAAM,WAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,SAAA,EAAW,SAAA,oBAAa,IAAI,IAAA,EAAK;AAAA,IACjC,UAAU,aAAA,CAAc,QAAA;AAAA,IACxB,YAAY,aAAA,CAAc,UAAA;AAAA,IAC1B,OAAA,EAAS;AAAA,MACP,MAAA,EAAQ,CAAA;AAAA,MACR,KAAA,EAAO,OAAO,CAAC,EAAE,MAAM,MAAA,EAAQ,IAAA,EAAM,CAAA,GAAI;AAAC;AAC5C,GACF;AACF;AAEA,SAAS,YAAY,OAAA,EAAmC;AACtD,EAAA,OAAO,OAAA;AAAA,IACL,OAAA,CAAQ,SAAS,KAAA,EAAO,IAAA;AAAA,MACtB,CAAA,IAAA,KAAQ,aAAA,CAAc,IAAI,CAAA,IAAK,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,OAAO,IAAA,CAAK,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,KAAK,MAAA,GAAS;AAAA;AAC7G,GACF;AACF;AAEA,SAAS,wBAAwB,OAAA,EAAmC;AAClE,EAAA,OAAO,OAAA,CAAQ,IAAA,KAAS,WAAA,IAAe,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,OAAA,EAAS,KAAK,CAAA,IAAK,OAAA,CAAQ,OAAA,CAAQ,KAAA,CAAM,MAAA,KAAW,CAAA;AACnH;AAEA,SAAS,sBAAsB,OAAA,EAAmC;AAChE,EAAA,OAAO,OAAA;AAAA,IACL,OAAA,CAAQ,SAAS,KAAA,EAAO,IAAA;AAAA,MACtB,CAAA,IAAA,KAAQ,cAAc,IAAI,CAAA,IAAK,KAAK,IAAA,KAAS,iBAAA,IAAqB,aAAA,CAAc,IAAA,CAAK,cAAc;AAAA;AACrG,GACF;AACF;AAEA,SAAS,eAAe,OAAA,EAAkC;AACxD,EAAA,OACE,OAAA,CAAQ,SAAS,KAAA,EACb,OAAA;AAAA,IAAQ,CAAA,IAAA,KACR,aAAA,CAAc,IAAI,CAAA,IAAK,KAAK,IAAA,KAAS,MAAA,IAAU,OAAO,IAAA,CAAK,SAAS,QAAA,GAAW,CAAC,IAAA,CAAK,IAAI,IAAI;AAAC,GAChG,CACC,IAAA,CAAK,EAAE,CAAA,IAAK,EAAA;AAEnB;AAEA,SAAS,qBAAqB,IAAA,EAAgE;AAC5F,EAAA,OAAO,IAAA,CAAK,QAAQ,GAAA,CAAI,CAAA,IAAA,KAAQ,KAAK,IAAI,CAAA,CAAE,KAAK,EAAE,CAAA;AACpD;AAEA,SAAS,gCAAgC,IAAA,EAAsB;AAC7D,EAAA,OAAO,KAAK,IAAA,EAAK;AACnB;AAEA,SAAS,mBAAA,CAAoB,aAAqB,YAAA,EAA+B;AAC/E,EAAA,OACE,gBAAgB,YAAA,IAChB,+BAAA,CAAgC,WAAW,CAAA,KAAM,gCAAgC,YAAY,CAAA;AAEjG;AAEA,SAAS,wBAAA,CACP,UACA,IAAA,EACS;AACT,EAAA,MAAM,YAAA,GAAe,qBAAqB,IAAI,CAAA;AAE9C,EAAA,OAAO,QAAA,CAAS,IAAA;AAAA,IACd,CAAA,OAAA,KACE,OAAA,CAAQ,IAAA,KAAS,WAAA,IACjB,WAAA,CAAY,OAAO,CAAA,IACnB,mBAAA,CAAoB,cAAA,CAAe,OAAO,CAAA,EAAG,YAAY;AAAA,GAC7D;AACF;AAEA,SAAS,0BAAA,CAA2B,aAAqB,YAAA,EAA+B;AACtF,EAAA,MAAM,qBAAA,GAAwB,gCAAgC,WAAW,CAAA;AACzE,EAAA,MAAM,sBAAA,GAAyB,gCAAgC,YAAY,CAAA;AAE3E,EAAA,OACE,sBAAA,KAA2B,0BAC1B,YAAA,CAAa,UAAA,CAAW,WAAW,CAAA,IAAK,sBAAA,CAAuB,WAAW,qBAAqB,CAAA,CAAA;AAEpG;AAEA,SAAS,yBAAyB,QAAA,EAAuC;AACvE,EAAA,OAAO,QAAA,CAAS,OAAA;AAAA,IAAQ,CAAA,OAAA,KACtB,OAAA,CAAQ,IAAA,KAAS,WAAA,IAAe,WAAA,CAAY,OAAO,CAAA,GAAI,CAAC,cAAA,CAAe,OAAO,CAAC,CAAA,GAAI;AAAC,GACtF;AACF;AAEA,SAAS,4BAAA,CACP,UACA,IAAA,EACS;AACT,EAAA,MAAM,cAAA,GAAiB,yBAAyB,QAAQ,CAAA;AACxD,EAAA,IAAI,cAAA,CAAe,WAAW,CAAA,EAAG;AAC/B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,YAAA,GAAe,qBAAqB,IAAI,CAAA;AAC9C,EAAA,OAAO,eAAe,KAAA,CAAM,CAAA,WAAA,KAAe,0BAAA,CAA2B,WAAA,EAAa,YAAY,CAAC,CAAA;AAClG;AAEA,SAAS,sCAAA,CAAuC;AAAA,EAC9C,oBAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAIY;AACV,EAAA,IAAI,QAAQ,IAAA,KAAS,WAAA,IAAe,CAAC,WAAA,CAAY,OAAO,CAAA,EAAG;AACzD,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,MAAM,WAAA,GAAc,eAAe,OAAO,CAAA;AAC1C,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,MAAM,eAAA,GAAkB,qBAAA,CAAsB,OAAO,CAAA,GAAI,oBAAA,GAAuB,4BAAA;AAEhF,EAAA,OAAO,CAAC,GAAG,eAAe,CAAA,CAAE,KAAK,CAAA,YAAA,KAAgB,0BAAA,CAA2B,WAAA,EAAa,YAAY,CAAC,CAAA;AACxG;AAEA,SAAS,gCAAA,CAAiC;AAAA,EACxC,oBAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAIoB;AAClB,EAAA,IAAI,CAAC,sCAAA,CAAuC,EAAE,sBAAsB,OAAA,EAAS,4BAAA,EAA8B,CAAA,EAAG;AAC5G,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,OAAA,EAAS,KAAA,IAAS,EAAC;AACzC,EAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,MAAA,CAAO,CAAA,IAAA,KAAQ,EAAE,cAAc,IAAI,CAAA,IAAK,IAAA,CAAK,IAAA,KAAS,MAAA,CAAO,CAAA;AAE1F,EAAA,OAAO;AAAA,IACL,GAAG,OAAA;AAAA,IACH,OAAA,EAAS;AAAA,MACP,GAAG,OAAA,CAAQ,OAAA;AAAA,MACX,KAAA,EAAO;AAAA;AACT,GACF;AACF;AAEA,SAAS,2BAA2B,KAAA,EAAwB;AAC1D,EAAA,IAAI;AACF,IAAA,OAAO,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,EACzB,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,EAAE,OAAO,KAAA,EAAM;AAAA,EACxB;AACF;AAEA,SAAS,gCAAA,CAAiC;AAAA,EACxC,WAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAK+B;AAC7B,EAAA,OAAO;AAAA,IACL,GAAG,WAAA;AAAA,IACH,EAAA,EAAI,CAAA,EAAG,UAAU,CAAA,aAAA,EAAgB,KAAK,OAAO,CAAA,CAAA;AAAA,IAC7C,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,aAAA;AAAA,IACN,OAAA,EAAS;AAAA,MACP,MAAA,EAAQ,CAAA;AAAA,MACR,KAAA,EAAO;AAAA,QACL;AAAA,UACE,IAAA,EAAM,iBAAA;AAAA,UACN,cAAA,EAAgB;AAAA,YACd,KAAA,EAAO,QAAA;AAAA,YACP,YAAY,IAAA,CAAK,OAAA;AAAA,YACjB,QAAA,EAAU,UAAU,QAAA,IAAY,SAAA;AAAA,YAChC,IAAA,EAAM,QAAA,EAAU,IAAA,IAAQ,EAAC;AAAA,YACzB,QAAQ,IAAA,CAAK;AAAA;AACf;AACF;AACF;AACF,GACF;AACF;AAEA,SAAS,kBAAkB,OAAA,EAAsD;AAG/E,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,sCAAA,CAAuC;AAAA,EAC9C,kBAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAKsB;AACpB,EAAA,MAAM,mBAAmB,kBAAA,IAAsB,WAAA;AAC/C,EAAA,MAAM,gBAAgB,IAAI,GAAA;AAAA,IACxB,gBAAA,CAAiB,OAAA;AAAA,MAAQ,CAAA,IAAA,KACvB,KAAK,IAAA,KAAS,eAAA,GACV,CAAC,CAAC,IAAA,CAAK,SAAS,EAAE,IAAA,EAAM,2BAA2B,IAAA,CAAK,SAAS,GAAG,QAAA,EAAU,IAAA,CAAK,MAAM,CAAU,IACnG;AAAC;AACP,GACF;AAEA,EAAA,MAAM,aAAA,GAAgB,KAAK,GAAA,EAAI;AAE/B,EAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAA2B;AACvD,IAAA,MAAM,WAAA,GAAc;AAAA,MAClB,SAAA,EAAW,IAAI,IAAA,CAAK,aAAA,GAAgB,KAAK,CAAA;AAAA,MACzC,UAAU,aAAA,CAAc,QAAA;AAAA,MACxB,YAAY,aAAA,CAAc;AAAA,KAC5B;AAEA,IAAA,IAAI,IAAA,CAAK,SAAS,eAAA,EAAiB;AACjC,MAAA,OAAO;AAAA,QACL,GAAG,WAAA;AAAA,QACH,EAAA,EAAI,CAAA,EAAG,UAAU,CAAA,WAAA,EAAc,KAAK,OAAO,CAAA,CAAA;AAAA,QAC3C,IAAA,EAAM,WAAA;AAAA,QACN,IAAA,EAAM,WAAA;AAAA,QACN,OAAA,EAAS;AAAA,UACP,MAAA,EAAQ,CAAA;AAAA,UACR,KAAA,EAAO;AAAA,YACL;AAAA,cACE,IAAA,EAAM,iBAAA;AAAA,cACN,cAAA,EAAgB;AAAA,gBACd,KAAA,EAAO,MAAA;AAAA,gBACP,YAAY,IAAA,CAAK,OAAA;AAAA,gBACjB,UAAU,IAAA,CAAK,IAAA;AAAA,gBACf,IAAA,EAAM,0BAAA,CAA2B,IAAA,CAAK,SAAS;AAAA;AACjD;AACF;AACF;AACF,OACF;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,CAAK,SAAS,sBAAA,EAAwB;AACxC,MAAA,MAAM,QAAA,GAAW,aAAA,CAAc,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAE/C,MAAA,OAAO,iBAAA,CAAkB,iCAAiC,EAAE,WAAA,EAAa,MAAM,UAAA,EAAY,QAAA,EAAU,CAAC,CAAA;AAAA,IACxG;AAEA,IAAA,OAAO;AAAA,MACL,GAAG,WAAA;AAAA,MACH,IAAI,IAAA,CAAK,EAAA;AAAA,MACT,IAAA,EAAM,WAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS;AAAA,QACP,MAAA,EAAQ,CAAA;AAAA,QACR,KAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAA,IAAA,MAAS,EAAE,IAAA,EAAM,MAAA,EAAiB,IAAA,EAAM,IAAA,CAAK,IAAA,EAAK,CAAE;AAAA;AAC9E,KACF;AAAA,EACF,CAAC,CAAA;AACH;AAEA,SAAS,uBAAuB,OAAA,EAA0D;AACxF,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,OAAA,EAAS,KAAK,CAAA,GAAI,OAAA,CAAQ,OAAA,CAAQ,KAAA,GAAQ,EAAC;AAE/E,EAAA,OAAO,KAAA,CAAM,OAAA;AAAA,IAAQ,CAAA,IAAA,KACnB,aAAA,CAAc,IAAI,CAAA,IAAK,KAAK,IAAA,KAAS,iBAAA,IAAqB,aAAA,CAAc,IAAA,CAAK,cAAc,CAAA,GACvF,CAAC,IAAA,CAAK,cAAc,IACpB;AAAC,GACP;AACF;AAEA,SAAS,6BAAA,CAA8B;AAAA,EACrC,sBAAsB,EAAC;AAAA,EACvB;AACF,CAAA,EAGyB;AACvB,EAAA,IAAI,CAAC,oBAAoB,MAAA,EAAQ;AAC/B,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,MAAM,eAAA,uBAAsB,GAAA,EAAY;AACxC,EAAA,MAAM,qBAAA,uBAA4B,GAAA,EAAY;AAE9C,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,KAAA,MAAW,cAAA,IAAkB,sBAAA,CAAuB,OAAO,CAAA,EAAG;AAC5D,MAAA,MAAM,aAAa,OAAO,cAAA,CAAe,UAAA,KAAe,QAAA,GAAW,eAAe,UAAA,GAAa,IAAA;AAC/F,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,OAAA,CAAQ,SAAS,WAAA,KAAgB,cAAA,CAAe,SAAS,MAAA,IAAa,cAAA,CAAe,WAAW,MAAA,CAAA,EAAY;AAC9G,QAAA,eAAA,CAAgB,IAAI,UAAU,CAAA;AAAA,MAChC;AACA,MAAA,IAAI,cAAA,CAAe,WAAW,MAAA,EAAW;AACvC,QAAA,qBAAA,CAAsB,IAAI,UAAU,CAAA;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,mBAAA,CAAoB,OAAO,CAAA,IAAA,KAAQ;AACxC,IAAA,IAAI,IAAA,CAAK,SAAS,eAAA,EAAiB;AACjC,MAAA,OAAO,CAAC,eAAA,CAAgB,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAAA,IAC1C;AAEA,IAAA,IAAI,IAAA,CAAK,SAAS,sBAAA,EAAwB;AACxC,MAAA,OAAO,CAAC,qBAAA,CAAsB,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAAA,IAChD;AAEA,IAAA,IAAI,IAAA,CAAK,SAAS,SAAA,EAAW;AAC3B,MAAA,IAAI,CAAC,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAA,IAAA,KAAQ,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,IAAK,wBAAA,CAAyB,QAAA,EAAU,IAAI,CAAA,EAAG;AAChG,QAAA,OAAO,KAAA;AAAA,MACT;AAEA,MAAA,OAAO,4BAAA,CAA6B,UAAU,IAAI,CAAA;AAAA,IACpD;AAEA,IAAA,OAAO,KAAA;AAAA,EACT,CAAC,CAAA;AACH;AAEA,SAAS,6BAAA,CACP,OAAA,EACA,UAAA,EACA,iBAAA,EACe;AACf,EAAA,KAAA,MAAW,cAAA,IAAkB,sBAAA,CAAuB,OAAO,CAAA,EAAG;AAC5D,IAAA,MAAM,aAAa,OAAO,cAAA,CAAe,UAAA,KAAe,QAAA,GAAW,eAAe,UAAA,GAAa,IAAA;AAC/F,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,WAAA,IAAe,cAAA,CAAe,SAAS,MAAA,EAAW;AACrE,MAAA,OAAO,UAAA;AAAA,IACT;AAEA,IAAA,IAAI,cAAA,CAAe,WAAW,MAAA,EAAW;AACvC,MAAA,OAAO,GAAG,UAAU,CAAA,OAAA,CAAA;AAAA,IACtB;AAAA,EACF;AAEA,EAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,WAAA,IAAe,WAAA,CAAY,OAAO,CAAA,EAAG;AACxD,IAAA,OAAO,kBAAkB,GAAA,CAAI,OAAA,CAAQ,EAAE,CAAA,GAAI,QAAQ,EAAA,GAAK,UAAA;AAAA,EAC1D;AAEA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,iCAAA,CAAkC;AAAA,EACzC,sBAAsB,EAAC;AAAA,EACvB,QAAA;AAAA,EACA;AACF,CAAA,EAIsB;AACpB,EAAA,IAAI,CAAC,oBAAoB,MAAA,EAAQ;AAC/B,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,MAAM,WAAA,GAAc,IAAI,GAAA,CAAI,mBAAA,CAAoB,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU,CAAC,IAAA,CAAK,EAAA,EAAI,KAAK,CAAC,CAAC,CAAA;AACtF,EAAA,MAAM,iBAAA,GAAoB,IAAI,GAAA,CAAI,WAAA,CAAY,MAAM,CAAA;AAEpD,EAAA,OAAO,QAAA,CACJ,GAAA,CAAI,CAAC,OAAA,EAAS,KAAA,MAAW;AAAA,IACxB,KAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA,EACE,WAAA,CAAY,GAAA,CAAI,6BAAA,CAA8B,OAAA,EAAS,YAAY,iBAAiB,CAAA,IAAK,EAAE,CAAA,IAC3F,MAAA,CAAO;AAAA,GACX,CAAE,EACD,IAAA,CAAK,CAAC,MAAM,KAAA,KAAU,IAAA,CAAK,cAAc,KAAA,CAAM,WAAA,IAAe,KAAK,KAAA,GAAQ,KAAA,CAAM,KAAK,CAAA,CACtF,GAAA,CAAI,CAAC,EAAE,OAAA,OAAc,OAAO,CAAA;AACjC;AAKA,eAAsB,qCAAA,CAAsC;AAAA,EAC1D,MAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAM+B;AAC7B,EAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,QAAA;AAC9B,EAAA,MAAM,mBAAmB,QAAA,EAAU,UAAA,EAAY,MAAA,GAAS,QAAA,CAAS,aAAa,EAAC;AAE/E,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,OAAO,gBAAA;AAAA,EACT;AAEA,EAAA,IAAI,gBAAA,CAAiB,WAAW,CAAA,EAAG;AACjC,IAAA,IAAI,qBAAqB,MAAA,EAAQ;AAC/B,MAAA,MAAM,oBAAoB,sCAAA,CAAuC;AAAA,QAC/D,WAAA,EAAa,mBAAA;AAAA,QACb,UAAA;AAAA,QACA;AAAA,OACD,CAAA;AAED,MAAA,OAAO,IAAA,IAAQ,CAAC,iBAAA,CAAkB,IAAA,CAAK,CAAA,OAAA,KAAW,OAAA,CAAQ,IAAA,KAAS,WAAA,IAAe,WAAA,CAAY,OAAO,CAAC,CAAA,GAClG;AAAA,QACE,GAAG,iBAAA;AAAA,QACH,8BAAA,CAA+B;AAAA,UAC7B,WAAW,IAAI,IAAA,CAAK,IAAI,IAAA,CAAK,kBAAkB,EAAA,CAAG,EAAE,CAAA,EAAG,SAAA,IAAa,KAAK,GAAA,EAAK,CAAA,CAAE,OAAA,KAAY,CAAC,CAAA;AAAA,UAC7F,UAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA,SACD;AAAA,OACH,GACA,iBAAA;AAAA,IACN;AAEA,IAAA,OAAO,CAAC,8BAAA,CAA+B,EAAE,YAAY,IAAA,EAAM,aAAA,EAAe,CAAC,CAAA;AAAA,EAC7E;AAEA,EAAA,MAAM,uBAAuB,6BAAA,CAA8B,EAAE,mBAAA,EAAqB,QAAA,EAAU,kBAAkB,CAAA;AAC9G,EAAA,MAAM,4BAA4B,IAAI,GAAA;AAAA,IACpC,oBAAA,CACG,MAAA,CAAO,CAAC,IAAA,KAAmE,IAAA,CAAK,IAAA,KAAS,SAAS,CAAA,CAClG,GAAA,CAAI,CAAA,IAAA,KAAQ,IAAA,CAAK,EAAE;AAAA,GACxB;AACA,EAAA,MAAM,sCAAA,GAAA,CAA0C,mBAAA,IAAuB,EAAC,EAAG,MAAA;AAAA,IACzE,CAAC,IAAA,KACC,IAAA,CAAK,SAAS,SAAA,IAAa,wBAAA,CAAyB,kBAAkB,IAAI;AAAA,GAC9E;AACA,EAAA,MAAM,+BAA+B,IAAI,GAAA;AAAA,IACvC,sCAAA,CAAuC,GAAA,CAAI,oBAAoB,CAAA,CAAE,OAAO,OAAO;AAAA,GACjF;AACA,EAAA,MAAM,uBAAuB,IAAI,GAAA;AAAA,IAAA,CAC9B,mBAAA,IAAuB,EAAC,EACtB,MAAA,CAAO,CAAC,IAAA,KAAmE,IAAA,CAAK,IAAA,KAAS,SAAS,CAAA,CAClG,MAAA,CAAO,CAAA,IAAA,KAAQ,yBAAA,CAA0B,IAAI,IAAA,CAAK,EAAE,CAAA,IAAK,sCAAA,CAAuC,QAAA,CAAS,IAAI,CAAC,CAAA,CAC9G,GAAA,CAAI,oBAAoB,CAAA,CACxB,MAAA,CAAO,OAAO;AAAA,GACnB;AACA,EAAA,MAAM,YAAA,GAAe,oBAAA,CAAqB,IAAA,GACtC,gBAAA,CAAiB,GAAA;AAAA,IAAI,aACnB,gCAAA,CAAiC,EAAE,oBAAA,EAAsB,OAAA,EAAS,8BAA8B;AAAA,GAClG,GACA,gBAAA;AACJ,EAAA,MAAM,4BAA4B,sCAAA,CAAuC;AAAA,IACvE,kBAAA,EAAoB,uBAAuB,EAAC;AAAA,IAC5C,WAAA,EAAa,oBAAA;AAAA,IACb,UAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,mBAAmB,iCAAA,CAAkC;AAAA,IACzD,mBAAA;AAAA,IACA,QAAA,EAAU,CAAC,GAAG,YAAA,EAAc,GAAG,yBAAyB,CAAA;AAAA,IACxD;AAAA,GACD,CAAA;AAED,EAAA,IAAI,IAAA,IAAQ,CAAC,gBAAA,CAAiB,IAAA,CAAK,CAAA,OAAA,KAAW,OAAA,CAAQ,IAAA,KAAS,WAAA,IAAe,WAAA,CAAY,OAAO,CAAC,CAAA,EAAG;AACnG,IAAA,OAAO,CAAC,GAAG,gBAAA,EAAkB,8BAAA,CAA+B,EAAE,UAAA,EAAY,IAAA,EAAM,aAAA,EAAe,CAAC,CAAA;AAAA,EAClG;AAEA,EAAA,OAAO,gBAAA;AACT;AAUA,eAAsB,yBAAA,CAA0B;AAAA,EAC9C,WAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAMkB;AAChB,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,MAAM,IAAI,aAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,+DAA+D,CAAA;AAAA,EACzG;AAEA,EAAA,MAAM,kBAAA,GAAwC,QAAA,CAAS,GAAA,CAAI,CAAA,OAAA,MAAY;AAAA,IACrE,GAAG,OAAA;AAAA,IACH,QAAA,EAAU,OAAA,CAAQ,QAAA,IAAY,aAAA,CAAc,QAAA;AAAA,IAC5C,UAAA,EAAY,OAAA,CAAQ,UAAA,IAAc,aAAA,CAAc;AAAA,GAClD,CAAE,CAAA;AAEF,EAAA,MAAM,kBAAA,GAAqB,CAAC,GAAG,kBAAkB,CAAA,CAAE,GAAA,CAAI,CAAA,OAAA,KAAW,OAAA,CAAQ,IAAI,CAAA,CAAE,WAAA,CAAY,WAAW,CAAA;AACvG,EAAA,MAAM,mBAAA,GACJ,CAAC,GAAG,kBAAkB,CAAA,CACnB,GAAA,CAAI,CAAC,OAAA,EAAS,KAAA,MAAW,EAAE,KAAA,EAAO,OAAA,EAAQ,CAAE,CAAA,CAC5C,OAAA,EAAQ,CACR,IAAA,CAAK,CAAC,EAAE,OAAA,EAAQ,KAAM,OAAA,CAAQ,IAAA,KAAS,WAAA,IAAe,WAAA,CAAY,OAAO,CAAC,CAAA,EAAG,KAAA,IAAS,kBAAA;AAC3F,EAAA,MAAM,oBAAA,GACJ,uBAAuB,CAAA,GACnB;AAAA,IACE,GAAG,mBAAmB,mBAAmB,CAAA;AAAA,IACzC,EAAA,EAAI;AAAA,GACN,GACC;AAAA,IACC,EAAA,EAAI,UAAA;AAAA,IACJ,IAAA,EAAM,WAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,SAAA,EAAW,IAAI,IAAA,CAAK,QAAA,CAAS,WAAA,GAAc,SAAS,WAAA,GAAc,GAAA,GAAO,IAAA,CAAK,GAAA,EAAK,CAAA;AAAA,IACnF,UAAU,aAAA,CAAc,QAAA;AAAA,IACxB,YAAY,aAAA,CAAc,UAAA;AAAA,IAC1B,OAAA,EAAS;AAAA,MACP,MAAA,EAAQ,CAAA;AAAA,MACR,OAAO;AAAC;AACV,GACF;AAEN,EAAA,IAAI,uBAAuB,CAAA,EAAG;AAC5B,IAAA,kBAAA,CAAmB,mBAAmB,CAAA,GAAI,oBAAA;AAAA,EAC5C,CAAA,MAAO;AACL,IAAA,kBAAA,CAAmB,KAAK,oBAAoB,CAAA;AAAA,EAC9C;AACA,EAAA,MAAM,kBAAA,GAAqB,mBAAA,IAAuB,CAAA,GAAI,mBAAA,GAAsB,mBAAmB,MAAA,GAAS,CAAA;AAExG,EAAA,MAAM,8BAA8B,kBAAA,CAAmB,OAAA;AAAA,IAAQ,CAAC,OAAA,EAAS,KAAA,KACvE,UAAU,kBAAA,IAAsB,uBAAA,CAAwB,OAAO,CAAA,IAAK,QAAA,CAAS,KAAK,CAAA,EAAG,KACjF,CAAC,QAAA,CAAS,KAAK,CAAA,CAAG,EAAE,IACpB;AAAC,GACP;AACA,EAAA,MAAM,kBACJ,mBAAA,IAAuB,CAAA,IAAK,SAAS,mBAAmB,CAAA,EAAG,MAAM,QAAA,CAAS,mBAAmB,CAAA,EAAG,EAAA,KAAO,aACnG,CAAC,QAAA,CAAS,mBAAmB,CAAA,CAAG,EAAE,IAClC,EAAC;AACP,EAAA,MAAM,iBAAiB,kBAAA,CAAmB,MAAA;AAAA,IACxC,CAAC,OAAA,EAAS,KAAA,KAAU,UAAU,kBAAA,IAAsB,CAAC,wBAAwB,OAAO;AAAA,GACtF;AAEA,EAAA,MAAM,aAAA,GAAgB,gCAAgC,oBAAA,EAAsB;AAAA,IAC1E,GAAG,QAAA;AAAA,IACH,UAAA,EAAY,cAAA,CAAe,GAAA,CAAI,CAAA,OAAA,KAAW,QAAQ,EAAE;AAAA,GACrD,CAAA;AAED,EAAA,IAAI,uBAAuB,CAAA,EAAG;AAC5B,IAAA,kBAAA,CAAmB,mBAAmB,CAAA,GAAI,aAAA;AAAA,EAC5C,CAAA,MAAO;AACL,IAAA,kBAAA,CAAmB,kBAAA,CAAmB,MAAA,GAAS,CAAC,CAAA,GAAI,aAAA;AAAA,EACtD;AAEA,EAAA,MAAM,gBAAgB,kBAAA,CAAmB,MAAA;AAAA,IACvC,CAAC,OAAA,EAAS,KAAA,KAAU,UAAU,kBAAA,IAAsB,CAAC,wBAAwB,OAAO;AAAA,GACtF;AAEA,EAAA,MAAM,WAAA,CAAY,YAAA,CAAa,EAAE,QAAA,EAAU,eAAe,CAAA;AAE1D,EAAA,MAAM,gBAAA,GAAmB,CAAC,mBAAG,IAAI,GAAA,CAAI,CAAC,GAAG,eAAA,EAAiB,GAAG,2BAA2B,CAAC,CAAC,CAAA;AAC1F,EAAA,IAAI,gBAAA,CAAiB,SAAS,CAAA,EAAG;AAC/B,IAAA,MAAM,WAAA,CAAY,eAAe,gBAAgB,CAAA;AAAA,EACnD;AACF;AAKA,eAAsB,wBAAA,CAAyB;AAAA,EAC7C;AACF,CAAA,EAEkB;AAChB,EAAA,MAAM,UAAA,GACJ,kBAAA,CAAmB,QAAA,CAAS,MAAA,GAAS,IACjC,kBAAA,CAAmB,QAAA,CAAS,GAAA,CAAI,CAAA,OAAA,KAAW,QAAQ,EAAE,CAAA,GACrD,CAAC,kBAAA,CAAmB,QAAQ,EAAE,CAAA;AAEpC,EAAA,MAAM,kBAAA,CAAmB,WAAA,CAAY,cAAA,CAAe,UAAU,CAAA;AAChE","file":"chunk-SPNWC52V.js","sourcesContent":["import type { Agent, MastraDBMessage } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { StorageThreadType } from '@mastra/core/memory';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { MemoryStorage } from '@mastra/core/storage';\nimport { HTTPException } from '../http-exception';\nimport type {\n ResponseObject,\n ResponseOutputItem,\n ResponseTextConfig,\n ResponseTool,\n ResponseUsage,\n} from '../schemas/responses';\nimport { getEffectiveResourceId, validateThreadOwnership } from './utils';\n\nexport type ThreadExecutionContext = {\n threadId: string;\n resourceId: string;\n};\n\nexport type UsageLike = {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n promptTokens?: number;\n completionTokens?: number;\n} | null;\n\nexport type ProviderMetadataLike = Record<string, Record<string, unknown> | undefined> | undefined;\n\nexport type ResponseTurnRecordMetadata = {\n agentId: string;\n model: string;\n createdAt: number;\n completedAt: number | null;\n status: ResponseObject['status'];\n usage: ResponseUsage | null;\n instructions?: string;\n text?: ResponseTextConfig;\n previousResponseId?: string;\n providerOptions?: ProviderMetadataLike;\n tools: ResponseTool[];\n store: boolean;\n messageIds: string[];\n outputItems?: ResponseOutputItem[];\n};\n\nexport type ResponseTurnRecord = {\n metadata: ResponseTurnRecordMetadata;\n message: MastraDBMessage;\n messages: MastraDBMessage[];\n thread: StorageThreadType;\n memoryStore: MemoryStorage;\n};\n\ntype ResponseResultLike = {\n response?:\n | Promise<{\n dbMessages?: MastraDBMessage[];\n }>\n | {\n dbMessages?: MastraDBMessage[];\n };\n};\n\ntype SyntheticToolResultMessage = Omit<MastraDBMessage, 'role'> & { role: 'tool' };\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Resolves the backing memory store for a specific agent.\n *\n * This follows the normal agent-memory path. `agent.getMemory()` injects Mastra\n * root storage when the memory has no own storage, so this naturally prefers\n * agent storage first and falls back to Mastra storage through the same codepath.\n */\nexport async function getAgentMemoryStore({\n agent,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n requestContext: RequestContext;\n}): Promise<MemoryStorage | null> {\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n return null;\n }\n\n try {\n return (await memory.storage.getStore('memory')) ?? null;\n } catch {\n return null;\n }\n}\n\n/**\n * Reads the response-turn record metadata attached to a stored assistant message.\n */\nfunction readResponseTurnRecordMetadata(message: MastraDBMessage): ResponseTurnRecordMetadata | null {\n const mastraMetadata = isPlainObject(message.content?.metadata?.mastra) ? message.content.metadata.mastra : null;\n const responseMetadata = mastraMetadata && isPlainObject(mastraMetadata.response) ? mastraMetadata.response : null;\n\n if (\n !responseMetadata ||\n typeof responseMetadata.agentId !== 'string' ||\n typeof responseMetadata.model !== 'string' ||\n typeof responseMetadata.createdAt !== 'number' ||\n (responseMetadata.completedAt !== null && typeof responseMetadata.completedAt !== 'number') ||\n (responseMetadata.instructions !== undefined && typeof responseMetadata.instructions !== 'string') ||\n (responseMetadata.text !== undefined &&\n (!isPlainObject(responseMetadata.text) || !isPlainObject(responseMetadata.text.format))) ||\n (responseMetadata.previousResponseId !== undefined && typeof responseMetadata.previousResponseId !== 'string') ||\n !Array.isArray(responseMetadata.tools) ||\n typeof responseMetadata.store !== 'boolean' ||\n !Array.isArray(responseMetadata.messageIds) ||\n (responseMetadata.outputItems !== undefined && !Array.isArray(responseMetadata.outputItems))\n ) {\n return null;\n }\n\n return {\n agentId: responseMetadata.agentId,\n model: responseMetadata.model,\n createdAt: responseMetadata.createdAt,\n completedAt: responseMetadata.completedAt,\n status: responseMetadata.status === 'completed' ? 'completed' : 'incomplete',\n usage: responseMetadata.usage as ResponseUsage | null,\n instructions: responseMetadata.instructions,\n text: responseMetadata.text as ResponseTextConfig | undefined,\n previousResponseId: responseMetadata.previousResponseId,\n providerOptions: responseMetadata.providerOptions as ProviderMetadataLike,\n tools: responseMetadata.tools as ResponseTool[],\n store: responseMetadata.store,\n messageIds: responseMetadata.messageIds.filter((value): value is string => typeof value === 'string'),\n outputItems: responseMetadata.outputItems as ResponseOutputItem[] | undefined,\n };\n}\n\n/**\n * Writes response-turn record metadata onto a persisted assistant message.\n */\nfunction writeResponseTurnRecordMetadata(\n message: MastraDBMessage,\n metadata: ResponseTurnRecordMetadata,\n): MastraDBMessage {\n const contentMetadata = isPlainObject(message.content?.metadata) ? message.content.metadata : {};\n const mastraMetadata = isPlainObject(contentMetadata.mastra) ? contentMetadata.mastra : {};\n\n return {\n ...message,\n content: {\n ...message.content,\n metadata: {\n ...contentMetadata,\n mastra: {\n ...mastraMetadata,\n response: metadata,\n },\n },\n },\n };\n}\n\n/**\n * Looks up a stored response-turn record by response id.\n *\n * Response ids are assistant message ids, so this reconstructs the record by\n * loading that persisted assistant message, reading its response metadata, then\n * reloading the full set of stored turn messages referenced by the metadata.\n */\nexport async function findResponseTurnRecord({\n agent,\n responseId,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n const memoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!memoryStore) {\n return null;\n }\n\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const { messages: matchedMessages } = await memoryStore.listMessagesById({ messageIds: [responseId] });\n const message = matchedMessages[0];\n if (!message || message.role !== 'assistant') {\n return null;\n }\n\n const metadata = readResponseTurnRecordMetadata(message);\n if (!metadata || metadata.agentId !== agent.id) {\n return null;\n }\n\n const thread = message.threadId ? await memoryStore.getThreadById({ threadId: message.threadId }) : null;\n if (!thread) {\n return null;\n }\n\n await validateThreadOwnership(thread, effectiveResourceId);\n const messageIds = metadata.messageIds.length > 0 ? metadata.messageIds : [message.id];\n const { messages: responseMessages } = await memoryStore.listMessagesById({ messageIds });\n const messagesById = new Map(responseMessages.map(storedMessage => [storedMessage.id, storedMessage] as const));\n const orderedMessages = messageIds\n .map(messageId => messagesById.get(messageId))\n .filter((storedMessage): storedMessage is MastraDBMessage => Boolean(storedMessage));\n\n return { metadata, message, messages: orderedMessages, thread, memoryStore };\n}\n\nexport async function findResponseTurnRecordAcrossAgents({\n mastra,\n responseId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n if (!mastra) {\n return null;\n }\n\n const agents = Object.values(mastra.listAgents()) as Agent<any, any, any, any>[];\n for (const agent of agents) {\n const match = await findResponseTurnRecord({ agent, responseId, requestContext });\n if (match) {\n return match;\n }\n }\n\n return null;\n}\n\nexport type ConversationThreadRecord = {\n thread: StorageThreadType;\n memoryStore: MemoryStorage;\n};\n\nexport async function findConversationThreadAcrossAgents({\n mastra,\n conversationId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n conversationId: string;\n requestContext: RequestContext;\n}): Promise<ConversationThreadRecord | null> {\n if (!mastra) {\n return null;\n }\n\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const agents = Object.values(mastra.listAgents()) as Agent<any, any, any, any>[];\n\n for (const agent of agents) {\n const memoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!memoryStore) {\n continue;\n }\n\n const thread = await memoryStore.getThreadById({ threadId: conversationId });\n if (!thread) {\n continue;\n }\n\n await validateThreadOwnership(thread, effectiveResourceId);\n return { thread, memoryStore };\n }\n\n return null;\n}\n\n/**\n * Creates a synthetic assistant message for responses that did not emit any\n * persisted DB messages but still need a durable response-turn record.\n */\nfunction createSyntheticResponseMessage({\n createdAt,\n responseId,\n text,\n threadContext,\n}: {\n createdAt?: Date;\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext;\n}): MastraDBMessage {\n return {\n id: responseId,\n role: 'assistant',\n type: 'text',\n createdAt: createdAt ?? new Date(),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: text ? [{ type: 'text', text }] : [],\n },\n };\n}\n\nfunction hasTextPart(message: MastraDBMessage): boolean {\n return Boolean(\n message.content?.parts?.some(\n part => isPlainObject(part) && part.type === 'text' && typeof part.text === 'string' && part.text.length > 0,\n ),\n );\n}\n\nfunction isEmptyAssistantMessage(message: MastraDBMessage): boolean {\n return message.role === 'assistant' && Array.isArray(message.content?.parts) && message.content.parts.length === 0;\n}\n\nfunction hasToolInvocationPart(message: MastraDBMessage): boolean {\n return Boolean(\n message.content?.parts?.some(\n part => isPlainObject(part) && part.type === 'tool-invocation' && isPlainObject(part.toolInvocation),\n ),\n );\n}\n\nfunction getMessageText(message: MastraDBMessage): string {\n return (\n message.content?.parts\n ?.flatMap(part =>\n isPlainObject(part) && part.type === 'text' && typeof part.text === 'string' ? [part.text] : [],\n )\n .join('') ?? ''\n );\n}\n\nfunction getOutputMessageText(item: Extract<ResponseOutputItem, { type: 'message' }>): string {\n return item.content.map(part => part.text).join('');\n}\n\nfunction normalizeFallbackComparisonText(text: string): string {\n return text.trim();\n}\n\nfunction matchesFallbackText(messageText: string, fallbackText: string): boolean {\n return (\n messageText === fallbackText ||\n normalizeFallbackComparisonText(messageText) === normalizeFallbackComparisonText(fallbackText)\n );\n}\n\nfunction hasMatchingAssistantText(\n messages: MastraDBMessage[],\n item: Extract<ResponseOutputItem, { type: 'message' }>,\n): boolean {\n const fallbackText = getOutputMessageText(item);\n\n return messages.some(\n message =>\n message.role === 'assistant' &&\n hasTextPart(message) &&\n matchesFallbackText(getMessageText(message), fallbackText),\n );\n}\n\nfunction shouldReplaceAssistantText(messageText: string, fallbackText: string): boolean {\n const normalizedMessageText = normalizeFallbackComparisonText(messageText);\n const normalizedFallbackText = normalizeFallbackComparisonText(fallbackText);\n\n return (\n normalizedFallbackText !== normalizedMessageText &&\n (fallbackText.startsWith(messageText) || normalizedFallbackText.startsWith(normalizedMessageText))\n );\n}\n\nfunction getAssistantMessageTexts(messages: MastraDBMessage[]): string[] {\n return messages.flatMap(message =>\n message.role === 'assistant' && hasTextPart(message) ? [getMessageText(message)] : [],\n );\n}\n\nfunction shouldAddFallbackMessageText(\n messages: MastraDBMessage[],\n item: Extract<ResponseOutputItem, { type: 'message' }>,\n): boolean {\n const assistantTexts = getAssistantMessageTexts(messages);\n if (assistantTexts.length === 0) {\n return true;\n }\n\n const fallbackText = getOutputMessageText(item);\n return assistantTexts.every(messageText => shouldReplaceAssistantText(messageText, fallbackText));\n}\n\nfunction shouldReplaceAssistantTextWithFallback({\n fallbackMessageTexts,\n message,\n textOnlyFallbackMessageTexts,\n}: {\n fallbackMessageTexts: Set<string>;\n message: MastraDBMessage;\n textOnlyFallbackMessageTexts: Set<string>;\n}): boolean {\n if (message.role !== 'assistant' || !hasTextPart(message)) {\n return false;\n }\n\n const messageText = getMessageText(message);\n if (!messageText) {\n return false;\n }\n\n const comparisonTexts = hasToolInvocationPart(message) ? fallbackMessageTexts : textOnlyFallbackMessageTexts;\n\n return [...comparisonTexts].some(fallbackText => shouldReplaceAssistantText(messageText, fallbackText));\n}\n\nfunction replaceAssistantTextWithFallback({\n fallbackMessageTexts,\n message,\n textOnlyFallbackMessageTexts,\n}: {\n fallbackMessageTexts: Set<string>;\n message: MastraDBMessage;\n textOnlyFallbackMessageTexts: Set<string>;\n}): MastraDBMessage {\n if (!shouldReplaceAssistantTextWithFallback({ fallbackMessageTexts, message, textOnlyFallbackMessageTexts })) {\n return message;\n }\n\n const parts = message.content?.parts ?? [];\n const remainingParts = parts.filter(part => !(isPlainObject(part) && part.type === 'text'));\n\n return {\n ...message,\n content: {\n ...message.content,\n parts: remainingParts,\n },\n };\n}\n\nfunction parseFunctionCallArguments(value: string): unknown {\n try {\n return JSON.parse(value);\n } catch {\n return { __raw: value };\n }\n}\n\nfunction createSyntheticToolResultMessage({\n baseMessage,\n item,\n responseId,\n toolCall,\n}: {\n baseMessage: Pick<MastraDBMessage, 'createdAt' | 'threadId' | 'resourceId'>;\n item: Extract<ResponseOutputItem, { type: 'function_call_output' }>;\n responseId: string;\n toolCall?: { args: unknown; toolName: string };\n}): SyntheticToolResultMessage {\n return {\n ...baseMessage,\n id: `${responseId}:tool-result:${item.call_id}`,\n role: 'tool',\n type: 'tool-result',\n content: {\n format: 2 as const,\n parts: [\n {\n type: 'tool-invocation',\n toolInvocation: {\n state: 'result',\n toolCallId: item.call_id,\n toolName: toolCall?.toolName ?? 'unknown',\n args: toolCall?.args ?? {},\n result: item.output,\n },\n },\n ],\n },\n };\n}\n\nfunction toMastraDBMessage(message: SyntheticToolResultMessage): MastraDBMessage {\n // MastraDBMessage does not yet type persisted v2 tool-role messages, but\n // storage and response mapping already handle them at runtime.\n return message as unknown as MastraDBMessage;\n}\n\nfunction createSyntheticMessagesFromOutputItems({\n contextOutputItems,\n outputItems,\n responseId,\n threadContext,\n}: {\n contextOutputItems?: ResponseOutputItem[];\n outputItems: ResponseOutputItem[];\n responseId: string;\n threadContext: ThreadExecutionContext;\n}): MastraDBMessage[] {\n const toolContextItems = contextOutputItems ?? outputItems;\n const toolCallsById = new Map(\n toolContextItems.flatMap(item =>\n item.type === 'function_call'\n ? [[item.call_id, { args: parseFunctionCallArguments(item.arguments), toolName: item.name }] as const]\n : [],\n ),\n );\n\n const baseCreatedAt = Date.now();\n\n return outputItems.map((item, index): MastraDBMessage => {\n const baseMessage = {\n createdAt: new Date(baseCreatedAt + index),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n };\n\n if (item.type === 'function_call') {\n return {\n ...baseMessage,\n id: `${responseId}:tool-call:${item.call_id}`,\n role: 'assistant',\n type: 'tool-call',\n content: {\n format: 2 as const,\n parts: [\n {\n type: 'tool-invocation',\n toolInvocation: {\n state: 'call',\n toolCallId: item.call_id,\n toolName: item.name,\n args: parseFunctionCallArguments(item.arguments),\n },\n },\n ],\n },\n };\n }\n\n if (item.type === 'function_call_output') {\n const toolCall = toolCallsById.get(item.call_id);\n\n return toMastraDBMessage(createSyntheticToolResultMessage({ baseMessage, item, responseId, toolCall }));\n }\n\n return {\n ...baseMessage,\n id: item.id,\n role: 'assistant',\n type: 'text',\n content: {\n format: 2 as const,\n parts: item.content.map(part => ({ type: 'text' as const, text: part.text })),\n },\n };\n });\n}\n\nfunction getToolInvocationParts(message: MastraDBMessage): Array<Record<string, unknown>> {\n const parts = Array.isArray(message.content?.parts) ? message.content.parts : [];\n\n return parts.flatMap(part =>\n isPlainObject(part) && part.type === 'tool-invocation' && isPlainObject(part.toolInvocation)\n ? [part.toolInvocation]\n : [],\n );\n}\n\nfunction getMissingFallbackOutputItems({\n fallbackOutputItems = [],\n messages,\n}: {\n fallbackOutputItems?: ResponseObject['output'];\n messages: MastraDBMessage[];\n}): ResponseOutputItem[] {\n if (!fallbackOutputItems.length) {\n return [];\n }\n\n const existingCallIds = new Set<string>();\n const existingResultCallIds = new Set<string>();\n\n for (const message of messages) {\n for (const toolInvocation of getToolInvocationParts(message)) {\n const toolCallId = typeof toolInvocation.toolCallId === 'string' ? toolInvocation.toolCallId : null;\n if (!toolCallId) {\n continue;\n }\n\n if (message.role === 'assistant' && (toolInvocation.args !== undefined || toolInvocation.result === undefined)) {\n existingCallIds.add(toolCallId);\n }\n if (toolInvocation.result !== undefined) {\n existingResultCallIds.add(toolCallId);\n }\n }\n }\n\n return fallbackOutputItems.filter(item => {\n if (item.type === 'function_call') {\n return !existingCallIds.has(item.call_id);\n }\n\n if (item.type === 'function_call_output') {\n return !existingResultCallIds.has(item.call_id);\n }\n\n if (item.type === 'message') {\n if (!item.content.some(part => part.text.length > 0) || hasMatchingAssistantText(messages, item)) {\n return false;\n }\n\n return shouldAddFallbackMessageText(messages, item);\n }\n\n return false;\n });\n}\n\nfunction getFallbackOutputIdForMessage(\n message: MastraDBMessage,\n responseId: string,\n fallbackOutputIds: Set<string>,\n): string | null {\n for (const toolInvocation of getToolInvocationParts(message)) {\n const toolCallId = typeof toolInvocation.toolCallId === 'string' ? toolInvocation.toolCallId : null;\n if (!toolCallId) {\n continue;\n }\n\n if (message.role === 'assistant' && toolInvocation.args !== undefined) {\n return toolCallId;\n }\n\n if (toolInvocation.result !== undefined) {\n return `${toolCallId}:output`;\n }\n }\n\n if (message.role === 'assistant' && hasTextPart(message)) {\n return fallbackOutputIds.has(message.id) ? message.id : responseId;\n }\n\n return null;\n}\n\nfunction sortMessagesByFallbackOutputOrder({\n fallbackOutputItems = [],\n messages,\n responseId,\n}: {\n fallbackOutputItems?: ResponseObject['output'];\n messages: MastraDBMessage[];\n responseId: string;\n}): MastraDBMessage[] {\n if (!fallbackOutputItems.length) {\n return messages;\n }\n\n const outputOrder = new Map(fallbackOutputItems.map((item, index) => [item.id, index]));\n const fallbackOutputIds = new Set(outputOrder.keys());\n\n return messages\n .map((message, index) => ({\n index,\n message,\n outputIndex:\n outputOrder.get(getFallbackOutputIdForMessage(message, responseId, fallbackOutputIds) ?? '') ??\n Number.MAX_SAFE_INTEGER,\n }))\n .sort((left, right) => left.outputIndex - right.outputIndex || left.index - right.index)\n .map(({ message }) => message);\n}\n\n/**\n * Resolves the Mastra messages that belong to the response turn being stored.\n */\nexport async function resolveResponseTurnMessagesForStorage({\n result,\n responseId,\n text,\n threadContext,\n fallbackOutputItems,\n}: {\n result: ResponseResultLike;\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext | null;\n fallbackOutputItems?: ResponseObject['output'];\n}): Promise<MastraDBMessage[]> {\n const response = await result.response;\n const responseMessages = response?.dbMessages?.length ? response.dbMessages : [];\n\n if (!threadContext) {\n return responseMessages;\n }\n\n if (responseMessages.length === 0) {\n if (fallbackOutputItems?.length) {\n const syntheticMessages = createSyntheticMessagesFromOutputItems({\n outputItems: fallbackOutputItems,\n responseId,\n threadContext,\n });\n\n return text && !syntheticMessages.some(message => message.role === 'assistant' && hasTextPart(message))\n ? [\n ...syntheticMessages,\n createSyntheticResponseMessage({\n createdAt: new Date(new Date(syntheticMessages.at(-1)?.createdAt ?? Date.now()).getTime() + 1),\n responseId,\n text,\n threadContext,\n }),\n ]\n : syntheticMessages;\n }\n\n return [createSyntheticResponseMessage({ responseId, text, threadContext })];\n }\n\n const missingFallbackItems = getMissingFallbackOutputItems({ fallbackOutputItems, messages: responseMessages });\n const missingFallbackMessageIds = new Set(\n missingFallbackItems\n .filter((item): item is Extract<ResponseOutputItem, { type: 'message' }> => item.type === 'message')\n .map(item => item.id),\n );\n const fallbackItemsWithMatchingAssistantText = (fallbackOutputItems ?? []).filter(\n (item): item is Extract<ResponseOutputItem, { type: 'message' }> =>\n item.type === 'message' && hasMatchingAssistantText(responseMessages, item),\n );\n const textOnlyFallbackMessageTexts = new Set(\n fallbackItemsWithMatchingAssistantText.map(getOutputMessageText).filter(Boolean),\n );\n const fallbackMessageTexts = new Set(\n (fallbackOutputItems ?? [])\n .filter((item): item is Extract<ResponseOutputItem, { type: 'message' }> => item.type === 'message')\n .filter(item => missingFallbackMessageIds.has(item.id) || fallbackItemsWithMatchingAssistantText.includes(item))\n .map(getOutputMessageText)\n .filter(Boolean),\n );\n const baseMessages = fallbackMessageTexts.size\n ? responseMessages.map(message =>\n replaceAssistantTextWithFallback({ fallbackMessageTexts, message, textOnlyFallbackMessageTexts }),\n )\n : responseMessages;\n const syntheticFallbackMessages = createSyntheticMessagesFromOutputItems({\n contextOutputItems: fallbackOutputItems ?? [],\n outputItems: missingFallbackItems,\n responseId,\n threadContext,\n });\n const resolvedMessages = sortMessagesByFallbackOutputOrder({\n fallbackOutputItems,\n messages: [...baseMessages, ...syntheticFallbackMessages],\n responseId,\n });\n\n if (text && !resolvedMessages.some(message => message.role === 'assistant' && hasTextPart(message))) {\n return [...resolvedMessages, createSyntheticResponseMessage({ responseId, text, threadContext })];\n }\n\n return resolvedMessages;\n}\n\n/**\n * Persists a response-turn record by anchoring it on the final assistant\n * message in the stored turn.\n *\n * The response id becomes that assistant message id, and the response-specific\n * metadata is written onto the assistant message so later retrieval can rebuild\n * the Responses object from thread-backed storage.\n */\nexport async function persistResponseTurnRecord({\n memoryStore,\n responseId,\n metadata,\n threadContext,\n messages,\n}: {\n memoryStore: MemoryStorage | null;\n responseId: string;\n metadata: ResponseTurnRecordMetadata;\n threadContext: ThreadExecutionContext;\n messages: MastraDBMessage[];\n}): Promise<void> {\n if (!memoryStore) {\n throw new HTTPException(500, { message: 'Memory storage was not available while storing the response' });\n }\n\n const normalizedMessages: MastraDBMessage[] = messages.map(message => ({\n ...message,\n threadId: message.threadId ?? threadContext.threadId,\n resourceId: message.resourceId ?? threadContext.resourceId,\n }));\n\n const lastAssistantIndex = [...normalizedMessages].map(message => message.role).lastIndexOf('assistant');\n const responseAnchorIndex =\n [...normalizedMessages]\n .map((message, index) => ({ index, message }))\n .reverse()\n .find(({ message }) => message.role === 'assistant' && hasTextPart(message))?.index ?? lastAssistantIndex;\n const lastAssistantMessage =\n responseAnchorIndex >= 0\n ? {\n ...normalizedMessages[responseAnchorIndex]!,\n id: responseId,\n }\n : ({\n id: responseId,\n role: 'assistant' as const,\n type: 'text' as const,\n createdAt: new Date(metadata.completedAt ? metadata.completedAt * 1000 : Date.now()),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: [],\n },\n } satisfies MastraDBMessage);\n\n if (responseAnchorIndex >= 0) {\n normalizedMessages[responseAnchorIndex] = lastAssistantMessage;\n } else {\n normalizedMessages.push(lastAssistantMessage);\n }\n const storedMessageIndex = responseAnchorIndex >= 0 ? responseAnchorIndex : normalizedMessages.length - 1;\n\n const droppedSupersededMessageIds = normalizedMessages.flatMap((message, index) =>\n index !== storedMessageIndex && isEmptyAssistantMessage(message) && messages[index]?.id\n ? [messages[index]!.id]\n : [],\n );\n const staleMessageIds =\n responseAnchorIndex >= 0 && messages[responseAnchorIndex]?.id && messages[responseAnchorIndex]?.id !== responseId\n ? [messages[responseAnchorIndex]!.id]\n : [];\n const messagesToSave = normalizedMessages.filter(\n (message, index) => index === storedMessageIndex || !isEmptyAssistantMessage(message),\n );\n\n const storedMessage = writeResponseTurnRecordMetadata(lastAssistantMessage, {\n ...metadata,\n messageIds: messagesToSave.map(message => message.id),\n });\n\n if (responseAnchorIndex >= 0) {\n normalizedMessages[responseAnchorIndex] = storedMessage;\n } else {\n normalizedMessages[normalizedMessages.length - 1] = storedMessage;\n }\n\n const savedMessages = normalizedMessages.filter(\n (message, index) => index === storedMessageIndex || !isEmptyAssistantMessage(message),\n );\n\n await memoryStore.saveMessages({ messages: savedMessages });\n\n const deleteMessageIds = [...new Set([...staleMessageIds, ...droppedSupersededMessageIds])];\n if (deleteMessageIds.length > 0) {\n await memoryStore.deleteMessages(deleteMessageIds);\n }\n}\n\n/**\n * Removes all persisted messages for a stored response-turn record.\n */\nexport async function deleteResponseTurnRecord({\n responseTurnRecord,\n}: {\n responseTurnRecord: ResponseTurnRecord;\n}): Promise<void> {\n const messageIds =\n responseTurnRecord.messages.length > 0\n ? responseTurnRecord.messages.map(message => message.id)\n : [responseTurnRecord.message.id];\n\n await responseTurnRecord.memoryStore.deleteMessages(messageIds);\n}\n"]}
@@ -1,8 +1,8 @@
1
- import { stripFavoriteFields, prepareFavoritesEnrichment, enrichOrStripFavorites } from './chunk-T2GYY7P5.js';
2
- import { isBuilderFeatureEnabled } from './chunk-TQ5KIKVK.js';
3
- import { resolveAuthorFilter, getCallerAuthorId, matchesAuthorFilter, assertReadAccess, assertWriteAccess } from './chunk-3TTDIOEU.js';
4
1
  import { listStoredSkillsResponseSchema, listStoredSkillsQuerySchema, getStoredSkillResponseSchema, storedSkillIdPathParams, createStoredSkillResponseSchema, createStoredSkillBodySchema, updateStoredSkillResponseSchema, updateStoredSkillBodySchema, deleteStoredSkillResponseSchema, publishStoredSkillResponseSchema, publishStoredSkillBodySchema } from './chunk-FBI32AWY.js';
5
- import { getStoredResourceScope, scopeStoredResourceMetadata, assertStoredResourceScope, toSlug } from './chunk-RCRKB2TG.js';
2
+ import { stripFavoriteFields, prepareFavoritesEnrichment, enrichOrStripFavorites } from './chunk-YYJ2TLFP.js';
3
+ import { isBuilderFeatureEnabled } from './chunk-HPMLQ4AV.js';
4
+ import { resolveAuthorFilter, getCallerAuthorId, matchesAuthorFilter, assertReadAccess, assertWriteAccess } from './chunk-ETR4XOVD.js';
5
+ import { getStoredResourceScope, scopeStoredResourceMetadata, assertStoredResourceScope, toSlug } from './chunk-4GWTCVFL.js';
6
6
  import { handleError } from './chunk-7ZWJX3AN.js';
7
7
  import { createRoute } from './chunk-H5LXHGEJ.js';
8
8
  import { HTTPException } from './chunk-6QWQZI4Q.js';
@@ -489,5 +489,5 @@ var PUBLISH_STORED_SKILL_ROUTE = createRoute({
489
489
  });
490
490
 
491
491
  export { CREATE_STORED_SKILL_ROUTE, DELETE_STORED_SKILL_ROUTE, GET_STORED_SKILL_ROUTE, LIST_STORED_SKILLS_ROUTE, PUBLISH_STORED_SKILL_ROUTE, UPDATE_STORED_SKILL_ROUTE };
492
- //# sourceMappingURL=chunk-FP6SUEJ5.js.map
493
- //# sourceMappingURL=chunk-FP6SUEJ5.js.map
492
+ //# sourceMappingURL=chunk-SQSAIKSL.js.map
493
+ //# sourceMappingURL=chunk-SQSAIKSL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/handlers/stored-skills.ts"],"names":["annotated"],"mappings":"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","file":"chunk-FP6SUEJ5.js","sourcesContent":["import type { StorageSkillFileNode } from '@mastra/core/storage';\nimport { LocalSkillSource } from '@mastra/core/workspace';\n\nimport { HTTPException } from '../http-exception';\nimport {\n storedSkillIdPathParams,\n listStoredSkillsQuerySchema,\n createStoredSkillBodySchema,\n updateStoredSkillBodySchema,\n publishStoredSkillBodySchema,\n listStoredSkillsResponseSchema,\n getStoredSkillResponseSchema,\n createStoredSkillResponseSchema,\n updateStoredSkillResponseSchema,\n deleteStoredSkillResponseSchema,\n publishStoredSkillResponseSchema,\n} from '../schemas/stored-skills';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { toSlug, assertStoredResourceScope, getStoredResourceScope, scopeStoredResourceMetadata } from '../utils';\n\nimport {\n assertReadAccess,\n assertWriteAccess,\n getCallerAuthorId,\n matchesAuthorFilter,\n resolveAuthorFilter,\n} from './authorship';\nimport { isBuilderFeatureEnabled } from './editor-builder';\nimport { handleError } from './error';\nimport { enrichOrStripFavorites, prepareFavoritesEnrichment, stripFavoriteFields } from './favorites-enrichment';\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/**\n * Well-known folder names in the skill file tree whose children represent\n * indexable path arrays (references, scripts, assets).\n */\nconst INDEXED_FOLDERS = ['references', 'scripts', 'assets'] as const;\n\n/**\n * Walks the `files` tree and collects relative file paths for each well-known\n * folder (references, scripts, assets). Returned arrays only include entries\n * that are not already present in any explicitly-provided arrays so callers\n * can pass both `files` and `references` without creating duplicates.\n */\nfunction extractIndexedPathsFromFiles(\n files: StorageSkillFileNode[] | undefined,\n existing: {\n references?: string[];\n scripts?: string[];\n assets?: string[];\n },\n): {\n references?: string[];\n scripts?: string[];\n assets?: string[];\n} {\n if (!files || files.length === 0) return {};\n\n // Find the root folder (first folder node, usually id=\"root\")\n const root = files.find(n => n.type === 'folder');\n if (!root?.children) return {};\n\n const result: Record<string, string[]> = {};\n\n for (const folderName of INDEXED_FOLDERS) {\n const folder = root.children.find(n => n.type === 'folder' && n.name === folderName);\n if (!folder?.children || folder.children.length === 0) continue;\n\n const existingPaths = new Set(existing[folderName] ?? []);\n const paths: string[] = [...existingPaths];\n\n collectFilePaths(folder.children, folderName, existingPaths, paths);\n\n if (paths.length > 0) {\n result[folderName] = paths;\n }\n }\n\n return result;\n}\n\n/** Recursively collects file paths from a subtree, building relative paths. */\nfunction collectFilePaths(\n nodes: StorageSkillFileNode[],\n prefix: string,\n existingPaths: Set<string>,\n out: string[],\n): void {\n for (const node of nodes) {\n if (node.type === 'file') {\n const relativePath = `${prefix}/${node.name}`;\n if (!existingPaths.has(relativePath)) {\n out.push(relativePath);\n }\n } else if (node.type === 'folder' && node.children) {\n collectFilePaths(node.children, `${prefix}/${node.name}`, existingPaths, out);\n }\n }\n}\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /stored/skills - List all stored skills\n */\nexport const LIST_STORED_SKILLS_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/skills',\n responseType: 'json',\n queryParamSchema: listStoredSkillsQuerySchema,\n responseSchema: listStoredSkillsResponseSchema,\n summary: 'List stored skills',\n description: 'Returns a paginated list of all skill configurations stored in the database',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({\n mastra,\n requestContext,\n page,\n perPage,\n orderBy,\n status,\n authorId,\n visibility,\n metadata,\n favoritedOnly,\n pinFavoritedFor,\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 skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n const filter = resolveAuthorFilter({\n requestContext,\n resource: 'stored-skills',\n queryAuthorId: authorId,\n queryVisibility: visibility,\n });\n\n const scope = await getStoredResourceScope(mastra, requestContext);\n const scopedMetadata = scopeStoredResourceMetadata(metadata, scope);\n\n const callerId = getCallerAuthorId(requestContext);\n const favoritesEnabled = await isBuilderFeatureEnabled(mastra, 'favorites');\n const honoredStarredOnly = favoritesEnabled && favoritedOnly === true;\n const favoriteSubjectId = pinFavoritedFor ?? callerId;\n\n // `?favoritedOnly=true` flow: fetch caller's favorited IDs, restrict the list\n // to that set, then post-filter by visibility and recompute total/pages.\n if (honoredStarredOnly) {\n const effectivePerPage: number = perPage ?? 100;\n if (!favoriteSubjectId) {\n // Caller cannot have favorited anything without an identity.\n return { skills: [], total: 0, page, perPage: effectivePerPage, hasMore: false };\n }\n const favoritesStore = await storage.getStore('favorites');\n if (!favoritesStore) {\n throw new HTTPException(500, { message: 'Favorites storage domain is not available' });\n }\n const starredIds = await favoritesStore.listFavoritedIds({ userId: favoriteSubjectId, entityType: 'skill' });\n if (starredIds.length === 0) {\n return { skills: [], total: 0, page, perPage: effectivePerPage, hasMore: false };\n }\n const allMatching = await skillStore.listResolved({\n perPage: false,\n orderBy,\n status,\n authorId: filter.kind === 'exact' ? filter.authorId : undefined,\n metadata: scopedMetadata,\n entityIds: starredIds,\n });\n const visible = allMatching.skills.filter(record => matchesAuthorFilter(record, filter));\n const total = visible.length;\n const startIdx = effectivePerPage === 0 ? 0 : page * effectivePerPage;\n const endIdx = effectivePerPage === 0 ? 0 : startIdx + effectivePerPage;\n const sliced = effectivePerPage === 0 ? [] : visible.slice(startIdx, endIdx);\n const annotated = sliced.map(record => ({ ...record, isFavorited: true }));\n const hasMore = effectivePerPage > 0 && endIdx < total;\n return {\n skills: annotated,\n total,\n page,\n perPage: effectivePerPage,\n hasMore,\n };\n }\n\n const result = await skillStore.listResolved({\n page,\n perPage,\n orderBy,\n status,\n authorId: filter.kind === 'exact' ? filter.authorId : undefined,\n metadata: scopedMetadata,\n });\n\n // Post-filter to enforce ownership + visibility rules across all backends.\n // Storage adapters can only do an equality filter on authorId, so we apply\n // the ownedOrPublic / publicOnly logic here.\n // Note: `result.total` / `result.hasMore` reflect the storage-reported\n // count before this post-filter. For `unrestricted` / `exact` filters\n // nothing is removed; for `ownedOrPublic` / `publicOnly`, downstream UIs\n // should treat the filter as a view over the caller's scope — an\n // approximation is OK and preserves pagination math.\n const visibleSkills = result.skills.filter(record => matchesAuthorFilter(record, filter));\n\n if (!favoritesEnabled) {\n return { ...result, skills: visibleSkills.map(stripFavoriteFields) };\n }\n\n const enrichment = await prepareFavoritesEnrichment(\n mastra,\n requestContext,\n 'skill',\n visibleSkills.map(s => s.id),\n );\n const annotated = enrichment\n ? visibleSkills.map(record => ({ ...record, isFavorited: enrichment.starredIds.has(record.id) }))\n : visibleSkills.map(stripFavoriteFields);\n\n return { ...result, skills: annotated };\n } catch (error) {\n return handleError(error, 'Error listing stored skills');\n }\n },\n});\n\n/**\n * GET /stored/skills/:storedSkillId - Get a stored skill by ID\n */\nexport const GET_STORED_SKILL_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/skills/:storedSkillId',\n responseType: 'json',\n pathParamSchema: storedSkillIdPathParams,\n responseSchema: getStoredSkillResponseSchema,\n summary: 'Get stored skill by ID',\n description: 'Returns a specific skill from storage by its unique identifier (resolved with active version config)',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, storedSkillId }) => {\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 skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n const skill = await skillStore.getByIdResolved(storedSkillId);\n\n if (!skill) {\n throw new HTTPException(404, { message: `Stored skill with id ${storedSkillId} not found` });\n }\n assertStoredResourceScope(skill, await getStoredResourceScope(mastra, requestContext));\n\n assertReadAccess({ requestContext, resource: 'stored-skills', resourceId: storedSkillId, record: skill });\n\n return enrichOrStripFavorites(mastra, requestContext, 'skill', skill);\n } catch (error) {\n return handleError(error, 'Error getting stored skill');\n }\n },\n});\n\n/**\n * POST /stored/skills - Create a new stored skill\n */\nexport const CREATE_STORED_SKILL_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/skills',\n responseType: 'json',\n bodySchema: createStoredSkillBodySchema,\n responseSchema: createStoredSkillResponseSchema,\n summary: 'Create stored skill',\n description: 'Creates a new skill configuration in storage with the provided details',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({\n mastra,\n requestContext,\n id: providedId,\n name,\n description,\n instructions,\n license,\n compatibility,\n source,\n references,\n scripts,\n assets,\n files,\n metadata,\n visibility: bodyVisibility,\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 skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills 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 skill ID from name. Please provide an explicit id.',\n });\n }\n\n // Check if skill with this ID already exists\n const existing = await skillStore.getById(id);\n if (existing) {\n throw new HTTPException(409, { message: `Skill with id ${id} already exists` });\n }\n\n // Force authorId from the authenticated caller; ignore any body-provided value.\n // No owner = always public (no auth / no user context).\n // With an owner, respect the client's choice, defaulting to 'private'.\n const authorId = getCallerAuthorId(requestContext) ?? undefined;\n const visibility: 'private' | 'public' = authorId ? (bodyVisibility ?? 'private') : 'public';\n\n // Derive references/scripts/assets path arrays from the files tree\n // so agents can discover them via skill_read even when only `files` is provided.\n const indexedPaths = extractIndexedPathsFromFiles(files, { references, scripts, assets });\n\n await skillStore.create({\n skill: {\n id,\n authorId,\n visibility,\n name,\n description,\n instructions,\n license,\n compatibility,\n source,\n references: indexedPaths.references ?? references,\n scripts: indexedPaths.scripts ?? scripts,\n assets: indexedPaths.assets ?? assets,\n files,\n metadata: scopeStoredResourceMetadata(metadata, await getStoredResourceScope(mastra, requestContext)),\n },\n });\n\n // Return the resolved skill (thin record + version config)\n const resolved = await skillStore.getByIdResolved(id);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve created skill' });\n }\n\n return enrichOrStripFavorites(mastra, requestContext, 'skill', resolved);\n } catch (error) {\n return handleError(error, 'Error creating stored skill');\n }\n },\n});\n\n/**\n * PATCH /stored/skills/:storedSkillId - Update a stored skill\n */\nexport const UPDATE_STORED_SKILL_ROUTE = createRoute({\n method: 'PATCH',\n path: '/stored/skills/:storedSkillId',\n responseType: 'json',\n pathParamSchema: storedSkillIdPathParams,\n bodySchema: updateStoredSkillBodySchema,\n responseSchema: updateStoredSkillResponseSchema,\n summary: 'Update stored skill',\n description: 'Updates an existing skill in storage with the provided fields',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({\n mastra,\n requestContext,\n storedSkillId,\n // Entity-level fields\n authorId,\n visibility,\n // Config fields (snapshot-level)\n name,\n description,\n instructions,\n license,\n compatibility,\n source,\n references,\n scripts,\n assets,\n files,\n metadata,\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 skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n // Check if skill exists. Skill metadata lives on the resolved snapshot.\n const existing = await skillStore.getByIdResolved(storedSkillId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored skill with id ${storedSkillId} 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-skills:write[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-skills',\n resourceId: storedSkillId,\n action: 'edit',\n record: existing,\n });\n\n // No owner = always public, regardless of what the client sent.\n const callerAuthorId = getCallerAuthorId(requestContext) ?? undefined;\n const resolvedVisibility = callerAuthorId ? visibility : visibility != null ? 'public' : undefined;\n\n // Derive references/scripts/assets path arrays from the files tree\n const indexedPaths = files ? extractIndexedPathsFromFiles(files, { references, scripts, assets }) : {};\n\n // Update the skill with both entity-level and config-level fields.\n // The storage layer handles separating these into record updates vs\n // new-version creation, but it uses `field in updates` to detect config\n // changes — so we must only include fields the caller actually sent.\n // Forwarding `undefined` keys would trigger a spurious version create\n // and pass `undefined` into the database driver.\n const update: Record<string, unknown> = { id: storedSkillId };\n if (authorId !== undefined) update.authorId = authorId;\n if (resolvedVisibility !== undefined) update.visibility = resolvedVisibility;\n if (name !== undefined) update.name = name;\n if (description !== undefined) update.description = description;\n if (instructions !== undefined) update.instructions = instructions;\n if (license !== undefined) update.license = license;\n if (compatibility !== undefined) update.compatibility = compatibility;\n if (source !== undefined) update.source = source;\n const resolvedReferences = indexedPaths.references ?? references;\n const resolvedScripts = indexedPaths.scripts ?? scripts;\n const resolvedAssets = indexedPaths.assets ?? assets;\n if (resolvedReferences !== undefined) update.references = resolvedReferences;\n if (resolvedScripts !== undefined) update.scripts = resolvedScripts;\n if (resolvedAssets !== undefined) update.assets = resolvedAssets;\n if (files !== undefined) update.files = files;\n if (metadata !== undefined) {\n update.metadata = scopeStoredResourceMetadata({ ...(existing.metadata ?? {}), ...metadata }, scope);\n }\n\n await skillStore.update(update as Parameters<typeof skillStore.update>[0]);\n\n // Return the resolved skill with the updated config\n const resolved = await skillStore.getByIdResolved(storedSkillId);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve updated skill' });\n }\n\n return enrichOrStripFavorites(mastra, requestContext, 'skill', resolved);\n } catch (error) {\n return handleError(error, 'Error updating stored skill');\n }\n },\n});\n\n/**\n * DELETE /stored/skills/:storedSkillId - Delete a stored skill\n */\nexport const DELETE_STORED_SKILL_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/skills/:storedSkillId',\n responseType: 'json',\n pathParamSchema: storedSkillIdPathParams,\n responseSchema: deleteStoredSkillResponseSchema,\n summary: 'Delete stored skill',\n description: 'Deletes a skill from storage by its unique identifier',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, storedSkillId }) => {\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 skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n // Check if skill exists. Skill metadata lives on the resolved snapshot.\n const existing = await skillStore.getByIdResolved(storedSkillId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored skill with id ${storedSkillId} not found` });\n }\n assertStoredResourceScope(existing, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, or `skills:delete[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-skills',\n resourceId: storedSkillId,\n action: 'delete',\n record: existing,\n });\n\n await skillStore.delete(storedSkillId);\n\n // Cascade: drop any favorite rows referencing this skill. Failure must not\n // abort the delete.\n try {\n const favoritesStore = await storage.getStore('favorites');\n await favoritesStore?.deleteFavoritesForEntity({ entityType: 'skill', entityId: storedSkillId });\n } catch (cascadeError) {\n mastra\n .getLogger?.()\n ?.warn?.('Failed to cascade-delete favorites for skill', { storedSkillId, error: cascadeError });\n }\n\n return {\n success: true,\n message: `Skill ${storedSkillId} deleted successfully`,\n };\n } catch (error) {\n return handleError(error, 'Error deleting stored skill');\n }\n },\n});\n\n/**\n * POST /stored/skills/:storedSkillId/publish - Publish a skill from filesystem\n * Walks the skill directory, hashes files into blob store, creates a new version\n * with the tree manifest, and sets activeVersionId.\n */\nexport const PUBLISH_STORED_SKILL_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/skills/:storedSkillId/publish',\n responseType: 'json',\n pathParamSchema: storedSkillIdPathParams,\n bodySchema: publishStoredSkillBodySchema,\n responseSchema: publishStoredSkillResponseSchema,\n summary: 'Publish stored skill',\n description:\n 'Snapshots the skill directory from the filesystem into content-addressable blob storage, creates a new version with a tree manifest, and marks the skill as published',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, storedSkillId, skillPath }) => {\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 skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n const blobStore = await storage.getStore('blobs');\n if (!blobStore) {\n throw new HTTPException(500, { message: 'Blob storage domain is not available' });\n }\n\n // Verify skill exists. Skill metadata lives on the resolved snapshot.\n const existing = await skillStore.getByIdResolved(storedSkillId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored skill with id ${storedSkillId} not found` });\n }\n assertStoredResourceScope(existing, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, or `stored-skills:write[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-skills',\n resourceId: storedSkillId,\n action: 'edit',\n record: existing,\n });\n\n // Validate skillPath to prevent path traversal\n const path = await import('node:path');\n const fs = await import('node:fs/promises');\n const resolvedPath = path.default.resolve(skillPath);\n const allowedBase = path.default.resolve(process.env.SKILLS_BASE_DIR || process.cwd());\n if (!resolvedPath.startsWith(allowedBase + path.default.sep) && resolvedPath !== allowedBase) {\n throw new HTTPException(400, {\n message: `skillPath must be within the allowed directory: ${allowedBase}`,\n });\n }\n\n // Verify the source directory exists and contains a SKILL.md before attempting\n // to publish, so callers get a 400 with context instead of a raw 500/ENOENT.\n try {\n const stat = await fs.stat(resolvedPath);\n if (!stat.isDirectory()) {\n throw new HTTPException(400, { message: `skillPath is not a directory: ${resolvedPath}` });\n }\n } catch (err) {\n if (err instanceof HTTPException) throw err;\n if ((err as NodeJS.ErrnoException)?.code === 'ENOENT') {\n throw new HTTPException(400, {\n message: `skillPath does not exist on the server filesystem: ${resolvedPath}. Create the skill directory (with a SKILL.md) before publishing, or use a skill that was materialized to disk.`,\n });\n }\n throw err;\n }\n try {\n await fs.stat(path.default.join(resolvedPath, 'SKILL.md'));\n } catch (err) {\n if ((err as NodeJS.ErrnoException)?.code === 'ENOENT') {\n throw new HTTPException(400, {\n message: `skillPath is missing SKILL.md: ${resolvedPath}`,\n });\n }\n throw err;\n }\n\n // Use LocalSkillSource to read from the server filesystem\n const source = new LocalSkillSource();\n const { publishSkillFromSource } = await import('@mastra/core/workspace');\n\n const { snapshot, tree, files } = await publishSkillFromSource(source, resolvedPath, blobStore);\n\n // Strip undefined keys from the snapshot before passing to update(). The\n // storage layer treats \"field present\" as \"field changed\"; forwarding\n // undefined would overwrite populated columns with undefined and trip\n // NOT NULL / \"undefined cannot be passed as argument\" errors in\n // adapters that bind args raw (libsql, pg).\n const snapshotUpdate: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(snapshot)) {\n if (value !== undefined) snapshotUpdate[key] = value;\n }\n\n // Update the skill with new version data + tree + UI-facing file tree.\n // `files` is the nested folder/file structure shown in the editor; without\n // it the column would stay null and the UI would render an empty tree.\n await skillStore.update({\n id: storedSkillId,\n ...snapshotUpdate,\n tree,\n files,\n status: 'published',\n });\n\n // Point activeVersionId to the newly created version\n const latestVersion = await skillStore.getLatestVersion(storedSkillId);\n if (latestVersion) {\n await skillStore.update({\n id: storedSkillId,\n activeVersionId: latestVersion.id,\n });\n }\n\n const resolved = await skillStore.getByIdResolved(storedSkillId);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve skill after publish' });\n }\n\n return enrichOrStripFavorites(mastra, requestContext, 'skill', resolved);\n } catch (error) {\n return handleError(error, 'Error publishing stored skill');\n }\n },\n});\n"]}
1
+ {"version":3,"sources":["../src/server/handlers/stored-skills.ts"],"names":["annotated"],"mappings":"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","file":"chunk-SQSAIKSL.js","sourcesContent":["import type { StorageSkillFileNode } from '@mastra/core/storage';\nimport { LocalSkillSource } from '@mastra/core/workspace';\n\nimport { HTTPException } from '../http-exception';\nimport {\n storedSkillIdPathParams,\n listStoredSkillsQuerySchema,\n createStoredSkillBodySchema,\n updateStoredSkillBodySchema,\n publishStoredSkillBodySchema,\n listStoredSkillsResponseSchema,\n getStoredSkillResponseSchema,\n createStoredSkillResponseSchema,\n updateStoredSkillResponseSchema,\n deleteStoredSkillResponseSchema,\n publishStoredSkillResponseSchema,\n} from '../schemas/stored-skills';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { toSlug, assertStoredResourceScope, getStoredResourceScope, scopeStoredResourceMetadata } from '../utils';\n\nimport {\n assertReadAccess,\n assertWriteAccess,\n getCallerAuthorId,\n matchesAuthorFilter,\n resolveAuthorFilter,\n} from './authorship';\nimport { isBuilderFeatureEnabled } from './editor-builder';\nimport { handleError } from './error';\nimport { enrichOrStripFavorites, prepareFavoritesEnrichment, stripFavoriteFields } from './favorites-enrichment';\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/**\n * Well-known folder names in the skill file tree whose children represent\n * indexable path arrays (references, scripts, assets).\n */\nconst INDEXED_FOLDERS = ['references', 'scripts', 'assets'] as const;\n\n/**\n * Walks the `files` tree and collects relative file paths for each well-known\n * folder (references, scripts, assets). Returned arrays only include entries\n * that are not already present in any explicitly-provided arrays so callers\n * can pass both `files` and `references` without creating duplicates.\n */\nfunction extractIndexedPathsFromFiles(\n files: StorageSkillFileNode[] | undefined,\n existing: {\n references?: string[];\n scripts?: string[];\n assets?: string[];\n },\n): {\n references?: string[];\n scripts?: string[];\n assets?: string[];\n} {\n if (!files || files.length === 0) return {};\n\n // Find the root folder (first folder node, usually id=\"root\")\n const root = files.find(n => n.type === 'folder');\n if (!root?.children) return {};\n\n const result: Record<string, string[]> = {};\n\n for (const folderName of INDEXED_FOLDERS) {\n const folder = root.children.find(n => n.type === 'folder' && n.name === folderName);\n if (!folder?.children || folder.children.length === 0) continue;\n\n const existingPaths = new Set(existing[folderName] ?? []);\n const paths: string[] = [...existingPaths];\n\n collectFilePaths(folder.children, folderName, existingPaths, paths);\n\n if (paths.length > 0) {\n result[folderName] = paths;\n }\n }\n\n return result;\n}\n\n/** Recursively collects file paths from a subtree, building relative paths. */\nfunction collectFilePaths(\n nodes: StorageSkillFileNode[],\n prefix: string,\n existingPaths: Set<string>,\n out: string[],\n): void {\n for (const node of nodes) {\n if (node.type === 'file') {\n const relativePath = `${prefix}/${node.name}`;\n if (!existingPaths.has(relativePath)) {\n out.push(relativePath);\n }\n } else if (node.type === 'folder' && node.children) {\n collectFilePaths(node.children, `${prefix}/${node.name}`, existingPaths, out);\n }\n }\n}\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /stored/skills - List all stored skills\n */\nexport const LIST_STORED_SKILLS_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/skills',\n responseType: 'json',\n queryParamSchema: listStoredSkillsQuerySchema,\n responseSchema: listStoredSkillsResponseSchema,\n summary: 'List stored skills',\n description: 'Returns a paginated list of all skill configurations stored in the database',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({\n mastra,\n requestContext,\n page,\n perPage,\n orderBy,\n status,\n authorId,\n visibility,\n metadata,\n favoritedOnly,\n pinFavoritedFor,\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 skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n const filter = resolveAuthorFilter({\n requestContext,\n resource: 'stored-skills',\n queryAuthorId: authorId,\n queryVisibility: visibility,\n });\n\n const scope = await getStoredResourceScope(mastra, requestContext);\n const scopedMetadata = scopeStoredResourceMetadata(metadata, scope);\n\n const callerId = getCallerAuthorId(requestContext);\n const favoritesEnabled = await isBuilderFeatureEnabled(mastra, 'favorites');\n const honoredStarredOnly = favoritesEnabled && favoritedOnly === true;\n const favoriteSubjectId = pinFavoritedFor ?? callerId;\n\n // `?favoritedOnly=true` flow: fetch caller's favorited IDs, restrict the list\n // to that set, then post-filter by visibility and recompute total/pages.\n if (honoredStarredOnly) {\n const effectivePerPage: number = perPage ?? 100;\n if (!favoriteSubjectId) {\n // Caller cannot have favorited anything without an identity.\n return { skills: [], total: 0, page, perPage: effectivePerPage, hasMore: false };\n }\n const favoritesStore = await storage.getStore('favorites');\n if (!favoritesStore) {\n throw new HTTPException(500, { message: 'Favorites storage domain is not available' });\n }\n const starredIds = await favoritesStore.listFavoritedIds({ userId: favoriteSubjectId, entityType: 'skill' });\n if (starredIds.length === 0) {\n return { skills: [], total: 0, page, perPage: effectivePerPage, hasMore: false };\n }\n const allMatching = await skillStore.listResolved({\n perPage: false,\n orderBy,\n status,\n authorId: filter.kind === 'exact' ? filter.authorId : undefined,\n metadata: scopedMetadata,\n entityIds: starredIds,\n });\n const visible = allMatching.skills.filter(record => matchesAuthorFilter(record, filter));\n const total = visible.length;\n const startIdx = effectivePerPage === 0 ? 0 : page * effectivePerPage;\n const endIdx = effectivePerPage === 0 ? 0 : startIdx + effectivePerPage;\n const sliced = effectivePerPage === 0 ? [] : visible.slice(startIdx, endIdx);\n const annotated = sliced.map(record => ({ ...record, isFavorited: true }));\n const hasMore = effectivePerPage > 0 && endIdx < total;\n return {\n skills: annotated,\n total,\n page,\n perPage: effectivePerPage,\n hasMore,\n };\n }\n\n const result = await skillStore.listResolved({\n page,\n perPage,\n orderBy,\n status,\n authorId: filter.kind === 'exact' ? filter.authorId : undefined,\n metadata: scopedMetadata,\n });\n\n // Post-filter to enforce ownership + visibility rules across all backends.\n // Storage adapters can only do an equality filter on authorId, so we apply\n // the ownedOrPublic / publicOnly logic here.\n // Note: `result.total` / `result.hasMore` reflect the storage-reported\n // count before this post-filter. For `unrestricted` / `exact` filters\n // nothing is removed; for `ownedOrPublic` / `publicOnly`, downstream UIs\n // should treat the filter as a view over the caller's scope — an\n // approximation is OK and preserves pagination math.\n const visibleSkills = result.skills.filter(record => matchesAuthorFilter(record, filter));\n\n if (!favoritesEnabled) {\n return { ...result, skills: visibleSkills.map(stripFavoriteFields) };\n }\n\n const enrichment = await prepareFavoritesEnrichment(\n mastra,\n requestContext,\n 'skill',\n visibleSkills.map(s => s.id),\n );\n const annotated = enrichment\n ? visibleSkills.map(record => ({ ...record, isFavorited: enrichment.starredIds.has(record.id) }))\n : visibleSkills.map(stripFavoriteFields);\n\n return { ...result, skills: annotated };\n } catch (error) {\n return handleError(error, 'Error listing stored skills');\n }\n },\n});\n\n/**\n * GET /stored/skills/:storedSkillId - Get a stored skill by ID\n */\nexport const GET_STORED_SKILL_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/skills/:storedSkillId',\n responseType: 'json',\n pathParamSchema: storedSkillIdPathParams,\n responseSchema: getStoredSkillResponseSchema,\n summary: 'Get stored skill by ID',\n description: 'Returns a specific skill from storage by its unique identifier (resolved with active version config)',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, storedSkillId }) => {\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 skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n const skill = await skillStore.getByIdResolved(storedSkillId);\n\n if (!skill) {\n throw new HTTPException(404, { message: `Stored skill with id ${storedSkillId} not found` });\n }\n assertStoredResourceScope(skill, await getStoredResourceScope(mastra, requestContext));\n\n assertReadAccess({ requestContext, resource: 'stored-skills', resourceId: storedSkillId, record: skill });\n\n return enrichOrStripFavorites(mastra, requestContext, 'skill', skill);\n } catch (error) {\n return handleError(error, 'Error getting stored skill');\n }\n },\n});\n\n/**\n * POST /stored/skills - Create a new stored skill\n */\nexport const CREATE_STORED_SKILL_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/skills',\n responseType: 'json',\n bodySchema: createStoredSkillBodySchema,\n responseSchema: createStoredSkillResponseSchema,\n summary: 'Create stored skill',\n description: 'Creates a new skill configuration in storage with the provided details',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({\n mastra,\n requestContext,\n id: providedId,\n name,\n description,\n instructions,\n license,\n compatibility,\n source,\n references,\n scripts,\n assets,\n files,\n metadata,\n visibility: bodyVisibility,\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 skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills 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 skill ID from name. Please provide an explicit id.',\n });\n }\n\n // Check if skill with this ID already exists\n const existing = await skillStore.getById(id);\n if (existing) {\n throw new HTTPException(409, { message: `Skill with id ${id} already exists` });\n }\n\n // Force authorId from the authenticated caller; ignore any body-provided value.\n // No owner = always public (no auth / no user context).\n // With an owner, respect the client's choice, defaulting to 'private'.\n const authorId = getCallerAuthorId(requestContext) ?? undefined;\n const visibility: 'private' | 'public' = authorId ? (bodyVisibility ?? 'private') : 'public';\n\n // Derive references/scripts/assets path arrays from the files tree\n // so agents can discover them via skill_read even when only `files` is provided.\n const indexedPaths = extractIndexedPathsFromFiles(files, { references, scripts, assets });\n\n await skillStore.create({\n skill: {\n id,\n authorId,\n visibility,\n name,\n description,\n instructions,\n license,\n compatibility,\n source,\n references: indexedPaths.references ?? references,\n scripts: indexedPaths.scripts ?? scripts,\n assets: indexedPaths.assets ?? assets,\n files,\n metadata: scopeStoredResourceMetadata(metadata, await getStoredResourceScope(mastra, requestContext)),\n },\n });\n\n // Return the resolved skill (thin record + version config)\n const resolved = await skillStore.getByIdResolved(id);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve created skill' });\n }\n\n return enrichOrStripFavorites(mastra, requestContext, 'skill', resolved);\n } catch (error) {\n return handleError(error, 'Error creating stored skill');\n }\n },\n});\n\n/**\n * PATCH /stored/skills/:storedSkillId - Update a stored skill\n */\nexport const UPDATE_STORED_SKILL_ROUTE = createRoute({\n method: 'PATCH',\n path: '/stored/skills/:storedSkillId',\n responseType: 'json',\n pathParamSchema: storedSkillIdPathParams,\n bodySchema: updateStoredSkillBodySchema,\n responseSchema: updateStoredSkillResponseSchema,\n summary: 'Update stored skill',\n description: 'Updates an existing skill in storage with the provided fields',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({\n mastra,\n requestContext,\n storedSkillId,\n // Entity-level fields\n authorId,\n visibility,\n // Config fields (snapshot-level)\n name,\n description,\n instructions,\n license,\n compatibility,\n source,\n references,\n scripts,\n assets,\n files,\n metadata,\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 skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n // Check if skill exists. Skill metadata lives on the resolved snapshot.\n const existing = await skillStore.getByIdResolved(storedSkillId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored skill with id ${storedSkillId} 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-skills:write[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-skills',\n resourceId: storedSkillId,\n action: 'edit',\n record: existing,\n });\n\n // No owner = always public, regardless of what the client sent.\n const callerAuthorId = getCallerAuthorId(requestContext) ?? undefined;\n const resolvedVisibility = callerAuthorId ? visibility : visibility != null ? 'public' : undefined;\n\n // Derive references/scripts/assets path arrays from the files tree\n const indexedPaths = files ? extractIndexedPathsFromFiles(files, { references, scripts, assets }) : {};\n\n // Update the skill with both entity-level and config-level fields.\n // The storage layer handles separating these into record updates vs\n // new-version creation, but it uses `field in updates` to detect config\n // changes — so we must only include fields the caller actually sent.\n // Forwarding `undefined` keys would trigger a spurious version create\n // and pass `undefined` into the database driver.\n const update: Record<string, unknown> = { id: storedSkillId };\n if (authorId !== undefined) update.authorId = authorId;\n if (resolvedVisibility !== undefined) update.visibility = resolvedVisibility;\n if (name !== undefined) update.name = name;\n if (description !== undefined) update.description = description;\n if (instructions !== undefined) update.instructions = instructions;\n if (license !== undefined) update.license = license;\n if (compatibility !== undefined) update.compatibility = compatibility;\n if (source !== undefined) update.source = source;\n const resolvedReferences = indexedPaths.references ?? references;\n const resolvedScripts = indexedPaths.scripts ?? scripts;\n const resolvedAssets = indexedPaths.assets ?? assets;\n if (resolvedReferences !== undefined) update.references = resolvedReferences;\n if (resolvedScripts !== undefined) update.scripts = resolvedScripts;\n if (resolvedAssets !== undefined) update.assets = resolvedAssets;\n if (files !== undefined) update.files = files;\n if (metadata !== undefined) {\n update.metadata = scopeStoredResourceMetadata({ ...(existing.metadata ?? {}), ...metadata }, scope);\n }\n\n await skillStore.update(update as Parameters<typeof skillStore.update>[0]);\n\n // Return the resolved skill with the updated config\n const resolved = await skillStore.getByIdResolved(storedSkillId);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve updated skill' });\n }\n\n return enrichOrStripFavorites(mastra, requestContext, 'skill', resolved);\n } catch (error) {\n return handleError(error, 'Error updating stored skill');\n }\n },\n});\n\n/**\n * DELETE /stored/skills/:storedSkillId - Delete a stored skill\n */\nexport const DELETE_STORED_SKILL_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/skills/:storedSkillId',\n responseType: 'json',\n pathParamSchema: storedSkillIdPathParams,\n responseSchema: deleteStoredSkillResponseSchema,\n summary: 'Delete stored skill',\n description: 'Deletes a skill from storage by its unique identifier',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, storedSkillId }) => {\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 skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n // Check if skill exists. Skill metadata lives on the resolved snapshot.\n const existing = await skillStore.getByIdResolved(storedSkillId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored skill with id ${storedSkillId} not found` });\n }\n assertStoredResourceScope(existing, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, or `skills:delete[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-skills',\n resourceId: storedSkillId,\n action: 'delete',\n record: existing,\n });\n\n await skillStore.delete(storedSkillId);\n\n // Cascade: drop any favorite rows referencing this skill. Failure must not\n // abort the delete.\n try {\n const favoritesStore = await storage.getStore('favorites');\n await favoritesStore?.deleteFavoritesForEntity({ entityType: 'skill', entityId: storedSkillId });\n } catch (cascadeError) {\n mastra\n .getLogger?.()\n ?.warn?.('Failed to cascade-delete favorites for skill', { storedSkillId, error: cascadeError });\n }\n\n return {\n success: true,\n message: `Skill ${storedSkillId} deleted successfully`,\n };\n } catch (error) {\n return handleError(error, 'Error deleting stored skill');\n }\n },\n});\n\n/**\n * POST /stored/skills/:storedSkillId/publish - Publish a skill from filesystem\n * Walks the skill directory, hashes files into blob store, creates a new version\n * with the tree manifest, and sets activeVersionId.\n */\nexport const PUBLISH_STORED_SKILL_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/skills/:storedSkillId/publish',\n responseType: 'json',\n pathParamSchema: storedSkillIdPathParams,\n bodySchema: publishStoredSkillBodySchema,\n responseSchema: publishStoredSkillResponseSchema,\n summary: 'Publish stored skill',\n description:\n 'Snapshots the skill directory from the filesystem into content-addressable blob storage, creates a new version with a tree manifest, and marks the skill as published',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, storedSkillId, skillPath }) => {\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 skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n const blobStore = await storage.getStore('blobs');\n if (!blobStore) {\n throw new HTTPException(500, { message: 'Blob storage domain is not available' });\n }\n\n // Verify skill exists. Skill metadata lives on the resolved snapshot.\n const existing = await skillStore.getByIdResolved(storedSkillId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored skill with id ${storedSkillId} not found` });\n }\n assertStoredResourceScope(existing, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, or `stored-skills:write[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-skills',\n resourceId: storedSkillId,\n action: 'edit',\n record: existing,\n });\n\n // Validate skillPath to prevent path traversal\n const path = await import('node:path');\n const fs = await import('node:fs/promises');\n const resolvedPath = path.default.resolve(skillPath);\n const allowedBase = path.default.resolve(process.env.SKILLS_BASE_DIR || process.cwd());\n if (!resolvedPath.startsWith(allowedBase + path.default.sep) && resolvedPath !== allowedBase) {\n throw new HTTPException(400, {\n message: `skillPath must be within the allowed directory: ${allowedBase}`,\n });\n }\n\n // Verify the source directory exists and contains a SKILL.md before attempting\n // to publish, so callers get a 400 with context instead of a raw 500/ENOENT.\n try {\n const stat = await fs.stat(resolvedPath);\n if (!stat.isDirectory()) {\n throw new HTTPException(400, { message: `skillPath is not a directory: ${resolvedPath}` });\n }\n } catch (err) {\n if (err instanceof HTTPException) throw err;\n if ((err as NodeJS.ErrnoException)?.code === 'ENOENT') {\n throw new HTTPException(400, {\n message: `skillPath does not exist on the server filesystem: ${resolvedPath}. Create the skill directory (with a SKILL.md) before publishing, or use a skill that was materialized to disk.`,\n });\n }\n throw err;\n }\n try {\n await fs.stat(path.default.join(resolvedPath, 'SKILL.md'));\n } catch (err) {\n if ((err as NodeJS.ErrnoException)?.code === 'ENOENT') {\n throw new HTTPException(400, {\n message: `skillPath is missing SKILL.md: ${resolvedPath}`,\n });\n }\n throw err;\n }\n\n // Use LocalSkillSource to read from the server filesystem\n const source = new LocalSkillSource();\n const { publishSkillFromSource } = await import('@mastra/core/workspace');\n\n const { snapshot, tree, files } = await publishSkillFromSource(source, resolvedPath, blobStore);\n\n // Strip undefined keys from the snapshot before passing to update(). The\n // storage layer treats \"field present\" as \"field changed\"; forwarding\n // undefined would overwrite populated columns with undefined and trip\n // NOT NULL / \"undefined cannot be passed as argument\" errors in\n // adapters that bind args raw (libsql, pg).\n const snapshotUpdate: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(snapshot)) {\n if (value !== undefined) snapshotUpdate[key] = value;\n }\n\n // Update the skill with new version data + tree + UI-facing file tree.\n // `files` is the nested folder/file structure shown in the editor; without\n // it the column would stay null and the UI would render an empty tree.\n await skillStore.update({\n id: storedSkillId,\n ...snapshotUpdate,\n tree,\n files,\n status: 'published',\n });\n\n // Point activeVersionId to the newly created version\n const latestVersion = await skillStore.getLatestVersion(storedSkillId);\n if (latestVersion) {\n await skillStore.update({\n id: storedSkillId,\n activeVersionId: latestVersion.id,\n });\n }\n\n const resolved = await skillStore.getByIdResolved(storedSkillId);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve skill after publish' });\n }\n\n return enrichOrStripFavorites(mastra, requestContext, 'skill', resolved);\n } catch (error) {\n return handleError(error, 'Error publishing stored skill');\n }\n },\n});\n"]}
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
+ var chunk5SHV4VN7_cjs = require('./chunk-5SHV4VN7.cjs');
3
4
  var chunkF3HP5HM6_cjs = require('./chunk-F3HP5HM6.cjs');
4
- var chunkVC5L737D_cjs = require('./chunk-VC5L737D.cjs');
5
- var chunkKK6BI6UL_cjs = require('./chunk-KK6BI6UL.cjs');
6
- var chunkT7QRJ6CC_cjs = require('./chunk-T7QRJ6CC.cjs');
7
- var chunkNWXAU2T5_cjs = require('./chunk-NWXAU2T5.cjs');
5
+ var chunkOFF7L43B_cjs = require('./chunk-OFF7L43B.cjs');
6
+ var chunk26PD32NV_cjs = require('./chunk-26PD32NV.cjs');
7
+ var chunkQQJHGSB2_cjs = require('./chunk-QQJHGSB2.cjs');
8
8
  var chunkZ7LCIYK7_cjs = require('./chunk-Z7LCIYK7.cjs');
9
9
  var chunkRTTQ6WVP_cjs = require('./chunk-RTTQ6WVP.cjs');
10
10
  var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
@@ -46,28 +46,28 @@ var CREATE_CONVERSATION_ROUTE = chunkRTTQ6WVP_cjs.createRoute({
46
46
  method: "POST",
47
47
  path: "/v1/conversations",
48
48
  responseType: "json",
49
- bodySchema: chunkKK6BI6UL_cjs.createConversationBodySchema,
50
- responseSchema: chunkKK6BI6UL_cjs.conversationObjectSchema,
49
+ bodySchema: chunk5SHV4VN7_cjs.createConversationBodySchema,
50
+ responseSchema: chunk5SHV4VN7_cjs.conversationObjectSchema,
51
51
  summary: "Create a conversation",
52
52
  description: "Creates a new thread-backed conversation for agent-backed Responses API requests",
53
53
  tags: ["Responses"],
54
54
  requiresAuth: true,
55
- requiresPermission: chunkNWXAU2T5_cjs.MastraFGAPermissions.AGENTS_CREATE,
55
+ requiresPermission: chunkQQJHGSB2_cjs.MastraFGAPermissions.AGENTS_CREATE,
56
56
  handler: async ({ mastra, requestContext, agent_id, conversation_id, resource_id, title, metadata }) => {
57
57
  try {
58
58
  if (!mastra) {
59
59
  throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Mastra instance is required for conversations" });
60
60
  }
61
- const agent = await chunkT7QRJ6CC_cjs.getAgentFromSystem({ mastra, agentId: agent_id });
61
+ const agent = await chunk26PD32NV_cjs.getAgentFromSystem({ mastra, agentId: agent_id });
62
62
  const memory = await agent.getMemory({ requestContext });
63
63
  if (!memory) {
64
64
  throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Agent "${agent.id}" does not have memory configured` });
65
65
  }
66
- if (!await chunkVC5L737D_cjs.getAgentMemoryStore({ agent, requestContext })) {
66
+ if (!await chunkOFF7L43B_cjs.getAgentMemoryStore({ agent, requestContext })) {
67
67
  throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Memory storage is not configured for agent "${agent.id}"` });
68
68
  }
69
69
  const threadId = conversation_id ?? crypto.randomUUID();
70
- const resourceId = chunkNWXAU2T5_cjs.getEffectiveResourceId(requestContext, resource_id) ?? threadId;
70
+ const resourceId = chunkQQJHGSB2_cjs.getEffectiveResourceId(requestContext, resource_id) ?? threadId;
71
71
  const thread = await memory.createThread({
72
72
  threadId,
73
73
  resourceId,
@@ -84,16 +84,16 @@ var GET_CONVERSATION_ROUTE = chunkRTTQ6WVP_cjs.createRoute({
84
84
  method: "GET",
85
85
  path: "/v1/conversations/:conversationId",
86
86
  responseType: "json",
87
- pathParamSchema: chunkKK6BI6UL_cjs.conversationIdPathParams,
88
- responseSchema: chunkKK6BI6UL_cjs.conversationObjectSchema,
87
+ pathParamSchema: chunk5SHV4VN7_cjs.conversationIdPathParams,
88
+ responseSchema: chunk5SHV4VN7_cjs.conversationObjectSchema,
89
89
  summary: "Retrieve a conversation",
90
90
  description: "Returns a conversation object backed by a Mastra memory thread",
91
91
  tags: ["Responses"],
92
92
  requiresAuth: true,
93
- requiresPermission: chunkNWXAU2T5_cjs.MastraFGAPermissions.AGENTS_READ,
93
+ requiresPermission: chunkQQJHGSB2_cjs.MastraFGAPermissions.AGENTS_READ,
94
94
  handler: async ({ mastra, requestContext, conversationId }) => {
95
95
  try {
96
- const match = await chunkVC5L737D_cjs.findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });
96
+ const match = await chunkOFF7L43B_cjs.findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });
97
97
  if (!match) {
98
98
  throw new chunk64ITUOXI_cjs.HTTPException(404, { message: `Conversation ${conversationId} was not found` });
99
99
  }
@@ -107,16 +107,16 @@ var GET_CONVERSATION_ITEMS_ROUTE = chunkRTTQ6WVP_cjs.createRoute({
107
107
  method: "GET",
108
108
  path: "/v1/conversations/:conversationId/items",
109
109
  responseType: "json",
110
- pathParamSchema: chunkKK6BI6UL_cjs.conversationIdPathParams,
111
- responseSchema: chunkKK6BI6UL_cjs.conversationItemsListSchema,
110
+ pathParamSchema: chunk5SHV4VN7_cjs.conversationIdPathParams,
111
+ responseSchema: chunk5SHV4VN7_cjs.conversationItemsListSchema,
112
112
  summary: "List conversation items",
113
113
  description: "Returns OpenAI-style conversation items derived from the stored thread messages",
114
114
  tags: ["Responses"],
115
115
  requiresAuth: true,
116
- requiresPermission: chunkNWXAU2T5_cjs.MastraFGAPermissions.AGENTS_READ,
116
+ requiresPermission: chunkQQJHGSB2_cjs.MastraFGAPermissions.AGENTS_READ,
117
117
  handler: async ({ mastra, requestContext, conversationId }) => {
118
118
  try {
119
- const match = await chunkVC5L737D_cjs.findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });
119
+ const match = await chunkOFF7L43B_cjs.findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });
120
120
  if (!match) {
121
121
  throw new chunk64ITUOXI_cjs.HTTPException(404, { message: `Conversation ${conversationId} was not found` });
122
122
  }
@@ -135,16 +135,16 @@ var DELETE_CONVERSATION_ROUTE = chunkRTTQ6WVP_cjs.createRoute({
135
135
  method: "DELETE",
136
136
  path: "/v1/conversations/:conversationId",
137
137
  responseType: "json",
138
- pathParamSchema: chunkKK6BI6UL_cjs.conversationIdPathParams,
139
- responseSchema: chunkKK6BI6UL_cjs.conversationDeletedSchema,
138
+ pathParamSchema: chunk5SHV4VN7_cjs.conversationIdPathParams,
139
+ responseSchema: chunk5SHV4VN7_cjs.conversationDeletedSchema,
140
140
  summary: "Delete a conversation",
141
141
  description: "Deletes a thread-backed conversation and its stored items",
142
142
  tags: ["Responses"],
143
143
  requiresAuth: true,
144
- requiresPermission: chunkNWXAU2T5_cjs.MastraFGAPermissions.AGENTS_DELETE,
144
+ requiresPermission: chunkQQJHGSB2_cjs.MastraFGAPermissions.AGENTS_DELETE,
145
145
  handler: async ({ mastra, requestContext, conversationId }) => {
146
146
  try {
147
- const match = await chunkVC5L737D_cjs.findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });
147
+ const match = await chunkOFF7L43B_cjs.findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });
148
148
  if (!match) {
149
149
  throw new chunk64ITUOXI_cjs.HTTPException(404, { message: `Conversation ${conversationId} was not found` });
150
150
  }
@@ -161,5 +161,5 @@ exports.DELETE_CONVERSATION_ROUTE = DELETE_CONVERSATION_ROUTE;
161
161
  exports.GET_CONVERSATION_ITEMS_ROUTE = GET_CONVERSATION_ITEMS_ROUTE;
162
162
  exports.GET_CONVERSATION_ROUTE = GET_CONVERSATION_ROUTE;
163
163
  exports.conversations_exports = conversations_exports;
164
- //# sourceMappingURL=chunk-LZMLLK22.cjs.map
165
- //# sourceMappingURL=chunk-LZMLLK22.cjs.map
164
+ //# sourceMappingURL=chunk-TASNH6SY.cjs.map
165
+ //# sourceMappingURL=chunk-TASNH6SY.cjs.map