@mastra/server 1.81.0-alpha.2 → 1.82.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 (243) hide show
  1. package/dist/{a2a-eUB3oDRN.cjs → a2a-CIq9dtbC.cjs} +3 -3
  2. package/dist/{a2a-eUB3oDRN.cjs.map → a2a-CIq9dtbC.cjs.map} +1 -1
  3. package/dist/{a2a-UYs7rzN2.js → a2a-DULF2hBd.js} +3 -3
  4. package/dist/{a2a-UYs7rzN2.js.map → a2a-DULF2hBd.js.map} +1 -1
  5. package/dist/{agent-builder-DwfHzUnt.cjs → agent-builder-CX7Rgay-.cjs} +4 -4
  6. package/dist/{agent-builder-DwfHzUnt.cjs.map → agent-builder-CX7Rgay-.cjs.map} +1 -1
  7. package/dist/{agent-builder-5dpawFJf.js → agent-builder-C_H7OUVX.js} +4 -4
  8. package/dist/{agent-builder-5dpawFJf.js.map → agent-builder-C_H7OUVX.js.map} +1 -1
  9. package/dist/{agents-BuI0JjjX.js → agents-NRBk4JAs.js} +4 -4
  10. package/dist/{agents-BuI0JjjX.js.map → agents-NRBk4JAs.js.map} +1 -1
  11. package/dist/{agents-BjdRPzyV.cjs → agents-SvkxJW48.cjs} +4 -4
  12. package/dist/{agents-BjdRPzyV.cjs.map → agents-SvkxJW48.cjs.map} +1 -1
  13. package/dist/{api-schema-manifest-GgyfF4dw.cjs → api-schema-manifest-BMJwl8fK.cjs} +2 -2
  14. package/dist/{api-schema-manifest-GgyfF4dw.cjs.map → api-schema-manifest-BMJwl8fK.cjs.map} +1 -1
  15. package/dist/{api-schema-manifest-DafznVYs.js → api-schema-manifest-CEMyoduN.js} +2 -2
  16. package/dist/{api-schema-manifest-DafznVYs.js.map → api-schema-manifest-CEMyoduN.js.map} +1 -1
  17. package/dist/{background-tasks-BkYNmUcf.js → background-tasks-DhQ6upHK.js} +2 -2
  18. package/dist/{background-tasks-BkYNmUcf.js.map → background-tasks-DhQ6upHK.js.map} +1 -1
  19. package/dist/{background-tasks-Civclnuq.cjs → background-tasks-Kcx2YtW0.cjs} +2 -2
  20. package/dist/{background-tasks-Civclnuq.cjs.map → background-tasks-Kcx2YtW0.cjs.map} +1 -1
  21. package/dist/{builder-registry-DHVK50Ba.js → builder-registry-6TFaV4oT.js} +2 -2
  22. package/dist/{builder-registry-DHVK50Ba.js.map → builder-registry-6TFaV4oT.js.map} +1 -1
  23. package/dist/{builder-registry-CamBJItc.cjs → builder-registry-CkPRx_vx.cjs} +2 -2
  24. package/dist/{builder-registry-CamBJItc.cjs.map → builder-registry-CkPRx_vx.cjs.map} +1 -1
  25. package/dist/{channels-EqvuQQbv.cjs → channels-Bfkp5vYI.cjs} +2 -2
  26. package/dist/{channels-EqvuQQbv.cjs.map → channels-Bfkp5vYI.cjs.map} +1 -1
  27. package/dist/{channels-LNR2QIkc.js → channels-hhQ3vD30.js} +2 -2
  28. package/dist/{channels-LNR2QIkc.js.map → channels-hhQ3vD30.js.map} +1 -1
  29. package/dist/{constants-ohUUT3Vg.js → constants-CXAvBYcz.js} +9 -2
  30. package/dist/constants-CXAvBYcz.js.map +1 -0
  31. package/dist/{constants-Co1XjPjd.cjs → constants-DMg8hUOR.cjs} +14 -1
  32. package/dist/constants-DMg8hUOR.cjs.map +1 -0
  33. package/dist/{conversations-fdXV9K0J.js → conversations-CVvZOu1K.js} +3 -3
  34. package/dist/{conversations-fdXV9K0J.js.map → conversations-CVvZOu1K.js.map} +1 -1
  35. package/dist/{conversations-ORTpTqBg.cjs → conversations-Ds6aiCMU.cjs} +3 -3
  36. package/dist/{conversations-ORTpTqBg.cjs.map → conversations-Ds6aiCMU.cjs.map} +1 -1
  37. package/dist/{dist-BEtxPxkM.cjs → dist-4RWkx1DC.cjs} +1 -1
  38. package/dist/dist-BOLBpPgs.js +1 -0
  39. package/dist/{dist-CR3PolEz.cjs → dist-CRO6e62N.cjs} +583 -3539
  40. package/dist/dist-CRO6e62N.cjs.map +1 -0
  41. package/dist/{dist-CmG4sN60.js → dist-DwXaR0sc.js} +585 -3541
  42. package/dist/dist-DwXaR0sc.js.map +1 -0
  43. package/dist/docs/SKILL.md +2 -1
  44. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  45. package/dist/docs/references/docs-studio-knowledge.md +81 -0
  46. package/dist/{editor-builder-DxGZ7IN5.js → editor-builder-BG38irXi.js} +2 -2
  47. package/dist/{editor-builder-DxGZ7IN5.js.map → editor-builder-BG38irXi.js.map} +1 -1
  48. package/dist/{editor-builder-6l27BFzD.cjs → editor-builder-CcSeAW18.cjs} +2 -2
  49. package/dist/{editor-builder-6l27BFzD.cjs.map → editor-builder-CcSeAW18.cjs.map} +1 -1
  50. package/dist/{helpers-CE1fJdLM.cjs → helpers-BKtUXhz2.cjs} +26 -3
  51. package/dist/helpers-BKtUXhz2.cjs.map +1 -0
  52. package/dist/{helpers-CMCXsowL.js → helpers-DNq3LtLq.js} +26 -3
  53. package/dist/helpers-DNq3LtLq.js.map +1 -0
  54. package/dist/knowledge-DykIi0wH.js +431 -0
  55. package/dist/knowledge-DykIi0wH.js.map +1 -0
  56. package/dist/knowledge-qu0om3W7.cjs +474 -0
  57. package/dist/knowledge-qu0om3W7.cjs.map +1 -0
  58. package/dist/{logs-BbaBP2LD.js → logs-B57_NKDn.js} +2 -2
  59. package/dist/{logs-BbaBP2LD.js.map → logs-B57_NKDn.js.map} +1 -1
  60. package/dist/{logs-DI-h9uHR.cjs → logs-BJN3M88A.cjs} +2 -2
  61. package/dist/{logs-DI-h9uHR.cjs.map → logs-BJN3M88A.cjs.map} +1 -1
  62. package/dist/{mcp-CMw0sq0y.cjs → mcp-B9BILfJP.cjs} +2 -2
  63. package/dist/{mcp-CMw0sq0y.cjs.map → mcp-B9BILfJP.cjs.map} +1 -1
  64. package/dist/{mcp-DN9mT9q4.js → mcp-BkmWZD6M.js} +2 -2
  65. package/dist/{mcp-DN9mT9q4.js.map → mcp-BkmWZD6M.js.map} +1 -1
  66. package/dist/{memory-Buhi6kZ-.cjs → memory-Dqod_AK9.cjs} +2 -2
  67. package/dist/{memory-Buhi6kZ-.cjs.map → memory-Dqod_AK9.cjs.map} +1 -1
  68. package/dist/{memory-BTR95ujT.js → memory-ipOCmg0C.js} +2 -2
  69. package/dist/{memory-BTR95ujT.js.map → memory-ipOCmg0C.js.map} +1 -1
  70. package/dist/{observability-pX3wmG8T.js → observability-CbJDt-WY.js} +2 -2
  71. package/dist/{observability-pX3wmG8T.js.map → observability-CbJDt-WY.js.map} +1 -1
  72. package/dist/{observability-new-endpoints-BrB2CKix.cjs → observability-new-endpoints-7KCQHib3.cjs} +2 -2
  73. package/dist/{observability-new-endpoints-BrB2CKix.cjs.map → observability-new-endpoints-7KCQHib3.cjs.map} +1 -1
  74. package/dist/{observability-new-endpoints-CQNVjYYq.js → observability-new-endpoints-DrDPcAjm.js} +2 -2
  75. package/dist/{observability-new-endpoints-CQNVjYYq.js.map → observability-new-endpoints-DrDPcAjm.js.map} +1 -1
  76. package/dist/{observability-DRbDeN1X.cjs → observability-wSQo-vXB.cjs} +2 -2
  77. package/dist/{observability-DRbDeN1X.cjs.map → observability-wSQo-vXB.cjs.map} +1 -1
  78. package/dist/{plans-D9BGMVkL.js → plans-BRf1-Sch.js} +3 -3
  79. package/dist/{plans-D9BGMVkL.js.map → plans-BRf1-Sch.js.map} +1 -1
  80. package/dist/{plans-BHQFsFRU.cjs → plans-Cq23qQ48.cjs} +3 -3
  81. package/dist/{plans-BHQFsFRU.cjs.map → plans-Cq23qQ48.cjs.map} +1 -1
  82. package/dist/{probe-image-size-BjNoJxWf.js → probe-image-size-BGSAADKy.js} +2 -2
  83. package/dist/{probe-image-size-BjNoJxWf.js.map → probe-image-size-BGSAADKy.js.map} +1 -1
  84. package/dist/{probe-image-size-jS0ECSlc.cjs → probe-image-size-CsYWL1Gs.cjs} +2 -2
  85. package/dist/{probe-image-size-jS0ECSlc.cjs.map → probe-image-size-CsYWL1Gs.cjs.map} +1 -1
  86. package/dist/{responses-Cb-9JV9A.js → responses-CGy87E_N.js} +3 -3
  87. package/dist/{responses-Cb-9JV9A.js.map → responses-CGy87E_N.js.map} +1 -1
  88. package/dist/{responses-4_RCBNJB.cjs → responses-CPTdr5VE.cjs} +3 -3
  89. package/dist/{responses-4_RCBNJB.cjs.map → responses-CPTdr5VE.cjs.map} +1 -1
  90. package/dist/{routes-BqWcvAcz.cjs → routes-BCpGBudO.cjs} +79 -22
  91. package/dist/routes-BCpGBudO.cjs.map +1 -0
  92. package/dist/{routes-4X2kSYEG.js → routes-DZgJrVh5.js} +62 -23
  93. package/dist/routes-DZgJrVh5.js.map +1 -0
  94. package/dist/{schedules-CQPodXrR.js → schedules-CGViSLZC.js} +2 -2
  95. package/dist/{schedules-CQPodXrR.js.map → schedules-CGViSLZC.js.map} +1 -1
  96. package/dist/{schedules-CL4IU7kS.cjs → schedules-D8ShgpY3.cjs} +2 -2
  97. package/dist/{schedules-CL4IU7kS.cjs.map → schedules-D8ShgpY3.cjs.map} +1 -1
  98. package/dist/{scores-DnEcBe2i.cjs → scores-BZ0Iz_0O.cjs} +2 -2
  99. package/dist/{scores-DnEcBe2i.cjs.map → scores-BZ0Iz_0O.cjs.map} +1 -1
  100. package/dist/{scores-DqImg-o-.js → scores-DqSDYRs0.js} +2 -2
  101. package/dist/{scores-DqImg-o-.js.map → scores-DqSDYRs0.js.map} +1 -1
  102. package/dist/server/auth/helpers.d.ts.map +1 -1
  103. package/dist/server/auth/index.cjs +2 -2
  104. package/dist/server/auth/index.js +2 -2
  105. package/dist/server/constants.d.ts +7 -1
  106. package/dist/server/constants.d.ts.map +1 -1
  107. package/dist/server/fga-permissions.d.ts.map +1 -1
  108. package/dist/server/handlers/a2a.cjs +1 -1
  109. package/dist/server/handlers/a2a.js +1 -1
  110. package/dist/server/handlers/agent-builder.cjs +1 -1
  111. package/dist/server/handlers/agent-builder.js +1 -1
  112. package/dist/server/handlers/agent-controller.cjs +2 -2
  113. package/dist/server/handlers/agent-controller.js +2 -2
  114. package/dist/server/handlers/agent-versions.cjs +1 -1
  115. package/dist/server/handlers/agent-versions.js +1 -1
  116. package/dist/server/handlers/agents.cjs +1 -1
  117. package/dist/server/handlers/agents.js +1 -1
  118. package/dist/server/handlers/auth.cjs +2 -2
  119. package/dist/server/handlers/auth.js +2 -2
  120. package/dist/server/handlers/authorship.cjs +1 -1
  121. package/dist/server/handlers/authorship.js +1 -1
  122. package/dist/server/handlers/background-tasks.cjs +1 -1
  123. package/dist/server/handlers/background-tasks.js +1 -1
  124. package/dist/server/handlers/builder-registry.cjs +1 -1
  125. package/dist/server/handlers/builder-registry.js +1 -1
  126. package/dist/server/handlers/channels.cjs +1 -1
  127. package/dist/server/handlers/channels.js +1 -1
  128. package/dist/server/handlers/conversations.cjs +1 -1
  129. package/dist/server/handlers/conversations.js +1 -1
  130. package/dist/server/handlers/datasets.cjs +1 -1
  131. package/dist/server/handlers/datasets.js +1 -1
  132. package/dist/server/handlers/editor-builder.cjs +1 -1
  133. package/dist/server/handlers/editor-builder.js +1 -1
  134. package/dist/server/handlers/favorites-enrichment.cjs +1 -1
  135. package/dist/server/handlers/favorites-enrichment.js +1 -1
  136. package/dist/server/handlers/knowledge.cjs +10 -0
  137. package/dist/server/handlers/knowledge.d.ts +237 -0
  138. package/dist/server/handlers/knowledge.d.ts.map +1 -0
  139. package/dist/server/handlers/knowledge.js +1 -0
  140. package/dist/server/handlers/logs.cjs +1 -1
  141. package/dist/server/handlers/logs.js +1 -1
  142. package/dist/server/handlers/mcp-client-versions.cjs +1 -1
  143. package/dist/server/handlers/mcp-client-versions.js +1 -1
  144. package/dist/server/handlers/mcp.cjs +1 -1
  145. package/dist/server/handlers/mcp.js +1 -1
  146. package/dist/server/handlers/memory.cjs +1 -1
  147. package/dist/server/handlers/memory.js +1 -1
  148. package/dist/server/handlers/observability-new-endpoints.cjs +1 -1
  149. package/dist/server/handlers/observability-new-endpoints.js +1 -1
  150. package/dist/server/handlers/observability.cjs +2 -2
  151. package/dist/server/handlers/observability.js +2 -2
  152. package/dist/server/handlers/plans.cjs +1 -1
  153. package/dist/server/handlers/plans.js +1 -1
  154. package/dist/server/handlers/prompt-block-versions.cjs +1 -1
  155. package/dist/server/handlers/prompt-block-versions.js +1 -1
  156. package/dist/server/handlers/responses.cjs +1 -1
  157. package/dist/server/handlers/responses.js +1 -1
  158. package/dist/server/handlers/responses.storage.cjs +1 -1
  159. package/dist/server/handlers/responses.storage.js +1 -1
  160. package/dist/server/handlers/schedules.cjs +1 -1
  161. package/dist/server/handlers/schedules.js +1 -1
  162. package/dist/server/handlers/scorer-versions.cjs +1 -1
  163. package/dist/server/handlers/scorer-versions.js +1 -1
  164. package/dist/server/handlers/scores.cjs +1 -1
  165. package/dist/server/handlers/scores.js +1 -1
  166. package/dist/server/handlers/stored-agent-favorites.cjs +2 -2
  167. package/dist/server/handlers/stored-agent-favorites.js +2 -2
  168. package/dist/server/handlers/stored-agents.cjs +2 -2
  169. package/dist/server/handlers/stored-agents.js +2 -2
  170. package/dist/server/handlers/stored-mcp-clients.cjs +1 -1
  171. package/dist/server/handlers/stored-mcp-clients.js +1 -1
  172. package/dist/server/handlers/stored-prompt-blocks.cjs +1 -1
  173. package/dist/server/handlers/stored-prompt-blocks.js +1 -1
  174. package/dist/server/handlers/stored-scorers.cjs +1 -1
  175. package/dist/server/handlers/stored-scorers.js +1 -1
  176. package/dist/server/handlers/stored-skill-favorites.cjs +2 -2
  177. package/dist/server/handlers/stored-skill-favorites.js +2 -2
  178. package/dist/server/handlers/stored-skills.cjs +2 -2
  179. package/dist/server/handlers/stored-skills.js +2 -2
  180. package/dist/server/handlers/stored-workspaces.cjs +1 -1
  181. package/dist/server/handlers/stored-workspaces.js +1 -1
  182. package/dist/server/handlers/system.cjs +1 -1
  183. package/dist/server/handlers/system.js +1 -1
  184. package/dist/server/handlers/tool-providers.cjs +1 -1
  185. package/dist/server/handlers/tool-providers.js +1 -1
  186. package/dist/server/handlers/tools.cjs +1 -1
  187. package/dist/server/handlers/tools.js +1 -1
  188. package/dist/server/handlers/utils.cjs +1 -1
  189. package/dist/server/handlers/utils.js +1 -1
  190. package/dist/server/handlers/validate-agent-instructions.cjs +1 -1
  191. package/dist/server/handlers/validate-agent-instructions.js +1 -1
  192. package/dist/server/handlers/workflow-builder.cjs +1 -1
  193. package/dist/server/handlers/workflow-builder.js +1 -1
  194. package/dist/server/handlers/workflows.cjs +1 -1
  195. package/dist/server/handlers/workflows.js +1 -1
  196. package/dist/server/handlers/workspace.d.ts +23 -23
  197. package/dist/server/handlers.cjs +13 -13
  198. package/dist/server/handlers.js +13 -13
  199. package/dist/server/schemas/knowledge.d.ts +58 -0
  200. package/dist/server/schemas/knowledge.d.ts.map +1 -0
  201. package/dist/server/server-adapter/index.cjs +21 -6
  202. package/dist/server/server-adapter/index.cjs.map +1 -1
  203. package/dist/server/server-adapter/index.d.ts +1 -1
  204. package/dist/server/server-adapter/index.d.ts.map +1 -1
  205. package/dist/server/server-adapter/index.js +18 -7
  206. package/dist/server/server-adapter/index.js.map +1 -1
  207. package/dist/server/server-adapter/routes/fga-manifest.d.ts.map +1 -1
  208. package/dist/server/server-adapter/routes/index.d.ts +29 -0
  209. package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
  210. package/dist/server/server-adapter/routes/knowledge.d.ts +231 -0
  211. package/dist/server/server-adapter/routes/knowledge.d.ts.map +1 -0
  212. package/dist/{tools-BFpuzQsz.js → tools-CtELrYsA.js} +4 -4
  213. package/dist/{tools-BFpuzQsz.js.map → tools-CtELrYsA.js.map} +1 -1
  214. package/dist/{tools-Dy_j6URC.cjs → tools-DtRHH9Hr.cjs} +4 -4
  215. package/dist/{tools-Dy_j6URC.cjs.map → tools-DtRHH9Hr.cjs.map} +1 -1
  216. package/dist/{utils-BbYUI6Yn.cjs → utils-9PRHHTGC.cjs} +7 -3
  217. package/dist/utils-9PRHHTGC.cjs.map +1 -0
  218. package/dist/{utils-DHxjw4Tn.js → utils-B15w-1hm.js} +7 -3
  219. package/dist/utils-B15w-1hm.js.map +1 -0
  220. package/dist/{utils-BnH77wPf.cjs → utils-bQ6Jhog6.cjs} +2 -2
  221. package/dist/{utils-BnH77wPf.cjs.map → utils-bQ6Jhog6.cjs.map} +1 -1
  222. package/dist/{utils-YEuwVEc2.js → utils-qaBKOShQ.js} +2 -2
  223. package/dist/{utils-YEuwVEc2.js.map → utils-qaBKOShQ.js.map} +1 -1
  224. package/dist/{workflow-builder--W9PMW13.js → workflow-builder-6I2HiKcF.js} +2 -2
  225. package/dist/{workflow-builder--W9PMW13.js.map → workflow-builder-6I2HiKcF.js.map} +1 -1
  226. package/dist/{workflow-builder-CT7JOoW6.cjs → workflow-builder-CQzvZvwC.cjs} +2 -2
  227. package/dist/{workflow-builder-CT7JOoW6.cjs.map → workflow-builder-CQzvZvwC.cjs.map} +1 -1
  228. package/dist/{workflows-DPIRVRN9.js → workflows-ClfVyB1p.js} +3 -3
  229. package/dist/{workflows-DPIRVRN9.js.map → workflows-ClfVyB1p.js.map} +1 -1
  230. package/dist/{workflows-BAOfWBkr.cjs → workflows-DgSo-eBG.cjs} +3 -3
  231. package/dist/{workflows-BAOfWBkr.cjs.map → workflows-DgSo-eBG.cjs.map} +1 -1
  232. package/package.json +9 -9
  233. package/dist/constants-Co1XjPjd.cjs.map +0 -1
  234. package/dist/constants-ohUUT3Vg.js.map +0 -1
  235. package/dist/dist-BQ1uFC_1.js +0 -1
  236. package/dist/dist-CR3PolEz.cjs.map +0 -1
  237. package/dist/dist-CmG4sN60.js.map +0 -1
  238. package/dist/helpers-CE1fJdLM.cjs.map +0 -1
  239. package/dist/helpers-CMCXsowL.js.map +0 -1
  240. package/dist/routes-4X2kSYEG.js.map +0 -1
  241. package/dist/routes-BqWcvAcz.cjs.map +0 -1
  242. package/dist/utils-BbYUI6Yn.cjs.map +0 -1
  243. package/dist/utils-DHxjw4Tn.js.map +0 -1
