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

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 (274) hide show
  1. package/dist/_types/@internal_core/dist/storage/index.d.ts +3 -1
  2. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/schemas.d.ts +3 -1
  3. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/util.d.ts +2 -0
  4. package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-sdk-v5/dist/index.d.ts +206 -873
  5. package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-v6/dist/index.d.ts +851 -1176
  6. package/dist/{a2a-D5CGFO8W.cjs → a2a-B465DD1u.cjs} +3 -3
  7. package/dist/a2a-B465DD1u.cjs.map +1 -0
  8. package/dist/{a2a-Dg3ylOKc.js → a2a-CHBSYHxu.js} +3 -3
  9. package/dist/{a2a-D5CGFO8W.cjs.map → a2a-CHBSYHxu.js.map} +1 -1
  10. package/dist/{agents-D9vpLghy.cjs → agents-DoNMSCMt.cjs} +4 -2
  11. package/dist/agents-DoNMSCMt.cjs.map +1 -0
  12. package/dist/{agents-DNWDET4U.js → agents-X1E7fW3p.js} +4 -2
  13. package/dist/agents-X1E7fW3p.js.map +1 -0
  14. package/dist/{api-schema-manifest-BiW4tqad.js → api-schema-manifest-CWRIJP-B.js} +9 -3
  15. package/dist/api-schema-manifest-CWRIJP-B.js.map +1 -0
  16. package/dist/{api-schema-manifest-DvcVwlpA.cjs → api-schema-manifest-DUseI2VG.cjs} +9 -3
  17. package/dist/api-schema-manifest-DUseI2VG.cjs.map +1 -0
  18. package/dist/{background-tasks-BbYzMhlD.cjs → background-tasks-CabImVak.cjs} +3 -3
  19. package/dist/{background-tasks-BbYzMhlD.cjs.map → background-tasks-CabImVak.cjs.map} +1 -1
  20. package/dist/{background-tasks-zvlIcbhg.js → background-tasks-oBaLtnCn.js} +3 -3
  21. package/dist/{background-tasks-zvlIcbhg.js.map → background-tasks-oBaLtnCn.js.map} +1 -1
  22. package/dist/{builder-registry-DagCZI4A.cjs → builder-registry-D0frV8lQ.cjs} +3 -3
  23. package/dist/{builder-registry-DagCZI4A.cjs.map → builder-registry-D0frV8lQ.cjs.map} +1 -1
  24. package/dist/{builder-registry-1GwmVVwr.js → builder-registry-DOkLe8ES.js} +3 -3
  25. package/dist/{builder-registry-1GwmVVwr.js.map → builder-registry-DOkLe8ES.js.map} +1 -1
  26. package/dist/{channels-B3aoI-f1.js → channels-BOxgHvzI.js} +2 -2
  27. package/dist/{channels-B3aoI-f1.js.map → channels-BOxgHvzI.js.map} +1 -1
  28. package/dist/{channels-5J7CTFyY.cjs → channels-CBIopVWd.cjs} +2 -2
  29. package/dist/{channels-5J7CTFyY.cjs.map → channels-CBIopVWd.cjs.map} +1 -1
  30. package/dist/{dist-D5O8s1u2.cjs → dist-3FPW9nVj.cjs} +3 -3
  31. package/dist/{dist-D5O8s1u2.cjs.map → dist-3FPW9nVj.cjs.map} +1 -1
  32. package/dist/{dist-CKHUMrWI.cjs → dist-9c3PXXpk.cjs} +36611 -30312
  33. package/dist/dist-9c3PXXpk.cjs.map +1 -0
  34. package/dist/{dist-Bw2XgCSY.cjs → dist-B5OwHWTo.cjs} +3 -3
  35. package/dist/{dist-Bw2XgCSY.cjs.map → dist-B5OwHWTo.cjs.map} +1 -1
  36. package/dist/{dist-C5TZXkhS.js → dist-B_bet8uz.js} +2 -2
  37. package/dist/{dist-C5TZXkhS.js.map → dist-B_bet8uz.js.map} +1 -1
  38. package/dist/{dist-8fx1_bLF.js → dist-BwYL7Ykb.js} +3 -3
  39. package/dist/{dist-8fx1_bLF.js.map → dist-BwYL7Ykb.js.map} +1 -1
  40. package/dist/{dist-_RnqhYfY.js → dist-BxMmGD3n.js} +3 -3
  41. package/dist/{dist-_RnqhYfY.js.map → dist-BxMmGD3n.js.map} +1 -1
  42. package/dist/{dist-D1oSHJhK.js → dist-CBRJax5e.js} +3 -3
  43. package/dist/{dist-D1oSHJhK.js.map → dist-CBRJax5e.js.map} +1 -1
  44. package/dist/{dist-D5mpJHHH.cjs → dist-CQ3FSKT-.cjs} +3 -3
  45. package/dist/{dist-D5mpJHHH.cjs.map → dist-CQ3FSKT-.cjs.map} +1 -1
  46. package/dist/{dist-CgemVduI.cjs → dist-DC1Pewf5.cjs} +4 -4
  47. package/dist/{dist-CgemVduI.cjs.map → dist-DC1Pewf5.cjs.map} +1 -1
  48. package/dist/{dist-hfFDNas-.js → dist-DGCnbhNe.js} +36546 -30247
  49. package/dist/dist-DGCnbhNe.js.map +1 -0
  50. package/dist/{dist-BCTqy9i3.js → dist-DOWsEmo6.js} +4 -4
  51. package/dist/{dist-BCTqy9i3.js.map → dist-DOWsEmo6.js.map} +1 -1
  52. package/dist/{dist-Bz4l8I_x.js → dist-DcoIg_tp.js} +3 -3
  53. package/dist/{dist-Bz4l8I_x.js.map → dist-DcoIg_tp.js.map} +1 -1
  54. package/dist/{dist-UACuV_1t.cjs → dist-UKEksCGq.cjs} +3 -3
  55. package/dist/{dist-UACuV_1t.cjs.map → dist-UKEksCGq.cjs.map} +1 -1
  56. package/dist/{dist-tYOY8gEs.cjs → dist-rDRetJVY.cjs} +2 -2
  57. package/dist/{dist-tYOY8gEs.cjs.map → dist-rDRetJVY.cjs.map} +1 -1
  58. package/dist/docs/SKILL.md +2 -2
  59. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  60. package/dist/docs/references/docs-guides-mcp-authentication-authorization.md +2 -2
  61. package/dist/docs/references/{reference-observability-tracing-trace-query.md → reference-observability-tracing-advanced-queries.md} +486 -158
  62. package/dist/{dynamic-workflows-BL3eD0zL.cjs → dynamic-workflows-DXlkr-jK.cjs} +2 -2
  63. package/dist/{dynamic-workflows-BL3eD0zL.cjs.map → dynamic-workflows-DXlkr-jK.cjs.map} +1 -1
  64. package/dist/{dynamic-workflows-BJfoQMo8.js → dynamic-workflows-Rr_6ac1y.js} +2 -2
  65. package/dist/{dynamic-workflows-BJfoQMo8.js.map → dynamic-workflows-Rr_6ac1y.js.map} +1 -1
  66. package/dist/{editor-builder-DqHKoEDx.cjs → editor-builder-BclcHxN6.cjs} +2 -2
  67. package/dist/{editor-builder-DqHKoEDx.cjs.map → editor-builder-BclcHxN6.cjs.map} +1 -1
  68. package/dist/{editor-builder-CeLVu_FT.js → editor-builder-D16kc1P6.js} +3 -3
  69. package/dist/{editor-builder-CeLVu_FT.js.map → editor-builder-D16kc1P6.js.map} +1 -1
  70. package/dist/{editor-builder-BOmAPurW.cjs → editor-builder-DXHiPX1A.cjs} +3 -3
  71. package/dist/{editor-builder-BOmAPurW.cjs.map → editor-builder-DXHiPX1A.cjs.map} +1 -1
  72. package/dist/{editor-builder-DHqCWGd2.js → editor-builder-s9WqPJgA.js} +2 -2
  73. package/dist/{editor-builder-DHqCWGd2.js.map → editor-builder-s9WqPJgA.js.map} +1 -1
  74. package/dist/{observability-new-endpoints-BKFVVMTS.cjs → observability-new-endpoints-AMp9bnMV.cjs} +78 -17
  75. package/dist/observability-new-endpoints-AMp9bnMV.cjs.map +1 -0
  76. package/dist/{observability-new-endpoints-C5VO7nLK.js → observability-new-endpoints-BU8JYPfh.js} +79 -18
  77. package/dist/observability-new-endpoints-BU8JYPfh.js.map +1 -0
  78. package/dist/{route-builder-2yrD15TL.cjs → route-builder-BNZs643f.cjs} +123 -17
  79. package/dist/{route-builder-2yrD15TL.cjs.map → route-builder-BNZs643f.cjs.map} +1 -1
  80. package/dist/{route-builder-lBil8Cvo.js → route-builder-BfQYtclb.js} +125 -19
  81. package/dist/route-builder-BfQYtclb.js.map +1 -0
  82. package/dist/{routes-D36OQQe5.cjs → routes-DPojsNf1.cjs} +12 -11
  83. package/dist/routes-DPojsNf1.cjs.map +1 -0
  84. package/dist/{routes-gjTcauG8.js → routes-rwufkyUe.js} +13 -12
  85. package/dist/routes-rwufkyUe.js.map +1 -0
  86. package/dist/{schedules-CrAmZ2gu.js → schedules-BQYgaz66.js} +3 -3
  87. package/dist/{schedules-CrAmZ2gu.js.map → schedules-BQYgaz66.js.map} +1 -1
  88. package/dist/{schedules-B0g72u5Y.cjs → schedules-Bj-giFbc.cjs} +3 -3
  89. package/dist/{schedules-B0g72u5Y.cjs.map → schedules-Bj-giFbc.cjs.map} +1 -1
  90. package/dist/schema-Drf2W04o.js +2 -0
  91. package/dist/schema-EQanefYq.cjs +1 -0
  92. package/dist/{schema-e0VHpMt0-BS9KHnuT.cjs → schema-e0VHpMt0-C0452jOk.cjs} +2 -2
  93. package/dist/{schema-e0VHpMt0-BS9KHnuT.cjs.map → schema-e0VHpMt0-C0452jOk.cjs.map} +1 -1
  94. package/dist/{schema-e0VHpMt0-CvPvLS06.js → schema-e0VHpMt0-CVP5Hnxy.js} +2 -2
  95. package/dist/{schema-e0VHpMt0-CvPvLS06.js.map → schema-e0VHpMt0-CVP5Hnxy.js.map} +1 -1
  96. package/dist/server/a2a/tasks.d.ts +2 -2
  97. package/dist/server/a2a/tasks.d.ts.map +1 -1
  98. package/dist/server/handlers/a2a.cjs +1 -1
  99. package/dist/server/handlers/a2a.d.ts +2 -2
  100. package/dist/server/handlers/a2a.d.ts.map +1 -1
  101. package/dist/server/handlers/a2a.js +1 -1
  102. package/dist/server/handlers/agent-builder.cjs +4 -4
  103. package/dist/server/handlers/agent-builder.js +4 -4
  104. package/dist/server/handlers/agent-controller.cjs +259 -156
  105. package/dist/server/handlers/agent-controller.cjs.map +1 -1
  106. package/dist/server/handlers/agent-controller.d.ts +201 -150
  107. package/dist/server/handlers/agent-controller.d.ts.map +1 -1
  108. package/dist/server/handlers/agent-controller.js +259 -157
  109. package/dist/server/handlers/agent-controller.js.map +1 -1
  110. package/dist/server/handlers/agent-versions.cjs +2 -2
  111. package/dist/server/handlers/agent-versions.js +2 -2
  112. package/dist/server/handlers/agents.cjs +47 -27
  113. package/dist/server/handlers/agents.cjs.map +1 -1
  114. package/dist/server/handlers/agents.d.ts +14 -0
  115. package/dist/server/handlers/agents.d.ts.map +1 -1
  116. package/dist/server/handlers/agents.js +47 -27
  117. package/dist/server/handlers/agents.js.map +1 -1
  118. package/dist/server/handlers/auth.cjs +1 -1
  119. package/dist/server/handlers/auth.js +1 -1
  120. package/dist/server/handlers/background-tasks.cjs +1 -1
  121. package/dist/server/handlers/background-tasks.js +1 -1
  122. package/dist/server/handlers/builder-registry.cjs +1 -1
  123. package/dist/server/handlers/builder-registry.js +1 -1
  124. package/dist/server/handlers/channels.cjs +1 -1
  125. package/dist/server/handlers/channels.js +1 -1
  126. package/dist/server/handlers/conversations.cjs +2 -2
  127. package/dist/server/handlers/conversations.js +2 -2
  128. package/dist/server/handlers/datasets.cjs +1 -1
  129. package/dist/server/handlers/datasets.js +1 -1
  130. package/dist/server/handlers/dynamic-workflows.cjs +1 -1
  131. package/dist/server/handlers/dynamic-workflows.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/error.cjs +14 -5
  135. package/dist/server/handlers/error.cjs.map +1 -1
  136. package/dist/server/handlers/error.d.ts.map +1 -1
  137. package/dist/server/handlers/error.js +14 -5
  138. package/dist/server/handlers/error.js.map +1 -1
  139. package/dist/server/handlers/favorites-enrichment.cjs +1 -1
  140. package/dist/server/handlers/favorites-enrichment.js +1 -1
  141. package/dist/server/handlers/logs.cjs +2 -2
  142. package/dist/server/handlers/logs.js +2 -2
  143. package/dist/server/handlers/mcp-client-versions.cjs +2 -2
  144. package/dist/server/handlers/mcp-client-versions.js +2 -2
  145. package/dist/server/handlers/mcp.cjs +1 -1
  146. package/dist/server/handlers/mcp.js +1 -1
  147. package/dist/server/handlers/memory.cjs +2 -2
  148. package/dist/server/handlers/memory.js +2 -2
  149. package/dist/server/handlers/observability-new-endpoints.cjs +1 -1
  150. package/dist/server/handlers/observability-new-endpoints.d.ts +355 -35
  151. package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
  152. package/dist/server/handlers/observability-new-endpoints.js +1 -1
  153. package/dist/server/handlers/observability-shared.cjs +96 -9
  154. package/dist/server/handlers/observability-shared.cjs.map +1 -1
  155. package/dist/server/handlers/observability-shared.d.ts +36 -1
  156. package/dist/server/handlers/observability-shared.d.ts.map +1 -1
  157. package/dist/server/handlers/observability-shared.js +90 -10
  158. package/dist/server/handlers/observability-shared.js.map +1 -1
  159. package/dist/server/handlers/observability.cjs +2 -2
  160. package/dist/server/handlers/observability.js +2 -2
  161. package/dist/server/handlers/plans.cjs +3 -3
  162. package/dist/server/handlers/plans.js +3 -3
  163. package/dist/server/handlers/processor-providers.cjs +1 -1
  164. package/dist/server/handlers/processor-providers.js +1 -1
  165. package/dist/server/handlers/processors.cjs +1 -1
  166. package/dist/server/handlers/processors.js +1 -1
  167. package/dist/server/handlers/prompt-block-versions.cjs +2 -2
  168. package/dist/server/handlers/prompt-block-versions.js +2 -2
  169. package/dist/server/handlers/responses.cjs +2 -2
  170. package/dist/server/handlers/responses.js +2 -2
  171. package/dist/server/handlers/responses.storage.cjs +1 -1
  172. package/dist/server/handlers/responses.storage.js +1 -1
  173. package/dist/server/handlers/schedules.cjs +1 -1
  174. package/dist/server/handlers/schedules.js +1 -1
  175. package/dist/server/handlers/scorer-versions.cjs +2 -2
  176. package/dist/server/handlers/scorer-versions.js +2 -2
  177. package/dist/server/handlers/scores.cjs +1 -1
  178. package/dist/server/handlers/scores.js +1 -1
  179. package/dist/server/handlers/stored-agent-favorites.cjs +3 -3
  180. package/dist/server/handlers/stored-agent-favorites.js +3 -3
  181. package/dist/server/handlers/stored-agents.cjs +3 -3
  182. package/dist/server/handlers/stored-agents.js +3 -3
  183. package/dist/server/handlers/stored-mcp-clients.cjs +2 -2
  184. package/dist/server/handlers/stored-mcp-clients.js +2 -2
  185. package/dist/server/handlers/stored-prompt-blocks.cjs +2 -2
  186. package/dist/server/handlers/stored-prompt-blocks.js +2 -2
  187. package/dist/server/handlers/stored-scorers.cjs +2 -2
  188. package/dist/server/handlers/stored-scorers.js +2 -2
  189. package/dist/server/handlers/stored-skill-favorites.cjs +3 -3
  190. package/dist/server/handlers/stored-skill-favorites.js +3 -3
  191. package/dist/server/handlers/stored-skills.cjs +3 -3
  192. package/dist/server/handlers/stored-skills.js +3 -3
  193. package/dist/server/handlers/stored-workspaces.cjs +2 -2
  194. package/dist/server/handlers/stored-workspaces.js +2 -2
  195. package/dist/server/handlers/system.cjs +3 -3
  196. package/dist/server/handlers/system.d.ts +12 -0
  197. package/dist/server/handlers/system.d.ts.map +1 -1
  198. package/dist/server/handlers/system.js +3 -3
  199. package/dist/server/handlers/tool-providers.cjs +1 -1
  200. package/dist/server/handlers/tool-providers.js +1 -1
  201. package/dist/server/handlers/tools.cjs +6 -6
  202. package/dist/server/handlers/tools.js +6 -6
  203. package/dist/server/handlers/utils.cjs +2 -1
  204. package/dist/server/handlers/utils.d.ts +9 -0
  205. package/dist/server/handlers/utils.d.ts.map +1 -1
  206. package/dist/server/handlers/utils.js +2 -2
  207. package/dist/server/handlers/validate-agent-instructions.cjs +1 -1
  208. package/dist/server/handlers/validate-agent-instructions.js +1 -1
  209. package/dist/server/handlers/vector.cjs +1 -1
  210. package/dist/server/handlers/vector.js +1 -1
  211. package/dist/server/handlers/workflow-builder.cjs +1 -1
  212. package/dist/server/handlers/workflow-builder.d.ts.map +1 -1
  213. package/dist/server/handlers/workflow-builder.js +1 -1
  214. package/dist/server/handlers/workflows.cjs +4 -4
  215. package/dist/server/handlers/workflows.js +4 -4
  216. package/dist/server/handlers/workspace.cjs +1 -1
  217. package/dist/server/handlers/workspace.js +1 -1
  218. package/dist/server/handlers.cjs +2 -2
  219. package/dist/server/handlers.js +2 -2
  220. package/dist/server/schemas/agents.d.ts +5 -0
  221. package/dist/server/schemas/agents.d.ts.map +1 -1
  222. package/dist/server/schemas/index.cjs +3 -3
  223. package/dist/server/schemas/index.js +3 -3
  224. package/dist/server/schemas/system.d.ts +12 -0
  225. package/dist/server/schemas/system.d.ts.map +1 -1
  226. package/dist/server/server-adapter/api-schema-manifest.d.ts +2 -0
  227. package/dist/server/server-adapter/api-schema-manifest.d.ts.map +1 -1
  228. package/dist/server/server-adapter/index.cjs +9 -4
  229. package/dist/server/server-adapter/index.cjs.map +1 -1
  230. package/dist/server/server-adapter/index.d.ts.map +1 -1
  231. package/dist/server/server-adapter/index.js +9 -4
  232. package/dist/server/server-adapter/index.js.map +1 -1
  233. package/dist/server/server-adapter/openapi-utils.d.ts +19 -1
  234. package/dist/server/server-adapter/openapi-utils.d.ts.map +1 -1
  235. package/dist/server/server-adapter/routes/agent-controller.d.ts.map +1 -1
  236. package/dist/server/server-adapter/routes/observability.d.ts +177 -17
  237. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
  238. package/dist/server/server-adapter/routes/system.d.ts +12 -0
  239. package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
  240. package/dist/{system-DY6UweSl.cjs → system-BvpFMIJB.cjs} +7 -1
  241. package/dist/system-BvpFMIJB.cjs.map +1 -0
  242. package/dist/{system-MGpkVA20.js → system-CpzPxRRq.js} +7 -1
  243. package/dist/system-CpzPxRRq.js.map +1 -0
  244. package/dist/{utils-D5DHrO3K.js → utils-BBJlS81s.js} +19 -2
  245. package/dist/{utils-D5DHrO3K.js.map → utils-BBJlS81s.js.map} +1 -1
  246. package/dist/{utils-tmrFs-gf.js → utils-DCAUeb6M.js} +3 -3
  247. package/dist/{utils-tmrFs-gf.js.map → utils-DCAUeb6M.js.map} +1 -1
  248. package/dist/{utils-BZdnPmsW.cjs → utils-DCgeTrq2.cjs} +3 -3
  249. package/dist/{utils-BZdnPmsW.cjs.map → utils-DCgeTrq2.cjs.map} +1 -1
  250. package/dist/{utils-CczRcgHQ.cjs → utils-Du-EpvDs.cjs} +24 -1
  251. package/dist/{utils-CczRcgHQ.cjs.map → utils-Du-EpvDs.cjs.map} +1 -1
  252. package/dist/{workflow-builder-DdSutoga.cjs → workflow-builder-Brj3IArM.cjs} +6 -6
  253. package/dist/workflow-builder-Brj3IArM.cjs.map +1 -0
  254. package/dist/{workflow-builder-DJ0eeJuG.js → workflow-builder-DOa1Vx6w.js} +6 -6
  255. package/dist/workflow-builder-DOa1Vx6w.js.map +1 -0
  256. package/package.json +9 -10
  257. package/dist/a2a-Dg3ylOKc.js.map +0 -1
  258. package/dist/agents-D9vpLghy.cjs.map +0 -1
  259. package/dist/agents-DNWDET4U.js.map +0 -1
  260. package/dist/api-schema-manifest-BiW4tqad.js.map +0 -1
  261. package/dist/api-schema-manifest-DvcVwlpA.cjs.map +0 -1
  262. package/dist/dist-CKHUMrWI.cjs.map +0 -1
  263. package/dist/dist-hfFDNas-.js.map +0 -1
  264. package/dist/observability-new-endpoints-BKFVVMTS.cjs.map +0 -1
  265. package/dist/observability-new-endpoints-C5VO7nLK.js.map +0 -1
  266. package/dist/route-builder-lBil8Cvo.js.map +0 -1
  267. package/dist/routes-D36OQQe5.cjs.map +0 -1
  268. package/dist/routes-gjTcauG8.js.map +0 -1
  269. package/dist/schema-BVcoNfni.cjs +0 -1
  270. package/dist/schema-Xxr5X5Je.js +0 -2
  271. package/dist/system-DY6UweSl.cjs.map +0 -1
  272. package/dist/system-MGpkVA20.js.map +0 -1
  273. package/dist/workflow-builder-DJ0eeJuG.js.map +0 -1
  274. package/dist/workflow-builder-DdSutoga.cjs.map +0 -1
