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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/dist/{a2a-CHBSYHxu.js → a2a-BqLB3McP.js} +17 -16
  2. package/dist/a2a-BqLB3McP.js.map +1 -0
  3. package/dist/{a2a-B465DD1u.cjs → a2a-Uood_0DN.cjs} +19 -18
  4. package/dist/a2a-Uood_0DN.cjs.map +1 -0
  5. package/dist/agent-builder-CuBD1tpv.cjs +728 -0
  6. package/dist/agent-builder-CuBD1tpv.cjs.map +1 -0
  7. package/dist/agent-builder-VhM8ADW-.js +627 -0
  8. package/dist/agent-builder-VhM8ADW-.js.map +1 -0
  9. package/dist/{agents-X1E7fW3p.js → agents-BHLTMBff.js} +2 -2
  10. package/dist/{agents-X1E7fW3p.js.map → agents-BHLTMBff.js.map} +1 -1
  11. package/dist/agents-BOWEUKyV.cjs +3127 -0
  12. package/dist/agents-BOWEUKyV.cjs.map +1 -0
  13. package/dist/agents-DRQ3ScbX.js +2828 -0
  14. package/dist/agents-DRQ3ScbX.js.map +1 -0
  15. package/dist/{agents-DoNMSCMt.cjs → agents-T-OIM9IK.cjs} +2 -2
  16. package/dist/{agents-DoNMSCMt.cjs.map → agents-T-OIM9IK.cjs.map} +1 -1
  17. package/dist/{api-schema-manifest-DUseI2VG.cjs → api-schema-manifest-A2qfi54Y.cjs} +4 -4
  18. package/dist/{api-schema-manifest-DUseI2VG.cjs.map → api-schema-manifest-A2qfi54Y.cjs.map} +1 -1
  19. package/dist/{api-schema-manifest-CWRIJP-B.js → api-schema-manifest-Dun5VMRT.js} +3 -3
  20. package/dist/{api-schema-manifest-CWRIJP-B.js.map → api-schema-manifest-Dun5VMRT.js.map} +1 -1
  21. package/dist/{background-tasks-CabImVak.cjs → background-tasks-B3VAKTJh.cjs} +3 -3
  22. package/dist/{background-tasks-CabImVak.cjs.map → background-tasks-B3VAKTJh.cjs.map} +1 -1
  23. package/dist/{background-tasks-oBaLtnCn.js → background-tasks-Du2zYOPl.js} +2 -2
  24. package/dist/{background-tasks-oBaLtnCn.js.map → background-tasks-Du2zYOPl.js.map} +1 -1
  25. package/dist/{builder-registry-DOkLe8ES.js → builder-registry-DLdu9bWH.js} +3 -3
  26. package/dist/{builder-registry-DOkLe8ES.js.map → builder-registry-DLdu9bWH.js.map} +1 -1
  27. package/dist/{builder-registry-D0frV8lQ.cjs → builder-registry-DaFAaMTf.cjs} +3 -3
  28. package/dist/{builder-registry-D0frV8lQ.cjs.map → builder-registry-DaFAaMTf.cjs.map} +1 -1
  29. package/dist/{channels-CBIopVWd.cjs → channels-BnVRmnzK.cjs} +6 -3
  30. package/dist/{channels-CBIopVWd.cjs.map → channels-BnVRmnzK.cjs.map} +1 -1
  31. package/dist/{channels-BOxgHvzI.js → channels-Db-4pXVZ.js} +6 -3
  32. package/dist/{channels-BOxgHvzI.js.map → channels-Db-4pXVZ.js.map} +1 -1
  33. package/dist/conversations-8BWryNlF.js +165 -0
  34. package/dist/conversations-8BWryNlF.js.map +1 -0
  35. package/dist/conversations-C5MkQBB8.cjs +194 -0
  36. package/dist/conversations-C5MkQBB8.cjs.map +1 -0
  37. package/dist/{conversations-Bj5TLNqF.cjs → conversations-DasqEDCF.cjs} +3 -3
  38. package/dist/{conversations-Bj5TLNqF.cjs.map → conversations-DasqEDCF.cjs.map} +1 -1
  39. package/dist/{dist-9c3PXXpk.cjs → dist-B-bEVWlJ.cjs} +4733 -1251
  40. package/dist/dist-B-bEVWlJ.cjs.map +1 -0
  41. package/dist/dist-B3kC8Yd0.cjs +3 -0
  42. package/dist/{dist-CQ3FSKT-.cjs → dist-B9ery9Zw.cjs} +38 -35
  43. package/dist/{dist-CQ3FSKT-.cjs.map → dist-B9ery9Zw.cjs.map} +1 -1
  44. package/dist/{dist-BxMmGD3n.js → dist-BBOnrL_A.js} +10 -12
  45. package/dist/{dist-BxMmGD3n.js.map → dist-BBOnrL_A.js.map} +1 -1
  46. package/dist/{dist-DOWsEmo6.js → dist-BIrQLUV9.js} +20 -20
  47. package/dist/{dist-DOWsEmo6.js.map → dist-BIrQLUV9.js.map} +1 -1
  48. package/dist/dist-BM9J-PTK.js +1 -0
  49. package/dist/{dist-DC1Pewf5.cjs → dist-Bo3GdQwf.cjs} +21 -21
  50. package/dist/{dist-DC1Pewf5.cjs.map → dist-Bo3GdQwf.cjs.map} +1 -1
  51. package/dist/{dist-BwYL7Ykb.js → dist-CREG82cy.js} +37 -34
  52. package/dist/{dist-BwYL7Ykb.js.map → dist-CREG82cy.js.map} +1 -1
  53. package/dist/{dist-rDRetJVY.cjs → dist-CeTLA-e5.cjs} +2 -3
  54. package/dist/{dist-rDRetJVY.cjs.map → dist-CeTLA-e5.cjs.map} +1 -1
  55. package/dist/{dist-CBRJax5e.js → dist-DLld1qjf.js} +25 -31
  56. package/dist/{dist-CBRJax5e.js.map → dist-DLld1qjf.js.map} +1 -1
  57. package/dist/{dist-B_bet8uz.js → dist-DjkPkAzV.js} +2 -3
  58. package/dist/{dist-B_bet8uz.js.map → dist-DjkPkAzV.js.map} +1 -1
  59. package/dist/{dist-UKEksCGq.cjs → dist-DsrJXwic.cjs} +11 -13
  60. package/dist/{dist-UKEksCGq.cjs.map → dist-DsrJXwic.cjs.map} +1 -1
  61. package/dist/{dist-DGCnbhNe.js → dist-k77XQGUn.js} +4493 -1043
  62. package/dist/dist-k77XQGUn.js.map +1 -0
  63. package/dist/{dist-3FPW9nVj.cjs → dist-lT2rqyY9.cjs} +26 -32
  64. package/dist/{dist-3FPW9nVj.cjs.map → dist-lT2rqyY9.cjs.map} +1 -1
  65. package/dist/docs/SKILL.md +1 -1
  66. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  67. package/dist/{dynamic-workflows-Rr_6ac1y.js → dynamic-workflows-CTUO0SFu.js} +3 -3
  68. package/dist/{dynamic-workflows-Rr_6ac1y.js.map → dynamic-workflows-CTUO0SFu.js.map} +1 -1
  69. package/dist/{dynamic-workflows-DXlkr-jK.cjs → dynamic-workflows-HwPX3mcf.cjs} +3 -3
  70. package/dist/{dynamic-workflows-DXlkr-jK.cjs.map → dynamic-workflows-HwPX3mcf.cjs.map} +1 -1
  71. package/dist/{editor-builder-BclcHxN6.cjs → editor-builder-BDtiWw0f.cjs} +2 -2
  72. package/dist/{editor-builder-BclcHxN6.cjs.map → editor-builder-BDtiWw0f.cjs.map} +1 -1
  73. package/dist/{editor-builder-D16kc1P6.js → editor-builder-ClFlGXoX.js} +4 -4
  74. package/dist/{editor-builder-D16kc1P6.js.map → editor-builder-ClFlGXoX.js.map} +1 -1
  75. package/dist/{editor-builder-s9WqPJgA.js → editor-builder-DnLCfqnY.js} +2 -2
  76. package/dist/{editor-builder-s9WqPJgA.js.map → editor-builder-DnLCfqnY.js.map} +1 -1
  77. package/dist/{editor-builder-DXHiPX1A.cjs → editor-builder-DtpP1FtW.cjs} +5 -5
  78. package/dist/{editor-builder-DXHiPX1A.cjs.map → editor-builder-DtpP1FtW.cjs.map} +1 -1
  79. package/dist/{helpers-ElhPeCSK.cjs → helpers-CAcEhq38.cjs} +21 -17
  80. package/dist/{helpers-ElhPeCSK.cjs.map → helpers-CAcEhq38.cjs.map} +1 -1
  81. package/dist/{helpers-DLhX1fqc.js → helpers-vrqddDd5.js} +21 -17
  82. package/dist/{helpers-DLhX1fqc.js.map → helpers-vrqddDd5.js.map} +1 -1
  83. package/dist/index.cjs +1 -1
  84. package/dist/logs-CiSw7r0s.cjs +119 -0
  85. package/dist/logs-CiSw7r0s.cjs.map +1 -0
  86. package/dist/logs-CxfPk-iL.js +96 -0
  87. package/dist/logs-CxfPk-iL.js.map +1 -0
  88. package/dist/mcp-BTdLh6E_.js +274 -0
  89. package/dist/mcp-BTdLh6E_.js.map +1 -0
  90. package/dist/mcp-BYqFR5q-.cjs +339 -0
  91. package/dist/mcp-BYqFR5q-.cjs.map +1 -0
  92. package/dist/memory-BHtTSzvJ.js +1739 -0
  93. package/dist/memory-BHtTSzvJ.js.map +1 -0
  94. package/dist/memory-CwwkVDh1.cjs +1906 -0
  95. package/dist/memory-CwwkVDh1.cjs.map +1 -0
  96. package/dist/observability-BBMCMeT-.cjs +502 -0
  97. package/dist/observability-BBMCMeT-.cjs.map +1 -0
  98. package/dist/observability-ZRgRcvoX.js +431 -0
  99. package/dist/observability-ZRgRcvoX.js.map +1 -0
  100. package/dist/{observability-new-endpoints-BU8JYPfh.js → observability-new-endpoints-fjoZzEtk.js} +10 -9
  101. package/dist/{observability-new-endpoints-BU8JYPfh.js.map → observability-new-endpoints-fjoZzEtk.js.map} +1 -1
  102. package/dist/{observability-new-endpoints-AMp9bnMV.cjs → observability-new-endpoints-tG3-odLa.cjs} +11 -10
  103. package/dist/observability-new-endpoints-tG3-odLa.cjs.map +1 -0
  104. package/dist/plans-CiPgWBhO.cjs +68 -0
  105. package/dist/plans-CiPgWBhO.cjs.map +1 -0
  106. package/dist/plans-DCepEY7n.js +57 -0
  107. package/dist/plans-DCepEY7n.js.map +1 -0
  108. package/dist/{probe-image-size-DBGjhUtJ.cjs → probe-image-size-Alv3gwKl.cjs} +194 -184
  109. package/dist/probe-image-size-Alv3gwKl.cjs.map +1 -0
  110. package/dist/{probe-image-size-Dmoxv93t.js → probe-image-size-BdfbUHxx.js} +158 -148
  111. package/dist/probe-image-size-BdfbUHxx.js.map +1 -0
  112. package/dist/responses-4FwMNxoJ.js +628 -0
  113. package/dist/responses-4FwMNxoJ.js.map +1 -0
  114. package/dist/responses-CCRijwDF.cjs +651 -0
  115. package/dist/responses-CCRijwDF.cjs.map +1 -0
  116. package/dist/{responses-CKNdSRkS.cjs → responses-CfcIc53b.cjs} +2 -2
  117. package/dist/{responses-CKNdSRkS.cjs.map → responses-CfcIc53b.cjs.map} +1 -1
  118. package/dist/{rolldown-runtime-Bd6kNlEP.cjs → rolldown-runtime-BwC_XMyb.cjs} +2 -2
  119. package/dist/{rolldown-runtime-maW3aOIk.js → rolldown-runtime-D3Hj5m0v.js} +2 -2
  120. package/dist/{route-builder-BNZs643f.cjs → route-builder-B2Qhhd7C.cjs} +52 -66
  121. package/dist/route-builder-B2Qhhd7C.cjs.map +1 -0
  122. package/dist/{route-builder-BfQYtclb.js → route-builder-CjkWxv4E.js} +51 -65
  123. package/dist/route-builder-CjkWxv4E.js.map +1 -0
  124. package/dist/{routes-Dl6_kWm7.js → routes-CKfXiwRc.js} +5 -3
  125. package/dist/routes-CKfXiwRc.js.map +1 -0
  126. package/dist/{routes-rwufkyUe.js → routes-D1cP2OeF.js} +26 -26
  127. package/dist/{routes-rwufkyUe.js.map → routes-D1cP2OeF.js.map} +1 -1
  128. package/dist/{routes-DPojsNf1.cjs → routes-bxG4x1MV.cjs} +199 -199
  129. package/dist/{routes-DPojsNf1.cjs.map → routes-bxG4x1MV.cjs.map} +1 -1
  130. package/dist/{routes-BULZI-PU.cjs → routes-jXksmX9G.cjs} +5 -3
  131. package/dist/routes-jXksmX9G.cjs.map +1 -0
  132. package/dist/{schedules-Bj-giFbc.cjs → schedules-CTTTCgbk.cjs} +3 -3
  133. package/dist/{schedules-Bj-giFbc.cjs.map → schedules-CTTTCgbk.cjs.map} +1 -1
  134. package/dist/{schedules-BQYgaz66.js → schedules-DXh37n6-.js} +2 -2
  135. package/dist/{schedules-BQYgaz66.js.map → schedules-DXh37n6-.js.map} +1 -1
  136. package/dist/{schema-e0VHpMt0-C0452jOk.cjs → schema-CzbEIyhE-20gGIWkz.cjs} +83 -88
  137. package/dist/schema-CzbEIyhE-20gGIWkz.cjs.map +1 -0
  138. package/dist/{schema-e0VHpMt0-CVP5Hnxy.js → schema-CzbEIyhE-BsMcj9Ws.js} +82 -87
  139. package/dist/schema-CzbEIyhE-BsMcj9Ws.js.map +1 -0
  140. package/dist/scores-D9UgETt_.js +288 -0
  141. package/dist/scores-D9UgETt_.js.map +1 -0
  142. package/dist/scores-DRdtS7NT.cjs +329 -0
  143. package/dist/scores-DRdtS7NT.cjs.map +1 -0
  144. package/dist/server/a2a/store.cjs +1 -1
  145. package/dist/server/auth/index.cjs +2 -2
  146. package/dist/server/auth/index.js +1 -1
  147. package/dist/server/browser-stream/index.cjs +9 -11
  148. package/dist/server/browser-stream/index.cjs.map +1 -1
  149. package/dist/server/browser-stream/index.js +8 -10
  150. package/dist/server/browser-stream/index.js.map +1 -1
  151. package/dist/server/handlers/a2a.cjs +2 -2
  152. package/dist/server/handlers/a2a.js +1 -2
  153. package/dist/server/handlers/agent-builder.cjs +18 -648
  154. package/dist/server/handlers/agent-builder.js +1 -627
  155. package/dist/server/handlers/agent-controller.cjs +5 -5
  156. package/dist/server/handlers/agent-controller.cjs.map +1 -1
  157. package/dist/server/handlers/agent-controller.js +11 -9
  158. package/dist/server/handlers/agent-controller.js.map +1 -1
  159. package/dist/server/handlers/agent-versions.cjs +15 -8
  160. package/dist/server/handlers/agent-versions.cjs.map +1 -1
  161. package/dist/server/handlers/agent-versions.js +14 -7
  162. package/dist/server/handlers/agent-versions.js.map +1 -1
  163. package/dist/server/handlers/agents.cjs +51 -2860
  164. package/dist/server/handlers/agents.js +1 -2806
  165. package/dist/server/handlers/auth.cjs +14 -12
  166. package/dist/server/handlers/auth.cjs.map +1 -1
  167. package/dist/server/handlers/auth.js +20 -16
  168. package/dist/server/handlers/auth.js.map +1 -1
  169. package/dist/server/handlers/author-enrichment.cjs +1 -1
  170. package/dist/server/handlers/authorship.cjs +1 -1
  171. package/dist/server/handlers/authorship.cjs.map +1 -1
  172. package/dist/server/handlers/background-tasks.cjs +2 -2
  173. package/dist/server/handlers/background-tasks.js +1 -2
  174. package/dist/server/handlers/builder-registry.cjs +2 -2
  175. package/dist/server/handlers/builder-registry.js +1 -2
  176. package/dist/server/handlers/channels.cjs +2 -2
  177. package/dist/server/handlers/channels.js +1 -2
  178. package/dist/server/handlers/conversations.cjs +6 -171
  179. package/dist/server/handlers/conversations.js +1 -162
  180. package/dist/server/handlers/datasets.cjs +2 -2
  181. package/dist/server/handlers/datasets.cjs.map +1 -1
  182. package/dist/server/handlers/datasets.js +1 -1
  183. package/dist/server/handlers/dynamic-workflows.cjs +2 -2
  184. package/dist/server/handlers/dynamic-workflows.js +1 -2
  185. package/dist/server/handlers/editor-builder.cjs +2 -2
  186. package/dist/server/handlers/editor-builder.js +1 -2
  187. package/dist/server/handlers/error.cjs +18 -13
  188. package/dist/server/handlers/error.cjs.map +1 -1
  189. package/dist/server/handlers/error.js +17 -12
  190. package/dist/server/handlers/error.js.map +1 -1
  191. package/dist/server/handlers/favorites-enrichment.cjs +2 -2
  192. package/dist/server/handlers/favorites-enrichment.js +1 -1
  193. package/dist/server/handlers/gateway-memory-client.cjs +1 -1
  194. package/dist/server/handlers/logs.cjs +5 -104
  195. package/dist/server/handlers/logs.js +1 -96
  196. package/dist/server/handlers/mcp-client-versions.cjs +15 -8
  197. package/dist/server/handlers/mcp-client-versions.cjs.map +1 -1
  198. package/dist/server/handlers/mcp-client-versions.js +14 -7
  199. package/dist/server/handlers/mcp-client-versions.js.map +1 -1
  200. package/dist/server/handlers/mcp.cjs +12 -289
  201. package/dist/server/handlers/mcp.js +1 -274
  202. package/dist/server/handlers/memory.cjs +29 -1763
  203. package/dist/server/handlers/memory.js +1 -1731
  204. package/dist/server/handlers/observability-list-query-schemas.cjs +1 -1
  205. package/dist/server/handlers/observability-new-endpoints.cjs +2 -2
  206. package/dist/server/handlers/observability-new-endpoints.js +1 -2
  207. package/dist/server/handlers/observability-shared.cjs +2 -2
  208. package/dist/server/handlers/observability-shared.js +1 -1
  209. package/dist/server/handlers/observability-storage-schemas.cjs +1 -1
  210. package/dist/server/handlers/observability.cjs +14 -445
  211. package/dist/server/handlers/observability.js +3 -429
  212. package/dist/server/handlers/plans.cjs +3 -63
  213. package/dist/server/handlers/plans.js +1 -57
  214. package/dist/server/handlers/processor-providers.cjs +2 -2
  215. package/dist/server/handlers/processor-providers.cjs.map +1 -1
  216. package/dist/server/handlers/processor-providers.js +1 -1
  217. package/dist/server/handlers/processors.cjs +13 -15
  218. package/dist/server/handlers/processors.cjs.map +1 -1
  219. package/dist/server/handlers/processors.js +12 -14
  220. package/dist/server/handlers/processors.js.map +1 -1
  221. package/dist/server/handlers/prompt-block-versions.cjs +15 -8
  222. package/dist/server/handlers/prompt-block-versions.cjs.map +1 -1
  223. package/dist/server/handlers/prompt-block-versions.js +14 -7
  224. package/dist/server/handlers/prompt-block-versions.js.map +1 -1
  225. package/dist/server/handlers/responses.adapter.cjs +1 -1
  226. package/dist/server/handlers/responses.adapter.cjs.map +1 -1
  227. package/dist/server/handlers/responses.cjs +5 -632
  228. package/dist/server/handlers/responses.js +1 -624
  229. package/dist/server/handlers/responses.storage.cjs +2 -2
  230. package/dist/server/handlers/schedules-workflows-shim.cjs +1 -1
  231. package/dist/server/handlers/schedules.cjs +2 -2
  232. package/dist/server/handlers/schedules.js +1 -2
  233. package/dist/server/handlers/scorer-versions.cjs +15 -8
  234. package/dist/server/handlers/scorer-versions.cjs.map +1 -1
  235. package/dist/server/handlers/scorer-versions.js +14 -7
  236. package/dist/server/handlers/scorer-versions.js.map +1 -1
  237. package/dist/server/handlers/scores.cjs +8 -299
  238. package/dist/server/handlers/scores.js +1 -288
  239. package/dist/server/handlers/skills-sh-shared.cjs +1 -1
  240. package/dist/server/handlers/stored-agent-favorites.cjs +4 -4
  241. package/dist/server/handlers/stored-agent-favorites.js +3 -3
  242. package/dist/server/handlers/stored-agents.cjs +19 -13
  243. package/dist/server/handlers/stored-agents.cjs.map +1 -1
  244. package/dist/server/handlers/stored-agents.js +18 -12
  245. package/dist/server/handlers/stored-agents.js.map +1 -1
  246. package/dist/server/handlers/stored-mcp-clients.cjs +8 -6
  247. package/dist/server/handlers/stored-mcp-clients.cjs.map +1 -1
  248. package/dist/server/handlers/stored-mcp-clients.js +7 -5
  249. package/dist/server/handlers/stored-mcp-clients.js.map +1 -1
  250. package/dist/server/handlers/stored-prompt-blocks.cjs +3 -3
  251. package/dist/server/handlers/stored-prompt-blocks.js +2 -2
  252. package/dist/server/handlers/stored-scorers.cjs +3 -3
  253. package/dist/server/handlers/stored-scorers.js +2 -2
  254. package/dist/server/handlers/stored-skill-favorites.cjs +4 -4
  255. package/dist/server/handlers/stored-skill-favorites.js +3 -3
  256. package/dist/server/handlers/stored-skills.cjs +6 -5
  257. package/dist/server/handlers/stored-skills.cjs.map +1 -1
  258. package/dist/server/handlers/stored-skills.js +5 -4
  259. package/dist/server/handlers/stored-skills.js.map +1 -1
  260. package/dist/server/handlers/stored-workspaces.cjs +3 -3
  261. package/dist/server/handlers/stored-workspaces.js +2 -2
  262. package/dist/server/handlers/system.cjs +3 -3
  263. package/dist/server/handlers/system.cjs.map +1 -1
  264. package/dist/server/handlers/system.js +2 -2
  265. package/dist/server/handlers/test-utils.cjs +1 -1
  266. package/dist/server/handlers/tool-providers.cjs +2 -2
  267. package/dist/server/handlers/tool-providers.js +1 -1
  268. package/dist/server/handlers/tool-schema-overrides.cjs +1 -1
  269. package/dist/server/handlers/tools.cjs +7 -267
  270. package/dist/server/handlers/tools.js +1 -257
  271. package/dist/server/handlers/utils.cjs +2 -2
  272. package/dist/server/handlers/utils.js +1 -2
  273. package/dist/server/handlers/validate-agent-instructions.cjs +2 -2
  274. package/dist/server/handlers/validate-agent-instructions.js +1 -1
  275. package/dist/server/handlers/validate-avatar.cjs +2 -2
  276. package/dist/server/handlers/validate-avatar.cjs.map +1 -1
  277. package/dist/server/handlers/validate-avatar.js +1 -1
  278. package/dist/server/handlers/validate-avatar.js.map +1 -1
  279. package/dist/server/handlers/vector.cjs +17 -334
  280. package/dist/server/handlers/vector.js +1 -314
  281. package/dist/server/handlers/version-helpers.cjs +1 -1
  282. package/dist/server/handlers/voice.cjs +9 -35
  283. package/dist/server/handlers/voice.js +1 -23
  284. package/dist/server/handlers/workflow-builder.cjs +2 -2
  285. package/dist/server/handlers/workflow-builder.js +1 -2
  286. package/dist/server/handlers/workflows.cjs +30 -1293
  287. package/dist/server/handlers/workflows.js +1 -1257
  288. package/dist/server/handlers/workspace.cjs +27 -1176
  289. package/dist/server/handlers/workspace.js +1 -1146
  290. package/dist/server/handlers.cjs +33 -33
  291. package/dist/server/handlers.js +17 -17
  292. package/dist/server/schemas/index.cjs +6 -6
  293. package/dist/server/schemas/index.js +3 -3
  294. package/dist/server/server-adapter/index.cjs +5 -5
  295. package/dist/server/server-adapter/index.cjs.map +1 -1
  296. package/dist/server/server-adapter/index.js +4 -4
  297. package/dist/server/server-adapter/index.js.map +1 -1
  298. package/dist/tools-CmFSfDMn.js +256 -0
  299. package/dist/tools-CmFSfDMn.js.map +1 -0
  300. package/dist/tools-SPJtxG9N.cjs +291 -0
  301. package/dist/tools-SPJtxG9N.cjs.map +1 -0
  302. package/dist/{utils-DCgeTrq2.cjs → utils-CF76qzZR.cjs} +12 -17
  303. package/dist/{utils-DCgeTrq2.cjs.map → utils-CF76qzZR.cjs.map} +1 -1
  304. package/dist/{utils-DCAUeb6M.js → utils-aoLN3Wfi.js} +11 -16
  305. package/dist/{utils-DCAUeb6M.js.map → utils-aoLN3Wfi.js.map} +1 -1
  306. package/dist/{utils-Du-EpvDs.cjs → utils-dDLIDg8O.cjs} +2 -2
  307. package/dist/{utils-Du-EpvDs.cjs.map → utils-dDLIDg8O.cjs.map} +1 -1
  308. package/dist/vector-BKDD1kwc.cjs +409 -0
  309. package/dist/vector-BKDD1kwc.cjs.map +1 -0
  310. package/dist/vector-TWv4t-4g.js +314 -0
  311. package/dist/vector-TWv4t-4g.js.map +1 -0
  312. package/dist/voice-BnGwlZ75.cjs +70 -0
  313. package/dist/voice-BnGwlZ75.cjs.map +1 -0
  314. package/dist/voice-DjG8tBAD.js +23 -0
  315. package/dist/voice-DjG8tBAD.js.map +1 -0
  316. package/dist/{workflow-builder-Brj3IArM.cjs → workflow-builder-C9-8ZOWF.cjs} +5 -5
  317. package/dist/{workflow-builder-Brj3IArM.cjs.map → workflow-builder-C9-8ZOWF.cjs.map} +1 -1
  318. package/dist/{workflow-builder-DOa1Vx6w.js → workflow-builder-CjlLoQvo.js} +10 -8
  319. package/dist/{workflow-builder-DOa1Vx6w.js.map → workflow-builder-CjlLoQvo.js.map} +1 -1
  320. package/dist/workflows-DjqeJcdJ.cjs +1446 -0
  321. package/dist/workflows-DjqeJcdJ.cjs.map +1 -0
  322. package/dist/workflows-bb-otd2o.js +1273 -0
  323. package/dist/workflows-bb-otd2o.js.map +1 -0
  324. package/dist/workspace-B6kzp-bo.js +1154 -0
  325. package/dist/workspace-B6kzp-bo.js.map +1 -0
  326. package/dist/workspace-COKR1SxH.cjs +1309 -0
  327. package/dist/workspace-COKR1SxH.cjs.map +1 -0
  328. package/package.json +4 -4
  329. package/dist/a2a-B465DD1u.cjs.map +0 -1
  330. package/dist/a2a-CHBSYHxu.js.map +0 -1
  331. package/dist/dist-9c3PXXpk.cjs.map +0 -1
  332. package/dist/dist-B5OwHWTo.cjs +0 -2294
  333. package/dist/dist-B5OwHWTo.cjs.map +0 -1
  334. package/dist/dist-DGCnbhNe.js.map +0 -1
  335. package/dist/dist-DcoIg_tp.js +0 -2293
  336. package/dist/dist-DcoIg_tp.js.map +0 -1
  337. package/dist/observability-new-endpoints-AMp9bnMV.cjs.map +0 -1
  338. package/dist/probe-image-size-DBGjhUtJ.cjs.map +0 -1
  339. package/dist/probe-image-size-Dmoxv93t.js.map +0 -1
  340. package/dist/route-builder-BNZs643f.cjs.map +0 -1
  341. package/dist/route-builder-BfQYtclb.js.map +0 -1
  342. package/dist/routes-BULZI-PU.cjs.map +0 -1
  343. package/dist/routes-Dl6_kWm7.js.map +0 -1
  344. package/dist/schema-Drf2W04o.js +0 -2
  345. package/dist/schema-EQanefYq.cjs +0 -1
  346. package/dist/schema-e0VHpMt0-C0452jOk.cjs.map +0 -1
  347. package/dist/schema-e0VHpMt0-CVP5Hnxy.js.map +0 -1
  348. package/dist/server/handlers/agent-builder.cjs.map +0 -1
  349. package/dist/server/handlers/agent-builder.js.map +0 -1
  350. package/dist/server/handlers/agents.cjs.map +0 -1
  351. package/dist/server/handlers/agents.js.map +0 -1
  352. package/dist/server/handlers/conversations.cjs.map +0 -1
  353. package/dist/server/handlers/conversations.js.map +0 -1
  354. package/dist/server/handlers/logs.cjs.map +0 -1
  355. package/dist/server/handlers/logs.js.map +0 -1
  356. package/dist/server/handlers/mcp.cjs.map +0 -1
  357. package/dist/server/handlers/mcp.js.map +0 -1
  358. package/dist/server/handlers/memory.cjs.map +0 -1
  359. package/dist/server/handlers/memory.js.map +0 -1
  360. package/dist/server/handlers/observability.cjs.map +0 -1
  361. package/dist/server/handlers/observability.js.map +0 -1
  362. package/dist/server/handlers/plans.cjs.map +0 -1
  363. package/dist/server/handlers/plans.js.map +0 -1
  364. package/dist/server/handlers/responses.cjs.map +0 -1
  365. package/dist/server/handlers/responses.js.map +0 -1
  366. package/dist/server/handlers/scores.cjs.map +0 -1
  367. package/dist/server/handlers/scores.js.map +0 -1
  368. package/dist/server/handlers/tools.cjs.map +0 -1
  369. package/dist/server/handlers/tools.js.map +0 -1
  370. package/dist/server/handlers/vector.cjs.map +0 -1
  371. package/dist/server/handlers/vector.js.map +0 -1
  372. package/dist/server/handlers/voice.cjs.map +0 -1
  373. package/dist/server/handlers/voice.js.map +0 -1
  374. package/dist/server/handlers/workflows.cjs.map +0 -1
  375. package/dist/server/handlers/workflows.js.map +0 -1
  376. package/dist/server/handlers/workspace.cjs.map +0 -1
  377. package/dist/server/handlers/workspace.js.map +0 -1
  378. package/dist/sync-Ai_ZDz7U.js +0 -1700
  379. package/dist/sync-Ai_ZDz7U.js.map +0 -1
  380. package/dist/sync-BrO5MtSe.cjs +0 -1729
  381. package/dist/sync-BrO5MtSe.cjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- require("../../rolldown-runtime-Bd6kNlEP.cjs");
