@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,5 +1,6 @@
1
1
  import puppeteer from 'rebrowser-puppeteer-core';
2
2
  import { logger } from '../../utils/logger.js';
3
+ const launchBrowser = Reflect.get(puppeteer, 'launch');
3
4
  export async function fetchRealEnvironmentData(params) {
4
5
  const { url, detected, depth, resolveExecutablePath, buildManifestFromTemplate } = params;
5
6
  const manifest = {};
@@ -26,67 +27,64 @@ export async function fetchRealEnvironmentData(params) {
26
27
  if (executablePath) {
27
28
  launchOptions.executablePath = executablePath;
28
29
  }
29
- browser = await puppeteer.launch(launchOptions);
30
+ browser = await launchBrowser(launchOptions);
30
31
  }
31
32
  page = await browser.newPage();
32
33
  await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36');
33
34
  await page.evaluateOnNewDocument(() => {
34
35
  const typedWindow = window;
35
- const setChromeObject = (target) => {
36
- target.chrome = {
37
- runtime: {
38
- connect: () => { },
39
- sendMessage: () => { },
40
- onMessage: {
41
- addListener: () => { },
42
- removeListener: () => { },
43
- },
44
- },
45
- loadTimes: function () {
46
- return {
47
- commitLoadTime: Date.now() / 1000 - Math.random() * 10,
48
- connectionInfo: 'http/1.1',
49
- finishDocumentLoadTime: Date.now() / 1000 - Math.random() * 5,
50
- finishLoadTime: Date.now() / 1000 - Math.random() * 3,
51
- firstPaintAfterLoadTime: 0,
52
- firstPaintTime: Date.now() / 1000 - Math.random() * 8,
53
- navigationType: 'Other',
54
- npnNegotiatedProtocol: 'http/1.1',
55
- requestTime: Date.now() / 1000 - Math.random() * 15,
56
- startLoadTime: Date.now() / 1000 - Math.random() * 12,
57
- wasAlternateProtocolAvailable: false,
58
- wasFetchedViaSpdy: false,
59
- wasNpnNegotiated: true,
60
- };
61
- },
62
- csi: function () {
63
- return {
64
- onloadT: Date.now(),
65
- pageT: Math.random() * 1000,
66
- startE: Date.now() - Math.random() * 5000,
67
- tran: 15,
68
- };
69
- },
70
- app: {
71
- isInstalled: false,
72
- InstallState: {
73
- DISABLED: 'disabled',
74
- INSTALLED: 'installed',
75
- NOT_INSTALLED: 'not_installed',
76
- },
77
- RunningState: {
78
- CANNOT_RUN: 'cannot_run',
79
- READY_TO_RUN: 'ready_to_run',
80
- RUNNING: 'running',
81
- },
82
- },
83
- };
84
- };
85
36
  Object.defineProperty(navigator, 'webdriver', {
86
37
  get: () => undefined,
87
38
  configurable: true,
88
39
  });
89
- setChromeObject(typedWindow);
40
+ typedWindow.chrome = {
41
+ runtime: {
42
+ connect: () => { },
43
+ sendMessage: () => { },
44
+ onMessage: {
45
+ addListener: () => { },
46
+ removeListener: () => { },
47
+ },
48
+ },
49
+ loadTimes: function () {
50
+ return {
51
+ commitLoadTime: Date.now() / 1000 - Math.random() * 10,
52
+ connectionInfo: 'http/1.1',
53
+ finishDocumentLoadTime: Date.now() / 1000 - Math.random() * 5,
54
+ finishLoadTime: Date.now() / 1000 - Math.random() * 3,
55
+ firstPaintAfterLoadTime: 0,
56
+ firstPaintTime: Date.now() / 1000 - Math.random() * 8,
57
+ navigationType: 'Other',
58
+ npnNegotiatedProtocol: 'http/1.1',
59
+ requestTime: Date.now() / 1000 - Math.random() * 15,
60
+ startLoadTime: Date.now() / 1000 - Math.random() * 12,
61
+ wasAlternateProtocolAvailable: false,
62
+ wasFetchedViaSpdy: false,
63
+ wasNpnNegotiated: true,
64
+ };
65
+ },
66
+ csi: function () {
67
+ return {
68
+ onloadT: Date.now(),
69
+ pageT: Math.random() * 1000,
70
+ startE: Date.now() - Math.random() * 5000,
71
+ tran: 15,
72
+ };
73
+ },
74
+ app: {
75
+ isInstalled: false,
76
+ InstallState: {
77
+ DISABLED: 'disabled',
78
+ INSTALLED: 'installed',
79
+ NOT_INSTALLED: 'not_installed',
80
+ },
81
+ RunningState: {
82
+ CANNOT_RUN: 'cannot_run',
83
+ READY_TO_RUN: 'ready_to_run',
84
+ RUNNING: 'running',
85
+ },
86
+ },
87
+ };
90
88
  Object.defineProperty(navigator, 'plugins', {
91
89
  get: () => {
92
90
  const pluginArray = [
@@ -170,13 +168,12 @@ export async function fetchRealEnvironmentData(params) {
170
168
  const extractedValues = await page.evaluate((paths, maxDepth) => {
171
169
  const result = {};
172
170
  const seen = new WeakSet();
173
- const isObjectLike = (value) => typeof value === 'object' && value !== null;
174
171
  function extractValue(path) {
175
172
  try {
176
173
  const parts = path.split('.');
177
174
  let current = window;
178
175
  for (const part of parts) {
179
- if (isObjectLike(current) && part in current) {
176
+ if (typeof current === 'object' && current !== null && part in current) {
180
177
  current = current[part];
181
178
  }
182
179
  else {
@@ -189,8 +186,8 @@ export async function fetchRealEnvironmentData(params) {
189
186
  return `[Error: ${error.message}]`;
190
187
  }
191
188
  }
192
- function serializeValue(value, depth, seenObjects) {
193
- if (depth <= 0)
189
+ function serializeValue(value, recurseDepth, seenObjects) {
190
+ if (recurseDepth <= 0)
194
191
  return '[Max Depth]';
195
192
  if (value === null)
196
193
  return null;
@@ -213,20 +210,20 @@ export async function fetchRealEnvironmentData(params) {
213
210
  return '[Function]';
214
211
  }
215
212
  }
216
- if (isObjectLike(value) && seenObjects.has(value)) {
213
+ if (typeof value === 'object' && value !== null && seenObjects.has(value)) {
217
214
  return '[Circular Reference]';
218
215
  }
219
216
  if (Array.isArray(value)) {
220
217
  seenObjects.add(value);
221
218
  const arr = value
222
219
  .slice(0, 20)
223
- .map((item) => serializeValue(item, depth - 1, seenObjects));
220
+ .map((item) => serializeValue(item, recurseDepth - 1, seenObjects));
224
221
  if (value.length > 20) {
225
222
  arr.push(`[... ${value.length - 20} more items]`);
226
223
  }
227
224
  return arr;
228
225
  }
229
- if (isObjectLike(value)) {
226
+ if (typeof value === 'object' && value !== null) {
230
227
  seenObjects.add(value);
231
228
  const serialized = {};
232
229
  const allKeys = Object.getOwnPropertyNames(value);
@@ -237,14 +234,14 @@ export async function fetchRealEnvironmentData(params) {
237
234
  if (descriptor) {
238
235
  if (descriptor.get) {
239
236
  try {
240
- serialized[key] = serializeValue(value[key], depth - 1, seenObjects);
237
+ serialized[key] = serializeValue(value[key], recurseDepth - 1, seenObjects);
241
238
  }
242
239
  catch {
243
240
  serialized[key] = '[Getter Error]';
244
241
  }
245
242
  }
246
243
  else if (descriptor.value !== undefined) {
247
- serialized[key] = serializeValue(descriptor.value, depth - 1, seenObjects);
244
+ serialized[key] = serializeValue(descriptor.value, recurseDepth - 1, seenObjects);
248
245
  }
249
246
  }
250
247
  }
@@ -162,17 +162,21 @@ export declare const chromeEnvironmentTemplate: {
162
162
  };
163
163
  };
164
164
  WebSocket: {
165
- new (_url: string): {
165
+ new (): {
166
166
  send(): void;
167
167
  close(): void;
168
168
  addEventListener(): void;
169
169
  };
170
170
  };
171
171
  Blob: {
172
- new (_parts: unknown[], _options?: unknown): {};
172
+ new (): {
173
+ size: number;
174
+ type: string;
175
+ };
173
176
  };
174
177
  File: {
175
- new (parts: BlobPart[], _name: string, options?: BlobPropertyBag): {
178
+ new (parts: BlobPart[], name: string, options?: BlobPropertyBag): {
179
+ name: string;
176
180
  readonly size: number;
177
181
  readonly type: string;
178
182
  arrayBuffer(): Promise<ArrayBuffer>;
@@ -202,16 +206,22 @@ export declare const chromeEnvironmentTemplate: {
202
206
  };
203
207
  };
204
208
  Request: {
205
- new (_input: unknown, _init?: unknown): {};
209
+ new (): {
210
+ clone(): any;
211
+ };
206
212
  };
207
213
  Response: {
208
- new (_body?: unknown, _init?: unknown): {};
214
+ new (): {
215
+ clone(): any;
216
+ };
209
217
  };
210
218
  URL: {
211
- new (_url: string, _base?: string): {};
219
+ new (): {
220
+ toString(): string;
221
+ };
212
222
  };
213
223
  URLSearchParams: {
214
- new (_init?: unknown): {
224
+ new (): {
215
225
  append(): void;
216
226
  delete(): void;
217
227
  get(): void;
@@ -161,17 +161,19 @@ export const chromeEnvironmentTemplate = {
161
161
  addEventListener() { }
162
162
  },
163
163
  WebSocket: class WebSocket {
164
- constructor(_url) { }
165
164
  send() { }
166
165
  close() { }
167
166
  addEventListener() { }
168
167
  },
169
168
  Blob: class Blob {
170
- constructor(_parts, _options) { }
169
+ size = 0;
170
+ type = '';
171
171
  },
172
172
  File: class File extends Blob {
173
- constructor(parts, _name, options) {
173
+ name = '';
174
+ constructor(parts, name, options) {
174
175
  super(parts, options);
176
+ this.name = name;
175
177
  }
176
178
  },
177
179
  FormData: class FormData {
@@ -190,16 +192,21 @@ export const chromeEnvironmentTemplate = {
190
192
  set() { }
191
193
  },
192
194
  Request: class Request {
193
- constructor(_input, _init) { }
195
+ clone() {
196
+ return this;
197
+ }
194
198
  },
195
199
  Response: class Response {
196
- constructor(_body, _init) { }
200
+ clone() {
201
+ return this;
202
+ }
197
203
  },
198
204
  URL: class URL {
199
- constructor(_url, _base) { }
205
+ toString() {
206
+ return '';
207
+ }
200
208
  },
201
209
  URLSearchParams: class URLSearchParams {
202
- constructor(_init) { }
203
210
  append() { }
204
211
  delete() { }
205
212
  get() { }
@@ -1,4 +1,4 @@
1
- import { ToolRegistry } from '../external/ToolRegistry.js';
1
+ import { type ToolRegistry } from '../external/ToolRegistry.js';
2
2
  import type { ToolRunRequest, ToolRunResult } from '../external/types.js';
3
3
  export declare class ExternalToolRunner {
4
4
  private readonly registry;
@@ -1,9 +1,9 @@
1
1
  import { spawn } from 'node:child_process';
2
- import { resolve, relative, sep } from 'node:path';
2
+ import { resolve, relative, sep, isAbsolute } from 'node:path';
3
3
  import { getProjectRoot } from '../../utils/outputPaths.js';
4
4
  import { logger } from '../../utils/logger.js';
5
5
  import { ioLimit } from '../../utils/concurrency.js';
6
- import { ToolRegistry } from '../external/ToolRegistry.js';
6
+ import {} from '../external/ToolRegistry.js';
7
7
  import { EXTERNAL_TOOL_TIMEOUT_MS, EXTERNAL_TOOL_MAX_STDOUT_BYTES, EXTERNAL_TOOL_MAX_STDERR_BYTES, EXTERNAL_TOOL_FORCE_KILL_GRACE_MS, } from '../../constants.js';
8
8
  const DEFAULT_TIMEOUT_MS = EXTERNAL_TOOL_TIMEOUT_MS;
9
9
  const DEFAULT_MAX_STDOUT = EXTERNAL_TOOL_MAX_STDOUT_BYTES;
@@ -37,9 +37,16 @@ export class ExternalToolRunner {
37
37
  const args = [...(spec.defaultArgs || []), ...request.args];
38
38
  const env = { PATH: process.env.PATH || '' };
39
39
  if (process.platform === 'win32') {
40
- env.SYSTEMROOT = process.env.SYSTEMROOT || 'C:\\Windows';
41
- env.TEMP = process.env.TEMP || '';
42
- env.TMP = process.env.TMP || '';
40
+ const systemRoot = process.env.SYSTEMROOT || process.env.SystemRoot || process.env.WINDIR;
41
+ if (systemRoot) {
42
+ env.SYSTEMROOT = systemRoot;
43
+ }
44
+ if (process.env.TEMP) {
45
+ env.TEMP = process.env.TEMP;
46
+ }
47
+ if (process.env.TMP) {
48
+ env.TMP = process.env.TMP;
49
+ }
43
50
  }
44
51
  if (spec.envAllowlist) {
45
52
  for (const key of spec.envAllowlist) {
@@ -66,13 +73,23 @@ export class ExternalToolRunner {
66
73
  let stdoutTruncated = false;
67
74
  let stderrTruncated = false;
68
75
  let settled = false;
69
- let timeoutHandle;
76
+ const timeoutHandle = setTimeout(() => {
77
+ if (!settled) {
78
+ child.kill('SIGTERM');
79
+ setTimeout(() => {
80
+ if (!settled) {
81
+ child.kill('SIGKILL');
82
+ finish(null, 'SIGKILL');
83
+ }
84
+ }, EXTERNAL_TOOL_FORCE_KILL_GRACE_MS);
85
+ request.onProgress?.({ phase: 'timeout', ts: Date.now() });
86
+ }
87
+ }, timeoutMs);
70
88
  const finish = (exitCode, signal) => {
71
89
  if (settled)
72
90
  return;
73
91
  settled = true;
74
- if (timeoutHandle)
75
- clearTimeout(timeoutHandle);
92
+ clearTimeout(timeoutHandle);
76
93
  const durationMs = Date.now() - startTime;
77
94
  const result = {
78
95
  ok: exitCode === 0,
@@ -91,18 +108,6 @@ export class ExternalToolRunner {
91
108
  }
92
109
  resolvePromise(result);
93
110
  };
94
- timeoutHandle = setTimeout(() => {
95
- if (!settled) {
96
- child.kill('SIGTERM');
97
- setTimeout(() => {
98
- if (!settled) {
99
- child.kill('SIGKILL');
100
- finish(null, 'SIGKILL');
101
- }
102
- }, EXTERNAL_TOOL_FORCE_KILL_GRACE_MS);
103
- request.onProgress?.({ phase: 'timeout', ts: Date.now() });
104
- }
105
- }, timeoutMs);
106
111
  if (request.stdin) {
107
112
  child.stdin.write(request.stdin);
108
113
  child.stdin.end();
@@ -153,13 +158,11 @@ export class ExternalToolRunner {
153
158
  const resolved = resolve(requestedCwd);
154
159
  const projectRoot = getProjectRoot();
155
160
  const rel = relative(projectRoot, resolved);
156
- if (rel && !rel.startsWith('..') && !resolve(rel).startsWith(sep)) {
161
+ if (rel && !rel.startsWith('..') && !isAbsolute(rel) && !resolve(rel).startsWith(sep)) {
157
162
  return resolved;
158
163
  }
159
164
  const tmpDirs = [process.env.TEMP, process.env.TMP, '/tmp', '/var/tmp'].filter(Boolean);
160
165
  for (const tmp of tmpDirs) {
161
- if (!tmp)
162
- continue;
163
166
  const resolvedTmp = resolve(tmp);
164
167
  if (resolved === resolvedTmp || resolved.startsWith(resolvedTmp + sep)) {
165
168
  return resolved;
@@ -1,6 +1,8 @@
1
1
  import type { CodeCollector } from '../collector/CodeCollector.js';
2
+ import type { FetchInterceptRule, FetchInterceptRuleInput } from '../monitor/FetchInterceptor.js';
2
3
  import type { InspectedObjectProperties } from '../monitor/ConsoleMonitor.impl.core.object-cache.js';
3
4
  export type { NetworkRequest, NetworkResponse } from '../monitor/NetworkMonitor.js';
5
+ export type { FetchInterceptRule, FetchInterceptRuleInput, } from '../monitor/FetchInterceptor.js';
4
6
  type ConsoleMessageType = 'log' | 'warn' | 'error' | 'info' | 'debug' | 'trace' | 'dir' | 'table';
5
7
  export interface ConsoleMessage {
6
8
  type: ConsoleMessageType | string;
@@ -32,6 +34,7 @@ export declare class ConsoleMonitor {
32
34
  private collector;
33
35
  private cdpSession;
34
36
  private networkMonitor;
37
+ private fetchInterceptor;
35
38
  private playwrightNetworkMonitor;
36
39
  private playwrightPage;
37
40
  private playwrightConsoleHandler;
@@ -140,6 +143,16 @@ export declare class ConsoleMonitor {
140
143
  injectPropertyWatcher(objectPath: string, propertyName: string, options?: {
141
144
  persistent?: boolean;
142
145
  }): Promise<void>;
146
+ enableFetchIntercept(rules: FetchInterceptRuleInput[]): Promise<FetchInterceptRule[]>;
147
+ disableFetchIntercept(): Promise<{
148
+ removedRules: number;
149
+ }>;
150
+ removeFetchInterceptRule(ruleId: string): Promise<boolean>;
151
+ getFetchInterceptStatus(): {
152
+ enabled: boolean;
153
+ rules: FetchInterceptRule[];
154
+ totalHits: number;
155
+ };
143
156
  private formatRemoteObject;
144
157
  private extractValue;
145
158
  }
@@ -1,6 +1,7 @@
1
1
  import { logger } from '../../utils/logger.js';
2
2
  import { NetworkMonitor } from '../monitor/NetworkMonitor.js';
3
3
  import { PlaywrightNetworkMonitor } from '../monitor/PlaywrightNetworkMonitor.js';
4
+ import { FetchInterceptor } from '../monitor/FetchInterceptor.js';
4
5
  import { clearExceptionsCore, clearLogsCore, getExceptionsCore, getLogsCore, getStatsCore, } from '../monitor/ConsoleMonitor.impl.core.logs.js';
5
6
  import { clearInjectedBuffersCore, clearNetworkRecordsCore, getAllJavaScriptResponsesCore, getFetchRequestsCore, getNetworkActivityCore, getNetworkRequestsCore, getNetworkResponsesCore, getNetworkStatsCore, getNetworkStatusCore, getResponseBodyCore, getXHRRequestsCore, injectFetchInterceptorCore, injectXHRInterceptorCore, isNetworkEnabledCore, resetInjectedInterceptorsCore, } from '../monitor/ConsoleMonitor.impl.core.network.js';
6
7
  import { clearObjectCacheCore, inspectObjectCore, } from '../monitor/ConsoleMonitor.impl.core.object-cache.js';
@@ -9,6 +10,7 @@ export class ConsoleMonitor {
9
10
  collector;
10
11
  cdpSession = null;
11
12
  networkMonitor = null;
13
+ fetchInterceptor = null;
12
14
  playwrightNetworkMonitor = null;
13
15
  playwrightPage = null;
14
16
  playwrightConsoleHandler = null;
@@ -80,6 +82,7 @@ export class ConsoleMonitor {
80
82
  logger.warn('ConsoleMonitor CDP session disconnected');
81
83
  this.cdpSession = null;
82
84
  this.networkMonitor = null;
85
+ this.fetchInterceptor = null;
83
86
  });
84
87
  await cdpSendWithTimeout(this.cdpSession, 'Runtime.enable', {}, 5000);
85
88
  await cdpSendWithTimeout(this.cdpSession, 'Console.enable', {}, 5000);
@@ -246,6 +249,10 @@ export class ConsoleMonitor {
246
249
  this.playwrightNetworkMonitor = null;
247
250
  }
248
251
  if (this.cdpSession) {
252
+ if (this.fetchInterceptor) {
253
+ await this.fetchInterceptor.disable();
254
+ this.fetchInterceptor = null;
255
+ }
249
256
  if (this.networkMonitor) {
250
257
  await this.networkMonitor.disable();
251
258
  this.networkMonitor = null;
@@ -295,6 +302,7 @@ export class ConsoleMonitor {
295
302
  logger.warn('ConsoleMonitor CDP session unresponsive (zombie), reinitializing...');
296
303
  this.cdpSession = null;
297
304
  this.networkMonitor = null;
305
+ this.fetchInterceptor = null;
298
306
  await this.enable(this.lastEnableOptions);
299
307
  }
300
308
  }
@@ -414,6 +422,40 @@ export class ConsoleMonitor {
414
422
  async injectPropertyWatcher(objectPath, propertyName, options) {
415
423
  return injectPropertyWatcherCore(this, objectPath, propertyName, options);
416
424
  }
425
+ async enableFetchIntercept(rules) {
426
+ await this.ensureSession();
427
+ if (!this.cdpSession) {
428
+ throw new Error('No CDP session available for Fetch interception');
429
+ }
430
+ if (!this.fetchInterceptor) {
431
+ this.fetchInterceptor = new FetchInterceptor(this.cdpSession);
432
+ }
433
+ return this.fetchInterceptor.enable(rules);
434
+ }
435
+ async disableFetchIntercept() {
436
+ if (!this.fetchInterceptor) {
437
+ return { removedRules: 0 };
438
+ }
439
+ const result = await this.fetchInterceptor.disable();
440
+ this.fetchInterceptor = null;
441
+ return result;
442
+ }
443
+ async removeFetchInterceptRule(ruleId) {
444
+ if (!this.fetchInterceptor) {
445
+ return false;
446
+ }
447
+ const removed = await this.fetchInterceptor.removeRule(ruleId);
448
+ if (!this.fetchInterceptor.isEnabled()) {
449
+ this.fetchInterceptor = null;
450
+ }
451
+ return removed;
452
+ }
453
+ getFetchInterceptStatus() {
454
+ if (!this.fetchInterceptor) {
455
+ return { enabled: false, rules: [], totalHits: 0 };
456
+ }
457
+ return this.fetchInterceptor.listRules();
458
+ }
417
459
  formatRemoteObject(obj) {
418
460
  if (obj.value !== undefined) {
419
461
  return String(obj.value);
@@ -0,0 +1,46 @@
1
+ import type { CDPSession } from 'rebrowser-puppeteer-core';
2
+ export interface FetchInterceptRule {
3
+ id: string;
4
+ urlPattern: string;
5
+ urlPatternType: 'glob' | 'regex';
6
+ stage: 'Request' | 'Response';
7
+ responseCode: number;
8
+ responseHeaders: Array<{
9
+ name: string;
10
+ value: string;
11
+ }>;
12
+ responseBody: string;
13
+ hitCount: number;
14
+ createdAt: number;
15
+ }
16
+ export interface FetchInterceptRuleInput {
17
+ urlPattern: string;
18
+ urlPatternType?: 'glob' | 'regex';
19
+ stage?: 'Request' | 'Response';
20
+ responseCode?: number;
21
+ responseHeaders?: Record<string, string>;
22
+ responseBody?: string;
23
+ }
24
+ export declare class FetchInterceptor {
25
+ private cdpSession;
26
+ private rules;
27
+ private enabled;
28
+ private eventHandler;
29
+ private compiledPatterns;
30
+ constructor(cdpSession: CDPSession);
31
+ enable(ruleInputs: FetchInterceptRuleInput[]): Promise<FetchInterceptRule[]>;
32
+ disable(): Promise<{
33
+ removedRules: number;
34
+ }>;
35
+ removeRule(ruleId: string): Promise<boolean>;
36
+ listRules(): {
37
+ enabled: boolean;
38
+ rules: FetchInterceptRule[];
39
+ totalHits: number;
40
+ };
41
+ isEnabled(): boolean;
42
+ private createRule;
43
+ private compilePattern;
44
+ private applyRules;
45
+ private handleRequestPaused;
46
+ }