{"version":3,"file":"index.cjs","names":["ReadableStream","MessageList","MastraModelOutput","SpanType","EntityType","TransformStream","ChunkFrom","Agent","#mastra","RequestContext","ReadableStream","ChunkFrom"],"sources":["../src/utils.ts","../src/index.ts"],"sourcesContent":["import { ReadableStream, TransformStream } from 'node:stream/web';\nimport type { ReadableStreamDefaultController } from 'node:stream/web';\n\nimport type { AgentExecutionOptionsBase, MastraLanguageModel, PublicStructuredOutputOptions } from '@mastra/core/agent';\nimport { MessageList } from '@mastra/core/agent/message-list';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { EntityType, executeWithContext, getOrCreateSpan, SpanType } from '@mastra/core/observability';\nimport type {\n  AIModelGenerationSpan,\n  CostContext,\n  IModelSpanTracker,\n  Span,\n  UsageStats,\n} from '@mastra/core/observability';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { standardSchemaToJSONSchema, toStandardSchema } from '@mastra/core/schema';\nimport type { ChunkType, FullOutput, JSONValue, LanguageModelUsage, ProviderMetadata } from '@mastra/core/stream';\nimport { ChunkFrom, MastraModelOutput } from '@mastra/core/stream';\ntype MastraModelOutputOptions<OUTPUT = undefined> = ConstructorParameters<\n  typeof MastraModelOutput<OUTPUT>\n>[0]['options'];\n\nexport type SDKAgentRunOptions<OUTPUT = unknown> = AgentExecutionOptionsBase<OUTPUT> & {\n  signal?: AbortSignal;\n  structuredOutput?: OUTPUT extends {} ? PublicStructuredOutputOptions<OUTPUT> : never;\n  [key: string]: unknown;\n};\n\nexport type V3Usage = {\n  inputTokens: {\n    total: number | undefined;\n    noCache?: number;\n    cacheRead?: number;\n    cacheWrite?: number;\n  };\n  outputTokens: {\n    total: number | undefined;\n    text?: number;\n  };\n};\n\nexport type SDKModelGenerateResult = {\n  content: Array<{ type: 'text'; text: string }>;\n  finishReason: { unified: 'stop'; raw: 'stop' };\n  usage: V3Usage;\n  response: {\n    id: string;\n    modelId: string;\n    timestamp: Date;\n  };\n  providerMetadata?: ProviderMetadata;\n  costContext?: CostContext;\n  object?: unknown;\n};\n\nexport function createNoopModel({ modelId, provider }: { modelId: string; provider: string }): MastraLanguageModel {\n  return {\n    modelId,\n    provider,\n    specificationVersion: 'v3',\n    supportedUrls: {},\n    doGenerate: async () => createNoopStreamResult(),\n    doStream: async () => createNoopStreamResult(),\n  } as MastraLanguageModel;\n}\n\nfunction createNoopStreamResult(): { stream: ReadableStream<never> } {\n  return {\n    stream: new ReadableStream<never>({\n      start: controller => controller.close(),\n    }),\n  };\n}\n\nexport function createCompletedMastraStream({\n  runId,\n  prompt,\n  text,\n  responseId,\n  modelId,\n  usage,\n  providerMetadata,\n  costContext,\n  object,\n}: {\n  runId: string;\n  prompt: string;\n  text: string;\n  responseId: string;\n  modelId: string;\n  usage: LanguageModelUsage;\n  providerMetadata?: ProviderMetadata;\n  costContext?: CostContext;\n  object?: unknown;\n}): ReadableStream<ChunkType> {\n  return new ReadableStream<ChunkType>({\n    start(controller) {\n      const textId = globalThis.crypto.randomUUID();\n      enqueueStartChunks(controller, {\n        runId,\n        prompt,\n        textId,\n        responseId,\n        modelId,\n        providerMetadata,\n      });\n      if (text) {\n        enqueueTextDelta(controller, runId, textId, text);\n      }\n      enqueueFinishChunks(controller, {\n        runId,\n        prompt,\n        textId,\n        text,\n        responseId,\n        modelId,\n        usage,\n        providerMetadata,\n        costContext,\n        object,\n      });\n      controller.close();\n    },\n  });\n}\n\nexport function createMastraOutput<OUTPUT>({\n  messages,\n  runId,\n  modelId,\n  provider,\n  stream,\n  responseText = '',\n  options,\n}: {\n  messages: MessageListInput;\n  runId: string;\n  modelId: string;\n  provider: string;\n  stream: ReadableStream<ChunkType>;\n  responseText?: string;\n  options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): MastraModelOutput<OUTPUT> {\n  const messageList = new MessageList();\n  messageList.add(messages, 'input');\n  messageList.add([{ role: 'assistant', content: responseText }], 'response');\n\n  return new MastraModelOutput<OUTPUT>({\n    model: {\n      modelId,\n      provider,\n      version: 'v3',\n    },\n    stream: stream as ReadableStream<ChunkType<OUTPUT>>,\n    messageList,\n    messageId: globalThis.crypto.randomUUID(),\n    options: {\n      ...options,\n      runId,\n    },\n  });\n}\n\nexport function toFullOutput<OUTPUT>({\n  messages,\n  runId,\n  provider,\n  result,\n  options,\n}: {\n  messages: MessageListInput;\n  runId: string;\n  provider: string;\n  result: SDKModelGenerateResult;\n  options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): Promise<FullOutput<OUTPUT>> {\n  const text = result.content.map(part => part.text).join('');\n  const stream = createCompletedMastraStream({\n    runId,\n    prompt: promptToText(messages),\n    text,\n    responseId: result.response.id,\n    modelId: result.response.modelId,\n    usage: toLanguageModelUsage(result.usage),\n    providerMetadata: result.providerMetadata,\n    costContext: result.costContext,\n    object: result.object,\n  });\n\n  return createMastraOutput<OUTPUT>({\n    messages,\n    runId,\n    modelId: result.response.modelId,\n    provider,\n    stream,\n    responseText: text,\n    options,\n  }).getFullOutput();\n}\n\nexport type SDKAgentTelemetryOptions<OUTPUT = unknown> = {\n  agentId: string;\n  agentName: string;\n  provider: string;\n  modelId: string;\n  messages: MessageListInput;\n  prompt: string;\n  runId: string;\n  streaming: boolean;\n  method: 'generate' | 'stream';\n  requestContext: RequestContext;\n  instructions?: string;\n  maxSteps?: SDKAgentRunOptions<OUTPUT>['maxSteps'];\n  tracingOptions?: SDKAgentRunOptions<OUTPUT>['tracingOptions'];\n  tracingContext?: SDKAgentRunOptions<OUTPUT>['tracingContext'];\n  onFinish?: SDKAgentRunOptions<OUTPUT>['onFinish'];\n  onStepFinish?: SDKAgentRunOptions<OUTPUT>['onStepFinish'];\n  mastra?: Mastra;\n};\n\nexport type SDKAgentTelemetry<OUTPUT = unknown> = {\n  execute<T>(fn: () => Promise<T>): Promise<T>;\n  endGenerate(result: SDKModelGenerateResult): void;\n  fail(error: unknown): void;\n  startToolCall(input: SDKAgentToolCallInput): void;\n  endToolCall(output: SDKAgentToolCallOutput): void;\n  wrapStream(stream: ReadableStream<ChunkType>): ReadableStream<ChunkType>;\n  outputOptions(): Partial<MastraModelOutputOptions<OUTPUT>>;\n};\n\nexport type SDKAgentToolCallInput = {\n  toolCallId: string;\n  toolName: string;\n  input?: unknown;\n};\n\nexport type SDKAgentToolCallOutput = {\n  toolCallId: string;\n  output?: unknown;\n  isError?: boolean;\n};\n\nexport function createSDKAgentTelemetry<OUTPUT>({\n  agentId,\n  agentName,\n  provider,\n  modelId,\n  messages,\n  prompt,\n  runId,\n  streaming,\n  method,\n  requestContext,\n  instructions,\n  maxSteps,\n  tracingOptions,\n  tracingContext,\n  onFinish,\n  onStepFinish,\n  mastra,\n}: SDKAgentTelemetryOptions<OUTPUT>): SDKAgentTelemetry<OUTPUT> {\n  const agentSpan = getOrCreateSpan({\n    type: SpanType.AGENT_RUN,\n    name: `agent run: '${agentId}'`,\n    entityType: EntityType.AGENT,\n    entityId: agentId,\n    entityName: agentName,\n    input: messages,\n    attributes: {\n      prompt,\n      instructions,\n      maxSteps,\n    },\n    metadata: {\n      runId,\n      sdkAgent: true,\n      sdkProvider: provider,\n      sdkMethod: method,\n    },\n    tracingOptions,\n    tracingContext,\n    requestContext,\n    mastra,\n  });\n\n  const modelSpan = agentSpan?.createChildSpan({\n    type: SpanType.MODEL_GENERATION,\n    name: `llm: '${modelId}'`,\n    input: {\n      messages,\n    },\n    attributes: {\n      model: modelId,\n      provider,\n      streaming,\n    },\n    metadata: {\n      runId,\n      sdkAgent: true,\n      sdkProvider: provider,\n      sdkMethod: method,\n    },\n    requestContext,\n  });\n  const modelSpanTracker = getModelSpanTracker(modelSpan);\n  const toolSpans = new Map<string, Span<SpanType.TOOL_CALL> | Span<SpanType.MCP_TOOL_CALL>>();\n\n  let ended = false;\n\n  const startToolCall = ({ toolCallId, toolName, input }: SDKAgentToolCallInput) => {\n    if (toolSpans.has(toolCallId)) {\n      return;\n    }\n\n    const parentSpan = agentSpan ?? modelSpan;\n    if (!parentSpan) {\n      return;\n    }\n\n    const mcp = parseMcpToolName(toolName);\n    const span = mcp\n      ? parentSpan.createChildSpan({\n          type: SpanType.MCP_TOOL_CALL,\n          name: `mcp_tool: '${toolName}' on '${mcp.serverName}'`,\n          input,\n          entityType: EntityType.TOOL,\n          entityId: toolName,\n          entityName: toolName,\n          attributes: {\n            mcpServer: mcp.serverName,\n          },\n          metadata: {\n            runId,\n            sdkAgent: true,\n            sdkProvider: provider,\n            sdkMethod: method,\n            toolCallId,\n          },\n          requestContext,\n        })\n      : parentSpan.createChildSpan({\n          type: SpanType.TOOL_CALL,\n          name: `tool: '${toolName}'`,\n          input,\n          entityType: EntityType.TOOL,\n          entityId: toolName,\n          entityName: toolName,\n          attributes: {\n            toolType: 'tool',\n          },\n          metadata: {\n            runId,\n            sdkAgent: true,\n            sdkProvider: provider,\n            sdkMethod: method,\n            toolCallId,\n          },\n          requestContext,\n        });\n\n    toolSpans.set(toolCallId, span);\n  };\n\n  const endToolCall = ({ toolCallId, output, isError }: SDKAgentToolCallOutput) => {\n    const span = toolSpans.get(toolCallId);\n    if (!span) {\n      return;\n    }\n\n    toolSpans.delete(toolCallId);\n    if (isError) {\n      span.error({\n        error:\n          output instanceof Error ? output : new Error(typeof output === 'string' ? output : 'SDK tool call failed'),\n        attributes: { success: false },\n      });\n      return;\n    }\n\n    span.end({\n      output,\n      attributes: { success: true },\n    });\n  };\n\n  const closeOpenToolSpans = (success: boolean, error?: unknown) => {\n    for (const [toolCallId, span] of toolSpans) {\n      toolSpans.delete(toolCallId);\n      if (success) {\n        span.end({ attributes: { success: true } });\n        continue;\n      }\n\n      const normalized = error instanceof Error ? error : new Error(String(error ?? 'SDK agent run failed'));\n      span.error({ error: normalized, attributes: { success: false } });\n    }\n  };\n\n  const endModel = ({\n    text,\n    usage,\n    providerMetadata,\n    finishReason = 'stop',\n    responseId,\n    responseModel,\n    costContext,\n  }: {\n    text: string;\n    usage?: LanguageModelUsage;\n    providerMetadata?: ProviderMetadata;\n    finishReason?: string;\n    responseId?: string;\n    responseModel?: string;\n    costContext?: CostContext;\n  }) => {\n    if (modelSpanTracker) {\n      modelSpanTracker.endGeneration({\n        output: {\n          text,\n        },\n        attributes: {\n          finishReason,\n          responseId,\n          responseModel,\n          costContext,\n        },\n        usage,\n        providerMetadata,\n      });\n      return;\n    }\n\n    modelSpan?.end({\n      output: {\n        text,\n      },\n      attributes: {\n        finishReason,\n        responseId,\n        responseModel,\n        usage: usage ? toUsageStats(usage) : undefined,\n        costContext,\n      },\n    });\n  };\n\n  const end = (result: {\n    text: string;\n    usage?: LanguageModelUsage;\n    providerMetadata?: ProviderMetadata;\n    finishReason?: string;\n    responseId?: string;\n    responseModel?: string;\n    costContext?: CostContext;\n  }) => {\n    if (ended) {\n      return;\n    }\n\n    ended = true;\n    closeOpenToolSpans(true);\n    endModel(result);\n    agentSpan?.end({\n      output: {\n        text: result.text,\n      },\n    });\n  };\n\n  const fail = (error: unknown) => {\n    if (ended) {\n      return;\n    }\n\n    ended = true;\n    const normalized = error instanceof Error ? error : new Error(String(error));\n    closeOpenToolSpans(false, normalized);\n    if (modelSpanTracker) {\n      modelSpanTracker.reportGenerationError({ error: normalized });\n    } else {\n      modelSpan?.error({ error: normalized });\n    }\n    agentSpan?.error({ error: normalized });\n  };\n\n  return {\n    execute: fn => executeWithContext({ span: modelSpan ?? agentSpan, fn }),\n    endGenerate(result) {\n      end({\n        text: result.content.map(part => part.text).join(''),\n        usage: toLanguageModelUsage(result.usage),\n        providerMetadata: result.providerMetadata,\n        finishReason: result.finishReason.unified,\n        responseId: result.response.id,\n        responseModel: result.response.modelId,\n        costContext: result.costContext,\n      });\n    },\n    fail,\n    startToolCall,\n    endToolCall,\n    wrapStream(stream) {\n      const trackedStream = (modelSpanTracker?.wrapStream(stream) ?? stream) as ReadableStream<ChunkType>;\n      return wrapStreamForAgentSpan(trackedStream, {\n        end,\n        fail,\n      });\n    },\n    outputOptions() {\n      return {\n        onFinish,\n        onStepFinish,\n        requestContext,\n        tracingContext: agentSpan ? { currentSpan: agentSpan } : tracingContext,\n      };\n    },\n  };\n}\n\nfunction parseMcpToolName(toolName: string): { serverName: string; toolName: string } | undefined {\n  const match = /^mcp__([^_].*?)__(.+)$/.exec(toolName);\n  if (!match?.[1] || !match[2]) {\n    return undefined;\n  }\n\n  return {\n    serverName: match[1],\n    toolName: match[2],\n  };\n}\n\nfunction getModelSpanTracker(\n  modelSpan: Span<SpanType.MODEL_GENERATION> | AIModelGenerationSpan | undefined,\n): IModelSpanTracker | undefined {\n  if (!modelSpan || !('createTracker' in modelSpan)) {\n    return undefined;\n  }\n\n  return modelSpan.createTracker();\n}\n\nfunction wrapStreamForAgentSpan(\n  stream: ReadableStream<ChunkType>,\n  telemetry: {\n    end: (result: {\n      text: string;\n      usage?: LanguageModelUsage;\n      providerMetadata?: ProviderMetadata;\n      finishReason?: string;\n      responseId?: string;\n      responseModel?: string;\n      costContext?: CostContext;\n    }) => void;\n    fail: (error: unknown) => void;\n  },\n): ReadableStream<ChunkType> {\n  let text = '';\n\n  return stream.pipeThrough(\n    new TransformStream<ChunkType, ChunkType>({\n      transform(chunk, controller) {\n        if (chunk.type === 'text-delta') {\n          text += chunk.payload.text;\n        }\n\n        if (chunk.type === 'finish') {\n          telemetry.end({\n            text,\n            usage: chunk.payload.output.usage,\n            providerMetadata: chunk.payload.providerMetadata,\n            finishReason: chunk.payload.stepResult.reason,\n            responseId: chunk.payload.response?.id,\n            responseModel: chunk.payload.response?.modelId,\n            costContext: getCostContext(chunk.payload.metadata?.costContext),\n          });\n        }\n\n        if (chunk.type === 'error') {\n          telemetry.fail(chunk.payload.error);\n        }\n\n        controller.enqueue(chunk);\n      },\n      flush() {\n        telemetry.end({ text });\n      },\n    }),\n  );\n}\n\nfunction toUsageStats(usage: LanguageModelUsage): UsageStats {\n  return {\n    inputTokens: usage.inputTokens,\n    outputTokens: usage.outputTokens,\n    inputDetails: {\n      cacheRead: usage.cachedInputTokens,\n      cacheWrite: usage.cacheCreationInputTokens,\n    },\n    outputDetails: {\n      text: usage.outputTokens,\n      reasoning: usage.reasoningTokens,\n    },\n  };\n}\n\nfunction getCostContext(value: unknown): CostContext | undefined {\n  if (!value || typeof value !== 'object') {\n    return undefined;\n  }\n\n  return value as CostContext;\n}\n\nexport function enqueueStartChunks(\n  controller: ReadableStreamDefaultController<ChunkType>,\n  {\n    runId,\n    prompt,\n    textId,\n    responseId,\n    modelId,\n    providerMetadata,\n  }: {\n    runId: string;\n    prompt: string;\n    textId: string;\n    responseId: string;\n    modelId: string;\n    providerMetadata?: ProviderMetadata;\n  },\n): void {\n  controller.enqueue({\n    type: 'start',\n    runId,\n    from: ChunkFrom.AGENT,\n    payload: {},\n  });\n  controller.enqueue({\n    type: 'step-start',\n    runId,\n    from: ChunkFrom.AGENT,\n    payload: {\n      request: { body: prompt },\n    },\n  });\n  controller.enqueue({\n    type: 'response-metadata',\n    runId,\n    from: ChunkFrom.AGENT,\n    payload: {\n      id: responseId,\n      modelId,\n      timestamp: new Date().toISOString(),\n    },\n  });\n  controller.enqueue({\n    type: 'text-start',\n    runId,\n    from: ChunkFrom.AGENT,\n    payload: {\n      id: textId,\n      providerMetadata,\n    },\n  });\n}\n\nexport function enqueueTextDelta(\n  controller: ReadableStreamDefaultController<ChunkType>,\n  runId: string,\n  textId: string,\n  text: string,\n): void {\n  controller.enqueue({\n    type: 'text-delta',\n    runId,\n    from: ChunkFrom.AGENT,\n    payload: {\n      id: textId,\n      text,\n    },\n  });\n}\n\nexport function enqueueFinishChunks(\n  controller: ReadableStreamDefaultController<ChunkType>,\n  {\n    runId,\n    prompt,\n    textId,\n    text,\n    responseId,\n    modelId,\n    usage,\n    providerMetadata,\n    costContext,\n    object,\n  }: {\n    runId: string;\n    prompt: string;\n    textId: string;\n    text: string;\n    responseId: string;\n    modelId: string;\n    usage: LanguageModelUsage;\n    providerMetadata?: ProviderMetadata;\n    costContext?: CostContext;\n    object?: unknown;\n  },\n): void {\n  const timestamp = new Date();\n  const response = {\n    id: responseId,\n    modelId,\n    timestamp,\n  };\n  const metadata = {\n    providerMetadata,\n    costContext,\n    request: { body: prompt },\n    modelId,\n    timestamp,\n  };\n\n  controller.enqueue({\n    type: 'text-end',\n    runId,\n    from: ChunkFrom.AGENT,\n    payload: {\n      id: textId,\n      providerMetadata,\n    },\n  });\n  if (object !== undefined) {\n    controller.enqueue({\n      type: 'object-result',\n      runId,\n      from: ChunkFrom.AGENT,\n      object,\n    } as unknown as ChunkType);\n  }\n  controller.enqueue({\n    type: 'step-finish',\n    runId,\n    from: ChunkFrom.AGENT,\n    payload: {\n      id: responseId,\n      providerMetadata,\n      totalUsage: usage,\n      response,\n      stepResult: {\n        reason: 'stop',\n        warnings: [],\n      },\n      output: {\n        text,\n        usage,\n        steps: [],\n      },\n      metadata,\n    },\n  });\n  controller.enqueue({\n    type: 'finish',\n    runId,\n    from: ChunkFrom.AGENT,\n    payload: {\n      stepResult: {\n        reason: 'stop',\n        warnings: [],\n      },\n      output: {\n        usage,\n        steps: [],\n      },\n      metadata,\n      providerMetadata,\n      messages: {\n        all: [],\n        user: [],\n        nonUser: [],\n      },\n      response,\n    },\n  });\n}\n\nexport function toLanguageModelUsage(usage: V3Usage): LanguageModelUsage {\n  const inputTokens = usage.inputTokens.total ?? 0;\n  const outputTokens = usage.outputTokens.total ?? 0;\n\n  return {\n    inputTokens,\n    outputTokens,\n    totalTokens: inputTokens + outputTokens,\n    cachedInputTokens: usage.inputTokens.cacheRead,\n    cacheCreationInputTokens: usage.inputTokens.cacheWrite,\n    raw: usage,\n  };\n}\n\nexport function createProviderMetadata(provider: string, metadata: Record<string, unknown>): ProviderMetadata {\n  return {\n    [provider]: toJsonRecord(metadata),\n  };\n}\n\nfunction toJsonRecord(record: Record<string, unknown>): Record<string, JSONValue> {\n  return Object.fromEntries(\n    Object.entries(record)\n      .filter((entry): entry is [string, Exclude<unknown, undefined>] => entry[1] !== undefined)\n      .map(([key, value]) => [key, toJsonValue(value)]),\n  );\n}\n\nfunction toJsonValue(value: unknown): JSONValue {\n  if (value === null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n    return value;\n  }\n\n  if (Array.isArray(value)) {\n    return value.filter(item => item !== undefined).map(toJsonValue);\n  }\n\n  if (value instanceof Date) {\n    return value.toISOString();\n  }\n\n  if (typeof value === 'object') {\n    return toJsonRecord(value as Record<string, unknown>);\n  }\n\n  return String(value);\n}\n\nexport function promptToText(prompt: unknown): string {\n  if (typeof prompt === 'string') {\n    return prompt;\n  }\n\n  if (Array.isArray(prompt)) {\n    return prompt.map(promptToText).filter(Boolean).join('\\n');\n  }\n\n  if (!prompt || typeof prompt !== 'object') {\n    return '';\n  }\n\n  const record = prompt as Record<string, unknown>;\n  if (typeof record.text === 'string') {\n    return record.text;\n  }\n  if (typeof record.content === 'string') {\n    return record.content;\n  }\n  if (record.content) {\n    return promptToText(record.content);\n  }\n\n  return '';\n}\n\nexport function withStructuredOutputPrompt<OUTPUT>(\n  prompt: string,\n  structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): string {\n  if (!structuredOutput?.schema) {\n    return prompt;\n  }\n\n  const schema = standardSchemaToJSONSchema(toStandardSchema(structuredOutput.schema));\n  const instructions =\n    structuredOutput.instructions ??\n    'Return only valid JSON that matches the JSON Schema. Do not include markdown fences or explanatory text.';\n\n  return `${prompt}\\n\\n${instructions}\\n\\nJSON Schema:\\n${JSON.stringify(schema)}`;\n}\n\nexport function getStructuredOutputSchema<OUTPUT>(\n  structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): Record<string, unknown> | undefined {\n  if (!structuredOutput?.schema) {\n    return undefined;\n  }\n\n  return standardSchemaToJSONSchema(toStandardSchema(structuredOutput.schema)) as Record<string, unknown>;\n}\n\nexport async function getStructuredOutput<OUTPUT>(\n  text: string,\n  structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): Promise<OUTPUT | undefined> {\n  return getStructuredOutputFromValue(text, structuredOutput);\n}\n\nexport async function getStructuredOutputFromValue<OUTPUT>(\n  value: unknown,\n  structuredOutput?: PublicStructuredOutputOptions<OUTPUT>,\n): Promise<OUTPUT | undefined> {\n  if (!structuredOutput?.schema) {\n    return undefined;\n  }\n\n  let parsed: unknown;\n  if (typeof value === 'string') {\n    try {\n      parsed = JSON.parse(value);\n    } catch (error) {\n      return handleStructuredOutputError(\n        new Error('Structured output must be valid JSON.', { cause: error }),\n        structuredOutput,\n      );\n    }\n  } else {\n    parsed = value;\n  }\n\n  const schema = toStandardSchema(structuredOutput.schema);\n  const result = await schema['~standard'].validate(parsed);\n  if (!result.issues) {\n    return result.value as OUTPUT;\n  }\n\n  const message = result.issues.map(issue => `- ${issue.path?.join('.') || 'root'}: ${issue.message}`).join('\\n');\n  return handleStructuredOutputError(new Error(`Structured output validation failed:\\n${message}`), structuredOutput);\n}\n\nfunction handleStructuredOutputError<OUTPUT>(\n  error: Error,\n  structuredOutput: PublicStructuredOutputOptions<OUTPUT>,\n): OUTPUT | undefined {\n  if (structuredOutput.errorStrategy === 'fallback') {\n    return structuredOutput.fallbackValue;\n  }\n\n  if (structuredOutput.errorStrategy === 'warn') {\n    structuredOutput.logger?.warn(error.message);\n    return undefined;\n  }\n\n  throw error;\n}\n\nexport function sumDefined(...values: Array<number | undefined>): number | undefined {\n  const defined = values.filter((value): value is number => typeof value === 'number');\n  if (defined.length === 0) {\n    return undefined;\n  }\n\n  return defined.reduce((sum, value) => sum + value, 0);\n}\n","import { ReadableStream } from 'node:stream/web';\n\nimport { query } from '@anthropic-ai/claude-agent-sdk';\nimport type { ModelUsage, Options as ClaudeQueryOptions, SDKMessage } from '@anthropic-ai/claude-agent-sdk';\n\nimport { Agent } from '@mastra/core/agent';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { CostContext } from '@mastra/core/observability';\nimport { RequestContext } from '@mastra/core/request-context';\nimport type {\n  ChunkType,\n  FullOutput,\n  LanguageModelUsage,\n  ProviderMetadata,\n  MastraModelOutput,\n} from '@mastra/core/stream';\nimport { ChunkFrom } from '@mastra/core/stream';\nimport {\n  createMastraOutput,\n  createNoopModel,\n  createProviderMetadata,\n  createSDKAgentTelemetry,\n  enqueueFinishChunks,\n  enqueueStartChunks,\n  enqueueTextDelta,\n  getStructuredOutputFromValue,\n  getStructuredOutputSchema,\n  promptToText,\n  sumDefined,\n  toFullOutput,\n  toLanguageModelUsage,\n} from './utils';\nimport type { SDKAgentRunOptions, SDKAgentTelemetry, SDKModelGenerateResult, V3Usage } from './utils';\n\nconst PROVIDER = '@anthropic-ai/claude-agent-sdk';\nconst MODEL_ID = 'claude-agent-sdk';\n\ntype ClaudeUsageTotals = {\n  inputTokens?: number;\n  outputTokens?: number;\n  cacheReadInputTokens?: number;\n  cacheCreationInputTokens?: number;\n  totalCostUsd?: number;\n  modelUsage?: Record<string, ModelUsage>;\n};\n\nexport type ClaudeSDKOptions = ClaudeQueryOptions;\n\nexport type ClaudeAgentOptions = {\n  /**\n   * Mastra agent id used when registering this wrapper with Mastra.\n   */\n  id: string;\n  /**\n   * Optional display name for the Mastra agent. Defaults to `id`.\n   */\n  name?: string;\n  /**\n   * Description surfaced by Mastra when listing or selecting agents.\n   */\n  description: string;\n  /**\n   * Claude Agent SDK options forwarded to `query()` on every run.\n   */\n  sdkOptions?: ClaudeSDKOptions;\n};\n\nexport type ClaudeSDKAgentRunOptions<OUTPUT = unknown> = SDKAgentRunOptions<OUTPUT> & {\n  /**\n   * Claude Agent SDK query options for this run. These are merged over the\n   * wrapper's `sdkOptions`, which allows per-call session continuation options\n   * such as `resume` or `continue`.\n   */\n  sdkOptions?: ClaudeSDKOptions;\n};\n\nexport type ClaudeSDKAgentResumeData =\n  | {\n      /**\n       * Message to send while resuming the Claude SDK session.\n       */\n      message: MessageListInput;\n      /**\n       * Claude session id to resume.\n       */\n      sessionId: string;\n      /**\n       * Fork the resumed session into a new session.\n       */\n      forkSession?: boolean;\n      /**\n       * Resume the session up to a specific assistant message UUID.\n       */\n      resumeSessionAt?: string;\n    }\n  | {\n      /**\n       * Message to send while continuing the latest Claude SDK session.\n       */\n      message: MessageListInput;\n      /**\n       * Continue the latest Claude session in the current working directory.\n       */\n      continue: true;\n    };\n\nexport class ClaudeSDKAgent extends Agent {\n  readonly options: ClaudeAgentOptions;\n  #mastra?: Mastra;\n\n  constructor(options: ClaudeAgentOptions) {\n    super({\n      id: options.id,\n      name: options.name ?? options.id,\n      description: options.description,\n      instructions: '',\n      model: createNoopModel({\n        modelId: getModelId(options),\n        provider: PROVIDER,\n      }),\n    });\n    this.options = options;\n  }\n\n  override __registerMastra(mastra: Mastra): void {\n    super.__registerMastra(mastra);\n    this.#mastra = mastra;\n  }\n\n  supportsMemory(): boolean {\n    return false;\n  }\n\n  async generate<OUTPUT = undefined>(\n    messages: MessageListInput,\n    options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n  ): Promise<FullOutput<OUTPUT>> {\n    const prompt = promptToText(messages);\n    const runId = options?.runId ?? globalThis.crypto.randomUUID();\n    const requestContext = options?.requestContext ?? new RequestContext();\n    const instructions = options?.instructions ? promptToText(options.instructions) : undefined;\n    const telemetry = createSDKAgentTelemetry({\n      agentId: this.id,\n      agentName: this.name,\n      provider: PROVIDER,\n      modelId: getModelId(this.options),\n      messages,\n      prompt,\n      runId,\n      streaming: false,\n      method: 'generate',\n      requestContext,\n      instructions,\n      maxSteps: options?.maxSteps,\n      tracingOptions: options?.tracingOptions,\n      tracingContext: options?.tracingContext,\n      onFinish: options?.onFinish,\n      onStepFinish: options?.onStepFinish,\n      mastra: this.#mastra,\n    });\n    let result: SDKModelGenerateResult;\n    try {\n      result = await telemetry.execute(() => runClaudeGenerate(prompt, this.options, telemetry, options));\n      telemetry.endGenerate(result);\n    } catch (error) {\n      telemetry.fail(error);\n      throw error;\n    }\n\n    return toFullOutput<OUTPUT>({\n      messages,\n      runId,\n      provider: PROVIDER,\n      result,\n      options: { ...telemetry.outputOptions(), structuredOutput: options?.structuredOutput as any },\n    });\n  }\n\n  async stream<OUTPUT = undefined>(\n    messages: MessageListInput,\n    options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n  ): Promise<MastraModelOutput<OUTPUT>> {\n    const runId = options?.runId ?? globalThis.crypto.randomUUID();\n    const prompt = promptToText(messages);\n    const modelId = getModelId(this.options);\n    const requestContext = options?.requestContext ?? new RequestContext();\n    const instructions = options?.instructions ? promptToText(options.instructions) : undefined;\n    const telemetry = createSDKAgentTelemetry({\n      agentId: this.id,\n      agentName: this.name,\n      provider: PROVIDER,\n      modelId,\n      messages,\n      prompt,\n      runId,\n      streaming: true,\n      method: 'stream',\n      requestContext,\n      instructions,\n      maxSteps: options?.maxSteps,\n      tracingOptions: options?.tracingOptions,\n      tracingContext: options?.tracingContext,\n      onFinish: options?.onFinish,\n      onStepFinish: options?.onStepFinish,\n      mastra: this.#mastra,\n    });\n\n    return createMastraOutput<OUTPUT>({\n      messages,\n      runId,\n      modelId,\n      provider: PROVIDER,\n      stream: telemetry.wrapStream(runClaudeAsMastraStream(prompt, this.options, runId, telemetry, options)),\n      options: { ...telemetry.outputOptions(), structuredOutput: options?.structuredOutput as any },\n    });\n  }\n\n  async resumeGenerate<OUTPUT = undefined>(\n    resumeData: ClaudeSDKAgentResumeData,\n    options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n  ): Promise<FullOutput<OUTPUT>> {\n    const data = validateClaudeResumeData(resumeData);\n    return this.generate(data.message, createClaudeResumeRunOptions(data, options));\n  }\n\n  async resumeStream<OUTPUT = undefined>(\n    resumeData: ClaudeSDKAgentResumeData,\n    options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n  ): Promise<MastraModelOutput<OUTPUT>> {\n    const data = validateClaudeResumeData(resumeData);\n    return this.stream(data.message, createClaudeResumeRunOptions(data, options));\n  }\n}\n\nfunction validateClaudeResumeData(resumeData: ClaudeSDKAgentResumeData): ClaudeSDKAgentResumeData {\n  if (!isRecord(resumeData) || !('message' in resumeData)) {\n    throw new Error('ClaudeSDKAgent resumeData must include a message.');\n  }\n\n  const hasSessionId = 'sessionId' in resumeData;\n  const hasContinue = 'continue' in resumeData;\n\n  if (hasSessionId && hasContinue) {\n    throw new Error('ClaudeSDKAgent resumeData must include either sessionId or continue: true, not both.');\n  }\n\n  if (hasSessionId) {\n    if (typeof resumeData.sessionId !== 'string') {\n      throw new Error('ClaudeSDKAgent resumeData.sessionId must be a string.');\n    }\n    return resumeData;\n  }\n\n  if (hasContinue) {\n    if (resumeData.continue !== true) {\n      throw new Error('ClaudeSDKAgent resumeData.continue must be true when provided.');\n    }\n    return resumeData;\n  }\n\n  throw new Error('ClaudeSDKAgent resumeData must include sessionId or continue: true.');\n}\n\nfunction createClaudeResumeRunOptions<OUTPUT>(\n  resumeData: ClaudeSDKAgentResumeData,\n  options?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): ClaudeSDKAgentRunOptions<OUTPUT> {\n  const sdkOptions: ClaudeSDKOptions = { ...options?.sdkOptions };\n\n  if ('sessionId' in resumeData && typeof resumeData.sessionId === 'string') {\n    sdkOptions.resume = resumeData.sessionId;\n    if (resumeData.forkSession !== undefined) {\n      sdkOptions.forkSession = resumeData.forkSession;\n    }\n    if (resumeData.resumeSessionAt !== undefined) {\n      sdkOptions.resumeSessionAt = resumeData.resumeSessionAt;\n    }\n  } else {\n    sdkOptions.continue = true;\n  }\n\n  return {\n    ...options,\n    sdkOptions,\n  };\n}\n\nasync function runClaudeGenerate<OUTPUT>(\n  prompt: string,\n  options: ClaudeAgentOptions,\n  telemetry: SDKAgentTelemetry<OUTPUT>,\n  runOptions?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): Promise<SDKModelGenerateResult> {\n  let text = '';\n  let structuredOutputValue: unknown;\n  const usage = createClaudeUsageCollector();\n\n  for await (const message of observeClaudeMessages(\n    runClaude(prompt, options, runOptions?.abortSignal ?? runOptions?.signal, runOptions),\n    telemetry,\n  )) {\n    usage.record(message);\n    if (message.type === 'result') {\n      if (message.subtype !== 'success') {\n        throw new Error(message.errors.join('\\n') || `Claude Agent SDK failed with ${message.subtype}`);\n      }\n\n      text = message.result;\n      structuredOutputValue = getClaudeStructuredOutput(message);\n    }\n  }\n\n  const totals = usage.totals();\n  const object = await getStructuredOutputFromValue(\n    structuredOutputValue === undefined ? text : structuredOutputValue,\n    runOptions?.structuredOutput,\n  );\n\n  return {\n    content: [{ type: 'text', text }],\n    finishReason: { unified: 'stop', raw: 'stop' },\n    usage: usage.toV3Usage(),\n    response: {\n      id: globalThis.crypto.randomUUID(),\n      modelId: getModelId(options),\n      timestamp: new Date(),\n    },\n    providerMetadata: getClaudeProviderMetadata(options, totals),\n    costContext: getClaudeCostContext(options, totals),\n    object,\n  };\n}\n\nfunction runClaudeAsMastraStream<OUTPUT>(\n  prompt: string,\n  options: ClaudeAgentOptions,\n  runId: string,\n  telemetry: SDKAgentTelemetry<OUTPUT>,\n  runOptions?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): ReadableStream<ChunkType> {\n  return new ReadableStream<ChunkType>({\n    start: async controller => {\n      const textId = globalThis.crypto.randomUUID();\n      const responseId = globalThis.crypto.randomUUID();\n      const modelId = getModelId(options);\n      const usage = createClaudeUsageCollector();\n      let text = '';\n      let structuredOutputValue: unknown;\n      let sawDelta = false;\n\n      try {\n        enqueueStartChunks(controller, {\n          runId,\n          prompt,\n          textId,\n          responseId,\n          modelId,\n          providerMetadata: getClaudeProviderMetadata(options, usage.totals()),\n        });\n\n        for await (const message of observeClaudeMessages(\n          runClaude(prompt, options, runOptions?.abortSignal ?? runOptions?.signal, runOptions),\n          telemetry,\n        )) {\n          usage.record(message);\n          const delta = getTextDelta(message);\n          if (delta) {\n            sawDelta = true;\n            text += delta;\n            enqueueTextDelta(controller, runId, textId, delta);\n          }\n\n          if (message.type === 'result') {\n            if (message.subtype !== 'success') {\n              throw new Error(message.errors.join('\\n') || `Claude Agent SDK failed with ${message.subtype}`);\n            }\n\n            if (!sawDelta && message.result) {\n              text += message.result;\n              enqueueTextDelta(controller, runId, textId, message.result);\n            }\n            structuredOutputValue = getClaudeStructuredOutput(message);\n          }\n        }\n\n        const totals = usage.totals();\n        const providerMetadata = getClaudeProviderMetadata(options, totals);\n        enqueueFinishChunks(controller, {\n          runId,\n          prompt,\n          textId,\n          text,\n          responseId,\n          modelId,\n          usage: usage.toLanguageModelUsage(),\n          providerMetadata,\n          costContext: getClaudeCostContext(options, totals),\n          object: await getStructuredOutputFromValue(\n            structuredOutputValue === undefined ? text : structuredOutputValue,\n            runOptions?.structuredOutput,\n          ),\n        });\n        controller.close();\n      } catch (error) {\n        controller.enqueue({\n          type: 'error',\n          runId,\n          from: ChunkFrom.AGENT,\n          payload: { error },\n        });\n        controller.close();\n      }\n    },\n  });\n}\n\nfunction runClaude<OUTPUT>(\n  prompt: string,\n  options: ClaudeAgentOptions,\n  signal?: AbortSignal,\n  runOptions?: ClaudeSDKAgentRunOptions<OUTPUT>,\n): AsyncIterable<SDKMessage> {\n  const abortController = createAbortController(signal);\n  const queryOptions: ClaudeSDKOptions = {\n    ...options.sdkOptions,\n    ...runOptions?.sdkOptions,\n  };\n  const outputSchema = getStructuredOutputSchema(runOptions?.structuredOutput);\n  if (outputSchema) {\n    queryOptions.outputFormat = {\n      type: 'json_schema',\n      schema: outputSchema,\n    };\n  }\n  if (abortController) {\n    queryOptions.abortController = abortController;\n  }\n\n  return query({\n    prompt,\n    options: queryOptions as Parameters<typeof query>[0]['options'],\n  }) as AsyncIterable<SDKMessage>;\n}\n\nfunction getClaudeStructuredOutput(message: SDKMessage): unknown {\n  if (message.type !== 'result') {\n    return undefined;\n  }\n\n  return (message as { structured_output?: unknown }).structured_output;\n}\n\nasync function* observeClaudeMessages<OUTPUT>(\n  messages: AsyncIterable<SDKMessage>,\n  telemetry: SDKAgentTelemetry<OUTPUT>,\n): AsyncIterable<SDKMessage> {\n  for await (const message of messages) {\n    recordClaudeToolTelemetry(message, telemetry);\n    yield message;\n  }\n}\n\nfunction recordClaudeToolTelemetry<OUTPUT>(message: SDKMessage, telemetry: SDKAgentTelemetry<OUTPUT>): void {\n  for (const toolCall of getClaudeToolCalls(message)) {\n    telemetry.startToolCall(toolCall);\n  }\n\n  for (const toolResult of getClaudeToolResults(message)) {\n    telemetry.endToolCall(toolResult);\n  }\n}\n\nfunction getClaudeToolCalls(message: SDKMessage): Array<{ toolCallId: string; toolName: string; input?: unknown }> {\n  if (message.type !== 'assistant') {\n    return [];\n  }\n\n  return getContentBlocks(message.message)\n    .filter(isRecord)\n    .filter(block => block.type === 'tool_use' && typeof block.id === 'string' && typeof block.name === 'string')\n    .map(block => ({\n      toolCallId: block.id as string,\n      toolName: block.name as string,\n      input: block.input,\n    }));\n}\n\nfunction getClaudeToolResults(message: SDKMessage): Array<{ toolCallId: string; output?: unknown; isError?: boolean }> {\n  if (message.type !== 'user') {\n    return [];\n  }\n\n  return getContentBlocks(message.message)\n    .filter(isRecord)\n    .filter(block => block.type === 'tool_result' && typeof block.tool_use_id === 'string')\n    .map(block => ({\n      toolCallId: block.tool_use_id as string,\n      output: block.content,\n      isError: block.is_error === true,\n    }));\n}\n\nfunction getContentBlocks(message: unknown): unknown[] {\n  if (!isRecord(message)) {\n    return [];\n  }\n\n  return Array.isArray(message.content) ? message.content : [];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return value !== null && typeof value === 'object';\n}\n\nfunction createAbortController(signal: AbortSignal | undefined): AbortController | undefined {\n  if (!signal) {\n    return undefined;\n  }\n\n  const controller = new AbortController();\n  if (signal.aborted) {\n    controller.abort(signal.reason);\n    return controller;\n  }\n\n  signal.addEventListener('abort', () => controller.abort(signal.reason), { once: true });\n  return controller;\n}\n\nfunction getModelId(options: ClaudeAgentOptions): string {\n  return options.sdkOptions?.model ?? MODEL_ID;\n}\n\nfunction createClaudeUsageCollector() {\n  const assistantUsageById = new Map<string, ClaudeUsageTotals>();\n  let resultUsage: ClaudeUsageTotals = {};\n\n  return {\n    record(message: SDKMessage) {\n      if (message.type === 'assistant') {\n        assistantUsageById.set(message.message.id, usageFromClaudeMessage(message.message.usage));\n        return;\n      }\n\n      if (message.type === 'result') {\n        resultUsage = {\n          ...usageFromClaudeMessage(message.usage),\n          totalCostUsd: message.total_cost_usd,\n          modelUsage: message.modelUsage,\n        };\n      }\n    },\n    totals(): ClaudeUsageTotals {\n      const assistantUsage = getAssistantUsageTotals(assistantUsageById);\n\n      if (hasAnyUsage(resultUsage)) {\n        return {\n          ...resultUsage,\n          inputTokens: resultUsage.inputTokens ?? assistantUsage.inputTokens,\n          outputTokens: resultUsage.outputTokens ?? assistantUsage.outputTokens,\n          cacheReadInputTokens: resultUsage.cacheReadInputTokens ?? assistantUsage.cacheReadInputTokens,\n          cacheCreationInputTokens: resultUsage.cacheCreationInputTokens ?? assistantUsage.cacheCreationInputTokens,\n        };\n      }\n\n      return assistantUsage;\n    },\n    toV3Usage(): V3Usage {\n      return toV3Usage(this.totals());\n    },\n    toLanguageModelUsage(): LanguageModelUsage {\n      return toLanguageModelUsage(toV3Usage(this.totals()));\n    },\n  };\n}\n\nfunction getAssistantUsageTotals(assistantUsageById: Map<string, ClaudeUsageTotals>): ClaudeUsageTotals {\n  return [...assistantUsageById.values()].reduce<ClaudeUsageTotals>((totals, item) => {\n    totals.inputTokens = addOptional(totals.inputTokens, item.inputTokens);\n    totals.outputTokens = addOptional(totals.outputTokens, item.outputTokens);\n    totals.cacheReadInputTokens = addOptional(totals.cacheReadInputTokens, item.cacheReadInputTokens);\n    totals.cacheCreationInputTokens = addOptional(totals.cacheCreationInputTokens, item.cacheCreationInputTokens);\n    return totals;\n  }, {});\n}\n\nfunction usageFromClaudeMessage(usage: unknown): ClaudeUsageTotals {\n  if (!usage || typeof usage !== 'object') {\n    return {};\n  }\n\n  const record = usage as Record<string, unknown>;\n  return {\n    inputTokens: getTokenTotal(record.input_tokens),\n    outputTokens: getTokenTotal(record.output_tokens),\n    cacheReadInputTokens: getTokenTotal(record.cache_read_input_tokens),\n    cacheCreationInputTokens: getTokenTotal(record.cache_creation_input_tokens),\n  };\n}\n\nfunction hasAnyUsage(usage: ClaudeUsageTotals): boolean {\n  return (\n    usage.inputTokens !== undefined ||\n    usage.outputTokens !== undefined ||\n    usage.cacheReadInputTokens !== undefined ||\n    usage.cacheCreationInputTokens !== undefined ||\n    usage.totalCostUsd !== undefined\n  );\n}\n\nfunction addOptional(left: number | undefined, right: number | undefined): number | undefined {\n  if (left === undefined) {\n    return right;\n  }\n  if (right === undefined) {\n    return left;\n  }\n\n  return left + right;\n}\n\nfunction toV3Usage(usage: ClaudeUsageTotals): V3Usage {\n  const noCache = usage.inputTokens;\n  const cacheRead = usage.cacheReadInputTokens;\n  const cacheWrite = usage.cacheCreationInputTokens;\n  const totalInputTokens = sumDefined(noCache, cacheRead, cacheWrite);\n  const outputTokens = usage.outputTokens;\n\n  return {\n    inputTokens: {\n      total: totalInputTokens,\n      noCache,\n      cacheRead,\n      cacheWrite,\n    },\n    outputTokens: {\n      total: outputTokens,\n      text: outputTokens,\n    },\n  };\n}\n\nfunction getClaudeProviderMetadata(options: ClaudeAgentOptions, usage?: ClaudeUsageTotals): ProviderMetadata {\n  const queryOptions = options.sdkOptions;\n\n  return createProviderMetadata('claude', {\n    totalCostUsd: usage?.totalCostUsd,\n    model: getModelId(options),\n    cwd: queryOptions?.cwd,\n    permissionMode: queryOptions?.permissionMode,\n    maxTurns: queryOptions?.maxTurns,\n    allowedTools: queryOptions?.allowedTools,\n    disallowedTools: queryOptions?.disallowedTools,\n    usage,\n  });\n}\n\nfunction getClaudeCostContext(options: ClaudeAgentOptions, usage?: ClaudeUsageTotals): CostContext | undefined {\n  if (typeof usage?.totalCostUsd !== 'number') {\n    return undefined;\n  }\n\n  return {\n    provider: 'anthropic',\n    model: getModelId(options),\n    estimatedCost: usage.totalCostUsd,\n    costUnit: 'USD',\n    costMetadata: {\n      source: 'sdk_estimate',\n      sdkProvider: PROVIDER,\n      sdkCostField: 'total_cost_usd',\n      scope: 'query_total',\n      modelUsage: usage.modelUsage,\n    },\n  };\n}\n\nfunction getTextDelta(message: SDKMessage): string {\n  if (message.type !== 'stream_event') {\n    return '';\n  }\n\n  const event = message.event as {\n    type?: string;\n    delta?: {\n      type?: string;\n      text?: string;\n    };\n  };\n\n  if (event.type === 'content_block_delta' && event.delta?.type === 'text_delta') {\n    return event.delta.text ?? '';\n  }\n\n  return '';\n}\n\nfunction getTokenTotal(value: unknown): number | undefined {\n  return typeof value === 'number' ? value : undefined;\n}\n"],"mappings":"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"}