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

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 (30) hide show
  1. package/dist/{api-schema-manifest-BiW4tqad.js → api-schema-manifest-BgWM-O7K.js} +2 -2
  2. package/dist/{api-schema-manifest-BiW4tqad.js.map → api-schema-manifest-BgWM-O7K.js.map} +1 -1
  3. package/dist/{api-schema-manifest-DvcVwlpA.cjs → api-schema-manifest-CI0gyTVi.cjs} +2 -2
  4. package/dist/{api-schema-manifest-DvcVwlpA.cjs.map → api-schema-manifest-CI0gyTVi.cjs.map} +1 -1
  5. package/dist/{dist-hfFDNas-.js → dist-B07TBQpE.js} +6 -5
  6. package/dist/{dist-hfFDNas-.js.map → dist-B07TBQpE.js.map} +1 -1
  7. package/dist/{dist-CKHUMrWI.cjs → dist-CWqDEEO3.cjs} +6 -5
  8. package/dist/{dist-CKHUMrWI.cjs.map → dist-CWqDEEO3.cjs.map} +1 -1
  9. package/dist/docs/SKILL.md +1 -1
  10. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  11. package/dist/{routes-gjTcauG8.js → routes-CMj-3iyu.js} +3 -2
  12. package/dist/routes-CMj-3iyu.js.map +1 -0
  13. package/dist/{routes-D36OQQe5.cjs → routes-CeX9JLW2.cjs} +2 -1
  14. package/dist/routes-CeX9JLW2.cjs.map +1 -0
  15. package/dist/server/handlers/agent-builder.cjs +1 -1
  16. package/dist/server/handlers/agent-builder.js +1 -1
  17. package/dist/server/handlers/agent-controller.cjs +55 -2
  18. package/dist/server/handlers/agent-controller.cjs.map +1 -1
  19. package/dist/server/handlers/agent-controller.d.ts +41 -0
  20. package/dist/server/handlers/agent-controller.d.ts.map +1 -1
  21. package/dist/server/handlers/agent-controller.js +56 -4
  22. package/dist/server/handlers/agent-controller.js.map +1 -1
  23. package/dist/server/handlers/system.cjs +1 -1
  24. package/dist/server/handlers/system.js +1 -1
  25. package/dist/server/server-adapter/index.cjs +1 -1
  26. package/dist/server/server-adapter/index.js +1 -1
  27. package/dist/server/server-adapter/routes/agent-controller.d.ts.map +1 -1
  28. package/package.json +7 -7
  29. package/dist/routes-D36OQQe5.cjs.map +0 -1
  30. package/dist/routes-gjTcauG8.js.map +0 -1
