@jshookmcp/jshook 0.2.2 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. package/LICENSE +661 -661
  2. package/README.md +15 -6
  3. package/README.zh.md +19 -4
  4. package/dist/native/scripts/linux/enum-windows.sh +12 -12
  5. package/dist/native/scripts/macos/enum-windows.applescript +22 -22
  6. package/dist/native/scripts/windows/enum-windows-by-class.ps1 +51 -51
  7. package/dist/native/scripts/windows/enum-windows.ps1 +44 -44
  8. package/dist/native/scripts/windows/inject-dll.ps1 +21 -21
  9. package/dist/packages/extension-sdk/src/bridges/shared.js +2 -2
  10. package/dist/packages/extension-sdk/src/plugin.d.ts +5 -0
  11. package/dist/packages/extension-sdk/src/plugin.js +119 -33
  12. package/dist/packages/extension-sdk/src/workflow.d.ts +156 -0
  13. package/dist/packages/extension-sdk/src/workflow.js +236 -0
  14. package/dist/src/config/search-defaults.js +161 -0
  15. package/dist/src/constants.d.ts +3 -0
  16. package/dist/src/constants.js +4 -1
  17. package/dist/src/index.d.ts +1 -1
  18. package/dist/src/index.js +13 -17
  19. package/dist/src/modules/analyzer/CodeAnalyzer.d.ts +1 -3
  20. package/dist/src/modules/analyzer/CodeAnalyzer.js +16 -28
  21. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.d.ts +1 -2
  22. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.js +1 -45
  23. package/dist/src/modules/analyzer/IntelligentAnalyzer.d.ts +1 -37
  24. package/dist/src/modules/analyzer/IntelligentAnalyzer.js +9 -142
  25. package/dist/src/modules/analyzer/PatternDetector.js +3 -3
  26. package/dist/src/modules/analyzer/PatternDetectorAuthPatterns.js +1 -1
  27. package/dist/src/modules/browser/BrowserDiscovery.d.ts +6 -5
  28. package/dist/src/modules/browser/BrowserDiscovery.js +3 -3
  29. package/dist/src/modules/browser/BrowserModeManager.d.ts +1 -1
  30. package/dist/src/modules/browser/BrowserModeManager.js +11 -10
  31. package/dist/src/modules/browser/TabRegistry.js +2 -2
  32. package/dist/src/modules/browser/UnifiedBrowserManager.d.ts +1 -0
  33. package/dist/src/modules/browser/UnifiedBrowserManager.js +19 -4
  34. package/dist/src/modules/captcha/AICaptchaDetector.d.ts +14 -23
  35. package/dist/src/modules/captcha/AICaptchaDetector.js +8 -202
  36. package/dist/src/modules/captcha/CaptchaDetector.d.ts +31 -17
  37. package/dist/src/modules/captcha/CaptchaDetector.js +1 -1
  38. package/dist/src/modules/collector/CodeCache.d.ts +2 -2
  39. package/dist/src/modules/collector/CodeCollector.d.ts +12 -9
  40. package/dist/src/modules/collector/CodeCollector.js +5 -6
  41. package/dist/src/modules/collector/DOMInspector.d.ts +3 -2
  42. package/dist/src/modules/collector/DOMInspector.js +49 -59
  43. package/dist/src/modules/collector/PageController.d.ts +17 -4
  44. package/dist/src/modules/collector/PageController.js +2 -5
  45. package/dist/src/modules/collector/PageScriptCollectors.js +3 -3
  46. package/dist/src/modules/crypto/CryptoDetector.d.ts +1 -4
  47. package/dist/src/modules/crypto/CryptoDetector.js +2 -42
  48. package/dist/src/modules/crypto/CryptoRules.js +1 -1
  49. package/dist/src/modules/debugger/BlackboxManager.js +1 -1
  50. package/dist/src/modules/debugger/DebuggerManager.impl.core.scope.js +1 -1
  51. package/dist/src/modules/debugger/ScriptManager.impl.extract-function-tree.js +5 -3
  52. package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
  53. package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
  54. package/dist/src/modules/deobfuscator/Deobfuscator.js +4 -39
  55. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.d.ts +0 -3
  56. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.js +2 -8
  57. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.d.ts +2 -3
  58. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +5 -57
  59. package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
  60. package/dist/src/modules/deobfuscator/PackerDeobfuscator.js +1 -1
  61. package/dist/src/modules/deobfuscator/VMDeobfuscator.d.ts +2 -10
  62. package/dist/src/modules/deobfuscator/VMDeobfuscator.js +3 -128
  63. package/dist/src/modules/deobfuscator/webcrack.js +15 -2
  64. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.d.ts +5 -8
  65. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.js +10 -102
  66. package/dist/src/modules/emulator/EnvironmentEmulator.d.ts +1 -5
  67. package/dist/src/modules/emulator/EnvironmentEmulator.js +7 -91
  68. package/dist/src/modules/emulator/EnvironmentEmulatorFetch.js +58 -61
  69. package/dist/src/modules/emulator/templates/chrome-env.d.ts +17 -7
  70. package/dist/src/modules/emulator/templates/chrome-env.js +14 -7
  71. package/dist/src/modules/external/ExternalToolRunner.d.ts +1 -1
  72. package/dist/src/modules/external/ExternalToolRunner.js +26 -23
  73. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.d.ts +13 -0
  74. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.js +42 -0
  75. package/dist/src/modules/monitor/FetchInterceptor.d.ts +46 -0
  76. package/dist/src/modules/monitor/FetchInterceptor.js +191 -0
  77. package/dist/src/modules/monitor/PerformanceMonitor.js +8 -7
  78. package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
  79. package/dist/src/modules/process/LinuxProcessManager.js +4 -2
  80. package/dist/src/modules/process/MacProcessManager.js +1 -1
  81. package/dist/src/modules/process/MemoryManager.d.ts +1 -1
  82. package/dist/src/modules/process/MemoryManager.js +2 -2
  83. package/dist/src/modules/process/ProcessManager.impl.js +1 -1
  84. package/dist/src/modules/process/memory/AuditTrail.js +1 -1
  85. package/dist/src/modules/process/memory/reader.js +35 -3
  86. package/dist/src/modules/process/memory/regions.enumerate.js +1 -1
  87. package/dist/src/modules/process/memory/regions.protection.js +42 -9
  88. package/dist/src/modules/process/memory/scanner.d.ts +5 -1
  89. package/dist/src/modules/process/memory/scanner.darwin.js +57 -0
  90. package/dist/src/modules/process/memory/scanner.js +88 -4
  91. package/dist/src/modules/process/memory/writer.js +44 -4
  92. package/dist/src/modules/security/ExecutionSandbox.js +7 -8
  93. package/dist/src/modules/stealth/FingerprintManager.js +1 -1
  94. package/dist/src/modules/stealth/StealthScripts.d.ts +4 -2
  95. package/dist/src/modules/stealth/StealthScripts.js +53 -14
  96. package/dist/src/modules/stealth/StealthVerifier.d.ts +1 -1
  97. package/dist/src/modules/stealth/StealthVerifier.js +2 -4
  98. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.d.ts +14 -0
  99. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.js +181 -2
  100. package/dist/src/modules/trace/TraceDB.js +12 -6
  101. package/dist/src/modules/trace/TraceRecorder.js +1 -5
  102. package/dist/src/native/AntiCheatDetector.js +67 -16
  103. package/dist/src/native/CodeInjector.js +4 -4
  104. package/dist/src/native/HardwareBreakpoint.js +25 -16
  105. package/dist/src/native/HeapAnalyzer.js +2 -2
  106. package/dist/src/native/MemoryController.js +1 -1
  107. package/dist/src/native/MemoryScanSession.js +2 -2
  108. package/dist/src/native/MemoryScanner.js +4 -8
  109. package/dist/src/native/NativeMemoryManager.impl.js +2 -2
  110. package/dist/src/native/PEAnalyzer.js +14 -15
  111. package/dist/src/native/PointerChainEngine.js +2 -4
  112. package/dist/src/native/ScriptLoader.js +4 -9
  113. package/dist/src/native/Speedhack.js +1 -1
  114. package/dist/src/native/StructureAnalyzer.js +52 -33
  115. package/dist/src/native/Win32API.d.ts +1 -0
  116. package/dist/src/native/Win32API.js +13 -0
  117. package/dist/src/native/Win32Debug.js +19 -19
  118. package/dist/src/native/platform/darwin/DarwinAPI.d.ts +2 -0
  119. package/dist/src/native/platform/darwin/DarwinAPI.js +8 -0
  120. package/dist/src/native/platform/darwin/DarwinMemoryProvider.js +6 -1
  121. package/dist/src/server/MCPServer.context.d.ts +2 -1
  122. package/dist/src/server/MCPServer.d.ts +2 -1
  123. package/dist/src/server/MCPServer.domain.d.ts +1 -1
  124. package/dist/src/server/MCPServer.domain.js +81 -16
  125. package/dist/src/server/MCPServer.js +42 -14
  126. package/dist/src/server/MCPServer.resources.d.ts +2 -0
  127. package/dist/src/server/MCPServer.resources.js +91 -0
  128. package/dist/src/server/MCPServer.search.handlers.call.js +2 -1
  129. package/dist/src/server/MCPServer.search.helpers.js +2 -2
  130. package/dist/src/server/MCPServer.tools.js +1 -1
  131. package/dist/src/server/MCPServer.transport.js +12 -0
  132. package/dist/src/server/ToolCallContextGuard.d.ts +5 -0
  133. package/dist/src/server/ToolCallContextGuard.js +85 -0
  134. package/dist/src/server/ToolRouter.d.ts +26 -10
  135. package/dist/src/server/ToolRouter.intent.d.ts +26 -0
  136. package/dist/src/server/ToolRouter.intent.js +77 -0
  137. package/dist/src/server/ToolRouter.js +103 -284
  138. package/dist/src/server/ToolRouter.policy.d.ts +22 -0
  139. package/dist/src/server/ToolRouter.policy.js +163 -0
  140. package/dist/src/server/ToolRouter.probe.d.ts +17 -0
  141. package/dist/src/server/ToolRouter.probe.js +103 -0
  142. package/dist/src/server/ToolRouter.renderer.d.ts +9 -0
  143. package/dist/src/server/ToolRouter.renderer.js +52 -0
  144. package/dist/src/server/activation/ActivationController.js +15 -12
  145. package/dist/src/server/activation/CompoundConditionEngine.js +1 -1
  146. package/dist/src/server/activation/PredictiveBooster.js +1 -3
  147. package/dist/src/server/domains/analysis/definitions.js +155 -655
  148. package/dist/src/server/domains/analysis/handlers.impl.d.ts +8 -8
  149. package/dist/src/server/domains/analysis/handlers.impl.js +34 -28
  150. package/dist/src/server/domains/analysis/handlers.web-tools.js +4 -3
  151. package/dist/src/server/domains/analysis/manifest.js +6 -4
  152. package/dist/src/server/domains/antidebug/definitions.js +25 -111
  153. package/dist/src/server/domains/browser/definitions.tools.advanced.js +59 -88
  154. package/dist/src/server/domains/browser/definitions.tools.behavior.js +120 -227
  155. package/dist/src/server/domains/browser/definitions.tools.page-core.js +157 -386
  156. package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
  157. package/dist/src/server/domains/browser/definitions.tools.runtime.js +61 -174
  158. package/dist/src/server/domains/browser/definitions.tools.security.js +92 -237
  159. package/dist/src/server/domains/browser/handlers/camoufox-browser.js +3 -2
  160. package/dist/src/server/domains/browser/handlers/captcha-solver.js +3 -3
  161. package/dist/src/server/domains/browser/handlers/dom-query.js +2 -1
  162. package/dist/src/server/domains/browser/handlers/facade-initializer.d.ts +3 -3
  163. package/dist/src/server/domains/browser/handlers/facade-initializer.js +3 -3
  164. package/dist/src/server/domains/browser/handlers/framework-state.js +231 -3
  165. package/dist/src/server/domains/browser/handlers/indexeddb-dump.js +21 -20
  166. package/dist/src/server/domains/browser/handlers/script-management.js +1 -1
  167. package/dist/src/server/domains/browser/handlers/stealth-injection.js +8 -2
  168. package/dist/src/server/domains/browser/handlers.impl.d.ts +15 -12
  169. package/dist/src/server/domains/browser/handlers.impl.js +5 -6
  170. package/dist/src/server/domains/browser/manifest.js +37 -13
  171. package/dist/src/server/domains/coordination/definitions.js +50 -149
  172. package/dist/src/server/domains/coordination/index.d.ts +20 -1
  173. package/dist/src/server/domains/coordination/index.js +133 -0
  174. package/dist/src/server/domains/coordination/manifest.js +15 -0
  175. package/dist/src/server/domains/debugger/definitions.tools.advanced.js +72 -189
  176. package/dist/src/server/domains/debugger/definitions.tools.core.js +114 -288
  177. package/dist/src/server/domains/debugger/manifest.js +9 -2
  178. package/dist/src/server/domains/encoding/definitions.js +43 -153
  179. package/dist/src/server/domains/encoding/handlers.base.js +2 -2
  180. package/dist/src/server/domains/evidence/definitions.d.ts +2 -0
  181. package/dist/src/server/domains/evidence/definitions.js +42 -0
  182. package/dist/src/server/domains/evidence/handlers.d.ts +582 -0
  183. package/dist/src/server/domains/evidence/handlers.js +60 -0
  184. package/dist/src/server/domains/evidence/index.d.ts +2 -0
  185. package/dist/src/server/domains/evidence/index.js +2 -0
  186. package/dist/src/server/domains/evidence/manifest.d.ts +63 -0
  187. package/dist/src/server/domains/evidence/manifest.js +78 -0
  188. package/dist/src/server/domains/graphql/definitions.js +53 -141
  189. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.replay.js +92 -114
  190. package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
  191. package/dist/src/server/domains/hooks/ai-handlers.js +4 -70
  192. package/dist/src/server/domains/hooks/definitions.js +69 -335
  193. package/dist/src/server/domains/hooks/manifest.d.ts +1 -1
  194. package/dist/src/server/domains/hooks/manifest.js +1 -2
  195. package/dist/src/server/domains/instrumentation/definitions.d.ts +2 -0
  196. package/dist/src/server/domains/instrumentation/definitions.js +99 -0
  197. package/dist/src/server/domains/instrumentation/handlers.d.ts +78 -0
  198. package/dist/src/server/domains/instrumentation/handlers.js +206 -0
  199. package/dist/src/server/domains/instrumentation/index.d.ts +2 -0
  200. package/dist/src/server/domains/instrumentation/index.js +2 -0
  201. package/dist/src/server/domains/instrumentation/manifest.d.ts +63 -0
  202. package/dist/src/server/domains/instrumentation/manifest.js +114 -0
  203. package/dist/src/server/domains/macro/definitions.js +16 -43
  204. package/dist/src/server/domains/maintenance/definitions.js +60 -219
  205. package/dist/src/server/domains/maintenance/handlers.d.ts +2 -2
  206. package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
  207. package/dist/src/server/domains/maintenance/handlers.js +2 -2
  208. package/dist/src/server/domains/memory/definitions.js +387 -559
  209. package/dist/src/server/domains/memory/handlers/hooks.d.ts +55 -0
  210. package/dist/src/server/domains/memory/handlers/hooks.js +115 -0
  211. package/dist/src/server/domains/memory/handlers/integrity.d.ts +77 -0
  212. package/dist/src/server/domains/memory/handlers/integrity.js +180 -0
  213. package/dist/src/server/domains/memory/handlers/pointer-chain.d.ts +29 -0
  214. package/dist/src/server/domains/memory/handlers/pointer-chain.js +82 -0
  215. package/dist/src/server/domains/memory/handlers/readwrite.d.ts +41 -0
  216. package/dist/src/server/domains/memory/handlers/readwrite.js +78 -0
  217. package/dist/src/server/domains/memory/handlers/scan.d.ts +35 -0
  218. package/dist/src/server/domains/memory/handlers/scan.js +97 -0
  219. package/dist/src/server/domains/memory/handlers/session.d.ts +23 -0
  220. package/dist/src/server/domains/memory/handlers/session.js +49 -0
  221. package/dist/src/server/domains/memory/handlers/structure.d.ts +29 -0
  222. package/dist/src/server/domains/memory/handlers/structure.js +74 -0
  223. package/dist/src/server/domains/memory/handlers.impl.d.ts +49 -54
  224. package/dist/src/server/domains/memory/handlers.impl.js +63 -494
  225. package/dist/src/server/domains/memory/manifest.js +236 -64
  226. package/dist/src/server/domains/native-bridge/definitions.js +54 -192
  227. package/dist/src/server/domains/native-bridge/index.d.ts +1 -0
  228. package/dist/src/server/domains/native-bridge/index.js +2 -1
  229. package/dist/src/server/domains/network/auth-extractor.js +1 -1
  230. package/dist/src/server/domains/network/definitions.js +175 -578
  231. package/dist/src/server/domains/network/handlers.base.core.d.ts +64 -0
  232. package/dist/src/server/domains/network/handlers.base.core.js +623 -0
  233. package/dist/src/server/domains/network/handlers.base.d.ts +2 -124
  234. package/dist/src/server/domains/network/handlers.base.js +3 -878
  235. package/dist/src/server/domains/network/handlers.base.performance.d.ts +63 -0
  236. package/dist/src/server/domains/network/handlers.base.performance.js +193 -0
  237. package/dist/src/server/domains/network/handlers.base.types.d.ts +42 -0
  238. package/dist/src/server/domains/network/handlers.base.types.js +89 -0
  239. package/dist/src/server/domains/network/handlers.impl.core.runtime.d.ts +1 -1
  240. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.d.ts +21 -0
  241. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.js +186 -0
  242. package/dist/src/server/domains/network/handlers.impl.core.runtime.js +1 -1
  243. package/dist/src/server/domains/network/manifest.js +15 -0
  244. package/dist/src/server/domains/network/replay.js +1 -4
  245. package/dist/src/server/domains/platform/definitions.js +121 -112
  246. package/dist/src/server/domains/platform/handlers/bridge-handlers.d.ts +5 -1
  247. package/dist/src/server/domains/platform/handlers/bridge-handlers.js +194 -5
  248. package/dist/src/server/domains/platform/handlers/electron-asar-helpers.js +26 -6
  249. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.d.ts +3 -0
  250. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.js +170 -0
  251. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.d.ts +3 -0
  252. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.js +193 -0
  253. package/dist/src/server/domains/platform/handlers/electron-handlers.d.ts +6 -0
  254. package/dist/src/server/domains/platform/handlers/electron-handlers.js +95 -2
  255. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.d.ts +2 -0
  256. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.js +370 -0
  257. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.d.ts +2 -0
  258. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.js +78 -0
  259. package/dist/src/server/domains/platform/handlers/miniapp-handlers.d.ts +1 -1
  260. package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +4 -4
  261. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.d.ts +2 -0
  262. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.js +207 -0
  263. package/dist/src/server/domains/platform/handlers.d.ts +48 -0
  264. package/dist/src/server/domains/platform/handlers.js +29 -0
  265. package/dist/src/server/domains/platform/manifest.js +38 -0
  266. package/dist/src/server/domains/process/definitions.js +163 -647
  267. package/dist/src/server/domains/process/handlers.base.d.ts +3 -95
  268. package/dist/src/server/domains/process/handlers.base.js +7 -462
  269. package/dist/src/server/domains/process/handlers.base.process.d.ts +61 -0
  270. package/dist/src/server/domains/process/handlers.base.process.js +417 -0
  271. package/dist/src/server/domains/process/handlers.base.types.d.ts +57 -0
  272. package/dist/src/server/domains/process/handlers.base.types.js +50 -0
  273. package/dist/src/server/domains/process/handlers.impl.core.runtime.inject.js +19 -17
  274. package/dist/src/server/domains/process/manifest.js +6 -1
  275. package/dist/src/server/domains/sandbox/definitions.js +11 -33
  276. package/dist/src/server/domains/sandbox/handlers.js +8 -3
  277. package/dist/src/server/domains/shared/ResponseBuilder.d.ts +209 -0
  278. package/dist/src/server/domains/shared/ResponseBuilder.js +48 -0
  279. package/dist/src/server/domains/shared/modules.d.ts +0 -2
  280. package/dist/src/server/domains/shared/modules.js +0 -1
  281. package/dist/src/server/domains/sourcemap/definitions.js +27 -111
  282. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-common.js +7 -2
  283. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-main.js +1 -1
  284. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-parse-base.js +1 -1
  285. package/dist/src/server/domains/sourcemap/manifest.d.ts +1 -1
  286. package/dist/src/server/domains/sourcemap/manifest.js +1 -1
  287. package/dist/src/server/domains/streaming/definitions.js +36 -148
  288. package/dist/src/server/domains/streaming/handlers.impl.streaming-sse.js +163 -164
  289. package/dist/src/server/domains/streaming/handlers.impl.streaming-ws.js +1 -1
  290. package/dist/src/server/domains/trace/TraceSummarizer.d.ts +60 -0
  291. package/dist/src/server/domains/trace/TraceSummarizer.js +112 -0
  292. package/dist/src/server/domains/trace/definitions.tools.js +51 -176
  293. package/dist/src/server/domains/trace/handlers.d.ts +2 -1
  294. package/dist/src/server/domains/trace/handlers.js +62 -9
  295. package/dist/src/server/domains/trace/index.d.ts +2 -1
  296. package/dist/src/server/domains/trace/index.js +2 -1
  297. package/dist/src/server/domains/trace/manifest.js +18 -4
  298. package/dist/src/server/domains/transform/definitions.js +50 -210
  299. package/dist/src/server/domains/transform/handlers.impl.transform-base.js +6 -6
  300. package/dist/src/server/domains/transform/handlers.impl.transform-crypto.js +18 -19
  301. package/dist/src/server/domains/transform/manifest.d.ts +1 -1
  302. package/dist/src/server/domains/transform/manifest.js +1 -1
  303. package/dist/src/server/domains/wasm/definitions.js +55 -232
  304. package/dist/src/server/domains/wasm/handlers.js +3 -3
  305. package/dist/src/server/domains/workflow/definitions.js +144 -414
  306. package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +2 -2
  307. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.d.ts +2 -0
  308. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.js +126 -87
  309. package/dist/src/server/domains/workflow/handlers.impl.workflow-batch.js +5 -5
  310. package/dist/src/server/evidence/ReverseEvidenceGraph.d.ts +20 -0
  311. package/dist/src/server/evidence/ReverseEvidenceGraph.js +208 -0
  312. package/dist/src/server/evidence/index.d.ts +2 -0
  313. package/dist/src/server/evidence/index.js +1 -0
  314. package/dist/src/server/evidence/types.d.ts +22 -0
  315. package/dist/src/server/evidence/types.js +1 -0
  316. package/dist/src/server/extensions/ExtensionManager.d.ts +1 -0
  317. package/dist/src/server/extensions/ExtensionManager.discovery.js +72 -9
  318. package/dist/src/server/extensions/ExtensionManager.integrity.js +1 -1
  319. package/dist/src/server/extensions/ExtensionManager.js +193 -40
  320. package/dist/src/server/extensions/ExtensionManager.roots.d.ts +1 -1
  321. package/dist/src/server/extensions/ExtensionManager.roots.js +19 -9
  322. package/dist/src/server/extensions/plugin-config.js +1 -1
  323. package/dist/src/server/extensions/plugin-env.d.ts +1 -1
  324. package/dist/src/server/extensions/plugin-env.js +10 -4
  325. package/dist/src/server/extensions/types.d.ts +17 -0
  326. package/dist/src/server/extensions/types.js +1 -1
  327. package/dist/src/server/http/HttpMiddleware.js +1 -1
  328. package/dist/src/server/instrumentation/EvidenceGraphBridge.d.ts +13 -0
  329. package/dist/src/server/instrumentation/EvidenceGraphBridge.js +150 -0
  330. package/dist/src/server/instrumentation/InstrumentationSession.d.ts +60 -0
  331. package/dist/src/server/instrumentation/InstrumentationSession.js +269 -0
  332. package/dist/src/server/instrumentation/index.d.ts +2 -0
  333. package/dist/src/server/instrumentation/index.js +2 -0
  334. package/dist/src/server/instrumentation/types.d.ts +62 -0
  335. package/dist/src/server/instrumentation/types.js +7 -0
  336. package/dist/src/server/macros/MacroConfigLoader.d.ts +6 -5
  337. package/dist/src/server/macros/MacroConfigLoader.js +61 -59
  338. package/dist/src/server/macros/MacroRunner.js +6 -2
  339. package/dist/src/server/macros/builtins/index.d.ts +2 -3
  340. package/dist/src/server/macros/builtins/index.js +51 -7
  341. package/dist/src/server/plugins/PluginContract.d.ts +1 -1
  342. package/dist/src/server/registry/contracts.d.ts +7 -1
  343. package/dist/src/server/registry/discovery.js +5 -4
  344. package/dist/src/server/registry/ensure-browser-core.js +0 -3
  345. package/dist/src/server/registry/index.js +4 -4
  346. package/dist/src/server/registry/tool-builder.d.ts +46 -0
  347. package/dist/src/server/registry/tool-builder.js +105 -0
  348. package/dist/src/server/sandbox/MCPBridge.d.ts +9 -0
  349. package/dist/src/server/sandbox/MCPBridge.js +22 -0
  350. package/dist/src/server/sandbox/QuickJSSandbox.d.ts +4 -1
  351. package/dist/src/server/sandbox/QuickJSSandbox.js +162 -2
  352. package/dist/src/server/sandbox/types.d.ts +13 -0
  353. package/dist/src/server/search/AffinityGraph.d.ts +7 -1
  354. package/dist/src/server/search/AffinityGraph.js +24 -3
  355. package/dist/src/server/search/EmbeddingWorker.js +5 -3
  356. package/dist/src/server/search/FeedbackTracker.d.ts +9 -0
  357. package/dist/src/server/search/FeedbackTracker.js +26 -0
  358. package/dist/src/server/search/QueryNormalizer.d.ts +6 -0
  359. package/dist/src/server/search/QueryNormalizer.js +94 -0
  360. package/dist/src/server/search/ToolSearchEngineImpl.d.ts +2 -3
  361. package/dist/src/server/search/ToolSearchEngineImpl.js +38 -88
  362. package/dist/src/server/workflows/WorkflowContract.d.ts +24 -0
  363. package/dist/src/server/workflows/WorkflowContract.js +12 -0
  364. package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
  365. package/dist/src/server/workflows/WorkflowEngine.js +136 -3
  366. package/dist/src/types/config.d.ts +0 -14
  367. package/dist/src/types/deobfuscator.d.ts +0 -1
  368. package/dist/src/types/index.d.ts +1 -1
  369. package/dist/src/utils/DetailedDataManager.js +2 -0
  370. package/dist/src/utils/RingBuffer.js +5 -5
  371. package/dist/src/utils/TokenBudgetManager.js +1 -1
  372. package/dist/src/utils/UnifiedCacheManager.d.ts +1 -1
  373. package/dist/src/utils/UnifiedCacheManager.js +3 -3
  374. package/dist/src/utils/artifactRetention.js +2 -2
  375. package/dist/src/utils/betterSqlite3.d.ts +11 -0
  376. package/dist/src/utils/betterSqlite3.js +88 -0
  377. package/dist/src/utils/browserExecutable.js +2 -2
  378. package/dist/src/utils/cliFastPath.js +17 -6
  379. package/dist/src/utils/config.js +4 -26
  380. package/dist/src/utils/environmentDoctor.js +138 -11
  381. package/dist/src/utils/outputPaths.js +16 -9
  382. package/dist/src/utils/parallel.js +1 -3
  383. package/package.json +76 -72
  384. package/scripts/postinstall.cjs +37 -37
  385. package/src/native/scripts/linux/enum-windows.sh +12 -12
  386. package/src/native/scripts/macos/enum-windows.applescript +22 -22
  387. package/src/native/scripts/windows/enum-windows-by-class.ps1 +51 -51
  388. package/src/native/scripts/windows/enum-windows.ps1 +44 -44
  389. package/src/native/scripts/windows/inject-dll.ps1 +21 -21
  390. package/workflows/.gitkeep +0 -0
  391. package/dist/src/modules/analyzer/AISummarizer.d.ts +0 -39
  392. package/dist/src/modules/analyzer/AISummarizer.js +0 -122
  393. package/dist/src/modules/hook/AIHookGenerator.d.ts +0 -52
  394. package/dist/src/modules/hook/AIHookGenerator.js +0 -360
  395. package/dist/src/modules/hook/AIHookGeneratorTemplates.d.ts +0 -9
  396. package/dist/src/modules/hook/AIHookGeneratorTemplates.js +0 -157
  397. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.d.ts +0 -2
  398. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.js +0 -25
  399. package/dist/src/server/macros/builtins/unpacker-flow.d.ts +0 -2
  400. package/dist/src/server/macros/builtins/unpacker-flow.js +0 -25
  401. package/dist/src/services/LLMService.d.ts +0 -37
  402. package/dist/src/services/LLMService.js +0 -233
  403. package/dist/src/services/prompts/analysis.d.ts +0 -9
  404. package/dist/src/services/prompts/analysis.js +0 -158
  405. package/dist/src/services/prompts/crypto.d.ts +0 -2
  406. package/dist/src/services/prompts/crypto.js +0 -108
  407. package/dist/src/services/prompts/deobfuscation.d.ts +0 -6
  408. package/dist/src/services/prompts/deobfuscation.js +0 -300
  409. package/dist/src/services/prompts/environment.d.ts +0 -16
  410. package/dist/src/services/prompts/environment.js +0 -372
  411. package/dist/src/services/prompts/intelligence.d.ts +0 -4
  412. package/dist/src/services/prompts/intelligence.js +0 -250
  413. package/dist/src/services/prompts/taint.d.ts +0 -2
  414. package/dist/src/services/prompts/taint.js +0 -54
