{"version":3,"sources":["../src/utils.ts","../src/tool-adapter.ts","../src/provider.ts"],"names":["BaseLLMProvider","BedrockRuntimeClient","convertStringToMessages","ConverseStreamCommand","ConverseCommand"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n  BaseMessage,\n  ContentBlock,\n  StopReason as AgentStopReason,\n} from '@agenite/llm';\nimport {\n  ContentBlock as BedrockContentBlock,\n  ImageFormat,\n  Message,\n  StopReason,\n} from '@aws-sdk/client-bedrock-runtime';\n\n/**\n * Maps Bedrock stop reasons to our standard stop reasons\n */\nexport const mapStopReason = (\n  bedrockStopReason?: StopReason\n): AgentStopReason | undefined => {\n  if (!bedrockStopReason) return undefined;\n\n  const stopReasonMap: Record<Exclude<StopReason, null>, AgentStopReason> = {\n    max_tokens: 'maxTokens',\n    stop_sequence: 'stopSequence',\n    end_turn: 'endTurn',\n    tool_use: 'toolUse',\n    guardrail_intervened: 'endTurn',\n    content_filtered: 'endTurn',\n  };\n\n  return stopReasonMap[bedrockStopReason];\n};\n\n/**\n * Maps Bedrock content blocks to our standard content blocks\n */\nexport const mapContent = (\n  bedrockContent: BedrockContentBlock[]\n): ContentBlock[] => {\n  return bedrockContent\n    .map((block) => {\n      if (block.text) {\n        // Check if the text only has whitespace including newlines\n        if (/^\\s*$/.test(block.text)) {\n          return null;\n        }\n\n        return {\n          type: 'text',\n          text: block.text,\n        } as const;\n      }\n\n      if (block.toolUse) {\n        const toolUseId = block.toolUse.toolUseId;\n        if (!toolUseId) {\n          throw new Error('Tool use ID is required');\n        }\n        return {\n          type: 'toolUse',\n          toolName: block.toolUse.name,\n          input: block.toolUse.input || {},\n          id: toolUseId,\n          name: block.toolUse.name || 'unknown',\n        } as const;\n      }\n\n      if (block.image) {\n        const format = block.image.format || 'webp';\n        const validFormat = ['jpeg', 'png', 'gif', 'webp'].includes(format)\n          ? format\n          : 'webp';\n        return {\n          type: 'image',\n          source: {\n            type: 'base64',\n            data: block.image.source?.$unknown?.[1] || '',\n            media_type: `image/${validFormat as 'jpeg' | 'png' | 'gif' | 'webp'}`,\n          },\n        } as const;\n      }\n\n      if (block.reasoningContent) {\n        return {\n          type: 'thinking',\n          thinking: block.reasoningContent.reasoningText?.text || '',\n          signature: block.reasoningContent.reasoningText?.signature || '',\n        } as const;\n      }\n\n      throw new Error(\n        `Unsupported content block type: ${JSON.stringify(block, null, 2)}`\n      );\n    })\n    .filter((block) => block !== null);\n};\n\n/**\n * Converts our message format to Bedrock's format\n */\nexport const convertToMessageFormat = (messages: BaseMessage[]): Message[] => {\n  return messages\n    ?.filter(\n      (message): message is BaseMessage & { role: 'user' | 'assistant' } =>\n        ['user', 'assistant'].includes(message.role)\n    )\n    .map((message) => ({\n      role: message.role,\n      content: message.content.map((block): BedrockContentBlock => {\n        if (typeof block === 'string') {\n          return {\n            text: block,\n            $unknown: undefined,\n          };\n        }\n\n        switch (block.type) {\n          case 'text':\n            return {\n              text: block.text,\n              $unknown: undefined,\n            };\n          case 'toolUse':\n            return {\n              toolUse: {\n                toolUseId: block.id,\n                name: block.name,\n                input:\n                  block.input as BedrockContentBlock.ToolUseMember['toolUse']['input'],\n              },\n            };\n          case 'toolResult':\n            return {\n              toolResult: {\n                toolUseId: block.toolUseId,\n                content: [\n                  {\n                    text: JSON.stringify(block.content),\n                  },\n                ],\n                status: block.isError ? 'error' : 'success',\n              },\n            };\n          case 'image':\n            return {\n              image: {\n                source: {\n                  $unknown: ['source', block.source],\n                },\n                format: (block.source.type === 'url'\n                  ? 'url'\n                  : (block.source.media_type.split('/')[1] as ImageFormat) ||\n                    'webp') as ImageFormat,\n              },\n              $unknown: undefined,\n            };\n          case 'thinking':\n            return {\n              reasoningContent: {\n                reasoningText: {\n                  text: block.thinking,\n                  signature: block.signature as string,\n                },\n              },\n            };\n          case 'document':\n            return {\n              document: {\n                format: block.source?.type === 'url' ? 'pdf' : 'txt',\n                name: String(block.name || block.title),\n                source: {\n                  $unknown: ['url', block.source],\n                },\n              },\n            };\n          default:\n            throw new Error(\n              `Unsupported content block type: ${JSON.stringify(block, null, 2)}`\n            );\n        }\n      }),\n    }));\n};\n","import { Tool } from '@aws-sdk/client-bedrock-runtime';\nimport { ToolDefinition } from '@agenite/llm';\n\nexport class BedrockToolAdapter {\n  convertToProviderTool(tool: ToolDefinition): Tool {\n    return {\n      toolSpec: {\n        name: tool.name,\n        description: tool.description || tool.name,\n        inputSchema: {\n          json: {\n            type: 'object',\n            properties: tool.inputSchema.properties,\n            required: tool.inputSchema.required,\n          },\n        },\n      },\n    } as Tool;\n  }\n} \n","import {\n  BedrockRuntimeClient,\n  ConverseCommand,\n  ConverseStreamCommand,\n  StopReason,\n  ContentBlock as BedrockContentBlock,\n  ContentBlockStartEvent,\n  ContentBlockDeltaEvent,\n  ContentBlockStopEvent,\n  ConverseStreamOutput,\n  ReasoningContentBlockDelta,\n} from '@aws-sdk/client-bedrock-runtime';\n\nimport {\n  GenerateResponse,\n  ToolUseBlock,\n  GenerateOptions,\n  PartialReturn,\n  convertStringToMessages,\n  BaseLLMProvider,\n  BaseMessage,\n} from '@agenite/llm';\nimport { BedrockConfig } from './types';\nimport { mapContent, mapStopReason, convertToMessageFormat } from './utils';\nimport { BedrockToolAdapter } from './tool-adapter';\n\nconst DEFAULT_MODEL = 'anthropic.claude-3-sonnet-20240229-v1:0';\nconst DEFAULT_MAX_TOKENS = 4096;\n\nexport class BedrockProvider extends BaseLLMProvider {\n  private client: BedrockRuntimeClient;\n  private config: BedrockConfig;\n  private toolAdapter: BedrockToolAdapter;\n  readonly name = 'Bedrock';\n  readonly version = '1.0';\n\n  constructor(config: BedrockConfig) {\n    super();\n    this.config = config;\n    this.client = new BedrockRuntimeClient({\n      region: config.region,\n      credentials: config.credentials,\n      ...config.bedrockClientConfig,\n    });\n    this.toolAdapter = new BedrockToolAdapter();\n  }\n\n  private createRequestBody(\n    input: string | BaseMessage[],\n    options?: Partial<GenerateOptions>\n  ) {\n    const messageArray = convertStringToMessages(input);\n    const transformedMessages = convertToMessageFormat(messageArray);\n\n    const providerTools = options?.tools?.map((tool) =>\n      this.toolAdapter.convertToProviderTool(tool)\n    );\n\n    // When reasoning is enabled, we set temperature to 1 as it's the only way to get reasoning\n    const temperature =\n      this.config.enableThinking || this.config.enableReasoning\n        ? 1\n        : (options?.temperature ?? this.config.temperature ?? 0.7);\n\n    return {\n      modelId: this.config.model || DEFAULT_MODEL,\n      system: options?.systemPrompt\n        ? [{ text: options.systemPrompt }]\n        : undefined,\n      messages: transformedMessages,\n      inferenceConfig: {\n        maxTokens: options?.maxTokens ?? DEFAULT_MAX_TOKENS,\n        temperature,\n        stopSequences: options?.stopSequences,\n      },\n      toolConfig: providerTools?.length\n        ? {\n            tools: providerTools,\n            toolChoice: { auto: {} },\n          }\n        : undefined,\n      additionalModelRequestFields:\n        this.config.enableThinking || this.config.enableReasoning\n          ? {\n              reasoning_config: {\n                type: 'enabled',\n                budget_tokens: this.config.reasoningBudgetTokens || 1024,\n              },\n            }\n          : undefined,\n    };\n  }\n\n  private handleError(error: unknown): never {\n    console.error('Bedrock generation failed:', error);\n    throw error instanceof Error\n      ? new Error(`Bedrock generation failed: ${error.message}`)\n      : new Error('Bedrock generation failed with unknown error');\n  }\n\n  private createGenerateResponse(\n    content: GenerateResponse['content'],\n    stopReason: StopReason | undefined,\n    inputTokens: number,\n    outputTokens: number\n  ): GenerateResponse {\n    return {\n      content,\n      stopReason: mapStopReason(stopReason),\n      tokenUsage: {\n        model: this.config.model || DEFAULT_MODEL,\n        inputTokens,\n        outputTokens,\n        // TODO: introduce cost LLM\n        inputCost: 0,\n        outputCost: 0,\n      },\n    };\n  }\n\n  private handleStreamEvent(\n    event: ConverseStreamOutput,\n    state: {\n      buffer: string;\n      inputTokens: number;\n      outputTokens: number;\n      contentBlocks: BedrockContentBlock[];\n    }\n  ) {\n    // Handle usage metadata\n    if ('metadata' in event && event.metadata) {\n      state.inputTokens =\n        event.metadata.usage?.inputTokens || state.inputTokens;\n      state.outputTokens =\n        event.metadata.usage?.outputTokens || state.outputTokens;\n    }\n\n    // Handle content block start\n    if ('contentBlockStart' in event && event.contentBlockStart) {\n      this.handleContentBlockStart(\n        event.contentBlockStart,\n        state.contentBlocks\n      );\n      return null;\n    }\n\n    // Handle content block delta\n    if ('contentBlockDelta' in event && event.contentBlockDelta) {\n      return this.handleContentBlockDelta(event.contentBlockDelta, state);\n    }\n\n    return null;\n  }\n\n  private handleContentBlockStart(\n    { contentBlockIndex = 0, start }: ContentBlockStartEvent,\n    contentBlocks: BedrockContentBlock[]\n  ) {\n    if (start?.toolUse) {\n      contentBlocks[contentBlockIndex] = {\n        ...contentBlocks[contentBlockIndex],\n        toolUse: {\n          ...start.toolUse,\n          ...contentBlocks[contentBlockIndex]?.toolUse,\n        },\n      } as BedrockContentBlock;\n    }\n  }\n\n  private handleContentBlockDelta(\n    { delta, contentBlockIndex = 0 }: ContentBlockDeltaEvent,\n    state: {\n      buffer: string;\n      contentBlocks: BedrockContentBlock[];\n    }\n  ) {\n    if (!delta) return null;\n\n    if (delta.reasoningContent) {\n      return this.handleReasoningDelta(\n        delta.reasoningContent,\n        contentBlockIndex,\n        state\n      );\n    }\n\n    if (delta.text) {\n      return this.handleTextDelta(delta.text, contentBlockIndex, state);\n    } else if (delta.toolUse) {\n      this.handleToolUseDelta(\n        delta.toolUse,\n        contentBlockIndex,\n        state.contentBlocks\n      );\n    }\n    return null;\n  }\n\n  private handleTextDelta(\n    text: string,\n    contentBlockIndex: number,\n    state: {\n      buffer: string;\n      contentBlocks: BedrockContentBlock[];\n    }\n  ) {\n    state.buffer += text || '';\n\n    // Accumulate text in contentBlocks\n    state.contentBlocks[contentBlockIndex] = {\n      ...state.contentBlocks[contentBlockIndex],\n      text: (state.contentBlocks[contentBlockIndex]?.text || '') + text || '',\n    } as BedrockContentBlock;\n\n    if (state.buffer.length > 10) {\n      const result = {\n        type: 'text' as const,\n        text: state.buffer,\n      };\n      state.buffer = '';\n      return result;\n    }\n    return null;\n  }\n\n  private handleReasoningDelta(\n    reasoningContent: ReasoningContentBlockDelta,\n    contentBlockIndex: number,\n    state: {\n      buffer: string;\n      contentBlocks: BedrockContentBlock[];\n    }\n  ) {\n    state.buffer += reasoningContent.text || '';\n\n    // Accumulate reasoning content in contentBlocks\n    state.contentBlocks[contentBlockIndex] = {\n      ...state.contentBlocks[contentBlockIndex],\n      reasoningContent: {\n        ...state.contentBlocks[contentBlockIndex]?.reasoningContent,\n        reasoningText: {\n          text:\n            (state.contentBlocks[contentBlockIndex]?.reasoningContent\n              ?.reasoningText?.text || '') + (reasoningContent.text || ''),\n          signature: reasoningContent.signature,\n        },\n      },\n    } as BedrockContentBlock;\n\n    if (state.buffer.length > 10) {\n      const result = {\n        type: 'thinking' as const,\n        thinking: state.buffer,\n      };\n      state.buffer = '';\n      return result;\n    }\n\n    return null;\n  }\n\n  private handleToolUseDelta(\n    toolUse: { input?: string },\n    contentBlockIndex: number,\n    contentBlocks: BedrockContentBlock[]\n  ) {\n    contentBlocks[contentBlockIndex] = {\n      toolUse: {\n        ...contentBlocks[contentBlockIndex]?.toolUse,\n        input:\n          (contentBlocks[contentBlockIndex]?.toolUse?.input || '') +\n          (toolUse.input || ''),\n      },\n    } as BedrockContentBlock;\n  }\n\n  private handleContentBlockStop(\n    event: { contentBlockStop?: ContentBlockStopEvent },\n    state: {\n      buffer: string;\n      contentBlocks: BedrockContentBlock[];\n    }\n  ): PartialReturn | null {\n    if (\n      event.contentBlockStop &&\n      event.contentBlockStop.contentBlockIndex !== undefined\n    ) {\n      const blockIndex = event.contentBlockStop.contentBlockIndex;\n      const block = state.contentBlocks[blockIndex];\n\n      if (block?.toolUse?.input) {\n        block.toolUse.input = JSON.parse(String(block.toolUse.input));\n        const toolUseResult = {\n          type: 'toolUse' as const,\n          toolUse: mapContent([block])[0] as ToolUseBlock,\n          isEnd: true,\n        };\n\n        return toolUseResult;\n      }\n\n      const finalBuffer = state.buffer;\n      state.buffer = '';\n      if (block?.text) {\n        return {\n          type: 'text' as const,\n          text: finalBuffer,\n          isEnd: true,\n        } as const;\n      }\n\n      if (block?.reasoningContent) {\n        return {\n          type: 'thinking' as const,\n          thinking: finalBuffer,\n          isEnd: true,\n        } as const;\n      }\n    }\n    return null;\n  }\n\n  private handleTextBlockStart(\n    event: { contentBlockDelta?: ContentBlockDeltaEvent },\n    state: {\n      buffer: string;\n      contentBlocks: BedrockContentBlock[];\n    }\n  ) {\n    const contentBlockIndex = event.contentBlockDelta?.contentBlockIndex;\n\n    const hasExistingBlock =\n      contentBlockIndex !== undefined &&\n      state.contentBlocks[contentBlockIndex] !== undefined;\n\n    if (hasExistingBlock) {\n      return null;\n    }\n\n    if (event.contentBlockDelta?.delta?.text) {\n      return {\n        type: 'text' as const,\n        text: '',\n        isStart: true,\n      };\n    }\n\n    if (event.contentBlockDelta?.delta?.reasoningContent) {\n      return {\n        type: 'thinking' as const,\n        thinking: '',\n        isStart: true,\n      };\n    }\n  }\n\n  async *stream(\n    input: string | BaseMessage[],\n    options?: Partial<GenerateOptions>\n  ): AsyncGenerator<PartialReturn, GenerateResponse, unknown> {\n    try {\n      const requestBody = this.createRequestBody(input, options);\n      const response = await this.client.send(\n        new ConverseStreamCommand({\n          ...requestBody,\n          ...this.config.converseCommandConfig,\n        })\n      );\n\n      if (!response.stream) {\n        throw new Error('No stream found in response');\n      }\n\n      const state = {\n        buffer: '',\n        inputTokens: 0,\n        outputTokens: 0,\n        contentBlocks: [] as BedrockContentBlock[],\n      };\n      let finalStopReason: StopReason | undefined;\n\n      for await (const event of response.stream) {\n        // Handle message stop\n        if ('messageStop' in event) {\n          finalStopReason = event.messageStop?.stopReason;\n          continue;\n        }\n\n        const startBlock = this.handleTextBlockStart(event, state);\n\n        if (startBlock) {\n          yield startBlock;\n        }\n\n        // Handle content block stop\n        const stopResult = this.handleContentBlockStop(event, state);\n\n        if (stopResult) {\n          yield stopResult;\n        }\n        // Handle other events\n        const result = this.handleStreamEvent(event, state);\n\n        if (result) yield result;\n      }\n\n      return this.createGenerateResponse(\n        mapContent(state.contentBlocks),\n        finalStopReason,\n        state.inputTokens,\n        state.outputTokens\n      );\n    } catch (error) {\n      this.handleError(error);\n    }\n  }\n\n  async generate(\n    input: string | BaseMessage[],\n    options?: Partial<GenerateOptions>\n  ): Promise<GenerateResponse> {\n    try {\n      const requestBody = this.createRequestBody(input, options);\n      const response = await this.client.send(\n        new ConverseCommand({\n          ...requestBody,\n          ...this.config.converseCommandConfig,\n        })\n      );\n\n      return this.createGenerateResponse(\n        mapContent(response.output?.message?.content || []),\n        response.stopReason,\n        response.usage?.inputTokens || 0,\n        response.usage?.outputTokens || 0\n      );\n    } catch (error) {\n      this.handleError(error);\n    }\n  }\n}\n"]}