@jshookmcp/jshook 0.2.9 → 0.3.0

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.
Files changed (187) hide show
  1. package/README.md +2 -2
  2. package/README.zh.md +2 -2
  3. package/dist/{AntiCheatDetector-BNk-EoBt.mjs → AntiCheatDetector-CqGDXmfc.mjs} +159 -53
  4. package/dist/{CodeInjector-Cq8q01kp.mjs → CodeInjector-BdjRfNx7.mjs} +5 -5
  5. package/dist/{ConsoleMonitor-CPVQW1Y-.mjs → ConsoleMonitor-DykL3IAw.mjs} +85 -17
  6. package/dist/{DetailedDataManager-BQQcxh64.mjs → DetailedDataManager-HT49OrvF.mjs} +1 -1
  7. package/dist/{ExtensionManager-CWYgw0YW.mjs → ExtensionManager-BDMsY2Dz.mjs} +15 -8
  8. package/dist/{HardwareBreakpoint-B9gZCdFP.mjs → HardwareBreakpoint-Cc2AFq1Y.mjs} +3 -3
  9. package/dist/{HeapAnalyzer-BLDH0dCv.mjs → HeapAnalyzer-DruMgsgj.mjs} +20 -20
  10. package/dist/{HookGeneratorBuilders.core.generators.storage-CtcdK78Q.mjs → HookGeneratorBuilders.core.generators.storage-CTbB4Lcx.mjs} +1 -74
  11. package/dist/{InstrumentationSession-CvPC7Jwy.mjs → InstrumentationSession-DLH0vd-z.mjs} +2 -2
  12. package/dist/{MemoryController-CbVdCIJF.mjs → MemoryController-CMtviNW_.mjs} +3 -3
  13. package/dist/{MemoryScanSession-BsDZbLYm.mjs → MemoryScanSession-ITgb_NMi.mjs} +2 -2
  14. package/dist/{MemoryScanner-Bcpml6II.mjs → MemoryScanner-CiL7Z3ey.mjs} +12 -9
  15. package/dist/{NativeMemoryManager.impl-dZtA1ZGn.mjs → NativeMemoryManager.impl-D9Lkovvn.mjs} +13 -10
  16. package/dist/{NativeMemoryManager.utils-B-FjA2mJ.mjs → NativeMemoryManager.utils-BBlAixF5.mjs} +1 -1
  17. package/dist/{PEAnalyzer-D1lzJ_VG.mjs → PEAnalyzer-DMQ44gen.mjs} +15 -15
  18. package/dist/{PageController-Bqm2kZ_X.mjs → PageController-BPJNqqBN.mjs} +18 -4
  19. package/dist/{PointerChainEngine-BOhyVsjx.mjs → PointerChainEngine-K7wN8Z-w.mjs} +10 -7
  20. package/dist/ProcessRegistry-zGg12QbE.mjs +74 -0
  21. package/dist/{ResponseBuilder-D3iFYx2N.mjs → ResponseBuilder-CJXWmWNw.mjs} +10 -10
  22. package/dist/{ScriptManager-aHHq0X7U.mjs → ScriptManager-ZuWD-0Jg.mjs} +195 -192
  23. package/dist/{Speedhack-CqdIFlQl.mjs → Speedhack-D-z0umeT.mjs} +2 -2
  24. package/dist/{StructureAnalyzer-DhFaPvRO.mjs → StructureAnalyzer-Cav5AVSL.mjs} +9 -6
  25. package/dist/{ToolCatalog-C0JGZoOm.mjs → ToolCatalog-5OJdMiF0.mjs} +81 -81
  26. package/dist/{ToolProbe-oC7aPrkv.mjs → ToolProbe-DbCFGyrg.mjs} +1 -1
  27. package/dist/{ToolRegistry-BjaF4oNz.mjs → ToolRegistry-B9krbTtI.mjs} +51 -2
  28. package/dist/{ToolRouter.policy-BWV67ZK-.mjs → ToolRouter.policy-BGDAGyeH.mjs} +60 -20
  29. package/dist/TraceRecorder-B41Z5XBj.mjs +1286 -0
  30. package/dist/{Win32API-CePkipZY.mjs → Win32API-C2kjj0ze.mjs} +18 -12
  31. package/dist/{Win32Debug-BvKs-gxc.mjs → Win32Debug-CKrGOTpo.mjs} +2 -2
  32. package/dist/{WorkflowEngine-CuvkZtWu.mjs → WorkflowEngine-DJ6M4opp.mjs} +226 -255
  33. package/dist/analysis-BHeJW2Nb.mjs +1234 -0
  34. package/dist/{antidebug-CqDTB_uk.mjs → antidebug-BRKeyt27.mjs} +3 -3
  35. package/dist/{artifactRetention-CFEprwPw.mjs → artifactRetention-CPXkUJXp.mjs} +13 -6
  36. package/dist/{artifacts-Bk2-_uPq.mjs → artifacts-DkfosXH3.mjs} +1 -1
  37. package/dist/authorization-schema-DRqyJMSk.mjs +31 -0
  38. package/dist/{binary-instrument-CXfpx6fT.mjs → binary-instrument--V3MAhJ4.mjs} +19 -27
  39. package/dist/bind-helpers-ClV34xdn.mjs +42 -0
  40. package/dist/{boringssl-inspector-BH2D3VKc.mjs → boringssl-inspector-Bo_LOLaS.mjs} +1 -1
  41. package/dist/{browser-BpOr5PEx.mjs → browser-Dx3_S2cG.mjs} +324 -37
  42. package/dist/capabilities-CcHlvWgK.mjs +33 -0
  43. package/dist/{constants-B0OANIBL.mjs → constants-CDZLOoVv.mjs} +18 -3
  44. package/dist/{coordination-qUbyF8KU.mjs → coordination-DgItD9DL.mjs} +2 -2
  45. package/dist/{debugger-gnKxRSN0.mjs → debugger-RS3RSAqs.mjs} +30 -13
  46. package/dist/definitions-BEoYofW5.mjs +47 -0
  47. package/dist/{definitions-bAhHQJq9.mjs → definitions-BRaefg3u.mjs} +11 -5
  48. package/dist/{definitions-DVGfrn7y.mjs → definitions-BbkvZkiv.mjs} +2 -2
  49. package/dist/definitions-BtWSHJ3o.mjs +17 -0
  50. package/dist/{definitions-BMfYXoNC.mjs → definitions-C1gCHO0i.mjs} +1 -1
  51. package/dist/{definitions-C1UvM5Iy.mjs → definitions-CDOg_b-l.mjs} +14 -2
  52. package/dist/definitions-CVPD9hzZ.mjs +54 -0
  53. package/dist/{definitions-Cke7zEb8.mjs → definitions-Cea8Lgl7.mjs} +1 -1
  54. package/dist/definitions-DAgIyjxM.mjs +10 -0
  55. package/dist/{definitions-B4rAvHNZ.mjs → definitions-DJA27nsL.mjs} +12 -9
  56. package/dist/{definitions-ClJLzsJQ.mjs → definitions-DKPFU3LW.mjs} +1 -1
  57. package/dist/{definitions-D3VsGcvz.mjs → definitions-DPRpZQ96.mjs} +7 -7
  58. package/dist/{definitions-B18eyf0B.mjs → definitions-DUE5gmdn.mjs} +1 -1
  59. package/dist/definitions-DYVjOtxa.mjs +26 -0
  60. package/dist/{definitions-BB_4jnmy.mjs → definitions-DcYLVLCo.mjs} +1 -1
  61. package/dist/{definitions-Beid2EB3.mjs → definitions-Pp5LI2H4.mjs} +1 -1
  62. package/dist/definitions-j9KdHVNR.mjs +14 -0
  63. package/dist/definitions-uzkjBwa7.mjs +258 -0
  64. package/dist/{definitions-Cq-zroAU.mjs → definitions-va-AnLuQ.mjs} +4 -4
  65. package/dist/{encoding-Bvz5jLRv.mjs → encoding-DJeqHmpd.mjs} +18 -4
  66. package/dist/{evidence-graph-bridge-C_fv9PuC.mjs → evidence-graph-bridge-DcYizFk2.mjs} +1 -0
  67. package/dist/{factory-DxlGh9Xf.mjs → factory-C90tBff6.mjs} +6 -6
  68. package/dist/flat-target-session-Dgax2Cy3.mjs +29 -0
  69. package/dist/{graphql-DYWzJ29s.mjs → graphql-CoHrhweh.mjs} +205 -34
  70. package/dist/{handlers-C67ktuRN.mjs → handlers-4jmR0nMs.mjs} +220 -32
  71. package/dist/{handlers-DlCJN4Td.mjs → handlers-BAHPxcch.mjs} +122 -90
  72. package/dist/{handlers-9sAbfIg-.mjs → handlers-BOs9b907.mjs} +849 -801
  73. package/dist/{handlers-DxGIq15_2.mjs → handlers-BWXEy6ef.mjs} +16 -16
  74. package/dist/{handlers-tB9Mp9ZK.mjs → handlers-Bndn6QvE.mjs} +31 -4
  75. package/dist/{handlers-CTsDAO6p.mjs → handlers-BqC4bD4s.mjs} +1 -1
  76. package/dist/{handlers-C87g8oCe.mjs → handlers-BtYq60bM2.mjs} +1 -1
  77. package/dist/{handlers-DeLOCd5m.mjs → handlers-BzgcB4iv.mjs} +17 -17
  78. package/dist/{handlers-Cgyg6c0U.mjs → handlers-CRyRWj2b.mjs} +237 -23
  79. package/dist/{handlers-U6L4xhuF.mjs → handlers-CVv2H1uq.mjs} +24 -17
  80. package/dist/{handlers-tiy7EIBp.mjs → handlers-Dl5a7JS4.mjs} +3 -3
  81. package/dist/{handlers-D6j6yka7.mjs → handlers-Dx2d7jt7.mjs} +1893 -1480
  82. package/dist/{handlers-Bl8zkwz1.mjs → handlers-Dz9PYsCa.mjs} +95 -6
  83. package/dist/handlers-HujRKC3b.mjs +661 -0
  84. package/dist/{handlers.impl-DS0d9fUw.mjs → handlers.impl-XWXkQfyi.mjs} +70 -24
  85. package/dist/{hooks-CzCWByww.mjs → hooks-B1B8NRHL.mjs} +3 -3
  86. package/dist/index.mjs +154 -144
  87. package/dist/{maintenance-P7ePRXQC.mjs → maintenance-PRMkLVRW.mjs} +35 -30
  88. package/dist/manifest-67Bok-Si.mjs +58 -0
  89. package/dist/{manifest-B3QVVeBS.mjs → manifest-6lNTMZAB2.mjs} +33 -28
  90. package/dist/manifest-B2duEHiH.mjs +90 -0
  91. package/dist/manifest-B6EY9Vm8.mjs +57 -0
  92. package/dist/{manifest-gZ4s_UtG.mjs → manifest-B6nKSbyY.mjs} +32 -33
  93. package/dist/{manifest-2ToTpjv8.mjs → manifest-BL8AQNPF.mjs} +31 -31
  94. package/dist/{manifest-DzwvxPJX.mjs → manifest-BSZvJJmV.mjs} +23 -14
  95. package/dist/{manifest-Sc_0JQ13.mjs → manifest-BU7qzUyX.mjs} +23 -23
  96. package/dist/{manifest-CT7zZBV1.mjs → manifest-Bl62e8WK.mjs} +24 -23
  97. package/dist/manifest-Bo5cXjdt.mjs +82 -0
  98. package/dist/manifest-BpS4gtUK.mjs +1347 -0
  99. package/dist/manifest-Bv65_e2W.mjs +101 -0
  100. package/dist/manifest-BytNIF4Z.mjs +117 -0
  101. package/dist/{manifest-BqrQ4Tpj.mjs → manifest-C-xtsjS3.mjs} +23 -23
  102. package/dist/{manifest-NXctwWQq.mjs → manifest-CDYl7OhA.mjs} +36 -38
  103. package/dist/manifest-CRZ3xmkD.mjs +61 -0
  104. package/dist/manifest-CoW6u4Tp.mjs +132 -0
  105. package/dist/manifest-Cq5zN_8A.mjs +50 -0
  106. package/dist/{manifest-CAhOuvSl.mjs → manifest-D7YZM_2e.mjs} +75 -85
  107. package/dist/{manifest-DCyjf4n2.mjs → manifest-DE_VrAeQ.mjs} +27 -7
  108. package/dist/manifest-DGsXSCpT.mjs +39 -0
  109. package/dist/{manifest-BB2J8IMJ.mjs → manifest-DJ2vfEuW.mjs} +48 -41
  110. package/dist/{manifest-3g71z6Bg.mjs → manifest-DPXDYhEu.mjs} +26 -25
  111. package/dist/manifest-Dd4fQb0a.mjs +322 -0
  112. package/dist/{manifest-CXsRWjjI.mjs → manifest-Deq6opGg.mjs} +95 -96
  113. package/dist/{manifest-C9RT5nk32.mjs → manifest-DfJTafJK.mjs} +14 -11
  114. package/dist/manifest-DgOdgN_j.mjs +50 -0
  115. package/dist/{manifest-BmtZzQiQ2.mjs → manifest-DlbMW4v4.mjs} +17 -15
  116. package/dist/{manifest-DrbmZcFl2.mjs → manifest-DmVfbH0w.mjs} +212 -91
  117. package/dist/manifest-Dog6Ddjr.mjs +109 -0
  118. package/dist/manifest-DvgU5FWb.mjs +58 -0
  119. package/dist/manifest-HsfDBs7j.mjs +50 -0
  120. package/dist/manifest-I8oQHvCG.mjs +186 -0
  121. package/dist/manifest-NvH_a-av.mjs +786 -0
  122. package/dist/{manifest-Dh8WBmEW.mjs → manifest-cEJU1v0Z.mjs} +24 -24
  123. package/dist/manifest-wOl5XLB12.mjs +112 -0
  124. package/dist/{modules-C184v-S9.mjs → modules-tZozf0LQ.mjs} +130 -860
  125. package/dist/{mojo-ipc-B_H61Afw.mjs → mojo-ipc-DXNEXEqb.mjs} +141 -26
  126. package/dist/{network-671Cw6hV.mjs → network-CPVvwvFg.mjs} +1329 -823
  127. package/dist/{outputPaths-B1uGmrWZ.mjs → outputPaths-um7lCRY3.mjs} +4 -8
  128. package/dist/{platform-WmNn8Sxb.mjs → platform-CYeFoTWp.mjs} +101 -10
  129. package/dist/{process-QcbIy5Zq.mjs → process-BTbgcVc6.mjs} +251 -346
  130. package/dist/{proxy-DqNs0bAd.mjs → proxy-r8YN6nP1.mjs} +30 -8
  131. package/dist/{registry-D-6e18lB.mjs → registry-Bl8ZQW61.mjs} +3 -3
  132. package/dist/{response-BQVP-xUn.mjs → response-CWhh2aLo.mjs} +7 -1
  133. package/dist/{shared-state-board-DV-dpHFJ.mjs → shared-state-board-BoZnSoj-.mjs} +2 -2
  134. package/dist/{sourcemap-Dq8ez8vS.mjs → sourcemap-BIDHUVXy.mjs} +350 -66
  135. package/dist/{streaming-BUQ0VJsg.mjs → streaming-Dal6utPp.mjs} +13 -13
  136. package/dist/{tool-builder-DCbIC5Eo.mjs → tool-builder-BHJp32mV.mjs} +1 -1
  137. package/dist/{transform-CiYJfNX0.mjs → transform-DRVgGG90.mjs} +18 -14
  138. package/dist/wasm-BYx5UOeG.mjs +1044 -0
  139. package/dist/webcrack-Be0_FccV.mjs +747 -0
  140. package/dist/{workflow-f3xJOcjx.mjs → workflow-BpuKEtvn.mjs} +8 -8
  141. package/package.json +76 -43
  142. package/dist/TraceRecorder-DgxyVbdQ.mjs +0 -519
  143. package/dist/analysis-CL9uACt9.mjs +0 -463
  144. package/dist/bind-helpers-xFfRF-qm.mjs +0 -22
  145. package/dist/definitions-6M-eejaT.mjs +0 -53
  146. package/dist/definitions-B3QdlrHv.mjs +0 -34
  147. package/dist/definitions-CXEI7QC72.mjs +0 -216
  148. package/dist/definitions-C_4r7Fo-2.mjs +0 -14
  149. package/dist/definitions-CkFDALoa.mjs +0 -26
  150. package/dist/definitions-Cy3Sl6gV.mjs +0 -34
  151. package/dist/definitions-LKpC3-nL.mjs +0 -9
  152. package/dist/handlers-DdFzXLvF.mjs +0 -446
  153. package/dist/manifest-82baTv4U.mjs +0 -45
  154. package/dist/manifest-BKbgbSiY.mjs +0 -60
  155. package/dist/manifest-Bcf-TJzH.mjs +0 -848
  156. package/dist/manifest-Bnd7kqEY.mjs +0 -55
  157. package/dist/manifest-BqQX6OQC2.mjs +0 -65
  158. package/dist/manifest-Br4RPFt5.mjs +0 -370
  159. package/dist/manifest-C5qDjysN.mjs +0 -107
  160. package/dist/manifest-CBYWCUBJ.mjs +0 -51
  161. package/dist/manifest-CFADCRa1.mjs +0 -37
  162. package/dist/manifest-CQVhavRF.mjs +0 -114
  163. package/dist/manifest-CV12bcrF.mjs +0 -121
  164. package/dist/manifest-CZLUCfG02.mjs +0 -95
  165. package/dist/manifest-D6phHKFd.mjs +0 -131
  166. package/dist/manifest-DHsnKgP6.mjs +0 -60
  167. package/dist/manifest-Df_dliIe.mjs +0 -55
  168. package/dist/manifest-DhKRAT8_.mjs +0 -92
  169. package/dist/manifest-DlpTj4ic2.mjs +0 -193
  170. package/dist/manifest-DuwHjUa5.mjs +0 -70
  171. package/dist/manifest-qSleDqdO.mjs +0 -1023
  172. package/dist/wasm-DQTnHDs4.mjs +0 -531
  173. /package/dist/{CacheAdapters-CDe5WPSV.mjs → CacheAdapters-jJFy20G-.mjs} +0 -0
  174. /package/dist/{DarwinAPI-BNPxu0RH.mjs → DarwinAPI-ETyy0xyo.mjs} +0 -0
  175. /package/dist/{EventBus-DgPmwpeu.mjs → EventBus-DFKvADm3.mjs} +0 -0
  176. /package/dist/{EvidenceGraphBridge-SFesNera.mjs → EvidenceGraphBridge-318Oi0Lf.mjs} +0 -0
  177. /package/dist/{FingerprintManager-gzWtkKuf.mjs → FingerprintManager-BN4UQWnX.mjs} +0 -0
  178. /package/dist/{PrerequisiteError-Dl33Svkz.mjs → PrerequisiteError-TuyZIs6n.mjs} +0 -0
  179. /package/dist/{ReverseEvidenceGraph-Dlsk94LC.mjs → ReverseEvidenceGraph-C02-gXOh.mjs} +0 -0
  180. /package/dist/{StealthVerifier-Bo4T3bz8.mjs → StealthVerifier-BWmPgQsv.mjs} +0 -0
  181. /package/dist/{VersionDetector-CwVLVdDM.mjs → VersionDetector-K3V4vGsw.mjs} +0 -0
  182. /package/dist/{betterSqlite3-0pqusHHH.mjs → betterSqlite3-DLSBZodi.mjs} +0 -0
  183. /package/dist/{concurrency-Bt0yv1kJ.mjs → concurrency-Drev_Vz9.mjs} +0 -0
  184. /package/dist/{formatAddress-DVkj9kpI.mjs → formatAddress-nnMvEohD.mjs} +0 -0
  185. /package/dist/{parse-args-BlRjqlkL.mjs → parse-args-B4cY5Vx5.mjs} +0 -0
  186. /package/dist/{ssrf-policy-ZaUfvhq7.mjs → ssrf-policy-Dsqd-DTX.mjs} +0 -0
  187. /package/dist/{types-CPhOReNX.mjs → types-DDBWs9UP.mjs} +0 -0