@@ -2,8 +2,8 @@ import { r as __exportAll } from "./rolldown-runtime-CQI-hT2b.js";
2
2
  import { t as HTTPException } from "./http-exception-CzaWkxMl.js";
3
3
  import { n as createRoute } from "./route-builder-BxPrwNog.js";
4
4
  import { handleError } from "./server/handlers/error.js";
5
- import { _ as MastraFGAPermissions, a as getEffectiveThreadId, i as getEffectiveResourceId, n as enforceThreadAccess } from "./utils-DHxjw4Tn.js";
6
- import { G as getAgentFromSystem } from "./agents-BuI0JjjX.js";
5
+ import { _ as MastraFGAPermissions, a as getEffectiveThreadId, i as getEffectiveResourceId, n as enforceThreadAccess } from "./utils-B15w-1hm.js";
6
+ import { G as getAgentFromSystem } from "./agents-NRBk4JAs.js";
7
7
  import { a as deleteResponseSchema, i as createResponseBodySchema, o as responseIdPathParams, u as responseObjectSchema } from "./responses-D-fsDRLd.js";
8
8
  import { buildCompletedResponse, buildInProgressResponse, createMessageId, createOutputTextPart, createResponseStreamEventTranslator, formatSseEvent, mapMastraToolsToResponseTools, mapResponseInputToExecutionMessages, mapResponseTurnRecordToResponse, toResponseStatus, toResponseUsage } from "./server/handlers/responses.adapter.js";
9
9
  import { deleteResponseTurnRecord, findResponseTurnRecord, findResponseTurnRecordAcrossAgents, getAgentMemoryStore, persistResponseTurnRecord, resolveResponseTurnMessagesForStorage } from "./server/handlers/responses.storage.js";
@@ -624,4 +624,4 @@ const DELETE_RESPONSE_ROUTE = createRoute({
624
624
  });
625
625
  export { responses_exports as i, DELETE_RESPONSE_ROUTE as n, GET_RESPONSE_ROUTE as r, CREATE_RESPONSE_ROUTE as t };
626
626
 
