{"version":3,"file":"google.cjs","names":["iife","_isContentBlock","_isString","_isObject"],"sources":["../../../src/messages/block_translators/google.ts"],"sourcesContent":["import { AIMessage } from \"../ai.js\";\nimport { ContentBlock } from \"../content/index.js\";\nimport type { StandardContentBlockTranslator } from \"./index.js\";\nimport { iife, _isContentBlock, _isObject, _isString } from \"./utils.js\";\n\nfunction convertToV1FromChatGoogleMessage(\n  message: AIMessage\n): Array<ContentBlock.Standard> {\n  function* iterateContent(): Iterable<ContentBlock.Standard> {\n    const content = iife(() => {\n      if (typeof message.content === \"string\") {\n        if (message.additional_kwargs.originalTextContentBlock) {\n          return [\n            {\n              ...message.additional_kwargs.originalTextContentBlock,\n              type: \"text\",\n            },\n          ];\n        } else {\n          return [{ type: \"text\", text: message.content }];\n        }\n      } else {\n        const originalBlock = message.additional_kwargs\n          ?.originalTextContentBlock as Record<string, unknown> | undefined;\n        if (originalBlock?.thoughtSignature) {\n          // During streaming with thinking models, thoughtSignature arrives in\n          // a metadata-only chunk and is stored in originalTextContentBlock.\n          // When content is an array (due to thinking parts), this signature\n          // isn't carried into the content array by mergeContent().\n          // Merge it into the last non-thinking text block.\n          const hasSignatureInContent = message.content.some(\n            (b: Record<string, unknown>) => \"thoughtSignature\" in b\n          );\n          if (!hasSignatureInContent) {\n            const result = [...message.content];\n            for (let i = result.length - 1; i >= 0; i--) {\n              const block = result[i] as Record<string, unknown>;\n              if (block.type === \"text\" && !block.thought) {\n                block.thoughtSignature = originalBlock.thoughtSignature;\n                return result;\n              }\n            }\n          }\n        }\n        return message.content;\n      }\n    });\n    for (const block of content) {\n      const contentBlockBase: ContentBlock.Standard = iife(() => {\n        if (_isContentBlock(block, \"text\") && _isString(block.text)) {\n          return {\n            type: \"text\",\n            text: block.text,\n          };\n        } else if (\n          _isContentBlock(block, \"inlineData\") &&\n          _isObject(block.inlineData) &&\n          _isString(block.inlineData.mimeType) &&\n          _isString(block.inlineData.data)\n        ) {\n          return {\n            type: \"file\",\n            mimeType: block.inlineData.mimeType,\n            data: block.inlineData.data,\n          };\n        } else if (\n          _isContentBlock(block, \"functionCall\") &&\n          _isObject(block.functionCall) &&\n          _isString(block.functionCall.name) &&\n          _isObject(block.functionCall.args)\n        ) {\n          return {\n            type: \"tool_call\",\n            id: message.id,\n            name: block.functionCall.name,\n            args: block.functionCall.args,\n          };\n        } else if (_isContentBlock(block, \"functionResponse\")) {\n          return { type: \"non_standard\", value: block };\n        } else if (\n          _isContentBlock(block, \"fileData\") &&\n          _isObject(block.fileData) &&\n          _isString(block.fileData.mimeType) &&\n          _isString(block.fileData.fileUri)\n        ) {\n          return {\n            type: \"file\",\n            mimeType: block.fileData.mimeType,\n            fileId: block.fileData.fileUri,\n          };\n        } else if (_isContentBlock(block, \"executableCode\")) {\n          return { type: \"non_standard\", value: block };\n        } else if (_isContentBlock(block, \"codeExecutionResult\")) {\n          return { type: \"non_standard\", value: block };\n        }\n        return { type: \"non_standard\", value: block };\n      });\n      const contentBlock: ContentBlock.Standard = iife(() => {\n        if (\"thought\" in block && block.thought) {\n          const reasoning: string =\n            contentBlockBase.type === \"text\" ? contentBlockBase.text : \"\";\n          return {\n            type: \"reasoning\",\n            reasoning,\n            reasoningContentBlock: contentBlockBase,\n          };\n        } else {\n          return contentBlockBase;\n        }\n      });\n\n      const ret: ContentBlock.Standard = {\n        thought: block.thought,\n        thoughtSignature: block.thoughtSignature,\n        partMetadata: block.partMetadata,\n        ...contentBlock,\n      };\n      for (const attribute in ret) {\n        if (ret[attribute] === undefined) {\n          delete ret[attribute];\n        }\n      }\n\n      yield ret;\n      continue;\n    }\n  }\n  return Array.from(iterateContent());\n}\n\nexport const ChatGoogleTranslator: StandardContentBlockTranslator = {\n  translateContent: convertToV1FromChatGoogleMessage,\n  translateContentChunk: convertToV1FromChatGoogleMessage,\n};\n"],"mappings":";;AAKA,SAAS,iCACP,SAC8B;CAC9B,UAAU,iBAAkD;EAC1D,MAAM,UAAUA,cAAAA,WAAW;GACzB,IAAI,OAAO,QAAQ,YAAY,UAC7B,IAAI,QAAQ,kBAAkB,0BAC5B,OAAO,CACL;IACE,GAAG,QAAQ,kBAAkB;IAC7B,MAAM;GACR,CACF;QAEA,OAAO,CAAC;IAAE,MAAM;IAAQ,MAAM,QAAQ;GAAQ,CAAC;QAE5C;IACL,MAAM,gBAAgB,QAAQ,mBAC1B;IACJ,IAAI,eAAe,kBASb;SAAA,CAH0B,QAAQ,QAAQ,MAC3C,MAA+B,sBAAsB,CAE/B,GAAG;MAC1B,MAAM,SAAS,CAAC,GAAG,QAAQ,OAAO;MAClC,KAAK,IAAI,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK;OAC3C,MAAM,QAAQ,OAAO;OACrB,IAAI,MAAM,SAAS,UAAU,CAAC,MAAM,SAAS;QAC3C,MAAM,mBAAmB,cAAc;QACvC,OAAO;OACT;MACF;KACF;;IAEF,OAAO,QAAQ;GACjB;EACF,CAAC;EACD,KAAK,MAAM,SAAS,SAAS;GAC3B,MAAM,mBAA0CA,cAAAA,WAAW;IACzD,IAAIC,cAAAA,gBAAgB,OAAO,MAAM,KAAKC,cAAAA,UAAU,MAAM,IAAI,GACxD,OAAO;KACL,MAAM;KACN,MAAM,MAAM;IACd;SACK,IACLD,cAAAA,gBAAgB,OAAO,YAAY,KACnCE,cAAAA,UAAU,MAAM,UAAU,KAC1BD,cAAAA,UAAU,MAAM,WAAW,QAAQ,KACnCA,cAAAA,UAAU,MAAM,WAAW,IAAI,GAE/B,OAAO;KACL,MAAM;KACN,UAAU,MAAM,WAAW;KAC3B,MAAM,MAAM,WAAW;IACzB;SACK,IACLD,cAAAA,gBAAgB,OAAO,cAAc,KACrCE,cAAAA,UAAU,MAAM,YAAY,KAC5BD,cAAAA,UAAU,MAAM,aAAa,IAAI,KACjCC,cAAAA,UAAU,MAAM,aAAa,IAAI,GAEjC,OAAO;KACL,MAAM;KACN,IAAI,QAAQ;KACZ,MAAM,MAAM,aAAa;KACzB,MAAM,MAAM,aAAa;IAC3B;SACK,IAAIF,cAAAA,gBAAgB,OAAO,kBAAkB,GAClD,OAAO;KAAE,MAAM;KAAgB,OAAO;IAAM;SACvC,IACLA,cAAAA,gBAAgB,OAAO,UAAU,KACjCE,cAAAA,UAAU,MAAM,QAAQ,KACxBD,cAAAA,UAAU,MAAM,SAAS,QAAQ,KACjCA,cAAAA,UAAU,MAAM,SAAS,OAAO,GAEhC,OAAO;KACL,MAAM;KACN,UAAU,MAAM,SAAS;KACzB,QAAQ,MAAM,SAAS;IACzB;SACK,IAAID,cAAAA,gBAAgB,OAAO,gBAAgB,GAChD,OAAO;KAAE,MAAM;KAAgB,OAAO;IAAM;SACvC,IAAIA,cAAAA,gBAAgB,OAAO,qBAAqB,GACrD,OAAO;KAAE,MAAM;KAAgB,OAAO;IAAM;IAE9C,OAAO;KAAE,MAAM;KAAgB,OAAO;IAAM;GAC9C,CAAC;GACD,MAAM,eAAsCD,cAAAA,WAAW;IACrD,IAAI,aAAa,SAAS,MAAM,SAG9B,OAAO;KACL,MAAM;KACN,WAHA,iBAAiB,SAAS,SAAS,iBAAiB,OAAO;KAI3D,uBAAuB;IACzB;SAEA,OAAO;GAEX,CAAC;GAED,MAAM,MAA6B;IACjC,SAAS,MAAM;IACf,kBAAkB,MAAM;IACxB,cAAc,MAAM;IACpB,GAAG;GACL;GACA,KAAK,MAAM,aAAa,KACtB,IAAI,IAAI,eAAe,KAAA,GACrB,OAAO,IAAI;GAIf,MAAM;EAER;CACF;CACA,OAAO,MAAM,KAAK,eAAe,CAAC;AACpC;AAEA,MAAa,uBAAuD;CAClE,kBAAkB;CAClB,uBAAuB;AACzB"}