@jshookmcp/jshook 0.2.2 → 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 (414) hide show
  1. package/LICENSE +661 -661
  2. package/README.md +15 -6
  3. package/README.zh.md +19 -4
  4. package/dist/native/scripts/linux/enum-windows.sh +12 -12
  5. package/dist/native/scripts/macos/enum-windows.applescript +22 -22
  6. package/dist/native/scripts/windows/enum-windows-by-class.ps1 +51 -51
  7. package/dist/native/scripts/windows/enum-windows.ps1 +44 -44
  8. package/dist/native/scripts/windows/inject-dll.ps1 +21 -21
  9. package/dist/packages/extension-sdk/src/bridges/shared.js +2 -2
  10. package/dist/packages/extension-sdk/src/plugin.d.ts +5 -0
  11. package/dist/packages/extension-sdk/src/plugin.js +119 -33
  12. package/dist/packages/extension-sdk/src/workflow.d.ts +156 -0
  13. package/dist/packages/extension-sdk/src/workflow.js +236 -0
  14. package/dist/src/config/search-defaults.js +161 -0
  15. package/dist/src/constants.d.ts +3 -0
  16. package/dist/src/constants.js +4 -1
  17. package/dist/src/index.d.ts +1 -1
  18. package/dist/src/index.js +13 -17
  19. package/dist/src/modules/analyzer/CodeAnalyzer.d.ts +1 -3
  20. package/dist/src/modules/analyzer/CodeAnalyzer.js +16 -28
  21. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.d.ts +1 -2
  22. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.js +1 -45
  23. package/dist/src/modules/analyzer/IntelligentAnalyzer.d.ts +1 -37
  24. package/dist/src/modules/analyzer/IntelligentAnalyzer.js +9 -142
  25. package/dist/src/modules/analyzer/PatternDetector.js +3 -3
  26. package/dist/src/modules/analyzer/PatternDetectorAuthPatterns.js +1 -1
  27. package/dist/src/modules/browser/BrowserDiscovery.d.ts +6 -5
  28. package/dist/src/modules/browser/BrowserDiscovery.js +3 -3
  29. package/dist/src/modules/browser/BrowserModeManager.d.ts +1 -1
  30. package/dist/src/modules/browser/BrowserModeManager.js +11 -10
  31. package/dist/src/modules/browser/TabRegistry.js +2 -2
  32. package/dist/src/modules/browser/UnifiedBrowserManager.d.ts +1 -0
  33. package/dist/src/modules/browser/UnifiedBrowserManager.js +19 -4
  34. package/dist/src/modules/captcha/AICaptchaDetector.d.ts +14 -23
  35. package/dist/src/modules/captcha/AICaptchaDetector.js +8 -202
  36. package/dist/src/modules/captcha/CaptchaDetector.d.ts +31 -17
  37. package/dist/src/modules/captcha/CaptchaDetector.js +1 -1
  38. package/dist/src/modules/collector/CodeCache.d.ts +2 -2
  39. package/dist/src/modules/collector/CodeCollector.d.ts +12 -9
  40. package/dist/src/modules/collector/CodeCollector.js +5 -6
  41. package/dist/src/modules/collector/DOMInspector.d.ts +3 -2
  42. package/dist/src/modules/collector/DOMInspector.js +49 -59
  43. package/dist/src/modules/collector/PageController.d.ts +17 -4
  44. package/dist/src/modules/collector/PageController.js +2 -5
  45. package/dist/src/modules/collector/PageScriptCollectors.js +3 -3
  46. package/dist/src/modules/crypto/CryptoDetector.d.ts +1 -4
  47. package/dist/src/modules/crypto/CryptoDetector.js +2 -42
  48. package/dist/src/modules/crypto/CryptoRules.js +1 -1
  49. package/dist/src/modules/debugger/BlackboxManager.js +1 -1
  50. package/dist/src/modules/debugger/DebuggerManager.impl.core.scope.js +1 -1
  51. package/dist/src/modules/debugger/ScriptManager.impl.extract-function-tree.js +5 -3
  52. package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
  53. package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
  54. package/dist/src/modules/deobfuscator/Deobfuscator.js +4 -39
  55. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.d.ts +0 -3
  56. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.js +2 -8
  57. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.d.ts +2 -3
  58. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +5 -57
  59. package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
  60. package/dist/src/modules/deobfuscator/PackerDeobfuscator.js +1 -1
  61. package/dist/src/modules/deobfuscator/VMDeobfuscator.d.ts +2 -10
  62. package/dist/src/modules/deobfuscator/VMDeobfuscator.js +3 -128
  63. package/dist/src/modules/deobfuscator/webcrack.js +15 -2
  64. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.d.ts +5 -8
  65. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.js +10 -102
  66. package/dist/src/modules/emulator/EnvironmentEmulator.d.ts +1 -5
  67. package/dist/src/modules/emulator/EnvironmentEmulator.js +7 -91
  68. package/dist/src/modules/emulator/EnvironmentEmulatorFetch.js +58 -61
  69. package/dist/src/modules/emulator/templates/chrome-env.d.ts +17 -7
  70. package/dist/src/modules/emulator/templates/chrome-env.js +14 -7
  71. package/dist/src/modules/external/ExternalToolRunner.d.ts +1 -1
  72. package/dist/src/modules/external/ExternalToolRunner.js +26 -23
  73. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.d.ts +13 -0
  74. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.js +42 -0
  75. package/dist/src/modules/monitor/FetchInterceptor.d.ts +46 -0
  76. package/dist/src/modules/monitor/FetchInterceptor.js +191 -0
  77. package/dist/src/modules/monitor/PerformanceMonitor.js +8 -7
  78. package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
  79. package/dist/src/modules/process/LinuxProcessManager.js +4 -2
  80. package/dist/src/modules/process/MacProcessManager.js +1 -1
  81. package/dist/src/modules/process/MemoryManager.d.ts +1 -1
  82. package/dist/src/modules/process/MemoryManager.js +2 -2
  83. package/dist/src/modules/process/ProcessManager.impl.js +1 -1
  84. package/dist/src/modules/process/memory/AuditTrail.js +1 -1
  85. package/dist/src/modules/process/memory/reader.js +35 -3
  86. package/dist/src/modules/process/memory/regions.enumerate.js +1 -1
  87. package/dist/src/modules/process/memory/regions.protection.js +42 -9
  88. package/dist/src/modules/process/memory/scanner.d.ts +5 -1
  89. package/dist/src/modules/process/memory/scanner.darwin.js +57 -0
  90. package/dist/src/modules/process/memory/scanner.js +88 -4
  91. package/dist/src/modules/process/memory/writer.js +44 -4
  92. package/dist/src/modules/security/ExecutionSandbox.js +7 -8
  93. package/dist/src/modules/stealth/FingerprintManager.js +1 -1
  94. package/dist/src/modules/stealth/StealthScripts.d.ts +4 -2
  95. package/dist/src/modules/stealth/StealthScripts.js +53 -14
  96. package/dist/src/modules/stealth/StealthVerifier.d.ts +1 -1
  97. package/dist/src/modules/stealth/StealthVerifier.js +2 -4
  98. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.d.ts +14 -0
  99. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.js +181 -2
  100. package/dist/src/modules/trace/TraceDB.js +12 -6
  101. package/dist/src/modules/trace/TraceRecorder.js +1 -5
  102. package/dist/src/native/AntiCheatDetector.js +67 -16
  103. package/dist/src/native/CodeInjector.js +4 -4
  104. package/dist/src/native/HardwareBreakpoint.js +25 -16
  105. package/dist/src/native/HeapAnalyzer.js +2 -2
  106. package/dist/src/native/MemoryController.js +1 -1
  107. package/dist/src/native/MemoryScanSession.js +2 -2
  108. package/dist/src/native/MemoryScanner.js +4 -8
  109. package/dist/src/native/NativeMemoryManager.impl.js +2 -2
  110. package/dist/src/native/PEAnalyzer.js +14 -15
  111. package/dist/src/native/PointerChainEngine.js +2 -4
  112. package/dist/src/native/ScriptLoader.js +4 -9
  113. package/dist/src/native/Speedhack.js +1 -1
  114. package/dist/src/native/StructureAnalyzer.js +52 -33
  115. package/dist/src/native/Win32API.d.ts +1 -0
  116. package/dist/src/native/Win32API.js +13 -0
  117. package/dist/src/native/Win32Debug.js +19 -19
  118. package/dist/src/native/platform/darwin/DarwinAPI.d.ts +2 -0
  119. package/dist/src/native/platform/darwin/DarwinAPI.js +8 -0
  120. package/dist/src/native/platform/darwin/DarwinMemoryProvider.js +6 -1
  121. package/dist/src/server/MCPServer.context.d.ts +2 -1
  122. package/dist/src/server/MCPServer.d.ts +2 -1
  123. package/dist/src/server/MCPServer.domain.d.ts +1 -1
  124. package/dist/src/server/MCPServer.domain.js +81 -16
  125. package/dist/src/server/MCPServer.js +42 -14
  126. package/dist/src/server/MCPServer.resources.d.ts +2 -0
  127. package/dist/src/server/MCPServer.resources.js +91 -0
  128. package/dist/src/server/MCPServer.search.handlers.call.js +2 -1
  129. package/dist/src/server/MCPServer.search.helpers.js +2 -2
  130. package/dist/src/server/MCPServer.tools.js +1 -1
  131. package/dist/src/server/MCPServer.transport.js +12 -0
  132. package/dist/src/server/ToolCallContextGuard.d.ts +5 -0
  133. package/dist/src/server/ToolCallContextGuard.js +85 -0
  134. package/dist/src/server/ToolRouter.d.ts +26 -10
  135. package/dist/src/server/ToolRouter.intent.d.ts +26 -0
  136. package/dist/src/server/ToolRouter.intent.js +77 -0
  137. package/dist/src/server/ToolRouter.js +103 -284
  138. package/dist/src/server/ToolRouter.policy.d.ts +22 -0
  139. package/dist/src/server/ToolRouter.policy.js +163 -0
  140. package/dist/src/server/ToolRouter.probe.d.ts +17 -0
  141. package/dist/src/server/ToolRouter.probe.js +103 -0
  142. package/dist/src/server/ToolRouter.renderer.d.ts +9 -0
  143. package/dist/src/server/ToolRouter.renderer.js +52 -0
  144. package/dist/src/server/activation/ActivationController.js +15 -12
  145. package/dist/src/server/activation/CompoundConditionEngine.js +1 -1
  146. package/dist/src/server/activation/PredictiveBooster.js +1 -3
  147. package/dist/src/server/domains/analysis/definitions.js +155 -655
  148. package/dist/src/server/domains/analysis/handlers.impl.d.ts +8 -8
  149. package/dist/src/server/domains/analysis/handlers.impl.js +34 -28
  150. package/dist/src/server/domains/analysis/handlers.web-tools.js +4 -3
  151. package/dist/src/server/domains/analysis/manifest.js +6 -4
  152. package/dist/src/server/domains/antidebug/definitions.js +25 -111
  153. package/dist/src/server/domains/browser/definitions.tools.advanced.js +59 -88
  154. package/dist/src/server/domains/browser/definitions.tools.behavior.js +120 -227
  155. package/dist/src/server/domains/browser/definitions.tools.page-core.js +157 -386
  156. package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
  157. package/dist/src/server/domains/browser/definitions.tools.runtime.js +61 -174
  158. package/dist/src/server/domains/browser/definitions.tools.security.js +92 -237
  159. package/dist/src/server/domains/browser/handlers/camoufox-browser.js +3 -2
  160. package/dist/src/server/domains/browser/handlers/captcha-solver.js +3 -3
  161. package/dist/src/server/domains/browser/handlers/dom-query.js +2 -1
  162. package/dist/src/server/domains/browser/handlers/facade-initializer.d.ts +3 -3
  163. package/dist/src/server/domains/browser/handlers/facade-initializer.js +3 -3
  164. package/dist/src/server/domains/browser/handlers/framework-state.js +231 -3
  165. package/dist/src/server/domains/browser/handlers/indexeddb-dump.js +21 -20
  166. package/dist/src/server/domains/browser/handlers/script-management.js +1 -1
  167. package/dist/src/server/domains/browser/handlers/stealth-injection.js +8 -2
  168. package/dist/src/server/domains/browser/handlers.impl.d.ts +15 -12
  169. package/dist/src/server/domains/browser/handlers.impl.js +5 -6
  170. package/dist/src/server/domains/browser/manifest.js +37 -13
  171. package/dist/src/server/domains/coordination/definitions.js +50 -149
  172. package/dist/src/server/domains/coordination/index.d.ts +20 -1
  173. package/dist/src/server/domains/coordination/index.js +133 -0
  174. package/dist/src/server/domains/coordination/manifest.js +15 -0
  175. package/dist/src/server/domains/debugger/definitions.tools.advanced.js +72 -189
  176. package/dist/src/server/domains/debugger/definitions.tools.core.js +114 -288
  177. package/dist/src/server/domains/debugger/manifest.js +9 -2
  178. package/dist/src/server/domains/encoding/definitions.js +43 -153
  179. package/dist/src/server/domains/encoding/handlers.base.js +2 -2
  180. package/dist/src/server/domains/evidence/definitions.d.ts +2 -0
  181. package/dist/src/server/domains/evidence/definitions.js +42 -0
  182. package/dist/src/server/domains/evidence/handlers.d.ts +582 -0
  183. package/dist/src/server/domains/evidence/handlers.js +60 -0
  184. package/dist/src/server/domains/evidence/index.d.ts +2 -0
  185. package/dist/src/server/domains/evidence/index.js +2 -0
  186. package/dist/src/server/domains/evidence/manifest.d.ts +63 -0
  187. package/dist/src/server/domains/evidence/manifest.js +78 -0
  188. package/dist/src/server/domains/graphql/definitions.js +53 -141
  189. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.replay.js +92 -114
  190. package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
  191. package/dist/src/server/domains/hooks/ai-handlers.js +4 -70
  192. package/dist/src/server/domains/hooks/definitions.js +69 -335
  193. package/dist/src/server/domains/hooks/manifest.d.ts +1 -1
  194. package/dist/src/server/domains/hooks/manifest.js +1 -2
  195. package/dist/src/server/domains/instrumentation/definitions.d.ts +2 -0
  196. package/dist/src/server/domains/instrumentation/definitions.js +99 -0
  197. package/dist/src/server/domains/instrumentation/handlers.d.ts +78 -0
  198. package/dist/src/server/domains/instrumentation/handlers.js +206 -0
  199. package/dist/src/server/domains/instrumentation/index.d.ts +2 -0
  200. package/dist/src/server/domains/instrumentation/index.js +2 -0
  201. package/dist/src/server/domains/instrumentation/manifest.d.ts +63 -0
  202. package/dist/src/server/domains/instrumentation/manifest.js +114 -0
  203. package/dist/src/server/domains/macro/definitions.js +16 -43
  204. package/dist/src/server/domains/maintenance/definitions.js +60 -219
  205. package/dist/src/server/domains/maintenance/handlers.d.ts +2 -2
  206. package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
  207. package/dist/src/server/domains/maintenance/handlers.js +2 -2
  208. package/dist/src/server/domains/memory/definitions.js +387 -559
  209. package/dist/src/server/domains/memory/handlers/hooks.d.ts +55 -0
  210. package/dist/src/server/domains/memory/handlers/hooks.js +115 -0
  211. package/dist/src/server/domains/memory/handlers/integrity.d.ts +77 -0
  212. package/dist/src/server/domains/memory/handlers/integrity.js +180 -0
  213. package/dist/src/server/domains/memory/handlers/pointer-chain.d.ts +29 -0
  214. package/dist/src/server/domains/memory/handlers/pointer-chain.js +82 -0
  215. package/dist/src/server/domains/memory/handlers/readwrite.d.ts +41 -0
  216. package/dist/src/server/domains/memory/handlers/readwrite.js +78 -0
  217. package/dist/src/server/domains/memory/handlers/scan.d.ts +35 -0
  218. package/dist/src/server/domains/memory/handlers/scan.js +97 -0
  219. package/dist/src/server/domains/memory/handlers/session.d.ts +23 -0
  220. package/dist/src/server/domains/memory/handlers/session.js +49 -0
  221. package/dist/src/server/domains/memory/handlers/structure.d.ts +29 -0
  222. package/dist/src/server/domains/memory/handlers/structure.js +74 -0
  223. package/dist/src/server/domains/memory/handlers.impl.d.ts +49 -54
  224. package/dist/src/server/domains/memory/handlers.impl.js +63 -494
  225. package/dist/src/server/domains/memory/manifest.js +236 -64
  226. package/dist/src/server/domains/native-bridge/definitions.js +54 -192
  227. package/dist/src/server/domains/native-bridge/index.d.ts +1 -0
  228. package/dist/src/server/domains/native-bridge/index.js +2 -1
  229. package/dist/src/server/domains/network/auth-extractor.js +1 -1
  230. package/dist/src/server/domains/network/definitions.js +175 -578
  231. package/dist/src/server/domains/network/handlers.base.core.d.ts +64 -0
  232. package/dist/src/server/domains/network/handlers.base.core.js +623 -0
  233. package/dist/src/server/domains/network/handlers.base.d.ts +2 -124
  234. package/dist/src/server/domains/network/handlers.base.js +3 -878
  235. package/dist/src/server/domains/network/handlers.base.performance.d.ts +63 -0
  236. package/dist/src/server/domains/network/handlers.base.performance.js +193 -0
  237. package/dist/src/server/domains/network/handlers.base.types.d.ts +42 -0
  238. package/dist/src/server/domains/network/handlers.base.types.js +89 -0
  239. package/dist/src/server/domains/network/handlers.impl.core.runtime.d.ts +1 -1
  240. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.d.ts +21 -0
  241. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.js +186 -0
  242. package/dist/src/server/domains/network/handlers.impl.core.runtime.js +1 -1
  243. package/dist/src/server/domains/network/manifest.js +15 -0
  244. package/dist/src/server/domains/network/replay.js +1 -4
  245. package/dist/src/server/domains/platform/definitions.js +121 -112
  246. package/dist/src/server/domains/platform/handlers/bridge-handlers.d.ts +5 -1
  247. package/dist/src/server/domains/platform/handlers/bridge-handlers.js +194 -5
  248. package/dist/src/server/domains/platform/handlers/electron-asar-helpers.js +26 -6
  249. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.d.ts +3 -0
  250. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.js +170 -0
  251. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.d.ts +3 -0
  252. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.js +193 -0
  253. package/dist/src/server/domains/platform/handlers/electron-handlers.d.ts +6 -0
  254. package/dist/src/server/domains/platform/handlers/electron-handlers.js +95 -2
  255. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.d.ts +2 -0
  256. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.js +370 -0
  257. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.d.ts +2 -0
  258. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.js +78 -0
  259. package/dist/src/server/domains/platform/handlers/miniapp-handlers.d.ts +1 -1
  260. package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +4 -4
  261. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.d.ts +2 -0
  262. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.js +207 -0
  263. package/dist/src/server/domains/platform/handlers.d.ts +48 -0
  264. package/dist/src/server/domains/platform/handlers.js +29 -0
  265. package/dist/src/server/domains/platform/manifest.js +38 -0
  266. package/dist/src/server/domains/process/definitions.js +163 -647
  267. package/dist/src/server/domains/process/handlers.base.d.ts +3 -95
  268. package/dist/src/server/domains/process/handlers.base.js +7 -462
  269. package/dist/src/server/domains/process/handlers.base.process.d.ts +61 -0
  270. package/dist/src/server/domains/process/handlers.base.process.js +417 -0
  271. package/dist/src/server/domains/process/handlers.base.types.d.ts +57 -0
  272. package/dist/src/server/domains/process/handlers.base.types.js +50 -0
  273. package/dist/src/server/domains/process/handlers.impl.core.runtime.inject.js +19 -17
  274. package/dist/src/server/domains/process/manifest.js +6 -1
  275. package/dist/src/server/domains/sandbox/definitions.js +11 -33
  276. package/dist/src/server/domains/sandbox/handlers.js +8 -3
  277. package/dist/src/server/domains/shared/ResponseBuilder.d.ts +209 -0
  278. package/dist/src/server/domains/shared/ResponseBuilder.js +48 -0
  279. package/dist/src/server/domains/shared/modules.d.ts +0 -2
  280. package/dist/src/server/domains/shared/modules.js +0 -1
  281. package/dist/src/server/domains/sourcemap/definitions.js +27 -111
  282. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-common.js +7 -2
  283. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-main.js +1 -1
  284. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-parse-base.js +1 -1
  285. package/dist/src/server/domains/sourcemap/manifest.d.ts +1 -1
  286. package/dist/src/server/domains/sourcemap/manifest.js +1 -1
  287. package/dist/src/server/domains/streaming/definitions.js +36 -148
  288. package/dist/src/server/domains/streaming/handlers.impl.streaming-sse.js +163 -164
  289. package/dist/src/server/domains/streaming/handlers.impl.streaming-ws.js +1 -1
  290. package/dist/src/server/domains/trace/TraceSummarizer.d.ts +60 -0
  291. package/dist/src/server/domains/trace/TraceSummarizer.js +112 -0
  292. package/dist/src/server/domains/trace/definitions.tools.js +51 -176
  293. package/dist/src/server/domains/trace/handlers.d.ts +2 -1
  294. package/dist/src/server/domains/trace/handlers.js +62 -9
  295. package/dist/src/server/domains/trace/index.d.ts +2 -1
  296. package/dist/src/server/domains/trace/index.js +2 -1
  297. package/dist/src/server/domains/trace/manifest.js +18 -4
  298. package/dist/src/server/domains/transform/definitions.js +50 -210
  299. package/dist/src/server/domains/transform/handlers.impl.transform-base.js +6 -6
  300. package/dist/src/server/domains/transform/handlers.impl.transform-crypto.js +18 -19
  301. package/dist/src/server/domains/transform/manifest.d.ts +1 -1
  302. package/dist/src/server/domains/transform/manifest.js +1 -1
  303. package/dist/src/server/domains/wasm/definitions.js +55 -232
  304. package/dist/src/server/domains/wasm/handlers.js +3 -3
  305. package/dist/src/server/domains/workflow/definitions.js +144 -414
  306. package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +2 -2
  307. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.d.ts +2 -0
  308. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.js +126 -87
  309. package/dist/src/server/domains/workflow/handlers.impl.workflow-batch.js +5 -5
  310. package/dist/src/server/evidence/ReverseEvidenceGraph.d.ts +20 -0
  311. package/dist/src/server/evidence/ReverseEvidenceGraph.js +208 -0
  312. package/dist/src/server/evidence/index.d.ts +2 -0
  313. package/dist/src/server/evidence/index.js +1 -0
  314. package/dist/src/server/evidence/types.d.ts +22 -0
  315. package/dist/src/server/evidence/types.js +1 -0
  316. package/dist/src/server/extensions/ExtensionManager.d.ts +1 -0
  317. package/dist/src/server/extensions/ExtensionManager.discovery.js +72 -9
  318. package/dist/src/server/extensions/ExtensionManager.integrity.js +1 -1
  319. package/dist/src/server/extensions/ExtensionManager.js +193 -40
  320. package/dist/src/server/extensions/ExtensionManager.roots.d.ts +1 -1
  321. package/dist/src/server/extensions/ExtensionManager.roots.js +19 -9
  322. package/dist/src/server/extensions/plugin-config.js +1 -1
  323. package/dist/src/server/extensions/plugin-env.d.ts +1 -1
  324. package/dist/src/server/extensions/plugin-env.js +10 -4
  325. package/dist/src/server/extensions/types.d.ts +17 -0
  326. package/dist/src/server/extensions/types.js +1 -1
  327. package/dist/src/server/http/HttpMiddleware.js +1 -1
  328. package/dist/src/server/instrumentation/EvidenceGraphBridge.d.ts +13 -0
  329. package/dist/src/server/instrumentation/EvidenceGraphBridge.js +150 -0
  330. package/dist/src/server/instrumentation/InstrumentationSession.d.ts +60 -0
  331. package/dist/src/server/instrumentation/InstrumentationSession.js +269 -0
  332. package/dist/src/server/instrumentation/index.d.ts +2 -0
  333. package/dist/src/server/instrumentation/index.js +2 -0
  334. package/dist/src/server/instrumentation/types.d.ts +62 -0
  335. package/dist/src/server/instrumentation/types.js +7 -0
  336. package/dist/src/server/macros/MacroConfigLoader.d.ts +6 -5
  337. package/dist/src/server/macros/MacroConfigLoader.js +61 -59
  338. package/dist/src/server/macros/MacroRunner.js +6 -2
  339. package/dist/src/server/macros/builtins/index.d.ts +2 -3
  340. package/dist/src/server/macros/builtins/index.js +51 -7
  341. package/dist/src/server/plugins/PluginContract.d.ts +1 -1
  342. package/dist/src/server/registry/contracts.d.ts +7 -1
  343. package/dist/src/server/registry/discovery.js +5 -4
  344. package/dist/src/server/registry/ensure-browser-core.js +0 -3
  345. package/dist/src/server/registry/index.js +4 -4
  346. package/dist/src/server/registry/tool-builder.d.ts +46 -0
  347. package/dist/src/server/registry/tool-builder.js +105 -0
  348. package/dist/src/server/sandbox/MCPBridge.d.ts +9 -0
  349. package/dist/src/server/sandbox/MCPBridge.js +22 -0
  350. package/dist/src/server/sandbox/QuickJSSandbox.d.ts +4 -1
  351. package/dist/src/server/sandbox/QuickJSSandbox.js +162 -2
  352. package/dist/src/server/sandbox/types.d.ts +13 -0
  353. package/dist/src/server/search/AffinityGraph.d.ts +7 -1
  354. package/dist/src/server/search/AffinityGraph.js +24 -3
  355. package/dist/src/server/search/EmbeddingWorker.js +5 -3
  356. package/dist/src/server/search/FeedbackTracker.d.ts +9 -0
  357. package/dist/src/server/search/FeedbackTracker.js +26 -0
  358. package/dist/src/server/search/QueryNormalizer.d.ts +6 -0
  359. package/dist/src/server/search/QueryNormalizer.js +94 -0
  360. package/dist/src/server/search/ToolSearchEngineImpl.d.ts +2 -3
  361. package/dist/src/server/search/ToolSearchEngineImpl.js +38 -88
  362. package/dist/src/server/workflows/WorkflowContract.d.ts +24 -0
  363. package/dist/src/server/workflows/WorkflowContract.js +12 -0
  364. package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
  365. package/dist/src/server/workflows/WorkflowEngine.js +136 -3
  366. package/dist/src/types/config.d.ts +0 -14
  367. package/dist/src/types/deobfuscator.d.ts +0 -1
  368. package/dist/src/types/index.d.ts +1 -1
  369. package/dist/src/utils/DetailedDataManager.js +2 -0
  370. package/dist/src/utils/RingBuffer.js +5 -5
  371. package/dist/src/utils/TokenBudgetManager.js +1 -1
  372. package/dist/src/utils/UnifiedCacheManager.d.ts +1 -1
  373. package/dist/src/utils/UnifiedCacheManager.js +3 -3
  374. package/dist/src/utils/artifactRetention.js +2 -2
  375. package/dist/src/utils/betterSqlite3.d.ts +11 -0
  376. package/dist/src/utils/betterSqlite3.js +88 -0
  377. package/dist/src/utils/browserExecutable.js +2 -2
  378. package/dist/src/utils/cliFastPath.js +17 -6
  379. package/dist/src/utils/config.js +4 -26
  380. package/dist/src/utils/environmentDoctor.js +138 -11
  381. package/dist/src/utils/outputPaths.js +16 -9
  382. package/dist/src/utils/parallel.js +1 -3
  383. package/package.json +76 -72
  384. package/scripts/postinstall.cjs +37 -37
  385. package/src/native/scripts/linux/enum-windows.sh +12 -12
  386. package/src/native/scripts/macos/enum-windows.applescript +22 -22
  387. package/src/native/scripts/windows/enum-windows-by-class.ps1 +51 -51
  388. package/src/native/scripts/windows/enum-windows.ps1 +44 -44
  389. package/src/native/scripts/windows/inject-dll.ps1 +21 -21
  390. package/workflows/.gitkeep +0 -0
  391. package/dist/src/modules/analyzer/AISummarizer.d.ts +0 -39
  392. package/dist/src/modules/analyzer/AISummarizer.js +0 -122
  393. package/dist/src/modules/hook/AIHookGenerator.d.ts +0 -52
  394. package/dist/src/modules/hook/AIHookGenerator.js +0 -360
  395. package/dist/src/modules/hook/AIHookGeneratorTemplates.d.ts +0 -9
  396. package/dist/src/modules/hook/AIHookGeneratorTemplates.js +0 -157
  397. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.d.ts +0 -2
  398. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.js +0 -25
  399. package/dist/src/server/macros/builtins/unpacker-flow.d.ts +0 -2
  400. package/dist/src/server/macros/builtins/unpacker-flow.js +0 -25
  401. package/dist/src/services/LLMService.d.ts +0 -37
  402. package/dist/src/services/LLMService.js +0 -233
  403. package/dist/src/services/prompts/analysis.d.ts +0 -9
  404. package/dist/src/services/prompts/analysis.js +0 -158
  405. package/dist/src/services/prompts/crypto.d.ts +0 -2
  406. package/dist/src/services/prompts/crypto.js +0 -108
  407. package/dist/src/services/prompts/deobfuscation.d.ts +0 -6
  408. package/dist/src/services/prompts/deobfuscation.js +0 -300
  409. package/dist/src/services/prompts/environment.d.ts +0 -16
  410. package/dist/src/services/prompts/environment.js +0 -372
  411. package/dist/src/services/prompts/intelligence.d.ts +0 -4
  412. package/dist/src/services/prompts/intelligence.js +0 -250
  413. package/dist/src/services/prompts/taint.d.ts +0 -2
  414. package/dist/src/services/prompts/taint.js +0 -54