@@ -1,14 +1,15 @@
1
1
  import { t as logger } from "./logger-Dh_xb7_2.mjs";
2
- import { C as CAPTCHA_MAX_TIMEOUT_MS, D as CAPTCHA_SOLVER_BASE_URL, E as CAPTCHA_RESULT_TIMEOUT_MS, O as CAPTCHA_SUBMIT_TIMEOUT_MS, S as CAPTCHA_MAX_RETRIES, T as CAPTCHA_POLL_INTERVAL_MS, b as CAPTCHA_DEFAULT_RETRIES, vn as SCRIPTS_MAX_CAP, w as CAPTCHA_MIN_TIMEOUT_MS, x as CAPTCHA_DEFAULT_TIMEOUT_MS } from "./constants-B0OANIBL.mjs";
3
- import { t as DetailedDataManager } from "./DetailedDataManager-BQQcxh64.mjs";
4
- import { c as getConfig, l as projectRoot, o as resolveOutputDirectory, s as resolveScreenshotOutputPath } from "./outputPaths-B1uGmrWZ.mjs";
5
- import { c as AICaptchaDetector, l as CamoufoxBrowserManager, n as StealthScripts } from "./modules-C184v-S9.mjs";
6
- import { t as PrerequisiteError } from "./PrerequisiteError-Dl33Svkz.mjs";
7
- import { n as isBetterSqlite3RelatedError, t as formatBetterSqlite3Error } from "./betterSqlite3-0pqusHHH.mjs";
8
- import { t as cdpLimit } from "./concurrency-Bt0yv1kJ.mjs";
9
- import { a as argString, i as argObject, n as argEnum, o as argStringArray, r as argNumber, s as argStringRequired, t as argBool } from "./parse-args-BlRjqlkL.mjs";
10
- import "./definitions-bAhHQJq9.mjs";
11
- import { t as R } from "./ResponseBuilder-D3iFYx2N.mjs";
2
+ import { C as CAPTCHA_MAX_RETRIES, D as CAPTCHA_RESULT_TIMEOUT_MS, E as CAPTCHA_POLL_INTERVAL_MS, O as CAPTCHA_SOLVER_BASE_URL, S as CAPTCHA_DEFAULT_TIMEOUT_MS, T as CAPTCHA_MIN_TIMEOUT_MS, k as CAPTCHA_SUBMIT_TIMEOUT_MS, w as CAPTCHA_MAX_TIMEOUT_MS, wn as SCRIPTS_MAX_CAP, x as CAPTCHA_DEFAULT_RETRIES } from "./constants-CDZLOoVv.mjs";
3
+ import { t as DetailedDataManager } from "./DetailedDataManager-HT49OrvF.mjs";
4
+ import { c as getConfig, l as projectRoot, o as resolveOutputDirectory, s as resolveScreenshotOutputPath } from "./outputPaths-um7lCRY3.mjs";
5
+ import { c as CamoufoxBrowserManager, n as StealthScripts, s as AICaptchaDetector } from "./modules-tZozf0LQ.mjs";
6
+ import { t as PrerequisiteError } from "./PrerequisiteError-TuyZIs6n.mjs";
7
+ import { n as isBetterSqlite3RelatedError, t as formatBetterSqlite3Error } from "./betterSqlite3-DLSBZodi.mjs";
8
+ import { t as cdpLimit } from "./concurrency-Drev_Vz9.mjs";
9
+ import { a as argString, i as argObject, n as argEnum, o as argStringArray, r as argNumber, s as argStringRequired, t as argBool } from "./parse-args-B4cY5Vx5.mjs";
10
+ import { n as capabilityReport } from "./capabilities-CcHlvWgK.mjs";
11
+ import "./definitions-BRaefg3u.mjs";
12
+ import { t as R } from "./ResponseBuilder-CJXWmWNw.mjs";
12
13
  import { join } from "path";
