@jshookmcp/jshook 0.2.3 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (583) hide show
  1. package/README.md +14 -5
  2. package/README.zh.md +18 -3
  3. package/dist/packages/extension-sdk/src/bridges/shared.js +2 -2
  4. package/dist/packages/extension-sdk/src/plugin.d.ts +5 -0
  5. package/dist/packages/extension-sdk/src/plugin.js +119 -33
  6. package/dist/packages/extension-sdk/src/workflow.d.ts +171 -0
  7. package/dist/packages/extension-sdk/src/workflow.js +272 -0
  8. package/dist/src/config/search-defaults.js +161 -0
  9. package/dist/src/constants.d.ts +3 -0
  10. package/dist/src/constants.js +4 -1
  11. package/dist/src/index.d.ts +1 -1
  12. package/dist/src/index.js +13 -17
  13. package/dist/src/modules/analyzer/CodeAnalyzer.d.ts +1 -3
  14. package/dist/src/modules/analyzer/CodeAnalyzer.js +16 -28
  15. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.d.ts +1 -2
  16. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.js +1 -45
  17. package/dist/src/modules/analyzer/IntelligentAnalyzer.d.ts +1 -37
  18. package/dist/src/modules/analyzer/IntelligentAnalyzer.js +9 -142
  19. package/dist/src/modules/analyzer/PatternDetector.js +3 -3
  20. package/dist/src/modules/analyzer/PatternDetectorAuthPatterns.js +1 -1
  21. package/dist/src/modules/browser/BrowserDiscovery.js +2 -2
  22. package/dist/src/modules/browser/BrowserModeManager.js +11 -10
  23. package/dist/src/modules/browser/BrowserPool.d.ts +49 -0
  24. package/dist/src/modules/browser/BrowserPool.js +288 -0
  25. package/dist/src/modules/browser/TabRegistry.js +2 -2
  26. package/dist/src/modules/browser/UnifiedBrowserManager.d.ts +1 -0
  27. package/dist/src/modules/browser/UnifiedBrowserManager.js +18 -3
  28. package/dist/src/modules/captcha/AICaptchaDetector.d.ts +1 -10
  29. package/dist/src/modules/captcha/AICaptchaDetector.js +7 -201
  30. package/dist/src/modules/collector/CodeCollector.js +4 -5
  31. package/dist/src/modules/collector/DOMInspector.js +48 -58
  32. package/dist/src/modules/collector/PageController.d.ts +17 -4
  33. package/dist/src/modules/collector/PageController.js +2 -5
  34. package/dist/src/modules/collector/PageScriptCollectors.js +3 -3
  35. package/dist/src/modules/crypto/CryptoDetector.d.ts +1 -4
  36. package/dist/src/modules/crypto/CryptoDetector.js +2 -42
  37. package/dist/src/modules/crypto/CryptoRules.js +1 -1
  38. package/dist/src/modules/debugger/BlackboxManager.js +1 -1
  39. package/dist/src/modules/debugger/DebuggerManager.impl.core.scope.js +1 -1
  40. package/dist/src/modules/debugger/ScriptManager.impl.extract-function-tree.js +4 -2
  41. package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
  42. package/dist/src/modules/deobfuscator/AdvancedDeobfuscator.d.ts +5 -0
  43. package/dist/src/modules/deobfuscator/AdvancedDeobfuscator.js +43 -2
  44. package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
  45. package/dist/src/modules/deobfuscator/Deobfuscator.js +9 -39
  46. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.d.ts +0 -3
  47. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.js +2 -8
  48. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.d.ts +1 -2
  49. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +3 -55
  50. package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
  51. package/dist/src/modules/deobfuscator/VMDeobfuscator.d.ts +2 -10
  52. package/dist/src/modules/deobfuscator/VMDeobfuscator.js +3 -128
  53. package/dist/src/modules/deobfuscator/webcrack.js +15 -2
  54. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.d.ts +5 -8
  55. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.js +10 -102
  56. package/dist/src/modules/emulator/EnvironmentEmulator.d.ts +1 -5
  57. package/dist/src/modules/emulator/EnvironmentEmulator.js +7 -91
  58. package/dist/src/modules/emulator/EnvironmentEmulatorFetch.js +58 -61
  59. package/dist/src/modules/emulator/templates/chrome-env.d.ts +17 -7
  60. package/dist/src/modules/emulator/templates/chrome-env.js +14 -7
  61. package/dist/src/modules/external/ExternalToolRunner.js +25 -22
  62. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.compose.js +5 -5
  63. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.network.js +311 -311
  64. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.runtime.js +410 -410
  65. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.storage.js +122 -122
  66. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.d.ts +13 -0
  67. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.js +42 -0
  68. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.dynamic.js +194 -194
  69. package/dist/src/modules/monitor/FetchInterceptor.d.ts +46 -0
  70. package/dist/src/modules/monitor/FetchInterceptor.js +191 -0
  71. package/dist/src/modules/monitor/PerformanceMonitor.js +8 -7
  72. package/dist/src/modules/monitor/PlaywrightNetworkMonitor.js +62 -62
  73. package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
  74. package/dist/src/modules/process/LinuxProcessManager.js +2 -0
  75. package/dist/src/modules/process/MacProcessManager.js +25 -25
  76. package/dist/src/modules/process/MemoryManager.d.ts +1 -1
  77. package/dist/src/modules/process/MemoryManager.js +2 -2
  78. package/dist/src/modules/process/memory/AuditTrail.js +1 -1
  79. package/dist/src/modules/process/memory/availability.js +49 -49
  80. package/dist/src/modules/process/memory/injector.js +185 -185
  81. package/dist/src/modules/process/memory/reader.js +85 -53
  82. package/dist/src/modules/process/memory/regions.dump.js +51 -51
  83. package/dist/src/modules/process/memory/regions.enumerate.js +108 -108
  84. package/dist/src/modules/process/memory/regions.modules.js +80 -80
  85. package/dist/src/modules/process/memory/regions.protection.js +148 -115
  86. package/dist/src/modules/process/memory/scanner.d.ts +5 -1
  87. package/dist/src/modules/process/memory/scanner.darwin.js +98 -41
  88. package/dist/src/modules/process/memory/scanner.js +88 -4
  89. package/dist/src/modules/process/memory/scanner.windows.js +124 -124
  90. package/dist/src/modules/process/memory/writer.js +98 -58
  91. package/dist/src/modules/security/ExecutionSandbox.js +51 -52
  92. package/dist/src/modules/stealth/FingerprintManager.js +1 -1
  93. package/dist/src/modules/stealth/StealthScripts.d.ts +1 -0
  94. package/dist/src/modules/stealth/StealthScripts.js +18 -13
  95. package/dist/src/modules/stealth/StealthVerifier.js +1 -3
  96. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.d.ts +14 -0
  97. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.js +181 -2
  98. package/dist/src/modules/trace/TraceDB.js +75 -69
  99. package/dist/src/modules/trace/TraceRecorder.js +1 -5
  100. package/dist/src/native/AntiCheatDetector.js +67 -16
  101. package/dist/src/native/CodeInjector.js +3 -3
  102. package/dist/src/native/HardwareBreakpoint.js +24 -15
  103. package/dist/src/native/HeapAnalyzer.js +2 -2
  104. package/dist/src/native/MemoryController.js +1 -1
  105. package/dist/src/native/MemoryScanSession.js +2 -2
  106. package/dist/src/native/MemoryScanner.js +4 -8
  107. package/dist/src/native/NativeMemoryManager.impl.js +2 -2
  108. package/dist/src/native/PEAnalyzer.js +14 -15
  109. package/dist/src/native/PointerChainEngine.js +2 -4
  110. package/dist/src/native/ScriptLoader.js +4 -9
  111. package/dist/src/native/Speedhack.js +1 -1
  112. package/dist/src/native/StructureAnalyzer.js +52 -33
  113. package/dist/src/native/Win32API.d.ts +1 -0
  114. package/dist/src/native/Win32API.js +13 -0
  115. package/dist/src/native/Win32Debug.js +19 -19
  116. package/dist/src/native/platform/darwin/DarwinAPI.d.ts +2 -0
  117. package/dist/src/native/platform/darwin/DarwinAPI.js +8 -0
  118. package/dist/src/native/platform/darwin/DarwinMemoryProvider.js +6 -1
  119. package/dist/src/server/MCPServer.context.d.ts +3 -1
  120. package/dist/src/server/MCPServer.d.ts +2 -1
  121. package/dist/src/server/MCPServer.domain.d.ts +1 -1
  122. package/dist/src/server/MCPServer.domain.js +81 -16
  123. package/dist/src/server/MCPServer.js +41 -14
  124. package/dist/src/server/MCPServer.resources.d.ts +2 -0
  125. package/dist/src/server/MCPServer.resources.js +91 -0
  126. package/dist/src/server/MCPServer.search.handlers.call.js +2 -1
  127. package/dist/src/server/MCPServer.search.helpers.js +1 -1
  128. package/dist/src/server/MCPServer.transport.js +12 -0
  129. package/dist/src/server/ToolCallContextGuard.js +8 -0
  130. package/dist/src/server/ToolRouter.d.ts +25 -9
  131. package/dist/src/server/ToolRouter.intent.d.ts +26 -0
  132. package/dist/src/server/ToolRouter.intent.js +77 -0
  133. package/dist/src/server/ToolRouter.js +103 -284
  134. package/dist/src/server/ToolRouter.policy.d.ts +22 -0
  135. package/dist/src/server/ToolRouter.policy.js +163 -0
  136. package/dist/src/server/ToolRouter.probe.d.ts +17 -0
  137. package/dist/src/server/ToolRouter.probe.js +103 -0
  138. package/dist/src/server/ToolRouter.renderer.d.ts +9 -0
  139. package/dist/src/server/ToolRouter.renderer.js +52 -0
  140. package/dist/src/server/activation/ActivationController.js +15 -12
  141. package/dist/src/server/activation/CompoundConditionEngine.js +1 -1
  142. package/dist/src/server/activation/PredictiveBooster.js +1 -3
  143. package/dist/src/server/domains/analysis/definitions.js +155 -655
  144. package/dist/src/server/domains/analysis/handlers.impl.js +26 -20
  145. package/dist/src/server/domains/analysis/handlers.web-tools.js +2 -1
  146. package/dist/src/server/domains/analysis/manifest.js +6 -4
  147. package/dist/src/server/domains/antidebug/definitions.js +25 -111
  148. package/dist/src/server/domains/browser/definitions.tools.advanced.js +59 -88
  149. package/dist/src/server/domains/browser/definitions.tools.behavior.js +120 -227
  150. package/dist/src/server/domains/browser/definitions.tools.page-core.js +210 -439
  151. package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
  152. package/dist/src/server/domains/browser/definitions.tools.runtime.js +98 -211
  153. package/dist/src/server/domains/browser/definitions.tools.security.js +194 -339
  154. package/dist/src/server/domains/browser/handlers/camoufox-browser.js +3 -2
  155. package/dist/src/server/domains/browser/handlers/captcha-solver.js +3 -3
  156. package/dist/src/server/domains/browser/handlers/dom-query.js +2 -1
  157. package/dist/src/server/domains/browser/handlers/framework-state.js +27 -9
  158. package/dist/src/server/domains/browser/handlers/indexeddb-dump.js +21 -20
  159. package/dist/src/server/domains/browser/handlers/script-management.js +1 -1
  160. package/dist/src/server/domains/browser/handlers/stealth-injection.d.ts +1 -0
  161. package/dist/src/server/domains/browser/handlers/stealth-injection.js +3 -0
  162. package/dist/src/server/domains/browser/handlers.impl.d.ts +1 -2
  163. package/dist/src/server/domains/browser/handlers.impl.js +2 -3
  164. package/dist/src/server/domains/browser/manifest.js +37 -13
  165. package/dist/src/server/domains/coordination/definitions.js +50 -216
  166. package/dist/src/server/domains/coordination/index.d.ts +2 -1
  167. package/dist/src/server/domains/coordination/index.js +1 -0
  168. package/dist/src/server/domains/debugger/definitions.tools.advanced.js +72 -189
  169. package/dist/src/server/domains/debugger/definitions.tools.core.js +114 -288
  170. package/dist/src/server/domains/debugger/manifest.js +9 -2
  171. package/dist/src/server/domains/encoding/definitions.js +43 -153
  172. package/dist/src/server/domains/encoding/handlers.base.js +2 -2
  173. package/dist/src/server/domains/evidence/definitions.d.ts +2 -0
  174. package/dist/src/server/domains/evidence/definitions.js +42 -0
  175. package/dist/src/server/domains/evidence/handlers.d.ts +582 -0
  176. package/dist/src/server/domains/evidence/handlers.js +60 -0
  177. package/dist/src/server/domains/evidence/index.d.ts +2 -0
  178. package/dist/src/server/domains/evidence/index.js +2 -0
  179. package/dist/src/server/domains/evidence/manifest.d.ts +63 -0
  180. package/dist/src/server/domains/evidence/manifest.js +78 -0
  181. package/dist/src/server/domains/graphql/definitions.js +53 -141
  182. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.replay.js +92 -114
  183. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.shared.js +77 -77
  184. package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
  185. package/dist/src/server/domains/hooks/ai-handlers.js +1 -67
  186. package/dist/src/server/domains/hooks/definitions.js +69 -335
  187. package/dist/src/server/domains/hooks/manifest.d.ts +1 -1
  188. package/dist/src/server/domains/hooks/manifest.js +1 -2
  189. package/dist/src/server/domains/instrumentation/definitions.d.ts +2 -0
  190. package/dist/src/server/domains/instrumentation/definitions.js +99 -0
  191. package/dist/src/server/domains/instrumentation/handlers.d.ts +78 -0
  192. package/dist/src/server/domains/instrumentation/handlers.js +206 -0
  193. package/dist/src/server/domains/instrumentation/index.d.ts +2 -0
  194. package/dist/src/server/domains/instrumentation/index.js +2 -0
  195. package/dist/src/server/domains/instrumentation/manifest.d.ts +63 -0
  196. package/dist/src/server/domains/instrumentation/manifest.js +114 -0
  197. package/dist/src/server/domains/macro/definitions.js +16 -43
  198. package/dist/src/server/domains/maintenance/definitions.js +60 -219
  199. package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
  200. package/dist/src/server/domains/memory/definitions.js +387 -559
  201. package/dist/src/server/domains/memory/handlers/hooks.d.ts +55 -0
  202. package/dist/src/server/domains/memory/handlers/hooks.js +115 -0
  203. package/dist/src/server/domains/memory/handlers/integrity.d.ts +77 -0
  204. package/dist/src/server/domains/memory/handlers/integrity.js +180 -0
  205. package/dist/src/server/domains/memory/handlers/pointer-chain.d.ts +29 -0
  206. package/dist/src/server/domains/memory/handlers/pointer-chain.js +82 -0
  207. package/dist/src/server/domains/memory/handlers/readwrite.d.ts +41 -0
  208. package/dist/src/server/domains/memory/handlers/readwrite.js +78 -0
  209. package/dist/src/server/domains/memory/handlers/scan.d.ts +35 -0
  210. package/dist/src/server/domains/memory/handlers/scan.js +97 -0
  211. package/dist/src/server/domains/memory/handlers/session.d.ts +23 -0
  212. package/dist/src/server/domains/memory/handlers/session.js +49 -0
  213. package/dist/src/server/domains/memory/handlers/structure.d.ts +29 -0
  214. package/dist/src/server/domains/memory/handlers/structure.js +74 -0
  215. package/dist/src/server/domains/memory/handlers.impl.d.ts +49 -54
  216. package/dist/src/server/domains/memory/handlers.impl.js +63 -494
  217. package/dist/src/server/domains/memory/manifest.js +236 -64
  218. package/dist/src/server/domains/native-bridge/definitions.js +54 -192
  219. package/dist/src/server/domains/native-bridge/index.d.ts +1 -0
  220. package/dist/src/server/domains/native-bridge/index.js +2 -1
  221. package/dist/src/server/domains/network/auth-extractor.js +1 -1
  222. package/dist/src/server/domains/network/definitions.js +175 -578
  223. package/dist/src/server/domains/network/handlers.base.core.d.ts +64 -0
  224. package/dist/src/server/domains/network/handlers.base.core.js +623 -0
  225. package/dist/src/server/domains/network/handlers.base.d.ts +2 -124
  226. package/dist/src/server/domains/network/handlers.base.js +3 -878
  227. package/dist/src/server/domains/network/handlers.base.performance.d.ts +63 -0
  228. package/dist/src/server/domains/network/handlers.base.performance.js +193 -0
  229. package/dist/src/server/domains/network/handlers.base.types.d.ts +42 -0
  230. package/dist/src/server/domains/network/handlers.base.types.js +89 -0
  231. package/dist/src/server/domains/network/handlers.impl.core.runtime.d.ts +1 -1
  232. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.d.ts +21 -0
  233. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.js +186 -0
  234. package/dist/src/server/domains/network/handlers.impl.core.runtime.js +1 -1
  235. package/dist/src/server/domains/network/manifest.js +15 -0
  236. package/dist/src/server/domains/network/replay.js +1 -4
  237. package/dist/src/server/domains/platform/definitions.js +121 -112
  238. package/dist/src/server/domains/platform/handlers/bridge-handlers.d.ts +4 -0
  239. package/dist/src/server/domains/platform/handlers/bridge-handlers.js +193 -4
  240. package/dist/src/server/domains/platform/handlers/electron-asar-helpers.js +26 -6
  241. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.d.ts +3 -0
  242. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.js +170 -0
  243. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.d.ts +3 -0
  244. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.js +193 -0
  245. package/dist/src/server/domains/platform/handlers/electron-handlers.d.ts +6 -0
  246. package/dist/src/server/domains/platform/handlers/electron-handlers.js +95 -2
  247. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.d.ts +2 -0
  248. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.js +370 -0
  249. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.d.ts +2 -0
  250. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.js +78 -0
  251. package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +3 -3
  252. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.d.ts +2 -0
  253. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.js +207 -0
  254. package/dist/src/server/domains/platform/handlers.d.ts +48 -0
  255. package/dist/src/server/domains/platform/handlers.js +29 -0
  256. package/dist/src/server/domains/platform/manifest.js +38 -0
  257. package/dist/src/server/domains/process/definitions.js +163 -647
  258. package/dist/src/server/domains/process/handlers.base.d.ts +3 -95
  259. package/dist/src/server/domains/process/handlers.base.js +7 -462
  260. package/dist/src/server/domains/process/handlers.base.process.d.ts +61 -0
  261. package/dist/src/server/domains/process/handlers.base.process.js +417 -0
  262. package/dist/src/server/domains/process/handlers.base.types.d.ts +57 -0
  263. package/dist/src/server/domains/process/handlers.base.types.js +50 -0
  264. package/dist/src/server/domains/process/handlers.impl.core.runtime.inject.js +18 -16
  265. package/dist/src/server/domains/process/manifest.js +6 -1
  266. package/dist/src/server/domains/sandbox/definitions.js +11 -33
  267. package/dist/src/server/domains/sandbox/handlers.js +8 -3
  268. package/dist/src/server/domains/shared/ResponseBuilder.d.ts +209 -0
  269. package/dist/src/server/domains/shared/ResponseBuilder.js +48 -0
  270. package/dist/src/server/domains/shared/modules.d.ts +0 -2
  271. package/dist/src/server/domains/shared/modules.js +0 -1
  272. package/dist/src/server/domains/shared-state-board/definitions.d.ts +2 -0
  273. package/dist/src/server/domains/shared-state-board/definitions.js +78 -0
  274. package/dist/src/server/domains/shared-state-board/handlers.impl.d.ts +58 -0
  275. package/dist/src/server/domains/shared-state-board/handlers.impl.js +419 -0
  276. package/dist/src/server/domains/shared-state-board/index.d.ts +2 -0
  277. package/dist/src/server/domains/shared-state-board/index.js +2 -0
  278. package/dist/src/server/domains/shared-state-board/manifest.d.ts +57 -0
  279. package/dist/src/server/domains/shared-state-board/manifest.js +74 -0
  280. package/dist/src/server/domains/sourcemap/definitions.js +27 -111
  281. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-common.js +7 -2
  282. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-main.js +1 -1
  283. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-parse-base.js +1 -1
  284. package/dist/src/server/domains/sourcemap/manifest.d.ts +1 -1
  285. package/dist/src/server/domains/sourcemap/manifest.js +1 -1
  286. package/dist/src/server/domains/streaming/definitions.js +36 -148
  287. package/dist/src/server/domains/streaming/handlers.impl.streaming-sse.js +163 -164
  288. package/dist/src/server/domains/streaming/handlers.impl.streaming-ws.js +1 -1
  289. package/dist/src/server/domains/trace/TraceSummarizer.js +8 -5
  290. package/dist/src/server/domains/trace/definitions.tools.js +51 -206
  291. package/dist/src/server/domains/trace/handlers.js +10 -12
  292. package/dist/src/server/domains/trace/index.d.ts +2 -1
  293. package/dist/src/server/domains/trace/index.js +2 -1
  294. package/dist/src/server/domains/trace/manifest.js +15 -3
  295. package/dist/src/server/domains/transform/definitions.js +50 -210
  296. package/dist/src/server/domains/transform/handlers.impl.transform-base.js +108 -108
  297. package/dist/src/server/domains/transform/handlers.impl.transform-crypto.js +18 -19
  298. package/dist/src/server/domains/transform/manifest.d.ts +1 -1
  299. package/dist/src/server/domains/transform/manifest.js +1 -1
  300. package/dist/src/server/domains/wasm/definitions.js +55 -232
  301. package/dist/src/server/domains/wasm/handlers.js +1 -1
  302. package/dist/src/server/domains/workflow/definitions.js +144 -414
  303. package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +1 -1
  304. package/dist/src/server/domains/workflow/handlers.impl.workflow-api.js +51 -51
  305. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.d.ts +2 -0
  306. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.js +126 -87
  307. package/dist/src/server/domains/workflow/handlers.impl.workflow-batch.js +5 -5
  308. package/dist/src/server/evidence/ReverseEvidenceGraph.d.ts +20 -0
  309. package/dist/src/server/evidence/ReverseEvidenceGraph.js +208 -0
  310. package/dist/src/server/evidence/index.d.ts +2 -0
  311. package/dist/src/server/evidence/index.js +1 -0
  312. package/dist/src/server/evidence/types.d.ts +22 -0
  313. package/dist/src/server/evidence/types.js +1 -0
  314. package/dist/src/server/extensions/ExtensionManager.d.ts +1 -0
  315. package/dist/src/server/extensions/ExtensionManager.discovery.js +72 -9
  316. package/dist/src/server/extensions/ExtensionManager.integrity.js +1 -1
  317. package/dist/src/server/extensions/ExtensionManager.js +193 -40
  318. package/dist/src/server/extensions/ExtensionManager.roots.d.ts +1 -1
  319. package/dist/src/server/extensions/ExtensionManager.roots.js +4 -4
  320. package/dist/src/server/extensions/plugin-config.js +1 -1
  321. package/dist/src/server/extensions/plugin-env.d.ts +1 -1
  322. package/dist/src/server/extensions/plugin-env.js +10 -4
  323. package/dist/src/server/extensions/types.d.ts +17 -0
  324. package/dist/src/server/extensions/types.js +1 -1
  325. package/dist/src/server/http/SseStream.d.ts +21 -0
  326. package/dist/src/server/http/SseStream.js +129 -0
  327. package/dist/src/server/instrumentation/EvidenceGraphBridge.d.ts +13 -0
  328. package/dist/src/server/instrumentation/EvidenceGraphBridge.js +150 -0
  329. package/dist/src/server/instrumentation/InstrumentationSession.d.ts +60 -0
  330. package/dist/src/server/instrumentation/InstrumentationSession.js +269 -0
  331. package/dist/src/server/instrumentation/index.d.ts +2 -0
  332. package/dist/src/server/instrumentation/index.js +2 -0
  333. package/dist/src/server/instrumentation/types.d.ts +62 -0
  334. package/dist/src/server/instrumentation/types.js +7 -0
  335. package/dist/src/server/macros/MacroConfigLoader.d.ts +6 -5
  336. package/dist/src/server/macros/MacroConfigLoader.js +61 -59
  337. package/dist/src/server/macros/MacroRunner.js +6 -2
  338. package/dist/src/server/macros/builtins/index.d.ts +2 -3
  339. package/dist/src/server/macros/builtins/index.js +51 -7
  340. package/dist/src/server/plugins/PluginContract.d.ts +1 -1
  341. package/dist/src/server/registry/contracts.d.ts +1 -1
  342. package/dist/src/server/registry/discovery.js +5 -4
  343. package/dist/src/server/registry/ensure-browser-core.js +0 -3
  344. package/dist/src/server/registry/index.js +4 -4
  345. package/dist/src/server/registry/tool-builder.d.ts +46 -0
  346. package/dist/src/server/registry/tool-builder.js +105 -0
  347. package/dist/src/server/sandbox/QuickJSSandbox.js +16 -5
  348. package/dist/src/server/sandbox/SandboxHelpers.js +250 -250
  349. package/dist/src/server/search/EmbeddingWorker.js +5 -3
  350. package/dist/src/server/search/FeedbackTracker.d.ts +9 -0
  351. package/dist/src/server/search/FeedbackTracker.js +26 -0
  352. package/dist/src/server/search/QueryNormalizer.d.ts +6 -0
  353. package/dist/src/server/search/QueryNormalizer.js +94 -0
  354. package/dist/src/server/search/ToolSearchEngineImpl.d.ts +2 -3
  355. package/dist/src/server/search/ToolSearchEngineImpl.js +38 -88
  356. package/dist/src/server/teams/TeamManager.d.ts +43 -0
  357. package/dist/src/server/teams/TeamManager.js +238 -0
  358. package/dist/src/server/teams/index.d.ts +1 -0
  359. package/dist/src/server/teams/index.js +1 -0
  360. package/dist/src/server/workflows/WorkflowContract.d.ts +44 -4
  361. package/dist/src/server/workflows/WorkflowContract.js +52 -0
  362. package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
  363. package/dist/src/server/workflows/WorkflowEngine.js +314 -4
  364. package/dist/src/types/config.d.ts +0 -14
  365. package/dist/src/types/deobfuscator.d.ts +1 -1
  366. package/dist/src/types/index.d.ts +1 -1
  367. package/dist/src/utils/DetailedDataManager.js +2 -0
  368. package/dist/src/utils/RingBuffer.js +5 -5
  369. package/dist/src/utils/TokenBudgetManager.js +1 -1
  370. package/dist/src/utils/UnifiedCacheManager.js +1 -1
  371. package/dist/src/utils/artifactRetention.js +2 -2
  372. package/dist/src/utils/betterSqlite3.d.ts +11 -0
  373. package/dist/src/utils/betterSqlite3.js +88 -0
  374. package/dist/src/utils/browserExecutable.js +2 -2
  375. package/dist/src/utils/cache/CachedDecorator.d.ts +8 -0
  376. package/dist/src/utils/cache/CachedDecorator.js +55 -0
  377. package/dist/src/utils/cache/PersistentCache.d.ts +33 -0
  378. package/dist/src/utils/cache/PersistentCache.js +246 -0
  379. package/dist/src/utils/cache/index.d.ts +2 -0
  380. package/dist/src/utils/cache/index.js +2 -0
  381. package/dist/src/utils/cliFastPath.js +5 -8
  382. package/dist/src/utils/config.js +4 -26
  383. package/dist/src/utils/environmentDoctor.js +138 -11
  384. package/dist/src/utils/outputPaths.js +16 -9
  385. package/dist/src/utils/parallel.js +1 -3
  386. package/package.json +82 -81
  387. package/scripts/postinstall.cjs +54 -27
  388. package/workflows/.gitkeep +0 -0
  389. package/workflows/anti-bot-diagnoser/.jshook-install.json +14 -0
  390. package/workflows/anti-bot-diagnoser/LICENSE +21 -0
  391. package/workflows/anti-bot-diagnoser/README.md +105 -0
  392. package/workflows/anti-bot-diagnoser/docs/agent-recipes.md +44 -0
  393. package/workflows/anti-bot-diagnoser/meta.yaml +6 -0
  394. package/workflows/anti-bot-diagnoser/package.json +22 -0
  395. package/workflows/anti-bot-diagnoser/tsconfig.json +15 -0
  396. package/workflows/anti-bot-diagnoser/workflow.ts +224 -0
  397. package/workflows/api-openapi-probe/.jshook-install.json +14 -0
  398. package/workflows/api-openapi-probe/meta.yaml +6 -0
  399. package/workflows/api-openapi-probe/package.json +22 -0
  400. package/workflows/api-openapi-probe/pnpm-lock.yaml +819 -0
  401. package/workflows/api-openapi-probe/tsconfig.json +15 -0
  402. package/workflows/api-openapi-probe/workflow.ts +40 -0
  403. package/workflows/api-probe-batch/.jshook-install.json +14 -0
  404. package/workflows/api-probe-batch/LICENSE +21 -0
  405. package/workflows/api-probe-batch/README.md +45 -0
  406. package/workflows/api-probe-batch/meta.yaml +4 -0
  407. package/workflows/api-probe-batch/package.json +23 -0
  408. package/workflows/api-probe-batch/tsconfig.json +16 -0
  409. package/workflows/api-probe-batch/workflow.ts +111 -0
  410. package/workflows/auth-bootstrap/.jshook-install.json +14 -0
  411. package/workflows/auth-bootstrap/LICENSE +21 -0
  412. package/workflows/auth-bootstrap/README.md +74 -0
  413. package/workflows/auth-bootstrap/meta.yaml +4 -0
  414. package/workflows/auth-bootstrap/package.json +23 -0
  415. package/workflows/auth-bootstrap/tsconfig.json +16 -0
  416. package/workflows/auth-bootstrap/workflow.ts +141 -0
  417. package/workflows/auth-extract/.jshook-install.json +14 -0
  418. package/workflows/auth-extract/meta.yaml +6 -0
  419. package/workflows/auth-extract/package.json +22 -0
  420. package/workflows/auth-extract/pnpm-lock.yaml +819 -0
  421. package/workflows/auth-extract/tsconfig.json +15 -0
  422. package/workflows/auth-extract/workflow.ts +36 -0
  423. package/workflows/auth-surface-mapper/.jshook-install.json +14 -0
  424. package/workflows/auth-surface-mapper/meta.yaml +6 -0
  425. package/workflows/auth-surface-mapper/package.json +22 -0
  426. package/workflows/auth-surface-mapper/pnpm-lock.yaml +819 -0
  427. package/workflows/auth-surface-mapper/tsconfig.json +15 -0
  428. package/workflows/auth-surface-mapper/workflow.ts +104 -0
  429. package/workflows/batch-register/.jshook-install.json +14 -0
  430. package/workflows/batch-register/LICENSE +21 -0
  431. package/workflows/batch-register/README.md +39 -0
  432. package/workflows/batch-register/meta.yaml +4 -0
  433. package/workflows/batch-register/package.json +23 -0
  434. package/workflows/batch-register/tsconfig.json +16 -0
  435. package/workflows/batch-register/workflow.ts +67 -0
  436. package/workflows/bundle-recovery/.jshook-install.json +14 -0
  437. package/workflows/bundle-recovery/LICENSE +21 -0
  438. package/workflows/bundle-recovery/README.md +105 -0
  439. package/workflows/bundle-recovery/docs/agent-recipes.md +44 -0
  440. package/workflows/bundle-recovery/meta.yaml +6 -0
  441. package/workflows/bundle-recovery/package.json +22 -0
  442. package/workflows/bundle-recovery/tsconfig.json +15 -0
  443. package/workflows/bundle-recovery/workflow.ts +179 -0
  444. package/workflows/challenge-detector/.jshook-install.json +14 -0
  445. package/workflows/challenge-detector/meta.yaml +14 -0
  446. package/workflows/challenge-detector/package.json +22 -0
  447. package/workflows/challenge-detector/pnpm-lock.yaml +819 -0
  448. package/workflows/challenge-detector/tsconfig.json +15 -0
  449. package/workflows/challenge-detector/workflow.ts +298 -0
  450. package/workflows/deobfuscation-pipeline/.jshook-install.json +14 -0
  451. package/workflows/deobfuscation-pipeline/meta.yaml +6 -0
  452. package/workflows/deobfuscation-pipeline/package.json +22 -0
  453. package/workflows/deobfuscation-pipeline/pnpm-lock.yaml +819 -0
  454. package/workflows/deobfuscation-pipeline/tsconfig.json +15 -0
  455. package/workflows/deobfuscation-pipeline/workflow.ts +119 -0
  456. package/workflows/electron-bridge-mapper/.jshook-install.json +14 -0
  457. package/workflows/electron-bridge-mapper/meta.yaml +6 -0
  458. package/workflows/electron-bridge-mapper/package.json +22 -0
  459. package/workflows/electron-bridge-mapper/pnpm-lock.yaml +819 -0
  460. package/workflows/electron-bridge-mapper/tsconfig.json +15 -0
  461. package/workflows/electron-bridge-mapper/workflow.ts +125 -0
  462. package/workflows/evidence-pack/.jshook-install.json +14 -0
  463. package/workflows/evidence-pack/LICENSE +21 -0
  464. package/workflows/evidence-pack/README.md +105 -0
  465. package/workflows/evidence-pack/docs/agent-recipes.md +44 -0
  466. package/workflows/evidence-pack/meta.yaml +6 -0
  467. package/workflows/evidence-pack/package.json +22 -0
  468. package/workflows/evidence-pack/tsconfig.json +15 -0
  469. package/workflows/evidence-pack/workflow.ts +154 -0
  470. package/workflows/js-bundle-search/.jshook-install.json +14 -0
  471. package/workflows/js-bundle-search/LICENSE +21 -0
  472. package/workflows/js-bundle-search/README.md +46 -0
  473. package/workflows/js-bundle-search/meta.yaml +4 -0
  474. package/workflows/js-bundle-search/package.json +23 -0
  475. package/workflows/js-bundle-search/tsconfig.json +16 -0
  476. package/workflows/js-bundle-search/workflow.ts +118 -0
  477. package/workflows/protocol-registry/.jshook-install.json +14 -0
  478. package/workflows/protocol-registry/meta.yaml +6 -0
  479. package/workflows/protocol-registry/package.json +22 -0
  480. package/workflows/protocol-registry/pnpm-lock.yaml +819 -0
  481. package/workflows/protocol-registry/tsconfig.json +15 -0
  482. package/workflows/protocol-registry/workflow.ts +107 -0
  483. package/workflows/qwen-mail-open-latest/meta.yaml +7 -0
  484. package/workflows/qwen-mail-open-latest/package.json +22 -0
  485. package/workflows/qwen-mail-open-latest/pnpm-lock.yaml +819 -0
  486. package/workflows/qwen-mail-open-latest/tsconfig.json +15 -0
  487. package/workflows/qwen-mail-open-latest/workflow.ts +77 -0
  488. package/workflows/register-account-flow/.jshook-install.json +14 -0
  489. package/workflows/register-account-flow/LICENSE +21 -0
  490. package/workflows/register-account-flow/README.md +64 -0
  491. package/workflows/register-account-flow/meta.yaml +4 -0
  492. package/workflows/register-account-flow/package.json +23 -0
  493. package/workflows/register-account-flow/tsconfig.json +16 -0
  494. package/workflows/register-account-flow/workflow.ts +127 -0
  495. package/workflows/replay-lab/.jshook-install.json +14 -0
  496. package/workflows/replay-lab/meta.yaml +6 -0
  497. package/workflows/replay-lab/package.json +22 -0
  498. package/workflows/replay-lab/pnpm-lock.yaml +819 -0
  499. package/workflows/replay-lab/tsconfig.json +15 -0
  500. package/workflows/replay-lab/workflow.ts +106 -0
  501. package/workflows/script-evidence-scan/.jshook-install.json +14 -0
  502. package/workflows/script-evidence-scan/LICENSE +21 -0
  503. package/workflows/script-evidence-scan/README.md +61 -0
  504. package/workflows/script-evidence-scan/meta.yaml +4 -0
  505. package/workflows/script-evidence-scan/package.json +23 -0
  506. package/workflows/script-evidence-scan/tsconfig.json +16 -0
  507. package/workflows/script-evidence-scan/workflow.ts +89 -0
  508. package/workflows/signature-hunter/.jshook-install.json +14 -0
  509. package/workflows/signature-hunter/LICENSE +21 -0
  510. package/workflows/signature-hunter/README.md +105 -0
  511. package/workflows/signature-hunter/docs/agent-recipes.md +44 -0
  512. package/workflows/signature-hunter/meta.yaml +6 -0
  513. package/workflows/signature-hunter/package.json +22 -0
  514. package/workflows/signature-hunter/tsconfig.json +15 -0
  515. package/workflows/signature-hunter/workflow.ts +170 -0
  516. package/workflows/signing-lineage/.jshook-install.json +14 -0
  517. package/workflows/signing-lineage/meta.yaml +6 -0
  518. package/workflows/signing-lineage/package.json +22 -0
  519. package/workflows/signing-lineage/pnpm-lock.yaml +819 -0
  520. package/workflows/signing-lineage/tsconfig.json +15 -0
  521. package/workflows/signing-lineage/workflow.ts +120 -0
  522. package/workflows/temp-mail-extract-link/.jshook-install.json +14 -0
  523. package/workflows/temp-mail-extract-link/LICENSE +21 -0
  524. package/workflows/temp-mail-extract-link/README.md +71 -0
  525. package/workflows/temp-mail-extract-link/meta.yaml +4 -0
  526. package/workflows/temp-mail-extract-link/package.json +23 -0
  527. package/workflows/temp-mail-extract-link/tsconfig.json +16 -0
  528. package/workflows/temp-mail-extract-link/workflow.ts +221 -0
  529. package/workflows/temp-mail-open-latest/.jshook-install.json +14 -0
  530. package/workflows/temp-mail-open-latest/LICENSE +21 -0
  531. package/workflows/temp-mail-open-latest/README.md +61 -0
  532. package/workflows/temp-mail-open-latest/meta.yaml +4 -0
  533. package/workflows/temp-mail-open-latest/package.json +23 -0
  534. package/workflows/temp-mail-open-latest/tsconfig.json +16 -0
  535. package/workflows/temp-mail-open-latest/workflow.ts +136 -0
  536. package/workflows/template/.jshook-install.json +14 -0
  537. package/workflows/template/LICENSE +21 -0
  538. package/workflows/template/README.md +45 -0
  539. package/workflows/template/docs/SKILL.md +111 -0
  540. package/workflows/template/meta.yaml +6 -0
  541. package/workflows/template/package.json +22 -0
  542. package/workflows/template/pnpm-lock.yaml +819 -0
  543. package/workflows/template/tsconfig.json +15 -0
  544. package/workflows/template/workflow.ts +73 -0
  545. package/workflows/web-api-capture-session/.jshook-install.json +14 -0
  546. package/workflows/web-api-capture-session/LICENSE +21 -0
  547. package/workflows/web-api-capture-session/README.md +64 -0
  548. package/workflows/web-api-capture-session/meta.yaml +4 -0
  549. package/workflows/web-api-capture-session/package.json +23 -0
  550. package/workflows/web-api-capture-session/tsconfig.json +16 -0
  551. package/workflows/web-api-capture-session/workflow.ts +124 -0
  552. package/workflows/ws-protocol-lifter/.jshook-install.json +14 -0
  553. package/workflows/ws-protocol-lifter/LICENSE +21 -0
  554. package/workflows/ws-protocol-lifter/README.md +105 -0
  555. package/workflows/ws-protocol-lifter/docs/agent-recipes.md +44 -0
  556. package/workflows/ws-protocol-lifter/meta.yaml +6 -0
  557. package/workflows/ws-protocol-lifter/package.json +22 -0
  558. package/workflows/ws-protocol-lifter/tsconfig.json +15 -0
  559. package/workflows/ws-protocol-lifter/workflow.ts +163 -0
  560. package/dist/src/modules/analyzer/AISummarizer.d.ts +0 -39
  561. package/dist/src/modules/analyzer/AISummarizer.js +0 -122
  562. package/dist/src/modules/hook/AIHookGenerator.d.ts +0 -52
  563. package/dist/src/modules/hook/AIHookGenerator.js +0 -360
  564. package/dist/src/modules/hook/AIHookGeneratorTemplates.d.ts +0 -9
  565. package/dist/src/modules/hook/AIHookGeneratorTemplates.js +0 -157
  566. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.d.ts +0 -2
  567. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.js +0 -25
  568. package/dist/src/server/macros/builtins/unpacker-flow.d.ts +0 -2
  569. package/dist/src/server/macros/builtins/unpacker-flow.js +0 -25
  570. package/dist/src/services/LLMService.d.ts +0 -37
  571. package/dist/src/services/LLMService.js +0 -233
  572. package/dist/src/services/prompts/analysis.d.ts +0 -9
  573. package/dist/src/services/prompts/analysis.js +0 -158
  574. package/dist/src/services/prompts/crypto.d.ts +0 -2
  575. package/dist/src/services/prompts/crypto.js +0 -108
  576. package/dist/src/services/prompts/deobfuscation.d.ts +0 -6
  577. package/dist/src/services/prompts/deobfuscation.js +0 -300
  578. package/dist/src/services/prompts/environment.d.ts +0 -16
  579. package/dist/src/services/prompts/environment.js +0 -372
  580. package/dist/src/services/prompts/intelligence.d.ts +0 -4
  581. package/dist/src/services/prompts/intelligence.js +0 -250
  582. package/dist/src/services/prompts/taint.d.ts +0 -2
  583. package/dist/src/services/prompts/taint.js +0 -54
