@jshookmcp/jshook 0.2.3 → 0.2.6

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 (583) 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 +171 -0
  7. package/dist/packages/extension-sdk/src/workflow.js +272 -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/BrowserPool.d.ts +49 -0
  24. package/dist/src/modules/browser/BrowserPool.js +288 -0
  25. package/dist/src/modules/browser/TabRegistry.js +2 -2
  26. package/dist/src/modules/browser/UnifiedBrowserManager.d.ts +1 -0
  27. package/dist/src/modules/browser/UnifiedBrowserManager.js +18 -3
  28. package/dist/src/modules/captcha/AICaptchaDetector.d.ts +1 -10
  29. package/dist/src/modules/captcha/AICaptchaDetector.js +7 -201
  30. package/dist/src/modules/collector/CodeCollector.js +4 -5
  31. package/dist/src/modules/collector/DOMInspector.js +48 -58
  32. package/dist/src/modules/collector/PageController.d.ts +17 -4
  33. package/dist/src/modules/collector/PageController.js +2 -5
  34. package/dist/src/modules/collector/PageScriptCollectors.js +3 -3
  35. package/dist/src/modules/crypto/CryptoDetector.d.ts +1 -4
  36. package/dist/src/modules/crypto/CryptoDetector.js +2 -42
  37. package/dist/src/modules/crypto/CryptoRules.js +1 -1
  38. package/dist/src/modules/debugger/BlackboxManager.js +1 -1
  39. package/dist/src/modules/debugger/DebuggerManager.impl.core.scope.js +1 -1
  40. package/dist/src/modules/debugger/ScriptManager.impl.extract-function-tree.js +4 -2
  41. package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
  42. package/dist/src/modules/deobfuscator/AdvancedDeobfuscator.d.ts +5 -0
  43. package/dist/src/modules/deobfuscator/AdvancedDeobfuscator.js +43 -2
  44. package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
  45. package/dist/src/modules/deobfuscator/Deobfuscator.js +9 -39
  46. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.d.ts +0 -3
  47. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.js +2 -8
  48. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.d.ts +1 -2
  49. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +3 -55
  50. package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
  51. package/dist/src/modules/deobfuscator/VMDeobfuscator.d.ts +2 -10
  52. package/dist/src/modules/deobfuscator/VMDeobfuscator.js +3 -128
  53. package/dist/src/modules/deobfuscator/webcrack.js +15 -2
  54. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.d.ts +5 -8
  55. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.js +10 -102
  56. package/dist/src/modules/emulator/EnvironmentEmulator.d.ts +1 -5
  57. package/dist/src/modules/emulator/EnvironmentEmulator.js +7 -91
  58. package/dist/src/modules/emulator/EnvironmentEmulatorFetch.js +58 -61
  59. package/dist/src/modules/emulator/templates/chrome-env.d.ts +17 -7
  60. package/dist/src/modules/emulator/templates/chrome-env.js +14 -7
  61. package/dist/src/modules/external/ExternalToolRunner.js +25 -22
  62. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.compose.js +5 -5
  63. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.network.js +311 -311
  64. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.runtime.js +410 -410
  65. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.storage.js +122 -122
  66. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.d.ts +13 -0
  67. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.js +42 -0
  68. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.dynamic.js +194 -194
  69. package/dist/src/modules/monitor/FetchInterceptor.d.ts +46 -0
  70. package/dist/src/modules/monitor/FetchInterceptor.js +191 -0
  71. package/dist/src/modules/monitor/PerformanceMonitor.js +8 -7
  72. package/dist/src/modules/monitor/PlaywrightNetworkMonitor.js +62 -62
  73. package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
  74. package/dist/src/modules/process/LinuxProcessManager.js +2 -0
  75. package/dist/src/modules/process/MacProcessManager.js +25 -25
  76. package/dist/src/modules/process/MemoryManager.d.ts +1 -1
  77. package/dist/src/modules/process/MemoryManager.js +2 -2
  78. package/dist/src/modules/process/memory/AuditTrail.js +1 -1
  79. package/dist/src/modules/process/memory/availability.js +49 -49
  80. package/dist/src/modules/process/memory/injector.js +185 -185
  81. package/dist/src/modules/process/memory/reader.js +85 -53
  82. package/dist/src/modules/process/memory/regions.dump.js +51 -51
  83. package/dist/src/modules/process/memory/regions.enumerate.js +108 -108
  84. package/dist/src/modules/process/memory/regions.modules.js +80 -80
  85. package/dist/src/modules/process/memory/regions.protection.js +148 -115
  86. package/dist/src/modules/process/memory/scanner.d.ts +5 -1
  87. package/dist/src/modules/process/memory/scanner.darwin.js +98 -41
  88. package/dist/src/modules/process/memory/scanner.js +88 -4
  89. package/dist/src/modules/process/memory/scanner.windows.js +124 -124
  90. package/dist/src/modules/process/memory/writer.js +98 -58
  91. package/dist/src/modules/security/ExecutionSandbox.js +51 -52
  92. package/dist/src/modules/stealth/FingerprintManager.js +1 -1
  93. package/dist/src/modules/stealth/StealthScripts.d.ts +1 -0
  94. package/dist/src/modules/stealth/StealthScripts.js +18 -13
  95. package/dist/src/modules/stealth/StealthVerifier.js +1 -3
  96. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.d.ts +14 -0
  97. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.js +181 -2
  98. package/dist/src/modules/trace/TraceDB.js +75 -69
  99. package/dist/src/modules/trace/TraceRecorder.js +1 -5
  100. package/dist/src/native/AntiCheatDetector.js +67 -16
  101. package/dist/src/native/CodeInjector.js +3 -3
  102. package/dist/src/native/HardwareBreakpoint.js +24 -15
  103. package/dist/src/native/HeapAnalyzer.js +2 -2
  104. package/dist/src/native/MemoryController.js +1 -1
  105. package/dist/src/native/MemoryScanSession.js +2 -2
  106. package/dist/src/native/MemoryScanner.js +4 -8
  107. package/dist/src/native/NativeMemoryManager.impl.js +2 -2
  108. package/dist/src/native/PEAnalyzer.js +14 -15
  109. package/dist/src/native/PointerChainEngine.js +2 -4
  110. package/dist/src/native/ScriptLoader.js +4 -9
  111. package/dist/src/native/Speedhack.js +1 -1
  112. package/dist/src/native/StructureAnalyzer.js +52 -33
  113. package/dist/src/native/Win32API.d.ts +1 -0
  114. package/dist/src/native/Win32API.js +13 -0
  115. package/dist/src/native/Win32Debug.js +19 -19
  116. package/dist/src/native/platform/darwin/DarwinAPI.d.ts +2 -0
  117. package/dist/src/native/platform/darwin/DarwinAPI.js +8 -0
  118. package/dist/src/native/platform/darwin/DarwinMemoryProvider.js +6 -1
  119. package/dist/src/server/MCPServer.context.d.ts +3 -1
  120. package/dist/src/server/MCPServer.d.ts +2 -1
  121. package/dist/src/server/MCPServer.domain.d.ts +1 -1
  122. package/dist/src/server/MCPServer.domain.js +81 -16
  123. package/dist/src/server/MCPServer.js +41 -14
  124. package/dist/src/server/MCPServer.resources.d.ts +2 -0
  125. package/dist/src/server/MCPServer.resources.js +91 -0
  126. package/dist/src/server/MCPServer.search.handlers.call.js +2 -1
  127. package/dist/src/server/MCPServer.search.helpers.js +1 -1
  128. package/dist/src/server/MCPServer.transport.js +12 -0
  129. package/dist/src/server/ToolCallContextGuard.js +8 -0
  130. package/dist/src/server/ToolRouter.d.ts +25 -9
  131. package/dist/src/server/ToolRouter.intent.d.ts +26 -0
  132. package/dist/src/server/ToolRouter.intent.js +77 -0
  133. package/dist/src/server/ToolRouter.js +103 -284
  134. package/dist/src/server/ToolRouter.policy.d.ts +22 -0
  135. package/dist/src/server/ToolRouter.policy.js +163 -0
  136. package/dist/src/server/ToolRouter.probe.d.ts +17 -0
  137. package/dist/src/server/ToolRouter.probe.js +103 -0
  138. package/dist/src/server/ToolRouter.renderer.d.ts +9 -0
  139. package/dist/src/server/ToolRouter.renderer.js +52 -0
  140. package/dist/src/server/activation/ActivationController.js +15 -12
  141. package/dist/src/server/activation/CompoundConditionEngine.js +1 -1
  142. package/dist/src/server/activation/PredictiveBooster.js +1 -3
  143. package/dist/src/server/domains/analysis/definitions.js +155 -655
  144. package/dist/src/server/domains/analysis/handlers.impl.js +26 -20
  145. package/dist/src/server/domains/analysis/handlers.web-tools.js +2 -1
  146. package/dist/src/server/domains/analysis/manifest.js +6 -4
  147. package/dist/src/server/domains/antidebug/definitions.js +25 -111
  148. package/dist/src/server/domains/browser/definitions.tools.advanced.js +59 -88
  149. package/dist/src/server/domains/browser/definitions.tools.behavior.js +120 -227
  150. package/dist/src/server/domains/browser/definitions.tools.page-core.js +210 -439
  151. package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
  152. package/dist/src/server/domains/browser/definitions.tools.runtime.js +98 -211
  153. package/dist/src/server/domains/browser/definitions.tools.security.js +194 -339
  154. package/dist/src/server/domains/browser/handlers/camoufox-browser.js +3 -2
  155. package/dist/src/server/domains/browser/handlers/captcha-solver.js +3 -3
  156. package/dist/src/server/domains/browser/handlers/dom-query.js +2 -1
  157. package/dist/src/server/domains/browser/handlers/framework-state.js +27 -9
  158. package/dist/src/server/domains/browser/handlers/indexeddb-dump.js +21 -20
  159. package/dist/src/server/domains/browser/handlers/script-management.js +1 -1
  160. package/dist/src/server/domains/browser/handlers/stealth-injection.d.ts +1 -0
  161. package/dist/src/server/domains/browser/handlers/stealth-injection.js +3 -0
  162. package/dist/src/server/domains/browser/handlers.impl.d.ts +1 -2
  163. package/dist/src/server/domains/browser/handlers.impl.js +2 -3
  164. package/dist/src/server/domains/browser/manifest.js +37 -13
  165. package/dist/src/server/domains/coordination/definitions.js +50 -216
  166. package/dist/src/server/domains/coordination/index.d.ts +2 -1
  167. package/dist/src/server/domains/coordination/index.js +1 -0
  168. package/dist/src/server/domains/debugger/definitions.tools.advanced.js +72 -189
  169. package/dist/src/server/domains/debugger/definitions.tools.core.js +114 -288
  170. package/dist/src/server/domains/debugger/manifest.js +9 -2
  171. package/dist/src/server/domains/encoding/definitions.js +43 -153
  172. package/dist/src/server/domains/encoding/handlers.base.js +2 -2
  173. package/dist/src/server/domains/evidence/definitions.d.ts +2 -0
  174. package/dist/src/server/domains/evidence/definitions.js +42 -0
  175. package/dist/src/server/domains/evidence/handlers.d.ts +582 -0
  176. package/dist/src/server/domains/evidence/handlers.js +60 -0
  177. package/dist/src/server/domains/evidence/index.d.ts +2 -0
  178. package/dist/src/server/domains/evidence/index.js +2 -0
  179. package/dist/src/server/domains/evidence/manifest.d.ts +63 -0
  180. package/dist/src/server/domains/evidence/manifest.js +78 -0
  181. package/dist/src/server/domains/graphql/definitions.js +53 -141
  182. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.replay.js +92 -114
  183. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.shared.js +77 -77
  184. package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
  185. package/dist/src/server/domains/hooks/ai-handlers.js +1 -67
  186. package/dist/src/server/domains/hooks/definitions.js +69 -335
  187. package/dist/src/server/domains/hooks/manifest.d.ts +1 -1
  188. package/dist/src/server/domains/hooks/manifest.js +1 -2
  189. package/dist/src/server/domains/instrumentation/definitions.d.ts +2 -0
  190. package/dist/src/server/domains/instrumentation/definitions.js +99 -0
  191. package/dist/src/server/domains/instrumentation/handlers.d.ts +78 -0
  192. package/dist/src/server/domains/instrumentation/handlers.js +206 -0
  193. package/dist/src/server/domains/instrumentation/index.d.ts +2 -0
  194. package/dist/src/server/domains/instrumentation/index.js +2 -0
  195. package/dist/src/server/domains/instrumentation/manifest.d.ts +63 -0
  196. package/dist/src/server/domains/instrumentation/manifest.js +114 -0
  197. package/dist/src/server/domains/macro/definitions.js +16 -43
  198. package/dist/src/server/domains/maintenance/definitions.js +60 -219
  199. package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
  200. package/dist/src/server/domains/memory/definitions.js +387 -559
  201. package/dist/src/server/domains/memory/handlers/hooks.d.ts +55 -0
  202. package/dist/src/server/domains/memory/handlers/hooks.js +115 -0
  203. package/dist/src/server/domains/memory/handlers/integrity.d.ts +77 -0
  204. package/dist/src/server/domains/memory/handlers/integrity.js +180 -0
  205. package/dist/src/server/domains/memory/handlers/pointer-chain.d.ts +29 -0
  206. package/dist/src/server/domains/memory/handlers/pointer-chain.js +82 -0
  207. package/dist/src/server/domains/memory/handlers/readwrite.d.ts +41 -0
  208. package/dist/src/server/domains/memory/handlers/readwrite.js +78 -0
  209. package/dist/src/server/domains/memory/handlers/scan.d.ts +35 -0
  210. package/dist/src/server/domains/memory/handlers/scan.js +97 -0
  211. package/dist/src/server/domains/memory/handlers/session.d.ts +23 -0
  212. package/dist/src/server/domains/memory/handlers/session.js +49 -0
  213. package/dist/src/server/domains/memory/handlers/structure.d.ts +29 -0
  214. package/dist/src/server/domains/memory/handlers/structure.js +74 -0
  215. package/dist/src/server/domains/memory/handlers.impl.d.ts +49 -54
  216. package/dist/src/server/domains/memory/handlers.impl.js +63 -494
  217. package/dist/src/server/domains/memory/manifest.js +236 -64
  218. package/dist/src/server/domains/native-bridge/definitions.js +54 -192
  219. package/dist/src/server/domains/native-bridge/index.d.ts +1 -0
  220. package/dist/src/server/domains/native-bridge/index.js +2 -1
  221. package/dist/src/server/domains/network/auth-extractor.js +1 -1
  222. package/dist/src/server/domains/network/definitions.js +175 -578
  223. package/dist/src/server/domains/network/handlers.base.core.d.ts +64 -0
  224. package/dist/src/server/domains/network/handlers.base.core.js +623 -0
  225. package/dist/src/server/domains/network/handlers.base.d.ts +2 -124
  226. package/dist/src/server/domains/network/handlers.base.js +3 -878
  227. package/dist/src/server/domains/network/handlers.base.performance.d.ts +63 -0
  228. package/dist/src/server/domains/network/handlers.base.performance.js +193 -0
  229. package/dist/src/server/domains/network/handlers.base.types.d.ts +42 -0
  230. package/dist/src/server/domains/network/handlers.base.types.js +89 -0
  231. package/dist/src/server/domains/network/handlers.impl.core.runtime.d.ts +1 -1
  232. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.d.ts +21 -0
  233. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.js +186 -0
  234. package/dist/src/server/domains/network/handlers.impl.core.runtime.js +1 -1
  235. package/dist/src/server/domains/network/manifest.js +15 -0
  236. package/dist/src/server/domains/network/replay.js +1 -4
  237. package/dist/src/server/domains/platform/definitions.js +121 -112
  238. package/dist/src/server/domains/platform/handlers/bridge-handlers.d.ts +4 -0
  239. package/dist/src/server/domains/platform/handlers/bridge-handlers.js +193 -4
  240. package/dist/src/server/domains/platform/handlers/electron-asar-helpers.js +26 -6
  241. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.d.ts +3 -0
  242. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.js +170 -0
  243. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.d.ts +3 -0
  244. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.js +193 -0
  245. package/dist/src/server/domains/platform/handlers/electron-handlers.d.ts +6 -0
  246. package/dist/src/server/domains/platform/handlers/electron-handlers.js +95 -2
  247. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.d.ts +2 -0
  248. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.js +370 -0
  249. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.d.ts +2 -0
  250. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.js +78 -0
  251. package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +3 -3
  252. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.d.ts +2 -0
  253. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.js +207 -0
  254. package/dist/src/server/domains/platform/handlers.d.ts +48 -0
  255. package/dist/src/server/domains/platform/handlers.js +29 -0
  256. package/dist/src/server/domains/platform/manifest.js +38 -0
  257. package/dist/src/server/domains/process/definitions.js +163 -647
  258. package/dist/src/server/domains/process/handlers.base.d.ts +3 -95
  259. package/dist/src/server/domains/process/handlers.base.js +7 -462
  260. package/dist/src/server/domains/process/handlers.base.process.d.ts +61 -0
  261. package/dist/src/server/domains/process/handlers.base.process.js +417 -0
  262. package/dist/src/server/domains/process/handlers.base.types.d.ts +57 -0
  263. package/dist/src/server/domains/process/handlers.base.types.js +50 -0
  264. package/dist/src/server/domains/process/handlers.impl.core.runtime.inject.js +18 -16
  265. package/dist/src/server/domains/process/manifest.js +6 -1
  266. package/dist/src/server/domains/sandbox/definitions.js +11 -33
  267. package/dist/src/server/domains/sandbox/handlers.js +8 -3
  268. package/dist/src/server/domains/shared/ResponseBuilder.d.ts +209 -0
  269. package/dist/src/server/domains/shared/ResponseBuilder.js +48 -0
  270. package/dist/src/server/domains/shared/modules.d.ts +0 -2
  271. package/dist/src/server/domains/shared/modules.js +0 -1
  272. package/dist/src/server/domains/shared-state-board/definitions.d.ts +2 -0
  273. package/dist/src/server/domains/shared-state-board/definitions.js +78 -0
  274. package/dist/src/server/domains/shared-state-board/handlers.impl.d.ts +58 -0
  275. package/dist/src/server/domains/shared-state-board/handlers.impl.js +419 -0
  276. package/dist/src/server/domains/shared-state-board/index.d.ts +2 -0
  277. package/dist/src/server/domains/shared-state-board/index.js +2 -0
  278. package/dist/src/server/domains/shared-state-board/manifest.d.ts +57 -0
  279. package/dist/src/server/domains/shared-state-board/manifest.js +74 -0
  280. package/dist/src/server/domains/sourcemap/definitions.js +27 -111
  281. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-common.js +7 -2
  282. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-main.js +1 -1
  283. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-parse-base.js +1 -1
  284. package/dist/src/server/domains/sourcemap/manifest.d.ts +1 -1
  285. package/dist/src/server/domains/sourcemap/manifest.js +1 -1
  286. package/dist/src/server/domains/streaming/definitions.js +36 -148
  287. package/dist/src/server/domains/streaming/handlers.impl.streaming-sse.js +163 -164
  288. package/dist/src/server/domains/streaming/handlers.impl.streaming-ws.js +1 -1
  289. package/dist/src/server/domains/trace/TraceSummarizer.js +8 -5
  290. package/dist/src/server/domains/trace/definitions.tools.js +51 -206
  291. package/dist/src/server/domains/trace/handlers.js +10 -12
  292. package/dist/src/server/domains/trace/index.d.ts +2 -1
  293. package/dist/src/server/domains/trace/index.js +2 -1
  294. package/dist/src/server/domains/trace/manifest.js +15 -3
  295. package/dist/src/server/domains/transform/definitions.js +50 -210
  296. package/dist/src/server/domains/transform/handlers.impl.transform-base.js +108 -108
  297. package/dist/src/server/domains/transform/handlers.impl.transform-crypto.js +18 -19
  298. package/dist/src/server/domains/transform/manifest.d.ts +1 -1
  299. package/dist/src/server/domains/transform/manifest.js +1 -1
  300. package/dist/src/server/domains/wasm/definitions.js +55 -232
  301. package/dist/src/server/domains/wasm/handlers.js +1 -1
  302. package/dist/src/server/domains/workflow/definitions.js +144 -414
  303. package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +1 -1
  304. package/dist/src/server/domains/workflow/handlers.impl.workflow-api.js +51 -51
  305. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.d.ts +2 -0
  306. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.js +126 -87
  307. package/dist/src/server/domains/workflow/handlers.impl.workflow-batch.js +5 -5
  308. package/dist/src/server/evidence/ReverseEvidenceGraph.d.ts +20 -0
  309. package/dist/src/server/evidence/ReverseEvidenceGraph.js +208 -0
  310. package/dist/src/server/evidence/index.d.ts +2 -0
  311. package/dist/src/server/evidence/index.js +1 -0
  312. package/dist/src/server/evidence/types.d.ts +22 -0
  313. package/dist/src/server/evidence/types.js +1 -0
  314. package/dist/src/server/extensions/ExtensionManager.d.ts +1 -0
  315. package/dist/src/server/extensions/ExtensionManager.discovery.js +72 -9
  316. package/dist/src/server/extensions/ExtensionManager.integrity.js +1 -1
  317. package/dist/src/server/extensions/ExtensionManager.js +193 -40
  318. package/dist/src/server/extensions/ExtensionManager.roots.d.ts +1 -1
  319. package/dist/src/server/extensions/ExtensionManager.roots.js +4 -4
  320. package/dist/src/server/extensions/plugin-config.js +1 -1
  321. package/dist/src/server/extensions/plugin-env.d.ts +1 -1
  322. package/dist/src/server/extensions/plugin-env.js +10 -4
  323. package/dist/src/server/extensions/types.d.ts +17 -0
  324. package/dist/src/server/extensions/types.js +1 -1
  325. package/dist/src/server/http/SseStream.d.ts +21 -0
  326. package/dist/src/server/http/SseStream.js +129 -0
  327. package/dist/src/server/instrumentation/EvidenceGraphBridge.d.ts +13 -0
  328. package/dist/src/server/instrumentation/EvidenceGraphBridge.js +150 -0
  329. package/dist/src/server/instrumentation/InstrumentationSession.d.ts +60 -0
  330. package/dist/src/server/instrumentation/InstrumentationSession.js +269 -0
  331. package/dist/src/server/instrumentation/index.d.ts +2 -0
  332. package/dist/src/server/instrumentation/index.js +2 -0
  333. package/dist/src/server/instrumentation/types.d.ts +62 -0
  334. package/dist/src/server/instrumentation/types.js +7 -0
  335. package/dist/src/server/macros/MacroConfigLoader.d.ts +6 -5
  336. package/dist/src/server/macros/MacroConfigLoader.js +61 -59
  337. package/dist/src/server/macros/MacroRunner.js +6 -2
  338. package/dist/src/server/macros/builtins/index.d.ts +2 -3
  339. package/dist/src/server/macros/builtins/index.js +51 -7
  340. package/dist/src/server/plugins/PluginContract.d.ts +1 -1
  341. package/dist/src/server/registry/contracts.d.ts +1 -1
  342. package/dist/src/server/registry/discovery.js +5 -4
  343. package/dist/src/server/registry/ensure-browser-core.js +0 -3
  344. package/dist/src/server/registry/index.js +4 -4
  345. package/dist/src/server/registry/tool-builder.d.ts +46 -0
  346. package/dist/src/server/registry/tool-builder.js +105 -0
  347. package/dist/src/server/sandbox/QuickJSSandbox.js +16 -5
  348. package/dist/src/server/sandbox/SandboxHelpers.js +250 -250
  349. package/dist/src/server/search/EmbeddingWorker.js +5 -3
  350. package/dist/src/server/search/FeedbackTracker.d.ts +9 -0
  351. package/dist/src/server/search/FeedbackTracker.js +26 -0
  352. package/dist/src/server/search/QueryNormalizer.d.ts +6 -0
  353. package/dist/src/server/search/QueryNormalizer.js +94 -0
  354. package/dist/src/server/search/ToolSearchEngineImpl.d.ts +2 -3
  355. package/dist/src/server/search/ToolSearchEngineImpl.js +38 -88
  356. package/dist/src/server/teams/TeamManager.d.ts +43 -0
  357. package/dist/src/server/teams/TeamManager.js +238 -0
  358. package/dist/src/server/teams/index.d.ts +1 -0
  359. package/dist/src/server/teams/index.js +1 -0
  360. package/dist/src/server/workflows/WorkflowContract.d.ts +44 -4
  361. package/dist/src/server/workflows/WorkflowContract.js +52 -0
  362. package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
  363. package/dist/src/server/workflows/WorkflowEngine.js +314 -4
  364. package/dist/src/types/config.d.ts +0 -14
  365. package/dist/src/types/deobfuscator.d.ts +1 -1
  366. package/dist/src/types/index.d.ts +1 -1
  367. package/dist/src/utils/DetailedDataManager.js +2 -0
  368. package/dist/src/utils/RingBuffer.js +5 -5
  369. package/dist/src/utils/TokenBudgetManager.js +1 -1
  370. package/dist/src/utils/UnifiedCacheManager.js +1 -1
  371. package/dist/src/utils/artifactRetention.js +2 -2
  372. package/dist/src/utils/betterSqlite3.d.ts +11 -0
  373. package/dist/src/utils/betterSqlite3.js +88 -0
  374. package/dist/src/utils/browserExecutable.js +2 -2
  375. package/dist/src/utils/cache/CachedDecorator.d.ts +8 -0
  376. package/dist/src/utils/cache/CachedDecorator.js +55 -0
  377. package/dist/src/utils/cache/PersistentCache.d.ts +33 -0
  378. package/dist/src/utils/cache/PersistentCache.js +246 -0
  379. package/dist/src/utils/cache/index.d.ts +2 -0
  380. package/dist/src/utils/cache/index.js +2 -0
  381. package/dist/src/utils/cliFastPath.js +5 -8
  382. package/dist/src/utils/config.js +4 -26
  383. package/dist/src/utils/environmentDoctor.js +138 -11
  384. package/dist/src/utils/outputPaths.js +16 -9
  385. package/dist/src/utils/parallel.js +1 -3
  386. package/package.json +82 -81
  387. package/scripts/postinstall.cjs +54 -27
  388. package/workflows/.gitkeep +0 -0
  389. package/workflows/anti-bot-diagnoser/.jshook-install.json +14 -0
  390. package/workflows/anti-bot-diagnoser/LICENSE +21 -0
  391. package/workflows/anti-bot-diagnoser/README.md +105 -0
  392. package/workflows/anti-bot-diagnoser/docs/agent-recipes.md +44 -0
  393. package/workflows/anti-bot-diagnoser/meta.yaml +6 -0
  394. package/workflows/anti-bot-diagnoser/package.json +22 -0
  395. package/workflows/anti-bot-diagnoser/tsconfig.json +15 -0
  396. package/workflows/anti-bot-diagnoser/workflow.ts +224 -0
  397. package/workflows/api-openapi-probe/.jshook-install.json +14 -0
  398. package/workflows/api-openapi-probe/meta.yaml +6 -0
  399. package/workflows/api-openapi-probe/package.json +22 -0
  400. package/workflows/api-openapi-probe/pnpm-lock.yaml +819 -0
  401. package/workflows/api-openapi-probe/tsconfig.json +15 -0
  402. package/workflows/api-openapi-probe/workflow.ts +40 -0
  403. package/workflows/api-probe-batch/.jshook-install.json +14 -0
  404. package/workflows/api-probe-batch/LICENSE +21 -0
  405. package/workflows/api-probe-batch/README.md +45 -0
  406. package/workflows/api-probe-batch/meta.yaml +4 -0
  407. package/workflows/api-probe-batch/package.json +23 -0
  408. package/workflows/api-probe-batch/tsconfig.json +16 -0
  409. package/workflows/api-probe-batch/workflow.ts +111 -0
  410. package/workflows/auth-bootstrap/.jshook-install.json +14 -0
  411. package/workflows/auth-bootstrap/LICENSE +21 -0
  412. package/workflows/auth-bootstrap/README.md +74 -0
  413. package/workflows/auth-bootstrap/meta.yaml +4 -0
  414. package/workflows/auth-bootstrap/package.json +23 -0
  415. package/workflows/auth-bootstrap/tsconfig.json +16 -0
  416. package/workflows/auth-bootstrap/workflow.ts +141 -0
  417. package/workflows/auth-extract/.jshook-install.json +14 -0
  418. package/workflows/auth-extract/meta.yaml +6 -0
  419. package/workflows/auth-extract/package.json +22 -0
  420. package/workflows/auth-extract/pnpm-lock.yaml +819 -0
  421. package/workflows/auth-extract/tsconfig.json +15 -0
  422. package/workflows/auth-extract/workflow.ts +36 -0
  423. package/workflows/auth-surface-mapper/.jshook-install.json +14 -0
  424. package/workflows/auth-surface-mapper/meta.yaml +6 -0
  425. package/workflows/auth-surface-mapper/package.json +22 -0
  426. package/workflows/auth-surface-mapper/pnpm-lock.yaml +819 -0
  427. package/workflows/auth-surface-mapper/tsconfig.json +15 -0
  428. package/workflows/auth-surface-mapper/workflow.ts +104 -0
  429. package/workflows/batch-register/.jshook-install.json +14 -0
  430. package/workflows/batch-register/LICENSE +21 -0
  431. package/workflows/batch-register/README.md +39 -0
  432. package/workflows/batch-register/meta.yaml +4 -0
  433. package/workflows/batch-register/package.json +23 -0
  434. package/workflows/batch-register/tsconfig.json +16 -0
  435. package/workflows/batch-register/workflow.ts +67 -0
  436. package/workflows/bundle-recovery/.jshook-install.json +14 -0
  437. package/workflows/bundle-recovery/LICENSE +21 -0
  438. package/workflows/bundle-recovery/README.md +105 -0
  439. package/workflows/bundle-recovery/docs/agent-recipes.md +44 -0
  440. package/workflows/bundle-recovery/meta.yaml +6 -0
  441. package/workflows/bundle-recovery/package.json +22 -0
  442. package/workflows/bundle-recovery/tsconfig.json +15 -0
  443. package/workflows/bundle-recovery/workflow.ts +179 -0
  444. package/workflows/challenge-detector/.jshook-install.json +14 -0
  445. package/workflows/challenge-detector/meta.yaml +14 -0
  446. package/workflows/challenge-detector/package.json +22 -0
  447. package/workflows/challenge-detector/pnpm-lock.yaml +819 -0
  448. package/workflows/challenge-detector/tsconfig.json +15 -0
  449. package/workflows/challenge-detector/workflow.ts +298 -0
  450. package/workflows/deobfuscation-pipeline/.jshook-install.json +14 -0
  451. package/workflows/deobfuscation-pipeline/meta.yaml +6 -0
  452. package/workflows/deobfuscation-pipeline/package.json +22 -0
  453. package/workflows/deobfuscation-pipeline/pnpm-lock.yaml +819 -0
  454. package/workflows/deobfuscation-pipeline/tsconfig.json +15 -0
  455. package/workflows/deobfuscation-pipeline/workflow.ts +119 -0
  456. package/workflows/electron-bridge-mapper/.jshook-install.json +14 -0
  457. package/workflows/electron-bridge-mapper/meta.yaml +6 -0
  458. package/workflows/electron-bridge-mapper/package.json +22 -0
  459. package/workflows/electron-bridge-mapper/pnpm-lock.yaml +819 -0
  460. package/workflows/electron-bridge-mapper/tsconfig.json +15 -0
  461. package/workflows/electron-bridge-mapper/workflow.ts +125 -0
  462. package/workflows/evidence-pack/.jshook-install.json +14 -0
  463. package/workflows/evidence-pack/LICENSE +21 -0
  464. package/workflows/evidence-pack/README.md +105 -0
  465. package/workflows/evidence-pack/docs/agent-recipes.md +44 -0
  466. package/workflows/evidence-pack/meta.yaml +6 -0
  467. package/workflows/evidence-pack/package.json +22 -0
  468. package/workflows/evidence-pack/tsconfig.json +15 -0
  469. package/workflows/evidence-pack/workflow.ts +154 -0
  470. package/workflows/js-bundle-search/.jshook-install.json +14 -0
  471. package/workflows/js-bundle-search/LICENSE +21 -0
  472. package/workflows/js-bundle-search/README.md +46 -0
  473. package/workflows/js-bundle-search/meta.yaml +4 -0
  474. package/workflows/js-bundle-search/package.json +23 -0
  475. package/workflows/js-bundle-search/tsconfig.json +16 -0
  476. package/workflows/js-bundle-search/workflow.ts +118 -0
  477. package/workflows/protocol-registry/.jshook-install.json +14 -0
  478. package/workflows/protocol-registry/meta.yaml +6 -0
  479. package/workflows/protocol-registry/package.json +22 -0
  480. package/workflows/protocol-registry/pnpm-lock.yaml +819 -0
  481. package/workflows/protocol-registry/tsconfig.json +15 -0
  482. package/workflows/protocol-registry/workflow.ts +107 -0
  483. package/workflows/qwen-mail-open-latest/meta.yaml +7 -0
  484. package/workflows/qwen-mail-open-latest/package.json +22 -0
  485. package/workflows/qwen-mail-open-latest/pnpm-lock.yaml +819 -0
  486. package/workflows/qwen-mail-open-latest/tsconfig.json +15 -0
  487. package/workflows/qwen-mail-open-latest/workflow.ts +77 -0
  488. package/workflows/register-account-flow/.jshook-install.json +14 -0
  489. package/workflows/register-account-flow/LICENSE +21 -0
  490. package/workflows/register-account-flow/README.md +64 -0
  491. package/workflows/register-account-flow/meta.yaml +4 -0
  492. package/workflows/register-account-flow/package.json +23 -0
  493. package/workflows/register-account-flow/tsconfig.json +16 -0
  494. package/workflows/register-account-flow/workflow.ts +127 -0
  495. package/workflows/replay-lab/.jshook-install.json +14 -0
  496. package/workflows/replay-lab/meta.yaml +6 -0
  497. package/workflows/replay-lab/package.json +22 -0
  498. package/workflows/replay-lab/pnpm-lock.yaml +819 -0
  499. package/workflows/replay-lab/tsconfig.json +15 -0
  500. package/workflows/replay-lab/workflow.ts +106 -0
  501. package/workflows/script-evidence-scan/.jshook-install.json +14 -0
  502. package/workflows/script-evidence-scan/LICENSE +21 -0
  503. package/workflows/script-evidence-scan/README.md +61 -0
  504. package/workflows/script-evidence-scan/meta.yaml +4 -0
  505. package/workflows/script-evidence-scan/package.json +23 -0
  506. package/workflows/script-evidence-scan/tsconfig.json +16 -0
  507. package/workflows/script-evidence-scan/workflow.ts +89 -0
  508. package/workflows/signature-hunter/.jshook-install.json +14 -0
  509. package/workflows/signature-hunter/LICENSE +21 -0
  510. package/workflows/signature-hunter/README.md +105 -0
  511. package/workflows/signature-hunter/docs/agent-recipes.md +44 -0
  512. package/workflows/signature-hunter/meta.yaml +6 -0
  513. package/workflows/signature-hunter/package.json +22 -0
  514. package/workflows/signature-hunter/tsconfig.json +15 -0
  515. package/workflows/signature-hunter/workflow.ts +170 -0
  516. package/workflows/signing-lineage/.jshook-install.json +14 -0
  517. package/workflows/signing-lineage/meta.yaml +6 -0
  518. package/workflows/signing-lineage/package.json +22 -0
  519. package/workflows/signing-lineage/pnpm-lock.yaml +819 -0
  520. package/workflows/signing-lineage/tsconfig.json +15 -0
  521. package/workflows/signing-lineage/workflow.ts +120 -0
  522. package/workflows/temp-mail-extract-link/.jshook-install.json +14 -0
  523. package/workflows/temp-mail-extract-link/LICENSE +21 -0
  524. package/workflows/temp-mail-extract-link/README.md +71 -0
  525. package/workflows/temp-mail-extract-link/meta.yaml +4 -0
  526. package/workflows/temp-mail-extract-link/package.json +23 -0
  527. package/workflows/temp-mail-extract-link/tsconfig.json +16 -0
  528. package/workflows/temp-mail-extract-link/workflow.ts +221 -0
  529. package/workflows/temp-mail-open-latest/.jshook-install.json +14 -0
  530. package/workflows/temp-mail-open-latest/LICENSE +21 -0
  531. package/workflows/temp-mail-open-latest/README.md +61 -0
  532. package/workflows/temp-mail-open-latest/meta.yaml +4 -0
  533. package/workflows/temp-mail-open-latest/package.json +23 -0
  534. package/workflows/temp-mail-open-latest/tsconfig.json +16 -0
  535. package/workflows/temp-mail-open-latest/workflow.ts +136 -0
  536. package/workflows/template/.jshook-install.json +14 -0
  537. package/workflows/template/LICENSE +21 -0
  538. package/workflows/template/README.md +45 -0
  539. package/workflows/template/docs/SKILL.md +111 -0
  540. package/workflows/template/meta.yaml +6 -0
  541. package/workflows/template/package.json +22 -0
  542. package/workflows/template/pnpm-lock.yaml +819 -0
  543. package/workflows/template/tsconfig.json +15 -0
  544. package/workflows/template/workflow.ts +73 -0
  545. package/workflows/web-api-capture-session/.jshook-install.json +14 -0
  546. package/workflows/web-api-capture-session/LICENSE +21 -0
  547. package/workflows/web-api-capture-session/README.md +64 -0
  548. package/workflows/web-api-capture-session/meta.yaml +4 -0
  549. package/workflows/web-api-capture-session/package.json +23 -0
  550. package/workflows/web-api-capture-session/tsconfig.json +16 -0
  551. package/workflows/web-api-capture-session/workflow.ts +124 -0
  552. package/workflows/ws-protocol-lifter/.jshook-install.json +14 -0
  553. package/workflows/ws-protocol-lifter/LICENSE +21 -0
  554. package/workflows/ws-protocol-lifter/README.md +105 -0
  555. package/workflows/ws-protocol-lifter/docs/agent-recipes.md +44 -0
  556. package/workflows/ws-protocol-lifter/meta.yaml +6 -0
  557. package/workflows/ws-protocol-lifter/package.json +22 -0
  558. package/workflows/ws-protocol-lifter/tsconfig.json +15 -0
  559. package/workflows/ws-protocol-lifter/workflow.ts +163 -0
  560. package/dist/src/modules/analyzer/AISummarizer.d.ts +0 -39
  561. package/dist/src/modules/analyzer/AISummarizer.js +0 -122
  562. package/dist/src/modules/hook/AIHookGenerator.d.ts +0 -52
  563. package/dist/src/modules/hook/AIHookGenerator.js +0 -360
  564. package/dist/src/modules/hook/AIHookGeneratorTemplates.d.ts +0 -9
  565. package/dist/src/modules/hook/AIHookGeneratorTemplates.js +0 -157
  566. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.d.ts +0 -2
  567. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.js +0 -25
  568. package/dist/src/server/macros/builtins/unpacker-flow.d.ts +0 -2
  569. package/dist/src/server/macros/builtins/unpacker-flow.js +0 -25
  570. package/dist/src/services/LLMService.d.ts +0 -37
  571. package/dist/src/services/LLMService.js +0 -233
  572. package/dist/src/services/prompts/analysis.d.ts +0 -9
  573. package/dist/src/services/prompts/analysis.js +0 -158
  574. package/dist/src/services/prompts/crypto.d.ts +0 -2
  575. package/dist/src/services/prompts/crypto.js +0 -108
  576. package/dist/src/services/prompts/deobfuscation.d.ts +0 -6
  577. package/dist/src/services/prompts/deobfuscation.js +0 -300
  578. package/dist/src/services/prompts/environment.d.ts +0 -16
  579. package/dist/src/services/prompts/environment.js +0 -372
  580. package/dist/src/services/prompts/intelligence.d.ts +0 -4
  581. package/dist/src/services/prompts/intelligence.js +0 -250
  582. package/dist/src/services/prompts/taint.d.ts +0 -2
  583. package/dist/src/services/prompts/taint.js +0 -54
