@mastra/core 1.26.0-alpha.11 → 1.26.0-alpha.13

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 (140) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/agent/agent.d.ts.map +1 -1
  3. package/dist/agent/index.cjs +8 -8
  4. package/dist/agent/index.js +1 -1
  5. package/dist/agent/types.d.ts +7 -1
  6. package/dist/agent/types.d.ts.map +1 -1
  7. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts.map +1 -1
  8. package/dist/agent/workflows/prepare-stream/schema.d.ts +1 -0
  9. package/dist/agent/workflows/prepare-stream/schema.d.ts.map +1 -1
  10. package/dist/browser/index.cjs +2 -2
  11. package/dist/browser/index.js +1 -1
  12. package/dist/channels/index.cjs +4 -4
  13. package/dist/channels/index.js +1 -1
  14. package/dist/{chunk-CXIQCUHL.js → chunk-24FTWXDR.js} +3 -3
  15. package/dist/{chunk-CXIQCUHL.js.map → chunk-24FTWXDR.js.map} +1 -1
  16. package/dist/{chunk-RSFZN7OV.cjs → chunk-2NQ2TF5F.cjs} +389 -316
  17. package/dist/chunk-2NQ2TF5F.cjs.map +1 -0
  18. package/dist/{chunk-ECT5553H.cjs → chunk-34M2QMAZ.cjs} +292 -292
  19. package/dist/{chunk-ECT5553H.cjs.map → chunk-34M2QMAZ.cjs.map} +1 -1
  20. package/dist/{chunk-BJCPVJJV.js → chunk-37OQ7B3U.js} +3 -3
  21. package/dist/{chunk-BJCPVJJV.js.map → chunk-37OQ7B3U.js.map} +1 -1
  22. package/dist/{chunk-TER3JXU5.cjs → chunk-4MLJKGJI.cjs} +52 -22
  23. package/dist/chunk-4MLJKGJI.cjs.map +1 -0
  24. package/dist/{chunk-WBPTY4Y7.cjs → chunk-7IMHDDED.cjs} +57 -57
  25. package/dist/{chunk-WBPTY4Y7.cjs.map → chunk-7IMHDDED.cjs.map} +1 -1
  26. package/dist/{chunk-2QPYXXQP.js → chunk-DHKEEJPE.js} +3 -3
  27. package/dist/{chunk-2QPYXXQP.js.map → chunk-DHKEEJPE.js.map} +1 -1
  28. package/dist/{chunk-72TFCXLB.js → chunk-DLDGEMBE.js} +381 -308
  29. package/dist/chunk-DLDGEMBE.js.map +1 -0
  30. package/dist/{chunk-IFMX323P.cjs → chunk-ER7WPKHP.cjs} +7 -7
  31. package/dist/{chunk-IFMX323P.cjs.map → chunk-ER7WPKHP.cjs.map} +1 -1
  32. package/dist/{chunk-5EU2N7AI.js → chunk-FE3JBPGZ.js} +9 -9
  33. package/dist/{chunk-5EU2N7AI.js.map → chunk-FE3JBPGZ.js.map} +1 -1
  34. package/dist/{chunk-TJ4FSWVQ.js → chunk-GDUBYVBH.js} +4 -4
  35. package/dist/{chunk-TJ4FSWVQ.js.map → chunk-GDUBYVBH.js.map} +1 -1
  36. package/dist/{chunk-6SZ4HY7N.cjs → chunk-GSJT6X23.cjs} +10 -9
  37. package/dist/chunk-GSJT6X23.cjs.map +1 -0
  38. package/dist/{chunk-HGZ5C3XG.cjs → chunk-KEXLOZNA.cjs} +17 -17
  39. package/dist/{chunk-HGZ5C3XG.cjs.map → chunk-KEXLOZNA.cjs.map} +1 -1
  40. package/dist/{chunk-MT2NFL3T.js → chunk-NTGYHDWA.js} +40 -10
  41. package/dist/chunk-NTGYHDWA.js.map +1 -0
  42. package/dist/{chunk-KSTYF5BD.js → chunk-SQAGQFGX.js} +3 -3
  43. package/dist/{chunk-KSTYF5BD.js.map → chunk-SQAGQFGX.js.map} +1 -1
  44. package/dist/{chunk-BQN6OA5U.js → chunk-T5WE2PEP.js} +6 -6
  45. package/dist/{chunk-BQN6OA5U.js.map → chunk-T5WE2PEP.js.map} +1 -1
  46. package/dist/{chunk-SLO7BNJL.cjs → chunk-TITDW65H.cjs} +9 -9
  47. package/dist/{chunk-SLO7BNJL.cjs.map → chunk-TITDW65H.cjs.map} +1 -1
  48. package/dist/{chunk-M7NIAKE6.cjs → chunk-WBZ5SRGR.cjs} +3 -3
  49. package/dist/{chunk-M7NIAKE6.cjs.map → chunk-WBZ5SRGR.cjs.map} +1 -1
  50. package/dist/{chunk-B3A3OLBO.cjs → chunk-WDJZB44P.cjs} +224 -224
  51. package/dist/{chunk-B3A3OLBO.cjs.map → chunk-WDJZB44P.cjs.map} +1 -1
  52. package/dist/{chunk-HTSHN5E4.js → chunk-WSVLXQT6.js} +8 -7
  53. package/dist/chunk-WSVLXQT6.js.map +1 -0
  54. package/dist/{chunk-DELWJ5NK.js → chunk-WYPOS74A.js} +3 -3
  55. package/dist/{chunk-DELWJ5NK.js.map → chunk-WYPOS74A.js.map} +1 -1
  56. package/dist/{chunk-5IIRXFH2.cjs → chunk-YQ5QJC3S.cjs} +5 -5
  57. package/dist/{chunk-5IIRXFH2.cjs.map → chunk-YQ5QJC3S.cjs.map} +1 -1
  58. package/dist/datasets/experiment/index.d.ts.map +1 -1
  59. package/dist/datasets/index.cjs +11 -11
  60. package/dist/datasets/index.js +1 -1
  61. package/dist/docs/SKILL.md +3 -1
  62. package/dist/docs/assets/SOURCE_MAP.json +191 -191
  63. package/dist/docs/references/docs-agents-structured-output.md +22 -0
  64. package/dist/docs/references/docs-memory-storage.md +1 -0
  65. package/dist/docs/references/reference-storage-redis.md +266 -0
  66. package/dist/docs/references/reference-tools-tavily.md +307 -0
  67. package/dist/docs/references/reference.md +2 -0
  68. package/dist/evals/index.cjs +5 -5
  69. package/dist/evals/index.js +2 -2
  70. package/dist/evals/scoreTraces/index.cjs +3 -3
  71. package/dist/evals/scoreTraces/index.js +1 -1
  72. package/dist/harness/index.cjs +7 -7
  73. package/dist/harness/index.js +5 -5
  74. package/dist/index.cjs +2 -2
  75. package/dist/index.js +1 -1
  76. package/dist/llm/index.cjs +20 -20
  77. package/dist/llm/index.js +5 -5
  78. package/dist/llm/model/provider-types.generated.d.ts +15 -0
  79. package/dist/loop/index.cjs +14 -14
  80. package/dist/loop/index.js +1 -1
  81. package/dist/loop/workflows/agentic-execution/build-messages-from-chunks.d.ts +32 -0
  82. package/dist/loop/workflows/agentic-execution/build-messages-from-chunks.d.ts.map +1 -0
  83. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
  84. package/dist/loop/workflows/run-state.d.ts +0 -9
  85. package/dist/loop/workflows/run-state.d.ts.map +1 -1
  86. package/dist/mastra/index.cjs +2 -2
  87. package/dist/mastra/index.js +1 -1
  88. package/dist/mastra-47JQIPP2.cjs +12 -0
  89. package/dist/{mastra-UBXRRSVL.cjs.map → mastra-47JQIPP2.cjs.map} +1 -1
  90. package/dist/mastra-MEZUGGZZ.js +3 -0
  91. package/dist/{mastra-YR56DXR7.js.map → mastra-MEZUGGZZ.js.map} +1 -1
  92. package/dist/memory/index.cjs +19 -19
  93. package/dist/memory/index.js +1 -1
  94. package/dist/models-dev-BUQGQZCQ.js +3 -0
  95. package/dist/{models-dev-B24Y4NYV.js.map → models-dev-BUQGQZCQ.js.map} +1 -1
  96. package/dist/models-dev-INA3VBAK.cjs +12 -0
  97. package/dist/{models-dev-EMLWCDMI.cjs.map → models-dev-INA3VBAK.cjs.map} +1 -1
  98. package/dist/netlify-BW7IYASM.cjs +12 -0
  99. package/dist/{netlify-BFZBVACL.cjs.map → netlify-BW7IYASM.cjs.map} +1 -1
  100. package/dist/netlify-EQPVEYNW.js +3 -0
  101. package/dist/{netlify-W7DGKAGR.js.map → netlify-EQPVEYNW.js.map} +1 -1
  102. package/dist/processor-provider/index.cjs +10 -10
  103. package/dist/processor-provider/index.js +1 -1
  104. package/dist/processors/index.cjs +45 -45
  105. package/dist/processors/index.js +1 -1
  106. package/dist/processors/processors/structured-output.d.ts +13 -12
  107. package/dist/processors/processors/structured-output.d.ts.map +1 -1
  108. package/dist/provider-registry-4FV6CXQI.cjs +44 -0
  109. package/dist/{provider-registry-OLA6QVLP.cjs.map → provider-registry-4FV6CXQI.cjs.map} +1 -1
  110. package/dist/provider-registry-EAKPPU44.js +3 -0
  111. package/dist/{provider-registry-LGHC4U7P.js.map → provider-registry-EAKPPU44.js.map} +1 -1
  112. package/dist/provider-registry.json +32 -2
  113. package/dist/relevance/index.cjs +3 -3
  114. package/dist/relevance/index.js +1 -1
  115. package/dist/stream/aisdk/v5/execute.d.ts.map +1 -1
  116. package/dist/stream/base/output.d.ts.map +1 -1
  117. package/dist/stream/index.cjs +8 -8
  118. package/dist/stream/index.js +1 -1
  119. package/dist/tool-loop-agent/index.cjs +4 -4
  120. package/dist/tool-loop-agent/index.js +1 -1
  121. package/dist/workflows/evented/index.cjs +10 -10
  122. package/dist/workflows/evented/index.js +1 -1
  123. package/dist/workflows/index.cjs +24 -24
  124. package/dist/workflows/index.js +1 -1
  125. package/package.json +2 -2
  126. package/src/llm/model/provider-types.generated.d.ts +15 -0
  127. package/dist/chunk-6SZ4HY7N.cjs.map +0 -1
  128. package/dist/chunk-72TFCXLB.js.map +0 -1
  129. package/dist/chunk-HTSHN5E4.js.map +0 -1
  130. package/dist/chunk-MT2NFL3T.js.map +0 -1
  131. package/dist/chunk-RSFZN7OV.cjs.map +0 -1
  132. package/dist/chunk-TER3JXU5.cjs.map +0 -1
  133. package/dist/mastra-UBXRRSVL.cjs +0 -12
  134. package/dist/mastra-YR56DXR7.js +0 -3
  135. package/dist/models-dev-B24Y4NYV.js +0 -3
  136. package/dist/models-dev-EMLWCDMI.cjs +0 -12
  137. package/dist/netlify-BFZBVACL.cjs +0 -12
  138. package/dist/netlify-W7DGKAGR.js +0 -3
  139. package/dist/provider-registry-LGHC4U7P.js +0 -3
  140. package/dist/provider-registry-OLA6QVLP.cjs +0 -44
