@mastra/server 1.46.1-alpha.0 → 1.46.1-alpha.1

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 (28) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/{api-schema-manifest-PVHR2FGG.cjs → api-schema-manifest-UURVUNXQ.cjs} +4 -4
  3. package/dist/{api-schema-manifest-PVHR2FGG.cjs.map → api-schema-manifest-UURVUNXQ.cjs.map} +1 -1
  4. package/dist/{api-schema-manifest-F6SF6FJT.js → api-schema-manifest-YB7LBQHE.js} +3 -3
  5. package/dist/{api-schema-manifest-F6SF6FJT.js.map → api-schema-manifest-YB7LBQHE.js.map} +1 -1
  6. package/dist/{chunk-E2EYPHRE.cjs → chunk-55YQXUOE.cjs} +3 -3
  7. package/dist/{chunk-E2EYPHRE.cjs.map → chunk-55YQXUOE.cjs.map} +1 -1
  8. package/dist/{chunk-FYBFIW5N.js → chunk-6UL3DHZP.js} +4 -4
  9. package/dist/{chunk-FYBFIW5N.js.map → chunk-6UL3DHZP.js.map} +1 -1
  10. package/dist/{chunk-7HMXQIPK.js → chunk-BIYCTKL5.js} +3 -3
  11. package/dist/{chunk-7HMXQIPK.js.map → chunk-BIYCTKL5.js.map} +1 -1
  12. package/dist/{chunk-2CLXY7EU.cjs → chunk-MIIC4RAA.cjs} +39 -39
  13. package/dist/{chunk-2CLXY7EU.cjs.map → chunk-MIIC4RAA.cjs.map} +1 -1
  14. package/dist/{chunk-MYNSU6B4.js → chunk-PWU43QJA.js} +3 -3
  15. package/dist/chunk-PWU43QJA.js.map +1 -0
  16. package/dist/{chunk-I6AIWII6.cjs → chunk-USOMBGLF.cjs} +3 -3
  17. package/dist/chunk-USOMBGLF.cjs.map +1 -0
  18. package/dist/docs/SKILL.md +1 -1
  19. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  20. package/dist/server/handlers/harness.cjs +35 -35
  21. package/dist/server/handlers/harness.js +1 -1
  22. package/dist/server/handlers/system.cjs +3 -3
  23. package/dist/server/handlers/system.js +1 -1
  24. package/dist/server/server-adapter/index.cjs +13 -13
  25. package/dist/server/server-adapter/index.js +2 -2
  26. package/package.json +6 -6
  27. package/dist/chunk-I6AIWII6.cjs.map +0 -1
  28. package/dist/chunk-MYNSU6B4.js.map +0 -1
@@ -1,144 +1,144 @@
1
1
  'use strict';
2
2
 
3
- var chunkI6AIWII6_cjs = require('../../chunk-I6AIWII6.cjs');
3
+ var chunkUSOMBGLF_cjs = require('../../chunk-USOMBGLF.cjs');
4
4
 
5
5
 
6
6
 
7
7
  Object.defineProperty(exports, "ABORT_HARNESS_SESSION_ROUTE", {
8
8
  enumerable: true,
9
- get: function () { return chunkI6AIWII6_cjs.ABORT_HARNESS_SESSION_ROUTE; }
9
+ get: function () { return chunkUSOMBGLF_cjs.ABORT_HARNESS_SESSION_ROUTE; }
10
10
  });
11
11
  Object.defineProperty(exports, "CLEAR_HARNESS_GOAL_ROUTE", {
12
12
  enumerable: true,
13
- get: function () { return chunkI6AIWII6_cjs.CLEAR_HARNESS_GOAL_ROUTE; }
13
+ get: function () { return chunkUSOMBGLF_cjs.CLEAR_HARNESS_GOAL_ROUTE; }
14
14
  });
15
15
  Object.defineProperty(exports, "CLONE_HARNESS_THREAD_ROUTE", {
16
16
  enumerable: true,
17
- get: function () { return chunkI6AIWII6_cjs.CLONE_HARNESS_THREAD_ROUTE; }
17
+ get: function () { return chunkUSOMBGLF_cjs.CLONE_HARNESS_THREAD_ROUTE; }
18
18
  });
19
19
  Object.defineProperty(exports, "CREATE_HARNESS_SESSION_ROUTE", {
20
20
  enumerable: true,
21
- get: function () { return chunkI6AIWII6_cjs.CREATE_HARNESS_SESSION_ROUTE; }
21
+ get: function () { return chunkUSOMBGLF_cjs.CREATE_HARNESS_SESSION_ROUTE; }
22
22
  });
23
23
  Object.defineProperty(exports, "CREATE_HARNESS_THREAD_ROUTE", {
24
24
  enumerable: true,
25
- get: function () { return chunkI6AIWII6_cjs.CREATE_HARNESS_THREAD_ROUTE; }
25
+ get: function () { return chunkUSOMBGLF_cjs.CREATE_HARNESS_THREAD_ROUTE; }
26
26
  });
27
27
  Object.defineProperty(exports, "DELETE_HARNESS_THREAD_ROUTE", {
28
28
  enumerable: true,
29
- get: function () { return chunkI6AIWII6_cjs.DELETE_HARNESS_THREAD_ROUTE; }
29
+ get: function () { return chunkUSOMBGLF_cjs.DELETE_HARNESS_THREAD_ROUTE; }
30
30
  });
31
31
  Object.defineProperty(exports, "FOLLOW_UP_HARNESS_SESSION_ROUTE", {
32
32
  enumerable: true,
33
- get: function () { return chunkI6AIWII6_cjs.FOLLOW_UP_HARNESS_SESSION_ROUTE; }
33
+ get: function () { return chunkUSOMBGLF_cjs.FOLLOW_UP_HARNESS_SESSION_ROUTE; }
34
34
  });
35
35
  Object.defineProperty(exports, "GET_HARNESS_GOAL_ROUTE", {
36
36
  enumerable: true,
37
- get: function () { return chunkI6AIWII6_cjs.GET_HARNESS_GOAL_ROUTE; }
37
+ get: function () { return chunkUSOMBGLF_cjs.GET_HARNESS_GOAL_ROUTE; }
38
38
  });
39
39
  Object.defineProperty(exports, "GET_HARNESS_OM_RECORD_ROUTE", {
40
40
  enumerable: true,
41
- get: function () { return chunkI6AIWII6_cjs.GET_HARNESS_OM_RECORD_ROUTE; }
41
+ get: function () { return chunkUSOMBGLF_cjs.GET_HARNESS_OM_RECORD_ROUTE; }
42
42
  });
43
43
  Object.defineProperty(exports, "GET_HARNESS_PERMISSIONS_ROUTE", {
44
44
  enumerable: true,
45
- get: function () { return chunkI6AIWII6_cjs.GET_HARNESS_PERMISSIONS_ROUTE; }
45
+ get: function () { return chunkUSOMBGLF_cjs.GET_HARNESS_PERMISSIONS_ROUTE; }
46
46
  });
47
47
  Object.defineProperty(exports, "GET_HARNESS_RESOURCE_IDS_ROUTE", {
48
48
  enumerable: true,
49
- get: function () { return chunkI6AIWII6_cjs.GET_HARNESS_RESOURCE_IDS_ROUTE; }
49
+ get: function () { return chunkUSOMBGLF_cjs.GET_HARNESS_RESOURCE_IDS_ROUTE; }
50
50
  });
