@mastra/server 1.82.0-alpha.3 → 1.83.0-alpha.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 (395) hide show
  1. package/dist/_types/@internal_core@0.1.4/dist/storage/index.d.ts +24 -2
  2. package/dist/_types/@mastra_schema-compat@1.3.17/dist/_types/{@internal_ai-v6@0.0.94 → @internal_ai-v6@0.0.95}/dist/index.d.ts +96 -15
  3. package/dist/_types/@mastra_schema-compat@1.3.17/dist/provider-compats/anthropic.d.ts +1 -1
  4. package/dist/_types/@mastra_schema-compat@1.3.17/dist/provider-compats/deepseek.d.ts +1 -1
  5. package/dist/_types/@mastra_schema-compat@1.3.17/dist/provider-compats/meta.d.ts +1 -1
  6. package/dist/_types/@mastra_schema-compat@1.3.17/dist/schema.types.d.ts +3 -3
  7. package/dist/{a2a-CoiG3TAj.js → a2a-DCpd3CTv.js} +4 -4
  8. package/dist/{a2a-CoiG3TAj.js.map → a2a-DCpd3CTv.js.map} +1 -1
  9. package/dist/{a2a-DvqRdny6.cjs → a2a-kz7NjjCg.cjs} +4 -4
  10. package/dist/{a2a-DvqRdny6.cjs.map → a2a-kz7NjjCg.cjs.map} +1 -1
  11. package/dist/{agent-builder-C_L1i2eE.js → agent-builder-CocfOSi8.js} +7 -7
  12. package/dist/{agent-builder-C_L1i2eE.js.map → agent-builder-CocfOSi8.js.map} +1 -1
  13. package/dist/{agent-builder-D0Up9Fw1.cjs → agent-builder-uDstZROq.cjs} +7 -7
  14. package/dist/{agent-builder-D0Up9Fw1.cjs.map → agent-builder-uDstZROq.cjs.map} +1 -1
  15. package/dist/{agents-CgcW6lHt.js → agents-BI8ez-FT.js} +7 -7
  16. package/dist/{agents-CgcW6lHt.js.map → agents-BI8ez-FT.js.map} +1 -1
  17. package/dist/{agents-DOHGWXDa.cjs → agents-DsfsDhIT.cjs} +7 -7
  18. package/dist/{agents-DOHGWXDa.cjs.map → agents-DsfsDhIT.cjs.map} +1 -1
  19. package/dist/{api-schema-manifest-Ci2qUYHc.js → api-schema-manifest-ChxbN16M.js} +3 -3
  20. package/dist/{api-schema-manifest-Ci2qUYHc.js.map → api-schema-manifest-ChxbN16M.js.map} +1 -1
  21. package/dist/{api-schema-manifest-DCHOlOuJ.cjs → api-schema-manifest-DtYTPvh9.cjs} +3 -3
  22. package/dist/{api-schema-manifest-DCHOlOuJ.cjs.map → api-schema-manifest-DtYTPvh9.cjs.map} +1 -1
  23. package/dist/{background-tasks-BHhn4YZA.js → background-tasks-BIuEr2of.js} +3 -3
  24. package/dist/{background-tasks-BHhn4YZA.js.map → background-tasks-BIuEr2of.js.map} +1 -1
  25. package/dist/{background-tasks-Ci2tlxJC.cjs → background-tasks-BXTIp0QV.cjs} +3 -3
  26. package/dist/{background-tasks-Ci2tlxJC.cjs.map → background-tasks-BXTIp0QV.cjs.map} +1 -1
  27. package/dist/{builder-registry-m_gHCe12.js → builder-registry-Dd7pbJ5A.js} +4 -4
  28. package/dist/{builder-registry-m_gHCe12.js.map → builder-registry-Dd7pbJ5A.js.map} +1 -1
  29. package/dist/{builder-registry-D1_hGKCJ.cjs → builder-registry-DrBUA6EZ.cjs} +4 -4
  30. package/dist/{builder-registry-D1_hGKCJ.cjs.map → builder-registry-DrBUA6EZ.cjs.map} +1 -1
  31. package/dist/{channels-hhQ3vD30.js → channels-B6hwVMbV.js} +4 -4
  32. package/dist/{channels-hhQ3vD30.js.map → channels-B6hwVMbV.js.map} +1 -1
  33. package/dist/{channels-Bfkp5vYI.cjs → channels-DbfSH5O2.cjs} +4 -4
  34. package/dist/{channels-Bfkp5vYI.cjs.map → channels-DbfSH5O2.cjs.map} +1 -1
  35. package/dist/{conversations-xS7yHuG1.js → conversations-BbZYXKIa.js} +5 -5
  36. package/dist/{conversations-xS7yHuG1.js.map → conversations-BbZYXKIa.js.map} +1 -1
  37. package/dist/{conversations-Ch_VuVwY.cjs → conversations-QuKJVEFe.cjs} +5 -5
  38. package/dist/{conversations-Ch_VuVwY.cjs.map → conversations-QuKJVEFe.cjs.map} +1 -1
  39. package/dist/{dist-BKNKucT9.cjs → dist-Ctfk9X6u.cjs} +208 -247
  40. package/dist/dist-Ctfk9X6u.cjs.map +1 -0
  41. package/dist/dist-DJjVMQiv.js +1 -0
  42. package/dist/{dist-CIYZuix4.js → dist-OKFDPspq.js} +208 -247
  43. package/dist/dist-OKFDPspq.js.map +1 -0
  44. package/dist/{dist-DgKeISkr.cjs → dist-ZYvqJK9p.cjs} +1 -1
  45. package/dist/docs/SKILL.md +3 -1
  46. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  47. package/dist/docs/references/docs-knowledge-overview.md +106 -0
  48. package/dist/docs/references/docs-server-custom-adapters.md +4 -0
  49. package/dist/docs/references/docs-studio-knowledge.md +45 -24
  50. package/dist/docs/references/reference-server-invoke-route.md +86 -0
  51. package/dist/docs/references/reference-server-routes.md +63 -0
  52. package/dist/{dynamic-workflows-DDauBnDt.js → dynamic-workflows-CyaZLmHX.js} +2 -2
  53. package/dist/{dynamic-workflows-DDauBnDt.js.map → dynamic-workflows-CyaZLmHX.js.map} +1 -1
  54. package/dist/{dynamic-workflows-CpCkqM1g.cjs → dynamic-workflows-ZmzWJXxG.cjs} +2 -2
  55. package/dist/{dynamic-workflows-CpCkqM1g.cjs.map → dynamic-workflows-ZmzWJXxG.cjs.map} +1 -1
  56. package/dist/{editor-builder-Ceen28s8.js → editor-builder-CbfX5bvL.js} +4 -4
  57. package/dist/{editor-builder-Ceen28s8.js.map → editor-builder-CbfX5bvL.js.map} +1 -1
  58. package/dist/{editor-builder-CKfy5eZY.cjs → editor-builder-CjJlqR9a.cjs} +4 -4
  59. package/dist/{editor-builder-CKfy5eZY.cjs.map → editor-builder-CjJlqR9a.cjs.map} +1 -1
  60. package/dist/{helpers-DNq3LtLq.js → helpers-B29a1nM3.js} +51 -48
  61. package/dist/helpers-B29a1nM3.js.map +1 -0
  62. package/dist/{helpers-BKtUXhz2.cjs → helpers-CylvUIZm.cjs} +56 -47
  63. package/dist/helpers-CylvUIZm.cjs.map +1 -0
  64. package/dist/{knowledge-Ba74qr0v.js → knowledge-Cd2cCq-Y.js} +4 -4
  65. package/dist/{knowledge-Ba74qr0v.js.map → knowledge-Cd2cCq-Y.js.map} +1 -1
  66. package/dist/{knowledge-urR7FFG8.cjs → knowledge-Q_SCnD9m.cjs} +4 -4
  67. package/dist/{knowledge-urR7FFG8.cjs.map → knowledge-Q_SCnD9m.cjs.map} +1 -1
  68. package/dist/{logs-B57_NKDn.js → logs-C5L6gRGr.js} +4 -4
  69. package/dist/{logs-B57_NKDn.js.map → logs-C5L6gRGr.js.map} +1 -1
  70. package/dist/{logs-BJN3M88A.cjs → logs-DWIbFIw6.cjs} +4 -4
  71. package/dist/{logs-BJN3M88A.cjs.map → logs-DWIbFIw6.cjs.map} +1 -1
  72. package/dist/{mcp-B9BILfJP.cjs → mcp-CKvOVfHn.cjs} +3 -3
  73. package/dist/{mcp-B9BILfJP.cjs.map → mcp-CKvOVfHn.cjs.map} +1 -1
  74. package/dist/{mcp-BkmWZD6M.js → mcp-CntC59iU.js} +3 -3
  75. package/dist/{mcp-BkmWZD6M.js.map → mcp-CntC59iU.js.map} +1 -1
  76. package/dist/{memory-Dqod_AK9.cjs → memory-DIos0BE-.cjs} +57 -15
  77. package/dist/{memory-Dqod_AK9.cjs.map → memory-DIos0BE-.cjs.map} +1 -1
  78. package/dist/{memory-ipOCmg0C.js → memory-JzgWJevA.js} +57 -15
  79. package/dist/{memory-ipOCmg0C.js.map → memory-JzgWJevA.js.map} +1 -1
  80. package/dist/{observability-DBtyAJnb.js → observability-BCTkIhJT.js} +3 -3
  81. package/dist/{observability-DBtyAJnb.js.map → observability-BCTkIhJT.js.map} +1 -1
  82. package/dist/{observability-BtdW6mjq.cjs → observability-mnHHbnoc.cjs} +3 -3
  83. package/dist/{observability-BtdW6mjq.cjs.map → observability-mnHHbnoc.cjs.map} +1 -1
  84. package/dist/{observability-new-endpoints-jjCgXuTF.cjs → observability-new-endpoints-B6fo20v5.cjs} +129 -955
  85. package/dist/observability-new-endpoints-B6fo20v5.cjs.map +1 -0
  86. package/dist/{observability-new-endpoints-Di7m_-xc.js → observability-new-endpoints-DHn8uKyr.js} +51 -877
  87. package/dist/observability-new-endpoints-DHn8uKyr.js.map +1 -0
  88. package/dist/observability-signal-context-BYOFtbM_.cjs +1317 -0
  89. package/dist/observability-signal-context-BYOFtbM_.cjs.map +1 -0
  90. package/dist/observability-signal-context-CL5-rCWM.js +952 -0
  91. package/dist/observability-signal-context-CL5-rCWM.js.map +1 -0
  92. package/dist/{plans-nHOnlGzr.js → plans-9hdkc-t8.js} +4 -4
  93. package/dist/{plans-nHOnlGzr.js.map → plans-9hdkc-t8.js.map} +1 -1
  94. package/dist/{plans-Djcp3C0d.cjs → plans-DMs8SVBG.cjs} +4 -4
  95. package/dist/{plans-Djcp3C0d.cjs.map → plans-DMs8SVBG.cjs.map} +1 -1
  96. package/dist/{probe-image-size-DGTRKrgq.js → probe-image-size-Cxm5QtwO.js} +2 -2
  97. package/dist/{probe-image-size-DGTRKrgq.js.map → probe-image-size-Cxm5QtwO.js.map} +1 -1
  98. package/dist/{probe-image-size-BAwk1h6w.cjs → probe-image-size-bDuzMW0E.cjs} +2 -2
  99. package/dist/{probe-image-size-BAwk1h6w.cjs.map → probe-image-size-bDuzMW0E.cjs.map} +1 -1
  100. package/dist/{responses-CEet9y8G.js → responses-B5_syoSo.js} +5 -5
  101. package/dist/{responses-CEet9y8G.js.map → responses-B5_syoSo.js.map} +1 -1
  102. package/dist/{responses-BdOStKtX.cjs → responses-CNKJoC5a.cjs} +5 -5
  103. package/dist/{responses-BdOStKtX.cjs.map → responses-CNKJoC5a.cjs.map} +1 -1
  104. package/dist/{route-builder-BxPrwNog.js → route-builder-BKEzjw_M.js} +2 -2
  105. package/dist/{route-builder-BxPrwNog.js.map → route-builder-BKEzjw_M.js.map} +1 -1
  106. package/dist/{route-builder-CvARmqnA.cjs → route-builder-DHqDrSSy.cjs} +2 -2
  107. package/dist/{route-builder-CvARmqnA.cjs.map → route-builder-DHqDrSSy.cjs.map} +1 -1
  108. package/dist/{routes-DU_FlwJP.cjs → routes-BYQ38dFx.cjs} +32 -32
  109. package/dist/{routes-DU_FlwJP.cjs.map → routes-BYQ38dFx.cjs.map} +1 -1
  110. package/dist/{routes-5FpkkzND.js → routes-C0pgNcG-.js} +32 -32
  111. package/dist/{routes-5FpkkzND.js.map → routes-C0pgNcG-.js.map} +1 -1
  112. package/dist/{schedules-D8ShgpY3.cjs → schedules-CvWX2yKR.cjs} +3 -3
  113. package/dist/{schedules-D8ShgpY3.cjs.map → schedules-CvWX2yKR.cjs.map} +1 -1
  114. package/dist/{schedules-CGViSLZC.js → schedules-D9CKB18-.js} +3 -3
  115. package/dist/{schedules-CGViSLZC.js.map → schedules-D9CKB18-.js.map} +1 -1
  116. package/dist/{schema-Bf12g7KC-DBc4NSds.js → schema-Bf12g7KC-5EUrrnSf.js} +96 -96
  117. package/dist/{schema-Bf12g7KC-DBc4NSds.js.map → schema-Bf12g7KC-5EUrrnSf.js.map} +1 -1
  118. package/dist/{schema-Bf12g7KC-plP4Ir6h.cjs → schema-Bf12g7KC-C5XzpQxe.cjs} +96 -96
  119. package/dist/{schema-Bf12g7KC-plP4Ir6h.cjs.map → schema-Bf12g7KC-C5XzpQxe.cjs.map} +1 -1
  120. package/dist/{scores-BaDFGpmr.js → scores-B3mS6vqB.js} +4 -4
  121. package/dist/{scores-BaDFGpmr.js.map → scores-B3mS6vqB.js.map} +1 -1
  122. package/dist/{scores-Bw6Tuga5.cjs → scores-Dxa8dDfV.cjs} +4 -4
  123. package/dist/{scores-Bw6Tuga5.cjs.map → scores-Dxa8dDfV.cjs.map} +1 -1
  124. package/dist/server/auth/helpers.d.ts +20 -0
  125. package/dist/server/auth/helpers.d.ts.map +1 -1
  126. package/dist/server/auth/index.cjs +2 -1
  127. package/dist/server/auth/index.js +2 -2
  128. package/dist/server/handlers/a2a.cjs +1 -1
  129. package/dist/server/handlers/a2a.js +1 -1
  130. package/dist/server/handlers/agent-builder.cjs +1 -1
  131. package/dist/server/handlers/agent-builder.js +1 -1
  132. package/dist/server/handlers/agent-controller.cjs +4 -4
  133. package/dist/server/handlers/agent-controller.js +4 -4
  134. package/dist/server/handlers/agent-versions.cjs +4 -4
  135. package/dist/server/handlers/agent-versions.js +4 -4
  136. package/dist/server/handlers/agents.cjs +1 -1
  137. package/dist/server/handlers/agents.js +1 -1
  138. package/dist/server/handlers/auth.cjs +4 -4
  139. package/dist/server/handlers/auth.js +4 -4
  140. package/dist/server/handlers/authorship.cjs +1 -1
  141. package/dist/server/handlers/authorship.js +1 -1
  142. package/dist/server/handlers/background-tasks.cjs +1 -1
  143. package/dist/server/handlers/background-tasks.js +1 -1
  144. package/dist/server/handlers/builder-registry.cjs +1 -1
  145. package/dist/server/handlers/builder-registry.js +1 -1
  146. package/dist/server/handlers/channels.cjs +1 -1
  147. package/dist/server/handlers/channels.js +1 -1
  148. package/dist/server/handlers/conversations.cjs +1 -1
  149. package/dist/server/handlers/conversations.js +1 -1
  150. package/dist/server/handlers/datasets.cjs +3 -3
  151. package/dist/server/handlers/datasets.js +3 -3
  152. package/dist/server/handlers/dynamic-workflows.cjs +1 -1
  153. package/dist/server/handlers/dynamic-workflows.js +1 -1
  154. package/dist/server/handlers/editor-builder.cjs +1 -1
  155. package/dist/server/handlers/editor-builder.js +1 -1
  156. package/dist/server/handlers/favorites-enrichment.cjs +1 -1
  157. package/dist/server/handlers/favorites-enrichment.js +1 -1
  158. package/dist/server/handlers/gateway-memory-client.cjs +4 -1
  159. package/dist/server/handlers/gateway-memory-client.cjs.map +1 -1
  160. package/dist/server/handlers/gateway-memory-client.d.ts.map +1 -1
  161. package/dist/server/handlers/gateway-memory-client.js +4 -1
  162. package/dist/server/handlers/gateway-memory-client.js.map +1 -1
  163. package/dist/server/handlers/knowledge.cjs +1 -1
  164. package/dist/server/handlers/knowledge.js +1 -1
  165. package/dist/server/handlers/logs.cjs +1 -1
  166. package/dist/server/handlers/logs.js +1 -1
  167. package/dist/server/handlers/mcp-client-versions.cjs +3 -3
  168. package/dist/server/handlers/mcp-client-versions.js +3 -3
  169. package/dist/server/handlers/mcp.cjs +1 -1
  170. package/dist/server/handlers/mcp.js +1 -1
  171. package/dist/server/handlers/memory.cjs +1 -1
  172. package/dist/server/handlers/memory.d.ts.map +1 -1
  173. package/dist/server/handlers/memory.js +1 -1
  174. package/dist/server/handlers/observability-new-endpoints.cjs +1 -1
  175. package/dist/server/handlers/observability-new-endpoints.d.ts +84 -8
  176. package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
  177. package/dist/server/handlers/observability-new-endpoints.js +1 -1
  178. package/dist/server/handlers/observability-shared.cjs +1 -1
  179. package/dist/server/handlers/observability-shared.js +1 -1
  180. package/dist/server/handlers/observability-signal-context.cjs +4 -0
  181. package/dist/server/handlers/observability-signal-context.d.ts +42 -0
  182. package/dist/server/handlers/observability-signal-context.d.ts.map +1 -0
  183. package/dist/server/handlers/observability-signal-context.js +1 -0
  184. package/dist/server/handlers/observability.cjs +2 -2
  185. package/dist/server/handlers/observability.js +2 -2
  186. package/dist/server/handlers/plans.cjs +1 -1
  187. package/dist/server/handlers/plans.js +1 -1
  188. package/dist/server/handlers/processor-providers.cjs +2 -2
  189. package/dist/server/handlers/processor-providers.js +2 -2
  190. package/dist/server/handlers/processors.cjs +2 -2
  191. package/dist/server/handlers/processors.js +2 -2
  192. package/dist/server/handlers/prompt-block-versions.cjs +3 -3
  193. package/dist/server/handlers/prompt-block-versions.js +3 -3
  194. package/dist/server/handlers/responses.cjs +1 -1
  195. package/dist/server/handlers/responses.js +1 -1
  196. package/dist/server/handlers/responses.storage.cjs +1 -1
  197. package/dist/server/handlers/responses.storage.js +1 -1
  198. package/dist/server/handlers/schedules.cjs +1 -1
  199. package/dist/server/handlers/schedules.js +1 -1
  200. package/dist/server/handlers/scorer-versions.cjs +3 -3
  201. package/dist/server/handlers/scorer-versions.js +3 -3
  202. package/dist/server/handlers/scores.cjs +1 -1
  203. package/dist/server/handlers/scores.js +1 -1
  204. package/dist/server/handlers/stored-agent-favorites.cjs +5 -5
  205. package/dist/server/handlers/stored-agent-favorites.js +5 -5
  206. package/dist/server/handlers/stored-agents.cjs +7 -7
  207. package/dist/server/handlers/stored-agents.js +7 -7
  208. package/dist/server/handlers/stored-mcp-clients.cjs +3 -3
  209. package/dist/server/handlers/stored-mcp-clients.js +3 -3
  210. package/dist/server/handlers/stored-prompt-blocks.cjs +3 -3
  211. package/dist/server/handlers/stored-prompt-blocks.js +3 -3
  212. package/dist/server/handlers/stored-scorers.cjs +3 -3
  213. package/dist/server/handlers/stored-scorers.js +3 -3
  214. package/dist/server/handlers/stored-skill-favorites.cjs +5 -5
  215. package/dist/server/handlers/stored-skill-favorites.js +5 -5
  216. package/dist/server/handlers/stored-skills.cjs +5 -5
  217. package/dist/server/handlers/stored-skills.js +5 -5
  218. package/dist/server/handlers/stored-workspaces.cjs +3 -3
  219. package/dist/server/handlers/stored-workspaces.js +3 -3
  220. package/dist/server/handlers/system.cjs +3 -3
  221. package/dist/server/handlers/system.js +3 -3
  222. package/dist/server/handlers/tool-providers.cjs +3 -3
  223. package/dist/server/handlers/tool-providers.js +3 -3
  224. package/dist/server/handlers/tools.cjs +1 -1
  225. package/dist/server/handlers/tools.js +1 -1
  226. package/dist/server/handlers/utils.cjs +1 -1
  227. package/dist/server/handlers/utils.js +1 -1
  228. package/dist/server/handlers/validate-agent-instructions.cjs +1 -1
  229. package/dist/server/handlers/validate-agent-instructions.js +1 -1
  230. package/dist/server/handlers/vector.cjs +1 -1
  231. package/dist/server/handlers/vector.js +1 -1
  232. package/dist/server/handlers/workflow-builder.cjs +1 -1
  233. package/dist/server/handlers/workflow-builder.js +1 -1
  234. package/dist/server/handlers/workflows.cjs +1 -1
  235. package/dist/server/handlers/workflows.d.ts.map +1 -1
  236. package/dist/server/handlers/workflows.js +1 -1
  237. package/dist/server/handlers/workspace.cjs +1 -1
  238. package/dist/server/handlers/workspace.d.ts +23 -23
  239. package/dist/server/handlers/workspace.js +1 -1
  240. package/dist/server/handlers.cjs +16 -16
  241. package/dist/server/handlers.js +16 -16
  242. package/dist/server/schemas/agents.d.ts +1 -1
  243. package/dist/server/schemas/index.cjs +20 -20
  244. package/dist/server/schemas/index.js +20 -20
  245. package/dist/server/server-adapter/index.cjs +231 -61
  246. package/dist/server/server-adapter/index.cjs.map +1 -1
  247. package/dist/server/server-adapter/index.d.ts +67 -1
  248. package/dist/server/server-adapter/index.d.ts.map +1 -1
  249. package/dist/server/server-adapter/index.js +226 -63
  250. package/dist/server/server-adapter/index.js.map +1 -1
  251. package/dist/server/server-adapter/mcp-auth.d.ts +16 -1
  252. package/dist/server/server-adapter/mcp-auth.d.ts.map +1 -1
  253. package/dist/server/server-adapter/routes/observability.d.ts +42 -4
  254. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
  255. package/dist/{tools-CI5oeJWT.cjs → tools-C9W7WvyI.cjs} +7 -7
  256. package/dist/{tools-CI5oeJWT.cjs.map → tools-C9W7WvyI.cjs.map} +1 -1
  257. package/dist/{tools-BAmCNGM5.js → tools-Ce7SFoT1.js} +7 -7
  258. package/dist/{tools-BAmCNGM5.js.map → tools-Ce7SFoT1.js.map} +1 -1
  259. package/dist/{utils-9PRHHTGC.cjs → utils-BXEJ6FZC.cjs} +2 -2
  260. package/dist/{utils-9PRHHTGC.cjs.map → utils-BXEJ6FZC.cjs.map} +1 -1
  261. package/dist/{utils-BhBJHsqX.cjs → utils-CL-m2SWZ.cjs} +3 -3
  262. package/dist/{utils-BhBJHsqX.cjs.map → utils-CL-m2SWZ.cjs.map} +1 -1
  263. package/dist/{utils-B15w-1hm.js → utils-CTYtskHa.js} +2 -2
  264. package/dist/{utils-B15w-1hm.js.map → utils-CTYtskHa.js.map} +1 -1
  265. package/dist/{utils-Dy_dQTlK.js → utils-y-cW3mQU.js} +3 -3
  266. package/dist/{utils-Dy_dQTlK.js.map → utils-y-cW3mQU.js.map} +1 -1
  267. package/dist/{vector-BZ1bKtwM.cjs → vector-6k7Ft7EX.cjs} +3 -3
  268. package/dist/{vector-BZ1bKtwM.cjs.map → vector-6k7Ft7EX.cjs.map} +1 -1
  269. package/dist/{vector-BAs5o6mH.js → vector-BWFSDXvg.js} +3 -3
  270. package/dist/{vector-BAs5o6mH.js.map → vector-BWFSDXvg.js.map} +1 -1
  271. package/dist/{workflow-builder-CaSfD6oL.js → workflow-builder-BNk301jl.js} +4 -4
  272. package/dist/{workflow-builder-CaSfD6oL.js.map → workflow-builder-BNk301jl.js.map} +1 -1
  273. package/dist/{workflow-builder-tr_D_ZDN.cjs → workflow-builder-CsOEskDo.cjs} +4 -4
  274. package/dist/{workflow-builder-tr_D_ZDN.cjs.map → workflow-builder-CsOEskDo.cjs.map} +1 -1
  275. package/dist/{workflows-BxXS5AfE.js → workflows-BAFGmHCW.js} +24 -13
  276. package/dist/workflows-BAFGmHCW.js.map +1 -0
  277. package/dist/{workflows-Cdi6w8JW.cjs → workflows-CJz5Eh0B.cjs} +76 -65
  278. package/dist/workflows-CJz5Eh0B.cjs.map +1 -0
  279. package/dist/{workspace-BU6sQpbV.cjs → workspace-C7PytFzz.cjs} +3 -3
  280. package/dist/{workspace-BU6sQpbV.cjs.map → workspace-C7PytFzz.cjs.map} +1 -1
  281. package/dist/{workspace-CS-GYTve.js → workspace-CYwDvH0G.js} +3 -3
  282. package/dist/{workspace-CS-GYTve.js.map → workspace-CYwDvH0G.js.map} +1 -1
  283. package/package.json +9 -9
  284. package/dist/dist-BKNKucT9.cjs.map +0 -1
  285. package/dist/dist-CIYZuix4.js.map +0 -1
  286. package/dist/dist-mNQb9_wX.js +0 -1
  287. package/dist/helpers-BKtUXhz2.cjs.map +0 -1
  288. package/dist/helpers-DNq3LtLq.js.map +0 -1
  289. package/dist/observability-new-endpoints-Di7m_-xc.js.map +0 -1
  290. package/dist/observability-new-endpoints-jjCgXuTF.cjs.map +0 -1
  291. package/dist/workflows-BxXS5AfE.js.map +0 -1
  292. package/dist/workflows-Cdi6w8JW.cjs.map +0 -1
  293. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/@internal_core@0.1.4/dist/request-context/index.d.ts +0 -0
  294. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/@internal_core@0.1.4/dist/routes/index.d.ts +0 -0
  295. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/@internal_core@0.1.4/dist/types/index.d.ts +0 -0
  296. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/classic/checks.d.ts +0 -0
  297. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/classic/coerce.d.ts +0 -0
  298. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/classic/compat.d.ts +0 -0
  299. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/classic/deep-partial.d.ts +0 -0
  300. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/classic/errors.d.ts +0 -0
  301. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/classic/external.d.ts +0 -0
  302. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/classic/from-json-schema.d.ts +0 -0
  303. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/classic/in-out.d.ts +0 -0
  304. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/classic/index.d.ts +0 -0
  305. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/classic/iso.d.ts +0 -0
  306. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/classic/parse.d.ts +0 -0
  307. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/classic/schemas.d.ts +0 -0
  308. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/api.d.ts +0 -0
  309. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/checks.d.ts +0 -0
  310. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/compile.d.ts +0 -0
  311. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/core.d.ts +0 -0
  312. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/doc.d.ts +0 -0
  313. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/errors.d.ts +0 -0
  314. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/index.d.ts +0 -0
  315. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/json-schema-generator.d.ts +0 -0
  316. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/json-schema-processors.d.ts +0 -0
  317. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/json-schema.d.ts +0 -0
  318. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/memoizer.d.ts +0 -0
  319. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/parse.d.ts +0 -0
  320. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/regexes.d.ts +0 -0
  321. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/registries.d.ts +0 -0
  322. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/schemas.d.ts +0 -0
  323. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/standard-schema.d.ts +0 -0
  324. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/to-json-schema.d.ts +0 -0
  325. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/util.d.ts +0 -0
  326. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/core/versions.d.ts +0 -0
  327. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/index.d.cts +0 -0
  328. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/ar.d.ts +0 -0
  329. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/az.d.ts +0 -0
  330. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/be.d.ts +0 -0
  331. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/bg.d.ts +0 -0
  332. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/bn.d.ts +0 -0
  333. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/ca.d.ts +0 -0
  334. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/ckb.d.ts +0 -0
  335. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/cs.d.ts +0 -0
  336. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/da.d.ts +0 -0
  337. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/de.d.ts +0 -0
  338. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/el.d.ts +0 -0
  339. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/en.d.ts +0 -0
  340. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/eo.d.ts +0 -0
  341. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/es.d.ts +0 -0
  342. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/fa.d.ts +0 -0
  343. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/fi.d.ts +0 -0
  344. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/fr-CA.d.ts +0 -0
  345. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/fr.d.ts +0 -0
  346. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/gu.d.ts +0 -0
  347. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/he.d.ts +0 -0
  348. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/hi.d.ts +0 -0
  349. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/hr.d.ts +0 -0
  350. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/hu.d.ts +0 -0
  351. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/hy.d.ts +0 -0
  352. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/id.d.ts +0 -0
  353. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/index.d.ts +0 -0
  354. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/is.d.ts +0 -0
  355. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/it.d.ts +0 -0
  356. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/ja.d.ts +0 -0
  357. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/ka.d.ts +0 -0
  358. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/kh.d.ts +0 -0
  359. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/km.d.ts +0 -0
  360. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/kn.d.ts +0 -0
  361. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/ko.d.ts +0 -0
  362. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/lt.d.ts +0 -0
  363. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/mk.d.ts +0 -0
  364. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/ms.d.ts +0 -0
  365. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/ne.d.ts +0 -0
  366. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/nl.d.ts +0 -0
  367. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/nn.d.ts +0 -0
  368. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/no.d.ts +0 -0
  369. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/ota.d.ts +0 -0
  370. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/pl.d.ts +0 -0
  371. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/ps.d.ts +0 -0
  372. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/pt-BR.d.ts +0 -0
  373. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/pt.d.ts +0 -0
  374. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/ro.d.ts +0 -0
  375. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/ru.d.ts +0 -0
  376. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/sk.d.ts +0 -0
  377. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/sl.d.ts +0 -0
  378. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/sv.d.ts +0 -0
  379. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/ta.d.ts +0 -0
  380. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/tg.d.ts +0 -0
  381. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/th.d.ts +0 -0
  382. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/tk.d.ts +0 -0
  383. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/tr.d.ts +0 -0
  384. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/ua.d.ts +0 -0
  385. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/uk.d.ts +0 -0
  386. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/ur.d.ts +0 -0
  387. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/uz.d.ts +0 -0
  388. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/vi.d.ts +0 -0
  389. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/yo.d.ts +0 -0
  390. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/zh-CN.d.ts +0 -0
  391. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/_types/zod@4.6.7/v4/locales/zh-TW.d.ts +0 -0
  392. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/dist/routes/index.d.ts +0 -0
  393. /package/dist/_types/{@internal_voice@0.0.43 → @internal_voice@0.0.44}/package.json +0 -0
  394. /package/dist/_types/@mastra_schema-compat@1.3.17/dist/_types/{@internal_ai-sdk-v4@0.0.94 → @internal_ai-sdk-v4@0.0.95}/dist/index.d.ts +0 -0
  395. /package/dist/_types/@mastra_schema-compat@1.3.17/dist/_types/{@internal_ai-sdk-v5@0.0.94 → @internal_ai-sdk-v5@0.0.95}/dist/index.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge-urR7FFG8.cjs","names":["z","MASTRA_KNOWLEDGE_PRINCIPALS_KEY","HTTPException","getHandlerFGAProvider","MastraFGAPermissions","coreKnowledge","createRoute","handleError"],"sources":["../src/server/schemas/knowledge.ts","../src/server/handlers/knowledge.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nexport const knowledgePathParams = z.object({\n knowledgeKey: z.string().describe('Application key the Knowledge instance is registered under'),\n});\n\nexport const knowledgePagePathParams = knowledgePathParams.extend({\n pageId: z.string().min(1).max(512).describe('Knowledge page id'),\n});\n\nconst pageId = z.string().min(1).max(512);\nconst limit = z.coerce.number().int().min(1).max(100).optional();\n\nexport const knowledgeTreeQuerySchema = z.object({\n parentId: pageId.optional().describe('Page whose children to list; omit for the root scopes'),\n cursor: z.string().optional(),\n limit,\n});\n\nexport const knowledgePageQuerySchema = z.object({\n noteCursor: z.string().optional(),\n noteLimit: limit,\n});\n\nexport const knowledgeGraphQuerySchema = z.object({\n rootId: pageId.optional().describe('Page to walk from; omit to walk every root scope'),\n maxPages: z.coerce.number().int().min(1).max(500).optional(),\n});\n\n// A repeated param (`?scopeId=a&scopeId=b`) arrives as an array, a lone one as a string.\nconst scopeIds = z\n .union([z.string(), z.array(z.string())])\n .transform(value => (Array.isArray(value) ? value : [value]))\n .pipe(z.array(pageId).max(20));\n\nexport const knowledgeSearchQuerySchema = z.object({\n q: z.string().min(1).max(200).describe('Text to match in page names, synopses, bodies and notes'),\n scopeId: scopeIds.optional().describe('Only pages within these scopes'),\n limit,\n});\n\nconst pageIds = z\n .union([z.string(), z.array(z.string())])\n .transform(value => (Array.isArray(value) ? value : [value]))\n .pipe(z.array(pageId).min(1).max(200));\n\nexport const knowledgeLinkCountsQuerySchema = z.object({\n pageId: pageIds.describe('Pages to count links for; repeat the param for each, at most 200'),\n});\n\nexport const knowledgePageLinksQuerySchema = z.object({\n direction: z.enum(['in', 'out', 'both']).optional().describe('Links into the page, out of it, or both (default)'),\n});\n\nexport const knowledgeActivityQuerySchema = z.object({\n scopeId: pageId.optional(),\n pageId: pageId.optional(),\n cursor: z.string().optional(),\n limit,\n});\n\n// Payloads come from the @mastra/core/knowledge page readers; the UI package owns their TypeScript shapes.\nconst payload = z.record(z.string(), z.unknown());\n\nexport const listKnowledgeResponseSchema = z.object({\n instances: z.array(z.object({ key: z.string(), id: z.string() })),\n});\nexport const knowledgeTreeResponseSchema = payload;\nexport const knowledgePageResponseSchema = payload;\nexport const knowledgeGraphResponseSchema = payload;\nexport const knowledgeSearchResponseSchema = z.object({ results: z.array(payload) });\nexport const knowledgeLinkCountsResponseSchema = z.object({\n counts: z.record(z.string(), z.object({ in: z.number(), out: z.number() })),\n});\nexport const knowledgePageLinksResponseSchema = z.object({\n edges: z.array(\n z.object({ fromPageId: z.string(), toPageId: z.string(), kind: z.enum(['body', 'note']), count: z.number() }),\n ),\n pages: z.array(payload),\n truncated: z.boolean(),\n});\nexport const knowledgeActivityResponseSchema = payload;\nexport const knowledgeEventsResponseSchema = z.object({\n kind: z.enum(['scope', 'page', 'note', 'pin']),\n op: z.string(),\n pageId: z.string().optional(),\n scopeId: z.string().optional(),\n at: z.string(),\n});\n","import * as coreKnowledge from '@mastra/core/knowledge';\nimport type { Knowledge, KnowledgeChangeEvent } from '@mastra/core/knowledge';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { KnowledgeReadScope, KnowledgeStorage } from '@mastra/core/storage';\nimport { MASTRA_KNOWLEDGE_PRINCIPALS_KEY } from '../constants';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n knowledgeActivityQuerySchema,\n knowledgeActivityResponseSchema,\n knowledgeEventsResponseSchema,\n knowledgeGraphQuerySchema,\n knowledgeGraphResponseSchema,\n knowledgePagePathParams,\n knowledgePageQuerySchema,\n knowledgePageResponseSchema,\n knowledgePathParams,\n knowledgeSearchQuerySchema,\n knowledgeSearchResponseSchema,\n knowledgeLinkCountsQuerySchema,\n knowledgeLinkCountsResponseSchema,\n knowledgePageLinksQuerySchema,\n knowledgePageLinksResponseSchema,\n knowledgeTreeQuerySchema,\n knowledgeTreeResponseSchema,\n listKnowledgeResponseSchema,\n} from '../schemas/knowledge';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { handleError } from './error';\nimport { getHandlerFGAProvider } from './utils';\n\n/**\n * Read-only browsing of Knowledge instances registered on Mastra, for Studio. Nothing here writes.\n *\n * What a caller reads depends on whether the app has auth configured (`server.auth` or `studio.auth`):\n * - No auth: probably a local or test project, so the routes read as the instance owner (`'all'`).\n * - Auth: reads are narrowed to what the signed-in caller can read. The app maps the user to Knowledge\n * principals by setting MASTRA_KNOWLEDGE_PRINCIPALS_KEY in `auth.authorize` (a `string[]`, or `'all'`\n * for an admin); the instance turns them into a read scope with `readScopeFor`. A caller with no\n * mapping is refused with 403.\n *\n * On top of that the path derives `knowledge:read` (`GET /knowledge/...`), and with FGA configured each\n * instance is filtered and gated by `knowledge:read` on that instance. The routes are opt-in\n * (KNOWLEDGE_ROUTES); hosts with their own scoping (Factory) do not mount them.\n */\n\nfunction hasAuth(mastra: Mastra): boolean {\n return Boolean(mastra.getServer?.()?.auth || (mastra as any).getStudio?.()?.auth);\n}\n\nasync function callerReadScope(\n mastra: Mastra,\n requestContext: RequestContext | undefined,\n instance: Knowledge,\n): Promise<KnowledgeReadScope> {\n if (!hasAuth(mastra)) return 'all';\n\n const principals = requestContext?.get(MASTRA_KNOWLEDGE_PRINCIPALS_KEY);\n if (principals === undefined || principals === null) {\n throw new HTTPException(403, {\n message: `Knowledge access is not mapped for this caller. Set request context key \"${MASTRA_KNOWLEDGE_PRINCIPALS_KEY}\" in auth.authorize.`,\n });\n }\n if (principals === 'all') return 'all';\n // The value comes from the app's own authorize code, so a bad one is a host misconfiguration, not a denial.\n if (!Array.isArray(principals) || principals.some(principal => typeof principal !== 'string')) {\n throw new HTTPException(500, {\n message: `Request context key \"${MASTRA_KNOWLEDGE_PRINCIPALS_KEY}\" must be a string array or 'all'.`,\n });\n }\n try {\n return await instance.readScopeFor(principals);\n } catch (error) {\n // A principal that matches no declared scope type: the app's mapping disagrees with its declarations.\n if (error instanceof Error && error.name === 'KnowledgeDeclarationError') {\n throw new HTTPException(500, { message: error.message, cause: error });\n }\n throw error;\n }\n}\n\nasync function accessibleInstances(\n mastra: Mastra,\n requestContext: RequestContext | undefined,\n entries: Array<{ id: string; key: string }>,\n): Promise<Set<string>> {\n const fgaProvider = getHandlerFGAProvider(mastra, requestContext);\n const user = requestContext?.get('user');\n if (!fgaProvider || !user || typeof user !== 'object' || entries.length === 0) {\n return new Set(entries.map(entry => entry.key));\n }\n // FGA names a Knowledge instance by its registered key, as the route metadata does (`:knowledgeKey`).\n const accessible: Array<{ id: string; key: string }> = await fgaProvider.filterAccessible(\n user,\n entries.map(entry => ({ ...entry, id: entry.key })),\n 'knowledge',\n MastraFGAPermissions.KNOWLEDGE_READ,\n );\n return new Set(accessible.map(entry => entry.key));\n}\n\ntype KnowledgePageReaders = Pick<\n typeof coreKnowledge,\n | 'listKnowledgeTreeChildren'\n | 'readKnowledgePage'\n | 'readKnowledgePageActivity'\n | 'readKnowledgePageGraph'\n | 'searchKnowledgeExplorerPages'\n>;\n\n// The page readers first ship in @mastra/core 1.81.0, above this package's peer floor. A named import\n// of an export an older core lacks fails at ESM link time and takes the whole server down, so they are\n// read off the namespace (as in schedules-workflows-shim.ts) and the routes answer 501 without them.\nconst pageReaders: Partial<KnowledgePageReaders> = coreKnowledge;\n\nfunction requirePageReaders(): KnowledgePageReaders {\n const {\n listKnowledgeTreeChildren,\n readKnowledgePage,\n readKnowledgePageActivity,\n readKnowledgePageGraph,\n searchKnowledgeExplorerPages,\n } = pageReaders;\n if (\n !listKnowledgeTreeChildren ||\n !readKnowledgePage ||\n !readKnowledgePageActivity ||\n !readKnowledgePageGraph ||\n !searchKnowledgeExplorerPages\n ) {\n throw new HTTPException(501, { message: 'Knowledge browsing needs @mastra/core 1.81.0 or later.' });\n }\n return {\n listKnowledgeTreeChildren,\n readKnowledgePage,\n readKnowledgePageActivity,\n readKnowledgePageGraph,\n searchKnowledgeExplorerPages,\n };\n}\n\n/**\n * The declared grants between the graph's scopes, each with its principal's display label. Grants are\n * newer than the page readers, so a core without them sends none and the graph still loads.\n */\nasync function graphGrants(\n instance: Knowledge,\n store: KnowledgeStorage,\n pages: readonly coreKnowledge.KnowledgePage[],\n read: KnowledgeReadScope,\n): Promise<Array<coreKnowledge.KnowledgeGraphScopeGrant & { principalLabel?: string }> | undefined> {\n const readGrants = (coreKnowledge as Partial<typeof coreKnowledge>).readKnowledgeScopeGrants;\n const scopeGrants = (instance as Partial<Knowledge>).scopeGrants?.bind(instance);\n if (!readGrants || !scopeGrants) return undefined;\n const grants = await readGrants(store, { pages, read, grantsFor: scopeGrants });\n return grants.map(grant => {\n const principalLabel = instance.scopeLabel?.(grant.principal);\n return principalLabel ? { ...grant, principalLabel } : grant;\n });\n}\n\nasync function resolveStore(\n mastra: Mastra,\n requestContext: RequestContext | undefined,\n knowledgeKey: string | undefined,\n): Promise<{ instance: Knowledge; store: KnowledgeStorage; read: KnowledgeReadScope; readers: KnowledgePageReaders }> {\n const instances = mastra.listKnowledge();\n // Own keys only: `constructor` or `__proto__` must not resolve to an Object.prototype member.\n const instance = knowledgeKey && Object.hasOwn(instances, knowledgeKey) ? instances[knowledgeKey] : undefined;\n if (!knowledgeKey || !instance)\n throw new HTTPException(404, { message: `Knowledge ${knowledgeKey ?? ''} not found` });\n\n // An instance the caller may not read looks the same as one that does not exist.\n const fgaProvider = getHandlerFGAProvider(mastra, requestContext);\n const user = requestContext?.get('user');\n if (fgaProvider && user && typeof user === 'object') {\n const allowed = await fgaProvider.check(user, {\n resource: { type: 'knowledge', id: knowledgeKey },\n permission: MastraFGAPermissions.KNOWLEDGE_READ,\n });\n if (!allowed) throw new HTTPException(404, { message: `Knowledge ${knowledgeKey} not found` });\n }\n const readers = requirePageReaders();\n const read = await callerReadScope(mastra, requestContext, instance);\n return { instance, store: await instance.getStorage(), read, readers };\n}\n\n/**\n * Adds each scope page's declared `displayLabel` with its address's `$params` filled in (`'$orgId policy'`\n * → `'acme policy'`), so the explorer can caption scopes. Scope declarations live in config, not\n * storage, so the readers can't supply it. Older cores without `scopeLabel` send no label.\n */\nfunction withDisplayLabel<T extends { isScope: boolean; address?: string }>(\n instance: Knowledge,\n page: T,\n): T & { displayLabel?: string } {\n if (!page.isScope || !page.address) return page;\n const displayLabel = instance.scopeLabel?.(page.address);\n return displayLabel ? { ...page, displayLabel } : page;\n}\n\nexport const LIST_KNOWLEDGE_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge',\n responseType: 'json',\n responseSchema: listKnowledgeResponseSchema,\n summary: 'List Knowledge instances',\n description:\n \"Returns the Knowledge instances registered on this Mastra instance, by application key. Without app auth the other Knowledge routes read the whole instance; with auth they read only what the caller's Knowledge principals (MASTRA_KNOWLEDGE_PRINCIPALS_KEY, set in auth.authorize) can read, and refuse an unmapped caller with 403.\",\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext }) => {\n try {\n const all = Object.entries(mastra.listKnowledge()).map(([key, instance]) => ({ key, id: instance.id }));\n const allowed = await accessibleInstances(mastra, requestContext, all);\n return { instances: all.filter(entry => allowed.has(entry.key)) };\n } catch (error) {\n return handleError(error, 'Error listing Knowledge instances');\n }\n },\n});\n\nexport const GET_KNOWLEDGE_TREE_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/tree',\n responseType: 'json',\n pathParamSchema: knowledgePathParams,\n queryParamSchema: knowledgeTreeQuerySchema,\n responseSchema: knowledgeTreeResponseSchema,\n summary: 'List one level of the Knowledge page tree',\n description:\n 'Without parentId, returns the root scopes. With parentId, returns its child scopes (first page only) then its child pages in order, paged with cursor.',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, parentId, cursor, limit }) => {\n try {\n const { instance, store, read, readers } = await resolveStore(mastra, requestContext, knowledgeKey);\n const level = await readers.listKnowledgeTreeChildren(store, {\n parentId: parentId ?? null,\n read,\n // An empty `?cursor=` means no cursor, so root scopes are still listed.\n cursor: cursor || undefined,\n limit,\n });\n return { ...level, pages: level.pages.map(page => withDisplayLabel(instance, page)) };\n } catch (error) {\n return handleError(error, 'Error reading Knowledge tree');\n }\n },\n});\n\nexport const GET_KNOWLEDGE_PAGE_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/pages/:pageId',\n responseType: 'json',\n pathParamSchema: knowledgePagePathParams,\n queryParamSchema: knowledgePageQuerySchema,\n responseSchema: knowledgePageResponseSchema,\n summary: 'Get a Knowledge page',\n description:\n 'Returns one page with its ancestors, a page of its notes, its pin, the pages its notes reference and notes elsewhere that mention it; 404 when it does not exist',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, pageId, noteCursor, noteLimit }) => {\n try {\n const { instance, store, read, readers } = await resolveStore(mastra, requestContext, knowledgeKey);\n const view = await readers.readKnowledgePage(store, { pageId, read, noteCursor, noteLimit });\n if (!view) throw new HTTPException(404, { message: 'Knowledge page not found' });\n const label = <T extends { isScope: boolean; declaration?: string }>(page: T) => withDisplayLabel(instance, page);\n return {\n ...view,\n page: label(view.page),\n ancestors: view.ancestors.map(label),\n related: view.related.map(label),\n };\n } catch (error) {\n return handleError(error, 'Error reading Knowledge page');\n }\n },\n});\n\n/**\n * The link readers are newer than the page readers, so a core without them answers these routes with 501\n * and the explorer falls back to counting the pages it has loaded.\n */\nfunction requireLinkReaders() {\n const { readKnowledgePageLinkCounts, readKnowledgePageLinks } = coreKnowledge as Partial<typeof coreKnowledge>;\n if (!readKnowledgePageLinkCounts || !readKnowledgePageLinks) {\n throw new HTTPException(501, { message: 'Knowledge link counts need a newer @mastra/core.' });\n }\n return { readKnowledgePageLinkCounts, readKnowledgePageLinks };\n}\n\nexport const GET_KNOWLEDGE_LINK_COUNTS_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/link-counts',\n responseType: 'json',\n pathParamSchema: knowledgePathParams,\n queryParamSchema: knowledgeLinkCountsQuerySchema,\n responseSchema: knowledgeLinkCountsResponseSchema,\n summary: 'Count the links into and out of pages',\n description:\n 'Returns, for each page id, how many distinct other pages link to it and it links to, by body [[ref]] or note mention, counted over the whole store and not only pages the caller has loaded. A page the caller cannot read counts as no links, the same as one that does not exist. 501 when the store has no link index.',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, pageId }) => {\n try {\n const { store, read } = await resolveStore(mastra, requestContext, knowledgeKey);\n const counts = await requireLinkReaders().readKnowledgePageLinkCounts(store, { pageIds: pageId, read });\n if (!counts) throw new HTTPException(501, { message: 'This Knowledge store has no link index.' });\n return { counts };\n } catch (error) {\n return handleError(error, 'Error counting Knowledge page links');\n }\n },\n});\n\nexport const GET_KNOWLEDGE_PAGE_LINKS_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/pages/:pageId/links',\n responseType: 'json',\n pathParamSchema: knowledgePagePathParams,\n queryParamSchema: knowledgePageLinksQuerySchema,\n responseSchema: knowledgePageLinksResponseSchema,\n summary: \"List a Knowledge page's links\",\n description:\n 'Returns the links into and out of one page, bounded, with the readable pages at their other ends. A page the caller cannot read has none. 501 when the store has no link index.',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, pageId, direction }) => {\n try {\n const { instance, store, read } = await resolveStore(mastra, requestContext, knowledgeKey);\n const links = await requireLinkReaders().readKnowledgePageLinks(store, { pageId, read, direction });\n if (!links) throw new HTTPException(501, { message: 'This Knowledge store has no link index.' });\n return { ...links, pages: links.pages.map(page => ({ ...withDisplayLabel(instance, page) })) };\n } catch (error) {\n return handleError(error, 'Error reading Knowledge page links');\n }\n },\n});\n\nexport const GET_KNOWLEDGE_GRAPH_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/graph',\n responseType: 'json',\n pathParamSchema: knowledgePathParams,\n queryParamSchema: knowledgeGraphQuerySchema,\n responseSchema: knowledgeGraphResponseSchema,\n summary: 'Get a bounded Knowledge page graph',\n description:\n 'Returns pages under rootId (or every root scope) breadth-first with parent and mention edges, bounded; truncated is true when a limit stopped it. grants lists the declared access grants onto the scopes shown, from principal scopes the caller can read. 404 when rootId does not exist.',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, rootId, maxPages }) => {\n try {\n const { instance, store, read, readers } = await resolveStore(mastra, requestContext, knowledgeKey);\n const graph = await readers.readKnowledgePageGraph(store, {\n read,\n rootId: rootId ?? null,\n ...(maxPages ? { limits: { maxPages } } : {}),\n });\n if (!graph) throw new HTTPException(404, { message: 'Knowledge page not found' });\n const grants = await graphGrants(instance, store, graph.pages, read);\n return {\n ...graph,\n pages: graph.pages.map(page => withDisplayLabel(instance, page)),\n ...(grants ? { grants } : {}),\n };\n } catch (error) {\n return handleError(error, 'Error reading Knowledge graph');\n }\n },\n});\n\nexport const SEARCH_KNOWLEDGE_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/search',\n responseType: 'json',\n pathParamSchema: knowledgePathParams,\n queryParamSchema: knowledgeSearchQuerySchema,\n responseSchema: knowledgeSearchResponseSchema,\n summary: 'Search Knowledge pages and notes',\n description: 'Returns pages whose name, synopsis or body, and notes whose text, match the query',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, q, scopeId, limit }) => {\n try {\n const { instance, store, read, readers } = await resolveStore(mastra, requestContext, knowledgeKey);\n const results = await readers.searchKnowledgeExplorerPages(store, {\n query: q,\n read,\n ...(scopeId?.length ? { scopeIds: scopeId } : {}),\n limit,\n });\n return { results: results.map(hit => ({ ...hit, page: withDisplayLabel(instance, hit.page) })) };\n } catch (error) {\n return handleError(error, 'Error searching Knowledge');\n }\n },\n});\n\nexport const GET_KNOWLEDGE_ACTIVITY_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/activity',\n responseType: 'json',\n pathParamSchema: knowledgePathParams,\n queryParamSchema: knowledgeActivityQuerySchema,\n responseSchema: knowledgeActivityResponseSchema,\n summary: 'List recent Knowledge activity',\n description: 'Returns a newest-first page of activity, optionally for one scope or one page',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, scopeId, pageId, cursor, limit }) => {\n try {\n const { store, read, readers } = await resolveStore(mastra, requestContext, knowledgeKey);\n return { ...(await readers.readKnowledgePageActivity(store, { read, scopeId, pageId, cursor, limit })) };\n } catch (error) {\n return handleError(error, 'Error reading Knowledge activity');\n }\n },\n});\n\nconst KEEPALIVE_MS = 25_000;\n/**\n * The read scope is resolved when the stream opens. Ending it after this long makes the client reconnect,\n * which resolves the caller's read scope again, so a revoked grant stops receiving changes.\n */\nconst STREAM_MAX_AGE_MS = 5 * 60_000;\n\n/**\n * What a viewer may learn about one change: the ids in it they can read, or nothing when they can read\n * none. A page they can read now, or the scope it is (or was, before a move or merge) in, counts; a\n * deleted page is matched by its scope.\n */\nasync function visibleChange(store: KnowledgeStorage, read: KnowledgeReadScope, event: KnowledgeChangeEvent) {\n const readable = async (id: string | undefined) =>\n id !== undefined && (read === 'all' || (await store.getPage({ id, read })) !== null);\n const scopeId = 'scopeId' in event ? event.scopeId : undefined;\n const fromScopeId = 'fromScopeId' in event ? event.fromScopeId : undefined;\n const [page, scope, fromScope] = await Promise.all([\n readable(event.pageId),\n readable(scopeId),\n readable(fromScopeId),\n ]);\n if (!page && !scope && !fromScope) return null;\n return {\n kind: event.kind,\n op: event.op,\n ...(page ? { pageId: event.pageId } : {}),\n ...(scope ? { scopeId } : {}),\n at: event.at.toISOString(),\n };\n}\n\nexport const STREAM_KNOWLEDGE_EVENTS_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/events',\n responseType: 'stream',\n streamFormat: 'sse',\n sseFlushOnConnect: true,\n pathParamSchema: knowledgePathParams,\n responseSchema: knowledgeEventsResponseSchema,\n summary: 'Stream Knowledge changes',\n description:\n 'Server-Sent Events, one per committed write the caller can read: { kind, op, pageId?, scopeId?, at }. Ids the caller cannot read are left out, and changes they cannot read at all are not sent. Re-read what changed with the other Knowledge routes.',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, abortSignal }) => {\n try {\n const { instance, store, read } = await resolveStore(mastra, requestContext, knowledgeKey);\n if (typeof instance.onChange !== 'function') {\n throw new HTTPException(501, { message: 'Knowledge change events need @mastra/core 1.81.0 or later.' });\n }\n const logger = mastra.getLogger();\n let stop = () => {};\n return new ReadableStream({\n start(controller) {\n let open = true;\n // Writes are filtered in order so a viewer never sees a later change before an earlier one.\n let queue = Promise.resolve();\n const unsubscribe = instance.onChange(event => {\n queue = queue.then(async () => {\n const change = await visibleChange(store, read, event).catch(error => {\n logger?.error('Error filtering a Knowledge change', { error });\n return null;\n });\n if (open && change) controller.enqueue(change);\n });\n });\n const keepalive = setInterval(() => open && controller.enqueue(': keepalive\\n\\n'), KEEPALIVE_MS);\n const expire = setTimeout(() => stop(), STREAM_MAX_AGE_MS);\n stop = () => {\n if (!open) return;\n open = false;\n clearInterval(keepalive);\n clearTimeout(expire);\n unsubscribe();\n try {\n controller.close();\n } catch {\n // Already closed\n }\n };\n if (abortSignal?.aborted) stop();\n else abortSignal?.addEventListener('abort', stop, { once: true });\n },\n cancel() {\n stop();\n },\n });\n } catch (error) {\n return handleError(error, 'Error streaming Knowledge changes');\n }\n },\n});\n"],"mappings":";;;;;;;;;;AAEA,MAAa,sBAAsBA,OAAAA,EAAE,OAAO,EAC1C,cAAcA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,4DAA4D,EAChG,CAAC;AAED,MAAa,0BAA0B,oBAAoB,OAAO,EAChE,QAAQA,OAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,mBAAmB,EACjE,CAAC;AAED,MAAM,SAASA,OAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG;AACxC,MAAM,QAAQA,OAAAA,EAAE,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS;AAE/D,MAAa,2BAA2BA,OAAAA,EAAE,OAAO;CAC/C,UAAU,OAAO,SAAS,CAAC,CAAC,SAAS,uDAAuD;CAC5F,QAAQA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CAC5B;AACF,CAAC;AAED,MAAa,2BAA2BA,OAAAA,EAAE,OAAO;CAC/C,YAAYA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CAChC,WAAW;AACb,CAAC;AAED,MAAa,4BAA4BA,OAAAA,EAAE,OAAO;CAChD,QAAQ,OAAO,SAAS,CAAC,CAAC,SAAS,kDAAkD;CACrF,UAAUA,OAAAA,EAAE,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS;AAC7D,CAAC;AAGD,MAAM,WAAWA,OAAAA,EACd,MAAM,CAACA,OAAAA,EAAE,OAAO,GAAGA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CACxC,WAAU,UAAU,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAE,CAAC,CAC5D,KAAKA,OAAAA,EAAE,MAAM,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAE/B,MAAa,6BAA6BA,OAAAA,EAAE,OAAO;CACjD,GAAGA,OAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,yDAAyD;CAChG,SAAS,SAAS,SAAS,CAAC,CAAC,SAAS,gCAAgC;CACtE;AACF,CAAC;AAED,MAAM,UAAUA,OAAAA,EACb,MAAM,CAACA,OAAAA,EAAE,OAAO,GAAGA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CACxC,WAAU,UAAU,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAE,CAAC,CAC5D,KAAKA,OAAAA,EAAE,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAEvC,MAAa,iCAAiCA,OAAAA,EAAE,OAAO,EACrD,QAAQ,QAAQ,SAAS,kEAAkE,EAC7F,CAAC;AAED,MAAa,gCAAgCA,OAAAA,EAAE,OAAO,EACpD,WAAWA,OAAAA,EAAE,KAAK;CAAC;CAAM;CAAO;AAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,mDAAmD,EAClH,CAAC;AAED,MAAa,+BAA+BA,OAAAA,EAAE,OAAO;CACnD,SAAS,OAAO,SAAS;CACzB,QAAQ,OAAO,SAAS;CACxB,QAAQA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CAC5B;AACF,CAAC;AAGD,MAAM,UAAUA,OAAAA,EAAE,OAAOA,OAAAA,EAAE,OAAO,GAAGA,OAAAA,EAAE,QAAQ,CAAC;AAEhD,MAAa,8BAA8BA,OAAAA,EAAE,OAAO,EAClD,WAAWA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,OAAO;CAAE,KAAKA,OAAAA,EAAE,OAAO;CAAG,IAAIA,OAAAA,EAAE,OAAO;AAAE,CAAC,CAAC,EAClE,CAAC;AACD,MAAa,8BAA8B;AAC3C,MAAa,8BAA8B;AAC3C,MAAa,+BAA+B;AAC5C,MAAa,gCAAgCA,OAAAA,EAAE,OAAO,EAAE,SAASA,OAAAA,EAAE,MAAM,OAAO,EAAE,CAAC;AACnF,MAAa,oCAAoCA,OAAAA,EAAE,OAAO,EACxD,QAAQA,OAAAA,EAAE,OAAOA,OAAAA,EAAE,OAAO,GAAGA,OAAAA,EAAE,OAAO;CAAE,IAAIA,OAAAA,EAAE,OAAO;CAAG,KAAKA,OAAAA,EAAE,OAAO;AAAE,CAAC,CAAC,EAC5E,CAAC;AACD,MAAa,mCAAmCA,OAAAA,EAAE,OAAO;CACvD,OAAOA,OAAAA,EAAE,MACPA,OAAAA,EAAE,OAAO;EAAE,YAAYA,OAAAA,EAAE,OAAO;EAAG,UAAUA,OAAAA,EAAE,OAAO;EAAG,MAAMA,OAAAA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAAC;EAAG,OAAOA,OAAAA,EAAE,OAAO;CAAE,CAAC,CAC9G;CACA,OAAOA,OAAAA,EAAE,MAAM,OAAO;CACtB,WAAWA,OAAAA,EAAE,QAAQ;AACvB,CAAC;AACD,MAAa,kCAAkC;AAC/C,MAAa,gCAAgCA,OAAAA,EAAE,OAAO;CACpD,MAAMA,OAAAA,EAAE,KAAK;EAAC;EAAS;EAAQ;EAAQ;CAAK,CAAC;CAC7C,IAAIA,OAAAA,EAAE,OAAO;CACb,QAAQA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CAC5B,SAASA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CAC7B,IAAIA,OAAAA,EAAE,OAAO;AACf,CAAC;;;;;;;;;;;;;;;;ACxCD,SAAS,QAAQ,QAAyB;CACxC,OAAO,QAAQ,OAAO,YAAY,CAAC,EAAE,QAAS,OAAe,YAAY,CAAC,EAAE,IAAI;AAClF;AAEA,eAAe,gBACb,QACA,gBACA,UAC6B;CAC7B,IAAI,CAAC,QAAQ,MAAM,GAAG,OAAO;CAE7B,MAAM,aAAa,gBAAgB,IAAIC,kBAAAA,+BAA+B;CACtE,IAAI,eAAe,KAAA,KAAa,eAAe,MAC7C,MAAM,IAAIC,uBAAAA,cAAc,KAAK,EAC3B,SAAS,4EAA4ED,kBAAAA,gCAAgC,sBACvH,CAAC;CAEH,IAAI,eAAe,OAAO,OAAO;CAEjC,IAAI,CAAC,MAAM,QAAQ,UAAU,KAAK,WAAW,MAAK,cAAa,OAAO,cAAc,QAAQ,GAC1F,MAAM,IAAIC,uBAAAA,cAAc,KAAK,EAC3B,SAAS,wBAAwBD,kBAAAA,gCAAgC,oCACnE,CAAC;CAEH,IAAI;EACF,OAAO,MAAM,SAAS,aAAa,UAAU;CAC/C,SAAS,OAAO;EAEd,IAAI,iBAAiB,SAAS,MAAM,SAAS,6BAC3C,MAAM,IAAIC,uBAAAA,cAAc,KAAK;GAAE,SAAS,MAAM;GAAS,OAAO;EAAM,CAAC;EAEvE,MAAM;CACR;AACF;AAEA,eAAe,oBACb,QACA,gBACA,SACsB;CACtB,MAAM,cAAcC,cAAAA,sBAAsB,QAAQ,cAAc;CAChE,MAAM,OAAO,gBAAgB,IAAI,MAAM;CACvC,IAAI,CAAC,eAAe,CAAC,QAAQ,OAAO,SAAS,YAAY,QAAQ,WAAW,GAC1E,OAAO,IAAI,IAAI,QAAQ,KAAI,UAAS,MAAM,GAAG,CAAC;CAGhD,MAAM,aAAiD,MAAM,YAAY,iBACvE,MACA,QAAQ,KAAI,WAAU;EAAE,GAAG;EAAO,IAAI,MAAM;CAAI,EAAE,GAClD,aACAC,cAAAA,qBAAqB,cACvB;CACA,OAAO,IAAI,IAAI,WAAW,KAAI,UAAS,MAAM,GAAG,CAAC;AACnD;AAcA,MAAM,cAA6CC;AAEnD,SAAS,qBAA2C;CAClD,MAAM,EACJ,2BACA,mBACA,2BACA,wBACA,iCACE;CACJ,IACE,CAAC,6BACD,CAAC,qBACD,CAAC,6BACD,CAAC,0BACD,CAAC,8BAED,MAAM,IAAIH,uBAAAA,cAAc,KAAK,EAAE,SAAS,yDAAyD,CAAC;CAEpG,OAAO;EACL;EACA;EACA;EACA;EACA;CACF;AACF;;;;;AAMA,eAAe,YACb,UACA,OACA,OACA,MACkG;CAClG,MAAM,aAAcG,uBAAgD;CACpE,MAAM,cAAe,SAAgC,aAAa,KAAK,QAAQ;CAC/E,IAAI,CAAC,cAAc,CAAC,aAAa,OAAO,KAAA;CAExC,QAAO,MADc,WAAW,OAAO;EAAE;EAAO;EAAM,WAAW;CAAY,CAAC,EAAA,CAChE,KAAI,UAAS;EACzB,MAAM,iBAAiB,SAAS,aAAa,MAAM,SAAS;EAC5D,OAAO,iBAAiB;GAAE,GAAG;GAAO;EAAe,IAAI;CACzD,CAAC;AACH;AAEA,eAAe,aACb,QACA,gBACA,cACoH;CACpH,MAAM,YAAY,OAAO,cAAc;CAEvC,MAAM,WAAW,gBAAgB,OAAO,OAAO,WAAW,YAAY,IAAI,UAAU,gBAAgB,KAAA;CACpG,IAAI,CAAC,gBAAgB,CAAC,UACpB,MAAM,IAAIH,uBAAAA,cAAc,KAAK,EAAE,SAAS,aAAa,gBAAgB,GAAG,YAAY,CAAC;CAGvF,MAAM,cAAcC,cAAAA,sBAAsB,QAAQ,cAAc;CAChE,MAAM,OAAO,gBAAgB,IAAI,MAAM;CACvC,IAAI,eAAe,QAAQ,OAAO,SAAS,UAKrC;MAAA,CAAC,MAJiB,YAAY,MAAM,MAAM;GAC5C,UAAU;IAAE,MAAM;IAAa,IAAI;GAAa;GAChD,YAAYC,cAAAA,qBAAqB;EACnC,CAAC,GACa,MAAM,IAAIF,uBAAAA,cAAc,KAAK,EAAE,SAAS,aAAa,aAAa,YAAY,CAAC;CAAA;CAE/F,MAAM,UAAU,mBAAmB;CACnC,MAAM,OAAO,MAAM,gBAAgB,QAAQ,gBAAgB,QAAQ;CACnE,OAAO;EAAE;EAAU,OAAO,MAAM,SAAS,WAAW;EAAG;EAAM;CAAQ;AACvE;;;;;;AAOA,SAAS,iBACP,UACA,MAC+B;CAC/B,IAAI,CAAC,KAAK,WAAW,CAAC,KAAK,SAAS,OAAO;CAC3C,MAAM,eAAe,SAAS,aAAa,KAAK,OAAO;CACvD,OAAO,eAAe;EAAE,GAAG;EAAM;CAAa,IAAI;AACpD;AAEA,MAAa,uBAAuBI,sBAAAA,YAAY;CAC9C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,gBAAgB;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,qBAAqB;EAC7C,IAAI;GACF,MAAM,MAAM,OAAO,QAAQ,OAAO,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,eAAe;IAAE;IAAK,IAAI,SAAS;GAAG,EAAE;GACtG,MAAM,UAAU,MAAM,oBAAoB,QAAQ,gBAAgB,GAAG;GACrE,OAAO,EAAE,WAAW,IAAI,QAAO,UAAS,QAAQ,IAAI,MAAM,GAAG,CAAC,EAAE;EAClE,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,mCAAmC;EAC/D;CACF;AACF,CAAC;AAED,MAAa,2BAA2BD,sBAAAA,YAAY;CAClD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,gBAAgB,cAAc,UAAU,QAAQ,YAAY;EACpF,IAAI;GACF,MAAM,EAAE,UAAU,OAAO,MAAM,YAAY,MAAM,aAAa,QAAQ,gBAAgB,YAAY;GAClG,MAAM,QAAQ,MAAM,QAAQ,0BAA0B,OAAO;IAC3D,UAAU,YAAY;IACtB;IAEA,QAAQ,UAAU,KAAA;IAClB;GACF,CAAC;GACD,OAAO;IAAE,GAAG;IAAO,OAAO,MAAM,MAAM,KAAI,SAAQ,iBAAiB,UAAU,IAAI,CAAC;GAAE;EACtF,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,8BAA8B;EAC1D;CACF;AACF,CAAC;AAED,MAAa,2BAA2BD,sBAAAA,YAAY;CAClD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,gBAAgB,cAAc,QAAQ,YAAY,gBAAgB;EAC1F,IAAI;GACF,MAAM,EAAE,UAAU,OAAO,MAAM,YAAY,MAAM,aAAa,QAAQ,gBAAgB,YAAY;GAClG,MAAM,OAAO,MAAM,QAAQ,kBAAkB,OAAO;IAAE;IAAQ;IAAM;IAAY;GAAU,CAAC;GAC3F,IAAI,CAAC,MAAM,MAAM,IAAIJ,uBAAAA,cAAc,KAAK,EAAE,SAAS,2BAA2B,CAAC;GAC/E,MAAM,SAA+D,SAAY,iBAAiB,UAAU,IAAI;GAChH,OAAO;IACL,GAAG;IACH,MAAM,MAAM,KAAK,IAAI;IACrB,WAAW,KAAK,UAAU,IAAI,KAAK;IACnC,SAAS,KAAK,QAAQ,IAAI,KAAK;GACjC;EACF,SAAS,OAAO;GACd,OAAOK,8BAAAA,YAAY,OAAO,8BAA8B;EAC1D;CACF;AACF,CAAC;;;;;AAMD,SAAS,qBAAqB;CAC5B,MAAM,EAAE,6BAA6B,2BAA2BF;CAChE,IAAI,CAAC,+BAA+B,CAAC,wBACnC,MAAM,IAAIH,uBAAAA,cAAc,KAAK,EAAE,SAAS,mDAAmD,CAAC;CAE9F,OAAO;EAAE;EAA6B;CAAuB;AAC/D;AAEA,MAAa,kCAAkCI,sBAAAA,YAAY;CACzD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,gBAAgB,cAAc,aAAa;EACnE,IAAI;GACF,MAAM,EAAE,OAAO,SAAS,MAAM,aAAa,QAAQ,gBAAgB,YAAY;GAC/E,MAAM,SAAS,MAAM,mBAAmB,CAAC,CAAC,4BAA4B,OAAO;IAAE,SAAS;IAAQ;GAAK,CAAC;GACtG,IAAI,CAAC,QAAQ,MAAM,IAAIJ,uBAAAA,cAAc,KAAK,EAAE,SAAS,0CAA0C,CAAC;GAChG,OAAO,EAAE,OAAO;EAClB,SAAS,OAAO;GACd,OAAOK,8BAAAA,YAAY,OAAO,qCAAqC;EACjE;CACF;AACF,CAAC;AAED,MAAa,iCAAiCD,sBAAAA,YAAY;CACxD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,gBAAgB,cAAc,QAAQ,gBAAgB;EAC9E,IAAI;GACF,MAAM,EAAE,UAAU,OAAO,SAAS,MAAM,aAAa,QAAQ,gBAAgB,YAAY;GACzF,MAAM,QAAQ,MAAM,mBAAmB,CAAC,CAAC,uBAAuB,OAAO;IAAE;IAAQ;IAAM;GAAU,CAAC;GAClG,IAAI,CAAC,OAAO,MAAM,IAAIJ,uBAAAA,cAAc,KAAK,EAAE,SAAS,0CAA0C,CAAC;GAC/F,OAAO;IAAE,GAAG;IAAO,OAAO,MAAM,MAAM,KAAI,UAAS,EAAE,GAAG,iBAAiB,UAAU,IAAI,EAAE,EAAE;GAAE;EAC/F,SAAS,OAAO;GACd,OAAOK,8BAAAA,YAAY,OAAO,oCAAoC;EAChE;CACF;AACF,CAAC;AAED,MAAa,4BAA4BD,sBAAAA,YAAY;CACnD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,gBAAgB,cAAc,QAAQ,eAAe;EAC7E,IAAI;GACF,MAAM,EAAE,UAAU,OAAO,MAAM,YAAY,MAAM,aAAa,QAAQ,gBAAgB,YAAY;GAClG,MAAM,QAAQ,MAAM,QAAQ,uBAAuB,OAAO;IACxD;IACA,QAAQ,UAAU;IAClB,GAAI,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC;GAC7C,CAAC;GACD,IAAI,CAAC,OAAO,MAAM,IAAIJ,uBAAAA,cAAc,KAAK,EAAE,SAAS,2BAA2B,CAAC;GAChF,MAAM,SAAS,MAAM,YAAY,UAAU,OAAO,MAAM,OAAO,IAAI;GACnE,OAAO;IACL,GAAG;IACH,OAAO,MAAM,MAAM,KAAI,SAAQ,iBAAiB,UAAU,IAAI,CAAC;IAC/D,GAAI,SAAS,EAAE,OAAO,IAAI,CAAC;GAC7B;EACF,SAAS,OAAO;GACd,OAAOK,8BAAAA,YAAY,OAAO,+BAA+B;EAC3D;CACF;AACF,CAAC;AAED,MAAa,yBAAyBD,sBAAAA,YAAY;CAChD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,gBAAgB,cAAc,GAAG,SAAS,YAAY;EAC9E,IAAI;GACF,MAAM,EAAE,UAAU,OAAO,MAAM,YAAY,MAAM,aAAa,QAAQ,gBAAgB,YAAY;GAOlG,OAAO,EAAE,UAAS,MANI,QAAQ,6BAA6B,OAAO;IAChE,OAAO;IACP;IACA,GAAI,SAAS,SAAS,EAAE,UAAU,QAAQ,IAAI,CAAC;IAC/C;GACF,CAAC,EAAA,CACyB,KAAI,SAAQ;IAAE,GAAG;IAAK,MAAM,iBAAiB,UAAU,IAAI,IAAI;GAAE,EAAE,EAAE;EACjG,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,2BAA2B;EACvD;CACF;AACF,CAAC;AAED,MAAa,+BAA+BD,sBAAAA,YAAY;CACtD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,gBAAgB,cAAc,SAAS,QAAQ,QAAQ,YAAY;EAC3F,IAAI;GACF,MAAM,EAAE,OAAO,MAAM,YAAY,MAAM,aAAa,QAAQ,gBAAgB,YAAY;GACxF,OAAO,EAAE,GAAI,MAAM,QAAQ,0BAA0B,OAAO;IAAE;IAAM;IAAS;IAAQ;IAAQ;GAAM,CAAC,EAAG;EACzG,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,kCAAkC;EAC9D;CACF;AACF,CAAC;AAED,MAAM,eAAe;;;;;AAKrB,MAAM,oBAAoB;;;;;;AAO1B,eAAe,cAAc,OAAyB,MAA0B,OAA6B;CAC3G,MAAM,WAAW,OAAO,OACtB,OAAO,KAAA,MAAc,SAAS,SAAU,MAAM,MAAM,QAAQ;EAAE;EAAI;CAAK,CAAC,MAAO;CACjF,MAAM,UAAU,aAAa,QAAQ,MAAM,UAAU,KAAA;CACrD,MAAM,cAAc,iBAAiB,QAAQ,MAAM,cAAc,KAAA;CACjE,MAAM,CAAC,MAAM,OAAO,aAAa,MAAM,QAAQ,IAAI;EACjD,SAAS,MAAM,MAAM;EACrB,SAAS,OAAO;EAChB,SAAS,WAAW;CACtB,CAAC;CACD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,OAAO;CAC1C,OAAO;EACL,MAAM,MAAM;EACZ,IAAI,MAAM;EACV,GAAI,OAAO,EAAE,QAAQ,MAAM,OAAO,IAAI,CAAC;EACvC,GAAI,QAAQ,EAAE,QAAQ,IAAI,CAAC;EAC3B,IAAI,MAAM,GAAG,YAAY;CAC3B;AACF;AAEA,MAAa,gCAAgCD,sBAAAA,YAAY;CACvD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,cAAc;CACd,mBAAmB;CACnB,iBAAiB;CACjB,gBAAgB;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,gBAAgB,cAAc,kBAAkB;EACxE,IAAI;GACF,MAAM,EAAE,UAAU,OAAO,SAAS,MAAM,aAAa,QAAQ,gBAAgB,YAAY;GACzF,IAAI,OAAO,SAAS,aAAa,YAC/B,MAAM,IAAIJ,uBAAAA,cAAc,KAAK,EAAE,SAAS,6DAA6D,CAAC;GAExG,MAAM,SAAS,OAAO,UAAU;GAChC,IAAI,aAAa,CAAC;GAClB,OAAO,IAAI,eAAe;IACxB,MAAM,YAAY;KAChB,IAAI,OAAO;KAEX,IAAI,QAAQ,QAAQ,QAAQ;KAC5B,MAAM,cAAc,SAAS,UAAS,UAAS;MAC7C,QAAQ,MAAM,KAAK,YAAY;OAC7B,MAAM,SAAS,MAAM,cAAc,OAAO,MAAM,KAAK,CAAC,CAAC,OAAM,UAAS;QACpE,QAAQ,MAAM,sCAAsC,EAAE,MAAM,CAAC;QAC7D,OAAO;OACT,CAAC;OACD,IAAI,QAAQ,QAAQ,WAAW,QAAQ,MAAM;MAC/C,CAAC;KACH,CAAC;KACD,MAAM,YAAY,kBAAkB,QAAQ,WAAW,QAAQ,iBAAiB,GAAG,YAAY;KAC/F,MAAM,SAAS,iBAAiB,KAAK,GAAG,iBAAiB;KACzD,aAAa;MACX,IAAI,CAAC,MAAM;MACX,OAAO;MACP,cAAc,SAAS;MACvB,aAAa,MAAM;MACnB,YAAY;MACZ,IAAI;OACF,WAAW,MAAM;MACnB,QAAQ,CAER;KACF;KACA,IAAI,aAAa,SAAS,KAAK;UAC1B,aAAa,iBAAiB,SAAS,MAAM,EAAE,MAAM,KAAK,CAAC;IAClE;IACA,SAAS;KACP,KAAK;IACP;GACF,CAAC;EACH,SAAS,OAAO;GACd,OAAOK,8BAAAA,YAAY,OAAO,mCAAmC;EAC/D;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"knowledge-Q_SCnD9m.cjs","names":["z","MASTRA_KNOWLEDGE_PRINCIPALS_KEY","HTTPException","getHandlerFGAProvider","MastraFGAPermissions","coreKnowledge","createRoute","handleError"],"sources":["../src/server/schemas/knowledge.ts","../src/server/handlers/knowledge.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nexport const knowledgePathParams = z.object({\n knowledgeKey: z.string().describe('Application key the Knowledge instance is registered under'),\n});\n\nexport const knowledgePagePathParams = knowledgePathParams.extend({\n pageId: z.string().min(1).max(512).describe('Knowledge page id'),\n});\n\nconst pageId = z.string().min(1).max(512);\nconst limit = z.coerce.number().int().min(1).max(100).optional();\n\nexport const knowledgeTreeQuerySchema = z.object({\n parentId: pageId.optional().describe('Page whose children to list; omit for the root scopes'),\n cursor: z.string().optional(),\n limit,\n});\n\nexport const knowledgePageQuerySchema = z.object({\n noteCursor: z.string().optional(),\n noteLimit: limit,\n});\n\nexport const knowledgeGraphQuerySchema = z.object({\n rootId: pageId.optional().describe('Page to walk from; omit to walk every root scope'),\n maxPages: z.coerce.number().int().min(1).max(500).optional(),\n});\n\n// A repeated param (`?scopeId=a&scopeId=b`) arrives as an array, a lone one as a string.\nconst scopeIds = z\n .union([z.string(), z.array(z.string())])\n .transform(value => (Array.isArray(value) ? value : [value]))\n .pipe(z.array(pageId).max(20));\n\nexport const knowledgeSearchQuerySchema = z.object({\n q: z.string().min(1).max(200).describe('Text to match in page names, synopses, bodies and notes'),\n scopeId: scopeIds.optional().describe('Only pages within these scopes'),\n limit,\n});\n\nconst pageIds = z\n .union([z.string(), z.array(z.string())])\n .transform(value => (Array.isArray(value) ? value : [value]))\n .pipe(z.array(pageId).min(1).max(200));\n\nexport const knowledgeLinkCountsQuerySchema = z.object({\n pageId: pageIds.describe('Pages to count links for; repeat the param for each, at most 200'),\n});\n\nexport const knowledgePageLinksQuerySchema = z.object({\n direction: z.enum(['in', 'out', 'both']).optional().describe('Links into the page, out of it, or both (default)'),\n});\n\nexport const knowledgeActivityQuerySchema = z.object({\n scopeId: pageId.optional(),\n pageId: pageId.optional(),\n cursor: z.string().optional(),\n limit,\n});\n\n// Payloads come from the @mastra/core/knowledge page readers; the UI package owns their TypeScript shapes.\nconst payload = z.record(z.string(), z.unknown());\n\nexport const listKnowledgeResponseSchema = z.object({\n instances: z.array(z.object({ key: z.string(), id: z.string() })),\n});\nexport const knowledgeTreeResponseSchema = payload;\nexport const knowledgePageResponseSchema = payload;\nexport const knowledgeGraphResponseSchema = payload;\nexport const knowledgeSearchResponseSchema = z.object({ results: z.array(payload) });\nexport const knowledgeLinkCountsResponseSchema = z.object({\n counts: z.record(z.string(), z.object({ in: z.number(), out: z.number() })),\n});\nexport const knowledgePageLinksResponseSchema = z.object({\n edges: z.array(\n z.object({ fromPageId: z.string(), toPageId: z.string(), kind: z.enum(['body', 'note']), count: z.number() }),\n ),\n pages: z.array(payload),\n truncated: z.boolean(),\n});\nexport const knowledgeActivityResponseSchema = payload;\nexport const knowledgeEventsResponseSchema = z.object({\n kind: z.enum(['scope', 'page', 'note', 'pin']),\n op: z.string(),\n pageId: z.string().optional(),\n scopeId: z.string().optional(),\n at: z.string(),\n});\n","import * as coreKnowledge from '@mastra/core/knowledge';\nimport type { Knowledge, KnowledgeChangeEvent } from '@mastra/core/knowledge';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { KnowledgeReadScope, KnowledgeStorage } from '@mastra/core/storage';\nimport { MASTRA_KNOWLEDGE_PRINCIPALS_KEY } from '../constants';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n knowledgeActivityQuerySchema,\n knowledgeActivityResponseSchema,\n knowledgeEventsResponseSchema,\n knowledgeGraphQuerySchema,\n knowledgeGraphResponseSchema,\n knowledgePagePathParams,\n knowledgePageQuerySchema,\n knowledgePageResponseSchema,\n knowledgePathParams,\n knowledgeSearchQuerySchema,\n knowledgeSearchResponseSchema,\n knowledgeLinkCountsQuerySchema,\n knowledgeLinkCountsResponseSchema,\n knowledgePageLinksQuerySchema,\n knowledgePageLinksResponseSchema,\n knowledgeTreeQuerySchema,\n knowledgeTreeResponseSchema,\n listKnowledgeResponseSchema,\n} from '../schemas/knowledge';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { handleError } from './error';\nimport { getHandlerFGAProvider } from './utils';\n\n/**\n * Read-only browsing of Knowledge instances registered on Mastra, for Studio. Nothing here writes.\n *\n * What a caller reads depends on whether the app has auth configured (`server.auth` or `studio.auth`):\n * - No auth: probably a local or test project, so the routes read as the instance owner (`'all'`).\n * - Auth: reads are narrowed to what the signed-in caller can read. The app maps the user to Knowledge\n * principals by setting MASTRA_KNOWLEDGE_PRINCIPALS_KEY in `auth.authorize` (a `string[]`, or `'all'`\n * for an admin); the instance turns them into a read scope with `readScopeFor`. A caller with no\n * mapping is refused with 403.\n *\n * On top of that the path derives `knowledge:read` (`GET /knowledge/...`), and with FGA configured each\n * instance is filtered and gated by `knowledge:read` on that instance. The routes are opt-in\n * (KNOWLEDGE_ROUTES); hosts with their own scoping (Factory) do not mount them.\n */\n\nfunction hasAuth(mastra: Mastra): boolean {\n return Boolean(mastra.getServer?.()?.auth || (mastra as any).getStudio?.()?.auth);\n}\n\nasync function callerReadScope(\n mastra: Mastra,\n requestContext: RequestContext | undefined,\n instance: Knowledge,\n): Promise<KnowledgeReadScope> {\n if (!hasAuth(mastra)) return 'all';\n\n const principals = requestContext?.get(MASTRA_KNOWLEDGE_PRINCIPALS_KEY);\n if (principals === undefined || principals === null) {\n throw new HTTPException(403, {\n message: `Knowledge access is not mapped for this caller. Set request context key \"${MASTRA_KNOWLEDGE_PRINCIPALS_KEY}\" in auth.authorize.`,\n });\n }\n if (principals === 'all') return 'all';\n // The value comes from the app's own authorize code, so a bad one is a host misconfiguration, not a denial.\n if (!Array.isArray(principals) || principals.some(principal => typeof principal !== 'string')) {\n throw new HTTPException(500, {\n message: `Request context key \"${MASTRA_KNOWLEDGE_PRINCIPALS_KEY}\" must be a string array or 'all'.`,\n });\n }\n try {\n return await instance.readScopeFor(principals);\n } catch (error) {\n // A principal that matches no declared scope type: the app's mapping disagrees with its declarations.\n if (error instanceof Error && error.name === 'KnowledgeDeclarationError') {\n throw new HTTPException(500, { message: error.message, cause: error });\n }\n throw error;\n }\n}\n\nasync function accessibleInstances(\n mastra: Mastra,\n requestContext: RequestContext | undefined,\n entries: Array<{ id: string; key: string }>,\n): Promise<Set<string>> {\n const fgaProvider = getHandlerFGAProvider(mastra, requestContext);\n const user = requestContext?.get('user');\n if (!fgaProvider || !user || typeof user !== 'object' || entries.length === 0) {\n return new Set(entries.map(entry => entry.key));\n }\n // FGA names a Knowledge instance by its registered key, as the route metadata does (`:knowledgeKey`).\n const accessible: Array<{ id: string; key: string }> = await fgaProvider.filterAccessible(\n user,\n entries.map(entry => ({ ...entry, id: entry.key })),\n 'knowledge',\n MastraFGAPermissions.KNOWLEDGE_READ,\n );\n return new Set(accessible.map(entry => entry.key));\n}\n\ntype KnowledgePageReaders = Pick<\n typeof coreKnowledge,\n | 'listKnowledgeTreeChildren'\n | 'readKnowledgePage'\n | 'readKnowledgePageActivity'\n | 'readKnowledgePageGraph'\n | 'searchKnowledgeExplorerPages'\n>;\n\n// The page readers first ship in @mastra/core 1.81.0, above this package's peer floor. A named import\n// of an export an older core lacks fails at ESM link time and takes the whole server down, so they are\n// read off the namespace (as in schedules-workflows-shim.ts) and the routes answer 501 without them.\nconst pageReaders: Partial<KnowledgePageReaders> = coreKnowledge;\n\nfunction requirePageReaders(): KnowledgePageReaders {\n const {\n listKnowledgeTreeChildren,\n readKnowledgePage,\n readKnowledgePageActivity,\n readKnowledgePageGraph,\n searchKnowledgeExplorerPages,\n } = pageReaders;\n if (\n !listKnowledgeTreeChildren ||\n !readKnowledgePage ||\n !readKnowledgePageActivity ||\n !readKnowledgePageGraph ||\n !searchKnowledgeExplorerPages\n ) {\n throw new HTTPException(501, { message: 'Knowledge browsing needs @mastra/core 1.81.0 or later.' });\n }\n return {\n listKnowledgeTreeChildren,\n readKnowledgePage,\n readKnowledgePageActivity,\n readKnowledgePageGraph,\n searchKnowledgeExplorerPages,\n };\n}\n\n/**\n * The declared grants between the graph's scopes, each with its principal's display label. Grants are\n * newer than the page readers, so a core without them sends none and the graph still loads.\n */\nasync function graphGrants(\n instance: Knowledge,\n store: KnowledgeStorage,\n pages: readonly coreKnowledge.KnowledgePage[],\n read: KnowledgeReadScope,\n): Promise<Array<coreKnowledge.KnowledgeGraphScopeGrant & { principalLabel?: string }> | undefined> {\n const readGrants = (coreKnowledge as Partial<typeof coreKnowledge>).readKnowledgeScopeGrants;\n const scopeGrants = (instance as Partial<Knowledge>).scopeGrants?.bind(instance);\n if (!readGrants || !scopeGrants) return undefined;\n const grants = await readGrants(store, { pages, read, grantsFor: scopeGrants });\n return grants.map(grant => {\n const principalLabel = instance.scopeLabel?.(grant.principal);\n return principalLabel ? { ...grant, principalLabel } : grant;\n });\n}\n\nasync function resolveStore(\n mastra: Mastra,\n requestContext: RequestContext | undefined,\n knowledgeKey: string | undefined,\n): Promise<{ instance: Knowledge; store: KnowledgeStorage; read: KnowledgeReadScope; readers: KnowledgePageReaders }> {\n const instances = mastra.listKnowledge();\n // Own keys only: `constructor` or `__proto__` must not resolve to an Object.prototype member.\n const instance = knowledgeKey && Object.hasOwn(instances, knowledgeKey) ? instances[knowledgeKey] : undefined;\n if (!knowledgeKey || !instance)\n throw new HTTPException(404, { message: `Knowledge ${knowledgeKey ?? ''} not found` });\n\n // An instance the caller may not read looks the same as one that does not exist.\n const fgaProvider = getHandlerFGAProvider(mastra, requestContext);\n const user = requestContext?.get('user');\n if (fgaProvider && user && typeof user === 'object') {\n const allowed = await fgaProvider.check(user, {\n resource: { type: 'knowledge', id: knowledgeKey },\n permission: MastraFGAPermissions.KNOWLEDGE_READ,\n });\n if (!allowed) throw new HTTPException(404, { message: `Knowledge ${knowledgeKey} not found` });\n }\n const readers = requirePageReaders();\n const read = await callerReadScope(mastra, requestContext, instance);\n return { instance, store: await instance.getStorage(), read, readers };\n}\n\n/**\n * Adds each scope page's declared `displayLabel` with its address's `$params` filled in (`'$orgId policy'`\n * → `'acme policy'`), so the explorer can caption scopes. Scope declarations live in config, not\n * storage, so the readers can't supply it. Older cores without `scopeLabel` send no label.\n */\nfunction withDisplayLabel<T extends { isScope: boolean; address?: string }>(\n instance: Knowledge,\n page: T,\n): T & { displayLabel?: string } {\n if (!page.isScope || !page.address) return page;\n const displayLabel = instance.scopeLabel?.(page.address);\n return displayLabel ? { ...page, displayLabel } : page;\n}\n\nexport const LIST_KNOWLEDGE_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge',\n responseType: 'json',\n responseSchema: listKnowledgeResponseSchema,\n summary: 'List Knowledge instances',\n description:\n \"Returns the Knowledge instances registered on this Mastra instance, by application key. Without app auth the other Knowledge routes read the whole instance; with auth they read only what the caller's Knowledge principals (MASTRA_KNOWLEDGE_PRINCIPALS_KEY, set in auth.authorize) can read, and refuse an unmapped caller with 403.\",\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext }) => {\n try {\n const all = Object.entries(mastra.listKnowledge()).map(([key, instance]) => ({ key, id: instance.id }));\n const allowed = await accessibleInstances(mastra, requestContext, all);\n return { instances: all.filter(entry => allowed.has(entry.key)) };\n } catch (error) {\n return handleError(error, 'Error listing Knowledge instances');\n }\n },\n});\n\nexport const GET_KNOWLEDGE_TREE_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/tree',\n responseType: 'json',\n pathParamSchema: knowledgePathParams,\n queryParamSchema: knowledgeTreeQuerySchema,\n responseSchema: knowledgeTreeResponseSchema,\n summary: 'List one level of the Knowledge page tree',\n description:\n 'Without parentId, returns the root scopes. With parentId, returns its child scopes (first page only) then its child pages in order, paged with cursor.',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, parentId, cursor, limit }) => {\n try {\n const { instance, store, read, readers } = await resolveStore(mastra, requestContext, knowledgeKey);\n const level = await readers.listKnowledgeTreeChildren(store, {\n parentId: parentId ?? null,\n read,\n // An empty `?cursor=` means no cursor, so root scopes are still listed.\n cursor: cursor || undefined,\n limit,\n });\n return { ...level, pages: level.pages.map(page => withDisplayLabel(instance, page)) };\n } catch (error) {\n return handleError(error, 'Error reading Knowledge tree');\n }\n },\n});\n\nexport const GET_KNOWLEDGE_PAGE_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/pages/:pageId',\n responseType: 'json',\n pathParamSchema: knowledgePagePathParams,\n queryParamSchema: knowledgePageQuerySchema,\n responseSchema: knowledgePageResponseSchema,\n summary: 'Get a Knowledge page',\n description:\n 'Returns one page with its ancestors, a page of its notes, its pin, the pages its notes reference and notes elsewhere that mention it; 404 when it does not exist',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, pageId, noteCursor, noteLimit }) => {\n try {\n const { instance, store, read, readers } = await resolveStore(mastra, requestContext, knowledgeKey);\n const view = await readers.readKnowledgePage(store, { pageId, read, noteCursor, noteLimit });\n if (!view) throw new HTTPException(404, { message: 'Knowledge page not found' });\n const label = <T extends { isScope: boolean; declaration?: string }>(page: T) => withDisplayLabel(instance, page);\n return {\n ...view,\n page: label(view.page),\n ancestors: view.ancestors.map(label),\n related: view.related.map(label),\n };\n } catch (error) {\n return handleError(error, 'Error reading Knowledge page');\n }\n },\n});\n\n/**\n * The link readers are newer than the page readers, so a core without them answers these routes with 501\n * and the explorer falls back to counting the pages it has loaded.\n */\nfunction requireLinkReaders() {\n const { readKnowledgePageLinkCounts, readKnowledgePageLinks } = coreKnowledge as Partial<typeof coreKnowledge>;\n if (!readKnowledgePageLinkCounts || !readKnowledgePageLinks) {\n throw new HTTPException(501, { message: 'Knowledge link counts need a newer @mastra/core.' });\n }\n return { readKnowledgePageLinkCounts, readKnowledgePageLinks };\n}\n\nexport const GET_KNOWLEDGE_LINK_COUNTS_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/link-counts',\n responseType: 'json',\n pathParamSchema: knowledgePathParams,\n queryParamSchema: knowledgeLinkCountsQuerySchema,\n responseSchema: knowledgeLinkCountsResponseSchema,\n summary: 'Count the links into and out of pages',\n description:\n 'Returns, for each page id, how many distinct other pages link to it and it links to, by body [[ref]] or note mention, counted over the whole store and not only pages the caller has loaded. A page the caller cannot read counts as no links, the same as one that does not exist. 501 when the store has no link index.',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, pageId }) => {\n try {\n const { store, read } = await resolveStore(mastra, requestContext, knowledgeKey);\n const counts = await requireLinkReaders().readKnowledgePageLinkCounts(store, { pageIds: pageId, read });\n if (!counts) throw new HTTPException(501, { message: 'This Knowledge store has no link index.' });\n return { counts };\n } catch (error) {\n return handleError(error, 'Error counting Knowledge page links');\n }\n },\n});\n\nexport const GET_KNOWLEDGE_PAGE_LINKS_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/pages/:pageId/links',\n responseType: 'json',\n pathParamSchema: knowledgePagePathParams,\n queryParamSchema: knowledgePageLinksQuerySchema,\n responseSchema: knowledgePageLinksResponseSchema,\n summary: \"List a Knowledge page's links\",\n description:\n 'Returns the links into and out of one page, bounded, with the readable pages at their other ends. A page the caller cannot read has none. 501 when the store has no link index.',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, pageId, direction }) => {\n try {\n const { instance, store, read } = await resolveStore(mastra, requestContext, knowledgeKey);\n const links = await requireLinkReaders().readKnowledgePageLinks(store, { pageId, read, direction });\n if (!links) throw new HTTPException(501, { message: 'This Knowledge store has no link index.' });\n return { ...links, pages: links.pages.map(page => ({ ...withDisplayLabel(instance, page) })) };\n } catch (error) {\n return handleError(error, 'Error reading Knowledge page links');\n }\n },\n});\n\nexport const GET_KNOWLEDGE_GRAPH_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/graph',\n responseType: 'json',\n pathParamSchema: knowledgePathParams,\n queryParamSchema: knowledgeGraphQuerySchema,\n responseSchema: knowledgeGraphResponseSchema,\n summary: 'Get a bounded Knowledge page graph',\n description:\n 'Returns pages under rootId (or every root scope) breadth-first with parent and mention edges, bounded; truncated is true when a limit stopped it. grants lists the declared access grants onto the scopes shown, from principal scopes the caller can read. 404 when rootId does not exist.',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, rootId, maxPages }) => {\n try {\n const { instance, store, read, readers } = await resolveStore(mastra, requestContext, knowledgeKey);\n const graph = await readers.readKnowledgePageGraph(store, {\n read,\n rootId: rootId ?? null,\n ...(maxPages ? { limits: { maxPages } } : {}),\n });\n if (!graph) throw new HTTPException(404, { message: 'Knowledge page not found' });\n const grants = await graphGrants(instance, store, graph.pages, read);\n return {\n ...graph,\n pages: graph.pages.map(page => withDisplayLabel(instance, page)),\n ...(grants ? { grants } : {}),\n };\n } catch (error) {\n return handleError(error, 'Error reading Knowledge graph');\n }\n },\n});\n\nexport const SEARCH_KNOWLEDGE_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/search',\n responseType: 'json',\n pathParamSchema: knowledgePathParams,\n queryParamSchema: knowledgeSearchQuerySchema,\n responseSchema: knowledgeSearchResponseSchema,\n summary: 'Search Knowledge pages and notes',\n description: 'Returns pages whose name, synopsis or body, and notes whose text, match the query',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, q, scopeId, limit }) => {\n try {\n const { instance, store, read, readers } = await resolveStore(mastra, requestContext, knowledgeKey);\n const results = await readers.searchKnowledgeExplorerPages(store, {\n query: q,\n read,\n ...(scopeId?.length ? { scopeIds: scopeId } : {}),\n limit,\n });\n return { results: results.map(hit => ({ ...hit, page: withDisplayLabel(instance, hit.page) })) };\n } catch (error) {\n return handleError(error, 'Error searching Knowledge');\n }\n },\n});\n\nexport const GET_KNOWLEDGE_ACTIVITY_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/activity',\n responseType: 'json',\n pathParamSchema: knowledgePathParams,\n queryParamSchema: knowledgeActivityQuerySchema,\n responseSchema: knowledgeActivityResponseSchema,\n summary: 'List recent Knowledge activity',\n description: 'Returns a newest-first page of activity, optionally for one scope or one page',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, scopeId, pageId, cursor, limit }) => {\n try {\n const { store, read, readers } = await resolveStore(mastra, requestContext, knowledgeKey);\n return { ...(await readers.readKnowledgePageActivity(store, { read, scopeId, pageId, cursor, limit })) };\n } catch (error) {\n return handleError(error, 'Error reading Knowledge activity');\n }\n },\n});\n\nconst KEEPALIVE_MS = 25_000;\n/**\n * The read scope is resolved when the stream opens. Ending it after this long makes the client reconnect,\n * which resolves the caller's read scope again, so a revoked grant stops receiving changes.\n */\nconst STREAM_MAX_AGE_MS = 5 * 60_000;\n\n/**\n * What a viewer may learn about one change: the ids in it they can read, or nothing when they can read\n * none. A page they can read now, or the scope it is (or was, before a move or merge) in, counts; a\n * deleted page is matched by its scope.\n */\nasync function visibleChange(store: KnowledgeStorage, read: KnowledgeReadScope, event: KnowledgeChangeEvent) {\n const readable = async (id: string | undefined) =>\n id !== undefined && (read === 'all' || (await store.getPage({ id, read })) !== null);\n const scopeId = 'scopeId' in event ? event.scopeId : undefined;\n const fromScopeId = 'fromScopeId' in event ? event.fromScopeId : undefined;\n const [page, scope, fromScope] = await Promise.all([\n readable(event.pageId),\n readable(scopeId),\n readable(fromScopeId),\n ]);\n if (!page && !scope && !fromScope) return null;\n return {\n kind: event.kind,\n op: event.op,\n ...(page ? { pageId: event.pageId } : {}),\n ...(scope ? { scopeId } : {}),\n at: event.at.toISOString(),\n };\n}\n\nexport const STREAM_KNOWLEDGE_EVENTS_ROUTE = createRoute({\n method: 'GET',\n path: '/knowledge/:knowledgeKey/events',\n responseType: 'stream',\n streamFormat: 'sse',\n sseFlushOnConnect: true,\n pathParamSchema: knowledgePathParams,\n responseSchema: knowledgeEventsResponseSchema,\n summary: 'Stream Knowledge changes',\n description:\n 'Server-Sent Events, one per committed write the caller can read: { kind, op, pageId?, scopeId?, at }. Ids the caller cannot read are left out, and changes they cannot read at all are not sent. Re-read what changed with the other Knowledge routes.',\n tags: ['Knowledge'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, knowledgeKey, abortSignal }) => {\n try {\n const { instance, store, read } = await resolveStore(mastra, requestContext, knowledgeKey);\n if (typeof instance.onChange !== 'function') {\n throw new HTTPException(501, { message: 'Knowledge change events need @mastra/core 1.81.0 or later.' });\n }\n const logger = mastra.getLogger();\n let stop = () => {};\n return new ReadableStream({\n start(controller) {\n let open = true;\n // Writes are filtered in order so a viewer never sees a later change before an earlier one.\n let queue = Promise.resolve();\n const unsubscribe = instance.onChange(event => {\n queue = queue.then(async () => {\n const change = await visibleChange(store, read, event).catch(error => {\n logger?.error('Error filtering a Knowledge change', { error });\n return null;\n });\n if (open && change) controller.enqueue(change);\n });\n });\n const keepalive = setInterval(() => open && controller.enqueue(': keepalive\\n\\n'), KEEPALIVE_MS);\n const expire = setTimeout(() => stop(), STREAM_MAX_AGE_MS);\n stop = () => {\n if (!open) return;\n open = false;\n clearInterval(keepalive);\n clearTimeout(expire);\n unsubscribe();\n try {\n controller.close();\n } catch {\n // Already closed\n }\n };\n if (abortSignal?.aborted) stop();\n else abortSignal?.addEventListener('abort', stop, { once: true });\n },\n cancel() {\n stop();\n },\n });\n } catch (error) {\n return handleError(error, 'Error streaming Knowledge changes');\n }\n },\n});\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime-CQI-hT2b.js";