@@ -10,7 +10,7 @@ var chunkCFMZZDO2_cjs = require('./chunk-CFMZZDO2.cjs');
10
10
  var chunkAZ5DDZUI_cjs = require('./chunk-AZ5DDZUI.cjs');
11
11
  var chunkDGN2UMWP_cjs = require('./chunk-DGN2UMWP.cjs');
12
12
  var chunkMR7ZWBL6_cjs = require('./chunk-MR7ZWBL6.cjs');
13
- var chunkECT5553H_cjs = require('./chunk-ECT5553H.cjs');
13
+ var chunk34M2QMAZ_cjs = require('./chunk-34M2QMAZ.cjs');
14
14
  var chunkFM6MTRWJ_cjs = require('./chunk-FM6MTRWJ.cjs');
15
15
  var chunk6ZYEOOKL_cjs = require('./chunk-6ZYEOOKL.cjs');
16
16
  var chunkELRUKENZ_cjs = require('./chunk-ELRUKENZ.cjs');
@@ -774,6 +774,10 @@ var StructuredOutputProcessor = class {
774
774
  name = "Structured Output";
775
775
  schema;
776
776
  structuringAgent;
777
+ structuringModel;
778
+ structuringInstructions;
779
+ agent;
780
+ useAgent = false;
777
781
  errorStrategy;
778
782
  fallbackValue;
779
783
  isStructuringAgentStreamStarted = false;
@@ -798,49 +802,56 @@ var StructuredOutputProcessor = class {
798
802
  });
799
803
  }
800
804
  this.schema = options.schema;
805
+ this.structuringModel = options.model;
806
+ this.useAgent = options.useAgent ?? false;
801
807
  this.errorStrategy = options.errorStrategy ?? "strict";
802
808
  this.fallbackValue = options.fallbackValue;
803
809
  this.jsonPromptInjection = options.jsonPromptInjection;
804
810
  this.providerOptions = options.providerOptions;
805
811
  this.logger = options.logger;