@@ -1,14 +1,10 @@
1
1
  import { logger } from '../../utils/logger.js';
2
- import { VM_DEOBF_LLM_MAX_TOKENS } from '../../constants.js';
3
- import { LLMService } from '../../services/LLMService.js';
4
2
  import * as parser from '@babel/parser';
5
3
  import traverse from '@babel/traverse';
6
4
  import * as t from '@babel/types';
7
- import { generateVMDeobfuscationMessages } from '../../services/prompts/deobfuscation.js';
8
5
  export class VMDeobfuscator {
9
- llm;
10
- constructor(llm) {
11
- this.llm = llm;
6
+ constructor(legacyDependency) {
7
+ void legacyDependency;
12
8
  }
13
9
  detectVMProtection(code) {
14
10
  const vmPatterns = [
@@ -31,7 +27,7 @@ export class VMDeobfuscator {
31
27
  const match = code.match(/case\s+\d+:/g);
32
28
  return match ? match.length : 0;
33
29
  }
34
- async deobfuscateVM(code, vmInfo) {
30
+ async deobfuscateVM(code, _vmInfo) {
35
31
  logger.warn('VM deobfuscation is experimental and may fail');
36
32
  try {
37
33
  const vmStructure = this.analyzeVMStructure(code);
@@ -39,24 +35,6 @@ export class VMDeobfuscator {
39
35
  logger.info(`Detected VM interpreter with ${vmStructure.instructionTypes.length} instruction types`);
40
36
  }
41
37
  const vmComponents = this.extractVMComponents(code);
42
- if (this.llm) {
43
- const prompt = this.buildVMDeobfuscationPrompt(code, vmInfo, vmStructure, vmComponents);
44
- const response = await this.llm.chat(generateVMDeobfuscationMessages(prompt), {
45
- temperature: 0.05,
46
- maxTokens: VM_DEOBF_LLM_MAX_TOKENS,
47
- });
48
- const deobfuscatedCode = this.extractCodeFromLLMResponse(response.content);
49
- if (this.isValidJavaScript(deobfuscatedCode)) {
50
- logger.success('VM deobfuscation succeeded via LLM');
51
- return {
52
- success: true,
53
- code: deobfuscatedCode,
54
- };
55
- }
56
- else {
57
- logger.warn('LLM output is not valid JavaScript, falling back to original');
58
- }
59
- }
60
38
  const simplifiedCode = this.simplifyVMCode(code, vmComponents);
61
39
  return {
62
40
  success: simplifiedCode !== code,
@@ -134,91 +112,6 @@ export class VMDeobfuscator {
134
112
  }
135
113
  return components;
136
114
  }
137
- buildVMDeobfuscationPrompt(code, vmInfo, vmStructure, vmComponents) {
138
- const codeSnippet = code.length > 2000 ? code.slice(0, 2000) + '\n...(truncated)' : code;
139
- return `# VM Deobfuscation Analysis
140
-
141
- ## VM Profile
142
- - **Architecture**: ${vmInfo.type}
143
- - **Instruction Count**: ${vmInfo.instructionCount}
144
- - **Interpreter Loop**: ${vmStructure.hasInterpreter ? 'Detected' : 'Not detected'}
145
- - **Stack Operations**: ${vmStructure.hasStack ? 'Present' : 'Absent'}
146
- - **Register Usage**: ${vmStructure.hasRegisters ? 'Present' : 'Absent'}
147
- - **Instruction Variety**: ${vmStructure.instructionTypes.length} distinct types
148
-
149
- ## Identified Components
150
- ${vmComponents.instructionArray ? ` Instruction Array: Found at ${vmComponents.instructionArray}` : ' Instruction Array: Not found'}
151
- ${vmComponents.dataArray ? ` Data Array: Found at ${vmComponents.dataArray}` : ' Data Array: Not found'}
152
- ${vmComponents.interpreterFunction ? ` Interpreter Function: Found at ${vmComponents.interpreterFunction}` : ' Interpreter Function: Not found'}
153
-
154
- ## VM-Protected Code
155
- \`\`\`javascript
156
- ${codeSnippet}
157
- \`\`\`
158
-
159
- ## Deobfuscation Instructions (Chain-of-Thought)
160
-
161
- ### Step 1: VM Structure Analysis
162
- Examine the code to identify:
163
- - Instruction array (usually a large array of numbers/strings)
164
- - Interpreter loop (while/for loop processing instructions)
165
- - Stack/register variables
166
- - Opcode handlers (switch-case or if-else chains)
167
-
168
- ### Step 2: Instruction Decoding
169
- For each instruction type, determine:
170
- - What JavaScript operation it represents (e.g., opcode 0x01 = addition)
171
- - How it manipulates the stack/registers
172
- - What side effects it has (function calls, property access, etc.)
173
-
174
- ### Step 3: Control Flow Reconstruction
175
- - Map VM jumps/branches to JavaScript if/while/for statements
176
- - Identify function calls and returns
177
- - Reconstruct try-catch blocks if present
178
-
179
- ### Step 4: Code Generation
180
- - Replace VM instruction sequences with equivalent JavaScript
181
- - Use meaningful variable names based on usage context
182
- - Remove VM overhead (interpreter loop, stack management)
183
- - Preserve all side effects and program behavior
184
-
185
- ### Step 5: Validation
186
- - Ensure output is syntactically valid JavaScript
187
- - Verify no functionality is lost
188
- - Add comments for complex patterns
189
-
190
- ## Example Transformation (Few-shot Learning)
191
-
192
- **VM Code (Before)**:
193
- \`\`\`javascript
194
- var vm = [0x01, 0x05, 0x02, 0x03, 0x10];
195
- var stack = [];
196
- for(var i=0; i<vm.length; i++) {
197
- switch(vm[i]) {
198
- case 0x01: stack.push(5); break;
199
- case 0x02: stack.push(3); break;
200
- case 0x10: var b=stack.pop(), a=stack.pop(); stack.push(a+b); break;
201
- }
202
- }
203
- console.log(stack[0]);
204
- \`\`\`
205
-
206
- **Deobfuscated Code (After)**:
207
- \`\`\`javascript
208
- var result = 5 + 3;
209
- console.log(result);
210
- \`\`\`
211
-
212
- ## Critical Requirements
213
- 1. Output ONLY the deobfuscated JavaScript code
214
- 2. NO markdown code blocks, NO explanations, NO comments outside the code
215
- 3. Code must be syntactically valid and executable
216
- 4. Preserve exact program logic and side effects
217
- 5. If full deobfuscation is impossible, return the best partial result
218
-
219
- ## Output Format
220
- Return clean JavaScript code starting immediately (no preamble).`;
221
- }
222
115
  simplifyVMCode(code, vmComponents) {
223
116
  try {
224
117
  let simplified = code;
@@ -237,22 +130,4 @@ Return clean JavaScript code starting immediately (no preamble).`;
237
130
  return code;
238
131
  }
239
132
  }
240
- extractCodeFromLLMResponse(response) {
241
- let code = response.trim();
242
- code = code.replace(/^```(?:javascript|js)?\s*\n/i, '');
243
- code = code.replace(/\n```\s*$/i, '');
244
- return code.trim();
245
- }
246
- isValidJavaScript(code) {
247
- try {
248
- parser.parse(code, {
249
- sourceType: 'module',
250
- plugins: ['jsx', 'typescript'],
251
- });
252
- return true;
253
- }
254
- catch {
255
- return false;
256
- }
257
- }
258
133
  }
@@ -1,5 +1,6 @@
1
1
  import { readdir, rm, stat } from 'node:fs/promises';
2
2
  import path from 'node:path';
3
+ import vm from 'node:vm';
3
4
  import { logger } from '../../utils/logger.js';
4
5
  const DEFAULT_OPTIONS = {
5
6
  jsx: true,
@@ -60,7 +61,7 @@ function applyBundleMappings(bundle, mappings) {
60
61
  function summarizeBundle(bundle, options, remapped) {
61
62
  const maxBundleModules = options.maxBundleModules ?? MAX_BUNDLE_MODULES;
62
63
  const modules = Array.from(bundle.modules.values())
63
- .sort((left, right) => {
64
+ .toSorted((left, right) => {
64
65
  if (left.isEntry !== right.isEntry) {
65
66
  return left.isEntry ? -1 : 1;
66
67
  }
@@ -103,7 +104,7 @@ async function collectSavedArtifacts(rootDir, currentDir = rootDir) {
103
104
  type: 'file',
104
105
  });
105
106
  }
106
- return artifacts.sort((left, right) => left.path.localeCompare(right.path));
107
+ return artifacts.toSorted((left, right) => left.path.localeCompare(right.path));
107
108
  }
108
109
  export async function runWebcrack(code, options) {
109
110
  const optionsUsed = normalizeOptions(options);
@@ -117,6 +118,17 @@ export async function runWebcrack(code, options) {
117
118
  reason,
118
119
  };
119
120
  }
121
+ let sandboxOption;
122
+ try {
123
+ await import('isolated-vm');
124
+ }
125
+ catch {
126
+ logger.warn('isolated-vm is unavailable (likely Node 24 incompatibility). Falling back to native node:vm for deobfuscation sandbox.');
127
+ sandboxOption = async (evalCode) => {
128
+ const context = vm.createContext(Object.create(null));
129
+ return vm.runInContext(evalCode, context, { timeout: 8000 });
130
+ };
131
+ }
120
132
  try {
121
133
  const { webcrack } = (await import('webcrack'));
122
134
  const result = await webcrack(code, {
@@ -125,6 +137,7 @@ export async function runWebcrack(code, options) {
125
137
  deobfuscate: true,
126
138
  unminify: optionsUsed.unminify,
127
139
  mangle: optionsUsed.mangle,
140
+ ...(sandboxOption ? { sandbox: sandboxOption } : {}),
128
141
  });
129
142
  const remapped = result.bundle
130
143
  ? applyBundleMappings(result.bundle, options.mappings)
@@ -1,4 +1,3 @@
1
- import type { LLMService } from '../../services/LLMService.js';
2
1
  import type { DetectedEnvironmentVariables, MissingAPI } from '../../types/index.js';
3
2
  import type { BrowserType } from '../emulator/BrowserEnvironmentRules.js';
4
3
  export interface AIAnalysisResult {
@@ -18,13 +17,11 @@ export interface AIAnalysisResult {
18
17
  confidence: number;
19
18
  }
20
19
  export declare class AIEnvironmentAnalyzer {
21
- private llm?;
22
- constructor(llm?: LLMService | undefined);
23
- analyze(code: string, detected: DetectedEnvironmentVariables, missing: MissingAPI[], browserType?: BrowserType): Promise<AIAnalysisResult>;
24
- private parseAIResponse;
20
+ constructor(legacyDependency?: unknown);
21
+ analyze(_code: string, _detected: DetectedEnvironmentVariables, _missing: MissingAPI[], _browserType?: BrowserType): Promise<AIAnalysisResult>;
25
22
  private getEmptyResult;
26
- analyzeAntiCrawl(code: string): Promise<AIAnalysisResult['antiCrawlFeatures']>;
27
- inferAPIImplementation(apiPath: string, context: string): Promise<string | null>;
28
- generateSuggestions(detected: DetectedEnvironmentVariables, missing: MissingAPI[], browserType: BrowserType): Promise<string[]>;
23
+ analyzeAntiCrawl(_code: string): Promise<AIAnalysisResult['antiCrawlFeatures']>;
24
+ inferAPIImplementation(_apiPath: string, _context: string): Promise<string | null>;
25
+ generateSuggestions(detected: DetectedEnvironmentVariables, missing: MissingAPI[], _browserType: BrowserType): Promise<string[]>;
29
26
  private getDefaultSuggestions;
30
27
  }
@@ -1,48 +1,9 @@
1
- import { logger } from '../../utils/logger.js';
2
- import { generateBrowserEnvAnalysisMessages, generateAntiCrawlAnalysisMessages, generateAPIImplementationMessages, generateEnvironmentSuggestionsMessages, } from '../../services/prompts/environment.js';
3
1
  export class AIEnvironmentAnalyzer {
4
- llm;
5
- constructor(llm) {
6
- this.llm = llm;
2
+ constructor(legacyDependency) {
3
+ void legacyDependency;
7
4
  }
8
- async analyze(code, detected, missing, browserType = 'chrome') {
9
- if (!this.llm) {
10
- logger.warn('LLM service unavailable, skipping AI environment analysis');
11
- return this.getEmptyResult();
12
- }
13
- try {
14
- logger.info(' AI...');
15
- const response = await this.llm.chat(generateBrowserEnvAnalysisMessages(code, detected, missing, browserType));
16
- const result = this.parseAIResponse(response.content);
17
- logger.info(`AI environment analysis complete, confidence: ${(result.confidence * 100).toFixed(1)}%`);
18
- return result;
19
- }
20
- catch (error) {
21
- logger.error('AI', error);
22
- return this.getEmptyResult();
23
- }
24
- }
25
- parseAIResponse(response) {
26
- try {
27
- const jsonMatch = response.match(/```json\s*([\s\S]*?)\s*```/) || response.match(/\{[\s\S]*\}/);
28
- if (!jsonMatch) {
29
- logger.warn('AIJSON');
30
- return this.getEmptyResult();
31
- }
32
- const jsonStr = jsonMatch[1] || jsonMatch[0];
33
- const parsed = JSON.parse(jsonStr);
34
- return {
35
- recommendedVariables: parsed.recommendedVariables || {},
36
- recommendedAPIs: parsed.recommendedAPIs || [],
37
- antiCrawlFeatures: parsed.antiCrawlFeatures || [],
38
- suggestions: parsed.suggestions || [],
39
- confidence: parsed.confidence || 0.5,
40
- };
41
- }
42
- catch (error) {
43
- logger.error('AI', error);
44
- return this.getEmptyResult();
45
- }
5
+ async analyze(_code, _detected, _missing, _browserType = 'chrome') {
6
+ return this.getEmptyResult();
46
7
  }
47
8
  getEmptyResult() {
48
9
  return {
@@ -53,67 +14,14 @@ export class AIEnvironmentAnalyzer {
53
14
  confidence: 0,
54
15
  };
55
16
  }
56
- async analyzeAntiCrawl(code) {
57
- if (!this.llm) {
58
- return [];
59
- }
60
- try {
61
- const response = await this.llm.chat(generateAntiCrawlAnalysisMessages(code));
62
- const jsonMatch = response.content.match(/```json\s*([\s\S]*?)\s*```/) ||
63
- response.content.match(/\[[\s\S]*\]/);
64
- if (jsonMatch) {
65
- const jsonStr = jsonMatch[1] || jsonMatch[0];
66
- return JSON.parse(jsonStr);
67
- }
68
- return [];
69
- }
70
- catch (error) {
71
- logger.error('', error);
72
- return [];
73
- }
17
+ async analyzeAntiCrawl(_code) {
18
+ return [];
74
19
  }
75
- async inferAPIImplementation(apiPath, context) {
76
- if (!this.llm) {
77
- return null;
78
- }
79
- try {
80
- const response = await this.llm.chat(generateAPIImplementationMessages(apiPath, context));
81
- const codeMatch = response.content.match(/```(?:javascript|js)?\s*([\s\S]*?)\s*```/);
82
- if (codeMatch && codeMatch[1]) {
83
- return codeMatch[1].trim();
84
- }
85
- const trimmed = response.content.trim();
86
- if (trimmed.includes('function') || trimmed.includes('const') || trimmed.includes('var')) {
87
- return trimmed;
88
- }
89
- return null;
90
- }
91
- catch (error) {
92
- logger.error('API', error);
93
- return null;
94
- }
20
+ async inferAPIImplementation(_apiPath, _context) {
21
+ return null;
95
22
  }
96
- async generateSuggestions(detected, missing, browserType) {
97
- if (!this.llm) {
98
- return this.getDefaultSuggestions(detected, missing);
99
- }
100
- try {
101
- const response = await this.llm.chat(generateEnvironmentSuggestionsMessages(detected, missing, browserType));
102
- const jsonMatch = response.content.match(/```json\s*([\s\S]*?)\s*```/) ||
103
- response.content.match(/\[[\s\S]*\]/);
104
- if (jsonMatch) {
105
- const jsonStr = jsonMatch[1] || jsonMatch[0];
106
- const suggestions = JSON.parse(jsonStr);
107
- if (Array.isArray(suggestions) && suggestions.every((s) => typeof s === 'string')) {
108
- return suggestions;
109
- }
110
- }
111
- return this.getDefaultSuggestions(detected, missing);
112
- }
113
- catch (error) {
114
- logger.error('', error);
115
- return this.getDefaultSuggestions(detected, missing);
116
- }
23
+ async generateSuggestions(detected, missing, _browserType) {
24
+ return this.getDefaultSuggestions(detected, missing);
117
25
  }
118
26
  getDefaultSuggestions(detected, missing) {
119
27
  const suggestions = [];
@@ -1,9 +1,7 @@
1
1
  import type { EnvironmentEmulatorOptions, EnvironmentEmulatorResult } from '../../types/index.js';
2
- import type { LLMService } from '../../services/LLMService.js';
3
2
  export declare class EnvironmentEmulator {
4
3
  private browser?;
5
- private llm?;
6
- constructor(llm?: LLMService);
4
+ constructor(legacyDependency?: unknown);
7
5
  analyze(options: EnvironmentEmulatorOptions): Promise<EnvironmentEmulatorResult>;
8
6
  private detectEnvironmentVariables;
9
7
  private getMemberExpressionPath;
@@ -14,8 +12,6 @@ export declare class EnvironmentEmulator {
14
12
  private resolveExecutablePath;
15
13
  private identifyMissingAPIs;
16
14
  private getSuggestionForMissingAPI;
17
- private generateMissingAPIImplementationsWithAI;
18
- private inferMissingVariablesWithAI;
19
15
  cleanup(): Promise<void>;
20
16
  private isRecord;
21
17
  private isIdentifierNode;
@@ -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();