51
51
  Object.defineProperty(exports, "GET_HARNESS_SESSION_STATE_ROUTE", {
52
52
  enumerable: true,
53
- get: function () { return chunkI6AIWII6_cjs.GET_HARNESS_SESSION_STATE_ROUTE; }
53
+ get: function () { return chunkUSOMBGLF_cjs.GET_HARNESS_SESSION_STATE_ROUTE; }
54
54
  });
55
55
  Object.defineProperty(exports, "GET_HARNESS_WORKSPACE_STATUS_ROUTE", {
56
56
  enumerable: true,
57
- get: function () { return chunkI6AIWII6_cjs.GET_HARNESS_WORKSPACE_STATUS_ROUTE; }
57
+ get: function () { return chunkUSOMBGLF_cjs.GET_HARNESS_WORKSPACE_STATUS_ROUTE; }
58
58
  });
59
59
  Object.defineProperty(exports, "HARNESS_TOOL_APPROVAL_ROUTE", {
60
60
  enumerable: true,
61
- get: function () { return chunkI6AIWII6_cjs.HARNESS_TOOL_APPROVAL_ROUTE; }
61
+ get: function () { return chunkUSOMBGLF_cjs.HARNESS_TOOL_APPROVAL_ROUTE; }
62
62
  });
63
63
  Object.defineProperty(exports, "HARNESS_TOOL_SUSPENSION_ROUTE", {
64
64
  enumerable: true,
65
- get: function () { return chunkI6AIWII6_cjs.HARNESS_TOOL_SUSPENSION_ROUTE; }
65
+ get: function () { return chunkUSOMBGLF_cjs.HARNESS_TOOL_SUSPENSION_ROUTE; }
66
66
  });
67
67
  Object.defineProperty(exports, "LIST_HARNESSES_ROUTE", {
68
68
  enumerable: true,
69
- get: function () { return chunkI6AIWII6_cjs.LIST_HARNESSES_ROUTE; }
69
+ get: function () { return chunkUSOMBGLF_cjs.LIST_HARNESSES_ROUTE; }
70
70
  });
71
71
  Object.defineProperty(exports, "LIST_HARNESS_MODELS_ROUTE", {
72
72
  enumerable: true,
73
- get: function () { return chunkI6AIWII6_cjs.LIST_HARNESS_MODELS_ROUTE; }
73
+ get: function () { return chunkUSOMBGLF_cjs.LIST_HARNESS_MODELS_ROUTE; }
74
74
  });
75
75
  Object.defineProperty(exports, "LIST_HARNESS_MODES_ROUTE", {
76
76
  enumerable: true,
77
- get: function () { return chunkI6AIWII6_cjs.LIST_HARNESS_MODES_ROUTE; }
77
+ get: function () { return chunkUSOMBGLF_cjs.LIST_HARNESS_MODES_ROUTE; }
78
78
  });
79
79
  Object.defineProperty(exports, "LIST_HARNESS_THREADS_ROUTE", {
80
80
  enumerable: true,
81
- get: function () { return chunkI6AIWII6_cjs.LIST_HARNESS_THREADS_ROUTE; }
81
+ get: function () { return chunkUSOMBGLF_cjs.LIST_HARNESS_THREADS_ROUTE; }
82
82
  });
83
83
  Object.defineProperty(exports, "LIST_HARNESS_THREAD_MESSAGES_ROUTE", {
84
84
  enumerable: true,
85
- get: function () { return chunkI6AIWII6_cjs.LIST_HARNESS_THREAD_MESSAGES_ROUTE; }
85
+ get: function () { return chunkUSOMBGLF_cjs.LIST_HARNESS_THREAD_MESSAGES_ROUTE; }
86
86
  });
87
87
  Object.defineProperty(exports, "RENAME_HARNESS_THREAD_ROUTE", {
88
88
  enumerable: true,
89
- get: function () { return chunkI6AIWII6_cjs.RENAME_HARNESS_THREAD_ROUTE; }
89
+ get: function () { return chunkUSOMBGLF_cjs.RENAME_HARNESS_THREAD_ROUTE; }
90
90
  });
91
91
  Object.defineProperty(exports, "SEND_HARNESS_MESSAGE_ROUTE", {
92
92
  enumerable: true,
93
- get: function () { return chunkI6AIWII6_cjs.SEND_HARNESS_MESSAGE_ROUTE; }
93
+ get: function () { return chunkUSOMBGLF_cjs.SEND_HARNESS_MESSAGE_ROUTE; }
94
94
  });
95
95
  Object.defineProperty(exports, "SEND_HARNESS_NOTIFICATION_ROUTE", {
96
96
  enumerable: true,
97
- get: function () { return chunkI6AIWII6_cjs.SEND_HARNESS_NOTIFICATION_ROUTE; }
97
+ get: function () { return chunkUSOMBGLF_cjs.SEND_HARNESS_NOTIFICATION_ROUTE; }
98
98
  });
99
99
  Object.defineProperty(exports, "SET_HARNESS_CATEGORY_PERMISSION_ROUTE", {
100
100
  enumerable: true,
101
- get: function () { return chunkI6AIWII6_cjs.SET_HARNESS_CATEGORY_PERMISSION_ROUTE; }
101
+ get: function () { return chunkUSOMBGLF_cjs.SET_HARNESS_CATEGORY_PERMISSION_ROUTE; }
102
102
  });
103
103
  Object.defineProperty(exports, "SET_HARNESS_GOAL_ROUTE", {
104
104
  enumerable: true,
105
- get: function () { return chunkI6AIWII6_cjs.SET_HARNESS_GOAL_ROUTE; }
105
+ get: function () { return chunkUSOMBGLF_cjs.SET_HARNESS_GOAL_ROUTE; }
106
106
  });
107
107
  Object.defineProperty(exports, "SET_HARNESS_RESOURCE_ID_ROUTE", {
108
108
  enumerable: true,
109
- get: function () { return chunkI6AIWII6_cjs.SET_HARNESS_RESOURCE_ID_ROUTE; }
109
+ get: function () { return chunkUSOMBGLF_cjs.SET_HARNESS_RESOURCE_ID_ROUTE; }
110
110
  });
111
111
  Object.defineProperty(exports, "SET_HARNESS_SESSION_STATE_ROUTE", {
112
112
  enumerable: true,
113
- get: function () { return chunkI6AIWII6_cjs.SET_HARNESS_SESSION_STATE_ROUTE; }
113
+ get: function () { return chunkUSOMBGLF_cjs.SET_HARNESS_SESSION_STATE_ROUTE; }
114
114
  });
115
115
  Object.defineProperty(exports, "SET_HARNESS_TOOL_PERMISSION_ROUTE", {
116
116
  enumerable: true,
117
- get: function () { return chunkI6AIWII6_cjs.SET_HARNESS_TOOL_PERMISSION_ROUTE; }
117
+ get: function () { return chunkUSOMBGLF_cjs.SET_HARNESS_TOOL_PERMISSION_ROUTE; }
118
118
  });
119
119
  Object.defineProperty(exports, "STEER_HARNESS_SESSION_ROUTE", {
120
120
  enumerable: true,
121
- get: function () { return chunkI6AIWII6_cjs.STEER_HARNESS_SESSION_ROUTE; }
121
+ get: function () { return chunkUSOMBGLF_cjs.STEER_HARNESS_SESSION_ROUTE; }
122
122
  });
123
123
  Object.defineProperty(exports, "STREAM_HARNESS_SESSION_ROUTE", {
124
124
  enumerable: true,
125
- get: function () { return chunkI6AIWII6_cjs.STREAM_HARNESS_SESSION_ROUTE; }
125
+ get: function () { return chunkUSOMBGLF_cjs.STREAM_HARNESS_SESSION_ROUTE; }
126
126
  });