@@ -1,10 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../rolldown-runtime-Bd6kNlEP.cjs");
3
3
  const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
4
- const require_route_builder = require("../../route-builder-2yrD15TL.cjs");
4
+ const require_route_builder = require("../../route-builder-BNZs643f.cjs");
5
5
  const require_constants = require("../../constants-e7aaPCLj.cjs");
6
6
  const require_server_handlers_error = require("./error.cjs");
7
- const require_utils = require("../../utils-CczRcgHQ.cjs");
7
+ const require_utils = require("../../utils-Du-EpvDs.cjs");
8
8
  const require_memory = require("../../memory-CizEIbl1.cjs");
9
9
  let zod_v4 = require("zod/v4");
10
10
  //#region src/server/handlers/agent-controller.ts
@@ -15,8 +15,9 @@ let zod_v4 = require("zod/v4");
15
15
  * `new Mastra({ agentControllers })`) exposes its sessions over HTTP so
16
16
  * non-terminal clients — e.g. a browser-based MastraCode — can create sessions,
17
17
  * send messages, stream events, and drive run-control. Each route resolves its
18
- * target AgentController by id, then operates on a session bound to a
19
- * `resourceId`. Mutating routes use get-or-create resolution so reconnects
18
+ * target AgentController by id, then operates on the session addressed by
19
+ * `sessionId` (which works on the threads and memory of its `resourceId`).
20
+ * Mutating routes use get-or-create resolution so reconnects
20
21
  * resume rather than fork the conversation; read routes only inspect existing