627
- //# sourceMappingURL=responses-Cb-9JV9A.js.map
627
+ //# sourceMappingURL=responses-CGy87E_N.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"responses-Cb-9JV9A.js","names":[],"sources":["../src/server/handlers/responses.ts"],"sourcesContent":["import type { Agent, MastraDBMessage } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { MemoryStorage } from '@mastra/core/storage';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n createResponseBodySchema,\n deleteResponseSchema,\n responseIdPathParams,\n responseObjectSchema,\n} from '../schemas/responses';\nimport type { CreateResponseBody, DeleteResponse, ResponseObject } from '../schemas/responses';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport {\n buildCompletedResponse,\n buildInProgressResponse,\n createResponseStreamEventTranslator,\n createMessageId,\n createOutputTextPart,\n formatSseEvent,\n mapMastraToolsToResponseTools,\n mapResponseInputToExecutionMessages,\n mapResponseTurnRecordToResponse,\n toResponseStatus,\n toResponseUsage,\n} from './responses.adapter';\nimport {\n deleteResponseTurnRecord,\n findResponseTurnRecord,\n findResponseTurnRecordAcrossAgents,\n getAgentMemoryStore,\n persistResponseTurnRecord,\n resolveResponseTurnMessagesForStorage,\n} from './responses.storage';\nimport type {\n ProviderMetadataLike,\n ResponseTurnRecord,\n ResponseTurnRecordMetadata,\n ThreadExecutionContext,\n UsageLike,\n} from './responses.storage';\nimport { enforceThreadAccess, getEffectiveResourceId, getEffectiveThreadId } from './utils';\n\ntype AgentExecutionInput = Parameters<Agent['generate']>[0];\ntype ResolvedAgentModel = Awaited<ReturnType<Agent['getModel']>>;\n\ntype ResponseExecutionResult = {\n text?: string;\n finishReason?: string;\n totalUsage?: UsageLike | Promise<UsageLike>;\n usage?: UsageLike | Promise<UsageLike>;\n providerMetadata?: ProviderMetadataLike | Promise<ProviderMetadataLike>;\n response?: {\n id?: string;\n dbMessages?: MastraDBMessage[];\n };\n};\n\ntype ResponseStreamResult = {\n fullStream: ReadableStream<unknown> | Promise<ReadableStream<unknown>>;\n text: Promise<string> | string;\n finishReason: Promise<string | undefined> | string | undefined;\n totalUsage?: Promise<UsageLike> | UsageLike;\n usage?: Promise<UsageLike> | UsageLike;\n providerMetadata?: Promise<ProviderMetadataLike> | ProviderMetadataLike;\n response?:\n | Promise<{\n id?: string;\n dbMessages?: MastraDBMessage[];\n }>\n | {\n id?: string;\n dbMessages?: MastraDBMessage[];\n };\n};\n\ntype CompletedResponseState = {\n completedAt: number;\n status: ResponseObject['status'];\n text: string;\n usage: UsageLike;\n usageDetails: ResponseObject['usage'];\n providerOptions: ProviderMetadataLike;\n};\n\ntype FinalizedResponse = {\n completedState: CompletedResponseState;\n response: ResponseObject;\n responseMessages: MastraDBMessage[];\n};\n\ntype PreparedCreateResponseRequest = {\n agent: Agent<any, any, any, any>;\n agentMemoryStore: MemoryStorage | null;\n configuredTools: ReturnType<typeof mapMastraToolsToResponseTools>;\n createdAt: number;\n didStore: boolean;\n executionInput: AgentExecutionInput;\n previousResponseTurnRecord: ResponseTurnRecord | null;\n resolvedModel: ResolvedAgentModel;\n responseId: string;\n responseModel: string;\n responseMetadata: Omit<\n ResponseTurnRecordMetadata,\n 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'\n >;\n threadContext: ThreadExecutionContext | null;\n};\n\nconst JSON_OBJECT_RESPONSE_SCHEMA = {\n type: 'object',\n additionalProperties: true,\n} as const;\n\nfunction jsonResponse(data: ResponseObject, status: number = 200): Response {\n return new Response(JSON.stringify(data), {\n status,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n}\n\nfunction createStructuredOutput(text: CreateResponseBody['text']) {\n if (!text) {\n return undefined;\n }\n\n switch (text.format.type) {\n case 'json_object':\n return {\n schema: JSON_OBJECT_RESPONSE_SCHEMA,\n jsonPromptInjection: true,\n };\n case 'json_schema':\n return {\n schema: text.format.schema,\n };\n default:\n return undefined;\n }\n}\n\nfunction getStreamedMessageOutputItem(response: ResponseObject, responseId: string) {\n return (\n response.output.find(\n (item): item is Extract<ResponseObject['output'][number], { type: 'message' }> =>\n item.type === 'message' && item.id === responseId,\n ) ?? null\n );\n}\n\n/**\n * Resolves the memory thread that should back the current response request.\n *\n * If `previous_response_id` is present, the request continues on that stored thread.\n * Otherwise, the route only creates or reuses a thread when the caller asked to store\n * the response and the resolved agent actually has memory configured.\n */\nasync function resolveThreadExecutionContext({\n agent,\n store,\n conversationId,\n previousResponseTurnRecord,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n store: boolean;\n conversationId?: string;\n previousResponseTurnRecord: ResponseTurnRecord | null;\n requestContext: RequestContext;\n}): Promise<ThreadExecutionContext | null> {\n if (conversationId && previousResponseTurnRecord && previousResponseTurnRecord.thread.id !== conversationId) {\n throw new HTTPException(400, {\n message:\n 'conversation_id and previous_response_id must reference the same conversation thread when both are provided',\n });\n }\n\n if (previousResponseTurnRecord) {\n return {\n threadId: previousResponseTurnRecord.thread.id,\n resourceId: previousResponseTurnRecord.thread.resourceId,\n };\n }\n\n const effectiveThreadId = getEffectiveThreadId(requestContext, undefined);\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n\n if (!store && !conversationId && !effectiveThreadId) {\n return null;\n }\n\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n if (conversationId) {\n throw new HTTPException(400, {\n message: 'conversation_id requires the target agent to have memory configured',\n });\n }\n\n return null;\n }\n\n if (conversationId) {\n const existingThread = await memory.getThreadById({ threadId: conversationId });\n if (!existingThread) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n await enforceThreadAccess({\n mastra: agent.getMastraInstance(),\n requestContext,\n threadId: conversationId,\n thread: existingThread,\n effectiveResourceId,\n });\n return {\n threadId: existingThread.id,\n resourceId: effectiveResourceId ?? existingThread.resourceId,\n };\n }\n\n if (!effectiveThreadId) {\n if (!store) {\n return null;\n }\n\n const threadId = globalThis.crypto.randomUUID();\n const createdThread = await memory.createThread({\n threadId,\n resourceId: effectiveResourceId ?? threadId,\n });\n\n return {\n threadId: createdThread.id,\n resourceId: createdThread.resourceId,\n };\n }\n\n const threadId = effectiveThreadId;\n const existingThread = await memory.getThreadById({ threadId });\n if (existingThread) {\n await enforceThreadAccess({\n mastra: agent.getMastraInstance(),\n requestContext,\n threadId,\n thread: existingThread,\n effectiveResourceId,\n });\n return {\n threadId: existingThread.id,\n resourceId: effectiveResourceId ?? existingThread.resourceId,\n };\n }\n\n if (!store) {\n return null;\n }\n\n const resourceId = effectiveResourceId ?? threadId;\n const createdThread = await memory.createThread({\n threadId,\n resourceId,\n });\n\n return {\n threadId: createdThread.id,\n resourceId: createdThread.resourceId,\n };\n}\n\nfunction createExecutionMemory(threadContext: ThreadExecutionContext | null) {\n if (!threadContext) {\n return undefined;\n }\n\n return {\n memory: {\n thread: threadContext.threadId,\n resource: threadContext.resourceId,\n },\n } as const;\n}\n\n/**\n * Resolves the registered Mastra agent that owns the response request.\n */\nasync function resolveResponseAgent({\n mastra,\n agentId,\n}: {\n mastra: Mastra | undefined;\n agentId?: string;\n}): Promise<Agent<any, any, any, any>> {\n if (!agentId) {\n throw new HTTPException(400, {\n message: 'Responses requests require an agent_id',\n });\n }\n\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for agent-backed responses' });\n }\n\n return getAgentFromSystem({ mastra, agentId });\n}\n\nasync function resolveAgentMemoryStore({\n agent,\n requestContext,\n errorMessage,\n}: {\n agent: Agent<any, any, any, any>;\n requestContext: RequestContext;\n errorMessage: string;\n}): Promise<MemoryStorage> {\n const agentMemoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!agentMemoryStore) {\n throw new HTTPException(400, { message: errorMessage });\n }\n\n return agentMemoryStore;\n}\n\n/**\n * Executes a non-streaming Responses API request through the resolved Mastra agent.\n */\nasync function executeGenerate({\n agent,\n resolvedModel,\n modelOverride,\n instructions,\n text,\n providerOptions,\n input,\n requestContext,\n abortSignal,\n threadContext,\n}: {\n agent: Agent;\n resolvedModel: ResolvedAgentModel;\n modelOverride?: string;\n instructions: string | undefined;\n text: CreateResponseBody['text'];\n providerOptions: CreateResponseBody['providerOptions'];\n input: AgentExecutionInput;\n requestContext: RequestContext;\n abortSignal: AbortSignal;\n threadContext: ThreadExecutionContext | null;\n}) {\n const executionMemory = createExecutionMemory(threadContext);\n const structuredOutput = createStructuredOutput(text);\n const modelOption = modelOverride ? { model: modelOverride } : {};\n const commonOptions = {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n structuredOutput,\n providerOptions,\n ...(executionMemory ?? {}),\n };\n\n if (resolvedModel.specificationVersion === 'v1') {\n if (threadContext) {\n return (await agent.generateLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n resourceId: threadContext.resourceId,\n threadId: threadContext.threadId,\n } as never)) as ResponseExecutionResult;\n }\n\n return (await agent.generateLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n } as never)) as ResponseExecutionResult;\n }\n\n return (await agent.generate(input, commonOptions as never)) as ResponseExecutionResult;\n}\n\n/**\n * Executes a streaming Responses API request through the resolved Mastra agent.\n */\nasync function executeStream({\n agent,\n resolvedModel,\n modelOverride,\n instructions,\n text,\n providerOptions,\n input,\n requestContext,\n abortSignal,\n threadContext,\n}: {\n agent: Agent;\n resolvedModel: ResolvedAgentModel;\n modelOverride?: string;\n instructions: string | undefined;\n text: CreateResponseBody['text'];\n providerOptions: CreateResponseBody['providerOptions'];\n input: AgentExecutionInput;\n requestContext: RequestContext;\n abortSignal: AbortSignal;\n threadContext: ThreadExecutionContext | null;\n}) {\n const executionMemory = createExecutionMemory(threadContext);\n const structuredOutput = createStructuredOutput(text);\n const modelOption = modelOverride ? { model: modelOverride } : {};\n const commonOptions = {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n structuredOutput,\n providerOptions,\n ...(executionMemory ?? {}),\n };\n\n if (resolvedModel.specificationVersion === 'v1') {\n if (threadContext) {\n return (await agent.streamLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n resourceId: threadContext.resourceId,\n threadId: threadContext.threadId,\n } as never)) as ResponseStreamResult;\n }\n\n return (await agent.streamLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n } as never)) as ResponseStreamResult;\n }\n\n return (await agent.stream(input, commonOptions as never)) as ResponseStreamResult;\n}\n\nasync function resolveUsage(result: ResponseExecutionResult | ResponseStreamResult): Promise<UsageLike> {\n return (await (result.totalUsage ?? result.usage ?? null)) as UsageLike;\n}\n\nasync function resolveProviderMetadata(\n result: ResponseExecutionResult | ResponseStreamResult,\n): Promise<ProviderMetadataLike> {\n return (await (result.providerMetadata ?? undefined)) as ProviderMetadataLike;\n}\n\nasync function resolveFinishReason(\n result: ResponseExecutionResult | ResponseStreamResult,\n): Promise<string | undefined> {\n return (await result.finishReason) ?? undefined;\n}\n\nasync function resolveText(result: ResponseExecutionResult | ResponseStreamResult): Promise<string> {\n return (await result.text) ?? '';\n}\n\n/**\n * Resolves the final response state shared by streaming and non-streaming flows.\n */\nasync function resolveCompletedResponseState(\n result: ResponseExecutionResult | ResponseStreamResult,\n fallbackText: string,\n): Promise<CompletedResponseState> {\n const usage = await resolveUsage(result);\n\n return {\n completedAt: Math.floor(Date.now() / 1000),\n status: toResponseStatus(await resolveFinishReason(result)),\n text: (await resolveText(result)) || fallbackText,\n usage,\n usageDetails: toResponseUsage(usage),\n providerOptions: await resolveProviderMetadata(result),\n };\n}\n\n/**\n * Stores the completed response when the request opted into memory-backed persistence.\n */\nasync function storeCompletedResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n responseId,\n metadata,\n completedState,\n messages,\n outputItems,\n}: {\n agentMemoryStore: MemoryStorage | null;\n didStore: boolean;\n threadContext: ThreadExecutionContext | null;\n responseId: string;\n metadata: Omit<ResponseTurnRecordMetadata, 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'>;\n completedState: CompletedResponseState;\n messages: MastraDBMessage[];\n outputItems: ResponseObject['output'];\n}): Promise<void> {\n if (!didStore || !threadContext) {\n return;\n }\n\n await persistResponseTurnRecord({\n memoryStore: agentMemoryStore,\n responseId,\n metadata: {\n ...metadata,\n completedAt: completedState.completedAt,\n status: completedState.status,\n usage: completedState.usageDetails,\n providerOptions: completedState.providerOptions,\n messageIds: [],\n outputItems,\n },\n threadContext,\n messages,\n });\n}\n\n/**\n * Resolves the final response object and persists the stored response turn when needed.\n */\nasync function finalizeResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n result,\n responseId,\n createdAt,\n model,\n instructions,\n previousResponseId,\n conversationId,\n configuredTools,\n responseMetadata,\n fallbackText,\n fallbackOutputItems,\n}: {\n agentMemoryStore: MemoryStorage | null;\n didStore: boolean;\n threadContext: ThreadExecutionContext | null;\n result: ResponseExecutionResult | ResponseStreamResult;\n responseId: string;\n createdAt: number;\n model: string;\n instructions: string | undefined;\n previousResponseId?: string;\n conversationId?: string;\n configuredTools: ReturnType<typeof mapMastraToolsToResponseTools>;\n responseMetadata: Omit<\n ResponseTurnRecordMetadata,\n 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'\n >;\n fallbackText: string;\n fallbackOutputItems?: (completedState: CompletedResponseState) => ResponseObject['output'];\n}): Promise<FinalizedResponse> {\n const completedState = await resolveCompletedResponseState(result, fallbackText);\n const fallbackItems = fallbackOutputItems?.(completedState);\n const responseMessages = await resolveResponseTurnMessagesForStorage({\n result,\n responseId,\n text: completedState.text,\n threadContext,\n fallbackOutputItems: threadContext ? fallbackItems : undefined,\n });\n const response = buildCompletedResponse({\n responseId,\n outputMessageId: responseId,\n model,\n createdAt,\n completedAt: completedState.completedAt,\n status: completedState.status,\n text: completedState.text,\n usage: completedState.usage,\n instructions,\n textConfig: responseMetadata.text,\n previousResponseId,\n conversationId,\n providerOptions: completedState.providerOptions,\n tools: configuredTools,\n messages: responseMessages,\n fallbackOutputItems: fallbackItems,\n store: didStore,\n });\n\n await storeCompletedResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n responseId,\n metadata: responseMetadata,\n completedState,\n messages: responseMessages,\n outputItems: response.output,\n });\n\n return { completedState, response, responseMessages };\n}\n\n/**\n * Resolves all request-scoped Mastra primitives needed to execute a Responses create\n * call: the owning agent, the memory thread context, the normalized execution input,\n * and the response-turn metadata that may be persisted later.\n */\nasync function prepareCreateResponseRequest({\n body,\n mastra,\n requestContext,\n}: {\n body: CreateResponseBody;\n mastra: Mastra | undefined;\n requestContext: RequestContext;\n}): Promise<PreparedCreateResponseRequest> {\n const executionInput = mapResponseInputToExecutionMessages(body.input) as AgentExecutionInput;\n let previousResponseTurnRecord: ResponseTurnRecord | null = null;\n let resolvedAgent: Agent<any, any, any, any> | null = null;\n\n if (body.previous_response_id) {\n if (body.agent_id) {\n resolvedAgent = await resolveResponseAgent({ mastra, agentId: body.agent_id });\n previousResponseTurnRecord = await findResponseTurnRecord({\n agent: resolvedAgent,\n responseId: body.previous_response_id,\n requestContext,\n });\n\n if (!previousResponseTurnRecord) {\n const owningResponseTurnRecord = await findResponseTurnRecordAcrossAgents({\n mastra,\n responseId: body.previous_response_id,\n requestContext,\n });\n\n if (owningResponseTurnRecord) {\n if (owningResponseTurnRecord.metadata.agentId === body.agent_id) {\n previousResponseTurnRecord = owningResponseTurnRecord;\n } else {\n throw new HTTPException(400, {\n message: `Stored response ${body.previous_response_id} belongs to agent ${owningResponseTurnRecord.metadata.agentId}, not ${body.agent_id}`,\n });\n }\n }\n\n if (!previousResponseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${body.previous_response_id} was not found` });\n }\n }\n } else {\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for agent-backed responses' });\n }\n\n previousResponseTurnRecord = await findResponseTurnRecordAcrossAgents({\n mastra,\n responseId: body.previous_response_id,\n requestContext,\n });\n\n if (!previousResponseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${body.previous_response_id} was not found` });\n }\n }\n }\n\n const agent =\n resolvedAgent ??\n (await resolveResponseAgent({\n mastra,\n agentId: body.agent_id ?? previousResponseTurnRecord?.metadata.agentId,\n }));\n const resolvedModel = await agent.getModel({\n requestContext,\n modelConfig: body.model,\n });\n const responseModel =\n body.model ??\n (() => {\n if (resolvedModel.provider && resolvedModel.modelId) {\n const publicProviderId = resolvedModel.provider.includes('.')\n ? resolvedModel.provider.split('.')[0]!\n : resolvedModel.provider;\n return `${publicProviderId}/${resolvedModel.modelId}`;\n }\n\n if (resolvedModel.modelId) {\n return resolvedModel.modelId;\n }\n\n throw new HTTPException(500, {\n message: 'Responses route could not determine the effective model for this request',\n });\n })();\n const shouldStore = body.store ?? false;\n const needsMemoryStore = shouldStore || Boolean(body.conversation_id) || Boolean(body.previous_response_id);\n const agentMemoryStore = needsMemoryStore\n ? await resolveAgentMemoryStore({\n agent,\n requestContext,\n errorMessage: body.previous_response_id\n ? 'previous_response_id requires the target agent to have memory storage configured'\n : shouldStore\n ? 'Stored responses require the target agent to have memory storage configured'\n : 'conversation_id requires the target agent to have memory storage configured',\n })\n : null;\n const configuredTools = mapMastraToolsToResponseTools(\n (await Promise.resolve(agent.listTools({ requestContext }))) as Record<string, unknown>,\n );\n\n const responseId = createMessageId();\n const createdAt = Math.floor(Date.now() / 1000);\n const threadContext = await resolveThreadExecutionContext({\n agent,\n store: shouldStore,\n conversationId: body.conversation_id,\n previousResponseTurnRecord,\n requestContext,\n });\n\n if (shouldStore && !threadContext) {\n throw new HTTPException(400, {\n message: 'Stored responses require the target agent to have memory configured',\n });\n }\n\n const didStore = shouldStore && Boolean(threadContext);\n\n return {\n agent,\n agentMemoryStore,\n configuredTools,\n createdAt,\n didStore,\n executionInput,\n previousResponseTurnRecord,\n resolvedModel,\n responseId,\n responseModel,\n responseMetadata: {\n agentId: agent.id,\n model: responseModel,\n createdAt,\n instructions: body.instructions,\n text: body.text,\n previousResponseId: previousResponseTurnRecord?.message.id ?? body.previous_response_id,\n tools: configuredTools,\n store: didStore,\n },\n threadContext,\n };\n}\n\n/**\n * Bridges a Mastra agent stream into OpenAI-style Responses SSE events and completes\n * the stored response-turn record when the stream finishes.\n */\nfunction createResponseEventStream({\n agentMemoryStore,\n body,\n configuredTools,\n createdAt,\n didStore,\n previousResponseTurnRecord,\n responseId,\n responseModel,\n responseMetadata,\n streamResult,\n threadContext,\n}: {\n agentMemoryStore: MemoryStorage | null;\n body: CreateResponseBody;\n configuredTools: ReturnType<typeof mapMastraToolsToResponseTools>;\n createdAt: number;\n didStore: boolean;\n previousResponseTurnRecord: ResponseTurnRecord | null;\n responseId: string;\n responseModel: string;\n responseMetadata: Omit<\n ResponseTurnRecordMetadata,\n 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'\n >;\n streamResult: ResponseStreamResult;\n threadContext: ThreadExecutionContext | null;\n}) {\n const createdResponse = buildInProgressResponse({\n responseId,\n model: responseModel,\n createdAt,\n instructions: body.instructions,\n textConfig: body.text,\n previousResponseId: body.previous_response_id,\n conversationId: threadContext?.threadId ?? body.conversation_id,\n tools: configuredTools,\n store: didStore,\n });\n\n return new ReadableStream<Uint8Array>({\n async start(controller) {\n let sequenceNumber = 1;\n const enqueueEvent = (eventName: string, payload: Record<string, unknown>) => {\n controller.enqueue(\n formatSseEvent(eventName, {\n ...payload,\n sequence_number: sequenceNumber++,\n }),\n );\n };\n\n enqueueEvent('response.created', {\n type: 'response.created',\n response: createdResponse,\n });\n enqueueEvent('response.in_progress', {\n type: 'response.in_progress',\n response: createdResponse,\n });\n\n const streamEvents = createResponseStreamEventTranslator(responseId);\n const fullStream = await streamResult.fullStream;\n const reader = fullStream.getReader();\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n\n for (const event of streamEvents.consume(value)) {\n enqueueEvent(event.event, event.payload);\n }\n }\n\n for (const event of streamEvents.flushPendingToolResults()) {\n enqueueEvent(event.event, event.payload);\n }\n\n const { completedState, response } = await finalizeResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n result: streamResult,\n responseId,\n createdAt,\n model: responseModel,\n instructions: body.instructions,\n previousResponseId: previousResponseTurnRecord?.message.id ?? body.previous_response_id,\n conversationId: threadContext?.threadId ?? body.conversation_id,\n configuredTools,\n responseMetadata,\n fallbackText: streamEvents.text,\n fallbackOutputItems: completedState =>\n streamEvents.getOutputItems({\n text: completedState.text,\n status: completedState.status,\n }),\n });\n\n const completedItem = getStreamedMessageOutputItem(response, responseId);\n if (completedItem || completedState.text) {\n for (const event of streamEvents.completeText(\n completedState.text,\n completedItem ?? {\n id: responseId,\n type: 'message' as const,\n role: 'assistant' as const,\n status: 'completed' as const,\n content: [createOutputTextPart(completedState.text)],\n },\n )) {\n enqueueEvent(event.event, event.payload);\n }\n }\n enqueueEvent('response.completed', {\n type: 'response.completed',\n response,\n });\n controller.close();\n } catch (error) {\n controller.error(error);\n } finally {\n reader.releaseLock();\n }\n },\n });\n}\n\nexport const CREATE_RESPONSE_ROUTE = createRoute({\n method: 'POST',\n path: '/v1/responses',\n responseType: 'datastream-response',\n bodySchema: createResponseBodySchema,\n responseSchema: responseObjectSchema,\n summary: 'Create a response',\n description: 'Creates a response through a Mastra-hosted Responses API-compatible route',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_EXECUTE,\n handler: async ({ mastra, requestContext, abortSignal, ...body }) => {\n try {\n const {\n agent,\n agentMemoryStore,\n configuredTools,\n createdAt,\n didStore,\n executionInput,\n previousResponseTurnRecord,\n resolvedModel,\n responseId,\n responseModel,\n responseMetadata,\n threadContext,\n } = await prepareCreateResponseRequest({ body, mastra, requestContext });\n\n if (!body.stream) {\n const result = await executeGenerate({\n agent,\n resolvedModel,\n modelOverride: body.model,\n instructions: body.instructions,\n text: body.text,\n providerOptions: body.providerOptions,\n input: executionInput,\n requestContext,\n abortSignal,\n threadContext,\n });\n\n const { response } = await finalizeResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n result,\n responseId,\n createdAt,\n model: responseModel,\n instructions: body.instructions,\n previousResponseId: previousResponseTurnRecord?.message.id ?? body.previous_response_id,\n conversationId: threadContext?.threadId ?? body.conversation_id,\n configuredTools,\n responseMetadata,\n fallbackText: '',\n });\n\n return jsonResponse(response);\n }\n\n const streamResult = await executeStream({\n agent,\n resolvedModel,\n modelOverride: body.model,\n instructions: body.instructions,\n text: body.text,\n providerOptions: body.providerOptions,\n input: executionInput,\n requestContext,\n abortSignal,\n threadContext,\n });\n\n const stream = createResponseEventStream({\n agentMemoryStore,\n body,\n configuredTools,\n createdAt,\n didStore,\n previousResponseTurnRecord,\n responseId,\n responseModel,\n responseMetadata,\n streamResult,\n threadContext,\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream; charset=utf-8',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n 'X-Accel-Buffering': 'no',\n },\n });\n } catch (error) {\n return handleError(error, 'Error creating response');\n }\n },\n});\n\nexport const GET_RESPONSE_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/responses/:responseId',\n responseType: 'json',\n pathParamSchema: responseIdPathParams,\n responseSchema: responseObjectSchema,\n summary: 'Retrieve a stored response',\n description: 'Returns a previously stored response object',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, responseId }) => {\n try {\n const responseTurnRecord = await findResponseTurnRecordAcrossAgents({ mastra, responseId, requestContext });\n if (!responseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${responseId} was not found` });\n }\n\n return mapResponseTurnRecordToResponse(responseTurnRecord);\n } catch (error) {\n return handleError(error, 'Error retrieving response');\n }\n },\n});\n\nexport const DELETE_RESPONSE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/v1/responses/:responseId',\n responseType: 'json',\n pathParamSchema: responseIdPathParams,\n responseSchema: deleteResponseSchema,\n summary: 'Delete a stored response',\n description: 'Deletes a stored response so it can no longer be retrieved or chained',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_DELETE,\n handler: async ({ mastra, requestContext, responseId }) => {\n try {\n const responseTurnRecord = await findResponseTurnRecordAcrossAgents({ mastra, responseId, requestContext });\n if (!responseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${responseId} was not found` });\n }\n\n await deleteResponseTurnRecord({ responseTurnRecord });\n\n const response: DeleteResponse = {\n id: responseId,\n object: 'response',\n deleted: true,\n };\n\n return response;\n } catch (error) {\n return handleError(error, 'Error deleting response');\n }\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"responses-CGy87E_N.js","names":[],"sources":["../src/server/handlers/responses.ts"],"sourcesContent":["import type { Agent, MastraDBMessage } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { MemoryStorage } from '@mastra/core/storage';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n createResponseBodySchema,\n deleteResponseSchema,\n responseIdPathParams,\n responseObjectSchema,\n} from '../schemas/responses';\nimport type { CreateResponseBody, DeleteResponse, ResponseObject } from '../schemas/responses';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport {\n buildCompletedResponse,\n buildInProgressResponse,\n createResponseStreamEventTranslator,\n createMessageId,\n createOutputTextPart,\n formatSseEvent,\n mapMastraToolsToResponseTools,\n mapResponseInputToExecutionMessages,\n mapResponseTurnRecordToResponse,\n toResponseStatus,\n toResponseUsage,\n} from './responses.adapter';\nimport {\n deleteResponseTurnRecord,\n findResponseTurnRecord,\n findResponseTurnRecordAcrossAgents,\n getAgentMemoryStore,\n persistResponseTurnRecord,\n resolveResponseTurnMessagesForStorage,\n} from './responses.storage';\nimport type {\n ProviderMetadataLike,\n ResponseTurnRecord,\n ResponseTurnRecordMetadata,\n ThreadExecutionContext,\n UsageLike,\n} from './responses.storage';\nimport { enforceThreadAccess, getEffectiveResourceId, getEffectiveThreadId } from './utils';\n\ntype AgentExecutionInput = Parameters<Agent['generate']>[0];\ntype ResolvedAgentModel = Awaited<ReturnType<Agent['getModel']>>;\n\ntype ResponseExecutionResult = {\n text?: string;\n finishReason?: string;\n totalUsage?: UsageLike | Promise<UsageLike>;\n usage?: UsageLike | Promise<UsageLike>;\n providerMetadata?: ProviderMetadataLike | Promise<ProviderMetadataLike>;\n response?: {\n id?: string;\n dbMessages?: MastraDBMessage[];\n };\n};\n\ntype ResponseStreamResult = {\n fullStream: ReadableStream<unknown> | Promise<ReadableStream<unknown>>;\n text: Promise<string> | string;\n finishReason: Promise<string | undefined> | string | undefined;\n totalUsage?: Promise<UsageLike> | UsageLike;\n usage?: Promise<UsageLike> | UsageLike;\n providerMetadata?: Promise<ProviderMetadataLike> | ProviderMetadataLike;\n response?:\n | Promise<{\n id?: string;\n dbMessages?: MastraDBMessage[];\n }>\n | {\n id?: string;\n dbMessages?: MastraDBMessage[];\n };\n};\n\ntype CompletedResponseState = {\n completedAt: number;\n status: ResponseObject['status'];\n text: string;\n usage: UsageLike;\n usageDetails: ResponseObject['usage'];\n providerOptions: ProviderMetadataLike;\n};\n\ntype FinalizedResponse = {\n completedState: CompletedResponseState;\n response: ResponseObject;\n responseMessages: MastraDBMessage[];\n};\n\ntype PreparedCreateResponseRequest = {\n agent: Agent<any, any, any, any>;\n agentMemoryStore: MemoryStorage | null;\n configuredTools: ReturnType<typeof mapMastraToolsToResponseTools>;\n createdAt: number;\n didStore: boolean;\n executionInput: AgentExecutionInput;\n previousResponseTurnRecord: ResponseTurnRecord | null;\n resolvedModel: ResolvedAgentModel;\n responseId: string;\n responseModel: string;\n responseMetadata: Omit<\n ResponseTurnRecordMetadata,\n 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'\n >;\n threadContext: ThreadExecutionContext | null;\n};\n\nconst JSON_OBJECT_RESPONSE_SCHEMA = {\n type: 'object',\n additionalProperties: true,\n} as const;\n\nfunction jsonResponse(data: ResponseObject, status: number = 200): Response {\n return new Response(JSON.stringify(data), {\n status,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n}\n\nfunction createStructuredOutput(text: CreateResponseBody['text']) {\n if (!text) {\n return undefined;\n }\n\n switch (text.format.type) {\n case 'json_object':\n return {\n schema: JSON_OBJECT_RESPONSE_SCHEMA,\n jsonPromptInjection: true,\n };\n case 'json_schema':\n return {\n schema: text.format.schema,\n };\n default:\n return undefined;\n }\n}\n\nfunction getStreamedMessageOutputItem(response: ResponseObject, responseId: string) {\n return (\n response.output.find(\n (item): item is Extract<ResponseObject['output'][number], { type: 'message' }> =>\n item.type === 'message' && item.id === responseId,\n ) ?? null\n );\n}\n\n/**\n * Resolves the memory thread that should back the current response request.\n *\n * If `previous_response_id` is present, the request continues on that stored thread.\n * Otherwise, the route only creates or reuses a thread when the caller asked to store\n * the response and the resolved agent actually has memory configured.\n */\nasync function resolveThreadExecutionContext({\n agent,\n store,\n conversationId,\n previousResponseTurnRecord,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n store: boolean;\n conversationId?: string;\n previousResponseTurnRecord: ResponseTurnRecord | null;\n requestContext: RequestContext;\n}): Promise<ThreadExecutionContext | null> {\n if (conversationId && previousResponseTurnRecord && previousResponseTurnRecord.thread.id !== conversationId) {\n throw new HTTPException(400, {\n message:\n 'conversation_id and previous_response_id must reference the same conversation thread when both are provided',\n });\n }\n\n if (previousResponseTurnRecord) {\n return {\n threadId: previousResponseTurnRecord.thread.id,\n resourceId: previousResponseTurnRecord.thread.resourceId,\n };\n }\n\n const effectiveThreadId = getEffectiveThreadId(requestContext, undefined);\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n\n if (!store && !conversationId && !effectiveThreadId) {\n return null;\n }\n\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n if (conversationId) {\n throw new HTTPException(400, {\n message: 'conversation_id requires the target agent to have memory configured',\n });\n }\n\n return null;\n }\n\n if (conversationId) {\n const existingThread = await memory.getThreadById({ threadId: conversationId });\n if (!existingThread) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n await enforceThreadAccess({\n mastra: agent.getMastraInstance(),\n requestContext,\n threadId: conversationId,\n thread: existingThread,\n effectiveResourceId,\n });\n return {\n threadId: existingThread.id,\n resourceId: effectiveResourceId ?? existingThread.resourceId,\n };\n }\n\n if (!effectiveThreadId) {\n if (!store) {\n return null;\n }\n\n const threadId = globalThis.crypto.randomUUID();\n const createdThread = await memory.createThread({\n threadId,\n resourceId: effectiveResourceId ?? threadId,\n });\n\n return {\n threadId: createdThread.id,\n resourceId: createdThread.resourceId,\n };\n }\n\n const threadId = effectiveThreadId;\n const existingThread = await memory.getThreadById({ threadId });\n if (existingThread) {\n await enforceThreadAccess({\n mastra: agent.getMastraInstance(),\n requestContext,\n threadId,\n thread: existingThread,\n effectiveResourceId,\n });\n return {\n threadId: existingThread.id,\n resourceId: effectiveResourceId ?? existingThread.resourceId,\n };\n }\n\n if (!store) {\n return null;\n }\n\n const resourceId = effectiveResourceId ?? threadId;\n const createdThread = await memory.createThread({\n threadId,\n resourceId,\n });\n\n return {\n threadId: createdThread.id,\n resourceId: createdThread.resourceId,\n };\n}\n\nfunction createExecutionMemory(threadContext: ThreadExecutionContext | null) {\n if (!threadContext) {\n return undefined;\n }\n\n return {\n memory: {\n thread: threadContext.threadId,\n resource: threadContext.resourceId,\n },\n } as const;\n}\n\n/**\n * Resolves the registered Mastra agent that owns the response request.\n */\nasync function resolveResponseAgent({\n mastra,\n agentId,\n}: {\n mastra: Mastra | undefined;\n agentId?: string;\n}): Promise<Agent<any, any, any, any>> {\n if (!agentId) {\n throw new HTTPException(400, {\n message: 'Responses requests require an agent_id',\n });\n }\n\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for agent-backed responses' });\n }\n\n return getAgentFromSystem({ mastra, agentId });\n}\n\nasync function resolveAgentMemoryStore({\n agent,\n requestContext,\n errorMessage,\n}: {\n agent: Agent<any, any, any, any>;\n requestContext: RequestContext;\n errorMessage: string;\n}): Promise<MemoryStorage> {\n const agentMemoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!agentMemoryStore) {\n throw new HTTPException(400, { message: errorMessage });\n }\n\n return agentMemoryStore;\n}\n\n/**\n * Executes a non-streaming Responses API request through the resolved Mastra agent.\n */\nasync function executeGenerate({\n agent,\n resolvedModel,\n modelOverride,\n instructions,\n text,\n providerOptions,\n input,\n requestContext,\n abortSignal,\n threadContext,\n}: {\n agent: Agent;\n resolvedModel: ResolvedAgentModel;\n modelOverride?: string;\n instructions: string | undefined;\n text: CreateResponseBody['text'];\n providerOptions: CreateResponseBody['providerOptions'];\n input: AgentExecutionInput;\n requestContext: RequestContext;\n abortSignal: AbortSignal;\n threadContext: ThreadExecutionContext | null;\n}) {\n const executionMemory = createExecutionMemory(threadContext);\n const structuredOutput = createStructuredOutput(text);\n const modelOption = modelOverride ? { model: modelOverride } : {};\n const commonOptions = {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n structuredOutput,\n providerOptions,\n ...(executionMemory ?? {}),\n };\n\n if (resolvedModel.specificationVersion === 'v1') {\n if (threadContext) {\n return (await agent.generateLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n resourceId: threadContext.resourceId,\n threadId: threadContext.threadId,\n } as never)) as ResponseExecutionResult;\n }\n\n return (await agent.generateLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n } as never)) as ResponseExecutionResult;\n }\n\n return (await agent.generate(input, commonOptions as never)) as ResponseExecutionResult;\n}\n\n/**\n * Executes a streaming Responses API request through the resolved Mastra agent.\n */\nasync function executeStream({\n agent,\n resolvedModel,\n modelOverride,\n instructions,\n text,\n providerOptions,\n input,\n requestContext,\n abortSignal,\n threadContext,\n}: {\n agent: Agent;\n resolvedModel: ResolvedAgentModel;\n modelOverride?: string;\n instructions: string | undefined;\n text: CreateResponseBody['text'];\n providerOptions: CreateResponseBody['providerOptions'];\n input: AgentExecutionInput;\n requestContext: RequestContext;\n abortSignal: AbortSignal;\n threadContext: ThreadExecutionContext | null;\n}) {\n const executionMemory = createExecutionMemory(threadContext);\n const structuredOutput = createStructuredOutput(text);\n const modelOption = modelOverride ? { model: modelOverride } : {};\n const commonOptions = {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n structuredOutput,\n providerOptions,\n ...(executionMemory ?? {}),\n };\n\n if (resolvedModel.specificationVersion === 'v1') {\n if (threadContext) {\n return (await agent.streamLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n resourceId: threadContext.resourceId,\n threadId: threadContext.threadId,\n } as never)) as ResponseStreamResult;\n }\n\n return (await agent.streamLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n } as never)) as ResponseStreamResult;\n }\n\n return (await agent.stream(input, commonOptions as never)) as ResponseStreamResult;\n}\n\nasync function resolveUsage(result: ResponseExecutionResult | ResponseStreamResult): Promise<UsageLike> {\n return (await (result.totalUsage ?? result.usage ?? null)) as UsageLike;\n}\n\nasync function resolveProviderMetadata(\n result: ResponseExecutionResult | ResponseStreamResult,\n): Promise<ProviderMetadataLike> {\n return (await (result.providerMetadata ?? undefined)) as ProviderMetadataLike;\n}\n\nasync function resolveFinishReason(\n result: ResponseExecutionResult | ResponseStreamResult,\n): Promise<string | undefined> {\n return (await result.finishReason) ?? undefined;\n}\n\nasync function resolveText(result: ResponseExecutionResult | ResponseStreamResult): Promise<string> {\n return (await result.text) ?? '';\n}\n\n/**\n * Resolves the final response state shared by streaming and non-streaming flows.\n */\nasync function resolveCompletedResponseState(\n result: ResponseExecutionResult | ResponseStreamResult,\n fallbackText: string,\n): Promise<CompletedResponseState> {\n const usage = await resolveUsage(result);\n\n return {\n completedAt: Math.floor(Date.now() / 1000),\n status: toResponseStatus(await resolveFinishReason(result)),\n text: (await resolveText(result)) || fallbackText,\n usage,\n usageDetails: toResponseUsage(usage),\n providerOptions: await resolveProviderMetadata(result),\n };\n}\n\n/**\n * Stores the completed response when the request opted into memory-backed persistence.\n */\nasync function storeCompletedResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n responseId,\n metadata,\n completedState,\n messages,\n outputItems,\n}: {\n agentMemoryStore: MemoryStorage | null;\n didStore: boolean;\n threadContext: ThreadExecutionContext | null;\n responseId: string;\n metadata: Omit<ResponseTurnRecordMetadata, 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'>;\n completedState: CompletedResponseState;\n messages: MastraDBMessage[];\n outputItems: ResponseObject['output'];\n}): Promise<void> {\n if (!didStore || !threadContext) {\n return;\n }\n\n await persistResponseTurnRecord({\n memoryStore: agentMemoryStore,\n responseId,\n metadata: {\n ...metadata,\n completedAt: completedState.completedAt,\n status: completedState.status,\n usage: completedState.usageDetails,\n providerOptions: completedState.providerOptions,\n messageIds: [],\n outputItems,\n },\n threadContext,\n messages,\n });\n}\n\n/**\n * Resolves the final response object and persists the stored response turn when needed.\n */\nasync function finalizeResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n result,\n responseId,\n createdAt,\n model,\n instructions,\n previousResponseId,\n conversationId,\n configuredTools,\n responseMetadata,\n fallbackText,\n fallbackOutputItems,\n}: {\n agentMemoryStore: MemoryStorage | null;\n didStore: boolean;\n threadContext: ThreadExecutionContext | null;\n result: ResponseExecutionResult | ResponseStreamResult;\n responseId: string;\n createdAt: number;\n model: string;\n instructions: string | undefined;\n previousResponseId?: string;\n conversationId?: string;\n configuredTools: ReturnType<typeof mapMastraToolsToResponseTools>;\n responseMetadata: Omit<\n ResponseTurnRecordMetadata,\n 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'\n >;\n fallbackText: string;\n fallbackOutputItems?: (completedState: CompletedResponseState) => ResponseObject['output'];\n}): Promise<FinalizedResponse> {\n const completedState = await resolveCompletedResponseState(result, fallbackText);\n const fallbackItems = fallbackOutputItems?.(completedState);\n const responseMessages = await resolveResponseTurnMessagesForStorage({\n result,\n responseId,\n text: completedState.text,\n threadContext,\n fallbackOutputItems: threadContext ? fallbackItems : undefined,\n });\n const response = buildCompletedResponse({\n responseId,\n outputMessageId: responseId,\n model,\n createdAt,\n completedAt: completedState.completedAt,\n status: completedState.status,\n text: completedState.text,\n usage: completedState.usage,\n instructions,\n textConfig: responseMetadata.text,\n previousResponseId,\n conversationId,\n providerOptions: completedState.providerOptions,\n tools: configuredTools,\n messages: responseMessages,\n fallbackOutputItems: fallbackItems,\n store: didStore,\n });\n\n await storeCompletedResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n responseId,\n metadata: responseMetadata,\n completedState,\n messages: responseMessages,\n outputItems: response.output,\n });\n\n return { completedState, response, responseMessages };\n}\n\n/**\n * Resolves all request-scoped Mastra primitives needed to execute a Responses create\n * call: the owning agent, the memory thread context, the normalized execution input,\n * and the response-turn metadata that may be persisted later.\n */\nasync function prepareCreateResponseRequest({\n body,\n mastra,\n requestContext,\n}: {\n body: CreateResponseBody;\n mastra: Mastra | undefined;\n requestContext: RequestContext;\n}): Promise<PreparedCreateResponseRequest> {\n const executionInput = mapResponseInputToExecutionMessages(body.input) as AgentExecutionInput;\n let previousResponseTurnRecord: ResponseTurnRecord | null = null;\n let resolvedAgent: Agent<any, any, any, any> | null = null;\n\n if (body.previous_response_id) {\n if (body.agent_id) {\n resolvedAgent = await resolveResponseAgent({ mastra, agentId: body.agent_id });\n previousResponseTurnRecord = await findResponseTurnRecord({\n agent: resolvedAgent,\n responseId: body.previous_response_id,\n requestContext,\n });\n\n if (!previousResponseTurnRecord) {\n const owningResponseTurnRecord = await findResponseTurnRecordAcrossAgents({\n mastra,\n responseId: body.previous_response_id,\n requestContext,\n });\n\n if (owningResponseTurnRecord) {\n if (owningResponseTurnRecord.metadata.agentId === body.agent_id) {\n previousResponseTurnRecord = owningResponseTurnRecord;\n } else {\n throw new HTTPException(400, {\n message: `Stored response ${body.previous_response_id} belongs to agent ${owningResponseTurnRecord.metadata.agentId}, not ${body.agent_id}`,\n });\n }\n }\n\n if (!previousResponseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${body.previous_response_id} was not found` });\n }\n }\n } else {\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for agent-backed responses' });\n }\n\n previousResponseTurnRecord = await findResponseTurnRecordAcrossAgents({\n mastra,\n responseId: body.previous_response_id,\n requestContext,\n });\n\n if (!previousResponseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${body.previous_response_id} was not found` });\n }\n }\n }\n\n const agent =\n resolvedAgent ??\n (await resolveResponseAgent({\n mastra,\n agentId: body.agent_id ?? previousResponseTurnRecord?.metadata.agentId,\n }));\n const resolvedModel = await agent.getModel({\n requestContext,\n modelConfig: body.model,\n });\n const responseModel =\n body.model ??\n (() => {\n if (resolvedModel.provider && resolvedModel.modelId) {\n const publicProviderId = resolvedModel.provider.includes('.')\n ? resolvedModel.provider.split('.')[0]!\n : resolvedModel.provider;\n return `${publicProviderId}/${resolvedModel.modelId}`;\n }\n\n if (resolvedModel.modelId) {\n return resolvedModel.modelId;\n }\n\n throw new HTTPException(500, {\n message: 'Responses route could not determine the effective model for this request',\n });\n })();\n const shouldStore = body.store ?? false;\n const needsMemoryStore = shouldStore || Boolean(body.conversation_id) || Boolean(body.previous_response_id);\n const agentMemoryStore = needsMemoryStore\n ? await resolveAgentMemoryStore({\n agent,\n requestContext,\n errorMessage: body.previous_response_id\n ? 'previous_response_id requires the target agent to have memory storage configured'\n : shouldStore\n ? 'Stored responses require the target agent to have memory storage configured'\n : 'conversation_id requires the target agent to have memory storage configured',\n })\n : null;\n const configuredTools = mapMastraToolsToResponseTools(\n (await Promise.resolve(agent.listTools({ requestContext }))) as Record<string, unknown>,\n );\n\n const responseId = createMessageId();\n const createdAt = Math.floor(Date.now() / 1000);\n const threadContext = await resolveThreadExecutionContext({\n agent,\n store: shouldStore,\n conversationId: body.conversation_id,\n previousResponseTurnRecord,\n requestContext,\n });\n\n if (shouldStore && !threadContext) {\n throw new HTTPException(400, {\n message: 'Stored responses require the target agent to have memory configured',\n });\n }\n\n const didStore = shouldStore && Boolean(threadContext);\n\n return {\n agent,\n agentMemoryStore,\n configuredTools,\n createdAt,\n didStore,\n executionInput,\n previousResponseTurnRecord,\n resolvedModel,\n responseId,\n responseModel,\n responseMetadata: {\n agentId: agent.id,\n model: responseModel,\n createdAt,\n instructions: body.instructions,\n text: body.text,\n previousResponseId: previousResponseTurnRecord?.message.id ?? body.previous_response_id,\n tools: configuredTools,\n store: didStore,\n },\n threadContext,\n };\n}\n\n/**\n * Bridges a Mastra agent stream into OpenAI-style Responses SSE events and completes\n * the stored response-turn record when the stream finishes.\n */\nfunction createResponseEventStream({\n agentMemoryStore,\n body,\n configuredTools,\n createdAt,\n didStore,\n previousResponseTurnRecord,\n responseId,\n responseModel,\n responseMetadata,\n streamResult,\n threadContext,\n}: {\n agentMemoryStore: MemoryStorage | null;\n body: CreateResponseBody;\n configuredTools: ReturnType<typeof mapMastraToolsToResponseTools>;\n createdAt: number;\n didStore: boolean;\n previousResponseTurnRecord: ResponseTurnRecord | null;\n responseId: string;\n responseModel: string;\n responseMetadata: Omit<\n ResponseTurnRecordMetadata,\n 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'\n >;\n streamResult: ResponseStreamResult;\n threadContext: ThreadExecutionContext | null;\n}) {\n const createdResponse = buildInProgressResponse({\n responseId,\n model: responseModel,\n createdAt,\n instructions: body.instructions,\n textConfig: body.text,\n previousResponseId: body.previous_response_id,\n conversationId: threadContext?.threadId ?? body.conversation_id,\n tools: configuredTools,\n store: didStore,\n });\n\n return new ReadableStream<Uint8Array>({\n async start(controller) {\n let sequenceNumber = 1;\n const enqueueEvent = (eventName: string, payload: Record<string, unknown>) => {\n controller.enqueue(\n formatSseEvent(eventName, {\n ...payload,\n sequence_number: sequenceNumber++,\n }),\n );\n };\n\n enqueueEvent('response.created', {\n type: 'response.created',\n response: createdResponse,\n });\n enqueueEvent('response.in_progress', {\n type: 'response.in_progress',\n response: createdResponse,\n });\n\n const streamEvents = createResponseStreamEventTranslator(responseId);\n const fullStream = await streamResult.fullStream;\n const reader = fullStream.getReader();\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n\n for (const event of streamEvents.consume(value)) {\n enqueueEvent(event.event, event.payload);\n }\n }\n\n for (const event of streamEvents.flushPendingToolResults()) {\n enqueueEvent(event.event, event.payload);\n }\n\n const { completedState, response } = await finalizeResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n result: streamResult,\n responseId,\n createdAt,\n model: responseModel,\n instructions: body.instructions,\n previousResponseId: previousResponseTurnRecord?.message.id ?? body.previous_response_id,\n conversationId: threadContext?.threadId ?? body.conversation_id,\n configuredTools,\n responseMetadata,\n fallbackText: streamEvents.text,\n fallbackOutputItems: completedState =>\n streamEvents.getOutputItems({\n text: completedState.text,\n status: completedState.status,\n }),\n });\n\n const completedItem = getStreamedMessageOutputItem(response, responseId);\n if (completedItem || completedState.text) {\n for (const event of streamEvents.completeText(\n completedState.text,\n completedItem ?? {\n id: responseId,\n type: 'message' as const,\n role: 'assistant' as const,\n status: 'completed' as const,\n content: [createOutputTextPart(completedState.text)],\n },\n )) {\n enqueueEvent(event.event, event.payload);\n }\n }\n enqueueEvent('response.completed', {\n type: 'response.completed',\n response,\n });\n controller.close();\n } catch (error) {\n controller.error(error);\n } finally {\n reader.releaseLock();\n }\n },\n });\n}\n\nexport const CREATE_RESPONSE_ROUTE = createRoute({\n method: 'POST',\n path: '/v1/responses',\n responseType: 'datastream-response',\n bodySchema: createResponseBodySchema,\n responseSchema: responseObjectSchema,\n summary: 'Create a response',\n description: 'Creates a response through a Mastra-hosted Responses API-compatible route',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_EXECUTE,\n handler: async ({ mastra, requestContext, abortSignal, ...body }) => {\n try {\n const {\n agent,\n agentMemoryStore,\n configuredTools,\n createdAt,\n didStore,\n executionInput,\n previousResponseTurnRecord,\n resolvedModel,\n responseId,\n responseModel,\n responseMetadata,\n threadContext,\n } = await prepareCreateResponseRequest({ body, mastra, requestContext });\n\n if (!body.stream) {\n const result = await executeGenerate({\n agent,\n resolvedModel,\n modelOverride: body.model,\n instructions: body.instructions,\n text: body.text,\n providerOptions: body.providerOptions,\n input: executionInput,\n requestContext,\n abortSignal,\n threadContext,\n });\n\n const { response } = await finalizeResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n result,\n responseId,\n createdAt,\n model: responseModel,\n instructions: body.instructions,\n previousResponseId: previousResponseTurnRecord?.message.id ?? body.previous_response_id,\n conversationId: threadContext?.threadId ?? body.conversation_id,\n configuredTools,\n responseMetadata,\n fallbackText: '',\n });\n\n return jsonResponse(response);\n }\n\n const streamResult = await executeStream({\n agent,\n resolvedModel,\n modelOverride: body.model,\n instructions: body.instructions,\n text: body.text,\n providerOptions: body.providerOptions,\n input: executionInput,\n requestContext,\n abortSignal,\n threadContext,\n });\n\n const stream = createResponseEventStream({\n agentMemoryStore,\n body,\n configuredTools,\n createdAt,\n didStore,\n previousResponseTurnRecord,\n responseId,\n responseModel,\n responseMetadata,\n streamResult,\n threadContext,\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream; charset=utf-8',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n 'X-Accel-Buffering': 'no',\n },\n });\n } catch (error) {\n return handleError(error, 'Error creating response');\n }\n },\n});\n\nexport const GET_RESPONSE_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/responses/:responseId',\n responseType: 'json',\n pathParamSchema: responseIdPathParams,\n responseSchema: responseObjectSchema,\n summary: 'Retrieve a stored response',\n description: 'Returns a previously stored response object',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, responseId }) => {\n try {\n const responseTurnRecord = await findResponseTurnRecordAcrossAgents({ mastra, responseId, requestContext });\n if (!responseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${responseId} was not found` });\n }\n\n return mapResponseTurnRecordToResponse(responseTurnRecord);\n } catch (error) {\n return handleError(error, 'Error retrieving response');\n }\n },\n});\n\nexport const DELETE_RESPONSE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/v1/responses/:responseId',\n responseType: 'json',\n pathParamSchema: responseIdPathParams,\n responseSchema: deleteResponseSchema,\n summary: 'Delete a stored response',\n description: 'Deletes a stored response so it can no longer be retrieved or chained',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_DELETE,\n handler: async ({ mastra, requestContext, responseId }) => {\n try {\n const responseTurnRecord = await findResponseTurnRecordAcrossAgents({ mastra, responseId, requestContext });\n if (!responseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${responseId} was not found` });\n }\n\n await deleteResponseTurnRecord({ responseTurnRecord });\n\n const response: DeleteResponse = {\n id: responseId,\n object: 'response',\n deleted: true,\n };\n\n return response;\n } catch (error) {\n return handleError(error, 'Error deleting response');\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;AAgHA,MAAM,8BAA8B;CAClC,MAAM;CACN,sBAAsB;AACxB;AAEA,SAAS,aAAa,MAAsB,SAAiB,KAAe;CAC1E,OAAO,IAAI,SAAS,KAAK,UAAU,IAAI,GAAG;EACxC;EACA,SAAS,EACP,gBAAgB,mBAClB;CACF,CAAC;AACH;AAEA,SAAS,uBAAuB,MAAkC;CAChE,IAAI,CAAC,MACH;CAGF,QAAQ,KAAK,OAAO,MAApB;EACE,KAAK,eACH,OAAO;GACL,QAAQ;GACR,qBAAqB;EACvB;EACF,KAAK,eACH,OAAO,EACL,QAAQ,KAAK,OAAO,OACtB;EACF,SACE;CACJ;AACF;AAEA,SAAS,6BAA6B,UAA0B,YAAoB;CAClF,OACE,SAAS,OAAO,MACb,SACC,KAAK,SAAS,aAAa,KAAK,OAAO,UAC3C,KAAK;AAET;;;;;;;;AASA,eAAe,8BAA8B,EAC3C,OACA,OACA,gBACA,4BACA,kBAOyC;CACzC,IAAI,kBAAkB,8BAA8B,2BAA2B,OAAO,OAAO,gBAC3F,MAAM,IAAI,cAAc,KAAK,EAC3B,SACE,8GACJ,CAAC;CAGH,IAAI,4BACF,OAAO;EACL,UAAU,2BAA2B,OAAO;EAC5C,YAAY,2BAA2B,OAAO;CAChD;CAGF,MAAM,oBAAoB,qBAAqB,gBAAgB,KAAA,CAAS;CACxE,MAAM,sBAAsB,uBAAuB,gBAAgB,KAAA,CAAS;CAE5E,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,mBAChC,OAAO;CAGT,MAAM,SAAS,MAAM,MAAM,UAAU,EAAE,eAAe,CAAC;CACvD,IAAI,CAAC,QAAQ;EACX,IAAI,gBACF,MAAM,IAAI,cAAc,KAAK,EAC3B,SAAS,sEACX,CAAC;EAGH,OAAO;CACT;CAEA,IAAI,gBAAgB;EAClB,MAAM,iBAAiB,MAAM,OAAO,cAAc,EAAE,UAAU,eAAe,CAAC;EAC9E,IAAI,CAAC,gBACH,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,gBAAgB,eAAe,gBAAgB,CAAC;EAG1F,MAAM,oBAAoB;GACxB,QAAQ,MAAM,kBAAkB;GAChC;GACA,UAAU;GACV,QAAQ;GACR;EACF,CAAC;EACD,OAAO;GACL,UAAU,eAAe;GACzB,YAAY,uBAAuB,eAAe;EACpD;CACF;CAEA,IAAI,CAAC,mBAAmB;EACtB,IAAI,CAAC,OACH,OAAO;EAGT,MAAM,WAAW,WAAW,OAAO,WAAW;EAC9C,MAAM,gBAAgB,MAAM,OAAO,aAAa;GAC9C;GACA,YAAY,uBAAuB;EACrC,CAAC;EAED,OAAO;GACL,UAAU,cAAc;GACxB,YAAY,cAAc;EAC5B;CACF;CAEA,MAAM,WAAW;CACjB,MAAM,iBAAiB,MAAM,OAAO,cAAc,EAAE,SAAS,CAAC;CAC9D,IAAI,gBAAgB;EAClB,MAAM,oBAAoB;GACxB,QAAQ,MAAM,kBAAkB;GAChC;GACA;GACA,QAAQ;GACR;EACF,CAAC;EACD,OAAO;GACL,UAAU,eAAe;GACzB,YAAY,uBAAuB,eAAe;EACpD;CACF;CAEA,IAAI,CAAC,OACH,OAAO;CAGT,MAAM,aAAa,uBAAuB;CAC1C,MAAM,gBAAgB,MAAM,OAAO,aAAa;EAC9C;EACA;CACF,CAAC;CAED,OAAO;EACL,UAAU,cAAc;EACxB,YAAY,cAAc;CAC5B;AACF;AAEA,SAAS,sBAAsB,eAA8C;CAC3E,IAAI,CAAC,eACH;CAGF,OAAO,EACL,QAAQ;EACN,QAAQ,cAAc;EACtB,UAAU,cAAc;CAC1B,EACF;AACF;;;;AAKA,eAAe,qBAAqB,EAClC,QACA,WAIqC;CACrC,IAAI,CAAC,SACH,MAAM,IAAI,cAAc,KAAK,EAC3B,SAAS,yCACX,CAAC;CAGH,IAAI,CAAC,QACH,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,yDAAyD,CAAC;CAGpG,OAAO,mBAAmB;EAAE;EAAQ;CAAQ,CAAC;AAC/C;AAEA,eAAe,wBAAwB,EACrC,OACA,gBACA,gBAKyB;CACzB,MAAM,mBAAmB,MAAM,oBAAoB;EAAE;EAAO;CAAe,CAAC;CAC5E,IAAI,CAAC,kBACH,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,aAAa,CAAC;CAGxD,OAAO;AACT;;;;AAKA,eAAe,gBAAgB,EAC7B,OACA,eACA,eACA,cACA,MACA,iBACA,OACA,gBACA,aACA,iBAYC;CACD,MAAM,kBAAkB,sBAAsB,aAAa;CAC3D,MAAM,mBAAmB,uBAAuB,IAAI;CACpD,MAAM,cAAc,gBAAgB,EAAE,OAAO,cAAc,IAAI,CAAC;CAChE,MAAM,gBAAgB;EACpB;EACA;EACA;EACA,GAAG;EACH;EACA;EACA,GAAI,mBAAmB,CAAC;CAC1B;CAEA,IAAI,cAAc,yBAAyB,MAAM;EAC/C,IAAI,eACF,OAAQ,MAAM,MAAM,eAAe,OAAO;GACxC;GACA;GACA;GACA,GAAG;GACH,QAAQ,kBAAkB;GAC1B;GACA,YAAY,cAAc;GAC1B,UAAU,cAAc;EAC1B,CAAU;EAGZ,OAAQ,MAAM,MAAM,eAAe,OAAO;GACxC;GACA;GACA;GACA,GAAG;GACH,QAAQ,kBAAkB;GAC1B;EACF,CAAU;CACZ;CAEA,OAAQ,MAAM,MAAM,SAAS,OAAO,aAAsB;AAC5D;;;;AAKA,eAAe,cAAc,EAC3B,OACA,eACA,eACA,cACA,MACA,iBACA,OACA,gBACA,aACA,iBAYC;CACD,MAAM,kBAAkB,sBAAsB,aAAa;CAC3D,MAAM,mBAAmB,uBAAuB,IAAI;CACpD,MAAM,cAAc,gBAAgB,EAAE,OAAO,cAAc,IAAI,CAAC;CAChE,MAAM,gBAAgB;EACpB;EACA;EACA;EACA,GAAG;EACH;EACA;EACA,GAAI,mBAAmB,CAAC;CAC1B;CAEA,IAAI,cAAc,yBAAyB,MAAM;EAC/C,IAAI,eACF,OAAQ,MAAM,MAAM,aAAa,OAAO;GACtC;GACA;GACA;GACA,GAAG;GACH,QAAQ,kBAAkB;GAC1B;GACA,YAAY,cAAc;GAC1B,UAAU,cAAc;EAC1B,CAAU;EAGZ,OAAQ,MAAM,MAAM,aAAa,OAAO;GACtC;GACA;GACA;GACA,GAAG;GACH,QAAQ,kBAAkB;GAC1B;EACF,CAAU;CACZ;CAEA,OAAQ,MAAM,MAAM,OAAO,OAAO,aAAsB;AAC1D;AAEA,eAAe,aAAa,QAA4E;CACtG,OAAQ,OAAO,OAAO,cAAc,OAAO,SAAS;AACtD;AAEA,eAAe,wBACb,QAC+B;CAC/B,OAAQ,OAAO,OAAO,oBAAoB,KAAA;AAC5C;AAEA,eAAe,oBACb,QAC6B;CAC7B,OAAQ,MAAM,OAAO,gBAAiB,KAAA;AACxC;AAEA,eAAe,YAAY,QAAyE;CAClG,OAAQ,MAAM,OAAO,QAAS;AAChC;;;;AAKA,eAAe,8BACb,QACA,cACiC;CACjC,MAAM,QAAQ,MAAM,aAAa,MAAM;CAEvC,OAAO;EACL,aAAa,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;EACzC,QAAQ,iBAAiB,MAAM,oBAAoB,MAAM,CAAC;EAC1D,MAAO,MAAM,YAAY,MAAM,KAAM;EACrC;EACA,cAAc,gBAAgB,KAAK;EACnC,iBAAiB,MAAM,wBAAwB,MAAM;CACvD;AACF;;;;AAKA,eAAe,uBAAuB,EACpC,kBACA,UACA,eACA,YACA,UACA,gBACA,UACA,eAUgB;CAChB,IAAI,CAAC,YAAY,CAAC,eAChB;CAGF,MAAM,0BAA0B;EAC9B,aAAa;EACb;EACA,UAAU;GACR,GAAG;GACH,aAAa,eAAe;GAC5B,QAAQ,eAAe;GACvB,OAAO,eAAe;GACtB,iBAAiB,eAAe;GAChC,YAAY,CAAC;GACb;EACF;EACA;EACA;CACF,CAAC;AACH;;;;AAKA,eAAe,iBAAiB,EAC9B,kBACA,UACA,eACA,QACA,YACA,WACA,OACA,cACA,oBACA,gBACA,iBACA,kBACA,cACA,uBAmB6B;CAC7B,MAAM,iBAAiB,MAAM,8BAA8B,QAAQ,YAAY;CAC/E,MAAM,gBAAgB,sBAAsB,cAAc;CAC1D,MAAM,mBAAmB,MAAM,sCAAsC;EACnE;EACA;EACA,MAAM,eAAe;EACrB;EACA,qBAAqB,gBAAgB,gBAAgB,KAAA;CACvD,CAAC;CACD,MAAM,WAAW,uBAAuB;EACtC;EACA,iBAAiB;EACjB;EACA;EACA,aAAa,eAAe;EAC5B,QAAQ,eAAe;EACvB,MAAM,eAAe;EACrB,OAAO,eAAe;EACtB;EACA,YAAY,iBAAiB;EAC7B;EACA;EACA,iBAAiB,eAAe;EAChC,OAAO;EACP,UAAU;EACV,qBAAqB;EACrB,OAAO;CACT,CAAC;CAED,MAAM,uBAAuB;EAC3B;EACA;EACA;EACA;EACA,UAAU;EACV;EACA,UAAU;EACV,aAAa,SAAS;CACxB,CAAC;CAED,OAAO;EAAE;EAAgB;EAAU;CAAiB;AACtD;;;;;;AAOA,eAAe,6BAA6B,EAC1C,MACA,QACA,kBAKyC;CACzC,MAAM,iBAAiB,oCAAoC,KAAK,KAAK;CACrE,IAAI,6BAAwD;CAC5D,IAAI,gBAAkD;CAEtD,IAAI,KAAK,sBAAsB;EAC7B,IAAI,KAAK,UAAU;GACjB,gBAAgB,MAAM,qBAAqB;IAAE;IAAQ,SAAS,KAAK;GAAS,CAAC;GAC7E,6BAA6B,MAAM,uBAAuB;IACxD,OAAO;IACP,YAAY,KAAK;IACjB;GACF,CAAC;GAED,IAAI,CAAC,4BAA4B;IAC/B,MAAM,2BAA2B,MAAM,mCAAmC;KACxE;KACA,YAAY,KAAK;KACjB;IACF,CAAC;IAED,IAAI,0BAA0B;KAC5B,IAAI,yBAAyB,SAAS,YAAY,KAAK,UACrD,6BAA6B;UAE7B,MAAM,IAAI,cAAc,KAAK,EAC3B,SAAS,mBAAmB,KAAK,qBAAqB,oBAAoB,yBAAyB,SAAS,QAAQ,QAAQ,KAAK,WACnI,CAAC;IAEL;IAEA,IAAI,CAAC,4BACH,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,mBAAmB,KAAK,qBAAqB,gBAAgB,CAAC;GAE1G;EACF,OAAO;GACL,IAAI,CAAC,QACH,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,yDAAyD,CAAC;GAGpG,6BAA6B,MAAM,mCAAmC;IACpE;IACA,YAAY,KAAK;IACjB;GACF,CAAC;GAED,IAAI,CAAC,4BACH,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,mBAAmB,KAAK,qBAAqB,gBAAgB,CAAC;EAE1G;CACF;CAEA,MAAM,QACJ,iBACC,MAAM,qBAAqB;EAC1B;EACA,SAAS,KAAK,YAAY,4BAA4B,SAAS;CACjE,CAAC;CACH,MAAM,gBAAgB,MAAM,MAAM,SAAS;EACzC;EACA,aAAa,KAAK;CACpB,CAAC;CACD,MAAM,gBACJ,KAAK,gBACE;EACL,IAAI,cAAc,YAAY,cAAc,SAI1C,OAAO,GAHkB,cAAc,SAAS,SAAS,GAAG,IACxD,cAAc,SAAS,MAAM,GAAG,CAAC,CAAC,KAClC,cAAc,SACS,GAAG,cAAc;EAG9C,IAAI,cAAc,SAChB,OAAO,cAAc;EAGvB,MAAM,IAAI,cAAc,KAAK,EAC3B,SAAS,2EACX,CAAC;CACH,EAAA,CAAG;CACL,MAAM,cAAc,KAAK,SAAS;CAElC,MAAM,mBADmB,eAAe,QAAQ,KAAK,eAAe,KAAK,QAAQ,KAAK,oBAAoB,IAEtG,MAAM,wBAAwB;EAC5B;EACA;EACA,cAAc,KAAK,uBACf,qFACA,cACE,gFACA;CACR,CAAC,IACD;CACJ,MAAM,kBAAkB,8BACrB,MAAM,QAAQ,QAAQ,MAAM,UAAU,EAAE,eAAe,CAAC,CAAC,CAC5D;CAEA,MAAM,aAAa,gBAAgB;CACnC,MAAM,YAAY,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;CAC9C,MAAM,gBAAgB,MAAM,8BAA8B;EACxD;EACA,OAAO;EACP,gBAAgB,KAAK;EACrB;EACA;CACF,CAAC;CAED,IAAI,eAAe,CAAC,eAClB,MAAM,IAAI,cAAc,KAAK,EAC3B,SAAS,sEACX,CAAC;CAGH,MAAM,WAAW,eAAe,QAAQ,aAAa;CAErD,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBAAkB;GAChB,SAAS,MAAM;GACf,OAAO;GACP;GACA,cAAc,KAAK;GACnB,MAAM,KAAK;GACX,oBAAoB,4BAA4B,QAAQ,MAAM,KAAK;GACnE,OAAO;GACP,OAAO;EACT;EACA;CACF;AACF;;;;;AAMA,SAAS,0BAA0B,EACjC,kBACA,MACA,iBACA,WACA,UACA,4BACA,YACA,eACA,kBACA,cACA,iBAgBC;CACD,MAAM,kBAAkB,wBAAwB;EAC9C;EACA,OAAO;EACP;EACA,cAAc,KAAK;EACnB,YAAY,KAAK;EACjB,oBAAoB,KAAK;EACzB,gBAAgB,eAAe,YAAY,KAAK;EAChD,OAAO;EACP,OAAO;CACT,CAAC;CAED,OAAO,IAAI,eAA2B,EACpC,MAAM,MAAM,YAAY;EACtB,IAAI,iBAAiB;EACrB,MAAM,gBAAgB,WAAmB,YAAqC;GAC5E,WAAW,QACT,eAAe,WAAW;IACxB,GAAG;IACH,iBAAiB;GACnB,CAAC,CACH;EACF;EAEA,aAAa,oBAAoB;GAC/B,MAAM;GACN,UAAU;EACZ,CAAC;EACD,aAAa,wBAAwB;GACnC,MAAM;GACN,UAAU;EACZ,CAAC;EAED,MAAM,eAAe,oCAAoC,UAAU;EAEnE,MAAM,UAAS,MADU,aAAa,WAAA,CACZ,UAAU;EAEpC,IAAI;GACF,OAAO,MAAM;IACX,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,KAAK;IAC1C,IAAI,MACF;IAGF,KAAK,MAAM,SAAS,aAAa,QAAQ,KAAK,GAC5C,aAAa,MAAM,OAAO,MAAM,OAAO;GAE3C;GAEA,KAAK,MAAM,SAAS,aAAa,wBAAwB,GACvD,aAAa,MAAM,OAAO,MAAM,OAAO;GAGzC,MAAM,EAAE,gBAAgB,aAAa,MAAM,iBAAiB;IAC1D;IACA;IACA;IACA,QAAQ;IACR;IACA;IACA,OAAO;IACP,cAAc,KAAK;IACnB,oBAAoB,4BAA4B,QAAQ,MAAM,KAAK;IACnE,gBAAgB,eAAe,YAAY,KAAK;IAChD;IACA;IACA,cAAc,aAAa;IAC3B,sBAAqB,mBACnB,aAAa,eAAe;KAC1B,MAAM,eAAe;KACrB,QAAQ,eAAe;IACzB,CAAC;GACL,CAAC;GAED,MAAM,gBAAgB,6BAA6B,UAAU,UAAU;GACvE,IAAI,iBAAiB,eAAe,MAClC,KAAK,MAAM,SAAS,aAAa,aAC/B,eAAe,MACf,iBAAiB;IACf,IAAI;IACJ,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS,CAAC,qBAAqB,eAAe,IAAI,CAAC;GACrD,CACF,GACE,aAAa,MAAM,OAAO,MAAM,OAAO;GAG3C,aAAa,sBAAsB;IACjC,MAAM;IACN;GACF,CAAC;GACD,WAAW,MAAM;EACnB,SAAS,OAAO;GACd,WAAW,MAAM,KAAK;EACxB,UAAU;GACR,OAAO,YAAY;EACrB;CACF,EACF,CAAC;AACH;AAEA,MAAa,wBAAwB,YAAY;CAC/C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,YAAY;CACZ,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,oBAAoB,qBAAqB;CACzC,SAAS,OAAO,EAAE,QAAQ,gBAAgB,aAAa,GAAG,WAAW;EACnE,IAAI;GACF,MAAM,EACJ,OACA,kBACA,iBACA,WACA,UACA,gBACA,4BACA,eACA,YACA,eACA,kBACA,kBACE,MAAM,6BAA6B;IAAE;IAAM;IAAQ;GAAe,CAAC;GAEvE,IAAI,CAAC,KAAK,QAAQ;IAchB,MAAM,EAAE,aAAa,MAAM,iBAAiB;KAC1C;KACA;KACA;KACA,QAAA,MAjBmB,gBAAgB;MACnC;MACA;MACA,eAAe,KAAK;MACpB,cAAc,KAAK;MACnB,MAAM,KAAK;MACX,iBAAiB,KAAK;MACtB,OAAO;MACP;MACA;MACA;KACF,CAAC;KAOC;KACA;KACA,OAAO;KACP,cAAc,KAAK;KACnB,oBAAoB,4BAA4B,QAAQ,MAAM,KAAK;KACnE,gBAAgB,eAAe,YAAY,KAAK;KAChD;KACA;KACA,cAAc;IAChB,CAAC;IAED,OAAO,aAAa,QAAQ;GAC9B;GAeA,MAAM,SAAS,0BAA0B;IACvC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,cAAA,MAvByB,cAAc;KACvC;KACA;KACA,eAAe,KAAK;KACpB,cAAc,KAAK;KACnB,MAAM,KAAK;KACX,iBAAiB,KAAK;KACtB,OAAO;KACP;KACA;KACA;IACF,CAAC;IAaC;GACF,CAAC;GAED,OAAO,IAAI,SAAS,QAAQ,EAC1B,SAAS;IACP,gBAAgB;IAChB,iBAAiB;IACjB,YAAY;IACZ,qBAAqB;GACvB,EACF,CAAC;EACH,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,yBAAyB;EACrD;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,YAAY;CAC5C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,oBAAoB,qBAAqB;CACzC,SAAS,OAAO,EAAE,QAAQ,gBAAgB,iBAAiB;EACzD,IAAI;GACF,MAAM,qBAAqB,MAAM,mCAAmC;IAAE;IAAQ;IAAY;GAAe,CAAC;GAC1G,IAAI,CAAC,oBACH,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,mBAAmB,WAAW,gBAAgB,CAAC;GAGzF,OAAO,gCAAgC,kBAAkB;EAC3D,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,2BAA2B;EACvD;CACF;AACF,CAAC;AAED,MAAa,wBAAwB,YAAY;CAC/C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,oBAAoB,qBAAqB;CACzC,SAAS,OAAO,EAAE,QAAQ,gBAAgB,iBAAiB;EACzD,IAAI;GACF,MAAM,qBAAqB,MAAM,mCAAmC;IAAE;IAAQ;IAAY;GAAe,CAAC;GAC1G,IAAI,CAAC,oBACH,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,mBAAmB,WAAW,gBAAgB,CAAC;GAGzF,MAAM,yBAAyB,EAAE,mBAAmB,CAAC;GAQrD,OAAO;IALL,IAAI;IACJ,QAAQ;IACR,SAAS;GAGG;EAChB,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,yBAAyB;EACrD;CACF;AACF,CAAC"}
@@ -2,8 +2,8 @@ const require_rolldown_runtime = require("./rolldown-runtime-10nMEhjP.cjs");
2
2
  const require_http_exception = require("./http-exception-Co3MbFUf.cjs");
