@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,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,
@@ -24,14 +24,14 @@ export function summarizeEvents(events, detail = 'balanced') {
24
24
  cat.types.set(event.eventType, (cat.types.get(event.eventType) ?? 0) + 1);
25
25
  }
26
26
  const categories = [...catMap.entries()]
27
- .sort((a, b) => b[1].count - a[1].count)
27
+ .toSorted((a, b) => b[1].count - a[1].count)
28
28
  .map(([category, info]) => ({
29
29
  category,
30
30
  count: info.count,
31
31
  firstTimestamp: info.first,
32
32
  lastTimestamp: info.last,
33
33
  topEventTypes: [...info.types.entries()]
34
- .sort((a, b) => b[1] - a[1])
34
+ .toSorted((a, b) => b[1] - a[1])
35
35
  .slice(0, 5)
36
36
  .map(([type, count]) => ({ type, count })),
37
37
  }));
@@ -73,7 +73,8 @@ export function extractKeyMoments(events) {
73
73
  data: event.data,
74
74
  });
75
75
  }
76
- else if (event.eventType === 'Page.frameNavigated' || event.eventType === 'Page.navigatedWithinDocument') {
76
+ else if (event.eventType === 'Page.frameNavigated' ||
77
+ event.eventType === 'Page.navigatedWithinDocument') {
77
78
  moments.push({
78
79
  timestamp: event.timestamp,
79
80
  type: 'navigation',
@@ -95,8 +96,10 @@ export function summarizeMemoryDeltas(deltas) {
95
96
  const uniqueAddresses = writeMap.size;
96
97
  const totalWrites = deltas.length;
97
98
  const meanWrites = totalWrites / uniqueAddresses;
98
- const sorted = [...writeMap.entries()].sort((a, b) => b[1] - a[1]);
99
- const topAddresses = sorted.slice(0, 10).map(([address, writeCount]) => ({ address, writeCount }));
99
+ const sorted = [...writeMap.entries()].toSorted((a, b) => b[1] - a[1]);
100
+ const topAddresses = sorted
101
+ .slice(0, 10)
102
+ .map(([address, writeCount]) => ({ address, writeCount }));
100
103
  const anomalyThreshold = meanWrites * 3;
101
104
  const anomalies = sorted
102
105
  .filter(([, count]) => count > anomalyThreshold)