@mastra/core 0.15.3-alpha.1 → 0.15.3-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/dist/agent/index.cjs +11 -11
  2. package/dist/agent/index.js +2 -2
  3. package/dist/agent/input-processor/index.cjs +6 -6
  4. package/dist/agent/input-processor/index.js +1 -1
  5. package/dist/agent/message-list/index.d.ts +5 -1
  6. package/dist/agent/message-list/index.d.ts.map +1 -1
  7. package/dist/agent/message-list/prompt/convert-file.d.ts +7 -0
  8. package/dist/agent/message-list/prompt/convert-file.d.ts.map +1 -0
  9. package/dist/agent/message-list/prompt/download-assets.d.ts +15 -0
  10. package/dist/agent/message-list/prompt/download-assets.d.ts.map +1 -0
  11. package/dist/{chunk-6VROHRAR.cjs → chunk-24TFSB6Z.cjs} +30 -7
  12. package/dist/chunk-24TFSB6Z.cjs.map +1 -0
  13. package/dist/{chunk-BRNBKCHE.js → chunk-5TFCIXWE.js} +10 -8
  14. package/dist/chunk-5TFCIXWE.js.map +1 -0
  15. package/dist/{chunk-TINMY4WA.js → chunk-APVV75XG.js} +3 -3
  16. package/dist/{chunk-TINMY4WA.js.map → chunk-APVV75XG.js.map} +1 -1
  17. package/dist/{chunk-HRDADYVX.cjs → chunk-AYFN43FB.cjs} +4 -4
  18. package/dist/{chunk-HRDADYVX.cjs.map → chunk-AYFN43FB.cjs.map} +1 -1
  19. package/dist/{chunk-FGCA6CCM.js → chunk-BGOXFBFK.js} +295 -275
  20. package/dist/chunk-BGOXFBFK.js.map +1 -0
  21. package/dist/{chunk-XEY3CWQW.cjs → chunk-D2GH2HAK.cjs} +9 -9
  22. package/dist/{chunk-XEY3CWQW.cjs.map → chunk-D2GH2HAK.cjs.map} +1 -1
  23. package/dist/{chunk-6Z7D7CA3.cjs → chunk-DJKIK6ZB.cjs} +326 -306
  24. package/dist/chunk-DJKIK6ZB.cjs.map +1 -0
  25. package/dist/{chunk-XOZ737RO.js → chunk-EMAAAVRA.js} +3 -3
  26. package/dist/{chunk-XOZ737RO.js.map → chunk-EMAAAVRA.js.map} +1 -1
  27. package/dist/chunk-GOG77M6R.js +103 -0
  28. package/dist/chunk-GOG77M6R.js.map +1 -0
  29. package/dist/{chunk-UG3KS3XV.cjs → chunk-HXEHQLBD.cjs} +4 -4
  30. package/dist/{chunk-UG3KS3XV.cjs.map → chunk-HXEHQLBD.cjs.map} +1 -1
  31. package/dist/{chunk-MKWJKRSX.js → chunk-MEROMP3Z.js} +3 -3
  32. package/dist/{chunk-MKWJKRSX.js.map → chunk-MEROMP3Z.js.map} +1 -1
  33. package/dist/{chunk-C5C4PN54.js → chunk-O7IQL4DX.js} +288 -5
  34. package/dist/chunk-O7IQL4DX.js.map +1 -0
  35. package/dist/{chunk-VBAWR62U.cjs → chunk-QHEB6ZLO.cjs} +13 -11
  36. package/dist/chunk-QHEB6ZLO.cjs.map +1 -0
  37. package/dist/{chunk-5MCNXLGT.js → chunk-TQRLZH64.js} +4 -4
  38. package/dist/{chunk-5MCNXLGT.js.map → chunk-TQRLZH64.js.map} +1 -1
  39. package/dist/{chunk-QA2TWVUS.cjs → chunk-TWNFR6MQ.cjs} +288 -5
  40. package/dist/chunk-TWNFR6MQ.cjs.map +1 -0
  41. package/dist/{chunk-CDLIHAX2.cjs → chunk-UGN2UU3K.cjs} +4 -4
  42. package/dist/{chunk-CDLIHAX2.cjs.map → chunk-UGN2UU3K.cjs.map} +1 -1
  43. package/dist/{chunk-E3LAPNKY.js → chunk-WUQSFK7W.js} +4 -4
  44. package/dist/{chunk-E3LAPNKY.js.map → chunk-WUQSFK7W.js.map} +1 -1
  45. package/dist/{chunk-QBNRMJAN.cjs → chunk-YTVX52NU.cjs} +6 -6
  46. package/dist/{chunk-QBNRMJAN.cjs.map → chunk-YTVX52NU.cjs.map} +1 -1
  47. package/dist/chunk-ZAJTIZZF.cjs +108 -0
  48. package/dist/chunk-ZAJTIZZF.cjs.map +1 -0
  49. package/dist/{chunk-FLXWZUIG.js → chunk-ZC64CG7J.js} +26 -4
  50. package/dist/chunk-ZC64CG7J.js.map +1 -0
  51. package/dist/index.cjs +47 -43
  52. package/dist/index.js +10 -10
  53. package/dist/integration/index.cjs +3 -3
  54. package/dist/integration/index.js +1 -1
  55. package/dist/llm/model/model.d.ts.map +1 -1
  56. package/dist/llm/model/model.loop.d.ts +1 -1
  57. package/dist/llm/model/model.loop.d.ts.map +1 -1
  58. package/dist/loop/index.cjs +2 -2
  59. package/dist/loop/index.js +1 -1
  60. package/dist/loop/types.d.ts +2 -0
  61. package/dist/loop/types.d.ts.map +1 -1
  62. package/dist/loop/workflow/llm-execution.d.ts +1 -1
  63. package/dist/loop/workflow/llm-execution.d.ts.map +1 -1
  64. package/dist/mastra/index.cjs +2 -2
  65. package/dist/mastra/index.js +1 -1
  66. package/dist/memory/index.cjs +4 -4
  67. package/dist/memory/index.js +1 -1
  68. package/dist/network/index.cjs +4 -4
  69. package/dist/network/index.js +2 -2
  70. package/dist/network/vNext/index.cjs +14 -14
  71. package/dist/network/vNext/index.js +2 -2
  72. package/dist/processors/index.cjs +8 -8
  73. package/dist/processors/index.js +2 -2
  74. package/dist/relevance/index.cjs +4 -4
  75. package/dist/relevance/index.js +1 -1
  76. package/dist/scores/index.cjs +5 -5
  77. package/dist/scores/index.js +1 -1
  78. package/dist/storage/index.cjs +3 -3
  79. package/dist/storage/index.js +1 -1
  80. package/dist/stream/aisdk/v5/compat/consume-stream.d.ts +8 -0
  81. package/dist/stream/aisdk/v5/compat/consume-stream.d.ts.map +1 -0
  82. package/dist/stream/aisdk/v5/compat/content.d.ts +7 -0
  83. package/dist/stream/aisdk/v5/compat/content.d.ts.map +1 -0
  84. package/dist/stream/aisdk/v5/compat/delayed-promise.d.ts +23 -0
  85. package/dist/stream/aisdk/v5/compat/delayed-promise.d.ts.map +1 -0
  86. package/dist/stream/aisdk/v5/compat/index.d.ts +8 -0
  87. package/dist/stream/aisdk/v5/compat/index.d.ts.map +1 -0
  88. package/dist/stream/aisdk/v5/compat/media.d.ts +91 -0
  89. package/dist/stream/aisdk/v5/compat/media.d.ts.map +1 -0
  90. package/dist/stream/aisdk/v5/compat/prepare-tools.d.ts +11 -0
  91. package/dist/stream/aisdk/v5/compat/prepare-tools.d.ts.map +1 -0
  92. package/dist/stream/aisdk/v5/compat/ui-message.d.ts +20 -0
  93. package/dist/stream/aisdk/v5/compat/ui-message.d.ts.map +1 -0
  94. package/dist/stream/aisdk/v5/compat/validation.d.ts +17 -0
  95. package/dist/stream/aisdk/v5/compat/validation.d.ts.map +1 -0
  96. package/dist/stream/aisdk/v5/output.d.ts +1 -1
  97. package/dist/stream/base/output.d.ts +1 -1
  98. package/dist/stream/index.cjs +3 -3
  99. package/dist/stream/index.js +1 -1
  100. package/dist/test-utils/llm-mock.cjs +2 -2
  101. package/dist/test-utils/llm-mock.js +1 -1
  102. package/dist/tools/index.cjs +4 -4
  103. package/dist/tools/index.js +1 -1
  104. package/dist/tools/is-vercel-tool.cjs +2 -2
  105. package/dist/tools/is-vercel-tool.js +1 -1
  106. package/dist/tools/validation.d.ts.map +1 -1
  107. package/dist/utils.cjs +20 -16
  108. package/dist/utils.d.ts +9 -0
  109. package/dist/utils.d.ts.map +1 -1
  110. package/dist/utils.js +1 -1
  111. package/dist/workflows/evented/index.cjs +10 -10
  112. package/dist/workflows/evented/index.js +1 -1
  113. package/dist/workflows/index.cjs +10 -10
  114. package/dist/workflows/index.js +1 -1
  115. package/dist/workflows/legacy/index.cjs +22 -22
  116. package/dist/workflows/legacy/index.js +1 -1
  117. package/package.json +3 -3
  118. package/dist/chunk-6VROHRAR.cjs.map +0 -1
  119. package/dist/chunk-6Z7D7CA3.cjs.map +0 -1
  120. package/dist/chunk-BRNBKCHE.js.map +0 -1
  121. package/dist/chunk-C5C4PN54.js.map +0 -1
  122. package/dist/chunk-E4XQMNEI.cjs +0 -77
  123. package/dist/chunk-E4XQMNEI.cjs.map +0 -1
  124. package/dist/chunk-FGCA6CCM.js.map +0 -1
  125. package/dist/chunk-FLXWZUIG.js.map +0 -1
  126. package/dist/chunk-IVGAHFAJ.js +0 -72
  127. package/dist/chunk-IVGAHFAJ.js.map +0 -1
  128. package/dist/chunk-QA2TWVUS.cjs.map +0 -1
  129. package/dist/chunk-VBAWR62U.cjs.map +0 -1
  130. package/dist/stream/aisdk/v5/compat.d.ts +0 -182
  131. package/dist/stream/aisdk/v5/compat.d.ts.map +0 -1