3
3
  const require_route_builder = require("./route-builder-CvARmqnA.cjs");
4
4
  const require_server_handlers_error = require("./server/handlers/error.cjs");
5
- const require_utils = require("./utils-BbYUI6Yn.cjs");
6
- const require_agents = require("./agents-BjdRPzyV.cjs");
5
+ const require_utils = require("./utils-9PRHHTGC.cjs");
6
+ const require_agents = require("./agents-SvkxJW48.cjs");
7
7
  const require_responses = require("./responses-CTiwnWeF.cjs");
8
8
  const require_server_handlers_responses_adapter = require("./server/handlers/responses.adapter.cjs");
9
9
  const require_server_handlers_responses_storage = require("./server/handlers/responses.storage.cjs");
@@ -647,4 +647,4 @@ Object.defineProperty(exports, "responses_exports", {
647
647
  }
648
648
  });
649
649
 
650
- //# sourceMappingURL=responses-4_RCBNJB.cjs.map
650
+ //# sourceMappingURL=responses-CPTdr5VE.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"responses-4_RCBNJB.cjs","names":["HTTPException","getEffectiveThreadId","getEffectiveResourceId","enforceThreadAccess","getAgentFromSystem","getAgentMemoryStore","toResponseStatus","toResponseUsage","persistResponseTurnRecord","resolveResponseTurnMessagesForStorage","buildCompletedResponse","mapResponseInputToExecutionMessages","findResponseTurnRecord","findResponseTurnRecordAcrossAgents","mapMastraToolsToResponseTools","createMessageId","buildInProgressResponse","formatSseEvent","createResponseStreamEventTranslator","createOutputTextPart","createRoute","createResponseBodySchema","responseObjectSchema","MastraFGAPermissions","handleError","responseIdPathParams","mapResponseTurnRecordToResponse","deleteResponseSchema","deleteResponseTurnRecord"],"sources":["../src/server/handlers/responses.ts"],"sourcesContent":["import type { Agent, MastraDBMessage } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { MemoryStorage } from '@mastra/core/storage';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n createResponseBodySchema,\n deleteResponseSchema,\n responseIdPathParams,\n responseObjectSchema,\n} from '../schemas/responses';\nimport type { CreateResponseBody, DeleteResponse, ResponseObject } from '../schemas/responses';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport {\n buildCompletedResponse,\n buildInProgressResponse,\n createResponseStreamEventTranslator,\n createMessageId,\n createOutputTextPart,\n formatSseEvent,\n mapMastraToolsToResponseTools,\n mapResponseInputToExecutionMessages,\n mapResponseTurnRecordToResponse,\n toResponseStatus,\n toResponseUsage,\n} from './responses.adapter';\nimport {\n deleteResponseTurnRecord,\n findResponseTurnRecord,\n findResponseTurnRecordAcrossAgents,\n getAgentMemoryStore,\n persistResponseTurnRecord,\n resolveResponseTurnMessagesForStorage,\n} from './responses.storage';\nimport type {\n ProviderMetadataLike,\n ResponseTurnRecord,\n ResponseTurnRecordMetadata,\n ThreadExecutionContext,\n UsageLike,\n} from './responses.storage';\nimport { enforceThreadAccess, getEffectiveResourceId, getEffectiveThreadId } from './utils';\n\ntype AgentExecutionInput = Parameters<Agent['generate']>[0];\ntype ResolvedAgentModel = Awaited<ReturnType<Agent['getModel']>>;\n\ntype ResponseExecutionResult = {\n text?: string;\n finishReason?: string;\n totalUsage?: UsageLike | Promise<UsageLike>;\n usage?: UsageLike | Promise<UsageLike>;\n providerMetadata?: ProviderMetadataLike | Promise<ProviderMetadataLike>;\n response?: {\n id?: string;\n dbMessages?: MastraDBMessage[];\n };\n};\n\ntype ResponseStreamResult = {\n fullStream: ReadableStream<unknown> | Promise<ReadableStream<unknown>>;\n text: Promise<string> | string;\n finishReason: Promise<string | undefined> | string | undefined;\n totalUsage?: Promise<UsageLike> | UsageLike;\n usage?: Promise<UsageLike> | UsageLike;\n providerMetadata?: Promise<ProviderMetadataLike> | ProviderMetadataLike;\n response?:\n | Promise<{\n id?: string;\n dbMessages?: MastraDBMessage[];\n }>\n | {\n id?: string;\n dbMessages?: MastraDBMessage[];\n };\n};\n\ntype CompletedResponseState = {\n completedAt: number;\n status: ResponseObject['status'];\n text: string;\n usage: UsageLike;\n usageDetails: ResponseObject['usage'];\n providerOptions: ProviderMetadataLike;\n};\n\ntype FinalizedResponse = {\n completedState: CompletedResponseState;\n response: ResponseObject;\n responseMessages: MastraDBMessage[];\n};\n\ntype PreparedCreateResponseRequest = {\n agent: Agent<any, any, any, any>;\n agentMemoryStore: MemoryStorage | null;\n configuredTools: ReturnType<typeof mapMastraToolsToResponseTools>;\n createdAt: number;\n didStore: boolean;\n executionInput: AgentExecutionInput;\n previousResponseTurnRecord: ResponseTurnRecord | null;\n resolvedModel: ResolvedAgentModel;\n responseId: string;\n responseModel: string;\n responseMetadata: Omit<\n ResponseTurnRecordMetadata,\n 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'\n >;\n threadContext: ThreadExecutionContext | null;\n};\n\nconst JSON_OBJECT_RESPONSE_SCHEMA = {\n type: 'object',\n additionalProperties: true,\n} as const;\n\nfunction jsonResponse(data: ResponseObject, status: number = 200): Response {\n return new Response(JSON.stringify(data), {\n status,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n}\n\nfunction createStructuredOutput(text: CreateResponseBody['text']) {\n if (!text) {\n return undefined;\n }\n\n switch (text.format.type) {\n case 'json_object':\n return {\n schema: JSON_OBJECT_RESPONSE_SCHEMA,\n jsonPromptInjection: true,\n };\n case 'json_schema':\n return {\n schema: text.format.schema,\n };\n default:\n return undefined;\n }\n}\n\nfunction getStreamedMessageOutputItem(response: ResponseObject, responseId: string) {\n return (\n response.output.find(\n (item): item is Extract<ResponseObject['output'][number], { type: 'message' }> =>\n item.type === 'message' && item.id === responseId,\n ) ?? null\n );\n}\n\n/**\n * Resolves the memory thread that should back the current response request.\n *\n * If `previous_response_id` is present, the request continues on that stored thread.\n * Otherwise, the route only creates or reuses a thread when the caller asked to store\n * the response and the resolved agent actually has memory configured.\n */\nasync function resolveThreadExecutionContext({\n agent,\n store,\n conversationId,\n previousResponseTurnRecord,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n store: boolean;\n conversationId?: string;\n previousResponseTurnRecord: ResponseTurnRecord | null;\n requestContext: RequestContext;\n}): Promise<ThreadExecutionContext | null> {\n if (conversationId && previousResponseTurnRecord && previousResponseTurnRecord.thread.id !== conversationId) {\n throw new HTTPException(400, {\n message:\n 'conversation_id and previous_response_id must reference the same conversation thread when both are provided',\n });\n }\n\n if (previousResponseTurnRecord) {\n return {\n threadId: previousResponseTurnRecord.thread.id,\n resourceId: previousResponseTurnRecord.thread.resourceId,\n };\n }\n\n const effectiveThreadId = getEffectiveThreadId(requestContext, undefined);\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n\n if (!store && !conversationId && !effectiveThreadId) {\n return null;\n }\n\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n if (conversationId) {\n throw new HTTPException(400, {\n message: 'conversation_id requires the target agent to have memory configured',\n });\n }\n\n return null;\n }\n\n if (conversationId) {\n const existingThread = await memory.getThreadById({ threadId: conversationId });\n if (!existingThread) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n await enforceThreadAccess({\n mastra: agent.getMastraInstance(),\n requestContext,\n threadId: conversationId,\n thread: existingThread,\n effectiveResourceId,\n });\n return {\n threadId: existingThread.id,\n resourceId: effectiveResourceId ?? existingThread.resourceId,\n };\n }\n\n if (!effectiveThreadId) {\n if (!store) {\n return null;\n }\n\n const threadId = globalThis.crypto.randomUUID();\n const createdThread = await memory.createThread({\n threadId,\n resourceId: effectiveResourceId ?? threadId,\n });\n\n return {\n threadId: createdThread.id,\n resourceId: createdThread.resourceId,\n };\n }\n\n const threadId = effectiveThreadId;\n const existingThread = await memory.getThreadById({ threadId });\n if (existingThread) {\n await enforceThreadAccess({\n mastra: agent.getMastraInstance(),\n requestContext,\n threadId,\n thread: existingThread,\n effectiveResourceId,\n });\n return {\n threadId: existingThread.id,\n resourceId: effectiveResourceId ?? existingThread.resourceId,\n };\n }\n\n if (!store) {\n return null;\n }\n\n const resourceId = effectiveResourceId ?? threadId;\n const createdThread = await memory.createThread({\n threadId,\n resourceId,\n });\n\n return {\n threadId: createdThread.id,\n resourceId: createdThread.resourceId,\n };\n}\n\nfunction createExecutionMemory(threadContext: ThreadExecutionContext | null) {\n if (!threadContext) {\n return undefined;\n }\n\n return {\n memory: {\n thread: threadContext.threadId,\n resource: threadContext.resourceId,\n },\n } as const;\n}\n\n/**\n * Resolves the registered Mastra agent that owns the response request.\n */\nasync function resolveResponseAgent({\n mastra,\n agentId,\n}: {\n mastra: Mastra | undefined;\n agentId?: string;\n}): Promise<Agent<any, any, any, any>> {\n if (!agentId) {\n throw new HTTPException(400, {\n message: 'Responses requests require an agent_id',\n });\n }\n\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for agent-backed responses' });\n }\n\n return getAgentFromSystem({ mastra, agentId });\n}\n\nasync function resolveAgentMemoryStore({\n agent,\n requestContext,\n errorMessage,\n}: {\n agent: Agent<any, any, any, any>;\n requestContext: RequestContext;\n errorMessage: string;\n}): Promise<MemoryStorage> {\n const agentMemoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!agentMemoryStore) {\n throw new HTTPException(400, { message: errorMessage });\n }\n\n return agentMemoryStore;\n}\n\n/**\n * Executes a non-streaming Responses API request through the resolved Mastra agent.\n */\nasync function executeGenerate({\n agent,\n resolvedModel,\n modelOverride,\n instructions,\n text,\n providerOptions,\n input,\n requestContext,\n abortSignal,\n threadContext,\n}: {\n agent: Agent;\n resolvedModel: ResolvedAgentModel;\n modelOverride?: string;\n instructions: string | undefined;\n text: CreateResponseBody['text'];\n providerOptions: CreateResponseBody['providerOptions'];\n input: AgentExecutionInput;\n requestContext: RequestContext;\n abortSignal: AbortSignal;\n threadContext: ThreadExecutionContext | null;\n}) {\n const executionMemory = createExecutionMemory(threadContext);\n const structuredOutput = createStructuredOutput(text);\n const modelOption = modelOverride ? { model: modelOverride } : {};\n const commonOptions = {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n structuredOutput,\n providerOptions,\n ...(executionMemory ?? {}),\n };\n\n if (resolvedModel.specificationVersion === 'v1') {\n if (threadContext) {\n return (await agent.generateLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n resourceId: threadContext.resourceId,\n threadId: threadContext.threadId,\n } as never)) as ResponseExecutionResult;\n }\n\n return (await agent.generateLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n } as never)) as ResponseExecutionResult;\n }\n\n return (await agent.generate(input, commonOptions as never)) as ResponseExecutionResult;\n}\n\n/**\n * Executes a streaming Responses API request through the resolved Mastra agent.\n */\nasync function executeStream({\n agent,\n resolvedModel,\n modelOverride,\n instructions,\n text,\n providerOptions,\n input,\n requestContext,\n abortSignal,\n threadContext,\n}: {\n agent: Agent;\n resolvedModel: ResolvedAgentModel;\n modelOverride?: string;\n instructions: string | undefined;\n text: CreateResponseBody['text'];\n providerOptions: CreateResponseBody['providerOptions'];\n input: AgentExecutionInput;\n requestContext: RequestContext;\n abortSignal: AbortSignal;\n threadContext: ThreadExecutionContext | null;\n}) {\n const executionMemory = createExecutionMemory(threadContext);\n const structuredOutput = createStructuredOutput(text);\n const modelOption = modelOverride ? { model: modelOverride } : {};\n const commonOptions = {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n structuredOutput,\n providerOptions,\n ...(executionMemory ?? {}),\n };\n\n if (resolvedModel.specificationVersion === 'v1') {\n if (threadContext) {\n return (await agent.streamLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n resourceId: threadContext.resourceId,\n threadId: threadContext.threadId,\n } as never)) as ResponseStreamResult;\n }\n\n return (await agent.streamLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n } as never)) as ResponseStreamResult;\n }\n\n return (await agent.stream(input, commonOptions as never)) as ResponseStreamResult;\n}\n\nasync function resolveUsage(result: ResponseExecutionResult | ResponseStreamResult): Promise<UsageLike> {\n return (await (result.totalUsage ?? result.usage ?? null)) as UsageLike;\n}\n\nasync function resolveProviderMetadata(\n result: ResponseExecutionResult | ResponseStreamResult,\n): Promise<ProviderMetadataLike> {\n return (await (result.providerMetadata ?? undefined)) as ProviderMetadataLike;\n}\n\nasync function resolveFinishReason(\n result: ResponseExecutionResult | ResponseStreamResult,\n): Promise<string | undefined> {\n return (await result.finishReason) ?? undefined;\n}\n\nasync function resolveText(result: ResponseExecutionResult | ResponseStreamResult): Promise<string> {\n return (await result.text) ?? '';\n}\n\n/**\n * Resolves the final response state shared by streaming and non-streaming flows.\n */\nasync function resolveCompletedResponseState(\n result: ResponseExecutionResult | ResponseStreamResult,\n fallbackText: string,\n): Promise<CompletedResponseState> {\n const usage = await resolveUsage(result);\n\n return {\n completedAt: Math.floor(Date.now() / 1000),\n status: toResponseStatus(await resolveFinishReason(result)),\n text: (await resolveText(result)) || fallbackText,\n usage,\n usageDetails: toResponseUsage(usage),\n providerOptions: await resolveProviderMetadata(result),\n };\n}\n\n/**\n * Stores the completed response when the request opted into memory-backed persistence.\n */\nasync function storeCompletedResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n responseId,\n metadata,\n completedState,\n messages,\n outputItems,\n}: {\n agentMemoryStore: MemoryStorage | null;\n didStore: boolean;\n threadContext: ThreadExecutionContext | null;\n responseId: string;\n metadata: Omit<ResponseTurnRecordMetadata, 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'>;\n completedState: CompletedResponseState;\n messages: MastraDBMessage[];\n outputItems: ResponseObject['output'];\n}): Promise<void> {\n if (!didStore || !threadContext) {\n return;\n }\n\n await persistResponseTurnRecord({\n memoryStore: agentMemoryStore,\n responseId,\n metadata: {\n ...metadata,\n completedAt: completedState.completedAt,\n status: completedState.status,\n usage: completedState.usageDetails,\n providerOptions: completedState.providerOptions,\n messageIds: [],\n outputItems,\n },\n threadContext,\n messages,\n });\n}\n\n/**\n * Resolves the final response object and persists the stored response turn when needed.\n */\nasync function finalizeResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n result,\n responseId,\n createdAt,\n model,\n instructions,\n previousResponseId,\n conversationId,\n configuredTools,\n responseMetadata,\n fallbackText,\n fallbackOutputItems,\n}: {\n agentMemoryStore: MemoryStorage | null;\n didStore: boolean;\n threadContext: ThreadExecutionContext | null;\n result: ResponseExecutionResult | ResponseStreamResult;\n responseId: string;\n createdAt: number;\n model: string;\n instructions: string | undefined;\n previousResponseId?: string;\n conversationId?: string;\n configuredTools: ReturnType<typeof mapMastraToolsToResponseTools>;\n responseMetadata: Omit<\n ResponseTurnRecordMetadata,\n 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'\n >;\n fallbackText: string;\n fallbackOutputItems?: (completedState: CompletedResponseState) => ResponseObject['output'];\n}): Promise<FinalizedResponse> {\n const completedState = await resolveCompletedResponseState(result, fallbackText);\n const fallbackItems = fallbackOutputItems?.(completedState);\n const responseMessages = await resolveResponseTurnMessagesForStorage({\n result,\n responseId,\n text: completedState.text,\n threadContext,\n fallbackOutputItems: threadContext ? fallbackItems : undefined,\n });\n const response = buildCompletedResponse({\n responseId,\n outputMessageId: responseId,\n model,\n createdAt,\n completedAt: completedState.completedAt,\n status: completedState.status,\n text: completedState.text,\n usage: completedState.usage,\n instructions,\n textConfig: responseMetadata.text,\n previousResponseId,\n conversationId,\n providerOptions: completedState.providerOptions,\n tools: configuredTools,\n messages: responseMessages,\n fallbackOutputItems: fallbackItems,\n store: didStore,\n });\n\n await storeCompletedResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n responseId,\n metadata: responseMetadata,\n completedState,\n messages: responseMessages,\n outputItems: response.output,\n });\n\n return { completedState, response, responseMessages };\n}\n\n/**\n * Resolves all request-scoped Mastra primitives needed to execute a Responses create\n * call: the owning agent, the memory thread context, the normalized execution input,\n * and the response-turn metadata that may be persisted later.\n */\nasync function prepareCreateResponseRequest({\n body,\n mastra,\n requestContext,\n}: {\n body: CreateResponseBody;\n mastra: Mastra | undefined;\n requestContext: RequestContext;\n}): Promise<PreparedCreateResponseRequest> {\n const executionInput = mapResponseInputToExecutionMessages(body.input) as AgentExecutionInput;\n let previousResponseTurnRecord: ResponseTurnRecord | null = null;\n let resolvedAgent: Agent<any, any, any, any> | null = null;\n\n if (body.previous_response_id) {\n if (body.agent_id) {\n resolvedAgent = await resolveResponseAgent({ mastra, agentId: body.agent_id });\n previousResponseTurnRecord = await findResponseTurnRecord({\n agent: resolvedAgent,\n responseId: body.previous_response_id,\n requestContext,\n });\n\n if (!previousResponseTurnRecord) {\n const owningResponseTurnRecord = await findResponseTurnRecordAcrossAgents({\n mastra,\n responseId: body.previous_response_id,\n requestContext,\n });\n\n if (owningResponseTurnRecord) {\n if (owningResponseTurnRecord.metadata.agentId === body.agent_id) {\n previousResponseTurnRecord = owningResponseTurnRecord;\n } else {\n throw new HTTPException(400, {\n message: `Stored response ${body.previous_response_id} belongs to agent ${owningResponseTurnRecord.metadata.agentId}, not ${body.agent_id}`,\n });\n }\n }\n\n if (!previousResponseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${body.previous_response_id} was not found` });\n }\n }\n } else {\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for agent-backed responses' });\n }\n\n previousResponseTurnRecord = await findResponseTurnRecordAcrossAgents({\n mastra,\n responseId: body.previous_response_id,\n requestContext,\n });\n\n if (!previousResponseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${body.previous_response_id} was not found` });\n }\n }\n }\n\n const agent =\n resolvedAgent ??\n (await resolveResponseAgent({\n mastra,\n agentId: body.agent_id ?? previousResponseTurnRecord?.metadata.agentId,\n }));\n const resolvedModel = await agent.getModel({\n requestContext,\n modelConfig: body.model,\n });\n const responseModel =\n body.model ??\n (() => {\n if (resolvedModel.provider && resolvedModel.modelId) {\n const publicProviderId = resolvedModel.provider.includes('.')\n ? resolvedModel.provider.split('.')[0]!\n : resolvedModel.provider;\n return `${publicProviderId}/${resolvedModel.modelId}`;\n }\n\n if (resolvedModel.modelId) {\n return resolvedModel.modelId;\n }\n\n throw new HTTPException(500, {\n message: 'Responses route could not determine the effective model for this request',\n });\n })();\n const shouldStore = body.store ?? false;\n const needsMemoryStore = shouldStore || Boolean(body.conversation_id) || Boolean(body.previous_response_id);\n const agentMemoryStore = needsMemoryStore\n ? await resolveAgentMemoryStore({\n agent,\n requestContext,\n errorMessage: body.previous_response_id\n ? 'previous_response_id requires the target agent to have memory storage configured'\n : shouldStore\n ? 'Stored responses require the target agent to have memory storage configured'\n : 'conversation_id requires the target agent to have memory storage configured',\n })\n : null;\n const configuredTools = mapMastraToolsToResponseTools(\n (await Promise.resolve(agent.listTools({ requestContext }))) as Record<string, unknown>,\n );\n\n const responseId = createMessageId();\n const createdAt = Math.floor(Date.now() / 1000);\n const threadContext = await resolveThreadExecutionContext({\n agent,\n store: shouldStore,\n conversationId: body.conversation_id,\n previousResponseTurnRecord,\n requestContext,\n });\n\n if (shouldStore && !threadContext) {\n throw new HTTPException(400, {\n message: 'Stored responses require the target agent to have memory configured',\n });\n }\n\n const didStore = shouldStore && Boolean(threadContext);\n\n return {\n agent,\n agentMemoryStore,\n configuredTools,\n createdAt,\n didStore,\n executionInput,\n previousResponseTurnRecord,\n resolvedModel,\n responseId,\n responseModel,\n responseMetadata: {\n agentId: agent.id,\n model: responseModel,\n createdAt,\n instructions: body.instructions,\n text: body.text,\n previousResponseId: previousResponseTurnRecord?.message.id ?? body.previous_response_id,\n tools: configuredTools,\n store: didStore,\n },\n threadContext,\n };\n}\n\n/**\n * Bridges a Mastra agent stream into OpenAI-style Responses SSE events and completes\n * the stored response-turn record when the stream finishes.\n */\nfunction createResponseEventStream({\n agentMemoryStore,\n body,\n configuredTools,\n createdAt,\n didStore,\n previousResponseTurnRecord,\n responseId,\n responseModel,\n responseMetadata,\n streamResult,\n threadContext,\n}: {\n agentMemoryStore: MemoryStorage | null;\n body: CreateResponseBody;\n configuredTools: ReturnType<typeof mapMastraToolsToResponseTools>;\n createdAt: number;\n didStore: boolean;\n previousResponseTurnRecord: ResponseTurnRecord | null;\n responseId: string;\n responseModel: string;\n responseMetadata: Omit<\n ResponseTurnRecordMetadata,\n 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'\n >;\n streamResult: ResponseStreamResult;\n threadContext: ThreadExecutionContext | null;\n}) {\n const createdResponse = buildInProgressResponse({\n responseId,\n model: responseModel,\n createdAt,\n instructions: body.instructions,\n textConfig: body.text,\n previousResponseId: body.previous_response_id,\n conversationId: threadContext?.threadId ?? body.conversation_id,\n tools: configuredTools,\n store: didStore,\n });\n\n return new ReadableStream<Uint8Array>({\n async start(controller) {\n let sequenceNumber = 1;\n const enqueueEvent = (eventName: string, payload: Record<string, unknown>) => {\n controller.enqueue(\n formatSseEvent(eventName, {\n ...payload,\n sequence_number: sequenceNumber++,\n }),\n );\n };\n\n enqueueEvent('response.created', {\n type: 'response.created',\n response: createdResponse,\n });\n enqueueEvent('response.in_progress', {\n type: 'response.in_progress',\n response: createdResponse,\n });\n\n const streamEvents = createResponseStreamEventTranslator(responseId);\n const fullStream = await streamResult.fullStream;\n const reader = fullStream.getReader();\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n\n for (const event of streamEvents.consume(value)) {\n enqueueEvent(event.event, event.payload);\n }\n }\n\n for (const event of streamEvents.flushPendingToolResults()) {\n enqueueEvent(event.event, event.payload);\n }\n\n const { completedState, response } = await finalizeResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n result: streamResult,\n responseId,\n createdAt,\n model: responseModel,\n instructions: body.instructions,\n previousResponseId: previousResponseTurnRecord?.message.id ?? body.previous_response_id,\n conversationId: threadContext?.threadId ?? body.conversation_id,\n configuredTools,\n responseMetadata,\n fallbackText: streamEvents.text,\n fallbackOutputItems: completedState =>\n streamEvents.getOutputItems({\n text: completedState.text,\n status: completedState.status,\n }),\n });\n\n const completedItem = getStreamedMessageOutputItem(response, responseId);\n if (completedItem || completedState.text) {\n for (const event of streamEvents.completeText(\n completedState.text,\n completedItem ?? {\n id: responseId,\n type: 'message' as const,\n role: 'assistant' as const,\n status: 'completed' as const,\n content: [createOutputTextPart(completedState.text)],\n },\n )) {\n enqueueEvent(event.event, event.payload);\n }\n }\n enqueueEvent('response.completed', {\n type: 'response.completed',\n response,\n });\n controller.close();\n } catch (error) {\n controller.error(error);\n } finally {\n reader.releaseLock();\n }\n },\n });\n}\n\nexport const CREATE_RESPONSE_ROUTE = createRoute({\n method: 'POST',\n path: '/v1/responses',\n responseType: 'datastream-response',\n bodySchema: createResponseBodySchema,\n responseSchema: responseObjectSchema,\n summary: 'Create a response',\n description: 'Creates a response through a Mastra-hosted Responses API-compatible route',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_EXECUTE,\n handler: async ({ mastra, requestContext, abortSignal, ...body }) => {\n try {\n const {\n agent,\n agentMemoryStore,\n configuredTools,\n createdAt,\n didStore,\n executionInput,\n previousResponseTurnRecord,\n resolvedModel,\n responseId,\n responseModel,\n responseMetadata,\n threadContext,\n } = await prepareCreateResponseRequest({ body, mastra, requestContext });\n\n if (!body.stream) {\n const result = await executeGenerate({\n agent,\n resolvedModel,\n modelOverride: body.model,\n instructions: body.instructions,\n text: body.text,\n providerOptions: body.providerOptions,\n input: executionInput,\n requestContext,\n abortSignal,\n threadContext,\n });\n\n const { response } = await finalizeResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n result,\n responseId,\n createdAt,\n model: responseModel,\n instructions: body.instructions,\n previousResponseId: previousResponseTurnRecord?.message.id ?? body.previous_response_id,\n conversationId: threadContext?.threadId ?? body.conversation_id,\n configuredTools,\n responseMetadata,\n fallbackText: '',\n });\n\n return jsonResponse(response);\n }\n\n const streamResult = await executeStream({\n agent,\n resolvedModel,\n modelOverride: body.model,\n instructions: body.instructions,\n text: body.text,\n providerOptions: body.providerOptions,\n input: executionInput,\n requestContext,\n abortSignal,\n threadContext,\n });\n\n const stream = createResponseEventStream({\n agentMemoryStore,\n body,\n configuredTools,\n createdAt,\n didStore,\n previousResponseTurnRecord,\n responseId,\n responseModel,\n responseMetadata,\n streamResult,\n threadContext,\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream; charset=utf-8',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n 'X-Accel-Buffering': 'no',\n },\n });\n } catch (error) {\n return handleError(error, 'Error creating response');\n }\n },\n});\n\nexport const GET_RESPONSE_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/responses/:responseId',\n responseType: 'json',\n pathParamSchema: responseIdPathParams,\n responseSchema: responseObjectSchema,\n summary: 'Retrieve a stored response',\n description: 'Returns a previously stored response object',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, responseId }) => {\n try {\n const responseTurnRecord = await findResponseTurnRecordAcrossAgents({ mastra, responseId, requestContext });\n if (!responseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${responseId} was not found` });\n }\n\n return mapResponseTurnRecordToResponse(responseTurnRecord);\n } catch (error) {\n return handleError(error, 'Error retrieving response');\n }\n },\n});\n\nexport const DELETE_RESPONSE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/v1/responses/:responseId',\n responseType: 'json',\n pathParamSchema: responseIdPathParams,\n responseSchema: deleteResponseSchema,\n summary: 'Delete a stored response',\n description: 'Deletes a stored response so it can no longer be retrieved or chained',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_DELETE,\n handler: async ({ mastra, requestContext, responseId }) => {\n try {\n const responseTurnRecord = await findResponseTurnRecordAcrossAgents({ mastra, responseId, requestContext });\n if (!responseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${responseId} was not found` });\n }\n\n await deleteResponseTurnRecord({ responseTurnRecord });\n\n const response: DeleteResponse = {\n id: responseId,\n object: 'response',\n deleted: true,\n };\n\n return response;\n } catch (error) {\n return handleError(error, 'Error deleting response');\n }\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"responses-CPTdr5VE.cjs","names":["HTTPException","getEffectiveThreadId","getEffectiveResourceId","enforceThreadAccess","getAgentFromSystem","getAgentMemoryStore","toResponseStatus","toResponseUsage","persistResponseTurnRecord","resolveResponseTurnMessagesForStorage","buildCompletedResponse","mapResponseInputToExecutionMessages","findResponseTurnRecord","findResponseTurnRecordAcrossAgents","mapMastraToolsToResponseTools","createMessageId","buildInProgressResponse","formatSseEvent","createResponseStreamEventTranslator","createOutputTextPart","createRoute","createResponseBodySchema","responseObjectSchema","MastraFGAPermissions","handleError","responseIdPathParams","mapResponseTurnRecordToResponse","deleteResponseSchema","deleteResponseTurnRecord"],"sources":["../src/server/handlers/responses.ts"],"sourcesContent":["import type { Agent, MastraDBMessage } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { MemoryStorage } from '@mastra/core/storage';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n createResponseBodySchema,\n deleteResponseSchema,\n responseIdPathParams,\n responseObjectSchema,\n} from '../schemas/responses';\nimport type { CreateResponseBody, DeleteResponse, ResponseObject } from '../schemas/responses';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport {\n buildCompletedResponse,\n buildInProgressResponse,\n createResponseStreamEventTranslator,\n createMessageId,\n createOutputTextPart,\n formatSseEvent,\n mapMastraToolsToResponseTools,\n mapResponseInputToExecutionMessages,\n mapResponseTurnRecordToResponse,\n toResponseStatus,\n toResponseUsage,\n} from './responses.adapter';\nimport {\n deleteResponseTurnRecord,\n findResponseTurnRecord,\n findResponseTurnRecordAcrossAgents,\n getAgentMemoryStore,\n persistResponseTurnRecord,\n resolveResponseTurnMessagesForStorage,\n} from './responses.storage';\nimport type {\n ProviderMetadataLike,\n ResponseTurnRecord,\n ResponseTurnRecordMetadata,\n ThreadExecutionContext,\n UsageLike,\n} from './responses.storage';\nimport { enforceThreadAccess, getEffectiveResourceId, getEffectiveThreadId } from './utils';\n\ntype AgentExecutionInput = Parameters<Agent['generate']>[0];\ntype ResolvedAgentModel = Awaited<ReturnType<Agent['getModel']>>;\n\ntype ResponseExecutionResult = {\n text?: string;\n finishReason?: string;\n totalUsage?: UsageLike | Promise<UsageLike>;\n usage?: UsageLike | Promise<UsageLike>;\n providerMetadata?: ProviderMetadataLike | Promise<ProviderMetadataLike>;\n response?: {\n id?: string;\n dbMessages?: MastraDBMessage[];\n };\n};\n\ntype ResponseStreamResult = {\n fullStream: ReadableStream<unknown> | Promise<ReadableStream<unknown>>;\n text: Promise<string> | string;\n finishReason: Promise<string | undefined> | string | undefined;\n totalUsage?: Promise<UsageLike> | UsageLike;\n usage?: Promise<UsageLike> | UsageLike;\n providerMetadata?: Promise<ProviderMetadataLike> | ProviderMetadataLike;\n response?:\n | Promise<{\n id?: string;\n dbMessages?: MastraDBMessage[];\n }>\n | {\n id?: string;\n dbMessages?: MastraDBMessage[];\n };\n};\n\ntype CompletedResponseState = {\n completedAt: number;\n status: ResponseObject['status'];\n text: string;\n usage: UsageLike;\n usageDetails: ResponseObject['usage'];\n providerOptions: ProviderMetadataLike;\n};\n\ntype FinalizedResponse = {\n completedState: CompletedResponseState;\n response: ResponseObject;\n responseMessages: MastraDBMessage[];\n};\n\ntype PreparedCreateResponseRequest = {\n agent: Agent<any, any, any, any>;\n agentMemoryStore: MemoryStorage | null;\n configuredTools: ReturnType<typeof mapMastraToolsToResponseTools>;\n createdAt: number;\n didStore: boolean;\n executionInput: AgentExecutionInput;\n previousResponseTurnRecord: ResponseTurnRecord | null;\n resolvedModel: ResolvedAgentModel;\n responseId: string;\n responseModel: string;\n responseMetadata: Omit<\n ResponseTurnRecordMetadata,\n 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'\n >;\n threadContext: ThreadExecutionContext | null;\n};\n\nconst JSON_OBJECT_RESPONSE_SCHEMA = {\n type: 'object',\n additionalProperties: true,\n} as const;\n\nfunction jsonResponse(data: ResponseObject, status: number = 200): Response {\n return new Response(JSON.stringify(data), {\n status,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n}\n\nfunction createStructuredOutput(text: CreateResponseBody['text']) {\n if (!text) {\n return undefined;\n }\n\n switch (text.format.type) {\n case 'json_object':\n return {\n schema: JSON_OBJECT_RESPONSE_SCHEMA,\n jsonPromptInjection: true,\n };\n case 'json_schema':\n return {\n schema: text.format.schema,\n };\n default:\n return undefined;\n }\n}\n\nfunction getStreamedMessageOutputItem(response: ResponseObject, responseId: string) {\n return (\n response.output.find(\n (item): item is Extract<ResponseObject['output'][number], { type: 'message' }> =>\n item.type === 'message' && item.id === responseId,\n ) ?? null\n );\n}\n\n/**\n * Resolves the memory thread that should back the current response request.\n *\n * If `previous_response_id` is present, the request continues on that stored thread.\n * Otherwise, the route only creates or reuses a thread when the caller asked to store\n * the response and the resolved agent actually has memory configured.\n */\nasync function resolveThreadExecutionContext({\n agent,\n store,\n conversationId,\n previousResponseTurnRecord,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n store: boolean;\n conversationId?: string;\n previousResponseTurnRecord: ResponseTurnRecord | null;\n requestContext: RequestContext;\n}): Promise<ThreadExecutionContext | null> {\n if (conversationId && previousResponseTurnRecord && previousResponseTurnRecord.thread.id !== conversationId) {\n throw new HTTPException(400, {\n message:\n 'conversation_id and previous_response_id must reference the same conversation thread when both are provided',\n });\n }\n\n if (previousResponseTurnRecord) {\n return {\n threadId: previousResponseTurnRecord.thread.id,\n resourceId: previousResponseTurnRecord.thread.resourceId,\n };\n }\n\n const effectiveThreadId = getEffectiveThreadId(requestContext, undefined);\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n\n if (!store && !conversationId && !effectiveThreadId) {\n return null;\n }\n\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n if (conversationId) {\n throw new HTTPException(400, {\n message: 'conversation_id requires the target agent to have memory configured',\n });\n }\n\n return null;\n }\n\n if (conversationId) {\n const existingThread = await memory.getThreadById({ threadId: conversationId });\n if (!existingThread) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n await enforceThreadAccess({\n mastra: agent.getMastraInstance(),\n requestContext,\n threadId: conversationId,\n thread: existingThread,\n effectiveResourceId,\n });\n return {\n threadId: existingThread.id,\n resourceId: effectiveResourceId ?? existingThread.resourceId,\n };\n }\n\n if (!effectiveThreadId) {\n if (!store) {\n return null;\n }\n\n const threadId = globalThis.crypto.randomUUID();\n const createdThread = await memory.createThread({\n threadId,\n resourceId: effectiveResourceId ?? threadId,\n });\n\n return {\n threadId: createdThread.id,\n resourceId: createdThread.resourceId,\n };\n }\n\n const threadId = effectiveThreadId;\n const existingThread = await memory.getThreadById({ threadId });\n if (existingThread) {\n await enforceThreadAccess({\n mastra: agent.getMastraInstance(),\n requestContext,\n threadId,\n thread: existingThread,\n effectiveResourceId,\n });\n return {\n threadId: existingThread.id,\n resourceId: effectiveResourceId ?? existingThread.resourceId,\n };\n }\n\n if (!store) {\n return null;\n }\n\n const resourceId = effectiveResourceId ?? threadId;\n const createdThread = await memory.createThread({\n threadId,\n resourceId,\n });\n\n return {\n threadId: createdThread.id,\n resourceId: createdThread.resourceId,\n };\n}\n\nfunction createExecutionMemory(threadContext: ThreadExecutionContext | null) {\n if (!threadContext) {\n return undefined;\n }\n\n return {\n memory: {\n thread: threadContext.threadId,\n resource: threadContext.resourceId,\n },\n } as const;\n}\n\n/**\n * Resolves the registered Mastra agent that owns the response request.\n */\nasync function resolveResponseAgent({\n mastra,\n agentId,\n}: {\n mastra: Mastra | undefined;\n agentId?: string;\n}): Promise<Agent<any, any, any, any>> {\n if (!agentId) {\n throw new HTTPException(400, {\n message: 'Responses requests require an agent_id',\n });\n }\n\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for agent-backed responses' });\n }\n\n return getAgentFromSystem({ mastra, agentId });\n}\n\nasync function resolveAgentMemoryStore({\n agent,\n requestContext,\n errorMessage,\n}: {\n agent: Agent<any, any, any, any>;\n requestContext: RequestContext;\n errorMessage: string;\n}): Promise<MemoryStorage> {\n const agentMemoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!agentMemoryStore) {\n throw new HTTPException(400, { message: errorMessage });\n }\n\n return agentMemoryStore;\n}\n\n/**\n * Executes a non-streaming Responses API request through the resolved Mastra agent.\n */\nasync function executeGenerate({\n agent,\n resolvedModel,\n modelOverride,\n instructions,\n text,\n providerOptions,\n input,\n requestContext,\n abortSignal,\n threadContext,\n}: {\n agent: Agent;\n resolvedModel: ResolvedAgentModel;\n modelOverride?: string;\n instructions: string | undefined;\n text: CreateResponseBody['text'];\n providerOptions: CreateResponseBody['providerOptions'];\n input: AgentExecutionInput;\n requestContext: RequestContext;\n abortSignal: AbortSignal;\n threadContext: ThreadExecutionContext | null;\n}) {\n const executionMemory = createExecutionMemory(threadContext);\n const structuredOutput = createStructuredOutput(text);\n const modelOption = modelOverride ? { model: modelOverride } : {};\n const commonOptions = {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n structuredOutput,\n providerOptions,\n ...(executionMemory ?? {}),\n };\n\n if (resolvedModel.specificationVersion === 'v1') {\n if (threadContext) {\n return (await agent.generateLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n resourceId: threadContext.resourceId,\n threadId: threadContext.threadId,\n } as never)) as ResponseExecutionResult;\n }\n\n return (await agent.generateLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n } as never)) as ResponseExecutionResult;\n }\n\n return (await agent.generate(input, commonOptions as never)) as ResponseExecutionResult;\n}\n\n/**\n * Executes a streaming Responses API request through the resolved Mastra agent.\n */\nasync function executeStream({\n agent,\n resolvedModel,\n modelOverride,\n instructions,\n text,\n providerOptions,\n input,\n requestContext,\n abortSignal,\n threadContext,\n}: {\n agent: Agent;\n resolvedModel: ResolvedAgentModel;\n modelOverride?: string;\n instructions: string | undefined;\n text: CreateResponseBody['text'];\n providerOptions: CreateResponseBody['providerOptions'];\n input: AgentExecutionInput;\n requestContext: RequestContext;\n abortSignal: AbortSignal;\n threadContext: ThreadExecutionContext | null;\n}) {\n const executionMemory = createExecutionMemory(threadContext);\n const structuredOutput = createStructuredOutput(text);\n const modelOption = modelOverride ? { model: modelOverride } : {};\n const commonOptions = {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n structuredOutput,\n providerOptions,\n ...(executionMemory ?? {}),\n };\n\n if (resolvedModel.specificationVersion === 'v1') {\n if (threadContext) {\n return (await agent.streamLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n resourceId: threadContext.resourceId,\n threadId: threadContext.threadId,\n } as never)) as ResponseStreamResult;\n }\n\n return (await agent.streamLegacy(input, {\n instructions,\n requestContext,\n abortSignal,\n ...modelOption,\n output: structuredOutput?.schema,\n providerOptions,\n } as never)) as ResponseStreamResult;\n }\n\n return (await agent.stream(input, commonOptions as never)) as ResponseStreamResult;\n}\n\nasync function resolveUsage(result: ResponseExecutionResult | ResponseStreamResult): Promise<UsageLike> {\n return (await (result.totalUsage ?? result.usage ?? null)) as UsageLike;\n}\n\nasync function resolveProviderMetadata(\n result: ResponseExecutionResult | ResponseStreamResult,\n): Promise<ProviderMetadataLike> {\n return (await (result.providerMetadata ?? undefined)) as ProviderMetadataLike;\n}\n\nasync function resolveFinishReason(\n result: ResponseExecutionResult | ResponseStreamResult,\n): Promise<string | undefined> {\n return (await result.finishReason) ?? undefined;\n}\n\nasync function resolveText(result: ResponseExecutionResult | ResponseStreamResult): Promise<string> {\n return (await result.text) ?? '';\n}\n\n/**\n * Resolves the final response state shared by streaming and non-streaming flows.\n */\nasync function resolveCompletedResponseState(\n result: ResponseExecutionResult | ResponseStreamResult,\n fallbackText: string,\n): Promise<CompletedResponseState> {\n const usage = await resolveUsage(result);\n\n return {\n completedAt: Math.floor(Date.now() / 1000),\n status: toResponseStatus(await resolveFinishReason(result)),\n text: (await resolveText(result)) || fallbackText,\n usage,\n usageDetails: toResponseUsage(usage),\n providerOptions: await resolveProviderMetadata(result),\n };\n}\n\n/**\n * Stores the completed response when the request opted into memory-backed persistence.\n */\nasync function storeCompletedResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n responseId,\n metadata,\n completedState,\n messages,\n outputItems,\n}: {\n agentMemoryStore: MemoryStorage | null;\n didStore: boolean;\n threadContext: ThreadExecutionContext | null;\n responseId: string;\n metadata: Omit<ResponseTurnRecordMetadata, 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'>;\n completedState: CompletedResponseState;\n messages: MastraDBMessage[];\n outputItems: ResponseObject['output'];\n}): Promise<void> {\n if (!didStore || !threadContext) {\n return;\n }\n\n await persistResponseTurnRecord({\n memoryStore: agentMemoryStore,\n responseId,\n metadata: {\n ...metadata,\n completedAt: completedState.completedAt,\n status: completedState.status,\n usage: completedState.usageDetails,\n providerOptions: completedState.providerOptions,\n messageIds: [],\n outputItems,\n },\n threadContext,\n messages,\n });\n}\n\n/**\n * Resolves the final response object and persists the stored response turn when needed.\n */\nasync function finalizeResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n result,\n responseId,\n createdAt,\n model,\n instructions,\n previousResponseId,\n conversationId,\n configuredTools,\n responseMetadata,\n fallbackText,\n fallbackOutputItems,\n}: {\n agentMemoryStore: MemoryStorage | null;\n didStore: boolean;\n threadContext: ThreadExecutionContext | null;\n result: ResponseExecutionResult | ResponseStreamResult;\n responseId: string;\n createdAt: number;\n model: string;\n instructions: string | undefined;\n previousResponseId?: string;\n conversationId?: string;\n configuredTools: ReturnType<typeof mapMastraToolsToResponseTools>;\n responseMetadata: Omit<\n ResponseTurnRecordMetadata,\n 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'\n >;\n fallbackText: string;\n fallbackOutputItems?: (completedState: CompletedResponseState) => ResponseObject['output'];\n}): Promise<FinalizedResponse> {\n const completedState = await resolveCompletedResponseState(result, fallbackText);\n const fallbackItems = fallbackOutputItems?.(completedState);\n const responseMessages = await resolveResponseTurnMessagesForStorage({\n result,\n responseId,\n text: completedState.text,\n threadContext,\n fallbackOutputItems: threadContext ? fallbackItems : undefined,\n });\n const response = buildCompletedResponse({\n responseId,\n outputMessageId: responseId,\n model,\n createdAt,\n completedAt: completedState.completedAt,\n status: completedState.status,\n text: completedState.text,\n usage: completedState.usage,\n instructions,\n textConfig: responseMetadata.text,\n previousResponseId,\n conversationId,\n providerOptions: completedState.providerOptions,\n tools: configuredTools,\n messages: responseMessages,\n fallbackOutputItems: fallbackItems,\n store: didStore,\n });\n\n await storeCompletedResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n responseId,\n metadata: responseMetadata,\n completedState,\n messages: responseMessages,\n outputItems: response.output,\n });\n\n return { completedState, response, responseMessages };\n}\n\n/**\n * Resolves all request-scoped Mastra primitives needed to execute a Responses create\n * call: the owning agent, the memory thread context, the normalized execution input,\n * and the response-turn metadata that may be persisted later.\n */\nasync function prepareCreateResponseRequest({\n body,\n mastra,\n requestContext,\n}: {\n body: CreateResponseBody;\n mastra: Mastra | undefined;\n requestContext: RequestContext;\n}): Promise<PreparedCreateResponseRequest> {\n const executionInput = mapResponseInputToExecutionMessages(body.input) as AgentExecutionInput;\n let previousResponseTurnRecord: ResponseTurnRecord | null = null;\n let resolvedAgent: Agent<any, any, any, any> | null = null;\n\n if (body.previous_response_id) {\n if (body.agent_id) {\n resolvedAgent = await resolveResponseAgent({ mastra, agentId: body.agent_id });\n previousResponseTurnRecord = await findResponseTurnRecord({\n agent: resolvedAgent,\n responseId: body.previous_response_id,\n requestContext,\n });\n\n if (!previousResponseTurnRecord) {\n const owningResponseTurnRecord = await findResponseTurnRecordAcrossAgents({\n mastra,\n responseId: body.previous_response_id,\n requestContext,\n });\n\n if (owningResponseTurnRecord) {\n if (owningResponseTurnRecord.metadata.agentId === body.agent_id) {\n previousResponseTurnRecord = owningResponseTurnRecord;\n } else {\n throw new HTTPException(400, {\n message: `Stored response ${body.previous_response_id} belongs to agent ${owningResponseTurnRecord.metadata.agentId}, not ${body.agent_id}`,\n });\n }\n }\n\n if (!previousResponseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${body.previous_response_id} was not found` });\n }\n }\n } else {\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for agent-backed responses' });\n }\n\n previousResponseTurnRecord = await findResponseTurnRecordAcrossAgents({\n mastra,\n responseId: body.previous_response_id,\n requestContext,\n });\n\n if (!previousResponseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${body.previous_response_id} was not found` });\n }\n }\n }\n\n const agent =\n resolvedAgent ??\n (await resolveResponseAgent({\n mastra,\n agentId: body.agent_id ?? previousResponseTurnRecord?.metadata.agentId,\n }));\n const resolvedModel = await agent.getModel({\n requestContext,\n modelConfig: body.model,\n });\n const responseModel =\n body.model ??\n (() => {\n if (resolvedModel.provider && resolvedModel.modelId) {\n const publicProviderId = resolvedModel.provider.includes('.')\n ? resolvedModel.provider.split('.')[0]!\n : resolvedModel.provider;\n return `${publicProviderId}/${resolvedModel.modelId}`;\n }\n\n if (resolvedModel.modelId) {\n return resolvedModel.modelId;\n }\n\n throw new HTTPException(500, {\n message: 'Responses route could not determine the effective model for this request',\n });\n })();\n const shouldStore = body.store ?? false;\n const needsMemoryStore = shouldStore || Boolean(body.conversation_id) || Boolean(body.previous_response_id);\n const agentMemoryStore = needsMemoryStore\n ? await resolveAgentMemoryStore({\n agent,\n requestContext,\n errorMessage: body.previous_response_id\n ? 'previous_response_id requires the target agent to have memory storage configured'\n : shouldStore\n ? 'Stored responses require the target agent to have memory storage configured'\n : 'conversation_id requires the target agent to have memory storage configured',\n })\n : null;\n const configuredTools = mapMastraToolsToResponseTools(\n (await Promise.resolve(agent.listTools({ requestContext }))) as Record<string, unknown>,\n );\n\n const responseId = createMessageId();\n const createdAt = Math.floor(Date.now() / 1000);\n const threadContext = await resolveThreadExecutionContext({\n agent,\n store: shouldStore,\n conversationId: body.conversation_id,\n previousResponseTurnRecord,\n requestContext,\n });\n\n if (shouldStore && !threadContext) {\n throw new HTTPException(400, {\n message: 'Stored responses require the target agent to have memory configured',\n });\n }\n\n const didStore = shouldStore && Boolean(threadContext);\n\n return {\n agent,\n agentMemoryStore,\n configuredTools,\n createdAt,\n didStore,\n executionInput,\n previousResponseTurnRecord,\n resolvedModel,\n responseId,\n responseModel,\n responseMetadata: {\n agentId: agent.id,\n model: responseModel,\n createdAt,\n instructions: body.instructions,\n text: body.text,\n previousResponseId: previousResponseTurnRecord?.message.id ?? body.previous_response_id,\n tools: configuredTools,\n store: didStore,\n },\n threadContext,\n };\n}\n\n/**\n * Bridges a Mastra agent stream into OpenAI-style Responses SSE events and completes\n * the stored response-turn record when the stream finishes.\n */\nfunction createResponseEventStream({\n agentMemoryStore,\n body,\n configuredTools,\n createdAt,\n didStore,\n previousResponseTurnRecord,\n responseId,\n responseModel,\n responseMetadata,\n streamResult,\n threadContext,\n}: {\n agentMemoryStore: MemoryStorage | null;\n body: CreateResponseBody;\n configuredTools: ReturnType<typeof mapMastraToolsToResponseTools>;\n createdAt: number;\n didStore: boolean;\n previousResponseTurnRecord: ResponseTurnRecord | null;\n responseId: string;\n responseModel: string;\n responseMetadata: Omit<\n ResponseTurnRecordMetadata,\n 'completedAt' | 'status' | 'usage' | 'providerOptions' | 'messageIds'\n >;\n streamResult: ResponseStreamResult;\n threadContext: ThreadExecutionContext | null;\n}) {\n const createdResponse = buildInProgressResponse({\n responseId,\n model: responseModel,\n createdAt,\n instructions: body.instructions,\n textConfig: body.text,\n previousResponseId: body.previous_response_id,\n conversationId: threadContext?.threadId ?? body.conversation_id,\n tools: configuredTools,\n store: didStore,\n });\n\n return new ReadableStream<Uint8Array>({\n async start(controller) {\n let sequenceNumber = 1;\n const enqueueEvent = (eventName: string, payload: Record<string, unknown>) => {\n controller.enqueue(\n formatSseEvent(eventName, {\n ...payload,\n sequence_number: sequenceNumber++,\n }),\n );\n };\n\n enqueueEvent('response.created', {\n type: 'response.created',\n response: createdResponse,\n });\n enqueueEvent('response.in_progress', {\n type: 'response.in_progress',\n response: createdResponse,\n });\n\n const streamEvents = createResponseStreamEventTranslator(responseId);\n const fullStream = await streamResult.fullStream;\n const reader = fullStream.getReader();\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n\n for (const event of streamEvents.consume(value)) {\n enqueueEvent(event.event, event.payload);\n }\n }\n\n for (const event of streamEvents.flushPendingToolResults()) {\n enqueueEvent(event.event, event.payload);\n }\n\n const { completedState, response } = await finalizeResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n result: streamResult,\n responseId,\n createdAt,\n model: responseModel,\n instructions: body.instructions,\n previousResponseId: previousResponseTurnRecord?.message.id ?? body.previous_response_id,\n conversationId: threadContext?.threadId ?? body.conversation_id,\n configuredTools,\n responseMetadata,\n fallbackText: streamEvents.text,\n fallbackOutputItems: completedState =>\n streamEvents.getOutputItems({\n text: completedState.text,\n status: completedState.status,\n }),\n });\n\n const completedItem = getStreamedMessageOutputItem(response, responseId);\n if (completedItem || completedState.text) {\n for (const event of streamEvents.completeText(\n completedState.text,\n completedItem ?? {\n id: responseId,\n type: 'message' as const,\n role: 'assistant' as const,\n status: 'completed' as const,\n content: [createOutputTextPart(completedState.text)],\n },\n )) {\n enqueueEvent(event.event, event.payload);\n }\n }\n enqueueEvent('response.completed', {\n type: 'response.completed',\n response,\n });\n controller.close();\n } catch (error) {\n controller.error(error);\n } finally {\n reader.releaseLock();\n }\n },\n });\n}\n\nexport const CREATE_RESPONSE_ROUTE = createRoute({\n method: 'POST',\n path: '/v1/responses',\n responseType: 'datastream-response',\n bodySchema: createResponseBodySchema,\n responseSchema: responseObjectSchema,\n summary: 'Create a response',\n description: 'Creates a response through a Mastra-hosted Responses API-compatible route',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_EXECUTE,\n handler: async ({ mastra, requestContext, abortSignal, ...body }) => {\n try {\n const {\n agent,\n agentMemoryStore,\n configuredTools,\n createdAt,\n didStore,\n executionInput,\n previousResponseTurnRecord,\n resolvedModel,\n responseId,\n responseModel,\n responseMetadata,\n threadContext,\n } = await prepareCreateResponseRequest({ body, mastra, requestContext });\n\n if (!body.stream) {\n const result = await executeGenerate({\n agent,\n resolvedModel,\n modelOverride: body.model,\n instructions: body.instructions,\n text: body.text,\n providerOptions: body.providerOptions,\n input: executionInput,\n requestContext,\n abortSignal,\n threadContext,\n });\n\n const { response } = await finalizeResponse({\n agentMemoryStore,\n didStore,\n threadContext,\n result,\n responseId,\n createdAt,\n model: responseModel,\n instructions: body.instructions,\n previousResponseId: previousResponseTurnRecord?.message.id ?? body.previous_response_id,\n conversationId: threadContext?.threadId ?? body.conversation_id,\n configuredTools,\n responseMetadata,\n fallbackText: '',\n });\n\n return jsonResponse(response);\n }\n\n const streamResult = await executeStream({\n agent,\n resolvedModel,\n modelOverride: body.model,\n instructions: body.instructions,\n text: body.text,\n providerOptions: body.providerOptions,\n input: executionInput,\n requestContext,\n abortSignal,\n threadContext,\n });\n\n const stream = createResponseEventStream({\n agentMemoryStore,\n body,\n configuredTools,\n createdAt,\n didStore,\n previousResponseTurnRecord,\n responseId,\n responseModel,\n responseMetadata,\n streamResult,\n threadContext,\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream; charset=utf-8',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n 'X-Accel-Buffering': 'no',\n },\n });\n } catch (error) {\n return handleError(error, 'Error creating response');\n }\n },\n});\n\nexport const GET_RESPONSE_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/responses/:responseId',\n responseType: 'json',\n pathParamSchema: responseIdPathParams,\n responseSchema: responseObjectSchema,\n summary: 'Retrieve a stored response',\n description: 'Returns a previously stored response object',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, responseId }) => {\n try {\n const responseTurnRecord = await findResponseTurnRecordAcrossAgents({ mastra, responseId, requestContext });\n if (!responseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${responseId} was not found` });\n }\n\n return mapResponseTurnRecordToResponse(responseTurnRecord);\n } catch (error) {\n return handleError(error, 'Error retrieving response');\n }\n },\n});\n\nexport const DELETE_RESPONSE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/v1/responses/:responseId',\n responseType: 'json',\n pathParamSchema: responseIdPathParams,\n responseSchema: deleteResponseSchema,\n summary: 'Delete a stored response',\n description: 'Deletes a stored response so it can no longer be retrieved or chained',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_DELETE,\n handler: async ({ mastra, requestContext, responseId }) => {\n try {\n const responseTurnRecord = await findResponseTurnRecordAcrossAgents({ mastra, responseId, requestContext });\n if (!responseTurnRecord) {\n throw new HTTPException(404, { message: `Stored response ${responseId} was not found` });\n }\n\n await deleteResponseTurnRecord({ responseTurnRecord });\n\n const response: DeleteResponse = {\n id: responseId,\n object: 'response',\n deleted: true,\n };\n\n return response;\n } catch (error) {\n return handleError(error, 'Error deleting response');\n }\n },\n});\n"],"mappings":"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"}
@@ -1,35 +1,36 @@
1
1
  require("./route-builder-CvARmqnA.cjs");