@@ -67,28 +67,24 @@ export class DOMInspector {
67
67
  const page = await this.collector.getActivePage();
68
68
  const readyStateStatus = await this.waitForReadyState(page);
69
69
  const runQuery = async () => page.evaluate((sel, maxLimit) => {
70
- const collectRoots = () => {
71
- const roots = [document];
72
- const queue = [document];
73
- let shadowRootCount = 0;
74
- while (queue.length > 0) {
75
- const root = queue.shift();
76
- if (!root)
77
- continue;
78
- const elements = Array.from(root.querySelectorAll('*'));
79
- for (const element of elements) {
80
- const shadowRoot = element
81
- .shadowRoot;
82
- if (shadowRoot) {
83
- roots.push(shadowRoot);
84
- queue.push(shadowRoot);
85
- shadowRootCount += 1;
86
- }
70
+ const roots = [document];
71
+ const queue = [document];
72
+ let shadowRootCount = 0;
73
+ while (queue.length > 0) {
74
+ const root = queue.shift();
75
+ if (!root)
76
+ continue;
77
+ const elements = Array.from(root.querySelectorAll('*'));
78
+ for (const element of elements) {
79
+ const shadowRoot = element
80
+ .shadowRoot;
81
+ if (shadowRoot) {
82
+ roots.push(shadowRoot);
83
+ queue.push(shadowRoot);
84
+ shadowRootCount += 1;
87
85
  }
88
86
  }
89
- return { roots, shadowRootCount };
90
- };
91
- const { roots, shadowRootCount } = collectRoots();
87
+ }
92
88
  const seen = new Set();
93
89
  const results = [];
94
90
  let totalMatches = 0;
@@ -232,28 +228,24 @@ export class DOMInspector {
232
228
  const page = await this.collector.getActivePage();
233
229
  const readyStateStatus = await this.waitForReadyState(page);
234
230
  const runQuery = async () => page.evaluate((filter) => {
235
- const collectRoots = () => {
236
- const roots = [document];
237
- const queue = [document];
238
- let shadowRootCount = 0;
239
- while (queue.length > 0) {
240
- const root = queue.shift();
241
- if (!root)
242
- continue;
243
- const elements = Array.from(root.querySelectorAll('*'));
244
- for (const element of elements) {
245
- const shadowRoot = element
246
- .shadowRoot;
247
- if (shadowRoot) {
248
- roots.push(shadowRoot);
249
- queue.push(shadowRoot);
250
- shadowRootCount += 1;
251
- }
231
+ const roots = [document];
232
+ const queue = [document];
233
+ let shadowRootCount = 0;
234
+ while (queue.length > 0) {
235
+ const root = queue.shift();
236
+ if (!root)
237
+ continue;
238
+ const elements = Array.from(root.querySelectorAll('*'));
239
+ for (const element of elements) {
240
+ const shadowRoot = element
241
+ .shadowRoot;
242
+ if (shadowRoot) {
243
+ roots.push(shadowRoot);
244
+ queue.push(shadowRoot);
245
+ shadowRootCount += 1;
252
246
  }
253
247
  }
254
- return { roots, shadowRootCount };
255
- };
256
- const { roots, shadowRootCount } = collectRoots();
248
+ }
257
249
  const results = [];
258
250
  const seen = new Set();
259
251
  const normalizedFilter = filter?.toLowerCase();
@@ -448,7 +440,7 @@ export class DOMInspector {
448
440
  ? `//${tagName}[contains(text(), "${searchText}")]`
449
441
  : `//*[contains(text(), "${searchText}")]`;
450
442
  const result = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
451
- const elements = [];
443
+ const matchedElements = [];
452
444
  for (let i = 0; i < Math.min(result.snapshotLength, 100); i++) {
453
445
  const element = result.snapshotItem(i);
454
446
  if (!element)
@@ -465,7 +457,7 @@ export class DOMInspector {
465
457
  selector = `${element.tagName.toLowerCase()}.${classes[0]}`;
466
458
  }
467
459
  }
468
- elements.push({
460
+ matchedElements.push({
469
461
  found: true,
470
462
  nodeName: element.tagName,
471
463
  textContent: element.textContent?.trim(),
@@ -479,7 +471,7 @@ export class DOMInspector {
479
471
  visible: style.display !== 'none' && style.visibility !== 'hidden' && style.opacity !== '0',
480
472
  });
481
473
  }
482
- return elements;
474
+ return matchedElements;
483
475
  }, text, tag);
484
476
  logger.info(`findByText: "${text}" - found ${elements.length} elements`);
485
477
  return elements;
@@ -497,32 +489,30 @@ export class DOMInspector {
497
489
  if (!element) {
498
490
  return null;
499
491
  }
500
- function getElementXPath(el) {
501
- if (el.id) {
502
- return `//*[@id="${el.id}"]`;
503
- }
504
- if (el === document.body) {
505
- return '/html/body';
492
+ const parts = [];
493
+ let current = element;
494
+ while (current && current !== document.body && current !== document.documentElement) {
495
+ if (current.id) {
496
+ parts.unshift(`//*[@id="${current.id}"]`);
497
+ return parts.join('');
506
498
  }
507
499
  let ix = 0;
508
- const siblings = el.parentNode?.children;
500
+ const siblings = current.parentElement?.children;
509
501
  if (siblings) {
510
502
  for (let i = 0; i < siblings.length; i++) {
511
503
  const sibling = siblings[i];
512
504
  if (!sibling)
513
505
  continue;
514
- if (sibling === el) {
515
- const parentPath = el.parentElement ? getElementXPath(el.parentElement) : '';
516
- return `${parentPath}/${el.tagName.toLowerCase()}[${ix + 1}]`;
517
- }
518
- if (sibling.tagName === el.tagName) {
506
+ if (sibling === current)
507
+ break;
508
+ if (sibling.tagName === current.tagName)
519
509
  ix++;
520
- }
521
510
  }
522
511
  }
523
- return '';
512
+ parts.unshift(`/${current.tagName.toLowerCase()}[${ix + 1}]`);
513
+ current = current.parentElement;
524
514
  }
525
- return getElementXPath(element);
515
+ return '/html/body' + parts.join('');
526
516
  }, selector);
527
517
  logger.info(`getXPath: ${selector} -> ${xpath}`);
528
518
  return xpath;
@@ -103,13 +103,26 @@ export declare class PageController {
103
103
  export declare function evaluateWithTimeout<Args extends readonly unknown[], Result>(page: Page, pageFunction: (...args: Args) => Result, ...args: Args): Promise<Awaited<Result>>;
104
104
  export declare function evaluateWithTimeout(page: Page, pageFunction: string, ...args: readonly unknown[]): Promise<unknown>;
105
105
  export declare function evaluateOnNewDocumentWithTimeout<Args extends readonly unknown[], Result>(page: Page, pageFunction: string | ((...args: never[]) => Result), ...args: Args): Promise<unknown>;
106
- export declare function coverageStartJSWithTimeout(page: any, options?: {
106
+ interface CoveragePage {
107
+ coverage: {
108
+ startJSCoverage(options?: {
109
+ resetOnNavigation?: boolean;
110
+ reportAnonymousScripts?: boolean;
111
+ }): Promise<void>;
112
+ stopJSCoverage(): Promise<unknown>;
113
+ startCSSCoverage(options?: {
114
+ resetOnNavigation?: boolean;
115
+ }): Promise<void>;
116
+ stopCSSCoverage(): Promise<unknown>;
117
+ };
118
+ }
119
+ export declare function coverageStartJSWithTimeout(page: CoveragePage, options?: {
107
120
  resetOnNavigation?: boolean;
108
121
  reportAnonymousScripts?: boolean;
109
122
  }): Promise<void>;
110
- export declare function coverageStartCSSWithTimeout(page: any, options?: {
123
+ export declare function coverageStartCSSWithTimeout(page: CoveragePage, options?: {
111
124
  resetOnNavigation?: boolean;
112
125
  }): Promise<void>;
113
- export declare function coverageStopJSWithTimeout(page: any): Promise<unknown>;
114
- export declare function coverageStopCSSWithTimeout(page: any): Promise<unknown>;
126
+ export declare function coverageStopJSWithTimeout(page: CoveragePage): Promise<unknown>;
127
+ export declare function coverageStopCSSWithTimeout(page: CoveragePage): Promise<unknown>;
115
128
  export {};
@@ -313,10 +313,7 @@ async function checkPageCDPHealth(page, timeoutMs = 500) {
313
313
  throw new Error('cdp_unreachable');
314
314
  });
315
315
  try {
316
- const cdp = await Promise.race([
317
- page.createCDPSession(),
318
- timer,
319
- ]);
316
+ const cdp = await Promise.race([page.createCDPSession(), timer]);
320
317
  await Promise.race([
321
318
  cdp.send('Runtime.evaluate', { expression: '1', returnByValue: true }),
322
319
  timer,
@@ -326,7 +323,7 @@ async function checkPageCDPHealth(page, timeoutMs = 500) {
326
323
  const msg = err instanceof Error ? err.message : String(err);
327
324
  if (msg === 'cdp_unreachable') {
328
325
  throw new Error('CDP session unresponsive — the debugger may be blocking page evaluation. ' +
329
- 'Call debugger_disable() before this tool, or run it before debugger_enable().');
326
+ 'Call debugger_disable() before this tool, or run it before debugger_enable().', { cause: err });
330
327
  }
331
328
  throw err;
332
329
  }
@@ -28,7 +28,7 @@ export async function setupWebWorkerTracking(page) {
28
28
  });
29
29
  }
30
30
  export async function collectInlineScripts(page, maxSingleSize, maxFilesPerCollect) {
31
- const scripts = await page.evaluate((maxSingleSize) => {
31
+ const scripts = await page.evaluate((limit) => {
32
32
  const scriptElements = Array.from(document.querySelectorAll('script'));
33
33
  return scriptElements
34
34
  .filter((script) => !script.src && script.textContent)
@@ -36,8 +36,8 @@ export async function collectInlineScripts(page, maxSingleSize, maxFilesPerColle
36
36
  let content = script.textContent || '';
37
37
  const originalSize = content.length;
38
38
  let truncated = false;
39
- if (content.length > maxSingleSize) {
40
- content = content.substring(0, maxSingleSize);
39
+ if (content.length > limit) {
40
+ content = content.substring(0, limit);
41
41
  truncated = true;
42
42
  }
43
43
  return {
@@ -1,5 +1,4 @@
1
1
  import type { DetectCryptoOptions, DetectCryptoResult } from '../../types/index.js';
2
- import { type LLMService } from '../../services/LLMService.js';
3
2
  import { CryptoRulesManager } from '../crypto/CryptoRules.js';
4
3
  export interface SecurityIssue {
5
4
  severity: 'critical' | 'high' | 'medium' | 'low';
@@ -22,9 +21,8 @@ export interface CryptoStrength {
22
21
  };
23
22
  }
24
23
  export declare class CryptoDetector {
25
- private llm;
26
24
  private rulesManager;
27
- constructor(llm: LLMService, customRules?: CryptoRulesManager);
25
+ constructor(_llm?: any, customRules?: CryptoRulesManager);
28
26
  loadCustomRules(json: string): void;
29
27
  exportRules(): string;
30
28
  detect(options: DetectCryptoOptions): Promise<DetectCryptoResult & {
@@ -33,7 +31,6 @@ export declare class CryptoDetector {
33
31
  }>;
34
32
  private detectByKeywords;
35
33
  private escapeRegex;
36
- private detectByAI;
37
34
  private detectLibraries;
38
35
  private detectByAST;
39
36
  private mergeParameters;
@@ -1,16 +1,11 @@
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 {} from '../../services/LLMService.js';
5
- import { generateCryptoDetectionPrompt } from '../../services/prompts/crypto.js';
6
4
  import { logger } from '../../utils/logger.js';
7
- import { CRYPTO_DETECT_LLM_MAX_TOKENS } from '../../constants.js';
8
5
  import { CryptoRulesManager } from '../crypto/CryptoRules.js';
9
6
  export class CryptoDetector {
10
- llm;
11
7
  rulesManager;
12
- constructor(llm, customRules) {
13
- this.llm = llm;
8
+ constructor(_llm, customRules) {
14
9
  this.rulesManager = customRules || new CryptoRulesManager();
15
10
  }
16
11
  loadCustomRules(json) {
@@ -36,11 +31,6 @@ export class CryptoDetector {
36
31
  if (astResults.parameters) {
37
32
  this.mergeParameters(algorithms, astResults.parameters);
38
33
  }
39
- const useAI = options.useAI !== false;
40
- if (useAI) {
41
- const aiResults = await this.detectByAI(code);
42
- algorithms.push(...aiResults);
43
- }
44
34
  const mergedAlgorithms = this.mergeResults(algorithms);
45
35
  const securityResults = this.evaluateSecurity(mergedAlgorithms, code);
46
36
  securityIssues.push(...securityResults);
@@ -82,36 +72,6 @@ export class CryptoDetector {
82
72
  escapeRegex(str) {
83
73
  return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
84
74
  }
85
- async detectByAI(code) {
86
- try {
87
- const messages = generateCryptoDetectionPrompt(code);
88
- const response = await this.llm.chat(messages, {
89
- temperature: 0.2,
90
- maxTokens: CRYPTO_DETECT_LLM_MAX_TOKENS,
91
- });
92
- const jsonMatch = response.content.match(/\{[\s\S]*\}/);
93
- if (!jsonMatch)
94
- return [];
95
- const result = JSON.parse(jsonMatch[0]);
96
- if (!Array.isArray(result.algorithms))
97
- return [];
98
- return result.algorithms.map((algo) => {
99
- const a = algo;
100
- return {
101
- name: a.name || 'Unknown',
102
- type: a.type || 'other',
103
- confidence: a.confidence || 0.5,
104
- location: { file: 'current', line: 0 },
105
- parameters: a.parameters,
106
- usage: a.usage || '',
107
- };
108
- });
109
- }
110
- catch (error) {
111
- logger.warn('AI crypto detection failed', error);
112
- return [];
113
- }
114
- }
115
75
  detectLibraries(code) {
116
76
  const libraries = [];
117
77
  const libraryRules = this.rulesManager.getLibraryRules();
@@ -308,7 +268,7 @@ export class CryptoDetector {
308
268
  merged.set(key, algo);
309
269
  }
310
270
  });
311
- return Array.from(merged.values()).sort((a, b) => b.confidence - a.confidence);
271
+ return Array.from(merged.values()).toSorted((a, b) => b.confidence - a.confidence);
312
272
  }
313
273
  findLineNumber(code, keyword) {
314
274
  const lines = code.split('\n');
@@ -288,7 +288,7 @@ export class CryptoRulesManager {
288
288
  }
289
289
  }
290
290
  catch (error) {
291
- throw new Error(`Failed to load rules from JSON: ${error}`);
291
+ throw new Error(`Failed to load rules from JSON: ${error}`, { cause: error });
292
292
  }
293
293
  }
294
294
  exportToJSON() {
@@ -31,7 +31,7 @@ export class BlackboxManager {
31
31
  return escaped.replace(/\*/g, '.*').replace(/\?/g, '.');
32
32
  }
33
33
  try {
34
- new RegExp(input);
34
+ void new RegExp(input);
35
35
  return input;
36
36
  }
37
37
  catch {
@@ -138,7 +138,7 @@ export async function getObjectPropertiesByIdCore(ctx, objectId) {
138
138
  const message = toErrorMessage(error);
139
139
  if (message.includes('Could not find object with given id') ||
140
140
  message.includes('Invalid remote object id')) {
141
- throw new Error('Object handle is expired or invalid. Pause execution again and reacquire objectId from get_scope_variables_enhanced.');
141
+ throw new Error('Object handle is expired or invalid. Pause execution again and reacquire objectId from get_scope_variables_enhanced.', { cause: error });
142
142
  }
143
143
  throw error;
144
144
  }
@@ -38,7 +38,7 @@ export async function extractFunctionTreeCore(ctx, scriptId, functionName, optio
38
38
  t = await import('@babel/types');
39
39
  }
40
40
  catch (error) {
41
- throw new Error(`Failed to load Babel dependencies. Please install: npm install @babel/parser @babel/traverse @babel/generator @babel/types\nError: ${getErrorMessage(error)}`);
41
+ throw new Error(`Failed to load Babel dependencies. Please install: npm install @babel/parser @babel/traverse @babel/generator @babel/types\nError: ${getErrorMessage(error)}`, { cause: error });
42
42
  }
43
43
  let ast;
44
44
  try {
@@ -48,7 +48,9 @@ export async function extractFunctionTreeCore(ctx, scriptId, functionName, optio
48
48
  });
49
49
  }
50
50
  catch (error) {
51
- throw new Error(`Failed to parse script ${scriptId}: ${getErrorMessage(error)}`);
51
+ throw new Error(`Failed to parse script ${scriptId}: ${getErrorMessage(error)}`, {
52
+ cause: error,
53
+ });
52
54
  }
53
55
  const allFunctions = new Map();
54
56
  const callGraph = {};
@@ -101,7 +101,7 @@ export class WatchExpressionManager {
101
101
  deepEqual(a, b) {
102
102
  if (a === b)
103
103
  return true;
104
- if (a == null || b == null)
104
+ if (a === null || a === undefined || b === null || b === undefined)
105
105
  return false;
106
106
  if (!this.isRecord(a) || !this.isRecord(b))
107
107
  return false;
@@ -20,6 +20,7 @@ export interface AdvancedDeobfuscateResult {
20
20
  detectedTechniques: string[];
21
21
  confidence: number;
22
22
  warnings: string[];
23
+ cached?: boolean;
23
24
  astOptimized?: boolean;
24
25
  bundle?: DeobfuscateBundleSummary;
25
26
  savedTo?: string;
@@ -33,6 +34,10 @@ export interface AdvancedDeobfuscateResult {
33
34
  };
34
35
  }
35
36
  export declare class AdvancedDeobfuscator {
37
+ private resultCache;
38
+ private maxCacheSize;
39
+ private generateCacheKey;
36
40
  deobfuscate(options: AdvancedDeobfuscateOptions): Promise<AdvancedDeobfuscateResult>;
41
+ private storeCacheEntry;
37
42
  private calculateConfidence;
38
43
  }
@@ -1,8 +1,36 @@
1
1
  import { logger } from '../../utils/logger.js';
2
2
  import { runWebcrack } from '../deobfuscator/webcrack.js';
3
3
  import { detectObfuscationType as detectObfuscationTypeUtil } from '../deobfuscator/Deobfuscator.utils.js';
4
+ import crypto from 'crypto';
4
5
  export class AdvancedDeobfuscator {
6
+ resultCache = new Map();
7
+ maxCacheSize = 100;
8
+ generateCacheKey(options) {
9
+ const key = JSON.stringify({
10
+ aggressiveVM: options.aggressiveVM,
11
+ code: options.code.substring(0, 2000),
12
+ detectOnly: options.detectOnly,
13
+ forceOutput: options.forceOutput,
14
+ includeModuleCode: options.includeModuleCode,
15
+ jsx: options.jsx,
16
+ mangle: options.mangle,
17
+ mappings: options.mappings,
18
+ maxBundleModules: options.maxBundleModules,
19
+ outputDir: options.outputDir,
20
+ timeout: options.timeout,
21
+ unpack: options.unpack,
22
+ unminify: options.unminify,
23
+ useASTOptimization: options.useASTOptimization,
24
+ });
25
+ return crypto.createHash('md5').update(key).digest('hex');
26
+ }
5
27
  async deobfuscate(options) {
28
+ const cacheKey = this.generateCacheKey(options);
29
+ const cached = this.resultCache.get(cacheKey);
30
+ if (cached) {
31
+ logger.debug('Advanced deobfuscation result from cache');
32
+ return { ...cached, cached: true };
33
+ }
6
34
  logger.info('Starting advanced webcrack deobfuscation...');
7
35
  const detectedTechniques = detectObfuscationTypeUtil(options.code);
8
36
  const warnings = [];
@@ -16,7 +44,7 @@ export class AdvancedDeobfuscator {
16
44
  warnings.push('timeout is currently ignored; webcrack controls its own execution flow.');
17
45
  }
18
46
  if (options.detectOnly) {
19
- return {
47
+ const result = {
20
48
  code: options.code,
21
49
  detectedTechniques,
22
50
  confidence: Math.min(0.6 + detectedTechniques.length * 0.05, 0.9),
@@ -28,6 +56,8 @@ export class AdvancedDeobfuscator {
28
56
  engine: 'webcrack',
29
57
  webcrackApplied: false,
30
58
  };
59
+ this.storeCacheEntry(cacheKey, result);
60
+ return { ...result, cached: false };
31
61
  }
32
62
  const webcrackResult = await runWebcrack(options.code, {
33
63
  unpack: options.unpack,
@@ -58,7 +88,7 @@ export class AdvancedDeobfuscator {
58
88
  detectedTechniques.push('mangle');
59
89
  }
60
90
  detectedTechniques.push('webcrack');
61
- return {
91
+ const result = {
62
92
  code: webcrackResult.code,
63
93
  detectedTechniques: Array.from(new Set(detectedTechniques)),
64
94
  confidence: this.calculateConfidence(webcrackResult, detectedTechniques),
@@ -70,6 +100,17 @@ export class AdvancedDeobfuscator {
70
100
  engine: 'webcrack',
71
101
  webcrackApplied: true,
72
102
  };
103
+ this.storeCacheEntry(cacheKey, result);
104
+ return { ...result, cached: false };
105
+ }
106
+ storeCacheEntry(cacheKey, result) {
107
+ if (this.resultCache.size >= this.maxCacheSize) {
108
+ const firstKey = this.resultCache.keys().next().value;
109
+ if (firstKey) {
110
+ this.resultCache.delete(firstKey);
111
+ }
112
+ }
113
+ this.resultCache.set(cacheKey, result);
73
114
  }
74
115
  calculateConfidence(webcrackResult, detectedTechniques) {
75
116
  let confidence = 0.72 + detectedTechniques.length * 0.03;
@@ -1,15 +1,12 @@
1
1
  import type { DeobfuscateOptions, DeobfuscateResult } from '../../types/index.js';
2
- import { type LLMService } from '../../services/LLMService.js';
3
2
  export declare class Deobfuscator {
4
- private llm?;
5
3
  private resultCache;
6
4
  private maxCacheSize;
7
- constructor(llm?: LLMService);
5
+ constructor(legacyDependency?: unknown);
8
6
  private generateCacheKey;
9
7
  deobfuscate(options: DeobfuscateOptions): Promise<DeobfuscateResult>;
10
8
  private detectObfuscationType;
11
9
  private calculateReadabilityScore;
12
10
  private calculateConfidence;
13
11
  private buildAnalysis;
14
- private llmAnalysis;
15
12
  }
@@ -1,28 +1,27 @@
1
1
  import crypto from 'crypto';
2
2
  import { logger } from '../../utils/logger.js';
3
- import { DEOBF_LLM_MAX_TOKENS } from '../../constants.js';
4
- import {} from '../../services/LLMService.js';
5
- import { generateDeobfuscationPrompt } from '../../services/prompts/deobfuscation.js';
6
3
  import { calculateReadabilityScore as calculateReadabilityScoreUtil, detectObfuscationType as detectObfuscationTypeUtil, } from '../deobfuscator/Deobfuscator.utils.js';
7
4
  import { runWebcrack } from '../deobfuscator/webcrack.js';
8
5
  export class Deobfuscator {
9
- llm;
10
6
  resultCache = new Map();
11
7
  maxCacheSize = 100;
12
- constructor(llm) {
13
- this.llm = llm;
8
+ constructor(legacyDependency) {
9
+ void legacyDependency;
14
10
  }
15
11
  generateCacheKey(options) {
16
12
  const key = JSON.stringify({
13
+ aggressive: options.aggressive,
17
14
  code: options.code.substring(0, 2000),
18
15
  forceOutput: options.forceOutput,
19
16
  includeModuleCode: options.includeModuleCode,
17
+ inlineFunctions: options.inlineFunctions,
20
18
  jsx: options.jsx,
21
- llm: options.llm,
19
+ llm: false,
22
20
  mangle: options.mangle ?? options.renameVariables,
23
21
  mappings: options.mappings,
24
22
  maxBundleModules: options.maxBundleModules,
25
23
  outputDir: options.outputDir,
24
+ preserveLogic: options.preserveLogic,
26
25
  unpack: options.unpack,
27
26
  unminify: options.unminify,
28
27
  });
@@ -33,6 +32,7 @@ export class Deobfuscator {
33
32
  const cached = this.resultCache.get(cacheKey);
34
33
  if (cached) {
35
34
  logger.debug('Deobfuscation result from cache');
35
+ cached.cached = true;
36
36
  return cached;
37
37
  }
38
38
  logger.info('Starting webcrack deobfuscation...');
@@ -64,13 +64,7 @@ export class Deobfuscator {
64
64
  logger.error(`webcrack deobfuscation failed: ${reason}`);
65
65
  throw new Error(reason);
66
66
  }
67
- let analysis = this.buildAnalysis(webcrackResult, obfuscationType);
68
- if (this.llm && options.llm) {
69
- const llmResult = await this.llmAnalysis(webcrackResult.code);
70
- if (llmResult) {
71
- analysis = llmResult;
72
- }
73
- }
67
+ const analysis = this.buildAnalysis(webcrackResult, obfuscationType);
74
68
  const transformations = [
75
69
  {
76
70
  type: 'webcrack',
@@ -95,15 +89,6 @@ export class Deobfuscator {
95
89
  },
96
90
  ]
97
91
  : []),
98
- ...(this.llm && options.llm
99
- ? [
100
- {
101
- type: 'llm-analysis',
102
- description: 'AI-assisted analysis completed after webcrack deobfuscation',
103
- success: true,
104
- },
105
- ]
106
- : []),
107
92
  ];
108
93
  const readabilityScore = this.calculateReadabilityScore(webcrackResult.code);
109
94
  const confidence = this.calculateConfidence(webcrackResult, readabilityScore);
@@ -129,6 +114,7 @@ export class Deobfuscator {
129
114
  this.resultCache.delete(firstKey);
130
115
  }
131
116
  }
117
+ result.cached = false;
132
118
  this.resultCache.set(cacheKey, result);
133
119
  return result;
134
120
  }
@@ -161,20 +147,4 @@ export class Deobfuscator {
161
147
  }
162
148
  return parts.join(' ');
163
149
  }
164
- async llmAnalysis(code) {
165
- if (!this.llm)
166
- return null;
167
- try {
168
- const messages = generateDeobfuscationPrompt(code);
169
- const response = await this.llm.chat(messages, {
170
- temperature: 0.3,
171
- maxTokens: DEOBF_LLM_MAX_TOKENS,
172
- });
173
- return response.content;
174
- }
175
- catch (error) {
176
- logger.warn('LLM analysis failed after webcrack deobfuscation', error);
177
- return null;
178
- }
179
- }
180
150
  }
@@ -1,9 +1,6 @@
1
1
  import type { JSVMPDeobfuscatorOptions, JSVMPDeobfuscatorResult } from '../../types/index.js';
2
- import type { LLMService } from '../../services/LLMService.js';
3
2
  export declare class JSVMPDeobfuscator {
4
- private llm?;
5
3
  private readonly sandbox;
6
- constructor(llm?: LLMService);
7
4
  deobfuscate(options: JSVMPDeobfuscatorOptions): Promise<JSVMPDeobfuscatorResult>;
8
5
  private detectJSVMP;
9
6
  private detectJSVMPWithRegex;