@mastra/core 0.0.0-workflow-timeout-issue-20260213181535 → 0.0.0-workflow-timeout-issue-20260219210834

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 (57) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/agent/index.cjs +8 -8
  3. package/dist/agent/index.js +1 -1
  4. package/dist/{chunk-V2FJRH7U.js → chunk-2QDB7GXJ.js} +3 -3
  5. package/dist/{chunk-V2FJRH7U.js.map → chunk-2QDB7GXJ.js.map} +1 -1
  6. package/dist/{chunk-OMGB7N7Y.cjs → chunk-BXLF5HPE.cjs} +5 -5
  7. package/dist/{chunk-OMGB7N7Y.cjs.map → chunk-BXLF5HPE.cjs.map} +1 -1
  8. package/dist/{chunk-TTP76PA3.cjs → chunk-DIQVUWPT.cjs} +30 -11
  9. package/dist/chunk-DIQVUWPT.cjs.map +1 -0
  10. package/dist/{chunk-CI4XXD5E.cjs → chunk-EMOWFV2V.cjs} +65 -52
  11. package/dist/chunk-EMOWFV2V.cjs.map +1 -0
  12. package/dist/{chunk-CWNPUEE6.js → chunk-LND76WJK.js} +3 -3
  13. package/dist/{chunk-CWNPUEE6.js.map → chunk-LND76WJK.js.map} +1 -1
  14. package/dist/{chunk-VLVV54TZ.js → chunk-P3RWIP3X.js} +22 -9
  15. package/dist/chunk-P3RWIP3X.js.map +1 -0
  16. package/dist/{chunk-YIC2XYUG.js → chunk-QIWLA3MN.js} +6 -6
  17. package/dist/{chunk-YIC2XYUG.js.map → chunk-QIWLA3MN.js.map} +1 -1
  18. package/dist/{chunk-WBSSVRGQ.cjs → chunk-TC64GPEC.cjs} +5 -5
  19. package/dist/{chunk-WBSSVRGQ.cjs.map → chunk-TC64GPEC.cjs.map} +1 -1
  20. package/dist/{chunk-LDU7RTP5.cjs → chunk-XF5M2IIX.cjs} +13 -13
  21. package/dist/{chunk-LDU7RTP5.cjs.map → chunk-XF5M2IIX.cjs.map} +1 -1
  22. package/dist/{chunk-WISLP5DM.js → chunk-YEADOOTE.js} +30 -11
  23. package/dist/chunk-YEADOOTE.js.map +1 -0
  24. package/dist/docs/SKILL.md +1 -1
  25. package/dist/docs/assets/SOURCE_MAP.json +148 -148
  26. package/dist/evals/index.cjs +5 -5
  27. package/dist/evals/index.js +2 -2
  28. package/dist/evals/scoreTraces/index.cjs +3 -3
  29. package/dist/evals/scoreTraces/index.js +1 -1
  30. package/dist/index.cjs +2 -2
  31. package/dist/index.js +1 -1
  32. package/dist/loop/index.cjs +12 -12
  33. package/dist/loop/index.js +1 -1
  34. package/dist/mastra/index.cjs +2 -2
  35. package/dist/mastra/index.js +1 -1
  36. package/dist/memory/index.cjs +14 -14
  37. package/dist/memory/index.js +1 -1
  38. package/dist/processors/index.cjs +41 -41
  39. package/dist/processors/index.js +1 -1
  40. package/dist/relevance/index.cjs +3 -3
  41. package/dist/relevance/index.js +1 -1
  42. package/dist/stream/RunOutput.d.ts.map +1 -1
  43. package/dist/stream/index.cjs +8 -8
  44. package/dist/stream/index.js +1 -1
  45. package/dist/tool-loop-agent/index.cjs +4 -4
  46. package/dist/tool-loop-agent/index.js +1 -1
  47. package/dist/workflows/evented/index.cjs +10 -10
  48. package/dist/workflows/evented/index.js +1 -1
  49. package/dist/workflows/evented/workflow-event-processor/index.d.ts +5 -1
  50. package/dist/workflows/evented/workflow-event-processor/index.d.ts.map +1 -1
  51. package/dist/workflows/index.cjs +25 -25
  52. package/dist/workflows/index.js +1 -1
  53. package/package.json +7 -7
  54. package/dist/chunk-CI4XXD5E.cjs.map +0 -1
  55. package/dist/chunk-TTP76PA3.cjs.map +0 -1
  56. package/dist/chunk-VLVV54TZ.js.map +0 -1
  57. package/dist/chunk-WISLP5DM.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @mastra/core
2
2
 
3
- ## 0.0.0-workflow-timeout-issue-20260213181535
3
+ ## 0.0.0-workflow-timeout-issue-20260219210834
4
4
 
5
5
  ### Minor Changes
6
6
 
@@ -1,37 +1,37 @@
1
1
  'use strict';
2
2
 
3
- var chunkTTP76PA3_cjs = require('../chunk-TTP76PA3.cjs');
3
+ var chunkDIQVUWPT_cjs = require('../chunk-DIQVUWPT.cjs');
4
4
  var chunkBOGLYRGU_cjs = require('../chunk-BOGLYRGU.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "Agent", {
9
9
  enumerable: true,
10
- get: function () { return chunkTTP76PA3_cjs.Agent; }
10
+ get: function () { return chunkDIQVUWPT_cjs.Agent; }
11
11
  });
12
12
  Object.defineProperty(exports, "TripWire", {
13
13
  enumerable: true,
14
- get: function () { return chunkTTP76PA3_cjs.TripWire; }
14
+ get: function () { return chunkDIQVUWPT_cjs.TripWire; }
15
15
  });
16
16
  Object.defineProperty(exports, "isSupportedLanguageModel", {
17
17
  enumerable: true,
18
- get: function () { return chunkTTP76PA3_cjs.isSupportedLanguageModel; }
18
+ get: function () { return chunkDIQVUWPT_cjs.isSupportedLanguageModel; }
19
19
  });
20
20
  Object.defineProperty(exports, "resolveThreadIdFromArgs", {
21
21
  enumerable: true,
22
- get: function () { return chunkTTP76PA3_cjs.resolveThreadIdFromArgs; }
22
+ get: function () { return chunkDIQVUWPT_cjs.resolveThreadIdFromArgs; }
23
23
  });
24
24
  Object.defineProperty(exports, "supportedLanguageModelSpecifications", {
25
25
  enumerable: true,
26
- get: function () { return chunkTTP76PA3_cjs.supportedLanguageModelSpecifications; }
26
+ get: function () { return chunkDIQVUWPT_cjs.supportedLanguageModelSpecifications; }
27
27
  });
28
28
  Object.defineProperty(exports, "tryGenerateWithJsonFallback", {
29
29
  enumerable: true,
30
- get: function () { return chunkTTP76PA3_cjs.tryGenerateWithJsonFallback; }
30
+ get: function () { return chunkDIQVUWPT_cjs.tryGenerateWithJsonFallback; }
31
31
  });
32
32
  Object.defineProperty(exports, "tryStreamWithJsonFallback", {
33
33
  enumerable: true,
34
- get: function () { return chunkTTP76PA3_cjs.tryStreamWithJsonFallback; }
34
+ get: function () { return chunkDIQVUWPT_cjs.tryStreamWithJsonFallback; }
35
35
  });
