{"version":3,"sources":["../../src/anthropic/parser.ts","../../src/errors.ts","../../src/types.ts","../../src/anthropic/tool-result.ts","../../src/anthropic/anthropic-parser.ts"],"sourcesContent":["export {\n  mapEvent as mapAnthropicEvent,\n  ResponseAccumulator as AnthropicResponseAccumulator,\n} from \"./anthropic-parser\";\n","export class ThalamusError extends Error {\n  readonly provider: string;\n  readonly isRetryable: boolean;\n  override readonly cause?: unknown;\n\n  constructor(\n    message: string,\n    options: { provider: string; isRetryable: boolean; cause?: unknown },\n  ) {\n    super(message, { cause: options.cause });\n    this.name = \"ThalamusError\";\n    this.provider = options.provider;\n    this.isRetryable = options.isRetryable;\n    this.cause = options.cause;\n  }\n}\n\nexport class ProviderAuthError extends ThalamusError {\n  constructor(message: string, options: { provider: string; cause?: unknown }) {\n    super(message, { ...options, isRetryable: false });\n    this.name = \"ProviderAuthError\";\n  }\n}\n\nexport class ProviderRateLimitError extends ThalamusError {\n  readonly retryAfterMs?: number;\n\n  constructor(\n    message: string,\n    options: { provider: string; retryAfterMs?: number; cause?: unknown },\n  ) {\n    super(message, { ...options, isRetryable: true });\n    this.name = \"ProviderRateLimitError\";\n    this.retryAfterMs = options.retryAfterMs;\n  }\n}\n\nexport class ProviderUnavailableError extends ThalamusError {\n  constructor(message: string, options: { provider: string; cause?: unknown }) {\n    super(message, { ...options, isRetryable: true });\n    this.name = \"ProviderUnavailableError\";\n  }\n}\n\nexport class ProviderResponseError extends ThalamusError {\n  constructor(message: string, options: { provider: string; cause?: unknown }) {\n    super(message, { ...options, isRetryable: false });\n    this.name = \"ProviderResponseError\";\n  }\n}\n\nexport class SessionExpiredError extends ThalamusError {\n  readonly sessionId: string;\n\n  constructor(\n    message: string,\n    options: { provider: string; sessionId: string; cause?: unknown },\n  ) {\n    super(message, { ...options, isRetryable: true });\n    this.name = \"SessionExpiredError\";\n    this.sessionId = options.sessionId;\n  }\n}\n\nexport class VaultError extends ThalamusError {\n  constructor(message: string, options: { provider: string; cause?: unknown }) {\n    super(message, { ...options, isRetryable: false });\n    this.name = \"VaultError\";\n  }\n}\n\nexport class VaultNotFoundError extends VaultError {\n  readonly vaultId: string;\n\n  constructor(vaultId: string, options: { provider: string; cause?: unknown }) {\n    super(`Vault ${vaultId} not found`, options);\n    this.name = \"VaultNotFoundError\";\n    this.vaultId = vaultId;\n  }\n}\n\nexport class CredentialExpiredError extends VaultError {\n  readonly serverName: string;\n  readonly vaultId: string;\n\n  constructor(\n    serverName: string,\n    vaultId: string,\n    options: { provider: string; cause?: unknown },\n  ) {\n    super(\n      `Credential for ${serverName} in vault ${vaultId} is expired with no refresh config`,\n      options,\n    );\n    this.name = \"CredentialExpiredError\";\n    this.serverName = serverName;\n    this.vaultId = vaultId;\n  }\n}\n\nexport class AbortedError extends ThalamusError {\n  readonly sessionId?: string;\n\n  constructor(options: {\n    provider: string;\n    sessionId?: string;\n    cause?: unknown;\n  }) {\n    super(\"Operation aborted\", { ...options, isRetryable: false });\n    this.name = \"AbortedError\";\n    this.sessionId = options.sessionId;\n  }\n}\n\nexport class McpServerError extends ThalamusError {\n  readonly serverName: string;\n  readonly statusCode?: number;\n\n  constructor(\n    serverName: string,\n    options: { provider: string; statusCode?: number; cause?: unknown },\n  ) {\n    const retryable =\n      options.statusCode !== undefined && options.statusCode >= 500;\n    super(\n      `MCP server ${serverName} error${options.statusCode ? ` (${options.statusCode})` : \"\"}`,\n      { ...options, isRetryable: retryable },\n    );\n    this.name = \"McpServerError\";\n    this.serverName = serverName;\n    this.statusCode = options.statusCode;\n  }\n}\n","import type { Vault, VaultOptions } from \"./vault/vault.interface\";\n\nexport enum MessageRole {\n  USER = \"user\",\n  ASSISTANT = \"assistant\",\n  SYSTEM = \"system\",\n}\n\nexport type ContentPart =\n  | { type: \"text\"; text: string }\n  | { type: \"image\"; data: string; mediaType: string }\n  | { type: \"image-url\"; url: string }\n  | { type: \"file\"; data: string; mediaType: string; name?: string };\n\nexport interface Message {\n  role: MessageRole;\n  content: string | ContentPart[];\n}\n\n/** Normalized tool output; provider parsers map into this shape. */\nexport type ToolResultContent =\n  | { type: \"text\"; text: string }\n  | {\n      type: \"citation\";\n      url: string;\n      title?: string;\n      excerpts?: string[];\n    }\n  | { type: \"json\"; value: unknown }\n  | {\n      type: \"media\";\n      mediaType: string;\n      data: string;\n      name?: string;\n    }\n  | {\n      type: \"unknown\";\n      providerType: string;\n      data: Record<string, unknown>;\n    };\n\nexport interface ToolResult {\n  toolUseId: string;\n  content: ToolResultContent[];\n  isError?: boolean;\n  approved?: boolean;\n}\n\nexport interface RequestParams {\n  /** Messages for this turn. May include system, user, and assistant messages. */\n  messages: Message[];\n  /** Opaque session identifier returned by a prior response. Absent means start a new session. */\n  sessionId?: string;\n  /** Vault IDs to bind to this request (credentials available to MCP servers). */\n  vaultIds?: string[];\n  /** Approval responses or tool outputs from a previous requires-action turn. */\n  toolResults?: ToolResult[];\n  /** Pass-through options forwarded directly to the underlying provider SDK call. */\n  providerOptions?: Record<string, unknown>;\n  /** When fired, the SDK closes the connection and the operation yields an `AbortedError`. */\n  abortSignal?: AbortSignal;\n  /** Metadata forwarded in the webhook payload for routing/context on the receiving end. */\n  webhookMetadata?: Record<string, string>;\n}\n\nexport interface SessionOptions {\n  vaultIds?: string[];\n  providerOptions?: Record<string, unknown>;\n}\n\nexport interface Usage {\n  inputTokens?: number;\n  outputTokens?: number;\n  totalTokens?: number;\n}\n\nexport type ToolSource =\n  | { type: \"builtin\" }\n  | { type: \"custom\" }\n  | { type: \"mcp\"; serverName: string };\n\nexport type McpApprovalPolicy = \"always\" | \"never\" | { except: string[] };\n\nexport interface McpServerConfig {\n  name: string;\n  url: string;\n  authorization?: string;\n  allowedTools?: string[];\n  approvalPolicy?: McpApprovalPolicy;\n}\n\nexport interface McpToolDef {\n  name: string;\n  description?: string;\n  inputSchema?: Record<string, unknown>;\n}\n\nexport type ActionRequired =\n  | {\n      type: \"tool-confirmation\";\n      toolUseId: string;\n      toolName: string;\n      input?: Record<string, unknown>;\n    }\n  | {\n      type: \"mcp-approval\";\n      toolUseId: string;\n      toolName: string;\n      serverName: string;\n      input?: Record<string, unknown>;\n    };\n\nexport interface Response {\n  content: string;\n  /** Session identifier to pass as `sessionId` on the next turn to continue the conversation. */\n  sessionId?: string;\n  finishReason:\n    | \"stop\"\n    | \"length\"\n    | \"error\"\n    | \"requires-action\"\n    | \"refused\"\n    | \"other\";\n  usage?: Usage;\n  actionsRequired?: ActionRequired[];\n}\n\nexport type AgentStatus = \"running\" | \"queued\" | \"retrying\" | \"idle\";\n\nexport type StreamPart =\n  | { type: \"text-delta\"; text: string }\n  | { type: \"refusal\"; text: string }\n  | { type: \"thinking\"; text: string }\n  | {\n      type: \"tool-use-start\";\n      toolName: string;\n      toolUseId: string;\n      source?: ToolSource;\n    }\n  | { type: \"tool-use-delta\"; toolUseId: string; argumentsDelta: string }\n  | {\n      type: \"tool-use-done\";\n      toolName: string;\n      toolUseId: string;\n      input?: Record<string, unknown>;\n      source?: ToolSource;\n    }\n  | {\n      type: \"tool-use-result\";\n      toolUseId: string;\n      content: ToolResultContent[];\n      isError?: boolean;\n      source?: ToolSource;\n    }\n  | {\n      type: \"mcp-tools-discovered\";\n      serverName: string;\n      tools: McpToolDef[];\n    }\n  | { type: \"step-start\"; stepIndex: number }\n  | { type: \"step-done\"; stepIndex: number }\n  | { type: \"status-change\"; status: AgentStatus }\n  | { type: \"stream-start\"; sessionId?: string }\n  | { type: \"finish\"; response: Response }\n  | { type: \"error\"; error: Error }\n  | {\n      type: \"provider-event\";\n      provider: string;\n      event: string;\n      data: Record<string, unknown>;\n    };\n\nexport interface StreamCallbacks {\n  /** Fires for every stream part, before type-specific callbacks. */\n  onPart?: (part: StreamPart) => void | Promise<void>;\n  onTextDelta?: (\n    part: Extract<StreamPart, { type: \"text-delta\" }>,\n  ) => void | Promise<void>;\n  onThinking?: (\n    part: Extract<StreamPart, { type: \"thinking\" }>,\n  ) => void | Promise<void>;\n  onRefusal?: (\n    part: Extract<StreamPart, { type: \"refusal\" }>,\n  ) => void | Promise<void>;\n  onToolUseStart?: (\n    part: Extract<StreamPart, { type: \"tool-use-start\" }>,\n  ) => void | Promise<void>;\n  onToolUseDelta?: (\n    part: Extract<StreamPart, { type: \"tool-use-delta\" }>,\n  ) => void | Promise<void>;\n  onToolUseDone?: (\n    part: Extract<StreamPart, { type: \"tool-use-done\" }>,\n  ) => void | Promise<void>;\n  onToolUseResult?: (\n    part: Extract<StreamPart, { type: \"tool-use-result\" }>,\n  ) => void | Promise<void>;\n  onMcpToolsDiscovered?: (\n    part: Extract<StreamPart, { type: \"mcp-tools-discovered\" }>,\n  ) => void | Promise<void>;\n  onStepStart?: (\n    part: Extract<StreamPart, { type: \"step-start\" }>,\n  ) => void | Promise<void>;\n  onStepDone?: (\n    part: Extract<StreamPart, { type: \"step-done\" }>,\n  ) => void | Promise<void>;\n  onStatusChange?: (\n    part: Extract<StreamPart, { type: \"status-change\" }>,\n  ) => void | Promise<void>;\n  onStreamStart?: (\n    part: Extract<StreamPart, { type: \"stream-start\" }>,\n  ) => void | Promise<void>;\n  onFinish?: (\n    part: Extract<StreamPart, { type: \"finish\" }>,\n  ) => void | Promise<void>;\n  onError?: (\n    part: Extract<StreamPart, { type: \"error\" }>,\n  ) => void | Promise<void>;\n  onProviderEvent?: (\n    part: Extract<StreamPart, { type: \"provider-event\" }>,\n  ) => void | Promise<void>;\n}\n\nexport interface SendResult extends PromiseLike<Response> {\n  /** Unique identifier for this `send()` invocation. Known synchronously. */\n  readonly runId: string;\n  readonly sessionId: Promise<string>;\n  readonly response: Promise<Response>;\n  text(): Promise<string>;\n}\n\nexport interface WebhookSendResult {\n  sessionId: string;\n  /** Unique identifier for this `send()` invocation, also present in every webhook event. */\n  runId: string;\n}\n\nexport type SessionEventsFactory = (\n  sessionId: string,\n  runId: string,\n) => StreamCallbacks;\n\ninterface BaseProvider {\n  readonly provider: string;\n  readonly runtimeId: string;\n  createVault(options: VaultOptions): Promise<Vault>;\n  getVault(vaultId: string): Promise<Vault>;\n  createSession(options?: SessionOptions): Promise<string>;\n  endSession(sessionId: string): Promise<void>;\n}\n\nexport interface StreamingProvider extends BaseProvider {\n  send(params: RequestParams): SendResult;\n}\n\nexport interface WebhookProvider extends BaseProvider {\n  send(params: RequestParams): Promise<WebhookSendResult>;\n}\n\nexport type Provider = StreamingProvider | WebhookProvider;\n\nexport const ANTHROPIC = \"anthropic\" as const;\nexport const OPENAI = \"openai\" as const;\n","import type {\n  BetaManagedAgentsAgentMCPToolResultEvent,\n  BetaManagedAgentsAgentToolResultEvent,\n  BetaManagedAgentsDocumentBlock,\n  BetaManagedAgentsImageBlock,\n  BetaManagedAgentsTextBlock,\n} from \"@anthropic-ai/sdk/resources/beta/sessions\";\nimport type { ToolResultContent } from \"../types\";\n\n/** Content block on `agent.tool_result` / `agent.mcp_tool_result` (SDK 0.98+). */\nexport type AnthropicToolResultContentBlock = NonNullable<\n  BetaManagedAgentsAgentToolResultEvent[\"content\"]\n>[number];\n\nfunction mapImageBlock(block: BetaManagedAgentsImageBlock): ToolResultContent {\n  const { source } = block;\n  if (source.type === \"base64\") {\n    return {\n      type: \"media\",\n      mediaType: source.media_type,\n      data: source.data,\n    };\n  }\n  if (source.type === \"url\") {\n    return {\n      type: \"media\",\n      mediaType: \"image/*\",\n      data: source.url,\n      name: source.url,\n    };\n  }\n  return {\n    type: \"unknown\",\n    providerType: \"image\",\n    data: block as unknown as Record<string, unknown>,\n  };\n}\n\nfunction mapDocumentBlock(\n  block: BetaManagedAgentsDocumentBlock,\n): ToolResultContent {\n  const { source } = block;\n  if (source.type === \"base64\") {\n    return {\n      type: \"media\",\n      mediaType: source.media_type,\n      data: source.data,\n      name: block.title ?? undefined,\n    };\n  }\n  if (source.type === \"text\") {\n    return { type: \"text\", text: source.data };\n  }\n  if (source.type === \"url\") {\n    return {\n      type: \"media\",\n      mediaType: \"application/octet-stream\",\n      data: source.url,\n      name: block.title ?? source.url,\n    };\n  }\n  return {\n    type: \"unknown\",\n    providerType: \"document\",\n    data: block as unknown as Record<string, unknown>,\n  };\n}\n\nexport function parseAnthropicToolResultContent(\n  blocks: readonly AnthropicToolResultContentBlock[] | null | undefined,\n): ToolResultContent[] {\n  if (!blocks?.length) return [];\n\n  return blocks.flatMap((block): ToolResultContent[] => {\n    switch (block.type) {\n      case \"text\":\n        return [{ type: \"text\", text: block.text }];\n      case \"search_result\": {\n        const excerpts = block.content.map((c) => c.text).filter(Boolean);\n        return [\n          {\n            type: \"citation\",\n            url: block.source,\n            title: block.title,\n            excerpts: excerpts.length > 0 ? excerpts : undefined,\n          },\n        ];\n      }\n      case \"image\":\n        return [mapImageBlock(block)];\n      case \"document\":\n        return [mapDocumentBlock(block)];\n      default:\n        return [\n          {\n            type: \"unknown\",\n            providerType: (block as { type: string }).type,\n            data: block as unknown as Record<string, unknown>,\n          },\n        ];\n    }\n  });\n}\n\nexport function toolResultFromAgentToolResultEvent(\n  event: Pick<\n    BetaManagedAgentsAgentToolResultEvent,\n    \"content\" | \"is_error\" | \"tool_use_id\"\n  >,\n): { content: ToolResultContent[]; isError?: boolean } {\n  return {\n    content: parseAnthropicToolResultContent(event.content),\n    isError: event.is_error ? true : undefined,\n  };\n}\n\nexport function toolResultFromMcpToolResultEvent(\n  event: Pick<\n    BetaManagedAgentsAgentMCPToolResultEvent,\n    \"content\" | \"is_error\" | \"mcp_tool_use_id\"\n  >,\n): { content: ToolResultContent[]; isError?: boolean } {\n  return {\n    content: parseAnthropicToolResultContent(event.content),\n    isError: event.is_error ? true : undefined,\n  };\n}\n\n/** Thalamus {@link ToolResultContent} → plain string for provider APIs that only accept text. */\nexport function flattenToolResultText(content: ToolResultContent[]): string {\n  const parts: string[] = [];\n  for (const block of content) {\n    switch (block.type) {\n      case \"text\":\n        if (block.text) parts.push(block.text);\n        break;\n      case \"citation\": {\n        const head = block.title\n          ? block.url\n            ? `[${block.title}](${block.url})`\n            : block.title\n          : block.url;\n        const excerpt = block.excerpts?.[0];\n        parts.push(excerpt ? `${head}: ${excerpt}` : head);\n        break;\n      }\n      case \"json\":\n        parts.push(JSON.stringify(block.value));\n        break;\n      case \"media\":\n        parts.push(block.name ?? `[${block.mediaType}]`);\n        break;\n      case \"unknown\":\n        parts.push(JSON.stringify(block.data));\n        break;\n    }\n  }\n  return parts.join(\"\\n\\n\");\n}\n\n/** Map unified content back for `user.custom_tool_result`. */\nexport function toAnthropicToolResultContent(\n  content: ToolResultContent[],\n): BetaManagedAgentsTextBlock[] {\n  return [{ type: \"text\", text: flattenToolResultText(content) }];\n}\n","import type {\n  BetaManagedAgentsAgentCustomToolUseEvent,\n  BetaManagedAgentsAgentMCPToolResultEvent,\n  BetaManagedAgentsAgentMCPToolUseEvent,\n  BetaManagedAgentsAgentMessageEvent,\n  BetaManagedAgentsAgentToolResultEvent,\n  BetaManagedAgentsAgentToolUseEvent,\n  BetaManagedAgentsSessionErrorEvent,\n  BetaManagedAgentsSessionStatusIdleEvent,\n  BetaManagedAgentsSpanModelRequestEndEvent,\n  BetaManagedAgentsStreamSessionEvents,\n} from \"@anthropic-ai/sdk/resources/beta/sessions\";\nimport { ThalamusError } from \"../errors\";\nimport {\n  type ActionRequired,\n  ANTHROPIC,\n  type Response,\n  type StreamPart,\n  type Usage,\n} from \"../types\";\nimport {\n  toolResultFromAgentToolResultEvent,\n  toolResultFromMcpToolResultEvent,\n} from \"./tool-result\";\n\ntype StopReason = BetaManagedAgentsSessionStatusIdleEvent[\"stop_reason\"];\n\nexport function mapStopReason(reason: StopReason): Response[\"finishReason\"] {\n  switch (reason.type) {\n    case \"end_turn\":\n      return \"stop\";\n    case \"requires_action\":\n      return \"requires-action\";\n    case \"retries_exhausted\":\n      return \"error\";\n    default:\n      return \"other\";\n  }\n}\n\nexport function mapSessionError(raw: unknown): ThalamusError {\n  const obj = raw as { message?: string; type?: string } | null;\n  const msg = obj?.message ?? String(raw);\n  const isAuth = obj?.type === \"authentication_error\";\n  return new ThalamusError(msg, { provider: ANTHROPIC, isRetryable: !isAuth });\n}\n\nexport class ResponseAccumulator {\n  content = \"\";\n  finishReason: Response[\"finishReason\"] = \"stop\";\n  usage: Usage | undefined;\n  actionsRequired: ActionRequired[] = [];\n  done = false;\n  stepIndex = 0;\n  /** `agent.mcp_tool_use.id` → `mcp_server_name` for later `agent.mcp_tool_result`. */\n  mcpServerByToolUseId = new Map<string, string>();\n\n  toResponse(sessionId: string): Response {\n    return {\n      content: this.content,\n      sessionId,\n      finishReason: this.finishReason,\n      usage: this.usage,\n      actionsRequired:\n        this.actionsRequired.length > 0 ? this.actionsRequired : undefined,\n    };\n  }\n}\n\nexport function* mapEvent(\n  event: BetaManagedAgentsStreamSessionEvents,\n  acc: ResponseAccumulator,\n): Generator<StreamPart> {\n  switch (event.type) {\n    case \"agent.message\": {\n      const e = event as BetaManagedAgentsAgentMessageEvent;\n      for (const block of e.content) {\n        if (block.type === \"text\") {\n          acc.content += block.text;\n          yield { type: \"text-delta\", text: block.text };\n        }\n      }\n      break;\n    }\n\n    case \"agent.thinking\": {\n      yield { type: \"thinking\", text: \"\" };\n      break;\n    }\n\n    case \"agent.tool_use\": {\n      const e = event as BetaManagedAgentsAgentToolUseEvent;\n      yield {\n        type: \"tool-use-start\",\n        toolName: e.name,\n        toolUseId: e.id,\n        source: { type: \"builtin\" },\n      };\n      yield {\n        type: \"tool-use-done\",\n        toolName: e.name,\n        toolUseId: e.id,\n        input: e.input,\n        source: { type: \"builtin\" },\n      };\n      break;\n    }\n    case \"agent.tool_result\": {\n      const e = event as BetaManagedAgentsAgentToolResultEvent;\n      const result = toolResultFromAgentToolResultEvent(e);\n      yield {\n        type: \"tool-use-result\",\n        toolUseId: e.tool_use_id,\n        content: result.content,\n        isError: result.isError,\n        source: { type: \"builtin\" },\n      };\n      break;\n    }\n    case \"agent.mcp_tool_use\": {\n      const e = event as BetaManagedAgentsAgentMCPToolUseEvent;\n      acc.mcpServerByToolUseId.set(e.id, e.mcp_server_name ?? \"\");\n      yield {\n        type: \"tool-use-start\",\n        toolName: e.name,\n        toolUseId: e.id,\n        source: {\n          type: \"mcp\",\n          serverName: e.mcp_server_name ?? \"\",\n        },\n      };\n      yield {\n        type: \"tool-use-done\",\n        toolName: e.name,\n        toolUseId: e.id,\n        input: e.input,\n        source: {\n          type: \"mcp\",\n          serverName: e.mcp_server_name ?? \"\",\n        },\n      };\n      break;\n    }\n    case \"agent.mcp_tool_result\": {\n      const e = event as BetaManagedAgentsAgentMCPToolResultEvent;\n      const result = toolResultFromMcpToolResultEvent(e);\n      const serverName = acc.mcpServerByToolUseId.get(e.mcp_tool_use_id) ?? \"\";\n      yield {\n        type: \"tool-use-result\",\n        toolUseId: e.mcp_tool_use_id,\n        content: result.content,\n        isError: result.isError,\n        source: { type: \"mcp\", serverName },\n      };\n      break;\n    }\n    case \"agent.custom_tool_use\": {\n      const e = event as BetaManagedAgentsAgentCustomToolUseEvent;\n      acc.actionsRequired.push({\n        type: \"tool-confirmation\",\n        toolUseId: e.id,\n        toolName: e.name,\n        input: e.input as Record<string, unknown>,\n      });\n      acc.finishReason = \"requires-action\";\n      break;\n    }\n\n    case \"session.status_running\": {\n      yield { type: \"status-change\", status: \"running\" };\n      break;\n    }\n    case \"session.status_rescheduled\": {\n      yield { type: \"status-change\", status: \"retrying\" };\n      break;\n    }\n    case \"session.status_idle\": {\n      const e = event as BetaManagedAgentsSessionStatusIdleEvent;\n      yield { type: \"status-change\", status: \"idle\" };\n      acc.finishReason = mapStopReason(e.stop_reason);\n      acc.done = true;\n      break;\n    }\n    case \"session.status_terminated\": {\n      throw new ThalamusError(\"Session terminated\", {\n        provider: ANTHROPIC,\n        isRetryable: false,\n      });\n    }\n\n    case \"session.error\": {\n      const e = event as BetaManagedAgentsSessionErrorEvent;\n      throw mapSessionError(e.error);\n    }\n\n    case \"span.model_request_start\": {\n      yield { type: \"step-start\", stepIndex: acc.stepIndex };\n      break;\n    }\n    case \"span.model_request_end\": {\n      const e = event as BetaManagedAgentsSpanModelRequestEndEvent;\n      if (e.model_usage) {\n        acc.usage = {\n          inputTokens:\n            (acc.usage?.inputTokens ?? 0) + e.model_usage.input_tokens,\n          outputTokens:\n            (acc.usage?.outputTokens ?? 0) + e.model_usage.output_tokens,\n          totalTokens:\n            (acc.usage?.totalTokens ?? 0) +\n            e.model_usage.input_tokens +\n            e.model_usage.output_tokens,\n        };\n      }\n      yield { type: \"step-done\", stepIndex: acc.stepIndex };\n      acc.stepIndex++;\n      break;\n    }\n\n    default: {\n      yield {\n        type: \"provider-event\",\n        provider: ANTHROPIC,\n        event: event.type,\n        data: event as unknown as Record<string, unknown>,\n      };\n      break;\n    }\n  }\n}\n"],"mappings":"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","names":[]}