812
+ this.structuringInstructions = options.instructions || this.generateInstructions();
806
813
  this.structuringAgent = new Agent({
807
814
  id: "structured-output-structurer",
808
815
  name: "structured-output-structurer",
809
- instructions: options.instructions || this.generateInstructions(),
816
+ instructions: this.structuringInstructions,
810
817
  model: options.model
811
818
  });
812
819
  }
813
820
  __registerMastra(mastra) {
814
821
  this.structuringAgent.__registerMastra(mastra);
815
822
  }
823
+ setAgent(agent) {
824
+ this.agent = agent;
825
+ }
816
826
  async processOutputStream(args) {
817
- const { part, state, streamParts, abort, ...rest } = args;
827
+ const { part, state, streamParts, abort, requestContext, messageList, ...rest } = args;
818
828
  const observabilityContext = chunkELRUKENZ_cjs.resolveObservabilityContext(rest);
819
829
  const controller = state.controller;
820
830
  switch (part.type) {
821
831
  case "finish":
822
- await this.processAndEmitStructuredOutput(streamParts, controller, abort, observabilityContext);
832
+ await this.processAndEmitStructuredOutput(
833
+ streamParts,
834
+ controller,
835
+ abort,
836
+ observabilityContext,
837
+ requestContext,
838
+ messageList
839
+ );
823
840
  return part;
824
841
  default:
825
842
  return part;
826
843
  }
827
844
  }
828
- async processAndEmitStructuredOutput(streamParts, controller, abort, observabilityContext) {
845
+ async processAndEmitStructuredOutput(streamParts, controller, abort, observabilityContext, requestContext, messageList) {
829
846
  if (this.isStructuringAgentStreamStarted) return;
830
847
  this.isStructuringAgentStreamStarted = true;
831
848
  try {
832
- const structuringPrompt = this.buildStructuringPrompt(streamParts);
833
- const prompt = `Extract and structure the key information from the following text according to the specified schema. Keep the original meaning and details:
834
-
835
- ${structuringPrompt}`;
836
- const structuringAgentStream = await this.structuringAgent.stream(prompt, {
837
- structuredOutput: {
838
- schema: this.schema,
839
- jsonPromptInjection: this.jsonPromptInjection
840
- },
841
- providerOptions: this.providerOptions,
842
- ...observabilityContext
843
- });
849
+ const structuringAgentStream = await this.getStructuringStream(
850
+ streamParts,
851
+ requestContext,
852
+ messageList,
853
+ observabilityContext
854
+ );
844
855
  const excludedChunkTypes = [
845
856
  "start",
846
857
  "finish",
@@ -870,7 +881,7 @@ ${structuringPrompt}`;
870
881
  fallback: true
871
882
  }
872
883
  };
873
- controller.enqueue(fallbackChunk);
884
+ controller?.enqueue(fallbackChunk);
874
885
  break;
875
886
  }
876
887
  }
@@ -880,12 +891,69 @@ ${structuringPrompt}`;
880
891
  from: "structured-output"
881
892
  }
882
893
  };
883
- controller.enqueue(newChunk);
894
+ controller?.enqueue(newChunk);
884
895
  }
885
896
  } catch (error) {
886
897
  this.handleError("Structured output processing failed", error, abort);
887
898
  }
888
899
  }
900
+ /**
901
+ * Get the structuring stream, using the explicit agent with model override and
902
+ * read-only memory when request context provides thread info, falling back to the bare internal agent.
903
+ */
904
+ async getStructuringStream(streamParts, requestContext, messageList, observabilityContext) {
905
+ const requestThreadId = requestContext?.get(chunkNCM7IIBI_cjs.MASTRA_THREAD_ID_KEY);
906
+ const requestResourceId = requestContext?.get(chunkNCM7IIBI_cjs.MASTRA_RESOURCE_ID_KEY);
907
+ const serializedMemoryInfo = messageList?.serialize().memoryInfo;
908
+ const threadId = typeof requestThreadId === "string" ? requestThreadId : typeof serializedMemoryInfo?.threadId === "string" ? serializedMemoryInfo.threadId : void 0;
909
+ const resourceId = typeof requestResourceId === "string" ? requestResourceId : typeof serializedMemoryInfo?.resourceId === "string" ? serializedMemoryInfo.resourceId : void 0;
910
+ if (this.useAgent && this.agent && threadId) {
911
+ const promptMessage = {
912
+ role: "user",
913
+ content: [
914
+ {
915
+ type: "text",
916
+ text: `Extract and structure information from the conversation so far. keep the original meaning and details. Rely on the provided text and conversation history`
917
+ }
918
+ ]
919
+ };
920
+ const messages = [
921
+ ...messageList?.get?.input?.db() || [],
922
+ ...messageList?.get?.response?.db() || [],
923
+ promptMessage
924
+ ];
925
+ const structuringRequestContext = requestContext ? new chunkNCM7IIBI_cjs.RequestContext(requestContext.entries()) : void 0;
926
+ return this.agent.stream(messages, {
927
+ model: this.structuringModel,
928
+ requestContext: structuringRequestContext,
929
+ toolChoice: "none",
930
+ structuredOutput: {
931
+ schema: this.schema,
932
+ jsonPromptInjection: this.jsonPromptInjection
933
+ },
934
+ memory: {
935
+ thread: threadId,
936
+ ...resourceId ? { resource: resourceId } : {},
937
+ options: { readOnly: true }
938
+ },
939
+ providerOptions: this.providerOptions,
940
+ ...observabilityContext
941
+ });
942
+ }
943
+ return this.structuringAgent.stream(
944
+ `Extract and structure the key information from the following text according to the specified schema. Keep the original meaning and details. Rely on the provided text and conversation history.
945
+
946
+ ${this.buildStructuringPrompt(streamParts)}`,
947
+ {
948
+ structuredOutput: {
949
+ schema: this.schema,
950
+ jsonPromptInjection: this.jsonPromptInjection
951
+ },
952
+ providerOptions: this.providerOptions,
953
+ ...observabilityContext
954
+ }
955
+ );
956
+ }
889
957
  /**
890
958
  * Build a structured markdown prompt from stream parts
891
959
  * Collects chunks by type and formats them in a consistent structure
@@ -2479,7 +2547,7 @@ var ProcessorRunner = class _ProcessorRunner {
2479
2547
  }
2480
2548
  const { model: _model, ...rest } = result;
2481
2549
  if (result.model) {
2482
- const resolvedModel = await chunkECT5553H_cjs.resolveModelConfig(result.model);
2550
+ const resolvedModel = await chunk34M2QMAZ_cjs.resolveModelConfig(result.model);
2483
2551
  const isSupported = isSupportedLanguageModel(resolvedModel);
2484
2552
  if (!isSupported) {
2485
2553
  throw new chunk4U7ZLI36_cjs.MastraError({
@@ -3256,11 +3324,12 @@ var MastraModelOutput = class extends chunkFCQNDFEW_cjs.MastraBase {
3256
3324
  } else {
3257
3325
  if (!processorStates.has(STRUCTURED_OUTPUT_PROCESSOR_NAME)) {
3258
3326
  const processorIndex = processorRunner.outputProcessors.findIndex(
3259
- (p) => p.name === STRUCTURED_OUTPUT_PROCESSOR_NAME
3327
+ (p) => p.id === STRUCTURED_OUTPUT_PROCESSOR_NAME
3260
3328
  );
3261
3329
  if (processorIndex !== -1) {
3330
+ const structuredOutputProcessor = processorRunner.outputProcessors[processorIndex];
3262
3331
  const structuredOutputProcessorState = new ProcessorState({
3263
- processorName: STRUCTURED_OUTPUT_PROCESSOR_NAME,
3332
+ processorName: structuredOutputProcessor?.name ?? STRUCTURED_OUTPUT_PROCESSOR_NAME,
3264
3333
  tracingContext: options.tracingContext,
3265
3334
  processorIndex,
3266
3335
  createSpan: true
@@ -13460,7 +13529,7 @@ var MastraScorer = class _MastraScorer {
13460
13529
  }
13461
13530
  });
13462
13531
  }
13463
- const resolvedModel = await chunkECT5553H_cjs.resolveModelConfig(modelConfig, void 0, this.#mastra);
13532
+ const resolvedModel = await chunk34M2QMAZ_cjs.resolveModelConfig(modelConfig, void 0, this.#mastra);
13464
13533
  const judgeModel = resolvedModel.modelId;
13465
13534
  const judge = new Agent({
13466
13535
  id: "judge",
@@ -14191,7 +14260,7 @@ function execute({
14191
14260
  schema: responseFormat.schema
14192
14261
  });
14193
14262
  }
14194
- if (structuredOutputMode === "processor" && responseFormat?.type === "json" && responseFormat?.schema) {
14263
+ if (structuredOutputMode === "processor" && responseFormat?.type === "json" && responseFormat?.schema && !structuredOutput?.useAgent) {
14195
14264
  prompt = providerUtilsV5.injectJsonInstructionIntoMessages({
14196
14265
  messages: inputMessages,
14197
14266
  schema: responseFormat.schema,
@@ -14371,15 +14440,10 @@ var AgenticRunState = class {
14371
14440
  modelVersion: model.specificationVersion,
14372
14441
  modelProvider: model.provider
14373
14442
  },
14374
- isReasoning: false,
14375
- isStreaming: false,
14376
14443
  providerOptions: void 0,
14377
- hasToolCallStreaming: false,
14378
14444
  hasErrored: false,
14379
14445
  apiError: void 0,
14380
14446
  deferredErrorChunk: void 0,
14381
- reasoningBuffers: /* @__PURE__ */ new Map(),
14382
- textDeltas: [],
14383
14447
  stepResult: void 0