21
22
  * live sessions.
22
23
  */
@@ -63,25 +64,51 @@ function getAgentControllerOrThrow(mastra, controllerId) {
63
64
  if (!controller) throw new require_http_exception.HTTPException(404, { message: `agent controller "${controllerId}" not found` });
64
65
  return controller;
65
66
  }
66
- async function getSession(controller, resourceId, options, requestContext) {
67
+ /**
68
+ * The resource of the session addressed by `sessionId`, without materializing
69
+ * it: the live session's resource, else the resource of the thread sharing the
70
+ * session's id, else `sessionId` itself (the default when a session is created
71
+ * without a `sessionId`).
72
+ */
73
+ async function resolveSessionResourceId(controller, sessionId) {
74
+ const live = await controller.getSession(sessionId);
75
+ if (live) return live.identity.getResourceId();
76
+ return (await controller.queryThreadById({ threadId: sessionId }))?.resourceId ?? sessionId;
77
+ }
78
+ /**
79
+ * Resolve the session addressed by `sessionId` that every route other than create acts on: the live one, or a
80
+ * lost one (e.g. after a restart) rebuilt from storage. When a thread with the session's id exists, the session
81
+ * resumes on that thread under the thread's resource (hosts that use `sessionId === threadId` recover their own
82
+ * thread even when many sessions share one resource); otherwise it resumes on `resourceId = sessionId`, the
83
+ * default `POST /sessions` applies when no `sessionId` is sent. Never starts a conversation, so a write that
84
+ * arrives before the session was started fails instead of landing on a thread nobody reads.
85
+ */
86
+ async function getSession(controller, sessionId, requestContext) {
67
87
  await controller.init();
68
- const { tags, scope, threadId } = options ?? {};
69
- const id = threadId ?? (scope ? `${resourceId}::${scope}` : resourceId);
70
- return controller.createSession({
71
- resourceId,
72
- id,
73
- ownerId: controller.id,
74
- tags,
75
- scope,
76
- threadId,
77
- requestContext
78
- });
88
+ const live = await controller.getSession(sessionId);
89
+ const thread = live ? null : await controller.queryThreadById({ threadId: sessionId });
90
+ try {
91
+ return await controller.createSession({
92
+ id: sessionId,
93
+ resourceId: live?.identity.getResourceId() ?? thread?.resourceId ?? sessionId,
94
+ ownerId: controller.id,
95
+ threadId: thread ? sessionId : void 0,
96
+ resumeOnly: true,
97
+ requestContext
98
+ });
99
+ } catch (error) {
100
+ if (error instanceof Error && error.code === "SESSION_NOT_STARTED") throw new require_http_exception.HTTPException(404, {
101
+ message: `No session "${sessionId}" has been started. Create it with POST /agent-controller/:controllerId/sessions first.`,
102
+ cause: error
103
+ });
104
+ throw error;
105
+ }
79
106
  }
80
- async function getExistingSession(controller, resourceId, scope, requestContext) {
107
+ async function getExistingSession(controller, sessionId, requestContext) {
81
108
  await controller.init();
82
- const session = await controller.getSessionByResource(resourceId, scope, requestContext);
109
+ const session = await controller.getSession(sessionId, requestContext);
83
110
  if (session) return session;
84
- return getSession(controller, resourceId, { scope }, requestContext);
111
+ return getSession(controller, sessionId, requestContext);
85
112
  }
86
113
  /**
87
114
  * Acknowledges a session operation that keeps running after the response is
@@ -118,22 +145,29 @@ function ackBackgroundSessionWork({ work, session, mastra, operation }) {
118
145
  const controllerIdPathParams = zod_v4.z.object({ controllerId: zod_v4.z.string() });
119
146
  const sessionPathParams = zod_v4.z.object({
120
147
  controllerId: zod_v4.z.string(),
121
- resourceId: zod_v4.z.string()
148
+ sessionId: zod_v4.z.string()
122
149
  });
123
150
  /**
124
- * Optional session scope (mirrors `AgentController.createSession`'s `scope`):
125
- * requests with the same resourceId but different scopes address independent
126
- * sessions (e.g. one per git worktree). Sent as a `sessionScope` query param
127
- * on session routes; named to avoid colliding with the model-switch `scope`.
151
+ * Sessions used to be addressed by `resourceId` plus `sessionScope`. The param is gone: reject it
152
+ * rather than drop it, so an older client's scoped session can't quietly merge into another one.
128
153
  */
129
- const sessionScopeQuerySchema = zod_v4.z.object({ sessionScope: zod_v4.z.string().optional() });
130
- const sessionStateQuerySchema = sessionScopeQuerySchema.extend({ threadId: zod_v4.z.string().optional() });
154
+ const removedSessionScope = zod_v4.z.never({ error: "sessionScope was removed; address the session by sessionId" }).optional();
155
+ const sessionQuerySchema = zod_v4.z.object({ sessionScope: removedSessionScope });
156
+ const sessionStateQuerySchema = sessionQuerySchema.extend({ threadId: zod_v4.z.string().optional() });
131
157
  const createSessionBodySchema = zod_v4.z.object({
132
- resourceId: zod_v4.z.string(),
158
+ /**
159
+ * Whose threads and memory the session works on. Optional when `sessionId` is
160
+ * sent: the session then resumes on the resource it already has (the live
161
+ * session's, or the resource of the thread with the session's id), falling
162
+ * back to the session id.
163
+ */
164
+ resourceId: zod_v4.z.string().optional(),
165
+ /** Address of the session. Defaults to `resourceId`. */
166
+ sessionId: zod_v4.z.string().optional(),
167
+ sessionScope: removedSessionScope,
133
168
  tags: zod_v4.z.record(zod_v4.z.string(), zod_v4.z.string()).optional(),
134
- threadId: zod_v4.z.string().optional(),
135
- sessionScope: zod_v4.z.string().optional()
136
- });
169
+ threadId: zod_v4.z.string().optional()
170
+ }).refine((body) => body.resourceId !== void 0 || body.sessionId !== void 0, { message: "resourceId or sessionId is required" });
137
171
  const MAX_FILE_DATA_LENGTH = 14 * 1024 * 1024;
138
172
  const MAX_TOTAL_FILE_DATA_LENGTH = 28 * 1024 * 1024;
139
173
  /**
@@ -161,7 +195,16 @@ const steerBodySchema = zod_v4.z.object({
161
195
  const toolApprovalBodySchema = zod_v4.z.object({
162
196
  toolCallId: zod_v4.z.string(),
163
197
  approved: zod_v4.z.boolean(),
198
+ /**
199
+ * Grants the gated tool's category to the thread that owns the call, then
200
+ * approves — the same "always allow" the in-process TUI offers. Requires
201
+ * `approved: true`.
202
+ */
203
+ alwaysAllowCategory: zod_v4.z.boolean().optional(),
164
204
  requestContext: bodyRequestContextSchema
205
+ }).refine((body) => !body.alwaysAllowCategory || body.approved, {
206
+ message: "alwaysAllowCategory requires approved: true",
207
+ path: ["alwaysAllowCategory"]
165
208
  });