2
+ require("../../rolldown-runtime-BwC_XMyb.cjs");
3
3
  //#region src/server/handlers/tool-schema-overrides.ts
4
4
  /**
5
5
  * Core's `CoreToolBuilder` injects runtime-only override fields into tool input
@@ -1,268 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_rolldown_runtime = require("../../rolldown-runtime-Bd6kNlEP.cjs");
3
- const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
4
- const require_common = require("../../common-DhKNoXGp.cjs");
5
- const require_agents = require("../../agents-DoNMSCMt.cjs");
6
- const require_schema_e0VHpMt0 = require("../../schema-e0VHpMt0-C0452jOk.cjs");
7
- const require_route_builder = require("../../route-builder-BNZs643f.cjs");
8
- require("../../schema-EQanefYq.cjs");
9
- const require_utils = require("../../utils-DCgeTrq2.cjs");
10
- const require_server_handlers_error = require("./error.cjs");
11
- const require_utils$1 = require("../../utils-Du-EpvDs.cjs");
12
- const require_server_handlers_tool_schema_overrides = require("./tool-schema-overrides.cjs");
13
- const require_server_handlers_agents = require("./agents.cjs");
14
- let _mastra_core_tools = require("@mastra/core/tools");
15
- //#region src/server/handlers/tools.ts
16
- var tools_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
17
- EXECUTE_AGENT_TOOL_ROUTE: () => EXECUTE_AGENT_TOOL_ROUTE,
18
- EXECUTE_TOOL_ROUTE: () => EXECUTE_TOOL_ROUTE,
19
- GET_AGENT_TOOL_ROUTE: () => GET_AGENT_TOOL_ROUTE,
20
- GET_TOOL_BY_ID_ROUTE: () => GET_TOOL_BY_ID_ROUTE,
21
- LIST_TOOLS_ROUTE: () => LIST_TOOLS_ROUTE
22
- });
23
- /**
24
- * Resolves a schema that may be a lazy function (e.g. AI SDK provider tools).
25
- * Recursively resolves until a non-function value is returned.
26
- * Skips functions that are themselves valid schemas (e.g. ArkType types are
27
- * callable but also implement StandardSchema via ~standard).
28
- */
29
- function resolveLazySchema(schema) {
30
- if (typeof schema === "function" && !("~standard" in schema)) return resolveLazySchema(schema());
31
- return schema;
32
- }
33
- function schemaToJsonSchema(schema) {
34
- if (!schema) return;
35
- return require_schema_e0VHpMt0.standardSchemaToJSONSchema(require_schema_e0VHpMt0.toStandardSchema(schema), { target: "draft-2020-12" });
36
- }
37
- function serializeSchema(schema, options) {
38
- const jsonSchema = schemaToJsonSchema(resolveLazySchema(schema));
39
- if (jsonSchema === void 0) return void 0;
40
- return require_utils.stringify(options?.stripInjectedOverrides ? require_server_handlers_tool_schema_overrides.stripInjectedToolOverrideFields(jsonSchema) : jsonSchema);
41
- }
42
- /**
43
- * Searches dynamically-resolved agent tools (provided via `toolsResolver` /
44
- * function-based `tools`) for a tool with the given id. Used as a fallback
45
- * after the static tool registry (`registeredTools` + `mastra.getToolById`)
46
- * misses, so global tool routes can resolve tools that only exist on agents.
47
- *
48
- * Errors thrown by an individual agent's `listTools()` are logged and
49
- * skipped so a single broken resolver doesn't take down the whole lookup.
50
- */
51
- async function findToolInAgents(mastra, toolId, requestContext) {
52
- const agents = mastra.listAgents() || {};
53
- for (const agent of Object.values(agents)) try {
54
- const agentTools = await agent.listTools({ requestContext });
55
- const found = Object.values(agentTools || {}).find((t) => t.id === toolId);
56
- if (found) return found;
57
- } catch (error) {
58
- mastra.getLogger?.()?.warn?.("Failed to list tools for agent while resolving tool by id", {
59
- agentId: agent?.id,
60
- toolId,
61
- error: error instanceof Error ? error.message : String(error)
62
- });
63
- }
64
- }
65
- /**
66
- * Serializes a tool for API responses, handling both regular tools (with Zod schemas)
67
- * and provider-defined tools (with AI SDK lazy schemas).
68
- */
69
- function serializeTool(tool) {
70
- if ((0, _mastra_core_tools.isProviderDefinedTool)(tool)) {
71
- const resolvedInput = resolveLazySchema(tool.inputSchema);
72
- const resolvedOutput = resolveLazySchema(tool.outputSchema);
73
- return {
74
- ...tool,
75
- inputSchema: resolvedInput && typeof resolvedInput === "object" && "jsonSchema" in resolvedInput ? require_utils.stringify(resolvedInput.jsonSchema) : void 0,
76
- outputSchema: resolvedOutput && typeof resolvedOutput === "object" && "jsonSchema" in resolvedOutput ? require_utils.stringify(resolvedOutput.jsonSchema) : void 0
77
- };
78
- }
79
- return {
80
- ...tool,
81
- inputSchema: serializeSchema(tool.inputSchema, { stripInjectedOverrides: true }),
82
- outputSchema: serializeSchema(tool.outputSchema),
83
- requestContextSchema: serializeSchema(tool.requestContextSchema)
84
- };
85
- }
86
- const LIST_TOOLS_ROUTE = require_route_builder.createRoute({
87
- method: "GET",
88
- path: "/tools",
89
- responseType: "json",
90
- responseSchema: require_agents.listToolsResponseSchema,
91
- summary: "List all tools",
92
- description: "Returns a list of all available tools in the system",
93
- tags: ["Tools"],
94
- requiresAuth: true,
95
- handler: async ({ mastra, registeredTools, requestContext }) => {
96
- try {
97
- const registered = registeredTools && Object.keys(registeredTools).length > 0 ? registeredTools : {};
98
- const allTools = {};
99
- const seenToolIds = /* @__PURE__ */ new Map();
100
- for (const [key, tool] of Object.entries(registered)) {
101
- const toolId = typeof tool?.id === "string" ? tool.id : void 0;
102
- if (toolId !== void 0) seenToolIds.set(toolId, key);
103
- allTools[key] = tool;
104
- }
105
- for (const [key, tool] of Object.entries(mastra.listTools() ?? {})) {
106
- const toolId = typeof tool?.id === "string" ? tool.id : void 0;
107
- if (toolId !== void 0 && seenToolIds.has(toolId)) continue;
108
- if (toolId !== void 0) seenToolIds.set(toolId, key);
109
- allTools[key] = tool;
110
- }
111
- const serializedTools = Object.entries(allTools).reduce((acc, [id, _tool]) => {
112
- acc[id] = serializeTool(_tool);
113
- return acc;
114
- }, {});
115
- const fgaProvider = mastra.getServer?.()?.fga;
116
- const user = requestContext?.get("user");
117
- if (fgaProvider && user) {
118
- const toolList = Object.entries(serializedTools).map(([id, t]) => ({
119
- id,
120
- ...t
121
- }));
122
- const accessible = await fgaProvider.filterAccessible(user, toolList, "tool", require_utils$1.MastraFGAPermissions.TOOLS_READ);
123
- const accessibleSet = new Set(accessible.map((t) => t.id));
124
- for (const id of Object.keys(serializedTools)) if (!accessibleSet.has(id)) delete serializedTools[id];
125
- }
126
- return serializedTools;
127
- } catch (error) {
128
- return require_server_handlers_error.handleError(error, "Error getting tools");
129
- }
130
- }
131
- });
132
- const GET_TOOL_BY_ID_ROUTE = require_route_builder.createRoute({
133
- method: "GET",
134
- path: "/tools/:toolId",
135
- responseType: "json",
136
- pathParamSchema: require_agents.toolIdPathParams,
137
- responseSchema: require_agents.serializedToolSchema,
138
- summary: "Get tool by ID",
139
- description: "Returns details for a specific tool including its schema and configuration",
140
- tags: ["Tools"],
141
- requiresAuth: true,
142
- handler: async ({ mastra, registeredTools, toolId, requestContext }) => {
143
- try {
144
- let tool;
145
- if (registeredTools && Object.keys(registeredTools).length > 0) tool = Object.values(registeredTools).find((t) => t.id === toolId);
146
- if (!tool) try {
147
- tool = mastra.getToolById(toolId);
148
- } catch {}
149
- if (!tool) tool = await findToolInAgents(mastra, toolId, requestContext);
150
- if (!tool) throw new require_http_exception.HTTPException(404, { message: "Tool not found" });
151
- return serializeTool(tool);
152
- } catch (error) {
153
- return require_server_handlers_error.handleError(error, "Error getting tool");
154
- }
155
- }
156
- });
157
- const EXECUTE_TOOL_ROUTE = require_route_builder.createRoute({
158
- method: "POST",
159
- path: "/tools/:toolId/execute",
160
- responseType: "json",
161
- pathParamSchema: require_agents.toolIdPathParams,
162
- queryParamSchema: require_common.optionalRunIdSchema,
163
- bodySchema: require_agents.executeToolContextBodySchema,
164
- responseSchema: require_agents.executeToolResponseSchema,
165
- summary: "Execute tool",
166
- description: "Executes a specific tool with the provided input data",
167
- tags: ["Tools"],
168
- requiresAuth: true,
169
- handler: async ({ mastra, runId, toolId, registeredTools, requestContext, ...bodyParams }) => {
170
- try {
171
- if (!toolId) throw new require_http_exception.HTTPException(400, { message: "Tool ID is required" });
172
- let tool;
173
- if (registeredTools && Object.keys(registeredTools).length > 0) tool = Object.values(registeredTools).find((t) => t.id === toolId);
174
- if (!tool) try {
175
- tool = mastra.getToolById(toolId);
176
- } catch {}
177
- if (!tool) tool = await findToolInAgents(mastra, toolId, requestContext);
178
- if (!tool) throw new require_http_exception.HTTPException(404, { message: "Tool not found" });
179
- if (!tool?.execute) throw new require_http_exception.HTTPException(400, { message: "Tool is not executable" });
180
- const { data } = bodyParams;
181
- require_utils$1.validateBody({ data });
182
- let result;
183
- if ((0, _mastra_core_tools.isVercelTool)(tool)) result = await tool.execute(data);
184
- else result = await tool.execute(data, {
185
- mastra,
186
- requestContext,
187
- tracingContext: { currentSpan: void 0 },
188
- ...runId ? { workflow: {
189
- runId,
190
- suspend: async () => {}
191
- } } : {}
192
- });
193
- return result;
194
- } catch (error) {
195
- return require_server_handlers_error.handleError(error, "Error executing tool");
196
- }
197
- }
198
- });
199
- const GET_AGENT_TOOL_ROUTE = require_route_builder.createRoute({
200
- method: "GET",
201
- path: "/agents/:agentId/tools/:toolId",
202
- responseType: "json",
203
- pathParamSchema: require_agents.agentToolPathParams,
204
- responseSchema: require_agents.serializedToolSchema,
205
- summary: "Get agent tool",
206
- description: "Returns details for a specific tool assigned to the agent",
207
- tags: ["Agents", "Tools"],
208
- requiresAuth: true,
209
- handler: async ({ mastra, agentId, toolId, requestContext }) => {
210
- try {
211
- if (!agentId) throw new require_http_exception.HTTPException(400, { message: "Agent ID is required" });
212
- const agentTools = await (await require_server_handlers_agents.getAgentFromSystem({
213
- mastra,
214
- agentId
215
- })).listTools({ requestContext });
216
- const tool = Object.values(agentTools || {}).find((tool) => tool.id === toolId);
217
- if (!tool) throw new require_http_exception.HTTPException(404, { message: "Tool not found" });
218
- return serializeTool(tool);
219
- } catch (error) {
220
- return require_server_handlers_error.handleError(error, "Error getting agent tool");
221
- }
222
- }
223
- });
224
- const EXECUTE_AGENT_TOOL_ROUTE = require_route_builder.createRoute({
225
- method: "POST",
226
- path: "/agents/:agentId/tools/:toolId/execute",
227
- responseType: "json",
228
- pathParamSchema: require_agents.agentToolPathParams,
229
- bodySchema: require_agents.executeToolBodySchema,
230
- responseSchema: require_agents.executeToolResponseSchema,
231
- summary: "Execute agent tool",
232
- description: "Executes a specific tool assigned to the agent with the provided input data",
233
- tags: ["Agents", "Tools"],
234
- requiresAuth: true,
235
- handler: async ({ mastra, agentId, toolId, data, requestContext }) => {
236
- try {
237
- if (!agentId) throw new require_http_exception.HTTPException(400, { message: "Agent ID is required" });
238
- const agentTools = await (await require_server_handlers_agents.getAgentFromSystem({
239
- mastra,
240
- agentId
241
- })).listTools({ requestContext });
242
- const tool = Object.values(agentTools || {}).find((tool) => tool.id === toolId);
243
- if (!tool) throw new require_http_exception.HTTPException(404, { message: "Tool not found" });
244
- if (!tool?.execute) throw new require_http_exception.HTTPException(400, { message: "Tool is not executable" });
245
- return await tool.execute(data, {
246
- mastra,
247
- requestContext,
248
- tracingContext: { currentSpan: void 0 }
249
- });
250
- } catch (error) {
251
- return require_server_handlers_error.handleError(error, "Error executing agent tool");
252
- }
253
- }
254
- });
255
- //#endregion
256
- exports.EXECUTE_AGENT_TOOL_ROUTE = EXECUTE_AGENT_TOOL_ROUTE;
257
- exports.EXECUTE_TOOL_ROUTE = EXECUTE_TOOL_ROUTE;
258
- exports.GET_AGENT_TOOL_ROUTE = GET_AGENT_TOOL_ROUTE;
259
- exports.GET_TOOL_BY_ID_ROUTE = GET_TOOL_BY_ID_ROUTE;
260
- exports.LIST_TOOLS_ROUTE = LIST_TOOLS_ROUTE;
261
- Object.defineProperty(exports, "tools_exports", {
262
- enumerable: true,
263
- get: function() {
264
- return tools_exports;
265
- }
266
- });
267
-
268
- //# sourceMappingURL=tools.cjs.map
2
+ require("../../rolldown-runtime-BwC_XMyb.cjs");
3
+ const require_tools = require("../../tools-SPJtxG9N.cjs");
4
+ exports.EXECUTE_AGENT_TOOL_ROUTE = require_tools.EXECUTE_AGENT_TOOL_ROUTE;
5
+ exports.EXECUTE_TOOL_ROUTE = require_tools.EXECUTE_TOOL_ROUTE;
6
+ exports.GET_AGENT_TOOL_ROUTE = require_tools.GET_AGENT_TOOL_ROUTE;
7
+ exports.GET_TOOL_BY_ID_ROUTE = require_tools.GET_TOOL_BY_ID_ROUTE;
8
+ exports.LIST_TOOLS_ROUTE = require_tools.LIST_TOOLS_ROUTE;
@@ -1,257 +1 @@
1
- import { r as __exportAll } from "../../rolldown-runtime-maW3aOIk.js";
2
- import { t as HTTPException } from "../../http-exception-CyfxZB6W.js";
3
- import { o as optionalRunIdSchema } from "../../common-Y30XtCyr.js";
4
- import { $ as toolIdPathParams, E as listToolsResponseSchema, b as executeToolContextBodySchema, l as agentToolPathParams, q as serializedToolSchema, x as executeToolResponseSchema, y as executeToolBodySchema } from "../../agents-X1E7fW3p.js";
5
- import { n as standardSchemaToJSONSchema, r as toStandardSchema } from "../../schema-e0VHpMt0-CVP5Hnxy.js";
6
- import { n as createRoute } from "../../route-builder-BfQYtclb.js";
7
- import "../../schema-Drf2W04o.js";
8
- import { l as stringify } from "../../utils-DCAUeb6M.js";
9
- import { handleError } from "./error.js";
10
- import { g as MastraFGAPermissions, p as validateBody } from "../../utils-BBJlS81s.js";
11
- import { stripInjectedToolOverrideFields } from "./tool-schema-overrides.js";
12
- import { getAgentFromSystem } from "./agents.js";
13
- import { isProviderDefinedTool, isVercelTool } from "@mastra/core/tools";
14
- //#region src/server/handlers/tools.ts
15
- var tools_exports = /* @__PURE__ */ __exportAll({
16
- EXECUTE_AGENT_TOOL_ROUTE: () => EXECUTE_AGENT_TOOL_ROUTE,
17
- EXECUTE_TOOL_ROUTE: () => EXECUTE_TOOL_ROUTE,
18
- GET_AGENT_TOOL_ROUTE: () => GET_AGENT_TOOL_ROUTE,
19
- GET_TOOL_BY_ID_ROUTE: () => GET_TOOL_BY_ID_ROUTE,
20
- LIST_TOOLS_ROUTE: () => LIST_TOOLS_ROUTE
21
- });
22
- /**
23
- * Resolves a schema that may be a lazy function (e.g. AI SDK provider tools).
24
- * Recursively resolves until a non-function value is returned.
25
- * Skips functions that are themselves valid schemas (e.g. ArkType types are
26
- * callable but also implement StandardSchema via ~standard).
27
- */
28
- function resolveLazySchema(schema) {
29
- if (typeof schema === "function" && !("~standard" in schema)) return resolveLazySchema(schema());
30
- return schema;
31
- }
32
- function schemaToJsonSchema(schema) {
33
- if (!schema) return;
34
- return standardSchemaToJSONSchema(toStandardSchema(schema), { target: "draft-2020-12" });
35
- }
36
- function serializeSchema(schema, options) {
37
- const jsonSchema = schemaToJsonSchema(resolveLazySchema(schema));
38
- if (jsonSchema === void 0) return void 0;
39
- return stringify(options?.stripInjectedOverrides ? stripInjectedToolOverrideFields(jsonSchema) : jsonSchema);
40
- }
41
- /**
42
- * Searches dynamically-resolved agent tools (provided via `toolsResolver` /
43
- * function-based `tools`) for a tool with the given id. Used as a fallback
44
- * after the static tool registry (`registeredTools` + `mastra.getToolById`)
45
- * misses, so global tool routes can resolve tools that only exist on agents.
46
- *
47
- * Errors thrown by an individual agent's `listTools()` are logged and
48
- * skipped so a single broken resolver doesn't take down the whole lookup.
49
- */
50
- async function findToolInAgents(mastra, toolId, requestContext) {
51
- const agents = mastra.listAgents() || {};
52
- for (const agent of Object.values(agents)) try {
53
- const agentTools = await agent.listTools({ requestContext });
54
- const found = Object.values(agentTools || {}).find((t) => t.id === toolId);
55
- if (found) return found;
56
- } catch (error) {
57
- mastra.getLogger?.()?.warn?.("Failed to list tools for agent while resolving tool by id", {
58
- agentId: agent?.id,
59
- toolId,
60
- error: error instanceof Error ? error.message : String(error)
61
- });
62
- }
63
- }
64
- /**
65
- * Serializes a tool for API responses, handling both regular tools (with Zod schemas)
66
- * and provider-defined tools (with AI SDK lazy schemas).
67
- */
68
- function serializeTool(tool) {
69
- if (isProviderDefinedTool(tool)) {
70
- const resolvedInput = resolveLazySchema(tool.inputSchema);
71
- const resolvedOutput = resolveLazySchema(tool.outputSchema);
72
- return {
73
- ...tool,
74
- inputSchema: resolvedInput && typeof resolvedInput === "object" && "jsonSchema" in resolvedInput ? stringify(resolvedInput.jsonSchema) : void 0,
75
- outputSchema: resolvedOutput && typeof resolvedOutput === "object" && "jsonSchema" in resolvedOutput ? stringify(resolvedOutput.jsonSchema) : void 0
76
- };
77
- }
78
- return {
79
- ...tool,
80
- inputSchema: serializeSchema(tool.inputSchema, { stripInjectedOverrides: true }),
81
- outputSchema: serializeSchema(tool.outputSchema),
82
- requestContextSchema: serializeSchema(tool.requestContextSchema)
83
- };
84
- }
85
- const LIST_TOOLS_ROUTE = createRoute({
86
- method: "GET",
87
- path: "/tools",
88
- responseType: "json",
89
- responseSchema: listToolsResponseSchema,
90
- summary: "List all tools",
91
- description: "Returns a list of all available tools in the system",
92
- tags: ["Tools"],
93
- requiresAuth: true,
94
- handler: async ({ mastra, registeredTools, requestContext }) => {
95
- try {
96
- const registered = registeredTools && Object.keys(registeredTools).length > 0 ? registeredTools : {};
97
- const allTools = {};
98
- const seenToolIds = /* @__PURE__ */ new Map();
99
- for (const [key, tool] of Object.entries(registered)) {
100
- const toolId = typeof tool?.id === "string" ? tool.id : void 0;
101
- if (toolId !== void 0) seenToolIds.set(toolId, key);
102
- allTools[key] = tool;
103
- }
104
- for (const [key, tool] of Object.entries(mastra.listTools() ?? {})) {
105
- const toolId = typeof tool?.id === "string" ? tool.id : void 0;
106
- if (toolId !== void 0 && seenToolIds.has(toolId)) continue;
107
- if (toolId !== void 0) seenToolIds.set(toolId, key);
108
- allTools[key] = tool;
109
- }
110
- const serializedTools = Object.entries(allTools).reduce((acc, [id, _tool]) => {
111
- acc[id] = serializeTool(_tool);
112
- return acc;
113
- }, {});
114
- const fgaProvider = mastra.getServer?.()?.fga;
115
- const user = requestContext?.get("user");
116
- if (fgaProvider && user) {
117
- const toolList = Object.entries(serializedTools).map(([id, t]) => ({
118
- id,
119
- ...t
120
- }));
121
- const accessible = await fgaProvider.filterAccessible(user, toolList, "tool", MastraFGAPermissions.TOOLS_READ);
122
- const accessibleSet = new Set(accessible.map((t) => t.id));
123
- for (const id of Object.keys(serializedTools)) if (!accessibleSet.has(id)) delete serializedTools[id];
124
- }
125
- return serializedTools;
126
- } catch (error) {
127
- return handleError(error, "Error getting tools");
128
- }
129
- }
130
- });
131
- const GET_TOOL_BY_ID_ROUTE = createRoute({
132
- method: "GET",
133
- path: "/tools/:toolId",
134
- responseType: "json",
135
- pathParamSchema: toolIdPathParams,
136
- responseSchema: serializedToolSchema,
137
- summary: "Get tool by ID",
138
- description: "Returns details for a specific tool including its schema and configuration",
139
- tags: ["Tools"],
140
- requiresAuth: true,
141
- handler: async ({ mastra, registeredTools, toolId, requestContext }) => {
142
- try {
143
- let tool;
144
- if (registeredTools && Object.keys(registeredTools).length > 0) tool = Object.values(registeredTools).find((t) => t.id === toolId);
145
- if (!tool) try {
146
- tool = mastra.getToolById(toolId);
147
- } catch {}
148
- if (!tool) tool = await findToolInAgents(mastra, toolId, requestContext);
149
- if (!tool) throw new HTTPException(404, { message: "Tool not found" });
150
- return serializeTool(tool);
151
- } catch (error) {
152
- return handleError(error, "Error getting tool");
153
- }
154
- }
155
- });
156
- const EXECUTE_TOOL_ROUTE = createRoute({
157
- method: "POST",
158
- path: "/tools/:toolId/execute",
159
- responseType: "json",
160
- pathParamSchema: toolIdPathParams,
161
- queryParamSchema: optionalRunIdSchema,
162
- bodySchema: executeToolContextBodySchema,
163
- responseSchema: executeToolResponseSchema,
164
- summary: "Execute tool",
165
- description: "Executes a specific tool with the provided input data",
166
- tags: ["Tools"],
167
- requiresAuth: true,
168
- handler: async ({ mastra, runId, toolId, registeredTools, requestContext, ...bodyParams }) => {
169
- try {
170
- if (!toolId) throw new HTTPException(400, { message: "Tool ID is required" });
171
- let tool;
172
- if (registeredTools && Object.keys(registeredTools).length > 0) tool = Object.values(registeredTools).find((t) => t.id === toolId);
173
- if (!tool) try {
174
- tool = mastra.getToolById(toolId);
175
- } catch {}
176
- if (!tool) tool = await findToolInAgents(mastra, toolId, requestContext);
177
- if (!tool) throw new HTTPException(404, { message: "Tool not found" });
178
- if (!tool?.execute) throw new HTTPException(400, { message: "Tool is not executable" });
179
- const { data } = bodyParams;
180
- validateBody({ data });
181
- let result;
182
- if (isVercelTool(tool)) result = await tool.execute(data);
183
- else result = await tool.execute(data, {
184
- mastra,
185
- requestContext,
186
- tracingContext: { currentSpan: void 0 },
187
- ...runId ? { workflow: {
188
- runId,
189
- suspend: async () => {}
190
- } } : {}
191
- });
192
- return result;
193
- } catch (error) {
194
- return handleError(error, "Error executing tool");
195
- }
196
- }
197
- });
198
- const GET_AGENT_TOOL_ROUTE = createRoute({
199
- method: "GET",
200
- path: "/agents/:agentId/tools/:toolId",
201
- responseType: "json",
202
- pathParamSchema: agentToolPathParams,
203
- responseSchema: serializedToolSchema,
204
- summary: "Get agent tool",
205
- description: "Returns details for a specific tool assigned to the agent",
206
- tags: ["Agents", "Tools"],
207
- requiresAuth: true,
208
- handler: async ({ mastra, agentId, toolId, requestContext }) => {
209
- try {
210
- if (!agentId) throw new HTTPException(400, { message: "Agent ID is required" });
211
- const agentTools = await (await getAgentFromSystem({
212
- mastra,
213
- agentId
214
- })).listTools({ requestContext });
215
- const tool = Object.values(agentTools || {}).find((tool) => tool.id === toolId);
216
- if (!tool) throw new HTTPException(404, { message: "Tool not found" });
217
- return serializeTool(tool);
218
- } catch (error) {
219
- return handleError(error, "Error getting agent tool");
220
- }
221
- }
222
- });
223
- const EXECUTE_AGENT_TOOL_ROUTE = createRoute({
224
- method: "POST",
225
- path: "/agents/:agentId/tools/:toolId/execute",
226
- responseType: "json",
227
- pathParamSchema: agentToolPathParams,
228
- bodySchema: executeToolBodySchema,
229
- responseSchema: executeToolResponseSchema,
230
- summary: "Execute agent tool",
231
- description: "Executes a specific tool assigned to the agent with the provided input data",
232
- tags: ["Agents", "Tools"],
233
- requiresAuth: true,
234
- handler: async ({ mastra, agentId, toolId, data, requestContext }) => {
235
- try {
236
- if (!agentId) throw new HTTPException(400, { message: "Agent ID is required" });
237
- const agentTools = await (await getAgentFromSystem({
238
- mastra,
239
- agentId
240
- })).listTools({ requestContext });
241
- const tool = Object.values(agentTools || {}).find((tool) => tool.id === toolId);
242
- if (!tool) throw new HTTPException(404, { message: "Tool not found" });
243
- if (!tool?.execute) throw new HTTPException(400, { message: "Tool is not executable" });
244
- return await tool.execute(data, {
245
- mastra,
246
- requestContext,
247
- tracingContext: { currentSpan: void 0 }
248
- });
249
- } catch (error) {
250
- return handleError(error, "Error executing agent tool");
251
- }
252
- }
253
- });
254
- //#endregion
255
- export { EXECUTE_AGENT_TOOL_ROUTE, EXECUTE_TOOL_ROUTE, GET_AGENT_TOOL_ROUTE, GET_TOOL_BY_ID_ROUTE, LIST_TOOLS_ROUTE, tools_exports as t };
256
-
257
- //# sourceMappingURL=tools.js.map
1
+ export { t as EXECUTE_AGENT_TOOL_ROUTE, n as EXECUTE_TOOL_ROUTE, r as GET_AGENT_TOOL_ROUTE, i as GET_TOOL_BY_ID_ROUTE, a as LIST_TOOLS_ROUTE } from "../../tools-CmFSfDMn.js";
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- require("../../rolldown-runtime-Bd6kNlEP.cjs");
3
- const require_utils = require("../../utils-Du-EpvDs.cjs");
2
+ require("../../rolldown-runtime-BwC_XMyb.cjs");
3
+ const require_utils = require("../../utils-dDLIDg8O.cjs");
4
4
  exports.applyEffectiveThreadId = require_utils.applyEffectiveThreadId;
