@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,150 +1,38 @@
1
+ import { tool } from '../../registry/tool-builder.js';
1
2
  export const streamingTools = [
2
- {
3
- name: 'ws_monitor_enable',
4
- description: 'Enable WebSocket frame capture via CDP Network events (webSocketFrameSent / webSocketFrameReceived).',
5
- inputSchema: {
6
- type: 'object',
7
- properties: {
8
- urlFilter: {
9
- type: 'string',
10
- description: 'Optional regex filter for WebSocket URL (only matching connections are tracked).',
11
- },
12
- maxFrames: {
13
- type: 'number',
14
- description: 'Maximum frames to keep in memory (default: 1000).',
15
- default: 1000,
16
- },
17
- },
18
- },
19
- annotations: {
20
- readOnlyHint: false,
21
- destructiveHint: false,
22
- idempotentHint: false,
23
- openWorldHint: false,
24
- },
25
- },
26
- {
27
- name: 'ws_monitor_disable',
28
- description: 'Disable WebSocket monitoring and return capture summary.',
29
- inputSchema: {
30
- type: 'object',
31
- properties: {},
32
- },
33
- annotations: {
34
- readOnlyHint: false,
35
- destructiveHint: true,
36
- idempotentHint: false,
37
- openWorldHint: false,
38
- },
39
- },
40
- {
41
- name: 'ws_get_frames',
42
- description: 'Get captured WebSocket frames with pagination and optional payload regex filter.',
43
- inputSchema: {
44
- type: 'object',
45
- properties: {
46
- direction: {
47
- type: 'string',
48
- enum: ['sent', 'received', 'all'],
49
- description: 'Frame direction filter (default: all).',
50
- default: 'all',
51
- },
52
- limit: {
53
- type: 'number',
54
- description: 'Maximum frames to return (default: 100, max: 5000).',
55
- default: 100,
56
- },
57
- offset: {
58
- type: 'number',
59
- description: 'Pagination offset (default: 0).',
60
- default: 0,
61
- },
62
- payloadFilter: {
63
- type: 'string',
64
- description: 'Optional regex filter applied to frame payload sample.',
65
- },
66
- },
67
- },
68
- annotations: {
69
- readOnlyHint: true,
70
- destructiveHint: false,
71
- idempotentHint: false,
72
- openWorldHint: false,
73
- },
74
- },
75
- {
76
- name: 'ws_get_connections',
77
- description: 'Get tracked WebSocket connections and frame counts.',
78
- inputSchema: {
79
- type: 'object',
80
- properties: {},
81
- },
82
- annotations: {
83
- readOnlyHint: true,
84
- destructiveHint: false,
85
- idempotentHint: false,
86
- openWorldHint: false,
87
- },
88
- },
89
- {
90
- name: 'sse_monitor_enable',
91
- description: 'Enable SSE monitoring by injecting an EventSource constructor interceptor in page context. Supports persistent mode to survive navigations.',
92
- inputSchema: {
93
- type: 'object',
94
- properties: {
95
- urlFilter: {
96
- type: 'string',
97
- description: 'Optional regex filter for EventSource URL.',
98
- },
99
- maxEvents: {
100
- type: 'number',
101
- description: 'Maximum SSE events to keep in memory (default: 2000).',
102
- default: 2000,
103
- },
104
- persistent: {
105
- type: 'boolean',
106
- description: 'When true, interceptor survives page navigations (uses evaluateOnNewDocument). Default: false.',
107
- },
108
- },
109
- },
110
- annotations: {
111
- readOnlyHint: false,
112
- destructiveHint: false,
113
- idempotentHint: false,
114
- openWorldHint: false,
115
- },
116
- },
117
- {
118
- name: 'sse_get_events',
119
- description: 'Get captured SSE events with filters and pagination.',
120
- inputSchema: {
121
- type: 'object',
122
- properties: {
123
- sourceUrl: {
124
- type: 'string',
125
- description: 'Filter by EventSource URL (exact match).',
126
- },
127
- eventType: {
128
- type: 'string',
129
- description: 'Filter by SSE event type (e.g. "message", custom event name).',
130
- },
131
- limit: {
132
- type: 'number',
133
- description: 'Maximum events to return (default: 100, max: 5000).',
134
- default: 100,
135
- },
136
- offset: {
137
- type: 'number',
138
- description: 'Pagination offset (default: 0).',
139
- default: 0,
140
- },
141
- },
142
- },
143
- annotations: {
144
- readOnlyHint: true,
145
- destructiveHint: false,
146
- idempotentHint: false,
147
- openWorldHint: false,
148
- },
149
- },
3
+ tool('ws_monitor_enable')
4
+ .desc('Enable WebSocket frame capture via CDP Network events')
5
+ .string('urlFilter', 'Regex filter for WebSocket URL')
6
+ .number('maxFrames', 'Maximum frames in memory', { default: 1000 })
7
+ .build(),
8
+ tool('ws_monitor_disable')
9
+ .desc('Disable WebSocket monitoring and return capture summary')
10
+ .destructive()
11
+ .build(),
12
+ tool('ws_get_frames')
13
+ .desc('Get captured WebSocket frames with pagination and payload filter')
14
+ .enum('direction', ['sent', 'received', 'all'], 'Frame direction filter', { default: 'all' })
15
+ .number('limit', 'Maximum frames to return', { default: 100 })
16
+ .number('offset', 'Pagination offset', { default: 0 })
17
+ .string('payloadFilter', 'Regex filter on frame payload')
18
+ .readOnly()
19
+ .build(),
20
+ tool('ws_get_connections')
21
+ .desc('Get tracked WebSocket connections and frame counts')
22
+ .readOnly()
23
+ .build(),
24
+ tool('sse_monitor_enable')
25
+ .desc('Enable SSE monitoring by injecting EventSource interceptor')
26
+ .string('urlFilter', 'Regex filter for EventSource URL')
27
+ .number('maxEvents', 'Maximum SSE events in memory', { default: 2000 })
28
+ .boolean('persistent', 'Survive page navigations via evaluateOnNewDocument')
29
+ .build(),
30
+ tool('sse_get_events')
31
+ .desc('Get captured SSE events with filters and pagination')
32
+ .string('sourceUrl', 'Filter by EventSource URL')
33
+ .string('eventType', 'Filter by SSE event type')
34
+ .number('limit', 'Maximum events', { default: 100 })
35
+ .number('offset', 'Pagination offset', { default: 0 })
36
+ .readOnly()
37
+ .build(),
150
38
  ];