2
- const require_workflows = require("./workflows-BAOfWBkr.cjs");
3
- const require_agent_builder = require("./agent-builder-DwfHzUnt.cjs");
4
- const require_agents = require("./agents-BjdRPzyV.cjs");
5
- const require_plans = require("./plans-BHQFsFRU.cjs");
6
- const require_a2a = require("./a2a-eUB3oDRN.cjs");
2
+ const require_workflows = require("./workflows-DgSo-eBG.cjs");
3
+ const require_agent_builder = require("./agent-builder-CX7Rgay-.cjs");
4
+ const require_agents = require("./agents-SvkxJW48.cjs");
5
+ const require_plans = require("./plans-Cq23qQ48.cjs");
6
+ const require_a2a = require("./a2a-CIq9dtbC.cjs");
7
7
  const require_server_handlers_auth = require("./server/handlers/auth.cjs");
8
- const require_conversations = require("./conversations-ORTpTqBg.cjs");
9
- const require_logs = require("./logs-DI-h9uHR.cjs");
10
- const require_mcp = require("./mcp-CMw0sq0y.cjs");
11
- const require_memory = require("./memory-Buhi6kZ-.cjs");
12
- const require_observability_new_endpoints = require("./observability-new-endpoints-BrB2CKix.cjs");
13
- const require_observability = require("./observability-DRbDeN1X.cjs");
14
- const require_responses = require("./responses-4_RCBNJB.cjs");
15
- const require_scores = require("./scores-DnEcBe2i.cjs");
16
- const require_tools = require("./tools-Dy_j6URC.cjs");
8
+ const require_conversations = require("./conversations-Ds6aiCMU.cjs");
9
+ const require_logs = require("./logs-BJN3M88A.cjs");
10
+ const require_mcp = require("./mcp-B9BILfJP.cjs");
11
+ const require_memory = require("./memory-Dqod_AK9.cjs");
12
+ const require_observability_new_endpoints = require("./observability-new-endpoints-7KCQHib3.cjs");
13
+ const require_observability = require("./observability-wSQo-vXB.cjs");
14
+ const require_responses = require("./responses-CPTdr5VE.cjs");
15
+ const require_scores = require("./scores-BZ0Iz_0O.cjs");
16
+ const require_tools = require("./tools-DtRHH9Hr.cjs");
17
17
  const require_workspace = require("./workspace-BU6sQpbV.cjs");