@@ -202,6 +202,7 @@ export declare const AGENT_CONTROLLER_TOOL_APPROVAL_ROUTE: Omit<import("@mastra/
202
202
  } & {
203
203
  toolCallId: string;
204
204
  approved: boolean;
205
+ alwaysAllowCategory?: boolean | undefined;
205
206
  requestContext?: Record<string, unknown> | undefined;
206
207
  } & import("../server-adapter").ServerContext): Promise<{
207
208
  ok: boolean;
@@ -225,6 +226,7 @@ export declare const AGENT_CONTROLLER_TOOL_APPROVAL_ROUTE: Omit<import("@mastra/
225
226
  }, z.core.$strip>, z.ZodObject<{
226
227
  toolCallId: z.ZodString;
227
228
  approved: z.ZodBoolean;
229
+ alwaysAllowCategory: z.ZodOptional<z.ZodBoolean>;
228
230
  requestContext: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
229
231
  }, z.core.$strip>, z.ZodObject<{
230
232
  ok: z.ZodBoolean;
@@ -467,6 +469,45 @@ export declare const SWITCH_AGENT_CONTROLLER_THREAD_ROUTE: Omit<import("@mastra/
467
469
  } & {
468
470
  readonly _mastraSchemaRoute: true;
469
471
  };
472
+ export declare const TRANSFER_AGENT_CONTROLLER_THREAD_OWNERSHIP_ROUTE: Omit<import("@mastra/core/server").ApiRoute, "createHandler" | "handler" | "method" | "openapi" | "path"> & {
473
+ method: "POST";
474
+ path: "/agent-controller/:controllerId/sessions/:resourceId/threads/:threadId/owner";
475
+ responseType: "json";
476
+ streamFormat?: 'sse' | 'stream';
477
+ sseFlushOnConnect?: boolean;
478
+ handler(params: {
479
+ controllerId: string;
480
+ resourceId: string;
481
+ threadId: string;
482
+ } & {
483
+ sessionScope?: string | undefined;
484
+ } & import("../server-adapter").ServerContext): Promise<{
485
+ ok: boolean;
486
+ ownerId: string;
487
+ }>;
488
+ pathParamSchema?: z.ZodSchema;
489
+ queryParamSchema?: z.ZodSchema;
490
+ bodySchema?: z.ZodSchema;
491
+ responseSchema?: z.ZodSchema;
492
+ openapi?: import("../server-adapter/openapi-utils").OpenAPIRoute;
493
+ maxBodySize?: number;
494
+ deprecated?: boolean;
495
+ requiresPermission?: import("@mastra/core/auth").MastraFGAPermissionInput | import("@mastra/core/auth").MastraFGAPermissionInput[];
496
+ fga?: import("@mastra/core/auth").FGARouteConfig;
497
+ onValidationError?: import("@mastra/core/server").ValidationErrorHook;
498
+ readonly __schemas?: import("../server-adapter").RouteSchemas<z.ZodObject<{
499
+ controllerId: z.ZodString;
500
+ resourceId: z.ZodString;
501
+ threadId: z.ZodString;
502
+ }, z.core.$strip>, z.ZodObject<{
503
+ sessionScope: z.ZodOptional<z.ZodString>;
504
+ }, z.core.$strip>, undefined, z.ZodObject<{
505
+ ok: z.ZodBoolean;
506
+ ownerId: z.ZodString;
507
+ }, z.core.$strip>> | undefined;
508
+ } & {
509
+ readonly _mastraSchemaRoute: true;
510
+ };
470
511
  export declare const GET_AGENT_CONTROLLER_SESSION_STATE_ROUTE: Omit<import("@mastra/core/server").ApiRoute, "createHandler" | "handler" | "method" | "openapi" | "path"> & {
471
512
  method: "GET";
472
513
  path: "/agent-controller/:controllerId/sessions/:resourceId";
@@ -1 +1 @@
1
- {"version":3,"file":"agent-controller.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/agent-controller.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAid3B,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqBvC,CAAC;AAEH,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BhD,CAAC;AAsCH,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkGhD,CAAC;AAEH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC9C,CAAC;AAEH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsB/C,CAAC;AAEH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwD/C,CAAC;AAEH,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CjD,CAAC;AAEH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B/C,CAAC;AAEH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuB7C,CAAC;AAEH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwB9C,CAAC;AAEH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyB/C,CAAC;AAEH,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqEnD,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqB5C,CAAC;AAYH,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBlD,CAAC;AAEH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmF9C,CAAC;AAEH,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgEnD,CAAC;AAMH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B/C,CAAC;AAEH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsB/C,CAAC;AAEH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B/C,CAAC;AAEH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B9C,CAAC;AAEH,eAAO,MAAM,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuFtD,CAAC;AAMH,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BnD,CAAC;AAMH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B7C,CAAC;AAMH,eAAO,MAAM,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBtD,CAAC;AAMH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsB/C,CAAC;AAMH,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBjD,CAAC;AAEH,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsBlD,CAAC;AAiCH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyB1C,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC1C,CAAC;AAEH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwC7C,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyB5C,CAAC;AAMH,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBjD,CAAC;AAEH,eAAO,MAAM,8CAA8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBzD,CAAC;AAEH,eAAO,MAAM,0CAA0C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwBrD,CAAC;AAQH,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwBnD,CAAC"}
1
+ {"version":3,"file":"agent-controller.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/agent-controller.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { t as HTTPException } from "../../http-exception-CyfxZB6W.js";
2
2
  import { n as createRoute } from "../../route-builder-lBil8Cvo.js";
3
3
  import { l as MASTRA_USER_KEY } from "../../constants-DazK_RZj.js";
4
4
  import { handleError } from "./error.js";
5
- import { t as enforceThreadAccess } from "../../utils-D5DHrO3K.js";
5
+ import { h as MastraFGAPermissions, t as enforceThreadAccess } from "../../utils-D5DHrO3K.js";
6
6
  import { E as includeSchema, F as messageOrderBySchema, h as filterSchema } from "../../memory-B58Q2LgU.js";
7
7
  import { z } from "zod/v4";
8
8
  //#region src/server/handlers/agent-controller.ts
@@ -159,7 +159,16 @@ const steerBodySchema = z.object({
159
159
  const toolApprovalBodySchema = z.object({
160
160
  toolCallId: z.string(),
161
161
  approved: z.boolean(),
162
+ /**
163
+ * Grants the gated tool's category to the thread that owns the call, then
164
+ * approves — the same "always allow" the in-process TUI offers. Requires
165
+ * `approved: true`.
166
+ */
167
+ alwaysAllowCategory: z.boolean().optional(),
162
168
  requestContext: bodyRequestContextSchema
169
+ }).refine((body) => !body.alwaysAllowCategory || body.approved, {
170
+ message: "alwaysAllowCategory requires approved: true",
171
+ path: ["alwaysAllowCategory"]
163
172
  });
164
173
  const toolSuspensionBodySchema = z.object({
165
174
  toolCallId: z.string().min(1),
@@ -261,6 +270,7 @@ const createSessionResponseSchema = z.object({
261
270
  threadId: z.string().optional()
262
271
  });
263
272
  const ackResponseSchema = z.object({ ok: z.boolean() });
273
+ const transferOwnershipResponseSchema = ackResponseSchema.extend({ ownerId: z.string() });
264
274
  const toolCommandAckResponseSchema = z.object({
265
275
  ok: z.boolean(),
266
276
  reason: z.enum([
@@ -660,13 +670,13 @@ const AGENT_CONTROLLER_TOOL_APPROVAL_ROUTE = createRoute({
660
670
  tags: ["AgentController"],
661
671
  requiresAuth: true,
662
672
  requiresPermission: "agent-controller:execute",
663
- handler: async ({ mastra, controllerId, resourceId, sessionScope, toolCallId, approved, requestContext }) => {
673
+ handler: async ({ mastra, controllerId, resourceId, sessionScope, toolCallId, approved, alwaysAllowCategory, requestContext }) => {
664
674
  try {
665
675
  const session = await getSession(getAgentControllerOrThrow(mastra, controllerId), resourceId, { scope: sessionScope }, requestContext);
666
676
  if ((toolCallId ? session.approval.isArmed({ toolCallId }) : session.approval.isArmed()) || !toolCallId) {
667
677
  const result = session.respondToToolApproval({
668
678
  toolCallId,
669
- decision: approved ? "approve" : "decline",
679
+ decision: !approved ? "decline" : alwaysAllowCategory ? "always_allow_category" : "approve",
670
680
  requestContext
671
681
  });
672
682
  if (!result.accepted) return {
@@ -686,6 +696,7 @@ const AGENT_CONTROLLER_TOOL_APPROVAL_ROUTE = createRoute({
686
696
  work: session.respondToPersistedToolApproval({
687
697
  toolCallId,
688
698
  approved,
699
+ alwaysAllowCategory,
689
700
  requestContext
690
701
  }).finally(() => session.releaseToolResponse(toolCallId)),
691
702
  session,
@@ -840,6 +851,47 @@ const SWITCH_AGENT_CONTROLLER_THREAD_ROUTE = createRoute({
840
851
  }
841
852
  }
842
853
  });
854
+ const TRANSFER_AGENT_CONTROLLER_THREAD_OWNERSHIP_ROUTE = createRoute({
855
+ method: "POST",
856
+ path: "/agent-controller/:controllerId/sessions/:resourceId/threads/:threadId/owner",
857
+ responseType: "json",
858
+ pathParamSchema: threadPathParams,
859
+ queryParamSchema: sessionScopeQuerySchema,
860
+ responseSchema: transferOwnershipResponseSchema,
861
+ summary: "Take ownership of a thread",
862
+ 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.",
863
+ tags: ["AgentController", "Threads"],
864
+ requiresAuth: true,
865
+ requiresPermission: "agent-controller:execute",
866
+ handler: async ({ mastra, controllerId, resourceId, sessionScope, threadId, requestContext }) => {
867
+ try {
868
+ const ownerId = getRequestMessageAuthor(requestContext)?.id;
869
+ if (!ownerId) throw new HTTPException(401, { message: "An authenticated user is required to transfer thread ownership" });
870
+ const controller = getAgentControllerOrThrow(mastra, controllerId);
871
+ await controller.init();
872
+ const thread = await controller.queryThreadById({ threadId });
873
+ if (!thread || thread.resourceId !== resourceId) throw new HTTPException(404, { message: "Thread not found" });
874
+ await enforceThreadAccess({
875
+ mastra,
876
+ requestContext,
877
+ threadId,
878
+ thread,
879
+ effectiveResourceId: resourceId,
880
+ permission: MastraFGAPermissions.MEMORY_WRITE
881
+ });
882
+ await (await getSession(controller, resourceId, { scope: sessionScope }, requestContext)).thread.transferOwnership({
883
+ toOwnerId: ownerId,
884
+ threadId
885
+ });
886
+ return {
887
+ ok: true,
888
+ ownerId
889
+ };
890
+ } catch (error) {
891
+ return handleError(error, "error transferring controller thread ownership");
892
+ }
893
+ }
894
+ });
843
895
  const GET_AGENT_CONTROLLER_SESSION_STATE_ROUTE = createRoute({
844
896
  method: "GET",
845
897
  path: "/agent-controller/:controllerId/sessions/:resourceId",
@@ -1621,6 +1673,6 @@ const SET_AGENT_CONTROLLER_SESSION_STATE_ROUTE = createRoute({
1621
1673
  }
1622
1674
  });
1623
1675
  //#endregion
1624
- export { ABORT_AGENT_CONTROLLER_SESSION_ROUTE, AGENT_CONTROLLER_TOOL_APPROVAL_ROUTE, AGENT_CONTROLLER_TOOL_SUSPENSION_ROUTE, CLEAR_AGENT_CONTROLLER_GOAL_ROUTE, CLONE_AGENT_CONTROLLER_THREAD_ROUTE, CREATE_AGENT_CONTROLLER_SESSION_ROUTE, CREATE_AGENT_CONTROLLER_THREAD_ROUTE, DELETE_AGENT_CONTROLLER_THREAD_ROUTE, FOLLOW_UP_AGENT_CONTROLLER_SESSION_ROUTE, GET_AGENT_CONTROLLER_GOAL_ROUTE, GET_AGENT_CONTROLLER_OM_RECORD_ROUTE, GET_AGENT_CONTROLLER_PERMISSIONS_ROUTE, GET_AGENT_CONTROLLER_RESOURCE_IDS_ROUTE, GET_AGENT_CONTROLLER_SESSION_STATE_ROUTE, GET_AGENT_CONTROLLER_WORKSPACE_STATUS_ROUTE, LIST_AGENT_CONTROLLERS_ROUTE, LIST_AGENT_CONTROLLER_ACTIVE_RUNS_ROUTE, LIST_AGENT_CONTROLLER_MODELS_ROUTE, LIST_AGENT_CONTROLLER_MODES_ROUTE, LIST_AGENT_CONTROLLER_THREADS_ROUTE, LIST_AGENT_CONTROLLER_THREAD_MESSAGES_ROUTE, RENAME_AGENT_CONTROLLER_THREAD_ROUTE, SEND_AGENT_CONTROLLER_MESSAGE_ROUTE, SEND_AGENT_CONTROLLER_NOTIFICATION_ROUTE, SET_AGENT_CONTROLLER_CATEGORY_PERMISSION_ROUTE, SET_AGENT_CONTROLLER_GOAL_ROUTE, SET_AGENT_CONTROLLER_RESOURCE_ID_ROUTE, SET_AGENT_CONTROLLER_SESSION_STATE_ROUTE, SET_AGENT_CONTROLLER_TOOL_PERMISSION_ROUTE, STEER_AGENT_CONTROLLER_SESSION_ROUTE, STREAM_AGENT_CONTROLLER_SESSION_ROUTE, SWITCH_AGENT_CONTROLLER_MODEL_ROUTE, SWITCH_AGENT_CONTROLLER_MODE_ROUTE, SWITCH_AGENT_CONTROLLER_THREAD_ROUTE, UPDATE_AGENT_CONTROLLER_GOAL_ROUTE };
1676
+ export { ABORT_AGENT_CONTROLLER_SESSION_ROUTE, AGENT_CONTROLLER_TOOL_APPROVAL_ROUTE, AGENT_CONTROLLER_TOOL_SUSPENSION_ROUTE, CLEAR_AGENT_CONTROLLER_GOAL_ROUTE, CLONE_AGENT_CONTROLLER_THREAD_ROUTE, CREATE_AGENT_CONTROLLER_SESSION_ROUTE, CREATE_AGENT_CONTROLLER_THREAD_ROUTE, DELETE_AGENT_CONTROLLER_THREAD_ROUTE, FOLLOW_UP_AGENT_CONTROLLER_SESSION_ROUTE, GET_AGENT_CONTROLLER_GOAL_ROUTE, GET_AGENT_CONTROLLER_OM_RECORD_ROUTE, GET_AGENT_CONTROLLER_PERMISSIONS_ROUTE, GET_AGENT_CONTROLLER_RESOURCE_IDS_ROUTE, GET_AGENT_CONTROLLER_SESSION_STATE_ROUTE, GET_AGENT_CONTROLLER_WORKSPACE_STATUS_ROUTE, LIST_AGENT_CONTROLLERS_ROUTE, LIST_AGENT_CONTROLLER_ACTIVE_RUNS_ROUTE, LIST_AGENT_CONTROLLER_MODELS_ROUTE, LIST_AGENT_CONTROLLER_MODES_ROUTE, LIST_AGENT_CONTROLLER_THREADS_ROUTE, LIST_AGENT_CONTROLLER_THREAD_MESSAGES_ROUTE, RENAME_AGENT_CONTROLLER_THREAD_ROUTE, SEND_AGENT_CONTROLLER_MESSAGE_ROUTE, SEND_AGENT_CONTROLLER_NOTIFICATION_ROUTE, SET_AGENT_CONTROLLER_CATEGORY_PERMISSION_ROUTE, SET_AGENT_CONTROLLER_GOAL_ROUTE, SET_AGENT_CONTROLLER_RESOURCE_ID_ROUTE, SET_AGENT_CONTROLLER_SESSION_STATE_ROUTE, SET_AGENT_CONTROLLER_TOOL_PERMISSION_ROUTE, STEER_AGENT_CONTROLLER_SESSION_ROUTE, STREAM_AGENT_CONTROLLER_SESSION_ROUTE, SWITCH_AGENT_CONTROLLER_MODEL_ROUTE, SWITCH_AGENT_CONTROLLER_MODE_ROUTE, SWITCH_AGENT_CONTROLLER_THREAD_ROUTE, TRANSFER_AGENT_CONTROLLER_THREAD_OWNERSHIP_ROUTE, UPDATE_AGENT_CONTROLLER_GOAL_ROUTE };
1625
1677
 
1626
1678
  //# sourceMappingURL=agent-controller.js.map