@jshookmcp/jshook 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/README.md +14 -5
  2. package/README.zh.md +18 -3
  3. package/dist/packages/extension-sdk/src/bridges/shared.js +2 -2
  4. package/dist/packages/extension-sdk/src/plugin.d.ts +5 -0
  5. package/dist/packages/extension-sdk/src/plugin.js +119 -33
  6. package/dist/packages/extension-sdk/src/workflow.d.ts +156 -0
  7. package/dist/packages/extension-sdk/src/workflow.js +236 -0
  8. package/dist/src/config/search-defaults.js +161 -0
  9. package/dist/src/constants.d.ts +3 -0
  10. package/dist/src/constants.js +4 -1
  11. package/dist/src/index.d.ts +1 -1
  12. package/dist/src/index.js +13 -17
  13. package/dist/src/modules/analyzer/CodeAnalyzer.d.ts +1 -3
  14. package/dist/src/modules/analyzer/CodeAnalyzer.js +16 -28
  15. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.d.ts +1 -2
  16. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.js +1 -45
  17. package/dist/src/modules/analyzer/IntelligentAnalyzer.d.ts +1 -37
  18. package/dist/src/modules/analyzer/IntelligentAnalyzer.js +9 -142
  19. package/dist/src/modules/analyzer/PatternDetector.js +3 -3
  20. package/dist/src/modules/analyzer/PatternDetectorAuthPatterns.js +1 -1
  21. package/dist/src/modules/browser/BrowserDiscovery.js +2 -2
  22. package/dist/src/modules/browser/BrowserModeManager.js +11 -10
  23. package/dist/src/modules/browser/TabRegistry.js +2 -2
  24. package/dist/src/modules/browser/UnifiedBrowserManager.d.ts +1 -0
  25. package/dist/src/modules/browser/UnifiedBrowserManager.js +18 -3
  26. package/dist/src/modules/captcha/AICaptchaDetector.d.ts +1 -10
  27. package/dist/src/modules/captcha/AICaptchaDetector.js +7 -201
  28. package/dist/src/modules/collector/CodeCollector.js +4 -5
  29. package/dist/src/modules/collector/DOMInspector.js +48 -58
  30. package/dist/src/modules/collector/PageController.d.ts +17 -4
  31. package/dist/src/modules/collector/PageController.js +2 -5
  32. package/dist/src/modules/collector/PageScriptCollectors.js +3 -3
  33. package/dist/src/modules/crypto/CryptoDetector.d.ts +1 -4
  34. package/dist/src/modules/crypto/CryptoDetector.js +2 -42
  35. package/dist/src/modules/crypto/CryptoRules.js +1 -1
  36. package/dist/src/modules/debugger/BlackboxManager.js +1 -1
  37. package/dist/src/modules/debugger/DebuggerManager.impl.core.scope.js +1 -1
  38. package/dist/src/modules/debugger/ScriptManager.impl.extract-function-tree.js +4 -2
  39. package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
  40. package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
  41. package/dist/src/modules/deobfuscator/Deobfuscator.js +4 -39
  42. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.d.ts +0 -3
  43. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.js +2 -8
  44. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.d.ts +1 -2
  45. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +3 -55
  46. package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
  47. package/dist/src/modules/deobfuscator/VMDeobfuscator.d.ts +2 -10
  48. package/dist/src/modules/deobfuscator/VMDeobfuscator.js +3 -128
  49. package/dist/src/modules/deobfuscator/webcrack.js +15 -2
  50. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.d.ts +5 -8
  51. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.js +10 -102
  52. package/dist/src/modules/emulator/EnvironmentEmulator.d.ts +1 -5
  53. package/dist/src/modules/emulator/EnvironmentEmulator.js +7 -91
  54. package/dist/src/modules/emulator/EnvironmentEmulatorFetch.js +58 -61
  55. package/dist/src/modules/emulator/templates/chrome-env.d.ts +17 -7
  56. package/dist/src/modules/emulator/templates/chrome-env.js +14 -7
  57. package/dist/src/modules/external/ExternalToolRunner.js +25 -22
  58. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.compose.js +5 -5
  59. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.network.js +311 -311
  60. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.runtime.js +410 -410
  61. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.storage.js +122 -122
  62. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.d.ts +13 -0
  63. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.js +42 -0
  64. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.dynamic.js +194 -194
  65. package/dist/src/modules/monitor/FetchInterceptor.d.ts +46 -0
  66. package/dist/src/modules/monitor/FetchInterceptor.js +191 -0
  67. package/dist/src/modules/monitor/PerformanceMonitor.js +8 -7
  68. package/dist/src/modules/monitor/PlaywrightNetworkMonitor.js +62 -62
  69. package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
  70. package/dist/src/modules/process/LinuxProcessManager.js +2 -0
  71. package/dist/src/modules/process/MacProcessManager.js +25 -25
  72. package/dist/src/modules/process/MemoryManager.d.ts +1 -1
  73. package/dist/src/modules/process/MemoryManager.js +2 -2
  74. package/dist/src/modules/process/memory/AuditTrail.js +1 -1
  75. package/dist/src/modules/process/memory/availability.js +49 -49
  76. package/dist/src/modules/process/memory/injector.js +185 -185
  77. package/dist/src/modules/process/memory/reader.js +85 -53
  78. package/dist/src/modules/process/memory/regions.dump.js +51 -51
  79. package/dist/src/modules/process/memory/regions.enumerate.js +108 -108
  80. package/dist/src/modules/process/memory/regions.modules.js +80 -80
  81. package/dist/src/modules/process/memory/regions.protection.js +148 -115
  82. package/dist/src/modules/process/memory/scanner.d.ts +5 -1
  83. package/dist/src/modules/process/memory/scanner.darwin.js +98 -41
  84. package/dist/src/modules/process/memory/scanner.js +88 -4
  85. package/dist/src/modules/process/memory/scanner.windows.js +124 -124
  86. package/dist/src/modules/process/memory/writer.js +98 -58
  87. package/dist/src/modules/security/ExecutionSandbox.js +51 -52
  88. package/dist/src/modules/stealth/FingerprintManager.js +1 -1
  89. package/dist/src/modules/stealth/StealthScripts.d.ts +1 -0
  90. package/dist/src/modules/stealth/StealthScripts.js +18 -13
  91. package/dist/src/modules/stealth/StealthVerifier.js +1 -3
  92. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.d.ts +14 -0
  93. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.js +181 -2
  94. package/dist/src/modules/trace/TraceDB.js +75 -69
  95. package/dist/src/modules/trace/TraceRecorder.js +1 -5
  96. package/dist/src/native/AntiCheatDetector.js +67 -16
  97. package/dist/src/native/CodeInjector.js +3 -3
  98. package/dist/src/native/HardwareBreakpoint.js +24 -15
  99. package/dist/src/native/HeapAnalyzer.js +2 -2
  100. package/dist/src/native/MemoryController.js +1 -1
  101. package/dist/src/native/MemoryScanSession.js +2 -2
  102. package/dist/src/native/MemoryScanner.js +4 -8
  103. package/dist/src/native/NativeMemoryManager.impl.js +2 -2
  104. package/dist/src/native/PEAnalyzer.js +14 -15
  105. package/dist/src/native/PointerChainEngine.js +2 -4
  106. package/dist/src/native/ScriptLoader.js +4 -9
  107. package/dist/src/native/Speedhack.js +1 -1
  108. package/dist/src/native/StructureAnalyzer.js +52 -33
  109. package/dist/src/native/Win32API.d.ts +1 -0
  110. package/dist/src/native/Win32API.js +13 -0
  111. package/dist/src/native/Win32Debug.js +19 -19
  112. package/dist/src/native/platform/darwin/DarwinAPI.d.ts +2 -0
  113. package/dist/src/native/platform/darwin/DarwinAPI.js +8 -0
  114. package/dist/src/native/platform/darwin/DarwinMemoryProvider.js +6 -1
  115. package/dist/src/server/MCPServer.context.d.ts +2 -1
  116. package/dist/src/server/MCPServer.d.ts +2 -1
  117. package/dist/src/server/MCPServer.domain.d.ts +1 -1
  118. package/dist/src/server/MCPServer.domain.js +81 -16
  119. package/dist/src/server/MCPServer.js +41 -14
  120. package/dist/src/server/MCPServer.resources.d.ts +2 -0
  121. package/dist/src/server/MCPServer.resources.js +91 -0
  122. package/dist/src/server/MCPServer.search.handlers.call.js +2 -1
  123. package/dist/src/server/MCPServer.search.helpers.js +1 -1
  124. package/dist/src/server/MCPServer.transport.js +12 -0
  125. package/dist/src/server/ToolCallContextGuard.js +8 -0
  126. package/dist/src/server/ToolRouter.d.ts +25 -9
  127. package/dist/src/server/ToolRouter.intent.d.ts +26 -0
  128. package/dist/src/server/ToolRouter.intent.js +77 -0
  129. package/dist/src/server/ToolRouter.js +103 -284
  130. package/dist/src/server/ToolRouter.policy.d.ts +22 -0
  131. package/dist/src/server/ToolRouter.policy.js +163 -0
  132. package/dist/src/server/ToolRouter.probe.d.ts +17 -0
  133. package/dist/src/server/ToolRouter.probe.js +103 -0
  134. package/dist/src/server/ToolRouter.renderer.d.ts +9 -0
  135. package/dist/src/server/ToolRouter.renderer.js +52 -0
  136. package/dist/src/server/activation/ActivationController.js +15 -12
  137. package/dist/src/server/activation/CompoundConditionEngine.js +1 -1
  138. package/dist/src/server/activation/PredictiveBooster.js +1 -3
  139. package/dist/src/server/domains/analysis/definitions.js +155 -655
  140. package/dist/src/server/domains/analysis/handlers.impl.js +26 -20
  141. package/dist/src/server/domains/analysis/handlers.web-tools.js +2 -1
  142. package/dist/src/server/domains/analysis/manifest.js +6 -4
  143. package/dist/src/server/domains/antidebug/definitions.js +25 -111
  144. package/dist/src/server/domains/browser/definitions.tools.advanced.js +59 -88
  145. package/dist/src/server/domains/browser/definitions.tools.behavior.js +120 -227
  146. package/dist/src/server/domains/browser/definitions.tools.page-core.js +210 -439
  147. package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
  148. package/dist/src/server/domains/browser/definitions.tools.runtime.js +98 -211
  149. package/dist/src/server/domains/browser/definitions.tools.security.js +194 -339
  150. package/dist/src/server/domains/browser/handlers/camoufox-browser.js +3 -2
  151. package/dist/src/server/domains/browser/handlers/captcha-solver.js +3 -3
  152. package/dist/src/server/domains/browser/handlers/dom-query.js +2 -1
  153. package/dist/src/server/domains/browser/handlers/framework-state.js +27 -9
  154. package/dist/src/server/domains/browser/handlers/indexeddb-dump.js +21 -20
  155. package/dist/src/server/domains/browser/handlers/script-management.js +1 -1
  156. package/dist/src/server/domains/browser/handlers.impl.d.ts +1 -2
  157. package/dist/src/server/domains/browser/handlers.impl.js +2 -3
  158. package/dist/src/server/domains/browser/manifest.js +37 -13
  159. package/dist/src/server/domains/coordination/definitions.js +50 -216
  160. package/dist/src/server/domains/coordination/index.d.ts +2 -1
  161. package/dist/src/server/domains/coordination/index.js +1 -0
  162. package/dist/src/server/domains/debugger/definitions.tools.advanced.js +72 -189
  163. package/dist/src/server/domains/debugger/definitions.tools.core.js +114 -288
  164. package/dist/src/server/domains/debugger/manifest.js +9 -2
  165. package/dist/src/server/domains/encoding/definitions.js +43 -153
  166. package/dist/src/server/domains/encoding/handlers.base.js +2 -2
  167. package/dist/src/server/domains/evidence/definitions.d.ts +2 -0
  168. package/dist/src/server/domains/evidence/definitions.js +42 -0
  169. package/dist/src/server/domains/evidence/handlers.d.ts +582 -0
  170. package/dist/src/server/domains/evidence/handlers.js +60 -0
  171. package/dist/src/server/domains/evidence/index.d.ts +2 -0
  172. package/dist/src/server/domains/evidence/index.js +2 -0
  173. package/dist/src/server/domains/evidence/manifest.d.ts +63 -0
  174. package/dist/src/server/domains/evidence/manifest.js +78 -0
  175. package/dist/src/server/domains/graphql/definitions.js +53 -141
  176. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.replay.js +92 -114
  177. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.shared.js +77 -77
  178. package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
  179. package/dist/src/server/domains/hooks/ai-handlers.js +1 -67
  180. package/dist/src/server/domains/hooks/definitions.js +69 -335
  181. package/dist/src/server/domains/hooks/manifest.d.ts +1 -1
  182. package/dist/src/server/domains/hooks/manifest.js +1 -2
  183. package/dist/src/server/domains/instrumentation/definitions.d.ts +2 -0
  184. package/dist/src/server/domains/instrumentation/definitions.js +99 -0
  185. package/dist/src/server/domains/instrumentation/handlers.d.ts +78 -0
  186. package/dist/src/server/domains/instrumentation/handlers.js +206 -0
  187. package/dist/src/server/domains/instrumentation/index.d.ts +2 -0
  188. package/dist/src/server/domains/instrumentation/index.js +2 -0
  189. package/dist/src/server/domains/instrumentation/manifest.d.ts +63 -0
  190. package/dist/src/server/domains/instrumentation/manifest.js +114 -0
  191. package/dist/src/server/domains/macro/definitions.js +16 -43
  192. package/dist/src/server/domains/maintenance/definitions.js +60 -219
  193. package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
  194. package/dist/src/server/domains/memory/definitions.js +387 -559
  195. package/dist/src/server/domains/memory/handlers/hooks.d.ts +55 -0
  196. package/dist/src/server/domains/memory/handlers/hooks.js +115 -0
  197. package/dist/src/server/domains/memory/handlers/integrity.d.ts +77 -0
  198. package/dist/src/server/domains/memory/handlers/integrity.js +180 -0
  199. package/dist/src/server/domains/memory/handlers/pointer-chain.d.ts +29 -0
  200. package/dist/src/server/domains/memory/handlers/pointer-chain.js +82 -0
  201. package/dist/src/server/domains/memory/handlers/readwrite.d.ts +41 -0
  202. package/dist/src/server/domains/memory/handlers/readwrite.js +78 -0
  203. package/dist/src/server/domains/memory/handlers/scan.d.ts +35 -0
  204. package/dist/src/server/domains/memory/handlers/scan.js +97 -0
  205. package/dist/src/server/domains/memory/handlers/session.d.ts +23 -0
  206. package/dist/src/server/domains/memory/handlers/session.js +49 -0
  207. package/dist/src/server/domains/memory/handlers/structure.d.ts +29 -0
  208. package/dist/src/server/domains/memory/handlers/structure.js +74 -0
  209. package/dist/src/server/domains/memory/handlers.impl.d.ts +49 -54
  210. package/dist/src/server/domains/memory/handlers.impl.js +63 -494
  211. package/dist/src/server/domains/memory/manifest.js +236 -64
  212. package/dist/src/server/domains/native-bridge/definitions.js +54 -192
  213. package/dist/src/server/domains/native-bridge/index.d.ts +1 -0
  214. package/dist/src/server/domains/native-bridge/index.js +2 -1
  215. package/dist/src/server/domains/network/auth-extractor.js +1 -1
  216. package/dist/src/server/domains/network/definitions.js +175 -578
  217. package/dist/src/server/domains/network/handlers.base.core.d.ts +64 -0
  218. package/dist/src/server/domains/network/handlers.base.core.js +623 -0
  219. package/dist/src/server/domains/network/handlers.base.d.ts +2 -124
  220. package/dist/src/server/domains/network/handlers.base.js +3 -878
  221. package/dist/src/server/domains/network/handlers.base.performance.d.ts +63 -0
  222. package/dist/src/server/domains/network/handlers.base.performance.js +193 -0
  223. package/dist/src/server/domains/network/handlers.base.types.d.ts +42 -0
  224. package/dist/src/server/domains/network/handlers.base.types.js +89 -0
  225. package/dist/src/server/domains/network/handlers.impl.core.runtime.d.ts +1 -1
  226. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.d.ts +21 -0
  227. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.js +186 -0
  228. package/dist/src/server/domains/network/handlers.impl.core.runtime.js +1 -1
  229. package/dist/src/server/domains/network/manifest.js +15 -0
  230. package/dist/src/server/domains/network/replay.js +1 -4
  231. package/dist/src/server/domains/platform/definitions.js +121 -112
  232. package/dist/src/server/domains/platform/handlers/bridge-handlers.d.ts +4 -0
  233. package/dist/src/server/domains/platform/handlers/bridge-handlers.js +193 -4
  234. package/dist/src/server/domains/platform/handlers/electron-asar-helpers.js +26 -6
  235. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.d.ts +3 -0
  236. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.js +170 -0
  237. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.d.ts +3 -0
  238. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.js +193 -0
  239. package/dist/src/server/domains/platform/handlers/electron-handlers.d.ts +6 -0
  240. package/dist/src/server/domains/platform/handlers/electron-handlers.js +95 -2
  241. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.d.ts +2 -0
  242. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.js +370 -0
  243. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.d.ts +2 -0
  244. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.js +78 -0
  245. package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +3 -3
  246. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.d.ts +2 -0
  247. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.js +207 -0
  248. package/dist/src/server/domains/platform/handlers.d.ts +48 -0
  249. package/dist/src/server/domains/platform/handlers.js +29 -0
  250. package/dist/src/server/domains/platform/manifest.js +38 -0
  251. package/dist/src/server/domains/process/definitions.js +163 -647
  252. package/dist/src/server/domains/process/handlers.base.d.ts +3 -95
  253. package/dist/src/server/domains/process/handlers.base.js +7 -462
  254. package/dist/src/server/domains/process/handlers.base.process.d.ts +61 -0
  255. package/dist/src/server/domains/process/handlers.base.process.js +417 -0
  256. package/dist/src/server/domains/process/handlers.base.types.d.ts +57 -0
  257. package/dist/src/server/domains/process/handlers.base.types.js +50 -0
  258. package/dist/src/server/domains/process/handlers.impl.core.runtime.inject.js +18 -16
  259. package/dist/src/server/domains/process/manifest.js +6 -1
  260. package/dist/src/server/domains/sandbox/definitions.js +11 -33
  261. package/dist/src/server/domains/sandbox/handlers.js +8 -3
  262. package/dist/src/server/domains/shared/ResponseBuilder.d.ts +209 -0
  263. package/dist/src/server/domains/shared/ResponseBuilder.js +48 -0
  264. package/dist/src/server/domains/shared/modules.d.ts +0 -2
  265. package/dist/src/server/domains/shared/modules.js +0 -1
  266. package/dist/src/server/domains/sourcemap/definitions.js +27 -111
  267. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-common.js +7 -2
  268. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-main.js +1 -1
  269. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-parse-base.js +1 -1
  270. package/dist/src/server/domains/sourcemap/manifest.d.ts +1 -1
  271. package/dist/src/server/domains/sourcemap/manifest.js +1 -1
  272. package/dist/src/server/domains/streaming/definitions.js +36 -148
  273. package/dist/src/server/domains/streaming/handlers.impl.streaming-sse.js +163 -164
  274. package/dist/src/server/domains/streaming/handlers.impl.streaming-ws.js +1 -1
  275. package/dist/src/server/domains/trace/TraceSummarizer.js +8 -5
  276. package/dist/src/server/domains/trace/definitions.tools.js +51 -206
  277. package/dist/src/server/domains/trace/handlers.js +10 -12
  278. package/dist/src/server/domains/trace/index.d.ts +2 -1
  279. package/dist/src/server/domains/trace/index.js +2 -1
  280. package/dist/src/server/domains/trace/manifest.js +15 -3
  281. package/dist/src/server/domains/transform/definitions.js +50 -210
  282. package/dist/src/server/domains/transform/handlers.impl.transform-base.js +108 -108
  283. package/dist/src/server/domains/transform/handlers.impl.transform-crypto.js +18 -19
  284. package/dist/src/server/domains/transform/manifest.d.ts +1 -1
  285. package/dist/src/server/domains/transform/manifest.js +1 -1
  286. package/dist/src/server/domains/wasm/definitions.js +55 -232
  287. package/dist/src/server/domains/wasm/handlers.js +1 -1
  288. package/dist/src/server/domains/workflow/definitions.js +144 -414
  289. package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +1 -1
  290. package/dist/src/server/domains/workflow/handlers.impl.workflow-api.js +51 -51
  291. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.d.ts +2 -0
  292. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.js +126 -87
  293. package/dist/src/server/domains/workflow/handlers.impl.workflow-batch.js +5 -5
  294. package/dist/src/server/evidence/ReverseEvidenceGraph.d.ts +20 -0
  295. package/dist/src/server/evidence/ReverseEvidenceGraph.js +208 -0
  296. package/dist/src/server/evidence/index.d.ts +2 -0
  297. package/dist/src/server/evidence/index.js +1 -0
  298. package/dist/src/server/evidence/types.d.ts +22 -0
  299. package/dist/src/server/evidence/types.js +1 -0
  300. package/dist/src/server/extensions/ExtensionManager.d.ts +1 -0
  301. package/dist/src/server/extensions/ExtensionManager.discovery.js +72 -9
  302. package/dist/src/server/extensions/ExtensionManager.integrity.js +1 -1
  303. package/dist/src/server/extensions/ExtensionManager.js +193 -40
  304. package/dist/src/server/extensions/ExtensionManager.roots.d.ts +1 -1
  305. package/dist/src/server/extensions/ExtensionManager.roots.js +4 -4
  306. package/dist/src/server/extensions/plugin-config.js +1 -1
  307. package/dist/src/server/extensions/plugin-env.d.ts +1 -1
  308. package/dist/src/server/extensions/plugin-env.js +10 -4
  309. package/dist/src/server/extensions/types.d.ts +17 -0
  310. package/dist/src/server/extensions/types.js +1 -1
  311. package/dist/src/server/instrumentation/EvidenceGraphBridge.d.ts +13 -0
  312. package/dist/src/server/instrumentation/EvidenceGraphBridge.js +150 -0
  313. package/dist/src/server/instrumentation/InstrumentationSession.d.ts +60 -0
  314. package/dist/src/server/instrumentation/InstrumentationSession.js +269 -0
  315. package/dist/src/server/instrumentation/index.d.ts +2 -0
  316. package/dist/src/server/instrumentation/index.js +2 -0
  317. package/dist/src/server/instrumentation/types.d.ts +62 -0
  318. package/dist/src/server/instrumentation/types.js +7 -0
  319. package/dist/src/server/macros/MacroConfigLoader.d.ts +6 -5
  320. package/dist/src/server/macros/MacroConfigLoader.js +61 -59
  321. package/dist/src/server/macros/MacroRunner.js +6 -2
  322. package/dist/src/server/macros/builtins/index.d.ts +2 -3
  323. package/dist/src/server/macros/builtins/index.js +51 -7
  324. package/dist/src/server/plugins/PluginContract.d.ts +1 -1
  325. package/dist/src/server/registry/contracts.d.ts +1 -1
  326. package/dist/src/server/registry/discovery.js +5 -4
  327. package/dist/src/server/registry/ensure-browser-core.js +0 -3
  328. package/dist/src/server/registry/index.js +4 -4
  329. package/dist/src/server/registry/tool-builder.d.ts +46 -0
  330. package/dist/src/server/registry/tool-builder.js +105 -0
  331. package/dist/src/server/sandbox/QuickJSSandbox.js +16 -5
  332. package/dist/src/server/sandbox/SandboxHelpers.js +250 -250
  333. package/dist/src/server/search/EmbeddingWorker.js +5 -3
  334. package/dist/src/server/search/FeedbackTracker.d.ts +9 -0
  335. package/dist/src/server/search/FeedbackTracker.js +26 -0
  336. package/dist/src/server/search/QueryNormalizer.d.ts +6 -0
  337. package/dist/src/server/search/QueryNormalizer.js +94 -0
  338. package/dist/src/server/search/ToolSearchEngineImpl.d.ts +2 -3
  339. package/dist/src/server/search/ToolSearchEngineImpl.js +38 -88
  340. package/dist/src/server/workflows/WorkflowContract.d.ts +24 -0
  341. package/dist/src/server/workflows/WorkflowContract.js +12 -0
  342. package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
  343. package/dist/src/server/workflows/WorkflowEngine.js +136 -3
  344. package/dist/src/types/config.d.ts +0 -14
  345. package/dist/src/types/deobfuscator.d.ts +0 -1
  346. package/dist/src/types/index.d.ts +1 -1
  347. package/dist/src/utils/DetailedDataManager.js +2 -0
  348. package/dist/src/utils/RingBuffer.js +5 -5
  349. package/dist/src/utils/TokenBudgetManager.js +1 -1
  350. package/dist/src/utils/UnifiedCacheManager.js +1 -1
  351. package/dist/src/utils/artifactRetention.js +2 -2
  352. package/dist/src/utils/betterSqlite3.d.ts +11 -0
  353. package/dist/src/utils/betterSqlite3.js +88 -0
  354. package/dist/src/utils/browserExecutable.js +2 -2
  355. package/dist/src/utils/cliFastPath.js +5 -8
  356. package/dist/src/utils/config.js +4 -26
  357. package/dist/src/utils/environmentDoctor.js +138 -11
  358. package/dist/src/utils/outputPaths.js +16 -9
  359. package/dist/src/utils/parallel.js +1 -3
  360. package/package.json +74 -72
  361. package/workflows/.gitkeep +0 -0
  362. package/dist/src/modules/analyzer/AISummarizer.d.ts +0 -39
  363. package/dist/src/modules/analyzer/AISummarizer.js +0 -122
  364. package/dist/src/modules/hook/AIHookGenerator.d.ts +0 -52
  365. package/dist/src/modules/hook/AIHookGenerator.js +0 -360
  366. package/dist/src/modules/hook/AIHookGeneratorTemplates.d.ts +0 -9
  367. package/dist/src/modules/hook/AIHookGeneratorTemplates.js +0 -157
  368. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.d.ts +0 -2
  369. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.js +0 -25
  370. package/dist/src/server/macros/builtins/unpacker-flow.d.ts +0 -2
  371. package/dist/src/server/macros/builtins/unpacker-flow.js +0 -25
  372. package/dist/src/services/LLMService.d.ts +0 -37
  373. package/dist/src/services/LLMService.js +0 -233
  374. package/dist/src/services/prompts/analysis.d.ts +0 -9
  375. package/dist/src/services/prompts/analysis.js +0 -158
  376. package/dist/src/services/prompts/crypto.d.ts +0 -2
  377. package/dist/src/services/prompts/crypto.js +0 -108
  378. package/dist/src/services/prompts/deobfuscation.d.ts +0 -6
  379. package/dist/src/services/prompts/deobfuscation.js +0 -300
  380. package/dist/src/services/prompts/environment.d.ts +0 -16
  381. package/dist/src/services/prompts/environment.js +0 -372
  382. package/dist/src/services/prompts/intelligence.d.ts +0 -4
  383. package/dist/src/services/prompts/intelligence.js +0 -250
  384. package/dist/src/services/prompts/taint.d.ts +0 -2
  385. package/dist/src/services/prompts/taint.js +0 -54