@@ -3,18 +3,13 @@ import traverse from '@babel/traverse';
3
3
  import { existsSync } from 'fs';
4
4
  import { logger } from '../../utils/logger.js';
5
5
  import { chromeEnvironmentTemplate } from '../emulator/templates/chrome-env.js';
6
- import { generateMissingAPIImplementationsMessages, generateMissingVariablesMessages, } from '../../services/prompts/environment.js';
7
6
  import { generateEmulationCode, generateRecommendations } from '../emulator/EmulatorCodeGen.js';
8
7
  import { findBrowserExecutable } from '../../utils/browserExecutable.js';
9
8
  import { fetchRealEnvironmentData } from '../emulator/EnvironmentEmulatorFetch.js';
10
9
  export class EnvironmentEmulator {
11
10
  browser;
12
- llm;
13
- constructor(llm) {
14
- this.llm = llm;
15
- if (!llm) {
16
- logger.debug('LLM service unavailable, skipping AI environment analysis');
17
- }
11
+ constructor(legacyDependency) {
12
+ void legacyDependency;
18
13
  }
19
14
  async analyze(options) {
20
15
  const startTime = Date.now();
@@ -31,16 +26,7 @@ export class EnvironmentEmulator {
31
26
  else {
32
27
  variableManifest = this.buildManifestFromTemplate(detectedVariables, browserType);
33
28
  }
34
- if (this.llm) {
35
- logger.info(' AI...');
36
- const aiInferredVars = await this.inferMissingVariablesWithAI(code, detectedVariables, variableManifest, browserType);
37
- Object.assign(variableManifest, { ...aiInferredVars, ...variableManifest });
38
- }
39
29
  const missingAPIs = this.identifyMissingAPIs(detectedVariables, variableManifest);
40
- if (this.llm && missingAPIs.length > 0) {
41
- logger.info(` AI ${missingAPIs.length} API...`);
42
- await this.generateMissingAPIImplementationsWithAI(missingAPIs, code, variableManifest);
43
- }
44
30
  logger.info(' ...');
45
31
  const emulationCode = generateEmulationCode(variableManifest, targetRuntime, includeComments);
46
32
  const recommendations = generateRecommendations(detectedVariables, missingAPIs);
@@ -84,15 +70,14 @@ export class EnvironmentEmulator {
84
70
  sourceType: 'unambiguous',
85
71
  plugins: ['jsx', 'typescript'],
86
72
  });
87
- const self = this;
88
73
  traverse(ast, {
89
- MemberExpression(path) {
90
- const fullPath = self.getMemberExpressionPath(path.node);
74
+ MemberExpression: (path) => {
75
+ const fullPath = this.getMemberExpressionPath(path.node);
91
76
  if (fullPath) {
92
77
  accessedPaths.add(fullPath);
93
78
  }
94
79
  },
95
- Identifier(path) {
80
+ Identifier: (path) => {
96
81
  const name = path.node.name;
97
82
  if ([
98
83
  'window',
@@ -132,7 +117,7 @@ export class EnvironmentEmulator {
132
117
  }
133
118
  }
134
119
  for (const key of Object.keys(detected)) {
135
- detected[key] = Array.from(new Set(detected[key])).sort();
120
+ detected[key] = Array.from(new Set(detected[key])).toSorted();
136
121
  }
137
122
  }
138
123
  catch (error) {
@@ -182,7 +167,7 @@ export class EnvironmentEmulator {
182
167
  detected[category].push(...matches);
183
168
  }
184
169
  for (const key of Object.keys(detected)) {
185
- detected[key] = Array.from(new Set(detected[key])).sort();
170
+ detected[key] = Array.from(new Set(detected[key])).toSorted();
186
171
  }
187
172
  }
188
173
  buildManifestFromTemplate(detected, _browserType) {
@@ -307,75 +292,6 @@ export class EnvironmentEmulator {
307
292
  return `null: ${path} = null`;
308
293
  }
309
294
  }
310
- async generateMissingAPIImplementationsWithAI(missingAPIs, code, manifest) {
311
- if (!this.llm || missingAPIs.length === 0) {
312
- return;
313
- }
314
- try {
315
- const apisToGenerate = missingAPIs.slice(0, 10);
316
- const response = await this.llm.chat(generateMissingAPIImplementationsMessages(apisToGenerate, code));
317
- const jsonMatch = response.content.match(/```json\s*([\s\S]*?)\s*```/) ||
318
- response.content.match(/\{[\s\S]*\}/);
319
- if (jsonMatch) {
320
- const jsonStr = jsonMatch[1] || jsonMatch[0];
321
- const implementations = JSON.parse(jsonStr);
322
- if (!this.isRecord(implementations)) {
323
- return;
324
- }
325
- let addedCount = 0;
326
- for (const [path, impl] of Object.entries(implementations)) {
327
- if (typeof impl === 'string' && impl.trim()) {
328
- manifest[path] = impl;
329
- addedCount++;
330
- }
331
- }
332
- logger.info(` AI ${addedCount} API`);
333
- }
334
- }
335
- catch (error) {
336
- logger.error('AIAPI', error);
337
- }
338
- }
339
- async inferMissingVariablesWithAI(code, detected, existingManifest, browserType) {
340
- if (!this.llm) {
341
- return {};
342
- }
343
- try {
344
- const allDetectedPaths = [
345
- ...detected.window,
346
- ...detected.document,
347
- ...detected.navigator,
348
- ...detected.location,
349
- ...detected.screen,
350
- ...detected.other,
351
- ];
352
- const missingPaths = allDetectedPaths.filter((path) => !(path in existingManifest));
353
- if (missingPaths.length === 0) {
354
- logger.info('Environment analysis complete, AI suggestions applied');
355
- return {};
356
- }
357
- logger.info(` AI ${missingPaths.length} ...`);
358
- const response = await this.llm.chat(generateMissingVariablesMessages(browserType, missingPaths, code, existingManifest));
359
- const jsonMatch = response.content.match(/```json\s*([\s\S]*?)\s*```/) ||
360
- response.content.match(/\{[\s\S]*\}/);
361
- if (jsonMatch) {
362
- const jsonStr = jsonMatch[1] || jsonMatch[0];
363
- const inferredVars = JSON.parse(jsonStr);
364
- if (!this.isRecord(inferredVars)) {
365
- logger.warn('AIJSON');
366
- return {};
367
- }
368
- logger.info(` AI ${Object.keys(inferredVars).length} `);
369
- return inferredVars;
370
- }
371
- logger.warn('AIJSON');
372
- return {};
373
- }
374
- catch (error) {
375
- logger.error('AI', error);
376
- return {};
377
- }
378
- }
379
295
  async cleanup() {
380
296
  if (this.browser) {
381
297
  await this.browser.close();
@@ -1,5 +1,6 @@
1
1
  import puppeteer from 'rebrowser-puppeteer-core';
2
2
  import { logger } from '../../utils/logger.js';
3
+ const launchBrowser = Reflect.get(puppeteer, 'launch');
3
4
  export async function fetchRealEnvironmentData(params) {
4
5
  const { url, detected, depth, resolveExecutablePath, buildManifestFromTemplate } = params;
5
6
  const manifest = {};
@@ -26,67 +27,64 @@ export async function fetchRealEnvironmentData(params) {
26
27
  if (executablePath) {
27
28
  launchOptions.executablePath = executablePath;
28
29
  }
29
- browser = await puppeteer.launch(launchOptions);
30
+ browser = await launchBrowser(launchOptions);
30
31
  }
31
32
  page = await browser.newPage();
32
33
  await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36');
33
34
  await page.evaluateOnNewDocument(() => {
34
35
  const typedWindow = window;
35
- const setChromeObject = (target) => {
36
- target.chrome = {
37
- runtime: {
38
- connect: () => { },
39
- sendMessage: () => { },
40
- onMessage: {
41
- addListener: () => { },
42
- removeListener: () => { },
43
- },
44
- },
45
- loadTimes: function () {
46
- return {
47
- commitLoadTime: Date.now() / 1000 - Math.random() * 10,
48
- connectionInfo: 'http/1.1',
49
- finishDocumentLoadTime: Date.now() / 1000 - Math.random() * 5,
50
- finishLoadTime: Date.now() / 1000 - Math.random() * 3,
51
- firstPaintAfterLoadTime: 0,
52
- firstPaintTime: Date.now() / 1000 - Math.random() * 8,
53
- navigationType: 'Other',
54
- npnNegotiatedProtocol: 'http/1.1',
55
- requestTime: Date.now() / 1000 - Math.random() * 15,
56
- startLoadTime: Date.now() / 1000 - Math.random() * 12,
57
- wasAlternateProtocolAvailable: false,
58
- wasFetchedViaSpdy: false,
59
- wasNpnNegotiated: true,
60
- };
61
- },
62
- csi: function () {
63
- return {
64
- onloadT: Date.now(),
65
- pageT: Math.random() * 1000,
66
- startE: Date.now() - Math.random() * 5000,
67
- tran: 15,
68
- };
69
- },
70
- app: {
71
- isInstalled: false,
72
- InstallState: {
73
- DISABLED: 'disabled',
74
- INSTALLED: 'installed',
75
- NOT_INSTALLED: 'not_installed',
76
- },
77
- RunningState: {
78
- CANNOT_RUN: 'cannot_run',
79
- READY_TO_RUN: 'ready_to_run',
80
- RUNNING: 'running',
81
- },
82
- },
83
- };
84
- };
85
36
  Object.defineProperty(navigator, 'webdriver', {
86
37
  get: () => undefined,
87
38
  configurable: true,
88
39
  });
89
- setChromeObject(typedWindow);
40
+ typedWindow.chrome = {
41
+ runtime: {
42
+ connect: () => { },
43
+ sendMessage: () => { },
44
+ onMessage: {
45
+ addListener: () => { },
46
+ removeListener: () => { },
47
+ },
48
+ },
49
+ loadTimes: function () {
50
+ return {
51
+ commitLoadTime: Date.now() / 1000 - Math.random() * 10,
52
+ connectionInfo: 'http/1.1',
53
+ finishDocumentLoadTime: Date.now() / 1000 - Math.random() * 5,
54
+ finishLoadTime: Date.now() / 1000 - Math.random() * 3,
55
+ firstPaintAfterLoadTime: 0,
56
+ firstPaintTime: Date.now() / 1000 - Math.random() * 8,
57
+ navigationType: 'Other',
58
+ npnNegotiatedProtocol: 'http/1.1',
59
+ requestTime: Date.now() / 1000 - Math.random() * 15,
60
+ startLoadTime: Date.now() / 1000 - Math.random() * 12,
61
+ wasAlternateProtocolAvailable: false,
62
+ wasFetchedViaSpdy: false,
63
+ wasNpnNegotiated: true,
64
+ };
65
+ },
66
+ csi: function () {
67
+ return {
68
+ onloadT: Date.now(),
69
+ pageT: Math.random() * 1000,
70
+ startE: Date.now() - Math.random() * 5000,
71
+ tran: 15,
72
+ };
73
+ },
74
+ app: {
75
+ isInstalled: false,
76
+ InstallState: {
77
+ DISABLED: 'disabled',
78
+ INSTALLED: 'installed',
79
+ NOT_INSTALLED: 'not_installed',
80
+ },
81
+ RunningState: {
82
+ CANNOT_RUN: 'cannot_run',
83
+ READY_TO_RUN: 'ready_to_run',
84
+ RUNNING: 'running',
85
+ },
86
+ },
87
+ };
90
88
  Object.defineProperty(navigator, 'plugins', {
91
89
  get: () => {
92
90
  const pluginArray = [
@@ -170,13 +168,12 @@ export async function fetchRealEnvironmentData(params) {
170
168
  const extractedValues = await page.evaluate((paths, maxDepth) => {
171
169
  const result = {};
172
170
  const seen = new WeakSet();
173
- const isObjectLike = (value) => typeof value === 'object' && value !== null;
174
171
  function extractValue(path) {
175
172
  try {
176
173
  const parts = path.split('.');
177
174
  let current = window;
178
175
  for (const part of parts) {
179
- if (isObjectLike(current) && part in current) {
176
+ if (typeof current === 'object' && current !== null && part in current) {
180
177
  current = current[part];
181
178
  }
182
179
  else {
@@ -189,8 +186,8 @@ export async function fetchRealEnvironmentData(params) {
189
186
  return `[Error: ${error.message}]`;
190
187
  }
191
188
  }
192
- function serializeValue(value, depth, seenObjects) {
193
- if (depth <= 0)
189
+ function serializeValue(value, recurseDepth, seenObjects) {
190
+ if (recurseDepth <= 0)
194
191
  return '[Max Depth]';
195
192
  if (value === null)
196
193
  return null;
@@ -213,20 +210,20 @@ export async function fetchRealEnvironmentData(params) {
213
210
  return '[Function]';
214
211
  }
215
212
  }
216
- if (isObjectLike(value) && seenObjects.has(value)) {
213
+ if (typeof value === 'object' && value !== null && seenObjects.has(value)) {
217
214
  return '[Circular Reference]';
218
215
  }
219
216
  if (Array.isArray(value)) {
220
217
  seenObjects.add(value);
221
218
  const arr = value
222
219
  .slice(0, 20)
223
- .map((item) => serializeValue(item, depth - 1, seenObjects));
220
+ .map((item) => serializeValue(item, recurseDepth - 1, seenObjects));
224
221
  if (value.length > 20) {
225
222
  arr.push(`[... ${value.length - 20} more items]`);
226
223
  }
227
224
  return arr;
228
225
  }
229
- if (isObjectLike(value)) {
226
+ if (typeof value === 'object' && value !== null) {
230
227
  seenObjects.add(value);
231
228
  const serialized = {};
232
229
  const allKeys = Object.getOwnPropertyNames(value);
@@ -237,14 +234,14 @@ export async function fetchRealEnvironmentData(params) {
237
234
  if (descriptor) {
238
235
  if (descriptor.get) {
239
236
  try {
240
- serialized[key] = serializeValue(value[key], depth - 1, seenObjects);
237
+ serialized[key] = serializeValue(value[key], recurseDepth - 1, seenObjects);
241
238
  }
242
239
  catch {
243
240
  serialized[key] = '[Getter Error]';
244
241
  }
245
242
  }
246
243
  else if (descriptor.value !== undefined) {
247
- serialized[key] = serializeValue(descriptor.value, depth - 1, seenObjects);
244
+ serialized[key] = serializeValue(descriptor.value, recurseDepth - 1, seenObjects);
248
245
  }
249
246
  }
250
247
  }
@@ -162,17 +162,21 @@ export declare const chromeEnvironmentTemplate: {
162
162
  };
163
163
  };
164
164
  WebSocket: {
165
- new (_url: string): {
165
+ new (): {
166
166
  send(): void;
167
167
  close(): void;
168
168
  addEventListener(): void;
169
169
  };
170
170
  };
171
171
  Blob: {
172
- new (_parts: unknown[], _options?: unknown): {};
172
+ new (): {
173
+ size: number;
174
+ type: string;
175
+ };
173
176
  };
174
177
  File: {
175
- new (parts: BlobPart[], _name: string, options?: BlobPropertyBag): {
178
+ new (parts: BlobPart[], name: string, options?: BlobPropertyBag): {
179
+ name: string;
176
180
  readonly size: number;
177
181
  readonly type: string;
178
182
  arrayBuffer(): Promise<ArrayBuffer>;
@@ -202,16 +206,22 @@ export declare const chromeEnvironmentTemplate: {
202
206
  };
203
207
  };
204
208
  Request: {
205
- new (_input: unknown, _init?: unknown): {};
209
+ new (): {
210
+ clone(): any;
211
+ };
206
212
  };
207
213
  Response: {
208
- new (_body?: unknown, _init?: unknown): {};
214
+ new (): {
215
+ clone(): any;
216
+ };
209
217
  };
210
218
  URL: {
211
- new (_url: string, _base?: string): {};
219
+ new (): {
220
+ toString(): string;
221
+ };
212
222
  };
213
223
  URLSearchParams: {
214
- new (_init?: unknown): {
224
+ new (): {
215
225
  append(): void;
216
226
  delete(): void;
217
227
  get(): void;
@@ -161,17 +161,19 @@ export const chromeEnvironmentTemplate = {
161
161
  addEventListener() { }
162
162
  },
163
163
  WebSocket: class WebSocket {
164
- constructor(_url) { }
165
164
  send() { }
166
165
  close() { }
167
166
  addEventListener() { }
168
167
  },
169
168
  Blob: class Blob {
170
- constructor(_parts, _options) { }
169
+ size = 0;
170
+ type = '';
171
171
  },
172
172
  File: class File extends Blob {
173
- constructor(parts, _name, options) {
173
+ name = '';
174
+ constructor(parts, name, options) {
174
175
  super(parts, options);
176
+ this.name = name;
175
177
  }
176
178
  },
177
179
  FormData: class FormData {
@@ -190,16 +192,21 @@ export const chromeEnvironmentTemplate = {
190
192
  set() { }
191
193
  },
192
194
  Request: class Request {
193
- constructor(_input, _init) { }
195
+ clone() {
196
+ return this;
197
+ }
194
198
  },
195
199
  Response: class Response {
196
- constructor(_body, _init) { }
200
+ clone() {
201
+ return this;
202
+ }
197
203
  },
198
204
  URL: class URL {
199
- constructor(_url, _base) { }
205
+ toString() {
206
+ return '';
207
+ }
200
208
  },
201
209
  URLSearchParams: class URLSearchParams {
202
- constructor(_init) { }
203
210
  append() { }
204
211
  delete() { }
205
212
  get() { }
@@ -1,5 +1,5 @@
1
1
  import { spawn } from 'node:child_process';
2
- import { resolve, relative, sep } from 'node:path';
2
+ import { resolve, relative, sep, isAbsolute } from 'node:path';
3
3
  import { getProjectRoot } from '../../utils/outputPaths.js';
4
4
  import { logger } from '../../utils/logger.js';
5
5
  import { ioLimit } from '../../utils/concurrency.js';
@@ -37,9 +37,16 @@ export class ExternalToolRunner {
37
37
  const args = [...(spec.defaultArgs || []), ...request.args];
38
38
  const env = { PATH: process.env.PATH || '' };
39
39
  if (process.platform === 'win32') {
40
- env.SYSTEMROOT = process.env.SYSTEMROOT || 'C:\\Windows';
41
- env.TEMP = process.env.TEMP || '';
42
- env.TMP = process.env.TMP || '';
40
+ const systemRoot = process.env.SYSTEMROOT || process.env.SystemRoot || process.env.WINDIR;
41
+ if (systemRoot) {
42
+ env.SYSTEMROOT = systemRoot;
43
+ }
44
+ if (process.env.TEMP) {
45
+ env.TEMP = process.env.TEMP;
46
+ }
47
+ if (process.env.TMP) {
48
+ env.TMP = process.env.TMP;
49
+ }
43
50
  }
44
51
  if (spec.envAllowlist) {
45
52
  for (const key of spec.envAllowlist) {
@@ -66,13 +73,23 @@ export class ExternalToolRunner {
66
73
  let stdoutTruncated = false;
67
74
  let stderrTruncated = false;
68
75
  let settled = false;
69
- let timeoutHandle;
76
+ const timeoutHandle = setTimeout(() => {
77
+ if (!settled) {
78
+ child.kill('SIGTERM');
79
+ setTimeout(() => {
80
+ if (!settled) {
81
+ child.kill('SIGKILL');
82
+ finish(null, 'SIGKILL');
83
+ }
84
+ }, EXTERNAL_TOOL_FORCE_KILL_GRACE_MS);
85
+ request.onProgress?.({ phase: 'timeout', ts: Date.now() });
86
+ }
87
+ }, timeoutMs);
70
88
  const finish = (exitCode, signal) => {
71
89
  if (settled)
72
90
  return;
73
91
  settled = true;
74
- if (timeoutHandle)
75
- clearTimeout(timeoutHandle);
92
+ clearTimeout(timeoutHandle);
76
93
  const durationMs = Date.now() - startTime;
77
94
  const result = {
78
95
  ok: exitCode === 0,
@@ -91,18 +108,6 @@ export class ExternalToolRunner {
91
108
  }
92
109
  resolvePromise(result);
93
110
  };
94
- timeoutHandle = setTimeout(() => {
95
- if (!settled) {
96
- child.kill('SIGTERM');
97
- setTimeout(() => {
98
- if (!settled) {
99
- child.kill('SIGKILL');
100
- finish(null, 'SIGKILL');
101
- }
102
- }, EXTERNAL_TOOL_FORCE_KILL_GRACE_MS);
103
- request.onProgress?.({ phase: 'timeout', ts: Date.now() });
104
- }
105
- }, timeoutMs);
106
111
  if (request.stdin) {
107
112
  child.stdin.write(request.stdin);
108
113
  child.stdin.end();
@@ -153,13 +158,11 @@ export class ExternalToolRunner {
153
158
  const resolved = resolve(requestedCwd);
154
159
  const projectRoot = getProjectRoot();
155
160
  const rel = relative(projectRoot, resolved);
156
- if (rel && !rel.startsWith('..') && !resolve(rel).startsWith(sep)) {
161
+ if (rel && !rel.startsWith('..') && !isAbsolute(rel)) {
157
162
  return resolved;
158
163
  }
159
164
  const tmpDirs = [process.env.TEMP, process.env.TMP, '/tmp', '/var/tmp'].filter(Boolean);
160
165
  for (const tmp of tmpDirs) {
161
- if (!tmp)
162
- continue;
163
166
  const resolvedTmp = resolve(tmp);
164
167
  if (resolved === resolvedTmp || resolved.startsWith(resolvedTmp + sep)) {
165
168
  return resolved;
@@ -1,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
  }