{"version":3,"sources":["../src/provider.ts"],"names":["block","BaseLLMProvider","Anthropic","convertStringToMessages","iterateFromMethods"],"mappings":"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","file":"index.cjs","sourcesContent":["import Anthropic from '@anthropic-ai/sdk';\nimport {\n  convertStringToMessages,\n  iterateFromMethods,\n  BaseLLMProvider,\n} from '@agenite/llm';\nimport type {\n  BaseMessage,\n  GenerateResponse,\n  ContentBlock,\n  StopReason,\n  GenerateOptions,\n  PartialReturn,\n  IterateGenerateOptions,\n} from '@agenite/llm';\nimport type { AnthropicConfig } from './types';\n\n/**\n * Maps Anthropic stop reasons to our standard stop reasons\n */\nfunction mapStopReason(stopReason: string | null): StopReason | undefined {\n  if (!stopReason) return undefined;\n\n  const stopReasonMap: Record<string, StopReason> = {\n    end_turn: 'endTurn',\n    max_tokens: 'maxTokens',\n    stop_sequence: 'stopSequence',\n    tool_use: 'toolUse',\n  };\n\n  return stopReasonMap[stopReason] || undefined;\n}\n\n/**\n * Maps Anthropic content blocks to our standard content blocks\n */\nfunction mapContent(content: Anthropic.ContentBlockParam[]): ContentBlock[] {\n  return content.map((block): ContentBlock => {\n    switch (block.type) {\n      case 'text':\n        return { type: 'text', text: block.text };\n      case 'image':\n        return {\n          type: 'image',\n          source: block.source,\n        };\n      case 'tool_use':\n        return {\n          type: 'toolUse',\n          id: block.id,\n          name: block.name,\n          input: block.input,\n        };\n      default:\n        throw new Error(\n          `Unsupported content block type: ${JSON.stringify(block, null, 2)}`\n        );\n    }\n  });\n}\n\nfunction convertContentBlock(\n  block?: ContentBlock | string\n): Anthropic.ContentBlockParam | string {\n  if (!block) {\n    return '';\n  }\n\n  if (typeof block === 'string') {\n    return block;\n  }\n\n  switch (block.type) {\n    case 'text':\n      return { type: 'text', text: block.text };\n    case 'image':\n      return {\n        type: 'image',\n        source:\n          block.source.type === 'base64'\n            ? {\n                type: 'base64',\n                data: block.source.data,\n                media_type: block.source.media_type as\n                  | 'image/jpeg'\n                  | 'image/png'\n                  | 'image/gif'\n                  | 'image/webp',\n              }\n            : {\n                type: 'url',\n                url: block.source.url,\n              },\n      };\n    case 'toolUse':\n      return {\n        type: 'tool_use',\n        id: block.id,\n        name: block.name,\n        input: block.input,\n      };\n    case 'toolResult':\n      return {\n        type: 'tool_result',\n        tool_use_id: block.toolUseId,\n        content:\n          typeof block.content === 'string'\n            ? block.content\n            : block.content?.map(\n                (block) => convertContentBlock(block) as Anthropic.TextBlock\n              ) || '',\n        is_error: block.isError,\n      };\n    default:\n      console.log('block', block);\n\n      throw new Error(\n        `Unsupported content block type: ${JSON.stringify(block, null, 2)}`\n      );\n  }\n}\n\n/**\n * Converts our message format to Anthropic's format\n */\nfunction convertMessages(messages: BaseMessage[]): Anthropic.MessageParam[] {\n  return messages\n    .filter(\n      (\n        msg\n      ): msg is Omit<BaseMessage, 'role'> & { role: 'user' | 'assistant' } =>\n        msg.role !== 'system'\n    )\n    .map((msg) => ({\n      role: msg.role,\n      content: msg.content.map((block): Anthropic.ContentBlockParam => {\n        return convertContentBlock(block) as Anthropic.ContentBlockParam;\n      }),\n    }));\n}\n\nexport class AnthropicProvider extends BaseLLMProvider {\n  private client: Anthropic;\n  private model: string;\n  readonly name = 'Claude';\n  readonly version = '3';\n\n  constructor(config: AnthropicConfig) {\n    super();\n    this.client = new Anthropic({\n      apiKey: config.apiKey,\n      baseURL: config.baseURL,\n    });\n    this.model = config.model ?? 'claude-3-opus-20240229';\n  }\n\n  async generate(\n    input: string | BaseMessage[],\n    options?: Partial<GenerateOptions>\n  ): Promise<GenerateResponse> {\n    try {\n      const messageArray = convertStringToMessages(input);\n      const transformedMessages = convertMessages(messageArray);\n\n      const response = await this.client.messages.create({\n        model: this.model,\n        messages: transformedMessages,\n        system: options?.systemPrompt,\n        max_tokens: options?.maxTokens ?? 4096,\n        temperature: options?.temperature,\n        stop_sequences: options?.stopSequences,\n      });\n\n      return {\n        content: mapContent(response.content),\n        stopReason: mapStopReason(response.stop_reason),\n        tokenUsage: {\n          model: response.model,\n          inputTokens: response.usage.input_tokens,\n          outputTokens: response.usage.output_tokens,\n          inputCost: 0,\n          outputCost: 0,\n        },\n      };\n    } catch (error) {\n      console.error('Anthropic generation failed:', error);\n      throw error instanceof Error\n        ? new Error(`Anthropic generation failed: ${error.message}`)\n        : new Error('Anthropic generation failed with unknown error');\n    }\n  }\n\n  async *stream(\n    input: string | BaseMessage[],\n    options?: Partial<GenerateOptions>\n  ): AsyncGenerator<PartialReturn, GenerateResponse, unknown> {\n    try {\n      const messageArray = convertStringToMessages(input);\n      const transformedMessages = convertMessages(messageArray);\n\n      const messageStream = await this.client.messages.stream({\n        model: this.model,\n        messages: transformedMessages,\n        system: options?.systemPrompt,\n        max_tokens: options?.maxTokens ?? 4096,\n        temperature: options?.temperature,\n        stop_sequences: options?.stopSequences,\n      });\n\n      let buffer = '';\n      for await (const chunk of messageStream) {\n        if (\n          chunk.type === 'content_block_delta' &&\n          chunk.delta.type === 'text_delta'\n        ) {\n          buffer += chunk.delta.text;\n\n          if (buffer.length > 10) {\n            yield {\n              type: 'text',\n              text: buffer,\n            };\n            buffer = '';\n          }\n        }\n      }\n\n      if (buffer.length > 0) {\n        yield {\n          type: 'text',\n          text: buffer,\n        };\n      }\n\n      const finalMessage = await messageStream.finalMessage();\n      return {\n        content: mapContent(finalMessage.content),\n        stopReason: mapStopReason(finalMessage.stop_reason),\n        tokenUsage: {\n          model: finalMessage.model,\n          inputTokens: finalMessage.usage.input_tokens,\n          outputTokens: finalMessage.usage.output_tokens,\n          inputCost: 0,\n          outputCost: 0,\n        },\n      };\n    } catch (error) {\n      console.error('Anthropic generation failed:', error);\n      throw error instanceof Error\n        ? new Error(`Anthropic generation failed: ${error.message}`)\n        : new Error('Anthropic generation failed with unknown error');\n    }\n  }\n\n  async *iterate(\n    input: string | BaseMessage[],\n    options: IterateGenerateOptions\n  ): AsyncGenerator<PartialReturn, GenerateResponse, unknown> {\n    return yield* iterateFromMethods(this, input, options);\n  }\n}\n"]}