{"version":3,"sources":["../src/stream/MastraAgentNetworkStream.ts","../src/stream/aisdk/v5/compat/ui-message.ts","../src/stream/base/consume-stream.ts","../src/stream/RunOutput.ts","../src/stream/aisdk/v5/transform.ts","../src/stream/caching-transform-stream.ts"],"names":["ReadableStream","EventEmitter","DelayedPromise","WritableStream","DefaultGeneratedFile","DefaultGeneratedFileWithType","rest"],"mappings":"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","file":"chunk-E4RVIKCV.cjs","sourcesContent":["import { ReadableStream } from 'node:stream/web';\nimport type { DefaultEngineType, Run, Step } from '../workflows';\nimport type { ChunkType } from './types';\n\nexport class MastraAgentNetworkStream<OUTPUT = undefined> extends ReadableStream<ChunkType<OUTPUT>> {\n  #usageCount = {\n    inputTokens: 0,\n    outputTokens: 0,\n    totalTokens: 0,\n    cachedInputTokens: 0,\n    cacheCreationInputTokens: 0,\n    reasoningTokens: 0,\n  };\n  #streamPromise: {\n    promise: Promise<void>;\n    resolve: (value: void) => void;\n    reject: (reason?: any) => void;\n  };\n  #objectPromise: {\n    promise: Promise<OUTPUT | undefined>;\n    resolve: (value: OUTPUT | undefined) => void;\n    reject: (reason?: any) => void;\n  };\n  #objectStreamController: ReadableStreamDefaultController<Partial<OUTPUT>> | null = null;\n  #objectStream: ReadableStream<Partial<OUTPUT>> | null = null;\n  #run: Run;\n  runId: string;\n\n  constructor({\n    createStream,\n    run,\n  }: {\n    createStream: (writer: WritableStream<ChunkType<OUTPUT>>) => Promise<ReadableStream<any>> | ReadableStream<any>;\n    run: Run<DefaultEngineType, Step<string, any, any, any, any, any, DefaultEngineType>[], any, any, any>;\n  }) {\n    const deferredPromise = {\n      promise: null,\n      resolve: null,\n      reject: null,\n    } as unknown as {\n      promise: Promise<void>;\n      resolve: (value: void) => void;\n      reject: (reason?: any) => void;\n    };\n    deferredPromise.promise = new Promise((resolve, reject) => {\n      deferredPromise.resolve = resolve;\n      deferredPromise.reject = reject;\n    });\n\n    // Object promise for structured output\n    const objectDeferredPromise = {\n      promise: null,\n      resolve: null,\n      reject: null,\n    } as unknown as {\n      promise: Promise<OUTPUT | undefined>;\n      resolve: (value: OUTPUT | undefined) => void;\n      reject: (reason?: any) => void;\n    };\n    objectDeferredPromise.promise = new Promise((resolve, reject) => {\n      objectDeferredPromise.resolve = resolve;\n      objectDeferredPromise.reject = reject;\n    });\n\n    // Object stream controller reference\n    let objectStreamController: ReadableStreamDefaultController<Partial<OUTPUT>> | null = null;\n\n    const updateUsageCount = (usage: {\n      inputTokens?: `${number}` | number;\n      outputTokens?: `${number}` | number;\n      totalTokens?: `${number}` | number;\n      reasoningTokens?: `${number}` | number;\n      cachedInputTokens?: `${number}` | number;\n      cacheCreationInputTokens?: `${number}` | number;\n    }) => {\n      this.#usageCount.inputTokens += parseInt(usage?.inputTokens?.toString() ?? '0', 10);\n      this.#usageCount.outputTokens += parseInt(usage?.outputTokens?.toString() ?? '0', 10);\n      this.#usageCount.totalTokens += parseInt(usage?.totalTokens?.toString() ?? '0', 10);\n      this.#usageCount.reasoningTokens += parseInt(usage?.reasoningTokens?.toString() ?? '0', 10);\n      this.#usageCount.cachedInputTokens += parseInt(usage?.cachedInputTokens?.toString() ?? '0', 10);\n      this.#usageCount.cacheCreationInputTokens += parseInt(usage?.cacheCreationInputTokens?.toString() ?? '0', 10);\n    };\n\n    super({\n      start: async controller => {\n        try {\n          const writer = new WritableStream<ChunkType<OUTPUT>>({\n            write: chunk => {\n              if (\n                (chunk.type === 'step-output' &&\n                  chunk.payload?.output?.from === 'AGENT' &&\n                  chunk.payload?.output?.type === 'finish') ||\n                (chunk.type === 'step-output' &&\n                  chunk.payload?.output?.from === 'WORKFLOW' &&\n                  chunk.payload?.output?.type === 'finish')\n              ) {\n                const output = chunk.payload?.output;\n                if (output && 'payload' in output && output.payload) {\n                  const finishPayload = output.payload;\n                  if ('usage' in finishPayload && finishPayload.usage) {\n                    updateUsageCount(finishPayload.usage);\n                  } else if ('output' in finishPayload && finishPayload.output) {\n                    const outputPayload = finishPayload.output;\n                    if ('usage' in outputPayload && outputPayload.usage) {\n                      updateUsageCount(outputPayload.usage);\n                    }\n                  }\n                }\n              }\n\n              controller.enqueue(chunk);\n            },\n          });\n\n          const stream: ReadableStream<ChunkType<OUTPUT>> = await createStream(writer);\n\n          const getInnerChunk = (chunk: ChunkType<OUTPUT>) => {\n            if (chunk.type === 'workflow-step-output') {\n              return getInnerChunk(chunk.payload.output as any);\n            }\n            return chunk;\n          };\n\n          let objectResolved = false;\n\n          for await (const chunk of stream) {\n            if (chunk.type === 'workflow-step-output') {\n              const innerChunk = getInnerChunk(chunk);\n              if (\n                innerChunk.type === 'routing-agent-end' ||\n                innerChunk.type === 'agent-execution-end' ||\n                innerChunk.type === 'workflow-execution-end'\n              ) {\n                if (innerChunk.payload?.usage) {\n                  updateUsageCount(innerChunk.payload.usage);\n                }\n              }\n\n              // Handle network-object chunks (partial objects during streaming)\n              if (innerChunk.type === 'network-object') {\n                if (objectStreamController) {\n                  objectStreamController.enqueue((innerChunk as any).payload?.object);\n                }\n                controller.enqueue(innerChunk);\n              }\n              // Handle network-object-result chunks (final structured object)\n              else if (innerChunk.type === 'network-object-result') {\n                if (!objectResolved) {\n                  objectResolved = true;\n                  objectDeferredPromise.resolve((innerChunk as any).payload?.object);\n                  if (objectStreamController) {\n                    objectStreamController.close();\n                  }\n                }\n                controller.enqueue(innerChunk);\n              } else if (innerChunk.type === 'network-execution-event-finish') {\n                const finishPayload = {\n                  ...innerChunk.payload,\n                  usage: this.#usageCount,\n                };\n                controller.enqueue({ ...innerChunk, payload: finishPayload });\n              } else {\n                controller.enqueue(innerChunk);\n              }\n            }\n          }\n\n          // If no object was resolved, resolve with undefined\n          if (!objectResolved) {\n            objectDeferredPromise.resolve(undefined);\n            if (objectStreamController) {\n              objectStreamController.close();\n            }\n          }\n\n          controller.close();\n          deferredPromise.resolve();\n        } catch (error) {\n          controller.error(error);\n          deferredPromise.reject(error);\n          objectDeferredPromise.reject(error);\n          if (objectStreamController) {\n            objectStreamController.error(error);\n          }\n        }\n      },\n    });\n\n    this.#run = run;\n    this.#streamPromise = deferredPromise;\n\n    this.runId = run.runId;\n    this.#objectPromise = objectDeferredPromise;\n\n    // Create object stream\n    this.#objectStream = new ReadableStream<Partial<OUTPUT>>({\n      start: ctrl => {\n        objectStreamController = ctrl;\n        this.#objectStreamController = ctrl;\n      },\n    });\n  }\n\n  get status() {\n    return this.#streamPromise.promise.then(() => this.#run._getExecutionResults()).then(res => res!.status);\n  }\n\n  get result() {\n    return this.#streamPromise.promise.then(() => this.#run._getExecutionResults());\n  }\n\n  get usage() {\n    return this.#streamPromise.promise.then(() => this.#usageCount);\n  }\n\n  /**\n   * Returns a promise that resolves to the structured output object.\n   * Only available when structuredOutput option is provided to network().\n   * Resolves to undefined if no structuredOutput was requested.\n   */\n  get object(): Promise<OUTPUT | undefined> {\n    return this.#objectPromise.promise;\n  }\n\n  /**\n   * Returns a ReadableStream of partial objects during structured output generation.\n   * Useful for streaming partial results as they're being generated.\n   */\n  get objectStream(): ReadableStream<Partial<OUTPUT>> {\n    return this.#objectStream!;\n  }\n}\n","import type { InferUIMessageChunk, TextStreamPart, ToolSet, UIMessage, IdGenerator } from '@internal/ai-sdk-v5';\n\nexport function getResponseUIMessageId({\n  originalMessages,\n  responseMessageId,\n}: {\n  originalMessages: UIMessage[] | undefined;\n  responseMessageId: string | IdGenerator | undefined;\n}) {\n  // when there are no original messages (i.e. no persistence),\n  // the assistant message id generation is handled on the client side.\n  if (originalMessages == null) {\n    return undefined;\n  }\n\n  const lastMessage = originalMessages[originalMessages.length - 1];\n\n  return lastMessage?.role === 'assistant'\n    ? lastMessage.id\n    : typeof responseMessageId === 'function'\n      ? responseMessageId()\n      : responseMessageId;\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> | { 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> | 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      return {\n        ...part.output,\n      };\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      const exhaustiveCheck: never = partType;\n      throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);\n    }\n  }\n}\n","export async function consumeStream({\n  stream,\n  onError,\n}: {\n  stream: ReadableStream;\n  onError?: (error: unknown) => void;\n}) {\n  const reader = stream.getReader();\n  try {\n    while (true) {\n      const { done } = await reader.read();\n      if (done) break;\n    }\n  } catch (error) {\n    onError == null ? void 0 : onError(error);\n  } finally {\n    reader.releaseLock();\n  }\n}\n","import EventEmitter from 'node:events';\nimport { ReadableStream, WritableStream } from 'node:stream/web';\nimport type { ReadableStreamGetReaderOptions, ReadableWritablePair, StreamPipeOptions } from 'node:stream/web';\nimport type { LanguageModelUsage } from '@internal/ai-sdk-v5';\nimport type { WorkflowResult, WorkflowRunStatus } from '../workflows';\nimport { DelayedPromise } from './aisdk/v5/compat';\nimport type { MastraBaseStream } from './base/base';\nimport { consumeStream } from './base/consume-stream';\nimport { ChunkFrom } from './types';\nimport type { StepTripwireData, WorkflowStreamEvent } from './types';\n\ntype AggregatedLanguageModelUsage = Required<LanguageModelUsage> & {\n  cacheCreationInputTokens: number;\n};\n\nexport class WorkflowRunOutput<\n  TResult extends WorkflowResult<any, any, any, any> = WorkflowResult<any, any, any, any>,\n> implements MastraBaseStream<WorkflowStreamEvent> {\n  #status: WorkflowRunStatus = 'running';\n  #tripwireData: StepTripwireData | undefined;\n  #usageCount: AggregatedLanguageModelUsage = {\n    inputTokens: 0,\n    outputTokens: 0,\n    totalTokens: 0,\n    cachedInputTokens: 0,\n    cacheCreationInputTokens: 0,\n    reasoningTokens: 0,\n  };\n  #consumptionStarted = false;\n  #baseStream: ReadableStream<WorkflowStreamEvent>;\n  #emitter = new EventEmitter();\n  #bufferedChunks: WorkflowStreamEvent[] = [];\n\n  #streamFinished = false;\n\n  #streamError: Error | undefined;\n\n  #delayedPromises = {\n    usage: new DelayedPromise<LanguageModelUsage>(),\n    result: new DelayedPromise<TResult>(),\n  };\n\n  /**\n   * Unique identifier for this workflow run\n   */\n  public runId: string;\n  /**\n   * Unique identifier for this workflow\n   */\n  public workflowId: string;\n\n  constructor({\n    runId,\n    workflowId,\n    stream,\n  }: {\n    runId: string;\n    workflowId: string;\n    stream: ReadableStream<WorkflowStreamEvent>;\n  }) {\n    const self = this;\n    this.runId = runId;\n    this.workflowId = workflowId;\n\n    this.#baseStream = stream;\n    stream\n      .pipeTo(\n        new WritableStream({\n          start() {\n            const chunk: WorkflowStreamEvent = {\n              type: 'workflow-start',\n              runId: self.runId,\n              from: ChunkFrom.WORKFLOW,\n              payload: {\n                workflowId: self.workflowId,\n              },\n            } as WorkflowStreamEvent;\n\n            self.#bufferedChunks.push(chunk);\n            self.#emitter.emit('chunk', chunk);\n          },\n          write(chunk) {\n            if (chunk.type !== 'workflow-step-finish') {\n              self.#bufferedChunks.push(chunk);\n              self.#emitter.emit('chunk', chunk);\n            }\n\n            if (chunk.type === 'workflow-step-output') {\n              if ('output' in chunk.payload && chunk.payload.output) {\n                const output = chunk.payload.output;\n                if (output.type === 'finish') {\n                  if (output.payload && 'usage' in output.payload && output.payload.usage) {\n                    self.#updateUsageCount(output.payload.usage);\n                  } else if (output.payload && 'output' in output.payload && output.payload.output) {\n                    const outputPayload = output.payload.output;\n                    if ('usage' in outputPayload && outputPayload.usage) {\n                      self.#updateUsageCount(outputPayload.usage);\n                    }\n                  }\n                }\n              }\n            } else if (chunk.type === 'workflow-canceled') {\n              self.#status = 'canceled';\n            } else if (chunk.type === 'workflow-step-suspended') {\n              self.#status = 'suspended';\n            } else if (chunk.type === 'workflow-step-result' && chunk.payload.status === 'failed') {\n              // Check if the failure was due to a tripwire\n              if (chunk.payload.tripwire) {\n                self.#status = 'tripwire';\n                self.#tripwireData = chunk.payload.tripwire;\n              } else {\n                self.#status = 'failed';\n              }\n            } else if (chunk.type === 'workflow-paused') {\n              self.#status = 'paused';\n            }\n          },\n          close() {\n            if (self.#status === 'running') {\n              self.#status = 'success';\n            }\n\n            self.#emitter.emit('chunk', {\n              type: 'workflow-finish',\n              runId: self.runId,\n              from: ChunkFrom.WORKFLOW,\n              payload: {\n                workflowStatus: self.#status,\n                metadata: self.#streamError\n                  ? {\n                      error: self.#streamError,\n                      errorMessage: self.#streamError?.message,\n                    }\n                  : {},\n                output: {\n                  usage: self.#usageCount,\n                },\n                // Include tripwire data when status is 'tripwire'\n                ...(self.#status === 'tripwire' && self.#tripwireData ? { tripwire: self.#tripwireData } : {}),\n              },\n            });\n\n            self.#delayedPromises.usage.resolve(self.#usageCount);\n\n            Object.entries(self.#delayedPromises).forEach(([key, promise]) => {\n              if (promise.status.type === 'pending') {\n                promise.reject(new Error(`promise '${key}' was not resolved or rejected when stream finished`));\n              }\n            });\n\n            self.#streamFinished = true;\n            self.#emitter.emit('finish');\n          },\n        }),\n      )\n      .catch(reason => {\n        // eslint-disable-next-line no-console\n        console.log(' something went wrong', reason);\n      });\n  }\n\n  #getDelayedPromise<T>(promise: DelayedPromise<T>): Promise<T> {\n    if (!this.#consumptionStarted) {\n      void this.consumeStream();\n    }\n    return promise.promise;\n  }\n\n  #updateUsageCount(\n    usage:\n      | {\n          inputTokens?: `${number}` | number;\n          outputTokens?: `${number}` | number;\n          totalTokens?: `${number}` | number;\n          reasoningTokens?: `${number}` | number;\n          cachedInputTokens?: `${number}` | number;\n          cacheCreationInputTokens?: `${number}` | number;\n        }\n      | {\n          promptTokens?: `${number}` | number;\n          completionTokens?: `${number}` | number;\n          totalTokens?: `${number}` | number;\n          reasoningTokens?: `${number}` | number;\n          cachedInputTokens?: `${number}` | number;\n          cacheCreationInputTokens?: `${number}` | number;\n        },\n  ) {\n    let totalUsage = {\n      inputTokens: this.#usageCount.inputTokens ?? 0,\n      outputTokens: this.#usageCount.outputTokens ?? 0,\n      totalTokens: this.#usageCount.totalTokens ?? 0,\n      reasoningTokens: this.#usageCount.reasoningTokens ?? 0,\n      cachedInputTokens: this.#usageCount.cachedInputTokens ?? 0,\n      cacheCreationInputTokens: this.#usageCount.cacheCreationInputTokens ?? 0,\n    };\n    if ('inputTokens' in usage) {\n      totalUsage.inputTokens += parseInt(usage?.inputTokens?.toString() ?? '0', 10);\n      totalUsage.outputTokens += parseInt(usage?.outputTokens?.toString() ?? '0', 10);\n      // we need to handle both formats because you can use a V1 model inside a stream workflow\n    } else if ('promptTokens' in usage) {\n      totalUsage.inputTokens += parseInt(usage?.promptTokens?.toString() ?? '0', 10);\n      totalUsage.outputTokens += parseInt(usage?.completionTokens?.toString() ?? '0', 10);\n    }\n    totalUsage.totalTokens += parseInt(usage?.totalTokens?.toString() ?? '0', 10);\n\n    totalUsage.reasoningTokens += parseInt(usage?.reasoningTokens?.toString() ?? '0', 10);\n    totalUsage.cachedInputTokens += parseInt(usage?.cachedInputTokens?.toString() ?? '0', 10);\n    totalUsage.cacheCreationInputTokens += parseInt(usage?.cacheCreationInputTokens?.toString() ?? '0', 10);\n    this.#usageCount = totalUsage;\n  }\n\n  /**\n   * @internal\n   */\n  updateResults(results: TResult) {\n    this.#delayedPromises.result.resolve(results);\n  }\n\n  /**\n   * @internal\n   */\n  rejectResults(error: Error) {\n    this.#delayedPromises.result.reject(error);\n    this.#status = 'failed';\n    this.#streamError = error;\n  }\n\n  /**\n   * @internal\n   */\n  resume(stream: ReadableStream<WorkflowStreamEvent>) {\n    this.#baseStream = stream;\n    this.#streamFinished = false;\n    this.#consumptionStarted = false;\n    this.#status = 'running';\n    this.#delayedPromises = {\n      usage: new DelayedPromise<LanguageModelUsage>(),\n      result: new DelayedPromise<TResult>(),\n    };\n\n    const self = this;\n    stream\n      .pipeTo(\n        new WritableStream({\n          start() {\n            const chunk: WorkflowStreamEvent = {\n              type: 'workflow-start',\n              runId: self.runId,\n              from: ChunkFrom.WORKFLOW,\n              payload: {\n                workflowId: self.workflowId,\n              },\n            } as WorkflowStreamEvent;\n\n            self.#bufferedChunks.push(chunk);\n            self.#emitter.emit('chunk', chunk);\n          },\n          write(chunk) {\n            if (chunk.type !== 'workflow-step-finish') {\n              self.#bufferedChunks.push(chunk);\n              self.#emitter.emit('chunk', chunk);\n            }\n\n            if (chunk.type === 'workflow-step-output') {\n              if ('output' in chunk.payload && chunk.payload.output) {\n                const output = chunk.payload.output;\n                if (output.type === 'finish') {\n                  if (output.payload && 'usage' in output.payload && output.payload.usage) {\n                    self.#updateUsageCount(output.payload.usage);\n                  } else if (output.payload && 'output' in output.payload && output.payload.output) {\n                    const outputPayload = output.payload.output;\n                    if ('usage' in outputPayload && outputPayload.usage) {\n                      self.#updateUsageCount(outputPayload.usage);\n                    }\n                  }\n                }\n              }\n            } else if (chunk.type === 'workflow-canceled') {\n              self.#status = 'canceled';\n            } else if (chunk.type === 'workflow-step-suspended') {\n              self.#status = 'suspended';\n            } else if (chunk.type === 'workflow-step-result' && chunk.payload.status === 'failed') {\n              // Check if the failure was due to a tripwire\n              if (chunk.payload.tripwire) {\n                self.#status = 'tripwire';\n                self.#tripwireData = chunk.payload.tripwire;\n              } else {\n                self.#status = 'failed';\n              }\n            } else if (chunk.type === 'workflow-paused') {\n              self.#status = 'paused';\n            }\n          },\n          close() {\n            if (self.#status === 'running') {\n              self.#status = 'success';\n            }\n\n            self.#emitter.emit('chunk', {\n              type: 'workflow-finish',\n              runId: self.runId,\n              from: ChunkFrom.WORKFLOW,\n              payload: {\n                workflowStatus: self.#status,\n                metadata: self.#streamError\n                  ? {\n                      error: self.#streamError,\n                      errorMessage: self.#streamError?.message,\n                    }\n                  : {},\n                output: {\n                  usage: self.#usageCount,\n                },\n                // Include tripwire data when status is 'tripwire'\n                ...(self.#status === 'tripwire' && self.#tripwireData ? { tripwire: self.#tripwireData } : {}),\n              },\n            });\n\n            self.#streamFinished = true;\n            self.#emitter.emit('finish');\n          },\n        }),\n      )\n      .catch(reason => {\n        // eslint-disable-next-line no-console\n        console.log(' something went wrong', reason);\n      });\n  }\n\n  async consumeStream(options?: Parameters<typeof consumeStream>[0]): Promise<void> {\n    if (this.#consumptionStarted) {\n      return;\n    }\n\n    this.#consumptionStarted = true;\n\n    try {\n      await consumeStream({\n        stream: this.#baseStream as globalThis.ReadableStream,\n        onError: options?.onError,\n      });\n    } catch (error) {\n      options?.onError?.(error);\n    }\n  }\n\n  get fullStream(): ReadableStream<WorkflowStreamEvent> {\n    const self = this;\n    return new ReadableStream<WorkflowStreamEvent>({\n      start(controller) {\n        // Replay existing buffered chunks\n        self.#bufferedChunks.forEach(chunk => {\n          controller.enqueue(chunk);\n        });\n\n        // If stream already finished, close immediately\n        if (self.#streamFinished) {\n          controller.close();\n          return;\n        }\n\n        // Listen for new chunks and stream finish\n        const chunkHandler = (chunk: WorkflowStreamEvent) => {\n          controller.enqueue(chunk);\n        };\n\n        const finishHandler = () => {\n          self.#emitter.off('chunk', chunkHandler);\n          self.#emitter.off('finish', finishHandler);\n          controller.close();\n        };\n\n        self.#emitter.on('chunk', chunkHandler);\n        self.#emitter.on('finish', finishHandler);\n      },\n\n      pull(_controller) {\n        // Only start consumption when someone is actively reading the stream\n        if (!self.#consumptionStarted) {\n          void self.consumeStream();\n        }\n      },\n\n      cancel() {\n        // Stream was cancelled, clean up\n        self.#emitter.removeAllListeners();\n      },\n    });\n  }\n\n  get status() {\n    return this.#status;\n  }\n\n  get result() {\n    return this.#getDelayedPromise(this.#delayedPromises.result);\n  }\n\n  get usage() {\n    return this.#getDelayedPromise(this.#delayedPromises.usage);\n  }\n\n  /**\n   * @deprecated Use `fullStream.locked` instead\n   */\n  get locked(): boolean {\n    console.warn('WorkflowRunOutput.locked is deprecated. Use fullStream.locked instead.');\n    return this.fullStream.locked;\n  }\n\n  /**\n   * @deprecated Use `fullStream.cancel()` instead\n   */\n  cancel(reason?: any): Promise<void> {\n    console.warn('WorkflowRunOutput.cancel() is deprecated. Use fullStream.cancel() instead.');\n    return this.fullStream.cancel(reason);\n  }\n\n  /**\n   * @deprecated Use `fullStream.getReader()` instead\n   */\n  getReader(\n    options?: ReadableStreamGetReaderOptions,\n  ): ReadableStreamDefaultReader<WorkflowStreamEvent> | ReadableStreamBYOBReader {\n    console.warn('WorkflowRunOutput.getReader() is deprecated. Use fullStream.getReader() instead.');\n    return this.fullStream.getReader(options as any) as any;\n  }\n\n  /**\n   * @deprecated Use `fullStream.pipeThrough()` instead\n   */\n  pipeThrough<T>(\n    transform: ReadableWritablePair<T, WorkflowStreamEvent>,\n    options?: StreamPipeOptions,\n  ): ReadableStream<T> {\n    console.warn('WorkflowRunOutput.pipeThrough() is deprecated. Use fullStream.pipeThrough() instead.');\n    return this.fullStream.pipeThrough(transform as any, options) as ReadableStream<T>;\n  }\n\n  /**\n   * @deprecated Use `fullStream.pipeTo()` instead\n   */\n  pipeTo(destination: WritableStream<WorkflowStreamEvent>, options?: StreamPipeOptions): Promise<void> {\n    console.warn('WorkflowRunOutput.pipeTo() is deprecated. Use fullStream.pipeTo() instead.');\n    return this.fullStream.pipeTo(destination, options);\n  }\n\n  /**\n   * @deprecated Use `fullStream.tee()` instead\n   */\n  tee(): [ReadableStream<WorkflowStreamEvent>, ReadableStream<WorkflowStreamEvent>] {\n    console.warn('WorkflowRunOutput.tee() is deprecated. Use fullStream.tee() instead.');\n    return this.fullStream.tee();\n  }\n\n  /**\n   * @deprecated Use `fullStream[Symbol.asyncIterator]()` instead\n   */\n  [Symbol.asyncIterator](): AsyncIterableIterator<WorkflowStreamEvent> {\n    console.warn(\n      'WorkflowRunOutput[Symbol.asyncIterator]() is deprecated. Use fullStream[Symbol.asyncIterator]() instead.',\n    );\n    return this.fullStream[Symbol.asyncIterator]();\n  }\n\n  /**\n   * Helper method to treat this object as a ReadableStream\n   * @deprecated Use `fullStream` directly instead\n   */\n  toReadableStream(): ReadableStream<WorkflowStreamEvent> {\n    console.warn('WorkflowRunOutput.toReadableStream() is deprecated. Use fullStream directly instead.');\n    return this.fullStream;\n  }\n}\n","import type {\n  LanguageModelV2FinishReason,\n  LanguageModelV2StreamPart,\n  LanguageModelV2Usage,\n  SharedV2ProviderMetadata,\n} from '@ai-sdk/provider-v5';\nimport type { LanguageModelV3FinishReason, LanguageModelV3Usage } from '@ai-sdk/provider-v6';\nimport type { ModelMessage, ObjectStreamPart, TextStreamPart, ToolSet } from '@internal/ai-sdk-v5';\nimport type { AIV5ResponseMessage } from '../../../agent/message-list';\nimport type { ChunkType, LanguageModelUsage } from '../../types';\nimport { ChunkFrom } from '../../types';\nimport { DefaultGeneratedFile, DefaultGeneratedFileWithType } from './file';\n\n/**\n * Sanitizes tool-call input strings for safe JSON parsing.\n *\n * LLMs sometimes append internal tokens like `<|call|>`, `<|endoftext|>`, or `<|end|>`\n * to otherwise valid JSON in streamed tool-call arguments, causing JSON.parse to fail.\n *\n * This function first attempts JSON.parse on the original input. If parsing succeeds,\n * the original string is returned unchanged — this avoids corrupting valid JSON payloads\n * that legitimately contain `<|...|>` patterns inside string values.\n *\n * Only when the original input is not valid JSON does the function fall back to stripping\n * `<|...|>` token patterns and surrounding whitespace via regex.\n *\n * @see https://github.com/mastra-ai/mastra/issues/13261\n * @see https://github.com/mastra-ai/mastra/issues/13185\n */\nexport function sanitizeToolCallInput(input: string): string {\n  // Fast path: if input is already valid JSON, return unchanged to avoid\n  // corrupting <|...|> patterns that appear inside JSON string values.\n  try {\n    JSON.parse(input);\n    return input;\n  } catch {\n    // Input is not valid JSON — strip LLM-specific tokens and retry\n    return input.replace(/[\\s]*<\\|[^|]*\\|>[\\s]*/g, '').trim();\n  }\n}\n\n/**\n * Attempts to repair common JSON malformations produced by LLM providers.\n *\n * Some LLM providers (e.g., Kimi/K2) occasionally generate malformed JSON for\n * tool call arguments. This function applies a sequence of targeted fixes for\n * the most common errors before giving up.\n *\n * Repairs applied (in order):\n * 1. Missing quote before property name: `{\"a\":\"b\",c\":\"d\"}` → `{\"a\":\"b\",\"c\":\"d\"}`\n * 2. Unquoted property names: `{command:\"value\"}` → `{\"command\":\"value\"}`\n * 3. Single quotes → double quotes (only outside already-double-quoted strings)\n * 4. Trailing commas: `{\"a\":1,}` → `{\"a\":1}`\n *\n * @returns The parsed object if repair succeeds, or null if the JSON is unrecoverable.\n * @see https://github.com/mastra-ai/mastra/issues/11078\n */\nexport function tryRepairJson(input: string): Record<string, any> | null {\n  let repaired = input.trim();\n\n  // Fix 1: Missing quote before property name after comma or opening brace\n  // e.g. {\"a\":\"b\",c\":\"d\"} → {\"a\":\"b\",\"c\":\"d\"}\n  // Matches: ,c\" or {c\" where c is a word character sequence followed by \"\n  // but NOT already preceded by a quote\n  repaired = repaired.replace(/([{,]\\s*)([a-zA-Z_$][a-zA-Z0-9_$]*)\"/g, (match, prefix, name) => {\n    // Check if the name is already quoted — if so, leave it alone\n    if (prefix.trimEnd().endsWith('\"')) {\n      return match;\n    }\n    return `${prefix}\"${name}\"`;\n  });\n\n  // Fix 2: Unquoted property names (must come after Fix 1 since Fix 1 handles the partial-quote case)\n  // e.g. {command:\"value\"} → {\"command\":\"value\"}\n  repaired = repaired.replace(/([{,]\\s*)([a-zA-Z_$][a-zA-Z0-9_$]*)\\s*:/g, '$1\"$2\":');\n\n  // Fix 3: Single quotes → double quotes\n  // Simple approach: replace single quotes that act as JSON delimiters\n  repaired = repaired.replace(/'/g, '\"');\n\n  // Fix 4: Trailing commas before closing braces/brackets\n  // e.g. {\"a\":1,} → {\"a\":1}\n  repaired = repaired.replace(/,(\\s*[}\\]])/g, '$1');\n\n  // Fix 5: Unquoted date/datetime values (issue #14230)\n  // e.g. {\"dueStart\": 2026-04-15} → {\"dueStart\": \"2026-04-15\"}\n  // e.g. {\"start\": 2026-04-15T09:00:00} → {\"start\": \"2026-04-15T09:00:00\"}\n  repaired = repaired.replace(/:\\s*(\\d{4}-\\d{2}-\\d{2}(?:T[\\d:]+)?)\\s*([,}])/g, ': \"$1\"$2');\n\n  try {\n    return JSON.parse(repaired);\n  } catch {\n    return null;\n  }\n}\n\nexport type StreamPart =\n  | Exclude<LanguageModelV2StreamPart, { type: 'finish' }>\n  | {\n      type: 'finish';\n      /** Includes 'tripwire' and 'retry' for processor scenarios */\n      finishReason: LanguageModelV2FinishReason | 'tripwire' | 'retry';\n      usage: LanguageModelV2Usage;\n      providerMetadata: SharedV2ProviderMetadata;\n      messages: {\n        all: ModelMessage[];\n        user: ModelMessage[];\n        nonUser: AIV5ResponseMessage[];\n      };\n    };\n\nexport function convertFullStreamChunkToMastra(value: StreamPart, ctx: { runId: string }): ChunkType | undefined {\n  switch (value.type) {\n    case 'response-metadata':\n      return {\n        type: 'response-metadata',\n        runId: ctx.runId,\n        from: ChunkFrom.AGENT,\n        payload: { ...value },\n      };\n    case 'text-start':\n      return {\n        type: 'text-start',\n        runId: ctx.runId,\n        from: ChunkFrom.AGENT,\n        payload: {\n          id: value.id,\n          providerMetadata: value.providerMetadata,\n        },\n      };\n    case 'text-delta':\n      if (value.delta) {\n        return {\n          type: 'text-delta',\n          runId: ctx.runId,\n          from: ChunkFrom.AGENT,\n          payload: {\n            id: value.id,\n            providerMetadata: value.providerMetadata,\n            text: value.delta,\n          },\n        };\n      }\n      return;\n\n    case 'text-end':\n      return {\n        type: 'text-end',\n        runId: ctx.runId,\n        from: ChunkFrom.AGENT,\n        payload: value,\n      };\n\n    case 'reasoning-start':\n      return {\n        type: 'reasoning-start',\n        runId: ctx.runId,\n        from: ChunkFrom.AGENT,\n        payload: {\n          id: value.id,\n          providerMetadata: value.providerMetadata,\n        },\n      };\n\n    case 'reasoning-delta':\n      return {\n        type: 'reasoning-delta',\n        runId: ctx.runId,\n        from: ChunkFrom.AGENT,\n        payload: {\n          id: value.id,\n          providerMetadata: value.providerMetadata,\n          text: value.delta,\n        },\n      };\n\n    case 'reasoning-end':\n      return {\n        type: 'reasoning-end',\n        runId: ctx.runId,\n        from: ChunkFrom.AGENT,\n        payload: {\n          id: value.id,\n          providerMetadata: value.providerMetadata,\n        },\n      };\n\n    case 'source':\n      return {\n        type: 'source',\n        runId: ctx.runId,\n        from: ChunkFrom.AGENT,\n        payload: {\n          id: value.id,\n          sourceType: value.sourceType,\n          title: value.title || '',\n          mimeType: value.sourceType === 'document' ? value.mediaType : undefined,\n          filename: value.sourceType === 'document' ? value.filename : undefined,\n          url: value.sourceType === 'url' ? value.url : undefined,\n          providerMetadata: value.providerMetadata,\n        },\n      };\n\n    case 'file': {\n      const pm = (value as any).providerMetadata;\n      return {\n        type: 'file',\n        runId: ctx.runId,\n        from: ChunkFrom.AGENT,\n        payload: {\n          data: value.data,\n          base64: typeof value.data === 'string' ? value.data : undefined,\n          mimeType: value.mediaType,\n          ...(pm != null ? { providerMetadata: pm } : {}),\n        },\n      };\n    }\n\n    case 'tool-call': {\n      let toolCallInput: Record<string, any> | undefined = undefined;\n\n      if (value.input) {\n        const sanitized = sanitizeToolCallInput(value.input);\n        if (sanitized) {\n          try {\n            toolCallInput = JSON.parse(sanitized);\n          } catch {\n            // JSON.parse failed — attempt to repair common LLM JSON errors\n            const repaired = tryRepairJson(sanitized);\n            if (repaired) {\n              toolCallInput = repaired;\n            } else {\n              console.error('Error converting tool call input to JSON', {\n                input: value.input,\n              });\n              toolCallInput = undefined;\n            }\n          }\n        }\n      }\n\n      return {\n        type: 'tool-call',\n        runId: ctx.runId,\n        from: ChunkFrom.AGENT,\n        payload: {\n          toolCallId: value.toolCallId,\n          toolName: value.toolName,\n          args: toolCallInput,\n          providerExecuted: value.providerExecuted,\n          providerMetadata: value.providerMetadata,\n          ...((value as { observability?: unknown }).observability\n            ? { observability: (value as { observability?: unknown }).observability as any }\n            : {}),\n        },\n      };\n    }\n\n    case 'tool-result':\n      return {\n        type: 'tool-result',\n        runId: ctx.runId,\n        from: ChunkFrom.AGENT,\n        payload: {\n          toolCallId: value.toolCallId,\n          toolName: value.toolName,\n          result: value.result,\n          isError: value.isError,\n          providerExecuted: value.providerExecuted,\n          providerMetadata: value.providerMetadata,\n        },\n      };\n\n    case 'tool-input-start':\n      return {\n        type: 'tool-call-input-streaming-start',\n        runId: ctx.runId,\n        from: ChunkFrom.AGENT,\n        payload: {\n          toolCallId: value.id,\n          toolName: value.toolName,\n          providerExecuted: value.providerExecuted,\n          providerMetadata: value.providerMetadata,\n          dynamic: (value as { dynamic?: boolean }).dynamic,\n          ...((value as { observability?: unknown }).observability\n            ? { observability: (value as { observability?: unknown }).observability as any }\n            : {}),\n        },\n      };\n\n    case 'tool-input-delta':\n      if (value.delta) {\n        return {\n          type: 'tool-call-delta',\n          runId: ctx.runId,\n          from: ChunkFrom.AGENT,\n          payload: {\n            argsTextDelta: value.delta,\n            toolCallId: value.id,\n            providerMetadata: value.providerMetadata,\n          },\n        };\n      }\n      return;\n\n    case 'tool-input-end':\n      return {\n        type: 'tool-call-input-streaming-end',\n        runId: ctx.runId,\n        from: ChunkFrom.AGENT,\n        payload: {\n          toolCallId: value.id,\n          providerMetadata: value.providerMetadata,\n        },\n      };\n\n    case 'finish':\n      const { finishReason, usage, providerMetadata, messages, ...rest } = value;\n      return {\n        type: 'finish',\n        runId: ctx.runId,\n        from: ChunkFrom.AGENT,\n        payload: {\n          providerMetadata: value.providerMetadata,\n          stepResult: {\n            reason: normalizeFinishReason(value.finishReason),\n          },\n          output: {\n            // Normalize usage to handle both V2 (flat) and V3 (nested) formats\n            usage: normalizeUsage(value.usage),\n          },\n          metadata: {\n            providerMetadata: value.providerMetadata,\n          },\n          messages: messages ?? {\n            all: [],\n            user: [],\n            nonUser: [],\n          },\n          ...rest,\n        },\n      };\n    case 'error':\n      return {\n        type: 'error',\n        runId: ctx.runId,\n        from: ChunkFrom.AGENT,\n        payload: value,\n      };\n\n    case 'raw':\n      return {\n        type: 'raw',\n        runId: ctx.runId,\n        from: ChunkFrom.AGENT,\n        payload: value.rawValue as Record<string, unknown>,\n      };\n  }\n  return;\n}\n\nexport type OutputChunkType<OUTPUT = undefined> =\n  | TextStreamPart<ToolSet>\n  | ObjectStreamPart<Partial<OUTPUT>>\n  | undefined;\n\nexport function convertMastraChunkToAISDKv5<OUTPUT = 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        // Cast needed: Mastra extends reason with 'tripwire' | 'retry' for processor scenarios\n        finishReason: chunk.payload.stepResult.reason as LanguageModelV2FinishReason,\n        // Cast needed: Mastra's LanguageModelUsage has optional properties, V2 has required-but-nullable\n        totalUsage: chunk.payload.output.usage as LanguageModelV2Usage,\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    case 'redacted-reasoning':\n      throw new Error('AISDKv5 chunk type \"redacted-reasoning\" not supported');\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      const filePart =\n        mode === 'generate'\n          ? {\n              type: 'file' as const,\n              file: new DefaultGeneratedFile({\n                data: chunk.payload.data,\n                mediaType: chunk.payload.mimeType,\n              }),\n            }\n          : {\n              type: 'file' as const,\n              file: new DefaultGeneratedFileWithType({\n                data: chunk.payload.data,\n                mediaType: chunk.payload.mimeType,\n              }),\n            };\n\n      if (chunk.payload.providerMetadata) {\n        (filePart as any).providerMetadata = chunk.payload.providerMetadata;\n      }\n\n      return filePart;\n    }\n    case 'tool-call': {\n      const toolCallPart = {\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      if (chunk.payload.observability) {\n        (toolCallPart as { observability?: unknown }).observability = chunk.payload.observability;\n      }\n      return toolCallPart as OutputChunkType<OUTPUT>;\n    }\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        ...(chunk.payload.observability ? { observability: chunk.payload.observability as any } : {}),\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: metadataProviderMetadata, ...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: metadataProviderMetadata ?? chunk.payload.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\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      return;\n  }\n}\n\n/**\n * Type guard to check if usage is in V3 format (nested objects)\n */\nfunction isV3Usage(usage: unknown): usage is LanguageModelV3Usage {\n  if (!usage || typeof usage !== 'object') return false;\n  const u = usage as Record<string, unknown>;\n  return (\n    typeof u.inputTokens === 'object' &&\n    u.inputTokens !== null &&\n    'total' in (u.inputTokens as object) &&\n    typeof u.outputTokens === 'object' &&\n    u.outputTokens !== null &&\n    'total' in (u.outputTokens as object)\n  );\n}\n\n/**\n * Normalizes usage from either V2 (flat) or V3 (nested) format to Mastra's flat format.\n * V2 format: { inputTokens: number, outputTokens: number, totalTokens?: number }\n * V3 format: { inputTokens: { total, noCache, cacheRead, cacheWrite }, outputTokens: { total, text, reasoning } }\n *\n * The original usage data is preserved in the `raw` field for advanced use cases.\n */\nfunction normalizeUsage(usage: LanguageModelV2Usage | LanguageModelV3Usage | undefined): LanguageModelUsage {\n  if (!usage) {\n    return {\n      inputTokens: undefined,\n      outputTokens: undefined,\n      totalTokens: undefined,\n      reasoningTokens: undefined,\n      cachedInputTokens: undefined,\n      cacheCreationInputTokens: undefined,\n      raw: undefined,\n    };\n  }\n\n  if (isV3Usage(usage)) {\n    // V3 format - extract from nested structure\n    const inputTokens = usage.inputTokens.total;\n    const outputTokens = usage.outputTokens.total;\n    return {\n      inputTokens,\n      outputTokens,\n      totalTokens: (inputTokens ?? 0) + (outputTokens ?? 0),\n      reasoningTokens: usage.outputTokens.reasoning,\n      cachedInputTokens: usage.inputTokens.cacheRead,\n      cacheCreationInputTokens: usage.inputTokens.cacheWrite,\n      raw: usage,\n    };\n  }\n\n  // V2 format - already flat\n  const v2Usage = usage as LanguageModelV2Usage;\n  return {\n    inputTokens: v2Usage.inputTokens,\n    outputTokens: v2Usage.outputTokens,\n    totalTokens: v2Usage.totalTokens ?? (v2Usage.inputTokens ?? 0) + (v2Usage.outputTokens ?? 0),\n    reasoningTokens: (v2Usage as { reasoningTokens?: number }).reasoningTokens,\n    cachedInputTokens: (v2Usage as { cachedInputTokens?: number }).cachedInputTokens,\n    cacheCreationInputTokens: (v2Usage as { cacheCreationInputTokens?: number }).cacheCreationInputTokens,\n    raw: usage,\n  };\n}\n\n/**\n * Type guard to check if a finish reason is V3 format (object with unified/raw properties)\n */\nfunction isV3FinishReason(\n  finishReason: LanguageModelV2FinishReason | LanguageModelV3FinishReason | 'tripwire' | 'retry' | undefined,\n): finishReason is LanguageModelV3FinishReason {\n  return typeof finishReason === 'object' && finishReason !== null && 'unified' in finishReason;\n}\n\n/**\n * Normalize finish reason from either V2/V5 (string) or V3/V6 (object) format to a string.\n *\n * V2/V5 format: 'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other' | 'unknown'\n * V3/V6 format: { unified: 'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other', raw: string | undefined }\n *\n * We normalize to the unified string value for internal Mastra use.\n * Note: V6 removed 'unknown' and merged it into 'other'.\n */\nfunction normalizeFinishReason(\n  finishReason: LanguageModelV2FinishReason | LanguageModelV3FinishReason | 'tripwire' | 'retry' | undefined,\n): LanguageModelV2FinishReason | 'tripwire' | 'retry' {\n  if (!finishReason) {\n    return 'other';\n  }\n\n  // Handle Mastra-specific finish reasons\n  if (finishReason === 'tripwire' || finishReason === 'retry') {\n    return finishReason;\n  }\n\n  // V3/V6 format - extract unified value\n  if (isV3FinishReason(finishReason)) {\n    return finishReason.unified;\n  }\n\n  // V2/V5 format - already a string, but normalize 'unknown' to 'other' for consistency with V6\n  return finishReason === 'unknown' ? 'other' : finishReason;\n}\n","import type { MastraServerCache } from '../cache/base';\n\n/**\n * Options for creating a CachingTransformStream\n */\nexport interface CachingTransformStreamOptions<T> {\n  /**\n   * Cache instance for storing stream chunks\n   */\n  cache: MastraServerCache;\n\n  /**\n   * Unique key for this stream's cache entries\n   */\n  cacheKey: string;\n\n  /**\n   * Optional serializer for chunks before caching.\n   * Defaults to identity (chunks stored as-is).\n   */\n  serialize?: (chunk: T) => unknown;\n\n  /**\n   * Optional deserializer for chunks from cache.\n   * Defaults to identity (chunks returned as-is).\n   */\n  deserialize?: (cached: unknown) => T;\n}\n\n/**\n * Creates a TransformStream that caches all chunks passing through it.\n *\n * Use this for workflow streaming where you need resumable streams\n * without changing to a PubSub-based architecture.\n *\n * @example\n * ```typescript\n * const cache = mastra.getServerCache();\n * const { transform, getHistory } = createCachingTransformStream({\n *   cache,\n *   cacheKey: runId,\n * });\n *\n * // Use the transform stream\n * const cachedStream = sourceStream.pipeThrough(transform);\n *\n * // Later, get cached history for replay\n * const history = await getHistory();\n * ```\n */\nexport function createCachingTransformStream<T>(options: CachingTransformStreamOptions<T>): {\n  /**\n   * TransformStream that caches chunks as they pass through\n   */\n  transform: TransformStream<T, T>;\n\n  /**\n   * Get all cached chunks for this stream\n   */\n  getHistory: (offset?: number) => Promise<T[]>;\n\n  /**\n   * Clear cached chunks for this stream\n   */\n  clearCache: () => Promise<void>;\n} {\n  const { cache, cacheKey, serialize = (x: T) => x, deserialize = (x: unknown) => x as T } = options;\n\n  const transform = new TransformStream<T, T>({\n    transform(chunk, controller) {\n      // Cache the chunk (non-blocking)\n      const serialized = serialize(chunk);\n      cache.listPush(cacheKey, serialized).catch(() => {\n        // Silently ignore cache errors - streaming should continue\n      });\n\n      // Pass through the chunk\n      controller.enqueue(chunk);\n    },\n  });\n\n  const getHistory = async (offset = 0): Promise<T[]> => {\n    const cached = await cache.listFromTo(cacheKey, offset);\n    return cached.map(item => deserialize(item));\n  };\n\n  const clearCache = async (): Promise<void> => {\n    await cache.delete(cacheKey);\n  };\n\n  return { transform, getHistory, clearCache };\n}\n\n/**\n * Creates a ReadableStream that first emits cached history, then pipes from a live source.\n *\n * Use this when a client reconnects and needs to receive missed chunks\n * before continuing with the live stream.\n *\n * @example\n * ```typescript\n * const cache = mastra.getServerCache();\n *\n * // Get cached history\n * const history = await cache.listFromTo(runId, 0);\n *\n * // Create combined stream\n * const stream = createReplayStream({\n *   history: history as ChunkType[],\n *   liveSource: workflow.stream(),\n *   cache,\n *   cacheKey: runId,\n * });\n * ```\n */\nexport function createReplayStream<T>(options: {\n  /**\n   * Cached chunks to emit first\n   */\n  history: T[];\n\n  /**\n   * Live stream to continue from after history\n   */\n  liveSource: ReadableStream<T>;\n\n  /**\n   * Optional cache for continued caching of live chunks\n   */\n  cache?: MastraServerCache;\n\n  /**\n   * Cache key for continued caching\n   */\n  cacheKey?: string;\n\n  /**\n   * Optional serializer for caching\n   */\n  serialize?: (chunk: T) => unknown;\n}): ReadableStream<T> {\n  const { history, liveSource, cache, cacheKey, serialize = (x: T) => x } = options;\n\n  let historyIndex = 0;\n  let liveReader: ReadableStreamDefaultReader<T> | null = null;\n  let historyComplete = false;\n\n  return new ReadableStream<T>({\n    async pull(controller) {\n      // First, emit all history chunks\n      if (!historyComplete) {\n        if (historyIndex < history.length) {\n          controller.enqueue(history[historyIndex]!);\n          historyIndex++;\n          return;\n        }\n        historyComplete = true;\n        liveReader = liveSource.getReader();\n      }\n\n      // Then, read from live source\n      if (liveReader) {\n        try {\n          const { done, value } = await liveReader.read();\n\n          if (done) {\n            controller.close();\n            return;\n          }\n\n          // Cache the live chunk if caching is enabled\n          if (cache && cacheKey) {\n            const serialized = serialize(value);\n            cache.listPush(cacheKey, serialized).catch(() => {});\n          }\n\n          controller.enqueue(value);\n        } catch (error) {\n          controller.error(error);\n        }\n      }\n    },\n\n    cancel() {\n      if (liveReader) {\n        void liveReader.cancel();\n      }\n    },\n  });\n}\n\n/**\n * Helper to create a caching transform and get history in one call.\n *\n * This is the recommended way to add caching to workflow streams.\n *\n * @example\n * ```typescript\n * const { pipeThrough, getHistory, clearCache } = withStreamCaching({\n *   cache: mastra.getServerCache(),\n *   cacheKey: runId,\n * });\n *\n * // Apply caching to a stream\n * const cachedStream = workflow.fullStream.pipeThrough(pipeThrough());\n *\n * // On reconnect, get history and create replay stream\n * const history = await getHistory();\n * const replayStream = createReplayStream({\n *   history,\n *   liveSource: workflow.resumeStream(),\n * });\n * ```\n */\nexport function withStreamCaching<T>(options: CachingTransformStreamOptions<T>): {\n  /**\n   * Creates a new TransformStream that caches chunks.\n   * Call this each time you need a new caching transform.\n   */\n  pipeThrough: () => TransformStream<T, T>;\n\n  /**\n   * Get cached history for this stream\n   */\n  getHistory: (offset?: number) => Promise<T[]>;\n\n  /**\n   * Clear the cache for this stream\n   */\n  clearCache: () => Promise<void>;\n} {\n  const { cache, cacheKey, serialize, deserialize } = options;\n\n  return {\n    pipeThrough: () => {\n      const { transform } = createCachingTransformStream({ cache, cacheKey, serialize, deserialize });\n      return transform;\n    },\n\n    getHistory: async (offset = 0) => {\n      const deserializeFn = deserialize ?? ((x: unknown) => x as T);\n      const cached = await cache.listFromTo(cacheKey, offset);\n      return cached.map(item => deserializeFn(item));\n    },\n\n    clearCache: async () => {\n      await cache.delete(cacheKey);\n    },\n  };\n}\n"]}