2
2
  import { u as runIdSchema } from "./common-J-yUnHk9.js";
3
- import { n as createRoute } from "./route-builder-BxPrwNog.js";
4
- import { handleError } from "./server/handlers/error.js";
5
- import { l as parseFilters, m as validateBody } from "./utils-B15w-1hm.js";
6
3
  import { n as listLogsQuerySchema, r as listLogsResponseSchema, t as listLogTransportsResponseSchema } from "./logs-Ca_q8krO.js";
4
+ import { n as createRoute } from "./route-builder-BKEzjw_M.js";
5
+ import { handleError } from "./server/handlers/error.js";
6
+ import { l as parseFilters, m as validateBody } from "./utils-CTYtskHa.js";
7
7
  // src/server/handlers/logs.ts
8
8
  var logs_exports = /* @__PURE__ */ __exportAll({
9
9
  LIST_LOGS_BY_RUN_ID_ROUTE: () => LIST_LOGS_BY_RUN_ID_ROUTE,
@@ -92,4 +92,4 @@ const LIST_LOGS_BY_RUN_ID_ROUTE = createRoute({
92
92
  });
93
93
  export { logs_exports as i, LIST_LOGS_ROUTE as n, LIST_LOG_TRANSPORTS_ROUTE as r, LIST_LOGS_BY_RUN_ID_ROUTE as t };
94
94
 
95
- //# sourceMappingURL=logs-B57_NKDn.js.map
95
+ //# sourceMappingURL=logs-C5L6gRGr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logs-B57_NKDn.js","names":[],"sources":["../src/server/handlers/logs.ts"],"sourcesContent":["import { runIdSchema } from '../schemas/common';\nimport { listLogsQuerySchema, listLogsResponseSchema, listLogTransportsResponseSchema } from '../schemas/logs';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\nimport { parseFilters, validateBody } from './utils';\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_LOG_TRANSPORTS_ROUTE = createRoute({\n method: 'GET',\n path: '/logs/transports',\n responseType: 'json',\n responseSchema: listLogTransportsResponseSchema,\n summary: 'List log transports',\n description: 'Returns a list of all available log transports',\n tags: ['Logs'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const logger = mastra.getLogger();\n const transports = logger.getTransports();\n\n return {\n transports: transports ? [...transports.keys()] : [],\n };\n } catch (error) {\n return handleError(error, 'Error getting log Transports');\n }\n },\n});\n\nexport const LIST_LOGS_ROUTE = createRoute({\n method: 'GET',\n path: '/logs',\n responseType: 'json',\n queryParamSchema: listLogsQuerySchema,\n responseSchema: listLogsResponseSchema,\n summary: 'List logs',\n description:\n 'Returns logs from a specific transport with optional filtering by date range, log level, and custom filters',\n tags: ['Logs'],\n requiresAuth: true,\n handler: async ({ mastra, ...params }) => {\n try {\n const { transportId, fromDate, toDate, logLevel, filters: _filters, page, perPage } = params;\n\n validateBody({ transportId });\n\n // Parse filter query parameter if present\n const filters = parseFilters(_filters);\n\n const logs = await mastra.listLogs(transportId!, {\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs');\n }\n },\n});\n\nexport const LIST_LOGS_BY_RUN_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/logs/:runId',\n responseType: 'json',\n pathParamSchema: runIdSchema,\n queryParamSchema: listLogsQuerySchema,\n responseSchema: listLogsResponseSchema,\n summary: 'List logs by run ID',\n description: 'Returns all logs for a specific execution run from a transport',\n tags: ['Logs'],\n requiresAuth: true,\n handler: async ({ mastra, runId, ...params }) => {\n try {\n const { transportId, fromDate, toDate, logLevel, filters: _filters, page, perPage } = params;\n\n validateBody({ runId, transportId });\n\n // Parse filter query parameter if present\n const filters = parseFilters(_filters);\n\n const logs = await mastra.listLogsByRunId({\n runId: runId!,\n transportId: transportId!,\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs by run ID');\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;AAUA,MAAa,4BAA4B,YAAY;CACnD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,MAAM;CACb,cAAc;CACd,SAAS,OAAO,EAAE,aAAa;EAC7B,IAAI;GAEF,MAAM,aADS,OAAO,UACE,CAAC,CAAC,cAAc;GAExC,OAAO,EACL,YAAY,aAAa,CAAC,GAAG,WAAW,KAAK,CAAC,IAAI,CAAC,EACrD;EACF,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,8BAA8B;EAC1D;CACF;AACF,CAAC;AAED,MAAa,kBAAkB,YAAY;CACzC,QAAQ;CACR,MAAM;CACN,cAAc;CACd,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,MAAM;CACb,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,GAAG,aAAa;EACxC,IAAI;GACF,MAAM,EAAE,aAAa,UAAU,QAAQ,UAAU,SAAS,UAAU,MAAM,YAAY;GAEtF,aAAa,EAAE,YAAY,CAAC;GAG5B,MAAM,UAAU,aAAa,QAAQ;GAUrC,OAAO,MARY,OAAO,SAAS,aAAc;IAC/C;IACA;IACA;IACA;IACA,MAAM,OAAO,OAAO,IAAI,IAAI,KAAA;IAC5B,SAAS,UAAU,OAAO,OAAO,IAAI,KAAA;GACvC,CAAC;EAEH,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,oBAAoB;EAChD;CACF;AACF,CAAC;AAED,MAAa,4BAA4B,YAAY;CACnD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,MAAM;CACb,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,OAAO,GAAG,aAAa;EAC/C,IAAI;GACF,MAAM,EAAE,aAAa,UAAU,QAAQ,UAAU,SAAS,UAAU,MAAM,YAAY;GAEtF,aAAa;IAAE;IAAO;GAAY,CAAC;GAGnC,MAAM,UAAU,aAAa,QAAQ;GAYrC,OAAO,MAVY,OAAO,gBAAgB;IACjC;IACM;IACb;IACA;IACA;IACA;IACA,MAAM,OAAO,OAAO,IAAI,IAAI,KAAA;IAC5B,SAAS,UAAU,OAAO,OAAO,IAAI,KAAA;GACvC,CAAC;EAEH,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,8BAA8B;EAC1D;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"logs-C5L6gRGr.js","names":[],"sources":["../src/server/handlers/logs.ts"],"sourcesContent":["import { runIdSchema } from '../schemas/common';\nimport { listLogsQuerySchema, listLogsResponseSchema, listLogTransportsResponseSchema } from '../schemas/logs';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\nimport { parseFilters, validateBody } from './utils';\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_LOG_TRANSPORTS_ROUTE = createRoute({\n method: 'GET',\n path: '/logs/transports',\n responseType: 'json',\n responseSchema: listLogTransportsResponseSchema,\n summary: 'List log transports',\n description: 'Returns a list of all available log transports',\n tags: ['Logs'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const logger = mastra.getLogger();\n const transports = logger.getTransports();\n\n return {\n transports: transports ? [...transports.keys()] : [],\n };\n } catch (error) {\n return handleError(error, 'Error getting log Transports');\n }\n },\n});\n\nexport const LIST_LOGS_ROUTE = createRoute({\n method: 'GET',\n path: '/logs',\n responseType: 'json',\n queryParamSchema: listLogsQuerySchema,\n responseSchema: listLogsResponseSchema,\n summary: 'List logs',\n description:\n 'Returns logs from a specific transport with optional filtering by date range, log level, and custom filters',\n tags: ['Logs'],\n requiresAuth: true,\n handler: async ({ mastra, ...params }) => {\n try {\n const { transportId, fromDate, toDate, logLevel, filters: _filters, page, perPage } = params;\n\n validateBody({ transportId });\n\n // Parse filter query parameter if present\n const filters = parseFilters(_filters);\n\n const logs = await mastra.listLogs(transportId!, {\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs');\n }\n },\n});\n\nexport const LIST_LOGS_BY_RUN_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/logs/:runId',\n responseType: 'json',\n pathParamSchema: runIdSchema,\n queryParamSchema: listLogsQuerySchema,\n responseSchema: listLogsResponseSchema,\n summary: 'List logs by run ID',\n description: 'Returns all logs for a specific execution run from a transport',\n tags: ['Logs'],\n requiresAuth: true,\n handler: async ({ mastra, runId, ...params }) => {\n try {\n const { transportId, fromDate, toDate, logLevel, filters: _filters, page, perPage } = params;\n\n validateBody({ runId, transportId });\n\n // Parse filter query parameter if present\n const filters = parseFilters(_filters);\n\n const logs = await mastra.listLogsByRunId({\n runId: runId!,\n transportId: transportId!,\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs by run ID');\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;AAUA,MAAa,4BAA4B,YAAY;CACnD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,MAAM;CACb,cAAc;CACd,SAAS,OAAO,EAAE,aAAa;EAC7B,IAAI;GAEF,MAAM,aADS,OAAO,UACE,CAAC,CAAC,cAAc;GAExC,OAAO,EACL,YAAY,aAAa,CAAC,GAAG,WAAW,KAAK,CAAC,IAAI,CAAC,EACrD;EACF,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,8BAA8B;EAC1D;CACF;AACF,CAAC;AAED,MAAa,kBAAkB,YAAY;CACzC,QAAQ;CACR,MAAM;CACN,cAAc;CACd,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,MAAM;CACb,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,GAAG,aAAa;EACxC,IAAI;GACF,MAAM,EAAE,aAAa,UAAU,QAAQ,UAAU,SAAS,UAAU,MAAM,YAAY;GAEtF,aAAa,EAAE,YAAY,CAAC;GAG5B,MAAM,UAAU,aAAa,QAAQ;GAUrC,OAAO,MARY,OAAO,SAAS,aAAc;IAC/C;IACA;IACA;IACA;IACA,MAAM,OAAO,OAAO,IAAI,IAAI,KAAA;IAC5B,SAAS,UAAU,OAAO,OAAO,IAAI,KAAA;GACvC,CAAC;EAEH,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,oBAAoB;EAChD;CACF;AACF,CAAC;AAED,MAAa,4BAA4B,YAAY;CACnD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,MAAM;CACb,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,OAAO,GAAG,aAAa;EAC/C,IAAI;GACF,MAAM,EAAE,aAAa,UAAU,QAAQ,UAAU,SAAS,UAAU,MAAM,YAAY;GAEtF,aAAa;IAAE;IAAO;GAAY,CAAC;GAGnC,MAAM,UAAU,aAAa,QAAQ;GAYrC,OAAO,MAVY,OAAO,gBAAgB;IACjC;IACM;IACb;IACA;IACA;IACA;IACA,MAAM,OAAO,OAAO,IAAI,IAAI,KAAA;IAC5B,SAAS,UAAU,OAAO,OAAO,IAAI,KAAA;GACvC,CAAC;EAEH,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,8BAA8B;EAC1D;CACF;AACF,CAAC"}
@@ -1,9 +1,9 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-10nMEhjP.cjs");
2
2
  const require_common = require("./common-D5XxSuvu.cjs");
3
- const require_route_builder = require("./route-builder-CvARmqnA.cjs");
4
- const require_server_handlers_error = require("./server/handlers/error.cjs");
5
- const require_utils = require("./utils-9PRHHTGC.cjs");
6
3
  const require_logs = require("./logs-YisOj8HR.cjs");
4
+ const require_route_builder = require("./route-builder-DHqDrSSy.cjs");
5
+ const require_server_handlers_error = require("./server/handlers/error.cjs");
6
+ const require_utils = require("./utils-BXEJ6FZC.cjs");
7
7
  // src/server/handlers/logs.ts
8
8
  var logs_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
9
9
  LIST_LOGS_BY_RUN_ID_ROUTE: () => LIST_LOGS_BY_RUN_ID_ROUTE,
@@ -115,4 +115,4 @@ Object.defineProperty(exports, "logs_exports", {
115
115
  }
116
116
  });
117
117
 
118
- //# sourceMappingURL=logs-BJN3M88A.cjs.map
118
+ //# sourceMappingURL=logs-DWIbFIw6.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"logs-BJN3M88A.cjs","names":["createRoute","listLogTransportsResponseSchema","handleError","listLogsQuerySchema","listLogsResponseSchema","parseFilters","runIdSchema"],"sources":["../src/server/handlers/logs.ts"],"sourcesContent":["import { runIdSchema } from '../schemas/common';\nimport { listLogsQuerySchema, listLogsResponseSchema, listLogTransportsResponseSchema } from '../schemas/logs';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\nimport { parseFilters, validateBody } from './utils';\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_LOG_TRANSPORTS_ROUTE = createRoute({\n method: 'GET',\n path: '/logs/transports',\n responseType: 'json',\n responseSchema: listLogTransportsResponseSchema,\n summary: 'List log transports',\n description: 'Returns a list of all available log transports',\n tags: ['Logs'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const logger = mastra.getLogger();\n const transports = logger.getTransports();\n\n return {\n transports: transports ? [...transports.keys()] : [],\n };\n } catch (error) {\n return handleError(error, 'Error getting log Transports');\n }\n },\n});\n\nexport const LIST_LOGS_ROUTE = createRoute({\n method: 'GET',\n path: '/logs',\n responseType: 'json',\n queryParamSchema: listLogsQuerySchema,\n responseSchema: listLogsResponseSchema,\n summary: 'List logs',\n description:\n 'Returns logs from a specific transport with optional filtering by date range, log level, and custom filters',\n tags: ['Logs'],\n requiresAuth: true,\n handler: async ({ mastra, ...params }) => {\n try {\n const { transportId, fromDate, toDate, logLevel, filters: _filters, page, perPage } = params;\n\n validateBody({ transportId });\n\n // Parse filter query parameter if present\n const filters = parseFilters(_filters);\n\n const logs = await mastra.listLogs(transportId!, {\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs');\n }\n },\n});\n\nexport const LIST_LOGS_BY_RUN_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/logs/:runId',\n responseType: 'json',\n pathParamSchema: runIdSchema,\n queryParamSchema: listLogsQuerySchema,\n responseSchema: listLogsResponseSchema,\n summary: 'List logs by run ID',\n description: 'Returns all logs for a specific execution run from a transport',\n tags: ['Logs'],\n requiresAuth: true,\n handler: async ({ mastra, runId, ...params }) => {\n try {\n const { transportId, fromDate, toDate, logLevel, filters: _filters, page, perPage } = params;\n\n validateBody({ runId, transportId });\n\n // Parse filter query parameter if present\n const filters = parseFilters(_filters);\n\n const logs = await mastra.listLogsByRunId({\n runId: runId!,\n transportId: transportId!,\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs by run ID');\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;AAUA,MAAa,4BAA4BA,sBAAAA,YAAY;CACnD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,gBAAgBC,aAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,MAAM;CACb,cAAc;CACd,SAAS,OAAO,EAAE,aAAa;EAC7B,IAAI;GAEF,MAAM,aADS,OAAO,UACE,CAAC,CAAC,cAAc;GAExC,OAAO,EACL,YAAY,aAAa,CAAC,GAAG,WAAW,KAAK,CAAC,IAAI,CAAC,EACrD;EACF,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,8BAA8B;EAC1D;CACF;AACF,CAAC;AAED,MAAa,kBAAkBF,sBAAAA,YAAY;CACzC,QAAQ;CACR,MAAM;CACN,cAAc;CACd,kBAAkBG,aAAAA;CAClB,gBAAgBC,aAAAA;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,MAAM;CACb,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,GAAG,aAAa;EACxC,IAAI;GACF,MAAM,EAAE,aAAa,UAAU,QAAQ,UAAU,SAAS,UAAU,MAAM,YAAY;GAEtF,cAAA,aAAa,EAAE,YAAY,CAAC;GAG5B,MAAM,UAAUC,cAAAA,aAAa,QAAQ;GAUrC,OAAO,MARY,OAAO,SAAS,aAAc;IAC/C;IACA;IACA;IACA;IACA,MAAM,OAAO,OAAO,IAAI,IAAI,KAAA;IAC5B,SAAS,UAAU,OAAO,OAAO,IAAI,KAAA;GACvC,CAAC;EAEH,SAAS,OAAO;GACd,OAAOH,8BAAAA,YAAY,OAAO,oBAAoB;EAChD;CACF;AACF,CAAC;AAED,MAAa,4BAA4BF,sBAAAA,YAAY;CACnD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBM,eAAAA;CACjB,kBAAkBH,aAAAA;CAClB,gBAAgBC,aAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,MAAM;CACb,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,OAAO,GAAG,aAAa;EAC/C,IAAI;GACF,MAAM,EAAE,aAAa,UAAU,QAAQ,UAAU,SAAS,UAAU,MAAM,YAAY;GAEtF,cAAA,aAAa;IAAE;IAAO;GAAY,CAAC;GAGnC,MAAM,UAAUC,cAAAA,aAAa,QAAQ;GAYrC,OAAO,MAVY,OAAO,gBAAgB;IACjC;IACM;IACb;IACA;IACA;IACA;IACA,MAAM,OAAO,OAAO,IAAI,IAAI,KAAA;IAC5B,SAAS,UAAU,OAAO,OAAO,IAAI,KAAA;GACvC,CAAC;EAEH,SAAS,OAAO;GACd,OAAOH,8BAAAA,YAAY,OAAO,8BAA8B;EAC1D;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"logs-DWIbFIw6.cjs","names":["createRoute","listLogTransportsResponseSchema","handleError","listLogsQuerySchema","listLogsResponseSchema","parseFilters","runIdSchema"],"sources":["../src/server/handlers/logs.ts"],"sourcesContent":["import { runIdSchema } from '../schemas/common';\nimport { listLogsQuerySchema, listLogsResponseSchema, listLogTransportsResponseSchema } from '../schemas/logs';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\nimport { parseFilters, validateBody } from './utils';\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_LOG_TRANSPORTS_ROUTE = createRoute({\n method: 'GET',\n path: '/logs/transports',\n responseType: 'json',\n responseSchema: listLogTransportsResponseSchema,\n summary: 'List log transports',\n description: 'Returns a list of all available log transports',\n tags: ['Logs'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const logger = mastra.getLogger();\n const transports = logger.getTransports();\n\n return {\n transports: transports ? [...transports.keys()] : [],\n };\n } catch (error) {\n return handleError(error, 'Error getting log Transports');\n }\n },\n});\n\nexport const LIST_LOGS_ROUTE = createRoute({\n method: 'GET',\n path: '/logs',\n responseType: 'json',\n queryParamSchema: listLogsQuerySchema,\n responseSchema: listLogsResponseSchema,\n summary: 'List logs',\n description:\n 'Returns logs from a specific transport with optional filtering by date range, log level, and custom filters',\n tags: ['Logs'],\n requiresAuth: true,\n handler: async ({ mastra, ...params }) => {\n try {\n const { transportId, fromDate, toDate, logLevel, filters: _filters, page, perPage } = params;\n\n validateBody({ transportId });\n\n // Parse filter query parameter if present\n const filters = parseFilters(_filters);\n\n const logs = await mastra.listLogs(transportId!, {\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs');\n }\n },\n});\n\nexport const LIST_LOGS_BY_RUN_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/logs/:runId',\n responseType: 'json',\n pathParamSchema: runIdSchema,\n queryParamSchema: listLogsQuerySchema,\n responseSchema: listLogsResponseSchema,\n summary: 'List logs by run ID',\n description: 'Returns all logs for a specific execution run from a transport',\n tags: ['Logs'],\n requiresAuth: true,\n handler: async ({ mastra, runId, ...params }) => {\n try {\n const { transportId, fromDate, toDate, logLevel, filters: _filters, page, perPage } = params;\n\n validateBody({ runId, transportId });\n\n // Parse filter query parameter if present\n const filters = parseFilters(_filters);\n\n const logs = await mastra.listLogsByRunId({\n runId: runId!,\n transportId: transportId!,\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs by run ID');\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;AAUA,MAAa,4BAA4BA,sBAAAA,YAAY;CACnD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,gBAAgBC,aAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,MAAM;CACb,cAAc;CACd,SAAS,OAAO,EAAE,aAAa;EAC7B,IAAI;GAEF,MAAM,aADS,OAAO,UACE,CAAC,CAAC,cAAc;GAExC,OAAO,EACL,YAAY,aAAa,CAAC,GAAG,WAAW,KAAK,CAAC,IAAI,CAAC,EACrD;EACF,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,8BAA8B;EAC1D;CACF;AACF,CAAC;AAED,MAAa,kBAAkBF,sBAAAA,YAAY;CACzC,QAAQ;CACR,MAAM;CACN,cAAc;CACd,kBAAkBG,aAAAA;CAClB,gBAAgBC,aAAAA;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,MAAM;CACb,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,GAAG,aAAa;EACxC,IAAI;GACF,MAAM,EAAE,aAAa,UAAU,QAAQ,UAAU,SAAS,UAAU,MAAM,YAAY;GAEtF,cAAA,aAAa,EAAE,YAAY,CAAC;GAG5B,MAAM,UAAUC,cAAAA,aAAa,QAAQ;GAUrC,OAAO,MARY,OAAO,SAAS,aAAc;IAC/C;IACA;IACA;IACA;IACA,MAAM,OAAO,OAAO,IAAI,IAAI,KAAA;IAC5B,SAAS,UAAU,OAAO,OAAO,IAAI,KAAA;GACvC,CAAC;EAEH,SAAS,OAAO;GACd,OAAOH,8BAAAA,YAAY,OAAO,oBAAoB;EAChD;CACF;AACF,CAAC;AAED,MAAa,4BAA4BF,sBAAAA,YAAY;CACnD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBM,eAAAA;CACjB,kBAAkBH,aAAAA;CAClB,gBAAgBC,aAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,MAAM;CACb,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,OAAO,GAAG,aAAa;EAC/C,IAAI;GACF,MAAM,EAAE,aAAa,UAAU,QAAQ,UAAU,SAAS,UAAU,MAAM,YAAY;GAEtF,cAAA,aAAa;IAAE;IAAO;GAAY,CAAC;GAGnC,MAAM,UAAUC,cAAAA,aAAa,QAAQ;GAYrC,OAAO,MAVY,OAAO,gBAAgB;IACjC;IACM;IACb;IACA;IACA;IACA;IACA,MAAM,OAAO,OAAO,IAAI,IAAI,KAAA;IAC5B,SAAS,UAAU,OAAO,OAAO,IAAI,KAAA;GACvC,CAAC;EAEH,SAAS,OAAO;GACd,OAAOH,8BAAAA,YAAY,OAAO,8BAA8B;EAC1D;CACF;AACF,CAAC"}
@@ -1,8 +1,8 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-10nMEhjP.cjs");
2
2
  const require_http_exception = require("./http-exception-Co3MbFUf.cjs");
3
- const require_route_builder = require("./route-builder-CvARmqnA.cjs");
4
- const require_utils = require("./utils-9PRHHTGC.cjs");
5
3
  const require_mcp = require("./mcp-B7Q8qwjn.cjs");
4
+ const require_route_builder = require("./route-builder-DHqDrSSy.cjs");
5
+ const require_utils = require("./utils-BXEJ6FZC.cjs");
6
6
  let _mastra_core_error = require("@mastra/core/error");
7
7
  // src/server/handlers/mcp.ts
8
8
  var mcp_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
@@ -732,4 +732,4 @@ Object.defineProperty(exports, "mcp_exports", {
732
732
  }
733
733
  });