18
18
  const require_vector = require("./vector-BZ1bKtwM.cjs");
19
19
  const require_voice = require("./voice-CBbxcsCM.cjs");
20
20
  const require_dynamic_workflows = require("./dynamic-workflows-CpCkqM1g.cjs");
21
21
  const require_server_handlers_agent_controller = require("./server/handlers/agent-controller.cjs");
22
22
  const require_server_handlers_agent_versions = require("./server/handlers/agent-versions.cjs");
23
- const require_background_tasks = require("./background-tasks-Civclnuq.cjs");
24
- const require_builder_registry = require("./builder-registry-CamBJItc.cjs");
25
- const require_channels = require("./channels-EqvuQQbv.cjs");
23
+ const require_background_tasks = require("./background-tasks-Kcx2YtW0.cjs");
24
+ const require_builder_registry = require("./builder-registry-CkPRx_vx.cjs");
25
+ const require_channels = require("./channels-Bfkp5vYI.cjs");
26
26
  const require_server_handlers_datasets = require("./server/handlers/datasets.cjs");
27
- const require_editor_builder = require("./editor-builder-6l27BFzD.cjs");
27
+ const require_editor_builder = require("./editor-builder-CcSeAW18.cjs");
28
+ const require_knowledge = require("./knowledge-qu0om3W7.cjs");
28
29
  const require_server_handlers_mcp_client_versions = require("./server/handlers/mcp-client-versions.cjs");