36
36
  Object.defineProperty(exports, "MessageList", {
37
37
  enumerable: true,
@@ -1,4 +1,4 @@
1
- export { Agent, TripWire, isSupportedLanguageModel, resolveThreadIdFromArgs, supportedLanguageModelSpecifications, tryGenerateWithJsonFallback, tryStreamWithJsonFallback } from '../chunk-WISLP5DM.js';
1
+ export { Agent, TripWire, isSupportedLanguageModel, resolveThreadIdFromArgs, supportedLanguageModelSpecifications, tryGenerateWithJsonFallback, tryStreamWithJsonFallback } from '../chunk-YEADOOTE.js';
2
2
  export { MessageList, TypeDetector, aiV5ModelMessageToV2PromptMessage, convertMessages } from '../chunk-YGFUGL7P.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
1
  import { ToolLoopAgent } from './chunk-V2MLGA7T.js';
2
- import { Agent, isSupportedLanguageModel } from './chunk-WISLP5DM.js';
2
+ import { Agent, isSupportedLanguageModel } from './chunk-YEADOOTE.js';
3
3
  import { generateId } from './chunk-CPLRD2VP.js';
4
4
  import { resolveModelConfig } from './chunk-CFC6HODE.js';
5
5
 
@@ -255,5 +255,5 @@ function toolLoopAgentToMastraAgent(agent, options) {
255
255
  }
256
256
 
257
257
  export { getSettings, isToolLoopAgentLike, toolLoopAgentToMastraAgent };
258
- //# sourceMappingURL=chunk-V2FJRH7U.js.map
259
- //# sourceMappingURL=chunk-V2FJRH7U.js.map
258
+ //# sourceMappingURL=chunk-2QDB7GXJ.js.map
259
+ //# sourceMappingURL=chunk-2QDB7GXJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tool-loop-agent/utils.ts","../src/tool-loop-agent/tool-loop-processor.ts","../src/tool-loop-agent/index.ts"],"names":[],"mappings":"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","file":"chunk-V2FJRH7U.js","sourcesContent":["import { ToolLoopAgent } from '@internal/ai-v6';\nimport type { ToolLoopAgentSettings } from '@internal/ai-v6';\n\n/**\n * Shape of a ToolLoopAgent-like object for runtime extraction.\n * We use this looser type because TypeScript's structural typing doesn't work\n * well with private properties across different package declarations.\n */\nexport interface ToolLoopAgentLike {\n readonly id?: string;\n readonly version?: string;\n // The settings property is private in ToolLoopAgent but accessible at runtime\n // We don't declare it here since we access it via type casting\n}\n\nexport function isToolLoopAgentLike(obj: any): obj is ToolLoopAgentLike {\n if (!obj) return false;\n if (obj instanceof ToolLoopAgent) return true;\n return (\n 'version' in obj &&\n typeof obj.version === 'string' &&\n (obj.version === 'agent-v1' || obj.version.startsWith('agent-v'))\n );\n}\n\n/**\n * Extracts the settings from a ToolLoopAgent instance.\n * ToolLoopAgent.settings is private in TypeScript but accessible at runtime.\n */\nexport function getSettings(agent: ToolLoopAgentLike): ToolLoopAgentSettings<any, any, any> {\n const settings = (agent as unknown as { settings: ToolLoopAgentSettings<any, any, any> }).settings;\n if (!settings) {\n throw new Error('Could not extract settings from ToolLoopAgent. The agent may be from an incompatible version.');\n }\n return settings;\n}\n","import type {\n ToolLoopAgent,\n AgentCallParameters,\n ModelMessage,\n StepResult,\n ToolLoopAgentSettings,\n} from '@internal/ai-v6';\nimport { isSupportedLanguageModel } from '../agent';\nimport type { AgentExecutionOptions, AgentInstructions } from '../agent';\nimport { resolveModelConfig } from '../llm/model/resolve-model';\nimport type { MastraLanguageModel } from '../llm/model/shared.types';\nimport type { ProcessInputStepArgs, ProcessInputStepResult, Processor } from '../processors';\nimport { getSettings as getToolLoopAgentSettings } from './utils';\nimport type { ToolLoopAgentLike } from './utils';\n\ntype PrepareCallInput = AgentCallParameters<never> &\n Pick<\n ToolLoopAgentSettings<never, any, any>,\n | 'model'\n | 'tools'\n | 'maxOutputTokens'\n | 'temperature'\n | 'topP'\n | 'topK'\n | 'presencePenalty'\n | 'frequencyPenalty'\n | 'stopSequences'\n | 'seed'\n | 'headers'\n | 'instructions'\n | 'stopWhen'\n | 'experimental_telemetry'\n | 'activeTools'\n | 'providerOptions'\n | 'experimental_context'\n | 'experimental_download'\n >;\n\nexport class ToolLoopAgentProcessor implements Processor<'tool-loop-agent-processor'> {\n readonly id = 'tool-loop-agent-processor';\n readonly name = 'ToolLoop to Mastra Agent Processor';\n\n private agent: ToolLoopAgentLike;\n private settings: ToolLoopAgentSettings<any, any, any>;\n private prepareCallResult?: Awaited<ReturnType<NonNullable<ToolLoopAgentSettings<any, any, any>['prepareCall']>>>;\n\n constructor(agent: ToolLoopAgentLike) {\n this.agent = agent;\n this.settings = getToolLoopAgentSettings(agent);\n }\n\n public getAgentConfig() {\n const tools = 'tools' in this.agent ? (this.agent as ToolLoopAgent).tools : undefined;\n\n // Build default options from ToolLoopAgent config params\n const defaultOptions: Omit<AgentExecutionOptions<unknown>, 'abortSignal'> = {};\n\n // AgentExecutionOptions\n if (this.settings.toolChoice) {\n defaultOptions.toolChoice = this.settings.toolChoice;\n }\n if (this.settings.providerOptions) {\n defaultOptions.providerOptions = this.settings.providerOptions;\n }\n // AgentExecutionOptions[\"modelSettings\"]\n if (this.settings.temperature !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n temperature: this.settings.temperature,\n };\n }\n if (this.settings.topP !== undefined) {\n defaultOptions.modelSettings = { ...(defaultOptions.modelSettings ?? {}), topP: this.settings.topP };\n }\n if (this.settings.topK !== undefined) {\n defaultOptions.modelSettings = { ...(defaultOptions.modelSettings ?? {}), topK: this.settings.topK };\n }\n if (this.settings.seed !== undefined) {\n defaultOptions.modelSettings = { ...(defaultOptions.modelSettings ?? {}), seed: this.settings.seed };\n }\n if (this.settings.maxOutputTokens !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n maxOutputTokens: this.settings.maxOutputTokens,\n };\n }\n if (this.settings.presencePenalty !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n presencePenalty: this.settings.presencePenalty,\n };\n }\n if (this.settings.frequencyPenalty !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n frequencyPenalty: this.settings.frequencyPenalty,\n };\n }\n if (this.settings.stopSequences !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n stopSequences: this.settings.stopSequences,\n };\n }\n if (this.settings.stopWhen) {\n // TODO: The callback signatures differ (Types of parameters stepResult and event are incompatible)\n defaultOptions.stopWhen = this.settings.stopWhen as any;\n }\n if (this.settings.onStepFinish) {\n // TODO: The callback signatures differ (Types of parameters stepResult and event are incompatible)\n defaultOptions.onStepFinish = this.settings.onStepFinish as any;\n }\n if (this.settings.onFinish) {\n // TODO: The callback signatures differ (Types of parameters 'event' and 'event' are incompatible)\n defaultOptions.onFinish = this.settings.onFinish as any;\n }\n\n return {\n id: this.settings.id,\n name: this.settings.id,\n instructions: (this.settings.instructions as AgentInstructions) ?? '',\n model: this.settings.model,\n tools,\n maxRetries: this.settings.maxRetries,\n defaultOptions: Object.keys(defaultOptions).length > 0 ? defaultOptions : undefined,\n };\n }\n\n /**\n * Maps prepareCall or prepareStep result to ProcessInputStepResult.\n * Both hooks return similar structures that can override model, tools, activeTools, etc.\n */\n private mapToProcessInputStepResult(\n result: Awaited<ReturnType<NonNullable<ToolLoopAgentSettings<any, any, any>['prepareCall']>>> | undefined,\n ): ProcessInputStepResult {\n if (!result) {\n return {};\n }\n\n const stepResult: ProcessInputStepResult = {};\n\n // Map model (both prepareCall and prepareStep can return this)\n if (result.model) {\n stepResult.model = result.model;\n }\n\n // Map tools (prepareCall can return this)\n if ('tools' in result && result.tools) {\n stepResult.tools = result.tools as Record<string, unknown>;\n }\n\n // Map toolChoice (prepareStep can return this)\n if ('toolChoice' in result && result.toolChoice !== undefined) {\n stepResult.toolChoice = result.toolChoice as ProcessInputStepResult['toolChoice'];\n }\n\n // Map activeTools (both can return this)\n if (result.activeTools) {\n stepResult.activeTools = result.activeTools as string[];\n }\n\n // Map providerOptions (prepareCall can return this)\n if ('providerOptions' in result && result.providerOptions) {\n stepResult.providerOptions = result.providerOptions;\n }\n\n // Map model settings (prepareCall can return individual settings)\n const modelSettings: ProcessInputStepResult['modelSettings'] = {};\n if ('temperature' in result && result.temperature !== undefined) {\n modelSettings.temperature = result.temperature;\n }\n if ('topP' in result && result.topP !== undefined) {\n modelSettings.topP = result.topP;\n }\n if ('topK' in result && result.topK !== undefined) {\n modelSettings.topK = result.topK;\n }\n if ('maxOutputTokens' in result && result.maxOutputTokens !== undefined) {\n modelSettings.maxOutputTokens = result.maxOutputTokens;\n }\n if ('presencePenalty' in result && result.presencePenalty !== undefined) {\n modelSettings.presencePenalty = result.presencePenalty;\n }\n if ('frequencyPenalty' in result && result.frequencyPenalty !== undefined) {\n modelSettings.frequencyPenalty = result.frequencyPenalty;\n }\n if ('stopSequences' in result && result.stopSequences !== undefined) {\n modelSettings.stopSequences = result.stopSequences;\n }\n if ('seed' in result && result.seed !== undefined) {\n modelSettings.seed = result.seed;\n }\n\n if (Object.keys(modelSettings).length > 0) {\n stepResult.modelSettings = modelSettings;\n }\n\n // Map system/instructions to systemMessages\n // prepareCall returns 'instructions', prepareStep returns 'system'\n const systemContent =\n 'instructions' in result ? result.instructions : 'system' in result ? result.system : undefined;\n if (systemContent) {\n // Convert to CoreMessageV4 format\n if (typeof systemContent === 'string') {\n stepResult.systemMessages = [{ role: 'system', content: systemContent }];\n } else if (Array.isArray(systemContent)) {\n stepResult.systemMessages = systemContent.map(msg =>\n typeof msg === 'string' ? { role: 'system' as const, content: msg } : msg,\n );\n } else if (typeof systemContent === 'object' && 'role' in systemContent && 'content' in systemContent) {\n stepResult.systemMessages = [systemContent as { role: 'system'; content: string }];\n }\n }\n\n // Map messages if prepareStep returns them\n // Convert AI SDK ModelMessage[] to MastraDBMessage[]\n if ('messages' in result && result.messages && Array.isArray(result.messages)) {\n // AI SDK v6 ModelMessage is compatible with MessageListInput at runtime\n // stepResult.messages = convertMessages(result.messages as any).to('Mastra.V2');\n stepResult.messages = result.messages as any;\n }\n\n return stepResult;\n }\n\n private async handlePrepareCall(args: ProcessInputStepArgs) {\n if (this.settings.prepareCall) {\n const { model, messages, activeTools, providerOptions, modelSettings, tools } = args;\n // TODO: This should probably happen in processInput, currently calling in processInputStep if stepNumber === 0\n\n // Build the prepareCall input object\n // AI SDK prepareCall expects: AgentCallParameters & Pick<ToolLoopAgentSettings, ...settings>\n const prepareCallInput: PrepareCallInput = {\n // TODO: prepareCall expects messages in AI SDK format, we have them in Mastra format\n messages: messages as unknown as any,\n model,\n tools,\n instructions: this.settings.instructions,\n stopWhen: this.settings.stopWhen,\n activeTools,\n providerOptions,\n\n // Model settings\n temperature: modelSettings?.temperature,\n topP: modelSettings?.topP,\n topK: modelSettings?.topK,\n maxOutputTokens: modelSettings?.maxOutputTokens,\n presencePenalty: modelSettings?.presencePenalty,\n frequencyPenalty: modelSettings?.frequencyPenalty,\n stopSequences: modelSettings?.stopSequences,\n seed: modelSettings?.seed,\n\n // Experimental options\n // experimental_telemetry: this.settings.experimental_telemetry,\n // experimental_context: this.settings.experimental_context,\n // experimental_download: this.settings.experimental_download,\n };\n\n // Call prepareCall and apply any returned overrides\n const prepareCallResult = await this.settings.prepareCall(prepareCallInput as any); // TODO: types\n this.prepareCallResult = prepareCallResult;\n }\n }\n\n private async handlePrepareStep(args: ProcessInputStepArgs, currentResult: ProcessInputStepResult) {\n if (this.settings.prepareStep) {\n const { messages, steps, stepNumber } = args;\n\n let model = args.model;\n if (currentResult.model) {\n const resolvedModel = await resolveModelConfig(currentResult.model);\n if (!isSupportedLanguageModel(resolvedModel)) {\n throw new Error('prepareStep returned an unsupported model version');\n }\n model = resolvedModel;\n }\n\n // Use the model from currentResult if prepareCall overrode it, otherwise use args.model\n\n // Note: We pass messages and steps in Mastra format rather than converting to AI SDK format.\n // This is intentional - most prepareStep callbacks only return overrides and don't inspect\n // the message content. The type casts handle the format difference at runtime.\n const prepareStepInputArgs: {\n /**\n * The steps that have been executed so far.\n */\n steps: Array<StepResult<NoInfer<any>>>;\n /**\n * The number of the step that is being executed.\n */\n stepNumber: number;\n /**\n * The model instance that is being used for this step.\n */\n model: MastraLanguageModel;\n /**\n * The messages that will be sent to the model for the current step.\n * Note: These are in Mastra format (MastraDBMessage[]), not AI SDK ModelMessage format.\n */\n messages: Array<ModelMessage>;\n /**\n * The context passed via the experimental_context setting (experimental).\n */\n experimental_context: unknown;\n } = {\n model,\n // Messages are in Mastra format (MastraDBMessage[])\n messages: messages as any,\n // Steps may have minor type differences in usage properties (inputTokenDetails/outputTokenDetails)\n steps: steps as any,\n stepNumber,\n experimental_context: undefined,\n };\n\n const prepareStepResult = await this.settings.prepareStep(prepareStepInputArgs);\n return prepareStepResult;\n }\n }\n\n async processInputStep(args: ProcessInputStepArgs): Promise<ProcessInputStepResult | undefined | void> {\n const { stepNumber } = args;\n\n if (stepNumber === 0 && this.settings.prepareCall) {\n await this.handlePrepareCall(args);\n }\n\n let result: ProcessInputStepResult = {};\n\n // Apply prepareCall result (only on step 0, already called above)\n if (this.prepareCallResult) {\n const mappedResult = this.mapToProcessInputStepResult(this.prepareCallResult);\n if (Object.keys(mappedResult).length > 0) {\n result = { ...result, ...mappedResult };\n }\n }\n\n // Apply prepareStep result (called on every step)\n // Pass the current result so prepareStep sees any overrides from prepareCall\n if (this.settings.prepareStep) {\n const prepareStepResult = await this.handlePrepareStep(args, result);\n if (prepareStepResult) {\n const mappedResult = this.mapToProcessInputStepResult(prepareStepResult as any);\n // prepareStep overrides prepareCall for this step\n result = { ...result, ...mappedResult };\n }\n }\n\n return result;\n }\n}\n","import { generateId } from '@internal/ai-sdk-v5';\nimport { Agent } from '../agent';\nimport { ToolLoopAgentProcessor } from './tool-loop-processor';\nimport type { ToolLoopAgentLike } from './utils';\nexport { type ToolLoopAgentLike, isToolLoopAgentLike, getSettings } from './utils';\n\n/**\n * Converts an AI SDK v6 ToolLoopAgent instance into a Mastra Agent.\n *\n * This enables users to create a ToolLoopAgent using AI SDK's API\n * while gaining access to Mastra features like memory, processors, scorers, and observability.\n *\n * @example\n * ```typescript\n * import { ToolLoopAgent, tool } from 'ai';\n * import { openai } from '@ai-sdk/openai';\n * import { toolLoopAgentToMastraAgent } from '@mastra/core/tool-loop-agent';\n *\n * const toolLoopAgent = new ToolLoopAgent({\n * id: 'weather-agent',\n * model: openai('gpt-4o'),\n * instructions: 'You are a helpful weather assistant.',\n * tools: { weather: weatherTool },\n * temperature: 0.7,\n * });\n *\n * const mastraAgent = toolLoopAgentToMastraAgent(toolLoopAgent);\n *\n * const result = await mastraAgent.generate({ prompt: 'What is the weather in NYC?' });\n * ```\n *\n * @param agent - The ToolLoopAgent instance\n * @param options - Optional name fallback since Mastra Agent requires id/name but ToolLoopAgent doesn't\n * @returns A Mastra Agent instance\n */\nexport function toolLoopAgentToMastraAgent(agent: ToolLoopAgentLike, options?: { fallbackName?: string }) {\n const processor = new ToolLoopAgentProcessor(agent);\n const agentConfig = processor.getAgentConfig();\n const id = agentConfig.id || options?.fallbackName || `tool-loop-agent-${generateId()}`;\n\n return new Agent({\n ...agentConfig,\n id,\n name: agentConfig.name || id,\n inputProcessors: [processor],\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/tool-loop-agent/utils.ts","../src/tool-loop-agent/tool-loop-processor.ts","../src/tool-loop-agent/index.ts"],"names":[],"mappings":"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","file":"chunk-2QDB7GXJ.js","sourcesContent":["import { ToolLoopAgent } from '@internal/ai-v6';\nimport type { ToolLoopAgentSettings } from '@internal/ai-v6';\n\n/**\n * Shape of a ToolLoopAgent-like object for runtime extraction.\n * We use this looser type because TypeScript's structural typing doesn't work\n * well with private properties across different package declarations.\n */\nexport interface ToolLoopAgentLike {\n readonly id?: string;\n readonly version?: string;\n // The settings property is private in ToolLoopAgent but accessible at runtime\n // We don't declare it here since we access it via type casting\n}\n\nexport function isToolLoopAgentLike(obj: any): obj is ToolLoopAgentLike {\n if (!obj) return false;\n if (obj instanceof ToolLoopAgent) return true;\n return (\n 'version' in obj &&\n typeof obj.version === 'string' &&\n (obj.version === 'agent-v1' || obj.version.startsWith('agent-v'))\n );\n}\n\n/**\n * Extracts the settings from a ToolLoopAgent instance.\n * ToolLoopAgent.settings is private in TypeScript but accessible at runtime.\n */\nexport function getSettings(agent: ToolLoopAgentLike): ToolLoopAgentSettings<any, any, any> {\n const settings = (agent as unknown as { settings: ToolLoopAgentSettings<any, any, any> }).settings;\n if (!settings) {\n throw new Error('Could not extract settings from ToolLoopAgent. The agent may be from an incompatible version.');\n }\n return settings;\n}\n","import type {\n ToolLoopAgent,\n AgentCallParameters,\n ModelMessage,\n StepResult,\n ToolLoopAgentSettings,\n} from '@internal/ai-v6';\nimport { isSupportedLanguageModel } from '../agent';\nimport type { AgentExecutionOptions, AgentInstructions } from '../agent';\nimport { resolveModelConfig } from '../llm/model/resolve-model';\nimport type { MastraLanguageModel } from '../llm/model/shared.types';\nimport type { ProcessInputStepArgs, ProcessInputStepResult, Processor } from '../processors';\nimport { getSettings as getToolLoopAgentSettings } from './utils';\nimport type { ToolLoopAgentLike } from './utils';\n\ntype PrepareCallInput = AgentCallParameters<never> &\n Pick<\n ToolLoopAgentSettings<never, any, any>,\n | 'model'\n | 'tools'\n | 'maxOutputTokens'\n | 'temperature'\n | 'topP'\n | 'topK'\n | 'presencePenalty'\n | 'frequencyPenalty'\n | 'stopSequences'\n | 'seed'\n | 'headers'\n | 'instructions'\n | 'stopWhen'\n | 'experimental_telemetry'\n | 'activeTools'\n | 'providerOptions'\n | 'experimental_context'\n | 'experimental_download'\n >;\n\nexport class ToolLoopAgentProcessor implements Processor<'tool-loop-agent-processor'> {\n readonly id = 'tool-loop-agent-processor';\n readonly name = 'ToolLoop to Mastra Agent Processor';\n\n private agent: ToolLoopAgentLike;\n private settings: ToolLoopAgentSettings<any, any, any>;\n private prepareCallResult?: Awaited<ReturnType<NonNullable<ToolLoopAgentSettings<any, any, any>['prepareCall']>>>;\n\n constructor(agent: ToolLoopAgentLike) {\n this.agent = agent;\n this.settings = getToolLoopAgentSettings(agent);\n }\n\n public getAgentConfig() {\n const tools = 'tools' in this.agent ? (this.agent as ToolLoopAgent).tools : undefined;\n\n // Build default options from ToolLoopAgent config params\n const defaultOptions: Omit<AgentExecutionOptions<unknown>, 'abortSignal'> = {};\n\n // AgentExecutionOptions\n if (this.settings.toolChoice) {\n defaultOptions.toolChoice = this.settings.toolChoice;\n }\n if (this.settings.providerOptions) {\n defaultOptions.providerOptions = this.settings.providerOptions;\n }\n // AgentExecutionOptions[\"modelSettings\"]\n if (this.settings.temperature !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n temperature: this.settings.temperature,\n };\n }\n if (this.settings.topP !== undefined) {\n defaultOptions.modelSettings = { ...(defaultOptions.modelSettings ?? {}), topP: this.settings.topP };\n }\n if (this.settings.topK !== undefined) {\n defaultOptions.modelSettings = { ...(defaultOptions.modelSettings ?? {}), topK: this.settings.topK };\n }\n if (this.settings.seed !== undefined) {\n defaultOptions.modelSettings = { ...(defaultOptions.modelSettings ?? {}), seed: this.settings.seed };\n }\n if (this.settings.maxOutputTokens !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n maxOutputTokens: this.settings.maxOutputTokens,\n };\n }\n if (this.settings.presencePenalty !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n presencePenalty: this.settings.presencePenalty,\n };\n }\n if (this.settings.frequencyPenalty !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n frequencyPenalty: this.settings.frequencyPenalty,\n };\n }\n if (this.settings.stopSequences !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n stopSequences: this.settings.stopSequences,\n };\n }\n if (this.settings.stopWhen) {\n // TODO: The callback signatures differ (Types of parameters stepResult and event are incompatible)\n defaultOptions.stopWhen = this.settings.stopWhen as any;\n }\n if (this.settings.onStepFinish) {\n // TODO: The callback signatures differ (Types of parameters stepResult and event are incompatible)\n defaultOptions.onStepFinish = this.settings.onStepFinish as any;\n }\n if (this.settings.onFinish) {\n // TODO: The callback signatures differ (Types of parameters 'event' and 'event' are incompatible)\n defaultOptions.onFinish = this.settings.onFinish as any;\n }\n\n return {\n id: this.settings.id,\n name: this.settings.id,\n instructions: (this.settings.instructions as AgentInstructions) ?? '',\n model: this.settings.model,\n tools,\n maxRetries: this.settings.maxRetries,\n defaultOptions: Object.keys(defaultOptions).length > 0 ? defaultOptions : undefined,\n };\n }\n\n /**\n * Maps prepareCall or prepareStep result to ProcessInputStepResult.\n * Both hooks return similar structures that can override model, tools, activeTools, etc.\n */\n private mapToProcessInputStepResult(\n result: Awaited<ReturnType<NonNullable<ToolLoopAgentSettings<any, any, any>['prepareCall']>>> | undefined,\n ): ProcessInputStepResult {\n if (!result) {\n return {};\n }\n\n const stepResult: ProcessInputStepResult = {};\n\n // Map model (both prepareCall and prepareStep can return this)\n if (result.model) {\n stepResult.model = result.model;\n }\n\n // Map tools (prepareCall can return this)\n if ('tools' in result && result.tools) {\n stepResult.tools = result.tools as Record<string, unknown>;\n }\n\n // Map toolChoice (prepareStep can return this)\n if ('toolChoice' in result && result.toolChoice !== undefined) {\n stepResult.toolChoice = result.toolChoice as ProcessInputStepResult['toolChoice'];\n }\n\n // Map activeTools (both can return this)\n if (result.activeTools) {\n stepResult.activeTools = result.activeTools as string[];\n }\n\n // Map providerOptions (prepareCall can return this)\n if ('providerOptions' in result && result.providerOptions) {\n stepResult.providerOptions = result.providerOptions;\n }\n\n // Map model settings (prepareCall can return individual settings)\n const modelSettings: ProcessInputStepResult['modelSettings'] = {};\n if ('temperature' in result && result.temperature !== undefined) {\n modelSettings.temperature = result.temperature;\n }\n if ('topP' in result && result.topP !== undefined) {\n modelSettings.topP = result.topP;\n }\n if ('topK' in result && result.topK !== undefined) {\n modelSettings.topK = result.topK;\n }\n if ('maxOutputTokens' in result && result.maxOutputTokens !== undefined) {\n modelSettings.maxOutputTokens = result.maxOutputTokens;\n }\n if ('presencePenalty' in result && result.presencePenalty !== undefined) {\n modelSettings.presencePenalty = result.presencePenalty;\n }\n if ('frequencyPenalty' in result && result.frequencyPenalty !== undefined) {\n modelSettings.frequencyPenalty = result.frequencyPenalty;\n }\n if ('stopSequences' in result && result.stopSequences !== undefined) {\n modelSettings.stopSequences = result.stopSequences;\n }\n if ('seed' in result && result.seed !== undefined) {\n modelSettings.seed = result.seed;\n }\n\n if (Object.keys(modelSettings).length > 0) {\n stepResult.modelSettings = modelSettings;\n }\n\n // Map system/instructions to systemMessages\n // prepareCall returns 'instructions', prepareStep returns 'system'\n const systemContent =\n 'instructions' in result ? result.instructions : 'system' in result ? result.system : undefined;\n if (systemContent) {\n // Convert to CoreMessageV4 format\n if (typeof systemContent === 'string') {\n stepResult.systemMessages = [{ role: 'system', content: systemContent }];\n } else if (Array.isArray(systemContent)) {\n stepResult.systemMessages = systemContent.map(msg =>\n typeof msg === 'string' ? { role: 'system' as const, content: msg } : msg,\n );\n } else if (typeof systemContent === 'object' && 'role' in systemContent && 'content' in systemContent) {\n stepResult.systemMessages = [systemContent as { role: 'system'; content: string }];\n }\n }\n\n // Map messages if prepareStep returns them\n // Convert AI SDK ModelMessage[] to MastraDBMessage[]\n if ('messages' in result && result.messages && Array.isArray(result.messages)) {\n // AI SDK v6 ModelMessage is compatible with MessageListInput at runtime\n // stepResult.messages = convertMessages(result.messages as any).to('Mastra.V2');\n stepResult.messages = result.messages as any;\n }\n\n return stepResult;\n }\n\n private async handlePrepareCall(args: ProcessInputStepArgs) {\n if (this.settings.prepareCall) {\n const { model, messages, activeTools, providerOptions, modelSettings, tools } = args;\n // TODO: This should probably happen in processInput, currently calling in processInputStep if stepNumber === 0\n\n // Build the prepareCall input object\n // AI SDK prepareCall expects: AgentCallParameters & Pick<ToolLoopAgentSettings, ...settings>\n const prepareCallInput: PrepareCallInput = {\n // TODO: prepareCall expects messages in AI SDK format, we have them in Mastra format\n messages: messages as unknown as any,\n model,\n tools,\n instructions: this.settings.instructions,\n stopWhen: this.settings.stopWhen,\n activeTools,\n providerOptions,\n\n // Model settings\n temperature: modelSettings?.temperature,\n topP: modelSettings?.topP,\n topK: modelSettings?.topK,\n maxOutputTokens: modelSettings?.maxOutputTokens,\n presencePenalty: modelSettings?.presencePenalty,\n frequencyPenalty: modelSettings?.frequencyPenalty,\n stopSequences: modelSettings?.stopSequences,\n seed: modelSettings?.seed,\n\n // Experimental options\n // experimental_telemetry: this.settings.experimental_telemetry,\n // experimental_context: this.settings.experimental_context,\n // experimental_download: this.settings.experimental_download,\n };\n\n // Call prepareCall and apply any returned overrides\n const prepareCallResult = await this.settings.prepareCall(prepareCallInput as any); // TODO: types\n this.prepareCallResult = prepareCallResult;\n }\n }\n\n private async handlePrepareStep(args: ProcessInputStepArgs, currentResult: ProcessInputStepResult) {\n if (this.settings.prepareStep) {\n const { messages, steps, stepNumber } = args;\n\n let model = args.model;\n if (currentResult.model) {\n const resolvedModel = await resolveModelConfig(currentResult.model);\n if (!isSupportedLanguageModel(resolvedModel)) {\n throw new Error('prepareStep returned an unsupported model version');\n }\n model = resolvedModel;\n }\n\n // Use the model from currentResult if prepareCall overrode it, otherwise use args.model\n\n // Note: We pass messages and steps in Mastra format rather than converting to AI SDK format.\n // This is intentional - most prepareStep callbacks only return overrides and don't inspect\n // the message content. The type casts handle the format difference at runtime.\n const prepareStepInputArgs: {\n /**\n * The steps that have been executed so far.\n */\n steps: Array<StepResult<NoInfer<any>>>;\n /**\n * The number of the step that is being executed.\n */\n stepNumber: number;\n /**\n * The model instance that is being used for this step.\n */\n model: MastraLanguageModel;\n /**\n * The messages that will be sent to the model for the current step.\n * Note: These are in Mastra format (MastraDBMessage[]), not AI SDK ModelMessage format.\n */\n messages: Array<ModelMessage>;\n /**\n * The context passed via the experimental_context setting (experimental).\n */\n experimental_context: unknown;\n } = {\n model,\n // Messages are in Mastra format (MastraDBMessage[])\n messages: messages as any,\n // Steps may have minor type differences in usage properties (inputTokenDetails/outputTokenDetails)\n steps: steps as any,\n stepNumber,\n experimental_context: undefined,\n };\n\n const prepareStepResult = await this.settings.prepareStep(prepareStepInputArgs);\n return prepareStepResult;\n }\n }\n\n async processInputStep(args: ProcessInputStepArgs): Promise<ProcessInputStepResult | undefined | void> {\n const { stepNumber } = args;\n\n if (stepNumber === 0 && this.settings.prepareCall) {\n await this.handlePrepareCall(args);\n }\n\n let result: ProcessInputStepResult = {};\n\n // Apply prepareCall result (only on step 0, already called above)\n if (this.prepareCallResult) {\n const mappedResult = this.mapToProcessInputStepResult(this.prepareCallResult);\n if (Object.keys(mappedResult).length > 0) {\n result = { ...result, ...mappedResult };\n }\n }\n\n // Apply prepareStep result (called on every step)\n // Pass the current result so prepareStep sees any overrides from prepareCall\n if (this.settings.prepareStep) {\n const prepareStepResult = await this.handlePrepareStep(args, result);\n if (prepareStepResult) {\n const mappedResult = this.mapToProcessInputStepResult(prepareStepResult as any);\n // prepareStep overrides prepareCall for this step\n result = { ...result, ...mappedResult };\n }\n }\n\n return result;\n }\n}\n","import { generateId } from '@internal/ai-sdk-v5';\nimport { Agent } from '../agent';\nimport { ToolLoopAgentProcessor } from './tool-loop-processor';\nimport type { ToolLoopAgentLike } from './utils';\nexport { type ToolLoopAgentLike, isToolLoopAgentLike, getSettings } from './utils';\n\n/**\n * Converts an AI SDK v6 ToolLoopAgent instance into a Mastra Agent.\n *\n * This enables users to create a ToolLoopAgent using AI SDK's API\n * while gaining access to Mastra features like memory, processors, scorers, and observability.\n *\n * @example\n * ```typescript\n * import { ToolLoopAgent, tool } from 'ai';\n * import { openai } from '@ai-sdk/openai';\n * import { toolLoopAgentToMastraAgent } from '@mastra/core/tool-loop-agent';\n *\n * const toolLoopAgent = new ToolLoopAgent({\n * id: 'weather-agent',\n * model: openai('gpt-4o'),\n * instructions: 'You are a helpful weather assistant.',\n * tools: { weather: weatherTool },\n * temperature: 0.7,\n * });\n *\n * const mastraAgent = toolLoopAgentToMastraAgent(toolLoopAgent);\n *\n * const result = await mastraAgent.generate({ prompt: 'What is the weather in NYC?' });\n * ```\n *\n * @param agent - The ToolLoopAgent instance\n * @param options - Optional name fallback since Mastra Agent requires id/name but ToolLoopAgent doesn't\n * @returns A Mastra Agent instance\n */\nexport function toolLoopAgentToMastraAgent(agent: ToolLoopAgentLike, options?: { fallbackName?: string }) {\n const processor = new ToolLoopAgentProcessor(agent);\n const agentConfig = processor.getAgentConfig();\n const id = agentConfig.id || options?.fallbackName || `tool-loop-agent-${generateId()}`;\n\n return new Agent({\n ...agentConfig,\n id,\n name: agentConfig.name || id,\n inputProcessors: [processor],\n });\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkVTE2OBKS_cjs = require('./chunk-VTE2OBKS.cjs');
4
- var chunkTTP76PA3_cjs = require('./chunk-TTP76PA3.cjs');
4
+ var chunkDIQVUWPT_cjs = require('./chunk-DIQVUWPT.cjs');
5
5
  var chunkPM3UIIBK_cjs = require('./chunk-PM3UIIBK.cjs');
6
6
  var chunkYKLIQEHG_cjs = require('./chunk-YKLIQEHG.cjs');
7
7
 
@@ -202,7 +202,7 @@ var ToolLoopAgentProcessor = class {
202
202
  let model = args.model;
203
203
  if (currentResult.model) {
204
204
  const resolvedModel = await chunkYKLIQEHG_cjs.resolveModelConfig(currentResult.model);
205
- if (!chunkTTP76PA3_cjs.isSupportedLanguageModel(resolvedModel)) {
205
+ if (!chunkDIQVUWPT_cjs.isSupportedLanguageModel(resolvedModel)) {
206
206
  throw new Error("prepareStep returned an unsupported model version");
207
207
  }
208
208
  model = resolvedModel;
@@ -248,7 +248,7 @@ function toolLoopAgentToMastraAgent(agent, options) {
248
248
  const processor = new ToolLoopAgentProcessor(agent);
249
249
  const agentConfig = processor.getAgentConfig();
250
250
  const id = agentConfig.id || options?.fallbackName || `tool-loop-agent-${chunkPM3UIIBK_cjs.generateId()}`;
251
- return new chunkTTP76PA3_cjs.Agent({
251
+ return new chunkDIQVUWPT_cjs.Agent({
252
252
  ...agentConfig,
253
253
  id,
254
254
  name: agentConfig.name || id,
@@ -259,5 +259,5 @@ function toolLoopAgentToMastraAgent(agent, options) {
259
259
  exports.getSettings = getSettings;
260
260
  exports.isToolLoopAgentLike = isToolLoopAgentLike;
261
261
  exports.toolLoopAgentToMastraAgent = toolLoopAgentToMastraAgent;
262
- //# sourceMappingURL=chunk-OMGB7N7Y.cjs.map
263
- //# sourceMappingURL=chunk-OMGB7N7Y.cjs.map
262
+ //# sourceMappingURL=chunk-BXLF5HPE.cjs.map
263
+ //# sourceMappingURL=chunk-BXLF5HPE.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tool-loop-agent/utils.ts","../src/tool-loop-agent/tool-loop-processor.ts","../src/tool-loop-agent/index.ts"],"names":["ToolLoopAgent","resolveModelConfig","isSupportedLanguageModel","generateId","Agent"],"mappings":"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","file":"chunk-OMGB7N7Y.cjs","sourcesContent":["import { ToolLoopAgent } from '@internal/ai-v6';\nimport type { ToolLoopAgentSettings } from '@internal/ai-v6';\n\n/**\n * Shape of a ToolLoopAgent-like object for runtime extraction.\n * We use this looser type because TypeScript's structural typing doesn't work\n * well with private properties across different package declarations.\n */\nexport interface ToolLoopAgentLike {\n readonly id?: string;\n readonly version?: string;\n // The settings property is private in ToolLoopAgent but accessible at runtime\n // We don't declare it here since we access it via type casting\n}\n\nexport function isToolLoopAgentLike(obj: any): obj is ToolLoopAgentLike {\n if (!obj) return false;\n if (obj instanceof ToolLoopAgent) return true;\n return (\n 'version' in obj &&\n typeof obj.version === 'string' &&\n (obj.version === 'agent-v1' || obj.version.startsWith('agent-v'))\n );\n}\n\n/**\n * Extracts the settings from a ToolLoopAgent instance.\n * ToolLoopAgent.settings is private in TypeScript but accessible at runtime.\n */\nexport function getSettings(agent: ToolLoopAgentLike): ToolLoopAgentSettings<any, any, any> {\n const settings = (agent as unknown as { settings: ToolLoopAgentSettings<any, any, any> }).settings;\n if (!settings) {\n throw new Error('Could not extract settings from ToolLoopAgent. The agent may be from an incompatible version.');\n }\n return settings;\n}\n","import type {\n ToolLoopAgent,\n AgentCallParameters,\n ModelMessage,\n StepResult,\n ToolLoopAgentSettings,\n} from '@internal/ai-v6';\nimport { isSupportedLanguageModel } from '../agent';\nimport type { AgentExecutionOptions, AgentInstructions } from '../agent';\nimport { resolveModelConfig } from '../llm/model/resolve-model';\nimport type { MastraLanguageModel } from '../llm/model/shared.types';\nimport type { ProcessInputStepArgs, ProcessInputStepResult, Processor } from '../processors';\nimport { getSettings as getToolLoopAgentSettings } from './utils';\nimport type { ToolLoopAgentLike } from './utils';\n\ntype PrepareCallInput = AgentCallParameters<never> &\n Pick<\n ToolLoopAgentSettings<never, any, any>,\n | 'model'\n | 'tools'\n | 'maxOutputTokens'\n | 'temperature'\n | 'topP'\n | 'topK'\n | 'presencePenalty'\n | 'frequencyPenalty'\n | 'stopSequences'\n | 'seed'\n | 'headers'\n | 'instructions'\n | 'stopWhen'\n | 'experimental_telemetry'\n | 'activeTools'\n | 'providerOptions'\n | 'experimental_context'\n | 'experimental_download'\n >;\n\nexport class ToolLoopAgentProcessor implements Processor<'tool-loop-agent-processor'> {\n readonly id = 'tool-loop-agent-processor';\n readonly name = 'ToolLoop to Mastra Agent Processor';\n\n private agent: ToolLoopAgentLike;\n private settings: ToolLoopAgentSettings<any, any, any>;\n private prepareCallResult?: Awaited<ReturnType<NonNullable<ToolLoopAgentSettings<any, any, any>['prepareCall']>>>;\n\n constructor(agent: ToolLoopAgentLike) {\n this.agent = agent;\n this.settings = getToolLoopAgentSettings(agent);\n }\n\n public getAgentConfig() {\n const tools = 'tools' in this.agent ? (this.agent as ToolLoopAgent).tools : undefined;\n\n // Build default options from ToolLoopAgent config params\n const defaultOptions: Omit<AgentExecutionOptions<unknown>, 'abortSignal'> = {};\n\n // AgentExecutionOptions\n if (this.settings.toolChoice) {\n defaultOptions.toolChoice = this.settings.toolChoice;\n }\n if (this.settings.providerOptions) {\n defaultOptions.providerOptions = this.settings.providerOptions;\n }\n // AgentExecutionOptions[\"modelSettings\"]\n if (this.settings.temperature !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n temperature: this.settings.temperature,\n };\n }\n if (this.settings.topP !== undefined) {\n defaultOptions.modelSettings = { ...(defaultOptions.modelSettings ?? {}), topP: this.settings.topP };\n }\n if (this.settings.topK !== undefined) {\n defaultOptions.modelSettings = { ...(defaultOptions.modelSettings ?? {}), topK: this.settings.topK };\n }\n if (this.settings.seed !== undefined) {\n defaultOptions.modelSettings = { ...(defaultOptions.modelSettings ?? {}), seed: this.settings.seed };\n }\n if (this.settings.maxOutputTokens !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n maxOutputTokens: this.settings.maxOutputTokens,\n };\n }\n if (this.settings.presencePenalty !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n presencePenalty: this.settings.presencePenalty,\n };\n }\n if (this.settings.frequencyPenalty !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n frequencyPenalty: this.settings.frequencyPenalty,\n };\n }\n if (this.settings.stopSequences !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n stopSequences: this.settings.stopSequences,\n };\n }\n if (this.settings.stopWhen) {\n // TODO: The callback signatures differ (Types of parameters stepResult and event are incompatible)\n defaultOptions.stopWhen = this.settings.stopWhen as any;\n }\n if (this.settings.onStepFinish) {\n // TODO: The callback signatures differ (Types of parameters stepResult and event are incompatible)\n defaultOptions.onStepFinish = this.settings.onStepFinish as any;\n }\n if (this.settings.onFinish) {\n // TODO: The callback signatures differ (Types of parameters 'event' and 'event' are incompatible)\n defaultOptions.onFinish = this.settings.onFinish as any;\n }\n\n return {\n id: this.settings.id,\n name: this.settings.id,\n instructions: (this.settings.instructions as AgentInstructions) ?? '',\n model: this.settings.model,\n tools,\n maxRetries: this.settings.maxRetries,\n defaultOptions: Object.keys(defaultOptions).length > 0 ? defaultOptions : undefined,\n };\n }\n\n /**\n * Maps prepareCall or prepareStep result to ProcessInputStepResult.\n * Both hooks return similar structures that can override model, tools, activeTools, etc.\n */\n private mapToProcessInputStepResult(\n result: Awaited<ReturnType<NonNullable<ToolLoopAgentSettings<any, any, any>['prepareCall']>>> | undefined,\n ): ProcessInputStepResult {\n if (!result) {\n return {};\n }\n\n const stepResult: ProcessInputStepResult = {};\n\n // Map model (both prepareCall and prepareStep can return this)\n if (result.model) {\n stepResult.model = result.model;\n }\n\n // Map tools (prepareCall can return this)\n if ('tools' in result && result.tools) {\n stepResult.tools = result.tools as Record<string, unknown>;\n }\n\n // Map toolChoice (prepareStep can return this)\n if ('toolChoice' in result && result.toolChoice !== undefined) {\n stepResult.toolChoice = result.toolChoice as ProcessInputStepResult['toolChoice'];\n }\n\n // Map activeTools (both can return this)\n if (result.activeTools) {\n stepResult.activeTools = result.activeTools as string[];\n }\n\n // Map providerOptions (prepareCall can return this)\n if ('providerOptions' in result && result.providerOptions) {\n stepResult.providerOptions = result.providerOptions;\n }\n\n // Map model settings (prepareCall can return individual settings)\n const modelSettings: ProcessInputStepResult['modelSettings'] = {};\n if ('temperature' in result && result.temperature !== undefined) {\n modelSettings.temperature = result.temperature;\n }\n if ('topP' in result && result.topP !== undefined) {\n modelSettings.topP = result.topP;\n }\n if ('topK' in result && result.topK !== undefined) {\n modelSettings.topK = result.topK;\n }\n if ('maxOutputTokens' in result && result.maxOutputTokens !== undefined) {\n modelSettings.maxOutputTokens = result.maxOutputTokens;\n }\n if ('presencePenalty' in result && result.presencePenalty !== undefined) {\n modelSettings.presencePenalty = result.presencePenalty;\n }\n if ('frequencyPenalty' in result && result.frequencyPenalty !== undefined) {\n modelSettings.frequencyPenalty = result.frequencyPenalty;\n }\n if ('stopSequences' in result && result.stopSequences !== undefined) {\n modelSettings.stopSequences = result.stopSequences;\n }\n if ('seed' in result && result.seed !== undefined) {\n modelSettings.seed = result.seed;\n }\n\n if (Object.keys(modelSettings).length > 0) {\n stepResult.modelSettings = modelSettings;\n }\n\n // Map system/instructions to systemMessages\n // prepareCall returns 'instructions', prepareStep returns 'system'\n const systemContent =\n 'instructions' in result ? result.instructions : 'system' in result ? result.system : undefined;\n if (systemContent) {\n // Convert to CoreMessageV4 format\n if (typeof systemContent === 'string') {\n stepResult.systemMessages = [{ role: 'system', content: systemContent }];\n } else if (Array.isArray(systemContent)) {\n stepResult.systemMessages = systemContent.map(msg =>\n typeof msg === 'string' ? { role: 'system' as const, content: msg } : msg,\n );\n } else if (typeof systemContent === 'object' && 'role' in systemContent && 'content' in systemContent) {\n stepResult.systemMessages = [systemContent as { role: 'system'; content: string }];\n }\n }\n\n // Map messages if prepareStep returns them\n // Convert AI SDK ModelMessage[] to MastraDBMessage[]\n if ('messages' in result && result.messages && Array.isArray(result.messages)) {\n // AI SDK v6 ModelMessage is compatible with MessageListInput at runtime\n // stepResult.messages = convertMessages(result.messages as any).to('Mastra.V2');\n stepResult.messages = result.messages as any;\n }\n\n return stepResult;\n }\n\n private async handlePrepareCall(args: ProcessInputStepArgs) {\n if (this.settings.prepareCall) {\n const { model, messages, activeTools, providerOptions, modelSettings, tools } = args;\n // TODO: This should probably happen in processInput, currently calling in processInputStep if stepNumber === 0\n\n // Build the prepareCall input object\n // AI SDK prepareCall expects: AgentCallParameters & Pick<ToolLoopAgentSettings, ...settings>\n const prepareCallInput: PrepareCallInput = {\n // TODO: prepareCall expects messages in AI SDK format, we have them in Mastra format\n messages: messages as unknown as any,\n model,\n tools,\n instructions: this.settings.instructions,\n stopWhen: this.settings.stopWhen,\n activeTools,\n providerOptions,\n\n // Model settings\n temperature: modelSettings?.temperature,\n topP: modelSettings?.topP,\n topK: modelSettings?.topK,\n maxOutputTokens: modelSettings?.maxOutputTokens,\n presencePenalty: modelSettings?.presencePenalty,\n frequencyPenalty: modelSettings?.frequencyPenalty,\n stopSequences: modelSettings?.stopSequences,\n seed: modelSettings?.seed,\n\n // Experimental options\n // experimental_telemetry: this.settings.experimental_telemetry,\n // experimental_context: this.settings.experimental_context,\n // experimental_download: this.settings.experimental_download,\n };\n\n // Call prepareCall and apply any returned overrides\n const prepareCallResult = await this.settings.prepareCall(prepareCallInput as any); // TODO: types\n this.prepareCallResult = prepareCallResult;\n }\n }\n\n private async handlePrepareStep(args: ProcessInputStepArgs, currentResult: ProcessInputStepResult) {\n if (this.settings.prepareStep) {\n const { messages, steps, stepNumber } = args;\n\n let model = args.model;\n if (currentResult.model) {\n const resolvedModel = await resolveModelConfig(currentResult.model);\n if (!isSupportedLanguageModel(resolvedModel)) {\n throw new Error('prepareStep returned an unsupported model version');\n }\n model = resolvedModel;\n }\n\n // Use the model from currentResult if prepareCall overrode it, otherwise use args.model\n\n // Note: We pass messages and steps in Mastra format rather than converting to AI SDK format.\n // This is intentional - most prepareStep callbacks only return overrides and don't inspect\n // the message content. The type casts handle the format difference at runtime.\n const prepareStepInputArgs: {\n /**\n * The steps that have been executed so far.\n */\n steps: Array<StepResult<NoInfer<any>>>;\n /**\n * The number of the step that is being executed.\n */\n stepNumber: number;\n /**\n * The model instance that is being used for this step.\n */\n model: MastraLanguageModel;\n /**\n * The messages that will be sent to the model for the current step.\n * Note: These are in Mastra format (MastraDBMessage[]), not AI SDK ModelMessage format.\n */\n messages: Array<ModelMessage>;\n /**\n * The context passed via the experimental_context setting (experimental).\n */\n experimental_context: unknown;\n } = {\n model,\n // Messages are in Mastra format (MastraDBMessage[])\n messages: messages as any,\n // Steps may have minor type differences in usage properties (inputTokenDetails/outputTokenDetails)\n steps: steps as any,\n stepNumber,\n experimental_context: undefined,\n };\n\n const prepareStepResult = await this.settings.prepareStep(prepareStepInputArgs);\n return prepareStepResult;\n }\n }\n\n async processInputStep(args: ProcessInputStepArgs): Promise<ProcessInputStepResult | undefined | void> {\n const { stepNumber } = args;\n\n if (stepNumber === 0 && this.settings.prepareCall) {\n await this.handlePrepareCall(args);\n }\n\n let result: ProcessInputStepResult = {};\n\n // Apply prepareCall result (only on step 0, already called above)\n if (this.prepareCallResult) {\n const mappedResult = this.mapToProcessInputStepResult(this.prepareCallResult);\n if (Object.keys(mappedResult).length > 0) {\n result = { ...result, ...mappedResult };\n }\n }\n\n // Apply prepareStep result (called on every step)\n // Pass the current result so prepareStep sees any overrides from prepareCall\n if (this.settings.prepareStep) {\n const prepareStepResult = await this.handlePrepareStep(args, result);\n if (prepareStepResult) {\n const mappedResult = this.mapToProcessInputStepResult(prepareStepResult as any);\n // prepareStep overrides prepareCall for this step\n result = { ...result, ...mappedResult };\n }\n }\n\n return result;\n }\n}\n","import { generateId } from '@internal/ai-sdk-v5';\nimport { Agent } from '../agent';\nimport { ToolLoopAgentProcessor } from './tool-loop-processor';\nimport type { ToolLoopAgentLike } from './utils';\nexport { type ToolLoopAgentLike, isToolLoopAgentLike, getSettings } from './utils';\n\n/**\n * Converts an AI SDK v6 ToolLoopAgent instance into a Mastra Agent.\n *\n * This enables users to create a ToolLoopAgent using AI SDK's API\n * while gaining access to Mastra features like memory, processors, scorers, and observability.\n *\n * @example\n * ```typescript\n * import { ToolLoopAgent, tool } from 'ai';\n * import { openai } from '@ai-sdk/openai';\n * import { toolLoopAgentToMastraAgent } from '@mastra/core/tool-loop-agent';\n *\n * const toolLoopAgent = new ToolLoopAgent({\n * id: 'weather-agent',\n * model: openai('gpt-4o'),\n * instructions: 'You are a helpful weather assistant.',\n * tools: { weather: weatherTool },\n * temperature: 0.7,\n * });\n *\n * const mastraAgent = toolLoopAgentToMastraAgent(toolLoopAgent);\n *\n * const result = await mastraAgent.generate({ prompt: 'What is the weather in NYC?' });\n * ```\n *\n * @param agent - The ToolLoopAgent instance\n * @param options - Optional name fallback since Mastra Agent requires id/name but ToolLoopAgent doesn't\n * @returns A Mastra Agent instance\n */\nexport function toolLoopAgentToMastraAgent(agent: ToolLoopAgentLike, options?: { fallbackName?: string }) {\n const processor = new ToolLoopAgentProcessor(agent);\n const agentConfig = processor.getAgentConfig();\n const id = agentConfig.id || options?.fallbackName || `tool-loop-agent-${generateId()}`;\n\n return new Agent({\n ...agentConfig,\n id,\n name: agentConfig.name || id,\n inputProcessors: [processor],\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/tool-loop-agent/utils.ts","../src/tool-loop-agent/tool-loop-processor.ts","../src/tool-loop-agent/index.ts"],"names":["ToolLoopAgent","resolveModelConfig","isSupportedLanguageModel","generateId","Agent"],"mappings":"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","file":"chunk-BXLF5HPE.cjs","sourcesContent":["import { ToolLoopAgent } from '@internal/ai-v6';\nimport type { ToolLoopAgentSettings } from '@internal/ai-v6';\n\n/**\n * Shape of a ToolLoopAgent-like object for runtime extraction.\n * We use this looser type because TypeScript's structural typing doesn't work\n * well with private properties across different package declarations.\n */\nexport interface ToolLoopAgentLike {\n readonly id?: string;\n readonly version?: string;\n // The settings property is private in ToolLoopAgent but accessible at runtime\n // We don't declare it here since we access it via type casting\n}\n\nexport function isToolLoopAgentLike(obj: any): obj is ToolLoopAgentLike {\n if (!obj) return false;\n if (obj instanceof ToolLoopAgent) return true;\n return (\n 'version' in obj &&\n typeof obj.version === 'string' &&\n (obj.version === 'agent-v1' || obj.version.startsWith('agent-v'))\n );\n}\n\n/**\n * Extracts the settings from a ToolLoopAgent instance.\n * ToolLoopAgent.settings is private in TypeScript but accessible at runtime.\n */\nexport function getSettings(agent: ToolLoopAgentLike): ToolLoopAgentSettings<any, any, any> {\n const settings = (agent as unknown as { settings: ToolLoopAgentSettings<any, any, any> }).settings;\n if (!settings) {\n throw new Error('Could not extract settings from ToolLoopAgent. The agent may be from an incompatible version.');\n }\n return settings;\n}\n","import type {\n ToolLoopAgent,\n AgentCallParameters,\n ModelMessage,\n StepResult,\n ToolLoopAgentSettings,\n} from '@internal/ai-v6';\nimport { isSupportedLanguageModel } from '../agent';\nimport type { AgentExecutionOptions, AgentInstructions } from '../agent';\nimport { resolveModelConfig } from '../llm/model/resolve-model';\nimport type { MastraLanguageModel } from '../llm/model/shared.types';\nimport type { ProcessInputStepArgs, ProcessInputStepResult, Processor } from '../processors';\nimport { getSettings as getToolLoopAgentSettings } from './utils';\nimport type { ToolLoopAgentLike } from './utils';\n\ntype PrepareCallInput = AgentCallParameters<never> &\n Pick<\n ToolLoopAgentSettings<never, any, any>,\n | 'model'\n | 'tools'\n | 'maxOutputTokens'\n | 'temperature'\n | 'topP'\n | 'topK'\n | 'presencePenalty'\n | 'frequencyPenalty'\n | 'stopSequences'\n | 'seed'\n | 'headers'\n | 'instructions'\n | 'stopWhen'\n | 'experimental_telemetry'\n | 'activeTools'\n | 'providerOptions'\n | 'experimental_context'\n | 'experimental_download'\n >;\n\nexport class ToolLoopAgentProcessor implements Processor<'tool-loop-agent-processor'> {\n readonly id = 'tool-loop-agent-processor';\n readonly name = 'ToolLoop to Mastra Agent Processor';\n\n private agent: ToolLoopAgentLike;\n private settings: ToolLoopAgentSettings<any, any, any>;\n private prepareCallResult?: Awaited<ReturnType<NonNullable<ToolLoopAgentSettings<any, any, any>['prepareCall']>>>;\n\n constructor(agent: ToolLoopAgentLike) {\n this.agent = agent;\n this.settings = getToolLoopAgentSettings(agent);\n }\n\n public getAgentConfig() {\n const tools = 'tools' in this.agent ? (this.agent as ToolLoopAgent).tools : undefined;\n\n // Build default options from ToolLoopAgent config params\n const defaultOptions: Omit<AgentExecutionOptions<unknown>, 'abortSignal'> = {};\n\n // AgentExecutionOptions\n if (this.settings.toolChoice) {\n defaultOptions.toolChoice = this.settings.toolChoice;\n }\n if (this.settings.providerOptions) {\n defaultOptions.providerOptions = this.settings.providerOptions;\n }\n // AgentExecutionOptions[\"modelSettings\"]\n if (this.settings.temperature !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n temperature: this.settings.temperature,\n };\n }\n if (this.settings.topP !== undefined) {\n defaultOptions.modelSettings = { ...(defaultOptions.modelSettings ?? {}), topP: this.settings.topP };\n }\n if (this.settings.topK !== undefined) {\n defaultOptions.modelSettings = { ...(defaultOptions.modelSettings ?? {}), topK: this.settings.topK };\n }\n if (this.settings.seed !== undefined) {\n defaultOptions.modelSettings = { ...(defaultOptions.modelSettings ?? {}), seed: this.settings.seed };\n }\n if (this.settings.maxOutputTokens !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n maxOutputTokens: this.settings.maxOutputTokens,\n };\n }\n if (this.settings.presencePenalty !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n presencePenalty: this.settings.presencePenalty,\n };\n }\n if (this.settings.frequencyPenalty !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n frequencyPenalty: this.settings.frequencyPenalty,\n };\n }\n if (this.settings.stopSequences !== undefined) {\n defaultOptions.modelSettings = {\n ...(defaultOptions.modelSettings ?? {}),\n stopSequences: this.settings.stopSequences,\n };\n }\n if (this.settings.stopWhen) {\n // TODO: The callback signatures differ (Types of parameters stepResult and event are incompatible)\n defaultOptions.stopWhen = this.settings.stopWhen as any;\n }\n if (this.settings.onStepFinish) {\n // TODO: The callback signatures differ (Types of parameters stepResult and event are incompatible)\n defaultOptions.onStepFinish = this.settings.onStepFinish as any;\n }\n if (this.settings.onFinish) {\n // TODO: The callback signatures differ (Types of parameters 'event' and 'event' are incompatible)\n defaultOptions.onFinish = this.settings.onFinish as any;\n }\n\n return {\n id: this.settings.id,\n name: this.settings.id,\n instructions: (this.settings.instructions as AgentInstructions) ?? '',\n model: this.settings.model,\n tools,\n maxRetries: this.settings.maxRetries,\n defaultOptions: Object.keys(defaultOptions).length > 0 ? defaultOptions : undefined,\n };\n }\n\n /**\n * Maps prepareCall or prepareStep result to ProcessInputStepResult.\n * Both hooks return similar structures that can override model, tools, activeTools, etc.\n */\n private mapToProcessInputStepResult(\n result: Awaited<ReturnType<NonNullable<ToolLoopAgentSettings<any, any, any>['prepareCall']>>> | undefined,\n ): ProcessInputStepResult {\n if (!result) {\n return {};\n }\n\n const stepResult: ProcessInputStepResult = {};\n\n // Map model (both prepareCall and prepareStep can return this)\n if (result.model) {\n stepResult.model = result.model;\n }\n\n // Map tools (prepareCall can return this)\n if ('tools' in result && result.tools) {\n stepResult.tools = result.tools as Record<string, unknown>;\n }\n\n // Map toolChoice (prepareStep can return this)\n if ('toolChoice' in result && result.toolChoice !== undefined) {\n stepResult.toolChoice = result.toolChoice as ProcessInputStepResult['toolChoice'];\n }\n\n // Map activeTools (both can return this)\n if (result.activeTools) {\n stepResult.activeTools = result.activeTools as string[];\n }\n\n // Map providerOptions (prepareCall can return this)\n if ('providerOptions' in result && result.providerOptions) {\n stepResult.providerOptions = result.providerOptions;\n }\n\n // Map model settings (prepareCall can return individual settings)\n const modelSettings: ProcessInputStepResult['modelSettings'] = {};\n if ('temperature' in result && result.temperature !== undefined) {\n modelSettings.temperature = result.temperature;\n }\n if ('topP' in result && result.topP !== undefined) {\n modelSettings.topP = result.topP;\n }\n if ('topK' in result && result.topK !== undefined) {\n modelSettings.topK = result.topK;\n }\n if ('maxOutputTokens' in result && result.maxOutputTokens !== undefined) {\n modelSettings.maxOutputTokens = result.maxOutputTokens;\n }\n if ('presencePenalty' in result && result.presencePenalty !== undefined) {\n modelSettings.presencePenalty = result.presencePenalty;\n }\n if ('frequencyPenalty' in result && result.frequencyPenalty !== undefined) {\n modelSettings.frequencyPenalty = result.frequencyPenalty;\n }\n if ('stopSequences' in result && result.stopSequences !== undefined) {\n modelSettings.stopSequences = result.stopSequences;\n }\n if ('seed' in result && result.seed !== undefined) {\n modelSettings.seed = result.seed;\n }\n\n if (Object.keys(modelSettings).length > 0) {\n stepResult.modelSettings = modelSettings;\n }\n\n // Map system/instructions to systemMessages\n // prepareCall returns 'instructions', prepareStep returns 'system'\n const systemContent =\n 'instructions' in result ? result.instructions : 'system' in result ? result.system : undefined;\n if (systemContent) {\n // Convert to CoreMessageV4 format\n if (typeof systemContent === 'string') {\n stepResult.systemMessages = [{ role: 'system', content: systemContent }];\n } else if (Array.isArray(systemContent)) {\n stepResult.systemMessages = systemContent.map(msg =>\n typeof msg === 'string' ? { role: 'system' as const, content: msg } : msg,\n );\n } else if (typeof systemContent === 'object' && 'role' in systemContent && 'content' in systemContent) {\n stepResult.systemMessages = [systemContent as { role: 'system'; content: string }];\n }\n }\n\n // Map messages if prepareStep returns them\n // Convert AI SDK ModelMessage[] to MastraDBMessage[]\n if ('messages' in result && result.messages && Array.isArray(result.messages)) {\n // AI SDK v6 ModelMessage is compatible with MessageListInput at runtime\n // stepResult.messages = convertMessages(result.messages as any).to('Mastra.V2');\n stepResult.messages = result.messages as any;\n }\n\n return stepResult;\n }\n\n private async handlePrepareCall(args: ProcessInputStepArgs) {\n if (this.settings.prepareCall) {\n const { model, messages, activeTools, providerOptions, modelSettings, tools } = args;\n // TODO: This should probably happen in processInput, currently calling in processInputStep if stepNumber === 0\n\n // Build the prepareCall input object\n // AI SDK prepareCall expects: AgentCallParameters & Pick<ToolLoopAgentSettings, ...settings>\n const prepareCallInput: PrepareCallInput = {\n // TODO: prepareCall expects messages in AI SDK format, we have them in Mastra format\n messages: messages as unknown as any,\n model,\n tools,\n instructions: this.settings.instructions,\n stopWhen: this.settings.stopWhen,\n activeTools,\n providerOptions,\n\n // Model settings\n temperature: modelSettings?.temperature,\n topP: modelSettings?.topP,\n topK: modelSettings?.topK,\n maxOutputTokens: modelSettings?.maxOutputTokens,\n presencePenalty: modelSettings?.presencePenalty,\n frequencyPenalty: modelSettings?.frequencyPenalty,\n stopSequences: modelSettings?.stopSequences,\n seed: modelSettings?.seed,\n\n // Experimental options\n // experimental_telemetry: this.settings.experimental_telemetry,\n // experimental_context: this.settings.experimental_context,\n // experimental_download: this.settings.experimental_download,\n };\n\n // Call prepareCall and apply any returned overrides\n const prepareCallResult = await this.settings.prepareCall(prepareCallInput as any); // TODO: types\n this.prepareCallResult = prepareCallResult;\n }\n }\n\n private async handlePrepareStep(args: ProcessInputStepArgs, currentResult: ProcessInputStepResult) {\n if (this.settings.prepareStep) {\n const { messages, steps, stepNumber } = args;\n\n let model = args.model;\n if (currentResult.model) {\n const resolvedModel = await resolveModelConfig(currentResult.model);\n if (!isSupportedLanguageModel(resolvedModel)) {\n throw new Error('prepareStep returned an unsupported model version');\n }\n model = resolvedModel;\n }\n\n // Use the model from currentResult if prepareCall overrode it, otherwise use args.model\n\n // Note: We pass messages and steps in Mastra format rather than converting to AI SDK format.\n // This is intentional - most prepareStep callbacks only return overrides and don't inspect\n // the message content. The type casts handle the format difference at runtime.\n const prepareStepInputArgs: {\n /**\n * The steps that have been executed so far.\n */\n steps: Array<StepResult<NoInfer<any>>>;\n /**\n * The number of the step that is being executed.\n */\n stepNumber: number;\n /**\n * The model instance that is being used for this step.\n */\n model: MastraLanguageModel;\n /**\n * The messages that will be sent to the model for the current step.\n * Note: These are in Mastra format (MastraDBMessage[]), not AI SDK ModelMessage format.\n */\n messages: Array<ModelMessage>;\n /**\n * The context passed via the experimental_context setting (experimental).\n */\n experimental_context: unknown;\n } = {\n model,\n // Messages are in Mastra format (MastraDBMessage[])\n messages: messages as any,\n // Steps may have minor type differences in usage properties (inputTokenDetails/outputTokenDetails)\n steps: steps as any,\n stepNumber,\n experimental_context: undefined,\n };\n\n const prepareStepResult = await this.settings.prepareStep(prepareStepInputArgs);\n return prepareStepResult;\n }\n }\n\n async processInputStep(args: ProcessInputStepArgs): Promise<ProcessInputStepResult | undefined | void> {\n const { stepNumber } = args;\n\n if (stepNumber === 0 && this.settings.prepareCall) {\n await this.handlePrepareCall(args);\n }\n\n let result: ProcessInputStepResult = {};\n\n // Apply prepareCall result (only on step 0, already called above)\n if (this.prepareCallResult) {\n const mappedResult = this.mapToProcessInputStepResult(this.prepareCallResult);\n if (Object.keys(mappedResult).length > 0) {\n result = { ...result, ...mappedResult };\n }\n }\n\n // Apply prepareStep result (called on every step)\n // Pass the current result so prepareStep sees any overrides from prepareCall\n if (this.settings.prepareStep) {\n const prepareStepResult = await this.handlePrepareStep(args, result);\n if (prepareStepResult) {\n const mappedResult = this.mapToProcessInputStepResult(prepareStepResult as any);\n // prepareStep overrides prepareCall for this step\n result = { ...result, ...mappedResult };\n }\n }\n\n return result;\n }\n}\n","import { generateId } from '@internal/ai-sdk-v5';\nimport { Agent } from '../agent';\nimport { ToolLoopAgentProcessor } from './tool-loop-processor';\nimport type { ToolLoopAgentLike } from './utils';\nexport { type ToolLoopAgentLike, isToolLoopAgentLike, getSettings } from './utils';\n\n/**\n * Converts an AI SDK v6 ToolLoopAgent instance into a Mastra Agent.\n *\n * This enables users to create a ToolLoopAgent using AI SDK's API\n * while gaining access to Mastra features like memory, processors, scorers, and observability.\n *\n * @example\n * ```typescript\n * import { ToolLoopAgent, tool } from 'ai';\n * import { openai } from '@ai-sdk/openai';\n * import { toolLoopAgentToMastraAgent } from '@mastra/core/tool-loop-agent';\n *\n * const toolLoopAgent = new ToolLoopAgent({\n * id: 'weather-agent',\n * model: openai('gpt-4o'),\n * instructions: 'You are a helpful weather assistant.',\n * tools: { weather: weatherTool },\n * temperature: 0.7,\n * });\n *\n * const mastraAgent = toolLoopAgentToMastraAgent(toolLoopAgent);\n *\n * const result = await mastraAgent.generate({ prompt: 'What is the weather in NYC?' });\n * ```\n *\n * @param agent - The ToolLoopAgent instance\n * @param options - Optional name fallback since Mastra Agent requires id/name but ToolLoopAgent doesn't\n * @returns A Mastra Agent instance\n */\nexport function toolLoopAgentToMastraAgent(agent: ToolLoopAgentLike, options?: { fallbackName?: string }) {\n const processor = new ToolLoopAgentProcessor(agent);\n const agentConfig = processor.getAgentConfig();\n const id = agentConfig.id || options?.fallbackName || `tool-loop-agent-${generateId()}`;\n\n return new Agent({\n ...agentConfig,\n id,\n name: agentConfig.name || id,\n inputProcessors: [processor],\n });\n}\n"]}
@@ -3657,6 +3657,7 @@ var WorkflowRunOutput = class {
3657
3657
  #baseStream;
3658
3658
  #emitter = new EventEmitter2__default.default();
3659
3659
  #bufferedChunks = [];
3660
+ #hasActiveConsumer = false;
3660
3661
  #streamFinished = false;
3661
3662
  #streamError;
3662
3663
  #delayedPromises = {
@@ -3691,12 +3692,16 @@ var WorkflowRunOutput = class {
3691
3692
  workflowId: self.workflowId
3692
3693
  }
3693
3694
  };
3694
- self.#bufferedChunks.push(chunk);
3695
+ if (!self.#hasActiveConsumer) {
3696
+ self.#bufferedChunks.push(chunk);
3697
+ }
3695
3698
  self.#emitter.emit("chunk", chunk);
3696
3699
  },
3697
3700
  write(chunk) {
3698
3701
  if (chunk.type !== "workflow-step-finish") {
3699
- self.#bufferedChunks.push(chunk);
3702
+ if (!self.#hasActiveConsumer) {
3703
+ self.#bufferedChunks.push(chunk);
3704
+ }
3700
3705
  self.#emitter.emit("chunk", chunk);
3701
3706
  }
3702
3707
  if (chunk.type === "workflow-step-output") {
@@ -3810,6 +3815,7 @@ var WorkflowRunOutput = class {
3810
3815
  this.#baseStream = stream;
3811
3816
  this.#streamFinished = false;
3812
3817
  this.#consumptionStarted = false;
3818
+ this.#hasActiveConsumer = false;
3813
3819
  this.#status = "running";
3814
3820
  this.#delayedPromises = {
3815
3821
  usage: new DelayedPromise(),
@@ -3827,12 +3833,16 @@ var WorkflowRunOutput = class {
3827
3833
  workflowId: self.workflowId
3828
3834
  }
3829
3835
  };
3830
- self.#bufferedChunks.push(chunk);
3836
+ if (!self.#hasActiveConsumer) {
3837
+ self.#bufferedChunks.push(chunk);
3838
+ }
3831
3839
  self.#emitter.emit("chunk", chunk);
3832
3840
  },
3833
3841
  write(chunk) {
3834
3842
  if (chunk.type !== "workflow-step-finish") {
3835
- self.#bufferedChunks.push(chunk);
3843
+ if (!self.#hasActiveConsumer) {
3844
+ self.#bufferedChunks.push(chunk);
3845
+ }
3836
3846
  self.#emitter.emit("chunk", chunk);
3837
3847
  }
3838
3848
  if (chunk.type === "workflow-step-output") {
@@ -3909,21 +3919,27 @@ var WorkflowRunOutput = class {
3909
3919
  }
3910
3920
  get fullStream() {
3911
3921
  const self = this;
3922
+ let chunkHandler = null;
3923
+ let finishHandler = null;
3912
3924
  return new web.ReadableStream({
3913
3925
  start(controller) {
3914
3926
  self.#bufferedChunks.forEach((chunk) => {
3915
3927
  controller.enqueue(chunk);
3916
3928
  });
3929
+ self.#hasActiveConsumer = true;
3930
+ self.#bufferedChunks = [];
3917
3931
  if (self.#streamFinished) {
3918
3932
  controller.close();
3919
3933
  return;
3920
3934
  }
3921
- const chunkHandler = (chunk) => {
3935
+ chunkHandler = (chunk) => {
3922
3936
  controller.enqueue(chunk);
3923
3937
  };
3924
- const finishHandler = () => {
3925
- self.#emitter.off("chunk", chunkHandler);
3926
- self.#emitter.off("finish", finishHandler);
3938
+ finishHandler = () => {
3939
+ if (chunkHandler) self.#emitter.off("chunk", chunkHandler);
3940
+ if (finishHandler) self.#emitter.off("finish", finishHandler);
3941
+ chunkHandler = null;
3942
+ finishHandler = null;
3927
3943
  controller.close();
3928
3944
  };
3929
3945
  self.#emitter.on("chunk", chunkHandler);
@@ -3935,7 +3951,10 @@ var WorkflowRunOutput = class {
3935
3951
  }
3936
3952
  },
3937
3953
  cancel() {
3938
- self.#emitter.removeAllListeners();
3954
+ if (chunkHandler) self.#emitter.off("chunk", chunkHandler);
3955
+ if (finishHandler) self.#emitter.off("finish", finishHandler);
3956
+ chunkHandler = null;
3957
+ finishHandler = null;
3939
3958
  }
3940
3959
  });
3941
3960
  }
@@ -25129,5 +25148,5 @@ exports.validateStepRequestContext = validateStepRequestContext;
25129
25148
  exports.validateStepResumeData = validateStepResumeData;
25130
25149
  exports.validateStepStateData = validateStepStateData;
25131
25150
  exports.validateStepSuspendData = validateStepSuspendData;
25132
- //# sourceMappingURL=chunk-TTP76PA3.cjs.map
25133
- //# sourceMappingURL=chunk-TTP76PA3.cjs.map
25151
+ //# sourceMappingURL=chunk-DIQVUWPT.cjs.map
25152
+ //# sourceMappingURL=chunk-DIQVUWPT.cjs.map