@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,12 +1,10 @@
1
- import { fileURLToPath } from 'url';
2
- import { dirname, join } from 'path';
1
+ import { fileURLToPath } from 'node:url';
2
+ import { join } from 'node:path';
3
3
  import { config as dotenvConfig } from 'dotenv';
4
4
  import { z } from 'zod';
5
5
  import { DEFAULT_SEARCH_CONFIG } from '../config/search-defaults.js';
6
- const currentFilename = fileURLToPath(import.meta.url);
7
- const currentDirname = dirname(currentFilename);
8
- export const projectRoot = join(currentDirname, '..', '..');
9
- const envPath = join(projectRoot, '.env');
6
+ export const projectRoot = fileURLToPath(new URL('../..', import.meta.url));
7
+ const envPath = fileURLToPath(new URL('../../.env', import.meta.url));
10
8
  let envLoaded = false;
11
9
  function loadEnvIfNeeded() {
12
10
  if (envLoaded) {
@@ -34,13 +32,6 @@ const envBool = (fallback) => z
34
32
  .optional()
35
33
  .transform((v) => (v === undefined ? fallback : v === 'true'));
36
34
  const ConfigSchema = z.object({
37
- DEFAULT_LLM_PROVIDER: z.enum(['openai', 'anthropic']).optional().default('openai'),
38
- OPENAI_API_KEY: z.string().optional().default(''),
39
- OPENAI_MODEL: z.string().optional().default('gpt-4-turbo-preview'),
40
- OPENAI_BASE_URL: z.string().optional(),
41
- ANTHROPIC_API_KEY: z.string().optional().default(''),
42
- ANTHROPIC_MODEL: z.string().optional().default('claude-3-5-sonnet-20241022'),
43
- ANTHROPIC_BASE_URL: z.string().optional(),
44
35
  PUPPETEER_HEADLESS: envBool(false),
45
36
  PUPPETEER_TIMEOUT: envInt(30000).pipe(z.number().min(1000).max(300000)),
46
37
  PUPPETEER_EXECUTABLE_PATH: z.string().optional(),
@@ -192,19 +183,6 @@ export function getConfig() {
192
183
  : join(projectRoot, cacheDir);
193
184
  const search = buildSearchConfig();
194
185
  return {
195
- llm: {
196
- provider: (env.DEFAULT_LLM_PROVIDER || 'openai'),
197
- openai: {
198
- apiKey: env.OPENAI_API_KEY || '',
199
- model: env.OPENAI_MODEL || 'gpt-4-turbo-preview',
200
- baseURL: env.OPENAI_BASE_URL,
201
- },
202
- anthropic: {
203
- apiKey: env.ANTHROPIC_API_KEY || '',
204
- model: env.ANTHROPIC_MODEL || 'claude-3-5-sonnet-20241022',
205
- baseURL: env.ANTHROPIC_BASE_URL,
206
- },
207
- },
208
186
  puppeteer: {
209
187
  headless: parsed.success
210
188
  ? env.PUPPETEER_HEADLESS
@@ -5,22 +5,30 @@ import { ToolRegistry } from '../modules/external/ToolRegistry.js';
5
5
  import { GHIDRA_BRIDGE_ENDPOINT, IDA_BRIDGE_ENDPOINT } from '../constants.js';
6
6
  import { getProjectRoot } from './outputPaths.js';
7
7
  import { getArtifactRetentionConfig } from './artifactRetention.js';
8
+ import { probeBetterSqlite3 } from './betterSqlite3.js';
8
9
  const execFileAsync = promisify(execFile);
9
10
  const require = createRequire(import.meta.url);
10
11
  export async function runEnvironmentDoctor(options) {
11
12
  const includeBridgeHealth = options?.includeBridgeHealth ?? true;
12
13
  const registry = new ToolRegistry();
13
14
  const externalResults = await registry.probeAll(true);
15
+ const gitCommand = await checkCommand('git', ['--version']);
16
+ const pythonCommand = await checkCommand('python', ['--version']);
17
+ const pnpmCommand = await checkPnpmCommand();
18
+ const corepackCommand = normalizeCorepackCheck(await checkCommand('corepack', ['--version']), pnpmCommand);
14
19
  const packages = [
15
20
  checkPackage('@modelcontextprotocol/sdk'),
16
21
  checkPackage('rebrowser-puppeteer-core'),
22
+ checkBetterSqlite3(),
17
23
  checkPackage('camoufox-js', 'Optional Firefox anti-detect driver'),
18
24
  checkPackage('playwright-core', 'Optional browser automation dependency'),
25
+ checkNativeMemory(),
19
26
  ];
20
27
  const commands = [
21
- await checkCommand('git', ['--version']),
22
- await checkCommand('python', ['--version']),
23
- await checkCommand('pnpm', ['--version']),
28
+ gitCommand,
29
+ pythonCommand,
30
+ pnpmCommand,
31
+ corepackCommand,
24
32
  ...Object.entries(externalResults).map(([name, result]) => ({
25
33
  name,
26
34
  status: (result.available ? 'ok' : 'missing'),
@@ -127,17 +135,118 @@ function checkPackage(packageName, missingHint) {
127
135
  };
128
136
  }
129
137
  }
130
- async function checkCommand(command, args) {
138
+ function checkBetterSqlite3() {
139
+ const result = probeBetterSqlite3();
140
+ return {
141
+ name: 'better-sqlite3',
142
+ status: result.status,
143
+ detail: result.detail,
144
+ };
145
+ }
146
+ function isPnpmOperational(pnpm) {
147
+ return pnpm.status === 'ok' || pnpm.detail.includes('npx fallback works');
148
+ }
149
+ async function checkPnpmCommand() {
150
+ const direct = await checkCommand('pnpm', ['--version']);
151
+ if (direct.status === 'ok') {
152
+ return direct;
153
+ }
154
+ const npxFallback = await checkCommand('npx', ['pnpm', '--version'], 10_000);
155
+ if (npxFallback.status === 'ok') {
156
+ return {
157
+ name: 'pnpm',
158
+ status: 'warn',
159
+ detail: `direct pnpm command unavailable; npx fallback works (${npxFallback.detail})`,
160
+ };
161
+ }
162
+ return direct;
163
+ }
164
+ function normalizeCorepackCheck(corepack, pnpm) {
165
+ if (corepack.status !== 'missing' || !isPnpmOperational(pnpm)) {
166
+ return corepack;
167
+ }
168
+ return {
169
+ name: corepack.name,
170
+ status: 'warn',
171
+ detail: process.platform === 'win32'
172
+ ? pnpm.detail.includes('npx fallback works')
173
+ ? 'corepack not found; use `npx pnpm` directly (common with nvm4w-managed Node on Windows)'
174
+ : 'corepack not found; standalone pnpm is available (common with nvm4w-managed Node on Windows)'
175
+ : pnpm.detail.includes('npx fallback works')
176
+ ? 'corepack not found; use `npx pnpm` directly'
177
+ : 'corepack not found; standalone pnpm is available',
178
+ };
179
+ }
180
+ function checkNativeMemory() {
181
+ try {
182
+ const koffiPkg = require.resolve('koffi/package.json');
183
+ const koffiJson = require(koffiPkg);
184
+ const koffiVersion = koffiJson.version ?? 'unknown';
185
+ if (process.platform === 'win32') {
186
+ return {
187
+ name: 'native-memory',
188
+ status: 'ok',
189
+ detail: `koffi ${koffiVersion} — Win32 kernel32.dll available`,
190
+ };
191
+ }
192
+ if (process.platform === 'darwin') {
193
+ try {
194
+ const koffi = require('koffi');
195
+ const lib = koffi.load('/usr/lib/libSystem.B.dylib');
196
+ lib.unload();
197
+ return {
198
+ name: 'native-memory',
199
+ status: 'ok',
200
+ detail: `koffi ${koffiVersion} — macOS libSystem.B.dylib available (Mach APIs need root + SIP config)`,
201
+ };
202
+ }
203
+ catch {
204
+ return {
205
+ name: 'native-memory',
206
+ status: 'warn',
207
+ detail: `koffi ${koffiVersion} installed but cannot load libSystem.B.dylib`,
208
+ };
209
+ }
210
+ }
211
+ return {
212
+ name: 'native-memory',
213
+ status: 'warn',
214
+ detail: `koffi ${koffiVersion} — no native FFI memory provider for ${process.platform} (proc-based ops available on Linux)`,
215
+ };
216
+ }
217
+ catch {
218
+ return {
219
+ name: 'native-memory',
220
+ status: 'missing',
221
+ detail: 'koffi not installed — native memory tools unavailable. Install with: pnpm add koffi',
222
+ };
223
+ }
224
+ }
225
+ async function checkCommand(command, args, timeout = 4000) {
131
226
  try {
132
227
  const { stdout, stderr } = await execFileAsync(command, args, {
133
- timeout: 4000,
228
+ timeout,
134
229
  windowsHide: true,
135
230
  });
136
231
  const detail = `${stdout || stderr}`.trim().split(/\r?\n/)[0] || 'available';
137
232
  return { name: command, status: 'ok', detail };
138
233
  }
139
234
  catch (error) {
140
- const detail = error instanceof Error ? error.message : String(error);
235
+ let finalError = error;
236
+ if (process.platform === 'win32') {
237
+ try {
238
+ const { stdout, stderr } = await execFileAsync('cmd', ['/c', command, ...args], {
239
+ timeout,
240
+ windowsHide: true,
241
+ });
242
+ const detail = `${stdout || stderr}`.trim().split(/\r?\n/)[0] || 'available';
243
+ return { name: command, status: 'ok', detail: `${detail} (via cmd)` };
244
+ }
245
+ catch (cmdError) {
246
+ finalError = cmdError;
247
+ }
248
+ }
249
+ const detail = finalError instanceof Error ? finalError.message : String(finalError);
141
250
  const missing = /ENOENT|not recognized|not found/i.test(detail);
142
251
  return {
143
252
  name: command,
@@ -168,25 +277,43 @@ async function checkHttpEndpoint(name, url) {
168
277
  }
169
278
  function buildPlatformLimitations() {
170
279
  const limitations = [];
171
- if (process.platform !== 'win32') {
172
- limitations.push('Memory write / injection tools are Windows-only; on Linux/macOS prefer browser hooks, network capture, or Frida-based alternatives.');
280
+ if (process.platform === 'darwin') {
281
+ limitations.push('26 cross-platform memory tools available (scan, pointer-chain, structure-analysis, heap). ' +
282
+ '15 Windows-only tools unavailable (PE analysis, anti-cheat, code injection, speedhack, hardware breakpoints).');
283
+ limitations.push('Native memory operations (mach_vm_read/write) require root privileges and may require SIP configuration on ARM64.');
173
284
  }
174
- if (process.platform === 'linux') {
285
+ else if (process.platform === 'linux') {
286
+ limitations.push('Process management available via /proc. Native FFI memory provider not implemented — memory read/write uses /proc/pid/mem (requires root or CAP_SYS_PTRACE).');
175
287
  limitations.push('Camoufox runs on Linux, but some Chrome/CDP-heavy workflows are better served by the Chrome driver.');
176
288
  }
177
- if (process.platform === 'darwin') {
178
- limitations.push('macOS users should expect some Windows-native process tooling to be unavailable.');
289
+ else if (process.platform !== 'win32') {
290
+ limitations.push(`Platform ${process.platform} is not supported for native memory operations. Use Windows or macOS.`);
179
291
  }
180
292
  return limitations;
181
293
  }
182
294
  function buildRecommendations(packages, commands, bridges, limitations) {
183
295
  const recommendations = [];
296
+ const pnpmCommand = commands.find((item) => item.name === 'pnpm');
297
+ const corepackCommand = commands.find((item) => item.name === 'corepack');
298
+ if (packages.some((item) => item.name === 'better-sqlite3' && item.status !== 'ok')) {
299
+ recommendations.push('Install or rebuild the optional SQLite trace backend with `pnpm add -O better-sqlite3@12.6.2` or `npm rebuild better-sqlite3 --foreground-scripts` under the active Node version if you need trace tooling.');
300
+ }
184
301
  if (packages.some((item) => item.name === 'camoufox-js' && item.status !== 'ok')) {
185
302
  recommendations.push('Install optional browser dependencies with `pnpm run install:full` if you need Camoufox support.');
186
303
  }
187
304
  if (commands.some((item) => item.name.startsWith('wabt.') && item.status !== 'ok')) {
188
305
  recommendations.push('Install wabt if you need full WASM disassembly/decompilation; otherwise the server will stay in basic mode.');
189
306
  }
307
+ if (pnpmCommand && !isPnpmOperational(pnpmCommand)) {
308
+ recommendations.push('Install pnpm or enable Corepack (`corepack enable`) before running package-management workflows.');
309
+ }
310
+ else if (pnpmCommand?.detail.includes('npx fallback works')) {
311
+ recommendations.push('Use `npx pnpm` directly on this machine or repair the local pnpm/Corepack shim if scripts expect bare `pnpm`.');
312
+ }
313
+ else if (corepackCommand?.status === 'warn' &&
314
+ corepackCommand.detail.includes('standalone pnpm')) {
315
+ recommendations.push('Use `pnpm` or `npx pnpm` directly on this machine; `corepack` is optional and may be absent on nvm4w-managed Windows installs.');
316
+ }
190
317
  if (bridges.some((item) => item.status !== 'ok')) {
191
318
  recommendations.push('Check local bridge endpoints (Ghidra / IDA / Burp) before relying on native-bridge workflows.');
192
319
  }
@@ -1,9 +1,14 @@
1
1
  import { mkdir } from 'node:fs/promises';
2
2
  import { basename, dirname, extname, isAbsolute, normalize, relative, resolve, sep, } from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
- const currentFile = fileURLToPath(import.meta.url);
5
- const currentDir = dirname(currentFile);
6
- const projectRoot = resolve(currentDir, '..', '..');
4
+ const defaultProjectRoot = fileURLToPath(new URL('../..', import.meta.url));
5
+ function resolveProjectRoot(env = process.env) {
6
+ const requestedRoot = env.MCP_PROJECT_ROOT?.trim();
7
+ if (!requestedRoot) {
8
+ return defaultProjectRoot;
9
+ }
10
+ return normalize(isAbsolute(requestedRoot) ? requestedRoot : resolve(defaultProjectRoot, requestedRoot));
11
+ }
7
12
  function isInside(baseDir, targetPath) {
8
13
  const rel = relative(baseDir, targetPath);
9
14
  if (!rel || rel === '..' || rel.startsWith(`..${sep}`) || isAbsolute(rel)) {
@@ -11,11 +16,11 @@ function isInside(baseDir, targetPath) {
11
16
  }
12
17
  return true;
13
18
  }
14
- function resolveWithinProject(inputPath) {
15
- const candidate = isAbsolute(inputPath) ? normalize(inputPath) : resolve(projectRoot, inputPath);
16
- return isInside(projectRoot, candidate)
19
+ function resolveWithinProject(inputPath, baseRoot = getProjectRoot()) {
20
+ const candidate = isAbsolute(inputPath) ? normalize(inputPath) : resolve(baseRoot, inputPath);
21
+ return isInside(baseRoot, candidate)
17
22
  ? candidate
18
- : resolve(projectRoot, 'screenshots', 'external', normalize(inputPath).split(/[\\/]/).pop() || 'output.bin');
23
+ : resolve(baseRoot, 'screenshots', 'external', normalize(inputPath).split(/[\\/]/).pop() || 'output.bin');
19
24
  }
20
25
  function withDefaultExtension(filePath, extension) {
21
26
  if (extname(filePath)) {
@@ -24,20 +29,22 @@ function withDefaultExtension(filePath, extension) {
24
29
  return `${filePath}.${extension.replace(/^\./, '')}`;
25
30
  }
26
31
  export function getProjectRoot() {
27
- return projectRoot;
32
+ return resolveProjectRoot();
28
33
  }
29
34
  export function resolveOutputDirectory(inputDir, fallbackDir = 'screenshots') {
35
+ const projectRoot = getProjectRoot();
30
36
  const requested = inputDir?.trim();
31
37
  if (!requested) {
32
38
  return resolve(projectRoot, fallbackDir);
33
39
  }
34
- const resolved = resolveWithinProject(requested);
40
+ const resolved = resolveWithinProject(requested, projectRoot);
35
41
  if (isInside(projectRoot, resolved)) {
36
42
  return resolved;
37
43
  }
38
44
  return resolve(projectRoot, fallbackDir);
39
45
  }
40
46
  export async function resolveScreenshotOutputPath(options) {
47
+ const projectRoot = getProjectRoot();
41
48
  const extension = options.type === 'jpeg' ? 'jpg' : 'png';
42
49
  const fallbackDir = options.fallbackDir || 'screenshots/manual';
43
50
  const fallbackName = options.fallbackName || 'page';
@@ -44,9 +44,7 @@ export async function parallelExecute(items, executor, options = {}) {
44
44
  duration: Date.now() - startTime,
45
45
  };
46
46
  })();
47
- const wrappedTask = task.then(() => {
48
- executing.delete(wrappedTask);
49
- }, () => {
47
+ const wrappedTask = task.finally(() => {
50
48
  executing.delete(wrappedTask);
51
49
  });
52
50
  executing.add(wrappedTask);
package/package.json CHANGED
@@ -1,8 +1,55 @@
1
1
  {
2
2
  "name": "@jshookmcp/jshook",
3
- "version": "0.2.2",
4
- "description": "MCP server with 249 built-in tools (242 domain tools across 17 domains plus 7 built-in meta-tools) for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration",
5
- "mcpName": "io.github.vmoranv/jshookmcp",
3
+ "version": "0.2.5",
4
+ "description": "MCP server with 327 built-in tools across 23 domains for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration",
5
+ "keywords": [
6
+ "ai",
7
+ "anti-detection",
8
+ "ast",
9
+ "browser-automation",
10
+ "captcha",
11
+ "chrome-devtools",
12
+ "claude",
13
+ "code-analysis",
14
+ "cryptography-detection",
15
+ "debugger",
16
+ "deobfuscation",
17
+ "hook",
18
+ "hooking",
19
+ "javascript",
20
+ "javascript-analysis",
21
+ "mcp",
22
+ "model-context-protocol",
23
+ "network-monitoring",
24
+ "obfuscation",
25
+ "puppeteer",
26
+ "security-analysis",
27
+ "web-scraping"
28
+ ],
29
+ "homepage": "https://github.com/vmoranv/jshookmcp#readme",
30
+ "bugs": {
31
+ "url": "https://github.com/vmoranv/jshookmcp/issues"
32
+ },
33
+ "license": "AGPL-3.0-only",
34
+ "author": {
35
+ "name": "vmoranv",
36
+ "url": "https://github.com/vmoranv"
37
+ },
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "https://github.com/vmoranv/jshookmcp.git"
41
+ },
42
+ "bin": {
43
+ "jshook": "dist/src/index.js",
44
+ "jshookmcp": "dist/src/index.js"
45
+ },
46
+ "files": [
47
+ "dist",
48
+ "workflows",
49
+ "src/native/scripts",
50
+ "scripts/postinstall.cjs"
51
+ ],
52
+ "type": "module",
6
53
  "main": "dist/src/index.js",
7
54
  "types": "dist/src/index.d.ts",
8
55
  "exports": {
@@ -15,63 +62,17 @@
15
62
  "types": "./dist/src/server/plugin-api.d.ts"
16
63
  }
17
64
  },
18
- "type": "module",
19
- "files": [
20
- "dist",
21
- "src/native/scripts",
22
- "scripts/postinstall.cjs"
23
- ],
24
- "bin": {
25
- "jshook": "dist/src/index.js",
26
- "jshookmcp": "dist/src/index.js"
27
- },
28
- "repository": {
29
- "type": "git",
30
- "url": "https://github.com/vmoranv/jshookmcp.git"
31
- },
32
- "bugs": {
33
- "url": "https://github.com/vmoranv/jshookmcp/issues"
34
- },
35
- "homepage": "https://github.com/vmoranv/jshookmcp#readme",
36
65
  "publishConfig": {
37
- "registry": "https://registry.npmjs.org",
38
- "access": "public"
66
+ "access": "public",
67
+ "registry": "https://registry.npmjs.org"
39
68
  },
40
- "keywords": [
41
- "mcp",
42
- "model-context-protocol",
43
- "javascript",
44
- "javascript-analysis",
45
- "security-analysis",
46
- "hook",
47
- "hooking",
48
- "deobfuscation",
49
- "ai",
50
- "claude",
51
- "puppeteer",
52
- "chrome-devtools",
53
- "debugger",
54
- "web-scraping",
55
- "anti-detection",
56
- "captcha",
57
- "browser-automation",
58
- "network-monitoring",
59
- "ast",
60
- "obfuscation",
61
- "cryptography-detection",
62
- "code-analysis"
63
- ],
64
- "author": {
65
- "name": "vmoranv",
66
- "url": "https://github.com/vmoranv"
67
- },
68
- "license": "AGPL-3.0-only",
69
69
  "dependencies": {
70
70
  "@anthropic-ai/sdk": "^0.78.0",
71
71
  "@babel/generator": "^7.29.1",
72
72
  "@babel/parser": "^7.29.0",
73
73
  "@babel/traverse": "^7.29.0",
74
74
  "@babel/types": "^7.29.0",
75
+ "@huggingface/transformers": "^3.8.1",
75
76
  "@modelcontextprotocol/sdk": "^1.27.1",
76
77
  "ajv": "^8.18.0",
77
78
  "ajv-formats": "^3.0.1",
@@ -81,32 +82,24 @@
81
82
  "koffi": "^2.15.1",
82
83
  "openai": "^6.25.0",
83
84
  "ora": "^9.3.0",
85
+ "quickjs-emscripten": "^0.32.0",
84
86
  "rebrowser-puppeteer-core": "^24.8.1",
85
87
  "tinyglobby": "^0.2.15",
86
88
  "zod": "^4.3.6"
87
89
  },
88
- "optionalDependencies": {
89
- "camoufox-js": "^0.9.1",
90
- "playwright-core": "^1.58.2",
91
- "webcrack": "^2.15.1"
92
- },
93
90
  "devDependencies": {
94
- "@huggingface/transformers": "^3.8.1",
95
91
  "@types/babel__generator": "^7.27.0",
96
92
  "@types/babel__traverse": "^7.28.0",
97
93
  "@types/better-sqlite3": "^7.6.13",
98
94
  "@types/node": "^25.3.0",
99
- "@typescript-eslint/eslint-plugin": "^8.56.1",
100
- "@typescript-eslint/parser": "^8.56.1",
101
95
  "@vitest/coverage-v8": "^4.0.18",
102
96
  "cross-env": "^10.1.0",
103
- "eslint": "^10.0.2",
104
97
  "estree-walker": "^2.0.2",
105
98
  "lefthook": "^2.1.3",
106
99
  "medium-zoom": "^1.1.0",
107
100
  "nodemon": "^3.1.14",
108
- "prettier": "^3.8.1",
109
- "quickjs-emscripten": "^0.32.0",
101
+ "oxfmt": "^0.41.0",
102
+ "oxlint": "^1.56.0",
110
103
  "tsc-alias": "^1.8.16",
111
104
  "tsx": "^4.21.0",
112
105
  "typescript": "^5.9.3",
@@ -115,34 +108,45 @@
115
108
  "vitest": "^4.0.18",
116
109
  "vue": "^3.5.30"
117
110
  },
111
+ "optionalDependencies": {
112
+ "better-sqlite3": "12.6.2",
113
+ "camoufox-js": "^0.9.1",
114
+ "playwright-core": "^1.58.2",
115
+ "webcrack": "^2.15.1"
116
+ },
118
117
  "engines": {
119
118
  "node": ">=20.0.0"
120
119
  },
120
+ "mcpName": "io.github.vmoranv/jshookmcp",
121
121
  "scripts": {
122
122
  "build": "node scripts/clean-dist.mjs && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs && node scripts/generate-entry-reexport.mjs && node scripts/fix-bin-permissions.mjs",
123
- "typecheck": "tsc --noEmit -p tsconfig.json && pnpm -C packages/extension-sdk typecheck",
123
+ "typecheck": "tsc --noEmit -p tsconfig.build.json && pnpm -C packages/extension-sdk typecheck",
124
124
  "dev": "tsx --conditions=development watch src/index.ts",
125
125
  "start": "node dist/src/index.js",
126
126
  "doctor": "tsx src/cli/doctor.ts",
127
- "docs:generate": "node scripts/generate-vitepress-reference.mjs && prettier \"docs/reference/**/*.md\" \"docs/en/reference/**/*.md\" --write",
127
+ "docs:generate": "node scripts/generate-vitepress-reference.mjs",
128
128
  "docs:dev": "vitepress dev docs --host 127.0.0.1 --port 5173",
129
129
  "docs:build": "pnpm run docs:generate && vitepress build docs",
130
130
  "docs:preview": "vitepress preview docs --host 127.0.0.1 --port 4173",
131
131
  "lint:md": "pnpm dlx markdownlint-cli2",
132
- "format:docs": "pnpm run docs:generate && prettier docs .github README.md README.zh.md CONTRIBUTING.md --write",
133
- "check:docs-format": "prettier docs .github README.md README.zh.md CONTRIBUTING.md --check",
134
- "lint": "eslint src --ext .ts",
135
- "format": "prettier --write \"src/**/*.ts\"",
132
+ "lint": "oxlint src/ tests/",
133
+ "lint:fix": "oxlint --fix src/ tests/",
134
+ "format": "oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --write --no-error-on-unmatched-pattern",
135
+ "format:check": "oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --check --no-error-on-unmatched-pattern",
136
136
  "test": "vitest run",
137
137
  "test:e2e": "cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ vitest run --config tests/e2e/vitest.e2e.config.ts",
138
138
  "test:coverage": "cross-env ENABLE_INJECTION_TOOLS=true vitest run --coverage",
139
139
  "package:verify-bin": "node scripts/verify-packed-bin.mjs",
140
140
  "package:verify-install": "node scripts/verify-packed-install.mjs",
141
141
  "package:verify-release": "node scripts/verify-release-artifact.mjs",
142
- "audit:tools": "node scripts/audit-tools.mjs",
143
- "check": "pnpm run lint && pnpm run typecheck && pnpm run test",
142
+ "audit:tools": "tsx scripts/audit-tools.mjs",
143
+ "git:refresh-noise": "node scripts/refresh-git-noise.mjs",
144
+ "check": "pnpm run metadata:check && pnpm run lint && pnpm run format:check && pnpm run typecheck && pnpm run test",
144
145
  "package": "pnpm pack",
145
146
  "postinstall": "node scripts/postinstall.cjs",
146
- "install:full": "pnpm install && pnpm exec camoufox-js fetch"
147
+ "install:full": "pnpm install && pnpm exec camoufox-js fetch",
148
+ "metadata:sync": "node scripts/generate-metadata.mjs --write",
149
+ "metadata:check": "node scripts/generate-metadata.mjs --check",
150
+ "check:docs-format": "pnpm run lint:md"
147
151
  }
148
152
  }
@@ -1,37 +1,37 @@
1
- const fs = require('node:fs');
2
- const path = require('node:path');
3
- const { spawnSync } = require('node:child_process');
4
-
5
- const repoGitDir = path.join(process.cwd(), '.git');
6
- const localBin = path.join(
7
- process.cwd(),
8
- 'node_modules',
9
- '.bin',
10
- process.platform === 'win32' ? 'lefthook.cmd' : 'lefthook'
11
- );
12
-
13
- if (!fs.existsSync(repoGitDir)) {
14
- process.exit(0);
15
- }
16
-
17
- if (!fs.existsSync(localBin)) {
18
- console.warn('[postinstall] lefthook not found locally; skipping git hook installation.');
19
- process.exit(0);
20
- }
21
-
22
- const result = spawnSync(localBin, ['install'], {
23
- stdio: 'inherit',
24
- shell: process.platform === 'win32',
25
- });
26
-
27
- if (result.error) {
28
- console.warn(
29
- `[postinstall] lefthook install failed to spawn: ${result.error.message}; skipping git hook installation.`
30
- );
31
- } else if (result.status !== 0) {
32
- console.warn(
33
- `[postinstall] lefthook install exited with status ${result.status}; skipping git hook installation.`
34
- );
35
- }
36
-
37
- process.exit(0);
1
+ const fs = require('node:fs');
2
+ const path = require('node:path');
3
+ const { spawnSync } = require('node:child_process');
4
+
5
+ const repoGitDir = path.join(process.cwd(), '.git');
6
+ const localBin = path.join(
7
+ process.cwd(),
8
+ 'node_modules',
9
+ '.bin',
10
+ process.platform === 'win32' ? 'lefthook.cmd' : 'lefthook'
11
+ );
12
+
13
+ if (!fs.existsSync(repoGitDir)) {
14
+ process.exit(0);
15
+ }
16
+
17
+ if (!fs.existsSync(localBin)) {
18
+ console.warn('[postinstall] lefthook not found locally; skipping git hook installation.');
19
+ process.exit(0);
20
+ }
21
+
22
+ const result = spawnSync(localBin, ['install'], {
23
+ stdio: 'inherit',
24
+ shell: process.platform === 'win32',
25
+ });
26
+
27
+ if (result.error) {
28
+ console.warn(
29
+ `[postinstall] lefthook install failed to spawn: ${result.error.message}; skipping git hook installation.`
30
+ );
31
+ } else if (result.status !== 0) {
32
+ console.warn(
33
+ `[postinstall] lefthook install exited with status ${result.status}; skipping git hook installation.`
34
+ );
35
+ }
36
+
37
+ process.exit(0);
@@ -1,12 +1,12 @@
1
- #!/bin/bash
2
- # enum-windows.sh
3
- # Linux window enumeration script (placeholder)
4
-
5
- TARGET_PID=$1
6
-
7
- # Use xdotool or wmctrl for window enumeration
8
- # This is a placeholder for future implementation
9
-
10
- if command -v xdotool &> /dev/null; then
11
- xdotool search --pid "$TARGET_PID" --name "" get-window-name
12
- fi
1
+ #!/bin/bash
2
+ # enum-windows.sh
3
+ # Linux window enumeration script (placeholder)
4
+
5
+ TARGET_PID=$1
6
+
7
+ # Use xdotool or wmctrl for window enumeration
8
+ # This is a placeholder for future implementation
9
+
10
+ if command -v xdotool &> /dev/null; then
11
+ xdotool search --pid "$TARGET_PID" --name "" get-window-name
12
+ fi