@@ -1,9 +1,9 @@
1
1
  export function generateHookChain(hooks) {
2
2
  const scripts = hooks.map((h) => h.script).join('\n\n');
3
- return `
4
-
5
- ${scripts}
6
-
7
- console.log('[Hook Chain] All ${hooks.length} hooks initialized');
3
+ return `
4
+
5
+ ${scripts}
6
+
7
+ console.log('[Hook Chain] All ${hooks.length} hooks initialized');
8
8
  `.trim();
9
9
  }
@@ -1,320 +1,320 @@
1
1
  export function generateXHRHook(action, customCode, _condition, _performance = false) {
2
- return `
3
- (function() {
4
- 'use strict';
5
-
6
- const XHR = XMLHttpRequest.prototype;
7
- const originalOpen = XHR.open;
8
- const originalSend = XHR.send;
9
- const originalSetRequestHeader = XHR.setRequestHeader;
10
-
11
- XHR.open = function(method, url, async, user, password) {
12
- this._hookData = {
13
- method: method,
14
- url: url,
15
- async: async !== false,
16
- timestamp: Date.now(),
17
- headers: {},
18
- stackTrace: new Error().stack
19
- };
20
-
21
- console.log('[XHR Hook] open:', {
22
- method: method,
23
- url: url,
24
- async: async !== false
25
- });
26
-
27
- ${action === 'block' ? 'return;' : ''}
28
-
29
- return originalOpen.apply(this, arguments);
30
- };
31
-
32
- XHR.setRequestHeader = function(header, value) {
33
- if (this._hookData) {
34
- this._hookData.headers[header] = value;
35
- console.log('[XHR Hook] setRequestHeader:', { header, value });
36
- }
37
-
38
- return originalSetRequestHeader.apply(this, arguments);
39
- };
40
-
41
- XHR.send = function(data) {
42
- const xhr = this;
43
-
44
- if (xhr._hookData) {
45
- xhr._hookData.requestData = data;
46
- xhr._hookData.sendTime = Date.now();
47
-
48
- console.log('[XHR Hook] send:', {
49
- url: xhr._hookData.url,
50
- method: xhr._hookData.method,
51
- headers: xhr._hookData.headers,
52
- data: data
53
- });
54
- }
55
-
56
- const originalOnReadyStateChange = xhr.onreadystatechange;
57
-
58
- xhr.onreadystatechange = function() {
59
- if (xhr.readyState === 4) {
60
- const responseTime = Date.now() - (xhr._hookData?.sendTime || 0);
61
-
62
- console.log('[XHR Hook] response:', {
63
- url: xhr._hookData?.url,
64
- status: xhr.status,
65
- statusText: xhr.statusText,
66
- responseTime: responseTime + 'ms',
67
- responseHeaders: xhr.getAllResponseHeaders(),
68
- responseType: xhr.responseType,
69
- responseURL: xhr.responseURL
70
- });
71
-
72
- try {
73
- if (xhr.responseType === '' || xhr.responseType === 'text') {
74
- console.log('[XHR Hook] responseText:', xhr.responseText?.substring(0, 500));
75
- } else if (xhr.responseType === 'json') {
76
- console.log('[XHR Hook] responseJSON:', xhr.response);
77
- } else {
78
- console.log('[XHR Hook] response:', typeof xhr.response);
79
- }
80
- } catch (e) {
81
- console.warn('[XHR Hook] Failed to log response:', e);
82
- }
83
- }
84
-
85
- if (originalOnReadyStateChange) {
86
- return originalOnReadyStateChange.apply(this, arguments);
87
- }
88
- };
89
-
90
- const originalAddEventListener = xhr.addEventListener;
91
- xhr.addEventListener = function(event, listener, ...args) {
92
- if (event === 'load' || event === 'error' || event === 'abort') {
93
- const wrappedListener = function(e) {
94
- console.log(\`[XHR Hook] event '\${event}':\`, {
95
- url: xhr._hookData?.url,
96
- status: xhr.status
97
- });
98
- return listener.apply(this, arguments);
99
- };
100
- return originalAddEventListener.call(this, event, wrappedListener, ...args);
101
- }
102
- return originalAddEventListener.apply(this, arguments);
103
- };
104
-
105
- ${customCode || ''}
106
-
107
- return originalSend.apply(this, arguments);
108
- };
109
-
110
- console.log('[Hook] XHR hooked successfully');
111
- })();
2
+ return `
3
+ (function() {
4
+ 'use strict';
5
+
6
+ const XHR = XMLHttpRequest.prototype;
7
+ const originalOpen = XHR.open;
8
+ const originalSend = XHR.send;
9
+ const originalSetRequestHeader = XHR.setRequestHeader;
10
+
11
+ XHR.open = function(method, url, async, user, password) {
12
+ this._hookData = {
13
+ method: method,
14
+ url: url,
15
+ async: async !== false,
16
+ timestamp: Date.now(),
17
+ headers: {},
18
+ stackTrace: new Error().stack
19
+ };
20
+
21
+ console.log('[XHR Hook] open:', {
22
+ method: method,
23
+ url: url,
24
+ async: async !== false
25
+ });
26
+
27
+ ${action === 'block' ? 'return;' : ''}
28
+
29
+ return originalOpen.apply(this, arguments);
30
+ };
31
+
32
+ XHR.setRequestHeader = function(header, value) {
33
+ if (this._hookData) {
34
+ this._hookData.headers[header] = value;
35
+ console.log('[XHR Hook] setRequestHeader:', { header, value });
36
+ }
37
+
38
+ return originalSetRequestHeader.apply(this, arguments);
39
+ };
40
+
41
+ XHR.send = function(data) {
42
+ const xhr = this;
43
+
44
+ if (xhr._hookData) {
45
+ xhr._hookData.requestData = data;
46
+ xhr._hookData.sendTime = Date.now();
47
+
48
+ console.log('[XHR Hook] send:', {
49
+ url: xhr._hookData.url,
50
+ method: xhr._hookData.method,
51
+ headers: xhr._hookData.headers,
52
+ data: data
53
+ });
54
+ }
55
+
56
+ const originalOnReadyStateChange = xhr.onreadystatechange;
57
+
58
+ xhr.onreadystatechange = function() {
59
+ if (xhr.readyState === 4) {
60
+ const responseTime = Date.now() - (xhr._hookData?.sendTime || 0);
61
+
62
+ console.log('[XHR Hook] response:', {
63
+ url: xhr._hookData?.url,
64
+ status: xhr.status,
65
+ statusText: xhr.statusText,
66
+ responseTime: responseTime + 'ms',
67
+ responseHeaders: xhr.getAllResponseHeaders(),
68
+ responseType: xhr.responseType,
69
+ responseURL: xhr.responseURL
70
+ });
71
+
72
+ try {
73
+ if (xhr.responseType === '' || xhr.responseType === 'text') {
74
+ console.log('[XHR Hook] responseText:', xhr.responseText?.substring(0, 500));
75
+ } else if (xhr.responseType === 'json') {
76
+ console.log('[XHR Hook] responseJSON:', xhr.response);
77
+ } else {
78
+ console.log('[XHR Hook] response:', typeof xhr.response);
79
+ }
80
+ } catch (e) {
81
+ console.warn('[XHR Hook] Failed to log response:', e);
82
+ }
83
+ }
84
+
85
+ if (originalOnReadyStateChange) {
86
+ return originalOnReadyStateChange.apply(this, arguments);
87
+ }
88
+ };
89
+
90
+ const originalAddEventListener = xhr.addEventListener;
91
+ xhr.addEventListener = function(event, listener, ...args) {
92
+ if (event === 'load' || event === 'error' || event === 'abort') {
93
+ const wrappedListener = function(e) {
94
+ console.log(\`[XHR Hook] event '\${event}':\`, {
95
+ url: xhr._hookData?.url,
96
+ status: xhr.status
97
+ });
98
+ return listener.apply(this, arguments);
99
+ };
100
+ return originalAddEventListener.call(this, event, wrappedListener, ...args);
101
+ }
102
+ return originalAddEventListener.apply(this, arguments);
103
+ };
104
+
105
+ ${customCode || ''}
106
+
107
+ return originalSend.apply(this, arguments);
108
+ };
109
+
110
+ console.log('[Hook] XHR hooked successfully');
111
+ })();
112
112
  `.trim();
113
113
  }
114
114
  export function generateFetchHook(action, customCode, _condition, _performance = false) {
115
- return `
116
- (function() {
117
- 'use strict';
118
-
119
- const originalFetch = window.fetch;
120
-
121
- window.fetch = new Proxy(originalFetch, {
122
- apply: function(target, thisArg, args) {
123
- const [resource, config] = args;
124
-
125
- let url, method, headers, body;
126
-
127
- if (resource instanceof Request) {
128
- url = resource.url;
129
- method = resource.method;
130
- headers = Object.fromEntries(resource.headers.entries());
131
- body = resource.body;
132
- } else {
133
- url = resource;
134
- method = config?.method || 'GET';
135
- headers = config?.headers || {};
136
- body = config?.body;
137
- }
138
-
139
- const hookContext = {
140
- url: url,
141
- method: method,
142
- headers: headers,
143
- body: body,
144
- timestamp: Date.now(),
145
- stackTrace: new Error().stack.split('\\n').slice(2, 5).join('\\n')
146
- };
147
-
148
- console.log('[Fetch Hook] request:', hookContext);
149
-
150
- ${action === 'block' ? 'return Promise.reject(new Error("Fetch blocked by hook"));' : ''}
151
- ${customCode || ''}
152
-
153
- const startTime = performance.now();
154
-
155
- return Reflect.apply(target, thisArg, args)
156
- .then(async response => {
157
- const endTime = performance.now();
158
- const duration = (endTime - startTime).toFixed(2);
159
-
160
- const clonedResponse = response.clone();
161
-
162
- const responseInfo = {
163
- url: url,
164
- status: response.status,
165
- statusText: response.statusText,
166
- ok: response.ok,
167
- redirected: response.redirected,
168
- type: response.type,
169
- headers: Object.fromEntries(response.headers.entries()),
170
- duration: duration + 'ms'
171
- };
172
-
173
- console.log('[Fetch Hook] response:', responseInfo);
174
-
175
- try {
176
- const contentType = response.headers.get('content-type') || '';
177
-
178
- if (contentType.includes('application/json')) {
179
- const json = await clonedResponse.json();
180
- console.log('[Fetch Hook] responseJSON:', json);
181
- } else if (contentType.includes('text/')) {
182
- const text = await clonedResponse.text();
183
- console.log('[Fetch Hook] responseText:', text.substring(0, 500));
184
- } else {
185
- console.log('[Fetch Hook] response type:', contentType);
186
- }
187
- } catch (e) {
188
- console.warn('[Fetch Hook] Failed to parse response:', e.message);
189
- }
190
-
191
- return response;
192
- })
193
- .catch(error => {
194
- const endTime = performance.now();
195
- const duration = (endTime - startTime).toFixed(2);
196
-
197
- console.error('[Fetch Hook] error:', {
198
- url: url,
199
- error: error.message,
200
- duration: duration + 'ms'
201
- });
202
-
203
- throw error;
204
- });
205
- }
206
- });
207
-
208
- console.log('[Fetch Hook] Successfully hooked window.fetch');
209
- })();
115
+ return `
116
+ (function() {
117
+ 'use strict';
118
+
119
+ const originalFetch = window.fetch;
120
+
121
+ window.fetch = new Proxy(originalFetch, {
122
+ apply: function(target, thisArg, args) {
123
+ const [resource, config] = args;
124
+
125
+ let url, method, headers, body;
126
+
127
+ if (resource instanceof Request) {
128
+ url = resource.url;
129
+ method = resource.method;
130
+ headers = Object.fromEntries(resource.headers.entries());
131
+ body = resource.body;
132
+ } else {
133
+ url = resource;
134
+ method = config?.method || 'GET';
135
+ headers = config?.headers || {};
136
+ body = config?.body;
137
+ }
138
+
139
+ const hookContext = {
140
+ url: url,
141
+ method: method,
142
+ headers: headers,
143
+ body: body,
144
+ timestamp: Date.now(),
145
+ stackTrace: new Error().stack.split('\\n').slice(2, 5).join('\\n')
146
+ };
147
+
148
+ console.log('[Fetch Hook] request:', hookContext);
149
+
150
+ ${action === 'block' ? 'return Promise.reject(new Error("Fetch blocked by hook"));' : ''}
151
+ ${customCode || ''}
152
+
153
+ const startTime = performance.now();
154
+
155
+ return Reflect.apply(target, thisArg, args)
156
+ .then(async response => {
157
+ const endTime = performance.now();
158
+ const duration = (endTime - startTime).toFixed(2);
159
+
160
+ const clonedResponse = response.clone();
161
+
162
+ const responseInfo = {
163
+ url: url,
164
+ status: response.status,
165
+ statusText: response.statusText,
166
+ ok: response.ok,
167
+ redirected: response.redirected,
168
+ type: response.type,
169
+ headers: Object.fromEntries(response.headers.entries()),
170
+ duration: duration + 'ms'
171
+ };
172
+
173
+ console.log('[Fetch Hook] response:', responseInfo);
174
+
175
+ try {
176
+ const contentType = response.headers.get('content-type') || '';
177
+
178
+ if (contentType.includes('application/json')) {
179
+ const json = await clonedResponse.json();
180
+ console.log('[Fetch Hook] responseJSON:', json);
181
+ } else if (contentType.includes('text/')) {
182
+ const text = await clonedResponse.text();
183
+ console.log('[Fetch Hook] responseText:', text.substring(0, 500));
184
+ } else {
185
+ console.log('[Fetch Hook] response type:', contentType);
186
+ }
187
+ } catch (e) {
188
+ console.warn('[Fetch Hook] Failed to parse response:', e.message);
189
+ }
190
+
191
+ return response;
192
+ })
193
+ .catch(error => {
194
+ const endTime = performance.now();
195
+ const duration = (endTime - startTime).toFixed(2);
196
+
197
+ console.error('[Fetch Hook] error:', {
198
+ url: url,
199
+ error: error.message,
200
+ duration: duration + 'ms'
201
+ });
202
+
203
+ throw error;
204
+ });
205
+ }
206
+ });
207
+
208
+ console.log('[Fetch Hook] Successfully hooked window.fetch');
209
+ })();
210
210
  `.trim();
211
211
  }
212
212
  export function generateWebSocketHook(action, customCode, _condition, _performance = false) {
213
- return `
214
- (function() {
215
- 'use strict';
216
-
217
- const OriginalWebSocket = window.WebSocket;
218
- let wsCounter = 0;
219
-
220
- window.WebSocket = function(url, protocols) {
221
- const wsId = ++wsCounter;
222
- const connectTime = Date.now();
223
-
224
- console.log(\`[WebSocket Hook #\${wsId}] connecting:\`, {
225
- url: url,
226
- protocols: protocols,
227
- timestamp: new Date().toISOString()
228
- });
229
-
230
- ${action === 'block' ? 'throw new Error("WebSocket blocked by hook");' : ''}
231
-
232
- const ws = new OriginalWebSocket(url, protocols);
233
-
234
- const originalSend = ws.send;
235
- ws.send = function(data) {
236
- const dataInfo = {
237
- wsId: wsId,
238
- url: url,
239
- timestamp: new Date().toISOString(),
240
- dataType: typeof data,
241
- size: data?.length || data?.byteLength || data?.size || 0
242
- };
243
-
244
- if (typeof data === 'string') {
245
- dataInfo.content = data.length > 500 ? data.substring(0, 500) + '...' : data;
246
- } else if (data instanceof ArrayBuffer) {
247
- dataInfo.content = \`ArrayBuffer(\${data.byteLength} bytes)\`;
248
- } else if (data instanceof Blob) {
249
- dataInfo.content = \`Blob(\${data.size} bytes, \${data.type})\`;
250
- }
251
-
252
- console.log(\`[WebSocket Hook #\${wsId}] send:\`, dataInfo);
253
-
254
- ${customCode || ''}
255
-
256
- return originalSend.apply(this, arguments);
257
- };
258
-
259
- ws.addEventListener('open', function(event) {
260
- const duration = Date.now() - connectTime;
261
- console.log(\`[WebSocket Hook #\${wsId}] open:\`, {
262
- url: url,
263
- readyState: ws.readyState,
264
- protocol: ws.protocol,
265
- extensions: ws.extensions,
266
- duration: duration + 'ms'
267
- });
268
- });
269
-
270
- ws.addEventListener('message', function(event) {
271
- const messageInfo = {
272
- wsId: wsId,
273
- url: url,
274
- timestamp: new Date().toISOString(),
275
- dataType: typeof event.data
276
- };
277
-
278
- if (typeof event.data === 'string') {
279
- messageInfo.content = event.data.length > 500 ? event.data.substring(0, 500) + '...' : event.data;
280
- } else if (event.data instanceof ArrayBuffer) {
281
- messageInfo.content = \`ArrayBuffer(\${event.data.byteLength} bytes)\`;
282
- } else if (event.data instanceof Blob) {
283
- messageInfo.content = \`Blob(\${event.data.size} bytes, \${event.data.type})\`;
284
- }
285
-
286
- console.log(\`[WebSocket Hook #\${wsId}] message:\`, messageInfo);
287
- });
288
-
289
- ws.addEventListener('error', function(event) {
290
- console.error(\`[WebSocket Hook #\${wsId}] error:\`, {
291
- url: url,
292
- readyState: ws.readyState,
293
- timestamp: new Date().toISOString()
294
- });
295
- });
296
-
297
- ws.addEventListener('close', function(event) {
298
- const duration = Date.now() - connectTime;
299
- console.log(\`[WebSocket Hook #\${wsId}] close:\`, {
300
- url: url,
301
- code: event.code,
302
- reason: event.reason,
303
- wasClean: event.wasClean,
304
- duration: duration + 'ms',
305
- timestamp: new Date().toISOString()
306
- });
307
- });
308
-
309
- return ws;
310
- };
311
-
312
- window.WebSocket.CONNECTING = OriginalWebSocket.CONNECTING;
313
- window.WebSocket.OPEN = OriginalWebSocket.OPEN;
314
- window.WebSocket.CLOSING = OriginalWebSocket.CLOSING;
315
- window.WebSocket.CLOSED = OriginalWebSocket.CLOSED;
316
-
317
- console.log('[WebSocket Hook] Successfully hooked window.WebSocket');
318
- })();
213
+ return `
214
+ (function() {
215
+ 'use strict';
216
+
217
+ const OriginalWebSocket = window.WebSocket;
218
+ let wsCounter = 0;
219
+
220
+ window.WebSocket = function(url, protocols) {
221
+ const wsId = ++wsCounter;
222
+ const connectTime = Date.now();
223
+
224
+ console.log(\`[WebSocket Hook #\${wsId}] connecting:\`, {
225
+ url: url,
226
+ protocols: protocols,
227
+ timestamp: new Date().toISOString()
228
+ });
229
+
230
+ ${action === 'block' ? 'throw new Error("WebSocket blocked by hook");' : ''}
231
+
232
+ const ws = new OriginalWebSocket(url, protocols);
233
+
234
+ const originalSend = ws.send;
235
+ ws.send = function(data) {
236
+ const dataInfo = {
237
+ wsId: wsId,
238
+ url: url,
239
+ timestamp: new Date().toISOString(),
240
+ dataType: typeof data,
241
+ size: data?.length || data?.byteLength || data?.size || 0
242
+ };
243
+
244
+ if (typeof data === 'string') {
245
+ dataInfo.content = data.length > 500 ? data.substring(0, 500) + '...' : data;
246
+ } else if (data instanceof ArrayBuffer) {
247
+ dataInfo.content = \`ArrayBuffer(\${data.byteLength} bytes)\`;
248
+ } else if (data instanceof Blob) {
249
+ dataInfo.content = \`Blob(\${data.size} bytes, \${data.type})\`;
250
+ }
251
+
252
+ console.log(\`[WebSocket Hook #\${wsId}] send:\`, dataInfo);
253
+
254
+ ${customCode || ''}
255
+
256
+ return originalSend.apply(this, arguments);
257
+ };
258
+
259
+ ws.addEventListener('open', function(event) {
260
+ const duration = Date.now() - connectTime;
261
+ console.log(\`[WebSocket Hook #\${wsId}] open:\`, {
262
+ url: url,
263
+ readyState: ws.readyState,
264
+ protocol: ws.protocol,
265
+ extensions: ws.extensions,
266
+ duration: duration + 'ms'
267
+ });
268
+ });
269
+
270
+ ws.addEventListener('message', function(event) {
271
+ const messageInfo = {
272
+ wsId: wsId,
273
+ url: url,
274
+ timestamp: new Date().toISOString(),
275
+ dataType: typeof event.data
276
+ };
277
+
278
+ if (typeof event.data === 'string') {
279
+ messageInfo.content = event.data.length > 500 ? event.data.substring(0, 500) + '...' : event.data;
280
+ } else if (event.data instanceof ArrayBuffer) {
281
+ messageInfo.content = \`ArrayBuffer(\${event.data.byteLength} bytes)\`;
282
+ } else if (event.data instanceof Blob) {
283
+ messageInfo.content = \`Blob(\${event.data.size} bytes, \${event.data.type})\`;
284
+ }
285
+
286
+ console.log(\`[WebSocket Hook #\${wsId}] message:\`, messageInfo);
287
+ });
288
+
289
+ ws.addEventListener('error', function(event) {
290
+ console.error(\`[WebSocket Hook #\${wsId}] error:\`, {
291
+ url: url,
292
+ readyState: ws.readyState,
293
+ timestamp: new Date().toISOString()
294
+ });
295
+ });
296
+
297
+ ws.addEventListener('close', function(event) {
298
+ const duration = Date.now() - connectTime;
299
+ console.log(\`[WebSocket Hook #\${wsId}] close:\`, {
300
+ url: url,
301
+ code: event.code,
302
+ reason: event.reason,
303
+ wasClean: event.wasClean,
304
+ duration: duration + 'ms',
305
+ timestamp: new Date().toISOString()
306
+ });
307
+ });
308
+
309
+ return ws;
310
+ };
311
+
312
+ window.WebSocket.CONNECTING = OriginalWebSocket.CONNECTING;
313
+ window.WebSocket.OPEN = OriginalWebSocket.OPEN;
314
+ window.WebSocket.CLOSING = OriginalWebSocket.CLOSING;
315
+ window.WebSocket.CLOSED = OriginalWebSocket.CLOSED;
316
+
317
+ console.log('[WebSocket Hook] Successfully hooked window.WebSocket');
318
+ })();
319
319
  `.trim();
320
320
  }