166
209
  const toolSuspensionBodySchema = zod_v4.z.object({
167
210
  toolCallId: zod_v4.z.string().min(1),
@@ -186,7 +229,7 @@ const createThreadBodySchema = zod_v4.z.object({ title: zod_v4.z.string().option
186
229
  const renameThreadBodySchema = zod_v4.z.object({ title: zod_v4.z.string() });
187
230
  const threadPathParams = zod_v4.z.object({
188
231
  controllerId: zod_v4.z.string(),
189
- resourceId: zod_v4.z.string(),
232
+ sessionId: zod_v4.z.string(),
190
233
  threadId: zod_v4.z.string()
191
234
  });
192
235
  const cloneThreadBodySchema = zod_v4.z.object({
@@ -195,14 +238,14 @@ const cloneThreadBodySchema = zod_v4.z.object({
195
238
  });
196
239
  const controllerPaginationNumber = zod_v4.z.coerce.number().int().min(0);
197
240
  const listMessagesQuerySchema = zod_v4.z.object({
241
+ sessionScope: removedSessionScope,
198
242
  /** @deprecated Use page and perPage instead. */
199
243
  limit: controllerPaginationNumber.optional(),
200
244
  page: controllerPaginationNumber.optional(),
201
245
  perPage: zod_v4.z.preprocess((value) => value === "false" ? false : value, zod_v4.z.union([zod_v4.z.literal(false), controllerPaginationNumber])).optional(),
202
246
  orderBy: require_memory.messageOrderBySchema,
203
247
  include: require_memory.includeSchema,
204
- filter: require_memory.filterSchema,
205
- sessionScope: zod_v4.z.string().optional()
248
+ filter: require_memory.filterSchema
206
249
  }).superRefine((value, ctx) => {
207
250
  if (value.limit === void 0) return;
208
251
  for (const field of [
@@ -223,8 +266,8 @@ const listMessagesQuerySchema = zod_v4.z.object({
223
266
  * only their own threads. Malformed JSON is treated as "no filter".
224
267
  */
225
268
  const listThreadsQuerySchema = zod_v4.z.object({
269
+ sessionScope: removedSessionScope,
226
270
  limit: zod_v4.z.coerce.number().optional(),
227
- sessionScope: zod_v4.z.string().optional(),
228
271
  tags: zod_v4.z.preprocess((value) => {
229
272
  if (typeof value !== "string" || value.length === 0) return void 0;
230
273
  try {
@@ -259,10 +302,12 @@ const sendNotificationBodySchema = zod_v4.z.object({
259
302
  const listAgentControllersResponseSchema = zod_v4.z.object({ agentControllers: zod_v4.z.array(zod_v4.z.object({ id: zod_v4.z.string() })) });
260
303
  const createSessionResponseSchema = zod_v4.z.object({
261
304
  controllerId: zod_v4.z.string(),
305
+ sessionId: zod_v4.z.string(),
262
306
  resourceId: zod_v4.z.string(),
263
307
  threadId: zod_v4.z.string().optional()
264
308
  });
265
309
  const ackResponseSchema = zod_v4.z.object({ ok: zod_v4.z.boolean() });
310
+ const transferOwnershipResponseSchema = ackResponseSchema.extend({ ownerId: zod_v4.z.string() });
266
311
  const toolCommandAckResponseSchema = zod_v4.z.object({
267
312
  ok: zod_v4.z.boolean(),
268
313
  reason: zod_v4.z.enum([
@@ -333,6 +378,7 @@ const taskSnapshotSchema = zod_v4.z.object({
333
378
  });
334
379
  const sessionStateResponseSchema = zod_v4.z.object({
335
380
  controllerId: zod_v4.z.string(),
381
+ sessionId: zod_v4.z.string(),
336
382
  resourceId: zod_v4.z.string(),
337
383
  threadId: zod_v4.z.string().optional(),
338
384
  modeId: zod_v4.z.string(),
@@ -449,25 +495,34 @@ const LIST_AGENT_CONTROLLERS_ROUTE = require_route_builder.createRoute({
449
495
  const CREATE_AGENT_CONTROLLER_SESSION_ROUTE = require_route_builder.createRoute({
450
496
  method: "POST",
451
497
  path: "/agent-controller/:controllerId/sessions",
498
+ queryParamSchema: sessionQuerySchema,
452
499
  responseType: "json",
453
500
  pathParamSchema: controllerIdPathParams,
454
501
  bodySchema: createSessionBodySchema,
455
502
  responseSchema: createSessionResponseSchema,
456
503
  summary: "Create or resume a controller session",
457
- description: "Creates a session for the given resourceId, or returns the existing one (get-or-create), so reconnects resume the conversation.",
504
+ description: "Creates the session addressed by `sessionId` on the given resourceId, or returns the existing one (get-or-create), so reconnects resume the conversation. Without a `sessionId` the session is addressed by `resourceId`; without a `resourceId` it resumes on the resource it already has. Every other session route requires a started session and returns 404 until one exists or can be recovered from a stored thread.",
458
505
  tags: ["AgentController"],
459
506
  requiresAuth: true,
460
507
  requiresPermission: "agent-controller:execute",
461
- handler: async ({ mastra, controllerId, resourceId, sessionScope, tags, threadId, requestContext }) => {
508
+ handler: async ({ mastra, controllerId, resourceId, sessionId, tags, threadId, requestContext }) => {
462
509
  try {
510
+ const controller = getAgentControllerOrThrow(mastra, controllerId);
511
+ await controller.init();
512
+ const id = sessionId ?? resourceId;
513
+ const session = await controller.createSession({
514
+ id,
515
+ resourceId: resourceId ?? await resolveSessionResourceId(controller, id),
516
+ ownerId: controller.id,
517
+ tags,
518
+ threadId,
519
+ requestContext
520
+ });
463
521
  return {
464
522
  controllerId,
465
- resourceId,
466
- threadId: (await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, {
467
- tags,
468
- scope: sessionScope,
469
- threadId
470
- }, requestContext)).thread.getId() ?? void 0
523
+ sessionId: session.identity.getId(),
524
+ resourceId: session.identity.getResourceId(),
525
+ threadId: session.thread.getId() ?? void 0
471
526
  };
472
527
  } catch (error) {
473
528
  return require_server_handlers_error.handleError(error, "error creating controller session");
@@ -514,20 +569,20 @@ function toWireEvent(event) {
514
569
  }
515
570
  const STREAM_AGENT_CONTROLLER_SESSION_ROUTE = require_route_builder.createRoute({
516
571
  method: "GET",
517
- path: "/agent-controller/:controllerId/sessions/:resourceId/stream",
572
+ path: "/agent-controller/:controllerId/sessions/:sessionId/stream",
573
+ queryParamSchema: sessionQuerySchema,
518
574
  responseType: "stream",
519
575
  streamFormat: "sse",
520
576
  sseFlushOnConnect: true,
521
577
  pathParamSchema: sessionPathParams,
522
- queryParamSchema: sessionScopeQuerySchema,
523
578
  summary: "Stream controller session events",
524
579
  description: "Subscribes to a session’s event bus and streams events to the client over SSE.",
525
580
  tags: ["AgentController", "Streaming"],
526
581
  requiresAuth: true,
527
582
  requiresPermission: "agent-controller:read",
528
- handler: async ({ mastra, controllerId, resourceId, sessionScope, abortSignal, requestContext }) => {
583
+ handler: async ({ mastra, controllerId, sessionId, abortSignal, requestContext }) => {
529
584
  try {
530
- const session = await getExistingSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, sessionScope, requestContext);
585
+ const session = await getExistingSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext);
531
586
  let cleanedUp = false;
532
587
  let heartbeat;
533
588
  let unsubscribe;
@@ -596,10 +651,10 @@ const STREAM_AGENT_CONTROLLER_SESSION_ROUTE = require_route_builder.createRoute(
596
651
  });
597
652
  const SEND_AGENT_CONTROLLER_MESSAGE_ROUTE = require_route_builder.createRoute({
598
653
  method: "POST",
599
- path: "/agent-controller/:controllerId/sessions/:resourceId/messages",
654
+ path: "/agent-controller/:controllerId/sessions/:sessionId/messages",
655
+ queryParamSchema: sessionQuerySchema,
600
656
  responseType: "json",
601
657
  pathParamSchema: sessionPathParams,
602
- queryParamSchema: sessionScopeQuerySchema,
603
658
  bodySchema: sendMessageBodySchema,
604
659
  responseSchema: ackResponseSchema,
605
660
  summary: "Send a message to a controller session",
@@ -607,9 +662,9 @@ const SEND_AGENT_CONTROLLER_MESSAGE_ROUTE = require_route_builder.createRoute({
607
662
  tags: ["AgentController", "Streaming"],
608
663
  requiresAuth: true,
609
664
  requiresPermission: "agent-controller:execute",
610
- handler: async ({ mastra, controllerId, resourceId, sessionScope, message, files, requestContext }) => {
665
+ handler: async ({ mastra, controllerId, sessionId, message, files, requestContext }) => {
611
666
  try {
612
- const session = await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext);
667
+ const session = await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext);
613
668
  const author = getRequestMessageAuthor(requestContext);
614
669
  ackBackgroundSessionWork({
615
670
  work: session.sendMessage({
@@ -630,19 +685,19 @@ const SEND_AGENT_CONTROLLER_MESSAGE_ROUTE = require_route_builder.createRoute({
630
685
  });
631
686
  const ABORT_AGENT_CONTROLLER_SESSION_ROUTE = require_route_builder.createRoute({
632
687
  method: "POST",
633
- path: "/agent-controller/:controllerId/sessions/:resourceId/abort",
688
+ path: "/agent-controller/:controllerId/sessions/:sessionId/abort",
689
+ queryParamSchema: sessionQuerySchema,
634
690
  responseType: "json",
635
691
  pathParamSchema: sessionPathParams,
636
- queryParamSchema: sessionScopeQuerySchema,
637
692
  responseSchema: ackResponseSchema,
638
693
  summary: "Abort a controller session run",
639
694
  description: "Aborts the in-flight run for the session, if any.",
640
695
  tags: ["AgentController"],
641
696
  requiresAuth: true,
642
697
  requiresPermission: "agent-controller:execute",
643
- handler: async ({ mastra, controllerId, resourceId, sessionScope, requestContext }) => {
698
+ handler: async ({ mastra, controllerId, sessionId, requestContext }) => {
644
699
  try {
645
- (await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext)).abort();
700
+ (await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext)).abort();
646
701
  return { ok: true };
647
702
  } catch (error) {
648
703
  return require_server_handlers_error.handleError(error, "error aborting controller session");
@@ -651,10 +706,10 @@ const ABORT_AGENT_CONTROLLER_SESSION_ROUTE = require_route_builder.createRoute({
651
706
  });
652
707
  const AGENT_CONTROLLER_TOOL_APPROVAL_ROUTE = require_route_builder.createRoute({
653
708
  method: "POST",
654
- path: "/agent-controller/:controllerId/sessions/:resourceId/tool-approval",
709
+ path: "/agent-controller/:controllerId/sessions/:sessionId/tool-approval",
710
+ queryParamSchema: sessionQuerySchema,
655
711
  responseType: "json",
656
712
  pathParamSchema: sessionPathParams,
657
- queryParamSchema: sessionScopeQuerySchema,
658
713
  bodySchema: toolApprovalBodySchema,
659
714
  responseSchema: toolCommandAckResponseSchema,
660
715
  summary: "Respond to a controller tool approval",
@@ -662,13 +717,13 @@ const AGENT_CONTROLLER_TOOL_APPROVAL_ROUTE = require_route_builder.createRoute({
662
717
  tags: ["AgentController"],
663
718
  requiresAuth: true,
664
719
  requiresPermission: "agent-controller:execute",
665
- handler: async ({ mastra, controllerId, resourceId, sessionScope, toolCallId, approved, requestContext }) => {
720
+ handler: async ({ mastra, controllerId, sessionId, toolCallId, approved, alwaysAllowCategory, requestContext }) => {
666
721
  try {
667
- const session = await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext);
722
+ const session = await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext);
668
723
  if ((toolCallId ? session.approval.isArmed({ toolCallId }) : session.approval.isArmed()) || !toolCallId) {
669
724
  const result = session.respondToToolApproval({
670
725
  toolCallId,
671
- decision: approved ? "approve" : "decline",
726
+ decision: !approved ? "decline" : alwaysAllowCategory ? "always_allow_category" : "approve",
672
727
  requestContext
673
728
  });
674
729
  if (!result.accepted) return {
@@ -688,6 +743,7 @@ const AGENT_CONTROLLER_TOOL_APPROVAL_ROUTE = require_route_builder.createRoute({
688
743
  work: session.respondToPersistedToolApproval({
689
744
  toolCallId,
690
745
  approved,
746
+ alwaysAllowCategory,
691
747
  requestContext
692
748
  }).finally(() => session.releaseToolResponse(toolCallId)),
693
749
  session,
@@ -703,10 +759,10 @@ const AGENT_CONTROLLER_TOOL_APPROVAL_ROUTE = require_route_builder.createRoute({
703
759
  });
704
760
  const AGENT_CONTROLLER_TOOL_SUSPENSION_ROUTE = require_route_builder.createRoute({
705
761
  method: "POST",
706
- path: "/agent-controller/:controllerId/sessions/:resourceId/tool-suspension",
762
+ path: "/agent-controller/:controllerId/sessions/:sessionId/tool-suspension",
763
+ queryParamSchema: sessionQuerySchema,
707
764
  responseType: "json",
708
765
  pathParamSchema: sessionPathParams,
709
- queryParamSchema: sessionScopeQuerySchema,
710
766
  bodySchema: toolSuspensionBodySchema,
711
767
  responseSchema: toolCommandAckResponseSchema,
712
768
  summary: "Respond to a suspended controller tool",
@@ -714,9 +770,9 @@ const AGENT_CONTROLLER_TOOL_SUSPENSION_ROUTE = require_route_builder.createRoute
714
770
  tags: ["AgentController"],
715
771
  requiresAuth: true,
716
772
  requiresPermission: "agent-controller:execute",
717
- handler: async ({ mastra, controllerId, resourceId, sessionScope, toolCallId, runId, resumeData, requestContext }) => {
773
+ handler: async ({ mastra, controllerId, sessionId, toolCallId, runId, resumeData, requestContext }) => {
718
774
  try {
719
- const session = await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext);
775
+ const session = await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext);
720
776
  const claim = session.claimToolSuspension(toolCallId, runId);
721
777
  if (!claim.accepted) return {
722
778
  ok: false,
@@ -740,10 +796,10 @@ const AGENT_CONTROLLER_TOOL_SUSPENSION_ROUTE = require_route_builder.createRoute
740
796
  });
741
797
  const STEER_AGENT_CONTROLLER_SESSION_ROUTE = require_route_builder.createRoute({
742
798
  method: "POST",
743
- path: "/agent-controller/:controllerId/sessions/:resourceId/steer",
799
+ path: "/agent-controller/:controllerId/sessions/:sessionId/steer",
800
+ queryParamSchema: sessionQuerySchema,
744
801
  responseType: "json",
745
802
  pathParamSchema: sessionPathParams,
746
- queryParamSchema: sessionScopeQuerySchema,
747
803
  bodySchema: steerBodySchema,
748
804
  responseSchema: ackResponseSchema,
749
805
  summary: "Steer the in-flight run",
@@ -751,9 +807,9 @@ const STEER_AGENT_CONTROLLER_SESSION_ROUTE = require_route_builder.createRoute({
751
807
  tags: ["AgentController"],
752
808
  requiresAuth: true,
753
809
  requiresPermission: "agent-controller:execute",
754
- handler: async ({ mastra, controllerId, resourceId, sessionScope, message, files, requestContext }) => {
810
+ handler: async ({ mastra, controllerId, sessionId, message, files, requestContext }) => {
755
811
  try {
756
- const session = await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext);
812
+ const session = await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext);
757
813
  const author = getRequestMessageAuthor(requestContext);
758
814
  ackBackgroundSessionWork({
759
815
  work: session.steer({
@@ -774,10 +830,10 @@ const STEER_AGENT_CONTROLLER_SESSION_ROUTE = require_route_builder.createRoute({
774
830
  });
775
831
  const SWITCH_AGENT_CONTROLLER_MODE_ROUTE = require_route_builder.createRoute({
776
832
  method: "POST",
777
- path: "/agent-controller/:controllerId/sessions/:resourceId/mode",
833
+ path: "/agent-controller/:controllerId/sessions/:sessionId/mode",
834
+ queryParamSchema: sessionQuerySchema,
778
835
  responseType: "json",
779
836
  pathParamSchema: sessionPathParams,
780
- queryParamSchema: sessionScopeQuerySchema,
781
837
  bodySchema: switchModeBodySchema,
782
838
  responseSchema: ackResponseSchema,
783
839
  summary: "Switch the session mode",
@@ -785,9 +841,9 @@ const SWITCH_AGENT_CONTROLLER_MODE_ROUTE = require_route_builder.createRoute({
785
841
  tags: ["AgentController"],
786
842
  requiresAuth: true,
787
843
  requiresPermission: "agent-controller:execute",
788
- handler: async ({ mastra, controllerId, resourceId, sessionScope, modeId, requestContext }) => {
844
+ handler: async ({ mastra, controllerId, sessionId, modeId, requestContext }) => {
789
845
  try {
790
- await (await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext)).mode.switch({ modeId });
846
+ await (await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext)).mode.switch({ modeId });
791
847
  return { ok: true };
792
848
  } catch (error) {
793
849
  return require_server_handlers_error.handleError(error, "error switching controller mode");
@@ -796,10 +852,10 @@ const SWITCH_AGENT_CONTROLLER_MODE_ROUTE = require_route_builder.createRoute({
796
852
  });
797
853
  const SWITCH_AGENT_CONTROLLER_MODEL_ROUTE = require_route_builder.createRoute({
798
854
  method: "POST",
799
- path: "/agent-controller/:controllerId/sessions/:resourceId/model",
855
+ path: "/agent-controller/:controllerId/sessions/:sessionId/model",
856
+ queryParamSchema: sessionQuerySchema,
800
857
  responseType: "json",
801
858
  pathParamSchema: sessionPathParams,
802
- queryParamSchema: sessionScopeQuerySchema,
803
859
  bodySchema: switchModelBodySchema,
804
860
  responseSchema: ackResponseSchema,
805
861
  summary: "Switch the session model",
@@ -807,9 +863,9 @@ const SWITCH_AGENT_CONTROLLER_MODEL_ROUTE = require_route_builder.createRoute({
807
863
  tags: ["AgentController"],
808
864
  requiresAuth: true,
809
865
  requiresPermission: "agent-controller:execute",
810
- handler: async ({ mastra, controllerId, resourceId, sessionScope, modelId, thinkingLevel, requestContext }) => {
866
+ handler: async ({ mastra, controllerId, sessionId, modelId, thinkingLevel, requestContext }) => {
811
867
  try {
812
- await (await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext)).model.switch(modelId, { thinkingLevel });
868
+ await (await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext)).model.switch(modelId, { thinkingLevel });
813
869
  return { ok: true };
814
870
  } catch (error) {
815
871
  return require_server_handlers_error.handleError(error, "error switching controller model");
@@ -818,10 +874,10 @@ const SWITCH_AGENT_CONTROLLER_MODEL_ROUTE = require_route_builder.createRoute({
818
874
  });
819
875
  const SWITCH_AGENT_CONTROLLER_THREAD_ROUTE = require_route_builder.createRoute({
820
876
  method: "POST",
821
- path: "/agent-controller/:controllerId/sessions/:resourceId/thread",
877
+ path: "/agent-controller/:controllerId/sessions/:sessionId/thread",
878
+ queryParamSchema: sessionQuerySchema,
822
879
  responseType: "json",
823
880
  pathParamSchema: sessionPathParams,
824
- queryParamSchema: sessionScopeQuerySchema,
825
881
  bodySchema: switchThreadBodySchema,
826
882
  responseSchema: ackResponseSchema,
827
883
  summary: "Switch the session thread",
@@ -829,9 +885,9 @@ const SWITCH_AGENT_CONTROLLER_THREAD_ROUTE = require_route_builder.createRoute({
829
885
  tags: ["AgentController"],
830
886
  requiresAuth: true,
831
887
  requiresPermission: "agent-controller:execute",
832
- handler: async ({ mastra, controllerId, resourceId, sessionScope, threadId, requestContext }) => {
888
+ handler: async ({ mastra, controllerId, sessionId, threadId, requestContext }) => {
833
889
  try {
834
- const session = await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext);
890
+ const session = await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext);
835
891
  if (session.thread.getId() !== threadId) await session.thread.switch({
836
892
  threadId,
837
893
  requestContext
@@ -842,9 +898,51 @@ const SWITCH_AGENT_CONTROLLER_THREAD_ROUTE = require_route_builder.createRoute({
842
898
  }
843
899
  }
844
900
  });
901
+ const TRANSFER_AGENT_CONTROLLER_THREAD_OWNERSHIP_ROUTE = require_route_builder.createRoute({
902
+ method: "POST",
903
+ path: "/agent-controller/:controllerId/sessions/:sessionId/threads/:threadId/owner",
904
+ queryParamSchema: sessionQuerySchema,
905
+ responseType: "json",
906
+ pathParamSchema: threadPathParams,
907
+ responseSchema: transferOwnershipResponseSchema,
908
+ summary: "Take ownership of a thread",
909
+ description: "Transfers ownership of the specified thread to the authenticated user from the request context. The thread must belong to the session's resource, and the caller needs memory write access to it. The session's active thread does not change.",
910
+ tags: ["AgentController", "Threads"],
911
+ requiresAuth: true,
912
+ requiresPermission: "agent-controller:execute",
913
+ handler: async ({ mastra, controllerId, sessionId, threadId, requestContext }) => {
914
+ try {
915
+ const ownerId = getRequestMessageAuthor(requestContext)?.id;
916
+ if (!ownerId) throw new require_http_exception.HTTPException(401, { message: "An authenticated user is required to transfer thread ownership" });
917
+ const controller = getAgentControllerOrThrow(mastra, controllerId);
918
+ await controller.init();
919
+ const resourceId = await resolveSessionResourceId(controller, sessionId);
920
+ const thread = await controller.queryThreadById({ threadId });
921
+ if (!thread || thread.resourceId !== resourceId) throw new require_http_exception.HTTPException(404, { message: "Thread not found" });
922
+ await require_utils.enforceThreadAccess({
923
+ mastra,
924
+ requestContext,
925
+ threadId,
926
+ thread,
927
+ effectiveResourceId: resourceId,
928
+ permission: require_utils.MastraFGAPermissions.MEMORY_WRITE
929
+ });
930
+ await (await getSession(controller, sessionId, requestContext)).thread.transferOwnership({
931
+ toOwnerId: ownerId,
932
+ threadId
933
+ });
934
+ return {
935
+ ok: true,
936
+ ownerId
937
+ };
938
+ } catch (error) {
939
+ return require_server_handlers_error.handleError(error, "error transferring controller thread ownership");
940
+ }
941
+ }
942
+ });
845
943
  const GET_AGENT_CONTROLLER_SESSION_STATE_ROUTE = require_route_builder.createRoute({
846
944
  method: "GET",
847
- path: "/agent-controller/:controllerId/sessions/:resourceId",
945
+ path: "/agent-controller/:controllerId/sessions/:sessionId",
848
946
  responseType: "json",
849
947
  pathParamSchema: sessionPathParams,
850
948
  queryParamSchema: sessionStateQuerySchema,
@@ -854,9 +952,10 @@ const GET_AGENT_CONTROLLER_SESSION_STATE_ROUTE = require_route_builder.createRou
854
952
  tags: ["AgentController"],
855
953
  requiresAuth: true,
856
954
  requiresPermission: "agent-controller:read",
857
- handler: async ({ mastra, controllerId, resourceId, sessionScope, threadId: requestedThreadId, requestContext }) => {
955
+ handler: async ({ mastra, controllerId, sessionId, threadId: requestedThreadId, requestContext }) => {
858
956
  try {
859
- const session = await getExistingSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, sessionScope, requestContext);
957
+ const session = await getExistingSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext);
958
+ const resourceId = session.identity.getResourceId();
860
959
  const ds = session.displayState.get();
861
960
  const threadId = requestedThreadId ?? session.thread.getId() ?? void 0;
862
961
  const storage = mastra.getStorage();
@@ -880,6 +979,7 @@ const GET_AGENT_CONTROLLER_SESSION_STATE_ROUTE = require_route_builder.createRou
880
979
  const oneOfOptional = (value, allowed) => allowed.includes(value) ? value : void 0;
881
980
  return {
882
981
  controllerId,
982
+ sessionId: session.identity.getId(),
883
983
  resourceId,
884
984
  threadId,
885
985
  modeId: session.mode.get(),
@@ -970,19 +1070,20 @@ const LIST_AGENT_CONTROLLER_ACTIVE_RUNS_ROUTE = require_route_builder.createRout
970
1070
  });
971
1071
  const LIST_AGENT_CONTROLLER_THREADS_ROUTE = require_route_builder.createRoute({
972
1072
  method: "GET",
973
- path: "/agent-controller/:controllerId/sessions/:resourceId/threads",
1073
+ path: "/agent-controller/:controllerId/sessions/:sessionId/threads",
974
1074
  responseType: "json",
975
1075
  pathParamSchema: sessionPathParams,
976
1076
  queryParamSchema: listThreadsQuerySchema,
977
1077
  responseSchema: listThreadsResponseSchema,
978
1078
  summary: "List session threads",
979
- description: "Lists the threads for the session’s resource, most-recently-updated first. Pass `limit` to return only the newest N (e.g. for a sidebar). Pass `tags` (a JSON-encoded object) to scope the list to threads matching every tag — e.g. `{ projectPath }` so git worktrees sharing a resourceId each see only their own threads.",
1079
+ description: "Lists every thread of the session’s resource (not only the session’s own threads), most-recently-updated first. Pass `limit` to return only the newest N (e.g. for a sidebar). Pass `tags` (a JSON-encoded object) to scope the list to threads matching every tag — e.g. `{ projectPath }` so git worktrees sharing a resourceId each see only their own threads.",
980
1080
  tags: ["AgentController"],
981
1081
  requiresAuth: true,
982
1082
  requiresPermission: "agent-controller:read",
983
- handler: async ({ mastra, controllerId, resourceId, limit, tags }) => {
1083
+ handler: async ({ mastra, controllerId, sessionId, limit, tags }) => {
984
1084
  try {
985
1085
  const controller = getAgentControllerOrThrow(mastra, controllerId);
1086
+ const resourceId = await resolveSessionResourceId(controller, sessionId);
986
1087
  const threads = await controller.queryThreads({ resourceId });
987
1088
  const getTags = (t) => {
988
1089
  const metadata = t.metadata ?? {};
@@ -1017,10 +1118,10 @@ const LIST_AGENT_CONTROLLER_THREADS_ROUTE = require_route_builder.createRoute({
1017
1118
  });
1018
1119
  const SEND_AGENT_CONTROLLER_NOTIFICATION_ROUTE = require_route_builder.createRoute({
1019
1120
  method: "POST",
1020
- path: "/agent-controller/:controllerId/sessions/:resourceId/notifications",
1121
+ path: "/agent-controller/:controllerId/sessions/:sessionId/notifications",
1122
+ queryParamSchema: sessionQuerySchema,
1021
1123
  responseType: "json",
1022
1124
  pathParamSchema: sessionPathParams,
1023
- queryParamSchema: sessionScopeQuerySchema,
1024
1125
  bodySchema: sendNotificationBodySchema,
1025
1126
  responseSchema: zod_v4.z.object({
1026
1127
  accepted: zod_v4.z.boolean(),
@@ -1033,9 +1134,9 @@ const SEND_AGENT_CONTROLLER_NOTIFICATION_ROUTE = require_route_builder.createRou
1033
1134
  tags: ["AgentController"],
1034
1135
  requiresAuth: true,
1035
1136
  requiresPermission: "agent-controller:execute",
1036
- handler: async ({ mastra, controllerId, resourceId, sessionScope, source, kind, summary, priority, payload, sourceId, dedupeKey, coalesceKey, attributes, metadata, requestContext }) => {
1137
+ handler: async ({ mastra, controllerId, sessionId, source, kind, summary, priority, payload, sourceId, dedupeKey, coalesceKey, attributes, metadata, requestContext }) => {
1037
1138
  try {
1038
- const result = await (await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext)).sendNotificationSignal({
1139
+ const result = await (await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext)).sendNotificationSignal({
1039
1140
  source,
1040
1141
  kind,
1041
1142
  summary,
@@ -1060,10 +1161,10 @@ const SEND_AGENT_CONTROLLER_NOTIFICATION_ROUTE = require_route_builder.createRou
1060
1161
  });
1061
1162
  const CREATE_AGENT_CONTROLLER_THREAD_ROUTE = require_route_builder.createRoute({
1062
1163
  method: "POST",
1063
- path: "/agent-controller/:controllerId/sessions/:resourceId/threads",
1164
+ path: "/agent-controller/:controllerId/sessions/:sessionId/threads",
1165
+ queryParamSchema: sessionQuerySchema,
1064
1166
  responseType: "json",
1065
1167
  pathParamSchema: sessionPathParams,
1066
- queryParamSchema: sessionScopeQuerySchema,
1067
1168
  bodySchema: createThreadBodySchema,
1068
1169
  responseSchema: threadResponseSchema,
1069
1170
  summary: "Create a new thread",
@@ -1071,9 +1172,9 @@ const CREATE_AGENT_CONTROLLER_THREAD_ROUTE = require_route_builder.createRoute({
1071
1172
  tags: ["AgentController", "Threads"],
1072
1173
  requiresAuth: true,
1073
1174
  requiresPermission: "agent-controller:execute",
1074
- handler: async ({ mastra, controllerId, resourceId, sessionScope, title, requestContext }) => {
1175
+ handler: async ({ mastra, controllerId, sessionId, title, requestContext }) => {
1075
1176
  try {
1076
- const thread = await (await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext)).thread.create({
1177
+ const thread = await (await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext)).thread.create({
1077
1178
  title,
1078
1179
  requestContext
1079
1180
  });
@@ -1091,19 +1192,19 @@ const CREATE_AGENT_CONTROLLER_THREAD_ROUTE = require_route_builder.createRoute({
1091
1192
  });
1092
1193
  const DELETE_AGENT_CONTROLLER_THREAD_ROUTE = require_route_builder.createRoute({
1093
1194
  method: "DELETE",
1094
- path: "/agent-controller/:controllerId/sessions/:resourceId/threads/:threadId",
1195
+ path: "/agent-controller/:controllerId/sessions/:sessionId/threads/:threadId",
1196
+ queryParamSchema: sessionQuerySchema,
1095
1197
  responseType: "json",
1096
1198
  pathParamSchema: threadPathParams,
1097
- queryParamSchema: sessionScopeQuerySchema,
1098
1199
  responseSchema: ackResponseSchema,
1099
1200
  summary: "Delete a thread",
1100
1201
  description: "Deletes a thread. If the deleted thread is the active one, the session is unbound.",
1101
1202
  tags: ["AgentController", "Threads"],
1102
1203
  requiresAuth: true,
1103
1204
  requiresPermission: "agent-controller:execute",
1104
- handler: async ({ mastra, controllerId, resourceId, sessionScope, threadId, requestContext }) => {
1205
+ handler: async ({ mastra, controllerId, sessionId, threadId, requestContext }) => {
1105
1206
  try {
1106
- await (await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext)).thread.delete({
1207
+ await (await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext)).thread.delete({
1107
1208
  threadId,
1108
1209
  requestContext
1109
1210
  });
@@ -1115,10 +1216,10 @@ const DELETE_AGENT_CONTROLLER_THREAD_ROUTE = require_route_builder.createRoute({
1115
1216
  });
1116
1217
  const RENAME_AGENT_CONTROLLER_THREAD_ROUTE = require_route_builder.createRoute({
1117
1218
  method: "PUT",
1118
- path: "/agent-controller/:controllerId/sessions/:resourceId/threads/:threadId",
1219
+ path: "/agent-controller/:controllerId/sessions/:sessionId/threads/:threadId",
1220
+ queryParamSchema: sessionQuerySchema,
1119
1221
  responseType: "json",
1120
1222
  pathParamSchema: threadPathParams,
1121
- queryParamSchema: sessionScopeQuerySchema,
1122
1223
  bodySchema: renameThreadBodySchema,
1123
1224
  responseSchema: ackResponseSchema,
1124
1225
  summary: "Rename a thread",
@@ -1126,9 +1227,9 @@ const RENAME_AGENT_CONTROLLER_THREAD_ROUTE = require_route_builder.createRoute({
1126
1227
  tags: ["AgentController", "Threads"],
1127
1228
  requiresAuth: true,
1128
1229
  requiresPermission: "agent-controller:execute",
1129
- handler: async ({ mastra, controllerId, resourceId, sessionScope, threadId, title, requestContext }) => {
1230
+ handler: async ({ mastra, controllerId, sessionId, threadId, title, requestContext }) => {
1130
1231
  try {
1131
- const session = await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext);
1232
+ const session = await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext);
1132
1233
  if (session.thread.getId() !== threadId) await session.thread.switch({
1133
1234
  threadId,
1134
1235
  requestContext
@@ -1142,10 +1243,10 @@ const RENAME_AGENT_CONTROLLER_THREAD_ROUTE = require_route_builder.createRoute({
1142
1243
  });
1143
1244
  const CLONE_AGENT_CONTROLLER_THREAD_ROUTE = require_route_builder.createRoute({
1144
1245
  method: "POST",
1145
- path: "/agent-controller/:controllerId/sessions/:resourceId/threads/clone",
1246
+ path: "/agent-controller/:controllerId/sessions/:sessionId/threads/clone",
1247
+ queryParamSchema: sessionQuerySchema,
1146
1248
  responseType: "json",
1147
1249
  pathParamSchema: sessionPathParams,
1148
- queryParamSchema: sessionScopeQuerySchema,
1149
1250
  bodySchema: cloneThreadBodySchema,
1150
1251
  responseSchema: threadResponseSchema,
1151
1252
  summary: "Clone a thread",
@@ -1153,9 +1254,9 @@ const CLONE_AGENT_CONTROLLER_THREAD_ROUTE = require_route_builder.createRoute({
1153
1254
  tags: ["AgentController", "Threads"],
1154
1255
  requiresAuth: true,
1155
1256
  requiresPermission: "agent-controller:execute",
1156
- handler: async ({ mastra, controllerId, resourceId, sessionScope, sourceThreadId, title, requestContext }) => {
1257
+ handler: async ({ mastra, controllerId, sessionId, sourceThreadId, title, requestContext }) => {
1157
1258
  try {
1158
- const thread = await (await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext)).thread.clone({
1259
+ const thread = await (await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext)).thread.clone({
1159
1260
  sourceThreadId,
1160
1261
  title,
1161
1262
  requestContext
@@ -1174,7 +1275,7 @@ const CLONE_AGENT_CONTROLLER_THREAD_ROUTE = require_route_builder.createRoute({
1174
1275
  });
1175
1276
  const LIST_AGENT_CONTROLLER_THREAD_MESSAGES_ROUTE = require_route_builder.createRoute({
1176
1277
  method: "GET",
1177
- path: "/agent-controller/:controllerId/sessions/:resourceId/threads/:threadId/messages",
1278
+ path: "/agent-controller/:controllerId/sessions/:sessionId/threads/:threadId/messages",
1178
1279
  responseType: "json",
1179
1280
  pathParamSchema: threadPathParams,
1180
1281
  queryParamSchema: listMessagesQuerySchema,
@@ -1184,12 +1285,13 @@ const LIST_AGENT_CONTROLLER_THREAD_MESSAGES_ROUTE = require_route_builder.create
1184
1285
  tags: ["AgentController", "Threads"],
1185
1286
  requiresAuth: true,
1186
1287
  requiresPermission: "agent-controller:read",
1187
- handler: async ({ mastra, controllerId, resourceId, threadId, limit, page, perPage, orderBy, include, filter, requestContext }) => {
1288
+ handler: async ({ mastra, controllerId, sessionId, threadId, limit, page, perPage, orderBy, include, filter, requestContext }) => {
1188
1289
  try {
1189
1290
  if (limit !== void 0 && (perPage !== void 0 || orderBy !== void 0 || include !== void 0 || filter !== void 0)) throw new require_http_exception.HTTPException(400, { message: "limit can only be combined with page; use perPage instead" });
1190
1291
  const controller = getAgentControllerOrThrow(mastra, controllerId);
1292
+ const resourceId = await resolveSessionResourceId(controller, sessionId);
1191
1293
  const thread = await controller.queryThreadById({ threadId });
1192
- if (!thread || resourceId && thread.resourceId && thread.resourceId !== resourceId) throw new require_http_exception.HTTPException(404, { message: "Thread not found" });
1294
+ if (!thread || thread.resourceId && thread.resourceId !== resourceId) throw new require_http_exception.HTTPException(404, { message: "Thread not found" });
1193
1295
  await require_utils.enforceThreadAccess({
1194
1296
  mastra,
1195
1297
  requestContext,
@@ -1236,10 +1338,10 @@ const LIST_AGENT_CONTROLLER_THREAD_MESSAGES_ROUTE = require_route_builder.create
1236
1338
  });
1237
1339
  const FOLLOW_UP_AGENT_CONTROLLER_SESSION_ROUTE = require_route_builder.createRoute({
1238
1340
  method: "POST",
1239
- path: "/agent-controller/:controllerId/sessions/:resourceId/follow-up",
1341
+ path: "/agent-controller/:controllerId/sessions/:sessionId/follow-up",
1342
+ queryParamSchema: sessionQuerySchema,
1240
1343
  responseType: "json",
1241
1344
  pathParamSchema: sessionPathParams,
1242
- queryParamSchema: sessionScopeQuerySchema,
1243
1345
  bodySchema: followUpBodySchema,
1244
1346
  responseSchema: ackResponseSchema,
1245
1347
  summary: "Queue a follow-up message",
@@ -1247,9 +1349,9 @@ const FOLLOW_UP_AGENT_CONTROLLER_SESSION_ROUTE = require_route_builder.createRou
1247
1349
  tags: ["AgentController"],
1248
1350
  requiresAuth: true,
1249
1351
  requiresPermission: "agent-controller:execute",
1250
- handler: async ({ mastra, controllerId, resourceId, sessionScope, message, files, requestContext }) => {
1352
+ handler: async ({ mastra, controllerId, sessionId, message, files, requestContext }) => {
1251
1353
  try {
1252
- const session = await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext);
1354
+ const session = await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext);
1253
1355
  ackBackgroundSessionWork({
1254
1356
  work: session.followUp({
1255
1357
  content: message,
@@ -1319,20 +1421,20 @@ const GET_AGENT_CONTROLLER_WORKSPACE_STATUS_ROUTE = require_route_builder.create
1319
1421
  });
1320
1422
  const GET_AGENT_CONTROLLER_OM_RECORD_ROUTE = require_route_builder.createRoute({
1321
1423
  method: "GET",
1322
- path: "/agent-controller/:controllerId/sessions/:resourceId/om",
1424
+ path: "/agent-controller/:controllerId/sessions/:sessionId/om",
1425
+ queryParamSchema: sessionQuerySchema,
1323
1426
  responseType: "json",
1324
1427
  pathParamSchema: sessionPathParams,
1325
- queryParamSchema: sessionScopeQuerySchema,
1326
1428
  responseSchema: omRecordResponseSchema,
1327
1429
  summary: "Get observational memory record",
1328
1430
  description: "Returns the current observational memory record for the session’s thread/resource.",
1329
1431
  tags: ["AgentController"],
1330
1432
  requiresAuth: true,
1331
1433
  requiresPermission: "agent-controller:read",
1332
- handler: async ({ mastra, controllerId, resourceId, sessionScope, requestContext }) => {
1434
+ handler: async ({ mastra, controllerId, sessionId, requestContext }) => {
1333
1435
  try {
1334
1436
  const controller = getAgentControllerOrThrow(mastra, controllerId);
1335
- const session = await getExistingSession(controller, resourceId, sessionScope, requestContext);
1437
+ const session = await getExistingSession(controller, sessionId, requestContext);
1336
1438
  return { record: await controller.getObservationalMemoryRecord(session) ?? void 0 };
1337
1439
  } catch (error) {
1338
1440
  return require_server_handlers_error.handleError(error, "error reading controller OM record");
@@ -1341,10 +1443,10 @@ const GET_AGENT_CONTROLLER_OM_RECORD_ROUTE = require_route_builder.createRoute({
1341
1443
  });
1342
1444
  const SET_AGENT_CONTROLLER_RESOURCE_ID_ROUTE = require_route_builder.createRoute({
1343
1445
  method: "POST",
1344
- path: "/agent-controller/:controllerId/sessions/:resourceId/resource",
1446
+ path: "/agent-controller/:controllerId/sessions/:sessionId/resource",
1447
+ queryParamSchema: sessionQuerySchema,
1345
1448
  responseType: "json",
1346
1449
  pathParamSchema: sessionPathParams,
1347
- queryParamSchema: sessionScopeQuerySchema,
1348
1450
  bodySchema: zod_v4.z.object({ newResourceId: zod_v4.z.string() }),
1349
1451
  responseSchema: ackResponseSchema,
1350
1452
  summary: "Change the session resource ID",
@@ -1352,10 +1454,10 @@ const SET_AGENT_CONTROLLER_RESOURCE_ID_ROUTE = require_route_builder.createRoute
1352
1454
  tags: ["AgentController"],
1353
1455
  requiresAuth: true,
1354
1456
  requiresPermission: "agent-controller:execute",
1355
- handler: async ({ mastra, controllerId, resourceId, sessionScope, newResourceId, requestContext }) => {
1457
+ handler: async ({ mastra, controllerId, sessionId, newResourceId, requestContext }) => {
1356
1458
  try {
1357
1459
  const controller = getAgentControllerOrThrow(mastra, controllerId);
1358
- const session = await getSession(controller, resourceId, { scope: sessionScope }, requestContext);
1460
+ const session = await getSession(controller, sessionId, requestContext);
1359
1461
  await controller.setResourceId(session, { resourceId: newResourceId });
1360
1462
  return { ok: true };
1361
1463
  } catch (error) {
@@ -1365,20 +1467,20 @@ const SET_AGENT_CONTROLLER_RESOURCE_ID_ROUTE = require_route_builder.createRoute
1365
1467
  });
1366
1468
  const GET_AGENT_CONTROLLER_RESOURCE_IDS_ROUTE = require_route_builder.createRoute({
1367
1469
  method: "GET",
1368
- path: "/agent-controller/:controllerId/sessions/:resourceId/resources",
1470
+ path: "/agent-controller/:controllerId/sessions/:sessionId/resources",
1471
+ queryParamSchema: sessionQuerySchema,
1369
1472
  responseType: "json",
1370
1473
  pathParamSchema: sessionPathParams,
1371
- queryParamSchema: sessionScopeQuerySchema,
1372
1474
  responseSchema: zod_v4.z.object({ resourceIds: zod_v4.z.array(zod_v4.z.string()) }),
1373
1475
  summary: "Get known resource IDs",
1374
1476
  description: "Lists the resource IDs known to this session (from threads).",
1375
1477
  tags: ["AgentController"],
1376
1478
  requiresAuth: true,
1377
1479
  requiresPermission: "agent-controller:read",
1378
- handler: async ({ mastra, controllerId, resourceId, sessionScope, requestContext }) => {
1480
+ handler: async ({ mastra, controllerId, sessionId, requestContext }) => {
1379
1481
  try {
1380
1482
  const controller = getAgentControllerOrThrow(mastra, controllerId);
1381
- const session = await getExistingSession(controller, resourceId, sessionScope, requestContext);
1483
+ const session = await getExistingSession(controller, sessionId, requestContext);
1382
1484
  return { resourceIds: await controller.getKnownResourceIds(session) };
1383
1485
  } catch (error) {
1384
1486
  return require_server_handlers_error.handleError(error, "error listing controller resource IDs");
@@ -1420,20 +1522,20 @@ function getAgentForSession(controller, session) {
1420
1522
  }
1421
1523
  const GET_AGENT_CONTROLLER_GOAL_ROUTE = require_route_builder.createRoute({
1422
1524
  method: "GET",
1423
- path: "/agent-controller/:controllerId/sessions/:resourceId/goal",
1525
+ path: "/agent-controller/:controllerId/sessions/:sessionId/goal",
1526
+ queryParamSchema: sessionQuerySchema,
1424
1527
  responseType: "json",
1425
1528
  pathParamSchema: sessionPathParams,
1426
- queryParamSchema: sessionScopeQuerySchema,
1427
1529
  responseSchema: goalResponseSchema,
1428
1530
  summary: "Get the current goal",
1429
1531
  description: "Returns the active/paused/done goal objective for the session’s thread, if any.",
1430
1532
  tags: ["AgentController", "Goals"],
1431
1533
  requiresAuth: true,
1432
1534
  requiresPermission: "agent-controller:read",
1433
- handler: async ({ mastra, controllerId, resourceId, sessionScope, requestContext }) => {
1535
+ handler: async ({ mastra, controllerId, sessionId, requestContext }) => {
1434
1536
  try {
1435
1537
  const controller = getAgentControllerOrThrow(mastra, controllerId);
1436
- const session = await getExistingSession(controller, resourceId, sessionScope, requestContext);
1538
+ const session = await getExistingSession(controller, sessionId, requestContext);
1437
1539
  const threadId = session.thread.getId();
1438
1540
  if (!threadId) return { goal: void 0 };
1439
1541
  return { goal: await getAgentForSession(controller, session).getObjective({ threadId }) ?? void 0 };
@@ -1444,10 +1546,10 @@ const GET_AGENT_CONTROLLER_GOAL_ROUTE = require_route_builder.createRoute({
1444
1546
  });
1445
1547
  const SET_AGENT_CONTROLLER_GOAL_ROUTE = require_route_builder.createRoute({
1446
1548
  method: "POST",
1447
- path: "/agent-controller/:controllerId/sessions/:resourceId/goal",
1549
+ path: "/agent-controller/:controllerId/sessions/:sessionId/goal",
1550
+ queryParamSchema: sessionQuerySchema,
1448
1551
  responseType: "json",
1449
1552
  pathParamSchema: sessionPathParams,
1450
- queryParamSchema: sessionScopeQuerySchema,
1451
1553
  bodySchema: setGoalBodySchema,
1452
1554
  responseSchema: goalResponseSchema,
1453
1555
  summary: "Set a goal",
@@ -1455,10 +1557,10 @@ const SET_AGENT_CONTROLLER_GOAL_ROUTE = require_route_builder.createRoute({
1455
1557
  tags: ["AgentController", "Goals"],
1456
1558
  requiresAuth: true,
1457
1559
  requiresPermission: "agent-controller:execute",
1458
- handler: async ({ mastra, controllerId, resourceId, sessionScope, objective, judgeModelId, maxRuns, requestContext }) => {
1560
+ handler: async ({ mastra, controllerId, sessionId, objective, judgeModelId, maxRuns, requestContext }) => {
1459
1561
  try {
1460
1562
  const controller = getAgentControllerOrThrow(mastra, controllerId);
1461
- const session = await getSession(controller, resourceId, { scope: sessionScope }, requestContext);
1563
+ const session = await getSession(controller, sessionId, requestContext);
1462
1564
  const threadId = session.thread.getId();
1463
1565
  if (!threadId) throw new require_http_exception.HTTPException(400, { message: "session has no active thread" });
1464
1566
  return { goal: await getAgentForSession(controller, session).setObjective(objective, {
@@ -1474,10 +1576,10 @@ const SET_AGENT_CONTROLLER_GOAL_ROUTE = require_route_builder.createRoute({
1474
1576
  });
1475
1577
  const UPDATE_AGENT_CONTROLLER_GOAL_ROUTE = require_route_builder.createRoute({
1476
1578
  method: "PUT",
1477
- path: "/agent-controller/:controllerId/sessions/:resourceId/goal",
1579
+ path: "/agent-controller/:controllerId/sessions/:sessionId/goal",
1580
+ queryParamSchema: sessionQuerySchema,
1478
1581
  responseType: "json",
1479
1582
  pathParamSchema: sessionPathParams,
1480
- queryParamSchema: sessionScopeQuerySchema,
1481
1583
  bodySchema: updateGoalBodySchema,
1482
1584
  responseSchema: goalResponseSchema,
1483
1585
  summary: "Update goal options",
@@ -1485,10 +1587,10 @@ const UPDATE_AGENT_CONTROLLER_GOAL_ROUTE = require_route_builder.createRoute({
1485
1587
  tags: ["AgentController", "Goals"],
1486
1588
  requiresAuth: true,
1487
1589
  requiresPermission: "agent-controller:execute",
1488
- handler: async ({ mastra, controllerId, resourceId, sessionScope, judgeModelId, maxRuns, status, requestContext }) => {
1590
+ handler: async ({ mastra, controllerId, sessionId, judgeModelId, maxRuns, status, requestContext }) => {
1489
1591
  try {
1490
1592
  const controller = getAgentControllerOrThrow(mastra, controllerId);
1491
- const session = await getSession(controller, resourceId, { scope: sessionScope }, requestContext);
1593
+ const session = await getSession(controller, sessionId, requestContext);
1492
1594
  const threadId = session.thread.getId();
1493
1595
  if (!threadId) throw new require_http_exception.HTTPException(400, { message: "session has no active thread" });
1494
1596
  return { goal: await getAgentForSession(controller, session).updateObjectiveOptions({
@@ -1504,20 +1606,20 @@ const UPDATE_AGENT_CONTROLLER_GOAL_ROUTE = require_route_builder.createRoute({
1504
1606
  });
1505
1607
  const CLEAR_AGENT_CONTROLLER_GOAL_ROUTE = require_route_builder.createRoute({
1506
1608
  method: "DELETE",
1507
- path: "/agent-controller/:controllerId/sessions/:resourceId/goal",
1609
+ path: "/agent-controller/:controllerId/sessions/:sessionId/goal",
1610
+ queryParamSchema: sessionQuerySchema,
1508
1611
  responseType: "json",
1509
1612
  pathParamSchema: sessionPathParams,
1510
- queryParamSchema: sessionScopeQuerySchema,
1511
1613
  responseSchema: ackResponseSchema,
1512
1614
  summary: "Clear the goal",
1513
1615
  description: "Removes the active goal from the session’s thread.",
1514
1616
  tags: ["AgentController", "Goals"],
1515
1617
  requiresAuth: true,
1516
1618
  requiresPermission: "agent-controller:execute",
1517
- handler: async ({ mastra, controllerId, resourceId, sessionScope, requestContext }) => {
1619
+ handler: async ({ mastra, controllerId, sessionId, requestContext }) => {
1518
1620
  try {
1519
1621
  const controller = getAgentControllerOrThrow(mastra, controllerId);
1520
- const session = await getSession(controller, resourceId, { scope: sessionScope }, requestContext);
1622
+ const session = await getSession(controller, sessionId, requestContext);
1521
1623
  const threadId = session.thread.getId();
1522
1624
  if (!threadId) throw new require_http_exception.HTTPException(400, { message: "session has no active thread" });
1523
1625
  await getAgentForSession(controller, session).clearObjective({ threadId });
@@ -1529,19 +1631,19 @@ const CLEAR_AGENT_CONTROLLER_GOAL_ROUTE = require_route_builder.createRoute({
1529
1631
  });
1530
1632
  const GET_AGENT_CONTROLLER_PERMISSIONS_ROUTE = require_route_builder.createRoute({
1531
1633
  method: "GET",
1532
- path: "/agent-controller/:controllerId/sessions/:resourceId/permissions",
1634
+ path: "/agent-controller/:controllerId/sessions/:sessionId/permissions",
1635
+ queryParamSchema: sessionQuerySchema,
1533
1636
  responseType: "json",
1534
1637
  pathParamSchema: sessionPathParams,
1535
- queryParamSchema: sessionScopeQuerySchema,
1536
1638
  responseSchema: permissionRulesResponseSchema,
1537
1639
  summary: "Get permission rules",
1538
1640
  description: "Returns the current permission rules (per-category and per-tool policies) for the session.",
1539
1641
  tags: ["AgentController", "Permissions"],
1540
1642
  requiresAuth: true,
1541
1643
  requiresPermission: "agent-controller:read",
1542
- handler: async ({ mastra, controllerId, resourceId, sessionScope, requestContext }) => {
1644
+ handler: async ({ mastra, controllerId, sessionId, requestContext }) => {
1543
1645
  try {
1544
- const rules = (await getExistingSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, sessionScope, requestContext)).permissions.getRules();
1646
+ const rules = (await getExistingSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext)).permissions.getRules();
1545
1647
  return {
1546
1648
  categories: rules.categories,
1547
1649
  tools: rules.tools
@@ -1553,10 +1655,10 @@ const GET_AGENT_CONTROLLER_PERMISSIONS_ROUTE = require_route_builder.createRoute
1553
1655
  });
1554
1656
  const SET_AGENT_CONTROLLER_CATEGORY_PERMISSION_ROUTE = require_route_builder.createRoute({
1555
1657
  method: "PUT",
1556
- path: "/agent-controller/:controllerId/sessions/:resourceId/permissions/category",
1658
+ path: "/agent-controller/:controllerId/sessions/:sessionId/permissions/category",
1659
+ queryParamSchema: sessionQuerySchema,
1557
1660
  responseType: "json",
1558
1661
  pathParamSchema: sessionPathParams,
1559
- queryParamSchema: sessionScopeQuerySchema,
1560
1662
  bodySchema: setCategoryPermissionBodySchema,
1561
1663
  responseSchema: ackResponseSchema,
1562
1664
  summary: "Set permission for a tool category",
@@ -1564,9 +1666,9 @@ const SET_AGENT_CONTROLLER_CATEGORY_PERMISSION_ROUTE = require_route_builder.cre
1564
1666
  tags: ["AgentController", "Permissions"],
1565
1667
  requiresAuth: true,
1566
1668
  requiresPermission: "agent-controller:execute",
1567
- handler: async ({ mastra, controllerId, resourceId, sessionScope, category, policy, requestContext }) => {
1669
+ handler: async ({ mastra, controllerId, sessionId, category, policy, requestContext }) => {
1568
1670
  try {
1569
- await (await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext)).permissions.setForCategory({
1671
+ await (await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext)).permissions.setForCategory({
1570
1672
  category,
1571
1673
  policy
1572
1674
  });
@@ -1578,10 +1680,10 @@ const SET_AGENT_CONTROLLER_CATEGORY_PERMISSION_ROUTE = require_route_builder.cre
1578
1680
  });
1579
1681
  const SET_AGENT_CONTROLLER_TOOL_PERMISSION_ROUTE = require_route_builder.createRoute({
1580
1682
  method: "PUT",
1581
- path: "/agent-controller/:controllerId/sessions/:resourceId/permissions/tool",
1683
+ path: "/agent-controller/:controllerId/sessions/:sessionId/permissions/tool",
1684
+ queryParamSchema: sessionQuerySchema,
1582
1685
  responseType: "json",
1583
1686
  pathParamSchema: sessionPathParams,
1584
- queryParamSchema: sessionScopeQuerySchema,
1585
1687
  bodySchema: setToolPermissionBodySchema,
1586
1688
  responseSchema: ackResponseSchema,
1587
1689
  summary: "Set permission for a specific tool",
@@ -1589,9 +1691,9 @@ const SET_AGENT_CONTROLLER_TOOL_PERMISSION_ROUTE = require_route_builder.createR
1589
1691
  tags: ["AgentController", "Permissions"],
1590
1692
  requiresAuth: true,
1591
1693
  requiresPermission: "agent-controller:execute",
1592
- handler: async ({ mastra, controllerId, resourceId, sessionScope, toolName, policy, requestContext }) => {
1694
+ handler: async ({ mastra, controllerId, sessionId, toolName, policy, requestContext }) => {
1593
1695
  try {
1594
- await (await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext)).permissions.setForTool({
1696
+ await (await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext)).permissions.setForTool({
1595
1697
  toolName,
1596
1698
  policy
1597
1699
  });
@@ -1604,10 +1706,10 @@ const SET_AGENT_CONTROLLER_TOOL_PERMISSION_ROUTE = require_route_builder.createR
1604
1706
  const setSessionStateBodySchema = zod_v4.z.object({ state: zod_v4.z.record(zod_v4.z.string(), zod_v4.z.unknown()) });
1605
1707
  const SET_AGENT_CONTROLLER_SESSION_STATE_ROUTE = require_route_builder.createRoute({
1606
1708
  method: "PUT",
1607
- path: "/agent-controller/:controllerId/sessions/:resourceId/state",
1709
+ path: "/agent-controller/:controllerId/sessions/:sessionId/state",
1710
+ queryParamSchema: sessionQuerySchema,
1608
1711
  responseType: "json",
1609
1712
  pathParamSchema: sessionPathParams,
1610
- queryParamSchema: sessionScopeQuerySchema,
1611
1713
  bodySchema: setSessionStateBodySchema,
1612
1714
  responseSchema: ackResponseSchema,
1613
1715
  summary: "Set session state",
@@ -1615,9 +1717,9 @@ const SET_AGENT_CONTROLLER_SESSION_STATE_ROUTE = require_route_builder.createRou
1615
1717
  tags: ["AgentController"],
1616
1718
  requiresAuth: true,
1617
1719
  requiresPermission: "agent-controller:execute",
1618
- handler: async ({ mastra, controllerId, resourceId, sessionScope, state, requestContext }) => {
1720
+ handler: async ({ mastra, controllerId, sessionId, state, requestContext }) => {
1619
1721
  try {
1620
- await (await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext)).state.set(state);
1722
+ await (await getSession(getAgentControllerOrThrow(mastra, controllerId), sessionId, requestContext)).state.set(state);
1621
1723
  return { ok: true };
1622
1724
  } catch (error) {
1623
1725
  return require_server_handlers_error.handleError(error, "error setting controller session state");
@@ -1659,6 +1761,7 @@ exports.STREAM_AGENT_CONTROLLER_SESSION_ROUTE = STREAM_AGENT_CONTROLLER_SESSION_
1659
1761
  exports.SWITCH_AGENT_CONTROLLER_MODEL_ROUTE = SWITCH_AGENT_CONTROLLER_MODEL_ROUTE;
1660
1762
  exports.SWITCH_AGENT_CONTROLLER_MODE_ROUTE = SWITCH_AGENT_CONTROLLER_MODE_ROUTE;
1661
1763
  exports.SWITCH_AGENT_CONTROLLER_THREAD_ROUTE = SWITCH_AGENT_CONTROLLER_THREAD_ROUTE;
1764
+ exports.TRANSFER_AGENT_CONTROLLER_THREAD_OWNERSHIP_ROUTE = TRANSFER_AGENT_CONTROLLER_THREAD_OWNERSHIP_ROUTE;
1662
1765
  exports.UPDATE_AGENT_CONTROLLER_GOAL_ROUTE = UPDATE_AGENT_CONTROLLER_GOAL_ROUTE;
1663
1766
 
1664
1767
  //# sourceMappingURL=agent-controller.cjs.map