127
127
  Object.defineProperty(exports, "SWITCH_HARNESS_MODEL_ROUTE", {
128
128
  enumerable: true,
129
- get: function () { return chunkI6AIWII6_cjs.SWITCH_HARNESS_MODEL_ROUTE; }
129
+ get: function () { return chunkUSOMBGLF_cjs.SWITCH_HARNESS_MODEL_ROUTE; }
130
130
  });
131
131
  Object.defineProperty(exports, "SWITCH_HARNESS_MODE_ROUTE", {
132
132
  enumerable: true,
133
- get: function () { return chunkI6AIWII6_cjs.SWITCH_HARNESS_MODE_ROUTE; }
133
+ get: function () { return chunkUSOMBGLF_cjs.SWITCH_HARNESS_MODE_ROUTE; }
134
134
  });
135
135
  Object.defineProperty(exports, "SWITCH_HARNESS_THREAD_ROUTE", {
136
136
  enumerable: true,
137
- get: function () { return chunkI6AIWII6_cjs.SWITCH_HARNESS_THREAD_ROUTE; }
137
+ get: function () { return chunkUSOMBGLF_cjs.SWITCH_HARNESS_THREAD_ROUTE; }
138
138
  });
139
139
  Object.defineProperty(exports, "UPDATE_HARNESS_GOAL_ROUTE", {
140
140
  enumerable: true,
141
- get: function () { return chunkI6AIWII6_cjs.UPDATE_HARNESS_GOAL_ROUTE; }
141
+ get: function () { return chunkUSOMBGLF_cjs.UPDATE_HARNESS_GOAL_ROUTE; }
142
142
  });
143
143
  //# sourceMappingURL=harness.cjs.map
144
144
  //# sourceMappingURL=harness.cjs.map
@@ -1,3 +1,3 @@
1
- export { ABORT_HARNESS_SESSION_ROUTE, CLEAR_HARNESS_GOAL_ROUTE, CLONE_HARNESS_THREAD_ROUTE, CREATE_HARNESS_SESSION_ROUTE, CREATE_HARNESS_THREAD_ROUTE, DELETE_HARNESS_THREAD_ROUTE, FOLLOW_UP_HARNESS_SESSION_ROUTE, GET_HARNESS_GOAL_ROUTE, GET_HARNESS_OM_RECORD_ROUTE, GET_HARNESS_PERMISSIONS_ROUTE, GET_HARNESS_RESOURCE_IDS_ROUTE, GET_HARNESS_SESSION_STATE_ROUTE, GET_HARNESS_WORKSPACE_STATUS_ROUTE, HARNESS_TOOL_APPROVAL_ROUTE, HARNESS_TOOL_SUSPENSION_ROUTE, LIST_HARNESSES_ROUTE, LIST_HARNESS_MODELS_ROUTE, LIST_HARNESS_MODES_ROUTE, LIST_HARNESS_THREADS_ROUTE, LIST_HARNESS_THREAD_MESSAGES_ROUTE, RENAME_HARNESS_THREAD_ROUTE, SEND_HARNESS_MESSAGE_ROUTE, SEND_HARNESS_NOTIFICATION_ROUTE, SET_HARNESS_CATEGORY_PERMISSION_ROUTE, SET_HARNESS_GOAL_ROUTE, SET_HARNESS_RESOURCE_ID_ROUTE, SET_HARNESS_SESSION_STATE_ROUTE, SET_HARNESS_TOOL_PERMISSION_ROUTE, STEER_HARNESS_SESSION_ROUTE, STREAM_HARNESS_SESSION_ROUTE, SWITCH_HARNESS_MODEL_ROUTE, SWITCH_HARNESS_MODE_ROUTE, SWITCH_HARNESS_THREAD_ROUTE, UPDATE_HARNESS_GOAL_ROUTE } from '../../chunk-MYNSU6B4.js';
1
+ export { ABORT_HARNESS_SESSION_ROUTE, CLEAR_HARNESS_GOAL_ROUTE, CLONE_HARNESS_THREAD_ROUTE, CREATE_HARNESS_SESSION_ROUTE, CREATE_HARNESS_THREAD_ROUTE, DELETE_HARNESS_THREAD_ROUTE, FOLLOW_UP_HARNESS_SESSION_ROUTE, GET_HARNESS_GOAL_ROUTE, GET_HARNESS_OM_RECORD_ROUTE, GET_HARNESS_PERMISSIONS_ROUTE, GET_HARNESS_RESOURCE_IDS_ROUTE, GET_HARNESS_SESSION_STATE_ROUTE, GET_HARNESS_WORKSPACE_STATUS_ROUTE, HARNESS_TOOL_APPROVAL_ROUTE, HARNESS_TOOL_SUSPENSION_ROUTE, LIST_HARNESSES_ROUTE, LIST_HARNESS_MODELS_ROUTE, LIST_HARNESS_MODES_ROUTE, LIST_HARNESS_THREADS_ROUTE, LIST_HARNESS_THREAD_MESSAGES_ROUTE, RENAME_HARNESS_THREAD_ROUTE, SEND_HARNESS_MESSAGE_ROUTE, SEND_HARNESS_NOTIFICATION_ROUTE, SET_HARNESS_CATEGORY_PERMISSION_ROUTE, SET_HARNESS_GOAL_ROUTE, SET_HARNESS_RESOURCE_ID_ROUTE, SET_HARNESS_SESSION_STATE_ROUTE, SET_HARNESS_TOOL_PERMISSION_ROUTE, STEER_HARNESS_SESSION_ROUTE, STREAM_HARNESS_SESSION_ROUTE, SWITCH_HARNESS_MODEL_ROUTE, SWITCH_HARNESS_MODE_ROUTE, SWITCH_HARNESS_THREAD_ROUTE, UPDATE_HARNESS_GOAL_ROUTE } from '../../chunk-PWU43QJA.js';
2
2
  //# sourceMappingURL=harness.js.map
3
3
  //# sourceMappingURL=harness.js.map
@@ -1,16 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var chunkE2EYPHRE_cjs = require('../../chunk-E2EYPHRE.cjs');
3
+ var chunk55YQXUOE_cjs = require('../../chunk-55YQXUOE.cjs');
4
4
 
5
5
 
6
6
 
7
7
  Object.defineProperty(exports, "GET_API_SCHEMA_ROUTE", {
8
8
  enumerable: true,
9
- get: function () { return chunkE2EYPHRE_cjs.GET_API_SCHEMA_ROUTE; }
9
+ get: function () { return chunk55YQXUOE_cjs.GET_API_SCHEMA_ROUTE; }
10
10
  });
11
11
  Object.defineProperty(exports, "GET_SYSTEM_PACKAGES_ROUTE", {
12
12
  enumerable: true,
13
- get: function () { return chunkE2EYPHRE_cjs.GET_SYSTEM_PACKAGES_ROUTE; }
13
+ get: function () { return chunk55YQXUOE_cjs.GET_SYSTEM_PACKAGES_ROUTE; }
14
14
  });
15
15
  //# sourceMappingURL=system.cjs.map
16
16
  //# sourceMappingURL=system.cjs.map
@@ -1,3 +1,3 @@
1
- export { GET_API_SCHEMA_ROUTE, GET_SYSTEM_PACKAGES_ROUTE } from '../../chunk-7HMXQIPK.js';
1
+ export { GET_API_SCHEMA_ROUTE, GET_SYSTEM_PACKAGES_ROUTE } from '../../chunk-BIYCTKL5.js';
2
2
  //# sourceMappingURL=system.js.map
3
3
  //# sourceMappingURL=system.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk2CLXY7EU_cjs = require('../../chunk-2CLXY7EU.cjs');