@@ -1,7 +1,5 @@
1
1
  import * as parser from '@babel/parser';
2
2
  import traverse from '@babel/traverse';
3
- import { LLMService } from '../../services/LLMService.js';
4
- import { generateCodeAnalysisPrompt } from '../../services/prompts/analysis.js';
5
3
  import { logger } from '../../utils/logger.js';
6
4
  import { identifySecurityRisks } from '../analyzer/SecurityCodeAnalyzer.js';
7
5
  import { calculateQualityScore, detectCodePatterns, analyzeComplexityMetrics, } from '../analyzer/QualityAnalyzer.js';
@@ -11,9 +9,8 @@ const isTraversablePath = (value) => typeof value === 'object' &&
11
9
  'traverse' in value &&
12
10
  typeof value.traverse === 'function';
13
11
  export class CodeAnalyzer {
14
- llm;
15
- constructor(llm) {
16
- this.llm = llm;
12
+ constructor(legacyDependency) {
13
+ void legacyDependency;
17
14
  }
18
15
  async understand(options) {
19
16
  logger.info('Starting code understanding...');
@@ -64,9 +61,8 @@ export class CodeAnalyzer {
64
61
  sourceType: 'module',
65
62
  plugins: ['jsx', 'typescript'],
66
63
  });
67
- const self = this;
68
64
  traverse(ast, {
69
- FunctionDeclaration(path) {
65
+ FunctionDeclaration: (path) => {
70
66
  const node = path.node;
71
67
  functions.push({
72
68
  name: node.id?.name || 'anonymous',
@@ -76,10 +72,10 @@ export class CodeAnalyzer {
76
72
  line: node.loc?.start.line || 0,
77
73
  column: node.loc?.start.column,
78
74
  },
79
- complexity: self.calculateComplexity(path),
75
+ complexity: this.calculateComplexity(path),
80
76
  });
81
77
  },
82
- FunctionExpression(path) {
78
+ FunctionExpression: (path) => {
83
79
  const node = path.node;
84
80
  const parent = path.parent;
85
81
  let name = 'anonymous';
@@ -91,16 +87,20 @@ export class CodeAnalyzer {
91
87
  }
92
88
  functions.push({
93
89
  name,
94
- params: node.params.map((p) => (p.type === 'Identifier' ? p.name : 'unknown')),
90
+ params: node.params.map((p) => {
91
+ if (p.type !== 'Identifier')
92
+ return 'unknown';
93
+ return p.name;
94
+ }),
95
95
  location: {
96
96
  file: 'current',
97
97
  line: node.loc?.start.line || 0,
98
98
  column: node.loc?.start.column,
99
99
  },
100
- complexity: self.calculateComplexity(path),
100
+ complexity: this.calculateComplexity(path),
101
101
  });
102
102
  },
103
- ArrowFunctionExpression(path) {
103
+ ArrowFunctionExpression: (path) => {
104
104
  const node = path.node;
105
105
  const parent = path.parent;
106
106
  let name = 'arrow';
@@ -115,7 +115,7 @@ export class CodeAnalyzer {
115
115
  line: node.loc?.start.line || 0,
116
116
  column: node.loc?.start.column,
117
117
  },
118
- complexity: self.calculateComplexity(path),
118
+ complexity: this.calculateComplexity(path),
119
119
  });
120
120
  },
121
121
  ClassDeclaration(path) {
@@ -172,20 +172,8 @@ export class CodeAnalyzer {
172
172
  callGraph,
173
173
  };
174
174
  }
175
- async aiAnalyze(code, focus) {
176
- try {
177
- const messages = generateCodeAnalysisPrompt(code, focus);
178
- const response = await this.llm.chat(messages, { temperature: 0.3, maxTokens: 2000 });
179
- const jsonMatch = response.content.match(/\{[\s\S]*\}/);
180
- if (jsonMatch) {
181
- return JSON.parse(jsonMatch[0]);
182
- }
183
- return { rawAnalysis: response.content };
184
- }
185
- catch (error) {
186
- logger.warn('AI analysis failed, using fallback', error);
187
- return {};
188
- }
175
+ async aiAnalyze(_code, _focus) {
176
+ return {};
189
177
  }
190
178
  detectTechStack(code, aiAnalysis) {
191
179
  const techStack = {
@@ -363,6 +351,6 @@ export class CodeAnalyzer {
363
351
  return complexity;
364
352
  }
365
353
  async analyzeDataFlow(code) {
366
- return analyzeDataFlowWithTaint(code, this.llm);
354
+ return analyzeDataFlowWithTaint(code);
367
355
  }
368
356
  }
@@ -1,3 +1,2 @@
1
1
  import type { DataFlow } from '../../types/index.js';
2
- import type { LLMService } from '../../services/LLMService.js';
3
- export declare function analyzeDataFlowWithTaint(code: string, llm?: LLMService): Promise<DataFlow>;
2
+ export declare function analyzeDataFlowWithTaint(code: string): Promise<DataFlow>;
@@ -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})`,
@@ -1,3 +1,4 @@
1
+ import { ScriptLoader } from '../../native/ScriptLoader.js';
1
2
  export interface BrowserInfo {
2
3
  type: 'chrome' | 'edge' | 'firefox' | 'unknown';
3
4
  pid: number;
@@ -12,16 +13,16 @@ export interface BrowserSignature {
12
13
  debugPorts: number[];
13
14
  }
14
15
  export declare class BrowserDiscovery {
15
- private scriptLoader;
16
- private browserSignatures;
16
+ protected scriptLoader: ScriptLoader;
17
+ protected browserSignatures: Map<string, BrowserSignature>;
17
18
  constructor();
18
- private sanitizePsInput;
19
+ protected sanitizePsInput(value: string): string;
19
20
  private escapePowerShellSingleQuoted;
20
21
  discoverBrowsers(): Promise<BrowserInfo[]>;
21
- private findBySignature;
22
+ protected findBySignature(type: string, signature: BrowserSignature): Promise<BrowserInfo[]>;
22
23
  findByWindowClass(classNamePattern: string): Promise<BrowserInfo[]>;
23
24
  findByProcessName(name: string): Promise<BrowserInfo[]>;
24
- private parseWindowsResult;
25
+ protected parseWindowsResult(stdout: string, _classNamePattern: string): BrowserInfo[];
25
26
  private parseProcessResult;
26
27
  detectDebugPort(pid: number, ports: number[]): Promise<number | null>;
27
28
  private checkDebugPortFromCommandLine;
@@ -228,12 +228,12 @@ export class BrowserDiscovery {
228
228
  const data = JSON.parse(stdout.trim());
229
229
  const commandLine = data.CommandLine || '';
230
230
  const match = commandLine.match(/--remote-debugging-port=(\d+)/);
231
- if (match && match[1]) {
231
+ if (match?.[1]) {
232
232
  return parseInt(match[1], 10);
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,4 +1,4 @@
1
- import { Browser, Page, type LaunchOptions } from 'rebrowser-puppeteer-core';
1
+ import { type Browser, type Page, type LaunchOptions } from 'rebrowser-puppeteer-core';
2
2
  export interface BrowserModeConfig {
3
3
  autoDetectCaptcha?: boolean;
4
4
  autoSwitchHeadless?: boolean;
@@ -1,5 +1,5 @@
1
1
  import { existsSync } from 'fs';
2
- import puppeteer, { Browser, Page } 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
  }
@@ -225,7 +240,7 @@ export class UnifiedBrowserManager {
225
240
  }
226
241
  async attachToExistingChrome(preferredPorts = [9222, 9229, 9333]) {
227
242
  const browserInfo = await this.findChromeWithDebugPort(preferredPorts);
228
- if (!browserInfo || !browserInfo.debugPort) {
243
+ if (!browserInfo?.debugPort) {
229
244
  logger.info('No existing Chrome browser with debug port found');
230
245
  return null;
231
246
  }