@mastra/server 1.38.0-alpha.3 → 1.38.0-alpha.5
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/CHANGELOG.md +148 -0
- package/dist/{api-schema-manifest-DV7H6SLV.cjs → api-schema-manifest-M5LNZB6W.cjs} +4 -4
- package/dist/{api-schema-manifest-DV7H6SLV.cjs.map → api-schema-manifest-M5LNZB6W.cjs.map} +1 -1
- package/dist/{api-schema-manifest-2HZM3JT7.js → api-schema-manifest-OSBQZE4D.js} +3 -3
- package/dist/{api-schema-manifest-2HZM3JT7.js.map → api-schema-manifest-OSBQZE4D.js.map} +1 -1
- package/dist/{chunk-FYMY45UE.cjs → chunk-2XLWAZII.cjs} +15 -15
- package/dist/{chunk-FYMY45UE.cjs.map → chunk-2XLWAZII.cjs.map} +1 -1
- package/dist/{chunk-VJHJY3AS.js → chunk-3NQHD75J.js} +136 -32
- package/dist/chunk-3NQHD75J.js.map +1 -0
- package/dist/{chunk-E7UDPLDF.cjs → chunk-3QTG4V4W.cjs} +10 -2
- package/dist/chunk-3QTG4V4W.cjs.map +1 -0
- package/dist/{chunk-YUTVYY3X.js → chunk-5FPJ4RT4.js} +3 -3
- package/dist/{chunk-YUTVYY3X.js.map → chunk-5FPJ4RT4.js.map} +1 -1
- package/dist/{chunk-R6CMAAEQ.js → chunk-5PCUNLFX.js} +3 -3
- package/dist/{chunk-R6CMAAEQ.js.map → chunk-5PCUNLFX.js.map} +1 -1
- package/dist/{chunk-3SSPJA4Y.js → chunk-5RHJCZ4D.js} +3 -3
- package/dist/{chunk-3SSPJA4Y.js.map → chunk-5RHJCZ4D.js.map} +1 -1
- package/dist/{chunk-VI7ODS36.js → chunk-6E5HDZRB.js} +3 -3
- package/dist/{chunk-VI7ODS36.js.map → chunk-6E5HDZRB.js.map} +1 -1
- package/dist/{chunk-X5NKEO7W.cjs → chunk-6YVC5NUR.cjs} +5 -5
- package/dist/{chunk-X5NKEO7W.cjs.map → chunk-6YVC5NUR.cjs.map} +1 -1
- package/dist/{chunk-4PB6LUYQ.js → chunk-7ZW76TJN.js} +10 -3
- package/dist/chunk-7ZW76TJN.js.map +1 -0
- package/dist/{chunk-FLBKRRNC.js → chunk-AAU6UVJA.js} +4 -4
- package/dist/{chunk-FLBKRRNC.js.map → chunk-AAU6UVJA.js.map} +1 -1
- package/dist/{chunk-YF6SK4WY.cjs → chunk-AFNQIYGU.cjs} +149 -44
- package/dist/chunk-AFNQIYGU.cjs.map +1 -0
- package/dist/{chunk-FIHBL47F.cjs → chunk-AWWFF4BH.cjs} +7 -7
- package/dist/{chunk-FIHBL47F.cjs.map → chunk-AWWFF4BH.cjs.map} +1 -1
- package/dist/{chunk-QBMOXGFZ.js → chunk-B7BEYL4D.js} +17 -5
- package/dist/chunk-B7BEYL4D.js.map +1 -0
- package/dist/chunk-BCOYXSY2.cjs +658 -0
- package/dist/chunk-BCOYXSY2.cjs.map +1 -0
- package/dist/{chunk-ICYY6O53.cjs → chunk-ESWNWJOF.cjs} +4 -4
- package/dist/{chunk-ICYY6O53.cjs.map → chunk-ESWNWJOF.cjs.map} +1 -1
- package/dist/chunk-EUFT3MIX.js +213 -0
- package/dist/chunk-EUFT3MIX.js.map +1 -0
- package/dist/{chunk-N42WTSJL.cjs → chunk-GTF3WRLL.cjs} +151 -140
- package/dist/chunk-GTF3WRLL.cjs.map +1 -0
- package/dist/chunk-H7KDCXLQ.cjs +243 -0
- package/dist/chunk-H7KDCXLQ.cjs.map +1 -0
- package/dist/{chunk-TDAAXXUA.cjs → chunk-HGN36EQS.cjs} +109 -97
- package/dist/chunk-HGN36EQS.cjs.map +1 -0
- package/dist/{chunk-NTXMKBCU.js → chunk-HRMRQFJW.js} +3 -3
- package/dist/{chunk-NTXMKBCU.js.map → chunk-HRMRQFJW.js.map} +1 -1
- package/dist/{chunk-FQIFYDKU.js → chunk-IKDK3Q2A.js} +8 -5
- package/dist/chunk-IKDK3Q2A.js.map +1 -0
- package/dist/{chunk-2WUP6QIZ.cjs → chunk-IZZRKJQK.cjs} +5 -5
- package/dist/{chunk-2WUP6QIZ.cjs.map → chunk-IZZRKJQK.cjs.map} +1 -1
- package/dist/{chunk-PN3LDOLZ.js → chunk-J6OD53OV.js} +17 -3
- package/dist/chunk-J6OD53OV.js.map +1 -0
- package/dist/{chunk-GII2QWIN.cjs → chunk-JS263Z2W.cjs} +17 -17
- package/dist/{chunk-GII2QWIN.cjs.map → chunk-JS263Z2W.cjs.map} +1 -1
- package/dist/{chunk-6GNMUI4P.js → chunk-L5NNYUOJ.js} +3 -3
- package/dist/{chunk-6GNMUI4P.js.map → chunk-L5NNYUOJ.js.map} +1 -1
- package/dist/{chunk-HNPFUM7G.js → chunk-LW3QBZHN.js} +29 -18
- package/dist/chunk-LW3QBZHN.js.map +1 -0
- package/dist/{chunk-3E2YDRGM.js → chunk-M7HLT2GO.js} +3 -3
- package/dist/{chunk-3E2YDRGM.js.map → chunk-M7HLT2GO.js.map} +1 -1
- package/dist/{chunk-HAT56AXO.cjs → chunk-MFYZWOKE.cjs} +5 -5
- package/dist/{chunk-HAT56AXO.cjs.map → chunk-MFYZWOKE.cjs.map} +1 -1
- package/dist/{chunk-7N5OFQB3.cjs → chunk-MTFF2YS5.cjs} +14 -14
- package/dist/{chunk-7N5OFQB3.cjs.map → chunk-MTFF2YS5.cjs.map} +1 -1
- package/dist/{chunk-ZQZDPWLU.js → chunk-MU5XYKOI.js} +3 -3
- package/dist/{chunk-ZQZDPWLU.js.map → chunk-MU5XYKOI.js.map} +1 -1
- package/dist/{chunk-OJ2LSGSK.js → chunk-OMUSGHI5.js} +3 -3
- package/dist/{chunk-OJ2LSGSK.js.map → chunk-OMUSGHI5.js.map} +1 -1
- package/dist/{chunk-XBXNMMSC.js → chunk-OPS3GWJN.js} +4 -4
- package/dist/{chunk-XBXNMMSC.js.map → chunk-OPS3GWJN.js.map} +1 -1
- package/dist/{chunk-HEFYNGLM.js → chunk-PZJ3AQSO.js} +12 -3
- package/dist/chunk-PZJ3AQSO.js.map +1 -0
- package/dist/{chunk-3MCPTOLN.cjs → chunk-Q2GIORD4.cjs} +4 -4
- package/dist/{chunk-3MCPTOLN.cjs.map → chunk-Q2GIORD4.cjs.map} +1 -1
- package/dist/{chunk-LPB5BN2D.js → chunk-S3FJKEF5.js} +3 -3
- package/dist/{chunk-LPB5BN2D.js.map → chunk-S3FJKEF5.js.map} +1 -1
- package/dist/{chunk-QWT4ON3B.cjs → chunk-T2FBYRYD.cjs} +18 -2
- package/dist/chunk-T2FBYRYD.cjs.map +1 -0
- package/dist/chunk-TFAJYRT3.js +644 -0
- package/dist/chunk-TFAJYRT3.js.map +1 -0
- package/dist/{chunk-WQMMOPJQ.cjs → chunk-TLMAHJTC.cjs} +16 -16
- package/dist/{chunk-WQMMOPJQ.cjs.map → chunk-TLMAHJTC.cjs.map} +1 -1
- package/dist/{chunk-4FHOUNUN.js → chunk-TUIZTMGY.js} +3 -3
- package/dist/{chunk-4FHOUNUN.js.map → chunk-TUIZTMGY.js.map} +1 -1
- package/dist/{chunk-XHPUK2PC.cjs → chunk-UNSBVIVX.cjs} +20 -20
- package/dist/{chunk-XHPUK2PC.cjs.map → chunk-UNSBVIVX.cjs.map} +1 -1
- package/dist/{chunk-TJ7OH3RN.cjs → chunk-USUWP563.cjs} +10 -7
- package/dist/chunk-USUWP563.cjs.map +1 -0
- package/dist/{chunk-MWJ6ISO7.cjs → chunk-UUDPQDYF.cjs} +4 -4
- package/dist/{chunk-MWJ6ISO7.cjs.map → chunk-UUDPQDYF.cjs.map} +1 -1
- package/dist/{chunk-ARL3PR23.cjs → chunk-UZLWBQEU.cjs} +25 -25
- package/dist/{chunk-ARL3PR23.cjs.map → chunk-UZLWBQEU.cjs.map} +1 -1
- package/dist/{chunk-C3E5C74L.cjs → chunk-WXJSYUBX.cjs} +4 -4
- package/dist/{chunk-C3E5C74L.cjs.map → chunk-WXJSYUBX.cjs.map} +1 -1
- package/dist/{chunk-EFMN6TTT.js → chunk-XKE4GK7M.js} +3 -3
- package/dist/{chunk-EFMN6TTT.js.map → chunk-XKE4GK7M.js.map} +1 -1
- package/dist/{chunk-R77QBP2Q.cjs → chunk-YBXJMN7O.cjs} +12 -3
- package/dist/chunk-YBXJMN7O.cjs.map +1 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/server/handlers/a2a.cjs +14 -14
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +17 -17
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agent-versions.cjs +8 -8
- package/dist/server/handlers/agent-versions.js +1 -1
- package/dist/server/handlers/agents.cjs +43 -43
- package/dist/server/handlers/agents.d.ts +198 -1
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/conversations.cjs +5 -5
- package/dist/server/handlers/conversations.js +1 -1
- package/dist/server/handlers/responses.cjs +4 -4
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +8 -8
- package/dist/server/handlers/scorer-versions.js +1 -1
- package/dist/server/handlers/scores.cjs +7 -7
- 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 +1 -1
- package/dist/server/handlers/stored-agents.cjs +11 -7
- package/dist/server/handlers/stored-agents.d.ts +8001 -140
- package/dist/server/handlers/stored-agents.d.ts.map +1 -1
- package/dist/server/handlers/stored-agents.js +1 -1
- package/dist/server/handlers/stored-scorers.cjs +6 -6
- package/dist/server/handlers/stored-scorers.js +1 -1
- package/dist/server/handlers/system.cjs +3 -3
- package/dist/server/handlers/system.d.ts +5 -0
- package/dist/server/handlers/system.d.ts.map +1 -1
- package/dist/server/handlers/system.js +1 -1
- package/dist/server/handlers/tool-providers.cjs +41 -5
- package/dist/server/handlers/tool-providers.d.ts +301 -4
- package/dist/server/handlers/tool-providers.d.ts.map +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 +1 -1
- package/dist/server/handlers/workflows.cjs +27 -27
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers.cjs +16 -16
- package/dist/server/handlers.js +8 -8
- package/dist/server/schemas/agents.d.ts +30 -0
- package/dist/server/schemas/agents.d.ts.map +1 -1
- package/dist/server/schemas/index.cjs +245 -145
- package/dist/server/schemas/index.js +7 -7
- package/dist/server/schemas/stored-agents.d.ts +4771 -99
- package/dist/server/schemas/stored-agents.d.ts.map +1 -1
- package/dist/server/schemas/system.d.ts +8 -0
- package/dist/server/schemas/system.d.ts.map +1 -1
- package/dist/server/schemas/tool-providers.d.ts +214 -0
- package/dist/server/schemas/tool-providers.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +13 -13
- package/dist/server/server-adapter/index.js +2 -2
- package/dist/server/server-adapter/routes/stored-agents.d.ts +2 -1
- package/dist/server/server-adapter/routes/stored-agents.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/system.d.ts +5 -0
- package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/tool-providers.d.ts +248 -1
- package/dist/server/server-adapter/routes/tool-providers.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/chunk-37G66LYP.cjs +0 -65
- package/dist/chunk-37G66LYP.cjs.map +0 -1
- package/dist/chunk-4PB6LUYQ.js.map +0 -1
- package/dist/chunk-ACESWSVL.cjs +0 -131
- package/dist/chunk-ACESWSVL.cjs.map +0 -1
- package/dist/chunk-E7UDPLDF.cjs.map +0 -1
- package/dist/chunk-FQIFYDKU.js.map +0 -1
- package/dist/chunk-HEFYNGLM.js.map +0 -1
- package/dist/chunk-HNPFUM7G.js.map +0 -1
- package/dist/chunk-MXUQJDLY.js +0 -126
- package/dist/chunk-MXUQJDLY.js.map +0 -1
- package/dist/chunk-N42WTSJL.cjs.map +0 -1
- package/dist/chunk-NIKW5NHG.js +0 -57
- package/dist/chunk-NIKW5NHG.js.map +0 -1
- package/dist/chunk-PN3LDOLZ.js.map +0 -1
- package/dist/chunk-QBMOXGFZ.js.map +0 -1
- package/dist/chunk-QWT4ON3B.cjs.map +0 -1
- package/dist/chunk-R77QBP2Q.cjs.map +0 -1
- package/dist/chunk-TDAAXXUA.cjs.map +0 -1
- package/dist/chunk-TJ7OH3RN.cjs.map +0 -1
- package/dist/chunk-VJHJY3AS.js.map +0 -1
- package/dist/chunk-YF6SK4WY.cjs.map +0 -1
|
@@ -5,27 +5,12 @@ var chunk6A4EEIXX_cjs = require('./chunk-6A4EEIXX.cjs');
|
|
|
5
5
|
var chunkM56TT27J_cjs = require('./chunk-M56TT27J.cjs');
|
|
6
6
|
var chunkVX3MJR4P_cjs = require('./chunk-VX3MJR4P.cjs');
|
|
7
7
|
var chunk2XZ2466F_cjs = require('./chunk-2XZ2466F.cjs');
|
|
8
|
-
var
|
|
8
|
+
var chunkT2FBYRYD_cjs = require('./chunk-T2FBYRYD.cjs');
|
|
9
9
|
var chunkPPNPOLWL_cjs = require('./chunk-PPNPOLWL.cjs');
|
|
10
10
|
var chunkDIG2K5CV_cjs = require('./chunk-DIG2K5CV.cjs');
|
|
11
11
|
var chunkSTZTV4FB_cjs = require('./chunk-STZTV4FB.cjs');
|
|
12
12
|
var chunkRZR7PLFW_cjs = require('./chunk-RZR7PLFW.cjs');
|
|
13
13
|
var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
|
|
14
|
-
var ee = require('@mastra/core/agent-builder/ee');
|
|
15
|
-
|
|
16
|
-
async function resolveBuilderModelPolicy(editor) {
|
|
17
|
-
if (!editor) return { active: false };
|
|
18
|
-
if (typeof editor.resolveBuilder !== "function") return { active: false };
|
|
19
|
-
if (typeof editor.hasEnabledBuilderConfig === "function" && !editor.hasEnabledBuilderConfig()) {
|
|
20
|
-
return { active: false };
|
|
21
|
-
}
|
|
22
|
-
try {
|
|
23
|
-
const builder = await editor.resolveBuilder();
|
|
24
|
-
return ee.builderToModelPolicy(builder);
|
|
25
|
-
} catch {
|
|
26
|
-
return { active: false };
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
14
|
|
|
30
15
|
// src/server/handlers/stored-agents.ts
|
|
31
16
|
async function resolveBrowserField(browser, mastra) {
|
|
@@ -55,6 +40,7 @@ var AGENT_SNAPSHOT_CONFIG_FIELDS = [
|
|
|
55
40
|
"workflows",
|
|
56
41
|
"agents",
|
|
57
42
|
"integrationTools",
|
|
43
|
+
"toolProviders",
|
|
58
44
|
"inputProcessors",
|
|
59
45
|
"outputProcessors",
|
|
60
46
|
"memory",
|
|
@@ -65,12 +51,68 @@ var AGENT_SNAPSHOT_CONFIG_FIELDS = [
|
|
|
65
51
|
"workspace",
|
|
66
52
|
"browser"
|
|
67
53
|
];
|
|
54
|
+
var CODE_AGENT_OVERRIDE_FIELDS = [
|
|
55
|
+
"instructions",
|
|
56
|
+
"tools",
|
|
57
|
+
"integrationTools",
|
|
58
|
+
"mcpClients",
|
|
59
|
+
"requestContextSchema"
|
|
60
|
+
];
|
|
61
|
+
function getCodeAgentOwnership(editorConfig) {
|
|
62
|
+
if (editorConfig === false) {
|
|
63
|
+
return { ownsInstructions: false, ownsTools: false, ownsToolDescriptionsOnly: false };
|
|
64
|
+
}
|
|
65
|
+
if (editorConfig === void 0 || editorConfig === null) {
|
|
66
|
+
return { ownsInstructions: true, ownsTools: true, ownsToolDescriptionsOnly: false };
|
|
67
|
+
}
|
|
68
|
+
if (typeof editorConfig !== "object") {
|
|
69
|
+
return { ownsInstructions: false, ownsTools: false, ownsToolDescriptionsOnly: false };
|
|
70
|
+
}
|
|
71
|
+
const cfg = editorConfig;
|
|
72
|
+
const ownsInstructions = cfg.instructions === true;
|
|
73
|
+
const toolsCfg = cfg.tools;
|
|
74
|
+
const ownsTools = toolsCfg === true;
|
|
75
|
+
const ownsToolDescriptionsOnly = typeof toolsCfg === "object" && toolsCfg !== null && toolsCfg.description === true;
|
|
76
|
+
return { ownsInstructions, ownsTools, ownsToolDescriptionsOnly };
|
|
77
|
+
}
|
|
78
|
+
function sortForStableJson(value) {
|
|
79
|
+
if (Array.isArray(value)) {
|
|
80
|
+
return value.map(sortForStableJson);
|
|
81
|
+
}
|
|
82
|
+
if (value && typeof value === "object" && !(value instanceof Date)) {
|
|
83
|
+
return Object.fromEntries(
|
|
84
|
+
Object.entries(value).filter(([, entry]) => entry !== void 0).sort(([left], [right]) => left.localeCompare(right)).map(([key, entry]) => [key, sortForStableJson(entry)])
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
return value;
|
|
88
|
+
}
|
|
89
|
+
function buildExportConfig(input, agent) {
|
|
90
|
+
const editorConfig = agent?.__getEditorConfig?.();
|
|
91
|
+
const isCodeAgent = agent?.source === "code";
|
|
92
|
+
const allowedFields = isCodeAgent ? CODE_AGENT_OVERRIDE_FIELDS : AGENT_SNAPSHOT_CONFIG_FIELDS;
|
|
93
|
+
const ownership = isCodeAgent ? getCodeAgentOwnership(editorConfig) : null;
|
|
94
|
+
const config = {};
|
|
95
|
+
for (const field of allowedFields) {
|
|
96
|
+
if (input[field] === void 0) continue;
|
|
97
|
+
if (ownership) {
|
|
98
|
+
if (field === "instructions" && !ownership.ownsInstructions) continue;
|
|
99
|
+
if ((field === "tools" || field === "integrationTools" || field === "mcpClients") && !ownership.ownsTools && !ownership.ownsToolDescriptionsOnly) {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
config[field] = input[field];
|
|
104
|
+
}
|
|
105
|
+
return sortForStableJson(config);
|
|
106
|
+
}
|
|
107
|
+
function agentExportFilename(agentId) {
|
|
108
|
+
return `${agentId}.json`;
|
|
109
|
+
}
|
|
68
110
|
var LIST_STORED_AGENTS_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
69
111
|
method: "GET",
|
|
70
112
|
path: "/stored/agents",
|
|
71
113
|
responseType: "json",
|
|
72
|
-
queryParamSchema:
|
|
73
|
-
responseSchema:
|
|
114
|
+
queryParamSchema: chunkT2FBYRYD_cjs.listStoredAgentsQuerySchema,
|
|
115
|
+
responseSchema: chunkT2FBYRYD_cjs.listStoredAgentsResponseSchema,
|
|
74
116
|
summary: "List stored agents",
|
|
75
117
|
description: "Returns a paginated list of all agents stored in the database",
|
|
76
118
|
tags: ["Stored Agents"],
|
|
@@ -164,13 +206,56 @@ var LIST_STORED_AGENTS_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
164
206
|
}
|
|
165
207
|
}
|
|
166
208
|
});
|
|
209
|
+
var EXPORT_STORED_AGENT_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
210
|
+
method: "POST",
|
|
211
|
+
path: "/stored/agents/:storedAgentId/export",
|
|
212
|
+
responseType: "json",
|
|
213
|
+
pathParamSchema: chunkT2FBYRYD_cjs.storedAgentIdPathParams,
|
|
214
|
+
bodySchema: chunkT2FBYRYD_cjs.exportStoredAgentBodySchema,
|
|
215
|
+
responseSchema: chunkT2FBYRYD_cjs.exportStoredAgentResponseSchema,
|
|
216
|
+
summary: "Export stored agent override JSON",
|
|
217
|
+
description: "Returns deterministic JSON for an agent configuration or code-agent override without mutating storage",
|
|
218
|
+
tags: ["Stored Agents"],
|
|
219
|
+
requiresAuth: true,
|
|
220
|
+
handler: async ({ mastra, requestContext, storedAgentId, ...body }) => {
|
|
221
|
+
try {
|
|
222
|
+
const storage = mastra.getStorage();
|
|
223
|
+
const agentsStore = storage ? await storage.getStore("agents") : void 0;
|
|
224
|
+
const storedAgent = await agentsStore?.getByIdResolved(storedAgentId, { status: "draft" });
|
|
225
|
+
if (storedAgent) {
|
|
226
|
+
chunkPPNPOLWL_cjs.assertStoredResourceScope(storedAgent, await chunkPPNPOLWL_cjs.getStoredResourceScope(mastra, requestContext));
|
|
227
|
+
chunkVX3MJR4P_cjs.assertReadAccess({ requestContext, resource: "stored-agents", resourceId: storedAgentId, record: storedAgent });
|
|
228
|
+
}
|
|
229
|
+
let codeAgent;
|
|
230
|
+
try {
|
|
231
|
+
codeAgent = mastra.getAgentById?.(storedAgentId);
|
|
232
|
+
} catch {
|
|
233
|
+
codeAgent = void 0;
|
|
234
|
+
}
|
|
235
|
+
if (!storedAgent && !codeAgent) {
|
|
236
|
+
throw new chunk64ITUOXI_cjs.HTTPException(404, { message: `Agent with id ${storedAgentId} not found` });
|
|
237
|
+
}
|
|
238
|
+
const config = buildExportConfig(body, codeAgent);
|
|
239
|
+
const content = `${JSON.stringify(config, null, 2)}
|
|
240
|
+
`;
|
|
241
|
+
return {
|
|
242
|
+
agentId: storedAgentId,
|
|
243
|
+
fileName: agentExportFilename(storedAgentId),
|
|
244
|
+
content,
|
|
245
|
+
config
|
|
246
|
+
};
|
|
247
|
+
} catch (error) {
|
|
248
|
+
return chunkSTZTV4FB_cjs.handleError(error, "Error exporting stored agent");
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
});
|
|
167
252
|
var GET_STORED_AGENT_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
168
253
|
method: "GET",
|
|
169
254
|
path: "/stored/agents/:storedAgentId",
|
|
170
255
|
responseType: "json",
|
|
171
|
-
pathParamSchema:
|
|
256
|
+
pathParamSchema: chunkT2FBYRYD_cjs.storedAgentIdPathParams,
|
|
172
257
|
queryParamSchema: chunkDIG2K5CV_cjs.statusQuerySchema,
|
|
173
|
-
responseSchema:
|
|
258
|
+
responseSchema: chunkT2FBYRYD_cjs.getStoredAgentResponseSchema,
|
|
174
259
|
summary: "Get stored agent by ID",
|
|
175
260
|
description: "Returns a specific agent from storage by its unique identifier. Use ?status=draft to resolve with the latest (draft) version, or ?status=published (default) for the active published version.",
|
|
176
261
|
tags: ["Stored Agents"],
|
|
@@ -201,8 +286,8 @@ var CREATE_STORED_AGENT_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
201
286
|
method: "POST",
|
|
202
287
|
path: "/stored/agents",
|
|
203
288
|
responseType: "json",
|
|
204
|
-
bodySchema:
|
|
205
|
-
responseSchema:
|
|
289
|
+
bodySchema: chunkT2FBYRYD_cjs.createStoredAgentBodySchema,
|
|
290
|
+
responseSchema: chunkT2FBYRYD_cjs.createStoredAgentResponseSchema,
|
|
206
291
|
summary: "Create stored agent",
|
|
207
292
|
description: "Creates a new agent in storage with the provided configuration",
|
|
208
293
|
tags: ["Stored Agents"],
|
|
@@ -222,6 +307,7 @@ var CREATE_STORED_AGENT_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
222
307
|
workflows,
|
|
223
308
|
agents,
|
|
224
309
|
integrationTools,
|
|
310
|
+
toolProviders,
|
|
225
311
|
mcpClients,
|
|
226
312
|
inputProcessors,
|
|
227
313
|
outputProcessors,
|
|
@@ -254,12 +340,6 @@ var CREATE_STORED_AGENT_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
254
340
|
const authorId = chunkVX3MJR4P_cjs.getCallerAuthorId(requestContext) ?? void 0;
|
|
255
341
|
const visibility = authorId ? bodyVisibility ?? "private" : "public";
|
|
256
342
|
chunkZCX2J552_cjs.validateMetadataAvatarUrl(metadata);
|
|
257
|
-
if (model !== void 0) {
|
|
258
|
-
const policy = await resolveBuilderModelPolicy(mastra.getEditor?.());
|
|
259
|
-
if (policy.active) {
|
|
260
|
-
ee.assertModelAllowed(policy.allowed, model);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
343
|
const resolvedBrowser = await resolveBrowserField(browser, mastra);
|
|
264
344
|
const input = {
|
|
265
345
|
id,
|
|
@@ -275,6 +355,7 @@ var CREATE_STORED_AGENT_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
275
355
|
workflows,
|
|
276
356
|
agents,
|
|
277
357
|
integrationTools,
|
|
358
|
+
toolProviders,
|
|
278
359
|
mcpClients,
|
|
279
360
|
inputProcessors,
|
|
280
361
|
outputProcessors,
|
|
@@ -315,9 +396,9 @@ var UPDATE_STORED_AGENT_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
315
396
|
method: "PATCH",
|
|
316
397
|
path: "/stored/agents/:storedAgentId",
|
|
317
398
|
responseType: "json",
|
|
318
|
-
pathParamSchema:
|
|
319
|
-
bodySchema:
|
|
320
|
-
responseSchema:
|
|
399
|
+
pathParamSchema: chunkT2FBYRYD_cjs.storedAgentIdPathParams,
|
|
400
|
+
bodySchema: chunkT2FBYRYD_cjs.updateStoredAgentBodySchema,
|
|
401
|
+
responseSchema: chunkT2FBYRYD_cjs.updateStoredAgentResponseSchema,
|
|
321
402
|
summary: "Update stored agent",
|
|
322
403
|
description: "Updates an existing agent in storage with the provided fields",
|
|
323
404
|
tags: ["Stored Agents"],
|
|
@@ -340,6 +421,7 @@ var UPDATE_STORED_AGENT_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
340
421
|
workflows,
|
|
341
422
|
agents,
|
|
342
423
|
integrationTools,
|
|
424
|
+
toolProviders,
|
|
343
425
|
mcpClients,
|
|
344
426
|
inputProcessors,
|
|
345
427
|
outputProcessors,
|
|
@@ -377,18 +459,30 @@ var UPDATE_STORED_AGENT_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
377
459
|
chunkZCX2J552_cjs.validateMetadataAvatarUrl(metadata);
|
|
378
460
|
const callerAuthorId = chunkVX3MJR4P_cjs.getCallerAuthorId(requestContext) ?? void 0;
|
|
379
461
|
const resolvedVisibility = callerAuthorId ? visibility : visibility != null ? "public" : void 0;
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
462
|
+
const resolvedBrowser = await resolveBrowserField(browser, mastra);
|
|
463
|
+
let codeAgentForUpdate;
|
|
464
|
+
try {
|
|
465
|
+
codeAgentForUpdate = mastra.getAgentById?.(storedAgentId);
|
|
466
|
+
} catch {
|
|
467
|
+
codeAgentForUpdate = void 0;
|
|
468
|
+
}
|
|
469
|
+
if (codeAgentForUpdate?.source === "code") {
|
|
470
|
+
const ownership = getCodeAgentOwnership(codeAgentForUpdate.__getEditorConfig?.());
|
|
471
|
+
if (!ownership.ownsInstructions) {
|
|
472
|
+
instructions = void 0;
|
|
473
|
+
}
|
|
474
|
+
if (!ownership.ownsTools && !ownership.ownsToolDescriptionsOnly) {
|
|
475
|
+
tools = void 0;
|
|
476
|
+
integrationTools = void 0;
|
|
477
|
+
mcpClients = void 0;
|
|
384
478
|
}
|
|
385
479
|
}
|
|
386
|
-
const
|
|
387
|
-
const scopedMetadata =
|
|
480
|
+
const mergedMetadata = { ...existing.metadata ?? {}, ...metadata ?? {} };
|
|
481
|
+
const scopedMetadata = chunkPPNPOLWL_cjs.scopeStoredResourceMetadata(mergedMetadata, scope);
|
|
388
482
|
const updatedAgent = await agentsStore.update({
|
|
389
483
|
id: storedAgentId,
|
|
390
484
|
authorId,
|
|
391
|
-
|
|
485
|
+
metadata: scopedMetadata,
|
|
392
486
|
visibility: resolvedVisibility,
|
|
393
487
|
name,
|
|
394
488
|
description,
|
|
@@ -399,6 +493,7 @@ var UPDATE_STORED_AGENT_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
399
493
|
workflows,
|
|
400
494
|
agents,
|
|
401
495
|
integrationTools,
|
|
496
|
+
toolProviders,
|
|
402
497
|
mcpClients,
|
|
403
498
|
inputProcessors,
|
|
404
499
|
outputProcessors,
|
|
@@ -419,6 +514,7 @@ var UPDATE_STORED_AGENT_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
419
514
|
workflows,
|
|
420
515
|
agents,
|
|
421
516
|
integrationTools,
|
|
517
|
+
toolProviders,
|
|
422
518
|
mcpClients,
|
|
423
519
|
inputProcessors,
|
|
424
520
|
outputProcessors,
|
|
@@ -443,6 +539,14 @@ var UPDATE_STORED_AGENT_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
443
539
|
if (!autoVersionResult) {
|
|
444
540
|
throw new Error("handleAutoVersioning returned undefined");
|
|
445
541
|
}
|
|
542
|
+
const isCodeSource = mastra.getEditor?.()?.getSource?.() === "code";
|
|
543
|
+
if (isCodeSource && autoVersionResult.versionCreated && !changeMessage) {
|
|
544
|
+
const { versions } = await agentsStore.listVersions({ agentId: storedAgentId, perPage: 2 });
|
|
545
|
+
const previousVersion = versions[1];
|
|
546
|
+
if (previousVersion) {
|
|
547
|
+
await agentsStore.deleteVersion(previousVersion.id);
|
|
548
|
+
}
|
|
549
|
+
}
|
|
446
550
|
if (autoVersionResult.versionCreated) {
|
|
447
551
|
const { versions } = await agentsStore.listVersions({ agentId: storedAgentId, perPage: 1 });
|
|
448
552
|
const latestVersion = versions[0];
|
|
@@ -471,8 +575,8 @@ var DELETE_STORED_AGENT_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
471
575
|
method: "DELETE",
|
|
472
576
|
path: "/stored/agents/:storedAgentId",
|
|
473
577
|
responseType: "json",
|
|
474
|
-
pathParamSchema:
|
|
475
|
-
responseSchema:
|
|
578
|
+
pathParamSchema: chunkT2FBYRYD_cjs.storedAgentIdPathParams,
|
|
579
|
+
responseSchema: chunkT2FBYRYD_cjs.deleteStoredAgentResponseSchema,
|
|
476
580
|
summary: "Delete stored agent",
|
|
477
581
|
description: "Deletes an agent from storage by its unique identifier",
|
|
478
582
|
tags: ["Stored Agents"],
|
|
@@ -517,8 +621,8 @@ var PREVIEW_INSTRUCTIONS_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
517
621
|
method: "POST",
|
|
518
622
|
path: "/stored/agents/preview-instructions",
|
|
519
623
|
responseType: "json",
|
|
520
|
-
bodySchema:
|
|
521
|
-
responseSchema:
|
|
624
|
+
bodySchema: chunkT2FBYRYD_cjs.previewInstructionsBodySchema,
|
|
625
|
+
responseSchema: chunkT2FBYRYD_cjs.previewInstructionsResponseSchema,
|
|
522
626
|
summary: "Preview resolved instructions",
|
|
523
627
|
description: "Resolves an array of instruction blocks against a request context, evaluating rules, fetching prompt block references, and rendering template variables. Returns the final concatenated instruction string.",
|
|
524
628
|
tags: ["Stored Agents"],
|
|
@@ -539,9 +643,10 @@ var PREVIEW_INSTRUCTIONS_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
539
643
|
|
|
540
644
|
exports.CREATE_STORED_AGENT_ROUTE = CREATE_STORED_AGENT_ROUTE;
|
|
541
645
|
exports.DELETE_STORED_AGENT_ROUTE = DELETE_STORED_AGENT_ROUTE;
|
|
646
|
+
exports.EXPORT_STORED_AGENT_ROUTE = EXPORT_STORED_AGENT_ROUTE;
|
|
542
647
|
exports.GET_STORED_AGENT_ROUTE = GET_STORED_AGENT_ROUTE;
|
|
543
648
|
exports.LIST_STORED_AGENTS_ROUTE = LIST_STORED_AGENTS_ROUTE;
|
|
544
649
|
exports.PREVIEW_INSTRUCTIONS_ROUTE = PREVIEW_INSTRUCTIONS_ROUTE;
|
|
545
650
|
exports.UPDATE_STORED_AGENT_ROUTE = UPDATE_STORED_AGENT_ROUTE;
|
|
546
|
-
//# sourceMappingURL=chunk-
|
|
547
|
-
//# sourceMappingURL=chunk-
|
|
651
|
+
//# sourceMappingURL=chunk-AFNQIYGU.cjs.map
|
|
652
|
+
//# sourceMappingURL=chunk-AFNQIYGU.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/stored-agents.ts"],"names":["createRoute","listStoredAgentsQuerySchema","listStoredAgentsResponseSchema","HTTPException","resolveAuthorFilter","getStoredResourceScope","scopeStoredResourceMetadata","getCallerAuthorId","isBuilderFeatureEnabled","matchesAuthorFilter","annotated","stripFavoriteFields","prepareFavoritesEnrichment","handleError","storedAgentIdPathParams","exportStoredAgentBodySchema","exportStoredAgentResponseSchema","assertStoredResourceScope","assertReadAccess","statusQuerySchema","getStoredAgentResponseSchema","enrichOrStripFavorites","createStoredAgentBodySchema","createStoredAgentResponseSchema","toSlug","validateMetadataAvatarUrl","updateStoredAgentBodySchema","updateStoredAgentResponseSchema","assertWriteAccess","handleAutoVersioning","deleteStoredAgentResponseSchema","previewInstructionsBodySchema","previewInstructionsResponseSchema"],"mappings":"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","file":"chunk-AFNQIYGU.cjs","sourcesContent":["import type { StorageCreateAgentInput, StorageUpdateAgentInput } from '@mastra/core/storage';\nimport type { z } from 'zod/v4';\n\nimport { HTTPException } from '../http-exception';\nimport {\n storedAgentIdPathParams,\n statusQuerySchema,\n listStoredAgentsQuerySchema,\n createStoredAgentBodySchema,\n updateStoredAgentBodySchema,\n listStoredAgentsResponseSchema,\n getStoredAgentResponseSchema,\n createStoredAgentResponseSchema,\n updateStoredAgentResponseSchema,\n deleteStoredAgentResponseSchema,\n exportStoredAgentBodySchema,\n exportStoredAgentResponseSchema,\n previewInstructionsBodySchema,\n previewInstructionsResponseSchema,\n} from '../schemas/stored-agents';\nimport type { ServerRoute, RouteSchemas, InferParams } from '../server-adapter/routes';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { assertStoredResourceScope, getStoredResourceScope, scopeStoredResourceMetadata, toSlug } from '../utils';\n\nimport {\n assertReadAccess,\n assertWriteAccess,\n getCallerAuthorId,\n matchesAuthorFilter,\n resolveAuthorFilter,\n} from './authorship';\nimport { isBuilderFeatureEnabled } from './editor-builder';\nimport { handleError } from './error';\nimport { enrichOrStripFavorites, prepareFavoritesEnrichment, stripFavoriteFields } from './favorites-enrichment';\nimport { validateMetadataAvatarUrl } from './validate-avatar';\nimport { handleAutoVersioning } from './version-helpers';\nimport type { VersionedStoreInterface } from './version-helpers';\n\n/**\n * Resolve a `browser` field that may be a boolean shorthand from the UI.\n * - `true` → look up the admin's builder default browser config\n * - `false` → `null` (explicit clear)\n * - object/null/undefined → pass through unchanged\n */\nasync function resolveBrowserField(browser: unknown, mastra: { getEditor?: () => unknown }): Promise<unknown> {\n if (browser === true) {\n const editor = mastra.getEditor?.() as any;\n const builder = await editor?.resolveBuilder?.();\n const defaultBrowser = builder?.getConfiguration?.()?.agent?.browser;\n if (!defaultBrowser) {\n console.warn(\n '[mastra:server] Browser enabled (browser: true) but no default browser config found ' +\n 'in builder configuration. The agent will be created/updated without browser access. ' +\n 'Set `editor.builder.configuration.agent.browser` to fix this.',\n );\n }\n return defaultBrowser ?? undefined;\n }\n if (browser === false) {\n return null;\n }\n return browser;\n}\n\nconst AGENT_SNAPSHOT_CONFIG_FIELDS = [\n 'name',\n 'description',\n 'instructions',\n 'model',\n 'tools',\n 'defaultOptions',\n 'workflows',\n 'agents',\n 'integrationTools',\n 'toolProviders',\n 'inputProcessors',\n 'outputProcessors',\n 'memory',\n 'scorers',\n 'requestContextSchema',\n 'mcpClients',\n 'skills',\n 'workspace',\n 'browser',\n] as const;\n\nconst CODE_AGENT_OVERRIDE_FIELDS = [\n 'instructions',\n 'tools',\n 'integrationTools',\n 'mcpClients',\n 'requestContextSchema',\n] as const;\n\n/**\n * Derive ownership flags from a code agent's editor config.\n * Mirrors the semantics of `editor.agent.applyStoredOverrides` so that\n * client save payloads, persisted snapshots, and export output all agree\n * on which fields Studio is allowed to own.\n */\nfunction getCodeAgentOwnership(editorConfig: unknown): {\n ownsInstructions: boolean;\n ownsTools: boolean;\n ownsToolDescriptionsOnly: boolean;\n} {\n if (editorConfig === false) {\n return { ownsInstructions: false, ownsTools: false, ownsToolDescriptionsOnly: false };\n }\n if (editorConfig === undefined || editorConfig === null) {\n // Legacy default: code agents without explicit editor config behave as fully editable.\n return { ownsInstructions: true, ownsTools: true, ownsToolDescriptionsOnly: false };\n }\n if (typeof editorConfig !== 'object') {\n return { ownsInstructions: false, ownsTools: false, ownsToolDescriptionsOnly: false };\n }\n const cfg = editorConfig as { instructions?: unknown; tools?: unknown };\n const ownsInstructions = cfg.instructions === true;\n const toolsCfg = cfg.tools;\n const ownsTools = toolsCfg === true;\n const ownsToolDescriptionsOnly =\n typeof toolsCfg === 'object' && toolsCfg !== null && (toolsCfg as { description?: unknown }).description === true;\n return { ownsInstructions, ownsTools, ownsToolDescriptionsOnly };\n}\n\nfunction sortForStableJson(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(sortForStableJson);\n }\n\n if (value && typeof value === 'object' && !(value instanceof Date)) {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .filter(([, entry]) => entry !== undefined)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, entry]) => [key, sortForStableJson(entry)]),\n );\n }\n\n return value;\n}\n\nfunction buildExportConfig(\n input: Record<string, unknown>,\n agent?: { __getEditorConfig?: () => unknown; source?: string },\n) {\n const editorConfig = agent?.__getEditorConfig?.();\n const isCodeAgent = agent?.source === 'code';\n const allowedFields = isCodeAgent ? CODE_AGENT_OVERRIDE_FIELDS : AGENT_SNAPSHOT_CONFIG_FIELDS;\n const ownership = isCodeAgent ? getCodeAgentOwnership(editorConfig) : null;\n const config: Record<string, unknown> = {};\n\n for (const field of allowedFields) {\n if (input[field] === undefined) continue;\n if (ownership) {\n if (field === 'instructions' && !ownership.ownsInstructions) continue;\n if (\n (field === 'tools' || field === 'integrationTools' || field === 'mcpClients') &&\n !ownership.ownsTools &&\n !ownership.ownsToolDescriptionsOnly\n ) {\n continue;\n }\n }\n config[field] = input[field];\n }\n\n return sortForStableJson(config) as Record<string, unknown>;\n}\n\nfunction agentExportFilename(agentId: string) {\n return `${agentId}.json`;\n}\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /stored/agents - List all stored agents\n */\nexport const LIST_STORED_AGENTS_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/agents',\n responseType: 'json',\n queryParamSchema: listStoredAgentsQuerySchema,\n responseSchema: listStoredAgentsResponseSchema,\n summary: 'List stored agents',\n description: 'Returns a paginated list of all agents stored in the database',\n tags: ['Stored Agents'],\n requiresAuth: true,\n handler: async ({\n mastra,\n requestContext,\n page,\n perPage,\n orderBy,\n status,\n authorId,\n visibility,\n metadata,\n favoritedOnly,\n pinFavoritedFor,\n }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const agentsStore = await storage.getStore('agents');\n if (!agentsStore) {\n throw new HTTPException(500, { message: 'Agents storage domain is not available' });\n }\n\n // Resolve the visibility scope for this caller. Non-owner queries for\n // another author return only that author's public rows; default lists\n // return the caller's rows plus legacy unowned records.\n const filter = resolveAuthorFilter({\n requestContext,\n resource: 'stored-agents',\n queryAuthorId: authorId,\n queryVisibility: visibility === 'public' ? 'public' : undefined,\n });\n\n const scope = await getStoredResourceScope(mastra, requestContext);\n const scopedMetadata = scopeStoredResourceMetadata(metadata, scope);\n\n const callerId = getCallerAuthorId(requestContext);\n const favoritesEnabled = await isBuilderFeatureEnabled(mastra, 'favorites');\n const honoredStarredOnly = favoritesEnabled && favoritedOnly === true;\n const favoriteSubjectId = pinFavoritedFor ?? callerId;\n\n // `?favoritedOnly=true`: fetch caller's favorited IDs, then refilter + recompute total.\n if (honoredStarredOnly) {\n const effectivePerPage: number = perPage ?? 100;\n if (!favoriteSubjectId) {\n return { agents: [], total: 0, page, perPage: effectivePerPage, hasMore: false };\n }\n const favoritesStore = await storage.getStore('favorites');\n if (!favoritesStore) {\n throw new HTTPException(500, { message: 'Favorites storage domain is not available' });\n }\n const starredIds = await favoritesStore.listFavoritedIds({ userId: favoriteSubjectId, entityType: 'agent' });\n if (starredIds.length === 0) {\n return { agents: [], total: 0, page, perPage: effectivePerPage, hasMore: false };\n }\n const allMatching = await agentsStore.listResolved({\n perPage: false,\n orderBy,\n status,\n authorId: filter.kind === 'exact' ? filter.authorId : undefined,\n metadata: scopedMetadata,\n entityIds: starredIds,\n });\n const visible = allMatching.agents.filter(record => matchesAuthorFilter(record, filter));\n const total = visible.length;\n const startIdx = effectivePerPage === 0 ? 0 : page * effectivePerPage;\n const endIdx = effectivePerPage === 0 ? 0 : startIdx + effectivePerPage;\n const sliced = effectivePerPage === 0 ? [] : visible.slice(startIdx, endIdx);\n const annotated = sliced.map(record => ({ ...record, isFavorited: true }));\n const hasMore = effectivePerPage > 0 && endIdx < total;\n return { agents: annotated, total, page, perPage: effectivePerPage, hasMore };\n }\n\n const result = await agentsStore.listResolved({\n page,\n perPage,\n orderBy,\n status,\n authorId: filter.kind === 'exact' ? filter.authorId : undefined,\n metadata: scopedMetadata,\n });\n\n // Post-filter to enforce ownership + visibility rules across all backends.\n // Storage adapters can only do an equality filter on authorId, so we apply\n // the ownedOrPublic / publicOnly logic here.\n // Note: `total` is left as the storage-reported count to keep pagination\n // math working. For `unrestricted` / `exact` filters nothing is removed.\n // For `ownedOrPublic` / `publicOnly`, downstream UIs should treat the\n // filter as a view over the caller's scope — an approximation is OK.\n const visibleAgents = result.agents.filter(record => matchesAuthorFilter(record, filter));\n\n if (!favoritesEnabled) {\n return { ...result, agents: visibleAgents.map(stripFavoriteFields) };\n }\n\n const enrichment = await prepareFavoritesEnrichment(\n mastra,\n requestContext,\n 'agent',\n visibleAgents.map(a => a.id),\n );\n const annotated = enrichment\n ? visibleAgents.map(record => ({ ...record, isFavorited: enrichment.starredIds.has(record.id) }))\n : visibleAgents.map(stripFavoriteFields);\n\n return { ...result, agents: annotated };\n } catch (error) {\n return handleError(error, 'Error listing stored agents');\n }\n },\n});\n\nexport const EXPORT_STORED_AGENT_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/agents/:storedAgentId/export',\n responseType: 'json',\n pathParamSchema: storedAgentIdPathParams,\n bodySchema: exportStoredAgentBodySchema,\n responseSchema: exportStoredAgentResponseSchema,\n summary: 'Export stored agent override JSON',\n description: 'Returns deterministic JSON for an agent configuration or code-agent override without mutating storage',\n tags: ['Stored Agents'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, storedAgentId, ...body }) => {\n try {\n const storage = mastra.getStorage();\n const agentsStore = storage ? await storage.getStore('agents') : undefined;\n const storedAgent = await agentsStore?.getByIdResolved(storedAgentId, { status: 'draft' });\n if (storedAgent) {\n assertStoredResourceScope(storedAgent, await getStoredResourceScope(mastra, requestContext));\n assertReadAccess({ requestContext, resource: 'stored-agents', resourceId: storedAgentId, record: storedAgent });\n }\n\n let codeAgent: { __getEditorConfig?: () => unknown; source?: string } | undefined;\n try {\n codeAgent = mastra.getAgentById?.(storedAgentId) as typeof codeAgent;\n } catch {\n codeAgent = undefined;\n }\n\n if (!storedAgent && !codeAgent) {\n throw new HTTPException(404, { message: `Agent with id ${storedAgentId} not found` });\n }\n\n const config = buildExportConfig(body, codeAgent);\n const content = `${JSON.stringify(config, null, 2)}\\n`;\n\n return {\n agentId: storedAgentId,\n fileName: agentExportFilename(storedAgentId),\n content,\n config,\n };\n } catch (error) {\n return handleError(error, 'Error exporting stored agent');\n }\n },\n});\n\n/**\n * GET /stored/agents/:storedAgentId - Get a stored agent by ID\n */\nexport const GET_STORED_AGENT_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/agents/:storedAgentId',\n responseType: 'json',\n pathParamSchema: storedAgentIdPathParams,\n queryParamSchema: statusQuerySchema,\n responseSchema: getStoredAgentResponseSchema,\n summary: 'Get stored agent by ID',\n description:\n 'Returns a specific agent from storage by its unique identifier. Use ?status=draft to resolve with the latest (draft) version, or ?status=published (default) for the active published version.',\n tags: ['Stored Agents'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, storedAgentId, status }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const agentsStore = await storage.getStore('agents');\n if (!agentsStore) {\n throw new HTTPException(500, { message: 'Agents storage domain is not available' });\n }\n\n const agent = await agentsStore.getByIdResolved(storedAgentId, { status });\n\n if (!agent) {\n throw new HTTPException(404, { message: `Stored agent with id ${storedAgentId} not found` });\n }\n assertStoredResourceScope(agent, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, `stored-agents:read[:<id>]`\n // holder, and the record isn't public/legacy-unowned.\n assertReadAccess({ requestContext, resource: 'stored-agents', resourceId: storedAgentId, record: agent });\n\n return enrichOrStripFavorites(mastra, requestContext, 'agent', agent);\n } catch (error) {\n return handleError(error, 'Error getting stored agent');\n }\n },\n});\n\n/**\n * POST /stored/agents - Create a new stored agent\n */\nexport const CREATE_STORED_AGENT_ROUTE: ServerRoute<\n InferParams<undefined, undefined, typeof createStoredAgentBodySchema>,\n z.infer<typeof createStoredAgentResponseSchema>,\n 'json',\n RouteSchemas<undefined, undefined, typeof createStoredAgentBodySchema, typeof createStoredAgentResponseSchema>,\n 'POST',\n '/stored/agents'\n> = createRoute({\n method: 'POST',\n path: '/stored/agents',\n responseType: 'json',\n bodySchema: createStoredAgentBodySchema,\n responseSchema: createStoredAgentResponseSchema,\n summary: 'Create stored agent',\n description: 'Creates a new agent in storage with the provided configuration',\n tags: ['Stored Agents'],\n requiresAuth: true,\n handler: async ({\n mastra,\n requestContext,\n id: providedId,\n metadata,\n visibility: bodyVisibility,\n name,\n description,\n instructions,\n model,\n tools,\n defaultOptions,\n workflows,\n agents,\n integrationTools,\n toolProviders,\n mcpClients,\n inputProcessors,\n outputProcessors,\n memory,\n scorers,\n skills,\n workspace,\n browser,\n requestContextSchema,\n }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const agentsStore = await storage.getStore('agents');\n if (!agentsStore) {\n throw new HTTPException(500, { message: 'Agents storage domain is not available' });\n }\n\n // Derive ID from name if not explicitly provided\n const id = providedId || toSlug(name);\n\n if (!id) {\n throw new HTTPException(400, {\n message: 'Could not derive agent ID from name. Please provide an explicit id.',\n });\n }\n\n // Check if agent with this ID already exists\n const existing = await agentsStore.getById(id);\n if (existing) {\n throw new HTTPException(409, { message: `Agent with id ${id} already exists` });\n }\n\n // Force authorId from the authenticated caller; ignore any body-provided value.\n // No owner = always public (no auth / no user context).\n // With an owner, respect the client's choice, defaulting to 'private'.\n const authorId = getCallerAuthorId(requestContext) ?? undefined;\n const visibility = authorId ? (bodyVisibility ?? 'private') : 'public';\n\n // Reject oversized avatar images before writing to storage.\n validateMetadataAvatarUrl(metadata);\n\n // Model policy enforcement is intentionally not done on save: each UI\n // surface gates its own model picker via ModelPolicyProvider, and the\n // policy is surface-scoped (builder vs editor). Re-introducing a single\n // server-side check here would either over-enforce on the editor or\n // under-enforce on the builder until per-surface enforcement lands.\n\n const resolvedBrowser = await resolveBrowserField(browser, mastra);\n\n const input = {\n id,\n authorId,\n visibility,\n metadata: scopeStoredResourceMetadata(metadata, await getStoredResourceScope(mastra, requestContext)),\n name,\n description,\n instructions,\n model,\n tools,\n defaultOptions,\n workflows,\n agents,\n integrationTools,\n toolProviders,\n mcpClients,\n inputProcessors,\n outputProcessors,\n memory,\n scorers,\n skills,\n workspace,\n browser: resolvedBrowser,\n requestContextSchema,\n } as StorageCreateAgentInput;\n\n // Use editor.agent.create() when available to apply builder defaults\n const editor = mastra.getEditor?.();\n if (editor) {\n await editor.agent.create(input);\n } else {\n // Fallback to direct storage create\n await agentsStore.create({ agent: input });\n }\n\n // Publish the initial version so the agent is immediately usable.\n // Without this, the thin record stays as status='draft' with activeVersionId=null,\n // which makes the agent unreachable via status='published' resolution.\n const { versions } = await agentsStore.listVersions({ agentId: id, perPage: 1 });\n const initialVersion = versions[0];\n if (initialVersion) {\n await agentsStore.update({\n id,\n activeVersionId: initialVersion.id,\n status: 'published',\n });\n editor?.agent.clearCache(id);\n }\n\n // Return the resolved agent (thin record + version config) using the newly published version\n const resolved = await agentsStore.getByIdResolved(id, { status: 'published' });\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve created agent' });\n }\n\n return enrichOrStripFavorites(mastra, requestContext, 'agent', resolved);\n } catch (error) {\n return handleError(error, 'Error creating stored agent');\n }\n },\n});\n\n/**\n * PATCH /stored/agents/:storedAgentId - Update a stored agent\n */\nexport const UPDATE_STORED_AGENT_ROUTE: ServerRoute<\n InferParams<typeof storedAgentIdPathParams, undefined, typeof updateStoredAgentBodySchema>,\n z.infer<typeof updateStoredAgentResponseSchema>,\n 'json',\n RouteSchemas<\n typeof storedAgentIdPathParams,\n undefined,\n typeof updateStoredAgentBodySchema,\n typeof updateStoredAgentResponseSchema\n >,\n 'PATCH',\n '/stored/agents/:storedAgentId'\n> = createRoute({\n method: 'PATCH',\n path: '/stored/agents/:storedAgentId',\n responseType: 'json',\n pathParamSchema: storedAgentIdPathParams,\n bodySchema: updateStoredAgentBodySchema,\n responseSchema: updateStoredAgentResponseSchema,\n summary: 'Update stored agent',\n description: 'Updates an existing agent in storage with the provided fields',\n tags: ['Stored Agents'],\n requiresAuth: true,\n handler: async ({\n mastra,\n requestContext,\n storedAgentId,\n // Metadata-level fields\n authorId,\n metadata,\n visibility,\n // Config fields (snapshot-level)\n name,\n description,\n instructions,\n model,\n tools,\n defaultOptions,\n workflows,\n agents,\n integrationTools,\n toolProviders,\n mcpClients,\n inputProcessors,\n outputProcessors,\n memory,\n scorers,\n skills,\n workspace,\n browser,\n requestContextSchema,\n // Version metadata\n changeMessage,\n }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const agentsStore = await storage.getStore('agents');\n if (!agentsStore) {\n throw new HTTPException(500, { message: 'Agents storage domain is not available' });\n }\n\n // Check if agent exists\n const existing = await agentsStore.getById(storedAgentId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored agent with id ${storedAgentId} not found` });\n }\n const scope = await getStoredResourceScope(mastra, requestContext);\n assertStoredResourceScope(existing, scope);\n\n // Throws 404 if the caller isn't the owner, admin, or `agents:edit[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-agents',\n resourceId: storedAgentId,\n action: 'edit',\n record: existing,\n });\n\n // Reject oversized avatar images before writing to storage.\n validateMetadataAvatarUrl(metadata);\n\n // No owner = always public, regardless of what the client sent.\n const callerAuthorId = getCallerAuthorId(requestContext) ?? undefined;\n const resolvedVisibility = callerAuthorId ? visibility : visibility != null ? 'public' : undefined;\n\n // Model policy enforcement is intentionally not done on save: each UI\n // surface gates its own model picker via ModelPolicyProvider, and the\n // policy is surface-scoped (builder vs editor). Re-introducing a single\n // server-side check here would either over-enforce on the editor or\n // under-enforce on the builder until per-surface enforcement lands.\n\n // Resolve boolean browser shorthand from the UI\n const resolvedBrowser = await resolveBrowserField(browser, mastra);\n\n // For code-defined agents, strip fields the editor config does not allow\n // Studio to own. This keeps stored snapshots (and the per-entity files\n // they get persisted to) free of fields the server never reads back.\n let codeAgentForUpdate: { __getEditorConfig?: () => unknown; source?: string } | undefined;\n try {\n codeAgentForUpdate = mastra.getAgentById?.(storedAgentId) as typeof codeAgentForUpdate;\n } catch {\n codeAgentForUpdate = undefined;\n }\n if (codeAgentForUpdate?.source === 'code') {\n const ownership = getCodeAgentOwnership(codeAgentForUpdate.__getEditorConfig?.());\n if (!ownership.ownsInstructions) {\n instructions = undefined;\n }\n if (!ownership.ownsTools && !ownership.ownsToolDescriptionsOnly) {\n tools = undefined;\n integrationTools = undefined;\n mcpClients = undefined;\n }\n }\n\n const mergedMetadata: Record<string, unknown> = { ...(existing.metadata ?? {}), ...(metadata ?? {}) };\n const scopedMetadata = scopeStoredResourceMetadata(mergedMetadata, scope);\n\n // Update the agent with both metadata-level and config-level fields\n // The storage layer handles separating these into agent-record updates vs new-version creation\n // Cast needed because Zod's passthrough() output types don't exactly match the handwritten TS interfaces\n const updatedAgent = await agentsStore.update({\n id: storedAgentId,\n authorId,\n metadata: scopedMetadata,\n visibility: resolvedVisibility,\n name,\n description,\n instructions,\n model,\n tools,\n defaultOptions,\n workflows,\n agents,\n integrationTools,\n toolProviders,\n mcpClients,\n inputProcessors,\n outputProcessors,\n memory,\n scorers,\n skills,\n workspace,\n browser: resolvedBrowser,\n requestContextSchema,\n } as StorageUpdateAgentInput);\n\n // Build the snapshot config for auto-versioning comparison\n const configFields = {\n name,\n description,\n instructions,\n model,\n tools,\n defaultOptions,\n workflows,\n agents,\n integrationTools,\n toolProviders,\n mcpClients,\n inputProcessors,\n outputProcessors,\n memory,\n scorers,\n skills,\n workspace,\n browser: resolvedBrowser,\n requestContextSchema,\n };\n\n // Filter out undefined values to get only the config fields that were provided\n const providedConfigFields = Object.fromEntries(Object.entries(configFields).filter(([_, v]) => v !== undefined));\n\n // Handle auto-versioning with retry logic for race conditions\n // This creates a new version if there are meaningful config changes.\n const autoVersionResult = await handleAutoVersioning(\n agentsStore as unknown as VersionedStoreInterface,\n storedAgentId,\n 'agentId',\n AGENT_SNAPSHOT_CONFIG_FIELDS,\n existing,\n updatedAgent,\n providedConfigFields,\n changeMessage ? { changeMessage } : undefined,\n );\n\n if (!autoVersionResult) {\n throw new Error('handleAutoVersioning returned undefined');\n }\n\n // In code mode, local saves should overwrite the most recent saved\n // snapshot rather than creating new draft versions on every keystroke\n // batch. Version history is intended to track commits, not raw saves.\n // We collapse the freshly created version onto the previous one by\n // deleting the prior latest version, leaving a single rolling snapshot.\n // When the user explicitly provides a changeMessage we treat that as a\n // commit and keep the new version as a discrete history entry.\n const isCodeSource = mastra.getEditor?.()?.getSource?.() === 'code';\n if (isCodeSource && autoVersionResult.versionCreated && !changeMessage) {\n const { versions } = await agentsStore.listVersions({ agentId: storedAgentId, perPage: 2 });\n const previousVersion = versions[1];\n if (previousVersion) {\n await agentsStore.deleteVersion(previousVersion.id);\n }\n }\n\n // Auto-publish: activate the latest version so the update is immediately\n // visible in list views. The Agent Builder UI has no separate \"Publish\"\n // button, so without this every edit after creation would create orphaned\n // draft versions that never surface in the list.\n // When a proper publish flow ships, this block can be removed.\n if (autoVersionResult.versionCreated) {\n const { versions } = await agentsStore.listVersions({ agentId: storedAgentId, perPage: 1 });\n const latestVersion = versions[0];\n if (latestVersion) {\n await agentsStore.update({\n id: storedAgentId,\n activeVersionId: latestVersion.id,\n });\n }\n }\n\n // Clear the cached agent instance so the next request gets the updated config\n const editor = mastra.getEditor();\n if (editor) {\n editor.agent.clearCache(storedAgentId);\n }\n\n // Return the resolved agent with the latest version\n const resolved = await agentsStore.getByIdResolved(storedAgentId, { status: 'draft' });\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve updated agent' });\n }\n\n return enrichOrStripFavorites(mastra, requestContext, 'agent', resolved);\n } catch (error) {\n return handleError(error, 'Error updating stored agent');\n }\n },\n});\n\n/**\n * DELETE /stored/agents/:storedAgentId - Delete a stored agent\n */\nexport const DELETE_STORED_AGENT_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/agents/:storedAgentId',\n responseType: 'json',\n pathParamSchema: storedAgentIdPathParams,\n responseSchema: deleteStoredAgentResponseSchema,\n summary: 'Delete stored agent',\n description: 'Deletes an agent from storage by its unique identifier',\n tags: ['Stored Agents'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, storedAgentId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const agentsStore = await storage.getStore('agents');\n if (!agentsStore) {\n throw new HTTPException(500, { message: 'Agents storage domain is not available' });\n }\n\n // Check if agent exists\n const existing = await agentsStore.getById(storedAgentId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored agent with id ${storedAgentId} not found` });\n }\n assertStoredResourceScope(existing, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, or `agents:delete[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-agents',\n resourceId: storedAgentId,\n action: 'delete',\n record: existing,\n });\n\n await agentsStore.delete(storedAgentId);\n\n // Cascade: drop any favorite rows referencing this agent so they don't\n // resurrect if the same id is reused. Failure must not abort the delete.\n try {\n const favoritesStore = await storage.getStore('favorites');\n await favoritesStore?.deleteFavoritesForEntity({ entityType: 'agent', entityId: storedAgentId });\n } catch (cascadeError) {\n mastra\n .getLogger?.()\n ?.warn?.('Failed to cascade-delete favorites for agent', { storedAgentId, error: cascadeError });\n }\n\n // Clear the cached agent instance\n mastra.getEditor()?.agent.clearCache(storedAgentId);\n\n return { success: true, message: `Agent ${storedAgentId} deleted successfully` };\n } catch (error) {\n return handleError(error, 'Error deleting stored agent');\n }\n },\n});\n\n/**\n * POST /stored/agents/preview-instructions - Preview resolved instructions\n */\nexport const PREVIEW_INSTRUCTIONS_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/agents/preview-instructions',\n responseType: 'json',\n bodySchema: previewInstructionsBodySchema,\n responseSchema: previewInstructionsResponseSchema,\n summary: 'Preview resolved instructions',\n description:\n 'Resolves an array of instruction blocks against a request context, evaluating rules, fetching prompt block references, and rendering template variables. Returns the final concatenated instruction string.',\n tags: ['Stored Agents'],\n requiresAuth: true,\n handler: async ({ mastra, blocks, context }) => {\n try {\n const editor = mastra.getEditor();\n if (!editor) {\n throw new HTTPException(500, { message: 'Editor is not configured' });\n }\n\n const result = await editor.prompt.preview(blocks, context ?? {});\n\n return { result };\n } catch (error) {\n return handleError(error, 'Error previewing instructions');\n }\n },\n});\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkXOGNYKAF_cjs = require('./chunk-XOGNYKAF.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkYBXJMN7O_cjs = require('./chunk-YBXJMN7O.cjs');
|
|
5
5
|
var chunk4BLUIUHS_cjs = require('./chunk-4BLUIUHS.cjs');
|
|
6
6
|
var chunkPPNPOLWL_cjs = require('./chunk-PPNPOLWL.cjs');
|
|
7
7
|
var chunkDIG2K5CV_cjs = require('./chunk-DIG2K5CV.cjs');
|
|
@@ -361,7 +361,7 @@ var RESUME_STREAM_WORKFLOW_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
361
361
|
pathParamSchema: chunkXOGNYKAF_cjs.workflowIdPathParams,
|
|
362
362
|
queryParamSchema: chunkDIG2K5CV_cjs.runIdSchema,
|
|
363
363
|
bodySchema: chunkXOGNYKAF_cjs.resumeBodySchema,
|
|
364
|
-
responseSchema:
|
|
364
|
+
responseSchema: chunkYBXJMN7O_cjs.streamResponseSchema,
|
|
365
365
|
summary: "Resume workflow stream",
|
|
366
366
|
description: "Resumes a suspended workflow execution and continues streaming results",
|
|
367
367
|
tags: ["Workflows"],
|
|
@@ -477,7 +477,7 @@ var OBSERVE_STREAM_WORKFLOW_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
477
477
|
responseType: "stream",
|
|
478
478
|
pathParamSchema: chunkXOGNYKAF_cjs.workflowIdPathParams,
|
|
479
479
|
queryParamSchema: chunkXOGNYKAF_cjs.observeWorkflowQuerySchema,
|
|
480
|
-
responseSchema:
|
|
480
|
+
responseSchema: chunkYBXJMN7O_cjs.streamResponseSchema,
|
|
481
481
|
summary: "Observe workflow stream",
|
|
482
482
|
description: "Observes and streams updates from an already running workflow execution. Supports position-based resume with offset for efficient reconnection.",
|
|
483
483
|
tags: ["Workflows"],
|
|
@@ -923,7 +923,7 @@ var STREAM_LEGACY_WORKFLOW_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
923
923
|
pathParamSchema: chunkXOGNYKAF_cjs.workflowIdPathParams,
|
|
924
924
|
queryParamSchema: chunkDIG2K5CV_cjs.runIdSchema,
|
|
925
925
|
bodySchema: chunkXOGNYKAF_cjs.streamWorkflowBodySchema,
|
|
926
|
-
responseSchema:
|
|
926
|
+
responseSchema: chunkYBXJMN7O_cjs.streamResponseSchema,
|
|
927
927
|
summary: "[DEPRECATED] Stream workflow with legacy format",
|
|
928
928
|
description: "Legacy endpoint for streaming workflow execution. Use /workflows/:workflowId/stream instead.",
|
|
929
929
|
tags: ["Workflows", "Legacy"],
|
|
@@ -965,7 +965,7 @@ var OBSERVE_STREAM_LEGACY_WORKFLOW_ROUTE = chunkRZR7PLFW_cjs.createRoute({
|
|
|
965
965
|
responseType: "stream",
|
|
966
966
|
pathParamSchema: chunkXOGNYKAF_cjs.workflowIdPathParams,
|
|
967
967
|
queryParamSchema: chunkDIG2K5CV_cjs.runIdSchema,
|
|
968
|
-
responseSchema:
|
|
968
|
+
responseSchema: chunkYBXJMN7O_cjs.streamResponseSchema,
|
|
969
969
|
summary: "[DEPRECATED] Observe workflow stream with legacy format",
|
|
970
970
|
description: "Legacy endpoint for observing workflow stream. Use /workflows/:workflowId/observe instead.",
|
|
971
971
|
tags: ["Workflows", "Legacy"],
|
|
@@ -1135,5 +1135,5 @@ exports.TIME_TRAVEL_ASYNC_WORKFLOW_ROUTE = TIME_TRAVEL_ASYNC_WORKFLOW_ROUTE;
|
|
|
1135
1135
|
exports.TIME_TRAVEL_STREAM_WORKFLOW_ROUTE = TIME_TRAVEL_STREAM_WORKFLOW_ROUTE;
|
|
1136
1136
|
exports.TIME_TRAVEL_WORKFLOW_ROUTE = TIME_TRAVEL_WORKFLOW_ROUTE;
|
|
1137
1137
|
exports.workflows_exports = workflows_exports;
|
|
1138
|
-
//# sourceMappingURL=chunk-
|
|
1139
|
-
//# sourceMappingURL=chunk-
|
|
1138
|
+
//# sourceMappingURL=chunk-AWWFF4BH.cjs.map
|
|
1139
|
+
//# sourceMappingURL=chunk-AWWFF4BH.cjs.map
|