@mastra/server 0.0.0-fix-multi-modal-for-cloud-20251028082043 → 0.0.0-fix-persist-session-cache-option-mcp-server-20251030171242
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 +35 -3
- package/README.md +1 -1
- package/dist/{chunk-AHB4JCIQ.js → chunk-2XD2KQEK.js} +13 -13
- package/dist/chunk-2XD2KQEK.js.map +1 -0
- package/dist/{chunk-AW5BU3RQ.js → chunk-36CWLQQT.js} +19 -19
- package/dist/chunk-36CWLQQT.js.map +1 -0
- package/dist/{chunk-KDUHLUK4.cjs → chunk-4BKR6543.cjs} +128 -208
- package/dist/chunk-4BKR6543.cjs.map +1 -0
- package/dist/{chunk-7HCPO76Z.js → chunk-4YFT3JFJ.js} +107 -192
- package/dist/chunk-4YFT3JFJ.js.map +1 -0
- package/dist/{chunk-KSFLUEWV.js → chunk-6562SOHJ.js} +4 -4
- package/dist/{chunk-KSFLUEWV.js.map → chunk-6562SOHJ.js.map} +1 -1
- package/dist/{chunk-SPRRK3P7.cjs → chunk-6IGZKIRM.cjs} +19 -19
- package/dist/chunk-6IGZKIRM.cjs.map +1 -0
- package/dist/{chunk-QQXMIP6C.js → chunk-74ZF4DII.js} +10 -10
- package/dist/{chunk-QQXMIP6C.js.map → chunk-74ZF4DII.js.map} +1 -1
- package/dist/{chunk-ABRFV4XP.js → chunk-7KNKINQE.js} +11 -11
- package/dist/chunk-7KNKINQE.js.map +1 -0
- package/dist/{chunk-6VPAV4ZV.js → chunk-7MCHFMDF.js} +102 -129
- package/dist/chunk-7MCHFMDF.js.map +1 -0
- package/dist/{chunk-3SNGNFUJ.cjs → chunk-7YHMDEQ6.cjs} +10 -10
- package/dist/{chunk-3SNGNFUJ.cjs.map → chunk-7YHMDEQ6.cjs.map} +1 -1
- package/dist/{chunk-TRGAMKHX.cjs → chunk-BMOVKZO7.cjs} +19 -19
- package/dist/chunk-BMOVKZO7.cjs.map +1 -0
- package/dist/{chunk-OGK26QPW.js → chunk-CXVOX4WB.js} +41 -65
- package/dist/chunk-CXVOX4WB.js.map +1 -0
- package/dist/{chunk-LF2ZLOFP.js → chunk-GQRJOUV7.js} +64 -34
- package/dist/chunk-GQRJOUV7.js.map +1 -0
- package/dist/{chunk-YSHNCC6F.cjs → chunk-HLIRV42R.cjs} +109 -137
- package/dist/chunk-HLIRV42R.cjs.map +1 -0
- package/dist/{chunk-Y7SH5ZKM.cjs → chunk-LROVQBIB.cjs} +41 -66
- package/dist/chunk-LROVQBIB.cjs.map +1 -0
- package/dist/{chunk-GU4EWMZB.cjs → chunk-LZKJT7QP.cjs} +64 -34
- package/dist/chunk-LZKJT7QP.cjs.map +1 -0
- package/dist/{chunk-MN2TZQ7I.js → chunk-OEW3R7V4.js} +13 -13
- package/dist/chunk-OEW3R7V4.js.map +1 -0
- package/dist/{chunk-B7QWVGQQ.cjs → chunk-PUYDRTPG.cjs} +49 -58
- package/dist/chunk-PUYDRTPG.cjs.map +1 -0
- package/dist/{chunk-ZLBL4NQC.js → chunk-S4IOWSI3.js} +45 -54
- package/dist/chunk-S4IOWSI3.js.map +1 -0
- package/dist/{chunk-K5T5A3AL.cjs → chunk-SED4H2GJ.cjs} +14 -14
- package/dist/chunk-SED4H2GJ.cjs.map +1 -0
- package/dist/{chunk-XN74I6VW.cjs → chunk-WH5RPLO4.cjs} +13 -13
- package/dist/chunk-WH5RPLO4.cjs.map +1 -0
- package/dist/{chunk-CJFKRVED.cjs → chunk-YNGDJJOH.cjs} +14 -14
- package/dist/{chunk-CJFKRVED.cjs.map → chunk-YNGDJJOH.cjs.map} +1 -1
- package/dist/server/handlers/a2a.cjs +7 -7
- package/dist/server/handlers/a2a.d.ts +10 -10
- package/dist/server/handlers/a2a.d.ts.map +1 -1
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +36 -16
- package/dist/server/handlers/agent-builder.d.ts +22 -6
- package/dist/server/handlers/agent-builder.d.ts.map +1 -1
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agents.cjs +25 -29
- package/dist/server/handlers/agents.d.ts +34 -47
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/logs.cjs +7 -7
- package/dist/server/handlers/logs.d.ts +3 -3
- package/dist/server/handlers/logs.d.ts.map +1 -1
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/memory.cjs +17 -21
- package/dist/server/handlers/memory.d.ts +18 -21
- package/dist/server/handlers/memory.d.ts.map +1 -1
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/scores.cjs +10 -10
- package/dist/server/handlers/scores.d.ts +8 -8
- package/dist/server/handlers/scores.d.ts.map +1 -1
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/tools.cjs +7 -7
- package/dist/server/handlers/tools.d.ts +8 -8
- package/dist/server/handlers/tools.d.ts.map +1 -1
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/voice.cjs +5 -5
- package/dist/server/handlers/voice.d.ts +6 -6
- package/dist/server/handlers/voice.js +1 -1
- package/dist/server/handlers/workflows.cjs +23 -23
- package/dist/server/handlers/workflows.d.ts +19 -19
- package/dist/server/handlers/workflows.d.ts.map +1 -1
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers.cjs +19 -24
- package/dist/server/handlers.d.ts +0 -1
- package/dist/server/handlers.d.ts.map +1 -1
- package/dist/server/handlers.js +9 -10
- package/package.json +6 -6
- package/dist/chunk-6VPAV4ZV.js.map +0 -1
- package/dist/chunk-7HCPO76Z.js.map +0 -1
- package/dist/chunk-ABRFV4XP.js.map +0 -1
- package/dist/chunk-AHB4JCIQ.js.map +0 -1
- package/dist/chunk-AW5BU3RQ.js.map +0 -1
- package/dist/chunk-B7QWVGQQ.cjs.map +0 -1
- package/dist/chunk-GU4EWMZB.cjs.map +0 -1
- package/dist/chunk-I3C4ODGV.cjs +0 -335
- package/dist/chunk-I3C4ODGV.cjs.map +0 -1
- package/dist/chunk-K5T5A3AL.cjs.map +0 -1
- package/dist/chunk-KDUHLUK4.cjs.map +0 -1
- package/dist/chunk-LF2ZLOFP.js.map +0 -1
- package/dist/chunk-LLUOPR3J.js +0 -323
- package/dist/chunk-LLUOPR3J.js.map +0 -1
- package/dist/chunk-MN2TZQ7I.js.map +0 -1
- package/dist/chunk-OGK26QPW.js.map +0 -1
- package/dist/chunk-SPRRK3P7.cjs.map +0 -1
- package/dist/chunk-TRGAMKHX.cjs.map +0 -1
- package/dist/chunk-XN74I6VW.cjs.map +0 -1
- package/dist/chunk-Y7SH5ZKM.cjs.map +0 -1
- package/dist/chunk-YSHNCC6F.cjs.map +0 -1
- package/dist/chunk-ZLBL4NQC.js.map +0 -1
- package/dist/server/handlers/legacyWorkflows.cjs +0 -48
- package/dist/server/handlers/legacyWorkflows.cjs.map +0 -1
- package/dist/server/handlers/legacyWorkflows.d.ts +0 -59
- package/dist/server/handlers/legacyWorkflows.d.ts.map +0 -1
- package/dist/server/handlers/legacyWorkflows.js +0 -3
- package/dist/server/handlers/legacyWorkflows.js.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { stringify } from './chunk-GQRJOUV7.js';
|
|
1
2
|
import { sanitizeBody, validateBody } from './chunk-4QCXUEAT.js';
|
|
2
|
-
import { stringify } from './chunk-LF2ZLOFP.js';
|
|
3
3
|
import { handleError } from './chunk-CY4TP3FK.js';
|
|
4
4
|
import { HTTPException } from './chunk-MMROOK5J.js';
|
|
5
5
|
import { __export } from './chunk-PR4QN5HX.js';
|
|
6
6
|
import { PROVIDER_REGISTRY } from '@mastra/core/llm';
|
|
7
|
-
import {
|
|
7
|
+
import { RequestContext } from '@mastra/core/request-context';
|
|
8
8
|
import { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';
|
|
9
9
|
|
|
10
10
|
// src/server/handlers/agents.ts
|
|
@@ -16,13 +16,12 @@ __export(agents_exports, {
|
|
|
16
16
|
generateLegacyHandler: () => generateLegacyHandler,
|
|
17
17
|
getAgentByIdHandler: () => getAgentByIdHandler,
|
|
18
18
|
getAgentFromSystem: () => getAgentFromSystem,
|
|
19
|
-
getAgentsHandler: () => getAgentsHandler,
|
|
20
|
-
getEvalsByAgentIdHandler: () => getEvalsByAgentIdHandler,
|
|
21
|
-
getLiveEvalsByAgentIdHandler: () => getLiveEvalsByAgentIdHandler,
|
|
22
19
|
getProvidersHandler: () => getProvidersHandler,
|
|
23
20
|
getSerializedAgentTools: () => getSerializedAgentTools,
|
|
24
21
|
getSerializedProcessors: () => getSerializedProcessors,
|
|
22
|
+
listAgentsHandler: () => listAgentsHandler,
|
|
25
23
|
reorderAgentModelListHandler: () => reorderAgentModelListHandler,
|
|
24
|
+
resetAgentModelHandler: () => resetAgentModelHandler,
|
|
26
25
|
streamGenerateHandler: () => streamGenerateHandler,
|
|
27
26
|
streamGenerateLegacyHandler: () => streamGenerateLegacyHandler,
|
|
28
27
|
streamNetworkHandler: () => streamNetworkHandler,
|
|
@@ -87,11 +86,11 @@ function getSerializedProcessors(processors) {
|
|
|
87
86
|
}
|
|
88
87
|
async function getSerializedAgentDefinition({
|
|
89
88
|
agent,
|
|
90
|
-
|
|
89
|
+
requestContext
|
|
91
90
|
}) {
|
|
92
91
|
let serializedAgentAgents = {};
|
|
93
92
|
if ("listAgents" in agent) {
|
|
94
|
-
const agents = await agent.listAgents({
|
|
93
|
+
const agents = await agent.listAgents({ requestContext });
|
|
95
94
|
serializedAgentAgents = Object.entries(agents || {}).reduce(
|
|
96
95
|
(acc, [key, agent2]) => {
|
|
97
96
|
return {
|
|
@@ -108,19 +107,19 @@ async function formatAgentList({
|
|
|
108
107
|
id,
|
|
109
108
|
mastra,
|
|
110
109
|
agent,
|
|
111
|
-
|
|
110
|
+
requestContext
|
|
112
111
|
}) {
|
|
113
|
-
const instructions = await agent.getInstructions({
|
|
114
|
-
const tools = await agent.
|
|
115
|
-
const llm = await agent.getLLM({
|
|
116
|
-
const defaultGenerateOptions = await agent.getDefaultGenerateOptionsLegacy({
|
|
117
|
-
const defaultStreamOptions = await agent.getDefaultStreamOptionsLegacy({
|
|
112
|
+
const instructions = await agent.getInstructions({ requestContext });
|
|
113
|
+
const tools = await agent.listTools({ requestContext });
|
|
114
|
+
const llm = await agent.getLLM({ requestContext });
|
|
115
|
+
const defaultGenerateOptions = await agent.getDefaultGenerateOptionsLegacy({ requestContext });
|
|
116
|
+
const defaultStreamOptions = await agent.getDefaultStreamOptionsLegacy({ requestContext });
|
|
118
117
|
const serializedAgentTools = await getSerializedAgentTools(tools);
|
|
119
118
|
let serializedAgentWorkflows = {};
|
|
120
|
-
if ("
|
|
119
|
+
if ("listWorkflows" in agent) {
|
|
121
120
|
const logger = mastra.getLogger();
|
|
122
121
|
try {
|
|
123
|
-
const workflows = await agent.
|
|
122
|
+
const workflows = await agent.listWorkflows({ requestContext });
|
|
124
123
|
serializedAgentWorkflows = Object.entries(workflows || {}).reduce((acc, [key, workflow]) => {
|
|
125
124
|
return {
|
|
126
125
|
...acc,
|
|
@@ -133,13 +132,13 @@ async function formatAgentList({
|
|
|
133
132
|
logger.error("Error getting workflows for agent", { agentName: agent.name, error });
|
|
134
133
|
}
|
|
135
134
|
}
|
|
136
|
-
const serializedAgentAgents = await getSerializedAgentDefinition({ agent,
|
|
137
|
-
const inputProcessors = await agent.getInputProcessors(
|
|
138
|
-
const outputProcessors = await agent.getOutputProcessors(
|
|
135
|
+
const serializedAgentAgents = await getSerializedAgentDefinition({ agent, requestContext });
|
|
136
|
+
const inputProcessors = await agent.getInputProcessors(requestContext);
|
|
137
|
+
const outputProcessors = await agent.getOutputProcessors(requestContext);
|
|
139
138
|
const serializedInputProcessors = getSerializedProcessors(inputProcessors);
|
|
140
139
|
const serializedOutputProcessors = getSerializedProcessors(outputProcessors);
|
|
141
140
|
const model = llm?.getModel();
|
|
142
|
-
const models = await agent.getModelList(
|
|
141
|
+
const models = await agent.getModelList(requestContext);
|
|
143
142
|
const modelList = models?.map((md) => ({
|
|
144
143
|
...md,
|
|
145
144
|
model: {
|
|
@@ -178,7 +177,7 @@ async function getAgentFromSystem({ mastra, agentId }) {
|
|
|
178
177
|
}
|
|
179
178
|
if (!agent) {
|
|
180
179
|
logger.debug(`Agent ${agentId} not found, looking through sub-agents`);
|
|
181
|
-
const agents = mastra.
|
|
180
|
+
const agents = mastra.listAgents();
|
|
182
181
|
if (Object.keys(agents || {}).length) {
|
|
183
182
|
for (const [_, ag] of Object.entries(agents)) {
|
|
184
183
|
try {
|
|
@@ -198,15 +197,15 @@ async function getAgentFromSystem({ mastra, agentId }) {
|
|
|
198
197
|
}
|
|
199
198
|
return agent;
|
|
200
199
|
}
|
|
201
|
-
async function
|
|
200
|
+
async function listAgentsHandler({
|
|
202
201
|
mastra,
|
|
203
|
-
|
|
202
|
+
requestContext
|
|
204
203
|
}) {
|
|
205
204
|
try {
|
|
206
|
-
const agents = mastra.
|
|
205
|
+
const agents = mastra.listAgents();
|
|
207
206
|
const serializedAgentsMap = await Promise.all(
|
|
208
207
|
Object.entries(agents).map(async ([id, agent]) => {
|
|
209
|
-
return formatAgentList({ id, mastra, agent,
|
|
208
|
+
return formatAgentList({ id, mastra, agent, requestContext });
|
|
210
209
|
})
|
|
211
210
|
);
|
|
212
211
|
const serializedAgents = serializedAgentsMap.reduce((acc, { id, ...rest }) => {
|
|
@@ -221,16 +220,16 @@ async function getAgentsHandler({
|
|
|
221
220
|
async function formatAgent({
|
|
222
221
|
mastra,
|
|
223
222
|
agent,
|
|
224
|
-
|
|
223
|
+
requestContext,
|
|
225
224
|
isPlayground
|
|
226
225
|
}) {
|
|
227
|
-
const tools = await agent.
|
|
226
|
+
const tools = await agent.listTools({ requestContext });
|
|
228
227
|
const serializedAgentTools = await getSerializedAgentTools(tools);
|
|
229
228
|
let serializedAgentWorkflows = {};
|
|
230
|
-
if ("
|
|
229
|
+
if ("listWorkflows" in agent) {
|
|
231
230
|
const logger = mastra.getLogger();
|
|
232
231
|
try {
|
|
233
|
-
const workflows = await agent.
|
|
232
|
+
const workflows = await agent.listWorkflows({ requestContext });
|
|
234
233
|
serializedAgentWorkflows = Object.entries(workflows || {}).reduce((acc, [key, workflow]) => {
|
|
235
234
|
return {
|
|
236
235
|
...acc,
|
|
@@ -255,9 +254,9 @@ async function formatAgent({
|
|
|
255
254
|
logger.error("Error getting workflows for agent", { agentName: agent.name, error });
|
|
256
255
|
}
|
|
257
256
|
}
|
|
258
|
-
let
|
|
257
|
+
let proxyRequestContext = requestContext;
|
|
259
258
|
if (isPlayground) {
|
|
260
|
-
|
|
259
|
+
proxyRequestContext = new Proxy(requestContext, {
|
|
261
260
|
get(target, prop) {
|
|
262
261
|
if (prop === "get") {
|
|
263
262
|
return function(key) {
|
|
@@ -269,12 +268,12 @@ async function formatAgent({
|
|
|
269
268
|
}
|
|
270
269
|
});
|
|
271
270
|
}
|
|
272
|
-
const instructions = await agent.getInstructions({
|
|
273
|
-
const llm = await agent.getLLM({
|
|
274
|
-
const defaultGenerateOptions = await agent.getDefaultGenerateOptionsLegacy({
|
|
275
|
-
const defaultStreamOptions = await agent.getDefaultStreamOptionsLegacy({
|
|
271
|
+
const instructions = await agent.getInstructions({ requestContext: proxyRequestContext });
|
|
272
|
+
const llm = await agent.getLLM({ requestContext });
|
|
273
|
+
const defaultGenerateOptions = await agent.getDefaultGenerateOptionsLegacy({ requestContext: proxyRequestContext });
|
|
274
|
+
const defaultStreamOptions = await agent.getDefaultStreamOptionsLegacy({ requestContext: proxyRequestContext });
|
|
276
275
|
const model = llm?.getModel();
|
|
277
|
-
const models = await agent.getModelList(
|
|
276
|
+
const models = await agent.getModelList(requestContext);
|
|
278
277
|
const modelList = models?.map((md) => ({
|
|
279
278
|
...md,
|
|
280
279
|
model: {
|
|
@@ -283,9 +282,9 @@ async function formatAgent({
|
|
|
283
282
|
modelVersion: md.model.specificationVersion
|
|
284
283
|
}
|
|
285
284
|
}));
|
|
286
|
-
const serializedAgentAgents = await getSerializedAgentDefinition({ agent,
|
|
287
|
-
const inputProcessors = await agent.getInputProcessors(
|
|
288
|
-
const outputProcessors = await agent.getOutputProcessors(
|
|
285
|
+
const serializedAgentAgents = await getSerializedAgentDefinition({ agent, requestContext: proxyRequestContext });
|
|
286
|
+
const inputProcessors = await agent.getInputProcessors(proxyRequestContext);
|
|
287
|
+
const outputProcessors = await agent.getOutputProcessors(proxyRequestContext);
|
|
289
288
|
const serializedInputProcessors = getSerializedProcessors(inputProcessors);
|
|
290
289
|
const serializedOutputProcessors = getSerializedProcessors(outputProcessors);
|
|
291
290
|
return {
|
|
@@ -306,58 +305,20 @@ async function formatAgent({
|
|
|
306
305
|
}
|
|
307
306
|
async function getAgentByIdHandler({
|
|
308
307
|
mastra,
|
|
309
|
-
|
|
308
|
+
requestContext,
|
|
310
309
|
agentId,
|
|
311
310
|
isPlayground = false
|
|
312
311
|
}) {
|
|
313
312
|
try {
|
|
314
313
|
const agent = await getAgentFromSystem({ mastra, agentId });
|
|
315
|
-
return formatAgent({ mastra, agent,
|
|
314
|
+
return formatAgent({ mastra, agent, requestContext, isPlayground });
|
|
316
315
|
} catch (error) {
|
|
317
316
|
return handleError(error, "Error getting agent");
|
|
318
317
|
}
|
|
319
318
|
}
|
|
320
|
-
async function getEvalsByAgentIdHandler({
|
|
321
|
-
mastra,
|
|
322
|
-
runtimeContext,
|
|
323
|
-
agentId
|
|
324
|
-
}) {
|
|
325
|
-
try {
|
|
326
|
-
const agent = await getAgentFromSystem({ mastra, agentId });
|
|
327
|
-
const evals = await mastra.getStorage()?.getEvalsByAgentName?.(agent.name, "test") || [];
|
|
328
|
-
const instructions = await agent.getInstructions({ runtimeContext });
|
|
329
|
-
return {
|
|
330
|
-
id: agentId,
|
|
331
|
-
name: agent.name,
|
|
332
|
-
instructions,
|
|
333
|
-
evals
|
|
334
|
-
};
|
|
335
|
-
} catch (error) {
|
|
336
|
-
return handleError(error, "Error getting test evals");
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
async function getLiveEvalsByAgentIdHandler({
|
|
340
|
-
mastra,
|
|
341
|
-
runtimeContext,
|
|
342
|
-
agentId
|
|
343
|
-
}) {
|
|
344
|
-
try {
|
|
345
|
-
const agent = await getAgentFromSystem({ mastra, agentId });
|
|
346
|
-
const evals = await mastra.getStorage()?.getEvalsByAgentName?.(agent.name, "live") || [];
|
|
347
|
-
const instructions = await agent.getInstructions({ runtimeContext });
|
|
348
|
-
return {
|
|
349
|
-
id: agentId,
|
|
350
|
-
name: agent.name,
|
|
351
|
-
instructions,
|
|
352
|
-
evals
|
|
353
|
-
};
|
|
354
|
-
} catch (error) {
|
|
355
|
-
return handleError(error, "Error getting live evals");
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
319
|
async function generateLegacyHandler({
|
|
359
320
|
mastra,
|
|
360
|
-
|
|
321
|
+
requestContext,
|
|
361
322
|
agentId,
|
|
362
323
|
body,
|
|
363
324
|
abortSignal
|
|
@@ -365,11 +326,11 @@ async function generateLegacyHandler({
|
|
|
365
326
|
try {
|
|
366
327
|
const agent = await getAgentFromSystem({ mastra, agentId });
|
|
367
328
|
sanitizeBody(body, ["tools"]);
|
|
368
|
-
const { messages, resourceId, resourceid,
|
|
329
|
+
const { messages, resourceId, resourceid, requestContext: agentRequestContext, ...rest } = body;
|
|
369
330
|
const finalResourceId = resourceId ?? resourceid;
|
|
370
|
-
const
|
|
371
|
-
...Array.from(
|
|
372
|
-
...Array.from(Object.entries(
|
|
331
|
+
const finalRequestContext = new RequestContext([
|
|
332
|
+
...Array.from(requestContext.entries()),
|
|
333
|
+
...Array.from(Object.entries(agentRequestContext ?? {}))
|
|
373
334
|
]);
|
|
374
335
|
validateBody({ messages });
|
|
375
336
|
const result = await agent.generateLegacy(messages, {
|
|
@@ -377,7 +338,7 @@ async function generateLegacyHandler({
|
|
|
377
338
|
abortSignal,
|
|
378
339
|
// @ts-expect-error TODO fix types
|
|
379
340
|
resourceId: finalResourceId,
|
|
380
|
-
|
|
341
|
+
requestContext: finalRequestContext
|
|
381
342
|
});
|
|
382
343
|
return result;
|
|
383
344
|
} catch (error) {
|
|
@@ -386,7 +347,7 @@ async function generateLegacyHandler({
|
|
|
386
347
|
}
|
|
387
348
|
async function generateHandler({
|
|
388
349
|
mastra,
|
|
389
|
-
|
|
350
|
+
requestContext,
|
|
390
351
|
agentId,
|
|
391
352
|
body,
|
|
392
353
|
abortSignal
|
|
@@ -394,15 +355,15 @@ async function generateHandler({
|
|
|
394
355
|
try {
|
|
395
356
|
const agent = await getAgentFromSystem({ mastra, agentId });
|
|
396
357
|
sanitizeBody(body, ["tools"]);
|
|
397
|
-
const { messages,
|
|
398
|
-
const
|
|
399
|
-
...Array.from(
|
|
400
|
-
...Array.from(Object.entries(
|
|
358
|
+
const { messages, requestContext: agentRequestContext, ...rest } = body;
|
|
359
|
+
const finalRequestContext = new RequestContext([
|
|
360
|
+
...Array.from(requestContext.entries()),
|
|
361
|
+
...Array.from(Object.entries(agentRequestContext ?? {}))
|
|
401
362
|
]);
|
|
402
363
|
validateBody({ messages });
|
|
403
364
|
const result = await agent.generate(messages, {
|
|
404
365
|
...rest,
|
|
405
|
-
|
|
366
|
+
requestContext: finalRequestContext,
|
|
406
367
|
format: rest.format || "mastra",
|
|
407
368
|
abortSignal
|
|
408
369
|
});
|
|
@@ -413,18 +374,18 @@ async function generateHandler({
|
|
|
413
374
|
}
|
|
414
375
|
async function streamGenerateLegacyHandler({
|
|
415
376
|
mastra,
|
|
416
|
-
|
|
377
|
+
requestContext,
|
|
417
378
|
agentId,
|
|
418
379
|
body,
|
|
419
380
|
abortSignal
|
|
420
381
|
}) {
|
|
421
382
|
try {
|
|
422
383
|
const agent = await getAgentFromSystem({ mastra, agentId });
|
|
423
|
-
const { messages, resourceId, resourceid,
|
|
384
|
+
const { messages, resourceId, resourceid, requestContext: agentRequestContext, ...rest } = body;
|
|
424
385
|
const finalResourceId = resourceId ?? resourceid;
|
|
425
|
-
const
|
|
426
|
-
...Array.from(
|
|
427
|
-
...Array.from(Object.entries(
|
|
386
|
+
const finalRequestContext = new RequestContext([
|
|
387
|
+
...Array.from(requestContext.entries()),
|
|
388
|
+
...Array.from(Object.entries(agentRequestContext ?? {}))
|
|
428
389
|
]);
|
|
429
390
|
validateBody({ messages });
|
|
430
391
|
const streamResult = await agent.streamLegacy(messages, {
|
|
@@ -432,7 +393,7 @@ async function streamGenerateLegacyHandler({
|
|
|
432
393
|
abortSignal,
|
|
433
394
|
// @ts-expect-error TODO fix types
|
|
434
395
|
resourceId: finalResourceId,
|
|
435
|
-
|
|
396
|
+
requestContext: finalRequestContext
|
|
436
397
|
});
|
|
437
398
|
const streamResponse = rest.output ? streamResult.toTextStreamResponse({
|
|
438
399
|
headers: {
|
|
@@ -455,7 +416,7 @@ async function streamGenerateLegacyHandler({
|
|
|
455
416
|
}
|
|
456
417
|
async function streamGenerateHandler({
|
|
457
418
|
mastra,
|
|
458
|
-
|
|
419
|
+
requestContext,
|
|
459
420
|
agentId,
|
|
460
421
|
body,
|
|
461
422
|
abortSignal
|
|
@@ -463,15 +424,15 @@ async function streamGenerateHandler({
|
|
|
463
424
|
try {
|
|
464
425
|
const agent = await getAgentFromSystem({ mastra, agentId });
|
|
465
426
|
sanitizeBody(body, ["tools"]);
|
|
466
|
-
const { messages,
|
|
467
|
-
const
|
|
468
|
-
...Array.from(
|
|
469
|
-
...Array.from(Object.entries(
|
|
427
|
+
const { messages, requestContext: agentRequestContext, ...rest } = body;
|
|
428
|
+
const finalRequestContext = new RequestContext([
|
|
429
|
+
...Array.from(requestContext.entries()),
|
|
430
|
+
...Array.from(Object.entries(agentRequestContext ?? {}))
|
|
470
431
|
]);
|
|
471
432
|
validateBody({ messages });
|
|
472
433
|
const streamResult = agent.stream(messages, {
|
|
473
434
|
...rest,
|
|
474
|
-
|
|
435
|
+
requestContext: finalRequestContext,
|
|
475
436
|
abortSignal,
|
|
476
437
|
format: body.format ?? "mastra"
|
|
477
438
|
});
|
|
@@ -482,7 +443,7 @@ async function streamGenerateHandler({
|
|
|
482
443
|
}
|
|
483
444
|
async function approveToolCallHandler({
|
|
484
445
|
mastra,
|
|
485
|
-
|
|
446
|
+
requestContext,
|
|
486
447
|
agentId,
|
|
487
448
|
body,
|
|
488
449
|
abortSignal
|
|
@@ -496,15 +457,15 @@ async function approveToolCallHandler({
|
|
|
496
457
|
throw new HTTPException(400, { message: "Tool call id is required" });
|
|
497
458
|
}
|
|
498
459
|
sanitizeBody(body, ["tools"]);
|
|
499
|
-
const { runId,
|
|
500
|
-
const
|
|
501
|
-
...Array.from(
|
|
502
|
-
...Array.from(Object.entries(
|
|
460
|
+
const { runId, requestContext: agentRequestContext, ...rest } = body;
|
|
461
|
+
const finalRequestContext = new RequestContext([
|
|
462
|
+
...Array.from(requestContext.entries()),
|
|
463
|
+
...Array.from(Object.entries(agentRequestContext ?? {}))
|
|
503
464
|
]);
|
|
504
465
|
const streamResult = agent.approveToolCall({
|
|
505
466
|
...rest,
|
|
506
467
|
runId,
|
|
507
|
-
|
|
468
|
+
requestContext: finalRequestContext,
|
|
508
469
|
abortSignal,
|
|
509
470
|
format: body.format ?? "mastra"
|
|
510
471
|
});
|
|
@@ -515,7 +476,7 @@ async function approveToolCallHandler({
|
|
|
515
476
|
}
|
|
516
477
|
async function declineToolCallHandler({
|
|
517
478
|
mastra,
|
|
518
|
-
|
|
479
|
+
requestContext,
|
|
519
480
|
agentId,
|
|
520
481
|
body,
|
|
521
482
|
abortSignal
|
|
@@ -529,15 +490,15 @@ async function declineToolCallHandler({
|
|
|
529
490
|
throw new HTTPException(400, { message: "Tool call id is required" });
|
|
530
491
|
}
|
|
531
492
|
sanitizeBody(body, ["tools"]);
|
|
532
|
-
const { runId,
|
|
533
|
-
const
|
|
534
|
-
...Array.from(
|
|
535
|
-
...Array.from(Object.entries(
|
|
493
|
+
const { runId, requestContext: agentRequestContext, ...rest } = body;
|
|
494
|
+
const finalRequestContext = new RequestContext([
|
|
495
|
+
...Array.from(requestContext.entries()),
|
|
496
|
+
...Array.from(Object.entries(agentRequestContext ?? {}))
|
|
536
497
|
]);
|
|
537
498
|
const streamResult = agent.declineToolCall({
|
|
538
499
|
...rest,
|
|
539
500
|
runId,
|
|
540
|
-
|
|
501
|
+
requestContext: finalRequestContext,
|
|
541
502
|
abortSignal,
|
|
542
503
|
format: body.format ?? "mastra"
|
|
543
504
|
});
|
|
@@ -548,7 +509,7 @@ async function declineToolCallHandler({
|
|
|
548
509
|
}
|
|
549
510
|
async function streamNetworkHandler({
|
|
550
511
|
mastra,
|
|
551
|
-
|
|
512
|
+
requestContext,
|
|
552
513
|
agentId,
|
|
553
514
|
body
|
|
554
515
|
// abortSignal,
|
|
@@ -556,10 +517,10 @@ async function streamNetworkHandler({
|
|
|
556
517
|
try {
|
|
557
518
|
const agent = await getAgentFromSystem({ mastra, agentId });
|
|
558
519
|
sanitizeBody(body, ["tools"]);
|
|
559
|
-
const { messages,
|
|
560
|
-
const
|
|
561
|
-
...Array.from(
|
|
562
|
-
...Array.from(Object.entries(
|
|
520
|
+
const { messages, requestContext: agentRequestContext, ...rest } = body;
|
|
521
|
+
const finalRequestContext = new RequestContext([
|
|
522
|
+
...Array.from(requestContext.entries()),
|
|
523
|
+
...Array.from(Object.entries(agentRequestContext ?? {}))
|
|
563
524
|
]);
|
|
564
525
|
validateBody({ messages });
|
|
565
526
|
const streamResult = agent.network(messages, {
|
|
@@ -569,7 +530,7 @@ async function streamNetworkHandler({
|
|
|
569
530
|
resource: rest.resourceId ?? "",
|
|
570
531
|
options: rest.memory?.options ?? {}
|
|
571
532
|
},
|
|
572
|
-
|
|
533
|
+
requestContext: finalRequestContext
|
|
573
534
|
});
|
|
574
535
|
return streamResult;
|
|
575
536
|
} catch (error) {
|
|
@@ -578,7 +539,7 @@ async function streamNetworkHandler({
|
|
|
578
539
|
}
|
|
579
540
|
async function streamUIMessageHandler({
|
|
580
541
|
mastra,
|
|
581
|
-
|
|
542
|
+
requestContext,
|
|
582
543
|
agentId,
|
|
583
544
|
body,
|
|
584
545
|
abortSignal
|
|
@@ -586,15 +547,15 @@ async function streamUIMessageHandler({
|
|
|
586
547
|
try {
|
|
587
548
|
const agent = await getAgentFromSystem({ mastra, agentId });
|
|
588
549
|
sanitizeBody(body, ["tools"]);
|
|
589
|
-
const { messages,
|
|
590
|
-
const
|
|
591
|
-
...Array.from(
|
|
592
|
-
...Array.from(Object.entries(
|
|
550
|
+
const { messages, requestContext: agentRequestContext, ...rest } = body;
|
|
551
|
+
const finalRequestContext = new RequestContext([
|
|
552
|
+
...Array.from(requestContext.entries()),
|
|
553
|
+
...Array.from(Object.entries(agentRequestContext ?? {}))
|
|
593
554
|
]);
|
|
594
555
|
validateBody({ messages });
|
|
595
556
|
const streamResult = await agent.stream(messages, {
|
|
596
557
|
...rest,
|
|
597
|
-
|
|
558
|
+
requestContext: finalRequestContext,
|
|
598
559
|
abortSignal,
|
|
599
560
|
format: "aisdk"
|
|
600
561
|
});
|
|
@@ -618,6 +579,18 @@ async function updateAgentModelHandler({
|
|
|
618
579
|
return handleError(error, "error updating agent model");
|
|
619
580
|
}
|
|
620
581
|
}
|
|
582
|
+
async function resetAgentModelHandler({
|
|
583
|
+
mastra,
|
|
584
|
+
agentId
|
|
585
|
+
}) {
|
|
586
|
+
try {
|
|
587
|
+
const agent = await getAgentFromSystem({ mastra, agentId });
|
|
588
|
+
agent.__resetToOriginalModel();
|
|
589
|
+
return { message: "Agent model reset to original" };
|
|
590
|
+
} catch (error) {
|
|
591
|
+
return handleError(error, "error resetting agent model");
|
|
592
|
+
}
|
|
593
|
+
}
|
|
621
594
|
async function reorderAgentModelListHandler({
|
|
622
595
|
mastra,
|
|
623
596
|
agentId,
|
|
@@ -687,6 +660,6 @@ async function getProvidersHandler() {
|
|
|
687
660
|
}
|
|
688
661
|
}
|
|
689
662
|
|
|
690
|
-
export { agents_exports, approveToolCallHandler, declineToolCallHandler, generateHandler, generateLegacyHandler, getAgentByIdHandler, getAgentFromSystem,
|
|
691
|
-
//# sourceMappingURL=chunk-
|
|
692
|
-
//# sourceMappingURL=chunk-
|
|
663
|
+
export { agents_exports, approveToolCallHandler, declineToolCallHandler, generateHandler, generateLegacyHandler, getAgentByIdHandler, getAgentFromSystem, getProvidersHandler, getSerializedAgentTools, getSerializedProcessors, listAgentsHandler, reorderAgentModelListHandler, resetAgentModelHandler, streamGenerateHandler, streamGenerateLegacyHandler, streamNetworkHandler, streamUIMessageHandler, updateAgentModelHandler, updateAgentModelInModelListHandler };
|
|
664
|
+
//# sourceMappingURL=chunk-7MCHFMDF.js.map
|
|
665
|
+
//# sourceMappingURL=chunk-7MCHFMDF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/agents.ts"],"names":["agent","acc","key"],"mappings":"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","file":"chunk-7MCHFMDF.js","sourcesContent":["import type { Agent, AgentModelManagerConfig } from '@mastra/core/agent';\nimport { PROVIDER_REGISTRY } from '@mastra/core/llm';\nimport type { SystemMessage } from '@mastra/core/llm';\nimport type { InputProcessor, OutputProcessor } from '@mastra/core/processors';\nimport { RequestContext } from '@mastra/core/request-context';\nimport { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';\nimport { stringify } from 'superjson';\n\nimport type {\n StreamTextOnFinishCallback,\n StreamTextOnStepFinishCallback,\n} from '../../../../core/dist/llm/model/base.types';\nimport { HTTPException } from '../http-exception';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\nimport { sanitizeBody, validateBody } from './utils';\n\ntype GetBody<\n T extends keyof Agent & { [K in keyof Agent]: Agent[K] extends (...args: any) => any ? K : never }[keyof Agent],\n> = {\n messages: Parameters<Agent[T]>[0];\n} & Parameters<Agent[T]>[1];\n\ntype GetHITLBody<\n T extends keyof Agent & { [K in keyof Agent]: Agent[K] extends (...args: any) => any ? K : never }[keyof Agent],\n> = Parameters<Agent[T]>[0];\n\nexport interface SerializedProcessor {\n name: string;\n}\n\nexport interface SerializedTool {\n id: string;\n description?: string;\n inputSchema?: string;\n outputSchema?: string;\n requireApproval?: boolean;\n}\n\nexport interface SerializedWorkflow {\n name: string;\n steps?: Record<string, { id: string; description?: string }>;\n}\n\nexport interface SerializedAgent {\n name: string;\n instructions?: SystemMessage;\n tools: Record<string, SerializedTool>;\n agents: Record<string, SerializedAgentDefinition>;\n workflows: Record<string, SerializedWorkflow>;\n inputProcessors: SerializedProcessor[];\n outputProcessors: SerializedProcessor[];\n provider?: string;\n modelId?: string;\n modelVersion?: string;\n modelList?: Array<\n Omit<AgentModelManagerConfig, 'model'> & {\n model: {\n modelId: string;\n provider: string;\n modelVersion: string;\n };\n }\n >;\n // We can't use the true types here because they are not serializable\n defaultGenerateOptions?: Record<string, unknown>;\n defaultStreamOptions?: Record<string, unknown>;\n}\n\nexport interface SerializedAgentWithId extends SerializedAgent {\n id: string;\n}\n\nexport async function getSerializedAgentTools(tools: Record<string, unknown>): Promise<Record<string, SerializedTool>> {\n return Object.entries(tools || {}).reduce<Record<string, SerializedTool>>((acc, [key, tool]) => {\n const _tool = tool as {\n id?: string;\n description?: string;\n inputSchema?: { jsonSchema?: unknown } | unknown;\n outputSchema?: { jsonSchema?: unknown } | unknown;\n };\n\n const toolId = _tool.id ?? `tool-${key}`;\n\n let inputSchemaForReturn: string | undefined = undefined;\n let outputSchemaForReturn: string | undefined = undefined;\n\n try {\n if (_tool.inputSchema) {\n if (_tool.inputSchema && typeof _tool.inputSchema === 'object' && 'jsonSchema' in _tool.inputSchema) {\n inputSchemaForReturn = stringify(_tool.inputSchema.jsonSchema);\n } else if (typeof _tool.inputSchema === 'function') {\n const inputSchema = _tool.inputSchema();\n if (inputSchema && inputSchema.jsonSchema) {\n inputSchemaForReturn = stringify(inputSchema.jsonSchema);\n }\n } else if (_tool.inputSchema) {\n inputSchemaForReturn = stringify(zodToJsonSchema(_tool.inputSchema as Parameters<typeof zodToJsonSchema>[0]));\n }\n }\n\n if (_tool.outputSchema) {\n if (_tool.outputSchema && typeof _tool.outputSchema === 'object' && 'jsonSchema' in _tool.outputSchema) {\n outputSchemaForReturn = stringify(_tool.outputSchema.jsonSchema);\n } else if (typeof _tool.outputSchema === 'function') {\n const outputSchema = _tool.outputSchema();\n if (outputSchema && outputSchema.jsonSchema) {\n outputSchemaForReturn = stringify(outputSchema.jsonSchema);\n }\n } else if (_tool.outputSchema) {\n outputSchemaForReturn = stringify(\n zodToJsonSchema(_tool.outputSchema as Parameters<typeof zodToJsonSchema>[0]),\n );\n }\n }\n } catch (error) {\n console.error(`Error getting serialized tool`, {\n toolId: _tool.id,\n error,\n });\n }\n\n acc[key] = {\n ..._tool,\n id: toolId,\n inputSchema: inputSchemaForReturn,\n outputSchema: outputSchemaForReturn,\n };\n return acc;\n }, {});\n}\n\nexport function getSerializedProcessors(processors: (InputProcessor | OutputProcessor)[]): SerializedProcessor[] {\n return processors.map(processor => {\n // Processors are class instances or objects with a name property\n // Use the name property if available, otherwise fall back to constructor name\n return {\n name: processor.name || processor.constructor.name,\n };\n });\n}\n\ninterface SerializedAgentDefinition {\n id: string;\n name: string;\n}\n\nasync function getSerializedAgentDefinition({\n agent,\n requestContext,\n}: {\n agent: Agent;\n requestContext: RequestContext;\n}): Promise<Record<string, SerializedAgentDefinition>> {\n let serializedAgentAgents: Record<string, SerializedAgentDefinition> = {};\n\n if ('listAgents' in agent) {\n const agents = await agent.listAgents({ requestContext });\n serializedAgentAgents = Object.entries(agents || {}).reduce<Record<string, SerializedAgentDefinition>>(\n (acc, [key, agent]) => {\n return {\n ...acc,\n [key]: { id: agent.id, name: agent.name },\n };\n },\n {},\n );\n }\n return serializedAgentAgents;\n}\n\nasync function formatAgentList({\n id,\n mastra,\n agent,\n requestContext,\n}: {\n id: string;\n mastra: Context['mastra'];\n agent: Agent;\n requestContext: RequestContext;\n}): Promise<SerializedAgentWithId> {\n const instructions = await agent.getInstructions({ requestContext });\n const tools = await agent.listTools({ requestContext });\n const llm = await agent.getLLM({ requestContext });\n const defaultGenerateOptions = await agent.getDefaultGenerateOptionsLegacy({ requestContext });\n const defaultStreamOptions = await agent.getDefaultStreamOptionsLegacy({ requestContext });\n const serializedAgentTools = await getSerializedAgentTools(tools);\n\n let serializedAgentWorkflows: Record<\n string,\n { name: string; steps?: Record<string, { id: string; description?: string }> }\n > = {};\n\n if ('listWorkflows' in agent) {\n const logger = mastra.getLogger();\n try {\n const workflows = await agent.listWorkflows({ requestContext });\n serializedAgentWorkflows = Object.entries(workflows || {}).reduce<\n Record<string, { name: string; steps?: Record<string, { id: string; description?: string }> }>\n >((acc, [key, workflow]) => {\n return {\n ...acc,\n [key]: {\n name: workflow.name || 'Unnamed workflow',\n },\n };\n }, {});\n } catch (error) {\n logger.error('Error getting workflows for agent', { agentName: agent.name, error });\n }\n }\n\n const serializedAgentAgents = await getSerializedAgentDefinition({ agent, requestContext });\n\n // Get and serialize processors\n const inputProcessors = await agent.getInputProcessors(requestContext);\n const outputProcessors = await agent.getOutputProcessors(requestContext);\n const serializedInputProcessors = getSerializedProcessors(inputProcessors);\n const serializedOutputProcessors = getSerializedProcessors(outputProcessors);\n\n const model = llm?.getModel();\n const models = await agent.getModelList(requestContext);\n const modelList = models?.map(md => ({\n ...md,\n model: {\n modelId: md.model.modelId,\n provider: md.model.provider,\n modelVersion: md.model.specificationVersion,\n },\n }));\n\n return {\n id,\n name: agent.name,\n instructions,\n agents: serializedAgentAgents,\n tools: serializedAgentTools,\n workflows: serializedAgentWorkflows,\n inputProcessors: serializedInputProcessors,\n outputProcessors: serializedOutputProcessors,\n provider: llm?.getProvider(),\n modelId: llm?.getModelId(),\n modelVersion: model?.specificationVersion,\n defaultGenerateOptions,\n defaultStreamOptions,\n modelList,\n };\n}\n\nexport async function getAgentFromSystem({ mastra, agentId }: { mastra: Context['mastra']; agentId: string }) {\n const logger = mastra.getLogger();\n\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n let agent;\n\n try {\n agent = mastra.getAgent(agentId);\n } catch (error) {\n logger.debug('Error getting agent from mastra, searching agents for agent', error);\n }\n\n if (!agent) {\n logger.debug(`Agent ${agentId} not found, looking through sub-agents`);\n const agents = mastra.listAgents();\n if (Object.keys(agents || {}).length) {\n for (const [_, ag] of Object.entries(agents)) {\n try {\n const subAgents = await ag.listAgents();\n\n if (subAgents[agentId]) {\n agent = subAgents[agentId];\n break;\n }\n } catch (error) {\n logger.debug('Error getting agent from agent', error);\n }\n }\n }\n }\n\n if (!agent) {\n throw new HTTPException(404, { message: `Agent with name ${agentId} not found` });\n }\n\n return agent;\n}\n\n// Agent handlers\nexport async function listAgentsHandler({\n mastra,\n requestContext,\n}: Context & { requestContext: RequestContext }): Promise<Record<string, SerializedAgent>> {\n try {\n const agents = mastra.listAgents();\n\n const serializedAgentsMap = await Promise.all(\n Object.entries(agents).map(async ([id, agent]) => {\n return formatAgentList({ id, mastra, agent, requestContext });\n }),\n );\n\n const serializedAgents = serializedAgentsMap.reduce<\n Record<string, Omit<(typeof serializedAgentsMap)[number], 'id'>>\n >((acc, { id, ...rest }) => {\n acc[id] = rest;\n return acc;\n }, {});\n\n return serializedAgents;\n } catch (error) {\n return handleError(error, 'Error getting agents');\n }\n}\n\nasync function formatAgent({\n mastra,\n agent,\n requestContext,\n isPlayground,\n}: {\n mastra: Context['mastra'];\n agent: Agent;\n requestContext: RequestContext;\n isPlayground: boolean;\n}): Promise<SerializedAgent> {\n const tools = await agent.listTools({ requestContext });\n\n const serializedAgentTools = await getSerializedAgentTools(tools);\n\n let serializedAgentWorkflows: Record<\n string,\n { name: string; steps: Record<string, { id: string; description?: string }> }\n > = {};\n\n if ('listWorkflows' in agent) {\n const logger = mastra.getLogger();\n try {\n const workflows = await agent.listWorkflows({ requestContext });\n\n serializedAgentWorkflows = Object.entries(workflows || {}).reduce<\n Record<string, { name: string; steps: Record<string, { id: string; description?: string }> }>\n >((acc, [key, workflow]) => {\n return {\n ...acc,\n [key]: {\n name: workflow.name || 'Unnamed workflow',\n steps: Object.entries(workflow.steps).reduce<Record<string, { id: string; description?: string }>>(\n (acc, [key, step]) => {\n return {\n ...acc,\n [key]: {\n id: step.id,\n description: step.description,\n },\n };\n },\n {},\n ),\n },\n };\n }, {});\n } catch (error) {\n logger.error('Error getting workflows for agent', { agentName: agent.name, error });\n }\n }\n\n let proxyRequestContext = requestContext;\n if (isPlayground) {\n proxyRequestContext = new Proxy(requestContext, {\n get(target, prop) {\n if (prop === 'get') {\n return function (key: string) {\n const value = target.get(key);\n return value ?? `<${key}>`;\n };\n }\n return Reflect.get(target, prop);\n },\n });\n }\n\n const instructions = await agent.getInstructions({ requestContext: proxyRequestContext });\n const llm = await agent.getLLM({ requestContext });\n const defaultGenerateOptions = await agent.getDefaultGenerateOptionsLegacy({ requestContext: proxyRequestContext });\n const defaultStreamOptions = await agent.getDefaultStreamOptionsLegacy({ requestContext: proxyRequestContext });\n\n const model = llm?.getModel();\n const models = await agent.getModelList(requestContext);\n const modelList = models?.map(md => ({\n ...md,\n model: {\n modelId: md.model.modelId,\n provider: md.model.provider,\n modelVersion: md.model.specificationVersion,\n },\n }));\n\n const serializedAgentAgents = await getSerializedAgentDefinition({ agent, requestContext: proxyRequestContext });\n\n // Get and serialize processors\n const inputProcessors = await agent.getInputProcessors(proxyRequestContext);\n const outputProcessors = await agent.getOutputProcessors(proxyRequestContext);\n const serializedInputProcessors = getSerializedProcessors(inputProcessors);\n const serializedOutputProcessors = getSerializedProcessors(outputProcessors);\n\n return {\n name: agent.name,\n instructions,\n tools: serializedAgentTools,\n agents: serializedAgentAgents,\n workflows: serializedAgentWorkflows,\n inputProcessors: serializedInputProcessors,\n outputProcessors: serializedOutputProcessors,\n provider: llm?.getProvider(),\n modelId: llm?.getModelId(),\n modelVersion: model?.specificationVersion,\n modelList,\n defaultGenerateOptions,\n defaultStreamOptions,\n };\n}\n\nexport async function getAgentByIdHandler({\n mastra,\n requestContext,\n agentId,\n isPlayground = false,\n}: Context & { isPlayground?: boolean; requestContext: RequestContext; agentId: string }): Promise<\n SerializedAgent | ReturnType<typeof handleError>\n> {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n return formatAgent({ mastra, agent, requestContext, isPlayground });\n } catch (error) {\n return handleError(error, 'Error getting agent');\n }\n}\n\nexport async function generateLegacyHandler({\n mastra,\n requestContext,\n agentId,\n body,\n abortSignal,\n}: Context & {\n requestContext: RequestContext;\n agentId: string;\n body: GetBody<'generateLegacy'> & {\n // @deprecated use resourceId\n resourceid?: string;\n requestContext?: Record<string, unknown>;\n };\n abortSignal?: AbortSignal;\n}) {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(body, ['tools']);\n\n const { messages, resourceId, resourceid, requestContext: agentRequestContext, ...rest } = body;\n // Use resourceId if provided, fall back to resourceid (deprecated)\n const finalResourceId = resourceId ?? resourceid;\n\n const finalRequestContext = new RequestContext<Record<string, unknown>>([\n ...Array.from(requestContext.entries()),\n ...Array.from(Object.entries(agentRequestContext ?? {})),\n ]);\n\n validateBody({ messages });\n\n const result = await agent.generateLegacy(messages, {\n ...rest,\n abortSignal,\n // @ts-expect-error TODO fix types\n resourceId: finalResourceId,\n requestContext: finalRequestContext,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error generating from agent');\n }\n}\n\nexport async function generateHandler({\n mastra,\n requestContext,\n agentId,\n body,\n abortSignal,\n}: Context & {\n requestContext: RequestContext;\n agentId: string;\n body: GetBody<'generate'> & {\n requestContext?: Record<string, unknown>;\n format?: 'mastra' | 'aisdk';\n };\n abortSignal?: AbortSignal;\n}): Promise<ReturnType<Agent['generate']>> {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(body, ['tools']);\n\n const { messages, requestContext: agentRequestContext, ...rest } = body;\n\n const finalRequestContext = new RequestContext<Record<string, unknown>>([\n ...Array.from(requestContext.entries()),\n ...Array.from(Object.entries(agentRequestContext ?? {})),\n ]);\n\n validateBody({ messages });\n\n const result = await agent.generate(messages, {\n ...rest,\n requestContext: finalRequestContext,\n format: rest.format || 'mastra',\n abortSignal,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error generating from agent');\n }\n}\n\nexport async function streamGenerateLegacyHandler({\n mastra,\n requestContext,\n agentId,\n body,\n abortSignal,\n}: Context & {\n requestContext: RequestContext;\n agentId: string;\n body: GetBody<'streamLegacy'> & {\n // @deprecated use resourceId\n resourceid?: string;\n requestContext?: string;\n };\n abortSignal?: AbortSignal;\n}): Promise<Response | undefined> {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const { messages, resourceId, resourceid, requestContext: agentRequestContext, ...rest } = body;\n // Use resourceId if provided, fall back to resourceid (deprecated)\n const finalResourceId = resourceId ?? resourceid;\n\n const finalRequestContext = new RequestContext<Record<string, unknown>>([\n ...Array.from(requestContext.entries()),\n ...Array.from(Object.entries(agentRequestContext ?? {})),\n ]);\n\n validateBody({ messages });\n\n const streamResult = await agent.streamLegacy(messages, {\n ...rest,\n abortSignal,\n // @ts-expect-error TODO fix types\n resourceId: finalResourceId,\n requestContext: finalRequestContext,\n });\n\n const streamResponse = rest.output\n ? streamResult.toTextStreamResponse({\n headers: {\n 'Transfer-Encoding': 'chunked',\n },\n })\n : streamResult.toDataStreamResponse({\n sendUsage: true,\n sendReasoning: true,\n getErrorMessage: (error: any) => {\n return `An error occurred while processing your request. ${error instanceof Error ? error.message : JSON.stringify(error)}`;\n },\n headers: {\n 'Transfer-Encoding': 'chunked',\n },\n });\n\n return streamResponse;\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n}\n\nexport async function streamGenerateHandler({\n mastra,\n requestContext,\n agentId,\n body,\n abortSignal,\n}: Context & {\n requestContext: RequestContext;\n agentId: string;\n body: GetBody<'stream'> & {\n requestContext?: string;\n format?: 'aisdk' | 'mastra';\n };\n abortSignal?: AbortSignal;\n}): ReturnType<Agent['stream']> {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(body, ['tools']);\n\n const { messages, requestContext: agentRequestContext, ...rest } = body;\n const finalRequestContext = new RequestContext<Record<string, unknown>>([\n ...Array.from(requestContext.entries()),\n ...Array.from(Object.entries(agentRequestContext ?? {})),\n ]);\n\n validateBody({ messages });\n\n const streamResult = agent.stream(messages, {\n ...rest,\n requestContext: finalRequestContext,\n abortSignal,\n format: body.format ?? 'mastra',\n });\n\n return streamResult;\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n}\n\nexport async function approveToolCallHandler({\n mastra,\n requestContext,\n agentId,\n body,\n abortSignal,\n}: Context & {\n requestContext: RequestContext;\n agentId: string;\n body: GetHITLBody<'approveToolCall'> & {\n requestContext?: string;\n format?: 'aisdk' | 'mastra';\n };\n abortSignal?: AbortSignal;\n}): ReturnType<Agent['approveToolCall']> {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n if (!body.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n if (!body.toolCallId) {\n throw new HTTPException(400, { message: 'Tool call id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(body, ['tools']);\n\n const { runId, requestContext: agentRequestContext, ...rest } = body;\n\n const finalRequestContext = new RequestContext<Record<string, unknown>>([\n ...Array.from(requestContext.entries()),\n ...Array.from(Object.entries(agentRequestContext ?? {})),\n ]);\n\n const streamResult = agent.approveToolCall({\n ...rest,\n runId,\n requestContext: finalRequestContext,\n abortSignal,\n format: body.format ?? 'mastra',\n });\n\n return streamResult;\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n}\n\nexport async function declineToolCallHandler({\n mastra,\n requestContext,\n agentId,\n body,\n abortSignal,\n}: Context & {\n requestContext: RequestContext;\n agentId: string;\n body: GetHITLBody<'declineToolCall'> & {\n requestContext?: string;\n format?: 'aisdk' | 'mastra';\n };\n abortSignal?: AbortSignal;\n}): ReturnType<Agent['declineToolCall']> {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n if (!body.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n if (!body.toolCallId) {\n throw new HTTPException(400, { message: 'Tool call id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(body, ['tools']);\n\n const { runId, requestContext: agentRequestContext, ...rest } = body;\n\n const finalRequestContext = new RequestContext<Record<string, unknown>>([\n ...Array.from(requestContext.entries()),\n ...Array.from(Object.entries(agentRequestContext ?? {})),\n ]);\n\n const streamResult = agent.declineToolCall({\n ...rest,\n runId,\n requestContext: finalRequestContext,\n abortSignal,\n format: body.format ?? 'mastra',\n });\n\n return streamResult;\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n}\n\nexport async function streamNetworkHandler({\n mastra,\n requestContext,\n agentId,\n body,\n // abortSignal,\n}: Context & {\n requestContext: RequestContext;\n agentId: string;\n body: GetBody<'network'> & {\n thread?: string;\n resourceId?: string;\n };\n // abortSignal?: AbortSignal;\n}): ReturnType<Agent['network']> {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(body, ['tools']);\n\n const { messages, requestContext: agentRequestContext, ...rest } = body;\n const finalRequestContext = new RequestContext<Record<string, unknown>>([\n ...Array.from(requestContext.entries()),\n ...Array.from(Object.entries(agentRequestContext ?? {})),\n ]);\n\n validateBody({ messages });\n\n const streamResult = agent.network(messages, {\n ...rest,\n memory: {\n thread: rest.thread ?? '',\n resource: rest.resourceId ?? '',\n options: rest.memory?.options ?? {},\n },\n requestContext: finalRequestContext,\n });\n\n return streamResult;\n } catch (error) {\n return handleError(error, 'error streaming agent loop response');\n }\n}\n\nexport async function streamUIMessageHandler({\n mastra,\n requestContext,\n agentId,\n body,\n abortSignal,\n}: Context & {\n requestContext: RequestContext;\n agentId: string;\n body: GetBody<'stream'> & {\n requestContext?: string;\n onStepFinish?: StreamTextOnStepFinishCallback<any>;\n onFinish?: StreamTextOnFinishCallback<any>;\n output?: undefined;\n };\n abortSignal?: AbortSignal;\n}): Promise<Response | undefined> {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(body, ['tools']);\n\n const { messages, requestContext: agentRequestContext, ...rest } = body;\n const finalRequestContext = new RequestContext<Record<string, unknown>>([\n ...Array.from(requestContext.entries()),\n ...Array.from(Object.entries(agentRequestContext ?? {})),\n ]);\n\n validateBody({ messages });\n\n const streamResult = await agent.stream(messages, {\n ...rest,\n requestContext: finalRequestContext,\n abortSignal,\n format: 'aisdk',\n });\n\n return streamResult.toUIMessageStreamResponse();\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n}\n\nexport async function updateAgentModelHandler({\n mastra,\n agentId,\n body,\n}: Context & {\n agentId: string;\n body: {\n modelId: string;\n provider: string;\n };\n}): Promise<{ message: string }> {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const { modelId, provider } = body;\n\n // Use the universal Mastra router format: provider/model\n const newModel = `${provider}/${modelId}`;\n\n agent.__updateModel({ model: newModel });\n\n return { message: 'Agent model updated' };\n } catch (error) {\n return handleError(error, 'error updating agent model');\n }\n}\n\nexport async function resetAgentModelHandler({\n mastra,\n agentId,\n}: Context & {\n agentId: string;\n}): Promise<{ message: string }> {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n agent.__resetToOriginalModel();\n\n return { message: 'Agent model reset to original' };\n } catch (error) {\n return handleError(error, 'error resetting agent model');\n }\n}\n\nexport async function reorderAgentModelListHandler({\n mastra,\n agentId,\n body,\n}: Context & {\n agentId: string;\n body: {\n reorderedModelIds: Array<string>;\n };\n}): Promise<{ message: string }> {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const modelList = await agent.getModelList();\n if (!modelList || modelList.length === 0) {\n throw new HTTPException(400, { message: 'Agent model list is not found or empty' });\n }\n\n agent.reorderModels(body.reorderedModelIds);\n\n return { message: 'Model list reordered' };\n } catch (error) {\n return handleError(error, 'error reordering model list');\n }\n}\n\nexport async function updateAgentModelInModelListHandler({\n mastra,\n agentId,\n modelConfigId,\n body,\n}: Context & {\n agentId: string;\n modelConfigId: string;\n body: {\n model?: {\n modelId: string;\n provider: string;\n };\n maxRetries?: number;\n enabled?: boolean;\n };\n}): Promise<{ message: string }> {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const { model: bodyModel, maxRetries, enabled } = body;\n\n if (!modelConfigId) {\n throw new HTTPException(400, { message: 'Model id is required' });\n }\n\n const modelList = await agent.getModelList();\n if (!modelList || modelList.length === 0) {\n throw new HTTPException(400, { message: 'Agent model list is not found or empty' });\n }\n\n const modelToUpdate = modelList.find(m => m.id === modelConfigId);\n if (!modelToUpdate) {\n throw new HTTPException(400, { message: 'Model to update is not found in agent model list' });\n }\n\n let model: string | undefined;\n if (bodyModel) {\n const { modelId, provider } = bodyModel;\n // Use the universal Mastra router format: provider/model\n model = `${provider}/${modelId}`;\n }\n\n agent.updateModelInModelList({ id: modelConfigId, model, maxRetries, enabled });\n\n return { message: 'Model list updated' };\n } catch (error) {\n return handleError(error, 'error updating model list');\n }\n}\n\nexport async function getProvidersHandler() {\n try {\n const providers = Object.entries(PROVIDER_REGISTRY).map(([id, provider]) => {\n // Check if the provider is connected by checking for its API key env var(s)\n const envVars = Array.isArray(provider.apiKeyEnvVar) ? provider.apiKeyEnvVar : [provider.apiKeyEnvVar];\n const connected = envVars.every(envVar => !!process.env[envVar]);\n\n return {\n id,\n name: provider.name,\n envVar: provider.apiKeyEnvVar,\n connected,\n docUrl: provider.docUrl,\n models: [...provider.models], // Convert readonly array to regular array\n };\n });\n\n return { providers };\n } catch (error) {\n return handleError(error, 'error fetching providers');\n }\n}\n"]}
|