{"version":3,"file":"content-fINNgB3A.cjs","names":["MastraError","ErrorDomain","ErrorCategory"],"sources":["../src/stream/aisdk/v5/compat/content.ts"],"sourcesContent":["import type { LanguageModelV2DataContent } from '@ai-sdk/provider-v5';\nimport type { DataContent } from '@internal/ai-sdk-v5';\nimport { ErrorCategory, ErrorDomain, MastraError } from '../../../../error';\n\nfunction splitDataUrl(dataUrl: string): {\n  mediaType: string | undefined;\n  base64Content: string | undefined;\n} {\n  try {\n    const [header, base64Content] = dataUrl.split(',');\n    return {\n      mediaType: header?.split(';')[0]?.split(':')[1],\n      base64Content,\n    };\n  } catch {\n    return {\n      mediaType: undefined,\n      base64Content: undefined,\n    };\n  }\n}\n\n/**\n * Flat generated-file data is `string | Uint8Array`, where strings normally\n * hold base64. URL-backed V4 generated files flatten to http(s) URL strings\n * (matching AI SDK v7's own conversion), so consumers that interpret string\n * data as base64 must use this check to tell the two apart. Base64 content\n * never parses as an http(s) URL, making the check unambiguous.\n */\nexport function isUrlString(data: string): boolean {\n  if (!data.startsWith('http://') && !data.startsWith('https://')) {\n    return false;\n  }\n\n  try {\n    new URL(data);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nexport function convertToDataContent(content: DataContent | URL): {\n  data: LanguageModelV2DataContent;\n  mediaType: string | undefined;\n} {\n  // Buffer & Uint8Array:\n  if (content instanceof Uint8Array) {\n    return { data: content, mediaType: undefined };\n  }\n\n  // ArrayBuffer needs conversion to Uint8Array (lightweight):\n  if (content instanceof ArrayBuffer) {\n    return { data: new Uint8Array(content), mediaType: undefined };\n  }\n\n  // Attempt to create a URL from the data. If it fails, we can assume the data\n  // is not a URL and likely some other sort of data.\n  if (typeof content === 'string') {\n    try {\n      content = new URL(content);\n    } catch {\n      // ignored\n    }\n  }\n\n  // Extract data from data URL:\n  if (content instanceof URL && content.protocol === 'data:') {\n    const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(content.toString());\n\n    if (dataUrlMediaType == null || base64Content == null) {\n      throw new MastraError({\n        id: 'INVALID_DATA_URL_FORMAT',\n        text: `Invalid data URL format in content ${content.toString()}`,\n        domain: ErrorDomain.LLM,\n        category: ErrorCategory.USER,\n      });\n    }\n\n    return { data: base64Content, mediaType: dataUrlMediaType };\n  }\n\n  return { data: content, mediaType: undefined };\n}\n"],"mappings":";;AAIA,SAAS,aAAa,SAGpB;CACA,IAAI;EACF,MAAM,CAAC,QAAQ,iBAAiB,QAAQ,MAAM,GAAG;EACjD,OAAO;GACL,WAAW,QAAQ,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;GAC7C;EACF;CACF,QAAQ;EACN,OAAO;GACL,WAAW,KAAA;GACX,eAAe,KAAA;EACjB;CACF;AACF;;;;;;;;AASA,SAAgB,YAAY,MAAuB;CACjD,IAAI,CAAC,KAAK,WAAW,SAAS,KAAK,CAAC,KAAK,WAAW,UAAU,GAC5D,OAAO;CAGT,IAAI;EACF,IAAI,IAAI,IAAI;EACZ,OAAO;CACT,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAgB,qBAAqB,SAGnC;CAEA,IAAI,mBAAmB,YACrB,OAAO;EAAE,MAAM;EAAS,WAAW,KAAA;CAAU;CAI/C,IAAI,mBAAmB,aACrB,OAAO;EAAE,MAAM,IAAI,WAAW,OAAO;EAAG,WAAW,KAAA;CAAU;CAK/D,IAAI,OAAO,YAAY,UACrB,IAAI;EACF,UAAU,IAAI,IAAI,OAAO;CAC3B,QAAQ,CAER;CAIF,IAAI,mBAAmB,OAAO,QAAQ,aAAa,SAAS;EAC1D,MAAM,EAAE,WAAW,kBAAkB,kBAAkB,aAAa,QAAQ,SAAS,CAAC;EAEtF,IAAI,oBAAoB,QAAQ,iBAAiB,MAC/C,MAAM,IAAIA,cAAAA,YAAY;GACpB,IAAI;GACJ,MAAM,sCAAsC,QAAQ,SAAS;GAC7D,QAAQC,cAAAA,YAAY;GACpB,UAAUC,cAAAA,cAAc;EAC1B,CAAC;EAGH,OAAO;GAAE,MAAM;GAAe,WAAW;EAAiB;CAC5D;CAEA,OAAO;EAAE,MAAM;EAAS,WAAW,KAAA;CAAU;AAC/C"}