5
5
  exports.enforceThreadAccess = require_utils.enforceThreadAccess;
6
6
  exports.getContextResourceId = require_utils.getContextResourceId;
@@ -1,2 +1 @@
1
- import { a as getEffectiveThreadId, c as parseFilters, d as sanitizeBody, f as stripClientCredentialHeaders, h as validateThreadOwnership, i as getEffectiveResourceId, l as parsePerPage, m as validateRunOwnership, n as enforceThreadAccess, o as getPublicWorkflowById, p as validateBody, r as getContextResourceId, s as mergeBodyRequestContext, t as applyEffectiveThreadId, u as requireEffectiveResourceId } from "../../utils-BBJlS81s.js";
2
- export { applyEffectiveThreadId, enforceThreadAccess, getContextResourceId, getEffectiveResourceId, getEffectiveThreadId, getPublicWorkflowById, mergeBodyRequestContext, parseFilters, parsePerPage, requireEffectiveResourceId, sanitizeBody, stripClientCredentialHeaders, validateBody, validateRunOwnership, validateThreadOwnership };
1
+ export { t as applyEffectiveThreadId, n as enforceThreadAccess, r as getContextResourceId, i as getEffectiveResourceId, a as getEffectiveThreadId, o as getPublicWorkflowById, s as mergeBodyRequestContext, c as parseFilters, l as parsePerPage, u as requireEffectiveResourceId, d as sanitizeBody, f as stripClientCredentialHeaders, p as validateBody, m as validateRunOwnership, h as validateThreadOwnership } from "../../utils-BBJlS81s.js";
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- require("../../rolldown-runtime-Bd6kNlEP.cjs");
2
+ require("../../rolldown-runtime-BwC_XMyb.cjs");
3
3
  const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
