@jshookmcp/jshook 0.2.3 → 0.2.5

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 (385) hide show
  1. package/README.md +14 -5
  2. package/README.zh.md +18 -3
  3. package/dist/packages/extension-sdk/src/bridges/shared.js +2 -2
  4. package/dist/packages/extension-sdk/src/plugin.d.ts +5 -0
  5. package/dist/packages/extension-sdk/src/plugin.js +119 -33
  6. package/dist/packages/extension-sdk/src/workflow.d.ts +156 -0
  7. package/dist/packages/extension-sdk/src/workflow.js +236 -0
  8. package/dist/src/config/search-defaults.js +161 -0
  9. package/dist/src/constants.d.ts +3 -0
  10. package/dist/src/constants.js +4 -1
  11. package/dist/src/index.d.ts +1 -1
  12. package/dist/src/index.js +13 -17
  13. package/dist/src/modules/analyzer/CodeAnalyzer.d.ts +1 -3
  14. package/dist/src/modules/analyzer/CodeAnalyzer.js +16 -28
  15. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.d.ts +1 -2
  16. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.js +1 -45
  17. package/dist/src/modules/analyzer/IntelligentAnalyzer.d.ts +1 -37
  18. package/dist/src/modules/analyzer/IntelligentAnalyzer.js +9 -142
  19. package/dist/src/modules/analyzer/PatternDetector.js +3 -3
  20. package/dist/src/modules/analyzer/PatternDetectorAuthPatterns.js +1 -1
  21. package/dist/src/modules/browser/BrowserDiscovery.js +2 -2
  22. package/dist/src/modules/browser/BrowserModeManager.js +11 -10
  23. package/dist/src/modules/browser/TabRegistry.js +2 -2
  24. package/dist/src/modules/browser/UnifiedBrowserManager.d.ts +1 -0
  25. package/dist/src/modules/browser/UnifiedBrowserManager.js +18 -3
  26. package/dist/src/modules/captcha/AICaptchaDetector.d.ts +1 -10
  27. package/dist/src/modules/captcha/AICaptchaDetector.js +7 -201
  28. package/dist/src/modules/collector/CodeCollector.js +4 -5
  29. package/dist/src/modules/collector/DOMInspector.js +48 -58
  30. package/dist/src/modules/collector/PageController.d.ts +17 -4
  31. package/dist/src/modules/collector/PageController.js +2 -5
  32. package/dist/src/modules/collector/PageScriptCollectors.js +3 -3
  33. package/dist/src/modules/crypto/CryptoDetector.d.ts +1 -4
  34. package/dist/src/modules/crypto/CryptoDetector.js +2 -42
  35. package/dist/src/modules/crypto/CryptoRules.js +1 -1
  36. package/dist/src/modules/debugger/BlackboxManager.js +1 -1
  37. package/dist/src/modules/debugger/DebuggerManager.impl.core.scope.js +1 -1
  38. package/dist/src/modules/debugger/ScriptManager.impl.extract-function-tree.js +4 -2
  39. package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
  40. package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
  41. package/dist/src/modules/deobfuscator/Deobfuscator.js +4 -39
  42. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.d.ts +0 -3
  43. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.js +2 -8
  44. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.d.ts +1 -2
  45. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +3 -55
  46. package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
  47. package/dist/src/modules/deobfuscator/VMDeobfuscator.d.ts +2 -10
  48. package/dist/src/modules/deobfuscator/VMDeobfuscator.js +3 -128
  49. package/dist/src/modules/deobfuscator/webcrack.js +15 -2
  50. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.d.ts +5 -8
  51. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.js +10 -102
  52. package/dist/src/modules/emulator/EnvironmentEmulator.d.ts +1 -5
  53. package/dist/src/modules/emulator/EnvironmentEmulator.js +7 -91
  54. package/dist/src/modules/emulator/EnvironmentEmulatorFetch.js +58 -61
  55. package/dist/src/modules/emulator/templates/chrome-env.d.ts +17 -7
  56. package/dist/src/modules/emulator/templates/chrome-env.js +14 -7
  57. package/dist/src/modules/external/ExternalToolRunner.js +25 -22
  58. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.compose.js +5 -5
  59. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.network.js +311 -311
  60. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.runtime.js +410 -410
  61. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.storage.js +122 -122
  62. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.d.ts +13 -0
  63. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.js +42 -0
  64. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.dynamic.js +194 -194
  65. package/dist/src/modules/monitor/FetchInterceptor.d.ts +46 -0
  66. package/dist/src/modules/monitor/FetchInterceptor.js +191 -0
  67. package/dist/src/modules/monitor/PerformanceMonitor.js +8 -7
  68. package/dist/src/modules/monitor/PlaywrightNetworkMonitor.js +62 -62
  69. package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
  70. package/dist/src/modules/process/LinuxProcessManager.js +2 -0
  71. package/dist/src/modules/process/MacProcessManager.js +25 -25
  72. package/dist/src/modules/process/MemoryManager.d.ts +1 -1
  73. package/dist/src/modules/process/MemoryManager.js +2 -2
  74. package/dist/src/modules/process/memory/AuditTrail.js +1 -1
  75. package/dist/src/modules/process/memory/availability.js +49 -49
  76. package/dist/src/modules/process/memory/injector.js +185 -185
  77. package/dist/src/modules/process/memory/reader.js +85 -53
  78. package/dist/src/modules/process/memory/regions.dump.js +51 -51
  79. package/dist/src/modules/process/memory/regions.enumerate.js +108 -108
  80. package/dist/src/modules/process/memory/regions.modules.js +80 -80
  81. package/dist/src/modules/process/memory/regions.protection.js +148 -115
  82. package/dist/src/modules/process/memory/scanner.d.ts +5 -1
  83. package/dist/src/modules/process/memory/scanner.darwin.js +98 -41
  84. package/dist/src/modules/process/memory/scanner.js +88 -4
  85. package/dist/src/modules/process/memory/scanner.windows.js +124 -124
  86. package/dist/src/modules/process/memory/writer.js +98 -58
  87. package/dist/src/modules/security/ExecutionSandbox.js +51 -52
  88. package/dist/src/modules/stealth/FingerprintManager.js +1 -1
  89. package/dist/src/modules/stealth/StealthScripts.d.ts +1 -0
  90. package/dist/src/modules/stealth/StealthScripts.js +18 -13
  91. package/dist/src/modules/stealth/StealthVerifier.js +1 -3
  92. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.d.ts +14 -0
  93. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.js +181 -2
  94. package/dist/src/modules/trace/TraceDB.js +75 -69
  95. package/dist/src/modules/trace/TraceRecorder.js +1 -5
  96. package/dist/src/native/AntiCheatDetector.js +67 -16
  97. package/dist/src/native/CodeInjector.js +3 -3
  98. package/dist/src/native/HardwareBreakpoint.js +24 -15
  99. package/dist/src/native/HeapAnalyzer.js +2 -2
  100. package/dist/src/native/MemoryController.js +1 -1
  101. package/dist/src/native/MemoryScanSession.js +2 -2
  102. package/dist/src/native/MemoryScanner.js +4 -8
  103. package/dist/src/native/NativeMemoryManager.impl.js +2 -2
  104. package/dist/src/native/PEAnalyzer.js +14 -15
  105. package/dist/src/native/PointerChainEngine.js +2 -4
  106. package/dist/src/native/ScriptLoader.js +4 -9
  107. package/dist/src/native/Speedhack.js +1 -1
  108. package/dist/src/native/StructureAnalyzer.js +52 -33
  109. package/dist/src/native/Win32API.d.ts +1 -0
  110. package/dist/src/native/Win32API.js +13 -0
  111. package/dist/src/native/Win32Debug.js +19 -19
  112. package/dist/src/native/platform/darwin/DarwinAPI.d.ts +2 -0
  113. package/dist/src/native/platform/darwin/DarwinAPI.js +8 -0
  114. package/dist/src/native/platform/darwin/DarwinMemoryProvider.js +6 -1
  115. package/dist/src/server/MCPServer.context.d.ts +2 -1
  116. package/dist/src/server/MCPServer.d.ts +2 -1
  117. package/dist/src/server/MCPServer.domain.d.ts +1 -1
  118. package/dist/src/server/MCPServer.domain.js +81 -16
  119. package/dist/src/server/MCPServer.js +41 -14
  120. package/dist/src/server/MCPServer.resources.d.ts +2 -0
  121. package/dist/src/server/MCPServer.resources.js +91 -0
  122. package/dist/src/server/MCPServer.search.handlers.call.js +2 -1
  123. package/dist/src/server/MCPServer.search.helpers.js +1 -1
  124. package/dist/src/server/MCPServer.transport.js +12 -0
  125. package/dist/src/server/ToolCallContextGuard.js +8 -0
  126. package/dist/src/server/ToolRouter.d.ts +25 -9
  127. package/dist/src/server/ToolRouter.intent.d.ts +26 -0
  128. package/dist/src/server/ToolRouter.intent.js +77 -0
  129. package/dist/src/server/ToolRouter.js +103 -284
  130. package/dist/src/server/ToolRouter.policy.d.ts +22 -0
  131. package/dist/src/server/ToolRouter.policy.js +163 -0
  132. package/dist/src/server/ToolRouter.probe.d.ts +17 -0
  133. package/dist/src/server/ToolRouter.probe.js +103 -0
  134. package/dist/src/server/ToolRouter.renderer.d.ts +9 -0
  135. package/dist/src/server/ToolRouter.renderer.js +52 -0
  136. package/dist/src/server/activation/ActivationController.js +15 -12
  137. package/dist/src/server/activation/CompoundConditionEngine.js +1 -1
  138. package/dist/src/server/activation/PredictiveBooster.js +1 -3
  139. package/dist/src/server/domains/analysis/definitions.js +155 -655
  140. package/dist/src/server/domains/analysis/handlers.impl.js +26 -20
  141. package/dist/src/server/domains/analysis/handlers.web-tools.js +2 -1
  142. package/dist/src/server/domains/analysis/manifest.js +6 -4
  143. package/dist/src/server/domains/antidebug/definitions.js +25 -111
  144. package/dist/src/server/domains/browser/definitions.tools.advanced.js +59 -88
  145. package/dist/src/server/domains/browser/definitions.tools.behavior.js +120 -227
  146. package/dist/src/server/domains/browser/definitions.tools.page-core.js +210 -439
  147. package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
  148. package/dist/src/server/domains/browser/definitions.tools.runtime.js +98 -211
  149. package/dist/src/server/domains/browser/definitions.tools.security.js +194 -339
  150. package/dist/src/server/domains/browser/handlers/camoufox-browser.js +3 -2
  151. package/dist/src/server/domains/browser/handlers/captcha-solver.js +3 -3
  152. package/dist/src/server/domains/browser/handlers/dom-query.js +2 -1
  153. package/dist/src/server/domains/browser/handlers/framework-state.js +27 -9
  154. package/dist/src/server/domains/browser/handlers/indexeddb-dump.js +21 -20
  155. package/dist/src/server/domains/browser/handlers/script-management.js +1 -1
  156. package/dist/src/server/domains/browser/handlers.impl.d.ts +1 -2
  157. package/dist/src/server/domains/browser/handlers.impl.js +2 -3
  158. package/dist/src/server/domains/browser/manifest.js +37 -13
  159. package/dist/src/server/domains/coordination/definitions.js +50 -216
  160. package/dist/src/server/domains/coordination/index.d.ts +2 -1
  161. package/dist/src/server/domains/coordination/index.js +1 -0
  162. package/dist/src/server/domains/debugger/definitions.tools.advanced.js +72 -189
  163. package/dist/src/server/domains/debugger/definitions.tools.core.js +114 -288
  164. package/dist/src/server/domains/debugger/manifest.js +9 -2
  165. package/dist/src/server/domains/encoding/definitions.js +43 -153
  166. package/dist/src/server/domains/encoding/handlers.base.js +2 -2
  167. package/dist/src/server/domains/evidence/definitions.d.ts +2 -0
  168. package/dist/src/server/domains/evidence/definitions.js +42 -0
  169. package/dist/src/server/domains/evidence/handlers.d.ts +582 -0
  170. package/dist/src/server/domains/evidence/handlers.js +60 -0
  171. package/dist/src/server/domains/evidence/index.d.ts +2 -0
  172. package/dist/src/server/domains/evidence/index.js +2 -0
  173. package/dist/src/server/domains/evidence/manifest.d.ts +63 -0
  174. package/dist/src/server/domains/evidence/manifest.js +78 -0
  175. package/dist/src/server/domains/graphql/definitions.js +53 -141
  176. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.replay.js +92 -114
  177. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.shared.js +77 -77
  178. package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
  179. package/dist/src/server/domains/hooks/ai-handlers.js +1 -67
  180. package/dist/src/server/domains/hooks/definitions.js +69 -335
  181. package/dist/src/server/domains/hooks/manifest.d.ts +1 -1
  182. package/dist/src/server/domains/hooks/manifest.js +1 -2
  183. package/dist/src/server/domains/instrumentation/definitions.d.ts +2 -0
  184. package/dist/src/server/domains/instrumentation/definitions.js +99 -0
  185. package/dist/src/server/domains/instrumentation/handlers.d.ts +78 -0
  186. package/dist/src/server/domains/instrumentation/handlers.js +206 -0
  187. package/dist/src/server/domains/instrumentation/index.d.ts +2 -0
  188. package/dist/src/server/domains/instrumentation/index.js +2 -0
  189. package/dist/src/server/domains/instrumentation/manifest.d.ts +63 -0
  190. package/dist/src/server/domains/instrumentation/manifest.js +114 -0
  191. package/dist/src/server/domains/macro/definitions.js +16 -43
  192. package/dist/src/server/domains/maintenance/definitions.js +60 -219
  193. package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
  194. package/dist/src/server/domains/memory/definitions.js +387 -559
  195. package/dist/src/server/domains/memory/handlers/hooks.d.ts +55 -0
  196. package/dist/src/server/domains/memory/handlers/hooks.js +115 -0
  197. package/dist/src/server/domains/memory/handlers/integrity.d.ts +77 -0
  198. package/dist/src/server/domains/memory/handlers/integrity.js +180 -0
  199. package/dist/src/server/domains/memory/handlers/pointer-chain.d.ts +29 -0
  200. package/dist/src/server/domains/memory/handlers/pointer-chain.js +82 -0
  201. package/dist/src/server/domains/memory/handlers/readwrite.d.ts +41 -0
  202. package/dist/src/server/domains/memory/handlers/readwrite.js +78 -0
  203. package/dist/src/server/domains/memory/handlers/scan.d.ts +35 -0
  204. package/dist/src/server/domains/memory/handlers/scan.js +97 -0
  205. package/dist/src/server/domains/memory/handlers/session.d.ts +23 -0
  206. package/dist/src/server/domains/memory/handlers/session.js +49 -0
  207. package/dist/src/server/domains/memory/handlers/structure.d.ts +29 -0
  208. package/dist/src/server/domains/memory/handlers/structure.js +74 -0
  209. package/dist/src/server/domains/memory/handlers.impl.d.ts +49 -54
  210. package/dist/src/server/domains/memory/handlers.impl.js +63 -494
  211. package/dist/src/server/domains/memory/manifest.js +236 -64
  212. package/dist/src/server/domains/native-bridge/definitions.js +54 -192
  213. package/dist/src/server/domains/native-bridge/index.d.ts +1 -0
  214. package/dist/src/server/domains/native-bridge/index.js +2 -1
  215. package/dist/src/server/domains/network/auth-extractor.js +1 -1
  216. package/dist/src/server/domains/network/definitions.js +175 -578
  217. package/dist/src/server/domains/network/handlers.base.core.d.ts +64 -0
  218. package/dist/src/server/domains/network/handlers.base.core.js +623 -0
  219. package/dist/src/server/domains/network/handlers.base.d.ts +2 -124
  220. package/dist/src/server/domains/network/handlers.base.js +3 -878
  221. package/dist/src/server/domains/network/handlers.base.performance.d.ts +63 -0
  222. package/dist/src/server/domains/network/handlers.base.performance.js +193 -0
  223. package/dist/src/server/domains/network/handlers.base.types.d.ts +42 -0
  224. package/dist/src/server/domains/network/handlers.base.types.js +89 -0
  225. package/dist/src/server/domains/network/handlers.impl.core.runtime.d.ts +1 -1
  226. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.d.ts +21 -0
  227. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.js +186 -0
  228. package/dist/src/server/domains/network/handlers.impl.core.runtime.js +1 -1
  229. package/dist/src/server/domains/network/manifest.js +15 -0
  230. package/dist/src/server/domains/network/replay.js +1 -4
  231. package/dist/src/server/domains/platform/definitions.js +121 -112
  232. package/dist/src/server/domains/platform/handlers/bridge-handlers.d.ts +4 -0
  233. package/dist/src/server/domains/platform/handlers/bridge-handlers.js +193 -4
  234. package/dist/src/server/domains/platform/handlers/electron-asar-helpers.js +26 -6
  235. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.d.ts +3 -0
  236. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.js +170 -0
  237. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.d.ts +3 -0
  238. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.js +193 -0
  239. package/dist/src/server/domains/platform/handlers/electron-handlers.d.ts +6 -0
  240. package/dist/src/server/domains/platform/handlers/electron-handlers.js +95 -2
  241. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.d.ts +2 -0
  242. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.js +370 -0
  243. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.d.ts +2 -0
  244. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.js +78 -0
  245. package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +3 -3
  246. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.d.ts +2 -0
  247. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.js +207 -0
  248. package/dist/src/server/domains/platform/handlers.d.ts +48 -0
  249. package/dist/src/server/domains/platform/handlers.js +29 -0
  250. package/dist/src/server/domains/platform/manifest.js +38 -0
  251. package/dist/src/server/domains/process/definitions.js +163 -647
  252. package/dist/src/server/domains/process/handlers.base.d.ts +3 -95
  253. package/dist/src/server/domains/process/handlers.base.js +7 -462
  254. package/dist/src/server/domains/process/handlers.base.process.d.ts +61 -0
  255. package/dist/src/server/domains/process/handlers.base.process.js +417 -0
  256. package/dist/src/server/domains/process/handlers.base.types.d.ts +57 -0
  257. package/dist/src/server/domains/process/handlers.base.types.js +50 -0
  258. package/dist/src/server/domains/process/handlers.impl.core.runtime.inject.js +18 -16
  259. package/dist/src/server/domains/process/manifest.js +6 -1
  260. package/dist/src/server/domains/sandbox/definitions.js +11 -33
  261. package/dist/src/server/domains/sandbox/handlers.js +8 -3
  262. package/dist/src/server/domains/shared/ResponseBuilder.d.ts +209 -0
  263. package/dist/src/server/domains/shared/ResponseBuilder.js +48 -0
  264. package/dist/src/server/domains/shared/modules.d.ts +0 -2
  265. package/dist/src/server/domains/shared/modules.js +0 -1
  266. package/dist/src/server/domains/sourcemap/definitions.js +27 -111
  267. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-common.js +7 -2
  268. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-main.js +1 -1
  269. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-parse-base.js +1 -1
  270. package/dist/src/server/domains/sourcemap/manifest.d.ts +1 -1
  271. package/dist/src/server/domains/sourcemap/manifest.js +1 -1
  272. package/dist/src/server/domains/streaming/definitions.js +36 -148
  273. package/dist/src/server/domains/streaming/handlers.impl.streaming-sse.js +163 -164
  274. package/dist/src/server/domains/streaming/handlers.impl.streaming-ws.js +1 -1
  275. package/dist/src/server/domains/trace/TraceSummarizer.js +8 -5
  276. package/dist/src/server/domains/trace/definitions.tools.js +51 -206
  277. package/dist/src/server/domains/trace/handlers.js +10 -12
  278. package/dist/src/server/domains/trace/index.d.ts +2 -1
  279. package/dist/src/server/domains/trace/index.js +2 -1
  280. package/dist/src/server/domains/trace/manifest.js +15 -3
  281. package/dist/src/server/domains/transform/definitions.js +50 -210
  282. package/dist/src/server/domains/transform/handlers.impl.transform-base.js +108 -108
  283. package/dist/src/server/domains/transform/handlers.impl.transform-crypto.js +18 -19
  284. package/dist/src/server/domains/transform/manifest.d.ts +1 -1
  285. package/dist/src/server/domains/transform/manifest.js +1 -1
  286. package/dist/src/server/domains/wasm/definitions.js +55 -232
  287. package/dist/src/server/domains/wasm/handlers.js +1 -1
  288. package/dist/src/server/domains/workflow/definitions.js +144 -414
  289. package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +1 -1
  290. package/dist/src/server/domains/workflow/handlers.impl.workflow-api.js +51 -51
  291. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.d.ts +2 -0
  292. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.js +126 -87
  293. package/dist/src/server/domains/workflow/handlers.impl.workflow-batch.js +5 -5
  294. package/dist/src/server/evidence/ReverseEvidenceGraph.d.ts +20 -0
  295. package/dist/src/server/evidence/ReverseEvidenceGraph.js +208 -0
  296. package/dist/src/server/evidence/index.d.ts +2 -0
  297. package/dist/src/server/evidence/index.js +1 -0
  298. package/dist/src/server/evidence/types.d.ts +22 -0
  299. package/dist/src/server/evidence/types.js +1 -0
  300. package/dist/src/server/extensions/ExtensionManager.d.ts +1 -0
  301. package/dist/src/server/extensions/ExtensionManager.discovery.js +72 -9
  302. package/dist/src/server/extensions/ExtensionManager.integrity.js +1 -1
  303. package/dist/src/server/extensions/ExtensionManager.js +193 -40
  304. package/dist/src/server/extensions/ExtensionManager.roots.d.ts +1 -1
  305. package/dist/src/server/extensions/ExtensionManager.roots.js +4 -4
  306. package/dist/src/server/extensions/plugin-config.js +1 -1
  307. package/dist/src/server/extensions/plugin-env.d.ts +1 -1
  308. package/dist/src/server/extensions/plugin-env.js +10 -4
  309. package/dist/src/server/extensions/types.d.ts +17 -0
  310. package/dist/src/server/extensions/types.js +1 -1
  311. package/dist/src/server/instrumentation/EvidenceGraphBridge.d.ts +13 -0
  312. package/dist/src/server/instrumentation/EvidenceGraphBridge.js +150 -0
  313. package/dist/src/server/instrumentation/InstrumentationSession.d.ts +60 -0
  314. package/dist/src/server/instrumentation/InstrumentationSession.js +269 -0
  315. package/dist/src/server/instrumentation/index.d.ts +2 -0
  316. package/dist/src/server/instrumentation/index.js +2 -0
  317. package/dist/src/server/instrumentation/types.d.ts +62 -0
  318. package/dist/src/server/instrumentation/types.js +7 -0
  319. package/dist/src/server/macros/MacroConfigLoader.d.ts +6 -5
  320. package/dist/src/server/macros/MacroConfigLoader.js +61 -59
  321. package/dist/src/server/macros/MacroRunner.js +6 -2
  322. package/dist/src/server/macros/builtins/index.d.ts +2 -3
  323. package/dist/src/server/macros/builtins/index.js +51 -7
  324. package/dist/src/server/plugins/PluginContract.d.ts +1 -1
  325. package/dist/src/server/registry/contracts.d.ts +1 -1
  326. package/dist/src/server/registry/discovery.js +5 -4
  327. package/dist/src/server/registry/ensure-browser-core.js +0 -3
  328. package/dist/src/server/registry/index.js +4 -4
  329. package/dist/src/server/registry/tool-builder.d.ts +46 -0
  330. package/dist/src/server/registry/tool-builder.js +105 -0
  331. package/dist/src/server/sandbox/QuickJSSandbox.js +16 -5
  332. package/dist/src/server/sandbox/SandboxHelpers.js +250 -250
  333. package/dist/src/server/search/EmbeddingWorker.js +5 -3
  334. package/dist/src/server/search/FeedbackTracker.d.ts +9 -0
  335. package/dist/src/server/search/FeedbackTracker.js +26 -0
  336. package/dist/src/server/search/QueryNormalizer.d.ts +6 -0
  337. package/dist/src/server/search/QueryNormalizer.js +94 -0
  338. package/dist/src/server/search/ToolSearchEngineImpl.d.ts +2 -3
  339. package/dist/src/server/search/ToolSearchEngineImpl.js +38 -88
  340. package/dist/src/server/workflows/WorkflowContract.d.ts +24 -0
  341. package/dist/src/server/workflows/WorkflowContract.js +12 -0
  342. package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
  343. package/dist/src/server/workflows/WorkflowEngine.js +136 -3
  344. package/dist/src/types/config.d.ts +0 -14
  345. package/dist/src/types/deobfuscator.d.ts +0 -1
  346. package/dist/src/types/index.d.ts +1 -1
  347. package/dist/src/utils/DetailedDataManager.js +2 -0
  348. package/dist/src/utils/RingBuffer.js +5 -5
  349. package/dist/src/utils/TokenBudgetManager.js +1 -1
  350. package/dist/src/utils/UnifiedCacheManager.js +1 -1
  351. package/dist/src/utils/artifactRetention.js +2 -2
  352. package/dist/src/utils/betterSqlite3.d.ts +11 -0
  353. package/dist/src/utils/betterSqlite3.js +88 -0
  354. package/dist/src/utils/browserExecutable.js +2 -2
  355. package/dist/src/utils/cliFastPath.js +5 -8
  356. package/dist/src/utils/config.js +4 -26
  357. package/dist/src/utils/environmentDoctor.js +138 -11
  358. package/dist/src/utils/outputPaths.js +16 -9
  359. package/dist/src/utils/parallel.js +1 -3
  360. package/package.json +74 -72
  361. package/workflows/.gitkeep +0 -0
  362. package/dist/src/modules/analyzer/AISummarizer.d.ts +0 -39
  363. package/dist/src/modules/analyzer/AISummarizer.js +0 -122
  364. package/dist/src/modules/hook/AIHookGenerator.d.ts +0 -52
  365. package/dist/src/modules/hook/AIHookGenerator.js +0 -360
  366. package/dist/src/modules/hook/AIHookGeneratorTemplates.d.ts +0 -9
  367. package/dist/src/modules/hook/AIHookGeneratorTemplates.js +0 -157
  368. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.d.ts +0 -2
  369. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.js +0 -25
  370. package/dist/src/server/macros/builtins/unpacker-flow.d.ts +0 -2
  371. package/dist/src/server/macros/builtins/unpacker-flow.js +0 -25
  372. package/dist/src/services/LLMService.d.ts +0 -37
  373. package/dist/src/services/LLMService.js +0 -233
  374. package/dist/src/services/prompts/analysis.d.ts +0 -9
  375. package/dist/src/services/prompts/analysis.js +0 -158
  376. package/dist/src/services/prompts/crypto.d.ts +0 -2
  377. package/dist/src/services/prompts/crypto.js +0 -108
  378. package/dist/src/services/prompts/deobfuscation.d.ts +0 -6
  379. package/dist/src/services/prompts/deobfuscation.js +0 -300
  380. package/dist/src/services/prompts/environment.d.ts +0 -16
  381. package/dist/src/services/prompts/environment.js +0 -372
  382. package/dist/src/services/prompts/intelligence.d.ts +0 -4
  383. package/dist/src/services/prompts/intelligence.js +0 -250
  384. package/dist/src/services/prompts/taint.d.ts +0 -2
  385. package/dist/src/services/prompts/taint.js +0 -54