3
+ var chunkMIIC4RAA_cjs = require('../../chunk-MIIC4RAA.cjs');
4
4
  var chunk4PQR3D5Y_cjs = require('../../chunk-4PQR3D5Y.cjs');
5
5
  var chunkGZ4HWZWE_cjs = require('../../chunk-GZ4HWZWE.cjs');
6
6
  var chunkZ7LCIYK7_cjs = require('../../chunk-Z7LCIYK7.cjs');
@@ -63,7 +63,7 @@ function getBuiltInRouteFGAConfig(route) {
63
63
  if (!isProtectedFGARoute(route) || !route.path || !route.method) {
64
64
  return null;
65
65
  }
66
- const permission = chunk2CLXY7EU_cjs.getEffectivePermission(route);
66
+ const permission = chunkMIIC4RAA_cjs.getEffectivePermission(route);
67
67
  if (!permission) {
68
68
  return null;
69
69
  }
@@ -277,7 +277,7 @@ function getFGARouteInfo(route) {
277
277
  };
278
278
  }
279
279
  function getRoutePermissions(route) {
280
- return [chunk2CLXY7EU_cjs.getEffectivePermission(route), route.fga?.permission].flatMap((value) => Array.isArray(value) ? value : [value]).filter((permission) => Boolean(permission));
280
+ return [chunkMIIC4RAA_cjs.getEffectivePermission(route), route.fga?.permission].flatMap((value) => Array.isArray(value) ? value : [value]).filter((permission) => Boolean(permission));
281
281
  }