14384
14448
  };
14385
14449
  }
@@ -14394,6 +14458,265 @@ var AgenticRunState = class {
14394
14458
  }
14395
14459
  };
14396
14460
 
14461
+ // src/loop/workflows/agentic-execution/build-messages-from-chunks.ts
14462
+ function buildMessagesFromChunks({
14463
+ chunks,
14464
+ messageId,
14465
+ responseModelMetadata,
14466
+ tools
14467
+ }) {
14468
+ const parts = [];
14469
+ const toolResults = /* @__PURE__ */ new Map();
14470
+ for (const chunk of chunks) {
14471
+ if (chunk.type === "tool-result" && chunk.payload.result != null) {
14472
+ const p = chunk.payload;
14473
+ toolResults.set(p.toolCallId, {
14474
+ result: p.result,
14475
+ args: p.args,
14476
+ providerMetadata: p.providerMetadata,
14477
+ providerExecuted: p.providerExecuted,
14478
+ toolName: p.toolName
14479
+ });
14480
+ }
14481
+ }
14482
+ const textSpans = /* @__PURE__ */ new Map();
14483
+ const reasoningSpans = /* @__PURE__ */ new Map();
14484
+ for (const chunk of chunks) {
14485
+ switch (chunk.type) {
14486
+ // ── Text span ──────────────────────────────────────────────
14487
+ case "text-start": {
14488
+ const p = chunk.payload;
14489
+ if (!textSpans.has(p.id)) {
14490
+ textSpans.set(p.id, {
14491
+ deltas: [],
14492
+ providerMetadata: p.providerMetadata
14493
+ });
14494
+ } else {
14495
+ const existing = textSpans.get(p.id);
14496
+ if (p.providerMetadata) {
14497
+ existing.providerMetadata = p.providerMetadata;
14498
+ }
14499
+ }
14500
+ break;
14501
+ }
14502
+ case "text-delta": {
14503
+ const p = chunk.payload;
14504
+ let span = textSpans.get(p.id);
14505
+ if (!span) {
14506
+ span = { deltas: [], providerMetadata: p.providerMetadata };
14507
+ textSpans.set(p.id, span);
14508
+ }
14509
+ span.deltas.push(p.text);
14510
+ if (p.providerMetadata) {
14511
+ span.providerMetadata = p.providerMetadata;
14512
+ }
14513
+ break;
14514
+ }
14515
+ case "text-end": {
14516
+ const pEnd = chunk.payload;
14517
+ const span = textSpans.get(pEnd.id);
14518
+ if (span) {
14519
+ if (pEnd.providerMetadata) {
14520
+ span.providerMetadata = pEnd.providerMetadata;
14521
+ }
14522
+ const text = span.deltas.join("");
14523
+ if (text.length > 0) {
14524
+ parts.push({
14525
+ type: "text",
14526
+ text,
14527
+ ...span.providerMetadata ? { providerMetadata: span.providerMetadata } : {}
14528
+ });
14529
+ }
14530
+ textSpans.delete(pEnd.id);
14531
+ }
14532
+ break;
14533
+ }
14534
+ // ── Reasoning span ─────────────────────────────────────────
14535
+ case "reasoning-start": {
14536
+ const p = chunk.payload;
14537
+ const isRedacted = Object.values(p.providerMetadata || {}).some((v) => v?.redactedData);
14538
+ if (!reasoningSpans.has(p.id)) {
14539
+ reasoningSpans.set(p.id, {
14540
+ deltas: [],
14541
+ providerMetadata: p.providerMetadata,
14542
+ redacted: isRedacted
14543
+ });
14544
+ } else {
14545
+ const existing = reasoningSpans.get(p.id);
14546
+ if (p.providerMetadata) {
14547
+ existing.providerMetadata = p.providerMetadata;
14548
+ }
14549
+ if (isRedacted) {
14550
+ existing.redacted = true;
14551
+ }
14552
+ }
14553
+ break;
14554
+ }
14555
+ case "reasoning-delta": {
14556
+ const p = chunk.payload;
14557
+ let span = reasoningSpans.get(p.id);
14558
+ if (!span) {
14559
+ span = { deltas: [], providerMetadata: p.providerMetadata, redacted: false };
14560
+ reasoningSpans.set(p.id, span);
14561
+ }
14562
+ span.deltas.push(p.text);
14563
+ if (p.providerMetadata) {
14564
+ span.providerMetadata = p.providerMetadata;
14565
+ }
14566
+ break;
14567
+ }
14568
+ case "reasoning-end": {
14569
+ const p = chunk.payload;
14570
+ const span = reasoningSpans.get(p.id);
14571
+ if (span) {
14572
+ if (p.providerMetadata) {
14573
+ span.providerMetadata = p.providerMetadata;
14574
+ }
14575
+ if (span.redacted) {
14576
+ parts.push({
14577
+ type: "reasoning",
14578
+ reasoning: "",
14579
+ details: [{ type: "redacted", data: "" }],
14580
+ providerMetadata: span.providerMetadata
14581
+ });
14582
+ } else {
14583
+ parts.push({
14584
+ type: "reasoning",
14585
+ reasoning: "",
14586
+ details: [{ type: "text", text: span.deltas.join("") }],
14587
+ providerMetadata: span.providerMetadata
14588
+ });
14589
+ }
14590
+ reasoningSpans.delete(p.id);
14591
+ }
14592
+ break;
14593
+ }
14594
+ // Redacted reasoning can appear as a standalone chunk (not wrapped in start/end)
14595
+ case "redacted-reasoning": {
14596
+ const p = chunk.payload;
14597
+ parts.push({
14598
+ type: "reasoning",
14599
+ reasoning: "",
14600
+ details: [{ type: "redacted", data: "" }],
14601
+ providerMetadata: p.providerMetadata
14602
+ });
14603
+ break;
14604
+ }
14605
+ // ── Source ──────────────────────────────────────────────────
14606
+ case "source": {
14607
+ const p = chunk.payload;
14608
+ parts.push({
14609
+ type: "source",
14610
+ source: {
14611
+ sourceType: "url",
14612
+ id: p.id,
14613
+ url: p.url || "",
14614
+ title: p.title,
14615
+ providerMetadata: p.providerMetadata
14616
+ }
14617
+ });
14618
+ break;
14619
+ }
14620
+ // ── File ───────────────────────────────────────────────────
14621
+ case "file": {
14622
+ const p = chunk.payload;
14623
+ parts.push({
14624
+ type: "file",
14625
+ data: p.data,
14626
+ mimeType: p.mimeType,
14627
+ ...p.providerMetadata ? { providerMetadata: p.providerMetadata } : {}
14628
+ });
14629
+ break;
14630
+ }
14631
+ // ── Tool call ──────────────────────────────────────────────
14632
+ case "tool-call": {
14633
+ const p = chunk.payload;
14634
+ const toolDef = tools?.[p.toolName] || findProviderToolByName(tools, p.toolName);
14635
+ const providerExecuted = inferProviderExecuted(p.providerExecuted, toolDef);
14636
+ const result = toolResults.get(p.toolCallId);
14637
+ if (result) {
14638
+ const resultProviderExecuted = inferProviderExecuted(result.providerExecuted, toolDef);
14639
+ parts.push({
14640
+ type: "tool-invocation",
14641
+ toolInvocation: {
14642
+ state: "result",
14643
+ toolCallId: p.toolCallId,
14644
+ toolName: p.toolName,
14645
+ args: p.args,
14646
+ result: result.result
14647
+ },
14648
+ providerMetadata: result.providerMetadata ?? p.providerMetadata,
14649
+ providerExecuted: resultProviderExecuted
14650
+ });
14651
+ } else {
14652
+ parts.push({
14653
+ type: "tool-invocation",
14654
+ toolInvocation: {
14655
+ state: "call",
14656
+ toolCallId: p.toolCallId,
14657
+ toolName: p.toolName,
14658
+ args: p.args
14659
+ },
14660
+ providerMetadata: p.providerMetadata,
14661
+ providerExecuted
14662
+ });
14663
+ }
14664
+ break;
14665
+ }
14666
+ }
14667
+ }
14668
+ for (const [_id, span] of reasoningSpans) {
14669
+ if (span.redacted) {
14670
+ parts.push({
14671
+ type: "reasoning",
14672
+ reasoning: "",
14673
+ details: [{ type: "redacted", data: "" }],
14674
+ providerMetadata: span.providerMetadata
14675
+ });
14676
+ } else {
14677
+ const text = span.deltas.join("");
14678
+ parts.push({
14679
+ type: "reasoning",
14680
+ reasoning: "",
14681
+ details: [{ type: "text", text }],
14682
+ providerMetadata: span.providerMetadata
14683
+ });
14684
+ }
14685
+ }
14686
+ for (const [, span] of textSpans) {
14687
+ const text = span.deltas.join("");
14688
+ if (text.length > 0) {
14689
+ parts.push({
14690
+ type: "text",
14691
+ text,
14692
+ ...span.providerMetadata ? { providerMetadata: span.providerMetadata } : {}
14693
+ });
14694
+ }
14695
+ }
14696
+ const finalParts = [];
14697
+ for (let i = 0; i < parts.length; i++) {
14698
+ const part = parts[i];
14699
+ if (part.type === "text" && finalParts.length > 0 && finalParts[finalParts.length - 1]?.type === "tool-invocation") {
14700
+ finalParts.push({ type: "step-start" });
14701
+ }
14702
+ finalParts.push(part);
14703
+ }
14704
+ if (finalParts.length === 0) {
14705
+ return [];
14706
+ }
14707
+ const message = {
14708
+ id: messageId,
14709
+ role: "assistant",
14710
+ content: {
14711
+ format: 2,
14712
+ parts: finalParts,
14713
+ ...responseModelMetadata
14714
+ },
14715
+ createdAt: /* @__PURE__ */ new Date()
14716
+ };
14717
+ return [message];
14718
+ }
14719
+
14397
14720
  // src/loop/workflows/agentic-execution/llm-execution-step.ts
