@mastra/server 1.0.0-beta.24 → 1.0.0-beta.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/dist/{chunk-FALSDBPK.js → chunk-2CLS2PYJ.js} +88 -12
  3. package/dist/chunk-2CLS2PYJ.js.map +1 -0
  4. package/dist/{chunk-VZ5UM5FQ.js → chunk-2CYGIE3E.js} +50 -17
  5. package/dist/chunk-2CYGIE3E.js.map +1 -0
  6. package/dist/{chunk-U7IJEAF4.cjs → chunk-6RK355EK.cjs} +5 -5
  7. package/dist/{chunk-U7IJEAF4.cjs.map → chunk-6RK355EK.cjs.map} +1 -1
  8. package/dist/{chunk-GWLR6K3H.cjs → chunk-6YJSJADT.cjs} +26 -3
  9. package/dist/chunk-6YJSJADT.cjs.map +1 -0
  10. package/dist/chunk-7XPMKW4Y.cjs +447 -0
  11. package/dist/chunk-7XPMKW4Y.cjs.map +1 -0
  12. package/dist/{chunk-SSP3OO6Q.cjs → chunk-BWTZRFFE.cjs} +135 -86
  13. package/dist/chunk-BWTZRFFE.cjs.map +1 -0
  14. package/dist/{chunk-NETDNGUZ.js → chunk-DETP54TH.js} +3 -3
  15. package/dist/{chunk-NETDNGUZ.js.map → chunk-DETP54TH.js.map} +1 -1
  16. package/dist/{chunk-ILV5M6C7.cjs → chunk-DZ56VWXH.cjs} +6 -6
  17. package/dist/{chunk-ILV5M6C7.cjs.map → chunk-DZ56VWXH.cjs.map} +1 -1
  18. package/dist/{chunk-OZEEMIZT.js → chunk-GHSITOX6.js} +60 -11
  19. package/dist/chunk-GHSITOX6.js.map +1 -0
  20. package/dist/chunk-I27H7BEB.js +439 -0
  21. package/dist/chunk-I27H7BEB.js.map +1 -0
  22. package/dist/{chunk-BW3BLTCG.cjs → chunk-NUO7HPOV.cjs} +50 -17
  23. package/dist/chunk-NUO7HPOV.cjs.map +1 -0
  24. package/dist/{chunk-QKXZF7YS.js → chunk-THLCYTVI.js} +26 -3
  25. package/dist/chunk-THLCYTVI.js.map +1 -0
  26. package/dist/{chunk-63NFBEYY.cjs → chunk-YK63KHHB.cjs} +89 -11
  27. package/dist/chunk-YK63KHHB.cjs.map +1 -0
  28. package/dist/{chunk-DCEXXMOH.js → chunk-ZXD5P2BC.js} +3 -3
  29. package/dist/{chunk-DCEXXMOH.js.map → chunk-ZXD5P2BC.js.map} +1 -1
  30. package/dist/docs/README.md +1 -1
  31. package/dist/docs/SKILL.md +1 -1
  32. package/dist/docs/SOURCE_MAP.json +1 -1
  33. package/dist/docs/server/02-reference.md +1 -1
  34. package/dist/server/handlers/a2a.cjs +9 -9
  35. package/dist/server/handlers/a2a.js +1 -1
  36. package/dist/server/handlers/agent-builder.cjs +16 -16
  37. package/dist/server/handlers/agent-builder.js +1 -1
  38. package/dist/server/handlers/agents.cjs +34 -26
  39. package/dist/server/handlers/agents.d.ts +44 -0
  40. package/dist/server/handlers/agents.d.ts.map +1 -1
  41. package/dist/server/handlers/agents.js +1 -1
  42. package/dist/server/handlers/memory.cjs +25 -25
  43. package/dist/server/handlers/memory.d.ts +44 -12
  44. package/dist/server/handlers/memory.d.ts.map +1 -1
  45. package/dist/server/handlers/memory.js +1 -1
  46. package/dist/server/handlers/processors.cjs +20 -0
  47. package/dist/server/handlers/processors.cjs.map +1 -0
  48. package/dist/server/handlers/processors.d.ts +181 -0
  49. package/dist/server/handlers/processors.d.ts.map +1 -0
  50. package/dist/server/handlers/processors.js +3 -0
  51. package/dist/server/handlers/processors.js.map +1 -0
  52. package/dist/server/handlers/workflows.cjs +24 -24
  53. package/dist/server/handlers/workflows.js +1 -1
  54. package/dist/server/handlers.cjs +10 -10
  55. package/dist/server/handlers.js +5 -5
  56. package/dist/server/schemas/memory.d.ts +48 -12
  57. package/dist/server/schemas/memory.d.ts.map +1 -1
  58. package/dist/server/schemas/processors.d.ts +519 -0
  59. package/dist/server/schemas/processors.d.ts.map +1 -0
  60. package/dist/server/server-adapter/index.cjs +102 -91
  61. package/dist/server/server-adapter/index.cjs.map +1 -1
  62. package/dist/server/server-adapter/index.js +17 -6
  63. package/dist/server/server-adapter/index.js.map +1 -1
  64. package/dist/server/server-adapter/routes/agents.d.ts.map +1 -1
  65. package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
  66. package/dist/server/server-adapter/routes/processors.d.ts +3 -0
  67. package/dist/server/server-adapter/routes/processors.d.ts.map +1 -0
  68. package/dist/server/utils.d.ts.map +1 -1
  69. package/package.json +5 -5
  70. package/dist/chunk-63NFBEYY.cjs.map +0 -1
  71. package/dist/chunk-BW3BLTCG.cjs.map +0 -1
  72. package/dist/chunk-FALSDBPK.js.map +0 -1
  73. package/dist/chunk-GWLR6K3H.cjs.map +0 -1
  74. package/dist/chunk-OZEEMIZT.js.map +0 -1
  75. package/dist/chunk-QKXZF7YS.js.map +0 -1
  76. package/dist/chunk-SSP3OO6Q.cjs.map +0 -1
  77. package/dist/chunk-VZ5UM5FQ.js.map +0 -1