@@ -1,13 +1,13 @@
1
1
  import { DefaultVoice } from './chunk-XM2ASGWH.js';
2
2
  import { EMITTER_SYMBOL } from './chunk-GK5V7YTQ.js';
3
3
  import { InstrumentClass, Telemetry } from './chunk-76MWMAR7.js';
4
- import { MastraLLMV1 } from './chunk-BRNBKCHE.js';
5
- import { MessageList, DefaultGeneratedFile, DefaultGeneratedFileWithType } from './chunk-C5C4PN54.js';
4
+ import { MastraLLMV1 } from './chunk-5TFCIXWE.js';
5
+ import { MessageList, DefaultGeneratedFile, DefaultGeneratedFileWithType } from './chunk-O7IQL4DX.js';
6
6
  import { executeHook } from './chunk-TTELJD4F.js';
7
- import { ensureToolProperties, makeCoreTool, createMastraProxy, delay } from './chunk-FLXWZUIG.js';
7
+ import { ensureToolProperties, makeCoreTool, createMastraProxy, delay } from './chunk-ZC64CG7J.js';
8
8
  import { RuntimeContext } from './chunk-HLRWYUFN.js';
9
9
  import { ToolStream } from './chunk-YW7UILPE.js';
10
- import { Tool } from './chunk-IVGAHFAJ.js';
10
+ import { Tool } from './chunk-GOG77M6R.js';
11
11
  import { getSelectedAITracing, wrapMastra } from './chunk-WOTBMZCN.js';
