{"version":3,"file":"bedrock_converse.cjs","names":["_isObject","_isString","_isBytesArray","_isArray","_isContentBlock","iife","_isNumber"],"sources":["../../../src/messages/block_translators/bedrock_converse.ts"],"sourcesContent":["import { AIMessage } from \"../ai.js\";\nimport { ContentBlock } from \"../content/index.js\";\nimport { KNOWN_BLOCK_TYPES } from \"../content/tools.js\";\nimport type { StandardContentBlockTranslator } from \"./index.js\";\nimport {\n  _isArray,\n  _isBytesArray,\n  _isContentBlock,\n  _isNumber,\n  _isObject,\n  _isString,\n  iife,\n} from \"./utils.js\";\n\n// see `/libs/providers/langchain-aws/src/utils/compat.ts:convertFileFormatToMimeType`\nfunction convertFileFormatToMimeType(format: string): string {\n  switch (format) {\n    // DocumentBlock\n    case \"csv\":\n      return \"text/csv\";\n    case \"doc\":\n      return \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\";\n    case \"docx\":\n      return \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\";\n    case \"html\":\n      return \"text/html\";\n    case \"md\":\n      return \"text/markdown\";\n    case \"pdf\":\n      return \"application/pdf\";\n    case \"txt\":\n      return \"text/plain\";\n    case \"xls\":\n      return \"application/vnd.ms-excel\";\n    case \"xlsx\":\n      return \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n    // ImageBlock\n    case \"gif\":\n      return \"image/gif\";\n    case \"jpeg\":\n      return \"image/jpeg\";\n    case \"jpg\":\n      return \"image/jpeg\";\n    case \"png\":\n      return \"image/png\";\n    case \"webp\":\n      return \"image/webp\";\n    // VideoBlock\n    case \"flv\":\n      return \"video/flv\";\n    case \"mkv\":\n      return \"video/mkv\";\n    case \"mov\":\n      return \"video/mov\";\n    case \"mp4\":\n      return \"video/mp4\";\n    case \"mpeg\":\n      return \"video/mpeg\";\n    case \"mpg\":\n      return \"video/mpg\";\n    case \"three_gp\":\n      return \"video/three_gp\";\n    case \"webm\":\n      return \"video/webm\";\n    case \"wmv\":\n      return \"video/wmv\";\n    default:\n      return \"application/octet-stream\";\n  }\n}\n\nfunction convertConverseDocumentBlock(\n  block: ContentBlock\n): ContentBlock.Standard {\n  if (_isObject(block.document) && _isObject(block.document.source)) {\n    const format =\n      _isObject(block.document) && _isString(block.document.format)\n        ? block.document.format\n        : \"\";\n    const mimeType = convertFileFormatToMimeType(format);\n\n    if (_isObject(block.document.source)) {\n      if (\n        _isObject(block.document.source.s3Location) &&\n        _isString(block.document.source.s3Location.uri)\n      ) {\n        return {\n          type: \"file\",\n          mimeType,\n          fileId: block.document.source.s3Location.uri,\n        };\n      }\n      if (_isBytesArray(block.document.source.bytes)) {\n        return {\n          type: \"file\",\n          mimeType,\n          data: block.document.source.bytes,\n        };\n      }\n      if (_isString(block.document.source.text)) {\n        return {\n          type: \"file\",\n          mimeType,\n          data: Buffer.from(block.document.source.text).toString(\"base64\"),\n        };\n      }\n      if (_isArray(block.document.source.content)) {\n        const data = block.document.source.content.reduce(\n          (acc: string, item) => {\n            if (_isObject(item) && _isString(item.text)) {\n              return acc + item.text;\n            }\n            return acc;\n          },\n          \"\"\n        );\n        return {\n          type: \"file\",\n          mimeType,\n          data,\n        };\n      }\n    }\n  }\n  return { type: \"non_standard\", value: block };\n}\n\nfunction convertConverseImageBlock(block: ContentBlock): ContentBlock.Standard {\n  if (_isContentBlock(block, \"image\") && _isObject(block.image)) {\n    const format =\n      _isObject(block.image) && _isString(block.image.format)\n        ? block.image.format\n        : \"\";\n    const mimeType = convertFileFormatToMimeType(format);\n\n    if (_isObject(block.image.source)) {\n      if (\n        _isObject(block.image.source.s3Location) &&\n        _isString(block.image.source.s3Location.uri)\n      ) {\n        return {\n          type: \"image\",\n          mimeType,\n          fileId: block.image.source.s3Location.uri,\n        };\n      }\n      if (_isBytesArray(block.image.source.bytes)) {\n        return {\n          type: \"image\",\n          mimeType,\n          data: block.image.source.bytes,\n        };\n      }\n    }\n  }\n  return { type: \"non_standard\", value: block };\n}\n\nfunction convertConverseVideoBlock(block: ContentBlock): ContentBlock.Standard {\n  if (_isContentBlock(block, \"video\") && _isObject(block.video)) {\n    const format =\n      _isObject(block.video) && _isString(block.video.format)\n        ? block.video.format\n        : \"\";\n    const mimeType = convertFileFormatToMimeType(format);\n\n    if (_isObject(block.video.source)) {\n      if (\n        _isObject(block.video.source.s3Location) &&\n        _isString(block.video.source.s3Location.uri)\n      ) {\n        return {\n          type: \"video\",\n          mimeType,\n          fileId: block.video.source.s3Location.uri,\n        };\n      }\n      if (_isBytesArray(block.video.source.bytes)) {\n        return {\n          type: \"video\",\n          mimeType,\n          data: block.video.source.bytes,\n        };\n      }\n    }\n  }\n  return { type: \"non_standard\", value: block };\n}\n\nexport function convertToV1FromChatBedrockConverseInput(\n  message: AIMessage\n): Array<ContentBlock.Standard> {\n  function* iterateContent(): Iterable<ContentBlock.Standard> {\n    const content =\n      typeof message.content === \"string\"\n        ? [{ type: \"text\", text: message.content }]\n        : message.content;\n    const blocks = content.map((block) => {\n      if (_isContentBlock(block, \"non_standard\") && \"value\" in block) {\n        return block.value as ContentBlock;\n      }\n      return block;\n    });\n    for (const block of blocks) {\n      if (_isContentBlock(block, \"text\") && _isString(block.text)) {\n        yield { type: \"text\", text: block.text };\n        continue;\n      } else if (\n        _isContentBlock(block, \"document\") &&\n        _isObject(block.document)\n      ) {\n        yield convertConverseDocumentBlock(block);\n        continue;\n      } else if (_isContentBlock(block, \"image\") && _isObject(block.image)) {\n        yield convertConverseImageBlock(block);\n        continue;\n      } else if (_isContentBlock(block, \"video\") && _isObject(block.video)) {\n        yield convertConverseVideoBlock(block);\n        continue;\n      }\n      if (KNOWN_BLOCK_TYPES.includes(block.type)) {\n        yield block as ContentBlock.Standard;\n      } else {\n        yield { type: \"non_standard\", value: block };\n      }\n    }\n  }\n  return Array.from(iterateContent());\n}\n\nfunction convertToV1FromChatBedrockConverseMessage(\n  message: AIMessage\n): Array<ContentBlock.Standard> {\n  // see `/libs/providers/langchain-aws/src/utils/message_outputs.ts:convertConverseMessageToLangChainMessage`\n  function* iterateContent(): Iterable<ContentBlock.Standard> {\n    const content =\n      typeof message.content === \"string\"\n        ? [{ type: \"text\", text: message.content }]\n        : message.content;\n    for (const block of content) {\n      if (_isContentBlock(block, \"cache_point\")) {\n        yield { type: \"non_standard\", value: block };\n        continue;\n      } else if (\n        _isContentBlock(block, \"citations_content\") &&\n        _isObject(block.citationsContent)\n      ) {\n        const text = _isArray(block.citationsContent.content)\n          ? block.citationsContent.content.reduce((acc: string, item) => {\n              if (_isObject(item) && _isString(item.text)) {\n                return acc + item.text;\n              }\n              return acc;\n            }, \"\")\n          : \"\";\n        const annotations = _isArray(block.citationsContent.citations)\n          ? block.citationsContent.citations.reduce(\n              (acc: Array<ContentBlock.Citation>, item) => {\n                if (_isObject(item)) {\n                  const citedText = _isArray(item.sourceContent)\n                    ? item.sourceContent.reduce((acc: string, item) => {\n                        if (_isObject(item) && _isString(item.text)) {\n                          return acc + item.text;\n                        }\n                        return acc;\n                      }, \"\")\n                    : \"\";\n                  const properties = iife(() => {\n                    if (_isObject(item.location)) {\n                      const location =\n                        item.location.documentChar ||\n                        item.location.documentPage ||\n                        item.location.documentChunk;\n                      if (_isObject(location)) {\n                        return {\n                          source: _isNumber(location.documentIndex)\n                            ? location.documentIndex.toString()\n                            : undefined,\n                          startIndex: _isNumber(location.start)\n                            ? location.start\n                            : undefined,\n                          endIndex: _isNumber(location.end)\n                            ? location.end\n                            : undefined,\n                        };\n                      }\n                    }\n                    return {};\n                  });\n                  acc.push({ type: \"citation\", citedText, ...properties });\n                }\n                return acc;\n              },\n              []\n            )\n          : [];\n        yield { type: \"text\", text, annotations };\n        continue;\n      } else if (\n        _isContentBlock(block, \"document\") &&\n        _isObject(block.document)\n      ) {\n        yield convertConverseDocumentBlock(block);\n        continue;\n      } else if (_isContentBlock(block, \"guard_content\")) {\n        yield {\n          type: \"non_standard\",\n          value: block,\n        };\n        continue;\n      } else if (_isContentBlock(block, \"image\") && _isObject(block.image)) {\n        yield convertConverseImageBlock(block);\n        continue;\n      } else if (\n        _isContentBlock(block, \"reasoning_content\") &&\n        _isString(block.reasoningText)\n      ) {\n        yield {\n          type: \"reasoning\",\n          reasoning: block.reasoningText,\n        };\n        continue;\n      } else if (_isContentBlock(block, \"text\") && _isString(block.text)) {\n        yield { type: \"text\", text: block.text };\n        continue;\n      } else if (_isContentBlock(block, \"tool_result\")) {\n        yield { type: \"non_standard\", value: block };\n        continue;\n      } else if (_isContentBlock(block, \"tool_call\")) {\n        // no-op - filtered to tools\n        continue;\n      } else if (_isContentBlock(block, \"video\") && _isObject(block.video)) {\n        yield convertConverseVideoBlock(block);\n        continue;\n      }\n      yield { type: \"non_standard\", value: block };\n    }\n  }\n  return Array.from(iterateContent());\n}\n\nexport const ChatBedrockConverseTranslator: StandardContentBlockTranslator = {\n  translateContent: convertToV1FromChatBedrockConverseMessage,\n  translateContentChunk: convertToV1FromChatBedrockConverseMessage,\n};\n"],"mappings":"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"}