{"version":3,"file":"index.cjs","sources":["../../../../src/llm/anthropic/index.ts"],"sourcesContent":["import { AIMessageChunk } from '@langchain/core/messages';\nimport { ChatAnthropicMessages } from '@langchain/anthropic';\nimport { ChatGenerationChunk } from '@langchain/core/outputs';\nimport type { BaseChatModelParams } from '@langchain/core/language_models/chat_models';\nimport type {\n  BaseMessage,\n  UsageMetadata,\n  MessageContentComplex,\n} from '@langchain/core/messages';\nimport type { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';\nimport type { AnthropicInput } from '@langchain/anthropic';\nimport type { Anthropic } from '@anthropic-ai/sdk';\nimport type {\n  AnthropicMessageCreateParams,\n  AnthropicStreamingMessageCreateParams,\n  AnthropicStreamUsage,\n  AnthropicMessageStartEvent,\n  AnthropicMessageDeltaEvent,\n  AnthropicOutputConfig,\n} from '@/llm/anthropic/types';\nimport { _makeMessageChunkFromAnthropicEvent } from './utils/message_outputs';\nimport { _convertMessagesToAnthropicPayload } from './utils/message_inputs';\nimport { handleToolChoice } from './utils/tools';\nimport { TextStream } from '@/llm/text';\n\nfunction _toolsInParams(\n  params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\n): boolean {\n  return !!(params.tools && params.tools.length > 0);\n}\nfunction _documentsInParams(\n  params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\n): boolean {\n  for (const message of params.messages ?? []) {\n    if (typeof message.content === 'string') {\n      continue;\n    }\n    for (const block of message.content ?? []) {\n      if (\n        typeof block === 'object' &&\n        block != null &&\n        block.type === 'document' &&\n        block.citations != null &&\n        typeof block.citations === 'object' &&\n        block.citations.enabled\n      ) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\n\nfunction _thinkingInParams(\n  params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\n): boolean {\n  return !!(\n    params.thinking &&\n    (params.thinking.type === 'enabled' || params.thinking.type === 'adaptive')\n  );\n}\n\nfunction _compactionInParams(\n  params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\n): boolean {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const cm = (params as any).context_management;\n  return !!cm?.edits?.some(\n    (e: { type: string }) => e.type === 'compact_20260112'\n  );\n}\n\nfunction extractToken(\n  chunk: AIMessageChunk\n): [string, 'string' | 'input' | 'content'] | [undefined] {\n  if (typeof chunk.content === 'string') {\n    return [chunk.content, 'string'];\n  } else if (\n    Array.isArray(chunk.content) &&\n    chunk.content.length >= 1 &&\n    'input' in chunk.content[0]\n  ) {\n    return typeof chunk.content[0].input === 'string'\n      ? [chunk.content[0].input, 'input']\n      : [JSON.stringify(chunk.content[0].input), 'input'];\n  } else if (\n    Array.isArray(chunk.content) &&\n    chunk.content.length >= 1 &&\n    'text' in chunk.content[0]\n  ) {\n    return [chunk.content[0].text, 'content'];\n  } else if (\n    Array.isArray(chunk.content) &&\n    chunk.content.length >= 1 &&\n    'thinking' in chunk.content[0]\n  ) {\n    return [chunk.content[0].thinking, 'content'];\n  }\n  return [undefined];\n}\n\nfunction cloneChunk(\n  text: string,\n  tokenType: string,\n  chunk: AIMessageChunk\n): AIMessageChunk {\n  if (tokenType === 'string') {\n    return new AIMessageChunk(Object.assign({}, chunk, { content: text }));\n  } else if (tokenType === 'input') {\n    return chunk;\n  }\n  const content = chunk.content[0] as MessageContentComplex;\n  if (tokenType === 'content' && content.type === 'text') {\n    return new AIMessageChunk(\n      Object.assign({}, chunk, {\n        content: [Object.assign({}, content, { text })],\n      })\n    );\n  } else if (tokenType === 'content' && content.type === 'text_delta') {\n    return new AIMessageChunk(\n      Object.assign({}, chunk, {\n        content: [Object.assign({}, content, { text })],\n      })\n    );\n  } else if (tokenType === 'content' && content.type?.startsWith('thinking')) {\n    return new AIMessageChunk(\n      Object.assign({}, chunk, {\n        content: [Object.assign({}, content, { thinking: text })],\n      })\n    );\n  }\n\n  return chunk;\n}\n\nexport type CustomAnthropicInput = AnthropicInput & {\n  _lc_stream_delay?: number;\n  outputConfig?: AnthropicOutputConfig;\n  inferenceGeo?: string;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  contextManagement?: any;\n} & BaseChatModelParams;\n\n/**\n * A type representing additional parameters that can be passed to the\n * Anthropic API.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Kwargs = Record<string, any>;\n\nexport class CustomAnthropic extends ChatAnthropicMessages {\n  _lc_stream_delay: number;\n  private message_start: AnthropicMessageStartEvent | undefined;\n  private message_delta: AnthropicMessageDeltaEvent | undefined;\n  private tools_in_params?: boolean;\n  private emitted_usage?: boolean;\n  top_k: number | undefined;\n  outputConfig?: AnthropicOutputConfig;\n  inferenceGeo?: string;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  contextManagement?: any;\n  constructor(fields?: CustomAnthropicInput) {\n    super(fields);\n    this.resetTokenEvents();\n    this.setDirectFields(fields);\n    this._lc_stream_delay = fields?._lc_stream_delay ?? 25;\n    this.outputConfig = fields?.outputConfig;\n    this.inferenceGeo = fields?.inferenceGeo;\n    this.contextManagement = fields?.contextManagement;\n  }\n\n  static lc_name(): 'IllumaAnthropic' {\n    return 'IllumaAnthropic';\n  }\n\n  /**\n   * Get the parameters used to invoke the model\n   */\n  override invocationParams(\n    options?: this['ParsedCallOptions']\n  ): Omit<\n    AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams,\n    'messages'\n  > &\n    Kwargs {\n    const tool_choice:\n      | Anthropic.Messages.ToolChoiceAuto\n      | Anthropic.Messages.ToolChoiceAny\n      | Anthropic.Messages.ToolChoiceTool\n      | undefined = handleToolChoice(options?.tool_choice);\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const callOptions = options as Record<string, any> | undefined;\n    const mergedOutputConfig: AnthropicOutputConfig | undefined = (():\n      | AnthropicOutputConfig\n      | undefined => {\n      const base = {\n        ...this.outputConfig,\n        ...callOptions?.outputConfig,\n      };\n      if (callOptions?.outputFormat && !base.format) {\n        base.format = callOptions.outputFormat;\n      }\n      return Object.keys(base).length > 0 ? base : undefined;\n    })();\n\n    const inferenceGeo = callOptions?.inferenceGeo ?? this.inferenceGeo;\n\n    const contextManagement = this.contextManagement;\n\n    const sharedParams = {\n      tools: this.formatStructuredToolToAnthropic(options?.tools),\n      tool_choice,\n      thinking: this.thinking,\n      ...(mergedOutputConfig ? { output_config: mergedOutputConfig } : {}),\n      ...(inferenceGeo ? { inference_geo: inferenceGeo } : {}),\n      ...(contextManagement ? { context_management: contextManagement } : {}),\n      ...this.invocationKwargs,\n    };\n\n    if (this.thinking.type === 'enabled' || this.thinking.type === 'adaptive') {\n      if (this.top_k !== -1 && (this.top_k as number | undefined) != null) {\n        throw new Error('topK is not supported when thinking is enabled');\n      }\n      if (this.topP !== -1 && (this.topP as number | undefined) != null) {\n        throw new Error('topP is not supported when thinking is enabled');\n      }\n      if (\n        this.temperature !== 1 &&\n        (this.temperature as number | undefined) != null\n      ) {\n        throw new Error(\n          'temperature is not supported when thinking is enabled'\n        );\n      }\n\n      return {\n        model: this.model,\n        stop_sequences: options?.stop ?? this.stopSequences,\n        stream: this.streaming,\n        max_tokens: this.maxTokens,\n        ...sharedParams,\n      };\n    }\n    return {\n      model: this.model,\n      temperature: this.temperature,\n      top_k: this.top_k,\n      top_p: this.topP,\n      stop_sequences: options?.stop ?? this.stopSequences,\n      stream: this.streaming,\n      max_tokens: this.maxTokens,\n      ...sharedParams,\n    };\n  }\n\n  /**\n   * Get stream usage as returned by this client's API response.\n   * @returns The stream usage object.\n   */\n  getStreamUsage(): UsageMetadata | undefined {\n    if (this.emitted_usage === true) {\n      return;\n    }\n    const inputUsage = this.message_start?.message.usage as\n      | undefined\n      | AnthropicStreamUsage;\n    const outputUsage = this.message_delta?.usage as\n      | undefined\n      | Partial<AnthropicStreamUsage>;\n    if (!outputUsage) {\n      return;\n    }\n    const totalUsage: UsageMetadata = {\n      input_tokens: inputUsage?.input_tokens ?? 0,\n      output_tokens: outputUsage.output_tokens ?? 0,\n      total_tokens:\n        (inputUsage?.input_tokens ?? 0) + (outputUsage.output_tokens ?? 0),\n    };\n\n    if (\n      inputUsage?.cache_creation_input_tokens != null ||\n      inputUsage?.cache_read_input_tokens != null\n    ) {\n      totalUsage.input_token_details = {\n        cache_creation: inputUsage.cache_creation_input_tokens ?? 0,\n        cache_read: inputUsage.cache_read_input_tokens ?? 0,\n      };\n    }\n\n    this.emitted_usage = true;\n    return totalUsage;\n  }\n\n  resetTokenEvents(): void {\n    this.message_start = undefined;\n    this.message_delta = undefined;\n    this.emitted_usage = undefined;\n    this.tools_in_params = undefined;\n  }\n\n  setDirectFields(fields?: CustomAnthropicInput): void {\n    this.temperature = fields?.temperature ?? undefined;\n    this.topP = fields?.topP ?? undefined;\n    this.top_k = fields?.topK;\n    if (this.temperature === -1 || this.temperature === 1) {\n      this.temperature = undefined;\n    }\n    if (this.topP === -1) {\n      this.topP = undefined;\n    }\n    if (this.top_k === -1) {\n      this.top_k = undefined;\n    }\n  }\n\n  private createGenerationChunk({\n    token,\n    chunk,\n    usageMetadata,\n    shouldStreamUsage,\n  }: {\n    token?: string;\n    chunk: AIMessageChunk;\n    shouldStreamUsage: boolean;\n    usageMetadata?: UsageMetadata;\n  }): ChatGenerationChunk {\n    const usage_metadata = shouldStreamUsage\n      ? (usageMetadata ?? chunk.usage_metadata)\n      : undefined;\n    return new ChatGenerationChunk({\n      message: new AIMessageChunk({\n        // Just yield chunk as it is and tool_use will be concat by BaseChatModel._generateUncached().\n        content: chunk.content,\n        additional_kwargs: chunk.additional_kwargs,\n        tool_call_chunks: chunk.tool_call_chunks,\n        response_metadata: chunk.response_metadata,\n        usage_metadata,\n        id: chunk.id,\n      }),\n      text: token ?? '',\n    });\n  }\n\n  async *_streamResponseChunks(\n    messages: BaseMessage[],\n    options: this['ParsedCallOptions'],\n    runManager?: CallbackManagerForLLMRun\n  ): AsyncGenerator<ChatGenerationChunk> {\n    this.resetTokenEvents();\n    const params = this.invocationParams(options);\n    const formattedMessages = _convertMessagesToAnthropicPayload(messages);\n    const payload = {\n      ...params,\n      ...formattedMessages,\n      stream: true,\n    } as const;\n    const coerceContentToString =\n      !_toolsInParams(payload) &&\n      !_documentsInParams(payload) &&\n      !_thinkingInParams(payload) &&\n      !_compactionInParams(payload);\n\n    const stream = await this.createStreamWithRetry(payload, {\n      headers: options.headers,\n    });\n\n    const shouldStreamUsage = this.streamUsage ?? options.streamUsage;\n\n    for await (const data of stream) {\n      if (options.signal?.aborted === true) {\n        stream.controller.abort();\n        throw new Error('AbortError: User aborted the request.');\n      }\n\n      if (data.type === 'message_start') {\n        this.message_start = data as AnthropicMessageStartEvent;\n      } else if (data.type === 'message_delta') {\n        this.message_delta = data as AnthropicMessageDeltaEvent;\n      }\n\n      let usageMetadata: UsageMetadata | undefined;\n      if (this.tools_in_params !== true && this.emitted_usage !== true) {\n        usageMetadata = this.getStreamUsage();\n      }\n\n      const result = _makeMessageChunkFromAnthropicEvent(\n        data as Anthropic.Beta.Messages.BetaRawMessageStreamEvent,\n        {\n          streamUsage: shouldStreamUsage,\n          coerceContentToString,\n        }\n      );\n      if (!result) continue;\n\n      const { chunk } = result;\n      const [token = '', tokenType] = extractToken(chunk);\n\n      if (\n        !tokenType ||\n        tokenType === 'input' ||\n        (token === '' && (usageMetadata != null || chunk.id != null))\n      ) {\n        const generationChunk = this.createGenerationChunk({\n          token,\n          chunk,\n          usageMetadata,\n          shouldStreamUsage,\n        });\n        yield generationChunk;\n        await runManager?.handleLLMNewToken(\n          token,\n          undefined,\n          undefined,\n          undefined,\n          undefined,\n          { chunk: generationChunk }\n        );\n        continue;\n      }\n\n      const textStream = new TextStream(token, {\n        delay: this._lc_stream_delay,\n        firstWordChunk: true,\n        minChunkSize: 4,\n        maxChunkSize: 8,\n      });\n\n      const generator = textStream.generateText(options.signal);\n      try {\n        let emittedUsage = false;\n        for await (const currentToken of generator) {\n          if ((options.signal as AbortSignal | undefined)?.aborted === true) {\n            break;\n          }\n          const newChunk = cloneChunk(currentToken, tokenType, chunk);\n\n          const generationChunk = this.createGenerationChunk({\n            token: currentToken,\n            chunk: newChunk,\n            usageMetadata: emittedUsage ? undefined : usageMetadata,\n            shouldStreamUsage,\n          });\n\n          if (usageMetadata && !emittedUsage) {\n            emittedUsage = true;\n          }\n          yield generationChunk;\n\n          await runManager?.handleLLMNewToken(\n            currentToken,\n            undefined,\n            undefined,\n            undefined,\n            undefined,\n            { chunk: generationChunk }\n          );\n        }\n      } finally {\n        await generator.return();\n      }\n    }\n\n    this.resetTokenEvents();\n  }\n}\n"],"names":["AIMessageChunk","ChatAnthropicMessages","handleToolChoice","ChatGenerationChunk","_convertMessagesToAnthropicPayload","_makeMessageChunkFromAnthropicEvent","TextStream"],"mappings":"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"}