12
12
  import { MastraError } from './chunk-MCOVMKIS.js';
13
13
  import { MastraBase } from './chunk-6GF5M4GX.js';
@@ -64,230 +64,17 @@ var require_fast_deep_equal = __commonJS({
64
64
  // src/agent/index.ts
65
65
  var import_fast_deep_equal = __toESM(require_fast_deep_equal(), 1);
66
66
 
67
- // src/agent/trip-wire.ts
68
- var TripWire = class extends Error {
69
- constructor(reason) {
70
- super(reason);
71
- Object.setPrototypeOf(this, new.target.prototype);
72
- }
73
- };
74
-
75
- // src/processors/runner.ts
76
- var ProcessorState = class {
77
- constructor(processorName) {
78
- this.processorName = processorName;
79
- }
80
- accumulatedText = "";
81
- customState = {};
82
- streamParts = [];
83
- // Internal methods for the runner
84
- addPart(part) {
85
- if (part.type === "text-delta") {
86
- this.accumulatedText += part.payload.text;
87
- }
88
- this.streamParts.push(part);
89
- }
90
- };
91
- var ProcessorRunner = class {
92
- inputProcessors;
93
- outputProcessors;
94
- logger;
95
- agentName;
96
- constructor({
97
- inputProcessors,
98
- outputProcessors,
99
- logger,
100
- agentName
101
- }) {
102
- this.inputProcessors = inputProcessors ?? [];
103
- this.outputProcessors = outputProcessors ?? [];
104
- this.logger = logger;
105
- this.agentName = agentName;
106
- }
107
- async runOutputProcessors(messageList, telemetry) {
108
- const responseMessages = messageList.clear.response.v2();
109
- let processableMessages = [...responseMessages];
110
- const ctx = {
111
- abort: () => {
112
- throw new TripWire("Tripwire triggered");
113
- }
114
- };
115
- for (const [index, processor] of this.outputProcessors.entries()) {
116
- const abort = reason => {
117
- throw new TripWire(reason || `Tripwire triggered by ${processor.name}`);
118
- };
119
- ctx.abort = abort;
120
- const processMethod = processor.processOutputResult?.bind(processor);
121
- if (!processMethod) {
122
- continue;
123
- }
124
- if (!telemetry) {
125
- processableMessages = await processMethod({
126
- messages: processableMessages,
127
- abort: ctx.abort
128
- });
129
- } else {
130
- await telemetry.traceMethod(async () => {
131
- processableMessages = await processMethod({
132
- messages: processableMessages,
133
- abort: ctx.abort
134
- });
135
- return processableMessages;
136
- }, {
137
- spanName: `agent.outputProcessor.${processor.name}`,
138
- attributes: {
139
- "processor.name": processor.name,
140
- "processor.index": index.toString(),
141
- "processor.total": this.outputProcessors.length.toString()
142
- }
143
- })();
144
- }
145
- }
146
- if (processableMessages.length > 0) {
147
- messageList.add(processableMessages, "response");
148
- }
149
- return messageList;
150
- }
151
- /**
152
- * Process a stream part through all output processors with state management
153
- */
154
- async processPart(part, processorStates) {
155
- if (!this.outputProcessors.length) {
156
- return {
157
- part,
158
- blocked: false
159
- };
160
- }
161
- try {
162
- let processedPart = part;
163
- for (const processor of this.outputProcessors) {
164
- try {
165
- if (processor.processOutputStream && processedPart) {
166
- let state = processorStates.get(processor.name);
167
- if (!state) {
168
- state = new ProcessorState(processor.name);
169
- processorStates.set(processor.name, state);
170
- }
171
- state.addPart(processedPart);
172
- const result = await processor.processOutputStream({
173
- part: processedPart,
174
- streamParts: state.streamParts,
175
- state: state.customState,
176
- abort: reason => {
177
- throw new TripWire(reason || `Stream part blocked by ${processor.name}`);
178
- }
179
- });
180
- processedPart = result;
181
- }
182
- } catch (error) {
183
- if (error instanceof TripWire) {
184
- return {
185
- part: null,
186
- blocked: true,
187
- reason: error.message
188
- };
189
- }
190
- this.logger.error(`[Agent:${this.agentName}] - Output processor ${processor.name} failed:`, error);
191
- }
192
- }
193
- return {
194
- part: processedPart,
195
- blocked: false
196
- };
197
- } catch (error) {
198
- this.logger.error(`[Agent:${this.agentName}] - Stream part processing failed:`, error);
199
- return {
200
- part,
201
- blocked: false
202
- };
203
- }
204
- }
205
- async runOutputProcessorsForStream(streamResult) {
206
- return new ReadableStream({
207
- start: async controller => {
208
- const reader = streamResult.fullStream.getReader();
209
- const processorStates = /* @__PURE__ */new Map();
210
- try {
211
- while (true) {
212
- const {
213
- done,
214
- value
215
- } = await reader.read();
216
- if (done) {
217
- controller.close();
218
- break;
219
- }
220
- const {
221
- part: processedPart,
222
- blocked,
223
- reason
224
- } = await this.processPart(value, processorStates);
225
- if (blocked) {
226
- void this.logger.debug(`[Agent:${this.agentName}] - Stream part blocked by output processor`, {
227
- reason,
228
- originalPart: value
229
- });
230
- controller.enqueue({
231
- type: "tripwire",
232
- tripwireReason: reason || "Output processor blocked content"
233
- });
234
- controller.close();
235
- break;
236
- } else if (processedPart !== null) {
237
- controller.enqueue(processedPart);
238
- }
239
- }
240
- } catch (error) {
241
- controller.error(error);
242
- }
243
- }
244
- });
245
- }
246
- async runInputProcessors(messageList, telemetry) {
247
- const userMessages = messageList.clear.input.v2();
248
- let processableMessages = [...userMessages];
249
- const ctx = {
250
- abort: () => {
251
- throw new TripWire("Tripwire triggered");
252
- }
253
- };
254
- for (const [index, processor] of this.inputProcessors.entries()) {
255
- const abort = reason => {
256
- throw new TripWire(reason || `Tripwire triggered by ${processor.name}`);
257
- };
258
- ctx.abort = abort;
259
- const processMethod = processor.processInput?.bind(processor);
260
- if (!processMethod) {
261
- continue;
262
- }
263
- if (!telemetry) {
264
- processableMessages = await processMethod({
265
- messages: processableMessages,
266
- abort: ctx.abort
267
- });
268
- } else {
269
- await telemetry.traceMethod(async () => {
270
- processableMessages = await processMethod({
271
- messages: processableMessages,
272
- abort: ctx.abort
273
- });
274
- return processableMessages;
275
- }, {
276
- spanName: `agent.inputProcessor.${processor.name}`,
277
- attributes: {
278
- "processor.name": processor.name,
279
- "processor.index": index.toString(),
280
- "processor.total": this.inputProcessors.length.toString()
281
- }
282
- })();
283
- }
284
- }
285
- if (processableMessages.length > 0) {
286
- messageList.add(processableMessages, "user");
287
- }
288
- return messageList;
67
+ // src/stream/aisdk/v5/compat/ui-message.ts
68
+ function getResponseUIMessageId({
69
+ originalMessages,
70
+ responseMessageId
71
+ }) {
72
+ if (originalMessages == null) {
73
+ return void 0;
289
74
  }
290
- };
75
+ const lastMessage = originalMessages[originalMessages.length - 1];
76
+ return lastMessage?.role === "assistant" ? lastMessage.id : typeof responseMessageId === "function" ? responseMessageId() : responseMessageId;
77
+ }
291
78
  function convertFullStreamChunkToUIMessageStream({
292
79
  part,
293
80
  messageMetadataValue,
@@ -454,6 +241,13 @@ function convertFullStreamChunkToUIMessageStream({
454
241
  } : {})
455
242
  };
456
243
  }
244
+ case "tool-output":
245
+ {
246
+ return {
247
+ id: part.toolCallId,
248
+ ...part.output
249
+ };
250
+ }
457
251
  case "tool-error":
458
252
  {
459
253
  return {
@@ -533,16 +327,6 @@ function convertFullStreamChunkToUIMessageStream({
533
327
  }
534
328
  }
535
329
  }
536
- function getResponseUIMessageId({
537
- originalMessages,
538
- responseMessageId
539
- }) {
540
- if (originalMessages == null) {
541
- return void 0;
542
- }
543
- const lastMessage = originalMessages[originalMessages.length - 1];
544
- return lastMessage?.role === "assistant" ? lastMessage.id : typeof responseMessageId === "function" ? responseMessageId() : responseMessageId;
545
- }
546
330
  async function safeValidateTypes({
547
331
  value,
548
332
  schema
@@ -574,7 +358,50 @@ async function safeValidateTypes({
574
358
  error: error instanceof Error ? error : new Error(String(error))
575
359
  };
576
360
  }
577
- }
361
+ }
362
+
363
+ // src/stream/aisdk/v5/compat/delayed-promise.ts
364
+ var DelayedPromise = class {
365
+ status = {
366
+ type: "pending"
367
+ };
368
+ _promise;
369
+ _resolve = void 0;
370
+ _reject = void 0;
371
+ get promise() {
372
+ if (this._promise) {
373
+ return this._promise;
374
+ }
375
+ this._promise = new Promise((resolve, reject) => {
376
+ if (this.status.type === "resolved") {
377
+ resolve(this.status.value);
378
+ } else if (this.status.type === "rejected") {
379
+ reject(this.status.error);
380
+ }
381
+ this._resolve = resolve;
382
+ this._reject = reject;
383
+ });
384
+ return this._promise;
385
+ }
386
+ resolve(value) {
387
+ this.status = {
388
+ type: "resolved",
389
+ value
390
+ };
391
+ if (this._promise) {
392
+ this._resolve?.(value);
393
+ }
394
+ }
395
+ reject(error) {
396
+ this.status = {
397
+ type: "rejected",
398
+ error
399
+ };
400
+ if (this._promise) {
401
+ this._reject?.(error);
402
+ }
403
+ }
404
+ };
578
405
  function prepareToolsAndToolChoice({
579
406
  tools,
580
407
  toolChoice,
@@ -642,45 +469,229 @@ function prepareToolsAndToolChoice({
642
469
  }
643
470
  };
644
471
  }
645
- var DelayedPromise = class {
646
- status = {
647
- type: "pending"
648
- };
649
- _promise;
650
- _resolve = void 0;
651
- _reject = void 0;
652
- get promise() {
653
- if (this._promise) {
654
- return this._promise;
472
+
473
+ // src/agent/trip-wire.ts
474
+ var TripWire = class extends Error {
475
+ constructor(reason) {
476
+ super(reason);
477
+ Object.setPrototypeOf(this, new.target.prototype);
478
+ }
479
+ };
480
+
481
+ // src/processors/runner.ts
482
+ var ProcessorState = class {
483
+ constructor(processorName) {
484
+ this.processorName = processorName;
485
+ }
486
+ accumulatedText = "";
487
+ customState = {};
488
+ streamParts = [];
489
+ // Internal methods for the runner
490
+ addPart(part) {
491
+ if (part.type === "text-delta") {
492
+ this.accumulatedText += part.payload.text;
655
493
  }
656
- this._promise = new Promise((resolve, reject) => {
657
- if (this.status.type === "resolved") {
658
- resolve(this.status.value);
659
- } else if (this.status.type === "rejected") {
660
- reject(this.status.error);
661
- }
662
- this._resolve = resolve;
663
- this._reject = reject;
664
- });
665
- return this._promise;
494
+ this.streamParts.push(part);
666
495
  }
667
- resolve(value) {
668
- this.status = {
669
- type: "resolved",
670
- value
496
+ };
497
+ var ProcessorRunner = class {
498
+ inputProcessors;
499
+ outputProcessors;
500
+ logger;
501
+ agentName;
502
+ constructor({
503
+ inputProcessors,
504
+ outputProcessors,
505
+ logger,
506
+ agentName
507
+ }) {
508
+ this.inputProcessors = inputProcessors ?? [];
509
+ this.outputProcessors = outputProcessors ?? [];
510
+ this.logger = logger;
511
+ this.agentName = agentName;
512
+ }
513
+ async runOutputProcessors(messageList, telemetry) {
514
+ const responseMessages = messageList.clear.response.v2();
515
+ let processableMessages = [...responseMessages];
516
+ const ctx = {
517
+ abort: () => {
518
+ throw new TripWire("Tripwire triggered");
519
+ }
671
520
  };
672
- if (this._promise) {
673
- this._resolve?.(value);
521
+ for (const [index, processor] of this.outputProcessors.entries()) {
522
+ const abort = reason => {
523
+ throw new TripWire(reason || `Tripwire triggered by ${processor.name}`);
524
+ };
525
+ ctx.abort = abort;
526
+ const processMethod = processor.processOutputResult?.bind(processor);
527
+ if (!processMethod) {
528
+ continue;
529
+ }
530
+ if (!telemetry) {
531
+ processableMessages = await processMethod({
532
+ messages: processableMessages,
533
+ abort: ctx.abort
534
+ });
535
+ } else {
536
+ await telemetry.traceMethod(async () => {
537
+ processableMessages = await processMethod({
538
+ messages: processableMessages,
539
+ abort: ctx.abort
540
+ });
541
+ return processableMessages;
542
+ }, {
543
+ spanName: `agent.outputProcessor.${processor.name}`,
544
+ attributes: {
545
+ "processor.name": processor.name,
546
+ "processor.index": index.toString(),
547
+ "processor.total": this.outputProcessors.length.toString()
548
+ }
549
+ })();
550
+ }
551
+ }
552
+ if (processableMessages.length > 0) {
553
+ messageList.add(processableMessages, "response");
674
554
  }
555
+ return messageList;
675
556
  }
676
- reject(error) {
677
- this.status = {
678
- type: "rejected",
679
- error
557
+ /**
558
+ * Process a stream part through all output processors with state management
559
+ */
560
+ async processPart(part, processorStates) {
561
+ if (!this.outputProcessors.length) {
562
+ return {
563
+ part,
564
+ blocked: false
565
+ };
566
+ }
567
+ try {
568
+ let processedPart = part;
569
+ for (const processor of this.outputProcessors) {
570
+ try {
571
+ if (processor.processOutputStream && processedPart) {
572
+ let state = processorStates.get(processor.name);
573
+ if (!state) {
574
+ state = new ProcessorState(processor.name);
575
+ processorStates.set(processor.name, state);
576
+ }
577
+ state.addPart(processedPart);
578
+ const result = await processor.processOutputStream({
579
+ part: processedPart,
580
+ streamParts: state.streamParts,
581
+ state: state.customState,
582
+ abort: reason => {
583
+ throw new TripWire(reason || `Stream part blocked by ${processor.name}`);
584
+ }
585
+ });
586
+ processedPart = result;
587
+ }
588
+ } catch (error) {
589
+ if (error instanceof TripWire) {
590
+ return {
591
+ part: null,
592
+ blocked: true,
593
+ reason: error.message
594
+ };
595
+ }
596
+ this.logger.error(`[Agent:${this.agentName}] - Output processor ${processor.name} failed:`, error);
597
+ }
598
+ }
599
+ return {
600
+ part: processedPart,
601
+ blocked: false
602
+ };
603
+ } catch (error) {
604
+ this.logger.error(`[Agent:${this.agentName}] - Stream part processing failed:`, error);
605
+ return {
606
+ part,
607
+ blocked: false
608
+ };
609
+ }
610
+ }
611
+ async runOutputProcessorsForStream(streamResult) {
612
+ return new ReadableStream({
613
+ start: async controller => {
614
+ const reader = streamResult.fullStream.getReader();
615
+ const processorStates = /* @__PURE__ */new Map();
616
+ try {
617
+ while (true) {
618
+ const {
619
+ done,
620
+ value
621
+ } = await reader.read();
622
+ if (done) {
623
+ controller.close();
624
+ break;
625
+ }
626
+ const {
627
+ part: processedPart,
628
+ blocked,
629
+ reason
630
+ } = await this.processPart(value, processorStates);
631
+ if (blocked) {
632
+ void this.logger.debug(`[Agent:${this.agentName}] - Stream part blocked by output processor`, {
633
+ reason,
634
+ originalPart: value
635
+ });
636
+ controller.enqueue({
637
+ type: "tripwire",
638
+ tripwireReason: reason || "Output processor blocked content"
639
+ });
640
+ controller.close();
641
+ break;
642
+ } else if (processedPart !== null) {
643
+ controller.enqueue(processedPart);
644
+ }
645
+ }
646
+ } catch (error) {
647
+ controller.error(error);
648
+ }
649
+ }
650
+ });
651
+ }
652
+ async runInputProcessors(messageList, telemetry) {
653
+ const userMessages = messageList.clear.input.v2();
654
+ let processableMessages = [...userMessages];
655
+ const ctx = {
656
+ abort: () => {
657
+ throw new TripWire("Tripwire triggered");
658
+ }
680
659
  };
681
- if (this._promise) {
682
- this._reject?.(error);
660
+ for (const [index, processor] of this.inputProcessors.entries()) {
661
+ const abort = reason => {
662
+ throw new TripWire(reason || `Tripwire triggered by ${processor.name}`);
663
+ };
664
+ ctx.abort = abort;
665
+ const processMethod = processor.processInput?.bind(processor);
666
+ if (!processMethod) {
667
+ continue;
668
+ }
669
+ if (!telemetry) {
670
+ processableMessages = await processMethod({
671
+ messages: processableMessages,
672
+ abort: ctx.abort
673
+ });
674
+ } else {
675
+ await telemetry.traceMethod(async () => {
676
+ processableMessages = await processMethod({
677
+ messages: processableMessages,
678
+ abort: ctx.abort
679
+ });
680
+ return processableMessages;
681
+ }, {
682
+ spanName: `agent.inputProcessor.${processor.name}`,
683
+ attributes: {
684
+ "processor.name": processor.name,
685
+ "processor.index": index.toString(),
686
+ "processor.total": this.inputProcessors.length.toString()
687
+ }
688
+ })();
689
+ }
690
+ }
691
+ if (processableMessages.length > 0) {
692
+ messageList.add(processableMessages, "user");
683
693
  }
694
+ return messageList;
684
695
  }
685
696
  };
686
697
  function getTransformedSchema(schema) {
@@ -3278,7 +3289,9 @@ function createLLMExecutionStep({
3278
3289
  toolCallStreaming,
3279
3290
  controller,
3280
3291
  output,
3281
- headers
3292
+ headers,
3293
+ downloadRetries,
3294
+ downloadConcurrency
3282
3295
  }) {
3283
3296
  return createStep({
3284
3297
  id: "llm-execution",
@@ -3299,11 +3312,16 @@ function createLLMExecutionStep({
3299
3312
  switch (model.specificationVersion) {
3300
3313
  case "v2":
3301
3314
  {
3315
+ const inputMessages = await messageList.get.all.aiV5.llmPrompt({
3316
+ downloadRetries,
3317
+ downloadConcurrency,
3318
+ supportedUrls: model?.supportedUrls
3319
+ });
3302
3320
  modelResult = execute({
3303
3321
  runId,
3304
3322
  model,
3305
3323
  providerOptions,
3306
- inputMessages: messageList.get.all.aiV5.llmPrompt(),
3324
+ inputMessages,
3307
3325
  tools,
3308
3326
  toolChoice,
3309
3327
  options,
@@ -4036,7 +4054,8 @@ var MastraLLMVNext = class extends MastraBase {
4036
4054
  resourceId,
4037
4055
  output,
4038
4056
  options,
4039
- outputProcessors
4057
+ outputProcessors,
4058
+ providerOptions
4040
4059
  // ...rest
4041
4060
  }) {
4042
4061
  let stopWhenToUse;
@@ -4069,6 +4088,7 @@ var MastraLLMVNext = class extends MastraBase {
4069
4088
  stopWhen: stopWhenToUse,
4070
4089
  toolChoice,
4071
4090
  modelSettings,
4091
+ providerOptions,
4072
4092
  telemetry_settings: {
4073
4093
  ...this.experimental_telemetry,
4074
4094
  ...telemetry_settings
@@ -15460,5 +15480,5 @@ function deepMergeWorkflowState(a, b) {
15460
15480
  }
15461
15481
 
15462
15482
  export { AISDKV5OutputStream, Agent, DefaultExecutionEngine, ExecutionEngine, LanguageDetector, LanguageDetectorInputProcessor, LegacyStep, LegacyWorkflow, MastraModelOutput, ModerationInputProcessor, ModerationProcessor, PIIDetector, PIIDetectorInputProcessor, PromptInjectionDetector, PromptInjectionDetectorInputProcessor, Run, StructuredOutputProcessor, TripWire, UnicodeNormalizer, UnicodeNormalizerInputProcessor, WhenConditionReturnValue, Workflow, agentToStep, cloneStep, cloneWorkflow, createStep, createWorkflow, getActivePathsAndStatus, getResultActivePaths, getStepResult, getSuspendedPaths, isAgent, isConditionalKey, isErrorEvent, isFinalState, isLimboState, isTransitionEvent, isVariableReference, isWorkflow, loop, mapVariable, mergeChildValue, recursivelyCheckForFinalState, resolveVariables, updateStepInHierarchy, workflowToStep };
15463
- //# sourceMappingURL=chunk-FGCA6CCM.js.map
15464
- //# sourceMappingURL=chunk-FGCA6CCM.js.map
15483
+ //# sourceMappingURL=chunk-BGOXFBFK.js.map
15484
+ //# sourceMappingURL=chunk-BGOXFBFK.js.map