@@ -0,0 +1,439 @@
1
+ import { createRoute } from './chunk-7S7ALPCY.js';
2
+ import { handleError } from './chunk-ONN5EA7E.js';
3
+ import { HTTPException } from './chunk-6QWQZI4Q.js';
4
+ import { MessageList } from '@mastra/core/agent';
5
+ import { isProcessorWorkflow } from '@mastra/core/processors';
6
+ import z from 'zod';
7
+
8
+ var processorIdPathParams = z.object({
9
+ processorId: z.string().describe("Unique identifier for the processor")
10
+ });
11
+ var processorConfigurationSchema = z.object({
12
+ agentId: z.string(),
13
+ agentName: z.string(),
14
+ type: z.enum(["input", "output"])
15
+ });
16
+ var processorListConfigurationSchema = z.object({
17
+ agentId: z.string(),
18
+ type: z.enum(["input", "output"])
19
+ });
20
+ var serializedProcessorSchema = z.object({
21
+ id: z.string(),
22
+ name: z.string().optional(),
23
+ description: z.string().optional(),
24
+ phases: z.array(z.enum(["input", "inputStep", "outputStream", "outputResult", "outputStep"])),
25
+ agentIds: z.array(z.string()),
26
+ configurations: z.array(processorListConfigurationSchema),
27
+ isWorkflow: z.boolean()
28
+ });
29
+ var serializedProcessorDetailSchema = z.object({
30
+ id: z.string(),
31
+ name: z.string().optional(),
32
+ description: z.string().optional(),
33
+ phases: z.array(z.enum(["input", "inputStep", "outputStream", "outputResult", "outputStep"])),
34
+ configurations: z.array(processorConfigurationSchema),
35
+ isWorkflow: z.boolean()
36
+ });
37
+ var listProcessorsResponseSchema = z.record(z.string(), serializedProcessorSchema);
38
+ var messageContentSchema = z.object({
39
+ format: z.literal(2).optional(),
40
+ parts: z.array(z.any()).optional(),
41
+ content: z.string().optional()
42
+ }).passthrough();
43
+ var processorMessageSchema = z.object({
44
+ id: z.string(),
45
+ role: z.enum(["user", "assistant", "system", "tool"]),
46
+ createdAt: z.coerce.date().optional(),
47
+ content: z.union([messageContentSchema, z.string()])
48
+ }).passthrough();
49
+ var executeProcessorBodySchema = z.object({
50
+ phase: z.enum(["input", "inputStep", "outputStream", "outputResult", "outputStep"]),
51
+ messages: z.array(processorMessageSchema),
52
+ agentId: z.string().optional(),
53
+ requestContext: z.record(z.string(), z.any()).optional()
54
+ });
55
+ var tripwireSchema = z.object({
56
+ triggered: z.boolean(),
57
+ reason: z.string().optional(),
58
+ metadata: z.any().optional()
59
+ });
60
+ var executeProcessorResponseSchema = z.object({
61
+ success: z.boolean(),
62
+ phase: z.string(),
63
+ messages: z.array(processorMessageSchema).optional(),
64
+ messageList: z.object({
65
+ messages: z.array(processorMessageSchema)
66
+ }).optional(),
67
+ tripwire: tripwireSchema.optional(),
68
+ error: z.string().optional()
69
+ });
70
+
71
+ // src/server/handlers/processors.ts
72
+ function extractTextFromMessages(messages) {
73
+ if (!messages || !Array.isArray(messages) || messages.length === 0) {
74
+ return "";
75
+ }
76
+ const firstMessage = messages[0];
77
+ if (firstMessage?.content?.parts) {
78
+ const textParts = firstMessage.content.parts.filter((part) => part?.type === "text").map((part) => part?.text || "");
79
+ return textParts.join("");
80
+ }
81
+ return "";
82
+ }
83
+ function detectProcessorPhases(processor) {
84
+ if (isProcessorWorkflow(processor)) {
85
+ return ["input", "inputStep", "outputStream", "outputResult", "outputStep"];
86
+ }
87
+ const phases = [];
88
+ if (typeof processor.processInput === "function") {
89
+ phases.push("input");
90
+ }
91
+ if (typeof processor.processInputStep === "function") {
92
+ phases.push("inputStep");
93
+ }
94
+ if (typeof processor.processOutputStream === "function") {
95
+ phases.push("outputStream");
96
+ }
97
+ if (typeof processor.processOutputResult === "function") {
98
+ phases.push("outputResult");
99
+ }
100
+ if (typeof processor.processOutputStep === "function") {
101
+ phases.push("outputStep");
102
+ }
103
+ return phases;
104
+ }
105
+ var LIST_PROCESSORS_ROUTE = createRoute({
106
+ method: "GET",
107
+ path: "/api/processors",
108
+ responseType: "json",
109
+ responseSchema: listProcessorsResponseSchema,
110
+ summary: "List all processors",
111
+ description: "Returns a list of all available individual processors",
112
+ tags: ["Processors"],
113
+ handler: async ({ mastra }) => {
114
+ try {
115
+ const processors = mastra.listProcessors() || {};
116
+ const processorConfigurations = mastra.listProcessorConfigurations();
117
+ const result = {};
118
+ for (const [processorKey, processorEntry] of Object.entries(processors)) {
119
+ const processor = processorEntry;
120
+ const processorId = processor.id || processorKey;
121
+ const isWorkflow = isProcessorWorkflow(processor);
122
+ const phases = detectProcessorPhases(processor);
123
+ const configs = processorConfigurations.get(processorId) || [];
124
+ const agentIds = [...new Set(configs.map((c) => c.agentId))];
125
+ const configurations = configs.map((c) => ({ agentId: c.agentId, type: c.type }));
126
+ result[processorId] = {
127
+ id: processorId,
128
+ name: processor.name || processorId,
129
+ description: processor.description,
130
+ phases,
131
+ agentIds,
132
+ configurations,
133
+ isWorkflow
134
+ };
135
+ }
136
+ return result;
137
+ } catch (error) {
138
+ return handleError(error, "Error getting processors");
139
+ }
140
+ }
141
+ });
142
+ var GET_PROCESSOR_BY_ID_ROUTE = createRoute({
143
+ method: "GET",
144
+ path: "/api/processors/:processorId",
145
+ responseType: "json",
146
+ pathParamSchema: processorIdPathParams,
147
+ responseSchema: serializedProcessorDetailSchema,
148
+ summary: "Get processor by ID",
149
+ description: "Returns details for a specific processor including its phases and configurations",
150
+ tags: ["Processors"],
151
+ handler: async ({ mastra, processorId }) => {
152
+ try {
153
+ let processorEntry;
154
+ try {
155
+ processorEntry = mastra.getProcessorById(processorId);
156
+ } catch {
157
+ const processors = mastra.listProcessors() || {};
158
+ processorEntry = processors[processorId];
159
+ }
160
+ if (!processorEntry) {
161
+ throw new HTTPException(404, { message: "Processor not found" });
162
+ }
163
+ const isWorkflow = isProcessorWorkflow(processorEntry);
164
+ const phases = detectProcessorPhases(processorEntry);
165
+ const configs = mastra.getProcessorConfigurations(processorId);
166
+ const agents = mastra.listAgents() || {};
167
+ const configurations = configs.map((c) => ({
168
+ agentId: c.agentId,
169
+ agentName: agents[c.agentId]?.name || c.agentId,
170
+ type: c.type
171
+ }));
172
+ return {
173
+ id: processorEntry.id,
174
+ name: processorEntry.name || processorEntry.id,
175
+ description: processorEntry.description,
176
+ phases,
177
+ configurations,
178
+ isWorkflow
179
+ };
180
+ } catch (error) {
181
+ return handleError(error, "Error getting processor");
182
+ }
183
+ }
184
+ });
185
+ var EXECUTE_PROCESSOR_ROUTE = createRoute({
186
+ method: "POST",
187
+ path: "/api/processors/:processorId/execute",
188
+ responseType: "json",
189
+ pathParamSchema: processorIdPathParams,
190
+ bodySchema: executeProcessorBodySchema,
191
+ responseSchema: executeProcessorResponseSchema,
192
+ summary: "Execute processor",
193
+ description: "Executes a specific processor with the provided input data",
194
+ tags: ["Processors"],
195
+ handler: async ({ mastra, processorId, ...bodyParams }) => {
196
+ try {
197
+ const { phase, messages } = bodyParams;
198
+ if (!processorId) {
199
+ throw new HTTPException(400, { message: "Processor ID is required" });
200
+ }
201
+ if (!phase) {
202
+ throw new HTTPException(400, { message: "Phase is required" });
203
+ }
204
+ if (!messages || !Array.isArray(messages)) {
205
+ throw new HTTPException(400, { message: "Messages array is required" });
206
+ }
207
+ let processor;
208
+ try {
209
+ processor = mastra.getProcessorById(processorId);
210
+ } catch {
211
+ const processors = mastra.listProcessors() || {};
212
+ processor = processors[processorId];
213
+ }
214
+ if (!processor) {
215
+ throw new HTTPException(404, { message: "Processor not found" });
216
+ }
217
+ const messageList = new MessageList();
218
+ messageList.add(messages, "input");
219
+ if (isProcessorWorkflow(processor)) {
220
+ try {
221
+ const baseInputData = {
222
+ phase,
223
+ messages: messageList.get.all.db(),
224
+ messageList,
225
+ retryCount: 0
226
+ };
227
+ let inputData = baseInputData;
228
+ switch (phase) {
229
+ case "input":
230
+ inputData = {
231
+ ...inputData,
232
+ systemMessages: []
233
+ };
234
+ break;
235
+ case "inputStep":
236
+ inputData = {
237
+ ...inputData,
238
+ stepNumber: 0,
239
+ systemMessages: [],
240
+ steps: [],
241
+ model: "",
242
+ tools: {},
243
+ toolChoice: void 0,
244
+ activeTools: [],
245
+ providerOptions: void 0,
246
+ modelSettings: void 0,
247
+ structuredOutput: void 0
248
+ };
249
+ break;
250
+ case "outputResult":
251
+ break;
252
+ case "outputStep":
253
+ inputData = {
254
+ ...inputData,
255
+ stepNumber: 0,
256
+ systemMessages: [],
257
+ steps: [],
258
+ finishReason: "stop",
259
+ toolCalls: [],
260
+ text: extractTextFromMessages(messages)
261
+ };
262
+ break;
263
+ case "outputStream":
264
+ inputData = {
265
+ ...inputData,
266
+ part: null,
267
+ streamParts: [],
268
+ state: {}
269
+ };
270
+ break;
271
+ }
272
+ const run = await processor.createRun();
273
+ const result = await run.start({
274
+ inputData
275
+ });
276
+ if (result.status === "tripwire") {
277
+ return {
278
+ success: false,
279
+ phase,
280
+ tripwire: {
281
+ triggered: true,
282
+ reason: result.tripwire.reason || `Tripwire triggered in workflow ${processor.id}`,
283
+ metadata: result.tripwire.metadata
284
+ },
285
+ messages,
286
+ messageList: {
287
+ messages
288
+ }
289
+ };
290
+ }
291
+ if (result.status !== "success") {
292
+ throw new HTTPException(500, {
293
+ message: `Processor workflow ${processor.id} failed with status: ${result.status}`
294
+ });
295
+ }
296
+ const output = result.result;
297
+ let outputMessages = messages;
298
+ if (output && typeof output === "object") {
299
+ if ("messages" in output && Array.isArray(output.messages)) {
300
+ outputMessages = output.messages;
301
+ } else if ("messageList" in output && output.messageList instanceof MessageList) {
302
+ outputMessages = output.messageList.get.all.db();
303
+ }
304
+ }
305
+ return {
306
+ success: true,
307
+ phase,
308
+ messages: outputMessages,
309
+ messageList: {
310
+ messages: outputMessages
311
+ }
312
+ };
313
+ } catch (error) {
314
+ if (error instanceof HTTPException) {
315
+ throw error;
316
+ }
317
+ throw new HTTPException(500, {
318
+ message: `Error executing processor workflow: ${error.message}`
319
+ });
320
+ }
321
+ }
322
+ let tripwireTriggered = false;
323
+ let tripwireReason;
324
+ let tripwireMetadata;
325
+ const abort = (reason, options) => {
326
+ tripwireTriggered = true;
327
+ tripwireReason = reason;
328
+ tripwireMetadata = options?.metadata;
329
+ throw new Error(`TRIPWIRE:${reason || "Processor aborted"}`);
330
+ };
331
+ const baseContext = {
332
+ abort,
333
+ retryCount: 0,
334
+ messages: messageList.get.all.db(),
335
+ messageList
336
+ };
337
+ try {
338
+ let result;
339
+ switch (phase) {
340
+ case "input":
341
+ if (!processor.processInput) {
342
+ throw new HTTPException(400, { message: "Processor does not support input phase" });
343
+ }
344
+ result = await processor.processInput({
345
+ ...baseContext,
346
+ systemMessages: []
347
+ });
348
+ break;
349
+ case "inputStep":
350
+ if (!processor.processInputStep) {
351
+ throw new HTTPException(400, { message: "Processor does not support inputStep phase" });
352
+ }
353
+ result = await processor.processInputStep({
354
+ ...baseContext,
355
+ systemMessages: [],
356
+ stepNumber: 0,
357
+ steps: [],
358
+ // Pass empty/default values for all inputStep fields
359
+ model: "",
360
+ tools: {},
361
+ toolChoice: void 0,
362
+ activeTools: [],
363
+ providerOptions: void 0,
364
+ modelSettings: void 0,
365
+ structuredOutput: void 0
366
+ });
367
+ break;
368
+ case "outputResult":
369
+ if (!processor.processOutputResult) {
370
+ throw new HTTPException(400, { message: "Processor does not support outputResult phase" });
371
+ }
372
+ result = await processor.processOutputResult(baseContext);
373
+ break;
374
+ case "outputStep":
375
+ if (!processor.processOutputStep) {
376
+ throw new HTTPException(400, { message: "Processor does not support outputStep phase" });
377
+ }
378
+ result = await processor.processOutputStep({
379
+ ...baseContext,
380
+ systemMessages: [],
381
+ stepNumber: 0,
382
+ steps: [],
383
+ finishReason: "stop",
384
+ toolCalls: [],
385
+ text: extractTextFromMessages(messages)
386
+ });
387
+ break;
388
+ case "outputStream":
389
+ throw new HTTPException(400, {
390
+ message: "outputStream phase cannot be executed directly. Use streaming instead."
391
+ });
392
+ default:
393
+ throw new HTTPException(400, { message: `Unknown phase: ${phase}` });
394
+ }
395
+ let outputMessages = messages;
396
+ if (result) {
397
+ if (Array.isArray(result)) {
398
+ outputMessages = result;
399
+ } else if (result.get && result.get.all && typeof result.get.all.db === "function") {
400
+ outputMessages = result.get.all.db();
401
+ } else if (result.messages) {
402
+ outputMessages = result.messages;
403
+ }
404
+ }
405
+ return {
406
+ success: true,
407
+ phase,
408
+ messages: outputMessages,
409
+ messageList: {
410
+ messages: outputMessages
411
+ }
412
+ };
413
+ } catch (error) {
414
+ if (tripwireTriggered || error.message?.startsWith("TRIPWIRE:")) {
415
+ return {
416
+ success: false,
417
+ phase,
418
+ tripwire: {
419
+ triggered: true,
420
+ reason: tripwireReason || error.message?.replace("TRIPWIRE:", ""),
421
+ metadata: tripwireMetadata
422
+ },
423
+ messages,
424
+ messageList: {
425
+ messages
426
+ }
427
+ };
428
+ }
429
+ throw error;
430
+ }
431
+ } catch (error) {
432
+ return handleError(error, "Error executing processor");
433
+ }
434
+ }
435
+ });
436
+
437
+ export { EXECUTE_PROCESSOR_ROUTE, GET_PROCESSOR_BY_ID_ROUTE, LIST_PROCESSORS_ROUTE };
438
+ //# sourceMappingURL=chunk-I27H7BEB.js.map
439
+ //# sourceMappingURL=chunk-I27H7BEB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/schemas/processors.ts","../src/server/handlers/processors.ts"],"names":[],"mappings":"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","file":"chunk-I27H7BEB.js","sourcesContent":["import z from 'zod';\n\n// Path parameter schemas\nexport const processorIdPathParams = z.object({\n processorId: z.string().describe('Unique identifier for the processor'),\n});\n\n/**\n * Schema for processor configuration (how it's attached to an agent)\n */\nexport const processorConfigurationSchema = z.object({\n agentId: z.string(),\n agentName: z.string(),\n type: z.enum(['input', 'output']),\n});\n\n/**\n * Schema for processor configuration in list response (simplified)\n */\nconst processorListConfigurationSchema = z.object({\n agentId: z.string(),\n type: z.enum(['input', 'output']),\n});\n\n/**\n * Schema for processor in list response\n */\nexport const serializedProcessorSchema = z.object({\n id: z.string(),\n name: z.string().optional(),\n description: z.string().optional(),\n phases: z.array(z.enum(['input', 'inputStep', 'outputStream', 'outputResult', 'outputStep'])),\n agentIds: z.array(z.string()),\n configurations: z.array(processorListConfigurationSchema),\n isWorkflow: z.boolean(),\n});\n\n/**\n * Schema for detailed processor response\n */\nexport const serializedProcessorDetailSchema = z.object({\n id: z.string(),\n name: z.string().optional(),\n description: z.string().optional(),\n phases: z.array(z.enum(['input', 'inputStep', 'outputStream', 'outputResult', 'outputStep'])),\n configurations: z.array(processorConfigurationSchema),\n isWorkflow: z.boolean(),\n});\n\n/**\n * Schema for list processors endpoint response\n */\nexport const listProcessorsResponseSchema = z.record(z.string(), serializedProcessorSchema);\n\n/**\n * Schema for message content in processor execution\n */\nconst messageContentSchema = z\n .object({\n format: z.literal(2).optional(),\n parts: z.array(z.any()).optional(),\n content: z.string().optional(),\n })\n .passthrough();\n\n/**\n * Schema for a message in processor execution\n */\nconst processorMessageSchema = z\n .object({\n id: z.string(),\n role: z.enum(['user', 'assistant', 'system', 'tool']),\n createdAt: z.coerce.date().optional(),\n content: z.union([messageContentSchema, z.string()]),\n })\n .passthrough();\n\n/**\n * Body schema for executing a processor\n */\nexport const executeProcessorBodySchema = z.object({\n phase: z.enum(['input', 'inputStep', 'outputStream', 'outputResult', 'outputStep']),\n messages: z.array(processorMessageSchema),\n agentId: z.string().optional(),\n requestContext: z.record(z.string(), z.any()).optional(),\n});\n\n/**\n * Schema for tripwire result\n */\nconst tripwireSchema = z.object({\n triggered: z.boolean(),\n reason: z.string().optional(),\n metadata: z.any().optional(),\n});\n\n/**\n * Response schema for processor execution\n */\nexport const executeProcessorResponseSchema = z.object({\n success: z.boolean(),\n phase: z.string(),\n messages: z.array(processorMessageSchema).optional(),\n messageList: z\n .object({\n messages: z.array(processorMessageSchema),\n })\n .optional(),\n tripwire: tripwireSchema.optional(),\n error: z.string().optional(),\n});\n","import { MessageList } from '@mastra/core/agent';\nimport type { MessageInput } from '@mastra/core/agent/message-list';\nimport { isProcessorWorkflow } from '@mastra/core/processors';\nimport type { Processor, ProcessorWorkflow } from '@mastra/core/processors';\n\nimport { HTTPException } from '../http-exception';\nimport {\n listProcessorsResponseSchema,\n serializedProcessorDetailSchema,\n processorIdPathParams,\n executeProcessorBodySchema,\n executeProcessorResponseSchema,\n} from '../schemas/processors';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\ntype ProcessorPhase = 'input' | 'inputStep' | 'outputStream' | 'outputResult' | 'outputStep';\n\n/**\n * Helper to extract text from messages for outputStep testing.\n * In real usage, the `text` field contains the assistant's response text.\n */\nfunction extractTextFromMessages(messages: unknown[]): string {\n if (!messages || !Array.isArray(messages) || messages.length === 0) {\n return '';\n }\n const firstMessage = messages[0] as any;\n if (firstMessage?.content?.parts) {\n const textParts = firstMessage.content.parts\n .filter((part: any) => part?.type === 'text')\n .map((part: any) => part?.text || '');\n return textParts.join('');\n }\n return '';\n}\n\n/**\n * Helper to detect phases for a processor.\n * For individual processors, checks which methods are implemented.\n * For workflow processors, returns all phases since createStep handles each phase\n * and it's a no-op if the underlying processor doesn't implement it.\n */\nfunction detectProcessorPhases(processor: any): ProcessorPhase[] {\n // Check if it's a workflow processor\n if (isProcessorWorkflow(processor)) {\n // Workflow processors can potentially handle all phases\n // The createStep in workflows handles each phase and it's a no-op if not implemented\n return ['input', 'inputStep', 'outputStream', 'outputResult', 'outputStep'];\n }\n\n // For individual processors, detect by checking which methods exist\n const phases: ProcessorPhase[] = [];\n if (typeof processor.processInput === 'function') {\n phases.push('input');\n }\n if (typeof processor.processInputStep === 'function') {\n phases.push('inputStep');\n }\n if (typeof processor.processOutputStream === 'function') {\n phases.push('outputStream');\n }\n if (typeof processor.processOutputResult === 'function') {\n phases.push('outputResult');\n }\n if (typeof processor.processOutputStep === 'function') {\n phases.push('outputStep');\n }\n return phases;\n}\n\nexport const LIST_PROCESSORS_ROUTE = createRoute({\n method: 'GET',\n path: '/api/processors',\n responseType: 'json',\n responseSchema: listProcessorsResponseSchema,\n summary: 'List all processors',\n description: 'Returns a list of all available individual processors',\n tags: ['Processors'],\n handler: async ({ mastra }) => {\n try {\n const processors = mastra.listProcessors() || {};\n const processorConfigurations = mastra.listProcessorConfigurations();\n const result: Record<\n string,\n {\n id: string;\n name?: string;\n description?: string;\n phases: ProcessorPhase[];\n agentIds: string[];\n configurations: Array<{ agentId: string; type: 'input' | 'output' }>;\n isWorkflow: boolean;\n }\n > = {};\n\n // Iterate through all individual processors registered with Mastra\n for (const [processorKey, processorEntry] of Object.entries(processors)) {\n const processor = processorEntry as Processor | ProcessorWorkflow;\n const processorId = processor.id || processorKey;\n\n // Check if it's a workflow processor\n const isWorkflow = isProcessorWorkflow(processor);\n\n // Detect phases (handles both individual processors and workflow processors)\n const phases = detectProcessorPhases(processor);\n\n // Get agent configurations for this processor\n const configs = processorConfigurations.get(processorId) || [];\n const agentIds = [...new Set(configs.map(c => c.agentId))];\n const configurations = configs.map(c => ({ agentId: c.agentId, type: c.type }));\n\n result[processorId] = {\n id: processorId,\n name: processor.name || processorId,\n description: processor.description,\n phases,\n agentIds,\n configurations,\n isWorkflow,\n };\n }\n\n return result;\n } catch (error) {\n return handleError(error, 'Error getting processors');\n }\n },\n});\n\nexport const GET_PROCESSOR_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/api/processors/:processorId',\n responseType: 'json',\n pathParamSchema: processorIdPathParams,\n responseSchema: serializedProcessorDetailSchema,\n summary: 'Get processor by ID',\n description: 'Returns details for a specific processor including its phases and configurations',\n tags: ['Processors'],\n handler: async ({ mastra, processorId }) => {\n try {\n // Get the processor from Mastra's registered processors\n let processorEntry: Processor | ProcessorWorkflow | undefined;\n try {\n processorEntry = mastra.getProcessorById(processorId) as Processor | ProcessorWorkflow;\n } catch {\n // getProcessorById throws if not found, try by key\n const processors = mastra.listProcessors() || {};\n processorEntry = processors[processorId as keyof typeof processors] as Processor | ProcessorWorkflow;\n }\n\n if (!processorEntry) {\n throw new HTTPException(404, { message: 'Processor not found' });\n }\n\n // Check if it's a workflow processor\n const isWorkflow = isProcessorWorkflow(processorEntry);\n\n // Detect phases (handles both individual processors and workflow processors)\n const phases = detectProcessorPhases(processorEntry);\n\n // Get agent configurations for this processor\n const configs = mastra.getProcessorConfigurations(processorId);\n const agents = mastra.listAgents() || {};\n const configurations = configs.map(c => ({\n agentId: c.agentId,\n agentName: agents[c.agentId]?.name || c.agentId,\n type: c.type,\n }));\n\n return {\n id: processorEntry.id,\n name: processorEntry.name || processorEntry.id,\n description: processorEntry.description,\n phases,\n configurations,\n isWorkflow,\n };\n } catch (error) {\n return handleError(error, 'Error getting processor');\n }\n },\n});\n\nexport const EXECUTE_PROCESSOR_ROUTE = createRoute({\n method: 'POST',\n path: '/api/processors/:processorId/execute',\n responseType: 'json',\n pathParamSchema: processorIdPathParams,\n bodySchema: executeProcessorBodySchema,\n responseSchema: executeProcessorResponseSchema,\n summary: 'Execute processor',\n description: 'Executes a specific processor with the provided input data',\n tags: ['Processors'],\n handler: async ({ mastra, processorId, ...bodyParams }) => {\n try {\n const { phase, messages } = bodyParams;\n\n if (!processorId) {\n throw new HTTPException(400, { message: 'Processor ID is required' });\n }\n\n if (!phase) {\n throw new HTTPException(400, { message: 'Phase is required' });\n }\n\n if (!messages || !Array.isArray(messages)) {\n throw new HTTPException(400, { message: 'Messages array is required' });\n }\n\n // Get the processor from Mastra's registered processors\n let processor;\n try {\n processor = mastra.getProcessorById(processorId);\n } catch {\n // getProcessorById throws if not found, try by key\n const processors = mastra.listProcessors() || {};\n processor = processors[processorId as keyof typeof processors];\n }\n\n if (!processor) {\n throw new HTTPException(404, { message: 'Processor not found' });\n }\n\n const messageList = new MessageList();\n messageList.add(messages as unknown as MessageInput[], 'input');\n\n // Check if this is a workflow processor\n if (isProcessorWorkflow(processor)) {\n // Execute workflow processor\n try {\n // Build inputData based on phase - each phase has different required fields\n const baseInputData = {\n phase: phase as 'input' | 'inputStep' | 'outputStream' | 'outputResult' | 'outputStep',\n messages: messageList.get.all.db(),\n messageList,\n retryCount: 0,\n };\n let inputData: typeof baseInputData & Record<string, unknown> = baseInputData;\n\n // Add phase-specific fields\n switch (phase) {\n case 'input':\n inputData = {\n ...inputData,\n systemMessages: [],\n };\n break;\n case 'inputStep':\n inputData = {\n ...inputData,\n stepNumber: 0,\n systemMessages: [],\n steps: [],\n model: '',\n tools: {},\n toolChoice: undefined,\n activeTools: [],\n providerOptions: undefined,\n modelSettings: undefined,\n structuredOutput: undefined,\n };\n break;\n case 'outputResult':\n // outputResult only needs base fields\n break;\n case 'outputStep':\n inputData = {\n ...inputData,\n stepNumber: 0,\n systemMessages: [],\n steps: [],\n finishReason: 'stop',\n toolCalls: [],\n text: extractTextFromMessages(messages),\n };\n break;\n case 'outputStream':\n inputData = {\n ...inputData,\n part: null,\n streamParts: [],\n state: {},\n };\n break;\n }\n\n const run = await processor.createRun();\n const result = await run.start({\n inputData,\n });\n\n // Check for tripwire status\n if (result.status === 'tripwire') {\n return {\n success: false,\n phase,\n tripwire: {\n triggered: true,\n reason: result.tripwire.reason || `Tripwire triggered in workflow ${processor.id}`,\n metadata: result.tripwire.metadata,\n },\n messages,\n messageList: {\n messages,\n },\n };\n }\n\n // Check for execution failure\n if (result.status !== 'success') {\n throw new HTTPException(500, {\n message: `Processor workflow ${processor.id} failed with status: ${result.status}`,\n });\n }\n\n // Extract output from workflow result\n const output = result.result;\n let outputMessages = messages;\n\n if (output && typeof output === 'object') {\n if ('messages' in output && Array.isArray(output.messages)) {\n outputMessages = output.messages;\n } else if ('messageList' in output && output.messageList instanceof MessageList) {\n outputMessages = output.messageList.get.all.db();\n }\n }\n\n return {\n success: true,\n phase,\n messages: outputMessages,\n messageList: {\n messages: outputMessages,\n },\n };\n } catch (error: any) {\n // Re-throw HTTP exceptions\n if (error instanceof HTTPException) {\n throw error;\n }\n throw new HTTPException(500, {\n message: `Error executing processor workflow: ${error.message}`,\n });\n }\n }\n\n // Handle individual processor execution\n // Create the abort function for tripwire support\n let tripwireTriggered = false;\n let tripwireReason: string | undefined;\n let tripwireMetadata: unknown;\n\n const abort = (reason?: string, options?: { retry?: boolean; metadata?: unknown }) => {\n tripwireTriggered = true;\n tripwireReason = reason;\n tripwireMetadata = options?.metadata;\n throw new Error(`TRIPWIRE:${reason || 'Processor aborted'}`);\n };\n\n // Build the context based on phase\n const baseContext = {\n abort,\n retryCount: 0,\n messages: messageList.get.all.db(),\n messageList,\n };\n\n try {\n let result: any;\n\n // Execute the specific phase method on the individual processor\n switch (phase) {\n case 'input':\n if (!processor.processInput) {\n throw new HTTPException(400, { message: 'Processor does not support input phase' });\n }\n result = await processor.processInput({\n ...baseContext,\n systemMessages: [],\n });\n break;\n\n case 'inputStep':\n if (!processor.processInputStep) {\n throw new HTTPException(400, { message: 'Processor does not support inputStep phase' });\n }\n result = await processor.processInputStep({\n ...baseContext,\n systemMessages: [],\n stepNumber: 0,\n steps: [],\n // Pass empty/default values for all inputStep fields\n model: '' as any,\n tools: {},\n toolChoice: undefined,\n activeTools: [],\n providerOptions: undefined,\n modelSettings: undefined,\n structuredOutput: undefined,\n });\n break;\n\n case 'outputResult':\n if (!processor.processOutputResult) {\n throw new HTTPException(400, { message: 'Processor does not support outputResult phase' });\n }\n result = await processor.processOutputResult(baseContext);\n break;\n\n case 'outputStep':\n if (!processor.processOutputStep) {\n throw new HTTPException(400, { message: 'Processor does not support outputStep phase' });\n }\n result = await processor.processOutputStep({\n ...baseContext,\n systemMessages: [],\n stepNumber: 0,\n steps: [],\n finishReason: 'stop',\n toolCalls: [],\n text: extractTextFromMessages(messages),\n });\n break;\n\n case 'outputStream':\n // outputStream is for streaming chunks, not a simple execute\n throw new HTTPException(400, {\n message: 'outputStream phase cannot be executed directly. Use streaming instead.',\n });\n\n default:\n throw new HTTPException(400, { message: `Unknown phase: ${phase}` });\n }\n\n // Process the result\n let outputMessages = messages;\n if (result) {\n if (Array.isArray(result)) {\n outputMessages = result;\n } else if (result.get && result.get.all && typeof result.get.all.db === 'function') {\n // It's a MessageList\n outputMessages = result.get.all.db();\n } else if (result.messages) {\n outputMessages = result.messages;\n }\n }\n\n return {\n success: true,\n phase,\n messages: outputMessages,\n messageList: {\n messages: outputMessages,\n },\n };\n } catch (error: any) {\n // Check if it's a tripwire\n if (tripwireTriggered || error.message?.startsWith('TRIPWIRE:')) {\n return {\n success: false,\n phase,\n tripwire: {\n triggered: true,\n reason: tripwireReason || error.message?.replace('TRIPWIRE:', ''),\n metadata: tripwireMetadata,\n },\n messages,\n messageList: {\n messages,\n },\n };\n }\n throw error;\n }\n } catch (error) {\n return handleError(error, 'Error executing processor');\n }\n },\n});\n"]}
@@ -88,7 +88,7 @@ var includeSchema = z__default.default.preprocess(
88
88
  try {
89
89
  return JSON.parse(val);
90
90
  } catch {
91
- return void 0;
91
+ return val;
92
92
  }
93
93
  }