14398
14721
  function buildResponseModelMetadata(runState, model) {
14399
14722
  const metadata = {};
@@ -14406,39 +14729,12 @@ function buildResponseModelMetadata(runState, model) {
14406
14729
  }
14407
14730
  return Object.keys(metadata).length > 0 ? { metadata } : void 0;
14408
14731
  }
14409
- function flushReasoningBuffer({
14410
- buffer,
14411
- messageId,
14412
- messageList,
14413
- runState,
14414
- model
14415
- }) {
14416
- const message = {
14417
- id: messageId,
14418
- role: "assistant",
14419
- content: {
14420
- format: 2,
14421
- parts: [
14422
- {
14423
- type: "reasoning",
14424
- reasoning: "",
14425
- details: [{ type: "text", text: buffer.deltas.join("") }],
14426
- providerMetadata: buffer.providerMetadata
14427
- }
14428
- ],
14429
- ...buildResponseModelMetadata(runState, model)
14430
- },
14431
- createdAt: /* @__PURE__ */ new Date()
14432
- };
14433
- messageList.add(message, "response");
14434
- }
14435
14732
  async function processOutputStream({
14436
14733
  tools,
14437
14734
  messageId,
14438
14735
  messageList,
14439
14736
  outputStream,
14440
14737
  runState,
14441
- model,
14442
14738
  options,
14443
14739
  controller,
14444
14740
  responseFromModel,
@@ -14448,6 +14744,7 @@ async function processOutputStream({
14448
14744
  transportResolver
14449
14745
  }) {
14450
14746
  let transportSet = false;
14747
+ const collectedChunks = [];
14451
14748
  for await (const chunk of outputStream._getBaseStream()) {
14452
14749
  if (options?.abortSignal?.aborted) {
14453
14750
  break;
@@ -14466,60 +14763,7 @@ async function processOutputStream({
14466
14763
  controller.enqueue(chunk);
14467
14764
  continue;
14468
14765
  }
14469
- if (chunk.type !== "text-delta" && // not 100% sure about this being the right fix.
14470
- // basically for some llm providers they add response-metadata after each text-delta
14471
- // we then flush the chunks by calling messageList.add (a few lines down)
14472
- // this results in a bunch of weird separated text chunks on the message instead of combined chunks
14473
- // easiest solution here is to just not flush for response-metadata
14474
- // BUT does this cause other issues?
14475
- // Alternative solution: in message list allow combining text deltas together when the message source is "response" and the text parts are directly next to each other
14476
- // simple solution for now is to not flush text deltas on response-metadata
14477
- chunk.type !== "response-metadata" && // Don't flush on source chunks - OpenAI web search interleaves source citations
14478
- // with text-deltas, all sharing the same itemId. Flushing creates multiple parts
14479
- // with duplicate itemIds, causing "Duplicate item found" errors on the next request.
14480
- chunk.type !== "source" && runState.state.isStreaming) {
14481
- if (runState.state.textDeltas.length) {
14482
- const textStartPayload = chunk.payload;
14483
- const providerMetadata = textStartPayload.providerMetadata ?? runState.state.providerOptions;
14484
- const message = {
14485
- id: messageId,
14486
- role: "assistant",
14487
- content: {
14488
- format: 2,
14489
- parts: [
14490
- {
14491
- type: "text",
14492
- text: runState.state.textDeltas.join(""),
14493
- ...providerMetadata ? { providerMetadata } : {}
14494
- }
14495
- ],
14496
- ...buildResponseModelMetadata(runState, model)
14497
- },
14498
- createdAt: /* @__PURE__ */ new Date()
14499
- };
14500
- messageList.add(message, "response");
14501
- }
14502
- runState.setState({
14503
- isStreaming: false,
14504
- textDeltas: []
14505
- });
14506
- }
14507
- if (chunk.type !== "reasoning-start" && chunk.type !== "reasoning-delta" && chunk.type !== "reasoning-end" && chunk.type !== "redacted-reasoning" && chunk.type !== "reasoning-signature" && chunk.type !== "response-metadata" && chunk.type !== "text-start" && runState.state.isReasoning) {
14508
- for (const buffer of runState.state.reasoningBuffers.values()) {
14509
- flushReasoningBuffer({
14510
- buffer,
14511
- messageId,
14512
- messageList,
14513
- runState,
14514
- model
14515
- });
14516
- }
14517
- runState.setState({
14518
- isReasoning: false,
14519
- reasoningBuffers: /* @__PURE__ */ new Map(),
14520
- providerOptions: void 0
14521
- });
14522
- }
14766
+ collectedChunks.push({ type: chunk.type, payload: chunk.payload });
14523
14767
  switch (chunk.type) {
14524
14768
  case "response-metadata":
14525
14769
  runState.setState({
@@ -14531,32 +14775,6 @@ async function processOutputStream({
14531
14775
  }
14532
14776
  });
14533
14777
  break;
14534
- case "text-start": {
14535
- if (chunk.payload.providerMetadata) {
14536
- runState.setState({
14537
- providerOptions: chunk.payload.providerMetadata
14538
- });
14539
- }
14540
- safeEnqueue(controller, chunk);
14541
- break;
14542
- }
14543
- case "text-delta": {
14544
- const textDeltasFromState = runState.state.textDeltas;
14545
- textDeltasFromState.push(chunk.payload.text);
14546
- runState.setState({
14547
- textDeltas: textDeltasFromState,
14548
- isStreaming: true
14549
- });
14550
- safeEnqueue(controller, chunk);
14551
- break;
14552
- }
14553
- case "text-end": {
14554
- runState.setState({
14555
- providerOptions: void 0
14556
- });
14557
- safeEnqueue(controller, chunk);
14558
- break;
14559
- }
14560
14778
  case "tool-call-input-streaming-start": {
14561
14779
  const tool2 = tools?.[chunk.payload.toolName] || Object.values(tools || {})?.find((tool3) => `id` in tool3 && tool3.id === chunk.payload.toolName);
14562
14780
  if (tool2 && "onInputStart" in tool2) {
@@ -14590,145 +14808,6 @@ async function processOutputStream({
14590
14808
  safeEnqueue(controller, chunk);
14591
14809
  break;
14592
14810
  }
14593
- case "tool-call-input-streaming-end": {
14594
- safeEnqueue(controller, chunk);
14595
- break;
14596
- }
14597
- case "reasoning-start": {
14598
- const reasoningBuffers = new Map(runState.state.reasoningBuffers);
14599
- reasoningBuffers.set(chunk.payload.id, {
14600
- deltas: reasoningBuffers.get(chunk.payload.id)?.deltas ?? [],
14601
- providerMetadata: chunk.payload.providerMetadata ?? reasoningBuffers.get(chunk.payload.id)?.providerMetadata
14602
- });
14603
- runState.setState({
14604
- isReasoning: true,
14605
- reasoningBuffers,
14606
- providerOptions: chunk.payload.providerMetadata ?? runState.state.providerOptions
14607
- });
14608
- if (Object.values(chunk.payload.providerMetadata || {}).find((v) => v?.redactedData)) {
14609
- const message = {
14610
- id: messageId,
14611
- role: "assistant",
14612
- content: {
14613
- format: 2,
14614
- parts: [
14615
- {
14616
- type: "reasoning",
14617
- reasoning: "",
14618
- details: [{ type: "redacted", data: "" }],
14619
- providerMetadata: chunk.payload.providerMetadata ?? runState.state.providerOptions
14620
- }
14621
- ],
14622
- ...buildResponseModelMetadata(runState, model)
14623
- },
14624
- createdAt: /* @__PURE__ */ new Date()
14625
- };
14626
- messageList.add(message, "response");
14627
- safeEnqueue(controller, chunk);
14628
- break;
14629
- }
14630
- safeEnqueue(controller, chunk);
14631
- break;
14632
- }
14633
- case "reasoning-delta": {
14634
- const reasoningBuffers = new Map(runState.state.reasoningBuffers);
14635
- const existingBuffer = reasoningBuffers.get(chunk.payload.id);
14636
- const buffer = {
14637
- deltas: [...existingBuffer?.deltas ?? [], chunk.payload.text],
14638
- providerMetadata: chunk.payload.providerMetadata ?? existingBuffer?.providerMetadata
14639
- };
14640
- reasoningBuffers.set(chunk.payload.id, buffer);
14641
- runState.setState({
14642
- isReasoning: true,
14643
- reasoningBuffers,
14644
- providerOptions: chunk.payload.providerMetadata ?? runState.state.providerOptions
14645
- });
14646
- safeEnqueue(controller, chunk);
14647
- break;
14648
- }
14649
- case "reasoning-end": {
14650
- if (!runState.state.isReasoning) {
14651
- safeEnqueue(controller, chunk);
14652
- break;
14653
- }
14654
- const reasoningBuffers = new Map(runState.state.reasoningBuffers);
14655
- const buffer = reasoningBuffers.get(chunk.payload.id);
14656
- if (!buffer) {
14657
- safeEnqueue(controller, chunk);
14658
- break;
14659
- }
14660
- flushReasoningBuffer({
14661
- buffer: {
14662
- deltas: buffer.deltas,
14663
- providerMetadata: chunk.payload.providerMetadata ?? buffer.providerMetadata
14664
- },
14665
- messageId,
14666
- messageList,
14667
- runState,
14668
- model
14669
- });
14670
- reasoningBuffers.delete(chunk.payload.id);
14671
- const nextProviderOptions = Array.from(reasoningBuffers.values()).at(-1)?.providerMetadata;
14672
- runState.setState({
14673
- isReasoning: reasoningBuffers.size > 0,
14674
- reasoningBuffers,
14675
- providerOptions: nextProviderOptions
14676
- });
14677
- safeEnqueue(controller, chunk);
14678
- break;
14679
- }
14680
- case "file":
14681
- {
14682
- const message = {
14683
- id: messageId,
14684
- role: "assistant",
14685
- content: {
14686
- format: 2,
14687
- parts: [
14688
- {
14689
- type: "file",
14690
- // @ts-expect-error - data type mismatch, see TODO
14691
- data: chunk.payload.data,
14692
- // TODO: incorrect string type
14693
- mimeType: chunk.payload.mimeType,
14694
- ...chunk.payload.providerMetadata ? { providerMetadata: chunk.payload.providerMetadata } : {}
14695
- }
14696
- ],
14697
- ...buildResponseModelMetadata(runState, model)
14698
- },
14699
- createdAt: /* @__PURE__ */ new Date()
14700
- };
14701
- messageList.add(message, "response");
14702
- safeEnqueue(controller, chunk);
14703
- }
14704
- break;
14705
- case "source":
14706
- {
14707
- const message = {
14708
- id: messageId,
14709
- role: "assistant",
14710
- content: {
14711
- format: 2,
14712
- parts: [
14713
- {
14714
- type: "source",
14715
- source: {
14716
- sourceType: "url",
14717
- id: chunk.payload.id,
14718
- url: chunk.payload.url || "",
14719
- title: chunk.payload.title,
14720
- providerMetadata: chunk.payload.providerMetadata
14721
- }
14722
- }
14723
- ],
14724
- ...buildResponseModelMetadata(runState, model)
14725
- },
14726
- createdAt: /* @__PURE__ */ new Date()
14727
- };
14728
- messageList.add(message, "response");
14729
- safeEnqueue(controller, chunk);
14730
- }
14731
- break;
14732
14811
  case "finish":
14733
14812
  runState.setState({
14734
14813
  providerOptions: chunk.payload.metadata?.providerMetadata ?? chunk.payload.providerMetadata,
@@ -14762,8 +14841,6 @@ async function processOutputStream({
14762
14841
  deferredErrorChunk: chunk
14763
14842
  });
14764
14843
  break;
14765
- // Provider-executed tool results (e.g. web_search). Client tool results
14766
- // are handled by llm-mapping-step after execution.
14767
14844
  case "tool-result": {
14768
14845
  if (chunk.payload.result != null) {
14769
14846
  const resultToolDef = tools?.[chunk.payload.toolName] || findProviderToolByName(tools, chunk.payload.toolName);
@@ -14783,34 +14860,6 @@ async function processOutputStream({
14783
14860
  safeEnqueue(controller, chunk);
14784
14861
  break;
14785
14862
  }
14786
- case "tool-call": {
14787
- const toolDef = tools?.[chunk.payload.toolName] || findProviderToolByName(tools, chunk.payload.toolName);
14788
- const inferredProviderExecuted = inferProviderExecuted(chunk.payload.providerExecuted, toolDef);
14789
- const toolCallPart = {
14790
- type: "tool-invocation",
14791
- toolInvocation: {
14792
- state: "call",
14793
- toolCallId: chunk.payload.toolCallId,
14794
- toolName: chunk.payload.toolName,
14795
- args: chunk.payload.args
14796
- },
14797
- providerMetadata: chunk.payload.providerMetadata,
14798
- providerExecuted: inferredProviderExecuted
14799
- };
14800
- const message = {
14801
- id: messageId,
14802
- role: "assistant",
14803
- content: {
14804
- format: 2,
14805
- parts: [toolCallPart],
14806
- ...buildResponseModelMetadata(runState, model)
14807
- },
14808
- createdAt: /* @__PURE__ */ new Date()
14809
- };
14810
- messageList.add(message, "response");
14811
- safeEnqueue(controller, chunk);
14812
- break;
14813
- }
14814
14863
  default:
14815
14864
  safeEnqueue(controller, chunk);
14816
14865
  }
@@ -14833,6 +14882,7 @@ async function processOutputStream({
14833
14882
  break;
14834
14883
  }
14835
14884
  }
14885
+ return collectedChunks;
14836
14886
  }
14837
14887
  function executeStreamWithFallbackModels(models, logger, startIndex = 0) {
14838
14888
  return async (callback) => {
@@ -15264,19 +15314,18 @@ ${bgPrompt}`;
15264
15314
  }
15265
15315
  });
15266
15316
  let transportResolver;
15267
- if (currentStep.model instanceof chunkECT5553H_cjs.ModelRouterLanguageModel) {
15317
+ if (currentStep.model instanceof chunk34M2QMAZ_cjs.ModelRouterLanguageModel) {
15268
15318
  const routerModel = currentStep.model;
15269
15319
  transportResolver = () => routerModel._getStreamTransport();
15270
15320
  }
15271
15321
  try {
15272
- await processOutputStream({
15322
+ const collectedChunks = await processOutputStream({
15273
15323
  outputStream: outputStream2,
15274
15324
  includeRawChunks,
15275
15325
  tools: currentStep.tools,
15276
15326
  messageId: currentStep.messageId,
15277
15327
  messageList,
15278
15328
  runState: runState2,
15279
- model: currentStep.model,
15280
15329
  options,
15281
15330
  controller,
15282
15331
  responseFromModel: {
@@ -15288,6 +15337,26 @@ ${bgPrompt}`;
15288
15337
  transportRef: _internal?.transportRef,
15289
15338
  transportResolver
15290
15339
  });
15340
+ const builtMessages = buildMessagesFromChunks({
15341
+ chunks: collectedChunks,
15342
+ messageId: currentStep.messageId,
15343
+ responseModelMetadata: buildResponseModelMetadata(runState2, currentStep.model),
15344
+ tools: currentStep.tools
15345
+ });
15346
+ for (const msg of builtMessages) {
15347
+ messageList.add(msg, "response");
15348
+ }
15349
+ const bufferedObject = outputStream2._getImmediateObject();
15350
+ if (bufferedObject !== void 0) {
15351
+ const responseMessages = messageList.get.response.db();
15352
+ const lastAssistant = [...responseMessages].reverse().find((m) => m.role === "assistant");
15353
+ if (lastAssistant) {
15354
+ if (!lastAssistant.content.metadata) {
15355
+ lastAssistant.content.metadata = {};
15356
+ }
15357
+ lastAssistant.content.metadata.structuredOutput = bufferedObject;
15358
+ }
15359
+ }
15291
15360
  } catch (error) {
15292
15361
  const provider = model?.provider;
15293
15362
  const modelIdStr = model?.modelId;
@@ -20953,6 +21022,9 @@ function createMapResultsStep({
20953
21022
  if (capabilities.mastra) {
20954
21023
  structuredProcessor.__registerMastra(capabilities.mastra);
20955
21024
  }
21025
+ if (options.structuredOutput.useAgent) {
21026
+ structuredProcessor.setAgent(capabilities.agent);
21027
+ }
20956
21028
  effectiveOutputProcessors = effectiveOutputProcessors ? [...effectiveOutputProcessors, structuredProcessor] : [structuredProcessor];
20957
21029
  }
20958
21030
  const effectiveInputProcessors = capabilities.inputProcessors ? typeof capabilities.inputProcessors === "function" ? await capabilities.inputProcessors({
@@ -22632,7 +22704,7 @@ ${errorMessages}`,
22632
22704
  */
22633
22705
  async resolveModelConfig(modelConfig, requestContext) {
22634
22706
  try {
22635
- return await chunkECT5553H_cjs.resolveModelConfig(modelConfig, requestContext, this.#mastra);
22707
+ return await chunk34M2QMAZ_cjs.resolveModelConfig(modelConfig, requestContext, this.#mastra);
22636
22708
  } catch (error) {
22637
22709
  const mastraError = new chunk4U7ZLI36_cjs.MastraError({
22638
22710
  id: "AGENT_GET_MODEL_MISSING_MODEL_INSTANCE",
@@ -25002,7 +25074,7 @@ ${effectiveInstructions}`;
25002
25074
  const resolvedModel = await this.resolveModelConfig(selection, requestContext);
25003
25075
  this.assertSupportsPreparedModels(resolvedModel);
25004
25076
  let headers;
25005
- if (resolvedModel instanceof chunkECT5553H_cjs.ModelRouterLanguageModel) {
25077
+ if (resolvedModel instanceof chunk34M2QMAZ_cjs.ModelRouterLanguageModel) {
25006
25078
  headers = resolvedModel.config?.headers;
25007
25079
  }
25008
25080
  return [
@@ -25034,7 +25106,7 @@ ${effectiveInstructions}`;
25034
25106
  throw mastraError;
25035
25107
  }
25036
25108
  let routerHeaders;
25037
- if (model instanceof chunkECT5553H_cjs.ModelRouterLanguageModel) {
25109
+ if (model instanceof chunk34M2QMAZ_cjs.ModelRouterLanguageModel) {
25038
25110
  routerHeaders = model.config?.headers;
25039
25111
  }
25040
25112
  const isEnabled = modelConfig.enabled ?? true;
@@ -25208,6 +25280,7 @@ ${effectiveInstructions}`;
25208
25280
  memory
25209
25281
  });
25210
25282
  const capabilities = {
25283
+ agent: this,
25211
25284
  agentName: this.name,
25212
25285
  logger: this.logger,
25213
25286
  getMemory: this.getMemory.bind(this),
@@ -29965,7 +30038,7 @@ https://mastra.ai/en/docs/memory/semantic-recall`
29965
30038
  );
29966
30039
  }
29967
30040
  if (typeof config.embedder === "string") {
29968
- this.embedder = new chunkECT5553H_cjs.ModelRouterEmbeddingModel(config.embedder);
30041
+ this.embedder = new chunk34M2QMAZ_cjs.ModelRouterEmbeddingModel(config.embedder);
29969
30042
  } else {
29970
30043
  this.embedder = config.embedder;
29971
30044
  }
@@ -29978,7 +30051,7 @@ https://mastra.ai/en/docs/memory/semantic-recall`
29978
30051
  }
29979
30052
  if (config.embedder) {
29980
30053
  if (typeof config.embedder === "string") {
29981
- this.embedder = new chunkECT5553H_cjs.ModelRouterEmbeddingModel(config.embedder);
30054
+ this.embedder = new chunk34M2QMAZ_cjs.ModelRouterEmbeddingModel(config.embedder);
29982
30055
  } else {
29983
30056
  this.embedder = config.embedder;
29984
30057
  }
@@ -30018,7 +30091,7 @@ https://mastra.ai/en/docs/memory/overview`
30018
30091
  }
30019
30092
  setEmbedder(embedder, embedderOptions) {
30020
30093
  if (typeof embedder === "string") {
30021
- this.embedder = new chunkECT5553H_cjs.ModelRouterEmbeddingModel(embedder);
30094
+ this.embedder = new chunk34M2QMAZ_cjs.ModelRouterEmbeddingModel(embedder);
30022
30095
  } else {
30023
30096
  this.embedder = embedder;
30024
30097
  }
@@ -30802,5 +30875,5 @@ exports.validateStepRequestContext = validateStepRequestContext;
30802
30875
  exports.validateStepResumeData = validateStepResumeData;
30803
30876
  exports.validateStepStateData = validateStepStateData;
30804
30877
  exports.validateStepSuspendData = validateStepSuspendData;
30805
- //# sourceMappingURL=chunk-RSFZN7OV.cjs.map
30806
- //# sourceMappingURL=chunk-RSFZN7OV.cjs.map
30878
+ //# sourceMappingURL=chunk-2NQ2TF5F.cjs.map
30879
+ //# sourceMappingURL=chunk-2NQ2TF5F.cjs.map