282
282
  async function resolveRouteFGAConfig(fgaProvider, route, requestContext, params) {
283
283
  if (route.fga) {
@@ -611,7 +611,7 @@ var MastraServer = class _MastraServer extends server.MastraServerBase {
611
611
  if (!rbacProvider) {
612
612
  return null;
613
613
  }
614
- const requiredPermission = chunk2CLXY7EU_cjs.getEffectivePermission(route);
614
+ const requiredPermission = chunkMIIC4RAA_cjs.getEffectivePermission(route);
615
615
  if (!requiredPermission) {
616
616
  return null;
617
617
  }
@@ -704,7 +704,7 @@ Ensure @mastra/core is updated to a version that includes EE support.`
704
704
  const customRoutes = (this.customApiRoutes ?? serverConfig?.apiRoutes ?? []).filter(
705
705
  (route) => !route._mastraInternal
706
706
  );
707
- const routes = [...chunk2CLXY7EU_cjs.SERVER_ROUTES, ...customRoutes];
707
+ const routes = [...chunkMIIC4RAA_cjs.SERVER_ROUTES, ...customRoutes];
708
708
  if (fgaProvider.validatePermissions) {
709
709
  const permissions = [...new Set(routes.flatMap((route) => getRoutePermissions(route)))];
710
710
  await fgaProvider.validatePermissions(permissions);
@@ -876,7 +876,7 @@ Ensure @mastra/core is updated to a version that includes EE support.`
876
876
  * Builds the OpenAPI spec object with servers field and custom route paths.
877
877
  */
878
878
  buildOpenAPISpec(config, prefix) {
879
- const openApiSpec = chunkG54X6VE6_cjs.generateOpenAPIDocument(chunk2CLXY7EU_cjs.SERVER_ROUTES, config);
879
+ const openApiSpec = chunkG54X6VE6_cjs.generateOpenAPIDocument(chunkMIIC4RAA_cjs.SERVER_ROUTES, config);
880
880
  if (prefix) {
881
881
  openApiSpec.servers = [{ url: prefix }];
882
882
  }
@@ -911,7 +911,7 @@ Ensure @mastra/core is updated to a version that includes EE support.`
911
911
  await this.registerRoute(app, openApiRoute, { prefix });
912
912
  }
913
913
  async registerRoutes() {
914
- for (const route of chunk2CLXY7EU_cjs.SERVER_ROUTES) {
914
+ for (const route of chunkMIIC4RAA_cjs.SERVER_ROUTES) {
915
915
  await this.registerRoute(this.app, route, { prefix: this.prefix });
916
916
  }
917
917
  if (this.openapiPath) {
@@ -1000,7 +1000,7 @@ async function checkRouteFGA(mastra, route, requestContext, params) {
1000
1000
  message: "FGA authorization denied: route FGA metadata is incomplete"
1001
1001
  };
1002
1002
  }
1003
- const effectivePermission = route.path ? chunk2CLXY7EU_cjs.getEffectivePermission(route) : null;
1003
+ const effectivePermission = route.path ? chunkMIIC4RAA_cjs.getEffectivePermission(route) : null;
1004
1004
  const permission = fgaConfig.permission || effectivePermission || `${getFGAResourcePermissionSlug(fgaConfig.resourceType)}:${deriveFGAAction(route.method)}`;
1005
1005
  const authorized = await fgaProvider.check(user, {
1006
1006
  resource: { type: fgaConfig.resourceType, id: resourceId },
@@ -1042,23 +1042,23 @@ function getFGAResourcePermissionSlug(resourceType) {
1042
1042
 
1043
1043
  Object.defineProperty(exports, "SERVER_ROUTES", {
1044
1044
  enumerable: true,
1045
- get: function () { return chunk2CLXY7EU_cjs.SERVER_ROUTES; }
1045
+ get: function () { return chunkMIIC4RAA_cjs.SERVER_ROUTES; }
1046
1046
  });
1047
1047
  Object.defineProperty(exports, "deriveAction", {
1048
1048
  enumerable: true,
1049
- get: function () { return chunk2CLXY7EU_cjs.deriveAction; }
1049
+ get: function () { return chunkMIIC4RAA_cjs.deriveAction; }
1050
1050
  });
1051
1051
  Object.defineProperty(exports, "derivePermission", {
1052
1052
  enumerable: true,
1053
- get: function () { return chunk2CLXY7EU_cjs.derivePermission; }
1053
+ get: function () { return chunkMIIC4RAA_cjs.derivePermission; }
1054
1054
  });
1055
1055
  Object.defineProperty(exports, "extractResource", {
1056
1056
  enumerable: true,
1057
- get: function () { return chunk2CLXY7EU_cjs.extractResource; }
1057
+ get: function () { return chunkMIIC4RAA_cjs.extractResource; }
1058
1058
  });
1059
1059
  Object.defineProperty(exports, "getEffectivePermission", {
1060
1060
  enumerable: true,
1061
- get: function () { return chunk2CLXY7EU_cjs.getEffectivePermission; }
1061
+ get: function () { return chunkMIIC4RAA_cjs.getEffectivePermission; }
1062
1062
  });
1063
1063
  Object.defineProperty(exports, "WorkflowRegistry", {
1064
1064
  enumerable: true,
@@ -1,5 +1,5 @@
1
- import { getEffectivePermission, SERVER_ROUTES } from '../../chunk-FYBFIW5N.js';
2
- export { SERVER_ROUTES, deriveAction, derivePermission, extractResource, getEffectivePermission } from '../../chunk-FYBFIW5N.js';
1
+ import { getEffectivePermission, SERVER_ROUTES } from '../../chunk-6UL3DHZP.js';
2
+ export { SERVER_ROUTES, deriveAction, derivePermission, extractResource, getEffectivePermission } from '../../chunk-6UL3DHZP.js';
3
3
  import { coreAuthMiddleware } from '../../chunk-HATXNJ4V.js';
4
4
  import { normalizeRoutePath } from '../../chunk-IBUJJIRW.js';
5
5
  export { WorkflowRegistry, normalizeRoutePath } from '../../chunk-IBUJJIRW.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/server",
3
- "version": "1.46.1-alpha.0",
3
+ "version": "1.46.1-alpha.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "files": [
@@ -115,15 +115,15 @@
115
115
  "vitest": "4.1.8",
116
116
  "zod": "^4.4.3",
117
117
  "zod-to-ts": "^2.1.0",
118
+ "@internal/storage-test-utils": "0.0.104",
118
119
  "@internal/core": "0.1.0",
119
120
  "@internal/lint": "0.0.108",
120
- "@internal/storage-test-utils": "0.0.104",
121
- "@internal/voice": "0.0.8",
122
121
  "@internal/test-utils": "0.0.44",
123
- "@mastra/agent-builder": "1.1.1",
122
+ "@internal/types-builder": "0.0.83",
123
+ "@internal/voice": "0.0.8",
124
+ "@mastra/agent-builder": "1.1.2-alpha.0",
124
125
  "@mastra/schema-compat": "1.3.0",
125
- "@mastra/core": "1.46.1-alpha.0",
126
- "@internal/types-builder": "0.0.83"
126
+ "@mastra/core": "1.46.1-alpha.1"
127
127
  },
128
128
  "homepage": "https://mastra.ai",
129
129
  "repository": {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/server/handlers/harness.ts"],"names":["HTTPException","z","createRoute","handleError"],"mappings":"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","file":"chunk-I6AIWII6.cjs","sourcesContent":["import type { Agent } from '@mastra/core/agent';\nimport type { Harness, Session } from '@mastra/core/harness';\nimport { z } from 'zod/v4';\n\nimport { HTTPException } from '../http-exception';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\n\n/**\n * Harness session routes.\n *\n * A Harness registered on a Mastra instance (via `new Mastra({ harnesses })`)\n * exposes its sessions over HTTP so non-terminal clients — e.g. a browser-based\n * MastraCode — can create sessions, send messages, stream events, and drive\n * run-control. Each route resolves its target Harness by id, then operates on a\n * session bound to a `resourceId` (get-or-create, so reconnects resume rather\n * than fork the conversation).\n */\n\nfunction getHarnessOrThrow(\n mastra: { getHarness: (id: string) => Harness<any> | undefined },\n harnessId: string,\n): Harness<any> {\n const harness = mastra.getHarness(harnessId);\n if (!harness) {\n throw new HTTPException(404, { message: `harness \"${harnessId}\" not found` });\n }\n return harness;\n}\n\nasync function getSession(harness: Harness<any>, resourceId: string): Promise<Session<any>> {\n await harness.init();\n return harness.createSession({ resourceId });\n}\n\n// ---------------------------------------------------------------------------\n// Schemas\n// ---------------------------------------------------------------------------\n\nconst harnessIdPathParams = z.object({ harnessId: z.string() });\nconst sessionPathParams = z.object({ harnessId: z.string(), resourceId: z.string() });\n\nconst createSessionBodySchema = z.object({ resourceId: z.string() });\nconst sendMessageBodySchema = z.object({ message: z.string() });\nconst steerBodySchema = z.object({ message: z.string() });\nconst toolApprovalBodySchema = z.object({\n toolCallId: z.string(),\n approved: z.boolean(),\n});\nconst toolSuspensionBodySchema = z.object({\n toolCallId: z.string(),\n // Free-form resume payload. For ask_user this is a string (or string[] for\n // multi-select); for submit_plan it's `{ action, feedback? }`; for\n // request_access it's \"Yes\"/\"No\".\n resumeData: z.any(),\n});\nconst switchModeBodySchema = z.object({ modeId: z.string() });\nconst switchModelBodySchema = z.object({\n modelId: z.string(),\n scope: z.enum(['global', 'thread']).optional(),\n modeId: z.string().optional(),\n});\nconst switchThreadBodySchema = z.object({ threadId: z.string() });\nconst createThreadBodySchema = z.object({ title: z.string().optional() });\nconst renameThreadBodySchema = z.object({ title: z.string() });\nconst threadPathParams = z.object({ harnessId: z.string(), resourceId: z.string(), threadId: z.string() });\nconst cloneThreadBodySchema = z.object({\n sourceThreadId: z.string().optional(),\n title: z.string().optional(),\n});\nconst listMessagesQuerySchema = z.object({ limit: z.coerce.number().optional() });\nconst listThreadsQuerySchema = z.object({ limit: z.coerce.number().optional() });\nconst followUpBodySchema = z.object({ message: z.string() });\n\nconst sendNotificationBodySchema = z.object({\n source: z.string(),\n kind: z.string(),\n summary: z.string(),\n priority: z.enum(['low', 'medium', 'high', 'urgent']).optional(),\n payload: z.any().optional(),\n sourceId: z.string().optional(),\n dedupeKey: z.string().optional(),\n coalesceKey: z.string().optional(),\n attributes: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst listHarnessesResponseSchema = z.object({\n harnesses: z.array(z.object({ id: z.string() })),\n});\nconst createSessionResponseSchema = z.object({\n harnessId: z.string(),\n resourceId: z.string(),\n threadId: z.string().optional(),\n});\nconst ackResponseSchema = z.object({ ok: z.boolean() });\nconst sessionStateResponseSchema = z.object({\n harnessId: z.string(),\n resourceId: z.string(),\n threadId: z.string().optional(),\n modeId: z.string(),\n modelId: z.string(),\n});\nconst listModesResponseSchema = z.object({\n modes: z.array(z.object({ id: z.string(), name: z.string().optional() })),\n});\nconst listThreadsResponseSchema = z.object({\n threads: z.array(\n z.object({\n id: z.string(),\n title: z.string().optional(),\n updatedAt: z.string().optional(),\n }),\n ),\n});\nconst threadResponseSchema = z.object({\n id: z.string(),\n title: z.string().optional(),\n resourceId: z.string().optional(),\n createdAt: z.string().optional(),\n updatedAt: z.string().optional(),\n});\nconst messageContentSchema = z\n .object({\n type: z.string(),\n })\n .passthrough();\nconst listMessagesResponseSchema = z.object({\n messages: z.array(\n z.object({\n id: z.string(),\n role: z.enum(['user', 'assistant', 'system']),\n content: z.array(messageContentSchema),\n createdAt: z.string().optional(),\n }),\n ),\n});\nconst listModelsResponseSchema = z.object({\n models: z.array(\n z.object({\n id: z.string(),\n provider: z.string(),\n modelName: z.string(),\n hasApiKey: z.boolean(),\n useCount: z.number(),\n }),\n ),\n});\nconst workspaceStatusResponseSchema = z.object({\n hasWorkspace: z.boolean(),\n isReady: z.boolean(),\n});\nconst omRecordResponseSchema = z.object({\n record: z.any().optional(),\n});\nconst permissionPolicyEnum = z.enum(['allow', 'ask', 'deny']);\nconst toolCategoryEnum = z.enum(['read', 'edit', 'execute', 'mcp', 'other']);\nconst permissionRulesResponseSchema = z.object({\n categories: z.record(z.string(), permissionPolicyEnum).optional(),\n tools: z.record(z.string(), permissionPolicyEnum).optional(),\n});\nconst setCategoryPermissionBodySchema = z.object({\n category: toolCategoryEnum,\n policy: permissionPolicyEnum,\n});\nconst setToolPermissionBodySchema = z.object({\n toolName: z.string(),\n policy: permissionPolicyEnum,\n});\n\n// ---------------------------------------------------------------------------\n// Routes\n// ---------------------------------------------------------------------------\n\nexport const LIST_HARNESSES_ROUTE = createRoute({\n method: 'GET',\n path: '/harness',\n responseType: 'json' as const,\n responseSchema: listHarnessesResponseSchema,\n summary: 'List harnesses',\n description: 'Lists the harnesses hosted on this Mastra instance.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra }) => {\n try {\n const harnesses = mastra.listHarnesses();\n return { harnesses: Object.keys(harnesses).map(id => ({ id })) };\n } catch (error) {\n return handleError(error, 'error listing harnesses');\n }\n },\n});\n\nexport const CREATE_HARNESS_SESSION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions',\n responseType: 'json' as const,\n pathParamSchema: harnessIdPathParams,\n bodySchema: createSessionBodySchema,\n responseSchema: createSessionResponseSchema,\n summary: 'Create or resume a harness session',\n description:\n 'Creates a session for the given resourceId, or returns the existing one (get-or-create), so reconnects resume the conversation.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n return {\n harnessId,\n resourceId,\n threadId: session.thread.getId() ?? undefined,\n };\n } catch (error) {\n return handleError(error, 'error creating harness session');\n }\n },\n});\n\nexport const STREAM_HARNESS_SESSION_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n sseFlushOnConnect: true,\n pathParamSchema: sessionPathParams,\n summary: 'Stream harness session events',\n description: 'Subscribes to a session\\u2019s event bus and streams events to the client over SSE.',\n tags: ['Harness', 'Streaming'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId, abortSignal }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n\n let cleanedUp = false;\n let heartbeat: ReturnType<typeof setTimeout> | undefined;\n let unsubscribe: (() => void) | undefined;\n const clearHeartbeat = () => {\n if (heartbeat) {\n clearTimeout(heartbeat);\n heartbeat = undefined;\n }\n };\n const cleanup = (controller?: ReadableStreamDefaultController) => {\n if (cleanedUp) return;\n cleanedUp = true;\n clearHeartbeat();\n unsubscribe?.();\n if (controller) {\n try {\n controller.close();\n } catch {}\n }\n };\n\n return new ReadableStream<string>({\n start(controller) {\n const scheduleHeartbeat = () => {\n if (cleanedUp) return;\n clearHeartbeat();\n heartbeat = setTimeout(() => {\n heartbeat = undefined;\n if (cleanedUp) return;\n try {\n controller.enqueue(': heartbeat\\n\\n');\n } catch {\n cleanup();\n return;\n }\n scheduleHeartbeat();\n }, 25_000);\n };\n\n unsubscribe = session.subscribe(event => {\n if (cleanedUp) return;\n try {\n controller.enqueue(`data: ${JSON.stringify(event)}\\n\\n`);\n scheduleHeartbeat();\n } catch {\n cleanup();\n }\n });\n\n const abortCleanup = () => cleanup(controller);\n abortSignal?.addEventListener('abort', abortCleanup, { once: true });\n scheduleHeartbeat();\n },\n cancel() {\n cleanup();\n },\n });\n } catch (error) {\n return handleError(error, 'error streaming harness session');\n }\n },\n});\n\nexport const SEND_HARNESS_MESSAGE_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/messages',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: sendMessageBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Send a message to a harness session',\n description: 'Sends a user message to the session. The reply streams as events on the session\\u2019s SSE stream.',\n tags: ['Harness', 'Streaming'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, message }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n void session.sendMessage({ content: message });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error sending harness message');\n }\n },\n});\n\nexport const ABORT_HARNESS_SESSION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/abort',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: ackResponseSchema,\n summary: 'Abort a harness session run',\n description: 'Aborts the in-flight run for the session, if any.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n session.abort();\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error aborting harness session');\n }\n },\n});\n\nexport const HARNESS_TOOL_APPROVAL_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/tool-approval',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: toolApprovalBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Respond to a harness tool approval',\n description: 'Approves or declines a pending tool call surfaced by the session.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, toolCallId, approved }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n // Resolve the parked approval gate so the session's own run loop drives the\n // continuation and emits its events to subscribers (the open SSE stream).\n // Calling approveToolCall/declineToolCall directly would bypass the gate,\n // leaving the run loop hung and duplicating the resumed stream.\n // Pass toolCallId so a stale request cannot resolve a different pending gate.\n session.respondToToolApproval({ toolCallId, decision: approved ? 'approve' : 'decline' });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error responding to harness tool approval');\n }\n },\n});\n\nexport const HARNESS_TOOL_SUSPENSION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/tool-suspension',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: toolSuspensionBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Respond to a suspended harness tool',\n description:\n 'Resumes a suspended interactive tool (ask_user, request_access, submit_plan) with the provided resume data.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, toolCallId, resumeData }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.respondToToolSuspension({ toolCallId, resumeData });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error responding to harness tool suspension');\n }\n },\n});\n\nexport const STEER_HARNESS_SESSION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/steer',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: steerBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Steer the in-flight run',\n description: 'Injects a message into the running turn (interjection) without starting a new run.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, message }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n void session.steer({ content: message });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error steering harness session');\n }\n },\n});\n\nexport const SWITCH_HARNESS_MODE_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/mode',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: switchModeBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Switch the session mode',\n description: 'Switches the active mode (e.g. build, plan) for the session.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, modeId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.mode.switch({ modeId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error switching harness mode');\n }\n },\n});\n\nexport const SWITCH_HARNESS_MODEL_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/model',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: switchModelBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Switch the session model',\n description: 'Switches the model for the session, scoped to the thread by default.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, modelId, scope, modeId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.model.switch({ modelId, scope, modeId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error switching harness model');\n }\n },\n});\n\nexport const SWITCH_HARNESS_THREAD_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/thread',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: switchThreadBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Switch the session thread',\n description: 'Switches the session to an existing thread (rebinding its stream and state).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, threadId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.thread.switch({ threadId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error switching harness thread');\n }\n },\n});\n\nexport const GET_HARNESS_SESSION_STATE_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: sessionStateResponseSchema,\n summary: 'Get session state',\n description: 'Returns the current mode, model, and thread for the session (for initial UI hydration).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n return {\n harnessId,\n resourceId,\n threadId: session.thread.getId() ?? undefined,\n modeId: session.mode.get(),\n modelId: session.model.get(),\n };\n } catch (error) {\n return handleError(error, 'error reading harness session state');\n }\n },\n});\n\nexport const LIST_HARNESS_MODES_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/modes',\n responseType: 'json' as const,\n pathParamSchema: harnessIdPathParams,\n responseSchema: listModesResponseSchema,\n summary: 'List harness modes',\n description: 'Lists the modes configured on the harness (e.g. build, plan).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n return {\n modes: harness.listModes().map(mode => ({ id: mode.id, name: mode.name })),\n };\n } catch (error) {\n return handleError(error, 'error listing harness modes');\n }\n },\n});\n\nexport const LIST_HARNESS_THREADS_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/threads',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n queryParamSchema: listThreadsQuerySchema,\n responseSchema: listThreadsResponseSchema,\n summary: 'List session threads',\n description:\n 'Lists the threads for the session\\u2019s resource, most-recently-updated first. Pass `limit` to return only the newest N (e.g. for a sidebar).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId, limit }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const threads = await session.thread.list();\n const toTime = (t: { updatedAt?: Date; createdAt?: Date }) => (t.updatedAt ?? t.createdAt)?.getTime() ?? 0;\n const sorted = [...threads].sort((a, b) => toTime(b) - toTime(a));\n const max = Number(limit);\n const limited = Number.isFinite(max) && max > 0 ? sorted.slice(0, max) : sorted;\n return {\n threads: limited.map(t => ({\n id: t.id,\n title: t.title,\n updatedAt: t.updatedAt instanceof Date ? t.updatedAt.toISOString() : undefined,\n })),\n };\n } catch (error) {\n return handleError(error, 'error listing harness threads');\n }\n },\n});\n\nexport const SEND_HARNESS_NOTIFICATION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/notifications',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: sendNotificationBodySchema,\n responseSchema: z.object({\n accepted: z.boolean(),\n notificationId: z.string().optional(),\n decision: z.string().optional(),\n runId: z.string().optional(),\n }),\n summary: 'Send a notification signal to a session',\n description:\n 'Delivers a notification to the session\\u2019s current agent/thread. The agent\\u2019s delivery policy determines whether the notification wakes an idle thread, is summarised, or is persisted for later.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({\n mastra,\n harnessId,\n resourceId,\n source,\n kind,\n summary,\n priority,\n payload,\n sourceId,\n dedupeKey,\n coalesceKey,\n attributes,\n metadata,\n }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const result = await session.sendNotificationSignal({\n source,\n kind,\n summary,\n priority,\n payload,\n sourceId,\n dedupeKey,\n coalesceKey,\n attributes: attributes as Record<string, string | number | boolean | null | undefined> | undefined,\n metadata,\n });\n return {\n accepted: result.accepted !== undefined,\n notificationId: result.record?.id,\n decision: result.decision?.action,\n runId: result.runId,\n };\n } catch (error) {\n return handleError(error, 'error sending harness notification');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Thread lifecycle\n// ---------------------------------------------------------------------------\n\nexport const CREATE_HARNESS_THREAD_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/threads',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: createThreadBodySchema,\n responseSchema: threadResponseSchema,\n summary: 'Create a new thread',\n description: 'Creates a new thread in the session (unbinds the previous thread, binds the new one).',\n tags: ['Harness', 'Threads'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, title }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const thread = await session.thread.create({ title });\n return {\n id: thread.id,\n title: thread.title,\n resourceId: thread.resourceId,\n createdAt: thread.createdAt instanceof Date ? thread.createdAt.toISOString() : undefined,\n updatedAt: thread.updatedAt instanceof Date ? thread.updatedAt.toISOString() : undefined,\n };\n } catch (error) {\n return handleError(error, 'error creating harness thread');\n }\n },\n});\n\nexport const DELETE_HARNESS_THREAD_ROUTE = createRoute({\n method: 'DELETE',\n path: '/harness/:harnessId/sessions/:resourceId/threads/:threadId',\n responseType: 'json' as const,\n pathParamSchema: threadPathParams,\n responseSchema: ackResponseSchema,\n summary: 'Delete a thread',\n description: 'Deletes a thread. If the deleted thread is the active one, the session is unbound.',\n tags: ['Harness', 'Threads'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, threadId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.thread.delete({ threadId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error deleting harness thread');\n }\n },\n});\n\nexport const RENAME_HARNESS_THREAD_ROUTE = createRoute({\n method: 'PUT',\n path: '/harness/:harnessId/sessions/:resourceId/threads/:threadId',\n responseType: 'json' as const,\n pathParamSchema: threadPathParams,\n bodySchema: renameThreadBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Rename a thread',\n description: 'Renames the specified thread.',\n tags: ['Harness', 'Threads'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, threadId, title }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n // Ensure the thread is the active one (switch if not)\n if (session.thread.getId() !== threadId) {\n await session.thread.switch({ threadId });\n }\n await session.thread.rename({ title });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error renaming harness thread');\n }\n },\n});\n\nexport const CLONE_HARNESS_THREAD_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/threads/clone',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: cloneThreadBodySchema,\n responseSchema: threadResponseSchema,\n summary: 'Clone a thread',\n description: 'Clones a thread (and its messages). The session binds to the new clone.',\n tags: ['Harness', 'Threads'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, sourceThreadId, title }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const thread = await session.thread.clone({ sourceThreadId, title });\n return {\n id: thread.id,\n title: thread.title,\n resourceId: thread.resourceId,\n createdAt: thread.createdAt instanceof Date ? thread.createdAt.toISOString() : undefined,\n updatedAt: thread.updatedAt instanceof Date ? thread.updatedAt.toISOString() : undefined,\n };\n } catch (error) {\n return handleError(error, 'error cloning harness thread');\n }\n },\n});\n\nexport const LIST_HARNESS_THREAD_MESSAGES_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/threads/:threadId/messages',\n responseType: 'json' as const,\n pathParamSchema: threadPathParams,\n queryParamSchema: listMessagesQuerySchema,\n responseSchema: listMessagesResponseSchema,\n summary: 'List thread messages',\n description: 'Lists messages for a specific thread. Returns most recent messages first.',\n tags: ['Harness', 'Threads'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId, threadId, limit }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const messages = await session.thread.listMessages({ threadId, limit });\n return {\n messages: messages.map(m => ({\n id: m.id,\n role: m.role,\n content: m.content as Array<{ type: string; [key: string]: unknown }>,\n createdAt: m.createdAt instanceof Date ? m.createdAt.toISOString() : undefined,\n })),\n };\n } catch (error) {\n return handleError(error, 'error listing harness thread messages');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Follow-up\n// ---------------------------------------------------------------------------\n\nexport const FOLLOW_UP_HARNESS_SESSION_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/follow-up',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: followUpBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Queue a follow-up message',\n description:\n 'Queues a follow-up message. If the session is idle it sends immediately; if a run is active it queues for after completion.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, message }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n void session.followUp({ content: message });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error queuing harness follow-up');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Models\n// ---------------------------------------------------------------------------\n\nexport const LIST_HARNESS_MODELS_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/models',\n responseType: 'json' as const,\n pathParamSchema: harnessIdPathParams,\n responseSchema: listModelsResponseSchema,\n summary: 'List available models',\n description: 'Lists all models available on this harness (with auth status and use counts).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n await harness.init();\n const models = await harness.listAvailableModels();\n return {\n models: models.map(m => ({\n id: m.id,\n provider: m.provider,\n modelName: m.modelName,\n hasApiKey: m.hasApiKey,\n useCount: m.useCount,\n })),\n };\n } catch (error) {\n return handleError(error, 'error listing harness models');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Workspace status\n// ---------------------------------------------------------------------------\n\nexport const GET_HARNESS_WORKSPACE_STATUS_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/workspace',\n responseType: 'json' as const,\n pathParamSchema: harnessIdPathParams,\n responseSchema: workspaceStatusResponseSchema,\n summary: 'Get workspace status',\n description: 'Returns whether the harness has a workspace configured and whether it is ready.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n await harness.init();\n return {\n hasWorkspace: harness.hasWorkspace(),\n isReady: harness.isWorkspaceReady(),\n };\n } catch (error) {\n return handleError(error, 'error reading harness workspace status');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Observational Memory\n// ---------------------------------------------------------------------------\n\nexport const GET_HARNESS_OM_RECORD_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/om',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: omRecordResponseSchema,\n summary: 'Get observational memory record',\n description: 'Returns the current observational memory record for the session\\u2019s thread/resource.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const record = await harness.getObservationalMemoryRecord(session);\n return { record: record ?? undefined };\n } catch (error) {\n return handleError(error, 'error reading harness OM record');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Resource identity\n// ---------------------------------------------------------------------------\n\nexport const SET_HARNESS_RESOURCE_ID_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/resource',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: z.object({ newResourceId: z.string() }),\n responseSchema: ackResponseSchema,\n summary: 'Change the session resource ID',\n description: 'Updates the session\\u2019s resource identity (e.g. when a user logs in).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, newResourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await harness.setResourceId(session, { resourceId: newResourceId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error setting harness resource ID');\n }\n },\n});\n\nexport const GET_HARNESS_RESOURCE_IDS_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/resources',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: z.object({ resourceIds: z.array(z.string()) }),\n summary: 'Get known resource IDs',\n description: 'Lists the resource IDs known to this session (from threads).',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const resourceIds = await harness.getKnownResourceIds(session);\n return { resourceIds };\n } catch (error) {\n return handleError(error, 'error listing harness resource IDs');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Goals\n// ---------------------------------------------------------------------------\n\nconst setGoalBodySchema = z.object({\n objective: z.string(),\n judgeModelId: z.string().optional(),\n maxRuns: z.number().optional(),\n});\nconst updateGoalBodySchema = z.object({\n judgeModelId: z.string().optional(),\n maxRuns: z.number().optional(),\n status: z.enum(['active', 'paused', 'done']).optional(),\n});\nconst goalRecordSchema = z.object({\n id: z.string().optional(),\n objective: z.string(),\n status: z.enum(['active', 'paused', 'done']),\n runsUsed: z.number(),\n maxRuns: z.number().optional(),\n judgeModelId: z.string().optional(),\n startedAt: z.number(),\n updatedAt: z.number(),\n pausedReason: z.string().optional(),\n});\nconst goalResponseSchema = z.object({ goal: goalRecordSchema.optional() });\n\nfunction getAgentForSession(harness: Harness<any>, session: Session<any>): Agent {\n return harness.getCurrentAgent(session);\n}\n\nexport const GET_HARNESS_GOAL_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/goal',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: goalResponseSchema,\n summary: 'Get the current goal',\n description: 'Returns the active/paused/done goal objective for the session\\u2019s thread, if any.',\n tags: ['Harness', 'Goals'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const threadId = session.thread.getId();\n if (!threadId) return { goal: undefined };\n const agent = getAgentForSession(harness, session);\n const record = await agent.getObjective({ threadId });\n return { goal: record ?? undefined };\n } catch (error) {\n return handleError(error, 'error reading harness goal');\n }\n },\n});\n\nexport const SET_HARNESS_GOAL_ROUTE = createRoute({\n method: 'POST',\n path: '/harness/:harnessId/sessions/:resourceId/goal',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: setGoalBodySchema,\n responseSchema: goalResponseSchema,\n summary: 'Set a goal',\n description:\n 'Sets a new objective for the session\\u2019s thread. The agent\\u2019s in-loop goal judge evaluates progress after each turn.',\n tags: ['Harness', 'Goals'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, objective, judgeModelId, maxRuns }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const threadId = session.thread.getId();\n if (!threadId) throw new HTTPException(400, { message: 'session has no active thread' });\n const agent = getAgentForSession(harness, session);\n const record = await agent.setObjective(objective, {\n threadId,\n resourceId: session.identity.getResourceId(),\n ...(judgeModelId ? { judgeModelId } : {}),\n ...(maxRuns != null ? { maxRuns } : {}),\n });\n return { goal: record ?? undefined };\n } catch (error) {\n return handleError(error, 'error setting harness goal');\n }\n },\n});\n\nexport const UPDATE_HARNESS_GOAL_ROUTE = createRoute({\n method: 'PUT',\n path: '/harness/:harnessId/sessions/:resourceId/goal',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: updateGoalBodySchema,\n responseSchema: goalResponseSchema,\n summary: 'Update goal options',\n description: 'Updates the judge model, max runs, or status of the active goal. No-op when no goal is set.',\n tags: ['Harness', 'Goals'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, judgeModelId, maxRuns, status }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const threadId = session.thread.getId();\n if (!threadId) throw new HTTPException(400, { message: 'session has no active thread' });\n const agent = getAgentForSession(harness, session);\n const record = await agent.updateObjectiveOptions({\n threadId,\n ...(judgeModelId !== undefined ? { judgeModelId } : {}),\n ...(maxRuns !== undefined ? { maxRuns } : {}),\n ...(status !== undefined ? { status } : {}),\n });\n return { goal: record ?? undefined };\n } catch (error) {\n return handleError(error, 'error updating harness goal');\n }\n },\n});\n\nexport const CLEAR_HARNESS_GOAL_ROUTE = createRoute({\n method: 'DELETE',\n path: '/harness/:harnessId/sessions/:resourceId/goal',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: ackResponseSchema,\n summary: 'Clear the goal',\n description: 'Removes the active goal from the session\\u2019s thread.',\n tags: ['Harness', 'Goals'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const threadId = session.thread.getId();\n if (!threadId) throw new HTTPException(400, { message: 'session has no active thread' });\n const agent = getAgentForSession(harness, session);\n await agent.clearObjective({ threadId });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error clearing harness goal');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Permissions\n// ---------------------------------------------------------------------------\n\nexport const GET_HARNESS_PERMISSIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/harness/:harnessId/sessions/:resourceId/permissions',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n responseSchema: permissionRulesResponseSchema,\n summary: 'Get permission rules',\n description: 'Returns the current permission rules (per-category and per-tool policies) for the session.',\n tags: ['Harness', 'Permissions'],\n requiresAuth: true,\n requiresPermission: 'harness:read',\n handler: async ({ mastra, harnessId, resourceId }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n const rules = session.permissions.getRules();\n return {\n categories: rules.categories as Record<string, 'allow' | 'ask' | 'deny'> | undefined,\n tools: rules.tools as Record<string, 'allow' | 'ask' | 'deny'> | undefined,\n };\n } catch (error) {\n return handleError(error, 'error getting harness permissions');\n }\n },\n});\n\nexport const SET_HARNESS_CATEGORY_PERMISSION_ROUTE = createRoute({\n method: 'PUT',\n path: '/harness/:harnessId/sessions/:resourceId/permissions/category',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: setCategoryPermissionBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Set permission for a tool category',\n description: 'Sets the approval policy (allow/ask/deny) for all tools in a category.',\n tags: ['Harness', 'Permissions'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, category, policy }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.permissions.setForCategory({ category, policy });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error setting harness category permission');\n }\n },\n});\n\nexport const SET_HARNESS_TOOL_PERMISSION_ROUTE = createRoute({\n method: 'PUT',\n path: '/harness/:harnessId/sessions/:resourceId/permissions/tool',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: setToolPermissionBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Set permission for a specific tool',\n description:\n 'Sets the approval policy (allow/ask/deny) for a specific tool by name. Per-tool overrides take precedence over category policies.',\n tags: ['Harness', 'Permissions'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, toolName, policy }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.permissions.setForTool({ toolName, policy });\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error setting harness tool permission');\n }\n },\n});\n\n// ---------------------------------------------------------------------------\n// Session State\n// ---------------------------------------------------------------------------\n\nconst setSessionStateBodySchema = z.object({ state: z.record(z.string(), z.unknown()) });\n\nexport const SET_HARNESS_SESSION_STATE_ROUTE = createRoute({\n method: 'PUT',\n path: '/harness/:harnessId/sessions/:resourceId/state',\n responseType: 'json' as const,\n pathParamSchema: sessionPathParams,\n bodySchema: setSessionStateBodySchema,\n responseSchema: ackResponseSchema,\n summary: 'Set session state',\n description:\n 'Merges the provided key-value pairs into the session state. Existing keys not in the payload are preserved.',\n tags: ['Harness'],\n requiresAuth: true,\n requiresPermission: 'harness:execute',\n handler: async ({ mastra, harnessId, resourceId, state }) => {\n try {\n const harness = getHarnessOrThrow(mastra, harnessId);\n const session = await getSession(harness, resourceId);\n await session.state.set(state as Record<string, unknown>);\n return { ok: true };\n } catch (error) {\n return handleError(error, 'error setting harness session state');\n }\n },\n});\n"]}