94
94
  return val;
@@ -108,7 +108,7 @@ var filterSchema = z__default.default.preprocess(
108
108
  try {
109
109
  return JSON.parse(val);
110
110
  } catch {
111
- return void 0;
111
+ return val;
112
112
  }
113
113
  }
114
114
  return val;
@@ -117,7 +117,8 @@ var filterSchema = z__default.default.preprocess(
117
117
  dateRange: z__default.default.object({
118
118
  start: z__default.default.coerce.date().optional(),
119
119
  end: z__default.default.coerce.date().optional()
120
- }).optional()
120
+ }).optional(),
121
+ roles: z__default.default.array(z__default.default.string()).optional()
121
122
  }).optional()
122
123
  );
123
124
  var memoryConfigSchema = z__default.default.preprocess((val) => {
@@ -125,7 +126,7 @@ var memoryConfigSchema = z__default.default.preprocess((val) => {
125
126
  try {
126
127
  return JSON.parse(val);
127
128
  } catch {
128
- return void 0;
129
+ return val;
129
130
  }
130
131
  }
131
132
  return val;
@@ -143,7 +144,20 @@ var getMemoryStatusQuerySchema = agentIdQuerySchema;
143
144
  var getMemoryConfigQuerySchema = agentIdQuerySchema;
144
145
  var listThreadsQuerySchema = chunkMCYD5LW7_cjs.createPagePaginationSchema(100).extend({
145
146
  agentId: z__default.default.string().optional(),
146
- resourceId: z__default.default.string(),
147
+ resourceId: z__default.default.string().optional(),
148
+ metadata: z__default.default.preprocess(
149
+ (val) => {
150
+ if (typeof val === "string") {
151
+ try {
152
+ return JSON.parse(val);
153
+ } catch {
154
+ return val;
155
+ }
156
+ }
157
+ return val;
158
+ },
159
+ z__default.default.optional(z__default.default.record(z__default.default.string(), z__default.default.any()))
160
+ ),
147
161
  orderBy: storageOrderBySchema
148
162
  });
149
163
  var getThreadByIdQuerySchema = optionalAgentIdQuerySchema;
@@ -162,7 +176,20 @@ var getWorkingMemoryQuerySchema = z__default.default.object({
162
176
  var getMemoryStatusNetworkQuerySchema = agentIdQuerySchema;
163
177
  var listThreadsNetworkQuerySchema = chunkMCYD5LW7_cjs.createPagePaginationSchema(100).extend({
164
178
  agentId: z__default.default.string().optional(),
165
- resourceId: z__default.default.string(),
179
+ resourceId: z__default.default.string().optional(),
180
+ metadata: z__default.default.preprocess(
181
+ (val) => {
182
+ if (typeof val === "string") {
183
+ try {
184
+ return JSON.parse(val);
185
+ } catch {
186
+ return val;
187
+ }
188
+ }
189
+ return val;
190
+ },
191
+ z__default.default.optional(z__default.default.record(z__default.default.string(), z__default.default.any()))
192
+ ),
166
193
  orderBy: storageOrderBySchema
167
194
  });
168
195
  var getThreadByIdNetworkQuerySchema = optionalAgentIdQuerySchema;
@@ -386,15 +413,21 @@ var LIST_THREADS_ROUTE = chunkAVRO3FIN_cjs.createRoute({
386
413
  queryParamSchema: listThreadsQuerySchema,
387
414
  responseSchema: listThreadsResponseSchema,
388
415
  summary: "List memory threads",
389
- description: "Returns a paginated list of conversation threads filtered by resource ID",
416
+ description: "Returns a paginated list of conversation threads with optional filtering by resource ID and/or metadata",
390
417
  tags: ["Memory"],
391
- handler: async ({ mastra, agentId, resourceId, requestContext, page, perPage, orderBy }) => {
418
+ handler: async ({ mastra, agentId, resourceId, metadata, requestContext, page, perPage, orderBy }) => {
392
419
  try {
393
- chunk5W4RPVTK_cjs.validateBody({ resourceId });
420
+ const filter = resourceId || metadata ? {} : void 0;
421
+ if (resourceId) {
422
+ filter.resourceId = resourceId;
423
+ }
424
+ if (metadata) {
425
+ filter.metadata = metadata;
426
+ }
394
427
  const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
395
428
  if (memory) {
396
- const result = await memory.listThreadsByResourceId({
397
- resourceId,
429
+ const result = await memory.listThreads({
430
+ filter,
398
431
  page,
399
432
  perPage,
400
433
  orderBy
@@ -406,8 +439,8 @@ var LIST_THREADS_ROUTE = chunkAVRO3FIN_cjs.createRoute({
406
439
  if (storage) {
407
440
  const memoryStore = await storage.getStore("memory");
408
441
  if (memoryStore) {
409
- const result = await memoryStore.listThreadsByResourceId({
410
- resourceId,
442
+ const result = await memoryStore.listThreads({
443
+ filter,
411
444
  page,
412
445
  perPage,
413
446
  orderBy
@@ -848,8 +881,8 @@ var SEARCH_MEMORY_ROUTE = chunkAVRO3FIN_cjs.createRoute({
848
881
  }
849
882
  }
850
883
  if (!threadId) {
851
- const { threads } = await memory.listThreadsByResourceId({
852
- resourceId,
884
+ const { threads } = await memory.listThreads({
885
+ filter: { resourceId },
853
886
  page: 0,
854
887
  perPage: 1,
855
888
  orderBy: { field: "updatedAt", direction: "DESC" }
@@ -1068,5 +1101,5 @@ exports.UPDATE_THREAD_ROUTE = UPDATE_THREAD_ROUTE;
1068
1101
  exports.UPDATE_WORKING_MEMORY_ROUTE = UPDATE_WORKING_MEMORY_ROUTE;
1069
1102
  exports.getTextContent = getTextContent;
1070
1103
  exports.memory_exports = memory_exports;
1071
- //# sourceMappingURL=chunk-BW3BLTCG.cjs.map
1072
- //# sourceMappingURL=chunk-BW3BLTCG.cjs.map
1104
+ //# sourceMappingURL=chunk-NUO7HPOV.cjs.map
1105
+ //# sourceMappingURL=chunk-NUO7HPOV.cjs.map