@@ -1,184 +1,183 @@
1
1
  import { StreamingToolHandlersWs } from '../../domains/streaming/handlers.impl.streaming-ws.js';
2
2
  import { evaluateWithTimeout, evaluateOnNewDocumentWithTimeout, } from '../../../modules/collector/PageController.js';
3
- export class StreamingToolHandlersSse extends StreamingToolHandlersWs {
4
- async enableSseInterceptor(maxEvents, urlFilterRaw, options) {
5
- const page = await this.collector.getActivePage();
6
- const injectionFn = (config) => {
7
- const globalWindow = window;
8
- if (!globalWindow.__jshookSSEMonitor) {
9
- globalWindow.__jshookSSEMonitor = {
10
- enabled: true,
11
- patched: false,
12
- maxEvents: config.maxEvents,
13
- urlFilterRaw: config.urlFilterRaw,
14
- events: [],
15
- sources: {},
16
- };
17
- }
18
- const state = globalWindow.__jshookSSEMonitor;
19
- state.enabled = true;
20
- state.maxEvents = config.maxEvents;
21
- state.urlFilterRaw = config.urlFilterRaw;
22
- if (state.events.length > state.maxEvents) {
23
- state.events = state.events.slice(-state.maxEvents);
24
- }
25
- const shouldCapture = (sourceUrl) => {
26
- if (!state.urlFilterRaw) {
27
- return true;
28
- }
29
- try {
30
- return new RegExp(state.urlFilterRaw).test(sourceUrl);
31
- }
32
- catch {
33
- return true;
34
- }
35
- };
36
- const toDataString = (value) => {
37
- if (typeof value === 'string') {
38
- return value;
39
- }
40
- if (value === null || value === undefined) {
41
- return '';
42
- }
43
- if (typeof value === 'object') {
44
- try {
45
- return JSON.stringify(value);
46
- }
47
- catch {
48
- return '[unserializable]';
49
- }
50
- }
51
- return String(value);
3
+ function toDataString(value) {
4
+ if (typeof value === 'string') {
5
+ return value;
6
+ }
7
+ if (value === null || value === undefined) {
8
+ return '';
9
+ }
10
+ if (typeof value === 'object') {
11
+ try {
12
+ return JSON.stringify(value);
13
+ }
14
+ catch {
15
+ return '[unserializable]';
16
+ }
17
+ }
18
+ return String(value);
19
+ }
20
+ function sseInjectionFn(config) {
21
+ const globalWindow = window;
22
+ if (!globalWindow.__jshookSSEMonitor) {
23
+ globalWindow.__jshookSSEMonitor = {
24
+ enabled: true,
25
+ patched: false,
26
+ maxEvents: config.maxEvents,
27
+ urlFilterRaw: config.urlFilterRaw,
28
+ events: [],
29
+ sources: {},
30
+ };
31
+ }
32
+ const state = globalWindow.__jshookSSEMonitor;
33
+ state.enabled = true;
34
+ state.maxEvents = config.maxEvents;
35
+ state.urlFilterRaw = config.urlFilterRaw;
36
+ if (state.events.length > state.maxEvents) {
37
+ state.events = state.events.slice(-state.maxEvents);
38
+ }
39
+ const shouldCapture = (sourceUrl) => {
40
+ if (!state.urlFilterRaw) {
41
+ return true;
42
+ }
43
+ try {
44
+ return new RegExp(state.urlFilterRaw).test(sourceUrl);
45
+ }
46
+ catch {
47
+ return true;
48
+ }
49
+ };
50
+ const pushEvent = (sourceUrl, eventType, rawData, lastEventId) => {
51
+ if (!state.enabled || !shouldCapture(sourceUrl)) {
52
+ return;
53
+ }
54
+ const dataString = toDataString(rawData);
55
+ const preview = dataString.length > 200 ? `${dataString.slice(0, 200)}…` : dataString;
56
+ const record = {
57
+ sourceUrl,
58
+ eventType,
59
+ dataPreview: preview,
60
+ dataLength: dataString.length,
61
+ lastEventId,
62
+ timestamp: Date.now(),
63
+ };
64
+ state.events.push(record);
65
+ while (state.events.length > state.maxEvents) {
66
+ state.events.shift();
67
+ }
68
+ const source = state.sources[sourceUrl] ??
69
+ {
70
+ url: sourceUrl,
71
+ status: 'connecting',
72
+ eventCount: 0,
52
73
  };
53
- const pushEvent = (sourceUrl, eventType, rawData, lastEventId) => {
54
- if (!state.enabled || !shouldCapture(sourceUrl)) {
55
- return;
56
- }
57
- const dataString = toDataString(rawData);
58
- const preview = dataString.length > 200 ? `${dataString.slice(0, 200)}…` : dataString;
59
- const record = {
60
- sourceUrl,
61
- eventType,
62
- dataPreview: preview,
63
- dataLength: dataString.length,
64
- lastEventId,
65
- timestamp: Date.now(),
66
- };
67
- state.events.push(record);
68
- while (state.events.length > state.maxEvents) {
69
- state.events.shift();
70
- }
74
+ source.eventCount += 1;
75
+ source.lastEventTimestamp = record.timestamp;
76
+ state.sources[sourceUrl] = source;
77
+ };
78
+ if (typeof globalWindow.EventSource === 'undefined') {
79
+ return {
80
+ success: false,
81
+ error: 'EventSource is not available in current page context',
82
+ };
83
+ }
84
+ if (!state.patched) {
85
+ const OriginalEventSource = globalWindow.EventSource;
86
+ const WrappedEventSource = function (url, eventSourceInitDict) {
87
+ const sourceUrl = String(url);
88
+ const es = new OriginalEventSource(url, eventSourceInitDict);
89
+ if (shouldCapture(sourceUrl)) {
71
90
  const source = state.sources[sourceUrl] ??
72
91
  {
73
92
  url: sourceUrl,
74
93
  status: 'connecting',
75
94
  eventCount: 0,
76
95
  };
77
- source.eventCount += 1;
78
- source.lastEventTimestamp = record.timestamp;
79
96
  state.sources[sourceUrl] = source;
80
- };
81
- if (typeof globalWindow.EventSource === 'undefined') {
82
- return {
83
- success: false,
84
- error: 'EventSource is not available in current page context',
85
- };
86
97
  }
87
- if (!state.patched) {
88
- const OriginalEventSource = globalWindow.EventSource;
89
- const WrappedEventSource = function (url, eventSourceInitDict) {
90
- const sourceUrl = String(url);
91
- const es = new OriginalEventSource(url, eventSourceInitDict);
92
- if (shouldCapture(sourceUrl)) {
93
- const source = state.sources[sourceUrl] ??
94
- {
95
- url: sourceUrl,
96
- status: 'connecting',
97
- eventCount: 0,
98
- };
99
- state.sources[sourceUrl] = source;
100
- }
101
- es.addEventListener('open', () => {
102
- const source = state.sources[sourceUrl];
103
- if (source) {
104
- source.status = 'open';
105
- }
106
- pushEvent(sourceUrl, 'open', '', null);
107
- });
108
- es.addEventListener('error', () => {
109
- const source = state.sources[sourceUrl];
110
- if (source) {
111
- source.status = 'error';
112
- }
113
- pushEvent(sourceUrl, 'error', '', null);
114
- });
115
- es.addEventListener('message', (event) => {
116
- const lastEventId = typeof event.lastEventId === 'string' && event.lastEventId.length > 0
117
- ? event.lastEventId
98
+ es.addEventListener('open', () => {
99
+ const source = state.sources[sourceUrl];
100
+ if (source) {
101
+ source.status = 'open';
102
+ }
103
+ pushEvent(sourceUrl, 'open', '', null);
104
+ });
105
+ es.addEventListener('error', () => {
106
+ const source = state.sources[sourceUrl];
107
+ if (source) {
108
+ source.status = 'error';
109
+ }
110
+ pushEvent(sourceUrl, 'error', '', null);
111
+ });
112
+ es.addEventListener('message', (event) => {
113
+ const lastEventId = typeof event.lastEventId === 'string' && event.lastEventId.length > 0
114
+ ? event.lastEventId
115
+ : null;
116
+ pushEvent(sourceUrl, event.type || 'message', event.data, lastEventId);
117
+ });
118
+ const originalAddEventListener = es.addEventListener.bind(es);
119
+ const callOriginalAddEventListener = (type, listener, listenerOpts) => {
120
+ originalAddEventListener(type, listener, listenerOpts);
121
+ };
122
+ const wrappedAddEventListener = (type, listener, listenerOpts) => {
123
+ if (type !== 'message' && type !== 'open' && type !== 'error' && listener) {
124
+ const wrapped = (evt) => {
125
+ const messageEvent = evt;
126
+ const lastEventId = typeof messageEvent.lastEventId === 'string' && messageEvent.lastEventId.length > 0
127
+ ? messageEvent.lastEventId
118
128
  : null;
119
- pushEvent(sourceUrl, event.type || 'message', event.data, lastEventId);
120
- });
121
- const originalAddEventListener = es.addEventListener.bind(es);
122
- const callOriginalAddEventListener = (type, listener, options) => {
123
- originalAddEventListener(type, listener, options);
124
- };
125
- const wrappedAddEventListener = (type, listener, options) => {
126
- if (type !== 'message' && type !== 'open' && type !== 'error' && listener) {
127
- const wrapped = (evt) => {
128
- const messageEvent = evt;
129
- const lastEventId = typeof messageEvent.lastEventId === 'string' &&
130
- messageEvent.lastEventId.length > 0
131
- ? messageEvent.lastEventId
132
- : null;
133
- pushEvent(sourceUrl, type, messageEvent.data, lastEventId);
134
- if (typeof listener === 'function') {
135
- listener.call(es, evt);
136
- }
137
- else {
138
- listener.handleEvent(evt);
139
- }
140
- };
141
- callOriginalAddEventListener(type, wrapped, options);
142
- return;
129
+ pushEvent(sourceUrl, type, messageEvent.data, lastEventId);
130
+ if (typeof listener === 'function') {
131
+ listener.call(es, evt);
132
+ }
133
+ else {
134
+ listener.handleEvent(evt);
143
135
  }
144
- callOriginalAddEventListener(type, listener, options);
145
136
  };
146
- Object.defineProperty(es, 'addEventListener', {
147
- value: wrappedAddEventListener,
148
- configurable: true,
149
- writable: true,
150
- });
151
- return es;
152
- };
153
- WrappedEventSource.prototype = OriginalEventSource.prototype;
154
- try {
155
- Object.defineProperty(WrappedEventSource, 'CONNECTING', {
156
- value: OriginalEventSource.CONNECTING,
157
- });
158
- Object.defineProperty(WrappedEventSource, 'OPEN', {
159
- value: OriginalEventSource.OPEN,
160
- });
161
- Object.defineProperty(WrappedEventSource, 'CLOSED', {
162
- value: OriginalEventSource.CLOSED,
163
- });
164
- }
165
- catch {
137
+ callOriginalAddEventListener(type, wrapped, listenerOpts);
138
+ return;
166
139
  }
167
- globalWindow.EventSource = WrappedEventSource;
168
- state.originalEventSource = OriginalEventSource;
169
- state.patched = true;
170
- }
171
- return {
172
- success: true,
173
- message: 'SSE monitor enabled',
174
- patched: state.patched,
175
- urlFilter: state.urlFilterRaw,
176
- maxEvents: state.maxEvents,
177
- existingEvents: state.events.length,
140
+ callOriginalAddEventListener(type, listener, listenerOpts);
178
141
  };
142
+ Object.defineProperty(es, 'addEventListener', {
143
+ value: wrappedAddEventListener,
144
+ configurable: true,
145
+ writable: true,
146
+ });
147
+ return es;
179
148
  };
149
+ WrappedEventSource.prototype = OriginalEventSource.prototype;
150
+ try {
151
+ Object.defineProperty(WrappedEventSource, 'CONNECTING', {
152
+ value: OriginalEventSource.CONNECTING,
153
+ });
154
+ Object.defineProperty(WrappedEventSource, 'OPEN', {
155
+ value: OriginalEventSource.OPEN,
156
+ });
157
+ Object.defineProperty(WrappedEventSource, 'CLOSED', {
158
+ value: OriginalEventSource.CLOSED,
159
+ });
160
+ }
161
+ catch {
162
+ }
163
+ globalWindow.EventSource = WrappedEventSource;
164
+ state.originalEventSource = OriginalEventSource;
165
+ state.patched = true;
166
+ }
167
+ return {
168
+ success: true,
169
+ message: 'SSE monitor enabled',
170
+ patched: state.patched,
171
+ urlFilter: state.urlFilterRaw,
172
+ maxEvents: state.maxEvents,
173
+ existingEvents: state.events.length,
174
+ };
175
+ }
176
+ export class StreamingToolHandlersSse extends StreamingToolHandlersWs {
177
+ async enableSseInterceptor(maxEvents, urlFilterRaw, options) {
178
+ const page = await this.collector.getActivePage();
180
179
  if (options?.persistent) {
181
- await evaluateOnNewDocumentWithTimeout(page, injectionFn, { maxEvents, urlFilterRaw });
180
+ await evaluateOnNewDocumentWithTimeout(page, sseInjectionFn, { maxEvents, urlFilterRaw });
182
181
  return {
183
182
  success: true,
184
183
  message: 'SSE monitor enabled (persistent — survives navigations)',
@@ -188,7 +187,7 @@ export class StreamingToolHandlersSse extends StreamingToolHandlersWs {
188
187
  existingEvents: 0,
189
188
  };
190
189
  }
191
- const result = await evaluateWithTimeout(page, injectionFn, { maxEvents, urlFilterRaw });
190
+ const result = await evaluateWithTimeout(page, sseInjectionFn, { maxEvents, urlFilterRaw });
192
191
  return result;
193
192
  }
194
193
  async handleSseMonitorEnable(args) {
@@ -310,7 +310,7 @@ export class StreamingToolHandlersWs extends StreamingToolHandlersBase {
310
310
  }
311
311
  async handleWsGetConnections(_args) {
312
312
  const connections = Array.from(this.wsConnections.values())
313
- .sort((a, b) => a.createdTimestamp - b.createdTimestamp)
313
+ .toSorted((a, b) => a.createdTimestamp - b.createdTimestamp)
314
314
  .map((conn) => ({
315
315
  requestId: conn.requestId,
316
316
  url: conn.url,
@@ -0,0 +1,60 @@
1
+ export type SummaryDetail = 'compact' | 'balanced' | 'full';
2
+ export interface TraceEvent {
3
+ timestamp: number;
4
+ category: string;
5
+ eventType: string;
6
+ data?: unknown;
7
+ scriptId?: string;
8
+ lineNumber?: number;
9
+ }
10
+ export interface MemoryDelta {
11
+ timestamp: number;
12
+ address: string;
13
+ oldValue: string;
14
+ newValue: string;
15
+ size: number;
16
+ valueType: string;
17
+ }
18
+ export interface CategorySummary {
19
+ category: string;
20
+ count: number;
21
+ firstTimestamp: number;
22
+ lastTimestamp: number;
23
+ topEventTypes: Array<{
24
+ type: string;
25
+ count: number;
26
+ }>;
27
+ }
28
+ export interface KeyMoment {
29
+ timestamp: number;
30
+ type: 'breakpoint' | 'network_complete' | 'memory_anomaly' | 'exception' | 'navigation';
31
+ description: string;
32
+ data?: unknown;
33
+ }
34
+ export interface TraceSummary {
35
+ detail: SummaryDetail;
36
+ totalEvents: number;
37
+ timeRange: {
38
+ start: number;
39
+ end: number;
40
+ durationMs: number;
41
+ };
42
+ categories: CategorySummary[];
43
+ keyMoments?: KeyMoment[];
44
+ }
45
+ export interface MemorySummary {
46
+ totalDeltas: number;
47
+ uniqueAddresses: number;
48
+ anomalies: Array<{
49
+ address: string;
50
+ writeCount: number;
51
+ description: string;
52
+ }>;
53
+ topAddresses: Array<{
54
+ address: string;
55
+ writeCount: number;
56
+ }>;
57
+ }
58
+ export declare function summarizeEvents(events: TraceEvent[], detail?: SummaryDetail): TraceSummary;
59
+ export declare function extractKeyMoments(events: TraceEvent[]): KeyMoment[];
60
+ export declare function summarizeMemoryDeltas(deltas: MemoryDelta[]): MemorySummary;