4
- const require_utils = require("../../utils-DCgeTrq2.cjs");
4
+ const require_utils = require("../../utils-CF76qzZR.cjs");
5
5
  //#region src/server/handlers/validate-agent-instructions.ts
6
6
  const UNPUBLISHED_REFERENCES_MESSAGE = "Unable to use unpublished referenced prompt blocks: {ids}. Publish these prompt blocks and try again.";
7
7
  /**
@@ -1,5 +1,5 @@
1
1
  import { t as HTTPException } from "../../http-exception-CyfxZB6W.js";
2
- import { i as getStoredResourceScope, n as assertStoredResourceScope } from "../../utils-DCAUeb6M.js";
2
+ import { i as getStoredResourceScope, n as assertStoredResourceScope } from "../../utils-aoLN3Wfi.js";
3
3
  //#region src/server/handlers/validate-agent-instructions.ts
4
4
  const UNPUBLISHED_REFERENCES_MESSAGE = "Unable to use unpublished referenced prompt blocks: {ids}. Publish these prompt blocks and try again.";
5
5
  /**
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- require("../../rolldown-runtime-Bd6kNlEP.cjs");
2
+ require("../../rolldown-runtime-BwC_XMyb.cjs");
3
3
  const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
4
4
  //#region src/server/handlers/validate-avatar.ts
5
- const AVATAR_MAX_BYTES = 512 * 1024;
5
+ const AVATAR_MAX_BYTES = 524288;
6
6
  /**
7
7
  * Validates `metadata.avatarUrl` if present.
8
8
  * Ensures it's a well-formed data URL and the decoded payload is ≤ 512 KB.
@@ -1 +1 @@
1
- {"version":3,"file":"validate-avatar.cjs","names":["HTTPException"],"sources":["../../../src/server/handlers/validate-avatar.ts"],"sourcesContent":["import { HTTPException } from '../http-exception';\n\nconst AVATAR_MAX_BYTES = 512 * 1024; // 512 KB\n\n/**\n * Validates `metadata.avatarUrl` if present.\n * Ensures it's a well-formed data URL and the decoded payload is ≤ 512 KB.\n * No-ops when metadata is absent or doesn't contain avatarUrl.\n */\nexport function validateMetadataAvatarUrl(metadata: Record<string, unknown> | undefined): void {\n if (!metadata || !('avatarUrl' in metadata) || metadata.avatarUrl === null || metadata.avatarUrl === undefined)\n return;\n if (typeof metadata.avatarUrl !== 'string') {\n throw new HTTPException(400, { message: 'metadata.avatarUrl must be a string' });\n }\n\n const dataUrl = metadata.avatarUrl;\n const match = dataUrl.match(/^data:([^;]+);base64,(.+)$/);\n if (!match) {\n throw new HTTPException(400, {\n message: 'metadata.avatarUrl must be a valid data URL (data:<mime>;base64,<data>)',\n });\n }\n\n // `Buffer.from(..., 'base64')` decodes leniently — it silently ignores\n // invalid characters and never throws. Validate the payload format strictly\n // before measuring its byte length so malformed input is rejected.\n const base64Payload = match[2]!;\n const isStrictBase64 =\n base64Payload.length > 0 &&\n base64Payload.length % 4 === 0 &&\n /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(base64Payload);\n if (!isStrictBase64) {\n throw new HTTPException(400, { message: 'metadata.avatarUrl contains invalid base64' });\n }\n const byteLength = Buffer.from(base64Payload, 'base64').byteLength;\n\n if (byteLength === 0) {\n throw new HTTPException(400, { message: 'metadata.avatarUrl is empty' });\n }\n\n if (byteLength > AVATAR_MAX_BYTES) {\n throw new HTTPException(413, {\n message: `metadata.avatarUrl exceeds ${AVATAR_MAX_BYTES}-byte limit (got ${byteLength})`,\n });\n }\n}\n"],"mappings":";;;;AAEA,MAAM,mBAAmB,MAAM;;;;;;AAO/B,SAAgB,0BAA0B,UAAqD;CAC7F,IAAI,CAAC,YAAY,EAAE,eAAe,aAAa,SAAS,cAAc,QAAQ,SAAS,cAAc,KAAA,GACnG;CACF,IAAI,OAAO,SAAS,cAAc,UAChC,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,sCAAsC,CAAC;CAIjF,MAAM,QADU,SAAS,UACH,MAAM,4BAA4B;CACxD,IAAI,CAAC,OACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAC3B,SAAS,0EACX,CAAC;CAMH,MAAM,gBAAgB,MAAM;CAK5B,IAAI,EAHF,cAAc,SAAS,KACvB,cAAc,SAAS,MAAM,KAC7B,mEAAmE,KAAK,aAAa,IAErF,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,6CAA6C,CAAC;CAExF,MAAM,aAAa,OAAO,KAAK,eAAe,QAAQ,CAAC,CAAC;CAExD,IAAI,eAAe,GACjB,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,8BAA8B,CAAC;CAGzE,IAAI,aAAa,kBACf,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAC3B,SAAS,8BAA8B,iBAAiB,mBAAmB,WAAW,GACxF,CAAC;AAEL"}
1
+ {"version":3,"file":"validate-avatar.cjs","names":["HTTPException"],"sources":["../../../src/server/handlers/validate-avatar.ts"],"sourcesContent":["import { HTTPException } from '../http-exception';\n\nconst AVATAR_MAX_BYTES = 512 * 1024; // 512 KB\n\n/**\n * Validates `metadata.avatarUrl` if present.\n * Ensures it's a well-formed data URL and the decoded payload is ≤ 512 KB.\n * No-ops when metadata is absent or doesn't contain avatarUrl.\n */\nexport function validateMetadataAvatarUrl(metadata: Record<string, unknown> | undefined): void {\n if (!metadata || !('avatarUrl' in metadata) || metadata.avatarUrl === null || metadata.avatarUrl === undefined)\n return;\n if (typeof metadata.avatarUrl !== 'string') {\n throw new HTTPException(400, { message: 'metadata.avatarUrl must be a string' });\n }\n\n const dataUrl = metadata.avatarUrl;\n const match = dataUrl.match(/^data:([^;]+);base64,(.+)$/);\n if (!match) {\n throw new HTTPException(400, {\n message: 'metadata.avatarUrl must be a valid data URL (data:<mime>;base64,<data>)',\n });\n }\n\n // `Buffer.from(..., 'base64')` decodes leniently — it silently ignores\n // invalid characters and never throws. Validate the payload format strictly\n // before measuring its byte length so malformed input is rejected.\n const base64Payload = match[2]!;\n const isStrictBase64 =\n base64Payload.length > 0 &&\n base64Payload.length % 4 === 0 &&\n /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(base64Payload);\n if (!isStrictBase64) {\n throw new HTTPException(400, { message: 'metadata.avatarUrl contains invalid base64' });\n }\n const byteLength = Buffer.from(base64Payload, 'base64').byteLength;\n\n if (byteLength === 0) {\n throw new HTTPException(400, { message: 'metadata.avatarUrl is empty' });\n }\n\n if (byteLength > AVATAR_MAX_BYTES) {\n throw new HTTPException(413, {\n message: `metadata.avatarUrl exceeds ${AVATAR_MAX_BYTES}-byte limit (got ${byteLength})`,\n });\n }\n}\n"],"mappings":";;;;AAEA,MAAM,mBAAmB;;;;;;AAOzB,SAAgB,0BAA0B,UAAqD;CAC7F,IAAI,CAAC,YAAY,EAAE,eAAe,aAAa,SAAS,cAAc,QAAQ,SAAS,cAAc,KAAA,GACnG;CACF,IAAI,OAAO,SAAS,cAAc,UAChC,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,sCAAsC,CAAC;CAIjF,MAAM,QADU,SAAS,UACH,MAAM,4BAA4B;CACxD,IAAI,CAAC,OACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAC3B,SAAS,0EACX,CAAC;CAMH,MAAM,gBAAgB,MAAM;CAK5B,IAAI,EAHF,cAAc,SAAS,KACvB,cAAc,SAAS,MAAM,KAC7B,mEAAmE,KAAK,aAAa,IAErF,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,6CAA6C,CAAC;CAExF,MAAM,aAAa,OAAO,KAAK,eAAe,QAAQ,CAAC,CAAC;CAExD,IAAI,eAAe,GACjB,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,8BAA8B,CAAC;CAGzE,IAAI,aAAa,kBACf,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAC3B,SAAS,8BAA8B,iBAAiB,mBAAmB,WAAW,GACxF,CAAC;AAEL"}
@@ -1,6 +1,6 @@
1
1
  import { t as HTTPException } from "../../http-exception-CyfxZB6W.js";
2
2
  //#region src/server/handlers/validate-avatar.ts
3
- const AVATAR_MAX_BYTES = 512 * 1024;
3
+ const AVATAR_MAX_BYTES = 524288;
4
4
  /**
5
5
  * Validates `metadata.avatarUrl` if present.
6
6
  * Ensures it's a well-formed data URL and the decoded payload is ≤ 512 KB.
@@ -1 +1 @@
1
- {"version":3,"file":"validate-avatar.js","names":[],"sources":["../../../src/server/handlers/validate-avatar.ts"],"sourcesContent":["import { HTTPException } from '../http-exception';\n\nconst AVATAR_MAX_BYTES = 512 * 1024; // 512 KB\n\n/**\n * Validates `metadata.avatarUrl` if present.\n * Ensures it's a well-formed data URL and the decoded payload is ≤ 512 KB.\n * No-ops when metadata is absent or doesn't contain avatarUrl.\n */\nexport function validateMetadataAvatarUrl(metadata: Record<string, unknown> | undefined): void {\n if (!metadata || !('avatarUrl' in metadata) || metadata.avatarUrl === null || metadata.avatarUrl === undefined)\n return;\n if (typeof metadata.avatarUrl !== 'string') {\n throw new HTTPException(400, { message: 'metadata.avatarUrl must be a string' });\n }\n\n const dataUrl = metadata.avatarUrl;\n const match = dataUrl.match(/^data:([^;]+);base64,(.+)$/);\n if (!match) {\n throw new HTTPException(400, {\n message: 'metadata.avatarUrl must be a valid data URL (data:<mime>;base64,<data>)',\n });\n }\n\n // `Buffer.from(..., 'base64')` decodes leniently — it silently ignores\n // invalid characters and never throws. Validate the payload format strictly\n // before measuring its byte length so malformed input is rejected.\n const base64Payload = match[2]!;\n const isStrictBase64 =\n base64Payload.length > 0 &&\n base64Payload.length % 4 === 0 &&\n /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(base64Payload);\n if (!isStrictBase64) {\n throw new HTTPException(400, { message: 'metadata.avatarUrl contains invalid base64' });\n }\n const byteLength = Buffer.from(base64Payload, 'base64').byteLength;\n\n if (byteLength === 0) {\n throw new HTTPException(400, { message: 'metadata.avatarUrl is empty' });\n }\n\n if (byteLength > AVATAR_MAX_BYTES) {\n throw new HTTPException(413, {\n message: `metadata.avatarUrl exceeds ${AVATAR_MAX_BYTES}-byte limit (got ${byteLength})`,\n });\n }\n}\n"],"mappings":";;AAEA,MAAM,mBAAmB,MAAM;;;;;;AAO/B,SAAgB,0BAA0B,UAAqD;CAC7F,IAAI,CAAC,YAAY,EAAE,eAAe,aAAa,SAAS,cAAc,QAAQ,SAAS,cAAc,KAAA,GACnG;CACF,IAAI,OAAO,SAAS,cAAc,UAChC,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,sCAAsC,CAAC;CAIjF,MAAM,QADU,SAAS,UACH,MAAM,4BAA4B;CACxD,IAAI,CAAC,OACH,MAAM,IAAI,cAAc,KAAK,EAC3B,SAAS,0EACX,CAAC;CAMH,MAAM,gBAAgB,MAAM;CAK5B,IAAI,EAHF,cAAc,SAAS,KACvB,cAAc,SAAS,MAAM,KAC7B,mEAAmE,KAAK,aAAa,IAErF,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,6CAA6C,CAAC;CAExF,MAAM,aAAa,OAAO,KAAK,eAAe,QAAQ,CAAC,CAAC;CAExD,IAAI,eAAe,GACjB,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,8BAA8B,CAAC;CAGzE,IAAI,aAAa,kBACf,MAAM,IAAI,cAAc,KAAK,EAC3B,SAAS,8BAA8B,iBAAiB,mBAAmB,WAAW,GACxF,CAAC;AAEL"}
1
+ {"version":3,"file":"validate-avatar.js","names":[],"sources":["../../../src/server/handlers/validate-avatar.ts"],"sourcesContent":["import { HTTPException } from '../http-exception';\n\nconst AVATAR_MAX_BYTES = 512 * 1024; // 512 KB\n\n/**\n * Validates `metadata.avatarUrl` if present.\n * Ensures it's a well-formed data URL and the decoded payload is ≤ 512 KB.\n * No-ops when metadata is absent or doesn't contain avatarUrl.\n */\nexport function validateMetadataAvatarUrl(metadata: Record<string, unknown> | undefined): void {\n if (!metadata || !('avatarUrl' in metadata) || metadata.avatarUrl === null || metadata.avatarUrl === undefined)\n return;\n if (typeof metadata.avatarUrl !== 'string') {\n throw new HTTPException(400, { message: 'metadata.avatarUrl must be a string' });\n }\n\n const dataUrl = metadata.avatarUrl;\n const match = dataUrl.match(/^data:([^;]+);base64,(.+)$/);\n if (!match) {\n throw new HTTPException(400, {\n message: 'metadata.avatarUrl must be a valid data URL (data:<mime>;base64,<data>)',\n });\n }\n\n // `Buffer.from(..., 'base64')` decodes leniently — it silently ignores\n // invalid characters and never throws. Validate the payload format strictly\n // before measuring its byte length so malformed input is rejected.\n const base64Payload = match[2]!;\n const isStrictBase64 =\n base64Payload.length > 0 &&\n base64Payload.length % 4 === 0 &&\n /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(base64Payload);\n if (!isStrictBase64) {\n throw new HTTPException(400, { message: 'metadata.avatarUrl contains invalid base64' });\n }\n const byteLength = Buffer.from(base64Payload, 'base64').byteLength;\n\n if (byteLength === 0) {\n throw new HTTPException(400, { message: 'metadata.avatarUrl is empty' });\n }\n\n if (byteLength > AVATAR_MAX_BYTES) {\n throw new HTTPException(413, {\n message: `metadata.avatarUrl exceeds ${AVATAR_MAX_BYTES}-byte limit (got ${byteLength})`,\n });\n }\n}\n"],"mappings":";;AAEA,MAAM,mBAAmB;;;;;;AAOzB,SAAgB,0BAA0B,UAAqD;CAC7F,IAAI,CAAC,YAAY,EAAE,eAAe,aAAa,SAAS,cAAc,QAAQ,SAAS,cAAc,KAAA,GACnG;CACF,IAAI,OAAO,SAAS,cAAc,UAChC,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,sCAAsC,CAAC;CAIjF,MAAM,QADU,SAAS,UACH,MAAM,4BAA4B;CACxD,IAAI,CAAC,OACH,MAAM,IAAI,cAAc,KAAK,EAC3B,SAAS,0EACX,CAAC;CAMH,MAAM,gBAAgB,MAAM;CAK5B,IAAI,EAHF,cAAc,SAAS,KACvB,cAAc,SAAS,MAAM,KAC7B,mEAAmE,KAAK,aAAa,IAErF,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,6CAA6C,CAAC;CAExF,MAAM,aAAa,OAAO,KAAK,eAAe,QAAQ,CAAC,CAAC;CAExD,IAAI,eAAe,GACjB,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,8BAA8B,CAAC;CAGzE,IAAI,aAAa,kBACf,MAAM,IAAI,cAAc,KAAK,EAC3B,SAAS,8BAA8B,iBAAiB,mBAAmB,WAAW,GACxF,CAAC;AAEL"}