@mastra/server 1.78.1-alpha.0 → 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.
- package/dist/_types/@internal_core/dist/storage/index.d.ts +11 -1
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/schemas.d.ts +3 -1
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/util.d.ts +2 -0
- package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-sdk-v5/dist/index.d.ts +206 -873
- package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-v6/dist/index.d.ts +851 -1176
- package/dist/{a2a-D5CGFO8W.cjs → a2a-B465DD1u.cjs} +3 -3
- package/dist/a2a-B465DD1u.cjs.map +1 -0
- package/dist/{a2a-Dg3ylOKc.js → a2a-CHBSYHxu.js} +3 -3
- package/dist/{a2a-D5CGFO8W.cjs.map → a2a-CHBSYHxu.js.map} +1 -1
- package/dist/{agents-D9vpLghy.cjs → agents-DoNMSCMt.cjs} +4 -2
- package/dist/agents-DoNMSCMt.cjs.map +1 -0
- package/dist/{agents-DNWDET4U.js → agents-X1E7fW3p.js} +4 -2
- package/dist/agents-X1E7fW3p.js.map +1 -0
- package/dist/{api-schema-manifest-aur2BK6a.js → api-schema-manifest-CWRIJP-B.js} +9 -3
- package/dist/api-schema-manifest-CWRIJP-B.js.map +1 -0
- package/dist/{api-schema-manifest-Dr8PM4Qj.cjs → api-schema-manifest-DUseI2VG.cjs} +9 -3
- package/dist/api-schema-manifest-DUseI2VG.cjs.map +1 -0
- package/dist/{background-tasks-BbYzMhlD.cjs → background-tasks-CabImVak.cjs} +3 -3
- package/dist/{background-tasks-BbYzMhlD.cjs.map → background-tasks-CabImVak.cjs.map} +1 -1
- package/dist/{background-tasks-zvlIcbhg.js → background-tasks-oBaLtnCn.js} +3 -3
- package/dist/{background-tasks-zvlIcbhg.js.map → background-tasks-oBaLtnCn.js.map} +1 -1
- package/dist/{builder-registry-DagCZI4A.cjs → builder-registry-D0frV8lQ.cjs} +3 -3
- package/dist/{builder-registry-DagCZI4A.cjs.map → builder-registry-D0frV8lQ.cjs.map} +1 -1
- package/dist/{builder-registry-1GwmVVwr.js → builder-registry-DOkLe8ES.js} +3 -3
- package/dist/{builder-registry-1GwmVVwr.js.map → builder-registry-DOkLe8ES.js.map} +1 -1
- package/dist/{channels-B3aoI-f1.js → channels-BOxgHvzI.js} +2 -2
- package/dist/{channels-B3aoI-f1.js.map → channels-BOxgHvzI.js.map} +1 -1
- package/dist/{channels-5J7CTFyY.cjs → channels-CBIopVWd.cjs} +2 -2
- package/dist/{channels-5J7CTFyY.cjs.map → channels-CBIopVWd.cjs.map} +1 -1
- package/dist/{datasets-BdD8JWhx.cjs → datasets-BUC5T-fd.cjs} +6 -1
- package/dist/datasets-BUC5T-fd.cjs.map +1 -0
- package/dist/{datasets-CKwh-k4I.js → datasets-CCWuznUu.js} +6 -1
- package/dist/datasets-CCWuznUu.js.map +1 -0
- package/dist/{dist-D5O8s1u2.cjs → dist-3FPW9nVj.cjs} +3 -3
- package/dist/{dist-D5O8s1u2.cjs.map → dist-3FPW9nVj.cjs.map} +1 -1
- package/dist/{dist-B8rA8_Wt.cjs → dist-9c3PXXpk.cjs} +36612 -30313
- package/dist/dist-9c3PXXpk.cjs.map +1 -0
- package/dist/{dist-Bw2XgCSY.cjs → dist-B5OwHWTo.cjs} +3 -3
- package/dist/{dist-Bw2XgCSY.cjs.map → dist-B5OwHWTo.cjs.map} +1 -1
- package/dist/{dist-C5TZXkhS.js → dist-B_bet8uz.js} +2 -2
- package/dist/{dist-C5TZXkhS.js.map → dist-B_bet8uz.js.map} +1 -1
- package/dist/{dist-8fx1_bLF.js → dist-BwYL7Ykb.js} +3 -3
- package/dist/{dist-8fx1_bLF.js.map → dist-BwYL7Ykb.js.map} +1 -1
- package/dist/{dist-_RnqhYfY.js → dist-BxMmGD3n.js} +3 -3
- package/dist/{dist-_RnqhYfY.js.map → dist-BxMmGD3n.js.map} +1 -1
- package/dist/{dist-D1oSHJhK.js → dist-CBRJax5e.js} +3 -3
- package/dist/{dist-D1oSHJhK.js.map → dist-CBRJax5e.js.map} +1 -1
- package/dist/{dist-D5mpJHHH.cjs → dist-CQ3FSKT-.cjs} +3 -3
- package/dist/{dist-D5mpJHHH.cjs.map → dist-CQ3FSKT-.cjs.map} +1 -1
- package/dist/{dist-CgemVduI.cjs → dist-DC1Pewf5.cjs} +4 -4
- package/dist/{dist-CgemVduI.cjs.map → dist-DC1Pewf5.cjs.map} +1 -1
- package/dist/{dist-CdMzvOLk.js → dist-DGCnbhNe.js} +36547 -30248
- package/dist/dist-DGCnbhNe.js.map +1 -0
- package/dist/{dist-BCTqy9i3.js → dist-DOWsEmo6.js} +4 -4
- package/dist/{dist-BCTqy9i3.js.map → dist-DOWsEmo6.js.map} +1 -1
- package/dist/{dist-Bz4l8I_x.js → dist-DcoIg_tp.js} +3 -3
- package/dist/{dist-Bz4l8I_x.js.map → dist-DcoIg_tp.js.map} +1 -1
- package/dist/{dist-UACuV_1t.cjs → dist-UKEksCGq.cjs} +3 -3
- package/dist/{dist-UACuV_1t.cjs.map → dist-UKEksCGq.cjs.map} +1 -1
- package/dist/{dist-tYOY8gEs.cjs → dist-rDRetJVY.cjs} +2 -2
- package/dist/{dist-tYOY8gEs.cjs.map → dist-rDRetJVY.cjs.map} +1 -1
- package/dist/docs/SKILL.md +2 -2
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/docs-guides-mcp-authentication-authorization.md +2 -2
- package/dist/docs/references/{reference-observability-tracing-trace-query.md → reference-observability-tracing-advanced-queries.md} +486 -158
- package/dist/{dynamic-workflows-BL3eD0zL.cjs → dynamic-workflows-DXlkr-jK.cjs} +2 -2
- package/dist/{dynamic-workflows-BL3eD0zL.cjs.map → dynamic-workflows-DXlkr-jK.cjs.map} +1 -1
- package/dist/{dynamic-workflows-BJfoQMo8.js → dynamic-workflows-Rr_6ac1y.js} +2 -2
- package/dist/{dynamic-workflows-BJfoQMo8.js.map → dynamic-workflows-Rr_6ac1y.js.map} +1 -1
- package/dist/{editor-builder-DqHKoEDx.cjs → editor-builder-BclcHxN6.cjs} +2 -2
- package/dist/{editor-builder-DqHKoEDx.cjs.map → editor-builder-BclcHxN6.cjs.map} +1 -1
- package/dist/{editor-builder-CeLVu_FT.js → editor-builder-D16kc1P6.js} +3 -3
- package/dist/{editor-builder-CeLVu_FT.js.map → editor-builder-D16kc1P6.js.map} +1 -1
- package/dist/{editor-builder-BOmAPurW.cjs → editor-builder-DXHiPX1A.cjs} +3 -3
- package/dist/{editor-builder-BOmAPurW.cjs.map → editor-builder-DXHiPX1A.cjs.map} +1 -1
- package/dist/{editor-builder-DHqCWGd2.js → editor-builder-s9WqPJgA.js} +2 -2
- package/dist/{editor-builder-DHqCWGd2.js.map → editor-builder-s9WqPJgA.js.map} +1 -1
- package/dist/{observability-new-endpoints-BoALDMSi.cjs → observability-new-endpoints-AMp9bnMV.cjs} +85 -17
- package/dist/observability-new-endpoints-AMp9bnMV.cjs.map +1 -0
- package/dist/{observability-new-endpoints-CB7T6Z7c.js → observability-new-endpoints-BU8JYPfh.js} +86 -18
- package/dist/observability-new-endpoints-BU8JYPfh.js.map +1 -0
- package/dist/{route-builder-2yrD15TL.cjs → route-builder-BNZs643f.cjs} +123 -17
- package/dist/{route-builder-2yrD15TL.cjs.map → route-builder-BNZs643f.cjs.map} +1 -1
- package/dist/{route-builder-lBil8Cvo.js → route-builder-BfQYtclb.js} +125 -19
- package/dist/route-builder-BfQYtclb.js.map +1 -0
- package/dist/{routes-CuJPLAh8.cjs → routes-DPojsNf1.cjs} +16 -15
- package/dist/routes-DPojsNf1.cjs.map +1 -0
- package/dist/{routes-BhI1lW_W.js → routes-rwufkyUe.js} +17 -16
- package/dist/routes-rwufkyUe.js.map +1 -0
- package/dist/{schedules-CrAmZ2gu.js → schedules-BQYgaz66.js} +3 -3
- package/dist/{schedules-CrAmZ2gu.js.map → schedules-BQYgaz66.js.map} +1 -1
- package/dist/{schedules-B0g72u5Y.cjs → schedules-Bj-giFbc.cjs} +3 -3
- package/dist/{schedules-B0g72u5Y.cjs.map → schedules-Bj-giFbc.cjs.map} +1 -1
- package/dist/schema-Drf2W04o.js +2 -0
- package/dist/schema-EQanefYq.cjs +1 -0
- package/dist/{schema-e0VHpMt0-BS9KHnuT.cjs → schema-e0VHpMt0-C0452jOk.cjs} +2 -2
- package/dist/{schema-e0VHpMt0-BS9KHnuT.cjs.map → schema-e0VHpMt0-C0452jOk.cjs.map} +1 -1
- package/dist/{schema-e0VHpMt0-CvPvLS06.js → schema-e0VHpMt0-CVP5Hnxy.js} +2 -2
- package/dist/{schema-e0VHpMt0-CvPvLS06.js.map → schema-e0VHpMt0-CVP5Hnxy.js.map} +1 -1
- package/dist/server/a2a/tasks.d.ts +2 -2
- package/dist/server/a2a/tasks.d.ts.map +1 -1
- package/dist/server/handlers/a2a.cjs +1 -1
- package/dist/server/handlers/a2a.d.ts +2 -2
- package/dist/server/handlers/a2a.d.ts.map +1 -1
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +4 -4
- package/dist/server/handlers/agent-builder.js +4 -4
- package/dist/server/handlers/agent-controller.cjs +259 -156
- package/dist/server/handlers/agent-controller.cjs.map +1 -1
- package/dist/server/handlers/agent-controller.d.ts +201 -150
- package/dist/server/handlers/agent-controller.d.ts.map +1 -1
- package/dist/server/handlers/agent-controller.js +259 -157
- package/dist/server/handlers/agent-controller.js.map +1 -1
- package/dist/server/handlers/agent-versions.cjs +2 -2
- package/dist/server/handlers/agent-versions.js +2 -2
- package/dist/server/handlers/agents.cjs +47 -27
- package/dist/server/handlers/agents.cjs.map +1 -1
- package/dist/server/handlers/agents.d.ts +14 -0
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +47 -27
- package/dist/server/handlers/agents.js.map +1 -1
- package/dist/server/handlers/auth.cjs +1 -1
- package/dist/server/handlers/auth.js +1 -1
- package/dist/server/handlers/background-tasks.cjs +1 -1
- package/dist/server/handlers/background-tasks.js +1 -1
- package/dist/server/handlers/builder-registry.cjs +1 -1
- package/dist/server/handlers/builder-registry.js +1 -1
- package/dist/server/handlers/channels.cjs +1 -1
- package/dist/server/handlers/channels.js +1 -1
- package/dist/server/handlers/conversations.cjs +2 -2
- package/dist/server/handlers/conversations.js +2 -2
- package/dist/server/handlers/datasets.cjs +12 -6
- package/dist/server/handlers/datasets.cjs.map +1 -1
- package/dist/server/handlers/datasets.d.ts +4 -0
- package/dist/server/handlers/datasets.d.ts.map +1 -1
- package/dist/server/handlers/datasets.js +12 -6
- package/dist/server/handlers/datasets.js.map +1 -1
- package/dist/server/handlers/dynamic-workflows.cjs +1 -1
- package/dist/server/handlers/dynamic-workflows.js +1 -1
- package/dist/server/handlers/editor-builder.cjs +1 -1
- package/dist/server/handlers/editor-builder.js +1 -1
- package/dist/server/handlers/error.cjs +14 -5
- package/dist/server/handlers/error.cjs.map +1 -1
- package/dist/server/handlers/error.d.ts.map +1 -1
- package/dist/server/handlers/error.js +14 -5
- package/dist/server/handlers/error.js.map +1 -1
- package/dist/server/handlers/favorites-enrichment.cjs +1 -1
- package/dist/server/handlers/favorites-enrichment.js +1 -1
- package/dist/server/handlers/logs.cjs +2 -2
- package/dist/server/handlers/logs.js +2 -2
- package/dist/server/handlers/mcp-client-versions.cjs +2 -2
- package/dist/server/handlers/mcp-client-versions.js +2 -2
- package/dist/server/handlers/mcp.cjs +1 -1
- package/dist/server/handlers/mcp.js +1 -1
- package/dist/server/handlers/memory.cjs +2 -2
- package/dist/server/handlers/memory.js +2 -2
- package/dist/server/handlers/observability-new-endpoints.cjs +1 -1
- package/dist/server/handlers/observability-new-endpoints.d.ts +443 -83
- package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
- package/dist/server/handlers/observability-new-endpoints.js +1 -1
- package/dist/server/handlers/observability-shared.cjs +125 -9
- package/dist/server/handlers/observability-shared.cjs.map +1 -1
- package/dist/server/handlers/observability-shared.d.ts +38 -2
- package/dist/server/handlers/observability-shared.d.ts.map +1 -1
- package/dist/server/handlers/observability-shared.js +118 -10
- package/dist/server/handlers/observability-shared.js.map +1 -1
- package/dist/server/handlers/observability.cjs +2 -2
- package/dist/server/handlers/observability.js +2 -2
- package/dist/server/handlers/plans.cjs +3 -3
- package/dist/server/handlers/plans.js +3 -3
- package/dist/server/handlers/processor-providers.cjs +1 -1
- package/dist/server/handlers/processor-providers.js +1 -1
- package/dist/server/handlers/processors.cjs +1 -1
- package/dist/server/handlers/processors.js +1 -1
- package/dist/server/handlers/prompt-block-versions.cjs +2 -2
- package/dist/server/handlers/prompt-block-versions.js +2 -2
- package/dist/server/handlers/responses.cjs +2 -2
- package/dist/server/handlers/responses.js +2 -2
- package/dist/server/handlers/responses.storage.cjs +1 -1
- package/dist/server/handlers/responses.storage.js +1 -1
- package/dist/server/handlers/schedules.cjs +1 -1
- package/dist/server/handlers/schedules.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +2 -2
- package/dist/server/handlers/scorer-versions.js +2 -2
- package/dist/server/handlers/scores.cjs +1 -1
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/stored-agent-favorites.cjs +3 -3
- package/dist/server/handlers/stored-agent-favorites.js +3 -3
- package/dist/server/handlers/stored-agents.cjs +3 -3
- package/dist/server/handlers/stored-agents.js +3 -3
- package/dist/server/handlers/stored-mcp-clients.cjs +2 -2
- package/dist/server/handlers/stored-mcp-clients.js +2 -2
- package/dist/server/handlers/stored-prompt-blocks.cjs +2 -2
- package/dist/server/handlers/stored-prompt-blocks.js +2 -2
- package/dist/server/handlers/stored-scorers.cjs +2 -2
- package/dist/server/handlers/stored-scorers.js +2 -2
- package/dist/server/handlers/stored-skill-favorites.cjs +3 -3
- package/dist/server/handlers/stored-skill-favorites.js +3 -3
- package/dist/server/handlers/stored-skills.cjs +3 -3
- package/dist/server/handlers/stored-skills.js +3 -3
- package/dist/server/handlers/stored-workspaces.cjs +2 -2
- package/dist/server/handlers/stored-workspaces.js +2 -2
- package/dist/server/handlers/system.cjs +3 -3
- package/dist/server/handlers/system.d.ts +12 -0
- package/dist/server/handlers/system.d.ts.map +1 -1
- package/dist/server/handlers/system.js +3 -3
- package/dist/server/handlers/tool-providers.cjs +1 -1
- package/dist/server/handlers/tool-providers.js +1 -1
- package/dist/server/handlers/tools.cjs +6 -6
- package/dist/server/handlers/tools.js +6 -6
- package/dist/server/handlers/utils.cjs +2 -1
- package/dist/server/handlers/utils.d.ts +9 -0
- package/dist/server/handlers/utils.d.ts.map +1 -1
- package/dist/server/handlers/utils.js +2 -2
- package/dist/server/handlers/validate-agent-instructions.cjs +1 -1
- package/dist/server/handlers/validate-agent-instructions.js +1 -1
- package/dist/server/handlers/vector.cjs +1 -1
- package/dist/server/handlers/vector.js +1 -1
- package/dist/server/handlers/workflow-builder.cjs +1 -1
- package/dist/server/handlers/workflow-builder.d.ts.map +1 -1
- package/dist/server/handlers/workflow-builder.js +1 -1
- package/dist/server/handlers/workflows.cjs +4 -4
- package/dist/server/handlers/workflows.js +4 -4
- package/dist/server/handlers/workspace.cjs +1 -1
- package/dist/server/handlers/workspace.js +1 -1
- package/dist/server/handlers.cjs +2 -2
- package/dist/server/handlers.js +2 -2
- package/dist/server/schemas/agents.d.ts +5 -0
- package/dist/server/schemas/agents.d.ts.map +1 -1
- package/dist/server/schemas/datasets.d.ts +2 -0
- package/dist/server/schemas/datasets.d.ts.map +1 -1
- package/dist/server/schemas/index.cjs +8 -8
- package/dist/server/schemas/index.js +8 -8
- package/dist/server/schemas/system.d.ts +12 -0
- package/dist/server/schemas/system.d.ts.map +1 -1
- package/dist/server/server-adapter/api-schema-manifest.d.ts +2 -0
- package/dist/server/server-adapter/api-schema-manifest.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +9 -4
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.d.ts.map +1 -1
- package/dist/server/server-adapter/index.js +9 -4
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/openapi-utils.d.ts +19 -1
- package/dist/server/server-adapter/openapi-utils.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/agent-controller.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/datasets.d.ts +4 -0
- package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/observability.d.ts +221 -41
- package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/system.d.ts +12 -0
- package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
- package/dist/{system-DY6UweSl.cjs → system-BvpFMIJB.cjs} +7 -1
- package/dist/system-BvpFMIJB.cjs.map +1 -0
- package/dist/{system-MGpkVA20.js → system-CpzPxRRq.js} +7 -1
- package/dist/system-CpzPxRRq.js.map +1 -0
- package/dist/{utils-D5DHrO3K.js → utils-BBJlS81s.js} +19 -2
- package/dist/{utils-D5DHrO3K.js.map → utils-BBJlS81s.js.map} +1 -1
- package/dist/{utils-tmrFs-gf.js → utils-DCAUeb6M.js} +3 -3
- package/dist/{utils-tmrFs-gf.js.map → utils-DCAUeb6M.js.map} +1 -1
- package/dist/{utils-BZdnPmsW.cjs → utils-DCgeTrq2.cjs} +3 -3
- package/dist/{utils-BZdnPmsW.cjs.map → utils-DCgeTrq2.cjs.map} +1 -1
- package/dist/{utils-CczRcgHQ.cjs → utils-Du-EpvDs.cjs} +24 -1
- package/dist/{utils-CczRcgHQ.cjs.map → utils-Du-EpvDs.cjs.map} +1 -1
- package/dist/{workflow-builder-DdSutoga.cjs → workflow-builder-Brj3IArM.cjs} +6 -6
- package/dist/workflow-builder-Brj3IArM.cjs.map +1 -0
- package/dist/{workflow-builder-DJ0eeJuG.js → workflow-builder-DOa1Vx6w.js} +6 -6
- package/dist/workflow-builder-DOa1Vx6w.js.map +1 -0
- package/package.json +10 -11
- package/dist/a2a-Dg3ylOKc.js.map +0 -1
- package/dist/agents-D9vpLghy.cjs.map +0 -1
- package/dist/agents-DNWDET4U.js.map +0 -1
- package/dist/api-schema-manifest-Dr8PM4Qj.cjs.map +0 -1
- package/dist/api-schema-manifest-aur2BK6a.js.map +0 -1
- package/dist/datasets-BdD8JWhx.cjs.map +0 -1
- package/dist/datasets-CKwh-k4I.js.map +0 -1
- package/dist/dist-B8rA8_Wt.cjs.map +0 -1
- package/dist/dist-CdMzvOLk.js.map +0 -1
- package/dist/observability-new-endpoints-BoALDMSi.cjs.map +0 -1
- package/dist/observability-new-endpoints-CB7T6Z7c.js.map +0 -1
- package/dist/route-builder-lBil8Cvo.js.map +0 -1
- package/dist/routes-BhI1lW_W.js.map +0 -1
- package/dist/routes-CuJPLAh8.cjs.map +0 -1
- package/dist/schema-BVcoNfni.cjs +0 -1
- package/dist/schema-Xxr5X5Je.js +0 -2
- package/dist/system-DY6UweSl.cjs.map +0 -1
- package/dist/system-MGpkVA20.js.map +0 -1
- package/dist/workflow-builder-DJ0eeJuG.js.map +0 -1
- 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-
|
|
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-
|
|
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
|
|
19
|
-
* `
|
|
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
|
-
|
|
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
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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,
|
|
107
|
+
async function getExistingSession(controller, sessionId, requestContext) {
|
|
81
108
|
await controller.init();
|
|
82
|
-
const session = await controller.
|
|
109
|
+
const session = await controller.getSession(sessionId, requestContext);
|
|
83
110
|
if (session) return session;
|
|
84
|
-
return getSession(controller,
|
|
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
|
-
|
|
148
|
+
sessionId: zod_v4.z.string()
|
|
122
149
|
});
|
|
123
150
|
/**
|
|
124
|
-
*
|
|
125
|
-
*
|
|
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
|
|
130
|
-
const
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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,
|
|
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
|
-
|
|
466
|
-
|
|
467
|
-
|
|
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/:
|
|
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,
|
|
583
|
+
handler: async ({ mastra, controllerId, sessionId, abortSignal, requestContext }) => {
|
|
529
584
|
try {
|
|
530
|
-
const session = await getExistingSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
665
|
+
handler: async ({ mastra, controllerId, sessionId, message, files, requestContext }) => {
|
|
611
666
|
try {
|
|
612
|
-
const session = await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
698
|
+
handler: async ({ mastra, controllerId, sessionId, requestContext }) => {
|
|
644
699
|
try {
|
|
645
|
-
(await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
720
|
+
handler: async ({ mastra, controllerId, sessionId, toolCallId, approved, alwaysAllowCategory, requestContext }) => {
|
|
666
721
|
try {
|
|
667
|
-
const session = await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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 ? "
|
|
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/:
|
|
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,
|
|
773
|
+
handler: async ({ mastra, controllerId, sessionId, toolCallId, runId, resumeData, requestContext }) => {
|
|
718
774
|
try {
|
|
719
|
-
const session = await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
810
|
+
handler: async ({ mastra, controllerId, sessionId, message, files, requestContext }) => {
|
|
755
811
|
try {
|
|
756
|
-
const session = await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
844
|
+
handler: async ({ mastra, controllerId, sessionId, modeId, requestContext }) => {
|
|
789
845
|
try {
|
|
790
|
-
await (await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
866
|
+
handler: async ({ mastra, controllerId, sessionId, modelId, thinkingLevel, requestContext }) => {
|
|
811
867
|
try {
|
|
812
|
-
await (await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
888
|
+
handler: async ({ mastra, controllerId, sessionId, threadId, requestContext }) => {
|
|
833
889
|
try {
|
|
834
|
-
const session = await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
955
|
+
handler: async ({ mastra, controllerId, sessionId, threadId: requestedThreadId, requestContext }) => {
|
|
858
956
|
try {
|
|
859
|
-
const session = await getExistingSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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
|
|
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,
|
|
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/:
|
|
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,
|
|
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),
|
|
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/:
|
|
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,
|
|
1175
|
+
handler: async ({ mastra, controllerId, sessionId, title, requestContext }) => {
|
|
1075
1176
|
try {
|
|
1076
|
-
const thread = await (await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
1205
|
+
handler: async ({ mastra, controllerId, sessionId, threadId, requestContext }) => {
|
|
1105
1206
|
try {
|
|
1106
|
-
await (await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
1230
|
+
handler: async ({ mastra, controllerId, sessionId, threadId, title, requestContext }) => {
|
|
1130
1231
|
try {
|
|
1131
|
-
const session = await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
1257
|
+
handler: async ({ mastra, controllerId, sessionId, sourceThreadId, title, requestContext }) => {
|
|
1157
1258
|
try {
|
|
1158
|
-
const thread = await (await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
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 ||
|
|
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/:
|
|
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,
|
|
1352
|
+
handler: async ({ mastra, controllerId, sessionId, message, files, requestContext }) => {
|
|
1251
1353
|
try {
|
|
1252
|
-
const session = await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
1434
|
+
handler: async ({ mastra, controllerId, sessionId, requestContext }) => {
|
|
1333
1435
|
try {
|
|
1334
1436
|
const controller = getAgentControllerOrThrow(mastra, controllerId);
|
|
1335
|
-
const session = await getExistingSession(controller,
|
|
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/:
|
|
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,
|
|
1457
|
+
handler: async ({ mastra, controllerId, sessionId, newResourceId, requestContext }) => {
|
|
1356
1458
|
try {
|
|
1357
1459
|
const controller = getAgentControllerOrThrow(mastra, controllerId);
|
|
1358
|
-
const session = await getSession(controller,
|
|
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/:
|
|
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,
|
|
1480
|
+
handler: async ({ mastra, controllerId, sessionId, requestContext }) => {
|
|
1379
1481
|
try {
|
|
1380
1482
|
const controller = getAgentControllerOrThrow(mastra, controllerId);
|
|
1381
|
-
const session = await getExistingSession(controller,
|
|
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/:
|
|
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,
|
|
1535
|
+
handler: async ({ mastra, controllerId, sessionId, requestContext }) => {
|
|
1434
1536
|
try {
|
|
1435
1537
|
const controller = getAgentControllerOrThrow(mastra, controllerId);
|
|
1436
|
-
const session = await getExistingSession(controller,
|
|
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/:
|
|
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,
|
|
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,
|
|
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/:
|
|
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,
|
|
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,
|
|
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/:
|
|
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,
|
|
1619
|
+
handler: async ({ mastra, controllerId, sessionId, requestContext }) => {
|
|
1518
1620
|
try {
|
|
1519
1621
|
const controller = getAgentControllerOrThrow(mastra, controllerId);
|
|
1520
|
-
const session = await getSession(controller,
|
|
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/:
|
|
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,
|
|
1644
|
+
handler: async ({ mastra, controllerId, sessionId, requestContext }) => {
|
|
1543
1645
|
try {
|
|
1544
|
-
const rules = (await getExistingSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
1669
|
+
handler: async ({ mastra, controllerId, sessionId, category, policy, requestContext }) => {
|
|
1568
1670
|
try {
|
|
1569
|
-
await (await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
1694
|
+
handler: async ({ mastra, controllerId, sessionId, toolName, policy, requestContext }) => {
|
|
1593
1695
|
try {
|
|
1594
|
-
await (await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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/:
|
|
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,
|
|
1720
|
+
handler: async ({ mastra, controllerId, sessionId, state, requestContext }) => {
|
|
1619
1721
|
try {
|
|
1620
|
-
await (await getSession(getAgentControllerOrThrow(mastra, controllerId),
|
|
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
|