13
14
  import { randomUUID } from "node:crypto";
14
15
  import { readFile, writeFile } from "fs/promises";
@@ -73,6 +74,13 @@ var BrowserControlHandlers = class {
73
74
  channel: channelValue
74
75
  };
75
76
  }
77
+ parseChromeLaunchRequest(args) {
78
+ return {
79
+ headless: this.parseHeadlessArg(args.headless),
80
+ args: argStringArray(args, "args"),
81
+ enableV8NativesSyntax: argBool(args, "enableV8NativesSyntax")
82
+ };
83
+ }
76
84
  hasChromeConnectRequest(request) {
77
85
  return Boolean(request.browserURL || request.wsEndpoint || request.autoConnect || request.userDataDir || request.channel);
78
86
  }
@@ -115,7 +123,7 @@ var BrowserControlHandlers = class {
115
123
  if (argString(args, "driver", "chrome") === "camoufox") {
116
124
  if (argString(args, "mode", "launch") === "connect") {
117
125
  const wsEndpoint = argString(args, "wsEndpoint");
118
- if (!wsEndpoint) return R.fail("wsEndpoint is required for connect mode. Use camoufox_server_launch first to get a wsEndpoint.").json();
126
+ if (!wsEndpoint) return R.fail("wsEndpoint is required for connect mode. Use camoufox_server({ action: \"launch\" }) first to get a wsEndpoint.").json();
119
127
  return R.ok().merge({
120
128
  driver: "camoufox",
121
129
  mode: "connect",
@@ -148,20 +156,38 @@ var BrowserControlHandlers = class {
148
156
  status
149
157
  }).json();
150
158
  }
151
- const chromeHeadless = this.parseHeadlessArg(args.headless);
159
+ const launchRequest = this.parseChromeLaunchRequest(args);
152
160
  try {
153
- await this.deps.collector.init(chromeHeadless);
161
+ const launch = await this.deps.collector.launch(launchRequest);
162
+ if (launch.action === "relaunched") this.markMonitoringContextChanged("browser_launch_relaunch");
163
+ const status = await this.deps.collector.getStatus();
164
+ return R.ok().merge({
165
+ driver: "chrome",
166
+ message: launch.action === "relaunched" ? "Browser relaunched successfully" : "Browser launched successfully",
167
+ launchAction: launch.action,
168
+ relaunchReason: launch.reason ?? null,
169
+ v8NativeSyntaxEnabled: launch.launchOptions.v8NativeSyntaxEnabled,
170
+ launchArgs: launch.launchOptions.args,
171
+ status
172
+ }).json();
154
173
  } catch (error) {
155
- if (!this.shouldAttemptLinuxHeadfulFallback(chromeHeadless, error)) throw error;
174
+ if (!this.shouldAttemptLinuxHeadfulFallback(launchRequest.headless, error)) throw error;
156
175
  const reason = error instanceof Error ? error.message : String(error);
157
176
  logger.warn(`Headful launch failed on Linux, fallback to headless=true: ${reason}`);
158
177
  process.env.PUPPETEER_HEADLESS = "true";
159
178
  await this.persistHeadlessEnv("true");
160
- await this.deps.collector.init(true);
179
+ const launch = await this.deps.collector.launch({
180
+ ...launchRequest,
181
+ headless: true
182
+ });
161
183
  const fallbackStatus = await this.deps.collector.getStatus();
162
184
  return R.ok().merge({
163
185
  driver: "chrome",
164
186
  message: "Browser launched with Linux fallback (headless=true)",
187
+ launchAction: launch.action,
188
+ relaunchReason: launch.reason ?? null,
189
+ v8NativeSyntaxEnabled: launch.launchOptions.v8NativeSyntaxEnabled,
190
+ launchArgs: launch.launchOptions.args,
165
191
  status: fallbackStatus,
166
192
  fallback: {
167
193
  applied: true,
@@ -170,12 +196,6 @@ var BrowserControlHandlers = class {
170
196
  }
171
197
  }).json();
172
198
  }
173
- const status = await this.deps.collector.getStatus();
174
- return R.ok().merge({
175
- driver: "chrome",
176
- message: "Browser launched successfully",
177
- status
178
- }).json();
179
199
  } catch (error) {
180
200
  return R.fail(error).json();
181
201
  }
@@ -613,6 +633,12 @@ var PageInteractionHandlers = class {
613
633
  max: 6e4,
614
634
  integer: true
615
635
  });
636
+ const timeout = this.parseNumberArg(args.timeout, {
637
+ defaultValue: 1e4,
638
+ min: 1e3,
639
+ max: 12e4,
640
+ integer: true
641
+ });
616
642
  const frameUrl = argString(args, "frameUrl");
617
643
  const frameSelector = argString(args, "frameSelector");
618
644
  const frameOptions = frameUrl || frameSelector ? {
@@ -636,12 +662,14 @@ var PageInteractionHandlers = class {
636
662
  if (frameOptions) await this.deps.pageController.click(selector, {
637
663
  button,
638
664
  clickCount,
639
- delay
665
+ delay,
666
+ timeout
640
667
  }, frameOptions);
641
668
  else await this.deps.pageController.click(selector, {
642
669
  button,
643
670
  clickCount,
644
- delay
671
+ delay,
672
+ timeout
645
673
  });
646
674
  } catch (error) {
647
675
  const msg = this.toErrorMessage(error);
@@ -894,7 +922,7 @@ var PageEvaluationHandlers = class {
894
922
  const trimmed = rawSelector.trim();
895
923
  if (trimmed.length > 0 && trimmed.toLowerCase() !== "all") selectors.push(trimmed);
896
924
  }
897
- if (selectors.length > 1) return this._screenshotBatch(selectors, requestedPath, type, quality);
925
+ if (selectors.length > 1) return this.screenshotBatch(selectors, requestedPath, type, quality);
898
926
  const selector = selectors[0] ?? "";
899
927
  const { absolutePath, displayPath, pathRewritten } = await resolveScreenshotOutputPath({
900
928
  requestedPath,
@@ -958,7 +986,7 @@ var PageEvaluationHandlers = class {
958
986
  }
959
987
  }
960
988
  /** Take one screenshot per selector and return all results. */
961
- async _screenshotBatch(selectors, requestedPath, type, quality) {
989
+ async screenshotBatch(selectors, requestedPath, type, quality) {
962
990
  const isCamoufox = this.deps.getActiveDriver() === "camoufox";
963
991
  const results = [];
964
992
  for (const selector of selectors) {
@@ -1374,19 +1402,125 @@ var CaptchaHandlers = class {
1374
1402
  }
1375
1403
  };
1376
1404
  //#endregion
1377
- //#region src/server/domains/browser/handlers/stealth-injection.ts
1378
- /** Module-level jitter configuration shared across handler calls. */
1379
- const jitterOptions = {
1405
+ //#region src/modules/stealth/CDPTimingProxy.types.ts
1406
+ const DEFAULT_TIMING_OPTIONS = {
1380
1407
  enabled: true,
1381
1408
  minDelayMs: 20,
1382
1409
  maxDelayMs: 80,
1383
1410
  burstMode: false
1384
1411
  };
1412
+ //#endregion
1413
+ //#region src/modules/stealth/SessionProfileManager.ts
1414
+ var SessionProfileManager = class SessionProfileManager {
1415
+ static instance = null;
1416
+ cachedProfile = null;
1417
+ static DEFAULT_TTL_SEC = 1800;
1418
+ static getInstance() {
1419
+ if (!SessionProfileManager.instance) SessionProfileManager.instance = new SessionProfileManager();
1420
+ return SessionProfileManager.instance;
1421
+ }
1422
+ async exportFromPage(page, options = {}) {
1423
+ const cookies = await page.cookies();
1424
+ const pageMeta = await page.evaluate(() => {
1425
+ const nav = navigator;
1426
+ const uaData = nav.userAgentData;
1427
+ const clientHints = {
1428
+ secChUa: Array.isArray(uaData?.brands) ? uaData.brands.map((b) => `"${b.brand}";v="${b.version}"`).join(", ") : void 0,
1429
+ secChUaMobile: typeof uaData?.mobile === "boolean" ? uaData.mobile ? "?1" : "?0" : void 0,
1430
+ secChUaPlatform: uaData?.platform ? `"${uaData.platform}"` : void 0
1431
+ };
1432
+ return {
1433
+ userAgent: nav.userAgent,
1434
+ platform: nav.platform,
1435
+ acceptLanguage: nav.language,
1436
+ referer: document.referrer || void 0,
1437
+ clientHints
1438
+ };
1439
+ });
1440
+ const origin = options.origin ?? this.safeOrigin(page.url());
1441
+ const ttlSec = options.ttlSec ?? SessionProfileManager.DEFAULT_TTL_SEC;
1442
+ const profile = {
1443
+ cookies: cookies.map((c) => ({
1444
+ name: c.name,
1445
+ value: c.value,
1446
+ domain: c.domain,
1447
+ path: c.path,
1448
+ expires: c.expires,
1449
+ size: c.size,
1450
+ httpOnly: c.httpOnly,
1451
+ secure: c.secure,
1452
+ session: c.session,
1453
+ sameSite: c.sameSite,
1454
+ sourceScheme: c.sourceScheme
1455
+ })),
1456
+ userAgent: pageMeta.userAgent,
1457
+ acceptLanguage: pageMeta.acceptLanguage,
1458
+ referer: options.referer ?? pageMeta.referer,
1459
+ clientHints: pageMeta.clientHints,
1460
+ platform: pageMeta.platform,
1461
+ origin,
1462
+ collectedAt: Date.now(),
1463
+ ttlSec
1464
+ };
1465
+ this.cachedProfile = profile;
1466
+ logger.info(`Session profile exported: cookies=${profile.cookies.length}, origin=${profile.origin ?? "unknown"}, ttlSec=${profile.ttlSec}`);
1467
+ return profile;
1468
+ }
1469
+ serialize(profile) {
1470
+ return JSON.stringify(profile);
1471
+ }
1472
+ deserialize(raw) {
1473
+ const parsed = JSON.parse(raw);
1474
+ return {
1475
+ cookies: Array.isArray(parsed.cookies) ? parsed.cookies : [],
1476
+ userAgent: parsed.userAgent,
1477
+ acceptLanguage: parsed.acceptLanguage,
1478
+ referer: parsed.referer,
1479
+ clientHints: parsed.clientHints,
1480
+ platform: parsed.platform,
1481
+ origin: parsed.origin,
1482
+ collectedAt: typeof parsed.collectedAt === "number" ? parsed.collectedAt : Date.now(),
1483
+ ttlSec: typeof parsed.ttlSec === "number" && parsed.ttlSec > 0 ? parsed.ttlSec : SessionProfileManager.DEFAULT_TTL_SEC
1484
+ };
1485
+ }
1486
+ setProfile(profile) {
1487
+ this.cachedProfile = profile;
1488
+ }
1489
+ getProfile() {
1490
+ return this.cachedProfile;
1491
+ }
1492
+ getValidProfile(now = Date.now()) {
1493
+ if (!this.cachedProfile || this.isExpired(this.cachedProfile, now)) return null;
1494
+ return this.cachedProfile;
1495
+ }
1496
+ isExpired(profile, now = Date.now()) {
1497
+ return profile.collectedAt + profile.ttlSec * 1e3 <= now;
1498
+ }
1499
+ clearProfile() {
1500
+ this.cachedProfile = null;
1501
+ }
1502
+ static resetInstance() {
1503
+ SessionProfileManager.instance = null;
1504
+ }
1505
+ safeOrigin(url) {
1506
+ if (!url || url === "about:blank") return void 0;
1507
+ try {
1508
+ return new URL(url).origin;
1509
+ } catch {
1510
+ return;
1511
+ }
1512
+ }
1513
+ };
1514
+ //#endregion
1515
+ //#region src/server/domains/browser/handlers/stealth-injection.ts
1516
+ /** Module-level jitter configuration shared across handler calls. */
1517
+ const jitterOptions = { ...DEFAULT_TIMING_OPTIONS };
1385
1518
  let fingerprintManagerInstance = null;
1519
+ const sessionProfileManager = SessionProfileManager.getInstance();
1386
1520
  async function getFingerprintManager() {
1387
1521
  if (fingerprintManagerInstance) return fingerprintManagerInstance;
1388
1522
  try {
1389
- fingerprintManagerInstance = (await import("./FingerprintManager-gzWtkKuf.mjs")).FingerprintManager.getInstance();
1523
+ fingerprintManagerInstance = (await import("./FingerprintManager-BN4UQWnX.mjs")).FingerprintManager.getInstance();
1390
1524
  return fingerprintManagerInstance;
1391
1525
  } catch {
1392
1526
  return null;
@@ -1416,6 +1550,22 @@ var StealthInjectionHandlers = class {
1416
1550
  logger.warn("Fingerprint injection failed, falling back to StealthScripts:", err);
1417
1551
  }
1418
1552
  await StealthScripts.injectAll(page);
1553
+ if (fingerprintApplied && fm) {
1554
+ const activeProfile = fm.getActiveProfile();
1555
+ const cached = sessionProfileManager.getValidProfile();
1556
+ const mergedProfile = {
1557
+ cookies: cached?.cookies ?? [],
1558
+ userAgent: activeProfile?.headers?.["User-Agent"] ?? cached?.userAgent,
1559
+ acceptLanguage: activeProfile?.headers?.["Accept-Language"] ?? cached?.acceptLanguage,
1560
+ referer: cached?.referer,
1561
+ clientHints: cached?.clientHints,
1562
+ platform: activeProfile?.os ?? cached?.platform,
1563
+ origin: cached?.origin,
1564
+ collectedAt: cached?.collectedAt ?? Date.now(),
1565
+ ttlSec: cached?.ttlSec ?? 1800
1566
+ };
1567
+ sessionProfileManager.setProfile(mergedProfile);
1568
+ }
1419
1569
  return R.ok().build({
1420
1570
  message: "Stealth scripts injected successfully",
1421
1571
  fingerprintApplied,
@@ -1468,7 +1618,12 @@ var StealthInjectionHandlers = class {
1468
1618
  return R.fail(`Camoufox fingerprint generation failed: ${err instanceof Error ? err.message : String(err)}`).build();
1469
1619
  }
1470
1620
  const fm = await getFingerprintManager();
1471
- if (!fm?.isAvailable()) return R.fail("fingerprint-generator/fingerprint-injector packages are not installed. Install them with: pnpm add fingerprint-generator fingerprint-injector").build();
1621
+ if (!fm?.isAvailable()) return R.fail("fingerprint-generator/fingerprint-injector packages are not installed. Install them with: pnpm add fingerprint-generator fingerprint-injector").merge({
1622
+ available: false,
1623
+ capability: "fingerprint_generator",
1624
+ status: "unavailable",
1625
+ fix: "Install fingerprint-generator and fingerprint-injector: pnpm add fingerprint-generator fingerprint-injector"
1626
+ }).build();
1472
1627
  const profile = await fm.generateFingerprint({
1473
1628
  os: args.os,
1474
1629
  browser: args.browser ?? "chrome",
@@ -1485,7 +1640,7 @@ var StealthInjectionHandlers = class {
1485
1640
  async handleStealthVerify(_args) {
1486
1641
  try {
1487
1642
  const page = await this.deps.pageController.getPage();
1488
- const result = await new (await (import("./StealthVerifier-Bo4T3bz8.mjs"))).StealthVerifier().verify(page);
1643
+ const result = await new (await (import("./StealthVerifier-BWmPgQsv.mjs"))).StealthVerifier().verify(page);
1489
1644
  return R.ok().merge(result).build();
1490
1645
  } catch (err) {
1491
1646
  return R.fail(`Stealth verification failed: ${err instanceof Error ? err.message : String(err)}`).build();
@@ -1499,7 +1654,12 @@ var StealthInjectionHandlers = class {
1499
1654
  try {
1500
1655
  geo = await (await import("camoufox-js/locale")).getGeolocation(locale);
1501
1656
  } catch (err) {
1502
- return R.fail(`Camoufox locale module unavailable: ${err instanceof Error ? err.message : String(err)}. Ensure camoufox-js is installed.`).build();
1657
+ return R.fail(`Camoufox locale module unavailable: ${err instanceof Error ? err.message : String(err)}. Ensure camoufox-js is installed.`).merge({
1658
+ available: false,
1659
+ capability: "camoufox_locale",
1660
+ status: "unavailable",
1661
+ fix: "Install camoufox-js and fetch its browser assets: pnpm add camoufox-js && npx camoufox-js fetch"
1662
+ }).build();
1503
1663
  }
1504
1664
  let publicIp = null;
1505
1665
  const proxy = argString(args, "proxy");
@@ -2120,7 +2280,7 @@ var JSHeapSearchHandlers = class {
2120
2280
  this.detailedDataManager = DetailedDataManager.getInstance();
2121
2281
  }
2122
2282
  async handleJSHeapSearch(args) {
2123
- const pattern = argString(args, "pattern", "");
2283
+ const pattern = argString(args, "pattern", "") || argString(args, "query", "");
2124
2284
  const maxResults = argNumber(args, "maxResults", 50);
2125
2285
  const caseSensitive = argBool(args, "caseSensitive", false);
2126
2286
  if (!pattern) return R.fail("pattern is required").build();
@@ -3260,8 +3420,9 @@ async function handleHumanScroll(args, collector) {
3260
3420
  if (!page) return R.fail("No active page.").build();
3261
3421
  const distance = Math.max(1, Math.min(argNumber(args, "distance", 500), 1e4));
3262
3422
  const direction = argString(args, "direction", "down");
3423
+ const durationMs = Math.max(10, Math.min(argNumber(args, "durationMs", 1500), 3e4));
3263
3424
  const segments = Math.max(1, Math.min(argNumber(args, "segments", 8), 200));
3264
- const pauseMs = Math.max(0, Math.min(argNumber(args, "pauseMs", 80), 5e3));
3425
+ const pauseMs = typeof args["pauseMs"] === "number" && Number.isFinite(args["pauseMs"]) ? Math.max(0, Math.min(argNumber(args, "pauseMs", 80), 5e3)) : Math.max(0, Math.min(Math.round(durationMs / segments), 5e3));
3265
3426
  const jitter = Math.max(0, Math.min(argNumber(args, "jitter", .3), 1));
3266
3427
  const selector = argString(args, "selector");
3267
3428
  const isVertical = direction === "up" || direction === "down";
@@ -3294,6 +3455,8 @@ async function handleHumanScroll(args, collector) {
3294
3455
  direction,
3295
3456
  requestedDistance: distance,
3296
3457
  actualScrolled: Math.round(scrolled),
3458
+ durationMs,
3459
+ pauseMs,
3297
3460
  segments
3298
3461
  });
3299
3462
  } catch (e) {
@@ -3588,6 +3751,127 @@ async function handleWidgetChallengeSolve(args, collector) {
3588
3751
  }
3589
3752
  }
3590
3753
  //#endregion
3754
+ //#region src/server/domains/browser/handlers/captcha-capabilities.ts
3755
+ function getConfiguredProvider() {
3756
+ return (process.env.CAPTCHA_PROVIDER || "").trim().toLowerCase() || "manual";
3757
+ }
3758
+ function getConfiguredBaseUrl() {
3759
+ return process.env.CAPTCHA_SOLVER_BASE_URL?.trim() || process.env.CAPTCHA_2CAPTCHA_BASE_URL?.trim() || "";
3760
+ }
3761
+ function getTwoCaptchaCapability() {
3762
+ const configuredProvider = getConfiguredProvider();
3763
+ const baseUrl = getConfiguredBaseUrl();
3764
+ const apiKeyConfigured = Boolean(process.env.CAPTCHA_API_KEY?.trim());
3765
+ const baseUrlConfigured = baseUrl.length > 0;
3766
+ const available = apiKeyConfigured && baseUrlConfigured;
3767
+ return {
3768
+ capability: "captcha_external_service_2captcha",
3769
+ status: available ? "available" : "unavailable",
3770
+ reason: available ? void 0 : "The 2captcha-compatible external path needs both CAPTCHA_API_KEY and CAPTCHA_SOLVER_BASE_URL.",
3771
+ fix: available ? void 0 : "Set CAPTCHA_API_KEY and CAPTCHA_SOLVER_BASE_URL to enable external_service mode.",
3772
+ details: {
3773
+ tools: ["captcha_vision_solve", "widget_challenge_solve"],
3774
+ configuredProvider,
3775
+ defaultExternalProviderSupported: configuredProvider === "2captcha",
3776
+ apiKeyConfigured,
3777
+ baseUrlConfigured,
3778
+ ...baseUrlConfigured ? { baseUrl } : {}
3779
+ }
3780
+ };
3781
+ }
3782
+ async function getWidgetHookCapability(collector) {
3783
+ let page;
3784
+ try {
3785
+ page = await collector.getActivePage();
3786
+ } catch (error) {
3787
+ return {
3788
+ capability: "captcha_widget_hook_current_page",
3789
+ status: "unknown",
3790
+ reason: `Current page probe failed: ${error instanceof Error ? error.message : String(error)}`,
3791
+ fix: "Attach or launch a browser page before using hook mode.",
3792
+ details: {
3793
+ tools: ["widget_challenge_solve"],
3794
+ pageAttached: false
3795
+ }
3796
+ };
3797
+ }
3798
+ if (!page) return {
3799
+ capability: "captcha_widget_hook_current_page",
3800
+ status: "unknown",
3801
+ reason: "No active page is attached.",
3802
+ fix: "Attach or launch a browser page before using hook mode.",
3803
+ details: {
3804
+ tools: ["widget_challenge_solve"],
3805
+ pageAttached: false
3806
+ }
3807
+ };
3808
+ try {
3809
+ const probe = await page.evaluate(() => {
3810
+ const callbacksRaw = window.__turnstile_callbacks;
3811
+ const callbackCount = callbacksRaw && typeof callbacksRaw === "object" && !Array.isArray(callbacksRaw) ? Object.keys(callbacksRaw).length : 0;
3812
+ return {
3813
+ url: location.href,
3814
+ callbackCount
3815
+ };
3816
+ });
3817
+ return {
3818
+ capability: "captcha_widget_hook_current_page",
3819
+ status: probe.callbackCount > 0 ? "available" : "unavailable",
3820
+ reason: probe.callbackCount > 0 ? void 0 : "The current page does not expose window.__turnstile_callbacks for hook mode.",
3821
+ fix: probe.callbackCount > 0 ? void 0 : "Use manual mode, or configure the external 2captcha-compatible service for widget solving.",
3822
+ details: {
3823
+ tools: ["widget_challenge_solve"],
3824
+ pageAttached: true,
3825
+ ...probe
3826
+ }
3827
+ };
3828
+ } catch (error) {
3829
+ return {
3830
+ capability: "captcha_widget_hook_current_page",
3831
+ status: "unknown",
3832
+ reason: `Current page probe failed: ${error instanceof Error ? error.message : String(error)}`,
3833
+ fix: "Ensure the attached page is reachable before using hook mode.",
3834
+ details: {
3835
+ tools: ["widget_challenge_solve"],
3836
+ pageAttached: true
3837
+ }
3838
+ };
3839
+ }
3840
+ }
3841
+ async function handleCaptchaSolverCapabilities(collector) {
3842
+ const configuredProvider = getConfiguredProvider();
3843
+ const widgetHookCapability = await getWidgetHookCapability(collector);
3844
+ return R.raw(capabilityReport("captcha_solver_capabilities", [
3845
+ {
3846
+ capability: "captcha_manual",
3847
+ status: "available",
3848
+ details: { tools: ["captcha_vision_solve", "widget_challenge_solve"] }
3849
+ },
3850
+ getTwoCaptchaCapability(),
3851
+ {
3852
+ capability: "captcha_external_service_anticaptcha",
3853
+ status: "unavailable",
3854
+ reason: "AntiCaptcha integration is not implemented in this build.",
3855
+ fix: "Use manual mode or the configured 2captcha-compatible service instead.",
3856
+ details: {
3857
+ tools: ["captcha_vision_solve", "widget_challenge_solve"],
3858
+ configuredProvider
3859
+ }
3860
+ },
3861
+ {
3862
+ capability: "captcha_external_service_capsolver",
3863
+ status: "unavailable",
3864
+ reason: "CapSolver integration is not implemented in this build.",
3865
+ fix: "Use manual mode or the configured 2captcha-compatible service instead.",
3866
+ details: {
3867
+ tools: ["captcha_vision_solve", "widget_challenge_solve"],
3868
+ configuredProvider
3869
+ }
3870
+ },
3871
+ widgetHookCapability
3872
+ ], { configuredProvider }));
3873
+ }
3874
+ //#endregion
3591
3875
  //#region src/server/domains/browser/handlers/camoufox-flow.ts
3592
3876
  function extractCamoufoxConfig(args) {
3593
3877
  const addons = argStringArray(args, "addons");
@@ -3718,7 +4002,7 @@ var BrowserToolHandlers = class {
3718
4002
  tabWorkflow;
3719
4003
  detailedData;
3720
4004
  jsdomHandlers;
3721
- _tabRegistry;
4005
+ tabRegistry;
3722
4006
  constructor(collector, pageController, scriptManager, consoleMonitor, eventBus) {
3723
4007
  this.collector = collector;
3724
4008
  this.pageController = pageController;
@@ -3773,11 +4057,11 @@ var BrowserToolHandlers = class {
3773
4057
  this.tabWorkflow = modules.tabWorkflow;
3774
4058
  this.detailedData = modules.detailedData;
3775
4059
  this.jsdomHandlers = modules.jsdomHandlers;
3776
- this._tabRegistry = modules.tabRegistry;
4060
+ this.tabRegistry = modules.tabRegistry;
3777
4061
  }
3778
4062
  /** Get the shared TabRegistry for context enrichment. */
3779
4063
  getTabRegistry() {
3780
- return this._tabRegistry;
4064
+ return this.tabRegistry;
3781
4065
  }
3782
4066
  /** Get or create camoufox page (Playwright Page). */
3783
4067
  async getCamoufoxPage() {
@@ -4062,6 +4346,9 @@ var BrowserToolHandlers = class {
4062
4346
  async handleWidgetChallengeSolve(args) {
4063
4347
  return handleWidgetChallengeSolve(args, this.collector);
4064
4348
  }
4349
+ async handleCaptchaSolverCapabilities() {
4350
+ return handleCaptchaSolverCapabilities(this.collector);
4351
+ }
4065
4352
  async handleJsdomParse(args) {
4066
4353
  return this.jsdomHandlers.handleJsdomParse(args);
4067
4354
  }
@@ -0,0 +1,33 @@
1
+ //#region src/server/domains/shared/capabilities.ts
2
+ function capabilityEntry(options) {
3
+ return {
4
+ capability: options.capability,
5
+ status: options.status,
6
+ available: options.status === "available",
7
+ ...options.reason ? { reason: options.reason } : {},
8
+ ...options.fix ? { fix: options.fix } : {},
9
+ ...options.details
10
+ };
11
+ }
12
+ function capabilityReport(tool, capabilities, extra = {}) {
13
+ return {
14
+ success: true,
15
+ tool,
16
+ capabilities: capabilities.map(capabilityEntry),
17
+ ...extra
18
+ };
19
+ }
20
+ function capabilityFailure(tool, capability, reason, fix, extra = {}) {
21
+ return {
22
+ success: false,
23
+ tool,
24
+ capability,
25
+ status: "unavailable",
26
+ available: false,
27
+ reason,
28
+ ...fix ? { fix } : {},
29
+ ...extra
30
+ };
31
+ }
32
+ //#endregion
33
+ export { capabilityReport as n, capabilityFailure as t };
@@ -475,10 +475,25 @@ const MCP_COMPACT_SCHEMA = bool("MCP_COMPACT_SCHEMA", true);
475
475
  /** Hard ceiling applied to user-supplied sandbox exec timeouts. */
476
476
  const SANDBOX_MAX_TIMEOUT_MS = int("SANDBOX_MAX_TIMEOUT_MS", 3e4);
477
477
  int("NATIVE_BRIDGE_TIMEOUT_MS", 15e3);
478
- /** Timeout for the sourcemap-extension fetch helper. */
479
- const SOURCEMAP_EXT_TIMEOUT_MS = int("SOURCEMAP_EXT_TIMEOUT_MS", 15e3);
478
+ int("SOURCEMAP_EXT_TIMEOUT_MS", 15e3);
480
479
  /** Timeout for the V8 bytecode extraction subprocess helper. */
481
480
  const V8_BYTECODE_SUBPROC_TIMEOUT_MS = int("V8_BYTECODE_SUBPROC_TIMEOUT_MS", 6e4);
481
+ const SYSCALL_TRACE_DURATION_DEFAULT_SEC = int("SYSCALL_TRACE_DURATION_DEFAULT_SEC", 10);
482
+ const SYSCALL_TRACE_DURATION_MIN_SEC = int("SYSCALL_TRACE_DURATION_MIN_SEC", 1);
483
+ const SYSCALL_TRACE_DURATION_MAX_SEC = int("SYSCALL_TRACE_DURATION_MAX_SEC", 300);
484
+ const SOURCEMAP_V4_RAW_FIELD_MAX_LEN = int("SOURCEMAP_V4_RAW_FIELD_MAX_LEN", 200);
485
+ const SOURCEMAP_V4_RETRY_DELAY_MS = int("SOURCEMAP_V4_RETRY_DELAY_MS", 250);
486
+ const WASM_DEAD_CODE_MIN_MATCHES = int("WASM_DEAD_CODE_MIN_MATCHES", 10);
487
+ const WASM_BITWISE_OPS_THRESHOLD = int("WASM_BITWISE_OPS_THRESHOLD", 20);
488
+ const WASM_VM_DISPATCH_MIN_LOOPS = int("WASM_VM_DISPATCH_MIN_LOOPS", 3);
489
+ const PROTO_TLS_MIN_RECORD_LEN = int("PROTO_TLS_MIN_RECORD_LEN", 4);
490
+ const PROTO_TLS_CONFIDENCE = float("PROTO_TLS_CONFIDENCE", .95);
491
+ const PROTO_WS_CONFIDENCE = float("PROTO_WS_CONFIDENCE", .85);
492
+ const PROTO_HTTP_CONFIDENCE = float("PROTO_HTTP_CONFIDENCE", .95);
493
+ const PROTO_SSH_CONFIDENCE = float("PROTO_SSH_CONFIDENCE", .95);
494
+ const BOT_DETECT_LIMIT_DEFAULT = int("BOT_DETECT_LIMIT_DEFAULT", 50);
495
+ int("BOT_DETECT_LIMIT_MIN", 1);
496
+ int("BOT_DETECT_LIMIT_MAX", 500);
482
497
  /** Default per-command processing timeout inside the webhook command queue. */
483
498
  const WEBHOOK_PROCESS_TIMEOUT_MS = int("WEBHOOK_PROCESS_TIMEOUT_MS", 1e4);
484
499
  int("ORCHESTRATOR_STEP_TIMEOUT_MS", 1e4);
@@ -516,4 +531,4 @@ const MEMORY_VMMAP_ENUM_TIMEOUT_MS = int("MEMORY_VMMAP_ENUM_TIMEOUT_MS", 15e3);
516
531
  /** Timeout for PowerShell-based module listing subprocesses. */
517
532
  const MEMORY_MODULES_TIMEOUT_MS = int("MEMORY_MODULES_TIMEOUT_MS", 3e4);
518
533
  //#endregion
519
- export { GHIDRA_TIMEOUT_MS as $, SEARCH_WORKFLOW_DOMAIN_BOOST_MULTIPLIER as $n, PREDICTIVE_DECAY_FACTOR as $t, COMPOUND_EVENT_WINDOW_MS as A, SEARCH_PREFIX_MATCH_MULTIPLIER as An, WS_PAYLOAD_SAMPLE_LIMIT as Ar, MEMORY_MODULES_TIMEOUT_MS as At, DOM_WAIT_ELEMENT_TIMEOUT_MS as B, SEARCH_TIER_PENALTY_FULL as Bn, MEMORY_VMMAP_TIMEOUT_MS as Bt, CAPTCHA_MAX_TIMEOUT_MS as C, SEARCH_BM25_K1 as Cn, WORKFLOW_BUNDLE_CACHE_MAX_BYTES as Cr, MCP_HTTP_REQUEST_TIMEOUT_MS as Ct, CAPTCHA_SOLVER_BASE_URL as D, SEARCH_DOMAIN_HUB_THRESHOLD as Dn, WORKFLOW_JS_BUNDLE_MAX_SIZE_BYTES as Dr, MEMORY_INJECT_TIMEOUT_MS as Dt, CAPTCHA_RESULT_TIMEOUT_MS as E, SEARCH_DOMAIN_HUB_BOOST_MULTIPLIER as En, WORKFLOW_JS_BUNDLE_MAX_REDIRECTS as Er, MEMORY_DUMP_TIMEOUT_MS as Et, DEFAULT_DEBUG_PORT as F, SEARCH_RRF_BM25_BLEND as Fn, MEMORY_READ_TIMEOUT_MS as Ft, EXTERNAL_TOOL_MAX_STDERR_BYTES as G, SEARCH_VECTOR_BM25_SKIP_THRESHOLD as Gn, NETWORK_REPLAY_MAX_REDIRECTS as Gt, EXTENSION_GIT_CHECKOUT_TIMEOUT_MS as H, SEARCH_TIER_PENALTY_WORKFLOW as Hn, MOJO_MONITOR_TIMEOUT_MS as Ht, DETAILED_DATA_DEFAULT_TTL_MS as I, SEARCH_RRF_K as In, MEMORY_SCAN_MAX_BUFFER_BYTES as It, EXTERNAL_TOOL_PROBE_TIMEOUT_MS as J, SEARCH_VECTOR_ENABLED as Jn, POINTER_CHAIN_MAX_DEPTH as Jt, EXTERNAL_TOOL_MAX_STDOUT_BYTES as K, SEARCH_VECTOR_COSINE_WEIGHT as Kn, PAGE_FRAME_SELECTOR_TIMEOUT_MS as Kt, DETAILED_DATA_MAX_TTL_MS as L, SEARCH_RRF_RESCALE_FACTOR as Ln, MEMORY_SCAN_MAX_RESULTS as Lt, COORDINATION_GOTO_TIMEOUT_MS as M, SEARCH_RECENCY_MAX_BOOST as Mn, MEMORY_PROCESS_SIGNAL_TIMEOUT_MS as Mt, DEBUGGER_WAIT_FOR_PAUSED_TIMEOUT_MS as N, SEARCH_RECENCY_TRACKER_MAX as Nn, MEMORY_PROTECTION_PWSH_TIMEOUT_MS as Nt, CAPTCHA_SUBMIT_TIMEOUT_MS as O, SEARCH_EXACT_NAME_MATCH_MULTIPLIER as On, WRITE_HISTORY_MAX as Or, MEMORY_MAX_READ_BYTES as Ot, DEBUG_PORT_CANDIDATES as P, SEARCH_RECENCY_WINDOW_MS as Pn, MEMORY_PROTECTION_QUERY_TIMEOUT_MS as Pt, GHIDRA_BRIDGE_ENDPOINT as Q, SEARCH_VECTOR_MODEL_ID as Qn, PREDICTIVE_CONFIDENCE_THRESHOLD as Qt, DETAILED_DATA_SMART_THRESHOLD_BYTES as R, SEARCH_SYNONYM_EXPANSION_LIMIT as Rn, MEMORY_SCAN_TIMEOUT_MS as Rt, CAPTCHA_MAX_RETRIES as S, SEARCH_BM25_B as Sn, WORKER_POOL_MIN_WORKERS as Sr, MCP_HTTP_KEEPALIVE_TIMEOUT_MS as St, CAPTCHA_POLL_INTERVAL_MS as T, SEARCH_COVERAGE_PRECISION_FACTOR as Tn, WORKFLOW_JS_BUNDLE_FETCH_TIMEOUT_MS as Tr, MEMORY_AVAILABILITY_CACHE_TTL_MS as Tt, EXTENSION_GIT_CLONE_TIMEOUT_MS as U, SEARCH_TRIGRAM_THRESHOLD as Un, NATIVE_ADMIN_CHECK_TIMEOUT_MS as Ut, ENABLE_INJECTION_TOOLS as V, SEARCH_TIER_PENALTY_SEARCH as Vn, MEMORY_WRITE_TIMEOUT_MS as Vt, EXTERNAL_TOOL_FORCE_KILL_GRACE_MS as W, SEARCH_TRIGRAM_WEIGHT as Wn, NETWORK_HAR_BODY_CONCURRENCY as Wt, FREEZE_DEFAULT_INTERVAL_MS as X, SEARCH_VECTOR_LEARN_TOP_N as Xn, POINTER_CHAIN_MAX_RESULTS as Xt, EXTERNAL_TOOL_TIMEOUT_MS as Y, SEARCH_VECTOR_LEARN_DOWN as Yn, POINTER_CHAIN_MAX_OFFSET as Yt, FRIDA_TIMEOUT_MS as Z, SEARCH_VECTOR_LEARN_UP as Zn, POINTER_CHAIN_SCAN_CHUNK_SIZE as Zt, BREAKPOINT_TRACE_MAX_HITS as _, SCAN_UNKNOWN_INITIAL_MAX_ADDRESSES as _n, WIN_DEBUG_PORT_POLL_ATTEMPTS as _r, MACRO_BUILTIN_TIMEOUT_MS as _t, ACTIVATION_TTL_MINUTES as a, RUNTIME_ERROR_WINDOW_MS as an, TOKEN_BUDGET_MAX_TOKENS as ar, HEAP_ENUMERATE_MAX_BLOCKS as at, CAPTCHA_DEFAULT_RETRIES as b, SEARCH_AFFINITY_BOOST_FACTOR as bn, WORKER_POOL_JOB_TIMEOUT_MS as br, MCP_HTTP_FORCE_CLOSE_TIMEOUT_MS as bt, ADB_WEBVIEW_HTTP_TIMEOUT_MS as c, SANDBOX_MEMORY_LIMIT_MB as cn, TRANSFORM_CRYPTO_POOL_MAX_WORKERS as cr, HEAP_SUSPICIOUS_BLOCK_SIZE as ct, ANALYSIS_MAX_SAFE_RESPONSE_BYTES as d, SCAN_DISPLAY_RESULTS_LIMIT as dn, UNIDBG_TIMEOUT_MS as dr, ICMP_DEFAULT_PACKET_SIZE as dt, PREDICTIVE_MAX_HISTORY as en, SHUTDOWN_TIMEOUT_MS as er, GRAPHQL_MAX_GRAPH_EDGES as et, ANALYSIS_MAX_SUMMARY_FILES as f, SCAN_GROUP_MAX_PATTERN_SIZE as fn, V8_BYTECODE_SUBPROC_TIMEOUT_MS as fr, ICMP_PROBE_TIMEOUT_MS as ft, BREAKPOINT_HIT_TIMEOUT_MS as g, SCAN_SESSION_TTL_MS as gn, WEBHOOK_PROCESS_TIMEOUT_MS as gr, JSVMP_MAX_ITERATIONS as gt, AUTOPRUNE_MANUAL_INACTIVITY_MS as h, SCAN_SESSION_MAX_COUNT as hn, WATCH_EVAL_TIMEOUT_MS as hr, JSVMP_DEOBFUSCATE_TIMEOUT_MS as ht, ACTIVATION_EVENT_HISTORY_MAX as i, RUNTIME_ERROR_THRESHOLD as in, STRUCT_VTABLE_MAX_FUNCTIONS as ir, GRAPHQL_MAX_SCHEMA_CHARS as it, COMPOUND_LONG_WINDOW_MS as j, SEARCH_QUERY_CACHE_CAPACITY as jn, MEMORY_PROBE_CMD_TIMEOUT_MS as jt, CODE_CAVE_MIN_SIZE as k, SEARCH_PARAM_TOKEN_WEIGHT as kn, WS_PAYLOAD_PREVIEW_LIMIT as kr, MEMORY_MAX_WRITE_BYTES as kt, ADB_WEBVIEW_WS_TIMEOUT_MS as l, SANDBOX_STACK_SIZE_MB as ln, TRANSFORM_CRYPTO_POOL_MAX_YOUNG_GEN_MB as lr, HTTP_CLEANUP_INTERVAL_MS as lt, AUTOPRUNE_CHECK_INTERVAL_MS as m, SCAN_POINTER_MAX_RESULTS as mn, WASM_TOOL_TIMEOUT_MS as mr, IDA_BRIDGE_ENDPOINT as mt, ACTIVATION_COMPOUND_EVAL_EVERY as n, PROCESS_LAUNCH_WAIT_MS as nn, STRUCT_ANALYZE_DEFAULT_SIZE as nr, GRAPHQL_MAX_PREVIEW_CHARS as nt, ADB_DEFAULT_TIMEOUT_MS as o, SANDBOX_EXEC_TIMEOUT_MS as on, TRANSFORM_CRYPTO_POOL_IDLE_TIMEOUT_MS as or, HEAP_SPRAY_SIZE_TOLERANCE as ot, AUTOPRUNE_AUTO_INACTIVITY_MS as p, SCAN_MAX_RESULTS_PER_SCAN as pn, WASM_OPTIMIZE_TIMEOUT_MS as pr, ICMP_TRACEROUTE_MAX_HOPS as pt, EXTERNAL_TOOL_PROBE_CACHE_TTL_MS as q, SEARCH_VECTOR_DYNAMIC_WEIGHT as qn, PAGE_NETWORK_IDLE_TIMEOUT_MS as qt, ACTIVATION_COOLDOWN_MS as r, PROCESS_LIST_MAX_BUFFER_BYTES as rn, STRUCT_RTTI_MAX_STRING_LEN as rr, GRAPHQL_MAX_QUERY_CHARS as rt, ADB_SHELL_TIMEOUT_MS as s, SANDBOX_MAX_TIMEOUT_MS as sn, TRANSFORM_CRYPTO_POOL_MAX_OLD_GEN_MB as sr, HEAP_SPRAY_THRESHOLD as st, ACTIVATION_BOOST_WINDOW_MS as t, PREDICTIVE_MAX_SECOND_ORDER_KEYS as tn, SOURCEMAP_EXT_TIMEOUT_MS as tr, GRAPHQL_MAX_GRAPH_NODES as tt, ANALYSIS_MAX_SAFE_COLLECTED_BYTES as u, SANDBOX_TERMINATE_GRACE_MS as un, TRANSFORM_WORKER_TIMEOUT_MS as ur, HTTP_RATE_LIMIT_MAX_IPS as ut, CACHE_GLOBAL_MAX_SIZE_BYTES as v, SCRIPTS_MAX_CAP as vn, WIN_DEBUG_PORT_POLL_INTERVAL_MS as vr, MACRO_DEFAULT_TIMEOUT_MS as vt, CAPTCHA_MIN_TIMEOUT_MS as w, SEARCH_CACHE_VECTOR_WEIGHT_TOLERANCE as wn, WORKFLOW_BUNDLE_CACHE_TTL_MS as wr, MEMORY_AUDIT_TRAIL_CAPACITY as wt, CAPTCHA_DEFAULT_TIMEOUT_MS as x, SEARCH_AFFINITY_TOP_N as xn, WORKER_POOL_MAX_WORKERS as xr, MCP_HTTP_HEADERS_TIMEOUT_MS as xt, CACHE_LOW_HIT_RATE_THRESHOLD as y, SEARCH_AFFINITY_BASE_WEIGHT as yn, WORKER_POOL_IDLE_TIMEOUT_MS as yr, MCP_COMPACT_SCHEMA as yt, DOM_QUERY_DEFAULT_LIMIT as z, SEARCH_TIER_PENALTY as zn, MEMORY_VMMAP_ENUM_TIMEOUT_MS as zt };
534
+ export { GHIDRA_BRIDGE_ENDPOINT as $, SEARCH_VECTOR_DYNAMIC_WEIGHT as $n, PREDICTIVE_CONFIDENCE_THRESHOLD as $t, CODE_CAVE_MIN_SIZE as A, SEARCH_CACHE_VECTOR_WEIGHT_TOLERANCE as An, WIN_DEBUG_PORT_POLL_ATTEMPTS as Ar, MEMORY_MAX_WRITE_BYTES as At, DOM_QUERY_DEFAULT_LIMIT as B, SEARCH_RECENCY_WINDOW_MS as Bn, WORKFLOW_JS_BUNDLE_MAX_SIZE_BYTES as Br, MEMORY_VMMAP_ENUM_TIMEOUT_MS as Bt, CAPTCHA_MAX_RETRIES as C, SCAN_UNKNOWN_INITIAL_MAX_ADDRESSES as Cn, WASM_BITWISE_OPS_THRESHOLD as Cr, MCP_HTTP_KEEPALIVE_TIMEOUT_MS as Ct, CAPTCHA_RESULT_TIMEOUT_MS as D, SEARCH_AFFINITY_TOP_N as Dn, WASM_VM_DISPATCH_MIN_LOOPS as Dr, MEMORY_DUMP_TIMEOUT_MS as Dt, CAPTCHA_POLL_INTERVAL_MS as E, SEARCH_AFFINITY_BOOST_FACTOR as En, WASM_TOOL_TIMEOUT_MS as Er, MEMORY_AVAILABILITY_CACHE_TTL_MS as Et, DEBUG_PORT_CANDIDATES as F, SEARCH_PARAM_TOKEN_WEIGHT as Fn, WORKER_POOL_MIN_WORKERS as Fr, MEMORY_PROTECTION_QUERY_TIMEOUT_MS as Ft, EXTERNAL_TOOL_FORCE_KILL_GRACE_MS as G, SEARCH_TIER_PENALTY as Gn, NETWORK_HAR_BODY_CONCURRENCY as Gt, ENABLE_INJECTION_TOOLS as H, SEARCH_RRF_K as Hn, WS_PAYLOAD_PREVIEW_LIMIT as Hr, MEMORY_WRITE_TIMEOUT_MS as Ht, DEFAULT_DEBUG_PORT as I, SEARCH_PREFIX_MATCH_MULTIPLIER as In, WORKFLOW_BUNDLE_CACHE_MAX_BYTES as Ir, MEMORY_READ_TIMEOUT_MS as It, EXTERNAL_TOOL_PROBE_CACHE_TTL_MS as J, SEARCH_TIER_PENALTY_WORKFLOW as Jn, PAGE_NETWORK_IDLE_TIMEOUT_MS as Jt, EXTERNAL_TOOL_MAX_STDERR_BYTES as K, SEARCH_TIER_PENALTY_FULL as Kn, NETWORK_REPLAY_MAX_REDIRECTS as Kt, DETAILED_DATA_DEFAULT_TTL_MS as L, SEARCH_QUERY_CACHE_CAPACITY as Ln, WORKFLOW_BUNDLE_CACHE_TTL_MS as Lr, MEMORY_SCAN_MAX_BUFFER_BYTES as Lt, COMPOUND_LONG_WINDOW_MS as M, SEARCH_DOMAIN_HUB_BOOST_MULTIPLIER as Mn, WORKER_POOL_IDLE_TIMEOUT_MS as Mr, MEMORY_PROBE_CMD_TIMEOUT_MS as Mt, COORDINATION_GOTO_TIMEOUT_MS as N, SEARCH_DOMAIN_HUB_THRESHOLD as Nn, WORKER_POOL_JOB_TIMEOUT_MS as Nr, MEMORY_PROCESS_SIGNAL_TIMEOUT_MS as Nt, CAPTCHA_SOLVER_BASE_URL as O, SEARCH_BM25_B as On, WATCH_EVAL_TIMEOUT_MS as Or, MEMORY_INJECT_TIMEOUT_MS as Ot, DEBUGGER_WAIT_FOR_PAUSED_TIMEOUT_MS as P, SEARCH_EXACT_NAME_MATCH_MULTIPLIER as Pn, WORKER_POOL_MAX_WORKERS as Pr, MEMORY_PROTECTION_PWSH_TIMEOUT_MS as Pt, FRIDA_TIMEOUT_MS as Q, SEARCH_VECTOR_COSINE_WEIGHT as Qn, POINTER_CHAIN_SCAN_CHUNK_SIZE as Qt, DETAILED_DATA_MAX_TTL_MS as R, SEARCH_RECENCY_MAX_BOOST as Rn, WORKFLOW_JS_BUNDLE_FETCH_TIMEOUT_MS as Rr, MEMORY_SCAN_MAX_RESULTS as Rt, CAPTCHA_DEFAULT_TIMEOUT_MS as S, SCAN_SESSION_TTL_MS as Sn, V8_BYTECODE_SUBPROC_TIMEOUT_MS as Sr, MCP_HTTP_HEADERS_TIMEOUT_MS as St, CAPTCHA_MIN_TIMEOUT_MS as T, SEARCH_AFFINITY_BASE_WEIGHT as Tn, WASM_OPTIMIZE_TIMEOUT_MS as Tr, MEMORY_AUDIT_TRAIL_CAPACITY as Tt, EXTENSION_GIT_CHECKOUT_TIMEOUT_MS as U, SEARCH_RRF_RESCALE_FACTOR as Un, WS_PAYLOAD_SAMPLE_LIMIT as Ur, MOJO_MONITOR_TIMEOUT_MS as Ut, DOM_WAIT_ELEMENT_TIMEOUT_MS as V, SEARCH_RRF_BM25_BLEND as Vn, WRITE_HISTORY_MAX as Vr, MEMORY_VMMAP_TIMEOUT_MS as Vt, EXTENSION_GIT_CLONE_TIMEOUT_MS as W, SEARCH_SYNONYM_EXPANSION_LIMIT as Wn, NATIVE_ADMIN_CHECK_TIMEOUT_MS as Wt, EXTERNAL_TOOL_TIMEOUT_MS as X, SEARCH_TRIGRAM_WEIGHT as Xn, POINTER_CHAIN_MAX_OFFSET as Xt, EXTERNAL_TOOL_PROBE_TIMEOUT_MS as Y, SEARCH_TRIGRAM_THRESHOLD as Yn, POINTER_CHAIN_MAX_DEPTH as Yt, FREEZE_DEFAULT_INTERVAL_MS as Z, SEARCH_VECTOR_BM25_SKIP_THRESHOLD as Zn, POINTER_CHAIN_MAX_RESULTS as Zt, BREAKPOINT_HIT_TIMEOUT_MS as _, SCAN_DISPLAY_RESULTS_LIMIT as _n, TRANSFORM_CRYPTO_POOL_MAX_OLD_GEN_MB as _r, JSVMP_MAX_ITERATIONS as _t, ACTIVATION_TTL_MINUTES as a, PROTO_HTTP_CONFIDENCE as an, SEARCH_WORKFLOW_DOMAIN_BOOST_MULTIPLIER as ar, GRAPHQL_MAX_SCHEMA_CHARS as at, CACHE_LOW_HIT_RATE_THRESHOLD as b, SCAN_POINTER_MAX_RESULTS as bn, TRANSFORM_WORKER_TIMEOUT_MS as br, MCP_COMPACT_SCHEMA as bt, ADB_WEBVIEW_HTTP_TIMEOUT_MS as c, PROTO_TLS_MIN_RECORD_LEN as cn, SOURCEMAP_V4_RETRY_DELAY_MS as cr, HEAP_SPRAY_THRESHOLD as ct, ANALYSIS_MAX_SAFE_RESPONSE_BYTES as d, RUNTIME_ERROR_WINDOW_MS as dn, STRUCT_VTABLE_MAX_FUNCTIONS as dr, HTTP_RATE_LIMIT_MAX_IPS as dt, PREDICTIVE_DECAY_FACTOR as en, SEARCH_VECTOR_ENABLED as er, GHIDRA_TIMEOUT_MS as et, ANALYSIS_MAX_SUMMARY_FILES as f, SANDBOX_EXEC_TIMEOUT_MS as fn, SYSCALL_TRACE_DURATION_DEFAULT_SEC as fr, ICMP_DEFAULT_PACKET_SIZE as ft, BOT_DETECT_LIMIT_DEFAULT as g, SANDBOX_TERMINATE_GRACE_MS as gn, TRANSFORM_CRYPTO_POOL_IDLE_TIMEOUT_MS as gr, JSVMP_DEOBFUSCATE_TIMEOUT_MS as gt, AUTOPRUNE_MANUAL_INACTIVITY_MS as h, SANDBOX_STACK_SIZE_MB as hn, TOKEN_BUDGET_MAX_TOKENS as hr, IDA_BRIDGE_ENDPOINT as ht, ACTIVATION_EVENT_HISTORY_MAX as i, PROCESS_LIST_MAX_BUFFER_BYTES as in, SEARCH_VECTOR_MODEL_ID as ir, GRAPHQL_MAX_QUERY_CHARS as it, COMPOUND_EVENT_WINDOW_MS as j, SEARCH_COVERAGE_PRECISION_FACTOR as jn, WIN_DEBUG_PORT_POLL_INTERVAL_MS as jr, MEMORY_MODULES_TIMEOUT_MS as jt, CAPTCHA_SUBMIT_TIMEOUT_MS as k, SEARCH_BM25_K1 as kn, WEBHOOK_PROCESS_TIMEOUT_MS as kr, MEMORY_MAX_READ_BYTES as kt, ADB_WEBVIEW_WS_TIMEOUT_MS as l, PROTO_WS_CONFIDENCE as ln, STRUCT_ANALYZE_DEFAULT_SIZE as lr, HEAP_SUSPICIOUS_BLOCK_SIZE as lt, AUTOPRUNE_CHECK_INTERVAL_MS as m, SANDBOX_MEMORY_LIMIT_MB as mn, SYSCALL_TRACE_DURATION_MIN_SEC as mr, ICMP_TRACEROUTE_MAX_HOPS as mt, ACTIVATION_COMPOUND_EVAL_EVERY as n, PREDICTIVE_MAX_SECOND_ORDER_KEYS as nn, SEARCH_VECTOR_LEARN_TOP_N as nr, GRAPHQL_MAX_GRAPH_NODES as nt, ADB_DEFAULT_TIMEOUT_MS as o, PROTO_SSH_CONFIDENCE as on, SHUTDOWN_TIMEOUT_MS as or, HEAP_ENUMERATE_MAX_BLOCKS as ot, AUTOPRUNE_AUTO_INACTIVITY_MS as p, SANDBOX_MAX_TIMEOUT_MS as pn, SYSCALL_TRACE_DURATION_MAX_SEC as pr, ICMP_PROBE_TIMEOUT_MS as pt, EXTERNAL_TOOL_MAX_STDOUT_BYTES as q, SEARCH_TIER_PENALTY_SEARCH as qn, PAGE_FRAME_SELECTOR_TIMEOUT_MS as qt, ACTIVATION_COOLDOWN_MS as r, PROCESS_LAUNCH_WAIT_MS as rn, SEARCH_VECTOR_LEARN_UP as rr, GRAPHQL_MAX_PREVIEW_CHARS as rt, ADB_SHELL_TIMEOUT_MS as s, PROTO_TLS_CONFIDENCE as sn, SOURCEMAP_V4_RAW_FIELD_MAX_LEN as sr, HEAP_SPRAY_SIZE_TOLERANCE as st, ACTIVATION_BOOST_WINDOW_MS as t, PREDICTIVE_MAX_HISTORY as tn, SEARCH_VECTOR_LEARN_DOWN as tr, GRAPHQL_MAX_GRAPH_EDGES as tt, ANALYSIS_MAX_SAFE_COLLECTED_BYTES as u, RUNTIME_ERROR_THRESHOLD as un, STRUCT_RTTI_MAX_STRING_LEN as ur, HTTP_CLEANUP_INTERVAL_MS as ut, BREAKPOINT_TRACE_MAX_HITS as v, SCAN_GROUP_MAX_PATTERN_SIZE as vn, TRANSFORM_CRYPTO_POOL_MAX_WORKERS as vr, MACRO_BUILTIN_TIMEOUT_MS as vt, CAPTCHA_MAX_TIMEOUT_MS as w, SCRIPTS_MAX_CAP as wn, WASM_DEAD_CODE_MIN_MATCHES as wr, MCP_HTTP_REQUEST_TIMEOUT_MS as wt, CAPTCHA_DEFAULT_RETRIES as x, SCAN_SESSION_MAX_COUNT as xn, UNIDBG_TIMEOUT_MS as xr, MCP_HTTP_FORCE_CLOSE_TIMEOUT_MS as xt, CACHE_GLOBAL_MAX_SIZE_BYTES as y, SCAN_MAX_RESULTS_PER_SCAN as yn, TRANSFORM_CRYPTO_POOL_MAX_YOUNG_GEN_MB as yr, MACRO_DEFAULT_TIMEOUT_MS as yt, DETAILED_DATA_SMART_THRESHOLD_BYTES as z, SEARCH_RECENCY_TRACKER_MAX as zn, WORKFLOW_JS_BUNDLE_MAX_REDIRECTS as zr, MEMORY_SCAN_TIMEOUT_MS as zt };
@@ -1,5 +1,5 @@
1
- import { M as COORDINATION_GOTO_TIMEOUT_MS } from "./constants-B0OANIBL.mjs";
2
- import "./definitions-CkFDALoa.mjs";
1
+ import { N as COORDINATION_GOTO_TIMEOUT_MS } from "./constants-CDZLOoVv.mjs";
2
+ import "./definitions-BtWSHJ3o.mjs";
3
3
  import { randomUUID } from "node:crypto";
4
4
  //#region src/server/domains/coordination/index.ts
5
5
  /**