@jshookmcp/jshook 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -661
- package/README.md +11 -3
- package/README.zh.md +11 -3
- package/dist/{AntiCheatDetector-CGVGNfy5.mjs → AntiCheatDetector-CUpZBh5O.mjs} +1 -1
- package/dist/BrowserSessionCoordinator-QIt3tetp.mjs +1 -0
- package/dist/CodeInjector-Btj9upnf.mjs +1 -0
- package/dist/ConsoleMonitor-DIjN5Afa.mjs +306 -0
- package/dist/{DarwinAPI-DC4HGGLl.mjs → DarwinAPI-BuMPGzHm.mjs} +1 -1
- package/dist/DetailedDataManager-Z77fDl9Z.mjs +5 -0
- package/dist/ExtensionManager.tools-CIGOWViz.mjs +1 -0
- package/dist/{FingerprintManager-N7BZqjxP.mjs → FingerprintManager-BkDSsjjP.mjs} +1 -1
- package/dist/{HardwareBreakpoint-OcJqNFVc.mjs → HardwareBreakpoint-DMAMcPyB.mjs} +1 -1
- package/dist/{HeapAnalyzer-CqAxZzeS.mjs → HeapAnalyzer-Yj348FYt.mjs} +1 -1
- package/dist/MCPServer.activation.ttl-CEGNBycZ.mjs +1 -0
- package/dist/MCPServer.search.helpers-Cs1JpKbu.mjs +1 -0
- package/dist/MCPServer.search.validation-DnifPCCv.mjs +1 -0
- package/dist/MemoryController-DjtgiING.mjs +2 -0
- package/dist/{MemoryScanSession-CaxAjZJf.mjs → MemoryScanSession-zfoVZJB0.mjs} +1 -1
- package/dist/MemoryScanner-Dxd657li.mjs +1 -0
- package/dist/{NativeMemoryManager.utils-DM4NC3FE.mjs → NativeMemoryManager.utils-Bu8srMEF.mjs} +1 -1
- package/dist/{PEAnalyzer-DJyaJTQJ.mjs → PEAnalyzer-CMu9Ua9T.mjs} +1 -1
- package/dist/PointerChainEngine-CaSC1Mry.mjs +1 -0
- package/dist/ProcessRegistry-D5y1yuP2.mjs +1 -0
- package/dist/{ResponseBuilder-B2lu4KEl.mjs → ResponseBuilder-nPXl_khE.mjs} +1 -1
- package/dist/{ReverseEvidenceGraph-B931HeoW.mjs → ReverseEvidenceGraph-BksOpsPs.mjs} +1 -1
- package/dist/RingBuffer-B6RTHmij.mjs +1 -0
- package/dist/ServerRuntimeState-CgqBBwfd.mjs +1 -0
- package/dist/{Speedhack-l6s8L2Qw.mjs → Speedhack-pwXTHxOY.mjs} +1 -1
- package/dist/{StructureAnalyzer-A-WamfYE.mjs → StructureAnalyzer-BseGzsSl.mjs} +2 -2
- package/dist/ToolCatalog-DgmQXdsm.mjs +1 -0
- package/dist/ToolHandlerMap-7HWoIgQO.mjs +1 -0
- package/dist/ToolProbe-DQiREmNp.mjs +1 -0
- package/dist/ToolRegistry-eMZEBiR1.mjs +1 -0
- package/dist/ToolRouter.policy-UKBlFlbh.mjs +4 -0
- package/dist/{TraceRecorder-Dd8jLXpi.mjs → TraceRecorder-B5ktv3nP.mjs} +2 -2
- package/dist/VersionDetector-CmPJmaJg.mjs +1 -0
- package/dist/{Win32API-Bhi5xFBe.mjs → Win32API-DoP3MMHS.mjs} +1 -1
- package/dist/{Win32Debug-CQteFL4F.mjs → Win32Debug-DwF8mQGm.mjs} +1 -1
- package/dist/{WorkflowEngine-CxEp2WXH.mjs → WorkflowEngine-CldHG5b4.mjs} +1 -1
- package/dist/analysis-C-ln0Brh.mjs +6 -0
- package/dist/antidebug-CsnpOR9z.mjs +1 -0
- package/dist/{artifactRetention-NBdncOEW.mjs → artifactRetention-DkYKLOvi.mjs} +1 -1
- package/dist/{artifacts-B5xQuEa_.mjs → artifacts-D-4pSS_N.mjs} +1 -1
- package/dist/betterSqlite3-Bdo_ifuJ.mjs +1 -0
- package/dist/binary-instrument-BeZ224mZ.mjs +9 -0
- package/dist/{boringssl-inspector-BST5vtKx.mjs → boringssl-inspector-ZOCkaipa.mjs} +2 -2
- package/dist/browser-BUaB25bk.mjs +11 -0
- package/dist/{handlers-pVNpaw4A.mjs → canvas-396ieNv5.mjs} +22 -22
- package/dist/collector-CB2syQEg.mjs +1 -0
- package/dist/constants-DMv3svps.mjs +2 -0
- package/dist/coordination-Dbohmj6D.mjs +1 -0
- package/dist/dart-inspector-LhEqRITQ.mjs +0 -0
- package/dist/debugger-CLzkObIO.mjs +1 -0
- package/dist/{definitions-CCP9gphV.mjs → definitions-0hxnrDU72.mjs} +1 -1
- package/dist/definitions-B3a9QC2t.mjs +1 -0
- package/dist/{definitions-DtE0XLrT.mjs → definitions-BOvju5t2.mjs} +1 -1
- package/dist/definitions-CXj_cEVt.mjs +1 -0
- package/dist/definitions-Co6AvTjH.mjs +1 -0
- package/dist/{definitions-Dds_zrWx.mjs → definitions-Cv5r8xwq.mjs} +1 -1
- package/dist/definitions-DBYSxChX.mjs +1 -0
- package/dist/{definitions-DI9YXsJk.mjs → definitions-D_dTDX9B.mjs} +1 -1
- package/dist/{definitions-Dgrg7f3D.mjs → definitions-Db9t2ddh.mjs} +1 -1
- package/dist/{definitions-DZ8uKusP.mjs → definitions-DbN2CjI2.mjs} +1 -1
- package/dist/{definitions-jXPaVy4P.mjs → definitions-DlmmHmZc.mjs} +1 -1
- package/dist/definitions-DnYpoGig.mjs +1 -0
- package/dist/{definitions-CYFbewnd.mjs → definitions-DtZ6Ktx2.mjs} +1 -1
- package/dist/{definitions-CuJRsJ6N.mjs → definitions-DuIPS8gq.mjs} +1 -1
- package/dist/{definitions-BbxOUiP-.mjs → definitions-DywfwPMb.mjs} +1 -1
- package/dist/definitions-EGmqr85H.mjs +1 -0
- package/dist/{definitions-LaYTuwQd.mjs → definitions-Fetw_Cge.mjs} +3 -3
- package/dist/{definitions-NoVp_9Pm.mjs → definitions-LdkeuOeA.mjs} +1 -1
- package/dist/{definitions-DJklW2sS.mjs → definitions-Ym8niHDb.mjs} +1 -1
- package/dist/{definitions-BGwNSkVm.mjs → definitions-aeRd5DAR.mjs} +1 -1
- package/dist/{definitions-CIO9O-Sw.mjs → definitions-cnG6tj17.mjs} +1 -1
- package/dist/{encoding-DGcr6Aj_.mjs → encoding-B4xZWErf.mjs} +2 -2
- package/dist/ensure-browser-core-JHwDo5ql.mjs +285 -0
- package/dist/{factory-Cx_1LorX.mjs → factory-BxNdBiZa.mjs} +1 -1
- package/dist/{graphql-HLf3MS8H.mjs → graphql-GBWsZ9xC.mjs} +4 -4
- package/dist/{handlers-DW5AbYs5.mjs → handlers-5nzR8B0a.mjs} +3 -3
- package/dist/handlers-6iNsXOVT.mjs +7 -0
- package/dist/{handlers-BZoPla6E.mjs → handlers-BZ8n6Hvf.mjs} +1 -1
- package/dist/{handlers-Dv_runVv.mjs → handlers-BbLxNbbT.mjs} +1 -1
- package/dist/{handlers-BP12ZsWc.mjs → handlers-BbS4hssc.mjs} +2 -2
- package/dist/{handlers-BggKiVx9.mjs → handlers-CIKOP4aI.mjs} +2 -2
- package/dist/handlers-CWKBBjai.mjs +1 -0
- package/dist/handlers-Cmb6SoRC.mjs +1 -0
- package/dist/handlers-CrJsKnEI.mjs +1 -0
- package/dist/{antidebug-BOTZH6-0.mjs → handlers-DB6xVVWq.mjs} +4 -4
- package/dist/{handlers-DmQzIc44.mjs → handlers-DOOCWUNR.mjs} +3 -3
- package/dist/{handlers-BLMa4X7l.mjs → handlers-Z_B5aVaU.mjs} +2 -2
- package/dist/handlers-gVscChvl.mjs +1 -0
- package/dist/handlers-xFvI9P_y.mjs +1 -0
- package/dist/handlers.impl-BsFTW6SD.mjs +1 -0
- package/dist/{hooks-DDKppogd.mjs → hooks-DPouiS7I.mjs} +9 -9
- package/dist/index.mjs +11 -15
- package/dist/macro-p8kuJVcm.mjs +2 -0
- package/dist/maintenance-DAqADb6Z.mjs +302 -0
- package/dist/manifest-4lmM6MZR.mjs +1 -0
- package/dist/{manifest-D610kxZr.mjs → manifest-AxaxRSt6.mjs} +2 -2
- package/dist/{manifest-CDeUZGUZ.mjs → manifest-BIqRE1Qz.mjs} +1 -1
- package/dist/{manifest-Dm0o3i2U.mjs → manifest-Box-jWfr.mjs} +1 -1
- package/dist/manifest-Bp33di0Q.mjs +1 -0
- package/dist/{manifest-CGq4NpqH2.mjs → manifest-BvRX4nRP.mjs} +1 -1
- package/dist/{manifest-yu2xiQqe.mjs → manifest-C6KoB1XE.mjs} +1 -1
- package/dist/manifest-C7TdXCWY.mjs +1 -0
- package/dist/manifest-CM-n64K0.mjs +1 -0
- package/dist/{manifest-DWUUWBz0.mjs → manifest-CUokxCUN.mjs} +1 -1
- package/dist/manifest-CWJS45iO.mjs +1 -0
- package/dist/{manifest-D44TaRJU.mjs → manifest-Cdxdgo-D.mjs} +1 -1
- package/dist/{manifest-DKUorv5M.mjs → manifest-Cf6SmamD.mjs} +1 -1
- package/dist/manifest-Cgxu2qdv.mjs +1 -0
- package/dist/manifest-CowGSURa2.mjs +1 -0
- package/dist/manifest-CsGIrh34.mjs +1 -0
- package/dist/manifest-CvDpVToN.mjs +1 -0
- package/dist/manifest-D8TL9RLE.mjs +1 -0
- package/dist/{manifest-C7qV1z7F.mjs → manifest-DIhtCBe6.mjs} +1 -1
- package/dist/{manifest-CeQmtQOY.mjs → manifest-DJbruNOg.mjs} +1 -1
- package/dist/manifest-DLGtZH-0.mjs +1 -0
- package/dist/manifest-DXHdPt2T.mjs +1 -0
- package/dist/{manifest-DMJlcsTR.mjs → manifest-Dg5ScOyW.mjs} +1 -1
- package/dist/{manifest-C1nZkTkO.mjs → manifest-DzGoTS0R.mjs} +1 -1
- package/dist/manifest-G2H52LKz.mjs +131 -0
- package/dist/manifest-P0Futrgb.mjs +1 -0
- package/dist/{manifest-CDiCtaQT.mjs → manifest-Qw7xgvjv.mjs} +1 -1
- package/dist/{manifest-Dgh0uDW-.mjs → manifest-W3qvVrP2.mjs} +1 -1
- package/dist/manifest-dG6MuR1U.mjs +1 -0
- package/dist/manifest-nWXtgq5Y2.mjs +1 -0
- package/dist/{manifest-BPuE6oH2.mjs → manifest-vp1upSSq.mjs} +1 -1
- package/dist/modules-DO3jXCgj.mjs +333 -0
- package/dist/{mojo-ipc-VGlv3Qyp.mjs → mojo-ipc-Be-ccWrc.mjs} +1 -1
- package/dist/native/scripts/linux/enum-windows.sh +12 -12
- package/dist/native/scripts/macos/enum-windows.applescript +22 -22
- package/dist/native-g095qhpK.mjs +961 -0
- package/dist/network-Dvxm7eEI.mjs +7 -0
- package/dist/outputPaths-D2ddHrOJ.mjs +2 -0
- package/dist/{parse-args-Cuk7-xUt.mjs → parse-args-ngRrvF9e.mjs} +1 -1
- package/dist/platform-DjWbuiF8.mjs +93 -0
- package/dist/process-Dq5I-KZW.mjs +2 -0
- package/dist/proxy-DPNgM7TE.mjs +2 -0
- package/dist/{registry-DUHIPE-v.mjs → registry-xB8Wgmyj.mjs} +1 -1
- package/dist/renderer-pid-7jbTR8f5.mjs +1 -0
- package/dist/search-defaults-CJik67or.mjs +1 -0
- package/dist/server/plugin-api.d.mts +19 -36
- package/dist/server/plugin-api.mjs +1 -1
- package/dist/sourcemap-DqEW15Ao.mjs +1 -0
- package/dist/streaming-Dbk4eStJ.mjs +1 -0
- package/dist/transform-D-peM3aO.mjs +103 -0
- package/dist/wasm-CZajRaad.mjs +174 -0
- package/dist/{webcrack-CsLLJIs9.mjs → webcrack-phEfVt5y.mjs} +3 -3
- package/dist/{workflow-CYIXtrWD.mjs → workflow-wkXb3x-U.mjs} +4 -4
- package/package.json +16 -15
- package/src/native/scripts/linux/enum-windows.sh +12 -12
- package/src/native/scripts/macos/enum-windows.applescript +22 -22
- package/dist/CodeInjector-BlgyqTOk.mjs +0 -1
- package/dist/ConsoleMonitor-Dkqc0HNi.mjs +0 -490
- package/dist/DOMInspector-BYY_EJ0C.mjs +0 -95
- package/dist/DetailedDataManager-BniBJlVv.mjs +0 -1
- package/dist/ExtensionManager-erMpqcLk.mjs +0 -1
- package/dist/MCPServer.search.handlers.domain-DVbWL1bT.mjs +0 -1
- package/dist/MemoryController-BaqstM5w.mjs +0 -2
- package/dist/MemoryScanner-BLYnMJy6.mjs +0 -1
- package/dist/NativeMemoryManager.impl-CI554XbY.mjs +0 -1
- package/dist/PageController-D9jVkH0i.mjs +0 -1
- package/dist/PointerChainEngine-5nF9eNlu.mjs +0 -1
- package/dist/PrerequisiteError-Bl3dK8XA.mjs +0 -1
- package/dist/ProcessRegistry-Hf12LlR9.mjs +0 -1
- package/dist/ScriptManager-fgqiALgj.mjs +0 -7
- package/dist/ToolCatalog-D_IKl1Hu.mjs +0 -1
- package/dist/ToolProbe-xsfALmN3.mjs +0 -1
- package/dist/ToolRegistry-B0Zs-phN.mjs +0 -1
- package/dist/ToolRouter.policy-CFHoN_Lw.mjs +0 -4
- package/dist/VersionDetector-DMoUWyNm.mjs +0 -9
- package/dist/analysis-BuR-NgX8.mjs +0 -5
- package/dist/betterSqlite3-CGaxz4AX.mjs +0 -1
- package/dist/binary-instrument-Cf9qqLlM.mjs +0 -7
- package/dist/browser-C4Le3xqA.mjs +0 -11
- package/dist/collector-CKO8RPK8.mjs +0 -1
- package/dist/constants-Cp6hBrrx.mjs +0 -1
- package/dist/coordination-BbijHEHH.mjs +0 -1
- package/dist/debugger-CRJq_krh.mjs +0 -1
- package/dist/definitions-BGobEDQa.mjs +0 -1
- package/dist/definitions-CdWEuIkI.mjs +0 -1
- package/dist/definitions-CoQFbggH.mjs +0 -1
- package/dist/definitions-OvGsfxdt.mjs +0 -1
- package/dist/ensure-browser-core-Buls24LQ.mjs +0 -1
- package/dist/flat-target-session-CO5g78k3.mjs +0 -1
- package/dist/handlers-D3iev8g1.mjs +0 -1
- package/dist/handlers-D49r1-1P.mjs +0 -1
- package/dist/handlers-DCE45Ww8.mjs +0 -2
- package/dist/handlers-De5u62Ga2.mjs +0 -1
- package/dist/handlers-DnJRGp7t.mjs +0 -302
- package/dist/handlers-S9Ws0IGy.mjs +0 -2
- package/dist/handlers.impl-CD2_kOcC.mjs +0 -1
- package/dist/maintenance-CutEO84j.mjs +0 -1
- package/dist/manifest-BFGxlDRh.mjs +0 -123
- package/dist/manifest-BXry5N09.mjs +0 -1
- package/dist/manifest-BeP_zJGb2.mjs +0 -1
- package/dist/manifest-C0g67k6U.mjs +0 -1
- package/dist/manifest-CFn0359q2.mjs +0 -1
- package/dist/manifest-CJMGt7Qy.mjs +0 -1
- package/dist/manifest-CRIJq4Hs.mjs +0 -1
- package/dist/manifest-C_hEIjSx.mjs +0 -1
- package/dist/manifest-Cq0j7GZt.mjs +0 -1
- package/dist/manifest-CtPmHAdn.mjs +0 -1
- package/dist/manifest-Cx2IVMUY.mjs +0 -1
- package/dist/manifest-D16xPXro.mjs +0 -1
- package/dist/manifest-DC-SMF6b.mjs +0 -1
- package/dist/manifest-DD3rtxvV.mjs +0 -1
- package/dist/manifest-De-6Wf2R.mjs +0 -1
- package/dist/manifest-DsVh7Y4U.mjs +0 -1
- package/dist/manifest-DtEFSRaq.mjs +0 -1
- package/dist/manifest-H-EpAyZQ.mjs +0 -1
- package/dist/manifest-ais9Afrw.mjs +0 -1
- package/dist/manifest-tmb54wmA.mjs +0 -1
- package/dist/manifest-zrbrpKCC.mjs +0 -1
- package/dist/matchesWildcardPattern-BGqLSmEs.mjs +0 -1
- package/dist/modules-p-PUNv9r.mjs +0 -332
- package/dist/network-BjZ1Y-GB.mjs +0 -7
- package/dist/outputPaths-BonGThuc.mjs +0 -2
- package/dist/platform-C446Lf97.mjs +0 -93
- package/dist/playwright-cdp-fallback-BwVR-_T3.mjs +0 -1
- package/dist/process-C9f2A5zk.mjs +0 -962
- package/dist/proxy-CvRepxgV.mjs +0 -1
- package/dist/search-defaults-D2bY-rzH.mjs +0 -1
- package/dist/shared-state-board-Cyg-xh_k.mjs +0 -1
- package/dist/sourcemap-D6Q1UuAp.mjs +0 -1
- package/dist/streaming-CTX58tbb.mjs +0 -1
- package/dist/transform-Cv9P2vVD.mjs +0 -103
- package/dist/types-DtThH00r.mjs +0 -1
- package/dist/wasm-DaJa8J0V.mjs +0 -174
- /package/dist/{CacheAdapters-CdAxBmVW.mjs → CacheAdapters-BlDrQg8f.mjs} +0 -0
- /package/dist/{EventBus-DgciURGg.mjs → EventBus-Cm-t-B65.mjs} +0 -0
- /package/dist/{EvidenceGraphBridge-BIfgB7HP.mjs → EvidenceGraphBridge-DBDc0wUA.mjs} +0 -0
- /package/dist/{HookGeneratorBuilders.core.generators.storage-Bf1fbrNK.mjs → HookGeneratorBuilders.core.generators.storage-CWaWpOHa.mjs} +0 -0
- /package/dist/{InstrumentationSession-DxXs0sCp.mjs → InstrumentationSession-c5qZyp7d.mjs} +0 -0
- /package/dist/{StealthVerifier-Dhbj4B4P.mjs → StealthVerifier-DMBrtkhN.mjs} +0 -0
- /package/dist/{ToolError-DWU_z7gp.mjs → ToolError-g3rjWzhx.mjs} +0 -0
- /package/dist/{authorization-schema-B40obG1A.mjs → authorization-schema-Jtikc5Yt.mjs} +0 -0
- /package/dist/{bind-helpers-BlAOQrFQ.mjs → bind-helpers-D0mGAOof.mjs} +0 -0
- /package/dist/{capabilities-DbYCv-HF.mjs → capabilities-L1ax5EHS.mjs} +0 -0
- /package/dist/{chunk-C_pMuVsO.mjs → chunk-88NL7fhV.mjs} +0 -0
- /package/dist/{concurrency-CcK46d0h.mjs → concurrency-Dehnw4JC.mjs} +0 -0
- /package/dist/{evidence-graph-bridge-B0yhGPcs.mjs → evidence-graph-bridge-eT9icP6a.mjs} +0 -0
- /package/dist/{formatAddress-C7j2fDlM.mjs → formatAddress-DAcw4Ckg.mjs} +0 -0
- /package/dist/{logger-sBC6IdRT.mjs → logger-CCikqqvj.mjs} +0 -0
- /package/dist/{response-C7rKQst4.mjs → response-B1RuVVfD.mjs} +0 -0
- /package/dist/{ssrf-policy-T96MR3r6.mjs → ssrf-policy-B72vdy23.mjs} +0 -0
- /package/dist/{tool-builder-CI9914Tf.mjs → tool-builder-CpLh-UQd.mjs} +0 -0
- /package/dist/{types-CuyefmGT.mjs → types-BzPBzmVB.mjs} +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import{t as e}from"./logger-CCikqqvj.mjs";import{$ as t,J as n,Kr as r,Q as i,X as a,Y as o,Z as s,et as c,q as l,tt as u}from"./constants-DMv3svps.mjs";import{c as d,l as f,o as p,s as m,u as h}from"./outputPaths-D2ddHrOJ.mjs";import{i as g,t as _}from"./DetailedDataManager-Z77fDl9Z.mjs";import{t as v}from"./response-B1RuVVfD.mjs";import{t as y}from"./ToolError-g3rjWzhx.mjs";import{a as b,n as x,o as S}from"./modules-DO3jXCgj.mjs";import{r as ee}from"./BrowserSessionCoordinator-QIt3tetp.mjs";import{g as te,v as ne}from"./ensure-browser-core-JHwDo5ql.mjs";import{n as re,t as ie}from"./betterSqlite3-Bdo_ifuJ.mjs";import{t as ae}from"./concurrency-Dehnw4JC.mjs";import{a as C,c as w,n as T,o as E,r as D,s as O,t as k}from"./parse-args-ngRrvF9e.mjs";import{n as A,t as j}from"./ResponseBuilder-nPXl_khE.mjs";import{n as oe}from"./capabilities-L1ax5EHS.mjs";import"./definitions-DBYSxChX.mjs";import{join as se}from"path";import{readFileSync as ce}from"node:fs";import{isAbsolute as le,relative as ue,sep as de}from"node:path";import{randomUUID as fe}from"node:crypto";import{readFile as pe,writeFile as me}from"fs/promises";const M=se(h,`.env`),he=new Set([`stable`,`beta`,`dev`,`canary`]);var ge=class{deps;constructor(e){this.deps=e}pickPreferredAttachPage(e,t){if(e.length===0)return{selectedIndex:0,selected:null};if(t!==null&&t>=0&&t<e.length)return{selectedIndex:t,selected:e[t]??null};let n=e.findIndex(e=>e.url.trim().length>0&&e.url!==`about:blank`);return n>=0?{selectedIndex:n,selected:e[n]??null}:{selectedIndex:0,selected:e[0]??null}}markMonitoringContextChanged(t){try{this.deps.consoleMonitor.markContextChanged()}catch(n){e.warn(`[${t}] Failed to mark monitoring context as stale: ${n instanceof Error?n.message:String(n)}`)}}async syncTabRegistryWithCollectorPages(t){try{let e=await this.deps.collector.listPages();this.deps.getTabRegistry().reconcilePages(e.map(()=>null),e)}catch(n){e.warn(`[${t}] Failed to sync attached tabs into TabRegistry: ${n instanceof Error?n.message:String(n)}`)}}parseHeadlessArg(e){if(typeof e==`boolean`)return e;if(typeof e==`number`)return e===1?!0:e===0?!1:void 0;if(typeof e==`string`){let t=e.trim().toLowerCase();if([`true`,`1`,`yes`,`on`].includes(t))return!0;if([`false`,`0`,`no`,`off`].includes(t))return!1}}parseChromeConnectRequest(e){let t=E(e,`channel`);if(t&&!he.has(t))throw Error(`Invalid channel "${t}". Expected one of: stable, beta, dev, canary.`);return{browserURL:E(e,`browserURL`),wsEndpoint:E(e,`wsEndpoint`),autoConnect:k(e,`autoConnect`),userDataDir:E(e,`userDataDir`),channel:t}}parseChromeLaunchRequest(e){return{headless:this.parseHeadlessArg(e.headless),args:O(e,`args`),enableV8NativesSyntax:k(e,`enableV8NativesSyntax`)}}hasChromeConnectRequest(e){return!!(e.browserURL||e.wsEndpoint||e.autoConnect||e.userDataDir||e.channel)}describeChromeConnectRequest(e){return e.wsEndpoint?e.wsEndpoint:e.browserURL?e.browserURL:e.userDataDir?`autoConnect:${e.userDataDir}`:`autoConnect:${e.channel??`stable`}`}isAutoConnectRequest(e){return!!(e.autoConnect||e.userDataDir||e.channel)}getAutoConnectApprovalHint(e){return this.isAutoConnectRequest(e)?`Chrome 144+ autoConnect may prompt for manual approval. Switch to Chrome and click Allow for this client if prompted.`:null}shouldAttemptLinuxHeadfulFallback(e,t){let n=e===!1||e===void 0&&process.env.PUPPETEER_HEADLESS===`false`,r=process.platform===`linux`||process.env.JSHOOK_FORCE_LINUX_FALLBACK===`true`;if(!n||!r)return!1;let i=t instanceof Error?t.message:String(t);return/Missing X server|cannot open display|Failed to launch the browser process|ozone|No protocol specified|X11|Wayland|DevToolsActivePort/i.test(i)}async persistHeadlessEnv(t){try{let e=``;try{e=await pe(M,`utf-8`)}catch(e){if(e?.code!==`ENOENT`)throw e}let n=`PUPPETEER_HEADLESS=${t}`;await me(M,/^PUPPETEER_HEADLESS=.*$/m.test(e)?e.replace(/^PUPPETEER_HEADLESS=.*$/m,n):`${e.trimEnd()}\n${n}\n`,`utf-8`)}catch(n){e.warn(`Failed to persist PUPPETEER_HEADLESS=${t} to .env: ${String(n)}`)}}async handleBrowserLaunch(t){try{if(E(t,`driver`,`chrome`)===`camoufox`){if(E(t,`mode`,`launch`)===`connect`){let e=E(t,`wsEndpoint`);return e?j.ok().merge({driver:`camoufox`,mode:`connect`,wsEndpoint:e,message:`Connected to Camoufox server. Use page_navigate to begin.`}).json():j.fail(`wsEndpoint is required for connect mode. Use camoufox_server({ action: "launch" }) first to get a wsEndpoint.`).json()}return j.ok().merge({driver:`camoufox`,mode:`launch`,message:`Camoufox (Firefox) browser launched`,note:`Use page_navigate to begin. CDP debugger is limited in Firefox; network_enable and console_monitor({ action: "enable" }) use Playwright events and are fully supported.`}).json()}if(E(t,`mode`,`launch`)===`connect`){let e=this.parseChromeConnectRequest(t);if(!this.hasChromeConnectRequest(e))return j.fail(`browserURL, wsEndpoint, autoConnect, userDataDir, or channel is required for chrome connect mode.`).json();await this.deps.collector.connect(e);let n=await this.deps.collector.getStatus();return j.ok().merge({driver:`chrome`,mode:`connect`,endpoint:this.describeChromeConnectRequest(e),autoConnect:this.isAutoConnectRequest(e),channel:e.channel??null,userDataDir:e.userDataDir??null,manualApprovalMayBeRequired:this.isAutoConnectRequest(e),approvalHint:this.getAutoConnectApprovalHint(e),message:`Connected to existing Chrome browser successfully`,status:n}).json()}let n=this.parseChromeLaunchRequest(t);try{let e=await this.deps.collector.launch(n);e.action===`relaunched`&&this.markMonitoringContextChanged(`browser_launch_relaunch`);let t=await this.deps.collector.listPages(),r=this.deps.getTabRegistry();t.length>0&&(await this.deps.collector.selectPage(0),r.setCurrentByIndex(0));let i=t[0];this.deps.onBrowserAttachStateChanged?.({endpoint:null,selectedIndex:t.length>0?0:null,selectedUrl:i?.url??null,selectedTitle:i?.title??null,selectedTargetId:null,browserPid:this.deps.collector.getChromePid(),rendererPid:null,attachedAt:new Date().toISOString()});let a=await this.deps.collector.getStatus();return j.ok().merge({driver:`chrome`,message:e.action===`relaunched`?`Browser relaunched successfully`:`Browser launched successfully`,launchAction:e.action,relaunchReason:e.reason??null,v8NativeSyntaxEnabled:e.launchOptions.v8NativeSyntaxEnabled,launchArgs:e.launchOptions.args,selectedIndex:t.length>0?0:null,currentUrl:i?.url??null,currentTitle:i?.title??null,totalPages:t.length,status:a}).json()}catch(t){if(!this.shouldAttemptLinuxHeadfulFallback(n.headless,t))throw t;let r=t instanceof Error?t.message:String(t);e.warn(`Headful launch failed on Linux, fallback to headless=true: ${r}`),process.env.PUPPETEER_HEADLESS=`true`,await this.persistHeadlessEnv(`true`);let i=await this.deps.collector.launch({...n,headless:!0}),a=await this.deps.collector.listPages(),o=this.deps.getTabRegistry();a.length>0&&(await this.deps.collector.selectPage(0),o.setCurrentByIndex(0));let s=a[0];this.deps.onBrowserAttachStateChanged?.({endpoint:null,selectedIndex:a.length>0?0:null,selectedUrl:s?.url??null,selectedTitle:s?.title??null,selectedTargetId:null,browserPid:this.deps.collector.getChromePid(),rendererPid:null,attachedAt:new Date().toISOString()});let c=await this.deps.collector.getStatus();return j.ok().merge({driver:`chrome`,message:`Browser launched with Linux fallback (headless=true)`,launchAction:i.action,relaunchReason:i.reason??null,v8NativeSyntaxEnabled:i.launchOptions.v8NativeSyntaxEnabled,launchArgs:i.launchOptions.args,selectedIndex:a.length>0?0:null,currentUrl:s?.url??null,currentTitle:s?.title??null,totalPages:a.length,status:c,fallback:{applied:!0,reason:`Headful browser is unavailable in current Linux runtime; switched to headless and updated .env`,newEnv:`PUPPETEER_HEADLESS=true`}}).json()}}catch(e){return j.fail(e).json()}}async handleBrowserClose(e){try{return await this.deps.collector.close(),j.ok().set(`message`,`Browser closed successfully`).json()}catch(e){return j.fail(e).json()}}async handleBrowserStatus(e){try{let e=await this.deps.collector.getStatus();return j.ok().merge({driver:`chrome`,...e}).json()}catch(e){return j.fail(e).json()}}async handleBrowserListTabs(e){let t=this.parseChromeConnectRequest(e);try{this.hasChromeConnectRequest(t)&&await this.deps.collector.connect(t);let e=await this.deps.collector.listPages(),n=this.deps.getTabRegistry();await this.syncTabRegistryWithCollectorPages(`browser_list_tabs`);let r=e.map(e=>{let t=n.getTabByIndex(e.index);return{...e,pageId:t?.pageId??null,aliases:t?.aliases??[]}}),i=n.getContextMeta();return j.ok().merge({count:e.length,pages:r,currentPageId:i.pageId,currentIndex:i.tabIndex,autoConnect:this.isAutoConnectRequest(t),manualApprovalMayBeRequired:this.isAutoConnectRequest(t),approvalHint:this.getAutoConnectApprovalHint(t),hint:`Use browser_select_tab(index=N) to switch to a specific tab`}).json()}catch(e){return j.fail(e).set(`hint`,`Make sure browser is attached via browser_attach first, or provide browserURL/autoConnect. Chrome 144+ autoConnect may require manual approval in the Chrome window.`).set(`approvalHint`,this.getAutoConnectApprovalHint(t)).json()}}async handleBrowserSelectTab(e){try{let t=D(e,`index`),n=E(e,`urlPattern`),r=E(e,`titlePattern`),i=this.deps.getTabRegistry();if(t!==void 0){let e=await this.deps.clearAttachedTargetContext(`browser_select_tab`);await this.deps.collector.selectPage(t);let n=await this.deps.collector.listPages();await this.syncTabRegistryWithCollectorPages(`browser_select_tab`);let r=n[t],a=i.setCurrentByIndex(t);return(a?.pageId||e.detached)&&this.markMonitoringContextChanged(`browser_select_tab`),j.ok().merge({selectedIndex:t,selectedPageId:a?.pageId??null,url:r?.url,title:r?.title,contextSwitched:!0,detachedCdpTarget:e.detached,detachedCdpTargetId:e.targetId,monitoringBindingDeferred:!!a?.pageId,networkMonitoringEnabled:!1,consoleMonitoringEnabled:!1}).json()}let a=await this.deps.collector.listPages(),o=-1;for(let e of a){if(n&&e.url.includes(n)){o=e.index;break}if(r&&e.title.includes(r)){o=e.index;break}}if(o===-1)return j.fail(`No matching tab found`).set(`availablePages`,a).json();let s=await this.deps.clearAttachedTargetContext(`browser_select_tab`);await this.deps.collector.selectPage(o),await this.syncTabRegistryWithCollectorPages(`browser_select_tab`);let c=a[o],l=i.setCurrentByIndex(o);return(l?.pageId||s.detached)&&this.markMonitoringContextChanged(`browser_select_tab`),j.ok().merge({selectedIndex:o,selectedPageId:l?.pageId??null,url:c?.url,title:c?.title,contextSwitched:!0,detachedCdpTarget:s.detached,detachedCdpTargetId:s.targetId,monitoringBindingDeferred:!!l?.pageId,networkMonitoringEnabled:!1,consoleMonitoringEnabled:!1}).json()}catch(e){return j.fail(e).json()}}async handleBrowserAttach(t){let n=null;try{if(n=this.parseChromeConnectRequest(t),!this.hasChromeConnectRequest(n))return j.fail(`browserURL, wsEndpoint, autoConnect, userDataDir, or channel is required`).json();let r=await this.deps.clearAttachedTargetContext(`browser_attach`);await this.deps.collector.connect(n);let i=t.pageIndex,a=i!=null&&!(typeof i==`string`&&i.trim()===``),o=typeof i==`number`?i:typeof i==`string`&&i.trim()!==``?Number(i):0,s=Number.isFinite(o)?o:0,c=await this.deps.collector.listPages(),l=this.pickPreferredAttachPage(c,a?s:null).selectedIndex;c.length>0&&(await this.deps.collector.selectPage(l),s!==l&&e.warn(`[browser_attach] requested pageIndex ${s} resolved to ${l}; preferred non-blank target when available`));let u=this.deps.getTabRegistry();await this.syncTabRegistryWithCollectorPages(`browser_attach`);let d=c.length>0?Math.min(l,c.length-1):0,f=c.length>0?u.setCurrentByIndex(d):null,p=c[d],m=!!f?.pageId,h=this.deps.collector.getChromePid(),g={pageControllerReady:m,v8InspectorReady:m,memoryRendererPidReady:h!==null};m&&this.markMonitoringContextChanged(`browser_attach`);let _=await this.deps.collector.getStatus(),v=this.deps.collector.getAttachedTargetInfo();return this.deps.onBrowserAttachStateChanged?.({endpoint:this.describeChromeConnectRequest(n),selectedIndex:d,selectedUrl:p?.url??null,selectedTitle:p?.title??null,selectedTargetId:v?.targetId??null,browserPid:h,attachedAt:new Date().toISOString()}),j.ok().merge({message:`Attached to existing browser successfully`,endpoint:this.describeChromeConnectRequest(n),autoConnect:this.isAutoConnectRequest(n),channel:n.channel??null,userDataDir:n.userDataDir??null,manualApprovalMayBeRequired:this.isAutoConnectRequest(n),approvalHint:this.getAutoConnectApprovalHint(n),selectedIndex:d,selectedPageId:f?.pageId??null,currentUrl:p?.url??null,currentTitle:p?.title??null,totalPages:c.length,contextSwitched:c.length>0,detachedCdpTarget:r.detached,detachedCdpTargetId:r.targetId,monitoringBindingDeferred:m,networkMonitoringEnabled:!1,consoleMonitoringEnabled:!1,takeoverReady:m,capabilities:g,note:m?`Monitoring will auto-rebind on the next console/network operation for the selected tab.`:`Connected to existing Chrome, but the selected tab does not currently expose a stable Puppeteer Page handle. Tab discovery still works; try selecting a different tab or navigate the tab and retry. V8/page-bound tools will degrade until a stable Page handle is available.`,status:_}).json()}catch(e){return this.deps.onBrowserAttachStateChanged?.({endpoint:n?this.describeChromeConnectRequest(n):null}),j.fail(e).set(`approvalHint`,this.getAutoConnectApprovalHint(n??{})).json()}}};function _e(e){let t=O(e,`addons`),n=O(e,`excludeAddons`),r=O(e,`fonts`);return{headless:k(e,`headless`,!0),os:E(e,`os`,`windows`),geoip:k(e,`geoip`,!1),humanize:k(e,`humanize`,!1),proxy:E(e,`proxy`)||void 0,blockImages:k(e,`blockImages`,!1),blockWebrtc:k(e,`blockWebrtc`,!1),blockWebgl:k(e,`blockWebgl`,!1),locale:E(e,`locale`)||void 0,addons:t.length>0?t:void 0,fonts:r.length>0?r:void 0,excludeAddons:n.length>0?n:void 0,customFontsOnly:k(e,`customFontsOnly`,!1),screen:e.screen,window:e.window,fingerprint:C(e,`fingerprint`),webglConfig:C(e,`webglConfig`),firefoxUserPrefs:C(e,`firefoxUserPrefs`),mainWorldEval:k(e,`mainWorldEval`,!0),enableCache:k(e,`enableCache`,!1)}}async function ve(){try{return await import(`camoufox-js`),null}catch(e){let t=e instanceof Error?e.message:String(e);return re(e)?`Camoufox requires the same native SQLite backend used by trace tooling. ${ie(e)}`:t.includes(`Cannot find package 'camoufox-js'`)?`camoufox-js package is not installed. Run: pnpm add camoufox-js && npx camoufox-js fetch`:`Camoufox dependencies check failed: ${t}`}}var ye=class{deps;constructor(e){this.deps=e}async handleCamoufoxServerLaunch(t){try{let n=await ve();if(n)return e.warn(`Camoufox dependencies not available: ${n}`),j.fail(n).set(`hint`,`Camoufox is optional. Use browser_launch with Chrome driver instead, or install dependencies.`).json();let r=D(t,`port`),i=E(t,`ws_path`),a=_e(t),o=this.deps.getCamoufoxManager();o||(o=new S(a),this.deps.setCamoufoxManager(o));let s=await o.launchAsServer(r,i);return j.ok().merge({wsEndpoint:s,config:{os:a.os,headless:a.headless,geoip:a.geoip,locale:a.locale,blockWebgl:a.blockWebgl},message:`Camoufox server launched. Connect with: browser_launch(driver="camoufox", mode="connect", wsEndpoint=<wsEndpoint>)`}).json()}catch(e){return j.fail(e).set(`hint`,`Try running: npx camoufox-js fetch to download browser binaries`).json()}}async handleCamoufoxServerClose(e){try{let e=this.deps.getCamoufoxManager();return e?(await e.closeBrowserServer(),j.ok().set(`message`,`Camoufox server closed.`).json()):j.fail(`No camoufox server is running.`).json()}catch(e){return j.fail(e).json()}}async handleCamoufoxServerStatus(e){try{let e=this.deps.getCamoufoxManager()?.getBrowserServerEndpoint()??null;return j.ok().merge({running:e!==null,wsEndpoint:e}).json()}catch(e){return j.fail(e).json()}}};const be=new Set(te);function N(e){return T(e,`waitUntil`,be,`networkidle`)}var xe=class{deps;constructor(e){this.deps=e}syncCurrentTabMeta(e,t){let n=this.deps.getTabRegistry?.();if(!n||!e||!t.url||t.title===void 0)return;let r=t.url,i=t.title,a=n.upsertPage(e,{url:r,title:i});n.setCurrentPageId(a)}syncRuntimeAttachMeta(e){this.deps.onBrowserAttachStateChanged&&(!e.url||e.title===void 0||this.deps.onBrowserAttachStateChanged({selectedUrl:e.url,selectedTitle:e.title,rendererPid:null}))}async getChromePageIfAvailable(){let e=this.deps.pageController.getPage;return typeof e==`function`?await Reflect.apply(e,this.deps.pageController,[]):null}async getCamoufoxTitleIfAvailable(e){let t=e.title;if(typeof t!=`function`)return;let n=await Reflect.apply(t,e,[]);return typeof n==`string`?n:void 0}getCamoufoxUrlIfAvailable(e){let t=e.url;if(typeof t!=`function`)return;let n=Reflect.apply(t,e,[]);return typeof n==`string`?n:void 0}async handlePageNavigate(e){return A(async()=>{let t=E(e,`url`,``),n=N(e),r=D(e,`timeout`),i=k(e,`enableNetworkMonitoring`);if(this.deps.getActiveDriver()===`camoufox`){let e=await this.deps.getCamoufoxPage();await e.goto(t,{waitUntil:n,timeout:r}),this.deps.consoleMonitor.setPlaywrightPage(e),i&&await this.deps.consoleMonitor.enable({enableNetwork:!0,enableExceptions:!0});let a=this.getCamoufoxUrlIfAvailable(e)??``,o=await this.getCamoufoxTitleIfAvailable(e);return this.syncCurrentTabMeta(e,{url:a,title:o}),this.syncRuntimeAttachMeta({url:a,title:o}),this.deps.eventBus?.emit(`browser:navigated`,{url:a,timestamp:new Date().toISOString()}),{driver:`camoufox`,url:a,title:o??``,network_monitoring:{enabled:this.deps.consoleMonitor.isNetworkEnabled()}}}i&&await this.deps.consoleMonitor.enable({enableNetwork:!0,enableExceptions:!0}),await this.deps.pageController.navigate(t,{waitUntil:n,timeout:r});let a=await this.getChromePageIfAvailable(),o=await this.deps.pageController.getURL(),s=await this.deps.pageController.getTitle();return this.syncCurrentTabMeta(a,{url:o,title:s}),this.syncRuntimeAttachMeta({url:o,title:s}),this.deps.eventBus?.emit(`browser:navigated`,{url:o,timestamp:new Date().toISOString()}),{url:o,title:s,network_monitoring:{enabled:this.deps.consoleMonitor.isNetworkEnabled()}}})}async handlePageReload(e){return A(async()=>{if(this.deps.getActiveDriver()===`camoufox`){let e=await this.deps.getCamoufoxPage();await e.reload();let t=this.getCamoufoxUrlIfAvailable(e),n=await this.getCamoufoxTitleIfAvailable(e);return this.syncCurrentTabMeta(e,{url:t,title:n}),this.syncRuntimeAttachMeta({url:t,title:n}),{message:`Page reloaded`,driver:`camoufox`}}await this.deps.pageController.reload();let e=await this.getChromePageIfAvailable(),t=await this.deps.pageController.getURL(),n=await this.deps.pageController.getTitle();return this.syncCurrentTabMeta(e,{url:t,title:n}),this.syncRuntimeAttachMeta({url:t,title:n}),{message:`Page reloaded`}})}async handlePageBack(e){return A(async()=>{let t=D(e,`timeout`,1e4);if(this.deps.getActiveDriver()===`camoufox`){let e=await this.deps.getCamoufoxPage();await e.goBack();let t=this.getCamoufoxUrlIfAvailable(e),n=await this.getCamoufoxTitleIfAvailable(e);return this.syncCurrentTabMeta(e,{url:t,title:n}),this.syncRuntimeAttachMeta({url:t,title:n}),{url:t,driver:`camoufox`}}await this.deps.pageController.goBack(t);let n=await this.getChromePageIfAvailable(),r=await this.deps.pageController.getURL(),i=await this.deps.pageController.getTitle();return this.syncCurrentTabMeta(n,{url:r,title:i}),this.syncRuntimeAttachMeta({url:r,title:i}),{url:r}})}async handlePageForward(e){return A(async()=>{let t=D(e,`timeout`,1e4);if(this.deps.getActiveDriver()===`camoufox`){let e=await this.deps.getCamoufoxPage();await e.goForward();let t=this.getCamoufoxUrlIfAvailable(e),n=await this.getCamoufoxTitleIfAvailable(e);return this.syncCurrentTabMeta(e,{url:t,title:n}),this.syncRuntimeAttachMeta({url:t,title:n}),{url:t,driver:`camoufox`}}await this.deps.pageController.goForward(t);let n=await this.getChromePageIfAvailable(),r=await this.deps.pageController.getURL(),i=await this.deps.pageController.getTitle();return this.syncCurrentTabMeta(n,{url:r,title:i}),this.syncRuntimeAttachMeta({url:r,title:i}),{url:r}})}},Se=class{deps;constructor(e){this.deps=e}toErrorMessage(e){return e instanceof Error?e.message:typeof e==`string`?e:``}parseNumberArg(e,t={}){let n;if(typeof e==`number`&&Number.isFinite(e))n=e;else if(typeof e==`string`){let t=e.trim();if(t.length>0){let e=Number(t);Number.isFinite(e)&&(n=e)}}if(n===void 0&&(n=t.defaultValue),n!==void 0)return t.integer&&(n=Math.trunc(n)),typeof t.min==`number`&&(n=Math.max(t.min,n)),typeof t.max==`number`&&(n=Math.min(t.max,n)),n}parseMouseButton(e){if(typeof e==`string`){let t=e.trim().toLowerCase();if(t===`left`||t===`right`||t===`middle`)return t}return`left`}async getCamoufoxInteractionContext(e){let t=await this.deps.getCamoufoxPage();return!e?.frameUrl&&!e?.frameSelector?t:await this.deps.pageController.resolveFrame(t,e)}async handlePageClick(e){try{let t=E(e,`selector`,``),n=this.parseMouseButton(e.button),r=this.parseNumberArg(e.clickCount,{defaultValue:1,min:1,max:10,integer:!0}),i=this.parseNumberArg(e.delay,{min:0,max:6e4,integer:!0}),a=this.parseNumberArg(e.timeout,{defaultValue:1e4,min:1e3,max:12e4,integer:!0}),o=E(e,`frameUrl`),s=E(e,`frameSelector`),c=o||s?{frameUrl:o||void 0,frameSelector:s||void 0}:void 0;if(!t||typeof t!=`string`||t.trim().length===0)return j.fail(`selector parameter is required`).build();if(this.deps.getActiveDriver()===`camoufox`)return await(await this.getCamoufoxInteractionContext(c)).click(t,{button:n,clickCount:r,delay:i}),j.ok().build({driver:`camoufox`,message:`Clicked: ${t}`,...c?{frame:c}:{}});try{c?await this.deps.pageController.click(t,{button:n,clickCount:r,delay:i,timeout:a},c):await this.deps.pageController.click(t,{button:n,clickCount:r,delay:i,timeout:a})}catch(e){let n=this.toErrorMessage(e);if(n.includes(`detached`)||n.includes(`timed out`)||n.includes(`Execution context was destroyed`)||n.includes(`callFunctionOn`)||n.includes(`Target closed`))return j.ok().build({message:`Clicked ${t} - navigation triggered`,navigated:!0,...c?{frame:c}:{}});throw e}return j.ok().build({message:`Clicked: ${t}`,...c?{frame:c}:{}})}catch(e){return j.fail(e).build()}}async handlePageType(e){return A(async()=>{let t=E(e,`selector`,``),n=E(e,`text`,``),r=D(e,`delay`),i=E(e,`frameUrl`),a=E(e,`frameSelector`),o=i||a?{frameUrl:i||void 0,frameSelector:a||void 0}:void 0;return this.deps.getActiveDriver()===`camoufox`?(await(await this.getCamoufoxInteractionContext(o)).fill(t,n),{driver:`camoufox`,message:`Typed into ${t}`,...o?{frame:o}:{}}):(o?await this.deps.pageController.type(t,n,{delay:r},o):await this.deps.pageController.type(t,n,{delay:r}),{message:`Typed into ${t}`,...o?{frame:o}:{}})})}async handlePageUploadFiles(e){try{let t=E(e,`selector`,``),n=O(e,`paths`).map(e=>e.trim()).filter(Boolean),r=E(e,`frameUrl`),i=E(e,`frameSelector`),a=r||i?{frameUrl:r||void 0,frameSelector:i||void 0}:void 0;if(!t||t.trim().length===0)return j.fail(`selector parameter is required`).build();if(n.length===0)return j.fail(`paths parameter must contain at least one relative file path`).build();let o=n.map(e=>m(e));if(this.deps.getActiveDriver()===`camoufox`){let e=await this.deps.getCamoufoxPage(),r=await(a?await this.deps.pageController.resolveFrame(e,a):e).$(t);return!r||typeof r.setInputFiles!=`function`?j.fail(`File input not found: ${t}`).build({driver:`camoufox`}):(await r.setInputFiles(o),j.ok().build({driver:`camoufox`,selector:t,count:o.length,paths:n,message:`Uploaded ${o.length} file(s) into ${t}`,...a?{frame:a}:{}}))}return await this.deps.pageController.uploadFile(t,o,a),j.ok().build({selector:t,count:o.length,paths:n,message:`Uploaded ${o.length} file(s) into ${t}`,...a?{frame:a}:{}})}catch(e){return j.fail(e).build()}}async handlePageSelect(e){return A(async()=>{let t=E(e,`selector`,``),n=O(e,`values`),r=E(e,`frameUrl`),i=E(e,`frameSelector`),a=r||i?{frameUrl:r||void 0,frameSelector:i||void 0}:void 0;return this.deps.getActiveDriver()===`camoufox`?(await(await this.getCamoufoxInteractionContext(a)).selectOption(t,n),{driver:`camoufox`,message:`Selected in ${t}: ${n.join(`, `)}`,...a?{frame:a}:{}}):(a?await this.deps.pageController.select(t,n,a):await this.deps.pageController.select(t,n),{message:`Selected in ${t}: ${n.join(`, `)}`,...a?{frame:a}:{}})})}async handlePageHover(e){return A(async()=>{let t=E(e,`selector`,``),n=E(e,`frameUrl`),r=E(e,`frameSelector`),i=n||r?{frameUrl:n||void 0,frameSelector:r||void 0}:void 0;return this.deps.getActiveDriver()===`camoufox`?(await(await this.getCamoufoxInteractionContext(i)).hover(t),{driver:`camoufox`,message:`Hovered: ${t}`,...i?{frame:i}:{}}):(i?await this.deps.pageController.hover(t,i):await this.deps.pageController.hover(t),{message:`Hovered: ${t}`,...i?{frame:i}:{}})})}async handlePageScroll(e){return A(async()=>{let t=D(e,`x`,0),n=D(e,`y`,0);return this.deps.getActiveDriver()===`camoufox`?(await(await this.deps.getCamoufoxPage()).evaluate(e=>{window.scrollTo(e.x||0,e.y||0)},{x:t,y:n}),{driver:`camoufox`,message:`Scrolled to: x=${t||0}, y=${n||0}`}):(await this.deps.pageController.scroll({x:t,y:n}),{message:`Scrolled to: x=${t||0}, y=${n||0}`})})}async handlePagePressKey(e){return A(async()=>{let t=E(e,`key`,``);return this.deps.getActiveDriver()===`camoufox`?(await(await this.deps.getCamoufoxPage()).keyboard.press(t),{driver:`camoufox`,key:t}):(await this.deps.pageController.pressKey(t),{key:t})})}};function P(e,t){if(Array.isArray(e))return e.map(e=>P(e,t));if(typeof e==`object`&&e){let n=e,r={};for(let[e,i]of Object.entries(n))t.has(e)||(r[e]=P(i,t));return r}return e}function F(e){if(typeof e==`string`)return/^data:[a-z+-]+\/[a-z+-]+;base64,/i.test(e)?`[base64 ~${Math.round(e.length/1024)}KB stripped]`:e.length>500&&/^[A-Za-z0-9+/=\r\n]+$/.test(e.replace(/\s/g,``))?`[base64 ~${e.length}chars stripped]`:e;if(Array.isArray(e))return e.map(e=>F(e));if(typeof e==`object`&&e){let t=e,n={};for(let[e,r]of Object.entries(t))n[e]=F(r);return n}return e}function I(e,t,n){let r=n.autoSummarize?t.smartHandle(e,n.maxSize):e;return n.fieldFilter&&n.fieldFilter.length>0&&(r=P(r,new Set(n.fieldFilter))),n.stripBase64&&(r=F(r)),r}var Ce=class{deps;constructor(e){this.deps=e}resolveEvaluationSource(e){let t=E(e,`script`,``)||E(e,`code`,``)||E(e,`expression`,``);return t.trim()?t:null}async getCamoufoxEvaluationContext(e){let t=await this.deps.getCamoufoxPage();return!e?.frameUrl&&!e?.frameSelector?t:await this.deps.pageController.resolveFrame(t,e)}async handlePageEvaluate(e){try{let t=this.resolveEvaluationSource(e),n=k(e,`autoSummarize`,!0),r=D(e,`maxSize`,51200),i=O(e,`fieldFilter`),a=k(e,`stripBase64`,!1),o=E(e,`frameUrl`),s=E(e,`frameSelector`);if(!t)return j.fail(`code, script, or expression is required`).build();let c=o||s?{frameUrl:o||void 0,frameSelector:s||void 0}:void 0;if(this.deps.getActiveDriver()===`camoufox`){let e=await this.getCamoufoxEvaluationContext(c),o=Function(`return (${t})`),s=I(await e.evaluate(o),this.deps.detailedDataManager,{autoSummarize:n,maxSize:r,fieldFilter:i??void 0,stripBase64:a});return j.ok().build({driver:`camoufox`,...c?{frame:c}:{},result:s})}let l=I(c?await this.deps.pageController.evaluate(t,c):await this.deps.pageController.evaluate(t),this.deps.detailedDataManager,{autoSummarize:n,maxSize:r,fieldFilter:i??void 0,stripBase64:a});return j.ok().build({...c?{frame:c}:{},result:l})}catch(e){return j.fail(e).build()}}async handlePageScreenshot(e){try{let t=E(e,`path`),n=E(e,`type`,`png`),r=D(e,`quality`),i=k(e,`fullPage`,!1),a=C(e,`clip`),o=e.selector,s=[];if(Array.isArray(o))for(let e of o){let t=typeof e==`string`?e.trim():``;t.length>0&&t.toLowerCase()!==`all`&&s.push(t)}else if(typeof o==`string`){let e=o.trim();e.length>0&&e.toLowerCase()!==`all`&&s.push(e)}if(s.length>1)return this.screenshotBatch(s,t,n,r);let c=s[0]??``,{absolutePath:l,displayPath:u,pathRewritten:f}=await d({requestedPath:t,type:n,fallbackName:c?`element`:a?`region`:`page`,fallbackDir:`screenshots/manual`});if(this.deps.getActiveDriver()===`camoufox`){let e=await this.deps.getCamoufoxPage(),t;if(c){let i=await e.$(c);if(!i)return j.fail(`Element not found: ${c}`).build();t=await i.screenshot({path:l,type:n,quality:r})}else t=await e.screenshot({path:l,type:n,quality:r,fullPage:a?!1:i});return j.ok().build({driver:`camoufox`,selector:c||void 0,clip:a||void 0,message:`Screenshot taken: ${u}`,path:u,pathRewritten:f,size:t?.length??0})}let p;if(c){let e=await(await this.deps.pageController.getPage()).$(c);if(!e)return j.fail(`Element not found: ${c}`).build();p=await e.screenshot({path:l,type:n,quality:r})}else p=await this.deps.pageController.screenshot({path:l,type:n,quality:r,fullPage:a?!1:i,clip:a});return j.ok().build({selector:c||void 0,clip:a||void 0,message:`Screenshot taken: ${u}`,path:u,pathRewritten:f,size:p.length})}catch(e){return j.fail(e).build()}}async screenshotBatch(e,t,n,r){let i=this.deps.getActiveDriver()===`camoufox`,a=[];for(let o of e){let{absolutePath:e,displayPath:s}=await d({requestedPath:t?t.replace(/(\.\w+)$/,`-${o.replace(/[^a-zA-Z0-9]/g,`_`)}$1`):void 0,type:n,fallbackName:`element-${o.replace(/[^a-zA-Z0-9]/g,`_`)}`,fallbackDir:`screenshots/manual`});try{let t=0;if(i){let i=await(await this.deps.getCamoufoxPage()).$(o);if(!i){a.push({selector:o,success:!1,error:`Element not found: ${o}`});continue}t=(await i.screenshot({path:e,type:n,quality:r}))?.length??0}else{let i=await(await this.deps.pageController.getPage()).$(o);if(!i){a.push({selector:o,success:!1,error:`Element not found: ${o}`});continue}t=(await i.screenshot({path:e,type:n,quality:r})).length}a.push({selector:o,success:!0,path:s,size:t})}catch(e){a.push({selector:o,success:!1,error:String(e)})}}return j.ok().build({mode:`batch`,total:e.length,succeeded:a.filter(e=>e.success).length,results:a})}async handlePageInjectScript(e){try{let t=E(e,`script`,``);return await this.deps.pageController.injectScript(t),j.ok().build({message:`Script injected`})}catch(e){return j.fail(e).build()}}async handlePageWaitForSelector(e){try{let t=E(e,`selector`,``),n=D(e,`timeout`);if(this.deps.getActiveDriver()===`camoufox`){let e=await this.deps.getCamoufoxPage();try{await e.waitForSelector(t,{timeout:n||3e4});let r=await e.evaluate(e=>{let t=document.querySelector(e);return t?{tagName:t.tagName.toLowerCase(),id:t.id||void 0,className:t.className||void 0,textContent:t.textContent?.trim().substring(0,100)||void 0,attributes:Array.from(t.attributes).reduce((e,t)=>(e[t.name]=t.value,e),{})}:null},t);return j.ok().build({driver:`camoufox`,element:r,message:`Selector appeared: ${t}`})}catch{return j.fail(`Timeout waiting for selector: ${t}`).build({driver:`camoufox`})}}let r=await this.deps.pageController.waitForSelector(t,n);return j.ok().merge(r).build()}catch(e){return j.fail(e).build()}}},we=class{deps;constructor(e){this.deps=e}safeOrigin(e){try{return new URL(e).origin}catch{return null}}async listCamoufoxFrames(){let e=this.deps.getCamoufoxPage;if(!e)throw Error(`Camoufox page is not available`);let t=await e(),n=t.frames(),r=t.mainFrame(),i=this.safeOrigin(r.url());return n.map((e,t)=>{let a=e.parentFrame(),o=this.safeOrigin(e.url()),s=a?n.findIndex(e=>e===a):-1;return{frameId:`frame-${t}`,url:e.url(),name:e.name()||``,parentFrameId:s>=0?`frame-${s}`:null,parentUrl:a?.url()||null,isMainFrame:e===r,crossOrigin:!!(e!==r&&o&&i&&o!==i)}})}async handlePageListFrames(e){return A(async()=>{let e=this.deps.getActiveDriver()===`camoufox`?await this.listCamoufoxFrames():await this.deps.pageController.listFrames();return{count:e.length,frames:e}})}async handleGetContent(e){return A(async()=>({html:await this.deps.pageController.getContent()}))}async handleGetTitle(e){return A(async()=>({title:await this.deps.pageController.getTitle()}))}async handleGetUrl(e){return A(async()=>({url:await this.deps.pageController.getURL()}))}async handleGetText(e){return A(async()=>{let t=E(e,`selector`,``);return{selector:t,text:await this.deps.pageController.evaluate(`document.querySelector(${JSON.stringify(t)})?.textContent || ""`)}})}async handleGetOuterHtml(e){return A(async()=>{let t=E(e,`selector`,``);return{selector:t,html:await this.deps.pageController.evaluate(`document.querySelector(${JSON.stringify(t)})?.outerHTML || ""`)}})}async handleGetScrollPosition(e){return A(async()=>await this.deps.pageController.evaluate(`({
|
|
2
|
+
scrollX: window.scrollX,
|
|
3
|
+
scrollY: window.scrollY,
|
|
4
|
+
maxScrollX: document.documentElement.scrollWidth - window.innerWidth,
|
|
5
|
+
maxScrollY: document.documentElement.scrollHeight - window.innerHeight
|
|
6
|
+
})`))}async handlePageSetCookies(e){return A(async()=>{let t=e.cookies;return await this.deps.pageController.setCookies(t),{message:`Set ${t.length} cookies`}})}async handlePageGetCookies(e){return A(async()=>{let e=await this.deps.pageController.getCookies();return{count:e.length,cookies:e}})}async getPageCookieCount(){return(await this.deps.pageController.getCookies()).length}async handlePageClearCookies(e){return A(async()=>(await this.deps.pageController.clearCookies(),{message:`Cookies cleared`}))}async handlePageSetViewport(e){return A(async()=>{let t=D(e,`width`,0),n=D(e,`height`,0);return await this.deps.pageController.setViewport(t,n),{viewport:{width:t,height:n}}})}async handlePageEmulateDevice(e){return A(async()=>{let t=E(e,`device`,``);return await this.deps.pageController.emulateDevice(t),{device:t}})}async handlePageGetLocalStorage(e){return A(async()=>{let e=await this.deps.pageController.getLocalStorage();return{count:Object.keys(e).length,storage:e}})}async handlePageSetLocalStorage(e){return A(async()=>{let t=E(e,`key`,``),n=E(e,`value`,``);return await this.deps.pageController.setLocalStorage(t,n),{key:t}})}},Te=class{deps;constructor(e){this.deps=e}async handleConsoleMonitor(e){return A(async()=>E(e,`action`)===`enable`?(await this.deps.consoleMonitor.enable(),{message:`Console monitoring enabled`}):(await this.deps.consoleMonitor.disable(),{message:`Console monitoring disabled`}))}async handleConsoleGetLogs(e){return A(async()=>{let t=E(e,`type`),n=D(e,`limit`),r=D(e,`since`),i=this.deps.consoleMonitor.getLogs({type:t,limit:n,since:r});return this.deps.detailedDataManager.smartHandle({count:i.length,logs:i},51200)})}async handleConsoleExecute(e){return A(async()=>{let t=E(e,`expression`,``),n=D(e,`maxSize`,10485760),r=k(e,`stripBase64`,!1);if(!t.trim())throw Error(`expression is required`);return{result:I(await this.deps.consoleMonitor.execute(t),this.deps.detailedDataManager,{autoSummarize:!0,maxSize:n,stripBase64:r})}})}},Ee=class{deps;constructor(e){this.deps=e}async handleGetAllScripts(e){return A(async()=>{let t=k(e,`includeSource`,!1),n=Math.min(D(e,`maxScripts`,t?200:1e3),r),i=await this.deps.scriptManager.getAllScripts(t,n);return this.deps.detailedDataManager.smartHandle({count:i.length,scripts:i})})}async handleGetScriptSource(e){return A(async()=>{let t=E(e,`scriptId`),n=E(e,`url`),r=k(e,`preview`,!0),i=D(e,`maxLines`,100),a=D(e,`startLine`),o=D(e,`endLine`),s=await this.deps.scriptManager.getScriptSource(t,n);if(!s)throw Error(`Script not found`);if(r||a!==void 0||o!==void 0){let e=s.source||``,t=e.split(`
|
|
7
|
+
`),n=t.length,r=e.length,c,l,u;return a!==void 0&&o!==void 0?(l=Math.max(1,a),u=Math.min(n,o),c=t.slice(l-1,u).join(`
|
|
8
|
+
`)):(l=1,u=Math.min(i,n),c=t.slice(0,i).join(`
|
|
9
|
+
`)),{scriptId:s.scriptId,url:s.url,preview:!0,totalLines:n,size:r,sizeKB:(r/1024).toFixed(1)+`KB`,showingLines:`${l}-${u}`,content:c,hint:r>51200?`Script is large (${(r/1024).toFixed(1)}KB). Use startLine/endLine to get specific sections, or set preview=false to get full source (will return detailId).`:`Set preview=false to get full source`}}return this.deps.detailedDataManager.smartHandle(s,51200)})}},De=class{deps;constructor(e){this.deps=e}async handleCaptchaDetect(e){return A(async()=>{let e=await this.deps.pageController.getPage(),t=await this.deps.captchaDetector.detect(e);return{captcha_detected:t.detected,captcha_info:t}})}async handleCaptchaWait(t){return A(async()=>{let n=D(t,`timeout`,this.deps.captchaTimeout),r=await this.deps.pageController.getPage();if(e.info(`Waiting for CAPTCHA to be solved...`),!await this.deps.captchaDetector.waitForCompletion(r,n))throw Error(`CAPTCHA wait timed out`);return{message:`CAPTCHA solved`}})}async handleCaptchaConfig(e){return A(async()=>(e.autoDetectCaptcha!==void 0&&this.deps.setAutoDetectCaptcha(k(e,`autoDetectCaptcha`,!1)),e.autoSwitchHeadless!==void 0&&this.deps.setAutoSwitchHeadless(k(e,`autoSwitchHeadless`,!1)),e.captchaTimeout!==void 0&&this.deps.setCaptchaTimeout(D(e,`captchaTimeout`,0)),{config:{autoDetectCaptcha:this.deps.autoDetectCaptcha,autoSwitchHeadless:this.deps.autoSwitchHeadless,captchaTimeout:this.deps.captchaTimeout}}))}};const Oe={enabled:!0,minDelayMs:20,maxDelayMs:80,burstMode:!1};var ke=class t{static instance=null;cachedProfile=null;static DEFAULT_TTL_SEC=1800;static getInstance(){return t.instance||=new t,t.instance}async exportFromPage(n,r={}){let i=await n.cookies(),a=await n.evaluate(()=>{let e=navigator,t=e.userAgentData,n={secChUa:Array.isArray(t?.brands)?t.brands.map(e=>`"${e.brand}";v="${e.version}"`).join(`, `):void 0,secChUaMobile:typeof t?.mobile==`boolean`?t.mobile?`?1`:`?0`:void 0,secChUaPlatform:t?.platform?`"${t.platform}"`:void 0};return{userAgent:e.userAgent,platform:e.platform,acceptLanguage:e.language,referer:document.referrer||void 0,clientHints:n}}),o=r.origin??this.safeOrigin(n.url()),s=r.ttlSec??t.DEFAULT_TTL_SEC,c={cookies:i.map(e=>({name:e.name,value:e.value,domain:e.domain,path:e.path,expires:e.expires,size:e.size,httpOnly:e.httpOnly,secure:e.secure,session:e.session,sameSite:e.sameSite,sourceScheme:e.sourceScheme})),userAgent:a.userAgent,acceptLanguage:a.acceptLanguage,referer:r.referer??a.referer,clientHints:a.clientHints,platform:a.platform,origin:o,collectedAt:Date.now(),ttlSec:s};return this.cachedProfile=c,e.info(`Session profile exported: cookies=${c.cookies.length}, origin=${c.origin??`unknown`}, ttlSec=${c.ttlSec}`),c}serialize(e){return JSON.stringify(e)}deserialize(e){let n=JSON.parse(e);return{cookies:Array.isArray(n.cookies)?n.cookies:[],userAgent:n.userAgent,acceptLanguage:n.acceptLanguage,referer:n.referer,clientHints:n.clientHints,platform:n.platform,origin:n.origin,collectedAt:typeof n.collectedAt==`number`?n.collectedAt:Date.now(),ttlSec:typeof n.ttlSec==`number`&&n.ttlSec>0?n.ttlSec:t.DEFAULT_TTL_SEC}}setProfile(e){this.cachedProfile=e}getProfile(){return this.cachedProfile}getValidProfile(e=Date.now()){return!this.cachedProfile||this.isExpired(this.cachedProfile,e)?null:this.cachedProfile}isExpired(e,t=Date.now()){return e.collectedAt+e.ttlSec*1e3<=t}clearProfile(){this.cachedProfile=null}static resetInstance(){t.instance=null}safeOrigin(e){if(!(!e||e===`about:blank`))try{return new URL(e).origin}catch{return}}};const Ae=[{api:`navigator.webdriver`,method:`property override (configurable:false)`},{api:`window.chrome`,method:`object injection (runtime, loadTimes, csi)`},{api:`navigator.plugins`,method:`PluginArray override (spoofed length/names)`},{api:`Permissions.query`,method:`result filter (returns granted/prompt)`},{api:`HTMLCanvasElement.toDataURL/toBlob`,method:`pixel noise injection`},{api:`WebGLRenderingContext.getParameter`,method:`vendor/renderer override`},{api:`navigator.languages`,method:`array override (locale-specific)`},{api:`navigator.getBattery`,method:`fake BatteryManager`},{api:`MediaDevices.enumerateDevices`,method:`device list filter`},{api:`Notification.permission`,method:`permission override`},{api:`performance.now / Date.now`,method:`timing offset compensation`},{api:`CDP request timing`,method:`jitter compensation proxy`}],L={...Oe};let R=null;const z=ke.getInstance();async function B(){if(R)return R;try{return R=(await import(`./FingerprintManager-BkDSsjjP.mjs`)).FingerprintManager.getInstance(),R}catch{return null}}var je=class{deps;constructor(e){this.deps=e}async handleStealthInject(t){try{if(this.deps.getActiveDriver()===`camoufox`)return j.ok().build({driver:`camoufox`,message:`Camoufox uses C++ engine-level fingerprint spoofing — JS-layer stealth scripts are not needed and have been skipped.`});let t=await this.deps.pageController.getPage(),n=await B(),r=!1;if(n?.isAvailable())try{let e=n.getActiveProfile();e||=await n.generateFingerprint(),e&&(await n.injectFingerprint(t,e),r=!0)}catch(t){e.warn(`Fingerprint injection failed, falling back to StealthScripts:`,t)}if(await x.injectAll(t),r&&n){let e=n.getActiveProfile(),t=z.getValidProfile(),r={cookies:t?.cookies??[],userAgent:e?.headers?.[`User-Agent`]??t?.userAgent,acceptLanguage:e?.headers?.[`Accept-Language`]??t?.acceptLanguage,referer:t?.referer,clientHints:t?.clientHints,platform:e?.os??t?.platform,origin:t?.origin,collectedAt:t?.collectedAt??Date.now(),ttlSec:t?.ttlSec??1800};z.setProfile(r)}return j.ok().build({message:`Stealth scripts injected successfully`,fingerprintApplied:r,patchManifest:Ae,_nextStepHint:`Stealth patches are now active. Next: navigate to your target URL with page_navigate. Do NOT call stealth_inject again — it only needs to run once per page.`})}catch(e){return j.fail(e).build()}}async handleStealthSetUserAgent(e){try{let t=E(e,`platform`,`windows`),n=await this.deps.pageController.getPage();return await x.setRealisticUserAgent(n,t),j.ok().build({platform:t,message:`User-Agent set for ${t}`,_nextStepHint:`User-Agent is now configured. Next: call stealth_inject to apply all anti-detection patches, then page_navigate to your target URL.`})}catch(e){return j.fail(e).build()}}async handleStealthConfigureJitter(e){try{return e.enabled!==void 0&&(L.enabled=!!e.enabled),typeof e.minDelayMs==`number`&&(L.minDelayMs=e.minDelayMs),typeof e.maxDelayMs==`number`&&(L.maxDelayMs=e.maxDelayMs),e.burstMode!==void 0&&(L.burstMode=!!e.burstMode),j.ok().build({jitterOptions:L,message:`CDP timing jitter ${L.enabled?`enabled`:`disabled`}: ${L.minDelayMs}-${L.maxDelayMs}ms${L.burstMode?` (burst mode)`:``}`})}catch(e){return j.fail(e).build()}}async handleStealthGenerateFingerprint(e){try{if(this.deps.getActiveDriver()===`camoufox`)try{let t=await import(`camoufox-js/fingerprints`),n=E(e,`os`,`windows`),r=await t.generateFingerprint(n);return j.ok().build({fingerprint:r,driver:`camoufox`,message:`Fingerprint generated using camoufox native engine. Apply via browser_launch(fingerprint=...) before launching.`})}catch(e){return j.fail(`Camoufox fingerprint generation failed: ${e instanceof Error?e.message:String(e)}`).build()}let t=await B();if(!t?.isAvailable())return j.fail(`fingerprint-generator/fingerprint-injector packages are not installed. Install them with: pnpm add fingerprint-generator fingerprint-injector`).merge({available:!1,capability:`fingerprint_generator`,status:`unavailable`,fix:`Install fingerprint-generator and fingerprint-injector: pnpm add fingerprint-generator fingerprint-injector`}).build();let n=await t.generateFingerprint({os:e.os,browser:e.browser??`chrome`,locale:e.locale??`en-US`});return j.ok().build({profile:n,message:`Fingerprint generated and cached. It will be auto-applied on next stealth_inject.`})}catch(e){return j.fail(e).build()}}async handleStealthVerify(e){try{let e=await this.deps.pageController.getPage(),t=await new(await(import(`./StealthVerifier-DMBrtkhN.mjs`))).StealthVerifier().verify(e);return j.ok().merge(t).build()}catch(e){return j.fail(`Stealth verification failed: ${e instanceof Error?e.message:String(e)}`).build()}}async handleCamoufoxGeolocation(e){try{let t=E(e,`locale`);if(!t)return j.fail(`locale is required (e.g. "en-US", "zh-CN")`).build();let n;try{n=await(await import(`camoufox-js/locale`)).getGeolocation(t)}catch(e){return j.fail(`Camoufox locale module unavailable: ${e instanceof Error?e.message:String(e)}. Ensure camoufox-js is installed.`).merge({available:!1,capability:`camoufox_locale`,status:`unavailable`,fix:`Install camoufox-js and fetch its browser assets: pnpm add camoufox-js && npx camoufox-js fetch`}).build()}let r=null,i=E(e,`proxy`);if(i)try{r=await(await import(`camoufox-js/ip`)).publicIP(i)}catch{}return j.ok().build({locale:t,geolocation:n,publicIp:r})}catch(e){return j.fail(e).build()}}},Me=class{deps;constructor(e){this.deps=e}async handleFrameworkStateExtract(e){let t=E(e,`framework`,`auto`),n=E(e,`selector`,``),r=D(e,`maxDepth`,5);try{let e=await this.deps.getActivePage();try{let t=await e.createCDPSession();await Promise.race([t.send(`Runtime.evaluate`,{expression:`1`,returnByValue:!0}),new Promise((e,t)=>setTimeout(()=>t(Error(`cdp_unreachable`)),3e3))])}catch{throw new ne(`CDP session unresponsive — the debugger may be blocking page evaluation. Call debugger_lifecycle({ action: 'disable' })() before framework_state_extract, or run it before debugger_lifecycle({ action: 'enable' }).`)}let i=e.evaluate(e=>{let t=window;function n(e,t=0){if(t>4)return`[deep]`;if(e==null)return e;if(typeof e==`function`)return`[Function]`;if(typeof e!=`object`)return e;if(Array.isArray(e))return e.slice(0,20).map(e=>n(e,t+1));try{let r={},i=0;for(let a of Object.keys(e)){if(i++>30){r.__truncated__=!0;break}r[a]=n(e[a],t+1)}return r}catch{return`[unserializable]`}}let r=()=>e.selector?document.querySelector(e.selector)??document.body:document.getElementById(`root`)??document.getElementById(`app`)??document.querySelector(`[data-reactroot]`)??document.body,i=()=>{let t=r(),i=Object.keys(t).find(e=>e.startsWith(`__reactFiber`)||e.startsWith(`__reactInternalInstance`)||e.startsWith(`__reactFiberContainer`));if(!i)return null;let a=[],o=new WeakSet,s=(t,r)=>{if(!(!t||r>e.maxDepth||o.has(t))){if(o.add(t),t.memoizedState){let e=[],r=t.memoizedState,i=0;for(;r&&i++<20;){let t=r.queue,i=r.memoizedState===void 0?t?.lastRenderedState:r.memoizedState;i!==void 0&&e.push(n(i)),r=r.next??null}if(e.length>0){let n=t.type,r=typeof n==`object`&&n?String(n.name??`anonymous`):typeof n==`string`?n:`anonymous`;a.push({component:r,state:e})}}s(t.child??null,r+1),s(t.sibling??null,r+1)}};return s(t[i]??null,0),a},a=()=>{let t=r(),i=Object.keys(t).find(e=>e===`__vueParentComponent`||e===`__vue_app__`||e.startsWith(`__vue`));if(!i)return null;let a=t[i];if(!a)return null;let o=[],s=new WeakSet,c=(t,r)=>{if(!t||r>e.maxDepth||s.has(t))return;s.add(t);let i=n(t.setupState??t.ctx),a=n(t.$data??t.data);if(i||a){let e=t.type;o.push({component:e?.__name??`unknown`,setupState:i,data:a})}let l=t.subTree?.children;if(Array.isArray(l))for(let e of l)e?.component&&c(e.component,r+1)};return c(a,0),o},o=()=>{let t=r(),i=Object.keys(t).find(e=>e===`__vue__`);if(!i)return null;let a=t[i];if(!a)return null;let o=[],s=new WeakSet,c=(t,r)=>{if(!t||r>e.maxDepth||s.has(t))return;s.add(t);let i=t.$options;o.push({component:i?.name??`unknown`,data:n(t.$data)});let a=t.$children;if(Array.isArray(a))for(let e of a)c(e,r+1)};return c(a,0),o},s=()=>{let e=[],t=new WeakSet,i=document.querySelectorAll(`[class]`),a=[r(),...Array.from(i)],o=!1;for(let r of a){let i=r;if(!Object.keys(i).some(e=>e===`$$`||e===`__svelte_meta`||e.startsWith(`__s`)))continue;o=!0;let a=i.$$;if(!a||t.has(a))continue;t.add(a);let s=i.__svelte_meta?.loc?.file,c=a.ctx,l={};if(Array.isArray(c)){let e=0;for(let t of c.slice(0,20))t!==void 0&&typeof t!=`function`&&(l[`$${e}`]=n(t)),e++}let u=a.fragment;if((Object.keys(l).length>0||u)&&e.push({component:s??r.tagName?.toLowerCase()??`svelte-component`,state:[l],...s?{file:s}:{}}),e.length>=50)break}return o?e:null},c=()=>{let r=[],i=t._$DX,a=t._$HY;if(!i&&!a)return document.querySelector(`[data-hk]`)?(r.push({component:`SolidRoot`,state:[{_note:`Solid detected via hydration markers; install solid-devtools for full state extraction`}]}),r):null;if(i){let t=i.roots;if(t&&typeof t==`object`){let i=t instanceof Map?Array.from(t.values()):Object.values(t),a=0;for(let t of i){if(a++>=e.maxDepth*10)break;let i=t.name??`SolidComponent`,o=t.value??t.state;r.push({component:i,state:o?[n(o)]:[]})}}}return a&&r.length===0&&r.push({component:`SolidHydration`,state:[n(a)]}),r.length>0?r:null},l=()=>{let t=r(),i=Object.keys(t);if(i.some(e=>e.startsWith(`__reactFiber`)||e.startsWith(`__reactInternalInstance`))||!i.some(e=>e===`__k`||e===`__e`||e===`_dom`))return null;let a=[],o=new WeakSet,s=(t,r)=>{if(!t||r>e.maxDepth||o.has(t))return;o.add(t);let i=t.__c;if(i){let e=i.state,r=i.props,o=i.__H,s=[];if(o){let e=o.__;if(Array.isArray(e))for(let t of e.slice(0,20)){let e=t.__??t._value;e!==void 0&&s.push(n(e))}}let c=t.type,l=typeof c==`function`?c.displayName??c.name??`PreactComponent`:typeof c==`string`?c:`PreactComponent`;(e||s.length>0)&&a.push({component:String(l),state:s.length>0?s:e?[n(e)]:[],...r?{props:n(r)}:{}})}let c=t.__k;if(Array.isArray(c))for(let e of c)e&&s(e,r+1)},c=t.__k;if(Array.isArray(c))for(let e of c)e&&s(e,0);else if(t._children){let e=t._children;if(Array.isArray(e))for(let t of e)t&&s(t,0)}return a.length>0?a:null},u=()=>{let e=t.__NEXT_DATA__;if(e)return{framework:`nextjs`,route:e.page,buildId:e.buildId,runtimeConfig:n(e.runtimeConfig),props:n(e.props)};let r=t.__NUXT__;return r?r.config!==void 0||r._errors!==void 0?{framework:`nuxt3`,state:n(r.state),config:n(r.config),payload:n(r.data)}:{framework:`nuxt2`,state:n(r.state),serverRendered:r.serverRendered}:null},d=r(),f=Object.keys(d),p=f.some(e=>e.startsWith(`__reactFiber`)||e.startsWith(`__reactInternalInstance`)||e.startsWith(`__reactFiberContainer`)),m=f.some(e=>e===`__vueParentComponent`||e===`__vue_app__`),h=f.some(e=>e===`__vue__`),g=f.some(e=>e===`$$`||e===`__svelte_meta`||e.startsWith(`__s`)),_=t._$DX!==void 0||t._$HY!==void 0||!!document.querySelector(`[data-hk]`),v=f.some(e=>e===`__k`||e===`__e`||e===`_dom`||e===`_children`),y=e.framework;y===`preact`&&p&&(y=`react`),y===`auto`&&(p?y=`react`:m?y=`vue3`:h?y=`vue2`:g?y=`svelte`:_?y=`solid`:v&&(y=`preact`));let b=null;(y===`react`||y===`auto`)&&(b=i()),!b&&(y===`vue3`||y===`auto`)&&(b=a()),!b&&(y===`vue2`||y===`auto`)&&(b=o()),!b&&(y===`svelte`||y===`auto`)&&(b=s()),!b&&(y===`solid`||y===`auto`)&&(b=c()),!b&&(y===`preact`||y===`auto`)&&(b=l());let x=u();return{detected:y,states:b??[],found:b!==null&&b.length>0,...x?{meta:x}:{}}},{framework:t,selector:n,maxDepth:r}),a=await Promise.race([i,new Promise((e,t)=>setTimeout(()=>t(Error(`page.evaluate timed out after 30000ms`)),3e4))]);return j.ok().build(a)}catch(e){return j.fail(e).build()}}},Ne=class{deps;constructor(e){this.deps=e}async handleIndexedDBDump(e){let t=E(e,`database`,``),n=E(e,`store`,``),r=D(e,`maxRecords`,100);return A(async()=>await(await this.deps.getActivePage()).evaluate(async e=>{let t=await indexedDB.databases(),n={};for(let r of t){if(!r.name||e.database&&r.name!==e.database)continue;let t=r.name,i;try{i=await new Promise((e,n)=>{let i=r.version?indexedDB.open(t,r.version):indexedDB.open(t);i.addEventListener(`success`,()=>e(i.result),{once:!0}),i.addEventListener(`error`,()=>n(i.error),{once:!0})})}catch{n[t]={__error__:[`failed to open`]};continue}let a=Array.from(i.objectStoreNames),o={};for(let t of a)if(!(e.store&&t!==e.store))try{o[t]=await new Promise((n,r)=>{try{let a=i.transaction(t,`readonly`).objectStore(t).getAll();a.addEventListener(`success`,()=>n(a.result.slice(0,e.maxRecords)),{once:!0}),a.addEventListener(`error`,()=>r(a.error),{once:!0})}catch(e){r(e)}})}catch{o[t]=[`__error reading store__`]}i.close(),n[t]=o}return n},{database:t,store:n,maxRecords:r}))}},Pe=class{deps;constructor(e){this.deps=e}async handleGetDetailedData(e){try{let t=E(e,`detailId`,``),n=E(e,`path`),r=this.deps.detailedDataManager.retrieve(t,n);return j.ok().build({detailId:t,path:n||`full`,data:r})}catch(e){return j.fail(e).set(`hint`,`DetailId may have expired (TTL: 10 minutes) or is invalid`).build()}}async handleGetOffloadedData(e){try{let t=E(e,`path`,``),n=T(e,`encoding`,new Set([`base64`,`utf8`]),`base64`);if(!t)return j.fail(`path is required`).build();let r=m(t),i=ue(g(),r);if(i===``||i===`..`||i.startsWith(`..${de}`)||le(i))return j.fail(`path must point inside the offloaded artifacts directory (artifacts/offloaded/)`).build();let a=ce(r);return j.ok().build({path:t,encoding:n,size:a.length,data:a.toString(n)})}catch(e){return j.fail(e).set(`hint`,`Offloaded file may have been cleaned up by artifact retention, or the path is invalid`).build()}}},Fe=class{deps;constructor(e){this.deps=e}async handleBrowserEvaluateCdpTarget(t){try{let e=E(t,`script`,``)||E(t,`code`,``)||E(t,`expression`,``),n=k(t,`autoSummarize`,!0),r=D(t,`maxSize`,51200),i=O(t,`fieldFilter`),a=k(t,`stripBase64`,!1),o=k(t,`returnByValue`,!0),s=k(t,`awaitPromise`,!0);if(!e.trim())return j.fail(`code, script, or expression is required`).build();let c=this.deps.pageController.getAttachedTargetInfo();if(!c)return j.fail(`No CDP target is currently attached. Call browser_attach_cdp_target(targetId="...") first.`).build();let l=I(await this.deps.pageController.evaluateAttachedTarget(e,{returnByValue:o,awaitPromise:s}),this.deps.detailedDataManager,{autoSummarize:n,maxSize:r,fieldFilter:i??void 0,stripBase64:a});return j.ok().build({target:c,result:l})}catch(t){return e.error(`Failed to evaluate in CDP target:`,t),j.fail(t instanceof Error?t.message:String(t)).build()}}},Ie=class{deps;constructor(e){this.deps=e}markMonitoringContextChanged(t){try{this.deps.consoleMonitor.markContextChanged()}catch(n){e.warn(`[${t}] Failed to mark monitoring context as stale: ${n instanceof Error?n.message:String(n)}`)}}safeOrigin(e){if(!e)return null;try{return new URL(e).origin}catch{return null}}async syncAttachedPageContext(e){if(e.type!==`page`||!e.targetId)return{contextSwitched:!1,selectedIndex:null,selectedPageId:null,currentUrl:e.url??null,currentTitle:e.title??null};let t=await this.deps.collector.selectResolvedPageByTargetId(e.targetId);if(!t)return{contextSwitched:!1,selectedIndex:null,selectedPageId:null,currentUrl:e.url??null,currentTitle:e.title??null};let n=this.deps.getTabRegistry(),r=n.upsertPage(t.page,{index:t.index,url:t.url,title:t.title});return n.setCurrentPageId(r),{contextSwitched:!0,selectedIndex:t.index,selectedPageId:r,currentUrl:t.url,currentTitle:t.title}}async clearAttachedTargetContext(t){let n=this.deps.collector.getAttachedTargetInfo();if(!n)return{detached:!1,targetId:null,type:null};let r=await this.deps.collector.detachCdpTarget();return r&&e.info(`[${t}] Detached active CDP target ${n.targetId} before switching page context`),{detached:r,targetId:n.targetId,type:n.type??null}}async handleBrowserListCdpTargets(t){try{let e=E(t,`type`),n=O(t,`types`),r=E(t,`targetId`),i=E(t,`urlPattern`),a=E(t,`titlePattern`),o=k(t,`attachedOnly`,!1),s=k(t,`discoverOOPIF`,!0),c=await this.deps.collector.listCdpTargets({type:e??void 0,types:n??void 0,targetId:r??void 0,urlPattern:i??void 0,titlePattern:a??void 0,attachedOnly:o,discoverOOPIF:s}),l=this.deps.collector.getAttachedTargetInfo(),u=this.deps.getTabRegistry().getContextMeta(),d=await this.deps.collector.listPages(),f=typeof u.tabIndex==`number`?d[u.tabIndex]:void 0,p=f?.url??null,m=this.safeOrigin(p),h=c.map(e=>{let t=e.url,n=this.safeOrigin(t),r=p!==null&&t===p,i=m!==null&&n!==null&&m===n,a=l?.targetId===e.targetId,o=[];return a&&o.push(`active_target`),r&&o.push(`matches_current_tab_url`),!r&&i&&o.push(`same_origin_as_current_tab`),e.openerId&&l?.targetId===e.openerId&&o.push(`opened_by_active_target`),e.openerId&&!o.includes(`opened_by_active_target`)&&o.push(`has_opener_target`),e.openerFrameId&&o.push(`has_opener_frame`),{...e,isActiveTarget:a,matchesCurrentTabUrl:r,sameOriginAsCurrentTab:i,relationHints:o}});return j.ok().build({count:h.length,activeTarget:l,currentTab:f?{index:f.index,url:f.url,title:f.title}:null,filters:{type:e??null,types:n??null,targetId:r??null,urlPattern:i??null,titlePattern:a??null,attachedOnly:o},targets:h})}catch(t){return e.error(`Failed to list CDP targets:`,t),j.fail(t instanceof Error?t.message:String(t)).build()}}async handleBrowserAttachCdpTarget(t){try{let e=E(t,`targetId`);if(!e)throw Error(`targetId is required`);let n=await this.deps.collector.attachCdpTarget(e),r=await this.syncAttachedPageContext(n);return this.markMonitoringContextChanged(`browser_attach_cdp_target`),j.ok().build({attached:!0,target:n,...r})}catch(t){return e.error(`Failed to attach CDP target:`,t),j.fail(t instanceof Error?t.message:String(t)).build()}}async handleBrowserDetachCdpTarget(t){try{let e=this.deps.collector.getAttachedTargetInfo(),t=await this.deps.collector.detachCdpTarget();return t&&this.markMonitoringContextChanged(`browser_detach_cdp_target`),j.ok().build({detached:t,targetId:e?.targetId??null})}catch(t){return e.error(`Failed to detach CDP target:`,t),j.fail(t instanceof Error?t.message:String(t)).build()}}};const Le=[`hidden`,`array`,`string`,`object`,`code`,`closure`,`regexp`,`number`,`native`,`synthetic`,`concatenated string`,`sliced string`,`symbol`,`bigint`];function V(e){return typeof e==`object`&&!!e}function Re(e){return V(e)&&typeof e.createCDPSession==`function`}function ze(e){return V(e)&&typeof e.chunk==`string`}var Be=class{deps;detailedDataManager;constructor(e){this.deps=e,this.detailedDataManager=_.getInstance()}async handleJSHeapSearch(t){let n=E(t,`pattern`,``)||E(t,`query`,``),r=D(t,`maxResults`,50),i=k(t,`caseSensitive`,!1);return n?ae(async()=>{let t=null,a=!1;try{let o=await this.deps.getActivePage();if(!Re(o))throw Error(`Active page does not support CDP session creation`);t=await o.createCDPSession(),a=!0,e.info(`[js_heap_search] Taking heap snapshot`,{patternLength:n.length,caseSensitive:i,maxResults:r}),await t.send(`HeapProfiler.enable`);let s=[],c=0;t.on(`HeapProfiler.addHeapSnapshotChunk`,e=>{ze(e)&&(s.push(e.chunk),c+=e.chunk.length)}),await t.send(`HeapProfiler.takeHeapSnapshot`,{reportProgress:!1,treatGlobalObjectsAsRoots:!0,captureNumericValue:!1}),await t.send(`HeapProfiler.disable`),e.info(`[js_heap_search] Snapshot size: ${(c/1024).toFixed(1)} KB`);let l=s.join(``);s.length=0;let u=await this.searchSnapshot(l,n,r,i),d={success:!0,pattern:n,caseSensitive:i,snapshotSizeKB:Math.round(c/1024),matchCount:u.length,truncated:u.length>=r,matches:u,tip:u.length>0?`Use page_evaluate to inspect the objects at the paths found. E.g., eval the objectPath as a JS expression.`:`No matches found. The value may be encrypted, compressed, or stored in a non-string form.`};return j.ok().build(this.detailedDataManager.smartHandle(d,51200))}catch(t){return e.error(`[js_heap_search] Error:`,t),j.fail(t).build()}finally{if(a&&t)try{await t.detach()}catch{}}}):j.fail(`pattern is required`).build()}async searchSnapshot(t,n,r,i){try{let e;try{e=JSON.parse(t)}catch{return[]}if(typeof e!=`object`||!e||Array.isArray(e))return[];let a=e,o=a.strings,s=a.nodes,c=typeof a.snapshot==`object`&&a.snapshot!==null?a.snapshot:null,l=c&&typeof c.meta==`object`&&c.meta!==null?c.meta:null,u=l?.node_fields,d=l?.node_types;if(!Array.isArray(u)||!Array.isArray(o)||!Array.isArray(s))return[];let f=u.length;if(f===0)return[];let p=u.indexOf(`type`),m=u.indexOf(`name`),h=u.indexOf(`id`);if(p<0||m<0)return[];let g=Array.isArray(d)&&Array.isArray(d[0])?d[0]:[],_=i?n:n.toLowerCase(),v=[],y=Math.floor(s.length/f),b=o;for(let e=0;e<y&&v.length<r;e++){e>0&&e%1e3==0&&await new Promise(e=>setImmediate(e));let t=e*f,n=s[t+p],r=s[t+m];if(typeof r!=`number`||r<0||r>=b.length)continue;let a=g[n],o=(typeof a==`string`?a:void 0)??Le[n]??`type_${n}`;if(o!==`string`&&o!==`concatenated string`&&o!==`sliced string`)continue;let c=b[r];if(typeof c!=`string`||!(i?c:c.toLowerCase()).includes(_))continue;let l=h>=0?s[t+h]:void 0,u=l===void 0?e:l;v.push({nodeId:u,nodeType:o,value:c.length>200?`${c.slice(0,200)}…`:c,objectPath:`[HeapNode #${u}]`,nameHint:c.slice(0,80)})}return v}catch(t){return e.warn(`[js_heap_search] Snapshot parse error:`,t),[]}}};const Ve=new Set([`alias_bind`,`alias_open`,`navigate`,`wait_for`,`context_set`,`context_get`,`transfer`,`list`,`clear`]);function H(e){return typeof e==`object`&&!!e}function He(e){return typeof e==`string`&&Ve.has(e)}function U(e){return H(e)&&typeof e.goto==`function`&&typeof e.waitForSelector==`function`&&typeof e.evaluate==`function`&&typeof e.url==`function`&&typeof e.title==`function`}function W(e){return!U(e)||!H(e)?!1:typeof e.context==`function`}function Ue(e){return H(e)&&typeof e.newPage==`function`&&typeof e.pages==`function`}function G(e){return typeof e==`string`&&e.length>0?e:null}function We(e){if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`&&e.trim()!==``){let t=Number(e);if(Number.isFinite(t))return t}return null}function Ge(e,t){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:t}var Ke=class{deps;constructor(e){this.deps=e}get registry(){return this.deps.getTabRegistry()}async handleTabWorkflow(t){let n=t.action;try{if(!He(n))return j.fail(`Unknown action: "${String(n)}". Valid: list, alias_bind, alias_open, navigate, wait_for, context_set, context_get, transfer, clear`).build();switch(n){case`list`:return this.listAliases();case`clear`:return this.clearState();case`alias_bind`:return await this.aliasBind(t);case`alias_open`:return await this.aliasOpen(t);case`navigate`:return await this.navigateAlias(t);case`wait_for`:return await this.waitFor(t);case`context_set`:return this.contextSet(t);case`context_get`:return this.contextGet(t);case`transfer`:return await this.transfer(t)}}catch(r){let i=r instanceof Error?r.message:String(r);return e.error(`[tab_workflow] Action failed`,{action:typeof n==`string`?n:String(n),alias:typeof t.alias==`string`?t.alias:void 0,fromAlias:typeof t.fromAlias==`string`?t.fromAlias:void 0,error:i}),j.fail(i).build()}}listAliases(){let e=this.registry.getCurrentTabInfo(this.deps.getActiveDriver()),t=this.registry.getSharedContextMap();return j.ok().build({aliases:e.aliases,staleAliases:e.staleAliases,currentPageId:e.currentPageId,currentIndex:e.currentIndex,currentUrl:e.url,context:t})}clearState(){return this.registry.clear(),j.ok().build({cleared:!0})}async aliasBind(e){let t=G(e.alias),n=We(e.index);if(!t)return j.fail(`alias is required`).build();if(n===null)return j.fail(`index is required`).build();await this.reconcilePages();let r=this.registry.bindAliasByIndex(t,n);return r?j.ok().build({bound:{alias:t,index:n,pageId:r}}):j.fail(`No active page at index ${n}. Use browser_list_tabs to check available pages.`).build()}async aliasOpen(e){let t=G(e.alias),n=G(e.url);if(!t)return j.fail(`alias is required`).build();if(!n)return j.fail(`url is required`).build();if(this.deps.getActiveDriver()===`camoufox`){let e=await this.deps.getCamoufoxPage();if(!W(e))return j.fail(`Cannot open new tab: camoufox page context not accessible`).build();let r=e.context(),i=await r.newPage();await i.goto(n,{waitUntil:`domcontentloaded`});let a=r.pages().indexOf(i),o=await i.title(),s=this.registry.registerPage(i,{index:a,url:i.url(),title:o});return this.registry.bindAlias(t,s),j.ok().build({alias:t,index:a,pageId:s,url:i.url(),title:o})}let r=await this.getBrowserFromController();if(!r)return j.fail(`Cannot open new tab: browser instance not accessible via PageController`).build();let i=await r.newPage();await i.goto(n,{waitUntil:`domcontentloaded`});let a=(await r.pages()).indexOf(i),o=await i.title(),s=this.registry.registerPage(i,{index:a,url:i.url(),title:o});return this.registry.bindAlias(t,s),j.ok().build({alias:t,index:a,pageId:s,url:i.url(),title:o})}async navigateAlias(e){let t=G(e.alias),n=G(e.url);if(!t)return j.fail(`alias is required`).build();if(!n)return j.fail(`url is required`).build();let r=await this.getPageByAlias(t);return r?(await r.goto(n,{waitUntil:`domcontentloaded`}),j.ok().build({alias:t,navigated:n,currentUrl:r.url()})):j.fail(`No tab found for alias "${t}". Use alias_bind or alias_open first.`).build()}async waitFor(e){let t=G(e.alias),n=G(e.selector),r=G(e.waitForText),i=Ge(e.timeoutMs,1e4);if(!t)return j.fail(`alias is required`).build();if(!n&&!r)return j.fail(`selector or waitForText is required`).build();let a=await this.getPageByAlias(t);if(!a)return j.fail(`No tab found for alias "${t}"`).build();if(n)return await a.waitForSelector(n,{timeout:i}),j.ok().build({alias:t,waitedFor:n,found:!0});let o=r,s=Date.now();for(;Date.now()-s<i;){let e=await a.evaluate(()=>document.body.innerText);if((typeof e==`string`?e:String(e??``)).includes(o))return j.ok().build({alias:t,waitedForText:o,found:!0});await new Promise(e=>setTimeout(e,500))}return j.fail(`Timeout waiting for text "${o}" in tab "${t}"`).build()}contextSet(e){let t=G(e.key),n=e.value;return t?(this.registry.setSharedContext(t,n),j.ok().build({set:{key:t,value:n}})):j.fail(`key is required`).build()}contextGet(e){let t=G(e.key);if(!t)return j.fail(`key is required`).build();let{value:n,found:r}=this.registry.getSharedContext(t);return j.ok().build({key:t,value:n,found:r})}async transfer(e){let t=G(e.fromAlias),n=G(e.key),r=G(e.expression);if(!t)return j.fail(`fromAlias is required`).build();if(!n)return j.fail(`key is required`).build();if(!r)return j.fail(`expression is required`).build();let i=await this.getPageByAlias(t);if(!i)return j.fail(`No tab found for alias "${t}"`).build();let a=await i.evaluate(r);return this.registry.setSharedContext(n,a),j.ok().build({transferred:{fromAlias:t,key:n,value:a}})}async getPageByAlias(e){let t=this.registry.resolveAlias(e);if(!t)return null;let n=this.registry.getPageById(t);if(n&&U(n))return n;await this.reconcilePages();let r=this.registry.getPageById(t);return r&&U(r)?r:null}async reconcilePages(){if(this.deps.getActiveDriver()===`camoufox`){let e=await this.deps.getCamoufoxPage();if(W(e)){let t=e.context().pages(),n=await Promise.all(t.map(async(e,t)=>({index:t,url:e.url(),title:await e.title()})));this.registry.reconcilePages(t,n)}return}let e=await this.getBrowserFromController();if(!e)return;let t=await e.pages(),n=await Promise.all(t.map(async(e,t)=>({index:t,url:e.url(),title:await e.title()})));this.registry.reconcilePages(t,n)}async getBrowserFromController(){let e=this.deps.getPageController();if(!H(e)||typeof e.getBrowser!=`function`)return null;let t=await e.getBrowser();return Ue(t)?t:null}};const qe=new Set([`none`,`outside-only`,`dangerously`]),Je=new Set([`get`,`set`,`clear`]),K=10*1024*1024,q=600*1e3;var Ye=class{sessions=new Map;createSessionId(){return fe()}scheduleExpiry(t){let n=setTimeout(()=>{e.debug(`JSDOM session ${t} expired after ${q}ms`),this.closeSession(t)},q);return n.unref?.(),n}refreshSessionExpiry(e,t){clearTimeout(t.timer),t.timer=this.scheduleExpiry(e)}getSession(e){let t=this.sessions.get(e);if(!t)throw Error(`JSDOM session not found or expired: ${e}`);return this.refreshSessionExpiry(e,t),t}closeSession(t){let n=this.sessions.get(t);if(n){clearTimeout(n.timer);try{n.dom.window.close()}catch(t){e.debug(`JSDOM window close error: ${String(t)}`)}this.sessions.delete(t)}}closeAll(){for(let e of Array.from(this.sessions.keys()))this.closeSession(e)}async handleJsdomParse(e){try{let t=w(e,`html`);if(Buffer.byteLength(t,`utf8`)>K)return j.fail(`HTML input exceeds ${K/1024/1024}MB limit. Provide smaller HTML or use a URL.`).build();let n=E(e,`url`,`about:blank`),r=E(e,`contentType`,`text/html`),i=T(e,`runScripts`,qe,`none`),a=k(e,`includeNodeLocations`,!1),o=k(e,`pretendToBeVisual`,!1),s=E(e,`referrer`,``),c=D(e,`storageQuotaBytes`,1e6);if(this.sessions.size>=5)return j.fail(`JSDOM session limit reached (5). Close existing sessions first with browser_jsdom_serialize + drop.`).build();let l={url:n,contentType:r,includeNodeLocations:a,pretendToBeVisual:o,storageQuota:c};i!==`none`&&(l.runScripts=i),s&&(l.referrer=s);let{JSDOM:u}=await import(`jsdom`),d=new u(t,l),f=this.createSessionId(),p={dom:d,url:n,runScripts:i,includeNodeLocations:a,createdAt:Date.now(),timer:this.scheduleExpiry(f)};this.sessions.set(f,p);let m=d.window.document;return j.ok().set(`sessionId`,f).set(`title`,m.title||``).set(`url`,n).set(`contentType`,r).set(`runScripts`,i).set(`ttlMs`,q).set(`activeSessions`,this.sessions.size).set(`stats`,{elements:m.getElementsByTagName(`*`).length,scripts:m.getElementsByTagName(`script`).length,links:m.getElementsByTagName(`a`).length,images:m.getElementsByTagName(`img`).length,stylesheets:m.querySelectorAll(`link[rel="stylesheet"], style`).length}).build()}catch(e){return j.fail(e).build()}}async handleJsdomQuery(e){try{let t=w(e,`sessionId`),n=w(e,`selector`),r=D(e,`maxResults`,50),i=k(e,`includeHtml`,!1),a=k(e,`includeText`,!0),o=k(e,`includeLocation`,!1),s=O(e,`attributes`),c=this.getSession(t),l=c.dom.window.document,u=Array.from(l.querySelectorAll(n)),d=u.slice(0,r).map(e=>{let t={tag:e.tagName.toLowerCase()};if(s.length>0){let n={};for(let t of s)n[t]=e.getAttribute(t);t.attributes=n}else{let n={};for(let t of Array.from(e.attributes))n[t.name]=t.value;t.attributes=n}if(a&&(t.text=(e.textContent??``).trim()),i&&(t.html=e.outerHTML),o&&c.includeNodeLocations)try{t.location=c.dom.nodeLocation(e)??null}catch{t.location=null}return t});return j.ok().set(`sessionId`,t).set(`selector`,n).set(`matched`,u.length).set(`returned`,d.length).set(`results`,d).build()}catch(e){return j.fail(e).build()}}async handleJsdomExecute(e){try{let t=w(e,`sessionId`),n=w(e,`code`),r=D(e,`timeoutMs`,5e3),i=this.getSession(t);if(i.runScripts===`none`)return j.fail(`JSDOM session was created with runScripts="none". Re-parse with runScripts="outside-only" or "dangerously" to execute code.`).build();let a=[],o=i.dom.window,s=o.console;o.console=Qe(s,a);let c,l=null;try{c=o.eval(n)}catch(e){l=e instanceof Error?e.message:String(e)}finally{o.console=s}return l===null?j.ok().set(`sessionId`,t).set(`result`,J(c)).set(`consoleLogs`,a).set(`timeoutHintMs`,r).build():j.fail(l).set(`consoleLogs`,a).build()}catch(e){return j.fail(e).build()}}async handleJsdomSerialize(e){try{let t=w(e,`sessionId`),n=k(e,`pretty`,!1),r=E(e,`selector`,``),i=this.getSession(t),a;if(r){let e=i.dom.window.document.querySelector(r);if(!e)return j.fail(`No element matches selector: ${r}`).build();a=e.outerHTML}else a=i.dom.serialize();return n&&(a=$e(a)),j.ok().set(`sessionId`,t).set(`bytes`,Buffer.byteLength(a,`utf8`)).set(`pretty`,n).set(`html`,a).build()}catch(e){return j.fail(e).build()}}async handleJsdomCookies(e){try{let t=w(e,`sessionId`),n=T(e,`action`,Je,`get`),r=this.getSession(t),i=r.dom.cookieJar,a=E(e,`url`,r.url);if(n===`get`){let e=await i.getCookies(a);return j.ok().set(`sessionId`,t).set(`url`,a).set(`cookies`,e.map(Xe)).build()}if(n===`set`){let n=C(e,`cookie`);if(!n)return j.fail(`cookie object required for action="set"`).build();let r=typeof n.raw==`string`?n.raw:Ze(n);return await i.setCookie(r,a),j.ok().set(`sessionId`,t).set(`action`,`set`).set(`cookie`,r).build()}let o=i.store;return o&&typeof o.removeAllCookies==`function`&&await new Promise((e,t)=>o.removeAllCookies(n=>n?t(n):e())),j.ok().set(`sessionId`,t).set(`action`,`clear`).build()}catch(e){return j.fail(e).build()}}};function Xe(e){return{key:e.key??``,value:e.value??``,domain:e.domain??null,path:e.path??null,expires:e.expires instanceof Date?e.expires.toISOString():e.expires??null,httpOnly:e.httpOnly===!0,secure:e.secure===!0,sameSite:e.sameSite??null}}function Ze(e){let t=String(e.name??e.key??``),n=String(e.value??``);if(!t)throw Error(`cookie.name (or cookie.key) is required`);let r=[`${t}=${n}`];return typeof e.domain==`string`&&r.push(`Domain=${e.domain}`),typeof e.path==`string`&&r.push(`Path=${e.path}`),typeof e.expires==`string`&&r.push(`Expires=${e.expires}`),typeof e.maxAge==`number`&&r.push(`Max-Age=${e.maxAge}`),e.secure===!0&&r.push(`Secure`),e.httpOnly===!0&&r.push(`HttpOnly`),typeof e.sameSite==`string`&&r.push(`SameSite=${e.sameSite}`),r.join(`; `)}function Qe(e,t){let n=[`log`,`info`,`warn`,`error`,`debug`,`trace`],r={};for(let i of n)r[i]=(...n)=>{t.push({level:i,args:n.map(e=>J(e))});let r=e?.[i];if(typeof r==`function`)try{r.apply(e,n)}catch{}};return r}function J(e){if(e==null)return e;let t=typeof e;if(t===`string`||t===`number`||t===`boolean`)return e;if(t===`bigint`)return`${e.toString()}n`;if(t===`function`)return`[Function: ${e.name||`anonymous`}]`;if(t===`symbol`)return String(e);try{return JSON.parse(JSON.stringify(e))}catch{return String(e)}}function $e(e){return e.replace(/>(?=<)/g,`>
|
|
10
|
+
`)}function et(e){let t={getActiveDriver:e.getActiveDriver,getCamoufoxPage:e.getCamoufoxPage},n=new ee,r=e.getTabRegistry??(()=>n),i=new Ie({collector:e.collector,consoleMonitor:e.consoleMonitor,getTabRegistry:r});return{tabRegistry:n,targetControl:i,browserControl:new ge({collector:e.collector,pageController:e.pageController,consoleMonitor:e.consoleMonitor,getActiveDriver:e.getActiveDriver,getCamoufoxManager:e.getCamoufoxManager,getCamoufoxPage:e.getCamoufoxPage,getTabRegistry:r,clearAttachedTargetContext:e=>i.clearAttachedTargetContext(e),onBrowserAttachStateChanged:e.onBrowserAttachStateChanged}),camoufoxBrowser:new ye({getCamoufoxManager:e.getCamoufoxManager,setCamoufoxManager:e.setCamoufoxManager,closeCamoufox:e.closeCamoufox}),pageNavigation:new xe({pageController:e.pageController,consoleMonitor:e.consoleMonitor,getTabRegistry:r,eventBus:e.eventBus,onBrowserAttachStateChanged:e.onBrowserAttachStateChanged,...t}),pageInteraction:new Se({pageController:e.pageController,...t}),pageEvaluation:new Ce({pageController:e.pageController,detailedDataManager:e.detailedDataManager,...t}),targetEvaluation:new Fe({pageController:e.pageController,detailedDataManager:e.detailedDataManager}),pageData:new we({pageController:e.pageController,...t}),consoleHandlers:new Te({consoleMonitor:e.consoleMonitor,detailedDataManager:e.detailedDataManager}),scriptManagement:new Ee({scriptManager:e.scriptManager,detailedDataManager:e.detailedDataManager}),captchaHandlers:new De({pageController:e.pageController,captchaDetector:e.captchaDetector,autoDetectCaptcha:e.getAutoDetectCaptcha(),autoSwitchHeadless:e.getAutoSwitchHeadless(),captchaTimeout:e.getCaptchaTimeout(),setAutoDetectCaptcha:e.setAutoDetectCaptcha,setAutoSwitchHeadless:e.setAutoSwitchHeadless,setCaptchaTimeout:e.setCaptchaTimeout}),stealthInjection:new je({pageController:e.pageController,...t}),frameworkState:new Me({getActivePage:()=>e.collector.getActivePage()}),indexedDBDump:new Ne({getActivePage:()=>e.collector.getActivePage()}),jsHeapSearch:new Be({getActivePage:()=>e.collector.getActivePage(),getActiveDriver:e.getActiveDriver}),tabWorkflow:new Ke({getActiveDriver:e.getActiveDriver,getCamoufoxPage:e.getCamoufoxPage,getPageController:()=>e.pageController,getTabRegistry:r}),detailedData:new Pe({detailedDataManager:e.detailedDataManager}),jsdomHandlers:new Ye}}function tt(e,t,n,r,i){let a=1-i,o=a*a,s=o*a,c=i*i,l=c*i;return{x:s*e.x+3*o*i*t.x+3*a*c*n.x+l*r.x,y:s*e.y+3*o*i*t.y+3*a*c*n.y+l*r.y}}function nt(e,t){let n=t.x-e.x,r=t.y-e.y,i=-r,a=n,o=Math.sqrt(i*i+a*a)||1,s=(Math.random()-.5)*.4,c=(Math.random()-.5)*.4;return[{x:e.x+n*.3+i/o*Math.abs(n+r)*s,y:e.y+r*.3+a/o*Math.abs(n+r)*s},{x:e.x+n*.7+i/o*Math.abs(n+r)*c,y:e.y+r*.7+a/o*Math.abs(n+r)*c}]}function rt(e,t){switch(t){case`linear`:return e;case`ease-in`:return e*e;case`ease-out`:return 1-(1-e)*(1-e);default:return e<.5?2*e*e:1-(-2*e+2)**2/2}}function Y(e){return new Promise(t=>setTimeout(t,e))}function X(e){let t=E(e,`frameUrl`),n=E(e,`frameSelector`);if(!(!t&&!n))return{frameUrl:t||void 0,frameSelector:n||void 0}}async function Z(e,t,n){let r=await e.getActivePage();if(!r)return null;if(!n?.frameUrl&&!n?.frameSelector)return{page:r,context:r};if(!t)throw Error(`frameUrl/frameSelector requires PageController`);return{page:r,context:await t.resolveFrame(r,n)}}async function it(e,t,n){if(t===e||typeof t.frameElement!=`function`)return n;let r=await t.frameElement(),i=r&&typeof r.boundingBox==`function`?await r.boundingBox():null;return i?{x:i.x+n.x,y:i.y+n.y}:n}async function at(e,t,n){return A(async()=>{let r=X(e),i=await Z(t,n,r);if(!i)throw Error(`No active page. Use browser_launch or browser_attach first.`);let{page:a,context:o}=i,s=D(e,`toX`),c=D(e,`toY`),l=E(e,`selector`);if(l){let e=await o.evaluate(e=>{let t=document.querySelector(e);if(!t)return null;let n=t.getBoundingClientRect();return{x:n.x+n.width/2,y:n.y+n.height/2}},l);if(!e)throw Error(`Selector not found: ${l}`);let t=await it(a,o,e);s=t.x,c=t.y}if(s===void 0||c===void 0)throw Error(`Either selector or toX/toY coordinates are required`);let u=D(e,`fromX`,0),d=D(e,`fromY`,0),f=Math.max(1,Math.min(D(e,`steps`,24),500)),p=Math.max(10,Math.min(D(e,`durationMs`,600),3e4)),m=Math.max(0,Math.min(D(e,`jitterPx`,1.5),20)),h=E(e,`curve`,`ease`),g=k(e,`click`,!1),_={x:u,y:d},v={x:s,y:c},[y,b]=nt(_,v),x=p/f;for(let e=0;e<=f;e++){let t=tt(_,y,b,v,rt(e/f,h));e>0&&e<f&&(t.x+=(Math.random()-.5)*2*m,t.y+=(Math.random()-.5)*2*m),t.x=Math.max(0,t.x),t.y=Math.max(0,t.y),await a.mouse.move(t.x,t.y),await Y(x*(.8+Math.random()*.4))}return g&&await a.mouse.click(s,c),{from:{x:u,y:d},to:{x:s,y:c},steps:f,durationMs:p,clicked:g,...r?{frame:r}:{}}})}async function ot(e,t){return A(async()=>{let n=await t.getActivePage();if(!n)throw Error(`No active page.`);let r=Math.max(1,Math.min(D(e,`distance`,500),1e4)),i=E(e,`direction`,`down`),a=Math.max(10,Math.min(D(e,`durationMs`,1500),3e4)),o=Math.max(1,Math.min(D(e,`segments`,8),200)),s=typeof e.pauseMs==`number`&&Number.isFinite(e.pauseMs)?Math.max(0,Math.min(D(e,`pauseMs`,80),5e3)):Math.max(0,Math.min(Math.round(a/o),5e3)),c=Math.max(0,Math.min(D(e,`jitter`,.3),1)),l=E(e,`selector`),u=i===`up`||i===`down`,d=i===`down`||i===`right`?1:-1,f=0;for(let e=0;e<o;e++){let t=1-e/o*.4,i=r/o*t*(1+(Math.random()-.5)*c*2),a=Math.min(i,r-f);if(a<=0)break;let p=u?0:a*d,m=u?a*d:0;l?await n.evaluate((e,t,n)=>{let r=document.querySelector(e);r&&r.scrollBy({left:t,top:n,behavior:`auto`})},l,p,m):await n.evaluate((e,t)=>window.scrollBy({left:e,top:t,behavior:`auto`}),p,m),f+=a,await Y(s*(.5+Math.random()))}return{direction:i,requestedDistance:r,actualScrolled:Math.round(f),durationMs:a,pauseMs:s,segments:o}})}async function st(e,t,n){return A(async()=>{let r=X(e),i=await Z(t,n,r);if(!i)throw Error(`No active page.`);let{page:a,context:o}=i,s=E(e,`selector`,``),c=E(e,`text`,``),l=Math.max(10,Math.min(D(e,`wpm`,90),300)),u=Math.max(0,Math.min(D(e,`errorRate`,.02),.3)),d=Math.max(50,Math.min(D(e,`correctDelayMs`,200),2e3)),f=k(e,`clearFirst`,!1);if(!s||!c)throw Error(`selector and text are required`);let p=6e4/(l*5);await o.click(s),f&&await o.evaluate(e=>{let t=document.querySelector(e);t&&(t.value=``)},s);let m=0;for(let e of c){if(Math.random()<u&&e!==` `){let t=String.fromCharCode(e.charCodeAt(0)+(Math.random()>.5?1:-1));await a.keyboard.type(t,{delay:0}),await Y(d*(.5+Math.random())),await a.keyboard.press(`Backspace`),await Y(50+Math.random()*50),m++}await a.keyboard.type(e,{delay:0});let t=p*(.5+Math.random());(e===` `||`.,:;!?`.includes(e))&&(t*=1.5+Math.random()*.5),await Y(t)}return{selector:s,length:c.length,wpm:l,typosSimulated:m,errorRate:u,...r?{frame:r}:{}}})}function Q(e){return new Promise(t=>setTimeout(t,e))}function ct(e){let t=typeof e==`string`?e.toLowerCase():``;return t===`hook`?`hook`:t===`external_service`||t===`2captcha`||t===`anticaptcha`||t===`capsolver`?`external_service`:`manual`}function lt(e){let t=typeof e==`string`?e.toLowerCase():``;return t===`image`?`image`:t===`widget`||t===`recaptcha_v2`||t===`recaptcha_v3`||t===`hcaptcha`||t===`funcaptcha`||t===`turnstile`?`widget`:t===`browser_check`||t===`managed_widget`?`browser_check`:`image`}function ut(e){let t=typeof e==`string`?e.toLowerCase():``;if(t===`image`||t===`recaptcha_v2`||t===`recaptcha_v3`||t===`hcaptcha`||t===`funcaptcha`||t===`turnstile`)return t}function dt(e,t){return ut(e)||(t===`image`?`image`:`recaptcha_v2`)}function ft(e){return e!==`image`}function pt(e){if(!(typeof e!=`string`||!e.trim()))return e.trim().toLowerCase()}function mt(e){let t=pt(e.provider),n=(process.env.CAPTCHA_PROVIDER||``).trim().toLowerCase();return t||n||`2captcha`}function ht(e){return e===`2captcha`?process.env.CAPTCHA_SOLVER_BASE_URL?.trim()||process.env.CAPTCHA_2CAPTCHA_BASE_URL?.trim()||c:e===`anticaptcha`?process.env.CAPTCHA_ANTICAPTCHA_BASE_URL?.trim()||``:e===`capsolver`&&process.env.CAPTCHA_CAPSOLVER_BASE_URL?.trim()||``}function gt(e,t){return e===`anticaptcha`?t===`recaptcha_v2`?`RecaptchaV2TaskProxyless`:t===`hcaptcha`?`HCaptchaTaskProxyless`:t===`turnstile`?`TurnstileTaskProxyless`:`ImageToTextTask`:e===`capsolver`?t===`recaptcha_v2`?`ReCaptchaV2TaskProxyLess`:t===`hcaptcha`?`HCaptchaTaskProxyLess`:t===`turnstile`?`AntiTurnstileTaskProxyLess`:`ImageToTextTask`:``}async function _t(e,n,r,a){let o=Date.now(),s=ht(e);if(!s)throw Error(`${e} base URL is not configured.`);let c=gt(e,r.taskKind),l=r.taskKind===`image`?{type:c,body:r.imageBase64}:{type:c,websiteURL:r.pageUrl,websiteKey:r.siteKey},d=await(await fetch(`${s}/createTask`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({clientKey:n,task:l}),signal:AbortSignal.timeout(u)})).json();if(d.errorId&&d.errorId!==0)throw Error(`${e} createTask failed: ${String(d.errorCode??d.errorDescription??JSON.stringify(d))}`);let f=d.taskId;if(typeof f!=`number`&&typeof f!=`string`)throw Error(`${e} createTask did not return a taskId.`);for(;;){let c=a-(Date.now()-o);if(c<=0||(await Q(Math.min(i,c)),Date.now()-o>=a))break;let l=await(await fetch(`${s}/getTaskResult`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({clientKey:n,taskId:f}),signal:AbortSignal.timeout(t)})).json();if(l.errorId&&l.errorId!==0)throw Error(`${e} getTaskResult failed: ${String(l.errorCode??l.errorDescription??JSON.stringify(l))}`);if(l.status===`processing`||l.status===`idle`)continue;if(l.status!==`ready`)throw Error(`${e} returned unexpected status: ${String(l.status)}`);let u=typeof l.solution==`object`&&l.solution!==null?l.solution:null,d=typeof u?.gRecaptchaResponse==`string`?u.gRecaptchaResponse:typeof u?.token==`string`?u.token:typeof u?.text==`string`?u.text:``;if(!d)throw Error(`${e} returned ready without a usable solution token.`);return{token:d,challengeType:r.taskKind===`image`?`image`:`widget`,mode:`external_service`,durationMs:Date.now()-o}}throw Error(`${e} solve timeout after ${a}ms`)}async function vt(e){if(typeof e.screenshot==`function`)return(await e.screenshot({type:`png`})).toString(`base64`);throw Error(`Could not capture image CAPTCHA payload from the current page.`)}function yt(e){if(typeof e!=`string`)return;let t=e.trim();if(t){if(t.startsWith(`data:`)){let e=t.indexOf(`,`);return e>=0?t.slice(e+1):void 0}return t}}function bt(e){return{enabled:k(e,`injectToken`,!0),responseSelector:E(e,`responseSelector`,``).trim()||void 0,callbackName:E(e,`callbackName`,``).trim()||void 0}}async function xt(e,t,n){await e.evaluate((e,t)=>{let{responseSelector:n,callbackName:r}=t;if(n){let t=document.querySelector(n);t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement||t instanceof HTMLSelectElement?(t.value=e,t.dispatchEvent(new Event(`input`,{bubbles:!0})),t.dispatchEvent(new Event(`change`,{bubbles:!0}))):t instanceof HTMLElement&&(t.setAttribute(`data-captcha-token`,e),t.dispatchEvent(new CustomEvent(`captcha-token`,{detail:e})))}if(r){let t=window[r];typeof t==`function`&&t(e)}},t,n)}async function St(e,n,r){let a=Date.now(),o=ht(`2captcha`);if(!o)throw Error(`CAPTCHA_SOLVER_BASE_URL must be configured before using external_service mode.`);let s={key:e,json:1};n.taskKind===`turnstile`||n.taskKind===`recaptcha_v2`||n.taskKind===`hcaptcha`?(s.method=n.taskKind===`turnstile`?`turnstile`:n.taskKind===`hcaptcha`?`hcaptcha`:`userrecaptcha`,s.sitekey=n.siteKey,s.pageurl=n.pageUrl):(s.method=`base64`,s.body=n.imageBase64);let c=await(await fetch(`${o}/in.php`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(s),signal:AbortSignal.timeout(u)})).json();if(c.status!==1)throw Error(`2captcha submit failed: ${JSON.stringify(c)}`);let l=c.request,d=i;for(;;){let i=r-(Date.now()-a);if(i<=0||(await Q(Math.min(d,i)),Date.now()-a>=r))break;let s=new URL(`${o}/res.php`);s.searchParams.set(`key`,e),s.searchParams.set(`action`,`get`),s.searchParams.set(`id`,l),s.searchParams.set(`json`,`1`);let c=await(await fetch(s.toString(),{signal:AbortSignal.timeout(t)})).json();if(c.status===1)return{token:c.request,challengeType:n.taskKind===`image`?`image`:`widget`,mode:`external_service`,durationMs:Date.now()-a};if(c.request!==`CAPCHA_NOT_READY`)throw Error(`2captcha solve failed: ${JSON.stringify(c)}`)}throw Error(`2captcha solve timeout after ${r}ms`)}async function Ct(t,r){let i=await r.getActivePage();if(!i)return j.fail(`No active page.`).build();let c=ct(t.mode??t.provider??process.env.CAPTCHA_PROVIDER),u=mt(t),d=E(t,`apiKey`,``)||process.env.CAPTCHA_API_KEY||``,f=lt(t.challengeType??t.typeHint),p=dt(t.taskKind,f),m=Math.min(Math.max(D(t,`timeoutMs`,n),s),a),h=Math.min(Math.max(D(t,`maxRetries`,l),0),o),g=f,_=E(t,`siteKey`),v=E(t,`pageUrl`,``)||i.url();if(ft(p)&&!_)return j.fail(`Widget solving requires an explicit siteKey.`).build();if(c===`manual`)return j.ok().build({mode:`manual`,challengeType:g,siteKey:_??null,instruction:`Please solve the CAPTCHA manually in the browser, then continue.`,hint:`Configure an external solver service and CAPTCHA_API_KEY to automate this flow.`});if(!d)return j.fail(`External solver credentials are required. Set CAPTCHA_API_KEY.`).build();if(![`2captcha`,`anticaptcha`,`capsolver`].includes(u))return j.fail(`Unsupported external solver service.`).build();let y=null;for(let n=0;n<=h;n++)try{let e=p===`image`?yt(t.imageBase64)??await vt(i):void 0,r=u===`2captcha`?await St(d,{taskKind:p,siteKey:_,pageUrl:v,imageBase64:e},m):await _t(u,d,{taskKind:p,siteKey:_,pageUrl:v,imageBase64:e},m);return j.ok().build({token:r.token,challengeType:r.challengeType,mode:r.mode,durationMs:r.durationMs,attempt:n+1})}catch(t){y=t instanceof Error?t:Error(String(t)),e.warn(`[captcha] Attempt ${n+1} failed: ${y.message}`)}return j.fail(y??Error(`All attempts failed`)).merge({challengeType:g,mode:c,maxRetries:h,suggestion:`Try manual mode or adjust the external solver configuration.`}).build()}async function wt(e,t){let n=await t.getActivePage();if(!n)return j.fail(`No active page.`).build();let r=ct(e.mode??e.provider??process.env.CAPTCHA_PROVIDER),i=mt(e),a=E(e,`apiKey`,``)||process.env.CAPTCHA_API_KEY||``,o=Math.min(Math.max(D(e,`timeoutMs`,12e4),5e3),6e5),s=bt(e),c=dt(e.taskKind,`widget`),l=E(e,`siteKey`),u=E(e,`pageUrl`,``)||n.url();if(r===`hook`){if(!l)return j.fail(`Widget solving requires an explicit siteKey.`).build();let t=Math.min(o,3e4),r=E(e,`callbackName`,``).trim();if(!r)return j.fail(`Hook mode requires an explicit callbackName.`).build();let i=await n.evaluate((e,t)=>new Promise((n,r)=>{let i=setTimeout(()=>r(Error(`Hook timeout`)),e),a=window[t];if(typeof a==`function`){let e=a;window[t]=t=>(clearTimeout(i),n(t),e(t))}else clearTimeout(i),r(Error(`The requested callbackName is not a callable function.`))}),t,r).catch(()=>null);if(i)return j.ok().build({token:i,method:`hook`,challengeType:`widget`,siteKey:l,callbackName:r})}if(r===`manual`)return j.ok().build({mode:`manual`,challengeType:`widget`,siteKey:l||null,pageUrl:u,instruction:`Please complete the widget challenge manually.`});if(!l)return j.fail(`Widget solving requires an explicit siteKey.`).build();if(!a)return j.fail(`External solver credentials are required.`).build();try{let e=i===`2captcha`?await St(a,{taskKind:c,siteKey:l,pageUrl:u},o):i===`anticaptcha`||i===`capsolver`?await _t(i,a,{taskKind:c,siteKey:l,pageUrl:u},o):(()=>{throw Error(`Unsupported external solver service.`)})();return s.enabled&&e.token&&await xt(n,e.token,{responseSelector:s.responseSelector,callbackName:s.callbackName}),j.ok().build({token:e.token,challengeType:e.challengeType,siteKey:l,mode:e.mode,durationMs:e.durationMs,taskKind:c,injected:s.enabled,responseSelector:s.responseSelector??null,callbackName:s.callbackName??null})}catch(e){return j.fail(e).merge({siteKey:l,mode:r,suggestion:`Try manual mode or hook mode.`}).build()}}function $(){return(process.env.CAPTCHA_PROVIDER||``).trim().toLowerCase()||`manual`}function Tt(){return process.env.CAPTCHA_SOLVER_BASE_URL?.trim()||process.env.CAPTCHA_2CAPTCHA_BASE_URL?.trim()||``}function Et(e){return e===`2captcha`?Tt():e===`anticaptcha`?process.env.CAPTCHA_ANTICAPTCHA_BASE_URL?.trim()||``:process.env.CAPTCHA_CAPSOLVER_BASE_URL?.trim()||``}function Dt(){let e=$(),t=Et(`2captcha`),n=!!process.env.CAPTCHA_API_KEY?.trim(),r=t.length>0,i=n&&r;return{capability:`captcha_external_service_2captcha`,status:i?`available`:`unavailable`,reason:i?void 0:`The 2captcha-compatible external path needs both CAPTCHA_API_KEY and CAPTCHA_SOLVER_BASE_URL.`,fix:i?void 0:`Set CAPTCHA_API_KEY and CAPTCHA_SOLVER_BASE_URL to enable external_service mode.`,details:{tools:[`captcha_vision_solve`,`widget_challenge_solve`],configuredProvider:e,defaultExternalProviderSupported:e===`2captcha`,apiKeyConfigured:n,baseUrlConfigured:r,...r?{baseUrl:t}:{}}}}function Ot(e){let t=$(),n=Et(e),r=!!process.env.CAPTCHA_API_KEY?.trim(),i=r&&n.length>0;return{capability:`captcha_external_service_${e}`,status:i?`available`:`unavailable`,reason:i?void 0:`${e} requires CAPTCHA_API_KEY and a reachable API base URL.`,fix:i?void 0:`Set CAPTCHA_API_KEY and ${e===`anticaptcha`?`CAPTCHA_ANTICAPTCHA_BASE_URL`:`CAPTCHA_CAPSOLVER_BASE_URL`}.`,details:{tools:[`captcha_vision_solve`,`widget_challenge_solve`],configuredProvider:t,defaultExternalProviderSupported:t===e,apiKeyConfigured:r,baseUrlConfigured:n.length>0,baseUrl:n}}}async function kt(e){let t;try{t=await e.getActivePage()}catch(e){return{capability:`captcha_widget_hook_current_page`,status:`unknown`,reason:`Current page availability check failed: ${e instanceof Error?e.message:String(e)}`,fix:`Attach or launch a browser page before using hook mode.`,details:{tools:[`widget_challenge_solve`],pageAttached:!1}}}return t?{capability:`captcha_widget_hook_current_page`,status:`available`,reason:`Hook mode is available when the caller provides an explicit callbackName.`,details:{tools:[`widget_challenge_solve`],pageAttached:!0,requiresExplicitCallbackName:!0,requiresExplicitSiteKey:!0}}:{capability:`captcha_widget_hook_current_page`,status:`unknown`,reason:`No active page is attached.`,fix:`Attach or launch a browser page before using hook mode.`,details:{tools:[`widget_challenge_solve`],pageAttached:!1}}}async function At(e){let t=$(),n=await kt(e);return j.raw(oe(`captcha_solver_capabilities`,[{capability:`captcha_manual`,status:`available`,details:{tools:[`captcha_vision_solve`,`widget_challenge_solve`]}},Dt(),Ot(`anticaptcha`),Ot(`capsolver`),n],{configuredProvider:t}))}function jt(e){let t=O(e,`addons`),n=O(e,`excludeAddons`),r=O(e,`fonts`);return{headless:k(e,`headless`,!0),os:E(e,`os`,`windows`),geoip:k(e,`geoip`,!1),humanize:k(e,`humanize`,!1),proxy:E(e,`proxy`)||void 0,blockImages:k(e,`blockImages`,!1),blockWebrtc:k(e,`blockWebrtc`,!1),blockWebgl:k(e,`blockWebgl`,!1),locale:E(e,`locale`)||void 0,addons:t.length>0?t:void 0,fonts:r.length>0?r:void 0,excludeAddons:n.length>0?n:void 0,customFontsOnly:k(e,`customFontsOnly`,!1),screen:e.screen,window:e.window,fingerprint:C(e,`fingerprint`),webglConfig:C(e,`webglConfig`),firefoxUserPrefs:C(e,`firefoxUserPrefs`),mainWorldEval:k(e,`mainWorldEval`,!0),enableCache:k(e,`enableCache`,!1)}}async function Mt(e,t){return A(async()=>{let n=jt(t);if(E(t,`mode`,`launch`)===`connect`){let r=E(t,`wsEndpoint`);if(!r)throw Error(`wsEndpoint is required for connect mode.`);let i=new S(n);return await i.connectToServer(r),e.setCamoufoxManager(i),e.setActiveDriver(`camoufox`),e.clearCamoufoxPage(),{driver:`camoufox`,mode:`connect`,wsEndpoint:r,message:`Connected to Camoufox server.`}}let r=new S(n);return await r.launch(),e.setCamoufoxManager(r),e.setActiveDriver(`camoufox`),e.clearCamoufoxPage(),{driver:`camoufox`,mode:`launch`,config:{os:n.os,headless:n.headless,geoip:n.geoip,humanize:n.humanize,locale:n.locale,blockWebgl:n.blockWebgl,blockImages:n.blockImages,blockWebrtc:n.blockWebrtc},message:`Camoufox (Firefox) browser launched`}})}async function Nt(e,t){return A(async()=>{let n=E(t,`url`,``),r=N(t),i=D(t,`timeout`),a=await e.getCamoufoxPage();return await a.goto(n,{waitUntil:r,timeout:i}),e.setConsoleMonitorPage(a),{driver:`camoufox`,url:a.url(),title:await a.title()}})}const Pt=new Set([`page_navigate`,`page_click`,`page_type`,`page_hover`,`page_scroll`,`page_press_key`,`page_select`,`page_upload_files`,`page_wait_for_selector`]);var Ft=class{collector;pageController;scriptManager;consoleMonitor;captchaDetector;detailedDataManager;camoufoxManager=null;activeDriver=`chrome`;camoufoxPage=null;autoDetectCaptcha=!0;autoSwitchHeadless=!0;captchaTimeout=3e5;browserControl;targetControl;camoufoxBrowser;pageNavigation;pageInteraction;pageEvaluation;targetEvaluation;pageData;consoleHandlers;scriptManagement;captchaHandlers;stealthInjection;frameworkState;indexedDBDump;jsHeapSearch;tabWorkflow;detailedData;jsdomHandlers;tabRegistry;eventBus;getCurrentSessionId;sessionCoordinator;onBrowserAttachStateChanged;codegenStopListening;codegenSteps=[];constructor(e,t,n,r,i,a,o,s){this.collector=e,this.pageController=t,this.scriptManager=n,this.consoleMonitor=r,this.eventBus=i,this.getCurrentSessionId=a,this.sessionCoordinator=o,this.onBrowserAttachStateChanged=s;let c=p(f().paths.captchaScreenshotDir,`screenshots/captcha`);this.captchaDetector=new b(c),this.detailedDataManager=_.getInstance();let l=et({collector:this.collector,pageController:this.pageController,scriptManager:this.scriptManager,consoleMonitor:this.consoleMonitor,eventBus:i,captchaDetector:this.captchaDetector,detailedDataManager:this.detailedDataManager,getActiveDriver:()=>this.activeDriver,getCamoufoxPage:()=>this.getCamoufoxPage(),getCamoufoxManager:()=>this.camoufoxManager,setCamoufoxManager:e=>{this.camoufoxManager=e},closeCamoufox:()=>this.closeCamoufox(),getAutoDetectCaptcha:()=>this.autoDetectCaptcha,getAutoSwitchHeadless:()=>this.autoSwitchHeadless,getCaptchaTimeout:()=>this.captchaTimeout,setAutoDetectCaptcha:e=>{this.autoDetectCaptcha=e},setAutoSwitchHeadless:e=>{this.autoSwitchHeadless=e},setCaptchaTimeout:e=>{this.captchaTimeout=e},getTabRegistry:()=>this.getCurrentTabRegistry(),onBrowserAttachStateChanged:this.onBrowserAttachStateChanged});this.browserControl=l.browserControl,this.targetControl=l.targetControl,this.camoufoxBrowser=l.camoufoxBrowser,this.pageNavigation=l.pageNavigation,this.pageInteraction=l.pageInteraction,this.pageEvaluation=l.pageEvaluation,this.targetEvaluation=l.targetEvaluation,this.pageData=l.pageData,this.consoleHandlers=l.consoleHandlers,this.scriptManagement=l.scriptManagement,this.captchaHandlers=l.captchaHandlers,this.stealthInjection=l.stealthInjection,this.frameworkState=l.frameworkState,this.indexedDBDump=l.indexedDBDump,this.jsHeapSearch=l.jsHeapSearch,this.tabWorkflow=l.tabWorkflow,this.detailedData=l.detailedData,this.jsdomHandlers=l.jsdomHandlers,this.tabRegistry=l.tabRegistry}makeJsonResponse(e){return{content:[{type:`text`,text:JSON.stringify(e,null,2)}]}}sanitizeCodegenArgs(e){let t={...e};for(let e of[`delay`,`timeout`])t[e]===void 0&&delete t[e];return t}getCurrentTabRegistry(){let e=this.getCurrentSessionId?.()??null;return this.sessionCoordinator?.getTabRegistry(e)??this.tabRegistry}isSameFrameArgs(e,t){return(e.frameUrl??null)===(t.frameUrl??null)&&(e.frameSelector??null)===(t.frameSelector??null)}compactCodegenSteps(e){let t=[];for(let n of e){let e={tool:n.tool,args:this.sanitizeCodegenArgs(n.args),timestamp:n.timestamp},r=t.at(-1);if(!r){t.push(e);continue}if(e.tool===`page_wait_for_selector`&&r.tool===`page_wait_for_selector`&&e.args.selector===r.args.selector&&this.isSameFrameArgs(e.args,r.args)){r.timestamp=e.timestamp;continue}if(!(e.tool===`page_wait_for_selector`&&(r.tool===`page_click`||r.tool===`page_type`)&&e.args.selector===r.args.selector&&this.isSameFrameArgs(e.args,r.args))){if(e.tool===r.tool&&JSON.stringify(e.args)===JSON.stringify(r.args)){r.timestamp=e.timestamp;continue}t.push(e)}}return t}formatCodegenScript(e){return[`const steps = [`,...e.map(e=>` ${JSON.stringify({tool:e.tool,args:e.args},null,0)},`),`];`,``,`for (const step of steps) {`,` await callTool(step.tool, step.args);`,`}`].join(`
|
|
11
|
+
`)}getTabRegistry(){return this.getCurrentTabRegistry()}async getCamoufoxPage(){if(!this.camoufoxManager)throw Error(`Camoufox browser not launched. Call browser_launch(driver="camoufox") first.`);return this.camoufoxPage||=await this.camoufoxManager.newPage(),this.camoufoxPage}async closeCamoufox(){try{await this.consoleMonitor.disable()}catch(t){e.warn(`Failed to reset console monitor before closing Camoufox: ${String(t)}`)}this.consoleMonitor.clearPlaywrightPage(),this.camoufoxManager&&(await this.camoufoxManager.close(),this.camoufoxManager=null,this.camoufoxPage=null)}async handleBrowserLaunch(e){return E(e,`driver`,`chrome`)===`camoufox`?this.handleCamoufoxLaunch(e):(this.activeDriver===`camoufox`&&this.camoufoxManager&&await this.closeCamoufox(),this.activeDriver=`chrome`,this.browserControl.handleBrowserLaunch(e))}async handleBrowserClose(e){return this.activeDriver===`camoufox`&&this.camoufoxManager?(await this.closeCamoufox(),await this.browserControl.handleBrowserClose(e),this.activeDriver=`chrome`,{content:[{type:`text`,text:JSON.stringify({success:!0,message:`Camoufox browser closed`},null,2)}]}):this.browserControl.handleBrowserClose(e)}async handleBrowserStatus(e){if(this.activeDriver===`camoufox`){let e=!!this.camoufoxManager?.getBrowser();return{content:[{type:`text`,text:JSON.stringify({success:!0,driver:`camoufox`,running:e,hasActivePage:!!this.camoufoxPage},null,2)}]}}return this.browserControl.handleBrowserStatus(e)}async handleBrowserListTabs(e){return this.browserControl.handleBrowserListTabs(e)}async handleBrowserListCdpTargets(e){return this.targetControl.handleBrowserListCdpTargets(e)}async handleBrowserSelectTab(e){return this.browserControl.handleBrowserSelectTab(e)}async handleBrowserAttachCdpTarget(e){return this.targetControl.handleBrowserAttachCdpTarget(e)}async handleBrowserDetachCdpTarget(e){return this.targetControl.handleBrowserDetachCdpTarget(e)}async handleBrowserEvaluateCdpTarget(e){return this.targetEvaluation.handleBrowserEvaluateCdpTarget(e)}async handleBrowserAttach(e){return this.activeDriver===`camoufox`&&this.camoufoxManager&&await this.closeCamoufox(),this.activeDriver=`chrome`,this.browserControl.handleBrowserAttach(e)}async handleCamoufoxServerDispatch(e){switch(String(e.action??``)){case`close`:return this.camoufoxBrowser.handleCamoufoxServerClose(e);case`status`:return this.camoufoxBrowser.handleCamoufoxServerStatus(e);default:return this.camoufoxBrowser.handleCamoufoxServerLaunch(e)}}async handleCamoufoxServerLaunch(e){return this.camoufoxBrowser.handleCamoufoxServerLaunch(e)}async handleCamoufoxServerClose(e){return this.camoufoxBrowser.handleCamoufoxServerClose(e)}async handleCamoufoxServerStatus(e){return this.camoufoxBrowser.handleCamoufoxServerStatus(e)}async handlePageNavigate(e){return this.activeDriver===`camoufox`?this.handleCamoufoxNavigate(e):this.pageNavigation.handlePageNavigate(e)}async handlePageReload(e){return this.pageNavigation.handlePageReload(e)}async handlePageBack(e){return this.pageNavigation.handlePageBack(e)}async handlePageForward(e){return this.pageNavigation.handlePageForward(e)}async handlePageListFrames(e){return this.pageData.handlePageListFrames(e)}async handlePageClick(e){return this.pageInteraction.handlePageClick(e)}async handlePageType(e){return this.pageInteraction.handlePageType(e)}async handlePageUploadFiles(e){return this.pageInteraction.handlePageUploadFiles(e)}async handlePageSelect(e){return this.pageInteraction.handlePageSelect(e)}async handlePageHover(e){return this.pageInteraction.handlePageHover(e)}async handlePageScroll(e){return this.pageInteraction.handlePageScroll(e)}async handlePagePressKey(e){return this.pageInteraction.handlePagePressKey(e)}async handlePageEvaluate(e){return this.pageEvaluation.handlePageEvaluate(e)}async handlePageScreenshot(e){return this.pageEvaluation.handlePageScreenshot(e)}async handlePageInjectScript(e){return this.pageEvaluation.handlePageInjectScript(e)}async handlePageWaitForSelector(e){return this.pageEvaluation.handlePageWaitForSelector(e)}async handlePageCookiesDispatch(e){let t=String(e.action??``);switch(t){case`get`:return this.pageData.handlePageGetCookies(e);case`set`:return this.pageData.handlePageSetCookies(e);case`clear`:{let t=e.expectedCount;if(typeof t!=`number`||t<0)return v(new y(`VALIDATION`,`action=clear requires expectedCount (number). Call action=get first to obtain the current cookie count.`,{toolName:`page_cookies`}));let n=await this.pageData.getPageCookieCount();return n===t?this.pageData.handlePageClearCookies(e):v(new y(`VALIDATION`,`Cookie count mismatch: expected ${t} but found ${n}. Call action=get to refresh, then retry with the correct count.`,{toolName:`page_cookies`,details:{expected:t,actual:n}}))}default:return v(new y(`VALIDATION`,`Invalid action: "${t}". Expected one of: get, set, clear`,{toolName:`page_cookies`}))}}async handlePageSetViewport(e){return this.pageData.handlePageSetViewport(e)}async handlePageEmulateDevice(e){return this.pageData.handlePageEmulateDevice(e)}async handlePageLocalStorageDispatch(e){let t=String(e.action??``);switch(t){case`get`:return this.pageData.handlePageGetLocalStorage(e);case`set`:return this.pageData.handlePageSetLocalStorage(e);default:return v(new y(`VALIDATION`,`Invalid action: "${t}". Expected one of: get, set`,{toolName:`page_local_storage`}))}}async handleConsoleMonitor(e){return this.consoleHandlers.handleConsoleMonitor(e)}async handleConsoleGetLogs(e){return this.consoleHandlers.handleConsoleGetLogs(e)}async handleConsoleExecute(e){return this.consoleHandlers.handleConsoleExecute(e)}async handleGetAllScripts(e){return this.scriptManagement.handleGetAllScripts(e)}async handleGetScriptSource(e){return this.scriptManagement.handleGetScriptSource(e)}async handleCaptchaDetect(e){return this.captchaHandlers.handleCaptchaDetect(e)}async handleCaptchaWait(e){return this.captchaHandlers.handleCaptchaWait(e)}async handleCaptchaConfig(e){return this.captchaHandlers.handleCaptchaConfig(e)}async handleStealthInject(e){return this.stealthInjection.handleStealthInject(e)}async handleStealthSetUserAgent(e){return this.stealthInjection.handleStealthSetUserAgent(e)}async handleStealthConfigureJitter(e){return this.stealthInjection.handleStealthConfigureJitter(e)}async handleStealthGenerateFingerprint(e){return this.stealthInjection.handleStealthGenerateFingerprint(e)}async handleStealthVerify(e){return this.stealthInjection.handleStealthVerify(e)}async handleCamoufoxGeolocation(e){return this.stealthInjection.handleCamoufoxGeolocation(e)}async handleFrameworkStateExtract(e){return this.frameworkState.handleFrameworkStateExtract(e)}async handleIndexedDBDump(e){return this.indexedDBDump.handleIndexedDBDump(e)}async handleJSHeapSearch(e){return this.jsHeapSearch.handleJSHeapSearch(e)}async handleTabWorkflow(e){return this.tabWorkflow.handleTabWorkflow(e)}async handleBrowserCodegenStart(){return this.eventBus?(this.codegenStopListening?.(),this.codegenSteps=[],this.codegenStopListening=this.eventBus.on(`tool:called`,e=>{e.domain!==`browser`||!e.success||e.result?.success===!1||Pt.has(e.toolName)&&this.codegenSteps.push({tool:e.toolName,args:{...e.args},timestamp:e.timestamp})}),this.makeJsonResponse({success:!0,recording:!0,message:`Browser action recording started.`})):this.makeJsonResponse({success:!1,message:`Event bus unavailable for browser codegen recording.`})}async handleBrowserCodegenStop(){this.codegenStopListening?.(),this.codegenStopListening=void 0;let e=[...this.codegenSteps],t=this.compactCodegenSteps(e);return this.codegenSteps=[],this.makeJsonResponse({success:!0,recording:!1,stepCount:t.length,rawStepCount:e.length,steps:t,script:this.formatCodegenScript(t)})}async handleGetDetailedData(e){return this.detailedData.handleGetDetailedData(e)}async handleGetOffloadedData(e){return this.detailedData.handleGetOffloadedData(e)}async handleCamoufoxLaunch(e){return Mt({setCamoufoxManager:e=>{this.camoufoxManager=e},setActiveDriver:e=>{this.activeDriver=e},clearCamoufoxPage:()=>{this.camoufoxPage=null}},e)}async handleCamoufoxNavigate(e){return Nt({getCamoufoxPage:()=>this.getCamoufoxPage(),setConsoleMonitorPage:e=>{this.consoleMonitor.setPlaywrightPage(e)}},e)}async handleHumanMouse(e){return at(e,this.collector,this.pageController)}async handleHumanScroll(e){return ot(e,this.collector)}async handleHumanTyping(e){return st(e,this.collector,this.pageController)}async handleCaptchaVisionSolve(e){return Ct(e,this.collector)}async handleWidgetChallengeSolve(e){return wt(e,this.collector)}async handleCaptchaSolverCapabilities(){return At(this.collector)}async handleJsdomParse(e){return this.jsdomHandlers.handleJsdomParse(e)}async handleJsdomQuery(e){return this.jsdomHandlers.handleJsdomQuery(e)}async handleJsdomExecute(e){return this.jsdomHandlers.handleJsdomExecute(e)}async handleJsdomSerialize(e){return this.jsdomHandlers.handleJsdomSerialize(e)}async handleJsdomCookies(e){return this.jsdomHandlers.handleJsdomCookies(e)}};export{Ft as BrowserToolHandlers};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./response-
|
|
1
|
+
import{n as e}from"./response-B1RuVVfD.mjs";import{t}from"./ToolError-g3rjWzhx.mjs";import{o as n,r,s as i,t as a}from"./parse-args-ngRrvF9e.mjs";import"./definitions-B3a9QC2t.mjs";function o(e){let t=e.maxDepth??20,n=e.onlyInteractive??!1;return`(function() {
|
|
2
2
|
function getChildren(node) {
|
|
3
3
|
if (!node) return [];
|
|
4
4
|
// v3 uses node.children, v2 uses node._children
|
|
@@ -294,7 +294,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
294
294
|
completeness: sceneTree ? 'full' : 'partial',
|
|
295
295
|
_meta: { isV3: isV3 }
|
|
296
296
|
};
|
|
297
|
-
})()`}function
|
|
297
|
+
})()`}function s(e){let t=e.x,n=e.y,r=e.canvasId;return`(function() {
|
|
298
298
|
function getChildren(node) {
|
|
299
299
|
if (!node) return [];
|
|
300
300
|
if (node.children && Array.isArray(node.children)) return node.children;
|
|
@@ -581,7 +581,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
581
581
|
},
|
|
582
582
|
hitTestMethod: finalMethod
|
|
583
583
|
};
|
|
584
|
-
})()`}var
|
|
584
|
+
})()`}var c=class{id=`cocos`;engine=`CocosCreator`;version;constructor(){this.version=void 0}async detect(e){try{let t=await e.pageController.evaluate(`
|
|
585
585
|
(function() {
|
|
586
586
|
if (typeof window.cc === 'undefined' || window.cc === null) {
|
|
587
587
|
return { present: false, hasDirector: false };
|
|
@@ -598,7 +598,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
598
598
|
versionMajor: major
|
|
599
599
|
};
|
|
600
600
|
})()
|
|
601
|
-
`);if(!t.present||!t.hasDirector)return null;let n=[`window.cc detected`,`cc.director present`];return t.versionMajor===2?n.push(`Cocos Creator v2 API`):t.versionMajor===3&&n.push(`Cocos Creator v3 API`),{engine:this.engine,version:t.version,confidence:.95,evidence:n,adapterId:this.id}}catch{return null}}async dumpScene(e,t){let
|
|
601
|
+
`);if(!t.present||!t.hasDirector)return null;let n=[`window.cc detected`,`cc.director present`];return t.versionMajor===2?n.push(`Cocos Creator v2 API`):t.versionMajor===3&&n.push(`Cocos Creator v3 API`),{engine:this.engine,version:t.version,confidence:.95,evidence:n,adapterId:this.id}}catch{return null}}async dumpScene(e,t){let n=o(t),r=await e.pageController.evaluate(n);return{engine:r.engine,version:r.version,canvas:r.canvas,sceneTree:r.sceneTree??{id:`empty`,type:`Scene`,visible:!0,interactive:!1,alpha:1,x:0,y:0,width:r.canvas?.width??0,height:r.canvas?.height??0,worldBounds:{x:0,y:0,width:r.canvas?.width??0,height:r.canvas?.height??0},path:`cc.director.getScene()`},totalNodes:r.totalNodes,completeness:r.completeness===`full`?`full`:`partial`}}async pickAt(e,t){let n=s(t),r=await e.pageController.evaluate(n);return{success:r.success,picked:r.picked,candidates:r.candidates,coordinates:r.coordinates,hitTestMethod:r.hitTestMethod}}};function l(e){let t=e.maxDepth??20,n=e.onlyInteractive??!1;return`(function() {
|
|
602
602
|
function getChildren(node) {
|
|
603
603
|
if (!node) return [];
|
|
604
604
|
if (node.children && node.numChildren !== undefined) return node.children;
|
|
@@ -731,7 +731,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
731
731
|
completeness: 'full',
|
|
732
732
|
_meta: { isLaya3: isLaya3, scaleX: scaleX, scaleY: scaleY }
|
|
733
733
|
};
|
|
734
|
-
})()`}function
|
|
734
|
+
})()`}function u(e){let t=e.x,n=e.y,r=e.canvasId;return`(function() {
|
|
735
735
|
function getChildren(node) {
|
|
736
736
|
if (!node) return [];
|
|
737
737
|
if (node.children && node.numChildren !== undefined) return node.children;
|
|
@@ -918,7 +918,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
918
918
|
},
|
|
919
919
|
hitTestMethod: finalMethod
|
|
920
920
|
};
|
|
921
|
-
})()`}var
|
|
921
|
+
})()`}var d=class{id=`laya`;engine=`LayaAir`;version;constructor(){this.version=void 0}async detect(e){try{let t=await e.pageController.evaluate(`
|
|
922
922
|
(function() {
|
|
923
923
|
if (typeof window.Laya === 'undefined' || window.Laya === null) {
|
|
924
924
|
return { present: false, hasStage: false, laya2: false, laya3: false };
|
|
@@ -931,7 +931,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
931
931
|
return { present: true, hasStage: hasStage, version: version,
|
|
932
932
|
laya2: laya2, laya3: laya3 };
|
|
933
933
|
})()
|
|
934
|
-
`);if(!t.present||!t.hasStage)return null;let n=[`window.Laya is defined`];return t.laya2&&n.push(`Laya.MouseManager detected (LayaAir 2.x)`),t.laya3&&n.push(`Laya.InputManager detected (LayaAir 3.x)`),n.push(`Laya.stage is present`),{engine:this.engine,version:t.version,confidence:.95,evidence:n,adapterId:this.id}}catch{return null}}async dumpScene(e,t){let n=
|
|
934
|
+
`);if(!t.present||!t.hasStage)return null;let n=[`window.Laya is defined`];return t.laya2&&n.push(`Laya.MouseManager detected (LayaAir 2.x)`),t.laya3&&n.push(`Laya.InputManager detected (LayaAir 3.x)`),n.push(`Laya.stage is present`),{engine:this.engine,version:t.version,confidence:.95,evidence:n,adapterId:this.id}}catch{return null}}async dumpScene(e,t){let n=l(t),r=await e.pageController.evaluate(n);return{engine:r.engine,version:r.version,canvas:r.canvas,sceneTree:r.sceneTree??{id:`empty`,type:`Stage`,visible:!0,interactive:!1,alpha:1,x:0,y:0,width:r.canvas?.width??0,height:r.canvas?.height??0,worldBounds:{x:0,y:0,width:r.canvas?.width??0,height:r.canvas?.height??0},path:`Laya.stage`},totalNodes:r.totalNodes,completeness:r.completeness===`full`?`full`:`partial`}}async pickAt(e,t){let n=u(t),r=await e.pageController.evaluate(n);return{success:r.success,picked:r.picked,candidates:r.candidates,coordinates:r.coordinates,hitTestMethod:r.hitTestMethod}}async traceClick(e,t,n){let{debuggerManager:r,traceRecorder:i,evidenceStore:a}=n,o=`no-recording`;try{o=(await i.start(null,null,{recordMemoryDeltas:!1})).sessionId}catch{}await r.enable(),await r.ensureAdvancedFeatures();let s=await e.pageController.evaluate(`
|
|
935
935
|
(function() {
|
|
936
936
|
var k = Symbol.for('__laya_event_patched');
|
|
937
937
|
var instrumented = [];
|
|
@@ -980,7 +980,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
980
980
|
events.push(${JSON.stringify(c)});
|
|
981
981
|
return events;
|
|
982
982
|
})()
|
|
983
|
-
`),u=await r.waitForPaused(5e3),d=u?.callFrames?u.callFrames.slice(0,t.maxFrames??50).map(e=>({functionName:e.functionName||`(anonymous)`,scriptUrl:e.url,lineNumber:e.location?.lineNumber,columnNumber:e.location?.columnNumber})):[];await r.resume(),a.addNode(`function`,`laya-click-trace:${o}`,{engine:this.engine,version:this.version,handlersFound:d.length,instrumentedPrototypes:s?.instrumented??[]});try{await i.stop()}catch{}return{inputFlow:l,hitTarget:null,domEventChain:d.map(e=>({type:c,target:e.scriptUrl,phase:`at-target`})),engineDispatchChain:s?.instrumented??[],handlerFrames:d,handlersTriggered:d.map(e=>({functionName:e.functionName,scriptUrl:e.scriptUrl,lineNumber:e.lineNumber})),networkEmitted:[]}}};function
|
|
983
|
+
`),u=await r.waitForPaused(5e3),d=u?.callFrames?u.callFrames.slice(0,t.maxFrames??50).map(e=>({functionName:e.functionName||`(anonymous)`,scriptUrl:e.url,lineNumber:e.location?.lineNumber,columnNumber:e.location?.columnNumber})):[];await r.resume(),a.addNode(`function`,`laya-click-trace:${o}`,{engine:this.engine,version:this.version,handlersFound:d.length,instrumentedPrototypes:s?.instrumented??[]});try{await i.stop()}catch{}return{inputFlow:l,hitTarget:null,domEventChain:d.map(e=>({type:c,target:e.scriptUrl,phase:`at-target`})),engineDispatchChain:s?.instrumented??[],handlerFrames:d,handlersTriggered:d.map(e=>({functionName:e.functionName,scriptUrl:e.scriptUrl,lineNumber:e.lineNumber})),networkEmitted:[]}}};function f(e){let t=e.maxDepth??20,n=e.onlyInteractive??!1;return`(function() {
|
|
984
984
|
function getChildren(node) {
|
|
985
985
|
if (!node) return [];
|
|
986
986
|
if (node.list && Array.isArray(node.list)) return node.list;
|
|
@@ -1127,7 +1127,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
1127
1127
|
totalNodes: totalNodes,
|
|
1128
1128
|
completeness: sceneTree ? 'full' : 'partial',
|
|
1129
1129
|
};
|
|
1130
|
-
})()`}function
|
|
1130
|
+
})()`}function p(e){let t=e.x,n=e.y,r=e.canvasId;return`(function() {
|
|
1131
1131
|
function getChildren(node) {
|
|
1132
1132
|
if (!node) return [];
|
|
1133
1133
|
if (node.list && Array.isArray(node.list)) return node.list;
|
|
@@ -1340,7 +1340,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
1340
1340
|
},
|
|
1341
1341
|
hitTestMethod: hitTestMethod
|
|
1342
1342
|
};
|
|
1343
|
-
})()`}var
|
|
1343
|
+
})()`}var m=class{id=`phaser`;engine=`Phaser`;version;constructor(){this.version=void 0}async detect(e){try{let t=await e.pageController.evaluate(`
|
|
1344
1344
|
(function() {
|
|
1345
1345
|
if (typeof window.Phaser === 'undefined' || window.Phaser === null) {
|
|
1346
1346
|
return { present: false, hasGames: false };
|
|
@@ -1352,7 +1352,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
1352
1352
|
version: window.Phaser.VERSION || undefined,
|
|
1353
1353
|
};
|
|
1354
1354
|
})()
|
|
1355
|
-
`);if(!t.present||!t.hasGames)return null;let n=[`window.Phaser detected`];return n.push(`Phaser.GAMES has entries`),{engine:this.engine,version:t.version,confidence:.95,evidence:n,adapterId:this.id}}catch{return null}}async dumpScene(e,t){let n=
|
|
1355
|
+
`);if(!t.present||!t.hasGames)return null;let n=[`window.Phaser detected`];return n.push(`Phaser.GAMES has entries`),{engine:this.engine,version:t.version,confidence:.95,evidence:n,adapterId:this.id}}catch{return null}}async dumpScene(e,t){let n=f(t),r=await e.pageController.evaluate(n);return{engine:r.engine,version:r.version,canvas:r.canvas,sceneTree:r.sceneTree??{id:`empty`,type:`Game`,visible:!0,interactive:!1,alpha:1,x:0,y:0,width:r.canvas?.width??0,height:r.canvas?.height??0,worldBounds:{x:0,y:0,width:r.canvas?.width??0,height:r.canvas?.height??0},path:`Phaser.Game`},totalNodes:r.totalNodes,completeness:r.completeness===`full`?`full`:`partial`}}async pickAt(e,t){let n=p(t),r=await e.pageController.evaluate(n);return{success:r.success,picked:r.picked,candidates:r.candidates,coordinates:r.coordinates,hitTestMethod:r.hitTestMethod}}};function h(e){let t=e.maxDepth??20,n=e.onlyInteractive??!1;return`(function() {
|
|
1356
1356
|
function getChildren(node) {
|
|
1357
1357
|
if (!node) return [];
|
|
1358
1358
|
if (node.children && node.numChildren !== undefined) return node.children;
|
|
@@ -1503,7 +1503,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
1503
1503
|
totalNodes: totalNodes,
|
|
1504
1504
|
completeness: 'full'
|
|
1505
1505
|
};
|
|
1506
|
-
})()`}function
|
|
1506
|
+
})()`}function g(e){let t=e.x,n=e.y,r=e.canvasId;return`(function() {
|
|
1507
1507
|
function getChildren(node) {
|
|
1508
1508
|
if (!node) return [];
|
|
1509
1509
|
if (node.children && node.numChildren !== undefined) return node.children;
|
|
@@ -1720,7 +1720,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
1720
1720
|
},
|
|
1721
1721
|
hitTestMethod: finalMethod
|
|
1722
1722
|
};
|
|
1723
|
-
})()`}var
|
|
1723
|
+
})()`}var _=class{id=`pixi`;engine=`PixiJS`;version;constructor(){this.version=void 0}async detect(e){try{let t=await e.pageController.evaluate(`
|
|
1724
1724
|
(function() {
|
|
1725
1725
|
if (typeof window.PIXI === 'undefined' || window.PIXI === null) {
|
|
1726
1726
|
return { present: false, hasApp: false };
|
|
@@ -1730,10 +1730,10 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
1730
1730
|
var version = pixi.VERSION || pixi.version;
|
|
1731
1731
|
return { present: true, hasApp: hasApp, version: version };
|
|
1732
1732
|
})()
|
|
1733
|
-
`);if(!t.present||!t.hasApp)return null;let n=[`window.PIXI detected`];return t.version&&n.push(`PIXI.VERSION: `+t.version),n.push(`PIXI.Application detected`),{engine:this.engine,version:t.version,confidence:.95,evidence:n,adapterId:this.id}}catch{return null}}async dumpScene(e,t){let n=
|
|
1733
|
+
`);if(!t.present||!t.hasApp)return null;let n=[`window.PIXI detected`];return t.version&&n.push(`PIXI.VERSION: `+t.version),n.push(`PIXI.Application detected`),{engine:this.engine,version:t.version,confidence:.95,evidence:n,adapterId:this.id}}catch{return null}}async dumpScene(e,t){let n=h(t),r=await e.pageController.evaluate(n);return{engine:r.engine,version:r.version,canvas:r.canvas,sceneTree:r.sceneTree??{id:`empty`,type:`Container`,visible:!0,interactive:!1,alpha:1,x:0,y:0,width:r.canvas?.width??0,height:r.canvas?.height??0,worldBounds:{x:0,y:0,width:r.canvas?.width??0,height:r.canvas?.height??0},path:`PIXI.Application.stage`},totalNodes:r.totalNodes,completeness:r.completeness===`full`?`full`:`partial`}}async pickAt(e,t){let n=g(t),r=await e.pageController.evaluate(n);return{success:r.success,picked:r.picked,candidates:r.candidates,coordinates:r.coordinates,hitTestMethod:r.hitTestMethod}}};const v=[{pattern:`Laya`,adapterId:`laya`,engine:`LayaAir`},{pattern:`PIXI`,adapterId:`pixi`,engine:`PixiJS`},{pattern:`Phaser`,adapterId:`phaser`,engine:`Phaser`},{pattern:`cc`,adapterId:`cocos`,engine:`CocosCreator`},{pattern:`legacyCC`,adapterId:`cocos`,engine:`CocosCreator`},{pattern:`BABYLON`,adapterId:`babylon`,engine:`Babylon.js`},{pattern:`THREE`,adapterId:`three`,engine:`Three.js`},{pattern:`createUnityInstance`,adapterId:`unity`,engine:`UnityWebGL`}],y=new Map,b={laya:()=>new d,pixi:()=>new _,phaser:()=>new m,cocos:()=>new c};function x(e){if(!e)return null;if(y.has(e.adapterId))return y.get(e.adapterId);let t=b[e.adapterId];if(!t)return null;let n=t();return y.set(e.adapterId,n),n}function S(e){return{pageController:e,cdpSession:null,tabId:`default`}}async function C(e,t){try{let n=await e.evaluate(`
|
|
1734
1734
|
(function() {
|
|
1735
1735
|
const hits = [];
|
|
1736
|
-
${
|
|
1736
|
+
${v.map(({pattern:e,adapterId:t,engine:n})=>`
|
|
1737
1737
|
try {
|
|
1738
1738
|
if (window[${JSON.stringify(e)}] !== undefined) {
|
|
1739
1739
|
const v = window[${JSON.stringify(e)}];
|
|
@@ -1837,10 +1837,10 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
1837
1837
|
|
|
1838
1838
|
return { hits: hits, selected: hits[0] || null, selectedEvidence: [] };
|
|
1839
1839
|
})()
|
|
1840
|
-
`);if(!n.selected)return null;let r=n.selected;return{engine:r.engine,version:r.version,confidence:n.selectedEvidence.length>0?.95:.9,evidence:[`window global detected`,...n.selectedEvidence],adapterId:r.adapterId}}catch{return null}}async function
|
|
1840
|
+
`);if(!n.selected)return null;let r=n.selected;return{engine:r.engine,version:r.version,confidence:n.selectedEvidence.length>0?.95:.9,evidence:[`window global detected`,...n.selectedEvidence],adapterId:r.adapterId}}catch{return null}}async function w(e,t){let n=t.canvasId,r=await e.evaluate(`
|
|
1841
1841
|
(function() {
|
|
1842
1842
|
const results = [];
|
|
1843
|
-
${
|
|
1843
|
+
${v.map(({pattern:e,adapterId:t,engine:n})=>`
|
|
1844
1844
|
try {
|
|
1845
1845
|
const global = window[${JSON.stringify(e)}];
|
|
1846
1846
|
if (global !== undefined) {
|
|
@@ -1878,7 +1878,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
1878
1878
|
`);return await e.evaluate(`
|
|
1879
1879
|
!!(requestAnimationFrame.toString().includes('[native]') &&
|
|
1880
1880
|
(window.__canvasEngineHint || document.querySelector('[data-engine]')))
|
|
1881
|
-
`)&&i.length===0&&i.push({engine:`Unknown Canvas Engine`,confidence:.3,evidence:[`requestAnimationFrame hook detected`,`canvas elements found`],adapterId:`none`}),{candidates:i,canvasCount:a.length,canvasDetails:n===void 0?a:a.filter(e=>e.id===n||a.indexOf(e).toString()===n),fingerprintComplete:i.length>0}}async function
|
|
1881
|
+
`)&&i.length===0&&i.push({engine:`Unknown Canvas Engine`,confidence:.3,evidence:[`requestAnimationFrame hook detected`,`canvas elements found`],adapterId:`none`}),{candidates:i,canvasCount:a.length,canvasDetails:n===void 0?a:a.filter(e=>e.id===n||a.indexOf(e).toString()===n),fingerprintComplete:i.length>0}}async function T(e,t){let n=t.canvasId,r={canvasId:n,maxDepth:t.maxDepth??20,onlyInteractive:t.onlyInteractive??!1,onlyVisible:t.onlyVisible??!1},i=await C(e,n);if(!i)return E(e,n);let a=x(i);return a?a.dumpScene(S(e),r):E(e,n)}async function E(e,t){let n=await e.evaluate(`
|
|
1882
1882
|
(function() {
|
|
1883
1883
|
return Array.from(document.querySelectorAll('canvas')).map(function(c, i) {
|
|
1884
1884
|
var ctx2d = c.getContext('2d');
|
|
@@ -1892,7 +1892,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
1892
1892
|
};
|
|
1893
1893
|
});
|
|
1894
1894
|
})()
|
|
1895
|
-
`);return{engine:`unknown`,version:void 0,canvas:(t?n.filter(e=>e.id===t||n.indexOf(e).toString()===t):n)[0]??{id:t??``,width:0,height:0,dpr:1,contextType:`unknown`},sceneTree:null,totalNodes:0,completeness:`partial`,partialReason:`No canvas engine detected — only DOM canvas metadata returned`}}async function
|
|
1895
|
+
`);return{engine:`unknown`,version:void 0,canvas:(t?n.filter(e=>e.id===t||n.indexOf(e).toString()===t):n)[0]??{id:t??``,width:0,height:0,dpr:1,contextType:`unknown`},sceneTree:null,totalNodes:0,completeness:`partial`,partialReason:`No canvas engine detected — only DOM canvas metadata returned`}}async function D(e,t){let n=t.x,r=t.y,i=t.canvasId,a=t.highlight??!1,o={x:n,y:r,canvasId:i},s=await e.evaluate(`
|
|
1896
1896
|
(function() {
|
|
1897
1897
|
var sx = ${n}, sy = ${r};
|
|
1898
1898
|
var canvases = Array.from(document.querySelectorAll('canvas'));
|
|
@@ -1916,7 +1916,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
1916
1916
|
canvasY: (sy - rect.top) * (target.height / rect.height)
|
|
1917
1917
|
};
|
|
1918
1918
|
})()
|
|
1919
|
-
`),c=await
|
|
1919
|
+
`),c=await C(e,i);if(!c)return{success:!1,picked:null,candidates:[],coordinates:{screen:s.screen,canvas:{x:s.canvasX,y:s.canvasY}},hitTestMethod:`none`};let l=x(c);if(!l)return{success:!1,picked:null,candidates:[],coordinates:{screen:s.screen,canvas:{x:s.canvasX,y:s.canvasY}},hitTestMethod:`none`};let u=await l.pickAt(S(e),o);return a&&u.picked&&await ee(e,u.picked.worldBounds).catch(()=>{}),u}async function ee(e,t){await e.evaluate(`
|
|
1920
1920
|
(function() {
|
|
1921
1921
|
var existing = document.getElementById('__canvas-highlight');
|
|
1922
1922
|
if (existing) existing.remove();
|
|
@@ -1931,7 +1931,7 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
1931
1931
|
document.body.appendChild(div);
|
|
1932
1932
|
setTimeout(function() { div.remove(); }, 3000);
|
|
1933
1933
|
})()
|
|
1934
|
-
`)}async function
|
|
1934
|
+
`)}async function te(e,t,n,r){let i=r.x,a=r.y,o=r.canvasId,s=r.maxFrames??50,c=r.breakpointType??`click`;await t.enable(),await t.ensureAdvancedFeatures();let l=t.getEventManager(),u=await l.setEventListenerBreakpoint(c),d,f,p,m,h;try{let r=await ne(e,i,a,o,c),l=r.result;f=r.completion,d=l.cleanupToken;let u=await t.waitForPaused(5e3),p=[];u?.callFrames&&(p=u.callFrames.slice(0,s).map(e=>({functionName:e.functionName||`(anonymous)`,scriptUrl:e.url,lineNumber:e.location?.lineNumber,columnNumber:e.location?.columnNumber}))),j(n,`canvas_trace`,{engine:l.engine??`unknown`,x:i,y:a,handlerCount:p.length}),h={inputFlow:l.domEventChain??[],hitTarget:null,domEventChain:p.map(e=>({type:c,target:e.scriptUrl,phase:`at-target`})),engineDispatchChain:l.engineChain??[],handlerFrames:p,handlersTriggered:p.map(e=>({functionName:e.functionName,scriptUrl:e.scriptUrl,lineNumber:e.lineNumber})),networkEmitted:[]}}catch(e){p=e}finally{try{await t.resume()}catch{}if(f)try{await f}catch(e){p||(m=e)}if(await k(e,d),typeof l.removeEventListenerBreakpoint==`function`)try{await l.removeEventListenerBreakpoint(u)}catch{}}if(p)throw p;if(m)throw m;if(!h)throw Error(`Canvas trace did not produce a result.`);return h}async function ne(e,t,n,r,i=`click`){return i===`click`&&typeof e.click==`function`?re(e,t,n,r,i):O(e,t,n,r,i)}async function re(e,t,n,r,i=`click`){let a=A(i),o=`jshook-trace-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,s=await e.evaluate(`
|
|
1935
1935
|
(function() {
|
|
1936
1936
|
var canvases = ${r?`[document.getElementById(${JSON.stringify(r)})]`:`Array.from(document.querySelectorAll("canvas"))`};
|
|
1937
1937
|
var target = null;
|
|
@@ -2016,4 +2016,4 @@ import{n as e}from"./response-C7rKQst4.mjs";import{r as t}from"./parse-args-Cuk7
|
|
|
2016
2016
|
}
|
|
2017
2017
|
return true;
|
|
2018
2018
|
})()
|
|
2019
|
-
`)}catch{}}function A(e){return e===`mousedown`?[`pointerdown`,`mousedown`]:e===`pointerdown`?[`pointerdown`]:[`pointerdown`,`mousedown`,`pointerup`,`mouseup`,`click`]}function j(e,t,n){try{return e.addNode(`function`,t,n).id}catch{return`evidence-unavailable`}}var M=class{pageController;debuggerManager;evidenceStore;constructor(e){this.pageController=e.pageController,this.debuggerManager=e.debuggerManager,this.evidenceStore=e.evidenceStore}async handleFingerprint(t){return e(await b(this.pageController,t))}async handleSceneDump(t){return e(await x(this.pageController,t))}async handlePick(n){let r=t(n,`x`,0),i=t(n,`y`,0);return e(await C(this.pageController,{...n,x:r,y:i}))}async handleTraceClick(t){return e(await T(this.pageController,this.debuggerManager,this.evidenceStore,t))}};export{M as CanvasToolHandlers};
|
|
2019
|
+
`)}catch{}}function A(e){return e===`mousedown`?[`pointerdown`,`mousedown`]:e===`pointerdown`?[`pointerdown`]:[`pointerdown`,`mousedown`,`pointerup`,`mouseup`,`click`]}function j(e,t,n){try{return e.addNode(`function`,t,n).id}catch{return`evidence-unavailable`}}var M=class{pageController;debuggerManager;evidenceStore;constructor(e){this.pageController=e.pageController,this.debuggerManager=e.debuggerManager,this.evidenceStore=e.evidenceStore}async handleFingerprint(t){return e(await w(this.pageController,t))}async handleSceneDump(t){return e(await T(this.pageController,t))}async handlePick(t){let n=r(t,`x`,0),i=r(t,`y`,0);return e(await D(this.pageController,{...t,x:n,y:i}))}async handleTraceClick(t){return e(await te(this.pageController,this.debuggerManager,this.evidenceStore,t))}};function N(e){return typeof e!=`object`||!e||!(`evaluate`in e)?!1:typeof e.evaluate==`function`}function P(e){return typeof e!=`object`||!e||!(`getExtension`in e)||!(`getParameter`in e)||!(`RENDERER`in e)||!(`VERSION`in e)?!1:typeof e.getExtension==`function`&&typeof e.getParameter==`function`}function F(e){let t=(e??``).toLowerCase();return t.includes(`vulkan`)?`vulkan`:t.includes(`metal`)?`metal`:t.includes(`d3d`)||t.includes(`direct3d`)?`direct3d`:t.includes(`angle`)||t.includes(`opengl`)||t.includes(`mesa`)||t.includes(`gl`)?`opengl`:t.includes(`swiftshader`)||t.includes(`software`)||t.includes(`cpu`)?`cpu`:t.length>0?`gpu`:`cpu`}function I(e){let t=0;for(let n of e)t+=1,t+=I(n.children);return t}function L(e){let t=e.getAttribute(`aria-label`);if(t)return t;if(e.id)return e.id;let n=typeof e.className==`string`?e.className.trim():``;return n.length>0?n:e.tagName.toLowerCase()}function R(e){if(typeof e.getBoundingClientRect!=`function`)return;let t=e.getBoundingClientRect();return{x:t.x,y:t.y,width:t.width,height:t.height}}function z(e){if(!(e instanceof HTMLElement)||typeof window>`u`)return;let t=window.getComputedStyle(e);return t.display!==`none`&&t.visibility!==`hidden`}function B(e,t){let n=Array.from(e.children).slice(0,12).map((e,n)=>B(e,`${t}-${n}`));return{id:e.id||t,type:e.tagName.toLowerCase(),label:L(e),children:n,visible:z(e),bounds:R(e)}}function V(){let e=[{id:`mock-root`,type:`canvas`,label:`mock-skia-surface`,visible:!0,bounds:{x:0,y:0,width:640,height:480},children:[{id:`mock-layer`,type:`layer`,label:`mock-layer`,visible:!0,bounds:{x:16,y:16,width:320,height:160},children:[]}]}];return{rootNodes:e,totalNodes:I(e),extractedAt:new Date().toISOString()}}function H(e){let t=`software`,n=`Raster`;return e.backend===`vulkan`?(t=`vulkan`,n=`Vulkan`):e.backend===`metal`?(t=`metal`,n=`Metal`):(e.backend===`opengl`||e.backend===`direct3d`||e.backend===`gpu`)&&(t=`gl`,n=`OpenGL`),{isSkiaBacked:e.backend!==`cpu`,version:e.version??null,gpuBackend:t,shaderPipeline:n,rendererStrings:e.gpu?[e.gpu]:[],features:e.backend===`cpu`?[]:[`backend:${e.backend}`],confidence:e.backend===`cpu`?.2:.8,evidence:e.gpu?[`Renderer string: ${e.gpu}`]:[`No renderer information available`]}}function U(e,t){return e.x>=t.x&&e.y>=t.y&&e.x+e.width<=t.x+t.width&&e.y+e.height<=t.y+t.height}function W(e){let t=(e??``).toLowerCase();return t.includes(`rrect`)||t.includes(`round`)?`drawRRect`:t.includes(`rect`)?`drawRect`:t.includes(`text`)?`drawText`:t.includes(`image`)||t.includes(`sprite`)?`drawImage`:t.includes(`path`)?`drawPath`:t.includes(`circle`)||t.includes(`arc`)?`drawCircle`:t.includes(`line`)?`drawLine`:`unknown`}function G(e){let t=e.layers.map((e,t)=>({id:e.id??`layer-${t}`,name:e.name??`layer-${t}`,bounds:e.bounds??{x:0,y:0,width:0,height:0},transform:e.transform??[1,0,0,0,1,0,0,0,1],opacity:e.opacity??1,visible:e.visible??!0,children:[],customData:e.customData})),n=t[0]??null;if(n)for(let e=1;e<t.length;e+=1){let r=t[e];r&&U(r.bounds,n.bounds)&&n.children.push(r)}let r=e.drawCommands.map(e=>({type:W(e.type),bounds:e.bounds??{x:0,y:0,width:0,height:0},paintInfo:e.paintInfo??{},layerId:e.layerId}));return{rootLayer:n,layers:t,drawCommands:r,totalLayers:t.length,totalDrawCommands:r.length,canvas:{id:e.canvas.id,width:e.canvas.width??0,height:e.canvas.height??0,dpr:e.canvas.dpr??1,contextType:e.canvas.contextType??`unknown`}}}function K(e){return{id:e.id,name:e.label,bounds:e.bounds??{x:0,y:0,width:0,height:0},transform:[1,0,0,0,1,0,0,0,1],opacity:1,visible:e.visible??!0,children:e.children.map(e=>K(e))}}function q(e){let t=e.rootNodes.map(e=>K(e));return{rootLayer:t[0]??null,layers:t,drawCommands:[],totalLayers:t.length,totalDrawCommands:0,canvas:{width:t[0]?.bounds.width??0,height:t[0]?.bounds.height??0,dpr:1,contextType:`mock`}}}function ie(e){for(let t of e){let e=t.match(/(\d+\.\d+(?:\.\d+)?)/);if(e&&e[1])return e[1]}return null}function J(e){let t=e.join(` `).toLowerCase();return t.includes(`metal`)?`metal`:t.includes(`vulkan`)?`vulkan`:t.includes(`swiftshader`)||t.includes(`software`)?`software`:t.length>0?`gl`:`software`}function Y(e){let t=e.join(` `).toLowerCase();return t.includes(`metal`)?`Metal`:t.includes(`vulkan`)?`Vulkan`:t.includes(`swiftshader`)||t.includes(`software`)?`Raster`:t.length>0?`OpenGL`:`Raster`}function ae(e,t,n){let r=e.flatMap(e=>{let t=[];return e.unmaskedRenderer&&t.push(e.unmaskedRenderer),e.renderer&&t.push(e.renderer),t}),i=[],a=[];t.hasSkiaFontSignatures&&(i.push(`fontBoundingBoxAscent/Descent available`),a.push(`Canvas text metrics expose font bounding boxes`));for(let e of n.engines)i.push(`engine:${e}`),a.push(`Detected known Skia-adjacent engine: ${e}`);for(let t of e)t.hasSkiaBackend&&t.unmaskedRenderer&&a.push(`Renderer probe: ${t.unmaskedRenderer}`);let o=e.some(e=>e.hasSkiaBackend)||n.isSkiaEngine||t.hasSkiaFontSignatures,s=.1;e.some(e=>e.hasSkiaBackend)&&(s+=.5),n.isSkiaEngine&&(s+=.3),t.hasSkiaFontSignatures&&(s+=.1);let c=o?J(r):`software`,l=o?Y(r):`Raster`;return{isSkiaBacked:o,version:ie(r),gpuBackend:c,shaderPipeline:l,rendererStrings:r,features:i,confidence:Math.min(s,1),evidence:a}}var X=class{detectSkiaRenderer(){if(typeof document>`u`)return{backend:`cpu`,version:`mock`,gpu:`browser-context-unavailable`};let e=document.querySelector(`canvas`);if(!(e instanceof HTMLCanvasElement))return{backend:`cpu`,version:`mock`,gpu:`no-canvas-detected`};let t=e.getContext(`webgl2`)||e.getContext(`webgl`)||e.getContext(`experimental-webgl`);if(!P(t))return{backend:`cpu`,version:`mock`,gpu:`canvas-without-webgl`};let n,r=t.getExtension(`WEBGL_debug_renderer_info`);if(r){let e=t.getParameter(r.UNMASKED_RENDERER_WEBGL);typeof e==`string`&&e.trim().length>0&&(n=e)}if(!n){let e=t.getParameter(t.RENDERER);typeof e==`string`&&e.trim().length>0&&(n=e)}let i,a=t.getParameter(t.VERSION);return typeof a==`string`&&a.trim().length>0&&(i=a),{backend:F(n),version:i,gpu:n}}extractSceneTree(e){if(typeof document>`u`)return V();let t=e?document.querySelector(e):document.querySelector(`canvas`);if(!(t instanceof HTMLCanvasElement))return V();let n=B(t,`skia-root`);if(t.parentElement){let e=Array.from(t.parentElement.children).filter(e=>e!==t).slice(0,8).map((e,t)=>B(e,`skia-sibling-${t}`));n.children.push(...e)}let r=[n];return{rootNodes:r,totalNodes:I(r),extractedAt:new Date().toISOString()}}};async function oe(e,t){return N(e)?ae(await e.evaluate(`(() => { /* UNMASKED_RENDERER_WEBGL ${t??``} */ return []; })()`),await e.evaluate(`(() => { /* fontBoundingBoxAscent */ return { hasSkiaFontSignatures: false, textMetrics: null }; })()`),await e.evaluate(`(() => { /* window.cc window.legacyCC */ return { engines: [], isSkiaEngine: false }; })()`)):H(new X().detectSkiaRenderer())}async function Z(e,t,n=!0){return N(e)?G(await e.evaluate(`(() => { /* drawCommands canvasMeta ${t??``} */ return { canvas: {}, layers: [], drawCommands: [] }; })()`)):q(new X().extractSceneTree(t))}function se(e,t){let n=[],r=new Set,i=new Set,a=le(e);for(let e of a){let a=null;for(let n of t){let t=ce(e,n);t&&(!a||t.confidence>a.confidence)&&(a=t)}a&&a.confidence>=.3&&(n.push(a),r.add(a.skiaObjectId),i.add(a.jsObjectId))}let o=[...new Set(a.map(e=>e.id))].filter(e=>!r.has(e)),s=t.filter(e=>!i.has(e.objectId)).map(e=>e.objectId),c=n.reduce((e,t)=>e+t.confidence,0),l=n.length>0?c/n.length:0;return{correlations:n,unmatchedJSObjects:s,unmatchedSkiaObjects:o,summary:{totalSkiaObjects:a.length,totalJSObjects:t.length,matchedCount:n.length,averageConfidence:Math.round(l*100)/100}}}function ce(e,t){if(e.text){for(let n of t.stringProps)if(n===e.text||n.includes(e.text)&&e.text.length>3)return{skiaObjectId:e.id,jsObjectId:t.objectId,jsObjectName:t.name||t.className,confidence:.85,matchType:`text`,explanation:`Draw text "${e.text.slice(0,50)}" matches JS string property`}}let n=fe(e.bounds,t.numericProps);if(n)return{skiaObjectId:e.id,jsObjectId:t.objectId,jsObjectName:t.name||t.className,confidence:n.confidence,matchType:`dimension`,explanation:n.explanation};if(e.color){for(let n of t.colorProps)if($(n,e.color))return{skiaObjectId:e.id,jsObjectId:t.objectId,jsObjectName:t.name||t.className,confidence:.7,matchType:`color`,explanation:`Color ${e.color} matches JS color property "${n}"`}}if(e.type===`drawImage`){let n=e.color;if(n){for(let r of t.urlProps)if(r===n||r.includes(n))return{skiaObjectId:e.id,jsObjectId:t.objectId,jsObjectName:t.name||t.className,confidence:.8,matchType:`url`,explanation:`Image URL matches JS property`}}}if(e.name){if(t.name&&Q(e.name,t.name))return{skiaObjectId:e.id,jsObjectId:t.objectId,jsObjectName:t.name,confidence:.75,matchType:`name`,explanation:`Object name "${e.name}" matches JS object "${t.name}"`};for(let n of t.stringProps)if(Q(e.name,n))return{skiaObjectId:e.id,jsObjectId:t.objectId,jsObjectName:t.name||t.className,confidence:.6,matchType:`name`,explanation:`Skia layer name matches JS string property`}}let r=pe(e.bounds,t.numericProps);return r?{skiaObjectId:e.id,jsObjectId:t.objectId,jsObjectName:t.name||t.className,confidence:r.confidence,matchType:`geometry`,explanation:r.explanation}:null}function le(e){let t=[];for(let n of e.layers)t.push({id:n.id,type:`layer`,name:n.name,bounds:n.bounds,color:n.customData?.color});for(let n of e.drawCommands){let e=ue(n.paintInfo),r=de(n.paintInfo);t.push({id:`cmd_${n.type}_${n.bounds.x}_${n.bounds.y}`,type:n.type,name:`${n.type} at (${n.bounds.x}, ${n.bounds.y})`,text:e,bounds:n.bounds,color:r})}return t}function ue(e){if(typeof e.text==`string`)return e.text;if(typeof e.content==`string`)return e.content}function de(e){if(typeof e.color==`string`)return e.color;if(typeof e.fillColor==`string`)return e.fillColor;if(typeof e.strokeColor==`string`)return e.strokeColor;if(typeof e.url==`string`)return e.url;if(typeof e.src==`string`)return e.src}function fe(e,t){let n=[`width`,`height`,`w`,`h`,`sizeX`,`sizeY`,`sw`,`sh`],r=!1,i=!1;for(let a of n){let n=t[a];n!==void 0&&((a===`width`||a===`w`||a===`sizeX`||a===`sw`)&&Math.abs(n-e.width)<=2&&(r=!0),(a===`height`||a===`h`||a===`sizeY`||a===`sh`)&&Math.abs(n-e.height)<=2&&(i=!0))}return r&&i?{confidence:.75,explanation:`Dimensions ${e.width}x${e.height} match JS numeric properties`}:r||i?{confidence:.45,explanation:`Partial dimension match for ${e.width}x${e.height}`}:null}function pe(e,t){let n=!1,r=!1;for(let[i,a]of Object.entries(t))(i===`x`||i===`posX`||i===`left`)&&Math.abs(a-e.x)<=5&&(n=!0),(i===`y`||i===`posY`||i===`top`)&&Math.abs(a-e.y)<=5&&(r=!0);return n&&r?{confidence:.5,explanation:`Position (${e.x}, ${e.y}) matches JS numeric properties`}:null}function Q(e,t){return e.toLowerCase()===t.toLowerCase()||e.toLowerCase().includes(t.toLowerCase())||t.toLowerCase().includes(e.toLowerCase())}function $(e,t){return e.toLowerCase().replace(/\s/g,``)===t.toLowerCase().replace(/\s/g,``)}async function me(e,t){let r=n(t,`canvasId`);return{rendererInfo:await oe(e,r||void 0),canvasId:r||`auto`,detectionComplete:!0}}async function he(e,t){let r=n(t,`canvasId`),i=a(t,`includeDrawCommands`,!0);return{sceneTree:await Z(e,r||void 0,i),canvasId:r||`auto`,extractionComplete:!0}}async function ge(e,r,a){let o=n(r,`canvasId`),s=i(r,`skiaNodeIds`),c=await Z(e,o||void 0,!0);if(c.layers.length===0&&c.drawCommands.length===0)throw new t(`PREREQUISITE`,`No Skia scene data available for correlation`);let l=[];if(a)try{l=await a()}catch{l=[]}let u=c;if(s.length>0){let e=new Set(s);u={...c,layers:c.layers.filter(t=>e.has(t.id)),drawCommands:c.drawCommands.filter(t=>{let n=t.layerId;return n===void 0||e.has(n)})}}return{correlations:se(u,l),canvasId:o||`auto`,skiaNodeIds:s.length>0?s:void 0,correlationComplete:!0}}var _e=class{deps;constructor(e){this.deps=e}async handleSkiaDetectRenderer(e){if(!this.deps.pageController)throw new t(`PREREQUISITE`,`PageController not available — ensure browser is connected`);return me(this.deps.pageController,e)}async handleSkiaExtractScene(e){if(!this.deps.pageController)throw new t(`PREREQUISITE`,`PageController not available — ensure browser is connected`);let n=await he(this.deps.pageController,e),r=n?.sceneTree;return r&&this.deps.eventBus?.emit(`skia:scene_captured`,{canvasId:e.canvasId??`auto`,nodeCount:(r.layers?.length??0)+(r.drawCommands?.length??0),timestamp:new Date().toISOString()}),n}async handleSkiaCorrelateObjects(e){if(!this.deps.pageController)throw new t(`PREREQUISITE`,`PageController not available — ensure browser is connected`);return ge(this.deps.pageController,e,this.deps.getJSObjects)}};export{M as CanvasToolHandlers,_e as SkiaCaptureHandlers};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as e}from"./ensure-browser-core-JHwDo5ql.mjs";import{ConsoleMonitor as t}from"./ConsoleMonitor-DIjN5Afa.mjs";export{e as CodeCollector,t as ConsoleMonitor};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./chunk-88NL7fhV.mjs";import{cpus as t}from"node:os";var n=e({ACTIVATION_BOOST_WINDOW_MS:()=>Se,ACTIVATION_COMPOUND_EVAL_EVERY:()=>be,ACTIVATION_COOLDOWN_MS:()=>ye,ACTIVATION_EVENT_HISTORY_MAX:()=>xe,ACTIVATION_TTL_MINUTES:()=>de,ADB_COLD_START_LOGCAT_TAIL_DEFAULT:()=>Xn,ADB_COLD_START_LOGCAT_TAIL_MAX:()=>Qn,ADB_COLD_START_LOGCAT_TAIL_MIN:()=>Zn,ADB_COLD_START_TIMELINE_LIMIT:()=>$n,ADB_COLD_START_WAIT_MS_DEFAULT:()=>Jn,ADB_COLD_START_WAIT_MS_MAX:()=>Yn,ADB_DEFAULT_TIMEOUT_MS:()=>Ln,ADB_FILE_TRANSFER_TIMEOUT_MS:()=>Vn,ADB_LARGE_OUTPUT_MAX_BUFFER_BYTES:()=>Bn,ADB_LOGCAT_MAX_LINES_DEFAULT:()=>Kn,ADB_LOGCAT_MAX_LINES_MAX:()=>qn,ADB_LOGCAT_TAIL_DEFAULT:()=>Wn,ADB_LOGCAT_TAIL_MAX:()=>Gn,ADB_MAX_BUFFER_BYTES:()=>zn,ADB_PACKAGE_COMPONENT_LIMIT:()=>Hn,ADB_SHELL_TIMEOUT_MS:()=>Rn,ADB_WEBVIEW_HOST_PORT_DEFAULT:()=>er,ANALYSIS_MAX_SAFE_COLLECTED_BYTES:()=>Ot,ANALYSIS_MAX_SAFE_RESPONSE_BYTES:()=>kt,ANALYSIS_MAX_SUMMARY_FILES:()=>Dt,APK_STATIC_TRIAGE_ASSET_HINT_LIMIT:()=>cr,APK_STATIC_TRIAGE_DEFAULT_ENTRIES:()=>or,APK_STATIC_TRIAGE_MAX_ENTRIES:()=>sr,APK_STATIC_TRIAGE_MIN_ENTRIES:()=>ar,APK_STATIC_TRIAGE_NATIVE_LIB_LIMIT:()=>lr,APK_ZIP_MAGIC_HEX_HEADERS:()=>Un,AUTOPRUNE_AUTO_INACTIVITY_MS:()=>pe,AUTOPRUNE_CHECK_INTERVAL_MS:()=>he,AUTOPRUNE_MANUAL_INACTIVITY_MS:()=>me,BINARY_STRINGS_MAX_RESULTS_DEFAULT:()=>vr,BINARY_STRINGS_MAX_RESULTS_LIMIT:()=>yr,BINARY_STRINGS_MIN_LENGTH_CEILING:()=>_r,BINARY_STRINGS_MIN_LENGTH_DEFAULT:()=>hr,BINARY_STRINGS_MIN_LENGTH_FLOOR:()=>gr,BINARY_STRINGS_PRINTABLE_ASCII_MAX:()=>xr,BINARY_STRINGS_PRINTABLE_ASCII_MIN:()=>br,BOT_DETECT_LIMIT_DEFAULT:()=>Gr,BREAKPOINT_HIT_TIMEOUT_MS:()=>cn,BREAKPOINT_TRACE_MAX_HITS:()=>ln,CACHE_GLOBAL_MAX_SIZE_BYTES:()=>Lt,CACHE_LOW_HIT_RATE_THRESHOLD:()=>Rt,CAPTCHA_DEFAULT_RETRIES:()=>X,CAPTCHA_DEFAULT_TIMEOUT_MS:()=>K,CAPTCHA_MAX_RETRIES:()=>Y,CAPTCHA_MAX_TIMEOUT_MS:()=>J,CAPTCHA_MIN_TIMEOUT_MS:()=>q,CAPTCHA_POLL_INTERVAL_MS:()=>W,CAPTCHA_RESULT_TIMEOUT_MS:()=>G,CAPTCHA_SCREENSHOT_FALLBACK_DIR:()=>CAPTCHA_SCREENSHOT_FALLBACK_DIR,CAPTCHA_SOLVER_BASE_URL:()=>m,CAPTCHA_SUBMIT_TIMEOUT_MS:()=>U,CDEX_MAGIC_ASCII:()=>mr,CDP_JSON_LIST_PATH:()=>CDP_JSON_LIST_PATH,CDP_JSON_VERSION_PATH:()=>CDP_JSON_VERSION_PATH,CDP_LOOPBACK_HOST:()=>CDP_LOOPBACK_HOST,CODE_CAVE_MIN_SIZE:()=>sn,COMPOUND_EVENT_WINDOW_MS:()=>Ce,COMPOUND_LONG_WINDOW_MS:()=>we,COORDINATION_GOTO_TIMEOUT_MS:()=>ni,DART_ALLOWED_REGEX_FLAGS:()=>bi,DART_CHUNK_OVERLAP_BYTES:()=>pi,DART_DEFAULT_ENCODING:()=>gi,DART_MAX_CHUNK_BYTES:()=>fi,DART_MAX_FILES_PER_PACKAGE:()=>wi,DART_MAX_MAP_BYTES:()=>Si,DART_MAX_OFFSETS_PER_STRING:()=>_i,DART_MAX_PACKAGES_PER_RESULT:()=>Ci,DART_MAX_REGEX_PATTERN_LENGTH:()=>vi,DART_MAX_SMI_VALUE:()=>xi,DART_MIN_LENGTH:()=>di,DART_PP_MAX_DUMP_DURATION_MS:()=>$,DART_PP_MAX_SLOTS:()=>Oi,DART_PP_PREVIEW_BYTES:()=>ki,DART_PRINTABLE_ASCII_MAX:()=>hi,DART_PRINTABLE_ASCII_MIN:()=>mi,DART_REGEX_TIMEOUT_MS:()=>yi,DART_SNAPSHOT_HEADER_SCAN_MAX_BYTES:()=>Ei,DART_SNAPSHOT_MAX_FILE_BYTES:()=>Ti,DART_SNAPSHOT_TABLE_PATH:()=>Di,DEBUGGER_WAIT_FOR_PAUSED_TIMEOUT_MS:()=>P,DEBUG_PORT_CANDIDATES:()=>u,DEFAULT_DEBUG_PORT:()=>d,DETAILED_DATA_DEFAULT_TTL_MS:()=>Bt,DETAILED_DATA_MAX_TTL_MS:()=>Vt,DETAILED_DATA_SMART_THRESHOLD_BYTES:()=>Ht,DEX_MAGIC_ASCII:()=>pr,DEX_SCAN_DEFAULT_MAX_HITS:()=>ur,DEX_SCAN_MAX_EXTRACT_BYTES:()=>fr,DEX_SCAN_MAX_HITS:()=>dr,DOM_QUERY_DEFAULT_LIMIT:()=>Zr,DOM_WAIT_ELEMENT_TIMEOUT_MS:()=>Qr,ENABLE_INJECTION_TOOLS:()=>$t,EXTENSION_GIT_CHECKOUT_TIMEOUT_MS:()=>vt,EXTENSION_GIT_CLONE_TIMEOUT_MS:()=>_t,EXTERNAL_TOOL_FORCE_KILL_GRACE_MS:()=>S,EXTERNAL_TOOL_MAX_STDERR_BYTES:()=>xt,EXTERNAL_TOOL_MAX_STDOUT_BYTES:()=>bt,EXTERNAL_TOOL_PROBE_CACHE_TTL_MS:()=>x,EXTERNAL_TOOL_PROBE_TIMEOUT_MS:()=>b,EXTERNAL_TOOL_TIMEOUT_MS:()=>y,FREEZE_DEFAULT_INTERVAL_MS:()=>mn,FRIDA_DEX_DUMP_FILE_LIMIT:()=>wr,FRIDA_DEX_DUMP_MAX_BUFFER_BYTES:()=>Cr,FRIDA_DEX_DUMP_TIMEOUT_MS:()=>Sr,FRIDA_TIMEOUT_MS:()=>jn,GHIDRA_BRIDGE_ENDPOINT:()=>f,GHIDRA_TIMEOUT_MS:()=>Mn,GRAPHQL_MAX_GRAPH_EDGES:()=>Et,GRAPHQL_MAX_GRAPH_NODES:()=>Tt,GRAPHQL_MAX_PREVIEW_CHARS:()=>St,GRAPHQL_MAX_QUERY_CHARS:()=>wt,GRAPHQL_MAX_SCHEMA_CHARS:()=>Ct,HEAP_ENUMERATE_MAX_BLOCKS:()=>un,HEAP_SPRAY_SIZE_TOLERANCE:()=>fn,HEAP_SPRAY_THRESHOLD:()=>dn,HEAP_SUSPICIOUS_BLOCK_SIZE:()=>pn,HTTP_CLEANUP_INTERVAL_MS:()=>Or,HTTP_RATE_LIMIT_MAX_IPS:()=>Dr,ICMP_DEFAULT_PACKET_SIZE:()=>ti,ICMP_PROBE_TIMEOUT_MS:()=>$r,ICMP_TRACEROUTE_MAX_HOPS:()=>ei,IDA_BRIDGE_ENDPOINT:()=>p,JSVMP_DEOBFUSCATE_TIMEOUT_MS:()=>A,JSVMP_MAX_ITERATIONS:()=>j,JSVMP_SYMBOLIC_MAX_STEPS:()=>M,JSVMP_SYMBOLIC_TIMEOUT_MS:()=>N,MACRO_BUILTIN_TIMEOUT_MS:()=>Jr,MACRO_DEFAULT_TIMEOUT_MS:()=>qr,MCP_ARTIFACTS_HAR_DIR:()=>MCP_ARTIFACTS_HAR_DIR,MCP_ARTIFACTS_REPORTS_DIR:()=>MCP_ARTIFACTS_REPORTS_DIR,MCP_COMPACT_SCHEMA:()=>kr,MCP_HTTP_FORCE_CLOSE_TIMEOUT_MS:()=>v,MCP_HTTP_HEADERS_TIMEOUT_MS:()=>g,MCP_HTTP_KEEPALIVE_TIMEOUT_MS:()=>_,MCP_HTTP_REQUEST_TIMEOUT_MS:()=>h,MCP_LOG_ENABLED:()=>ci,MCP_LOG_FILE_DIR:()=>ui,MCP_LOG_LEVEL:()=>li,MEMORY_AUDIT_TRAIL_CAPACITY:()=>ri,MEMORY_AVAILABILITY_CACHE_TTL_MS:()=>Er,MEMORY_DUMP_TIMEOUT_MS:()=>Jt,MEMORY_INJECT_TIMEOUT_MS:()=>Qt,MEMORY_MAX_READ_BYTES:()=>Gt,MEMORY_MAX_WRITE_BYTES:()=>qt,MEMORY_MODULES_TIMEOUT_MS:()=>si,MEMORY_PROBE_CMD_TIMEOUT_MS:()=>ai,MEMORY_PROCESS_SIGNAL_TIMEOUT_MS:()=>ii,MEMORY_PROTECTION_PWSH_TIMEOUT_MS:()=>nn,MEMORY_PROTECTION_QUERY_TIMEOUT_MS:()=>tn,MEMORY_READ_TIMEOUT_MS:()=>Wt,MEMORY_SCAN_MAX_BUFFER_BYTES:()=>Xt,MEMORY_SCAN_MAX_RESULTS:()=>Zt,MEMORY_SCAN_TIMEOUT_MS:()=>Yt,MEMORY_VMMAP_ENUM_TIMEOUT_MS:()=>oi,MEMORY_VMMAP_TIMEOUT_MS:()=>en,MEMORY_WRITE_TIMEOUT_MS:()=>Kt,MOJO_MONITOR_TIMEOUT_MS:()=>Tr,NATIVE_ADMIN_CHECK_TIMEOUT_MS:()=>rn,NEMU_MAX_SESSIONS:()=>In,NEMU_SESSION_IDLE_TTL_MS:()=>Pn,NEMU_SESSION_SWEEP_MS:()=>Fn,NETWORK_HAR_BODY_CONCURRENCY:()=>ie,NETWORK_REPLAY_MAX_REDIRECTS:()=>Z,OFFLOAD_FIELD_SANITIZE_THRESHOLD_BYTES:()=>Ut,PAGE_FRAME_SELECTOR_TIMEOUT_MS:()=>Yr,PAGE_NETWORK_IDLE_TIMEOUT_MS:()=>Xr,POINTER_CHAIN_MAX_DEPTH:()=>wn,POINTER_CHAIN_MAX_OFFSET:()=>Tn,POINTER_CHAIN_MAX_RESULTS:()=>En,POINTER_CHAIN_SCAN_CHUNK_SIZE:()=>Dn,PREDICTIVE_CONFIDENCE_THRESHOLD:()=>_e,PREDICTIVE_DECAY_FACTOR:()=>ve,PREDICTIVE_MAX_HISTORY:()=>ge,PREDICTIVE_MAX_SECOND_ORDER_KEYS:()=>gt,PROCESS_LAUNCH_WAIT_MS:()=>Q,PROCESS_LIST_MAX_BUFFER_BYTES:()=>yt,PROTO_HTTP_CONFIDENCE:()=>Ur,PROTO_SSH_CONFIDENCE:()=>Wr,PROTO_TLS_CONFIDENCE:()=>Vr,PROTO_TLS_MIN_RECORD_LEN:()=>Br,PROTO_WS_CONFIDENCE:()=>Hr,PROXY_ADB_MAX_BUFFER_BYTES:()=>ir,PROXY_ADB_TIMEOUT_MS:()=>rr,PROXY_CAPTURE_BUFFER_MAX:()=>tr,PROXY_CAPTURE_RETURN_LIMIT:()=>nr,RERANK_BROWSER_ATTACH_BOOST:()=>pt,RERANK_BROWSER_LAUNCH_BOOST:()=>ft,RERANK_MAINTENANCE_PENALTY:()=>st,RERANK_NETWORK_GET_REQUESTS_BOOST:()=>ht,RERANK_NETWORK_MONITOR_BOOST:()=>mt,RERANK_STATELESS_COMPUTE_BOOST:()=>ut,RERANK_STATELESS_CORE_PENALTY:()=>lt,RERANK_STATELESS_INTERACTIVE_PENALTY:()=>ct,RERANK_STATELESS_SPECIFIC_TOOL_BOOST:()=>dt,RUNTIME_ERROR_THRESHOLD:()=>l,RUNTIME_ERROR_WINDOW_MS:()=>c,SANDBOX_EXEC_TIMEOUT_MS:()=>C,SANDBOX_MAX_TIMEOUT_MS:()=>Ar,SANDBOX_MEMORY_LIMIT_MB:()=>w,SANDBOX_STACK_SIZE_MB:()=>T,SANDBOX_TERMINATE_GRACE_MS:()=>E,SCAN_DISPLAY_RESULTS_LIMIT:()=>_n,SCAN_GROUP_MAX_PATTERN_SIZE:()=>bn,SCAN_MAX_RESULTS_PER_SCAN:()=>gn,SCAN_POINTER_MAX_RESULTS:()=>yn,SCAN_SESSION_MAX_COUNT:()=>xn,SCAN_SESSION_TTL_MS:()=>Sn,SCAN_UNKNOWN_INITIAL_MAX_ADDRESSES:()=>vn,SCRIPTS_MAX_CAP:()=>Mt,SEARCH_AFFINITY_BASE_WEIGHT:()=>rt,SEARCH_AFFINITY_BOOST_FACTOR:()=>Te,SEARCH_AFFINITY_TOP_N:()=>Ee,SEARCH_AUTO_ACTIVATE_DOMAINS:()=>fe,SEARCH_BM25_B:()=>ze,SEARCH_BM25_K1:()=>Re,SEARCH_CACHE_VECTOR_WEIGHT_TOLERANCE:()=>ke,SEARCH_COVERAGE_PRECISION_FACTOR:()=>it,SEARCH_DOMAIN_HUB_BOOST_MULTIPLIER:()=>nt,SEARCH_DOMAIN_HUB_THRESHOLD:()=>De,SEARCH_EXACT_NAME_MATCH_MULTIPLIER:()=>tt,SEARCH_PARAM_TOKEN_WEIGHT:()=>Ie,SEARCH_PREFIX_MATCH_MULTIPLIER:()=>at,SEARCH_QUERY_CACHE_CAPACITY:()=>Oe,SEARCH_RECENCY_MAX_BOOST:()=>$e,SEARCH_RECENCY_TRACKER_MAX:()=>et,SEARCH_RECENCY_WINDOW_MS:()=>Qe,SEARCH_RRF_BM25_BLEND:()=>Pe,SEARCH_RRF_K:()=>Me,SEARCH_RRF_RESCALE_FACTOR:()=>Ne,SEARCH_SCENE_KEYWORD_WEIGHT:()=>Le,SEARCH_SELF_RAG_ENABLED:()=>ot,SEARCH_SYNONYM_EXPANSION_LIMIT:()=>Fe,SEARCH_TIER_PENALTY:()=>Je,SEARCH_TIER_PENALTY_FULL:()=>Ze,SEARCH_TIER_PENALTY_SEARCH:()=>Ye,SEARCH_TIER_PENALTY_WORKFLOW:()=>Xe,SEARCH_TRIGRAM_THRESHOLD:()=>je,SEARCH_TRIGRAM_WEIGHT:()=>Ae,SEARCH_VECTOR_BM25_SKIP_THRESHOLD:()=>qe,SEARCH_VECTOR_COSINE_WEIGHT:()=>He,SEARCH_VECTOR_DYNAMIC_WEIGHT:()=>Ue,SEARCH_VECTOR_ENABLED:()=>Be,SEARCH_VECTOR_LEARN_DOWN:()=>Ge,SEARCH_VECTOR_LEARN_TOP_N:()=>Ke,SEARCH_VECTOR_LEARN_UP:()=>We,SEARCH_VECTOR_MODEL_ID:()=>Ve,SEARCH_WORKFLOW_DOMAIN_BOOST_MULTIPLIER:()=>ue,SHUTDOWN_TIMEOUT_MS:()=>s,SOURCEMAP_V4_RAW_FIELD_MAX_LEN:()=>Fr,SOURCEMAP_V4_RETRY_DELAY_MS:()=>Ir,STRUCT_ANALYZE_DEFAULT_SIZE:()=>On,STRUCT_RTTI_MAX_STRING_LEN:()=>An,STRUCT_VTABLE_MAX_FUNCTIONS:()=>kn,SYMBOLIC_EXEC_MAX_DEPTH:()=>O,SYMBOLIC_EXEC_MAX_PATHS:()=>D,SYMBOLIC_EXEC_TIMEOUT_MS:()=>k,SYSCALL_TRACE_DURATION_DEFAULT_SEC:()=>Mr,SYSCALL_TRACE_DURATION_MAX_SEC:()=>Pr,SYSCALL_TRACE_DURATION_MIN_SEC:()=>Nr,TOKEN_BUDGET_MAX_TOKENS:()=>zt,TRANSFORM_CRYPTO_POOL_IDLE_TIMEOUT_MS:()=>R,TRANSFORM_CRYPTO_POOL_MAX_OLD_GEN_MB:()=>z,TRANSFORM_CRYPTO_POOL_MAX_WORKERS:()=>L,TRANSFORM_CRYPTO_POOL_MAX_YOUNG_GEN_MB:()=>B,TRANSFORM_WORKER_TIMEOUT_MS:()=>I,UNIDBG_TIMEOUT_MS:()=>Nn,USERSPACE_MAX_ADDRESS:()=>Cn,V8_BYTECODE_SUBPROC_TIMEOUT_MS:()=>jr,WASM_BITWISE_OPS_THRESHOLD:()=>Rr,WASM_DEAD_CODE_MIN_MATCHES:()=>Lr,WASM_OPTIMIZE_TIMEOUT_MS:()=>H,WASM_TOOL_TIMEOUT_MS:()=>V,WASM_VM_DISPATCH_MIN_LOOPS:()=>zr,WATCH_EVAL_TIMEOUT_MS:()=>F,WEBHOOK_PROCESS_TIMEOUT_MS:()=>Kr,WIN_DEBUG_PORT_POLL_ATTEMPTS:()=>an,WIN_DEBUG_PORT_POLL_INTERVAL_MS:()=>on,WORKER_POOL_IDLE_TIMEOUT_MS:()=>Ft,WORKER_POOL_JOB_TIMEOUT_MS:()=>It,WORKER_POOL_MAX_WORKERS:()=>Pt,WORKER_POOL_MIN_WORKERS:()=>Nt,WORKFLOW_BUNDLE_CACHE_MAX_BYTES:()=>le,WORKFLOW_BUNDLE_CACHE_TTL_MS:()=>ce,WORKFLOW_JS_BUNDLE_FETCH_TIMEOUT_MS:()=>se,WORKFLOW_JS_BUNDLE_MAX_REDIRECTS:()=>oe,WORKFLOW_JS_BUNDLE_MAX_SIZE_BYTES:()=>ae,WRITE_HISTORY_MAX:()=>hn,WS_PAYLOAD_PREVIEW_LIMIT:()=>At,WS_PAYLOAD_SAMPLE_LIMIT:()=>jt});const r=(e,t)=>{let n=process.env[e];if(n===void 0||n===``)return t;let r=parseInt(n,10);return Number.isFinite(r)?r:t},i=(e,t)=>{let n=process.env[e];if(n===void 0||n===``)return t;let r=Number.parseFloat(n);return Number.isFinite(r)?r:t},a=(e,t)=>{let n=process.env[e];if(n===void 0||n===``)return t;let r=n.trim().toLowerCase();return r===`true`||r===`1`?!0:r===`false`||r===`0`?!1:t},o=(e,t)=>process.env[e]||t,ee=(e,t)=>{let n=process.env[e];return n?n.split(`,`).map(Number).filter(Number.isFinite):t},te=(e,t)=>{let n=process.env[e];if(!n)return t;let r=n.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);return r.length>0?r:t},ne=(e,t,n)=>{let i=process.env[e];if(i!==void 0&&i.trim().toLowerCase()===`auto`){let e=n();return Number.isFinite(e)&&e>0?Math.floor(e):t}return r(e,t)},re=()=>{try{return t().length}catch{return 4}},s=r(`SHUTDOWN_TIMEOUT_MS`,2e4),c=r(`RUNTIME_ERROR_WINDOW_MS`,6e4),l=r(`RUNTIME_ERROR_THRESHOLD`,8),u=ee(`DEBUG_PORT_CANDIDATES`,[9222,9229,9333,2039]),d=r(`DEFAULT_DEBUG_PORT`,9222),f=o(`GHIDRA_BRIDGE_URL`,`http://127.0.0.1:18080`),p=o(`IDA_BRIDGE_URL`,`http://127.0.0.1:18081`),m=process.env.CAPTCHA_SOLVER_BASE_URL?.trim()||process.env.CAPTCHA_2CAPTCHA_BASE_URL?.trim()||``;process.env.EXTENSION_REGISTRY_BASE_URL?.trim();const h=r(`MCP_HTTP_REQUEST_TIMEOUT_MS`,3e4),g=r(`MCP_HTTP_HEADERS_TIMEOUT_MS`,1e4),_=r(`MCP_HTTP_KEEPALIVE_TIMEOUT_MS`,864e5),v=r(`MCP_HTTP_FORCE_CLOSE_TIMEOUT_MS`,5e3),y=r(`EXTERNAL_TOOL_TIMEOUT_MS`,3e4),b=r(`EXTERNAL_TOOL_PROBE_TIMEOUT_MS`,5e3),x=r(`EXTERNAL_TOOL_PROBE_CACHE_TTL_MS`,6e4),S=r(`EXTERNAL_TOOL_FORCE_KILL_GRACE_MS`,2e3),C=r(`SANDBOX_EXEC_TIMEOUT_MS`,5e3),w=r(`SANDBOX_MEMORY_LIMIT_MB`,128),T=r(`SANDBOX_STACK_SIZE_MB`,4),E=r(`SANDBOX_TERMINATE_GRACE_MS`,2e3),D=r(`SYMBOLIC_EXEC_MAX_PATHS`,100),O=r(`SYMBOLIC_EXEC_MAX_DEPTH`,50),k=r(`SYMBOLIC_EXEC_TIMEOUT_MS`,3e4),A=r(`JSVMP_DEOBFUSCATE_TIMEOUT_MS`,3e4),j=r(`JSVMP_MAX_ITERATIONS`,100),M=r(`JSVMP_SYMBOLIC_MAX_STEPS`,1e3),N=r(`JSVMP_SYMBOLIC_TIMEOUT_MS`,3e4),P=r(`DEBUGGER_WAIT_FOR_PAUSED_TIMEOUT_MS`,3e4),F=r(`WATCH_EVAL_TIMEOUT_MS`,5e3),I=r(`TRANSFORM_WORKER_TIMEOUT_MS`,15e3);r(`TRANSFORM_VM_SCRIPT_TIMEOUT_MS`,5e3);const L=r(`TRANSFORM_CRYPTO_POOL_MAX_WORKERS`,4),R=r(`TRANSFORM_CRYPTO_POOL_IDLE_TIMEOUT_MS`,3e4),z=r(`TRANSFORM_CRYPTO_POOL_MAX_OLD_GEN_MB`,64),B=r(`TRANSFORM_CRYPTO_POOL_MAX_YOUNG_GEN_MB`,16);r(`EMULATOR_FETCH_GOTO_TIMEOUT_MS`,3e4);const V=r(`WASM_TOOL_TIMEOUT_MS`,6e4);r(`WASM_OFFLINE_RUN_TIMEOUT_MS`,1e4);const H=r(`WASM_OPTIMIZE_TIMEOUT_MS`,12e4);r(`MINIAPP_UNPACK_TIMEOUT_MS`,18e4);const U=r(`CAPTCHA_SUBMIT_TIMEOUT_MS`,15e3);r(`FETCH_ABORT_TIMEOUT_MS`,1e4);const W=r(`CAPTCHA_POLL_INTERVAL_MS`,5e3),G=r(`CAPTCHA_RESULT_TIMEOUT_MS`,1e4),K=r(`CAPTCHA_DEFAULT_TIMEOUT_MS`,18e4),q=r(`CAPTCHA_MIN_TIMEOUT_MS`,5e3),J=r(`CAPTCHA_MAX_TIMEOUT_MS`,6e5),Y=r(`CAPTCHA_MAX_RETRIES`,5),X=r(`CAPTCHA_DEFAULT_RETRIES`,2);r(`NETWORK_REPLAY_TIMEOUT_MS`,3e4),r(`NETWORK_REPLAY_MAX_BODY_BYTES`,512e3);const Z=r(`NETWORK_REPLAY_MAX_REDIRECTS`,5),ie=r(`NETWORK_HAR_BODY_CONCURRENCY`,4);r(`WORKFLOW_BATCH_MAX_ACCOUNTS`,50),r(`WORKFLOW_BATCH_MAX_CONCURRENCY`,1),r(`WORKFLOW_REGISTER_ACCOUNT_TIMEOUT_MS`,6e4),r(`WORKFLOW_ACTION_DELAY_MS`,1e3),r(`WORKFLOW_SETTLE_DELAY_MS`,2e3),r(`WORKFLOW_INPUT_DELAY_MS`,1500),r(`WORKFLOW_BATCH_MAX_RETRIES`,3),r(`WORKFLOW_BATCH_MAX_BACKOFF_MS`,3e4),r(`WORKFLOW_BATCH_MAX_TIMEOUT_MS`,3e5),r(`WORKFLOW_BATCH_RETRY_BACKOFF_MS`,2e3),r(`WORKFLOW_BATCH_TIMEOUT_PER_ACCOUNT_MS`,9e4);const ae=r(`WORKFLOW_JS_BUNDLE_MAX_SIZE_BYTES`,20*1024*1024),oe=r(`WORKFLOW_JS_BUNDLE_MAX_REDIRECTS`,5),se=r(`WORKFLOW_JS_BUNDLE_FETCH_TIMEOUT_MS`,3e4),ce=r(`WORKFLOW_BUNDLE_CACHE_TTL_MS`,300*1e3),le=r(`WORKFLOW_BUNDLE_CACHE_MAX_BYTES`,100*1024*1024);new Set(te(`SEARCH_WORKFLOW_BOOST_TIERS`,[`workflow`,`full`]));const ue=i(`SEARCH_WORKFLOW_DOMAIN_BOOST_MULTIPLIER`,2.4),de=r(`ACTIVATION_TTL_MINUTES`,30),fe=a(`SEARCH_AUTO_ACTIVATE_DOMAINS`,!0),pe=r(`AUTOPRUNE_AUTO_INACTIVITY_MS`,15*6e4),me=r(`AUTOPRUNE_MANUAL_INACTIVITY_MS`,30*6e4),he=r(`AUTOPRUNE_CHECK_INTERVAL_MS`,6e4),ge=r(`PREDICTIVE_MAX_HISTORY`,100),_e=i(`PREDICTIVE_CONFIDENCE_THRESHOLD`,.25),ve=i(`PREDICTIVE_DECAY_FACTOR`,.95),ye=r(`ACTIVATION_COOLDOWN_MS`,3e4),be=r(`ACTIVATION_COMPOUND_EVAL_EVERY`,5),xe=r(`ACTIVATION_EVENT_HISTORY_MAX`,200),Se=r(`ACTIVATION_BOOST_WINDOW_MS`,6e4),Ce=r(`COMPOUND_EVENT_WINDOW_MS`,12e4),we=r(`COMPOUND_LONG_WINDOW_MS`,3e5),Te=i(`SEARCH_AFFINITY_BOOST_FACTOR`,.38),Ee=r(`SEARCH_AFFINITY_TOP_N`,9),De=r(`SEARCH_DOMAIN_HUB_THRESHOLD`,5),Oe=r(`SEARCH_QUERY_CACHE_CAPACITY`,500),ke=i(`SEARCH_CACHE_VECTOR_WEIGHT_TOLERANCE`,.05),Ae=i(`SEARCH_TRIGRAM_WEIGHT`,.02),je=i(`SEARCH_TRIGRAM_THRESHOLD`,.47),Me=r(`SEARCH_RRF_K`,18),Ne=i(`SEARCH_RRF_RESCALE_FACTOR`,2100),Pe=i(`SEARCH_RRF_BM25_BLEND`,.39),Fe=r(`SEARCH_SYNONYM_EXPANSION_LIMIT`,2),Ie=i(`SEARCH_PARAM_TOKEN_WEIGHT`,1.1),Le=i(`SEARCH_SCENE_KEYWORD_WEIGHT`,.8),Re=i(`SEARCH_BM25_K1`,1),ze=i(`SEARCH_BM25_B`,.75),Be=a(`SEARCH_VECTOR_ENABLED`,!0),Ve=o(`SEARCH_VECTOR_MODEL_ID`,`Xenova/bge-micro-v2`),He=i(`SEARCH_VECTOR_COSINE_WEIGHT`,.53),Ue=a(`SEARCH_VECTOR_DYNAMIC_WEIGHT`,!0),We=i(`SEARCH_VECTOR_LEARN_UP`,.13),Ge=i(`SEARCH_VECTOR_LEARN_DOWN`,.02),Ke=r(`SEARCH_VECTOR_LEARN_TOP_N`,3),qe=i(`SEARCH_VECTOR_BM25_SKIP_THRESHOLD`,8),Je=i(`SEARCH_TIER_PENALTY`,.35),Ye=i(`SEARCH_TIER_PENALTY_SEARCH`,.4),Xe=i(`SEARCH_TIER_PENALTY_WORKFLOW`,.6),Ze=i(`SEARCH_TIER_PENALTY_FULL`,.6),Qe=r(`SEARCH_RECENCY_WINDOW_MS`,30*6e4),$e=i(`SEARCH_RECENCY_MAX_BOOST`,.1),et=r(`SEARCH_RECENCY_TRACKER_MAX`,200),tt=i(`SEARCH_EXACT_NAME_MATCH_MULTIPLIER`,3.2),nt=i(`SEARCH_DOMAIN_HUB_BOOST_MULTIPLIER`,1.04),rt=i(`SEARCH_AFFINITY_BASE_WEIGHT`,.5),it=i(`SEARCH_COVERAGE_PRECISION_FACTOR`,.94),at=i(`SEARCH_PREFIX_MATCH_MULTIPLIER`,.84),ot=a(`SEARCH_SELF_RAG_ENABLED`,!0),st=i(`RERANK_MAINTENANCE_PENALTY`,.43),ct=i(`RERANK_STATELESS_INTERACTIVE_PENALTY`,.65),lt=i(`RERANK_STATELESS_CORE_PENALTY`,.15),ut=i(`RERANK_STATELESS_COMPUTE_BOOST`,2.2),dt=i(`RERANK_STATELESS_SPECIFIC_TOOL_BOOST`,2.25),ft=i(`RERANK_BROWSER_LAUNCH_BOOST`,1.35),pt=i(`RERANK_BROWSER_ATTACH_BOOST`,1.55),mt=i(`RERANK_NETWORK_MONITOR_BOOST`,1.6),ht=i(`RERANK_NETWORK_GET_REQUESTS_BOOST`,1.55),gt=r(`PREDICTIVE_MAX_SECOND_ORDER_KEYS`,1e3),_t=r(`EXTENSION_GIT_CLONE_TIMEOUT_MS`,6e4),vt=r(`EXTENSION_GIT_CHECKOUT_TIMEOUT_MS`,3e4),yt=r(`PROCESS_LIST_MAX_BUFFER_BYTES`,1024*1024*10),bt=r(`EXTERNAL_TOOL_MAX_STDOUT_BYTES`,10*1024*1024),xt=r(`EXTERNAL_TOOL_MAX_STDERR_BYTES`,1*1024*1024),St=r(`GRAPHQL_MAX_PREVIEW_CHARS`,4e3),Ct=r(`GRAPHQL_MAX_SCHEMA_CHARS`,12e4),wt=r(`GRAPHQL_MAX_QUERY_CHARS`,12e3),Tt=r(`GRAPHQL_MAX_GRAPH_NODES`,2e3),Et=r(`GRAPHQL_MAX_GRAPH_EDGES`,5e3),Dt=r(`ANALYSIS_MAX_SUMMARY_FILES`,40),Ot=r(`ANALYSIS_MAX_SAFE_COLLECTED_BYTES`,256*1024),kt=r(`ANALYSIS_MAX_SAFE_RESPONSE_BYTES`,220*1024),At=r(`WS_PAYLOAD_PREVIEW_LIMIT`,200),jt=r(`WS_PAYLOAD_SAMPLE_LIMIT`,2e3),Mt=r(`SCRIPTS_MAX_CAP`,500),Nt=r(`WORKER_POOL_MIN_WORKERS`,2),Pt=ne(`WORKER_POOL_MAX_WORKERS`,4,()=>{let e=Math.floor(re()/2),t=r(`WORKER_POOL_MIN_WORKERS`,2);return Math.max(t,Math.min(8,e))}),Ft=r(`WORKER_POOL_IDLE_TIMEOUT_MS`,3e4),It=r(`WORKER_POOL_JOB_TIMEOUT_MS`,15e3);r(`PARALLEL_DEFAULT_CONCURRENCY`,3),r(`PARALLEL_DEFAULT_TIMEOUT_MS`,6e4),r(`PARALLEL_DEFAULT_MAX_RETRIES`,2),r(`PARALLEL_RETRY_BACKOFF_BASE_MS`,1e3);const Lt=r(`CACHE_GLOBAL_MAX_SIZE_BYTES`,500*1024*1024),Rt=i(`CACHE_LOW_HIT_RATE_THRESHOLD`,.3),zt=r(`TOKEN_BUDGET_MAX_TOKENS`,2e5),Bt=r(`DETAILED_DATA_DEFAULT_TTL_MS`,1800*1e3),Vt=r(`DETAILED_DATA_MAX_TTL_MS`,3600*1e3),Ht=r(`DETAILED_DATA_SMART_THRESHOLD_BYTES`,50*1024),Ut=r(`OFFLOAD_FIELD_SANITIZE_THRESHOLD_BYTES`,64*1024);r(`ADV_DEOBF_LLM_MAX_TOKENS`,3e3),r(`VM_DEOBF_LLM_MAX_TOKENS`,4e3),r(`DEOBF_LLM_MAX_TOKENS`,2e3),r(`CRYPTO_DETECT_LLM_MAX_TOKENS`,2e3);const Wt=r(`MEMORY_READ_TIMEOUT_MS`,1e4),Gt=r(`MEMORY_MAX_READ_BYTES`,16*1024*1024),Kt=r(`MEMORY_WRITE_TIMEOUT_MS`,1e4),qt=r(`MEMORY_MAX_WRITE_BYTES`,16*1024),Jt=r(`MEMORY_DUMP_TIMEOUT_MS`,6e4),Yt=r(`MEMORY_SCAN_TIMEOUT_MS`,12e4),Xt=r(`MEMORY_SCAN_MAX_BUFFER_BYTES`,1024*1024*50),Zt=r(`MEMORY_SCAN_MAX_RESULTS`,1e4);r(`MEMORY_SCAN_MAX_REGIONS`,5e4),r(`MEMORY_SCAN_REGION_MAX_BYTES`,16777216);const Qt=r(`MEMORY_INJECT_TIMEOUT_MS`,3e4),$t=a(`ENABLE_INJECTION_TOOLS`,!0);r(`MEMORY_MONITOR_INTERVAL_MS`,1e3);const en=r(`MEMORY_VMMAP_TIMEOUT_MS`,15e3),tn=r(`MEMORY_PROTECTION_QUERY_TIMEOUT_MS`,15e3),nn=r(`MEMORY_PROTECTION_PWSH_TIMEOUT_MS`,3e4),rn=r(`NATIVE_ADMIN_CHECK_TIMEOUT_MS`,5e3);r(`NATIVE_SCAN_MAX_RESULTS`,1e4);const Q=r(`PROCESS_LAUNCH_WAIT_MS`,2e3),an=r(`WIN_DEBUG_PORT_POLL_ATTEMPTS`,20),on=r(`WIN_DEBUG_PORT_POLL_INTERVAL_MS`,500);r(`PACKER_SANDBOX_TIMEOUT_MS`,3e3);const sn=r(`CODE_CAVE_MIN_SIZE`,16),cn=r(`BREAKPOINT_HIT_TIMEOUT_MS`,1e4),ln=r(`BREAKPOINT_TRACE_MAX_HITS`,100),un=r(`HEAP_ENUMERATE_MAX_BLOCKS`,1e4),dn=r(`HEAP_SPRAY_THRESHOLD`,50),fn=r(`HEAP_SPRAY_SIZE_TOLERANCE`,64),pn=r(`HEAP_SUSPICIOUS_BLOCK_SIZE`,10485760),mn=r(`FREEZE_DEFAULT_INTERVAL_MS`,100),hn=r(`WRITE_HISTORY_MAX`,200),gn=r(`SCAN_MAX_RESULTS_PER_SCAN`,1e5),_n=r(`SCAN_DISPLAY_RESULTS_LIMIT`,200),vn=r(`SCAN_UNKNOWN_INITIAL_MAX_ADDRESSES`,5e5),yn=r(`SCAN_POINTER_MAX_RESULTS`,5e3),bn=r(`SCAN_GROUP_MAX_PATTERN_SIZE`,256),xn=r(`SCAN_SESSION_MAX_COUNT`,20),Sn=r(`SCAN_SESSION_TTL_MS`,18e5),Cn=140737488289792n,wn=r(`POINTER_CHAIN_MAX_DEPTH`,6),Tn=r(`POINTER_CHAIN_MAX_OFFSET`,4096),En=r(`POINTER_CHAIN_MAX_RESULTS`,500),Dn=r(`POINTER_CHAIN_SCAN_CHUNK_SIZE`,16777216),On=r(`STRUCT_ANALYZE_DEFAULT_SIZE`,256),kn=r(`STRUCT_VTABLE_MAX_FUNCTIONS`,64),An=r(`STRUCT_RTTI_MAX_STRING_LEN`,256);r(`STRUCT_CSTRING_MAX_LEN`,256);const jn=r(`FRIDA_TIMEOUT_MS`,15e3),Mn=r(`GHIDRA_TIMEOUT_MS`,12e4),Nn=r(`UNIDBG_TIMEOUT_MS`,6e4),Pn=r(`NEMU_SESSION_IDLE_TTL_MS`,3e5),Fn=r(`NEMU_SESSION_SWEEP_MS`,6e4),In=r(`NEMU_MAX_SESSIONS`,64),Ln=r(`ADB_DEFAULT_TIMEOUT_MS`,3e4),Rn=r(`ADB_SHELL_TIMEOUT_MS`,6e4),zn=r(`ADB_MAX_BUFFER_BYTES`,16*1024*1024),Bn=r(`ADB_LARGE_OUTPUT_MAX_BUFFER_BYTES`,32*1024*1024),Vn=r(`ADB_FILE_TRANSFER_TIMEOUT_MS`,18e4),Hn=r(`ADB_PACKAGE_COMPONENT_LIMIT`,500),Un=te(`APK_ZIP_MAGIC_HEX_HEADERS`,[`504b0304`,`504b0506`,`504b0708`]),Wn=r(`ADB_LOGCAT_TAIL_DEFAULT`,500),Gn=r(`ADB_LOGCAT_TAIL_MAX`,2e4),Kn=r(`ADB_LOGCAT_MAX_LINES_DEFAULT`,100),qn=r(`ADB_LOGCAT_MAX_LINES_MAX`,5e3),Jn=r(`ADB_COLD_START_WAIT_MS_DEFAULT`,5e3),Yn=r(`ADB_COLD_START_WAIT_MS_MAX`,3e4),Xn=r(`ADB_COLD_START_LOGCAT_TAIL_DEFAULT`,800),Zn=r(`ADB_COLD_START_LOGCAT_TAIL_MIN`,100),Qn=r(`ADB_COLD_START_LOGCAT_TAIL_MAX`,2e4),$n=r(`ADB_COLD_START_TIMELINE_LIMIT`,300);r(`ADB_WEBVIEW_HTTP_TIMEOUT_MS`,5e3),r(`ADB_WEBVIEW_WS_TIMEOUT_MS`,1e4);const er=r(`ADB_WEBVIEW_HOST_PORT_DEFAULT`,9222),tr=r(`PROXY_CAPTURE_BUFFER_MAX`,5e3),nr=r(`PROXY_CAPTURE_RETURN_LIMIT`,100),rr=r(`PROXY_ADB_TIMEOUT_MS`,6e4),ir=r(`PROXY_ADB_MAX_BUFFER_BYTES`,8*1024*1024),ar=r(`APK_STATIC_TRIAGE_MIN_ENTRIES`,100),or=r(`APK_STATIC_TRIAGE_DEFAULT_ENTRIES`,2e3),sr=r(`APK_STATIC_TRIAGE_MAX_ENTRIES`,2e4),cr=r(`APK_STATIC_TRIAGE_ASSET_HINT_LIMIT`,200),lr=r(`APK_STATIC_TRIAGE_NATIVE_LIB_LIMIT`,300),ur=r(`DEX_SCAN_DEFAULT_MAX_HITS`,50),dr=r(`DEX_SCAN_MAX_HITS`,500),fr=r(`DEX_SCAN_MAX_EXTRACT_BYTES`,512*1024*1024),pr=o(`DEX_MAGIC_ASCII`,`dex
|
|
2
|
+
`),mr=o(`CDEX_MAGIC_ASCII`,`cdex`),hr=r(`BINARY_STRINGS_MIN_LENGTH_DEFAULT`,4),gr=r(`BINARY_STRINGS_MIN_LENGTH_FLOOR`,2),_r=r(`BINARY_STRINGS_MIN_LENGTH_CEILING`,256),vr=r(`BINARY_STRINGS_MAX_RESULTS_DEFAULT`,1e3),yr=r(`BINARY_STRINGS_MAX_RESULTS_LIMIT`,5e4),br=r(`BINARY_STRINGS_PRINTABLE_ASCII_MIN`,32),xr=r(`BINARY_STRINGS_PRINTABLE_ASCII_MAX`,126),Sr=r(`FRIDA_DEX_DUMP_TIMEOUT_MS`,18e4),Cr=r(`FRIDA_DEX_DUMP_MAX_BUFFER_BYTES`,16*1024*1024),wr=r(`FRIDA_DEX_DUMP_FILE_LIMIT`,500),Tr=r(`MOJO_MONITOR_TIMEOUT_MS`,1e4),Er=r(`MEMORY_AVAILABILITY_CACHE_TTL_MS`,45e3),Dr=r(`HTTP_RATE_LIMIT_MAX_IPS`,1e4),Or=r(`HTTP_CLEANUP_INTERVAL_MS`,5*6e4);r(`SSE_HEARTBEAT_MS`,3e4);const kr=a(`MCP_COMPACT_SCHEMA`,!0),Ar=r(`SANDBOX_MAX_TIMEOUT_MS`,3e4);r(`NATIVE_BRIDGE_TIMEOUT_MS`,15e3),r(`SOURCEMAP_EXT_TIMEOUT_MS`,15e3);const jr=r(`V8_BYTECODE_SUBPROC_TIMEOUT_MS`,6e4),Mr=r(`SYSCALL_TRACE_DURATION_DEFAULT_SEC`,10),Nr=r(`SYSCALL_TRACE_DURATION_MIN_SEC`,1),Pr=r(`SYSCALL_TRACE_DURATION_MAX_SEC`,300),Fr=r(`SOURCEMAP_V4_RAW_FIELD_MAX_LEN`,200),Ir=r(`SOURCEMAP_V4_RETRY_DELAY_MS`,250),Lr=r(`WASM_DEAD_CODE_MIN_MATCHES`,10),Rr=r(`WASM_BITWISE_OPS_THRESHOLD`,20),zr=r(`WASM_VM_DISPATCH_MIN_LOOPS`,3),Br=r(`PROTO_TLS_MIN_RECORD_LEN`,4),Vr=i(`PROTO_TLS_CONFIDENCE`,.95),Hr=i(`PROTO_WS_CONFIDENCE`,.85),Ur=i(`PROTO_HTTP_CONFIDENCE`,.95),Wr=i(`PROTO_SSH_CONFIDENCE`,.95),Gr=r(`BOT_DETECT_LIMIT_DEFAULT`,50);r(`BOT_DETECT_LIMIT_MIN`,1),r(`BOT_DETECT_LIMIT_MAX`,500);const Kr=r(`WEBHOOK_PROCESS_TIMEOUT_MS`,1e4);r(`ORCHESTRATOR_STEP_TIMEOUT_MS`,1e4);const qr=r(`MACRO_DEFAULT_TIMEOUT_MS`,12e4),Jr=r(`MACRO_BUILTIN_TIMEOUT_MS`,6e4),Yr=r(`PAGE_FRAME_SELECTOR_TIMEOUT_MS`,1e4),Xr=r(`PAGE_NETWORK_IDLE_TIMEOUT_MS`,3e4),Zr=r(`DOM_QUERY_DEFAULT_LIMIT`,50),Qr=r(`DOM_WAIT_ELEMENT_TIMEOUT_MS`,3e4);r(`BROWSER_POOL_IDLE_TIMEOUT_MS`,3e5),r(`BROWSER_POOL_MAX_TABS`,10);const $r=r(`ICMP_PROBE_TIMEOUT_MS`,5e3),ei=r(`ICMP_TRACEROUTE_MAX_HOPS`,30),ti=r(`ICMP_DEFAULT_PACKET_SIZE`,32);r(`ADB_VERSION_CHECK_TIMEOUT_MS`,5e3);const ni=r(`COORDINATION_GOTO_TIMEOUT_MS`,3e4),ri=r(`MEMORY_AUDIT_TRAIL_CAPACITY`,5e3),ii=r(`MEMORY_PROCESS_SIGNAL_TIMEOUT_MS`,2e3),ai=r(`MEMORY_PROBE_CMD_TIMEOUT_MS`,5e3),oi=r(`MEMORY_VMMAP_ENUM_TIMEOUT_MS`,15e3),si=r(`MEMORY_MODULES_TIMEOUT_MS`,3e4),ci=a(`MCP_LOG_ENABLED`,!1),li=o(`MCP_LOG_LEVEL`,`info`),ui=o(`MCP_LOG_FILE_DIR`,``),di=r(`DART_MIN_LENGTH`,4);r(`DART_MIN_LENGTH_FLOOR`,2),r(`DART_MIN_LENGTH_CEILING`,64);const fi=r(`DART_MAX_CHUNK_BYTES`,16*1024*1024),pi=r(`DART_CHUNK_OVERLAP_BYTES`,128),mi=r(`DART_PRINTABLE_ASCII_MIN`,32),hi=r(`DART_PRINTABLE_ASCII_MAX`,126),gi=o(`DART_DEFAULT_ENCODING`,`both`),_i=r(`DART_MAX_OFFSETS_PER_STRING`,1e3),vi=r(`DART_MAX_REGEX_PATTERN_LENGTH`,256),yi=r(`DART_REGEX_TIMEOUT_MS`,50),bi=o(`DART_ALLOWED_REGEX_FLAGS`,`iu`);r(`DART_MAX_EXTRACT_DURATION_MS`,3e4),r(`DART_MAX_RESULT_BYTES`,16*1024*1024);const xi=r(`DART_MAX_SMI_VALUE`,1e6),Si=r(`DART_MAX_MAP_BYTES`,16*1024*1024),Ci=r(`DART_MAX_PACKAGES_PER_RESULT`,1e3),wi=r(`DART_MAX_FILES_PER_PACKAGE`,50),Ti=r(`DART_SNAPSHOT_MAX_FILE_BYTES`,1024*1024*1024),Ei=r(`DART_SNAPSHOT_HEADER_SCAN_MAX_BYTES`,32*1024*1024),Di=o(`DART_SNAPSHOT_TABLE_PATH`,``),Oi=r(`DART_PP_MAX_SLOTS`,4096),ki=r(`DART_PP_PREVIEW_BYTES`,64),$=r(`DART_PP_MAX_DUMP_DURATION_MS`,1e4);export{G as $,Lr as $i,ie as $n,ke as $r,f as $t,lr as A,ue as Ai,ri as An,ct as Ar,Bt as At,xr as B,Mr as Bi,tn as Bn,bn as Br,vt as Bt,Ot as C,He as Ci,v as Cn,pt as Cr,yi as Ct,or as D,Ke as Di,ci as Dn,mt as Dr,P as Dt,cr as E,Ge as Ei,h as En,ht as Er,Di as Et,vr as F,An as Fi,qt as Fn,Ar as Fr,fr as Ft,Lt as G,z as Gi,oi as Gn,vn as Gr,x as Gt,Gr as H,Nr as Hi,Xt as Hn,yn as Hr,S as Ht,yr as I,kn as Ii,si as In,w as Ir,dr as It,K as J,I as Ji,Tr as Jn,Te as Jr,mn as Jt,Rt as K,L as Ki,en as Kn,Mt as Kr,b as Kt,_r as L,O as Li,ai as Ln,T as Lr,Zr as Lt,pe as M,Fr as Mi,Jt as Mn,l as Mr,Ht as Mt,he as N,Ir as Ni,Qt as Nn,c as Nr,pr as Nt,sr as O,We as Oi,ui as On,ut as Or,u as Ot,me as P,On as Pi,Gt as Pn,C as Pr,ur as Pt,W as Q,Rr as Qi,Fn as Qn,Re as Qr,jn as Qt,hr as R,D as Ri,ii as Rn,E as Rr,Qr as Rt,er as S,qe as Si,kr as Sn,nr as Sr,mi as St,Dt as T,Be as Ti,_ as Tn,st as Tr,Ti as Tt,cn as U,zt as Ui,Zt as Un,xn as Ur,xt as Ut,br as V,Pr as Vi,Wt as Vn,gn as Vr,_t as Vt,ln as W,R as Wi,Yt as Wn,Sn as Wr,bt as Wt,J as X,Cn as Xi,In as Xn,fe as Xr,Cr as Xt,Y,Nn as Yi,rn as Yn,Ee as Yr,wr as Yt,q as Z,jr as Zi,Pn as Zn,ze as Zr,Sr as Zt,Wn as _,At as _a,Ze as _i,j as _n,Br as _r,di as _t,de as a,an as aa,at as ai,Ct as an,Tn as ar,we as at,Hn as b,je as bi,Jr as bn,rr as br,ki as bt,Zn as c,It as ca,et as ci,dn as cn,_e as cr,pi as ct,Yn as d,le as da,Me as di,Dr as dn,gt as dr,wi as dt,H as ea,it as ei,Mn as en,Z as er,m as et,Ln as f,ce as fa,Ne as fi,ti as fn,Q as fr,Si as ft,qn as g,hn as ga,Je as gi,A as gn,Vr as gr,xi as gt,Kn as h,ae as ha,Fe as hi,p as hn,Wr as hr,vi as ht,xe as i,Kr as ia,Ie as ii,wt as in,wn as ir,Ce as it,Un as j,s as ji,Er as jn,dt as jr,Vt as jt,ar as k,Ve as ki,li as kn,lt as kr,d as kt,$n as l,Pt as la,Qe as li,pn as ln,ve as lr,gi as lt,Bn as m,oe as ma,ot as mi,ei as mn,Ur as mr,Ci as mt,be as n,zr as na,De as ni,Tt as nn,Yr as nr,mr as nt,Xn as o,on as oa,Oe as oi,un as on,En as or,ni as ot,Vn as p,se as pa,Le as pi,$r as pn,yt as pr,_i as pt,X as q,B as qi,Kt as qn,rt as qr,y as qt,ye as r,F as ra,tt as ri,St as rn,Xr as rr,sn as rt,Qn as s,Ft as sa,$e as si,fn as sn,Dn as sr,bi as st,Se as t,V as ta,nt as ti,Et as tn,Ut as tr,U as tt,Jn as u,Nt as ua,Pe as ui,Or as un,ge as ur,fi as ut,Gn as v,jt as va,Ye as vi,M as vn,Hr as vr,$ as vt,kt as w,Ue as wi,g as wn,ft as wr,Ei as wt,Rn as x,Ae as xi,qr as xn,tr as xr,hi as xt,zn as y,n as ya,Xe as yi,N as yn,ir as yr,Oi as yt,gr as z,k as zi,nn as zn,_n as zr,$t as zt};
|