@@ -1,10 +1,9 @@
1
1
  import * as parser from '@babel/parser';
2
2
  import traverse from '@babel/traverse';
3
3
  import * as t from '@babel/types';
4
- import { generateTaintAnalysisPrompt } from '../../services/prompts/taint.js';
5
4
  import { logger } from '../../utils/logger.js';
6
5
  import { checkSanitizer } from '../analyzer/SecurityCodeAnalyzer.js';
7
- export async function analyzeDataFlowWithTaint(code, llm) {
6
+ export async function analyzeDataFlowWithTaint(code) {
8
7
  const graph = { nodes: [], edges: [] };
9
8
  const sources = [];
10
9
  const sinks = [];
@@ -331,14 +330,6 @@ export async function analyzeDataFlowWithTaint(code, llm) {
331
330
  catch (error) {
332
331
  logger.warn('Data flow analysis failed', error);
333
332
  }
334
- if (taintPaths.length > 0 && llm) {
335
- try {
336
- await enhanceTaintAnalysisWithLLM(llm, code, sources, sinks, taintPaths);
337
- }
338
- catch (error) {
339
- logger.warn('LLM-enhanced taint analysis failed', error);
340
- }
341
- }
342
333
  return {
343
334
  graph,
344
335
  sources,
@@ -346,41 +337,6 @@ export async function analyzeDataFlowWithTaint(code, llm) {
346
337
  taintPaths,
347
338
  };
348
339
  }
349
- async function enhanceTaintAnalysisWithLLM(llm, code, sources, sinks, taintPaths) {
350
- if (taintPaths.length === 0)
351
- return;
352
- try {
353
- const sourcesList = sources.map((s) => `${s.type} at line ${s.location.line}`);
354
- const sinksList = sinks.map((s) => `${s.type} at line ${s.location.line}`);
355
- const messages = generateTaintAnalysisPrompt(code.length > 4000 ? code.substring(0, 4000) : code, sourcesList, sinksList);
356
- const response = await llm.chat(messages, {
357
- temperature: 0.2,
358
- maxTokens: 2000,
359
- });
360
- const jsonMatch = response.content.match(/\{[\s\S]*\}/);
361
- if (jsonMatch) {
362
- const llmResult = JSON.parse(jsonMatch[0]);
363
- if (Array.isArray(llmResult.taintPaths)) {
364
- logger.info(`LLM identified ${llmResult.taintPaths.length} additional taint paths`);
365
- llmResult.taintPaths.forEach((rawPath) => {
366
- const path = rawPath;
367
- const exists = taintPaths.some((p) => p.source.location.line === path.source?.location?.line &&
368
- p.sink.location.line === path.sink?.location?.line);
369
- if (!exists && path.source && path.sink) {
370
- taintPaths.push({
371
- source: path.source,
372
- sink: path.sink,
373
- path: path.path || [],
374
- });
375
- }
376
- });
377
- }
378
- }
379
- }
380
- catch (error) {
381
- logger.debug('LLM taint analysis enhancement failed', error);
382
- }
383
- }
384
340
  function checkTaintedArguments(args, taintMap, taintPaths, _funcName, line) {
385
341
  args.forEach((arg) => {
386
342
  if (t.isIdentifier(arg) && taintMap.has(arg.name)) {
@@ -1,6 +1,5 @@
1
1
  import type { NetworkRequest, NetworkResponse } from '../monitor/ConsoleMonitor.js';
2
2
  import type { ConsoleMessage, ExceptionInfo } from '../monitor/ConsoleMonitor.js';
3
- import type { LLMService } from '../../services/LLMService.js';
4
3
  export interface AnalysisResult {
5
4
  criticalRequests: NetworkRequest[];
6
5
  criticalResponses: NetworkResponse[];
@@ -45,8 +44,7 @@ export interface AntiDebugPattern {
45
44
  code: string;
46
45
  }
47
46
  export declare class IntelligentAnalyzer {
48
- private llmService?;
49
- constructor(llmService?: LLMService);
47
+ constructor(legacyDependency?: unknown);
50
48
  analyze(data: {
51
49
  requests: NetworkRequest[];
52
50
  responses: NetworkResponse[];
@@ -55,40 +53,6 @@ export declare class IntelligentAnalyzer {
55
53
  }): AnalysisResult;
56
54
  aggregateSimilarRequests(requests: NetworkRequest[]): Map<string, NetworkRequest[]>;
57
55
  generateAIFriendlySummary(result: AnalysisResult): string;
58
- analyzeCriticalRequestsWithLLM(requests: NetworkRequest[]): Promise<{
59
- encryption: EncryptionPattern[];
60
- signature: SignaturePattern[];
61
- token: TokenPattern[];
62
- customPatterns: Array<{
63
- type: string;
64
- description: string;
65
- location: string;
66
- confidence: number;
67
- }>;
68
- }>;
69
- analyzeCriticalLogsWithLLM(logs: ConsoleMessage[]): Promise<{
70
- keyFunctions: Array<{
71
- name: string;
72
- purpose: string;
73
- confidence: number;
74
- }>;
75
- dataFlow: string;
76
- suspiciousPatterns: Array<{
77
- type: string;
78
- description: string;
79
- location: string;
80
- }>;
81
- }>;
82
- expandKeywordsWithLLM(context: {
83
- domain: string;
84
- requests: NetworkRequest[];
85
- logs: ConsoleMessage[];
86
- }): Promise<{
87
- apiKeywords: string[];
88
- cryptoKeywords: string[];
89
- frameworkKeywords: string[];
90
- businessKeywords: string[];
91
- }>;
92
56
  analyzeWithLLM(data: {
93
57
  requests: NetworkRequest[];
94
58
  responses: NetworkResponse[];
@@ -1,16 +1,8 @@
1
1
  import { logger } from '../../utils/logger.js';
2
- import { generateRequestAnalysisMessages, generateLogAnalysisMessages, generateKeywordExpansionMessages, } from '../../services/prompts/intelligence.js';
3
2
  import { filterCriticalRequests, filterCriticalResponses, filterCriticalLogs, detectEncryptionPatterns, detectSignaturePatterns, detectTokenPatterns, detectAntiDebugPatterns, extractSuspiciousAPIs, extractKeyFunctions, } from '../analyzer/PatternDetector.js';
4
3
  export class IntelligentAnalyzer {
5
- llmService;
6
- constructor(llmService) {
7
- this.llmService = llmService;
8
- if (llmService) {
9
- logger.info('IntelligentAnalyzer initialized with LLM support');
10
- }
11
- else {
12
- logger.warn('IntelligentAnalyzer initialized without LLM (using rule-based analysis only)');
13
- }
4
+ constructor(legacyDependency) {
5
+ void legacyDependency;
14
6
  }
15
7
  analyze(data) {
16
8
  logger.info('Starting intelligent analysis...', {
@@ -89,7 +81,9 @@ export class IntelligentAnalyzer {
89
81
  result.patterns.encryption.slice(0, 5).forEach((pattern) => {
90
82
  const evidence = Array.isArray(pattern.evidence)
91
83
  ? pattern.evidence.join(', ')
92
- : String(pattern.evidence ?? '');
84
+ : pattern.evidence
85
+ ? String(pattern.evidence)
86
+ : '';
93
87
  lines.push(` - ${pattern.type} (confidence: ${(pattern.confidence * 100).toFixed(0)}%)`);
94
88
  lines.push(` location: ${pattern.location}`);
95
89
  lines.push(` evidence: ${evidence}`);
@@ -101,7 +95,9 @@ export class IntelligentAnalyzer {
101
95
  result.patterns.signature.slice(0, 5).forEach((pattern) => {
102
96
  const parameters = Array.isArray(pattern.parameters)
103
97
  ? pattern.parameters.join(', ')
104
- : String(pattern.parameters ?? '');
98
+ : pattern.parameters
99
+ ? String(pattern.parameters)
100
+ : '';
105
101
  lines.push(` - ${pattern.type}`);
106
102
  lines.push(` parameters: ${parameters}`);
107
103
  });
@@ -122,136 +118,7 @@ export class IntelligentAnalyzer {
122
118
  lines.push('=== Analysis Summary ===');
123
119
  return lines.join('\n');
124
120
  }
125
- async analyzeCriticalRequestsWithLLM(requests) {
126
- if (!this.llmService) {
127
- logger.warn('LLM service not available, skipping LLM analysis');
128
- return { encryption: [], signature: [], token: [], customPatterns: [] };
129
- }
130
- logger.info('Starting LLM-enhanced request analysis...');
131
- const requestSummary = requests.slice(0, 20).map((req) => {
132
- const urlObj = new URL(req.url, 'http://localhost');
133
- const params = Object.fromEntries(urlObj.searchParams.entries());
134
- return {
135
- url: req.url,
136
- method: req.method,
137
- urlParams: params,
138
- headers: req.headers,
139
- postData: req.postData?.substring(0, 500),
140
- };
141
- });
142
- try {
143
- const response = await this.llmService.chat(generateRequestAnalysisMessages(requestSummary), {
144
- temperature: 0.2,
145
- maxTokens: 3000,
146
- });
147
- const result = JSON.parse(response.content);
148
- logger.success('LLM request analysis completed', {
149
- encryption: result.encryption?.length || 0,
150
- signature: result.signature?.length || 0,
151
- token: result.token?.length || 0,
152
- custom: result.customPatterns?.length || 0,
153
- });
154
- return result;
155
- }
156
- catch (error) {
157
- logger.error('LLM request analysis failed:', error);
158
- return { encryption: [], signature: [], token: [], customPatterns: [] };
159
- }
160
- }
161
- async analyzeCriticalLogsWithLLM(logs) {
162
- if (!this.llmService) {
163
- logger.warn('LLM service not available, skipping LLM log analysis');
164
- return { keyFunctions: [], dataFlow: '', suspiciousPatterns: [] };
165
- }
166
- logger.info('Starting LLM-enhanced log analysis...');
167
- const logSummary = logs.slice(0, 50).map((log, index) => ({
168
- index,
169
- type: log.type,
170
- text: log.text.substring(0, 300),
171
- url: log.url,
172
- lineNumber: log.lineNumber,
173
- stackTrace: log.stackTrace?.slice(0, 3),
174
- }));
175
- try {
176
- const response = await this.llmService.chat(generateLogAnalysisMessages(logSummary), {
177
- temperature: 0.2,
178
- maxTokens: 2500,
179
- });
180
- const result = JSON.parse(response.content);
181
- logger.success('LLM log analysis completed', {
182
- keyFunctions: result.keyFunctions?.length || 0,
183
- suspiciousPatterns: result.suspiciousPatterns?.length || 0,
184
- });
185
- return result;
186
- }
187
- catch (error) {
188
- logger.error('LLM log analysis failed:', error);
189
- return { keyFunctions: [], dataFlow: '', suspiciousPatterns: [] };
190
- }
191
- }
192
- async expandKeywordsWithLLM(context) {
193
- if (!this.llmService) {
194
- return { apiKeywords: [], cryptoKeywords: [], frameworkKeywords: [], businessKeywords: [] };
195
- }
196
- logger.info('Expanding keywords with LLM...');
197
- const urlPatterns = context.requests.slice(0, 15).map((r) => {
198
- try {
199
- const url = new URL(r.url);
200
- return {
201
- path: url.pathname,
202
- params: Array.from(url.searchParams.keys()),
203
- method: r.method,
204
- };
205
- }
206
- catch {
207
- return { path: r.url, params: [], method: r.method };
208
- }
209
- });
210
- const logKeywords = context.logs.slice(0, 20).map((l) => l.text.substring(0, 150));
211
- try {
212
- const response = await this.llmService.chat(generateKeywordExpansionMessages(context.domain, urlPatterns, logKeywords), { temperature: 0.4, maxTokens: 800 });
213
- const result = JSON.parse(response.content);
214
- logger.success('Keywords expanded', {
215
- api: result.apiKeywords?.length || 0,
216
- crypto: result.cryptoKeywords?.length || 0,
217
- framework: result.frameworkKeywords?.length || 0,
218
- });
219
- return result;
220
- }
221
- catch (error) {
222
- logger.error('Keyword expansion failed:', error);
223
- return { apiKeywords: [], cryptoKeywords: [], frameworkKeywords: [], businessKeywords: [] };
224
- }
225
- }
226
121
  async analyzeWithLLM(data) {
227
- logger.info('Starting hybrid analysis (rules + LLM)...');
228
- const ruleBasedResult = this.analyze(data);
229
- if (this.llmService) {
230
- try {
231
- const llmRequestAnalysis = await this.analyzeCriticalRequestsWithLLM(ruleBasedResult.criticalRequests);
232
- const llmLogAnalysis = await this.analyzeCriticalLogsWithLLM(ruleBasedResult.criticalLogs);
233
- ruleBasedResult.patterns.encryption = [
234
- ...(ruleBasedResult.patterns.encryption || []),
235
- ...llmRequestAnalysis.encryption,
236
- ];
237
- ruleBasedResult.patterns.signature = [
238
- ...(ruleBasedResult.patterns.signature || []),
239
- ...llmRequestAnalysis.signature,
240
- ];
241
- ruleBasedResult.patterns.token = [
242
- ...(ruleBasedResult.patterns.token || []),
243
- ...llmRequestAnalysis.token,
244
- ];
245
- ruleBasedResult.summary.keyFunctions = [
246
- ...ruleBasedResult.summary.keyFunctions,
247
- ...llmLogAnalysis.keyFunctions.map((f) => f.name),
248
- ];
249
- logger.success('Hybrid analysis completed with LLM enhancement');
250
- }
251
- catch (error) {
252
- logger.error('LLM enhancement failed, using rule-based results only:', error);
253
- }
254
- }
255
- return ruleBasedResult;
122
+ return this.analyze(data);
256
123
  }
257
124
  }
@@ -76,7 +76,7 @@ export function filterCriticalRequests(requests) {
76
76
  return true;
77
77
  return false;
78
78
  })
79
- .sort((a, b) => {
79
+ .toSorted((a, b) => {
80
80
  const scoreA = calculateRequestPriority(a);
81
81
  const scoreB = calculateRequestPriority(b);
82
82
  return scoreB - scoreA;
@@ -97,7 +97,7 @@ export function filterCriticalResponses(responses) {
97
97
  return true;
98
98
  return false;
99
99
  })
100
- .sort((a, b) => b.timestamp - a.timestamp);
100
+ .toSorted((a, b) => b.timestamp - a.timestamp);
101
101
  }
102
102
  export function calculateLogPriority(log) {
103
103
  let score = 0;
@@ -124,7 +124,7 @@ export function filterCriticalLogs(logs) {
124
124
  return true;
125
125
  return false;
126
126
  })
127
- .sort((a, b) => {
127
+ .toSorted((a, b) => {
128
128
  const scoreA = calculateLogPriority(a);
129
129
  const scoreB = calculateLogPriority(b);
130
130
  return scoreB - scoreA;
@@ -155,7 +155,7 @@ export function detectTokenPatternsInternal(requests) {
155
155
  confidence: 0.9,
156
156
  });
157
157
  }
158
- else if (headerValue.length > 20 && /^[A-Za-z0-9_\-+=\/]+$/.test(headerValue)) {
158
+ else if (headerValue.length > 20 && /^[A-Za-z0-9_\-+=/]+$/.test(headerValue)) {
159
159
  patterns.push({
160
160
  type: 'Custom',
161
161
  location: `${req.url} (header: ${headerName})`,
@@ -233,7 +233,7 @@ export class BrowserDiscovery {
233
233
  }
234
234
  return null;
235
235
  }
236
- catch (_error) {
236
+ catch {
237
237
  return null;
238
238
  }
239
239
  }
@@ -259,7 +259,7 @@ export class BrowserDiscovery {
259
259
  }
260
260
  return false;
261
261
  }
262
- catch (_error) {
262
+ catch {
263
263
  return false;
264
264
  }
265
265
  }
@@ -1,5 +1,5 @@
1
1
  import { existsSync } from 'fs';
2
- import puppeteer, {} from 'rebrowser-puppeteer-core';
2
+ import { launch } from 'rebrowser-puppeteer-core';
3
3
  import { logger } from '../../utils/logger.js';
4
4
  import { findBrowserExecutable } from '../../utils/browserExecutable.js';
5
5
  import { CaptchaDetector } from '../captcha/CaptchaDetector.js';
@@ -69,7 +69,7 @@ export class BrowserModeManager {
69
69
  if (executablePath) {
70
70
  options.executablePath = executablePath;
71
71
  }
72
- const browser = await puppeteer.launch(options);
72
+ const browser = await launch(options);
73
73
  const pid = browser.process()?.pid ?? null;
74
74
  if (this.isClosing) {
75
75
  await browser.close().catch((error) => {
@@ -278,15 +278,16 @@ export class BrowserModeManager {
278
278
  }
279
279
  if (this.sessionData.localStorage || this.sessionData.sessionStorage) {
280
280
  await page.evaluate((data) => {
281
- const restoreStorage = (storage, items) => {
282
- if (items) {
283
- for (const [key, value] of Object.entries(items)) {
284
- storage.setItem(key, value);
285
- }
281
+ if (data.local) {
282
+ for (const [key, value] of Object.entries(data.local)) {
283
+ localStorage.setItem(key, value);
286
284
  }
287
- };
288
- restoreStorage(localStorage, data.local);
289
- restoreStorage(sessionStorage, data.session);
285
+ }
286
+ if (data.session) {
287
+ for (const [key, value] of Object.entries(data.session)) {
288
+ sessionStorage.setItem(key, value);
289
+ }
290
+ }
290
291
  }, {
291
292
  local: this.sessionData.localStorage,
292
293
  session: this.sessionData.sessionStorage,
@@ -187,7 +187,7 @@ export class TabRegistry {
187
187
  });
188
188
  }
189
189
  }
190
- return result.sort((a, b) => a.index - b.index);
190
+ return result.toSorted((a, b) => a.index - b.index);
191
191
  }
192
192
  listAllTabs() {
193
193
  const result = [];
@@ -203,7 +203,7 @@ export class TabRegistry {
203
203
  stale: entry.stale,
204
204
  });
205
205
  }
206
- return result.sort((a, b) => a.index - b.index);
206
+ return result.toSorted((a, b) => a.index - b.index);
207
207
  }
208
208
  setSharedContext(key, value) {
209
209
  this.sharedContext.set(key, value);
@@ -49,6 +49,7 @@ export declare class UnifiedBrowserManager implements IBrowserManager {
49
49
  private chromeLaunchPromise?;
50
50
  private camoufoxLaunchPromise?;
51
51
  private isClosing;
52
+ private _chromeIsAttached;
52
53
  constructor(config?: UnifiedBrowserConfig);
53
54
  launch(): Promise<PuppeteerBrowser | CamoufoxBrowserLike>;
54
55
  private launchChrome;
@@ -12,6 +12,7 @@ export class UnifiedBrowserManager {
12
12
  chromeLaunchPromise;
13
13
  camoufoxLaunchPromise;
14
14
  isClosing = false;
15
+ _chromeIsAttached = false;
15
16
  constructor(config = {}) {
16
17
  this.config = config;
17
18
  this.driver = config.driver ?? 'chrome';
@@ -117,9 +118,11 @@ export class UnifiedBrowserManager {
117
118
  const puppeteer = await import('rebrowser-puppeteer-core');
118
119
  const browser = await puppeteer.connect({
119
120
  browserWSEndpoint: wsEndpoint,
121
+ defaultViewport: null,
120
122
  });
121
123
  this.chromeManager = new BrowserModeManager({}, {});
122
124
  Reflect.set(this.chromeManager, 'browser', browser);
125
+ this._chromeIsAttached = true;
123
126
  logger.info('Connected to Chrome browser successfully');
124
127
  return browser;
125
128
  }
@@ -167,6 +170,8 @@ export class UnifiedBrowserManager {
167
170
  this.chromeLaunchPromise = undefined;
168
171
  this.camoufoxLaunchPromise = undefined;
169
172
  this.activePage = null;
173
+ const chromeWasAttached = this._chromeIsAttached;
174
+ this._chromeIsAttached = false;
170
175
  const closeTasks = [];
171
176
  if (camoufoxManager) {
172
177
  closeTasks.push(camoufoxManager.close().then(() => {
@@ -174,9 +179,19 @@ export class UnifiedBrowserManager {
174
179
  }));
175
180
  }
176
181
  if (chromeManager) {
177
- closeTasks.push(chromeManager.close().then(() => {
178
- logger.info('Chrome browser closed');
179
- }));
182
+ if (chromeWasAttached) {
183
+ const browser = chromeManager.getBrowser();
184
+ if (browser) {
185
+ closeTasks.push(browser.disconnect().then(() => {
186
+ logger.info('Detached from Chrome browser (not killed)');
187
+ }));
188
+ }
189
+ }
190
+ else {
191
+ closeTasks.push(chromeManager.close().then(() => {
192
+ logger.info('Chrome browser closed');
193
+ }));
194
+ }
180
195
  }
181
196
  await Promise.all(closeTasks);
182
197
  }
@@ -1,21 +1,12 @@
1
1
  import { type Page } from 'rebrowser-puppeteer-core';
2
- import { type LLMService } from '../../services/LLMService.js';
3
2
  import type { AICaptchaDetectionResult, CaptchaProviderHint, CaptchaType, CaptchaPageInfo } from '../captcha/types.js';
4
3
  export type { AICaptchaDetectionResult } from '../captcha/types.js';
5
4
  export declare class AICaptchaDetector {
6
- protected llm: LLMService;
7
5
  protected screenshotDir: string;
8
- protected hasLoggedVisionFallback: boolean;
9
- constructor(llm: LLMService, screenshotDir?: string);
6
+ constructor(screenshotDir?: string);
10
7
  protected saveScreenshot(screenshotBase64: string): Promise<string>;
11
8
  detect(page: Page): Promise<AICaptchaDetectionResult>;
12
9
  protected getPageInfo(page: Page): Promise<CaptchaPageInfo>;
13
- protected analyzeWithAI(screenshot: string, pageInfo: CaptchaPageInfo): Promise<AICaptchaDetectionResult>;
14
- protected buildAnalysisPrompt(pageInfo: CaptchaPageInfo): string;
15
- protected parseAIResponse(response: string, screenshotPath: string): AICaptchaDetectionResult;
16
- protected fallbackTextAnalysis(pageInfo: CaptchaPageInfo): AICaptchaDetectionResult;
17
- protected sanitizePageInfoForPrompt(pageInfo: CaptchaPageInfo): CaptchaPageInfo;
18
- protected sanitizeUntrustedText(value: string, maxLength: number): string;
19
10
  protected normalizeCaptchaType(type: unknown, detected: boolean): CaptchaType;
20
11
  protected normalizeProviderHint(providerHint: unknown, detected: boolean): CaptchaProviderHint | undefined;
21
12
  protected normalizeDetected(value: unknown): boolean;