{"version":3,"file":"env.mjs","sources":["webpack://@agent-infra/browser/./src/env.ts"],"sourcesContent":["/*\n * Copyright (c) 2025 Bytedance, Inc. and its affiliates.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { Browser } from 'puppeteer-core';\nimport type { OSType, BrowserType, EnvInfo } from './types/env';\n\nexport async function getEnvInfo(browser: Browser): Promise<EnvInfo> {\n  let osName: OSType = 'Unknown';\n  let browserName: BrowserType = 'Unknown';\n  let browserVersion: string = 'Unknown';\n\n  try {\n    // 1.get env info from CDP\n    const client = await browser.target().createCDPSession();\n    const systemInfo = await client.send('SystemInfo.getInfo');\n    const cdpBrowserVersion = await browser.version();\n\n    await client.detach();\n\n    if (systemInfo.modelName) {\n      const modelName = systemInfo.modelName.toLowerCase();\n      if (modelName.includes('win') || modelName.includes('surface')) {\n        osName = 'Windows';\n      } else if (modelName.includes('mac') || modelName.includes('darwin')) {\n        osName = 'macOS';\n      } else if (modelName.includes('linux')) {\n        osName = 'Linux';\n      }\n    }\n\n    const versionStr = cdpBrowserVersion.toLowerCase();\n    if (versionStr.includes('chrome')) {\n      browserName = 'Chrome';\n    } else if (versionStr.includes('edge') || versionStr.includes('edg')) {\n      browserName = 'Edge';\n    } else if (versionStr.includes('firefox')) {\n      browserName = 'Firefox';\n    }\n\n    browserVersion = versionStr.split('/')[1];\n\n    if (\n      osName !== 'Unknown' &&\n      browserName !== 'Unknown' &&\n      browserVersion !== 'Unknown'\n    ) {\n      return { osName, browserName, browserVersion };\n    }\n  } catch (error) {\n    console.warn(\n      'Failed to get environment info via CDP, falling back to userAgent',\n    );\n  }\n\n  // 2.fallback: get env info from userAgent\n  const userAgent = (await browser.userAgent()).toLowerCase();\n\n  if (osName === 'Unknown') {\n    if (\n      userAgent.includes('windows') ||\n      userAgent.includes('win32') ||\n      userAgent.includes('win64')\n    ) {\n      osName = 'Windows';\n    } else if (userAgent.includes('mac os x') || userAgent.includes('macos')) {\n      osName = 'macOS';\n    } else if (userAgent.includes('linux') && !userAgent.includes('android')) {\n      osName = 'Linux';\n    }\n  }\n\n  if (browserName === 'Unknown') {\n    if (userAgent.includes('edg/') || userAgent.includes('edge/')) {\n      browserName = 'Edge';\n\n      const edgeMatch = userAgent.match(/edg?\\/([0-9.]+)/);\n      if (edgeMatch && browserVersion === 'Unknown') {\n        browserVersion = edgeMatch[1];\n      }\n    } else if (userAgent.includes('chrome/') && !userAgent.includes('edg')) {\n      browserName = 'Chrome';\n\n      const chromeMatch = userAgent.match(/chrome\\/([0-9.]+)/);\n      if (chromeMatch && browserVersion === 'Unknown') {\n        browserVersion = chromeMatch[1];\n      }\n    } else if (userAgent.includes('firefox/')) {\n      browserName = 'Firefox';\n\n      const firefoxMatch = userAgent.match(/firefox\\/([0-9.]+)/);\n      if (firefoxMatch && browserVersion === 'Unknown') {\n        browserVersion = firefoxMatch[1];\n      }\n    }\n  }\n\n  return { osName, browserName, browserVersion };\n}\n"],"names":["getEnvInfo","browser","osName","browserName","browserVersion","client","systemInfo","cdpBrowserVersion","modelName","versionStr","error","console","userAgent","edgeMatch","chromeMatch","firefoxMatch"],"mappings":";;;;AAOO,eAAeA,WAAWC,OAAgB;IAC/C,IAAIC,SAAiB;IACrB,IAAIC,cAA2B;IAC/B,IAAIC,iBAAyB;IAE7B,IAAI;QAEF,MAAMC,SAAS,MAAMJ,QAAQ,MAAM,GAAG,gBAAgB;QACtD,MAAMK,aAAa,MAAMD,OAAO,IAAI,CAAC;QACrC,MAAME,oBAAoB,MAAMN,QAAQ,OAAO;QAE/C,MAAMI,OAAO,MAAM;QAEnB,IAAIC,WAAW,SAAS,EAAE;YACxB,MAAME,YAAYF,WAAW,SAAS,CAAC,WAAW;YAClD,IAAIE,UAAU,QAAQ,CAAC,UAAUA,UAAU,QAAQ,CAAC,YAClDN,SAAS;iBACJ,IAAIM,UAAU,QAAQ,CAAC,UAAUA,UAAU,QAAQ,CAAC,WACzDN,SAAS;iBACJ,IAAIM,UAAU,QAAQ,CAAC,UAC5BN,SAAS;QAEb;QAEA,MAAMO,aAAaF,kBAAkB,WAAW;QAChD,IAAIE,WAAW,QAAQ,CAAC,WACtBN,cAAc;aACT,IAAIM,WAAW,QAAQ,CAAC,WAAWA,WAAW,QAAQ,CAAC,QAC5DN,cAAc;aACT,IAAIM,WAAW,QAAQ,CAAC,YAC7BN,cAAc;QAGhBC,iBAAiBK,WAAW,KAAK,CAAC,IAAI,CAAC,EAAE;QAEzC,IACEP,AAAW,cAAXA,UACAC,AAAgB,cAAhBA,eACAC,AAAmB,cAAnBA,gBAEA,OAAO;YAAEF;YAAQC;YAAaC;QAAe;IAEjD,EAAE,OAAOM,OAAO;QACdC,QAAQ,IAAI,CACV;IAEJ;IAGA,MAAMC,YAAa,OAAMX,QAAQ,SAAS,EAAC,EAAG,WAAW;IAEzD,IAAIC,AAAW,cAAXA,QACF;QAAA,IACEU,UAAU,QAAQ,CAAC,cACnBA,UAAU,QAAQ,CAAC,YACnBA,UAAU,QAAQ,CAAC,UAEnBV,SAAS;aACJ,IAAIU,UAAU,QAAQ,CAAC,eAAeA,UAAU,QAAQ,CAAC,UAC9DV,SAAS;aACJ,IAAIU,UAAU,QAAQ,CAAC,YAAY,CAACA,UAAU,QAAQ,CAAC,YAC5DV,SAAS;IACX;IAGF,IAAIC,AAAgB,cAAhBA,aACF;QAAA,IAAIS,UAAU,QAAQ,CAAC,WAAWA,UAAU,QAAQ,CAAC,UAAU;YAC7DT,cAAc;YAEd,MAAMU,YAAYD,UAAU,KAAK,CAAC;YAClC,IAAIC,aAAaT,AAAmB,cAAnBA,gBACfA,iBAAiBS,SAAS,CAAC,EAAE;QAEjC,OAAO,IAAID,UAAU,QAAQ,CAAC,cAAc,CAACA,UAAU,QAAQ,CAAC,QAAQ;YACtET,cAAc;YAEd,MAAMW,cAAcF,UAAU,KAAK,CAAC;YACpC,IAAIE,eAAeV,AAAmB,cAAnBA,gBACjBA,iBAAiBU,WAAW,CAAC,EAAE;QAEnC,OAAO,IAAIF,UAAU,QAAQ,CAAC,aAAa;YACzCT,cAAc;YAEd,MAAMY,eAAeH,UAAU,KAAK,CAAC;YACrC,IAAIG,gBAAgBX,AAAmB,cAAnBA,gBAClBA,iBAAiBW,YAAY,CAAC,EAAE;QAEpC;IAAA;IAGF,OAAO;QAAEb;QAAQC;QAAaC;IAAe;AAC/C"}