@mastra/ai-sdk 1.0.0-beta.6 → 1.0.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +64 -0
- package/dist/helpers.d.ts +8 -2
- package/dist/helpers.d.ts.map +1 -1
- package/dist/index.cjs +507 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +509 -26
- package/dist/index.js.map +1 -1
- package/dist/middleware.d.ts +157 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/transformers.d.ts.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/package.json +4 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.ts","../src/helpers.ts","../src/transformers.ts","../src/convert-streams.ts","../src/chat-route.ts","../src/workflow-route.ts","../src/network-route.ts","../src/to-ai-sdk-format.ts"],"names":["DefaultGeneratedFile","DefaultGeneratedFileWithType","rest","step","createUIMessageStream","registerApiRoute","createUIMessageStreamResponse"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { ChunkType, DataChunkType, NetworkChunkType, OutputSchema } from '@mastra/core/stream';\n\nexport const isDataChunkType = (chunk: any): chunk is DataChunkType => {\n return chunk && typeof chunk === 'object' && 'type' in chunk && chunk.type?.startsWith('data-');\n};\n\nexport const isMastraTextStreamChunk = (chunk: any): chunk is ChunkType<OutputSchema> => {\n return (\n chunk &&\n typeof chunk === 'object' &&\n 'type' in chunk &&\n typeof chunk.type === 'string' &&\n [\n 'text-start',\n 'text-delta',\n 'text-end',\n 'reasoning-start',\n 'reasoning-delta',\n 'reasoning-end',\n 'file',\n 'source',\n 'tool-input-start',\n 'tool-input-delta',\n 'tool-call',\n 'tool-result',\n 'tool-error',\n 'error',\n 'start-step',\n 'finish-step',\n 'start',\n 'finish',\n 'abort',\n 'tool-input-end',\n 'raw',\n ].includes(chunk.type)\n );\n};\n\nexport function safeParseErrorObject(obj: unknown): string {\n if (typeof obj !== 'object' || obj === null) {\n return String(obj);\n }\n\n try {\n const stringified = JSON.stringify(obj);\n // If JSON.stringify returns \"{}\", fall back to String() for better representation\n if (stringified === '{}') {\n return String(obj);\n }\n return stringified;\n } catch {\n // Fallback to String() if JSON.stringify fails (e.g., circular references)\n return String(obj);\n }\n}\n\nexport const isAgentExecutionDataChunkType = (\n chunk: any,\n): chunk is Omit<NetworkChunkType, 'payload'> & { payload: DataChunkType } => {\n return (\n chunk &&\n typeof chunk === 'object' &&\n 'type' in chunk &&\n chunk.type?.startsWith('agent-execution-event-') &&\n 'payload' in chunk &&\n typeof chunk.payload === 'object' &&\n 'type' in chunk.payload &&\n chunk.payload.type?.startsWith('data-')\n );\n};\n\nexport const isWorkflowExecutionDataChunkType = (\n chunk: any,\n): chunk is Omit<NetworkChunkType, 'payload'> & { payload: DataChunkType } => {\n return (\n chunk &&\n typeof chunk === 'object' &&\n 'type' in chunk &&\n chunk.type?.startsWith('workflow-execution-event-') &&\n 'payload' in chunk &&\n typeof chunk.payload === 'object' &&\n 'type' in chunk.payload &&\n chunk.payload.type?.startsWith('data-')\n );\n};\n","import { DefaultGeneratedFile, DefaultGeneratedFileWithType } from '@mastra/core/stream';\nimport type { PartialSchemaOutput, OutputSchema, DataChunkType, ChunkType } from '@mastra/core/stream';\n\nimport type { InferUIMessageChunk, ObjectStreamPart, TextStreamPart, ToolSet, UIMessage } from 'ai';\nimport { isDataChunkType } from './utils';\n\nexport type OutputChunkType<OUTPUT extends OutputSchema = undefined> =\n | TextStreamPart<ToolSet>\n | ObjectStreamPart<PartialSchemaOutput<OUTPUT>>\n | DataChunkType\n | undefined;\n\nexport type ToolAgentChunkType = { type: 'tool-agent'; toolCallId: string; payload: any };\nexport type ToolWorkflowChunkType = { type: 'tool-workflow'; toolCallId: string; payload: any };\nexport type ToolNetworkChunkType = { type: 'tool-network'; toolCallId: string; payload: any };\n\nexport function convertMastraChunkToAISDKv5<OUTPUT extends OutputSchema = undefined>({\n chunk,\n mode = 'stream',\n}: {\n chunk: ChunkType<OUTPUT>;\n mode?: 'generate' | 'stream';\n}): OutputChunkType<OUTPUT> {\n switch (chunk.type) {\n case 'start':\n return {\n type: 'start',\n };\n case 'step-start':\n const { messageId: _messageId, ...rest } = chunk.payload;\n return {\n type: 'start-step',\n request: rest.request,\n warnings: rest.warnings || [],\n };\n case 'raw':\n return {\n type: 'raw',\n rawValue: chunk.payload,\n };\n\n case 'finish': {\n return {\n type: 'finish',\n finishReason: chunk.payload.stepResult.reason,\n totalUsage: chunk.payload.output.usage,\n };\n }\n case 'reasoning-start':\n return {\n type: 'reasoning-start',\n id: chunk.payload.id,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'reasoning-delta':\n return {\n type: 'reasoning-delta',\n id: chunk.payload.id,\n text: chunk.payload.text,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'reasoning-signature':\n throw new Error('AISDKv5 chunk type \"reasoning-signature\" not supported');\n // return {\n // type: 'reasoning-signature' as const,\n // id: chunk.payload.id,\n // signature: chunk.payload.signature,\n // };\n case 'redacted-reasoning':\n throw new Error('AISDKv5 chunk type \"redacted-reasoning\" not supported');\n // return {\n // type: 'redacted-reasoning',\n // id: chunk.payload.id,\n // data: chunk.payload.data,\n // };\n case 'reasoning-end':\n return {\n type: 'reasoning-end',\n id: chunk.payload.id,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'source':\n if (chunk.payload.sourceType === 'url') {\n return {\n type: 'source',\n sourceType: 'url',\n id: chunk.payload.id,\n url: chunk.payload.url!,\n title: chunk.payload.title,\n providerMetadata: chunk.payload.providerMetadata,\n };\n } else {\n return {\n type: 'source',\n sourceType: 'document',\n id: chunk.payload.id,\n mediaType: chunk.payload.mimeType!,\n title: chunk.payload.title,\n filename: chunk.payload.filename,\n providerMetadata: chunk.payload.providerMetadata,\n };\n }\n case 'file':\n if (mode === 'generate') {\n return {\n type: 'file',\n file: new DefaultGeneratedFile({\n data: chunk.payload.data,\n mediaType: chunk.payload.mimeType,\n }),\n };\n }\n\n return {\n type: 'file',\n file: new DefaultGeneratedFileWithType({\n data: chunk.payload.data,\n mediaType: chunk.payload.mimeType,\n }),\n };\n case 'tool-call':\n return {\n type: 'tool-call',\n toolCallId: chunk.payload.toolCallId,\n providerMetadata: chunk.payload.providerMetadata,\n providerExecuted: chunk.payload.providerExecuted,\n toolName: chunk.payload.toolName,\n input: chunk.payload.args,\n };\n case 'tool-call-approval':\n return {\n type: 'data-tool-call-approval',\n id: chunk.payload.toolCallId,\n data: {\n runId: chunk.runId,\n toolCallId: chunk.payload.toolCallId,\n toolName: chunk.payload.toolName,\n args: chunk.payload.args,\n },\n } satisfies DataChunkType;\n case 'tool-call-suspended':\n return {\n type: 'data-tool-call-suspended',\n id: chunk.payload.toolCallId,\n data: {\n runId: chunk.runId,\n toolCallId: chunk.payload.toolCallId,\n toolName: chunk.payload.toolName,\n suspendPayload: chunk.payload.suspendPayload,\n },\n } satisfies DataChunkType;\n case 'tool-call-input-streaming-start':\n return {\n type: 'tool-input-start',\n id: chunk.payload.toolCallId,\n toolName: chunk.payload.toolName,\n dynamic: !!chunk.payload.dynamic,\n providerMetadata: chunk.payload.providerMetadata,\n providerExecuted: chunk.payload.providerExecuted,\n };\n case 'tool-call-input-streaming-end':\n return {\n type: 'tool-input-end',\n id: chunk.payload.toolCallId,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'tool-call-delta':\n return {\n type: 'tool-input-delta',\n id: chunk.payload.toolCallId,\n delta: chunk.payload.argsTextDelta,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'step-finish': {\n const { request: _request, providerMetadata, ...rest } = chunk.payload.metadata;\n return {\n type: 'finish-step',\n response: {\n id: chunk.payload.id || '',\n timestamp: new Date(),\n modelId: (rest.modelId as string) || '',\n ...rest,\n },\n usage: chunk.payload.output.usage,\n finishReason: chunk.payload.stepResult.reason,\n providerMetadata,\n };\n }\n case 'text-delta':\n return {\n type: 'text-delta',\n id: chunk.payload.id,\n text: chunk.payload.text,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'text-end':\n return {\n type: 'text-end',\n id: chunk.payload.id,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'text-start':\n return {\n type: 'text-start',\n id: chunk.payload.id,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'tool-result':\n return {\n type: 'tool-result',\n input: chunk.payload.args,\n toolCallId: chunk.payload.toolCallId,\n providerExecuted: chunk.payload.providerExecuted,\n toolName: chunk.payload.toolName,\n output: chunk.payload.result,\n // providerMetadata: chunk.payload.providerMetadata, // AI v5 types don't show this?\n };\n case 'tool-error':\n return {\n type: 'tool-error',\n error: chunk.payload.error,\n input: chunk.payload.args,\n toolCallId: chunk.payload.toolCallId,\n providerExecuted: chunk.payload.providerExecuted,\n toolName: chunk.payload.toolName,\n // providerMetadata: chunk.payload.providerMetadata, // AI v5 types don't show this?\n };\n\n case 'abort':\n return {\n type: 'abort',\n };\n\n case 'error':\n return {\n type: 'error',\n error: chunk.payload.error,\n };\n\n case 'object':\n return {\n type: 'object',\n object: chunk.object,\n };\n case 'tripwire':\n return {\n type: 'data-tripwire',\n data: {\n tripwireReason: chunk.payload.tripwireReason,\n },\n };\n default:\n if (chunk.type && 'payload' in chunk && chunk.payload) {\n return {\n type: chunk.type as string,\n ...(chunk.payload || {}),\n } as OutputChunkType<OUTPUT>;\n }\n if ('type' in chunk && chunk.type?.startsWith('data-')) {\n return chunk as any;\n }\n return;\n }\n}\n\nexport function convertFullStreamChunkToUIMessageStream<UI_MESSAGE extends UIMessage>({\n part,\n messageMetadataValue,\n sendReasoning,\n sendSources,\n onError,\n sendStart,\n sendFinish,\n responseMessageId,\n}: {\n // tool-output is a custom mastra chunk type used in ToolStream\n part: TextStreamPart<ToolSet> | DataChunkType | { type: 'tool-output'; toolCallId: string; output: any };\n messageMetadataValue?: unknown;\n sendReasoning?: boolean;\n sendSources?: boolean;\n onError: (error: unknown) => string;\n sendStart?: boolean;\n sendFinish?: boolean;\n responseMessageId?: string;\n}): InferUIMessageChunk<UI_MESSAGE> | ToolAgentChunkType | ToolWorkflowChunkType | ToolNetworkChunkType | undefined {\n const partType = part?.type;\n\n switch (partType) {\n case 'text-start': {\n return {\n type: 'text-start',\n id: part.id,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n\n case 'text-delta': {\n return {\n type: 'text-delta',\n id: part.id,\n delta: part.text,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n\n case 'text-end': {\n return {\n type: 'text-end',\n id: part.id,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n\n case 'reasoning-start': {\n return {\n type: 'reasoning-start',\n id: part.id,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n\n case 'reasoning-delta': {\n if (sendReasoning) {\n return {\n type: 'reasoning-delta',\n id: part.id,\n delta: part.text,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n return;\n }\n\n case 'reasoning-end': {\n return {\n type: 'reasoning-end',\n id: part.id,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n\n case 'file': {\n return {\n type: 'file',\n mediaType: part.file.mediaType,\n url: `data:${part.file.mediaType};base64,${part.file.base64}`,\n };\n }\n\n case 'source': {\n if (sendSources && part.sourceType === 'url') {\n return {\n type: 'source-url',\n sourceId: part.id,\n url: part.url,\n title: part.title,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n\n if (sendSources && part.sourceType === 'document') {\n return {\n type: 'source-document',\n sourceId: part.id,\n mediaType: part.mediaType,\n title: part.title,\n filename: part.filename,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n return;\n }\n\n case 'tool-input-start': {\n return {\n type: 'tool-input-start',\n toolCallId: part.id,\n toolName: part.toolName,\n ...(part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {}),\n ...(part.dynamic != null ? { dynamic: part.dynamic } : {}),\n };\n }\n\n case 'tool-input-delta': {\n return {\n type: 'tool-input-delta',\n toolCallId: part.id,\n inputTextDelta: part.delta,\n };\n }\n\n case 'tool-call': {\n return {\n type: 'tool-input-available',\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n ...(part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {}),\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n ...(part.dynamic != null ? { dynamic: part.dynamic } : {}),\n };\n }\n\n case 'tool-result': {\n return {\n type: 'tool-output-available',\n toolCallId: part.toolCallId,\n output: part.output,\n ...(part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {}),\n ...(part.dynamic != null ? { dynamic: part.dynamic } : {}),\n };\n }\n\n case 'tool-output': {\n if (part.output.from === 'AGENT') {\n return {\n type: 'tool-agent',\n toolCallId: part.toolCallId,\n payload: part.output,\n };\n } else if (part.output.from === 'WORKFLOW') {\n return {\n type: 'tool-workflow',\n toolCallId: part.toolCallId,\n payload: part.output,\n };\n } else if (part.output.from === 'NETWORK') {\n return {\n type: 'tool-network',\n toolCallId: part.toolCallId,\n payload: part.output,\n };\n } else if (isDataChunkType(part.output)) {\n if (!('data' in part.output)) {\n throw new Error(\n `UI Messages require a data property when using data- prefixed chunks \\n ${JSON.stringify(part)}`,\n );\n }\n return part.output;\n }\n return;\n }\n\n case 'tool-error': {\n return {\n type: 'tool-output-error',\n toolCallId: part.toolCallId,\n errorText: onError(part.error),\n ...(part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {}),\n ...(part.dynamic != null ? { dynamic: part.dynamic } : {}),\n };\n }\n\n case 'error': {\n return {\n type: 'error',\n errorText: onError(part.error),\n };\n }\n\n case 'start-step': {\n return { type: 'start-step' };\n }\n\n case 'finish-step': {\n return { type: 'finish-step' };\n }\n\n case 'start': {\n if (sendStart) {\n return {\n type: 'start' as const,\n ...(messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {}),\n ...(responseMessageId != null ? { messageId: responseMessageId } : {}),\n } as InferUIMessageChunk<UI_MESSAGE>;\n }\n return;\n }\n\n case 'finish': {\n if (sendFinish) {\n return {\n type: 'finish' as const,\n ...(messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {}),\n } as InferUIMessageChunk<UI_MESSAGE>;\n }\n return;\n }\n\n case 'abort': {\n return part;\n }\n\n case 'tool-input-end': {\n return;\n }\n\n case 'raw': {\n // Raw chunks are not included in UI message streams\n // as they contain provider-specific data for developer use\n return;\n }\n\n default: {\n // return the chunk as is if it's not a known type\n if (isDataChunkType(part)) {\n if (!('data' in part)) {\n throw new Error(\n `UI Messages require a data property when using data- prefixed chunks \\n ${JSON.stringify(part)}`,\n );\n }\n return part;\n }\n\n return;\n }\n }\n}\n","import type { LLMStepResult } from '@mastra/core/agent';\nimport type { ChunkType, DataChunkType, NetworkChunkType } from '@mastra/core/stream';\nimport type { WorkflowRunStatus, WorkflowStepStatus, WorkflowStreamEvent } from '@mastra/core/workflows';\nimport type { InferUIMessageChunk, TextStreamPart, ToolSet, UIMessage, UIMessageStreamOptions } from 'ai';\nimport type { ZodType } from 'zod';\nimport { convertMastraChunkToAISDKv5, convertFullStreamChunkToUIMessageStream } from './helpers';\nimport type { ToolAgentChunkType, ToolWorkflowChunkType, ToolNetworkChunkType } from './helpers';\nimport {\n isAgentExecutionDataChunkType,\n isDataChunkType,\n isWorkflowExecutionDataChunkType,\n safeParseErrorObject,\n isMastraTextStreamChunk,\n} from './utils';\n\ntype LanguageModelV2Usage = {\n /**\nThe number of input (prompt) tokens used.\n */\n inputTokens: number | undefined;\n /**\nThe number of output (completion) tokens used.\n */\n outputTokens: number | undefined;\n /**\nThe total number of tokens as reported by the provider.\nThis number might be different from the sum of `inputTokens` and `outputTokens`\nand e.g. include reasoning tokens or other overhead.\n */\n totalTokens: number | undefined;\n /**\nThe number of reasoning tokens used.\n */\n reasoningTokens?: number | undefined;\n /**\nThe number of cached input tokens.\n */\n cachedInputTokens?: number | undefined;\n};\n\ntype StepResult = {\n name: string;\n status: WorkflowStepStatus;\n input: Record<string, unknown> | null;\n output: unknown | null;\n suspendPayload: Record<string, unknown> | null;\n resumePayload: Record<string, unknown> | null;\n};\n\nexport type WorkflowDataPart = {\n type: 'data-workflow' | 'data-tool-workflow';\n id: string;\n data: {\n name: string;\n status: WorkflowRunStatus;\n steps: Record<string, StepResult>;\n output: {\n usage: {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n };\n } | null;\n };\n};\n\nexport type NetworkDataPart = {\n type: 'data-network' | 'data-tool-network';\n id: string;\n data: {\n name: string;\n status: 'running' | 'finished';\n steps: StepResult[];\n usage: LanguageModelV2Usage | null;\n output: unknown | null;\n };\n};\n\nexport type AgentDataPart = {\n type: 'data-tool-agent';\n id: string;\n data: LLMStepResult;\n};\n\n// used so it's not serialized to JSON\nconst PRIMITIVE_CACHE_SYMBOL = Symbol('primitive-cache');\n\nexport function WorkflowStreamToAISDKTransformer({\n includeTextStreamParts,\n}: { includeTextStreamParts?: boolean } = {}) {\n const bufferedWorkflows = new Map<\n string,\n {\n name: string;\n steps: Record<string, StepResult>;\n }\n >();\n return new TransformStream<\n ChunkType,\n | {\n data?: string;\n type?: 'start' | 'finish';\n }\n | InferUIMessageChunk<UIMessage>\n | WorkflowDataPart\n | ChunkType\n | ToolAgentChunkType\n | ToolWorkflowChunkType\n | ToolNetworkChunkType\n >({\n start(controller) {\n controller.enqueue({\n type: 'start',\n });\n },\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n });\n },\n transform(chunk, controller) {\n const transformed = transformWorkflow<any>(chunk, bufferedWorkflows, false, includeTextStreamParts);\n if (transformed) controller.enqueue(transformed);\n },\n });\n}\n\nexport function AgentNetworkToAISDKTransformer() {\n const bufferedNetworks = new Map<\n string,\n {\n name: string;\n steps: (StepResult & {\n id: string;\n iteration: number;\n task: null | Record<string, unknown>;\n input: StepResult['input'];\n [PRIMITIVE_CACHE_SYMBOL]: Map<string, any>;\n })[];\n usage: LanguageModelV2Usage | null;\n output: unknown | null;\n }\n >();\n\n return new TransformStream<\n NetworkChunkType,\n | {\n data?: string;\n type?: 'start' | 'finish';\n }\n | NetworkDataPart\n | InferUIMessageChunk<UIMessage>\n | DataChunkType\n >({\n start(controller) {\n controller.enqueue({\n type: 'start',\n });\n },\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n });\n },\n transform(chunk, controller) {\n const transformed = transformNetwork(chunk, bufferedNetworks);\n if (transformed) controller.enqueue(transformed);\n },\n });\n}\n\nexport function AgentStreamToAISDKTransformer<TOutput extends ZodType<any>>({\n lastMessageId,\n sendStart,\n sendFinish,\n sendReasoning,\n sendSources,\n messageMetadata,\n onError,\n}: {\n lastMessageId?: string;\n sendStart?: boolean;\n sendFinish?: boolean;\n sendReasoning?: boolean;\n sendSources?: boolean;\n messageMetadata?: UIMessageStreamOptions<UIMessage>['messageMetadata'];\n onError?: UIMessageStreamOptions<UIMessage>['onError'];\n}) {\n let bufferedSteps = new Map<string, any>();\n let tripwireOccurred = false;\n let finishEventSent = false;\n\n return new TransformStream<ChunkType<TOutput>, object>({\n transform(chunk, controller) {\n // Track if tripwire occurred\n if (chunk.type === 'tripwire') {\n tripwireOccurred = true;\n }\n\n // Track if finish event was sent\n if (chunk.type === 'finish') {\n finishEventSent = true;\n }\n\n const part = convertMastraChunkToAISDKv5({ chunk, mode: 'stream' });\n\n const transformedChunk = convertFullStreamChunkToUIMessageStream<any>({\n part: part as any,\n sendReasoning,\n sendSources,\n messageMetadataValue: messageMetadata?.({ part: part as TextStreamPart<ToolSet> }),\n sendStart,\n sendFinish,\n responseMessageId: lastMessageId,\n onError(error) {\n return onError ? onError(error) : safeParseErrorObject(error);\n },\n });\n\n if (transformedChunk) {\n if (transformedChunk.type === 'tool-agent') {\n const payload = transformedChunk.payload;\n const agentTransformed = transformAgent<TOutput>(payload, bufferedSteps);\n if (agentTransformed) controller.enqueue(agentTransformed);\n } else if (transformedChunk.type === 'tool-workflow') {\n const payload = transformedChunk.payload;\n const workflowChunk = transformWorkflow(payload, bufferedSteps, true);\n if (workflowChunk) controller.enqueue(workflowChunk);\n } else if (transformedChunk.type === 'tool-network') {\n const payload = transformedChunk.payload;\n const networkChunk = transformNetwork(payload, bufferedSteps, true);\n if (networkChunk) controller.enqueue(networkChunk);\n } else {\n controller.enqueue(transformedChunk);\n }\n }\n },\n flush(controller) {\n // If tripwire occurred but no finish event was sent, send a finish event with 'other' reason\n if (tripwireOccurred && !finishEventSent && sendFinish) {\n // Send a finish event with finishReason 'other' to ensure graceful stream completion\n // AI SDK doesn't support tripwires, so we use 'other' as the finish reason\n controller.enqueue({\n type: 'finish',\n finishReason: 'other',\n } as any);\n }\n },\n });\n}\n\nexport function transformAgent<TOutput extends ZodType<any>>(\n payload: ChunkType<TOutput>,\n bufferedSteps: Map<string, any>,\n) {\n let hasChanged = false;\n switch (payload.type) {\n case 'start':\n bufferedSteps.set(payload.runId!, {\n id: payload.payload.id,\n object: null,\n finishReason: null,\n usage: null,\n warnings: [],\n text: '',\n reasoning: [],\n sources: [],\n files: [],\n toolCalls: [],\n toolResults: [],\n request: {},\n response: {\n id: '',\n timestamp: new Date(),\n modelId: '',\n messages: [],\n },\n providerMetadata: undefined,\n steps: [],\n status: 'running',\n });\n hasChanged = true;\n break;\n case 'finish':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n finishReason: payload.payload.stepResult.reason,\n usage: payload.payload?.output?.usage,\n warnings: payload.payload?.stepResult?.warnings,\n steps: bufferedSteps.get(payload.runId!)!.steps,\n status: 'finished',\n });\n hasChanged = true;\n break;\n case 'text-delta':\n const prevData = bufferedSteps.get(payload.runId!)!;\n bufferedSteps.set(payload.runId!, {\n ...prevData,\n text: `${prevData.text}${payload.payload.text}`,\n });\n hasChanged = true;\n break;\n case 'reasoning-delta':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n reasoning: [...bufferedSteps.get(payload.runId)!.reasoning, payload.payload.text],\n });\n hasChanged = true;\n break;\n case 'source':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n sources: [...bufferedSteps.get(payload.runId)!.sources, payload.payload],\n });\n hasChanged = true;\n break;\n case 'file':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n files: [...bufferedSteps.get(payload.runId)!.files, payload.payload],\n });\n hasChanged = true;\n break;\n case 'tool-call':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n toolCalls: [...bufferedSteps.get(payload.runId)!.toolCalls, payload.payload],\n });\n hasChanged = true;\n break;\n case 'tool-result':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n toolResults: [...bufferedSteps.get(payload.runId)!.toolResults, payload.payload],\n });\n hasChanged = true;\n break;\n case 'object-result':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n object: payload.object,\n });\n hasChanged = true;\n break;\n case 'object':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n object: payload.object,\n });\n hasChanged = true;\n break;\n case 'step-finish':\n const currentRun = bufferedSteps.get(payload.runId!)!;\n const stepResult = {\n ...bufferedSteps.get(payload.runId!)!,\n stepType: currentRun.steps.length === 0 ? 'initial' : 'tool-result',\n reasoningText: bufferedSteps.get(payload.runId!)!.reasoning.join(''),\n staticToolCalls: bufferedSteps\n .get(payload.runId!)!\n .toolCalls.filter((part: any) => part.type === 'tool-call' && part.payload?.dynamic === false),\n dynamicToolCalls: bufferedSteps\n .get(payload.runId!)!\n .toolCalls.filter((part: any) => part.type === 'tool-call' && part.payload?.dynamic === true),\n staticToolResults: bufferedSteps\n .get(payload.runId!)!\n .toolResults.filter((part: any) => part.type === 'tool-result' && part.payload?.dynamic === false),\n dynamicToolResults: bufferedSteps\n .get(payload.runId!)!\n .toolResults.filter((part: any) => part.type === 'tool-result' && part.payload?.dynamic === true),\n finishReason: payload.payload.stepResult.reason,\n usage: payload.payload.output.usage,\n warnings: payload.payload.stepResult.warnings || [],\n response: {\n id: payload.payload.id || '',\n timestamp: (payload.payload.metadata?.timestamp as Date) || new Date(),\n modelId: (payload.payload.metadata?.modelId as string) || (payload.payload.metadata?.model as string) || '',\n ...bufferedSteps.get(payload.runId!)!.response,\n messages: bufferedSteps.get(payload.runId!)!.response.messages || [],\n },\n };\n\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!)!,\n usage: payload.payload.output.usage,\n warnings: payload.payload.stepResult.warnings || [],\n steps: [...bufferedSteps.get(payload.runId!)!.steps, stepResult],\n });\n hasChanged = true;\n break;\n default:\n break;\n }\n\n if (hasChanged) {\n return {\n type: 'data-tool-agent',\n id: payload.runId!,\n data: bufferedSteps.get(payload.runId!),\n } satisfies AgentDataPart;\n }\n return null;\n}\n\nexport function transformWorkflow<TOutput extends ZodType<any>>(\n payload: ChunkType<TOutput>,\n bufferedWorkflows: Map<\n string,\n {\n name: string;\n steps: Record<string, StepResult>;\n }\n >,\n isNested?: boolean,\n includeTextStreamParts?: boolean,\n) {\n switch (payload.type) {\n case 'workflow-start':\n bufferedWorkflows.set(payload.runId!, {\n name: payload.payload.workflowId,\n steps: {},\n });\n return {\n type: isNested ? 'data-tool-workflow' : 'data-workflow',\n id: payload.runId,\n data: {\n name: bufferedWorkflows.get(payload.runId!)!.name,\n status: 'running',\n steps: bufferedWorkflows.get(payload.runId!)!.steps,\n output: null,\n },\n } as const;\n case 'workflow-step-start': {\n const current = bufferedWorkflows.get(payload.runId!) || { name: '', steps: {} };\n current.steps[payload.payload.id] = {\n name: payload.payload.id,\n status: payload.payload.status,\n input: payload.payload.payload ?? null,\n output: null,\n suspendPayload: null,\n resumePayload: null,\n };\n bufferedWorkflows.set(payload.runId!, current);\n return {\n type: isNested ? 'data-tool-workflow' : 'data-workflow',\n id: payload.runId,\n data: {\n name: current.name,\n status: 'running',\n steps: current.steps,\n output: null,\n },\n } as const;\n }\n case 'workflow-step-result': {\n const current = bufferedWorkflows.get(payload.runId!);\n if (!current) return null;\n current.steps[payload.payload.id] = {\n ...current.steps[payload.payload.id]!,\n status: payload.payload.status,\n output: payload.payload.output ?? null,\n };\n return {\n type: isNested ? 'data-tool-workflow' : 'data-workflow',\n id: payload.runId,\n data: {\n name: current.name,\n status: 'running',\n steps: current.steps,\n output: null,\n },\n } as const;\n }\n case 'workflow-step-suspended': {\n const current = bufferedWorkflows.get(payload.runId!);\n if (!current) return null;\n current.steps[payload.payload.id] = {\n ...current.steps[payload.payload.id]!,\n status: payload.payload.status,\n suspendPayload: payload.payload.suspendPayload ?? null,\n resumePayload: payload.payload.resumePayload ?? null,\n output: null,\n } satisfies StepResult;\n return {\n type: isNested ? 'data-tool-workflow' : 'data-workflow',\n id: payload.runId,\n data: {\n name: current.name,\n status: 'suspended',\n steps: current.steps,\n output: null,\n },\n } as const;\n }\n case 'workflow-finish': {\n const current = bufferedWorkflows.get(payload.runId!);\n if (!current) return null;\n return {\n type: isNested ? 'data-tool-workflow' : 'data-workflow',\n id: payload.runId,\n data: {\n name: current.name,\n steps: current.steps,\n output: payload.payload.output ?? null,\n status: payload.payload.workflowStatus,\n },\n } as const;\n }\n case 'workflow-step-output': {\n const output = payload.payload.output;\n\n if (includeTextStreamParts && output && isMastraTextStreamChunk(output)) {\n const part = convertMastraChunkToAISDKv5({ chunk: output, mode: 'stream' });\n\n const transformedChunk = convertFullStreamChunkToUIMessageStream<any>({\n part: part as any,\n onError(error) {\n return safeParseErrorObject(error);\n },\n });\n\n return transformedChunk;\n }\n\n if (output && isDataChunkType(output)) {\n if (!('data' in output)) {\n throw new Error(\n `UI Messages require a data property when using data- prefixed chunks \\n ${JSON.stringify(output)}`,\n );\n }\n return output;\n }\n return null;\n }\n default: {\n // return the chunk as is if it's not a known type\n if (isDataChunkType(payload)) {\n if (!('data' in payload)) {\n throw new Error(\n `UI Messages require a data property when using data- prefixed chunks \\n ${JSON.stringify(payload)}`,\n );\n }\n return payload;\n }\n return null;\n }\n }\n}\n\nexport function transformNetwork(\n payload: NetworkChunkType,\n bufferedNetworks: Map<\n string,\n {\n name: string;\n steps: (StepResult & {\n id: string;\n iteration: number;\n task: null | Record<string, unknown>;\n input: StepResult['input'];\n [PRIMITIVE_CACHE_SYMBOL]: Map<string, any>;\n })[];\n usage: LanguageModelV2Usage | null;\n output: unknown | null;\n }\n >,\n isNested?: boolean,\n): InferUIMessageChunk<UIMessage> | NetworkDataPart | DataChunkType | null {\n switch (payload.type) {\n case 'routing-agent-start': {\n if (!bufferedNetworks.has(payload.runId)) {\n bufferedNetworks.set(payload.runId, {\n name: payload.payload.networkId,\n steps: [],\n usage: null,\n output: null,\n });\n }\n\n const current = bufferedNetworks.get(payload.runId)!;\n current.steps.push({\n id: payload.payload.runId,\n name: payload.payload.agentId,\n status: 'running',\n iteration: payload.payload.inputData.iteration,\n input: {\n task: payload.payload.inputData.task,\n threadId: payload.payload.inputData.threadId,\n threadResourceId: payload.payload.inputData.threadResourceId,\n },\n output: '',\n task: null,\n suspendPayload: null,\n resumePayload: null,\n [PRIMITIVE_CACHE_SYMBOL]: new Map(),\n });\n\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId,\n data: {\n name: bufferedNetworks.get(payload.runId)!.name,\n status: 'running',\n usage: null,\n steps: bufferedNetworks.get(payload.runId)!.steps,\n output: null,\n },\n } as const;\n }\n case 'routing-agent-text-start': {\n const current = bufferedNetworks.get(payload.runId!);\n if (!current) return null;\n return {\n type: 'text-start',\n id: payload.runId!,\n } as const;\n }\n case 'routing-agent-text-delta': {\n const current = bufferedNetworks.get(payload.runId!);\n if (!current) return null;\n return {\n type: 'text-delta',\n id: payload.runId!,\n delta: payload.payload.text,\n } as const;\n }\n case 'agent-execution-start': {\n const current = bufferedNetworks.get(payload.runId);\n\n if (!current) return null;\n\n current.steps.push({\n id: payload.payload.runId,\n name: payload.payload.agentId,\n status: 'running',\n iteration: payload.payload.args?.iteration ?? 0,\n input: { prompt: payload.payload.args?.prompt ?? '' },\n output: null,\n task: null,\n suspendPayload: null,\n resumePayload: null,\n [PRIMITIVE_CACHE_SYMBOL]: new Map(),\n });\n bufferedNetworks.set(payload.runId, current);\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId,\n data: {\n ...current,\n status: 'running',\n },\n } as const;\n }\n case 'workflow-execution-start': {\n const current = bufferedNetworks.get(payload.runId);\n\n if (!current) return null;\n\n current.steps.push({\n id: payload.payload.runId,\n name: payload.payload.workflowId,\n status: 'running',\n iteration: payload.payload.args?.iteration ?? 0,\n input: { prompt: payload.payload.args?.prompt ?? '' },\n output: null,\n task: null,\n suspendPayload: null,\n resumePayload: null,\n [PRIMITIVE_CACHE_SYMBOL]: new Map(),\n });\n bufferedNetworks.set(payload.runId, current);\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId,\n data: {\n ...current,\n status: 'running',\n },\n } as const;\n }\n case 'tool-execution-start': {\n const current = bufferedNetworks.get(payload.runId);\n\n if (!current) return null;\n\n current.steps.push({\n id: payload.payload.args.toolCallId!,\n name: payload.payload.args?.toolName!,\n status: 'running',\n iteration: payload.payload.args?.iteration ? Number(payload.payload.args.iteration) : 0,\n task: {\n id: payload.payload.args?.toolName!,\n },\n input: payload.payload.args?.args || null,\n output: null,\n suspendPayload: null,\n resumePayload: null,\n [PRIMITIVE_CACHE_SYMBOL]: new Map(),\n });\n\n bufferedNetworks.set(payload.runId, current);\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId,\n data: {\n ...current,\n status: 'running',\n },\n } as const;\n }\n case 'agent-execution-end': {\n const current = bufferedNetworks.get(payload.runId!);\n if (!current) return null;\n\n const stepId = payload.payload.runId;\n const step = current.steps.find(step => step.id === stepId);\n if (!step) {\n return null;\n }\n\n step.status = 'success';\n step.output = payload.payload.result;\n\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId!,\n data: {\n ...current,\n usage: payload.payload?.usage ?? current.usage,\n status: 'running',\n output: payload.payload.result ?? current.output,\n },\n } as const;\n }\n case 'tool-execution-end': {\n const current = bufferedNetworks.get(payload.runId!);\n if (!current) return null;\n\n const stepId = payload.payload.toolCallId;\n const step = current.steps.find(step => step.id === stepId);\n if (!step) {\n return null;\n }\n\n step.status = 'success';\n step.output = payload.payload.result;\n\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId!,\n data: {\n ...current,\n status: 'running',\n output: payload.payload.result ?? current.output,\n },\n } as const;\n }\n case 'workflow-execution-end': {\n const current = bufferedNetworks.get(payload.runId);\n if (!current) return null;\n\n const stepId = payload.payload.runId;\n const step = current.steps.find(step => step.id === stepId);\n\n if (!step) {\n return null;\n }\n\n step.status = 'success';\n step.output = payload.payload.result;\n\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId!,\n data: {\n ...current,\n usage: payload.payload?.usage ?? current.usage,\n status: 'running',\n output: payload.payload.result ?? current.output,\n },\n } as const;\n }\n case 'routing-agent-end': {\n const current = bufferedNetworks.get(payload.runId);\n if (!current) return null;\n\n const stepId = payload.payload.runId;\n const step = current.steps.find(step => step.id === stepId);\n\n if (!step) {\n return null;\n }\n\n step.status = 'success';\n step.task = {\n id: payload.payload.primitiveId,\n type: payload.payload.primitiveType,\n name: payload.payload.task,\n reason: payload.payload.selectionReason,\n };\n step.output = payload.payload.result;\n\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId,\n data: {\n ...current,\n usage: payload.payload?.usage ?? current.usage,\n output: payload.payload?.result ?? current.output,\n },\n } as const;\n }\n case 'network-execution-event-step-finish': {\n const current = bufferedNetworks.get(payload.runId);\n if (!current) return null;\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId,\n data: {\n ...current,\n status: 'finished',\n output: payload.payload?.result ?? current.output,\n },\n } as const;\n }\n case 'network-execution-event-finish': {\n const current = bufferedNetworks.get(payload.runId!);\n if (!current) return null;\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId!,\n data: {\n ...current,\n usage: payload.payload?.usage ?? current.usage,\n status: 'finished',\n output: payload.payload?.result ?? current.output,\n },\n } as const;\n }\n default: {\n if (payload.type.startsWith('agent-execution-event-')) {\n const stepId = payload.payload.runId;\n const current = bufferedNetworks.get(payload.runId!);\n if (!current) return null;\n\n const step = current.steps.find(step => step.id === stepId);\n if (!step) {\n return null;\n }\n\n step[PRIMITIVE_CACHE_SYMBOL] = step[PRIMITIVE_CACHE_SYMBOL] || new Map();\n const result = transformAgent(payload.payload as ChunkType<any>, step[PRIMITIVE_CACHE_SYMBOL]);\n if (result) {\n const { request, response, ...data } = result.data;\n step.task = data;\n }\n }\n\n if (payload.type.startsWith('workflow-execution-event-')) {\n const stepId = payload.payload.runId;\n const current = bufferedNetworks.get(payload.runId!);\n if (!current) return null;\n\n const step = current.steps.find(step => step.id === stepId);\n if (!step) {\n return null;\n }\n\n step[PRIMITIVE_CACHE_SYMBOL] = step[PRIMITIVE_CACHE_SYMBOL] || new Map();\n const result = transformWorkflow(payload.payload as WorkflowStreamEvent, step[PRIMITIVE_CACHE_SYMBOL]);\n if (result && 'data' in result) {\n const data = result.data;\n step.task = data;\n\n if (data.name && step.task) {\n step.task.id = data.name;\n }\n }\n }\n\n // return the chunk as is if it's not a known type\n if (isDataChunkType(payload)) {\n if (!('data' in payload)) {\n throw new Error(\n `UI Messages require a data property when using data- prefixed chunks \\n ${JSON.stringify(payload)}`,\n );\n }\n\n const { type, data } = payload;\n return { type, data };\n }\n if (isAgentExecutionDataChunkType(payload)) {\n if (!('data' in payload.payload)) {\n throw new Error(\n `UI Messages require a data property when using data- prefixed chunks \\n ${JSON.stringify(payload)}`,\n );\n }\n\n const { type, data } = payload.payload;\n return { type, data };\n }\n if (isWorkflowExecutionDataChunkType(payload)) {\n if (!('data' in payload.payload)) {\n throw new Error(\n `UI Messages require a data property when using data- prefixed chunks \\n ${JSON.stringify(payload)}`,\n );\n }\n const { type, data } = payload.payload;\n return { type, data };\n }\n return null;\n }\n }\n}\n","import type {\n MastraModelOutput,\n ChunkType,\n OutputSchema,\n MastraAgentNetworkStream,\n WorkflowRunOutput,\n} from '@mastra/core/stream';\nimport type { MastraWorkflowStream, Step, WorkflowResult } from '@mastra/core/workflows';\nimport type { InferUIMessageChunk, UIMessage, UIMessageStreamOptions } from 'ai';\nimport type { ZodObject, ZodType } from 'zod';\nimport {\n AgentNetworkToAISDKTransformer,\n AgentStreamToAISDKTransformer,\n WorkflowStreamToAISDKTransformer,\n} from './transformers';\n\ntype ToAISDKFrom = 'agent' | 'network' | 'workflow';\n\n/**\n * Converts Mastra streams (workflow, agent network, or agent) to AI SDK v5 compatible streams.\n *\n * This function transforms various Mastra stream types into ReadableStream objects that are compatible with the AI SDK v5, enabling seamless integration with AI SDK's streaming capabilities.\n *\n *\n * @param {MastraWorkflowStream | WorkflowRunOutput | MastraAgentNetworkStream | MastraModelOutput} stream\n * The Mastra stream to convert. Can be one of:\n * - MastraWorkflowStream: A workflow execution stream\n * - WorkflowRunOutput: The output of a workflow run\n * - MastraAgentNetworkStream: An agent network execution stream\n * - MastraModelOutput: An agent model output stream\n *\n * @param {Object} options - Conversion options\n * @param {'workflow' | 'network' | 'agent'} options.from - The type of stream being converted. Defaults to 'agent'\n * @param {string} [options.lastMessageId] - (Agent only) The ID of the last message in the conversation\n * @param {boolean} [options.sendStart=true] - (Agent only) Whether to send start events. Defaults to true\n * @param {boolean} [options.sendFinish=true] - (Agent only) Whether to send finish events. Defaults to true\n * @param {boolean} [options.sendReasoning] - (Agent only) Whether to include reasoning in the output\n * @param {boolean} [options.sendSources] - (Agent only) Whether to include sources in the output\n * @param {Function} [options.messageMetadata] - (Agent only) A function that receives the current stream part and returns metadata to attach to start and finish chunks\n * @param {Function} [options.onError] - (Agent only) A function to handle errors during stream conversion. Receives the error and should return a string representation\n *\n * @returns {ReadableStream<InferUIMessageChunk<UIMessage>>} A ReadableStream compatible with AI SDK v5\n *\n * @example\n * // Convert a workflow stream\n * const workflowStream = await workflowRun.stream(...);\n * const aiSDKStream = toAISdkV5Stream(workflowStream, { from: 'workflow' });\n *\n * @example\n * // Convert an agent network stream\n * const networkStream = await agentNetwork.network(...);\n * const aiSDKStream = toAISdkV5Stream(networkStream, { from: 'network' });\n *\n * @example\n * // Convert an agent stream with custom options\n * const agentStream = await agent.stream(...);\n * const aiSDKStream = toAISdkV5Stream(agentStream, {\n * from: 'agent',\n * lastMessageId: 'msg-123',\n * sendReasoning: true,\n * sendSources: true\n * });\n *\n * @example\n * // Convert an agent stream with messageMetadata\n * const aiSDKStream = toAISdkV5Stream(agentStream, {\n * from: 'agent',\n * messageMetadata: ({ part }) => ({\n * timestamp: Date.now(),\n * partType: part.type\n * })\n * });\n */\nexport function toAISdkV5Stream<\n TOutput extends ZodType<any>,\n TInput extends ZodType<any>,\n TSteps extends Step<string, any, any, any, any, any>[],\n TState extends ZodObject<any>,\n>(\n stream: MastraWorkflowStream<TState, TInput, TOutput, TSteps>,\n options: { from: 'workflow'; includeTextStreamParts?: boolean },\n): ReadableStream<InferUIMessageChunk<UIMessage>>;\nexport function toAISdkV5Stream<\n TOutput extends ZodType<any>,\n TInput extends ZodType<any>,\n TSteps extends Step<string, any, any, any, any, any>[],\n TState extends ZodObject<any>,\n>(\n stream: WorkflowRunOutput<WorkflowResult<TState, TInput, TOutput, TSteps>>,\n options: { from: 'workflow'; includeTextStreamParts?: boolean },\n): ReadableStream<InferUIMessageChunk<UIMessage>>;\nexport function toAISdkV5Stream(\n stream: MastraAgentNetworkStream,\n options: { from: 'network' },\n): ReadableStream<InferUIMessageChunk<UIMessage>>;\nexport function toAISdkV5Stream<TOutput extends OutputSchema>(\n stream: MastraModelOutput<TOutput>,\n options: {\n from: 'agent';\n lastMessageId?: string;\n sendStart?: boolean;\n sendFinish?: boolean;\n sendReasoning?: boolean;\n sendSources?: boolean;\n messageMetadata?: UIMessageStreamOptions<UIMessage>['messageMetadata'];\n onError?: UIMessageStreamOptions<UIMessage>['onError'];\n },\n): ReadableStream<InferUIMessageChunk<UIMessage>>;\nexport function toAISdkV5Stream(\n stream:\n | MastraAgentNetworkStream\n | MastraWorkflowStream<any, any, any, any>\n | MastraModelOutput\n | WorkflowRunOutput<WorkflowResult<any, any, any, any>>,\n options: {\n from: ToAISDKFrom;\n includeTextStreamParts?: boolean;\n lastMessageId?: string;\n sendStart?: boolean;\n sendFinish?: boolean;\n sendReasoning?: boolean;\n sendSources?: boolean;\n messageMetadata?: UIMessageStreamOptions<UIMessage>['messageMetadata'];\n onError?: UIMessageStreamOptions<UIMessage>['onError'];\n } = {\n from: 'agent',\n sendStart: true,\n sendFinish: true,\n },\n): ReadableStream<InferUIMessageChunk<UIMessage>> {\n const from = options?.from;\n\n if (from === 'workflow') {\n const includeTextStreamParts = options?.includeTextStreamParts ?? true;\n\n return (stream as ReadableStream<ChunkType>).pipeThrough(\n WorkflowStreamToAISDKTransformer({ includeTextStreamParts }),\n ) as ReadableStream<InferUIMessageChunk<UIMessage>>;\n }\n\n if (from === 'network') {\n return (stream as ReadableStream<ChunkType>).pipeThrough(AgentNetworkToAISDKTransformer()) as ReadableStream<\n InferUIMessageChunk<UIMessage>\n >;\n }\n\n const agentReadable: ReadableStream<ChunkType> =\n 'fullStream' in stream ? (stream as MastraModelOutput).fullStream : (stream as ReadableStream<ChunkType>);\n return agentReadable.pipeThrough(\n AgentStreamToAISDKTransformer<any>({\n lastMessageId: options?.lastMessageId,\n sendStart: options?.sendStart,\n sendFinish: options?.sendFinish,\n sendReasoning: options?.sendReasoning,\n sendSources: options?.sendSources,\n messageMetadata: options?.messageMetadata,\n onError: options?.onError,\n }),\n ) as ReadableStream<InferUIMessageChunk<UIMessage>>;\n}\n","import type { AgentExecutionOptions } from '@mastra/core/agent';\n\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { registerApiRoute } from '@mastra/core/server';\nimport type { OutputSchema } from '@mastra/core/stream';\nimport { createUIMessageStream, createUIMessageStreamResponse } from 'ai';\nimport type { InferUIMessageChunk, UIMessage } from 'ai';\nimport { toAISdkV5Stream } from './convert-streams';\n\nexport type ChatStreamHandlerParams<\n UI_MESSAGE extends UIMessage,\n OUTPUT extends OutputSchema = undefined,\n> = AgentExecutionOptions<OUTPUT, 'mastra'> & {\n messages: UI_MESSAGE[];\n resumeData?: Record<string, any>;\n};\n\nexport type ChatStreamHandlerOptions<UI_MESSAGE extends UIMessage, OUTPUT extends OutputSchema = undefined> = {\n mastra: Mastra;\n agentId: string;\n params: ChatStreamHandlerParams<UI_MESSAGE, OUTPUT>;\n defaultOptions?: AgentExecutionOptions<OUTPUT, 'mastra'>;\n sendStart?: boolean;\n sendFinish?: boolean;\n sendReasoning?: boolean;\n sendSources?: boolean;\n};\n\n/**\n * Framework-agnostic handler for streaming agent chat in AI SDK-compatible format.\n * Use this function directly when you need to handle chat streaming outside of Hono or Mastra's own apiRoutes feature.\n *\n * @example\n * ```ts\n * // Next.js App Router\n * import { handleChatStream } from '@mastra/ai-sdk';\n * import { createUIMessageStreamResponse } from 'ai';\n * import { mastra } from '@/src/mastra';\n *\n * export async function POST(req: Request) {\n * const params = await req.json();\n * const stream = await handleChatStream({\n * mastra,\n * agentId: 'weatherAgent',\n * params,\n * });\n * return createUIMessageStreamResponse({ stream });\n * }\n * ```\n */\nexport async function handleChatStream<UI_MESSAGE extends UIMessage, OUTPUT extends OutputSchema = undefined>({\n mastra,\n agentId,\n params,\n defaultOptions,\n sendStart = true,\n sendFinish = true,\n sendReasoning = false,\n sendSources = false,\n}: ChatStreamHandlerOptions<UI_MESSAGE, OUTPUT>): Promise<ReadableStream<InferUIMessageChunk<UI_MESSAGE>>> {\n const { messages, resumeData, runId, requestContext, ...rest } = params;\n\n if (resumeData && !runId) {\n throw new Error('runId is required when resumeData is provided');\n }\n\n const agentObj = mastra.getAgentById(agentId);\n if (!agentObj) {\n throw new Error(`Agent ${agentId} not found`);\n }\n\n if (!Array.isArray(messages)) {\n throw new Error('Messages must be an array of UIMessage objects');\n }\n\n const mergedOptions = {\n ...defaultOptions,\n ...rest,\n ...(runId && { runId }),\n requestContext: requestContext || defaultOptions?.requestContext,\n };\n\n const result = resumeData\n ? await agentObj.resumeStream<OUTPUT>(resumeData, mergedOptions)\n : await agentObj.stream<OUTPUT>(messages, mergedOptions);\n\n let lastMessageId: string | undefined;\n if (messages.length) {\n const lastMessage = messages[messages.length - 1]!;\n if (lastMessage?.role === 'assistant') {\n lastMessageId = lastMessage.id;\n }\n }\n\n return createUIMessageStream<UI_MESSAGE>({\n originalMessages: messages,\n execute: async ({ writer }) => {\n for await (const part of toAISdkV5Stream(result, {\n from: 'agent',\n lastMessageId,\n sendStart,\n sendFinish,\n sendReasoning,\n sendSources,\n })!) {\n writer.write(part as InferUIMessageChunk<UI_MESSAGE>);\n }\n },\n });\n}\n\nexport type chatRouteOptions<OUTPUT extends OutputSchema = undefined> = {\n defaultOptions?: AgentExecutionOptions<OUTPUT, 'mastra'>;\n} & (\n | {\n path: `${string}:agentId${string}`;\n agent?: never;\n }\n | {\n path: string;\n agent: string;\n }\n) & {\n sendStart?: boolean;\n sendFinish?: boolean;\n sendReasoning?: boolean;\n sendSources?: boolean;\n };\n\n/**\n * Creates a chat route handler for streaming agent conversations using the AI SDK format.\n *\n * This function registers an HTTP POST endpoint that accepts messages, executes an agent, and streams the response back to the client in AI SDK-compatible format.\n *\n * @param {chatRouteOptions} options - Configuration options for the chat route\n * @param {string} [options.path='/chat/:agentId'] - The route path. Include `:agentId` for dynamic routing\n * @param {string} [options.agent] - Fixed agent ID when not using dynamic routing\n * @param {AgentExecutionOptions} [options.defaultOptions] - Default options passed to agent execution\n * @param {boolean} [options.sendStart=true] - Whether to send start events in the stream\n * @param {boolean} [options.sendFinish=true] - Whether to send finish events in the stream\n * @param {boolean} [options.sendReasoning=false] - Whether to include reasoning steps in the stream\n * @param {boolean} [options.sendSources=false] - Whether to include source citations in the stream\n *\n * @returns {ReturnType<typeof registerApiRoute>} A registered API route handler\n *\n * @throws {Error} When path doesn't include `:agentId` and no fixed agent is specified\n * @throws {Error} When agent ID is missing at runtime\n * @throws {Error} When specified agent is not found in Mastra instance\n *\n * @example\n * // Dynamic agent routing\n * chatRoute({\n * path: '/chat/:agentId',\n * });\n *\n * @example\n * // Fixed agent with custom path\n * chatRoute({\n * path: '/api/support-chat',\n * agent: 'support-agent',\n * defaultOptions: {\n * maxSteps: 5,\n * },\n * });\n *\n * @remarks\n * - The route handler expects a JSON body with a `messages` array\n * - Messages should follow the format: `{ role: 'user' | 'assistant' | 'system', content: string }`\n * - The response is a Server-Sent Events (SSE) stream compatible with AI SDK v5\n * - If both `agent` and `:agentId` are present, a warning is logged and the fixed `agent` takes precedence\n * - Request context from the incoming request overrides `defaultOptions.requestContext` if both are present\n */\nexport function chatRoute<OUTPUT extends OutputSchema = undefined>({\n path = '/chat/:agentId',\n agent,\n defaultOptions,\n sendStart = true,\n sendFinish = true,\n sendReasoning = false,\n sendSources = false,\n}: chatRouteOptions<OUTPUT>): ReturnType<typeof registerApiRoute> {\n if (!agent && !path.includes('/:agentId')) {\n throw new Error('Path must include :agentId to route to the correct agent or pass the agent explicitly');\n }\n\n return registerApiRoute(path, {\n method: 'POST',\n openapi: {\n summary: 'Chat with an agent',\n description: 'Send messages to an agent and stream the response in the AI SDK format',\n tags: ['ai-sdk'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n description: 'The ID of the agent to chat with',\n schema: {\n type: 'string',\n },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n resumeData: {\n type: 'object',\n description: 'Resume data for the agent',\n },\n runId: {\n type: 'string',\n description: 'The run ID required when resuming an agent execution',\n },\n messages: {\n type: 'array',\n description: 'Array of messages in the conversation',\n items: {\n type: 'object',\n properties: {\n role: {\n type: 'string',\n enum: ['user', 'assistant', 'system'],\n description: 'The role of the message sender',\n },\n content: {\n type: 'string',\n description: 'The content of the message',\n },\n },\n required: ['role', 'content'],\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n '200': {\n description: 'Streaming response from the agent',\n content: {\n 'text/plain': {\n schema: {\n type: 'string',\n description: 'Server-sent events stream containing the agent response',\n },\n },\n },\n },\n '400': {\n description: 'Bad request - invalid input',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n error: {\n type: 'string',\n },\n },\n },\n },\n },\n },\n '404': {\n description: 'Agent not found',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n error: {\n type: 'string',\n },\n },\n },\n },\n },\n },\n },\n },\n handler: async c => {\n const params = (await c.req.json()) as ChatStreamHandlerParams<UIMessage, OUTPUT>;\n const mastra = c.get('mastra');\n const contextRequestContext = (c as any).get('requestContext') as RequestContext | undefined;\n\n let agentToUse: string | undefined = agent;\n if (!agent) {\n const agentId = c.req.param('agentId');\n agentToUse = agentId;\n }\n\n if (c.req.param('agentId') && agent) {\n mastra\n .getLogger()\n ?.warn(\n `Fixed agent ID was set together with an agentId path parameter. This can lead to unexpected behavior.`,\n );\n }\n\n if (contextRequestContext && defaultOptions?.requestContext) {\n mastra\n .getLogger()\n ?.warn(`\"requestContext\" set in the route options will be overridden by the request's \"requestContext\".`);\n }\n\n if (!agentToUse) {\n throw new Error('Agent ID is required');\n }\n\n const uiMessageStream = await handleChatStream<UIMessage, OUTPUT>({\n mastra,\n agentId: agentToUse,\n params: {\n ...params,\n requestContext: contextRequestContext || params.requestContext,\n },\n defaultOptions,\n sendStart,\n sendFinish,\n sendReasoning,\n sendSources,\n });\n\n return createUIMessageStreamResponse({\n stream: uiMessageStream,\n });\n },\n });\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport type { TracingOptions } from '@mastra/core/observability';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { registerApiRoute } from '@mastra/core/server';\nimport { createUIMessageStream, createUIMessageStreamResponse } from 'ai';\nimport type { InferUIMessageChunk, UIMessage } from 'ai';\nimport { toAISdkV5Stream } from './convert-streams';\n\nexport type WorkflowStreamHandlerParams = {\n runId?: string;\n resourceId?: string;\n inputData?: Record<string, any>;\n resumeData?: Record<string, any>;\n requestContext?: RequestContext;\n tracingOptions?: TracingOptions;\n step?: string;\n};\n\nexport type WorkflowStreamHandlerOptions = {\n mastra: Mastra;\n workflowId: string;\n params: WorkflowStreamHandlerParams;\n includeTextStreamParts?: boolean;\n};\n\n/**\n * Framework-agnostic handler for streaming workflow execution in AI SDK-compatible format.\n * Use this function directly when you need to handle workflow streaming outside of Hono or Mastra's own apiRoutes feature.\n *\n * @example\n * ```ts\n * // Next.js App Router\n * import { handleWorkflowStream } from '@mastra/ai-sdk';\n * import { createUIMessageStreamResponse } from 'ai';\n * import { mastra } from '@/src/mastra';\n *\n * export async function POST(req: Request) {\n * const params = await req.json();\n * const stream = await handleWorkflowStream({\n * mastra,\n * workflowId: 'weatherWorkflow',\n * params,\n * });\n * return createUIMessageStreamResponse({ stream });\n * }\n * ```\n */\nexport async function handleWorkflowStream<UI_MESSAGE extends UIMessage>({\n mastra,\n workflowId,\n params,\n includeTextStreamParts = true,\n}: WorkflowStreamHandlerOptions): Promise<ReadableStream<InferUIMessageChunk<UI_MESSAGE>>> {\n const { runId, resourceId, inputData, resumeData, requestContext, ...rest } = params;\n\n const workflowObj = mastra.getWorkflowById(workflowId);\n if (!workflowObj) {\n throw new Error(`Workflow ${workflowId} not found`);\n }\n\n const run = await workflowObj.createRun({ runId, resourceId, ...rest });\n\n const stream = resumeData\n ? run.resumeStream({ resumeData, ...rest, requestContext })\n : run.stream({ inputData, ...rest, requestContext });\n\n return createUIMessageStream<UI_MESSAGE>({\n execute: async ({ writer }) => {\n for await (const part of toAISdkV5Stream(stream, { from: 'workflow', includeTextStreamParts })) {\n writer.write(part as InferUIMessageChunk<UI_MESSAGE>);\n }\n },\n });\n}\n\nexport type WorkflowRouteOptions =\n | { path: `${string}:workflowId${string}`; workflow?: never; includeTextStreamParts?: boolean }\n | { path: string; workflow: string; includeTextStreamParts?: boolean };\n\n/**\n * Creates a workflow route handler for streaming workflow execution using the AI SDK format.\n *\n * This function registers an HTTP POST endpoint that accepts input data, executes a workflow, and streams the response back to the client in AI SDK-compatible format.\n *\n * @param {WorkflowRouteOptions} options - Configuration options for the workflow route\n * @param {string} [options.path='/api/workflows/:workflowId/stream'] - The route path. Include `:workflowId` for dynamic routing\n * @param {string} [options.workflow] - Fixed workflow ID when not using dynamic routing\n * @param {boolean} [options.includeTextStreamParts=true] - Whether to include text stream parts in the output\n *\n * @example\n * // Dynamic workflow routing\n * workflowRoute({\n * path: '/api/workflows/:workflowId/stream',\n * });\n *\n * @example\n * // Fixed workflow with custom path\n * workflowRoute({\n * path: '/api/data-pipeline/stream',\n * workflow: 'data-processing-workflow',\n * });\n */\nexport function workflowRoute({\n path = '/api/workflows/:workflowId/stream',\n workflow,\n includeTextStreamParts = true,\n}: WorkflowRouteOptions): ReturnType<typeof registerApiRoute> {\n if (!workflow && !path.includes('/:workflowId')) {\n throw new Error('Path must include :workflowId to route to the correct workflow or pass the workflow explicitly');\n }\n\n return registerApiRoute(path, {\n method: 'POST',\n openapi: {\n summary: 'Stream a workflow in AI SDK format',\n description: 'Starts a workflow run and streams events as AI SDK UIMessage chunks',\n tags: ['ai-sdk'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n description: 'The ID of the workflow to stream',\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n runId: { type: 'string' },\n resourceId: { type: 'string' },\n inputData: { type: 'object', additionalProperties: true },\n resumeData: { type: 'object', additionalProperties: true },\n requestContext: { type: 'object', additionalProperties: true },\n tracingOptions: { type: 'object', additionalProperties: true },\n step: { type: 'string' },\n },\n },\n },\n },\n },\n responses: {\n '200': {\n description: 'Workflow UIMessage event stream',\n content: {\n 'text/plain': {\n schema: { type: 'string', description: 'SSE stream' },\n },\n },\n },\n },\n },\n handler: async c => {\n const params = (await c.req.json()) as WorkflowStreamHandlerParams;\n const mastra = c.get('mastra');\n const contextRequestContext = (c as any).get('requestContext') as RequestContext | undefined;\n\n let workflowToUse: string | undefined = workflow;\n if (!workflow) {\n const workflowId = c.req.param('workflowId');\n workflowToUse = workflowId;\n }\n\n if (c.req.param('workflowId') && workflow) {\n mastra\n .getLogger()\n ?.warn(\n `Fixed workflow ID was set together with a workflowId path parameter. This can lead to unexpected behavior.`,\n );\n }\n if (!workflowToUse) {\n throw new Error('Workflow ID is required');\n }\n\n if (contextRequestContext && params.requestContext) {\n mastra\n .getLogger()\n ?.warn(\n `\"requestContext\" from the request body will be ignored because \"requestContext\" is already set in the route options.`,\n );\n }\n\n const uiMessageStream = await handleWorkflowStream({\n mastra,\n workflowId: workflowToUse,\n params: {\n ...params,\n requestContext: contextRequestContext || params.requestContext,\n },\n includeTextStreamParts,\n });\n\n return createUIMessageStreamResponse({ stream: uiMessageStream });\n },\n });\n}\n","import type { AgentExecutionOptions } from '@mastra/core/agent';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { registerApiRoute } from '@mastra/core/server';\nimport type { OutputSchema } from '@mastra/core/stream';\nimport { createUIMessageStream, createUIMessageStreamResponse } from 'ai';\nimport type { InferUIMessageChunk, UIMessage } from 'ai';\nimport { toAISdkV5Stream } from './convert-streams';\n\nexport type NetworkStreamHandlerParams<OUTPUT extends OutputSchema = undefined> = AgentExecutionOptions<\n OUTPUT,\n 'mastra'\n> & {\n messages: MessageListInput;\n};\n\nexport type NetworkStreamHandlerOptions<OUTPUT extends OutputSchema = undefined> = {\n mastra: Mastra;\n agentId: string;\n params: NetworkStreamHandlerParams<OUTPUT>;\n defaultOptions?: AgentExecutionOptions<OUTPUT, 'mastra'>;\n};\n\n/**\n * Framework-agnostic handler for streaming agent network execution in AI SDK-compatible format.\n * Use this function directly when you need to handle network streaming outside of Hono or Mastra's own apiRoutes feature.\n *\n * @example\n * ```ts\n * // Next.js App Router\n * import { handleNetworkStream } from '@mastra/ai-sdk';\n * import { createUIMessageStreamResponse } from 'ai';\n * import { mastra } from '@/src/mastra';\n *\n * export async function POST(req: Request) {\n * const params = await req.json();\n * const stream = await handleNetworkStream({\n * mastra,\n * agentId: 'routingAgent',\n * params,\n * });\n * return createUIMessageStreamResponse({ stream });\n * }\n * ```\n */\nexport async function handleNetworkStream<UI_MESSAGE extends UIMessage, OUTPUT extends OutputSchema = undefined>({\n mastra,\n agentId,\n params,\n defaultOptions,\n}: NetworkStreamHandlerOptions<OUTPUT>): Promise<ReadableStream<InferUIMessageChunk<UI_MESSAGE>>> {\n const { messages, ...rest } = params;\n\n const agentObj = mastra.getAgentById(agentId);\n\n if (!agentObj) {\n throw new Error(`Agent ${agentId} not found`);\n }\n\n const result = await agentObj.network(messages, {\n ...defaultOptions,\n ...rest,\n });\n\n return createUIMessageStream<UI_MESSAGE>({\n execute: async ({ writer }) => {\n for await (const part of toAISdkV5Stream(result, { from: 'network' })) {\n writer.write(part as InferUIMessageChunk<UI_MESSAGE>);\n }\n },\n });\n}\n\nexport type NetworkRouteOptions<OUTPUT extends OutputSchema = undefined> =\n | { path: `${string}:agentId${string}`; agent?: never; defaultOptions?: AgentExecutionOptions<OUTPUT, 'mastra'> }\n | { path: string; agent: string; defaultOptions?: AgentExecutionOptions<OUTPUT, 'mastra'> };\n\n/**\n * Creates a network route handler for streaming agent network execution using the AI SDK-compatible format.\n *\n * This function registers an HTTP POST endpoint that accepts messages, executes an agent network, and streams the response back to the client in AI SDK-compatible format. Agent networks allow a routing agent to delegate tasks to other agents.\n *\n * @param {NetworkRouteOptions} options - Configuration options for the network route\n * @param {string} [options.path='/network/:agentId'] - The route path. Include `:agentId` for dynamic routing\n * @param {string} [options.agent] - Fixed agent ID when not using dynamic routing\n * @param {AgentExecutionOptions} [options.defaultOptions] - Default options passed to agent execution\n *\n * @example\n * // Dynamic agent routing\n * networkRoute({\n * path: '/network/:agentId',\n * });\n *\n * @example\n * // Fixed agent with custom path\n * networkRoute({\n * path: '/api/orchestrator',\n * agent: 'router-agent',\n * defaultOptions: {\n * maxSteps: 10,\n * },\n * });\n */\nexport function networkRoute<OUTPUT extends OutputSchema = undefined>({\n path = '/network/:agentId',\n agent,\n defaultOptions,\n}: NetworkRouteOptions<OUTPUT>): ReturnType<typeof registerApiRoute> {\n if (!agent && !path.includes('/:agentId')) {\n throw new Error('Path must include :agentId to route to the correct agent or pass the agent explicitly');\n }\n\n return registerApiRoute(path, {\n method: 'POST',\n openapi: {\n summary: 'Execute an agent network and stream AI SDK events',\n description: 'Routes a request to an agent network and streams UIMessage chunks in AI SDK format',\n tags: ['ai-sdk'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n description: 'The ID of the routing agent to execute as a network',\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: { type: 'array', items: { type: 'object' } },\n requestContext: { type: 'object', additionalProperties: true },\n runId: { type: 'string' },\n maxSteps: { type: 'number' },\n threadId: { type: 'string' },\n resourceId: { type: 'string' },\n modelSettings: { type: 'object', additionalProperties: true },\n tools: { type: 'array', items: { type: 'object' } },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n '200': {\n description: 'Streaming AI SDK UIMessage event stream for the agent network',\n content: { 'text/plain': { schema: { type: 'string', description: 'SSE stream' } } },\n },\n '404': {\n description: 'Agent not found',\n content: {\n 'application/json': {\n schema: { type: 'object', properties: { error: { type: 'string' } } },\n },\n },\n },\n },\n },\n handler: async c => {\n const params = (await c.req.json()) as NetworkStreamHandlerParams<OUTPUT>;\n const mastra = c.get('mastra');\n\n let agentToUse: string | undefined = agent;\n if (!agent) {\n const agentId = c.req.param('agentId');\n agentToUse = agentId;\n }\n\n if (c.req.param('agentId') && agent) {\n mastra\n .getLogger()\n ?.warn(\n `Fixed agent ID was set together with an agentId path parameter. This can lead to unexpected behavior.`,\n );\n }\n\n if (!agentToUse) {\n throw new Error('Agent ID is required');\n }\n\n const uiMessageStream = await handleNetworkStream<UIMessage, OUTPUT>({\n mastra,\n agentId: agentToUse,\n params,\n defaultOptions,\n });\n\n return createUIMessageStreamResponse({ stream: uiMessageStream });\n },\n });\n}\n","/**\n * @deprecated Use `toAISdkStream` instead. This function has been renamed for clarity.\n *\n * @example\n * ```typescript\n * // Old (deprecated):\n * import { toAISdkFormat } from '@mastra/ai-sdk';\n * const stream = toAISdkFormat(agentStream, { from: 'agent' });\n *\n * // New:\n * import { toAISdkStream } from '@mastra/ai-sdk';\n * const stream = toAISdkStream(agentStream, { from: 'agent' });\n * ```\n */\nexport function toAISdkFormat(): never {\n throw new Error(\n 'toAISdkFormat() has been deprecated. Please use toAISdkStream() instead.\\n\\n' +\n 'Migration:\\n' +\n ' import { toAISdkFormat } from \"@mastra/ai-sdk\";\\n' +\n ' // Change to:\\n' +\n ' import { toAISdkStream } from \"@mastra/ai-sdk\";\\n\\n' +\n 'The function signature remains the same.',\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts","../src/helpers.ts","../src/transformers.ts","../src/convert-streams.ts","../src/chat-route.ts","../src/workflow-route.ts","../src/network-route.ts","../src/middleware.ts","../src/to-ai-sdk-format.ts"],"names":["DefaultGeneratedFile","DefaultGeneratedFileWithType","rest","step","createUIMessageStream","registerApiRoute","createUIMessageStreamResponse","WorkingMemory","MessageHistory","SemanticRecall","wrapLanguageModel","RequestContext","MessageList","TripWire","stream","convertFullStreamChunkToMastra"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { ChunkType, DataChunkType, NetworkChunkType, OutputSchema } from '@mastra/core/stream';\n\nexport const isDataChunkType = (chunk: any): chunk is DataChunkType => {\n return chunk && typeof chunk === 'object' && 'type' in chunk && chunk.type?.startsWith('data-');\n};\n\nexport const isMastraTextStreamChunk = (chunk: any): chunk is ChunkType<OutputSchema> => {\n return (\n chunk &&\n typeof chunk === 'object' &&\n 'type' in chunk &&\n typeof chunk.type === 'string' &&\n [\n 'text-start',\n 'text-delta',\n 'text-end',\n 'reasoning-start',\n 'reasoning-delta',\n 'reasoning-end',\n 'file',\n 'source',\n 'tool-input-start',\n 'tool-input-delta',\n 'tool-call-approval',\n 'tool-call-suspended',\n 'tool-call',\n 'tool-result',\n 'tool-error',\n 'error',\n 'start-step',\n 'finish-step',\n 'start',\n 'finish',\n 'abort',\n 'tool-input-end',\n 'object',\n 'tripwire',\n 'raw',\n ].includes(chunk.type)\n );\n};\n\nexport function safeParseErrorObject(obj: unknown): string {\n if (typeof obj !== 'object' || obj === null) {\n return String(obj);\n }\n\n try {\n const stringified = JSON.stringify(obj);\n // If JSON.stringify returns \"{}\", fall back to String() for better representation\n if (stringified === '{}') {\n return String(obj);\n }\n return stringified;\n } catch {\n // Fallback to String() if JSON.stringify fails (e.g., circular references)\n return String(obj);\n }\n}\n\nexport const isAgentExecutionDataChunkType = (\n chunk: any,\n): chunk is Omit<NetworkChunkType, 'payload'> & { payload: DataChunkType } => {\n return (\n chunk &&\n typeof chunk === 'object' &&\n 'type' in chunk &&\n chunk.type?.startsWith('agent-execution-event-') &&\n 'payload' in chunk &&\n typeof chunk.payload === 'object' &&\n 'type' in chunk.payload &&\n chunk.payload.type?.startsWith('data-')\n );\n};\n\nexport const isWorkflowExecutionDataChunkType = (\n chunk: any,\n): chunk is Omit<NetworkChunkType, 'payload'> & { payload: DataChunkType } => {\n return (\n chunk &&\n typeof chunk === 'object' &&\n 'type' in chunk &&\n chunk.type?.startsWith('workflow-execution-event-') &&\n 'payload' in chunk &&\n typeof chunk.payload === 'object' &&\n 'type' in chunk.payload &&\n chunk.payload.type?.startsWith('data-')\n );\n};\n","import { DefaultGeneratedFile, DefaultGeneratedFileWithType } from '@mastra/core/stream';\nimport type {\n PartialSchemaOutput,\n OutputSchema,\n DataChunkType,\n ChunkType,\n MastraFinishReason,\n} from '@mastra/core/stream';\n\nimport type { InferUIMessageChunk, ObjectStreamPart, TextStreamPart, ToolSet, UIMessage, FinishReason } from 'ai';\nimport { isDataChunkType } from './utils';\n\n/**\n * Maps Mastra's extended finish reasons to AI SDK-compatible values.\n * 'tripwire' and 'retry' are Mastra-specific reasons for processor scenarios,\n * which are mapped to 'other' for AI SDK compatibility.\n */\nexport function toAISDKFinishReason(reason: MastraFinishReason): FinishReason {\n if (reason === 'tripwire' || reason === 'retry') {\n return 'other';\n }\n return reason;\n}\n\nexport type OutputChunkType<OUTPUT extends OutputSchema = undefined> =\n | TextStreamPart<ToolSet>\n | ObjectStreamPart<PartialSchemaOutput<OUTPUT>>\n | DataChunkType\n | undefined;\n\nexport type ToolAgentChunkType = { type: 'tool-agent'; toolCallId: string; payload: any };\nexport type ToolWorkflowChunkType = { type: 'tool-workflow'; toolCallId: string; payload: any };\nexport type ToolNetworkChunkType = { type: 'tool-network'; toolCallId: string; payload: any };\n\nexport function convertMastraChunkToAISDKv5<OUTPUT extends OutputSchema = undefined>({\n chunk,\n mode = 'stream',\n}: {\n chunk: ChunkType<OUTPUT>;\n mode?: 'generate' | 'stream';\n}): OutputChunkType<OUTPUT> {\n switch (chunk.type) {\n case 'start':\n return {\n type: 'start',\n };\n case 'step-start':\n const { messageId: _messageId, ...rest } = chunk.payload;\n return {\n type: 'start-step',\n request: rest.request,\n warnings: rest.warnings || [],\n };\n case 'raw':\n return {\n type: 'raw',\n rawValue: chunk.payload,\n };\n\n case 'finish': {\n return {\n type: 'finish',\n finishReason: toAISDKFinishReason(chunk.payload.stepResult.reason),\n totalUsage: chunk.payload.output.usage,\n };\n }\n case 'reasoning-start':\n return {\n type: 'reasoning-start',\n id: chunk.payload.id,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'reasoning-delta':\n return {\n type: 'reasoning-delta',\n id: chunk.payload.id,\n text: chunk.payload.text,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'reasoning-signature':\n throw new Error('AISDKv5 chunk type \"reasoning-signature\" not supported');\n // return {\n // type: 'reasoning-signature' as const,\n // id: chunk.payload.id,\n // signature: chunk.payload.signature,\n // };\n case 'redacted-reasoning':\n throw new Error('AISDKv5 chunk type \"redacted-reasoning\" not supported');\n // return {\n // type: 'redacted-reasoning',\n // id: chunk.payload.id,\n // data: chunk.payload.data,\n // };\n case 'reasoning-end':\n return {\n type: 'reasoning-end',\n id: chunk.payload.id,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'source':\n if (chunk.payload.sourceType === 'url') {\n return {\n type: 'source',\n sourceType: 'url',\n id: chunk.payload.id,\n url: chunk.payload.url!,\n title: chunk.payload.title,\n providerMetadata: chunk.payload.providerMetadata,\n };\n } else {\n return {\n type: 'source',\n sourceType: 'document',\n id: chunk.payload.id,\n mediaType: chunk.payload.mimeType!,\n title: chunk.payload.title,\n filename: chunk.payload.filename,\n providerMetadata: chunk.payload.providerMetadata,\n };\n }\n case 'file':\n if (mode === 'generate') {\n return {\n type: 'file',\n file: new DefaultGeneratedFile({\n data: chunk.payload.data,\n mediaType: chunk.payload.mimeType,\n }),\n };\n }\n\n return {\n type: 'file',\n file: new DefaultGeneratedFileWithType({\n data: chunk.payload.data,\n mediaType: chunk.payload.mimeType,\n }),\n };\n case 'tool-call':\n return {\n type: 'tool-call',\n toolCallId: chunk.payload.toolCallId,\n providerMetadata: chunk.payload.providerMetadata,\n providerExecuted: chunk.payload.providerExecuted,\n toolName: chunk.payload.toolName,\n input: chunk.payload.args,\n };\n case 'tool-call-approval':\n return {\n type: 'data-tool-call-approval',\n id: chunk.payload.toolCallId,\n data: {\n runId: chunk.runId,\n toolCallId: chunk.payload.toolCallId,\n toolName: chunk.payload.toolName,\n args: chunk.payload.args,\n },\n } satisfies DataChunkType;\n case 'tool-call-suspended':\n return {\n type: 'data-tool-call-suspended',\n id: chunk.payload.toolCallId,\n data: {\n runId: chunk.runId,\n toolCallId: chunk.payload.toolCallId,\n toolName: chunk.payload.toolName,\n suspendPayload: chunk.payload.suspendPayload,\n },\n } satisfies DataChunkType;\n case 'tool-call-input-streaming-start':\n return {\n type: 'tool-input-start',\n id: chunk.payload.toolCallId,\n toolName: chunk.payload.toolName,\n dynamic: !!chunk.payload.dynamic,\n providerMetadata: chunk.payload.providerMetadata,\n providerExecuted: chunk.payload.providerExecuted,\n };\n case 'tool-call-input-streaming-end':\n return {\n type: 'tool-input-end',\n id: chunk.payload.toolCallId,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'tool-call-delta':\n return {\n type: 'tool-input-delta',\n id: chunk.payload.toolCallId,\n delta: chunk.payload.argsTextDelta,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'step-finish': {\n const { request: _request, providerMetadata, ...rest } = chunk.payload.metadata;\n return {\n type: 'finish-step',\n response: {\n id: chunk.payload.id || '',\n timestamp: new Date(),\n modelId: (rest.modelId as string) || '',\n ...rest,\n },\n usage: chunk.payload.output.usage,\n finishReason: toAISDKFinishReason(chunk.payload.stepResult.reason),\n providerMetadata,\n };\n }\n case 'text-delta':\n return {\n type: 'text-delta',\n id: chunk.payload.id,\n text: chunk.payload.text,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'text-end':\n return {\n type: 'text-end',\n id: chunk.payload.id,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'text-start':\n return {\n type: 'text-start',\n id: chunk.payload.id,\n providerMetadata: chunk.payload.providerMetadata,\n };\n case 'tool-result':\n return {\n type: 'tool-result',\n input: chunk.payload.args,\n toolCallId: chunk.payload.toolCallId,\n providerExecuted: chunk.payload.providerExecuted,\n toolName: chunk.payload.toolName,\n output: chunk.payload.result,\n // providerMetadata: chunk.payload.providerMetadata, // AI v5 types don't show this?\n };\n case 'tool-error':\n return {\n type: 'tool-error',\n error: chunk.payload.error,\n input: chunk.payload.args,\n toolCallId: chunk.payload.toolCallId,\n providerExecuted: chunk.payload.providerExecuted,\n toolName: chunk.payload.toolName,\n // providerMetadata: chunk.payload.providerMetadata, // AI v5 types don't show this?\n };\n\n case 'abort':\n return {\n type: 'abort',\n };\n\n case 'error':\n return {\n type: 'error',\n error: chunk.payload.error,\n };\n\n case 'object':\n return {\n type: 'object',\n object: chunk.object,\n };\n case 'tripwire':\n return {\n type: 'data-tripwire',\n data: {\n reason: chunk.payload.reason,\n retry: chunk.payload.retry,\n metadata: chunk.payload.metadata,\n processorId: chunk.payload.processorId,\n },\n };\n default:\n if (chunk.type && 'payload' in chunk && chunk.payload) {\n return {\n type: chunk.type as string,\n ...(chunk.payload || {}),\n } as OutputChunkType<OUTPUT>;\n }\n if ('type' in chunk && chunk.type?.startsWith('data-')) {\n return chunk as any;\n }\n return;\n }\n}\n\nexport function convertFullStreamChunkToUIMessageStream<UI_MESSAGE extends UIMessage>({\n part,\n messageMetadataValue,\n sendReasoning,\n sendSources,\n onError,\n sendStart,\n sendFinish,\n responseMessageId,\n}: {\n // tool-output is a custom mastra chunk type used in ToolStream\n part: TextStreamPart<ToolSet> | DataChunkType | { type: 'tool-output'; toolCallId: string; output: any };\n messageMetadataValue?: unknown;\n sendReasoning?: boolean;\n sendSources?: boolean;\n onError: (error: unknown) => string;\n sendStart?: boolean;\n sendFinish?: boolean;\n responseMessageId?: string;\n}): InferUIMessageChunk<UI_MESSAGE> | ToolAgentChunkType | ToolWorkflowChunkType | ToolNetworkChunkType | undefined {\n const partType = part?.type;\n\n switch (partType) {\n case 'text-start': {\n return {\n type: 'text-start',\n id: part.id,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n\n case 'text-delta': {\n return {\n type: 'text-delta',\n id: part.id,\n delta: part.text,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n\n case 'text-end': {\n return {\n type: 'text-end',\n id: part.id,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n\n case 'reasoning-start': {\n return {\n type: 'reasoning-start',\n id: part.id,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n\n case 'reasoning-delta': {\n if (sendReasoning) {\n return {\n type: 'reasoning-delta',\n id: part.id,\n delta: part.text,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n return;\n }\n\n case 'reasoning-end': {\n return {\n type: 'reasoning-end',\n id: part.id,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n\n case 'file': {\n return {\n type: 'file',\n mediaType: part.file.mediaType,\n url: `data:${part.file.mediaType};base64,${part.file.base64}`,\n };\n }\n\n case 'source': {\n if (sendSources && part.sourceType === 'url') {\n return {\n type: 'source-url',\n sourceId: part.id,\n url: part.url,\n title: part.title,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n\n if (sendSources && part.sourceType === 'document') {\n return {\n type: 'source-document',\n sourceId: part.id,\n mediaType: part.mediaType,\n title: part.title,\n filename: part.filename,\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n };\n }\n return;\n }\n\n case 'tool-input-start': {\n return {\n type: 'tool-input-start',\n toolCallId: part.id,\n toolName: part.toolName,\n ...(part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {}),\n ...(part.dynamic != null ? { dynamic: part.dynamic } : {}),\n };\n }\n\n case 'tool-input-delta': {\n return {\n type: 'tool-input-delta',\n toolCallId: part.id,\n inputTextDelta: part.delta,\n };\n }\n\n case 'tool-call': {\n return {\n type: 'tool-input-available',\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n ...(part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {}),\n ...(part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}),\n ...(part.dynamic != null ? { dynamic: part.dynamic } : {}),\n };\n }\n\n case 'tool-result': {\n return {\n type: 'tool-output-available',\n toolCallId: part.toolCallId,\n output: part.output,\n ...(part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {}),\n ...(part.dynamic != null ? { dynamic: part.dynamic } : {}),\n };\n }\n\n case 'tool-output': {\n if (part.output.from === 'AGENT') {\n return {\n type: 'tool-agent',\n toolCallId: part.toolCallId,\n payload: part.output,\n };\n } else if (part.output.from === 'WORKFLOW') {\n return {\n type: 'tool-workflow',\n toolCallId: part.toolCallId,\n payload: part.output,\n };\n } else if (part.output.from === 'NETWORK') {\n return {\n type: 'tool-network',\n toolCallId: part.toolCallId,\n payload: part.output,\n };\n } else if (isDataChunkType(part.output)) {\n if (!('data' in part.output)) {\n throw new Error(\n `UI Messages require a data property when using data- prefixed chunks \\n ${JSON.stringify(part)}`,\n );\n }\n return part.output;\n }\n return;\n }\n\n case 'tool-error': {\n return {\n type: 'tool-output-error',\n toolCallId: part.toolCallId,\n errorText: onError(part.error),\n ...(part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {}),\n ...(part.dynamic != null ? { dynamic: part.dynamic } : {}),\n };\n }\n\n case 'error': {\n return {\n type: 'error',\n errorText: onError(part.error),\n };\n }\n\n case 'start-step': {\n return { type: 'start-step' };\n }\n\n case 'finish-step': {\n return { type: 'finish-step' };\n }\n\n case 'start': {\n if (sendStart) {\n return {\n type: 'start' as const,\n ...(messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {}),\n ...(responseMessageId != null ? { messageId: responseMessageId } : {}),\n } as InferUIMessageChunk<UI_MESSAGE>;\n }\n return;\n }\n\n case 'finish': {\n if (sendFinish) {\n return {\n type: 'finish' as const,\n ...(messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {}),\n } as InferUIMessageChunk<UI_MESSAGE>;\n }\n return;\n }\n\n case 'abort': {\n return part;\n }\n\n case 'tool-input-end': {\n return;\n }\n\n case 'raw': {\n // Raw chunks are not included in UI message streams\n // as they contain provider-specific data for developer use\n return;\n }\n\n default: {\n // return the chunk as is if it's not a known type\n if (isDataChunkType(part)) {\n if (!('data' in part)) {\n throw new Error(\n `UI Messages require a data property when using data- prefixed chunks \\n ${JSON.stringify(part)}`,\n );\n }\n return part;\n }\n\n return;\n }\n }\n}\n","import type { LLMStepResult } from '@mastra/core/agent';\nimport type { ChunkType, DataChunkType, NetworkChunkType } from '@mastra/core/stream';\nimport type { WorkflowRunStatus, WorkflowStepStatus, WorkflowStreamEvent } from '@mastra/core/workflows';\nimport type { InferUIMessageChunk, TextStreamPart, ToolSet, UIMessage, UIMessageStreamOptions } from 'ai';\nimport type { ZodType } from 'zod';\nimport { convertMastraChunkToAISDKv5, convertFullStreamChunkToUIMessageStream } from './helpers';\nimport type { ToolAgentChunkType, ToolWorkflowChunkType, ToolNetworkChunkType } from './helpers';\nimport {\n isAgentExecutionDataChunkType,\n isDataChunkType,\n isWorkflowExecutionDataChunkType,\n safeParseErrorObject,\n isMastraTextStreamChunk,\n} from './utils';\n\ntype LanguageModelV2Usage = {\n /**\nThe number of input (prompt) tokens used.\n */\n inputTokens: number | undefined;\n /**\nThe number of output (completion) tokens used.\n */\n outputTokens: number | undefined;\n /**\nThe total number of tokens as reported by the provider.\nThis number might be different from the sum of `inputTokens` and `outputTokens`\nand e.g. include reasoning tokens or other overhead.\n */\n totalTokens: number | undefined;\n /**\nThe number of reasoning tokens used.\n */\n reasoningTokens?: number | undefined;\n /**\nThe number of cached input tokens.\n */\n cachedInputTokens?: number | undefined;\n};\n\ntype StepResult = {\n name: string;\n status: WorkflowStepStatus;\n input: Record<string, unknown> | null;\n output: unknown | null;\n suspendPayload: Record<string, unknown> | null;\n resumePayload: Record<string, unknown> | null;\n};\n\nexport type WorkflowDataPart = {\n type: 'data-workflow' | 'data-tool-workflow';\n id: string;\n data: {\n name: string;\n status: WorkflowRunStatus;\n steps: Record<string, StepResult>;\n output: {\n usage: {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n };\n } | null;\n };\n};\n\nexport type NetworkDataPart = {\n type: 'data-network' | 'data-tool-network';\n id: string;\n data: {\n name: string;\n status: 'running' | 'finished';\n steps: StepResult[];\n usage: LanguageModelV2Usage | null;\n output: unknown | null;\n };\n};\n\nexport type AgentDataPart = {\n type: 'data-tool-agent';\n id: string;\n data: LLMStepResult;\n};\n\n// used so it's not serialized to JSON\nconst PRIMITIVE_CACHE_SYMBOL = Symbol('primitive-cache');\n\nexport function WorkflowStreamToAISDKTransformer({\n includeTextStreamParts,\n}: { includeTextStreamParts?: boolean } = {}) {\n const bufferedWorkflows = new Map<\n string,\n {\n name: string;\n steps: Record<string, StepResult>;\n }\n >();\n return new TransformStream<\n ChunkType,\n | {\n data?: string;\n type?: 'start' | 'finish';\n }\n | InferUIMessageChunk<UIMessage>\n | WorkflowDataPart\n | ChunkType\n | ToolAgentChunkType\n | ToolWorkflowChunkType\n | ToolNetworkChunkType\n >({\n start(controller) {\n controller.enqueue({\n type: 'start',\n });\n },\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n });\n },\n transform(chunk, controller) {\n const transformed = transformWorkflow<any>(chunk, bufferedWorkflows, false, includeTextStreamParts);\n if (transformed) controller.enqueue(transformed);\n },\n });\n}\n\nexport function AgentNetworkToAISDKTransformer() {\n const bufferedNetworks = new Map<\n string,\n {\n name: string;\n steps: (StepResult & {\n id: string;\n iteration: number;\n task: null | Record<string, unknown>;\n input: StepResult['input'];\n [PRIMITIVE_CACHE_SYMBOL]: Map<string, any>;\n })[];\n usage: LanguageModelV2Usage | null;\n output: unknown | null;\n }\n >();\n\n return new TransformStream<\n NetworkChunkType,\n | {\n data?: string;\n type?: 'start' | 'finish';\n }\n | NetworkDataPart\n | InferUIMessageChunk<UIMessage>\n | DataChunkType\n >({\n start(controller) {\n controller.enqueue({\n type: 'start',\n });\n },\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n });\n },\n transform(chunk, controller) {\n const transformed = transformNetwork(chunk, bufferedNetworks);\n if (transformed) controller.enqueue(transformed);\n },\n });\n}\n\nexport function AgentStreamToAISDKTransformer<TOutput extends ZodType<any>>({\n lastMessageId,\n sendStart,\n sendFinish,\n sendReasoning,\n sendSources,\n messageMetadata,\n onError,\n}: {\n lastMessageId?: string;\n sendStart?: boolean;\n sendFinish?: boolean;\n sendReasoning?: boolean;\n sendSources?: boolean;\n messageMetadata?: UIMessageStreamOptions<UIMessage>['messageMetadata'];\n onError?: UIMessageStreamOptions<UIMessage>['onError'];\n}) {\n let bufferedSteps = new Map<string, any>();\n let tripwireOccurred = false;\n let finishEventSent = false;\n\n return new TransformStream<ChunkType<TOutput>, object>({\n transform(chunk, controller) {\n // Track if tripwire occurred\n if (chunk.type === 'tripwire') {\n tripwireOccurred = true;\n }\n\n // Track if finish event was sent\n if (chunk.type === 'finish') {\n finishEventSent = true;\n }\n\n const part = convertMastraChunkToAISDKv5({ chunk, mode: 'stream' });\n\n const transformedChunk = convertFullStreamChunkToUIMessageStream<any>({\n part: part as any,\n sendReasoning,\n sendSources,\n messageMetadataValue: messageMetadata?.({ part: part as TextStreamPart<ToolSet> }),\n sendStart,\n sendFinish,\n responseMessageId: lastMessageId,\n onError(error) {\n return onError ? onError(error) : safeParseErrorObject(error);\n },\n });\n\n if (transformedChunk) {\n if (transformedChunk.type === 'tool-agent') {\n const payload = transformedChunk.payload;\n const agentTransformed = transformAgent<TOutput>(payload, bufferedSteps);\n if (agentTransformed) controller.enqueue(agentTransformed);\n } else if (transformedChunk.type === 'tool-workflow') {\n const payload = transformedChunk.payload;\n const workflowChunk = transformWorkflow(payload, bufferedSteps, true);\n if (workflowChunk) controller.enqueue(workflowChunk);\n } else if (transformedChunk.type === 'tool-network') {\n const payload = transformedChunk.payload;\n const networkChunk = transformNetwork(payload, bufferedSteps, true);\n if (networkChunk) controller.enqueue(networkChunk);\n } else {\n controller.enqueue(transformedChunk);\n }\n }\n },\n flush(controller) {\n // If tripwire occurred but no finish event was sent, send a finish event with 'other' reason\n if (tripwireOccurred && !finishEventSent && sendFinish) {\n // Send a finish event with finishReason 'other' to ensure graceful stream completion\n // AI SDK doesn't support tripwires, so we use 'other' as the finish reason\n controller.enqueue({\n type: 'finish',\n finishReason: 'other',\n } as any);\n }\n },\n });\n}\n\nexport function transformAgent<TOutput extends ZodType<any>>(\n payload: ChunkType<TOutput>,\n bufferedSteps: Map<string, any>,\n) {\n let hasChanged = false;\n switch (payload.type) {\n case 'start':\n bufferedSteps.set(payload.runId!, {\n id: payload.payload.id,\n object: null,\n finishReason: null,\n usage: null,\n warnings: [],\n text: '',\n reasoning: [],\n sources: [],\n files: [],\n toolCalls: [],\n toolResults: [],\n request: {},\n response: {\n id: '',\n timestamp: new Date(),\n modelId: '',\n messages: [],\n },\n providerMetadata: undefined,\n steps: [],\n status: 'running',\n });\n hasChanged = true;\n break;\n case 'finish':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n finishReason: payload.payload.stepResult.reason,\n usage: payload.payload?.output?.usage,\n warnings: payload.payload?.stepResult?.warnings,\n steps: bufferedSteps.get(payload.runId!)!.steps,\n status: 'finished',\n });\n hasChanged = true;\n break;\n case 'text-delta':\n const prevData = bufferedSteps.get(payload.runId!)!;\n bufferedSteps.set(payload.runId!, {\n ...prevData,\n text: `${prevData.text}${payload.payload.text}`,\n });\n hasChanged = true;\n break;\n case 'reasoning-delta':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n reasoning: [...bufferedSteps.get(payload.runId)!.reasoning, payload.payload.text],\n });\n hasChanged = true;\n break;\n case 'source':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n sources: [...bufferedSteps.get(payload.runId)!.sources, payload.payload],\n });\n hasChanged = true;\n break;\n case 'file':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n files: [...bufferedSteps.get(payload.runId)!.files, payload.payload],\n });\n hasChanged = true;\n break;\n case 'tool-call':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n toolCalls: [...bufferedSteps.get(payload.runId)!.toolCalls, payload.payload],\n });\n hasChanged = true;\n break;\n case 'tool-result':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n toolResults: [...bufferedSteps.get(payload.runId)!.toolResults, payload.payload],\n });\n hasChanged = true;\n break;\n case 'object-result':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n object: payload.object,\n });\n hasChanged = true;\n break;\n case 'object':\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!),\n object: payload.object,\n });\n hasChanged = true;\n break;\n case 'step-finish':\n const currentRun = bufferedSteps.get(payload.runId!)!;\n const stepResult = {\n ...bufferedSteps.get(payload.runId!)!,\n stepType: currentRun.steps.length === 0 ? 'initial' : 'tool-result',\n reasoningText: bufferedSteps.get(payload.runId!)!.reasoning.join(''),\n staticToolCalls: bufferedSteps\n .get(payload.runId!)!\n .toolCalls.filter((part: any) => part.type === 'tool-call' && part.payload?.dynamic === false),\n dynamicToolCalls: bufferedSteps\n .get(payload.runId!)!\n .toolCalls.filter((part: any) => part.type === 'tool-call' && part.payload?.dynamic === true),\n staticToolResults: bufferedSteps\n .get(payload.runId!)!\n .toolResults.filter((part: any) => part.type === 'tool-result' && part.payload?.dynamic === false),\n dynamicToolResults: bufferedSteps\n .get(payload.runId!)!\n .toolResults.filter((part: any) => part.type === 'tool-result' && part.payload?.dynamic === true),\n finishReason: payload.payload.stepResult.reason,\n usage: payload.payload.output.usage,\n warnings: payload.payload.stepResult.warnings || [],\n response: {\n id: payload.payload.id || '',\n timestamp: (payload.payload.metadata?.timestamp as Date) || new Date(),\n modelId: (payload.payload.metadata?.modelId as string) || (payload.payload.metadata?.model as string) || '',\n ...bufferedSteps.get(payload.runId!)!.response,\n messages: bufferedSteps.get(payload.runId!)!.response.messages || [],\n },\n };\n\n bufferedSteps.set(payload.runId!, {\n ...bufferedSteps.get(payload.runId!)!,\n usage: payload.payload.output.usage,\n warnings: payload.payload.stepResult.warnings || [],\n steps: [...bufferedSteps.get(payload.runId!)!.steps, stepResult],\n });\n hasChanged = true;\n break;\n default:\n break;\n }\n\n if (hasChanged) {\n return {\n type: 'data-tool-agent',\n id: payload.runId!,\n data: bufferedSteps.get(payload.runId!),\n } satisfies AgentDataPart;\n }\n return null;\n}\n\nexport function transformWorkflow<TOutput extends ZodType<any>>(\n payload: ChunkType<TOutput>,\n bufferedWorkflows: Map<\n string,\n {\n name: string;\n steps: Record<string, StepResult>;\n }\n >,\n isNested?: boolean,\n includeTextStreamParts?: boolean,\n) {\n switch (payload.type) {\n case 'workflow-start':\n bufferedWorkflows.set(payload.runId!, {\n name: payload.payload.workflowId,\n steps: {},\n });\n return {\n type: isNested ? 'data-tool-workflow' : 'data-workflow',\n id: payload.runId,\n data: {\n name: bufferedWorkflows.get(payload.runId!)!.name,\n status: 'running',\n steps: bufferedWorkflows.get(payload.runId!)!.steps,\n output: null,\n },\n } as const;\n case 'workflow-step-start': {\n const current = bufferedWorkflows.get(payload.runId!) || { name: '', steps: {} };\n current.steps[payload.payload.id] = {\n name: payload.payload.id,\n status: payload.payload.status,\n input: payload.payload.payload ?? null,\n output: null,\n suspendPayload: null,\n resumePayload: null,\n };\n bufferedWorkflows.set(payload.runId!, current);\n return {\n type: isNested ? 'data-tool-workflow' : 'data-workflow',\n id: payload.runId,\n data: {\n name: current.name,\n status: 'running',\n steps: current.steps,\n output: null,\n },\n } as const;\n }\n case 'workflow-step-result': {\n const current = bufferedWorkflows.get(payload.runId!);\n if (!current) return null;\n current.steps[payload.payload.id] = {\n ...current.steps[payload.payload.id]!,\n status: payload.payload.status,\n output: payload.payload.output ?? null,\n };\n return {\n type: isNested ? 'data-tool-workflow' : 'data-workflow',\n id: payload.runId,\n data: {\n name: current.name,\n status: 'running',\n steps: current.steps,\n output: null,\n },\n } as const;\n }\n case 'workflow-step-suspended': {\n const current = bufferedWorkflows.get(payload.runId!);\n if (!current) return null;\n current.steps[payload.payload.id] = {\n ...current.steps[payload.payload.id]!,\n status: payload.payload.status,\n suspendPayload: payload.payload.suspendPayload ?? null,\n resumePayload: payload.payload.resumePayload ?? null,\n output: null,\n } satisfies StepResult;\n return {\n type: isNested ? 'data-tool-workflow' : 'data-workflow',\n id: payload.runId,\n data: {\n name: current.name,\n status: 'suspended',\n steps: current.steps,\n output: null,\n },\n } as const;\n }\n case 'workflow-finish': {\n const current = bufferedWorkflows.get(payload.runId!);\n if (!current) return null;\n return {\n type: isNested ? 'data-tool-workflow' : 'data-workflow',\n id: payload.runId,\n data: {\n name: current.name,\n steps: current.steps,\n output: payload.payload.output ?? null,\n status: payload.payload.workflowStatus,\n },\n } as const;\n }\n case 'workflow-step-output': {\n const output = payload.payload.output;\n\n if (includeTextStreamParts && output && isMastraTextStreamChunk(output)) {\n const part = convertMastraChunkToAISDKv5({ chunk: output, mode: 'stream' });\n\n const transformedChunk = convertFullStreamChunkToUIMessageStream<any>({\n part: part as any,\n onError(error) {\n return safeParseErrorObject(error);\n },\n });\n\n return transformedChunk;\n }\n\n if (output && isDataChunkType(output)) {\n if (!('data' in output)) {\n throw new Error(\n `UI Messages require a data property when using data- prefixed chunks \\n ${JSON.stringify(output)}`,\n );\n }\n return output;\n }\n return null;\n }\n default: {\n // return the chunk as is if it's not a known type\n if (isDataChunkType(payload)) {\n if (!('data' in payload)) {\n throw new Error(\n `UI Messages require a data property when using data- prefixed chunks \\n ${JSON.stringify(payload)}`,\n );\n }\n return payload;\n }\n return null;\n }\n }\n}\n\nexport function transformNetwork(\n payload: NetworkChunkType,\n bufferedNetworks: Map<\n string,\n {\n name: string;\n steps: (StepResult & {\n id: string;\n iteration: number;\n task: null | Record<string, unknown>;\n input: StepResult['input'];\n [PRIMITIVE_CACHE_SYMBOL]: Map<string, any>;\n })[];\n usage: LanguageModelV2Usage | null;\n output: unknown | null;\n }\n >,\n isNested?: boolean,\n): InferUIMessageChunk<UIMessage> | NetworkDataPart | DataChunkType | null {\n switch (payload.type) {\n case 'routing-agent-start': {\n if (!bufferedNetworks.has(payload.runId)) {\n bufferedNetworks.set(payload.runId, {\n name: payload.payload.networkId,\n steps: [],\n usage: null,\n output: null,\n });\n }\n\n const current = bufferedNetworks.get(payload.runId)!;\n current.steps.push({\n id: payload.payload.runId,\n name: payload.payload.agentId,\n status: 'running',\n iteration: payload.payload.inputData.iteration,\n input: {\n task: payload.payload.inputData.task,\n threadId: payload.payload.inputData.threadId,\n threadResourceId: payload.payload.inputData.threadResourceId,\n },\n output: '',\n task: null,\n suspendPayload: null,\n resumePayload: null,\n [PRIMITIVE_CACHE_SYMBOL]: new Map(),\n });\n\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId,\n data: {\n name: bufferedNetworks.get(payload.runId)!.name,\n status: 'running',\n usage: null,\n steps: bufferedNetworks.get(payload.runId)!.steps,\n output: null,\n },\n } as const;\n }\n case 'routing-agent-text-start': {\n const current = bufferedNetworks.get(payload.runId!);\n if (!current) return null;\n return {\n type: 'text-start',\n id: payload.runId!,\n } as const;\n }\n case 'routing-agent-text-delta': {\n const current = bufferedNetworks.get(payload.runId!);\n if (!current) return null;\n return {\n type: 'text-delta',\n id: payload.runId!,\n delta: payload.payload.text,\n } as const;\n }\n case 'agent-execution-start': {\n const current = bufferedNetworks.get(payload.runId);\n\n if (!current) return null;\n\n current.steps.push({\n id: payload.payload.runId,\n name: payload.payload.agentId,\n status: 'running',\n iteration: payload.payload.args?.iteration ?? 0,\n input: { prompt: payload.payload.args?.prompt ?? '' },\n output: null,\n task: null,\n suspendPayload: null,\n resumePayload: null,\n [PRIMITIVE_CACHE_SYMBOL]: new Map(),\n });\n bufferedNetworks.set(payload.runId, current);\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId,\n data: {\n ...current,\n status: 'running',\n },\n } as const;\n }\n case 'workflow-execution-start': {\n const current = bufferedNetworks.get(payload.runId);\n\n if (!current) return null;\n\n current.steps.push({\n id: payload.payload.runId,\n name: payload.payload.workflowId,\n status: 'running',\n iteration: payload.payload.args?.iteration ?? 0,\n input: { prompt: payload.payload.args?.prompt ?? '' },\n output: null,\n task: null,\n suspendPayload: null,\n resumePayload: null,\n [PRIMITIVE_CACHE_SYMBOL]: new Map(),\n });\n bufferedNetworks.set(payload.runId, current);\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId,\n data: {\n ...current,\n status: 'running',\n },\n } as const;\n }\n case 'tool-execution-start': {\n const current = bufferedNetworks.get(payload.runId);\n\n if (!current) return null;\n\n current.steps.push({\n id: payload.payload.args.toolCallId!,\n name: payload.payload.args?.toolName!,\n status: 'running',\n iteration: payload.payload.args?.iteration ? Number(payload.payload.args.iteration) : 0,\n task: {\n id: payload.payload.args?.toolName!,\n },\n input: payload.payload.args?.args || null,\n output: null,\n suspendPayload: null,\n resumePayload: null,\n [PRIMITIVE_CACHE_SYMBOL]: new Map(),\n });\n\n bufferedNetworks.set(payload.runId, current);\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId,\n data: {\n ...current,\n status: 'running',\n },\n } as const;\n }\n case 'agent-execution-end': {\n const current = bufferedNetworks.get(payload.runId!);\n if (!current) return null;\n\n const stepId = payload.payload.runId;\n const step = current.steps.find(step => step.id === stepId);\n if (!step) {\n return null;\n }\n\n step.status = 'success';\n step.output = payload.payload.result;\n\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId!,\n data: {\n ...current,\n usage: payload.payload?.usage ?? current.usage,\n status: 'running',\n output: payload.payload.result ?? current.output,\n },\n } as const;\n }\n case 'tool-execution-end': {\n const current = bufferedNetworks.get(payload.runId!);\n if (!current) return null;\n\n const stepId = payload.payload.toolCallId;\n const step = current.steps.find(step => step.id === stepId);\n if (!step) {\n return null;\n }\n\n step.status = 'success';\n step.output = payload.payload.result;\n\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId!,\n data: {\n ...current,\n status: 'running',\n output: payload.payload.result ?? current.output,\n },\n } as const;\n }\n case 'workflow-execution-end': {\n const current = bufferedNetworks.get(payload.runId);\n if (!current) return null;\n\n const stepId = payload.payload.runId;\n const step = current.steps.find(step => step.id === stepId);\n\n if (!step) {\n return null;\n }\n\n step.status = 'success';\n step.output = payload.payload.result;\n\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId!,\n data: {\n ...current,\n usage: payload.payload?.usage ?? current.usage,\n status: 'running',\n output: payload.payload.result ?? current.output,\n },\n } as const;\n }\n case 'routing-agent-end': {\n const current = bufferedNetworks.get(payload.runId);\n if (!current) return null;\n\n const stepId = payload.payload.runId;\n const step = current.steps.find(step => step.id === stepId);\n\n if (!step) {\n return null;\n }\n\n step.status = 'success';\n step.task = {\n id: payload.payload.primitiveId,\n type: payload.payload.primitiveType,\n name: payload.payload.task,\n reason: payload.payload.selectionReason,\n };\n step.output = payload.payload.result;\n\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId,\n data: {\n ...current,\n usage: payload.payload?.usage ?? current.usage,\n output: payload.payload?.result ?? current.output,\n },\n } as const;\n }\n case 'network-execution-event-step-finish': {\n const current = bufferedNetworks.get(payload.runId);\n if (!current) return null;\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId,\n data: {\n ...current,\n status: 'finished',\n output: payload.payload?.result ?? current.output,\n },\n } as const;\n }\n case 'network-execution-event-finish': {\n const current = bufferedNetworks.get(payload.runId!);\n if (!current) return null;\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId!,\n data: {\n ...current,\n usage: payload.payload?.usage ?? current.usage,\n status: 'finished',\n output: payload.payload?.result ?? current.output,\n },\n } as const;\n }\n default: {\n // Check for custom data chunks first (before processing as events)\n if (isAgentExecutionDataChunkType(payload)) {\n if (!('data' in payload.payload)) {\n throw new Error(\n `UI Messages require a data property when using data- prefixed chunks \\n ${JSON.stringify(payload)}`,\n );\n }\n\n const { type, data } = payload.payload;\n return { type, data };\n }\n if (isWorkflowExecutionDataChunkType(payload)) {\n if (!('data' in payload.payload)) {\n throw new Error(\n `UI Messages require a data property when using data- prefixed chunks \\n ${JSON.stringify(payload)}`,\n );\n }\n const { type, data } = payload.payload;\n return { type, data };\n }\n\n if (payload.type.startsWith('agent-execution-event-')) {\n const stepId = payload.payload.runId;\n const current = bufferedNetworks.get(payload.runId!);\n if (!current) return null;\n\n const step = current.steps.find(step => step.id === stepId);\n if (!step) {\n return null;\n }\n\n step[PRIMITIVE_CACHE_SYMBOL] = step[PRIMITIVE_CACHE_SYMBOL] || new Map();\n const result = transformAgent(payload.payload as ChunkType<any>, step[PRIMITIVE_CACHE_SYMBOL]);\n if (result) {\n const { request, response, ...data } = result.data;\n step.task = data;\n }\n\n bufferedNetworks.set(payload.runId!, current);\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId!,\n data: {\n ...current,\n status: 'running',\n },\n } as const;\n }\n\n if (payload.type.startsWith('workflow-execution-event-')) {\n const stepId = payload.payload.runId;\n const current = bufferedNetworks.get(payload.runId!);\n if (!current) return null;\n\n const step = current.steps.find(step => step.id === stepId);\n if (!step) {\n return null;\n }\n\n step[PRIMITIVE_CACHE_SYMBOL] = step[PRIMITIVE_CACHE_SYMBOL] || new Map();\n const result = transformWorkflow(payload.payload as WorkflowStreamEvent, step[PRIMITIVE_CACHE_SYMBOL]);\n if (result && 'data' in result) {\n const data = result.data;\n step.task = data;\n\n if (data.name && step.task) {\n step.task.id = data.name;\n }\n }\n\n bufferedNetworks.set(payload.runId!, current);\n return {\n type: isNested ? 'data-tool-network' : 'data-network',\n id: payload.runId!,\n data: {\n ...current,\n status: 'running',\n },\n } as const;\n }\n\n // return the chunk as is if it's not a known type\n if (isDataChunkType(payload)) {\n if (!('data' in payload)) {\n throw new Error(\n `UI Messages require a data property when using data- prefixed chunks \\n ${JSON.stringify(payload)}`,\n );\n }\n\n const { type, data } = payload;\n return { type, data };\n }\n return null;\n }\n }\n}\n","import type {\n MastraModelOutput,\n ChunkType,\n OutputSchema,\n MastraAgentNetworkStream,\n WorkflowRunOutput,\n} from '@mastra/core/stream';\nimport type { MastraWorkflowStream, Step, WorkflowResult } from '@mastra/core/workflows';\nimport type { InferUIMessageChunk, UIMessage, UIMessageStreamOptions } from 'ai';\nimport type { ZodObject, ZodType } from 'zod';\nimport {\n AgentNetworkToAISDKTransformer,\n AgentStreamToAISDKTransformer,\n WorkflowStreamToAISDKTransformer,\n} from './transformers';\n\ntype ToAISDKFrom = 'agent' | 'network' | 'workflow';\n\n/**\n * Converts Mastra streams (workflow, agent network, or agent) to AI SDK v5 compatible streams.\n *\n * This function transforms various Mastra stream types into ReadableStream objects that are compatible with the AI SDK v5, enabling seamless integration with AI SDK's streaming capabilities.\n *\n *\n * @param {MastraWorkflowStream | WorkflowRunOutput | MastraAgentNetworkStream | MastraModelOutput} stream\n * The Mastra stream to convert. Can be one of:\n * - MastraWorkflowStream: A workflow execution stream\n * - WorkflowRunOutput: The output of a workflow run\n * - MastraAgentNetworkStream: An agent network execution stream\n * - MastraModelOutput: An agent model output stream\n *\n * @param {Object} options - Conversion options\n * @param {'workflow' | 'network' | 'agent'} options.from - The type of stream being converted. Defaults to 'agent'\n * @param {string} [options.lastMessageId] - (Agent only) The ID of the last message in the conversation\n * @param {boolean} [options.sendStart=true] - (Agent only) Whether to send start events. Defaults to true\n * @param {boolean} [options.sendFinish=true] - (Agent only) Whether to send finish events. Defaults to true\n * @param {boolean} [options.sendReasoning] - (Agent only) Whether to include reasoning in the output\n * @param {boolean} [options.sendSources] - (Agent only) Whether to include sources in the output\n * @param {Function} [options.messageMetadata] - (Agent only) A function that receives the current stream part and returns metadata to attach to start and finish chunks\n * @param {Function} [options.onError] - (Agent only) A function to handle errors during stream conversion. Receives the error and should return a string representation\n *\n * @returns {ReadableStream<InferUIMessageChunk<UIMessage>>} A ReadableStream compatible with AI SDK v5\n *\n * @example\n * // Convert a workflow stream\n * const workflowStream = await workflowRun.stream(...);\n * const aiSDKStream = toAISdkV5Stream(workflowStream, { from: 'workflow' });\n *\n * @example\n * // Convert an agent network stream\n * const networkStream = await agentNetwork.network(...);\n * const aiSDKStream = toAISdkV5Stream(networkStream, { from: 'network' });\n *\n * @example\n * // Convert an agent stream with custom options\n * const agentStream = await agent.stream(...);\n * const aiSDKStream = toAISdkV5Stream(agentStream, {\n * from: 'agent',\n * lastMessageId: 'msg-123',\n * sendReasoning: true,\n * sendSources: true\n * });\n *\n * @example\n * // Convert an agent stream with messageMetadata\n * const aiSDKStream = toAISdkV5Stream(agentStream, {\n * from: 'agent',\n * messageMetadata: ({ part }) => ({\n * timestamp: Date.now(),\n * partType: part.type\n * })\n * });\n */\nexport function toAISdkV5Stream<\n TOutput extends ZodType<any>,\n TInput extends ZodType<any>,\n TSteps extends Step<string, any, any, any, any, any>[],\n TState extends ZodObject<any>,\n>(\n stream: MastraWorkflowStream<TState, TInput, TOutput, TSteps>,\n options: { from: 'workflow'; includeTextStreamParts?: boolean },\n): ReadableStream<InferUIMessageChunk<UIMessage>>;\nexport function toAISdkV5Stream<\n TOutput extends ZodType<any>,\n TInput extends ZodType<any>,\n TSteps extends Step<string, any, any, any, any, any>[],\n TState extends ZodObject<any>,\n>(\n stream: WorkflowRunOutput<WorkflowResult<TState, TInput, TOutput, TSteps>>,\n options: { from: 'workflow'; includeTextStreamParts?: boolean },\n): ReadableStream<InferUIMessageChunk<UIMessage>>;\nexport function toAISdkV5Stream(\n stream: MastraAgentNetworkStream,\n options: { from: 'network' },\n): ReadableStream<InferUIMessageChunk<UIMessage>>;\nexport function toAISdkV5Stream<TOutput extends OutputSchema>(\n stream: MastraModelOutput<TOutput>,\n options: {\n from: 'agent';\n lastMessageId?: string;\n sendStart?: boolean;\n sendFinish?: boolean;\n sendReasoning?: boolean;\n sendSources?: boolean;\n messageMetadata?: UIMessageStreamOptions<UIMessage>['messageMetadata'];\n onError?: UIMessageStreamOptions<UIMessage>['onError'];\n },\n): ReadableStream<InferUIMessageChunk<UIMessage>>;\nexport function toAISdkV5Stream(\n stream:\n | MastraAgentNetworkStream\n | MastraWorkflowStream<any, any, any, any>\n | MastraModelOutput\n | WorkflowRunOutput<WorkflowResult<any, any, any, any>>,\n options: {\n from: ToAISDKFrom;\n includeTextStreamParts?: boolean;\n lastMessageId?: string;\n sendStart?: boolean;\n sendFinish?: boolean;\n sendReasoning?: boolean;\n sendSources?: boolean;\n messageMetadata?: UIMessageStreamOptions<UIMessage>['messageMetadata'];\n onError?: UIMessageStreamOptions<UIMessage>['onError'];\n } = {\n from: 'agent',\n sendStart: true,\n sendFinish: true,\n },\n): ReadableStream<InferUIMessageChunk<UIMessage>> {\n const from = options?.from;\n\n if (from === 'workflow') {\n const includeTextStreamParts = options?.includeTextStreamParts ?? true;\n\n return (stream as ReadableStream<ChunkType>).pipeThrough(\n WorkflowStreamToAISDKTransformer({ includeTextStreamParts }),\n ) as ReadableStream<InferUIMessageChunk<UIMessage>>;\n }\n\n if (from === 'network') {\n return (stream as ReadableStream<ChunkType>).pipeThrough(AgentNetworkToAISDKTransformer()) as ReadableStream<\n InferUIMessageChunk<UIMessage>\n >;\n }\n\n const agentReadable: ReadableStream<ChunkType> =\n 'fullStream' in stream ? (stream as MastraModelOutput).fullStream : (stream as ReadableStream<ChunkType>);\n return agentReadable.pipeThrough(\n AgentStreamToAISDKTransformer<any>({\n lastMessageId: options?.lastMessageId,\n sendStart: options?.sendStart,\n sendFinish: options?.sendFinish,\n sendReasoning: options?.sendReasoning,\n sendSources: options?.sendSources,\n messageMetadata: options?.messageMetadata,\n onError: options?.onError,\n }),\n ) as ReadableStream<InferUIMessageChunk<UIMessage>>;\n}\n","import type { AgentExecutionOptions } from '@mastra/core/agent';\n\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { registerApiRoute } from '@mastra/core/server';\nimport type { OutputSchema } from '@mastra/core/stream';\nimport { createUIMessageStream, createUIMessageStreamResponse } from 'ai';\nimport type { InferUIMessageChunk, UIMessage } from 'ai';\nimport { toAISdkV5Stream } from './convert-streams';\n\nexport type ChatStreamHandlerParams<\n UI_MESSAGE extends UIMessage,\n OUTPUT extends OutputSchema = undefined,\n> = AgentExecutionOptions<OUTPUT, 'mastra'> & {\n messages: UI_MESSAGE[];\n resumeData?: Record<string, any>;\n};\n\nexport type ChatStreamHandlerOptions<UI_MESSAGE extends UIMessage, OUTPUT extends OutputSchema = undefined> = {\n mastra: Mastra;\n agentId: string;\n params: ChatStreamHandlerParams<UI_MESSAGE, OUTPUT>;\n defaultOptions?: AgentExecutionOptions<OUTPUT, 'mastra'>;\n sendStart?: boolean;\n sendFinish?: boolean;\n sendReasoning?: boolean;\n sendSources?: boolean;\n};\n\n/**\n * Framework-agnostic handler for streaming agent chat in AI SDK-compatible format.\n * Use this function directly when you need to handle chat streaming outside of Hono or Mastra's own apiRoutes feature.\n *\n * @example\n * ```ts\n * // Next.js App Router\n * import { handleChatStream } from '@mastra/ai-sdk';\n * import { createUIMessageStreamResponse } from 'ai';\n * import { mastra } from '@/src/mastra';\n *\n * export async function POST(req: Request) {\n * const params = await req.json();\n * const stream = await handleChatStream({\n * mastra,\n * agentId: 'weatherAgent',\n * params,\n * });\n * return createUIMessageStreamResponse({ stream });\n * }\n * ```\n */\nexport async function handleChatStream<UI_MESSAGE extends UIMessage, OUTPUT extends OutputSchema = undefined>({\n mastra,\n agentId,\n params,\n defaultOptions,\n sendStart = true,\n sendFinish = true,\n sendReasoning = false,\n sendSources = false,\n}: ChatStreamHandlerOptions<UI_MESSAGE, OUTPUT>): Promise<ReadableStream<InferUIMessageChunk<UI_MESSAGE>>> {\n const { messages, resumeData, runId, requestContext, ...rest } = params;\n\n if (resumeData && !runId) {\n throw new Error('runId is required when resumeData is provided');\n }\n\n const agentObj = mastra.getAgentById(agentId);\n if (!agentObj) {\n throw new Error(`Agent ${agentId} not found`);\n }\n\n if (!Array.isArray(messages)) {\n throw new Error('Messages must be an array of UIMessage objects');\n }\n\n const mergedOptions = {\n ...defaultOptions,\n ...rest,\n ...(runId && { runId }),\n requestContext: requestContext || defaultOptions?.requestContext,\n };\n\n const result = resumeData\n ? await agentObj.resumeStream<OUTPUT>(resumeData, mergedOptions)\n : await agentObj.stream<OUTPUT>(messages, mergedOptions);\n\n let lastMessageId: string | undefined;\n if (messages.length) {\n const lastMessage = messages[messages.length - 1]!;\n if (lastMessage?.role === 'assistant') {\n lastMessageId = lastMessage.id;\n }\n }\n\n return createUIMessageStream<UI_MESSAGE>({\n originalMessages: messages,\n execute: async ({ writer }) => {\n for await (const part of toAISdkV5Stream(result, {\n from: 'agent',\n lastMessageId,\n sendStart,\n sendFinish,\n sendReasoning,\n sendSources,\n })!) {\n writer.write(part as InferUIMessageChunk<UI_MESSAGE>);\n }\n },\n });\n}\n\nexport type chatRouteOptions<OUTPUT extends OutputSchema = undefined> = {\n defaultOptions?: AgentExecutionOptions<OUTPUT, 'mastra'>;\n} & (\n | {\n path: `${string}:agentId${string}`;\n agent?: never;\n }\n | {\n path: string;\n agent: string;\n }\n) & {\n sendStart?: boolean;\n sendFinish?: boolean;\n sendReasoning?: boolean;\n sendSources?: boolean;\n };\n\n/**\n * Creates a chat route handler for streaming agent conversations using the AI SDK format.\n *\n * This function registers an HTTP POST endpoint that accepts messages, executes an agent, and streams the response back to the client in AI SDK-compatible format.\n *\n * @param {chatRouteOptions} options - Configuration options for the chat route\n * @param {string} [options.path='/chat/:agentId'] - The route path. Include `:agentId` for dynamic routing\n * @param {string} [options.agent] - Fixed agent ID when not using dynamic routing\n * @param {AgentExecutionOptions} [options.defaultOptions] - Default options passed to agent execution\n * @param {boolean} [options.sendStart=true] - Whether to send start events in the stream\n * @param {boolean} [options.sendFinish=true] - Whether to send finish events in the stream\n * @param {boolean} [options.sendReasoning=false] - Whether to include reasoning steps in the stream\n * @param {boolean} [options.sendSources=false] - Whether to include source citations in the stream\n *\n * @returns {ReturnType<typeof registerApiRoute>} A registered API route handler\n *\n * @throws {Error} When path doesn't include `:agentId` and no fixed agent is specified\n * @throws {Error} When agent ID is missing at runtime\n * @throws {Error} When specified agent is not found in Mastra instance\n *\n * @example\n * // Dynamic agent routing\n * chatRoute({\n * path: '/chat/:agentId',\n * });\n *\n * @example\n * // Fixed agent with custom path\n * chatRoute({\n * path: '/api/support-chat',\n * agent: 'support-agent',\n * defaultOptions: {\n * maxSteps: 5,\n * },\n * });\n *\n * @remarks\n * - The route handler expects a JSON body with a `messages` array\n * - Messages should follow the format: `{ role: 'user' | 'assistant' | 'system', content: string }`\n * - The response is a Server-Sent Events (SSE) stream compatible with AI SDK v5\n * - If both `agent` and `:agentId` are present, a warning is logged and the fixed `agent` takes precedence\n * - Request context from the incoming request overrides `defaultOptions.requestContext` if both are present\n */\nexport function chatRoute<OUTPUT extends OutputSchema = undefined>({\n path = '/chat/:agentId',\n agent,\n defaultOptions,\n sendStart = true,\n sendFinish = true,\n sendReasoning = false,\n sendSources = false,\n}: chatRouteOptions<OUTPUT>): ReturnType<typeof registerApiRoute> {\n if (!agent && !path.includes('/:agentId')) {\n throw new Error('Path must include :agentId to route to the correct agent or pass the agent explicitly');\n }\n\n return registerApiRoute(path, {\n method: 'POST',\n openapi: {\n summary: 'Chat with an agent',\n description: 'Send messages to an agent and stream the response in the AI SDK format',\n tags: ['ai-sdk'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n description: 'The ID of the agent to chat with',\n schema: {\n type: 'string',\n },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n resumeData: {\n type: 'object',\n description: 'Resume data for the agent',\n },\n runId: {\n type: 'string',\n description: 'The run ID required when resuming an agent execution',\n },\n messages: {\n type: 'array',\n description: 'Array of messages in the conversation',\n items: {\n type: 'object',\n properties: {\n role: {\n type: 'string',\n enum: ['user', 'assistant', 'system'],\n description: 'The role of the message sender',\n },\n content: {\n type: 'string',\n description: 'The content of the message',\n },\n },\n required: ['role', 'content'],\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n '200': {\n description: 'Streaming response from the agent',\n content: {\n 'text/plain': {\n schema: {\n type: 'string',\n description: 'Server-sent events stream containing the agent response',\n },\n },\n },\n },\n '400': {\n description: 'Bad request - invalid input',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n error: {\n type: 'string',\n },\n },\n },\n },\n },\n },\n '404': {\n description: 'Agent not found',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n error: {\n type: 'string',\n },\n },\n },\n },\n },\n },\n },\n },\n handler: async c => {\n const params = (await c.req.json()) as ChatStreamHandlerParams<UIMessage, OUTPUT>;\n const mastra = c.get('mastra');\n const contextRequestContext = (c as any).get('requestContext') as RequestContext | undefined;\n\n let agentToUse: string | undefined = agent;\n if (!agent) {\n const agentId = c.req.param('agentId');\n agentToUse = agentId;\n }\n\n if (c.req.param('agentId') && agent) {\n mastra\n .getLogger()\n ?.warn(\n `Fixed agent ID was set together with an agentId path parameter. This can lead to unexpected behavior.`,\n );\n }\n\n if (contextRequestContext && defaultOptions?.requestContext) {\n mastra\n .getLogger()\n ?.warn(`\"requestContext\" set in the route options will be overridden by the request's \"requestContext\".`);\n }\n\n if (!agentToUse) {\n throw new Error('Agent ID is required');\n }\n\n const uiMessageStream = await handleChatStream<UIMessage, OUTPUT>({\n mastra,\n agentId: agentToUse,\n params: {\n ...params,\n requestContext: contextRequestContext || params.requestContext,\n },\n defaultOptions,\n sendStart,\n sendFinish,\n sendReasoning,\n sendSources,\n });\n\n return createUIMessageStreamResponse({\n stream: uiMessageStream,\n });\n },\n });\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport type { TracingOptions } from '@mastra/core/observability';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { registerApiRoute } from '@mastra/core/server';\nimport { createUIMessageStream, createUIMessageStreamResponse } from 'ai';\nimport type { InferUIMessageChunk, UIMessage } from 'ai';\nimport { toAISdkV5Stream } from './convert-streams';\n\nexport type WorkflowStreamHandlerParams = {\n runId?: string;\n resourceId?: string;\n inputData?: Record<string, any>;\n resumeData?: Record<string, any>;\n requestContext?: RequestContext;\n tracingOptions?: TracingOptions;\n step?: string;\n};\n\nexport type WorkflowStreamHandlerOptions = {\n mastra: Mastra;\n workflowId: string;\n params: WorkflowStreamHandlerParams;\n includeTextStreamParts?: boolean;\n};\n\n/**\n * Framework-agnostic handler for streaming workflow execution in AI SDK-compatible format.\n * Use this function directly when you need to handle workflow streaming outside of Hono or Mastra's own apiRoutes feature.\n *\n * @example\n * ```ts\n * // Next.js App Router\n * import { handleWorkflowStream } from '@mastra/ai-sdk';\n * import { createUIMessageStreamResponse } from 'ai';\n * import { mastra } from '@/src/mastra';\n *\n * export async function POST(req: Request) {\n * const params = await req.json();\n * const stream = await handleWorkflowStream({\n * mastra,\n * workflowId: 'weatherWorkflow',\n * params,\n * });\n * return createUIMessageStreamResponse({ stream });\n * }\n * ```\n */\nexport async function handleWorkflowStream<UI_MESSAGE extends UIMessage>({\n mastra,\n workflowId,\n params,\n includeTextStreamParts = true,\n}: WorkflowStreamHandlerOptions): Promise<ReadableStream<InferUIMessageChunk<UI_MESSAGE>>> {\n const { runId, resourceId, inputData, resumeData, requestContext, ...rest } = params;\n\n const workflowObj = mastra.getWorkflowById(workflowId);\n if (!workflowObj) {\n throw new Error(`Workflow ${workflowId} not found`);\n }\n\n const run = await workflowObj.createRun({ runId, resourceId, ...rest });\n\n const stream = resumeData\n ? run.resumeStream({ resumeData, ...rest, requestContext })\n : run.stream({ inputData, ...rest, requestContext });\n\n return createUIMessageStream<UI_MESSAGE>({\n execute: async ({ writer }) => {\n for await (const part of toAISdkV5Stream(stream, { from: 'workflow', includeTextStreamParts })) {\n writer.write(part as InferUIMessageChunk<UI_MESSAGE>);\n }\n },\n });\n}\n\nexport type WorkflowRouteOptions =\n | { path: `${string}:workflowId${string}`; workflow?: never; includeTextStreamParts?: boolean }\n | { path: string; workflow: string; includeTextStreamParts?: boolean };\n\n/**\n * Creates a workflow route handler for streaming workflow execution using the AI SDK format.\n *\n * This function registers an HTTP POST endpoint that accepts input data, executes a workflow, and streams the response back to the client in AI SDK-compatible format.\n *\n * @param {WorkflowRouteOptions} options - Configuration options for the workflow route\n * @param {string} [options.path='/api/workflows/:workflowId/stream'] - The route path. Include `:workflowId` for dynamic routing\n * @param {string} [options.workflow] - Fixed workflow ID when not using dynamic routing\n * @param {boolean} [options.includeTextStreamParts=true] - Whether to include text stream parts in the output\n *\n * @example\n * // Dynamic workflow routing\n * workflowRoute({\n * path: '/api/workflows/:workflowId/stream',\n * });\n *\n * @example\n * // Fixed workflow with custom path\n * workflowRoute({\n * path: '/api/data-pipeline/stream',\n * workflow: 'data-processing-workflow',\n * });\n */\nexport function workflowRoute({\n path = '/api/workflows/:workflowId/stream',\n workflow,\n includeTextStreamParts = true,\n}: WorkflowRouteOptions): ReturnType<typeof registerApiRoute> {\n if (!workflow && !path.includes('/:workflowId')) {\n throw new Error('Path must include :workflowId to route to the correct workflow or pass the workflow explicitly');\n }\n\n return registerApiRoute(path, {\n method: 'POST',\n openapi: {\n summary: 'Stream a workflow in AI SDK format',\n description: 'Starts a workflow run and streams events as AI SDK UIMessage chunks',\n tags: ['ai-sdk'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n description: 'The ID of the workflow to stream',\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n runId: { type: 'string' },\n resourceId: { type: 'string' },\n inputData: { type: 'object', additionalProperties: true },\n resumeData: { type: 'object', additionalProperties: true },\n requestContext: { type: 'object', additionalProperties: true },\n tracingOptions: { type: 'object', additionalProperties: true },\n step: { type: 'string' },\n },\n },\n },\n },\n },\n responses: {\n '200': {\n description: 'Workflow UIMessage event stream',\n content: {\n 'text/plain': {\n schema: { type: 'string', description: 'SSE stream' },\n },\n },\n },\n },\n },\n handler: async c => {\n const params = (await c.req.json()) as WorkflowStreamHandlerParams;\n const mastra = c.get('mastra');\n const contextRequestContext = (c as any).get('requestContext') as RequestContext | undefined;\n\n let workflowToUse: string | undefined = workflow;\n if (!workflow) {\n const workflowId = c.req.param('workflowId');\n workflowToUse = workflowId;\n }\n\n if (c.req.param('workflowId') && workflow) {\n mastra\n .getLogger()\n ?.warn(\n `Fixed workflow ID was set together with a workflowId path parameter. This can lead to unexpected behavior.`,\n );\n }\n if (!workflowToUse) {\n throw new Error('Workflow ID is required');\n }\n\n if (contextRequestContext && params.requestContext) {\n mastra\n .getLogger()\n ?.warn(\n `\"requestContext\" from the request body will be ignored because \"requestContext\" is already set in the route options.`,\n );\n }\n\n const uiMessageStream = await handleWorkflowStream({\n mastra,\n workflowId: workflowToUse,\n params: {\n ...params,\n requestContext: contextRequestContext || params.requestContext,\n },\n includeTextStreamParts,\n });\n\n return createUIMessageStreamResponse({ stream: uiMessageStream });\n },\n });\n}\n","import type { AgentExecutionOptions } from '@mastra/core/agent';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { registerApiRoute } from '@mastra/core/server';\nimport type { OutputSchema } from '@mastra/core/stream';\nimport { createUIMessageStream, createUIMessageStreamResponse } from 'ai';\nimport type { InferUIMessageChunk, UIMessage } from 'ai';\nimport { toAISdkV5Stream } from './convert-streams';\n\nexport type NetworkStreamHandlerParams<OUTPUT extends OutputSchema = undefined> = AgentExecutionOptions<\n OUTPUT,\n 'mastra'\n> & {\n messages: MessageListInput;\n};\n\nexport type NetworkStreamHandlerOptions<OUTPUT extends OutputSchema = undefined> = {\n mastra: Mastra;\n agentId: string;\n params: NetworkStreamHandlerParams<OUTPUT>;\n defaultOptions?: AgentExecutionOptions<OUTPUT, 'mastra'>;\n};\n\n/**\n * Framework-agnostic handler for streaming agent network execution in AI SDK-compatible format.\n * Use this function directly when you need to handle network streaming outside of Hono or Mastra's own apiRoutes feature.\n *\n * @example\n * ```ts\n * // Next.js App Router\n * import { handleNetworkStream } from '@mastra/ai-sdk';\n * import { createUIMessageStreamResponse } from 'ai';\n * import { mastra } from '@/src/mastra';\n *\n * export async function POST(req: Request) {\n * const params = await req.json();\n * const stream = await handleNetworkStream({\n * mastra,\n * agentId: 'routingAgent',\n * params,\n * });\n * return createUIMessageStreamResponse({ stream });\n * }\n * ```\n */\nexport async function handleNetworkStream<UI_MESSAGE extends UIMessage, OUTPUT extends OutputSchema = undefined>({\n mastra,\n agentId,\n params,\n defaultOptions,\n}: NetworkStreamHandlerOptions<OUTPUT>): Promise<ReadableStream<InferUIMessageChunk<UI_MESSAGE>>> {\n const { messages, ...rest } = params;\n\n const agentObj = mastra.getAgentById(agentId);\n\n if (!agentObj) {\n throw new Error(`Agent ${agentId} not found`);\n }\n\n const result = await agentObj.network(messages, {\n ...defaultOptions,\n ...rest,\n });\n\n return createUIMessageStream<UI_MESSAGE>({\n execute: async ({ writer }) => {\n for await (const part of toAISdkV5Stream(result, { from: 'network' })) {\n writer.write(part as InferUIMessageChunk<UI_MESSAGE>);\n }\n },\n });\n}\n\nexport type NetworkRouteOptions<OUTPUT extends OutputSchema = undefined> =\n | { path: `${string}:agentId${string}`; agent?: never; defaultOptions?: AgentExecutionOptions<OUTPUT, 'mastra'> }\n | { path: string; agent: string; defaultOptions?: AgentExecutionOptions<OUTPUT, 'mastra'> };\n\n/**\n * Creates a network route handler for streaming agent network execution using the AI SDK-compatible format.\n *\n * This function registers an HTTP POST endpoint that accepts messages, executes an agent network, and streams the response back to the client in AI SDK-compatible format. Agent networks allow a routing agent to delegate tasks to other agents.\n *\n * @param {NetworkRouteOptions} options - Configuration options for the network route\n * @param {string} [options.path='/network/:agentId'] - The route path. Include `:agentId` for dynamic routing\n * @param {string} [options.agent] - Fixed agent ID when not using dynamic routing\n * @param {AgentExecutionOptions} [options.defaultOptions] - Default options passed to agent execution\n *\n * @example\n * // Dynamic agent routing\n * networkRoute({\n * path: '/network/:agentId',\n * });\n *\n * @example\n * // Fixed agent with custom path\n * networkRoute({\n * path: '/api/orchestrator',\n * agent: 'router-agent',\n * defaultOptions: {\n * maxSteps: 10,\n * },\n * });\n */\nexport function networkRoute<OUTPUT extends OutputSchema = undefined>({\n path = '/network/:agentId',\n agent,\n defaultOptions,\n}: NetworkRouteOptions<OUTPUT>): ReturnType<typeof registerApiRoute> {\n if (!agent && !path.includes('/:agentId')) {\n throw new Error('Path must include :agentId to route to the correct agent or pass the agent explicitly');\n }\n\n return registerApiRoute(path, {\n method: 'POST',\n openapi: {\n summary: 'Execute an agent network and stream AI SDK events',\n description: 'Routes a request to an agent network and streams UIMessage chunks in AI SDK format',\n tags: ['ai-sdk'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n description: 'The ID of the routing agent to execute as a network',\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: { type: 'array', items: { type: 'object' } },\n requestContext: { type: 'object', additionalProperties: true },\n runId: { type: 'string' },\n maxSteps: { type: 'number' },\n threadId: { type: 'string' },\n resourceId: { type: 'string' },\n modelSettings: { type: 'object', additionalProperties: true },\n tools: { type: 'array', items: { type: 'object' } },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n '200': {\n description: 'Streaming AI SDK UIMessage event stream for the agent network',\n content: { 'text/plain': { schema: { type: 'string', description: 'SSE stream' } } },\n },\n '404': {\n description: 'Agent not found',\n content: {\n 'application/json': {\n schema: { type: 'object', properties: { error: { type: 'string' } } },\n },\n },\n },\n },\n },\n handler: async c => {\n const params = (await c.req.json()) as NetworkStreamHandlerParams<OUTPUT>;\n const mastra = c.get('mastra');\n\n let agentToUse: string | undefined = agent;\n if (!agent) {\n const agentId = c.req.param('agentId');\n agentToUse = agentId;\n }\n\n if (c.req.param('agentId') && agent) {\n mastra\n .getLogger()\n ?.warn(\n `Fixed agent ID was set together with an agentId path parameter. This can lead to unexpected behavior.`,\n );\n }\n\n if (!agentToUse) {\n throw new Error('Agent ID is required');\n }\n\n const uiMessageStream = await handleNetworkStream<UIMessage, OUTPUT>({\n mastra,\n agentId: agentToUse,\n params,\n defaultOptions,\n });\n\n return createUIMessageStreamResponse({ stream: uiMessageStream });\n },\n });\n}\n","import type {\n LanguageModelV2,\n LanguageModelV2Middleware,\n LanguageModelV2Prompt,\n LanguageModelV2StreamPart,\n} from '@ai-sdk/provider';\nimport { MessageList, TripWire } from '@mastra/core/agent';\nimport type { MastraDBMessage } from '@mastra/core/agent';\nimport { RequestContext } from '@mastra/core/di';\nimport type { MemoryConfig, SemanticRecall as SemanticRecallConfig } from '@mastra/core/memory';\nimport { MessageHistory, SemanticRecall, WorkingMemory } from '@mastra/core/processors';\nimport type {\n InputProcessor,\n OutputProcessor,\n ProcessInputArgs,\n ProcessOutputResultArgs,\n ProcessOutputStreamArgs,\n} from '@mastra/core/processors';\nimport type { MemoryStorage } from '@mastra/core/storage';\nimport { convertFullStreamChunkToMastra } from '@mastra/core/stream';\nimport type { ChunkType } from '@mastra/core/stream';\nimport type { MastraEmbeddingModel, MastraVector } from '@mastra/core/vector';\nimport { wrapLanguageModel } from 'ai';\nimport { toAISDKFinishReason } from './helpers';\n\n/**\n * Memory context for processors that need thread/resource info\n */\nexport interface ProcessorMemoryContext {\n /** Thread ID for conversation persistence */\n threadId?: string;\n /** Resource ID (user/session identifier) */\n resourceId?: string;\n /** Memory configuration options */\n config?: MemoryConfig;\n}\n\n/**\n * Options for creating processor middleware\n */\nexport interface ProcessorMiddlewareOptions {\n /** Input processors to run before the LLM call */\n inputProcessors?: InputProcessor[];\n /** Output processors to run on the LLM response */\n outputProcessors?: OutputProcessor[];\n /** Memory context for processors that need thread/resource info */\n memory?: ProcessorMemoryContext;\n}\n\n/**\n * Semantic recall configuration with required vector and embedder.\n * Inherits JSDoc from SemanticRecall type in memory/types.ts.\n */\nexport type WithMastraSemanticRecallOptions = SemanticRecallConfig & {\n /** Vector store for semantic search (required) */\n vector: MastraVector;\n /** Embedder for generating query embeddings (required) */\n embedder: MastraEmbeddingModel<string>;\n};\n\n/**\n * Memory configuration for withMastra\n */\nexport interface WithMastraMemoryOptions {\n /** Storage adapter for message persistence (required) */\n storage: MemoryStorage;\n /** Thread ID for conversation persistence (required) */\n threadId: string;\n /** Resource ID (user/session identifier) */\n resourceId?: string;\n /** Number of recent messages to retrieve, or false to disable */\n lastMessages?: number | false;\n /** Semantic recall configuration (RAG-based memory retrieval) */\n semanticRecall?: WithMastraSemanticRecallOptions;\n /** Working memory configuration (persistent user data) */\n workingMemory?: MemoryConfig['workingMemory'];\n /** Read-only mode - prevents saving new messages */\n readOnly?: boolean;\n}\n\n/**\n * Options for withMastra wrapper\n */\nexport interface WithMastraOptions {\n /** Memory configuration - enables automatic message history persistence */\n memory?: WithMastraMemoryOptions;\n /** Input processors to run before the LLM call */\n inputProcessors?: InputProcessor[];\n /** Output processors to run on the LLM response */\n outputProcessors?: OutputProcessor[];\n}\n\n/**\n * Wraps a language model with Mastra capabilities including memory and processors.\n *\n * @example\n * ```typescript\n * // With message history (auto-creates MessageHistory processor)\n * import { openai } from '@ai-sdk/openai';\n * import { withMastra } from '@mastra/ai-sdk';\n * import { LibSQLStore } from '@mastra/libsql';\n *\n * const storage = new LibSQLStore({ url: 'file:memory.db' });\n * await storage.init();\n *\n * const model = withMastra(openai('gpt-4o'), {\n * memory: {\n * storage,\n * threadId: 'thread-123',\n * resourceId: 'user-456',\n * lastMessages: 10,\n * },\n * });\n *\n * const { text } = await generateText({ model, prompt: 'Hello' });\n * ```\n *\n * @example\n * ```typescript\n * // With semantic recall (RAG-based memory)\n * const model = withMastra(openai('gpt-4o'), {\n * memory: {\n * storage,\n * threadId: 'thread-123',\n * semanticRecall: {\n * vector: pinecone,\n * embedder: openai.embedding('text-embedding-3-small'),\n * topK: 5,\n * messageRange: 2, // Include 2 messages before/after each match\n * },\n * },\n * });\n * ```\n *\n * @example\n * ```typescript\n * // With working memory (persistent user data)\n * const model = withMastra(openai('gpt-4o'), {\n * memory: {\n * storage,\n * threadId: 'thread-123',\n * workingMemory: {\n * enabled: true,\n * template: '# User Profile\\n- **Name**:\\n- **Preferences**:',\n * },\n * },\n * });\n * ```\n *\n * @example\n * ```typescript\n * // With custom processors\n * const model = withMastra(openai('gpt-4o'), {\n * inputProcessors: [myInputProcessor],\n * outputProcessors: [myOutputProcessor],\n * });\n * ```\n */\nexport function withMastra(model: LanguageModelV2, options: WithMastraOptions = {}): LanguageModelV2 {\n const { memory, inputProcessors = [], outputProcessors = [] } = options;\n\n // Build the list of processors\n const allInputProcessors: InputProcessor[] = [...inputProcessors];\n const allOutputProcessors: OutputProcessor[] = [...outputProcessors];\n\n // Auto-create memory processors based on config\n if (memory) {\n const { storage, lastMessages, semanticRecall, workingMemory } = memory;\n\n // Add WorkingMemory processor if enabled (input processor only)\n const isWorkingMemoryEnabled = typeof workingMemory === 'object' && workingMemory.enabled !== false;\n\n if (isWorkingMemoryEnabled && typeof workingMemory === 'object') {\n // Convert string template to WorkingMemoryTemplate format\n let template: { format: 'markdown' | 'json'; content: string } | undefined;\n if (workingMemory.template) {\n template = {\n format: 'markdown',\n content: workingMemory.template,\n };\n }\n\n const workingMemoryProcessor = new WorkingMemory({\n storage,\n template,\n scope: workingMemory.scope,\n useVNext: 'version' in workingMemory && workingMemory.version === 'vnext',\n });\n\n // WorkingMemory is an input-only processor\n allInputProcessors.push(workingMemoryProcessor);\n }\n\n // Add MessageHistory processor if lastMessages is configured\n if (lastMessages !== false && lastMessages !== undefined) {\n const messageHistory = new MessageHistory({\n storage,\n lastMessages: typeof lastMessages === 'number' ? lastMessages : undefined,\n });\n\n allInputProcessors.push(messageHistory);\n allOutputProcessors.push(messageHistory);\n }\n\n // Add SemanticRecall processor if configured\n if (semanticRecall) {\n const { vector, embedder, indexName, ...semanticConfig } = semanticRecall;\n\n const semanticRecallProcessor = new SemanticRecall({\n storage,\n vector,\n embedder,\n indexName: indexName || 'memory_messages',\n ...semanticConfig,\n });\n\n allInputProcessors.push(semanticRecallProcessor);\n allOutputProcessors.push(semanticRecallProcessor);\n }\n }\n\n return wrapLanguageModel({\n model,\n middleware: createProcessorMiddleware({\n inputProcessors: allInputProcessors,\n outputProcessors: allOutputProcessors,\n memory: memory\n ? {\n threadId: memory.threadId,\n resourceId: memory.resourceId,\n }\n : undefined,\n }),\n });\n}\n\n/**\n * Internal state stored in providerOptions to pass state between middleware methods.\n * This ensures request isolation when middleware is reused across concurrent requests.\n */\ninterface ProcessorMiddlewareState {\n tripwire?: boolean;\n reason?: string;\n}\n\ninterface TextPart {\n type: 'text';\n text: string;\n}\n\n/**\n * Creates AI SDK middleware that runs Mastra processors on input/output.\n * For a simpler API, use `withMastra` instead.\n *\n * @example\n * ```typescript\n * import { wrapLanguageModel, generateText } from 'ai';\n * import { openai } from '@ai-sdk/openai';\n * import { createProcessorMiddleware } from '@mastra/ai-sdk';\n *\n * const model = wrapLanguageModel({\n * model: openai('gpt-4o'),\n * middleware: createProcessorMiddleware({\n * inputProcessors: [myProcessor],\n * outputProcessors: [myProcessor],\n * }),\n * });\n *\n * const { text } = await generateText({ model, prompt: 'Hello' });\n * ```\n */\nexport function createProcessorMiddleware(options: ProcessorMiddlewareOptions): LanguageModelV2Middleware {\n const { inputProcessors = [], outputProcessors = [], memory } = options;\n\n // Create RequestContext with memory info if provided\n const requestContext = new RequestContext();\n if (memory) {\n requestContext.set('MastraMemory', {\n thread: memory.threadId ? { id: memory.threadId } : undefined,\n resourceId: memory.resourceId,\n memoryConfig: memory.config,\n });\n }\n\n return {\n middlewareVersion: 'v2',\n\n /**\n * Transform params runs input processors (processInput)\n */\n async transformParams({ params }) {\n // Create a real MessageList with memory context\n const messageList = new MessageList({\n threadId: memory?.threadId,\n resourceId: memory?.resourceId,\n });\n\n // Add AI SDK prompt messages to the message list\n // MessageList.add() auto-detects AI SDK v5 messages and converts them\n for (const msg of params.prompt) {\n if (msg.role === 'system') {\n messageList.addSystem(msg.content);\n } else {\n // MessageList.add() handles AI SDK ModelMessage format automatically\n messageList.add(msg, 'input');\n }\n }\n\n // Run each input processor\n for (const processor of inputProcessors) {\n if (processor.processInput) {\n try {\n // Processors modify messageList in place. Array returns are supported\n // but the messageList reference takes precedence for preserving source info.\n await processor.processInput({\n messages: messageList.get.input.db(),\n systemMessages: messageList.getAllSystemMessages(),\n messageList,\n requestContext,\n abort: (reason?: string): never => {\n throw new TripWire(reason || 'Aborted by processor');\n },\n } as ProcessInputArgs);\n } catch (error) {\n if (error instanceof TripWire) {\n // Store tripwire in providerOptions for wrapGenerate/wrapStream to handle\n return {\n ...params,\n providerOptions: {\n ...params.providerOptions,\n mastraProcessors: {\n tripwire: true,\n reason: error.message,\n } satisfies ProcessorMiddlewareState,\n },\n };\n }\n throw error;\n }\n }\n }\n\n // Convert back to AI SDK prompt format using built-in MessageList methods\n // get.all.aiV5.prompt() returns ModelMessage[], then convert to LanguageModelV2Prompt\n const newPrompt: LanguageModelV2Prompt = messageList.get.all.aiV5\n .prompt()\n .map(MessageList.aiV5ModelMessageToV2PromptMessage);\n\n return {\n ...params,\n prompt: newPrompt,\n };\n },\n\n /**\n * Wrap generate for non-streaming output processing\n */\n async wrapGenerate({ doGenerate, params }) {\n // Check for tripwire from transformParams\n const processorState = params.providerOptions?.mastraProcessors as ProcessorMiddlewareState | undefined;\n if (processorState?.tripwire) {\n const reason = processorState.reason || 'Blocked by processor';\n return {\n content: [{ type: 'text' as const, text: reason }],\n finishReason: 'stop' as const,\n usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },\n warnings: [{ type: 'other' as const, message: `Tripwire: ${reason}` }],\n };\n }\n\n const result = await doGenerate();\n\n if (!outputProcessors.length) return result;\n\n // Create a fresh MessageList for output processing\n // The transformed prompt from transformParams contains all input messages\n const messageList = new MessageList({\n threadId: memory?.threadId,\n resourceId: memory?.resourceId,\n });\n\n // Add the transformed prompt messages to the list\n for (const msg of params.prompt) {\n if (msg.role === 'system') {\n messageList.addSystem(msg.content);\n } else {\n messageList.add(msg, 'input');\n }\n }\n\n // Extract text from result and add as response\n const textContent = result.content\n .filter((c): c is { type: 'text'; text: string } => c.type === 'text')\n .map(c => c.text)\n .join('');\n\n const responseMessage: MastraDBMessage = {\n id: crypto.randomUUID(),\n role: 'assistant',\n content: {\n format: 2,\n parts: [{ type: 'text', text: textContent }],\n },\n createdAt: new Date(),\n ...(memory?.threadId && { threadId: memory.threadId }),\n ...(memory?.resourceId && { resourceId: memory.resourceId }),\n };\n\n messageList.add(responseMessage, 'response');\n\n // Run output processors (processOutputResult)\n for (const processor of outputProcessors) {\n if (processor.processOutputResult) {\n try {\n await processor.processOutputResult({\n messages: messageList.get.all.db(),\n messageList,\n requestContext,\n abort: (reason?: string): never => {\n throw new TripWire(reason || 'Aborted by processor');\n },\n } as ProcessOutputResultArgs);\n } catch (error) {\n if (error instanceof TripWire) {\n return {\n content: [{ type: 'text' as const, text: error.message }],\n finishReason: 'stop' as const,\n usage: result.usage,\n warnings: [{ type: 'other' as const, message: `Output blocked: ${error.message}` }],\n };\n }\n throw error;\n }\n }\n }\n\n // Get processed text from response messages only\n const processedText = messageList.get.response\n .db()\n .map(m => extractTextFromMastraMessage(m))\n .join('');\n\n return {\n ...result,\n content: [{ type: 'text' as const, text: processedText }],\n };\n },\n\n /**\n * Wrap stream for streaming output processing\n */\n async wrapStream({ doStream, params }) {\n // Check for tripwire from transformParams\n const processorState = params.providerOptions?.mastraProcessors as ProcessorMiddlewareState | undefined;\n if (processorState?.tripwire) {\n const reason = processorState.reason || 'Blocked by processor';\n return {\n stream: createBlockedStream(reason),\n };\n }\n\n const { stream, ...rest } = await doStream();\n\n if (!outputProcessors.length) return { stream, ...rest };\n\n // Transform stream through output processors\n const processorStates = new Map<string, { streamParts: ChunkType[]; customState: Record<string, unknown> }>();\n const runId = crypto.randomUUID();\n\n const transformedStream = stream.pipeThrough(\n new TransformStream<LanguageModelV2StreamPart, LanguageModelV2StreamPart>({\n async transform(chunk, controller) {\n // Convert to Mastra chunk format\n let mastraChunk: ChunkType | undefined = convertFullStreamChunkToMastra(\n chunk as Parameters<typeof convertFullStreamChunkToMastra>[0],\n { runId },\n );\n\n if (!mastraChunk) {\n controller.enqueue(chunk);\n return;\n }\n\n // Run through each output processor's processOutputStream\n for (const processor of outputProcessors) {\n if (processor.processOutputStream && mastraChunk) {\n let state = processorStates.get(processor.id);\n if (!state) {\n state = { streamParts: [], customState: {} };\n processorStates.set(processor.id, state);\n }\n state.streamParts.push(mastraChunk);\n\n try {\n const result = await processor.processOutputStream({\n part: mastraChunk,\n streamParts: state.streamParts,\n state: state.customState,\n requestContext,\n abort: (reason?: string): never => {\n throw new TripWire(reason || 'Aborted by processor');\n },\n } as ProcessOutputStreamArgs);\n\n // If result is null/undefined, filter out this chunk\n if (result === null || result === undefined) {\n mastraChunk = undefined;\n } else {\n mastraChunk = result;\n }\n } catch (error) {\n if (error instanceof TripWire) {\n // Emit error and close stream\n controller.enqueue({\n type: 'error',\n error: new Error(error.message),\n });\n controller.terminate();\n return;\n }\n throw error;\n }\n }\n }\n\n // Convert back to AI SDK format and enqueue if not filtered\n if (mastraChunk) {\n const aiChunk = convertMastraChunkToAISDKStreamPart(mastraChunk);\n if (aiChunk) {\n controller.enqueue(aiChunk);\n }\n }\n },\n }),\n );\n\n return { stream: transformedStream, ...rest };\n },\n };\n}\n\n/**\n * Creates a blocked stream that returns a message and closes\n */\nfunction createBlockedStream(reason: string): ReadableStream<LanguageModelV2StreamPart> {\n return new ReadableStream({\n start(controller) {\n const id = crypto.randomUUID();\n controller.enqueue({\n type: 'text-start',\n id,\n });\n controller.enqueue({\n type: 'text-delta',\n id,\n delta: reason,\n });\n controller.enqueue({\n type: 'text-end',\n id,\n });\n controller.enqueue({\n type: 'finish',\n finishReason: 'stop',\n usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },\n });\n controller.close();\n },\n });\n}\n\n/**\n * Extract text content from a Mastra message\n */\nfunction extractTextFromMastraMessage(msg: MastraDBMessage): string {\n const content = msg.content;\n\n if (typeof content === 'string') {\n return content;\n }\n\n if (content?.parts) {\n return content.parts\n .filter((p): p is TextPart => p.type === 'text' && 'text' in p)\n .map(p => p.text)\n .join('');\n }\n\n return '';\n}\n\n/**\n * Convert Mastra chunk back to AI SDK LanguageModelV2StreamPart (provider-level stream format)\n */\nfunction convertMastraChunkToAISDKStreamPart(chunk: ChunkType): LanguageModelV2StreamPart | null {\n switch (chunk.type) {\n // Text streaming\n case 'text-start':\n return {\n type: 'text-start',\n id: chunk.payload.id || crypto.randomUUID(),\n providerMetadata: chunk.payload.providerMetadata,\n };\n\n case 'text-delta':\n return {\n type: 'text-delta',\n id: chunk.payload.id || crypto.randomUUID(),\n delta: chunk.payload.text,\n providerMetadata: chunk.payload.providerMetadata,\n };\n\n case 'text-end':\n return {\n type: 'text-end',\n id: chunk.payload.id || crypto.randomUUID(),\n providerMetadata: chunk.payload.providerMetadata,\n };\n\n // Reasoning streaming\n case 'reasoning-start':\n return {\n type: 'reasoning-start',\n id: chunk.payload.id || crypto.randomUUID(),\n providerMetadata: chunk.payload.providerMetadata,\n };\n\n case 'reasoning-delta':\n return {\n type: 'reasoning-delta',\n id: chunk.payload.id || crypto.randomUUID(),\n delta: chunk.payload.text,\n providerMetadata: chunk.payload.providerMetadata,\n };\n\n case 'reasoning-end':\n return {\n type: 'reasoning-end',\n id: chunk.payload.id || crypto.randomUUID(),\n providerMetadata: chunk.payload.providerMetadata,\n };\n\n // Tool call (complete)\n case 'tool-call':\n return {\n type: 'tool-call',\n toolCallId: chunk.payload.toolCallId,\n toolName: chunk.payload.toolName,\n input: JSON.stringify(chunk.payload.args),\n providerExecuted: chunk.payload.providerExecuted,\n providerMetadata: chunk.payload.providerMetadata,\n };\n\n // Tool call input streaming\n case 'tool-call-input-streaming-start':\n return {\n type: 'tool-input-start',\n id: chunk.payload.toolCallId,\n toolName: chunk.payload.toolName,\n providerExecuted: chunk.payload.providerExecuted,\n providerMetadata: chunk.payload.providerMetadata,\n };\n\n case 'tool-call-delta':\n return {\n type: 'tool-input-delta',\n id: chunk.payload.toolCallId,\n delta: chunk.payload.argsTextDelta,\n providerMetadata: chunk.payload.providerMetadata,\n };\n\n case 'tool-call-input-streaming-end':\n return {\n type: 'tool-input-end',\n id: chunk.payload.toolCallId,\n providerMetadata: chunk.payload.providerMetadata,\n };\n\n // Tool result\n case 'tool-result':\n return {\n type: 'tool-result',\n toolCallId: chunk.payload.toolCallId,\n toolName: chunk.payload.toolName,\n result: { type: 'json', value: chunk.payload.result },\n isError: chunk.payload.isError,\n providerExecuted: chunk.payload.providerExecuted,\n providerMetadata: chunk.payload.providerMetadata,\n } as LanguageModelV2StreamPart;\n\n // Source (citations)\n case 'source':\n if (chunk.payload.sourceType === 'url') {\n return {\n type: 'source',\n sourceType: 'url',\n id: chunk.payload.id,\n url: chunk.payload.url!,\n title: chunk.payload.title,\n providerMetadata: chunk.payload.providerMetadata,\n } as LanguageModelV2StreamPart;\n } else {\n return {\n type: 'source',\n sourceType: 'document',\n id: chunk.payload.id,\n mediaType: chunk.payload.mimeType!,\n title: chunk.payload.title,\n filename: chunk.payload.filename,\n providerMetadata: chunk.payload.providerMetadata,\n } as LanguageModelV2StreamPart;\n }\n\n // File output\n case 'file':\n return {\n type: 'file',\n data: chunk.payload.data || chunk.payload.base64,\n mediaType: chunk.payload.mimeType,\n } as LanguageModelV2StreamPart;\n\n // Response metadata\n case 'response-metadata':\n return {\n type: 'response-metadata',\n ...chunk.payload,\n } as LanguageModelV2StreamPart;\n\n // Raw provider data\n case 'raw':\n return {\n type: 'raw',\n rawValue: chunk.payload,\n } as LanguageModelV2StreamPart;\n\n // Finish\n case 'finish': {\n const usage = chunk.payload.output?.usage;\n return {\n type: 'finish',\n finishReason: toAISDKFinishReason(chunk.payload.stepResult?.reason || 'stop'),\n usage: usage\n ? {\n inputTokens: usage.inputTokens || 0,\n outputTokens: usage.outputTokens || 0,\n totalTokens: usage.totalTokens || 0,\n }\n : { inputTokens: 0, outputTokens: 0, totalTokens: 0 },\n providerMetadata: chunk.payload.metadata?.providerMetadata,\n };\n }\n\n // Error\n case 'error':\n return {\n type: 'error',\n error: chunk.payload.error || chunk.payload,\n };\n\n default:\n // Pass through unknown chunk types\n return null;\n }\n}\n","/**\n * @deprecated Use `toAISdkStream` instead. This function has been renamed for clarity.\n *\n * @example\n * ```typescript\n * // Old (deprecated):\n * import { toAISdkFormat } from '@mastra/ai-sdk';\n * const stream = toAISdkFormat(agentStream, { from: 'agent' });\n *\n * // New:\n * import { toAISdkStream } from '@mastra/ai-sdk';\n * const stream = toAISdkStream(agentStream, { from: 'agent' });\n * ```\n */\nexport function toAISdkFormat(): never {\n throw new Error(\n 'toAISdkFormat() has been deprecated. Please use toAISdkStream() instead.\\n\\n' +\n 'Migration:\\n' +\n ' import { toAISdkFormat } from \"@mastra/ai-sdk\";\\n' +\n ' // Change to:\\n' +\n ' import { toAISdkStream } from \"@mastra/ai-sdk\";\\n\\n' +\n 'The function signature remains the same.',\n );\n}\n"]}
|