{"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;AACzB,OAAI,OAAO,QAAQ,YAAY,SAC7B,KAAI,QAAQ,kBAAkB,yBAC5B,QAAO,CACL;IACE,GAAG,QAAQ,kBAAkB;IAC7B,MAAM;IACP,CACF;OAED,QAAO,CAAC;IAAE,MAAM;IAAQ,MAAM,QAAQ;IAAS,CAAC;QAE7C;IACL,MAAM,gBAAgB,QAAQ,mBAC1B;AACJ,QAAI,eAAe;SASb,CAH0B,QAAQ,QAAQ,MAC3C,MAA+B,sBAAsB,EACvD,EAC2B;MAC1B,MAAM,SAAS,CAAC,GAAG,QAAQ,QAAQ;AACnC,WAAK,IAAI,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK;OAC3C,MAAM,QAAQ,OAAO;AACrB,WAAI,MAAM,SAAS,UAAU,CAAC,MAAM,SAAS;AAC3C,cAAM,mBAAmB,cAAc;AACvC,eAAO;;;;;AAKf,WAAO,QAAQ;;IAEjB;AACF,OAAK,MAAM,SAAS,SAAS;GAC3B,MAAM,mBAA0CA,cAAAA,WAAW;AACzD,QAAIC,cAAAA,gBAAgB,OAAO,OAAO,IAAIC,cAAAA,UAAU,MAAM,KAAK,CACzD,QAAO;KACL,MAAM;KACN,MAAM,MAAM;KACb;aAEDD,cAAAA,gBAAgB,OAAO,aAAa,IACpCE,cAAAA,UAAU,MAAM,WAAW,IAC3BD,cAAAA,UAAU,MAAM,WAAW,SAAS,IACpCA,cAAAA,UAAU,MAAM,WAAW,KAAK,CAEhC,QAAO;KACL,MAAM;KACN,UAAU,MAAM,WAAW;KAC3B,MAAM,MAAM,WAAW;KACxB;aAEDD,cAAAA,gBAAgB,OAAO,eAAe,IACtCE,cAAAA,UAAU,MAAM,aAAa,IAC7BD,cAAAA,UAAU,MAAM,aAAa,KAAK,IAClCC,cAAAA,UAAU,MAAM,aAAa,KAAK,CAElC,QAAO;KACL,MAAM;KACN,IAAI,QAAQ;KACZ,MAAM,MAAM,aAAa;KACzB,MAAM,MAAM,aAAa;KAC1B;aACQF,cAAAA,gBAAgB,OAAO,mBAAmB,CACnD,QAAO;KAAE,MAAM;KAAgB,OAAO;KAAO;aAE7CA,cAAAA,gBAAgB,OAAO,WAAW,IAClCE,cAAAA,UAAU,MAAM,SAAS,IACzBD,cAAAA,UAAU,MAAM,SAAS,SAAS,IAClCA,cAAAA,UAAU,MAAM,SAAS,QAAQ,CAEjC,QAAO;KACL,MAAM;KACN,UAAU,MAAM,SAAS;KACzB,QAAQ,MAAM,SAAS;KACxB;aACQD,cAAAA,gBAAgB,OAAO,iBAAiB,CACjD,QAAO;KAAE,MAAM;KAAgB,OAAO;KAAO;aACpCA,cAAAA,gBAAgB,OAAO,sBAAsB,CACtD,QAAO;KAAE,MAAM;KAAgB,OAAO;KAAO;AAE/C,WAAO;KAAE,MAAM;KAAgB,OAAO;KAAO;KAC7C;GACF,MAAM,eAAsCD,cAAAA,WAAW;AACrD,QAAI,aAAa,SAAS,MAAM,QAG9B,QAAO;KACL,MAAM;KACN,WAHA,iBAAiB,SAAS,SAAS,iBAAiB,OAAO;KAI3D,uBAAuB;KACxB;QAED,QAAO;KAET;GAEF,MAAM,MAA6B;IACjC,SAAS,MAAM;IACf,kBAAkB,MAAM;IACxB,cAAc,MAAM;IACpB,GAAG;IACJ;AACD,QAAK,MAAM,aAAa,IACtB,KAAI,IAAI,eAAe,KAAA,EACrB,QAAO,IAAI;AAIf,SAAM;;;AAIV,QAAO,MAAM,KAAK,gBAAgB,CAAC;;AAGrC,MAAa,uBAAuD;CAClE,kBAAkB;CAClB,uBAAuB;CACxB"}