734
734
 
735
- //# sourceMappingURL=mcp-B9BILfJP.cjs.map
735
+ //# sourceMappingURL=mcp-CKvOVfHn.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-B9BILfJP.cjs","names":["createRoute","listMcpServersQuerySchema","listMcpServersResponseSchema","HTTPException","mcpServerDetailPathParams","getMcpServerDetailQuerySchema","serverDetailSchema","mcpServerIdPathParams","listMcpServerToolsResponseSchema","mcpServerToolPathParams","mcpToolInfoSchema","executeToolBodySchema","executeToolResponseSchema","MastraError","mcpServerResourcePathParams","listResourcesResponseSchema","readResourceBodySchema","readResourceResponseSchema","listMcpServerEventsResponseSchema","mcpServerEventPathParams","pollMcpServerEventBodySchema","pollMcpServerEventResponseSchema","streamMcpServerEventBodySchema","mcpServerEventStreamFrameSchema","emitMcpServerEventBodySchema","emitMcpServerEventResponseSchema","getContextResourceId","listMcpServerTasksQuerySchema","listMcpServerTasksResponseSchema","findMcpServerTaskBodySchema","findMcpServerTaskResponseSchema","mcpServerTaskPathParams","mcpServerTaskActionResponseSchema","answerMcpServerTaskBodySchema"],"sources":["../src/server/handlers/mcp.ts"],"sourcesContent":["import { MastraError } from '@mastra/core/error';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type {\n MCP_SERVER_EVENT_ERROR_IDS,\n MCPServerBase as MastraMCPServerImplementation,\n MCPServerEventStreamFrame,\n MCPServerEventsInspector,\n MCPServerTasksInspector,\n MCPToolExecutionResultV2,\n ServerInfo,\n} from '@mastra/core/mcp';\nimport type { z } from 'zod';\nimport { HTTPException } from '../http-exception';\nimport {\n mcpServerDetailPathParams,\n mcpServerToolPathParams,\n executeToolBodySchema,\n listMcpServersQuerySchema,\n getMcpServerDetailQuerySchema,\n listMcpServersResponseSchema,\n serverDetailSchema,\n mcpServerIdPathParams,\n listMcpServerToolsResponseSchema,\n mcpToolInfoSchema,\n executeToolResponseSchema,\n mcpServerResourcePathParams,\n readResourceBodySchema,\n readResourceResponseSchema,\n listResourcesResponseSchema,\n mcpServerEventPathParams,\n listMcpServerEventsResponseSchema,\n pollMcpServerEventBodySchema,\n pollMcpServerEventResponseSchema,\n streamMcpServerEventBodySchema,\n mcpServerEventStreamFrameSchema,\n emitMcpServerEventBodySchema,\n emitMcpServerEventResponseSchema,\n mcpServerTaskPathParams,\n DEFAULT_MCP_SERVER_TASKS_LIMIT,\n listMcpServerTasksQuerySchema,\n listMcpServerTasksResponseSchema,\n findMcpServerTaskBodySchema,\n findMcpServerTaskResponseSchema,\n answerMcpServerTaskBodySchema,\n mcpServerTaskActionResponseSchema,\n} from '../schemas/mcp';\nimport type { MCPServerTransport } from '../schemas/mcp';\nimport type { ServerContext } from '../server-adapter';\nimport type { SetMcpRequestAuth } from '../server-adapter/mcp-auth';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getContextResourceId } from './utils';\n\n// ============================================================================\n// Route Definitions (createRoute pattern for server adapters)\n// ============================================================================\n\n/**\n * Only `@mastra/mcp` 1.x servers implement the standalone HTTP+SSE transport; on a\n * 2026-07-28 server the inherited `startSSE`/`startHonoSSE` throw.\n */\nfunction hasSSETransport(server: MastraMCPServerImplementation): boolean {\n return server.mcpVersion !== 2;\n}\n\nexport interface MCPServerInfoResponse extends ServerInfo {\n /** Endpoints served under `/mcp/:serverId`; 2026-07-28 servers speak Streamable HTTP only. */\n transports: MCPServerTransport[];\n events_capability?: boolean;\n tasks_capability?: boolean;\n}\n\nfunction transportsOf(server: MastraMCPServerImplementation): MCPServerTransport[] {\n return hasSSETransport(server) ? ['streamable-http', 'sse'] : ['streamable-http'];\n}\n\nexport const LIST_MCP_SERVERS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/v0/servers',\n responseType: 'json',\n queryParamSchema: listMcpServersQuerySchema,\n responseSchema: listMcpServersResponseSchema,\n summary: 'List MCP servers',\n description: 'Returns a list of registered MCP servers with pagination support',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n routePrefix,\n page,\n perPage,\n limit,\n offset,\n }: ServerContext & { page?: number; perPage?: number; limit?: number; offset?: number }) => {\n if (!mastra || typeof mastra.listMCPServers !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or listMCPServers method not available' });\n }\n\n const servers = mastra.listMCPServers();\n\n if (!servers) {\n return { servers: [], total_count: 0, next: null };\n }\n\n const serverList = Object.values(servers);\n const totalCount = serverList.length;\n\n // Support both page/perPage and limit/offset for backwards compatibility\n // Detect which format user is using - prefer page/perPage if both provided\n const useLegacyFormat =\n (limit !== undefined || offset !== undefined) && page === undefined && perPage === undefined;\n\n // If perPage provided, use it; otherwise fall back to limit\n const finalPerPage = perPage ?? limit;\n // If page provided, use it; otherwise convert from offset\n let finalPage = page;\n if (finalPage === undefined && offset !== undefined && finalPerPage !== undefined && finalPerPage > 0) {\n finalPage = Math.floor(offset / finalPerPage);\n }\n\n // Calculate offset from page/perPage\n const actualOffset = finalPage !== undefined && finalPerPage !== undefined ? finalPage * finalPerPage : 0;\n\n // Apply pagination\n let paginatedServers = serverList;\n let nextUrl: string | null = null;\n\n if (finalPerPage !== undefined) {\n paginatedServers = serverList.slice(actualOffset, actualOffset + finalPerPage);\n\n // Calculate next URL if there are more results\n if (actualOffset + finalPerPage < totalCount) {\n const nextPage = (finalPage ?? 0) + 1;\n // Return next URL in same format as request (legacy limit/offset or page/perPage)\n const prefix = routePrefix ?? '';\n if (useLegacyFormat) {\n const nextOffset = actualOffset + finalPerPage;\n nextUrl = `${prefix}/mcp/v0/servers?limit=${finalPerPage}&offset=${nextOffset}`;\n } else {\n nextUrl = `${prefix}/mcp/v0/servers?perPage=${finalPerPage}&page=${nextPage}`;\n }\n }\n }\n\n // Get server info for each server\n const serverInfoList: MCPServerInfoResponse[] = paginatedServers.map(server => ({\n ...server.getServerInfo(),\n transports: transportsOf(server),\n ...eventsCapabilityOf(server),\n ...tasksCapabilityOf(server),\n }));\n\n return {\n servers: serverInfoList,\n total_count: totalCount,\n next: nextUrl,\n };\n },\n});\n\nexport const GET_MCP_SERVER_DETAIL_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/v0/servers/:id',\n responseType: 'json',\n pathParamSchema: mcpServerDetailPathParams,\n queryParamSchema: getMcpServerDetailQuerySchema,\n responseSchema: serverDetailSchema,\n summary: 'Get MCP server details',\n description: 'Returns detailed information about a specific MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, id, version }: ServerContext & { id: string; version?: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(id);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${id}' not found` });\n }\n\n const serverDetail = {\n ...server.getServerDetail(),\n transports: transportsOf(server),\n ...eventsCapabilityOf(server),\n ...tasksCapabilityOf(server),\n };\n\n // If a specific version was requested, check if it matches\n if (version && serverDetail.version_detail.version !== version) {\n throw new HTTPException(404, {\n message: `MCP server with ID '${id}' found, but not version '${version}'. Available version: ${serverDetail.version_detail.version}`,\n });\n }\n\n return serverDetail;\n },\n});\n\nexport const LIST_MCP_SERVER_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tools',\n responseType: 'json',\n pathParamSchema: mcpServerIdPathParams,\n responseSchema: listMcpServerToolsResponseSchema,\n summary: 'List MCP server tools',\n description: 'Returns a list of tools available on the specified MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, requestContext }: ServerContext & { serverId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.getToolListInfo !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot list tools in this way.` });\n }\n\n return await server.getToolListInfo(requestContext);\n },\n});\n\nexport const GET_MCP_SERVER_TOOL_DETAIL_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: mcpServerToolPathParams,\n responseSchema: mcpToolInfoSchema,\n summary: 'Get MCP server tool details',\n description: 'Returns detailed information about a specific tool on the MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, toolId }: ServerContext & { serverId: string; toolId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.getToolInfo !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot provide tool details in this way.` });\n }\n\n const toolInfo = await server.getToolInfo(toolId);\n if (!toolInfo) {\n throw new HTTPException(404, { message: `Tool with ID '${toolId}' not found on MCP server '${serverId}'` });\n }\n\n return toolInfo;\n },\n});\n\nexport const EXECUTE_MCP_SERVER_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: mcpServerToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute MCP server tool',\n description: 'Executes a tool on the specified MCP server with the provided arguments',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n serverId,\n toolId,\n data,\n resumeData,\n suspendPayload,\n requestContext,\n }: ServerContext & {\n serverId: string;\n toolId: string;\n data?: unknown;\n resumeData?: unknown;\n suspendPayload?: unknown;\n }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.executeTool !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot execute tools in this way.` });\n }\n\n if (server.mcpVersion === 2) {\n // A 2026-07-28 server runs the tool with no protocol client attached: a tool\n // that suspends for input is reported as such instead of pretending it finished, and\n // the caller answers by sending the same args with `resumeData` and `suspendPayload`.\n let execution: MCPToolExecutionResultV2;\n try {\n execution = await server.executeTool(toolId, data, { requestContext, resumeData, suspendPayload });\n } catch (error) {\n if (error instanceof MastraError && error.id === 'MCP_SERVER_TOOL_INVALID_INPUT') {\n throw new HTTPException(400, { message: error.message, cause: error });\n }\n throw error;\n }\n if (execution.status === 'suspended') {\n return {\n status: 'suspended' as const,\n suspendPayload: execution.suspendPayload,\n resumeSchema: execution.resumeSchema,\n };\n }\n return { result: execution.output };\n }\n\n const result = await server.executeTool(toolId, data, { requestContext });\n return { result };\n },\n});\n\n// ============================================================================\n// MCP Resource Routes\n// ============================================================================\n\nexport const LIST_MCP_SERVER_RESOURCES_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/resources',\n responseType: 'json',\n pathParamSchema: mcpServerResourcePathParams,\n responseSchema: listResourcesResponseSchema,\n summary: 'List MCP server resources',\n description: 'Returns a list of resources available on the MCP server, including ui:// app resources',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.listResources !== 'function') {\n return { resources: [] };\n }\n\n return server.listResources();\n },\n});\n\nexport const READ_MCP_SERVER_RESOURCE_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/resources/read',\n responseType: 'json',\n pathParamSchema: mcpServerResourcePathParams,\n bodySchema: readResourceBodySchema,\n responseSchema: readResourceResponseSchema,\n summary: 'Read MCP server resource content',\n description: 'Reads the content of a resource by URI, used for rendering MCP App ui:// resources',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, uri }: ServerContext & { serverId: string; uri: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.readResource !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' does not support reading resources` });\n }\n\n try {\n return await server.readResource(uri);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n if (message.includes('not found') || message.includes('not configured')) {\n throw new HTTPException(404, { message: `Resource '${uri}' not found on server '${serverId}'` });\n }\n throw error;\n }\n },\n});\n\n// ============================================================================\n// MCP Event Routes (experimental; used by Studio)\n// ============================================================================\n\n/** Present only for servers that declare event types, so older responses stay unchanged. */\nfunction eventsCapabilityOf(server: MastraMCPServerImplementation): { events_capability?: true } {\n const events = typeof server.getEventsInfo === 'function' ? server.getEventsInfo()?.events : undefined;\n return events && events.length > 0 ? { events_capability: true } : {};\n}\n\nfunction isTestEmitEnabled(): boolean {\n return process.env.MASTRA_DEV === 'true';\n}\n\nfunction getEventsServer(mastra: Mastra | undefined, serverId: string): MastraMCPServerImplementation {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n const server = mastra.getMCPServerById(serverId);\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n return server;\n}\n\nfunction getEventsInspector(server: MastraMCPServerImplementation): MCPServerEventsInspector {\n const inspector = typeof server.getEventsInspector === 'function' ? server.getEventsInspector() : undefined;\n if (!inspector) throw new HTTPException(404, { message: 'Event not found' });\n return inspector;\n}\n\ntype EventErrorId = (typeof MCP_SERVER_EVENT_ERROR_IDS)[keyof typeof MCP_SERVER_EVENT_ERROR_IDS];\n\n// Keyed by the literal ids rather than the core constant, so @mastra/server still\n// runs against a @mastra/core release that doesn't export MCP_SERVER_EVENT_ERROR_IDS.\n// The record type keeps the ids in sync with core at compile time.\nconst EVENT_ERROR_RESPONSES: Record<EventErrorId, { status: 400 | 403 | 404 | 429; message: string }> = {\n MCP_SERVER_UNKNOWN_EVENT: { status: 404, message: 'Event not found' },\n MCP_SERVER_EVENT_UNSUPPORTED_DELIVERY: {\n status: 400,\n message: 'This event does not support streaming; poll it instead',\n },\n MCP_SERVER_EVENT_INVALID_ARGUMENTS: { status: 400, message: 'Invalid event arguments' },\n MCP_SERVER_EVENT_NOT_EMITTABLE: {\n status: 400,\n message: 'This event is fed by a poll source and cannot be emitted',\n },\n MCP_SERVER_EVENT_INVALID_PAYLOAD: { status: 400, message: 'Invalid event data' },\n MCP_SERVER_EVENT_FORBIDDEN: { status: 403, message: 'Not allowed to use this event' },\n MCP_SERVER_EVENT_TOO_MANY_STREAMS: { status: 429, message: 'Too many open event streams' },\n};\n\n/**\n * Maps event errors to generic HTTP errors. The details (which can come from a poll\n * source or an upstream API) are only logged, never returned.\n */\nfunction toEventsHttpError(error: unknown, mastra: Mastra | undefined, context: string): HTTPException {\n if (error instanceof HTTPException) return error;\n const known = error instanceof MastraError ? EVENT_ERROR_RESPONSES[error.id as EventErrorId] : undefined;\n if (known) return new HTTPException(known.status, { message: known.message });\n mastra?.getLogger()?.error(`MCP event request failed: ${context}`, { error });\n return new HTTPException(500, { message: 'Event request failed' });\n}\n\nexport const LIST_MCP_SERVER_EVENTS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/events',\n responseType: 'json',\n pathParamSchema: mcpServerIdPathParams,\n responseSchema: listMcpServerEventsResponseSchema,\n summary: 'List MCP server events',\n description: 'Returns the event types the MCP server declares (experimental)',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }) => {\n const server = getEventsServer(mastra, serverId);\n const events = typeof server.getEventsInfo === 'function' ? (server.getEventsInfo()?.events ?? []) : [];\n return { events, testEmit: isTestEmitEnabled() };\n },\n});\n\nexport const POLL_MCP_SERVER_EVENT_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/events/:eventName/poll',\n responseType: 'json',\n pathParamSchema: mcpServerEventPathParams,\n bodySchema: pollMcpServerEventBodySchema,\n responseSchema: pollMcpServerEventResponseSchema,\n summary: 'Poll an MCP server event',\n description: 'Reads occurrences of an event type, like the events/poll MCP request (experimental)',\n tags: ['MCP'],\n requiresAuth: true,\n // Same permission as streaming: both read occurrences through the event's source.\n requiresPermission: 'mcp:execute',\n handler: async ({\n mastra,\n serverId,\n eventName,\n arguments: args,\n cursor,\n maxEvents,\n requestContext,\n abortSignal,\n }: ServerContext & {\n serverId: string;\n eventName: string;\n arguments?: Record<string, unknown>;\n cursor?: string | null;\n maxEvents?: number;\n }) => {\n const inspector = getEventsInspector(getEventsServer(mastra, serverId));\n try {\n return await inspector.poll(\n eventName,\n { arguments: args, cursor, maxEvents },\n { requestContext, signal: abortSignal },\n );\n } catch (error) {\n throw toEventsHttpError(error, mastra, `poll ${serverId}/${eventName}`);\n }\n },\n});\n\nexport const STREAM_MCP_SERVER_EVENT_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/events/:eventName/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n sseFlushOnConnect: true,\n pathParamSchema: mcpServerEventPathParams,\n bodySchema: streamMcpServerEventBodySchema,\n responseSchema: mcpServerEventStreamFrameSchema,\n summary: 'Stream an MCP server event',\n description:\n 'Streams occurrences of an event type as server-sent events, like the events/stream MCP request (experimental)',\n tags: ['MCP', 'Streaming'],\n requiresAuth: true,\n handler: async ({\n mastra,\n serverId,\n eventName,\n arguments: args,\n cursor,\n requestContext,\n abortSignal,\n }: ServerContext & {\n serverId: string;\n eventName: string;\n arguments?: Record<string, unknown>;\n cursor?: string | null;\n }) => {\n const inspector = getEventsInspector(getEventsServer(mastra, serverId));\n const controller = new AbortController();\n const abort = () => controller.abort();\n if (abortSignal?.aborted) abort();\n else abortSignal?.addEventListener('abort', abort, { once: true });\n\n // Frames sent before the stream's `start` runs are buffered here.\n const buffered: MCPServerEventStreamFrame[] = [];\n let sink: ReadableStreamDefaultController<MCPServerEventStreamFrame> | undefined;\n let done = false;\n const finish = () => {\n if (done) return;\n done = true;\n abortSignal?.removeEventListener('abort', abort);\n abort();\n try {\n sink?.close();\n } catch {\n // Already closed or cancelled by the client.\n }\n };\n\n let closed: Promise<void>;\n try {\n ({ closed } = await inspector.stream(\n eventName,\n { arguments: args, cursor },\n {\n signal: controller.signal,\n requestContext,\n onFrame: frame => {\n if (done) return;\n if (sink) sink.enqueue(frame);\n else buffered.push(frame);\n if (frame.type === 'terminated') finish();\n },\n },\n ));\n } catch (error) {\n finish();\n throw toEventsHttpError(error, mastra, `stream ${serverId}/${eventName}`);\n }\n void closed.then(finish);\n\n return new ReadableStream<MCPServerEventStreamFrame>({\n start(streamController) {\n if (done) {\n for (const frame of buffered.splice(0)) streamController.enqueue(frame);\n streamController.close();\n return;\n }\n sink = streamController;\n for (const frame of buffered.splice(0)) streamController.enqueue(frame);\n },\n cancel() {\n finish();\n },\n });\n },\n});\n\nexport const EMIT_MCP_SERVER_EVENT_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/events/:eventName/emit',\n responseType: 'json',\n pathParamSchema: mcpServerEventPathParams,\n bodySchema: emitMcpServerEventBodySchema,\n responseSchema: emitMcpServerEventResponseSchema,\n summary: 'Send a test MCP server event',\n description:\n 'Emits a test occurrence of an emit-fed event type. Only served under `mastra dev`; otherwise 404 (experimental)',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n serverId,\n eventName,\n data,\n }: ServerContext & { serverId: string; eventName: string; data: Record<string, unknown> }) => {\n if (!isTestEmitEnabled()) throw new HTTPException(404, { message: 'Not Found' });\n const inspector = getEventsInspector(getEventsServer(mastra, serverId));\n try {\n return { occurrence: await inspector.emit(eventName, data) };\n } catch (error) {\n throw toEventsHttpError(error, mastra, `emit ${serverId}/${eventName}`);\n }\n },\n});\n\n// ============================================================================\n// MCP Task Routes (experimental; Studio admin view)\n// ============================================================================\n\n/** Present only for servers that run something as an MCP task, so older responses stay unchanged. */\nfunction tasksCapabilityOf(server: MastraMCPServerImplementation): { tasks_capability?: true } {\n const info = typeof server.getTasksInfo === 'function' ? server.getTasksInfo() : undefined;\n return info?.enabled ? { tasks_capability: true } : {};\n}\n\nconst TASK_NOT_FOUND = 'Task not found';\n\n/**\n * Tasks belong to MCP principals, which have no mapping to Mastra resources, so a\n * resource-scoped caller can't be shown or act on any of them. Only an unscoped caller\n * (no resource in the request context) gets the inspector.\n */\nfunction getTasksInspector(\n server: MastraMCPServerImplementation,\n requestContext: ServerContext['requestContext'],\n): MCPServerTasksInspector | undefined {\n if (getContextResourceId(requestContext) !== undefined) return undefined;\n return typeof server.getTasksInspector === 'function' ? server.getTasksInspector() : undefined;\n}\n\nfunction toTasksHttpError(error: unknown, mastra: Mastra | undefined, context: string): HTTPException {\n if (error instanceof HTTPException) return error;\n mastra?.getLogger()?.error(`MCP task request failed: ${context}`, { error });\n return new HTTPException(500, { message: 'Task request failed' });\n}\n\nexport const LIST_MCP_SERVER_TASKS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tasks',\n responseType: 'json',\n pathParamSchema: mcpServerIdPathParams,\n queryParamSchema: listMcpServerTasksQuerySchema,\n responseSchema: listMcpServerTasksResponseSchema,\n summary: 'List MCP server tasks',\n description:\n \"Returns which tools run as MCP tasks and the server's recent tasks across principals, identified by task key; never task ids or principals (experimental)\",\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n serverId,\n limit,\n cursor,\n status,\n surface,\n client,\n key,\n requestContext,\n }: ServerContext & { serverId: string } & z.infer<typeof listMcpServerTasksQuerySchema>) => {\n const server = getEventsServer(mastra, serverId);\n const info = typeof server.getTasksInfo === 'function' ? server.getTasksInfo() : undefined;\n if (!info?.enabled) return { surfaces: [], tasks: [] };\n const base = { surfaces: info.surfaces };\n if (getContextResourceId(requestContext) !== undefined) {\n return { ...base, unavailable: 'resource_scoped' as const, tasks: [] };\n }\n const inspector = getTasksInspector(server, requestContext);\n if (!inspector) return { ...base, unavailable: 'not_listable' as const, tasks: [] };\n try {\n const { tasks, nextCursor } = await inspector.list({\n limit: limit ?? DEFAULT_MCP_SERVER_TASKS_LIMIT,\n cursor,\n status,\n surface,\n principalKey: client,\n taskKey: key,\n });\n return { ...base, tasks, ...(nextCursor && { nextCursor }) };\n } catch (error) {\n throw toTasksHttpError(error, mastra, `list ${serverId}`);\n }\n },\n});\n\nexport const FIND_MCP_SERVER_TASK_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/tasks/find',\n responseType: 'json',\n pathParamSchema: mcpServerIdPathParams,\n bodySchema: findMcpServerTaskBodySchema,\n responseSchema: findMcpServerTaskResponseSchema,\n summary: 'Find an MCP server task by task id',\n description:\n 'Finds a task by its MCP task id, as a client sees it. The id is hashed before the lookup and is not kept or returned (experimental)',\n tags: ['MCP'],\n requiresAuth: true,\n // A lookup, not a change: POST only keeps the raw id out of URLs, so it needs read like the list.\n requiresPermission: 'mcp:read',\n handler: async ({\n mastra,\n serverId,\n taskId,\n requestContext,\n }: ServerContext & { serverId: string; taskId: string }) => {\n const inspector = getTasksInspector(getEventsServer(mastra, serverId), requestContext);\n if (!inspector) throw new HTTPException(404, { message: TASK_NOT_FOUND });\n let task: Awaited<ReturnType<MCPServerTasksInspector['find']>>;\n try {\n task = await inspector.find(taskId);\n } catch (error) {\n throw toTasksHttpError(error, mastra, `find ${serverId}`);\n }\n if (!task) throw new HTTPException(404, { message: TASK_NOT_FOUND });\n return { task };\n },\n});\n\nexport const CANCEL_MCP_SERVER_TASK_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/tasks/:taskKey/cancel',\n responseType: 'json',\n pathParamSchema: mcpServerTaskPathParams,\n responseSchema: mcpServerTaskActionResponseSchema,\n summary: 'Cancel an MCP server task',\n description: 'Cancels a running task by key, like the tasks/cancel MCP request (experimental)',\n tags: ['MCP'],\n requiresAuth: true,\n requiresPermission: 'mcp:write',\n handler: async ({\n mastra,\n serverId,\n taskKey,\n requestContext,\n }: ServerContext & { serverId: string; taskKey: string }) => {\n const inspector = getTasksInspector(getEventsServer(mastra, serverId), requestContext);\n if (!inspector) throw new HTTPException(404, { message: TASK_NOT_FOUND });\n let cancelled: boolean;\n try {\n cancelled = await inspector.cancel(taskKey);\n } catch (error) {\n throw toTasksHttpError(error, mastra, `cancel ${serverId}`);\n }\n if (!cancelled) throw new HTTPException(404, { message: TASK_NOT_FOUND });\n return { success: true as const };\n },\n});\n\nexport const ANSWER_MCP_SERVER_TASK_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/tasks/:taskKey/input',\n responseType: 'json',\n pathParamSchema: mcpServerTaskPathParams,\n bodySchema: answerMcpServerTaskBodySchema,\n responseSchema: mcpServerTaskActionResponseSchema,\n summary: 'Answer an MCP server task input request',\n description:\n \"Answers a task's open input requests by key, like the tasks/update MCP request; 404 unless the task is waiting for one of them (experimental)\",\n tags: ['MCP'],\n requiresAuth: true,\n requiresPermission: 'mcp:write',\n handler: async ({\n mastra,\n serverId,\n taskKey,\n inputResponses,\n requestContext,\n }: ServerContext & {\n serverId: string;\n taskKey: string;\n inputResponses: Record<string, Record<string, unknown>>;\n }) => {\n const inspector = getTasksInspector(getEventsServer(mastra, serverId), requestContext);\n if (!inspector) throw new HTTPException(404, { message: TASK_NOT_FOUND });\n let answered: boolean;\n try {\n answered = await inspector.answer(taskKey, inputResponses);\n } catch (error) {\n throw toTasksHttpError(error, mastra, `answer ${serverId}`);\n }\n if (!answered) throw new HTTPException(404, { message: TASK_NOT_FOUND });\n return { success: true as const };\n },\n});\n\n// ============================================================================\n// MCP Transport Routes (Streamable HTTP and SSE)\n// ============================================================================\n\n/**\n * MCP transport options that can be passed to startHTTP() or startSSE().\n * Includes serverless mode for running in stateless environments like Cloudflare Workers or Vercel Edge.\n */\nexport interface MCPTransportOptions {\n /**\n * When true, runs in stateless mode without session management.\n * Ideal for serverless environments where you can't maintain persistent connections.\n */\n serverless?: boolean;\n /**\n * Custom session ID generator function.\n */\n sessionIdGenerator?: () => string;\n /**\n * Sets `req.auth` before the MCP transport reads it. Overrides the default\n * bridge that forwards the principal resolved by `server.auth`.\n */\n setRequestAuth?: SetMcpRequestAuth;\n}\n\n/**\n * MCP HTTP Transport response type.\n * Adapters use this to set up the HTTP transport via MCPServer.startHTTP()\n */\nexport interface MCPHttpTransportResult {\n server: MastraMCPServerImplementation;\n httpPath: string;\n /**\n * Optional MCP transport options for this specific route.\n * These override any class-level mcpOptions configured on the adapter.\n */\n mcpOptions?: MCPTransportOptions;\n}\n\n/**\n * MCP SSE Transport response type.\n * Adapters use this to set up the SSE transport via MCPServer.startSSE() or startHonoSSE()\n *\n * Note: SSE transport is inherently stateful and doesn't support serverless mode.\n */\nexport interface MCPSseTransportResult {\n /** A 1.x server: the SSE route only resolves servers that still implement the transport. */\n server: MastraMCPServerImplementation;\n ssePath: string;\n messagePath: string;\n}\n\nexport const MCP_HTTP_TRANSPORT_ROUTE = createRoute({\n method: 'ALL',\n path: '/mcp/:serverId/mcp',\n responseType: 'mcp-http',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP HTTP Transport',\n description: 'Streamable HTTP transport endpoint for MCP protocol communication',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }): Promise<MCPHttpTransportResult> => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });\n }\n\n return {\n server,\n httpPath: `/mcp/${serverId}/mcp`,\n };\n },\n});\n\nexport const MCP_SSE_TRANSPORT_ROUTE = createRoute({\n method: 'ALL',\n path: '/mcp/:serverId/sse',\n responseType: 'mcp-sse',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP SSE Transport',\n description: 'SSE transport endpoint for MCP protocol communication',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }): Promise<MCPSseTransportResult> => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });\n }\n\n if (!hasSSETransport(server)) {\n throw new HTTPException(404, { message: 'Legacy SSE transport is unavailable for MCP v2 servers' });\n }\n\n return {\n server,\n ssePath: `/mcp/${serverId}/sse`,\n messagePath: `/mcp/${serverId}/messages`,\n };\n },\n});\n\nexport const MCP_SSE_MESSAGES_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/messages',\n responseType: 'mcp-sse',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP SSE Messages',\n description: 'Message endpoint for SSE transport (posts messages to active SSE streams)',\n tags: ['MCP'],\n requiresAuth: true,\n handler: MCP_SSE_TRANSPORT_ROUTE.handler,\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA,SAAS,gBAAgB,QAAgD;CACvE,OAAO,OAAO,eAAe;AAC/B;AASA,SAAS,aAAa,QAA6D;CACjF,OAAO,gBAAgB,MAAM,IAAI,CAAC,mBAAmB,KAAK,IAAI,CAAC,iBAAiB;AAClF;AAEA,MAAa,yBAAyBA,sBAAAA,YAAY;CAChD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,kBAAkBC,YAAAA;CAClB,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EACd,QACA,aACA,MACA,SACA,OACA,aAC0F;EAC1F,IAAI,CAAC,UAAU,OAAO,OAAO,mBAAmB,YAC9C,MAAM,IAAIC,uBAAAA,cAAc,KAAK,EAAE,SAAS,yDAAyD,CAAC;EAGpG,MAAM,UAAU,OAAO,eAAe;EAEtC,IAAI,CAAC,SACH,OAAO;GAAE,SAAS,CAAC;GAAG,aAAa;GAAG,MAAM;EAAK;EAGnD,MAAM,aAAa,OAAO,OAAO,OAAO;EACxC,MAAM,aAAa,WAAW;EAI9B,MAAM,mBACH,UAAU,KAAA,KAAa,WAAW,KAAA,MAAc,SAAS,KAAA,KAAa,YAAY,KAAA;EAGrF,MAAM,eAAe,WAAW;EAEhC,IAAI,YAAY;EAChB,IAAI,cAAc,KAAA,KAAa,WAAW,KAAA,KAAa,iBAAiB,KAAA,KAAa,eAAe,GAClG,YAAY,KAAK,MAAM,SAAS,YAAY;EAI9C,MAAM,eAAe,cAAc,KAAA,KAAa,iBAAiB,KAAA,IAAY,YAAY,eAAe;EAGxG,IAAI,mBAAmB;EACvB,IAAI,UAAyB;EAE7B,IAAI,iBAAiB,KAAA,GAAW;GAC9B,mBAAmB,WAAW,MAAM,cAAc,eAAe,YAAY;GAG7E,IAAI,eAAe,eAAe,YAAY;IAC5C,MAAM,YAAY,aAAa,KAAK;IAEpC,MAAM,SAAS,eAAe;IAC9B,IAAI,iBAEF,UAAU,GAAG,OAAO,wBAAwB,aAAa,UADtC,eAAe;SAGlC,UAAU,GAAG,OAAO,0BAA0B,aAAa,QAAQ;GAEvE;EACF;EAUA,OAAO;GACL,SAR8C,iBAAiB,KAAI,YAAW;IAC9E,GAAG,OAAO,cAAc;IACxB,YAAY,aAAa,MAAM;IAC/B,GAAG,mBAAmB,MAAM;IAC5B,GAAG,kBAAkB,MAAM;GAC7B,EAGwB;GACtB,aAAa;GACb,MAAM;EACR;CACF;AACF,CAAC;AAED,MAAa,8BAA8BH,sBAAAA,YAAY;CACrD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBI,YAAAA;CACjB,kBAAkBC,YAAAA;CAClB,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,IAAI,cAAgE;EAC5F,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAIH,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,EAAE;EAEzC,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,GAAG,aAAa,CAAC;EAGlF,MAAM,eAAe;GACnB,GAAG,OAAO,gBAAgB;GAC1B,YAAY,aAAa,MAAM;GAC/B,GAAG,mBAAmB,MAAM;GAC5B,GAAG,kBAAkB,MAAM;EAC7B;EAGA,IAAI,WAAW,aAAa,eAAe,YAAY,SACrD,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAC3B,SAAS,uBAAuB,GAAG,4BAA4B,QAAQ,wBAAwB,aAAa,eAAe,UAC7H,CAAC;EAGH,OAAO;CACT;AACF,CAAC;AAED,MAAa,8BAA8BH,sBAAAA,YAAY;CACrD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBO,YAAAA;CACjB,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,UAAU,qBAA2D;EAC7F,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAIL,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,QAAQ;EAE/C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,SAAS,aAAa,CAAC;EAGxF,IAAI,OAAO,OAAO,oBAAoB,YACpC,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,WAAW,SAAS,kCAAkC,CAAC;EAGjG,OAAO,MAAM,OAAO,gBAAgB,cAAc;CACpD;AACF,CAAC;AAED,MAAa,mCAAmCH,sBAAAA,YAAY;CAC1D,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBS,YAAAA;CACjB,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,UAAU,aAAmE;EACrG,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAIP,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,QAAQ;EAE/C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,SAAS,aAAa,CAAC;EAGxF,IAAI,OAAO,OAAO,gBAAgB,YAChC,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,WAAW,SAAS,4CAA4C,CAAC;EAG3G,MAAM,WAAW,MAAM,OAAO,YAAY,MAAM;EAChD,IAAI,CAAC,UACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,iBAAiB,OAAO,6BAA6B,SAAS,GAAG,CAAC;EAG5G,OAAO;CACT;AACF,CAAC;AAED,MAAa,gCAAgCH,sBAAAA,YAAY;CACvD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBS,YAAAA;CACjB,YAAYE,YAAAA;CACZ,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EACd,QACA,UACA,QACA,MACA,YACA,gBACA,qBAOI;EACJ,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAIT,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,QAAQ;EAE/C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,SAAS,aAAa,CAAC;EAGxF,IAAI,OAAO,OAAO,gBAAgB,YAChC,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,WAAW,SAAS,qCAAqC,CAAC;EAGpG,IAAI,OAAO,eAAe,GAAG;GAI3B,IAAI;GACJ,IAAI;IACF,YAAY,MAAM,OAAO,YAAY,QAAQ,MAAM;KAAE;KAAgB;KAAY;IAAe,CAAC;GACnG,SAAS,OAAO;IACd,IAAI,iBAAiBU,mBAAAA,eAAe,MAAM,OAAO,iCAC/C,MAAM,IAAIV,uBAAAA,cAAc,KAAK;KAAE,SAAS,MAAM;KAAS,OAAO;IAAM,CAAC;IAEvE,MAAM;GACR;GACA,IAAI,UAAU,WAAW,aACvB,OAAO;IACL,QAAQ;IACR,gBAAgB,UAAU;IAC1B,cAAc,UAAU;GAC1B;GAEF,OAAO,EAAE,QAAQ,UAAU,OAAO;EACpC;EAGA,OAAO,EAAE,QAAA,MADY,OAAO,YAAY,QAAQ,MAAM,EAAE,eAAe,CAAC,EACxD;CAClB;AACF,CAAC;AAMD,MAAa,kCAAkCH,sBAAAA,YAAY;CACzD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBc,YAAAA;CACjB,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,eAAqD;EAC7E,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAIZ,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,QAAQ;EAE/C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,SAAS,aAAa,CAAC;EAGxF,IAAI,OAAO,OAAO,kBAAkB,YAClC,OAAO,EAAE,WAAW,CAAC,EAAE;EAGzB,OAAO,OAAO,cAAc;CAC9B;AACF,CAAC;AAED,MAAa,iCAAiCH,sBAAAA,YAAY;CACxD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBc,YAAAA;CACjB,YAAYE,YAAAA;CACZ,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,UAAU,UAA6D;EAC/F,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAId,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,QAAQ;EAE/C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,SAAS,aAAa,CAAC;EAGxF,IAAI,OAAO,OAAO,iBAAiB,YACjC,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,WAAW,SAAS,sCAAsC,CAAC;EAGrG,IAAI;GACF,OAAO,MAAM,OAAO,aAAa,GAAG;EACtC,SAAS,OAAO;GACd,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;GACrE,IAAI,QAAQ,SAAS,WAAW,KAAK,QAAQ,SAAS,gBAAgB,GACpE,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,aAAa,IAAI,yBAAyB,SAAS,GAAG,CAAC;GAEjG,MAAM;EACR;CACF;AACF,CAAC;;AAOD,SAAS,mBAAmB,QAAqE;CAC/F,MAAM,SAAS,OAAO,OAAO,kBAAkB,aAAa,OAAO,cAAc,CAAC,EAAE,SAAS,KAAA;CAC7F,OAAO,UAAU,OAAO,SAAS,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC;AACtE;AAEA,SAAS,oBAA6B;CACpC,OAAO,QAAQ,IAAI,eAAe;AACpC;AAEA,SAAS,gBAAgB,QAA4B,UAAiD;CACpG,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;CAEtG,MAAM,SAAS,OAAO,iBAAiB,QAAQ;CAC/C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,SAAS,aAAa,CAAC;CAExF,OAAO;AACT;AAEA,SAAS,mBAAmB,QAAiE;CAC3F,MAAM,YAAY,OAAO,OAAO,uBAAuB,aAAa,OAAO,mBAAmB,IAAI,KAAA;CAClG,IAAI,CAAC,WAAW,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,kBAAkB,CAAC;CAC3E,OAAO;AACT;AAOA,MAAM,wBAAkG;CACtG,0BAA0B;EAAE,QAAQ;EAAK,SAAS;CAAkB;CACpE,uCAAuC;EACrC,QAAQ;EACR,SAAS;CACX;CACA,oCAAoC;EAAE,QAAQ;EAAK,SAAS;CAA0B;CACtF,gCAAgC;EAC9B,QAAQ;EACR,SAAS;CACX;CACA,kCAAkC;EAAE,QAAQ;EAAK,SAAS;CAAqB;CAC/E,4BAA4B;EAAE,QAAQ;EAAK,SAAS;CAAgC;CACpF,mCAAmC;EAAE,QAAQ;EAAK,SAAS;CAA8B;AAC3F;;;;;AAMA,SAAS,kBAAkB,OAAgB,QAA4B,SAAgC;CACrG,IAAI,iBAAiBA,uBAAAA,eAAe,OAAO;CAC3C,MAAM,QAAQ,iBAAiBU,mBAAAA,cAAc,sBAAsB,MAAM,MAAsB,KAAA;CAC/F,IAAI,OAAO,OAAO,IAAIV,uBAAAA,cAAc,MAAM,QAAQ,EAAE,SAAS,MAAM,QAAQ,CAAC;CAC5E,QAAQ,UAAU,CAAC,EAAE,MAAM,6BAA6B,WAAW,EAAE,MAAM,CAAC;CAC5E,OAAO,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,CAAC;AACnE;AAEA,MAAa,+BAA+BH,sBAAAA,YAAY;CACtD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBO,YAAAA;CACjB,gBAAgBW,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,eAAqD;EAC7E,MAAM,SAAS,gBAAgB,QAAQ,QAAQ;EAE/C,OAAO;GAAE,QADM,OAAO,OAAO,kBAAkB,aAAc,OAAO,cAAc,CAAC,EAAE,UAAU,CAAC,IAAK,CAAC;GACrF,UAAU,kBAAkB;EAAE;CACjD;AACF,CAAC;AAED,MAAa,8BAA8BlB,sBAAAA,YAAY;CACrD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBmB,YAAAA;CACjB,YAAYC,YAAAA;CACZ,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CAEd,oBAAoB;CACpB,SAAS,OAAO,EACd,QACA,UACA,WACA,WAAW,MACX,QACA,WACA,gBACA,kBAOI;EACJ,MAAM,YAAY,mBAAmB,gBAAgB,QAAQ,QAAQ,CAAC;EACtE,IAAI;GACF,OAAO,MAAM,UAAU,KACrB,WACA;IAAE,WAAW;IAAM;IAAQ;GAAU,GACrC;IAAE;IAAgB,QAAQ;GAAY,CACxC;EACF,SAAS,OAAO;GACd,MAAM,kBAAkB,OAAO,QAAQ,QAAQ,SAAS,GAAG,WAAW;EACxE;CACF;AACF,CAAC;AAED,MAAa,gCAAgCrB,sBAAAA,YAAY;CACvD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,cAAc;CACd,mBAAmB;CACnB,iBAAiBmB,YAAAA;CACjB,YAAYG,YAAAA;CACZ,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,OAAO,WAAW;CACzB,cAAc;CACd,SAAS,OAAO,EACd,QACA,UACA,WACA,WAAW,MACX,QACA,gBACA,kBAMI;EACJ,MAAM,YAAY,mBAAmB,gBAAgB,QAAQ,QAAQ,CAAC;EACtE,MAAM,aAAa,IAAI,gBAAgB;EACvC,MAAM,cAAc,WAAW,MAAM;EACrC,IAAI,aAAa,SAAS,MAAM;OAC3B,aAAa,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;EAGjE,MAAM,WAAwC,CAAC;EAC/C,IAAI;EACJ,IAAI,OAAO;EACX,MAAM,eAAe;GACnB,IAAI,MAAM;GACV,OAAO;GACP,aAAa,oBAAoB,SAAS,KAAK;GAC/C,MAAM;GACN,IAAI;IACF,MAAM,MAAM;GACd,QAAQ,CAER;EACF;EAEA,IAAI;EACJ,IAAI;GACF,CAAC,CAAE,UAAW,MAAM,UAAU,OAC5B,WACA;IAAE,WAAW;IAAM;GAAO,GAC1B;IACE,QAAQ,WAAW;IACnB;IACA,UAAS,UAAS;KAChB,IAAI,MAAM;KACV,IAAI,MAAM,KAAK,QAAQ,KAAK;UACvB,SAAS,KAAK,KAAK;KACxB,IAAI,MAAM,SAAS,cAAc,OAAO;IAC1C;GACF,CACF;EACF,SAAS,OAAO;GACd,OAAO;GACP,MAAM,kBAAkB,OAAO,QAAQ,UAAU,SAAS,GAAG,WAAW;EAC1E;EACA,OAAY,KAAK,MAAM;EAEvB,OAAO,IAAI,eAA0C;GACnD,MAAM,kBAAkB;IACtB,IAAI,MAAM;KACR,KAAK,MAAM,SAAS,SAAS,OAAO,CAAC,GAAG,iBAAiB,QAAQ,KAAK;KACtE,iBAAiB,MAAM;KACvB;IACF;IACA,OAAO;IACP,KAAK,MAAM,SAAS,SAAS,OAAO,CAAC,GAAG,iBAAiB,QAAQ,KAAK;GACxE;GACA,SAAS;IACP,OAAO;GACT;EACF,CAAC;CACH;AACF,CAAC;AAED,MAAa,8BAA8BvB,sBAAAA,YAAY;CACrD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBmB,YAAAA;CACjB,YAAYK,YAAAA;CACZ,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EACd,QACA,UACA,WACA,WAC4F;EAC5F,IAAI,CAAC,kBAAkB,GAAG,MAAM,IAAItB,uBAAAA,cAAc,KAAK,EAAE,SAAS,YAAY,CAAC;EAC/E,MAAM,YAAY,mBAAmB,gBAAgB,QAAQ,QAAQ,CAAC;EACtE,IAAI;GACF,OAAO,EAAE,YAAY,MAAM,UAAU,KAAK,WAAW,IAAI,EAAE;EAC7D,SAAS,OAAO;GACd,MAAM,kBAAkB,OAAO,QAAQ,QAAQ,SAAS,GAAG,WAAW;EACxE;CACF;AACF,CAAC;;AAOD,SAAS,kBAAkB,QAAoE;CAE7F,QADa,OAAO,OAAO,iBAAiB,aAAa,OAAO,aAAa,IAAI,KAAA,EAAA,EACpE,UAAU,EAAE,kBAAkB,KAAK,IAAI,CAAC;AACvD;AAEA,MAAM,iBAAiB;;;;;;AAOvB,SAAS,kBACP,QACA,gBACqC;CACrC,IAAIuB,cAAAA,qBAAqB,cAAc,MAAM,KAAA,GAAW,OAAO,KAAA;CAC/D,OAAO,OAAO,OAAO,sBAAsB,aAAa,OAAO,kBAAkB,IAAI,KAAA;AACvF;AAEA,SAAS,iBAAiB,OAAgB,QAA4B,SAAgC;CACpG,IAAI,iBAAiBvB,uBAAAA,eAAe,OAAO;CAC3C,QAAQ,UAAU,CAAC,EAAE,MAAM,4BAA4B,WAAW,EAAE,MAAM,CAAC;CAC3E,OAAO,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,sBAAsB,CAAC;AAClE;AAEA,MAAa,8BAA8BH,sBAAAA,YAAY;CACrD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBO,YAAAA;CACjB,kBAAkBoB,YAAAA;CAClB,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EACd,QACA,UACA,OACA,QACA,QACA,SACA,QACA,KACA,qBAC0F;EAC1F,MAAM,SAAS,gBAAgB,QAAQ,QAAQ;EAC/C,MAAM,OAAO,OAAO,OAAO,iBAAiB,aAAa,OAAO,aAAa,IAAI,KAAA;EACjF,IAAI,CAAC,MAAM,SAAS,OAAO;GAAE,UAAU,CAAC;GAAG,OAAO,CAAC;EAAE;EACrD,MAAM,OAAO,EAAE,UAAU,KAAK,SAAS;EACvC,IAAIF,cAAAA,qBAAqB,cAAc,MAAM,KAAA,GAC3C,OAAO;GAAE,GAAG;GAAM,aAAa;GAA4B,OAAO,CAAC;EAAE;EAEvE,MAAM,YAAY,kBAAkB,QAAQ,cAAc;EAC1D,IAAI,CAAC,WAAW,OAAO;GAAE,GAAG;GAAM,aAAa;GAAyB,OAAO,CAAC;EAAE;EAClF,IAAI;GACF,MAAM,EAAE,OAAO,eAAe,MAAM,UAAU,KAAK;IACjD,OAAO,SAAA;IACP;IACA;IACA;IACA,cAAc;IACd,SAAS;GACX,CAAC;GACD,OAAO;IAAE,GAAG;IAAM;IAAO,GAAI,cAAc,EAAE,WAAW;GAAG;EAC7D,SAAS,OAAO;GACd,MAAM,iBAAiB,OAAO,QAAQ,QAAQ,UAAU;EAC1D;CACF;AACF,CAAC;AAED,MAAa,6BAA6B1B,sBAAAA,YAAY;CACpD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBO,YAAAA;CACjB,YAAYsB,YAAAA;CACZ,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,KAAK;CACZ,cAAc;CAEd,oBAAoB;CACpB,SAAS,OAAO,EACd,QACA,UACA,QACA,qBAC0D;EAC1D,MAAM,YAAY,kBAAkB,gBAAgB,QAAQ,QAAQ,GAAG,cAAc;EACrF,IAAI,CAAC,WAAW,MAAM,IAAI3B,uBAAAA,cAAc,KAAK,EAAE,SAAS,eAAe,CAAC;EACxE,IAAI;EACJ,IAAI;GACF,OAAO,MAAM,UAAU,KAAK,MAAM;EACpC,SAAS,OAAO;GACd,MAAM,iBAAiB,OAAO,QAAQ,QAAQ,UAAU;EAC1D;EACA,IAAI,CAAC,MAAM,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,eAAe,CAAC;EACnE,OAAO,EAAE,KAAK;CAChB;AACF,CAAC;AAED,MAAa,+BAA+BH,sBAAAA,YAAY;CACtD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB+B,YAAAA;CACjB,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,oBAAoB;CACpB,SAAS,OAAO,EACd,QACA,UACA,SACA,qBAC2D;EAC3D,MAAM,YAAY,kBAAkB,gBAAgB,QAAQ,QAAQ,GAAG,cAAc;EACrF,IAAI,CAAC,WAAW,MAAM,IAAI7B,uBAAAA,cAAc,KAAK,EAAE,SAAS,eAAe,CAAC;EACxE,IAAI;EACJ,IAAI;GACF,YAAY,MAAM,UAAU,OAAO,OAAO;EAC5C,SAAS,OAAO;GACd,MAAM,iBAAiB,OAAO,QAAQ,UAAU,UAAU;EAC5D;EACA,IAAI,CAAC,WAAW,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,eAAe,CAAC;EACxE,OAAO,EAAE,SAAS,KAAc;CAClC;AACF,CAAC;AAED,MAAa,+BAA+BH,sBAAAA,YAAY;CACtD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB+B,YAAAA;CACjB,YAAYE,YAAAA;CACZ,gBAAgBD,YAAAA;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,oBAAoB;CACpB,SAAS,OAAO,EACd,QACA,UACA,SACA,gBACA,qBAKI;EACJ,MAAM,YAAY,kBAAkB,gBAAgB,QAAQ,QAAQ,GAAG,cAAc;EACrF,IAAI,CAAC,WAAW,MAAM,IAAI7B,uBAAAA,cAAc,KAAK,EAAE,SAAS,eAAe,CAAC;EACxE,IAAI;EACJ,IAAI;GACF,WAAW,MAAM,UAAU,OAAO,SAAS,cAAc;EAC3D,SAAS,OAAO;GACd,MAAM,iBAAiB,OAAO,QAAQ,UAAU,UAAU;EAC5D;EACA,IAAI,CAAC,UAAU,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,eAAe,CAAC;EACvE,OAAO,EAAE,SAAS,KAAc;CAClC;AACF,CAAC;AAsDD,MAAa,2BAA2BH,sBAAAA,YAAY;CAClD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBO,YAAAA;CACjB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,eAAsF;EAC9G,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAIJ,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,QAAQ;EAE/C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,eAAe,SAAS,aAAa,CAAC;EAGhF,OAAO;GACL;GACA,UAAU,QAAQ,SAAS;EAC7B;CACF;AACF,CAAC;AAED,MAAa,0BAA0BH,sBAAAA,YAAY;CACjD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBO,YAAAA;CACjB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,eAAqF;EAC7G,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAIJ,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,QAAQ;EAE/C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,eAAe,SAAS,aAAa,CAAC;EAGhF,IAAI,CAAC,gBAAgB,MAAM,GACzB,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,yDAAyD,CAAC;EAGpG,OAAO;GACL;GACA,SAAS,QAAQ,SAAS;GAC1B,aAAa,QAAQ,SAAS;EAChC;CACF;AACF,CAAC;AAED,MAAa,yBAAyBH,sBAAAA,YAAY;CAChD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBO,YAAAA;CACjB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,wBAAwB;AACnC,CAAC"}
1
+ {"version":3,"file":"mcp-CKvOVfHn.cjs","names":["createRoute","listMcpServersQuerySchema","listMcpServersResponseSchema","HTTPException","mcpServerDetailPathParams","getMcpServerDetailQuerySchema","serverDetailSchema","mcpServerIdPathParams","listMcpServerToolsResponseSchema","mcpServerToolPathParams","mcpToolInfoSchema","executeToolBodySchema","executeToolResponseSchema","MastraError","mcpServerResourcePathParams","listResourcesResponseSchema","readResourceBodySchema","readResourceResponseSchema","listMcpServerEventsResponseSchema","mcpServerEventPathParams","pollMcpServerEventBodySchema","pollMcpServerEventResponseSchema","streamMcpServerEventBodySchema","mcpServerEventStreamFrameSchema","emitMcpServerEventBodySchema","emitMcpServerEventResponseSchema","getContextResourceId","listMcpServerTasksQuerySchema","listMcpServerTasksResponseSchema","findMcpServerTaskBodySchema","findMcpServerTaskResponseSchema","mcpServerTaskPathParams","mcpServerTaskActionResponseSchema","answerMcpServerTaskBodySchema"],"sources":["../src/server/handlers/mcp.ts"],"sourcesContent":["import { MastraError } from '@mastra/core/error';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type {\n MCP_SERVER_EVENT_ERROR_IDS,\n MCPServerBase as MastraMCPServerImplementation,\n MCPServerEventStreamFrame,\n MCPServerEventsInspector,\n MCPServerTasksInspector,\n MCPToolExecutionResultV2,\n ServerInfo,\n} from '@mastra/core/mcp';\nimport type { z } from 'zod';\nimport { HTTPException } from '../http-exception';\nimport {\n mcpServerDetailPathParams,\n mcpServerToolPathParams,\n executeToolBodySchema,\n listMcpServersQuerySchema,\n getMcpServerDetailQuerySchema,\n listMcpServersResponseSchema,\n serverDetailSchema,\n mcpServerIdPathParams,\n listMcpServerToolsResponseSchema,\n mcpToolInfoSchema,\n executeToolResponseSchema,\n mcpServerResourcePathParams,\n readResourceBodySchema,\n readResourceResponseSchema,\n listResourcesResponseSchema,\n mcpServerEventPathParams,\n listMcpServerEventsResponseSchema,\n pollMcpServerEventBodySchema,\n pollMcpServerEventResponseSchema,\n streamMcpServerEventBodySchema,\n mcpServerEventStreamFrameSchema,\n emitMcpServerEventBodySchema,\n emitMcpServerEventResponseSchema,\n mcpServerTaskPathParams,\n DEFAULT_MCP_SERVER_TASKS_LIMIT,\n listMcpServerTasksQuerySchema,\n listMcpServerTasksResponseSchema,\n findMcpServerTaskBodySchema,\n findMcpServerTaskResponseSchema,\n answerMcpServerTaskBodySchema,\n mcpServerTaskActionResponseSchema,\n} from '../schemas/mcp';\nimport type { MCPServerTransport } from '../schemas/mcp';\nimport type { ServerContext } from '../server-adapter';\nimport type { SetMcpRequestAuth } from '../server-adapter/mcp-auth';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getContextResourceId } from './utils';\n\n// ============================================================================\n// Route Definitions (createRoute pattern for server adapters)\n// ============================================================================\n\n/**\n * Only `@mastra/mcp` 1.x servers implement the standalone HTTP+SSE transport; on a\n * 2026-07-28 server the inherited `startSSE`/`startHonoSSE` throw.\n */\nfunction hasSSETransport(server: MastraMCPServerImplementation): boolean {\n return server.mcpVersion !== 2;\n}\n\nexport interface MCPServerInfoResponse extends ServerInfo {\n /** Endpoints served under `/mcp/:serverId`; 2026-07-28 servers speak Streamable HTTP only. */\n transports: MCPServerTransport[];\n events_capability?: boolean;\n tasks_capability?: boolean;\n}\n\nfunction transportsOf(server: MastraMCPServerImplementation): MCPServerTransport[] {\n return hasSSETransport(server) ? ['streamable-http', 'sse'] : ['streamable-http'];\n}\n\nexport const LIST_MCP_SERVERS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/v0/servers',\n responseType: 'json',\n queryParamSchema: listMcpServersQuerySchema,\n responseSchema: listMcpServersResponseSchema,\n summary: 'List MCP servers',\n description: 'Returns a list of registered MCP servers with pagination support',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n routePrefix,\n page,\n perPage,\n limit,\n offset,\n }: ServerContext & { page?: number; perPage?: number; limit?: number; offset?: number }) => {\n if (!mastra || typeof mastra.listMCPServers !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or listMCPServers method not available' });\n }\n\n const servers = mastra.listMCPServers();\n\n if (!servers) {\n return { servers: [], total_count: 0, next: null };\n }\n\n const serverList = Object.values(servers);\n const totalCount = serverList.length;\n\n // Support both page/perPage and limit/offset for backwards compatibility\n // Detect which format user is using - prefer page/perPage if both provided\n const useLegacyFormat =\n (limit !== undefined || offset !== undefined) && page === undefined && perPage === undefined;\n\n // If perPage provided, use it; otherwise fall back to limit\n const finalPerPage = perPage ?? limit;\n // If page provided, use it; otherwise convert from offset\n let finalPage = page;\n if (finalPage === undefined && offset !== undefined && finalPerPage !== undefined && finalPerPage > 0) {\n finalPage = Math.floor(offset / finalPerPage);\n }\n\n // Calculate offset from page/perPage\n const actualOffset = finalPage !== undefined && finalPerPage !== undefined ? finalPage * finalPerPage : 0;\n\n // Apply pagination\n let paginatedServers = serverList;\n let nextUrl: string | null = null;\n\n if (finalPerPage !== undefined) {\n paginatedServers = serverList.slice(actualOffset, actualOffset + finalPerPage);\n\n // Calculate next URL if there are more results\n if (actualOffset + finalPerPage < totalCount) {\n const nextPage = (finalPage ?? 0) + 1;\n // Return next URL in same format as request (legacy limit/offset or page/perPage)\n const prefix = routePrefix ?? '';\n if (useLegacyFormat) {\n const nextOffset = actualOffset + finalPerPage;\n nextUrl = `${prefix}/mcp/v0/servers?limit=${finalPerPage}&offset=${nextOffset}`;\n } else {\n nextUrl = `${prefix}/mcp/v0/servers?perPage=${finalPerPage}&page=${nextPage}`;\n }\n }\n }\n\n // Get server info for each server\n const serverInfoList: MCPServerInfoResponse[] = paginatedServers.map(server => ({\n ...server.getServerInfo(),\n transports: transportsOf(server),\n ...eventsCapabilityOf(server),\n ...tasksCapabilityOf(server),\n }));\n\n return {\n servers: serverInfoList,\n total_count: totalCount,\n next: nextUrl,\n };\n },\n});\n\nexport const GET_MCP_SERVER_DETAIL_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/v0/servers/:id',\n responseType: 'json',\n pathParamSchema: mcpServerDetailPathParams,\n queryParamSchema: getMcpServerDetailQuerySchema,\n responseSchema: serverDetailSchema,\n summary: 'Get MCP server details',\n description: 'Returns detailed information about a specific MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, id, version }: ServerContext & { id: string; version?: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(id);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${id}' not found` });\n }\n\n const serverDetail = {\n ...server.getServerDetail(),\n transports: transportsOf(server),\n ...eventsCapabilityOf(server),\n ...tasksCapabilityOf(server),\n };\n\n // If a specific version was requested, check if it matches\n if (version && serverDetail.version_detail.version !== version) {\n throw new HTTPException(404, {\n message: `MCP server with ID '${id}' found, but not version '${version}'. Available version: ${serverDetail.version_detail.version}`,\n });\n }\n\n return serverDetail;\n },\n});\n\nexport const LIST_MCP_SERVER_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tools',\n responseType: 'json',\n pathParamSchema: mcpServerIdPathParams,\n responseSchema: listMcpServerToolsResponseSchema,\n summary: 'List MCP server tools',\n description: 'Returns a list of tools available on the specified MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, requestContext }: ServerContext & { serverId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.getToolListInfo !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot list tools in this way.` });\n }\n\n return await server.getToolListInfo(requestContext);\n },\n});\n\nexport const GET_MCP_SERVER_TOOL_DETAIL_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: mcpServerToolPathParams,\n responseSchema: mcpToolInfoSchema,\n summary: 'Get MCP server tool details',\n description: 'Returns detailed information about a specific tool on the MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, toolId }: ServerContext & { serverId: string; toolId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.getToolInfo !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot provide tool details in this way.` });\n }\n\n const toolInfo = await server.getToolInfo(toolId);\n if (!toolInfo) {\n throw new HTTPException(404, { message: `Tool with ID '${toolId}' not found on MCP server '${serverId}'` });\n }\n\n return toolInfo;\n },\n});\n\nexport const EXECUTE_MCP_SERVER_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: mcpServerToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute MCP server tool',\n description: 'Executes a tool on the specified MCP server with the provided arguments',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n serverId,\n toolId,\n data,\n resumeData,\n suspendPayload,\n requestContext,\n }: ServerContext & {\n serverId: string;\n toolId: string;\n data?: unknown;\n resumeData?: unknown;\n suspendPayload?: unknown;\n }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.executeTool !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot execute tools in this way.` });\n }\n\n if (server.mcpVersion === 2) {\n // A 2026-07-28 server runs the tool with no protocol client attached: a tool\n // that suspends for input is reported as such instead of pretending it finished, and\n // the caller answers by sending the same args with `resumeData` and `suspendPayload`.\n let execution: MCPToolExecutionResultV2;\n try {\n execution = await server.executeTool(toolId, data, { requestContext, resumeData, suspendPayload });\n } catch (error) {\n if (error instanceof MastraError && error.id === 'MCP_SERVER_TOOL_INVALID_INPUT') {\n throw new HTTPException(400, { message: error.message, cause: error });\n }\n throw error;\n }\n if (execution.status === 'suspended') {\n return {\n status: 'suspended' as const,\n suspendPayload: execution.suspendPayload,\n resumeSchema: execution.resumeSchema,\n };\n }\n return { result: execution.output };\n }\n\n const result = await server.executeTool(toolId, data, { requestContext });\n return { result };\n },\n});\n\n// ============================================================================\n// MCP Resource Routes\n// ============================================================================\n\nexport const LIST_MCP_SERVER_RESOURCES_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/resources',\n responseType: 'json',\n pathParamSchema: mcpServerResourcePathParams,\n responseSchema: listResourcesResponseSchema,\n summary: 'List MCP server resources',\n description: 'Returns a list of resources available on the MCP server, including ui:// app resources',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.listResources !== 'function') {\n return { resources: [] };\n }\n\n return server.listResources();\n },\n});\n\nexport const READ_MCP_SERVER_RESOURCE_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/resources/read',\n responseType: 'json',\n pathParamSchema: mcpServerResourcePathParams,\n bodySchema: readResourceBodySchema,\n responseSchema: readResourceResponseSchema,\n summary: 'Read MCP server resource content',\n description: 'Reads the content of a resource by URI, used for rendering MCP App ui:// resources',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, uri }: ServerContext & { serverId: string; uri: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.readResource !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' does not support reading resources` });\n }\n\n try {\n return await server.readResource(uri);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n if (message.includes('not found') || message.includes('not configured')) {\n throw new HTTPException(404, { message: `Resource '${uri}' not found on server '${serverId}'` });\n }\n throw error;\n }\n },\n});\n\n// ============================================================================\n// MCP Event Routes (experimental; used by Studio)\n// ============================================================================\n\n/** Present only for servers that declare event types, so older responses stay unchanged. */\nfunction eventsCapabilityOf(server: MastraMCPServerImplementation): { events_capability?: true } {\n const events = typeof server.getEventsInfo === 'function' ? server.getEventsInfo()?.events : undefined;\n return events && events.length > 0 ? { events_capability: true } : {};\n}\n\nfunction isTestEmitEnabled(): boolean {\n return process.env.MASTRA_DEV === 'true';\n}\n\nfunction getEventsServer(mastra: Mastra | undefined, serverId: string): MastraMCPServerImplementation {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n const server = mastra.getMCPServerById(serverId);\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n return server;\n}\n\nfunction getEventsInspector(server: MastraMCPServerImplementation): MCPServerEventsInspector {\n const inspector = typeof server.getEventsInspector === 'function' ? server.getEventsInspector() : undefined;\n if (!inspector) throw new HTTPException(404, { message: 'Event not found' });\n return inspector;\n}\n\ntype EventErrorId = (typeof MCP_SERVER_EVENT_ERROR_IDS)[keyof typeof MCP_SERVER_EVENT_ERROR_IDS];\n\n// Keyed by the literal ids rather than the core constant, so @mastra/server still\n// runs against a @mastra/core release that doesn't export MCP_SERVER_EVENT_ERROR_IDS.\n// The record type keeps the ids in sync with core at compile time.\nconst EVENT_ERROR_RESPONSES: Record<EventErrorId, { status: 400 | 403 | 404 | 429; message: string }> = {\n MCP_SERVER_UNKNOWN_EVENT: { status: 404, message: 'Event not found' },\n MCP_SERVER_EVENT_UNSUPPORTED_DELIVERY: {\n status: 400,\n message: 'This event does not support streaming; poll it instead',\n },\n MCP_SERVER_EVENT_INVALID_ARGUMENTS: { status: 400, message: 'Invalid event arguments' },\n MCP_SERVER_EVENT_NOT_EMITTABLE: {\n status: 400,\n message: 'This event is fed by a poll source and cannot be emitted',\n },\n MCP_SERVER_EVENT_INVALID_PAYLOAD: { status: 400, message: 'Invalid event data' },\n MCP_SERVER_EVENT_FORBIDDEN: { status: 403, message: 'Not allowed to use this event' },\n MCP_SERVER_EVENT_TOO_MANY_STREAMS: { status: 429, message: 'Too many open event streams' },\n};\n\n/**\n * Maps event errors to generic HTTP errors. The details (which can come from a poll\n * source or an upstream API) are only logged, never returned.\n */\nfunction toEventsHttpError(error: unknown, mastra: Mastra | undefined, context: string): HTTPException {\n if (error instanceof HTTPException) return error;\n const known = error instanceof MastraError ? EVENT_ERROR_RESPONSES[error.id as EventErrorId] : undefined;\n if (known) return new HTTPException(known.status, { message: known.message });\n mastra?.getLogger()?.error(`MCP event request failed: ${context}`, { error });\n return new HTTPException(500, { message: 'Event request failed' });\n}\n\nexport const LIST_MCP_SERVER_EVENTS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/events',\n responseType: 'json',\n pathParamSchema: mcpServerIdPathParams,\n responseSchema: listMcpServerEventsResponseSchema,\n summary: 'List MCP server events',\n description: 'Returns the event types the MCP server declares (experimental)',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }) => {\n const server = getEventsServer(mastra, serverId);\n const events = typeof server.getEventsInfo === 'function' ? (server.getEventsInfo()?.events ?? []) : [];\n return { events, testEmit: isTestEmitEnabled() };\n },\n});\n\nexport const POLL_MCP_SERVER_EVENT_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/events/:eventName/poll',\n responseType: 'json',\n pathParamSchema: mcpServerEventPathParams,\n bodySchema: pollMcpServerEventBodySchema,\n responseSchema: pollMcpServerEventResponseSchema,\n summary: 'Poll an MCP server event',\n description: 'Reads occurrences of an event type, like the events/poll MCP request (experimental)',\n tags: ['MCP'],\n requiresAuth: true,\n // Same permission as streaming: both read occurrences through the event's source.\n requiresPermission: 'mcp:execute',\n handler: async ({\n mastra,\n serverId,\n eventName,\n arguments: args,\n cursor,\n maxEvents,\n requestContext,\n abortSignal,\n }: ServerContext & {\n serverId: string;\n eventName: string;\n arguments?: Record<string, unknown>;\n cursor?: string | null;\n maxEvents?: number;\n }) => {\n const inspector = getEventsInspector(getEventsServer(mastra, serverId));\n try {\n return await inspector.poll(\n eventName,\n { arguments: args, cursor, maxEvents },\n { requestContext, signal: abortSignal },\n );\n } catch (error) {\n throw toEventsHttpError(error, mastra, `poll ${serverId}/${eventName}`);\n }\n },\n});\n\nexport const STREAM_MCP_SERVER_EVENT_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/events/:eventName/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n sseFlushOnConnect: true,\n pathParamSchema: mcpServerEventPathParams,\n bodySchema: streamMcpServerEventBodySchema,\n responseSchema: mcpServerEventStreamFrameSchema,\n summary: 'Stream an MCP server event',\n description:\n 'Streams occurrences of an event type as server-sent events, like the events/stream MCP request (experimental)',\n tags: ['MCP', 'Streaming'],\n requiresAuth: true,\n handler: async ({\n mastra,\n serverId,\n eventName,\n arguments: args,\n cursor,\n requestContext,\n abortSignal,\n }: ServerContext & {\n serverId: string;\n eventName: string;\n arguments?: Record<string, unknown>;\n cursor?: string | null;\n }) => {\n const inspector = getEventsInspector(getEventsServer(mastra, serverId));\n const controller = new AbortController();\n const abort = () => controller.abort();\n if (abortSignal?.aborted) abort();\n else abortSignal?.addEventListener('abort', abort, { once: true });\n\n // Frames sent before the stream's `start` runs are buffered here.\n const buffered: MCPServerEventStreamFrame[] = [];\n let sink: ReadableStreamDefaultController<MCPServerEventStreamFrame> | undefined;\n let done = false;\n const finish = () => {\n if (done) return;\n done = true;\n abortSignal?.removeEventListener('abort', abort);\n abort();\n try {\n sink?.close();\n } catch {\n // Already closed or cancelled by the client.\n }\n };\n\n let closed: Promise<void>;\n try {\n ({ closed } = await inspector.stream(\n eventName,\n { arguments: args, cursor },\n {\n signal: controller.signal,\n requestContext,\n onFrame: frame => {\n if (done) return;\n if (sink) sink.enqueue(frame);\n else buffered.push(frame);\n if (frame.type === 'terminated') finish();\n },\n },\n ));\n } catch (error) {\n finish();\n throw toEventsHttpError(error, mastra, `stream ${serverId}/${eventName}`);\n }\n void closed.then(finish);\n\n return new ReadableStream<MCPServerEventStreamFrame>({\n start(streamController) {\n if (done) {\n for (const frame of buffered.splice(0)) streamController.enqueue(frame);\n streamController.close();\n return;\n }\n sink = streamController;\n for (const frame of buffered.splice(0)) streamController.enqueue(frame);\n },\n cancel() {\n finish();\n },\n });\n },\n});\n\nexport const EMIT_MCP_SERVER_EVENT_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/events/:eventName/emit',\n responseType: 'json',\n pathParamSchema: mcpServerEventPathParams,\n bodySchema: emitMcpServerEventBodySchema,\n responseSchema: emitMcpServerEventResponseSchema,\n summary: 'Send a test MCP server event',\n description:\n 'Emits a test occurrence of an emit-fed event type. Only served under `mastra dev`; otherwise 404 (experimental)',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n serverId,\n eventName,\n data,\n }: ServerContext & { serverId: string; eventName: string; data: Record<string, unknown> }) => {\n if (!isTestEmitEnabled()) throw new HTTPException(404, { message: 'Not Found' });\n const inspector = getEventsInspector(getEventsServer(mastra, serverId));\n try {\n return { occurrence: await inspector.emit(eventName, data) };\n } catch (error) {\n throw toEventsHttpError(error, mastra, `emit ${serverId}/${eventName}`);\n }\n },\n});\n\n// ============================================================================\n// MCP Task Routes (experimental; Studio admin view)\n// ============================================================================\n\n/** Present only for servers that run something as an MCP task, so older responses stay unchanged. */\nfunction tasksCapabilityOf(server: MastraMCPServerImplementation): { tasks_capability?: true } {\n const info = typeof server.getTasksInfo === 'function' ? server.getTasksInfo() : undefined;\n return info?.enabled ? { tasks_capability: true } : {};\n}\n\nconst TASK_NOT_FOUND = 'Task not found';\n\n/**\n * Tasks belong to MCP principals, which have no mapping to Mastra resources, so a\n * resource-scoped caller can't be shown or act on any of them. Only an unscoped caller\n * (no resource in the request context) gets the inspector.\n */\nfunction getTasksInspector(\n server: MastraMCPServerImplementation,\n requestContext: ServerContext['requestContext'],\n): MCPServerTasksInspector | undefined {\n if (getContextResourceId(requestContext) !== undefined) return undefined;\n return typeof server.getTasksInspector === 'function' ? server.getTasksInspector() : undefined;\n}\n\nfunction toTasksHttpError(error: unknown, mastra: Mastra | undefined, context: string): HTTPException {\n if (error instanceof HTTPException) return error;\n mastra?.getLogger()?.error(`MCP task request failed: ${context}`, { error });\n return new HTTPException(500, { message: 'Task request failed' });\n}\n\nexport const LIST_MCP_SERVER_TASKS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tasks',\n responseType: 'json',\n pathParamSchema: mcpServerIdPathParams,\n queryParamSchema: listMcpServerTasksQuerySchema,\n responseSchema: listMcpServerTasksResponseSchema,\n summary: 'List MCP server tasks',\n description:\n \"Returns which tools run as MCP tasks and the server's recent tasks across principals, identified by task key; never task ids or principals (experimental)\",\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n serverId,\n limit,\n cursor,\n status,\n surface,\n client,\n key,\n requestContext,\n }: ServerContext & { serverId: string } & z.infer<typeof listMcpServerTasksQuerySchema>) => {\n const server = getEventsServer(mastra, serverId);\n const info = typeof server.getTasksInfo === 'function' ? server.getTasksInfo() : undefined;\n if (!info?.enabled) return { surfaces: [], tasks: [] };\n const base = { surfaces: info.surfaces };\n if (getContextResourceId(requestContext) !== undefined) {\n return { ...base, unavailable: 'resource_scoped' as const, tasks: [] };\n }\n const inspector = getTasksInspector(server, requestContext);\n if (!inspector) return { ...base, unavailable: 'not_listable' as const, tasks: [] };\n try {\n const { tasks, nextCursor } = await inspector.list({\n limit: limit ?? DEFAULT_MCP_SERVER_TASKS_LIMIT,\n cursor,\n status,\n surface,\n principalKey: client,\n taskKey: key,\n });\n return { ...base, tasks, ...(nextCursor && { nextCursor }) };\n } catch (error) {\n throw toTasksHttpError(error, mastra, `list ${serverId}`);\n }\n },\n});\n\nexport const FIND_MCP_SERVER_TASK_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/tasks/find',\n responseType: 'json',\n pathParamSchema: mcpServerIdPathParams,\n bodySchema: findMcpServerTaskBodySchema,\n responseSchema: findMcpServerTaskResponseSchema,\n summary: 'Find an MCP server task by task id',\n description:\n 'Finds a task by its MCP task id, as a client sees it. The id is hashed before the lookup and is not kept or returned (experimental)',\n tags: ['MCP'],\n requiresAuth: true,\n // A lookup, not a change: POST only keeps the raw id out of URLs, so it needs read like the list.\n requiresPermission: 'mcp:read',\n handler: async ({\n mastra,\n serverId,\n taskId,\n requestContext,\n }: ServerContext & { serverId: string; taskId: string }) => {\n const inspector = getTasksInspector(getEventsServer(mastra, serverId), requestContext);\n if (!inspector) throw new HTTPException(404, { message: TASK_NOT_FOUND });\n let task: Awaited<ReturnType<MCPServerTasksInspector['find']>>;\n try {\n task = await inspector.find(taskId);\n } catch (error) {\n throw toTasksHttpError(error, mastra, `find ${serverId}`);\n }\n if (!task) throw new HTTPException(404, { message: TASK_NOT_FOUND });\n return { task };\n },\n});\n\nexport const CANCEL_MCP_SERVER_TASK_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/tasks/:taskKey/cancel',\n responseType: 'json',\n pathParamSchema: mcpServerTaskPathParams,\n responseSchema: mcpServerTaskActionResponseSchema,\n summary: 'Cancel an MCP server task',\n description: 'Cancels a running task by key, like the tasks/cancel MCP request (experimental)',\n tags: ['MCP'],\n requiresAuth: true,\n requiresPermission: 'mcp:write',\n handler: async ({\n mastra,\n serverId,\n taskKey,\n requestContext,\n }: ServerContext & { serverId: string; taskKey: string }) => {\n const inspector = getTasksInspector(getEventsServer(mastra, serverId), requestContext);\n if (!inspector) throw new HTTPException(404, { message: TASK_NOT_FOUND });\n let cancelled: boolean;\n try {\n cancelled = await inspector.cancel(taskKey);\n } catch (error) {\n throw toTasksHttpError(error, mastra, `cancel ${serverId}`);\n }\n if (!cancelled) throw new HTTPException(404, { message: TASK_NOT_FOUND });\n return { success: true as const };\n },\n});\n\nexport const ANSWER_MCP_SERVER_TASK_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/tasks/:taskKey/input',\n responseType: 'json',\n pathParamSchema: mcpServerTaskPathParams,\n bodySchema: answerMcpServerTaskBodySchema,\n responseSchema: mcpServerTaskActionResponseSchema,\n summary: 'Answer an MCP server task input request',\n description:\n \"Answers a task's open input requests by key, like the tasks/update MCP request; 404 unless the task is waiting for one of them (experimental)\",\n tags: ['MCP'],\n requiresAuth: true,\n requiresPermission: 'mcp:write',\n handler: async ({\n mastra,\n serverId,\n taskKey,\n inputResponses,\n requestContext,\n }: ServerContext & {\n serverId: string;\n taskKey: string;\n inputResponses: Record<string, Record<string, unknown>>;\n }) => {\n const inspector = getTasksInspector(getEventsServer(mastra, serverId), requestContext);\n if (!inspector) throw new HTTPException(404, { message: TASK_NOT_FOUND });\n let answered: boolean;\n try {\n answered = await inspector.answer(taskKey, inputResponses);\n } catch (error) {\n throw toTasksHttpError(error, mastra, `answer ${serverId}`);\n }\n if (!answered) throw new HTTPException(404, { message: TASK_NOT_FOUND });\n return { success: true as const };\n },\n});\n\n// ============================================================================\n// MCP Transport Routes (Streamable HTTP and SSE)\n// ============================================================================\n\n/**\n * MCP transport options that can be passed to startHTTP() or startSSE().\n * Includes serverless mode for running in stateless environments like Cloudflare Workers or Vercel Edge.\n */\nexport interface MCPTransportOptions {\n /**\n * When true, runs in stateless mode without session management.\n * Ideal for serverless environments where you can't maintain persistent connections.\n */\n serverless?: boolean;\n /**\n * Custom session ID generator function.\n */\n sessionIdGenerator?: () => string;\n /**\n * Sets `req.auth` before the MCP transport reads it. Overrides the default\n * bridge that forwards the principal resolved by `server.auth`.\n */\n setRequestAuth?: SetMcpRequestAuth;\n}\n\n/**\n * MCP HTTP Transport response type.\n * Adapters use this to set up the HTTP transport via MCPServer.startHTTP()\n */\nexport interface MCPHttpTransportResult {\n server: MastraMCPServerImplementation;\n httpPath: string;\n /**\n * Optional MCP transport options for this specific route.\n * These override any class-level mcpOptions configured on the adapter.\n */\n mcpOptions?: MCPTransportOptions;\n}\n\n/**\n * MCP SSE Transport response type.\n * Adapters use this to set up the SSE transport via MCPServer.startSSE() or startHonoSSE()\n *\n * Note: SSE transport is inherently stateful and doesn't support serverless mode.\n */\nexport interface MCPSseTransportResult {\n /** A 1.x server: the SSE route only resolves servers that still implement the transport. */\n server: MastraMCPServerImplementation;\n ssePath: string;\n messagePath: string;\n}\n\nexport const MCP_HTTP_TRANSPORT_ROUTE = createRoute({\n method: 'ALL',\n path: '/mcp/:serverId/mcp',\n responseType: 'mcp-http',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP HTTP Transport',\n description: 'Streamable HTTP transport endpoint for MCP protocol communication',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }): Promise<MCPHttpTransportResult> => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });\n }\n\n return {\n server,\n httpPath: `/mcp/${serverId}/mcp`,\n };\n },\n});\n\nexport const MCP_SSE_TRANSPORT_ROUTE = createRoute({\n method: 'ALL',\n path: '/mcp/:serverId/sse',\n responseType: 'mcp-sse',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP SSE Transport',\n description: 'SSE transport endpoint for MCP protocol communication',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }): Promise<MCPSseTransportResult> => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });\n }\n\n if (!hasSSETransport(server)) {\n throw new HTTPException(404, { message: 'Legacy SSE transport is unavailable for MCP v2 servers' });\n }\n\n return {\n server,\n ssePath: `/mcp/${serverId}/sse`,\n messagePath: `/mcp/${serverId}/messages`,\n };\n },\n});\n\nexport const MCP_SSE_MESSAGES_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/messages',\n responseType: 'mcp-sse',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP SSE Messages',\n description: 'Message endpoint for SSE transport (posts messages to active SSE streams)',\n tags: ['MCP'],\n requiresAuth: true,\n handler: MCP_SSE_TRANSPORT_ROUTE.handler,\n});\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime-CQI-hT2b.js";
2
2
  import { t as HTTPException } from "./http-exception-CzaWkxMl.js";
3
- import { n as createRoute } from "./route-builder-BxPrwNog.js";
4
- import { r as getContextResourceId } from "./utils-B15w-1hm.js";
5
3
  import { A as serverDetailSchema, C as mcpServerTaskPathParams, D as pollMcpServerEventResponseSchema, E as pollMcpServerEventBodySchema, M as streamMcpServerEventBodySchema, O as readResourceBodySchema, S as mcpServerTaskActionResponseSchema, T as mcpToolInfoSchema, _ as mcpServerDetailPathParams, a as executeToolResponseSchema, b as mcpServerIdPathParams, c as getMcpServerDetailQuerySchema, d as listMcpServerTasksQuerySchema, f as listMcpServerTasksResponseSchema, g as listResourcesResponseSchema, h as listMcpServersResponseSchema, i as executeToolBodySchema, k as readResourceResponseSchema, m as listMcpServersQuerySchema, n as emitMcpServerEventBodySchema, o as findMcpServerTaskBodySchema, p as listMcpServerToolsResponseSchema, r as emitMcpServerEventResponseSchema, s as findMcpServerTaskResponseSchema, t as answerMcpServerTaskBodySchema, u as listMcpServerEventsResponseSchema, v as mcpServerEventPathParams, w as mcpServerToolPathParams, x as mcpServerResourcePathParams, y as mcpServerEventStreamFrameSchema } from "./mcp-CQ_pR-JC.js";
4
+ import { n as createRoute } from "./route-builder-BKEzjw_M.js";
5
+ import { r as getContextResourceId } from "./utils-CTYtskHa.js";
6
6
  import { MastraError } from "@mastra/core/error";
7
7
  // src/server/handlers/mcp.ts
8
8
  var mcp_exports = /* @__PURE__ */ __exportAll({
@@ -619,4 +619,4 @@ const MCP_SSE_MESSAGES_ROUTE = createRoute({
619
619
  });
620
620
  export { READ_MCP_SERVER_RESOURCE_ROUTE as _, FIND_MCP_SERVER_TASK_ROUTE as a, LIST_MCP_SERVERS_ROUTE as c, LIST_MCP_SERVER_TASKS_ROUTE as d, LIST_MCP_SERVER_TOOLS_ROUTE as f, POLL_MCP_SERVER_EVENT_ROUTE as g, MCP_SSE_TRANSPORT_ROUTE as h, EXECUTE_MCP_SERVER_TOOL_ROUTE as i, LIST_MCP_SERVER_EVENTS_ROUTE as l, MCP_SSE_MESSAGES_ROUTE as m, CANCEL_MCP_SERVER_TASK_ROUTE as n, GET_MCP_SERVER_DETAIL_ROUTE as o, MCP_HTTP_TRANSPORT_ROUTE as p, EMIT_MCP_SERVER_EVENT_ROUTE as r, GET_MCP_SERVER_TOOL_DETAIL_ROUTE as s, ANSWER_MCP_SERVER_TASK_ROUTE as t, LIST_MCP_SERVER_RESOURCES_ROUTE as u, STREAM_MCP_SERVER_EVENT_ROUTE as v, mcp_exports as y };
621
621
 
622
- //# sourceMappingURL=mcp-BkmWZD6M.js.map
622
+ //# sourceMappingURL=mcp-CntC59iU.js.map