29
30
  const require_server_handlers_processor_providers = require("./server/handlers/processor-providers.cjs");
30
31
  const require_server_handlers_processors = require("./server/handlers/processors.cjs");
31
32
  const require_server_handlers_prompt_block_versions = require("./server/handlers/prompt-block-versions.cjs");
32
- const require_schedules = require("./schedules-CL4IU7kS.cjs");
33
+ const require_schedules = require("./schedules-D8ShgpY3.cjs");
33
34
  const require_server_handlers_scorer_versions = require("./server/handlers/scorer-versions.cjs");
34
35
  const require_server_handlers_stored_agent_favorites = require("./server/handlers/stored-agent-favorites.cjs");
35
36
  const require_server_handlers_stored_agents = require("./server/handlers/stored-agents.cjs");
@@ -41,7 +42,7 @@ const require_server_handlers_stored_skills = require("./server/handlers/stored-
41
42
  const require_server_handlers_stored_workspaces = require("./server/handlers/stored-workspaces.cjs");
42
43
  const require_server_handlers_system = require("./server/handlers/system.cjs");
43
44
  const require_server_handlers_tool_providers = require("./server/handlers/tool-providers.cjs");
44
- const require_workflow_builder = require("./workflow-builder-CT7JOoW6.cjs");
45
+ const require_workflow_builder = require("./workflow-builder-CQzvZvwC.cjs");
45
46
  // src/server/server-adapter/routes/a2a.ts
46
47
  const A2A_ROUTES = [require_a2a.GET_AGENT_CARD_ROUTE, require_a2a.AGENT_EXECUTION_ROUTE];
47
48
  // src/server/server-adapter/routes/agent-builder.ts
@@ -246,6 +247,16 @@ const EDITOR_BUILDER_ROUTES = [
246
247
  require_builder_registry.BUILDER_REGISTRY_PREVIEW_ROUTE,
247
248
  require_builder_registry.BUILDER_REGISTRY_INSTALL_ROUTE
248
249
  ];
250
+ // src/server/server-adapter/routes/knowledge.ts
251
+ const KNOWLEDGE_ROUTES = [
252
+ require_knowledge.LIST_KNOWLEDGE_ROUTE,
253
+ require_knowledge.GET_KNOWLEDGE_TREE_ROUTE,
254
+ require_knowledge.GET_KNOWLEDGE_PAGE_ROUTE,
255
+ require_knowledge.GET_KNOWLEDGE_GRAPH_ROUTE,
256
+ require_knowledge.SEARCH_KNOWLEDGE_ROUTE,
257
+ require_knowledge.GET_KNOWLEDGE_ACTIVITY_ROUTE,
258
+ require_knowledge.STREAM_KNOWLEDGE_EVENTS_ROUTE
259
+ ];
249
260
  // src/server/server-adapter/routes/legacy.ts
250
261
  /**
251
262
  * Legacy routes that are deprecated but still exist in deployer for backward compatibility.
@@ -579,7 +590,29 @@ const WORKSPACE_ROUTES = [
579
590
  ...require_workspace.WORKSPACE_SKILLS_SH_ROUTES
580
591
  ];
581
592
  // src/server/server-adapter/routes/index.ts
582
- const SERVER_ROUTES = [
593
+ /**
594
+ * Routes the package can serve that are **not** mounted by default. An app opts in
595
+ * by spreading them into `server.apiRoutes`:
596
+ *
597
+ * ```ts
598
+ * import { KNOWLEDGE_ROUTES } from '@mastra/server/server-adapter';
599
+ *
600
+ * new Mastra({
601
+ * server: { apiRoutes: [...KNOWLEDGE_ROUTES] },
602
+ * });
603
+ * ```
604
+ *
605
+ * Knowledge browsing is opt-in because it reads every page as the instance owner,
606
+ * so a host should decide deliberately who may call it (auth, RBAC `knowledge:read`, FGA).
607
+ */
608
+ const OPT_IN_ROUTES = [...KNOWLEDGE_ROUTES];
609
+ const OPT_IN_ROUTE_SET = new Set(OPT_IN_ROUTES);
610
+ /**
611
+ * Every route the package can serve: the routes every server mounts, plus the opt-in
612
+ * ones. Code generators derive from this, so a route an app registers deliberately
613
+ * still has types, permissions and CLI metadata.
614
+ */
615
+ const ALL_SERVER_ROUTES = [
583
616
  ...AGENTS_ROUTES,
584
617
  ...require_server_handlers_auth.AUTH_ROUTES,
585
618
  ...WORKFLOWS_ROUTES,
@@ -592,6 +625,7 @@ const SERVER_ROUTES = [
592
625
  ...OBSERVABILITY_ROUTES,
593
626
  ...LOGS_ROUTES,
594
627
  ...VECTORS_ROUTES,
628
+ ...KNOWLEDGE_ROUTES,
595
629
  ...A2A_ROUTES,
596
630
  ...WORKSPACE_ROUTES,
597
631
  ...LEGACY_ROUTES,
@@ -614,6 +648,29 @@ const SERVER_ROUTES = [
614
648
  ...CHANNELS_ROUTES,
615
649
  ...AGENT_CONTROLLER_ROUTES
616
650
  ];
651
+ /**
652
+ * Routes every Mastra server mounts: everything in {@link ALL_SERVER_ROUTES} except the
653
+ * {@link OPT_IN_ROUTES} an app has to register itself.
654
+ */
655
+ const SERVER_ROUTES = ALL_SERVER_ROUTES.filter((route) => !OPT_IN_ROUTE_SET.has(route));
656
+ Object.defineProperty(exports, "ALL_SERVER_ROUTES", {
657
+ enumerable: true,
658
+ get: function() {
659
+ return ALL_SERVER_ROUTES;
660
+ }
661
+ });
662
+ Object.defineProperty(exports, "KNOWLEDGE_ROUTES", {
663
+ enumerable: true,
664
+ get: function() {
665
+ return KNOWLEDGE_ROUTES;
666
+ }
667
+ });
668
+ Object.defineProperty(exports, "OPT_IN_ROUTES", {
669
+ enumerable: true,
670
+ get: function() {
671
+ return OPT_IN_ROUTES;
672
+ }
673
+ });
617
674
  Object.defineProperty(exports, "SERVER_ROUTES", {
618
675
  enumerable: true,
619
676
  get: function() {
@@ -621,4 +678,4 @@ Object.defineProperty(exports, "SERVER_ROUTES", {
621
678
  }
622
679
  });
623
680
 
624
- //# sourceMappingURL=routes-BqWcvAcz.cjs.map
681
+ //# sourceMappingURL=routes-BCpGBudO.cjs.map