@jshookmcp/jshook 0.2.3 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (583) hide show
  1. package/README.md +14 -5
  2. package/README.zh.md +18 -3
  3. package/dist/packages/extension-sdk/src/bridges/shared.js +2 -2
  4. package/dist/packages/extension-sdk/src/plugin.d.ts +5 -0
  5. package/dist/packages/extension-sdk/src/plugin.js +119 -33
  6. package/dist/packages/extension-sdk/src/workflow.d.ts +171 -0
  7. package/dist/packages/extension-sdk/src/workflow.js +272 -0
  8. package/dist/src/config/search-defaults.js +161 -0
  9. package/dist/src/constants.d.ts +3 -0
  10. package/dist/src/constants.js +4 -1
  11. package/dist/src/index.d.ts +1 -1
  12. package/dist/src/index.js +13 -17
  13. package/dist/src/modules/analyzer/CodeAnalyzer.d.ts +1 -3
  14. package/dist/src/modules/analyzer/CodeAnalyzer.js +16 -28
  15. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.d.ts +1 -2
  16. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.js +1 -45
  17. package/dist/src/modules/analyzer/IntelligentAnalyzer.d.ts +1 -37
  18. package/dist/src/modules/analyzer/IntelligentAnalyzer.js +9 -142
  19. package/dist/src/modules/analyzer/PatternDetector.js +3 -3
  20. package/dist/src/modules/analyzer/PatternDetectorAuthPatterns.js +1 -1
  21. package/dist/src/modules/browser/BrowserDiscovery.js +2 -2
  22. package/dist/src/modules/browser/BrowserModeManager.js +11 -10
  23. package/dist/src/modules/browser/BrowserPool.d.ts +49 -0
  24. package/dist/src/modules/browser/BrowserPool.js +288 -0
  25. package/dist/src/modules/browser/TabRegistry.js +2 -2
  26. package/dist/src/modules/browser/UnifiedBrowserManager.d.ts +1 -0
  27. package/dist/src/modules/browser/UnifiedBrowserManager.js +18 -3
  28. package/dist/src/modules/captcha/AICaptchaDetector.d.ts +1 -10
  29. package/dist/src/modules/captcha/AICaptchaDetector.js +7 -201
  30. package/dist/src/modules/collector/CodeCollector.js +4 -5
  31. package/dist/src/modules/collector/DOMInspector.js +48 -58
  32. package/dist/src/modules/collector/PageController.d.ts +17 -4
  33. package/dist/src/modules/collector/PageController.js +2 -5
  34. package/dist/src/modules/collector/PageScriptCollectors.js +3 -3
  35. package/dist/src/modules/crypto/CryptoDetector.d.ts +1 -4
  36. package/dist/src/modules/crypto/CryptoDetector.js +2 -42
  37. package/dist/src/modules/crypto/CryptoRules.js +1 -1
  38. package/dist/src/modules/debugger/BlackboxManager.js +1 -1
  39. package/dist/src/modules/debugger/DebuggerManager.impl.core.scope.js +1 -1
  40. package/dist/src/modules/debugger/ScriptManager.impl.extract-function-tree.js +4 -2
  41. package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
  42. package/dist/src/modules/deobfuscator/AdvancedDeobfuscator.d.ts +5 -0
  43. package/dist/src/modules/deobfuscator/AdvancedDeobfuscator.js +43 -2
  44. package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
  45. package/dist/src/modules/deobfuscator/Deobfuscator.js +9 -39
  46. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.d.ts +0 -3
  47. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.js +2 -8
  48. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.d.ts +1 -2
  49. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +3 -55
  50. package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
  51. package/dist/src/modules/deobfuscator/VMDeobfuscator.d.ts +2 -10
  52. package/dist/src/modules/deobfuscator/VMDeobfuscator.js +3 -128
  53. package/dist/src/modules/deobfuscator/webcrack.js +15 -2
  54. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.d.ts +5 -8
  55. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.js +10 -102
  56. package/dist/src/modules/emulator/EnvironmentEmulator.d.ts +1 -5
  57. package/dist/src/modules/emulator/EnvironmentEmulator.js +7 -91
  58. package/dist/src/modules/emulator/EnvironmentEmulatorFetch.js +58 -61
  59. package/dist/src/modules/emulator/templates/chrome-env.d.ts +17 -7
  60. package/dist/src/modules/emulator/templates/chrome-env.js +14 -7
  61. package/dist/src/modules/external/ExternalToolRunner.js +25 -22
  62. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.compose.js +5 -5
  63. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.network.js +311 -311
  64. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.runtime.js +410 -410
  65. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.storage.js +122 -122
  66. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.d.ts +13 -0
  67. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.js +42 -0
  68. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.dynamic.js +194 -194
  69. package/dist/src/modules/monitor/FetchInterceptor.d.ts +46 -0
  70. package/dist/src/modules/monitor/FetchInterceptor.js +191 -0
  71. package/dist/src/modules/monitor/PerformanceMonitor.js +8 -7
  72. package/dist/src/modules/monitor/PlaywrightNetworkMonitor.js +62 -62
  73. package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
  74. package/dist/src/modules/process/LinuxProcessManager.js +2 -0
  75. package/dist/src/modules/process/MacProcessManager.js +25 -25
  76. package/dist/src/modules/process/MemoryManager.d.ts +1 -1
  77. package/dist/src/modules/process/MemoryManager.js +2 -2
  78. package/dist/src/modules/process/memory/AuditTrail.js +1 -1
  79. package/dist/src/modules/process/memory/availability.js +49 -49
  80. package/dist/src/modules/process/memory/injector.js +185 -185
  81. package/dist/src/modules/process/memory/reader.js +85 -53
  82. package/dist/src/modules/process/memory/regions.dump.js +51 -51
  83. package/dist/src/modules/process/memory/regions.enumerate.js +108 -108
  84. package/dist/src/modules/process/memory/regions.modules.js +80 -80
  85. package/dist/src/modules/process/memory/regions.protection.js +148 -115
  86. package/dist/src/modules/process/memory/scanner.d.ts +5 -1
  87. package/dist/src/modules/process/memory/scanner.darwin.js +98 -41
  88. package/dist/src/modules/process/memory/scanner.js +88 -4
  89. package/dist/src/modules/process/memory/scanner.windows.js +124 -124
  90. package/dist/src/modules/process/memory/writer.js +98 -58
  91. package/dist/src/modules/security/ExecutionSandbox.js +51 -52
  92. package/dist/src/modules/stealth/FingerprintManager.js +1 -1
  93. package/dist/src/modules/stealth/StealthScripts.d.ts +1 -0
  94. package/dist/src/modules/stealth/StealthScripts.js +18 -13
  95. package/dist/src/modules/stealth/StealthVerifier.js +1 -3
  96. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.d.ts +14 -0
  97. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.js +181 -2
  98. package/dist/src/modules/trace/TraceDB.js +75 -69
  99. package/dist/src/modules/trace/TraceRecorder.js +1 -5
  100. package/dist/src/native/AntiCheatDetector.js +67 -16
  101. package/dist/src/native/CodeInjector.js +3 -3
  102. package/dist/src/native/HardwareBreakpoint.js +24 -15
  103. package/dist/src/native/HeapAnalyzer.js +2 -2
  104. package/dist/src/native/MemoryController.js +1 -1
  105. package/dist/src/native/MemoryScanSession.js +2 -2
  106. package/dist/src/native/MemoryScanner.js +4 -8
  107. package/dist/src/native/NativeMemoryManager.impl.js +2 -2
  108. package/dist/src/native/PEAnalyzer.js +14 -15
  109. package/dist/src/native/PointerChainEngine.js +2 -4
  110. package/dist/src/native/ScriptLoader.js +4 -9
  111. package/dist/src/native/Speedhack.js +1 -1
  112. package/dist/src/native/StructureAnalyzer.js +52 -33
  113. package/dist/src/native/Win32API.d.ts +1 -0
  114. package/dist/src/native/Win32API.js +13 -0
  115. package/dist/src/native/Win32Debug.js +19 -19
  116. package/dist/src/native/platform/darwin/DarwinAPI.d.ts +2 -0
  117. package/dist/src/native/platform/darwin/DarwinAPI.js +8 -0
  118. package/dist/src/native/platform/darwin/DarwinMemoryProvider.js +6 -1
  119. package/dist/src/server/MCPServer.context.d.ts +3 -1
  120. package/dist/src/server/MCPServer.d.ts +2 -1
  121. package/dist/src/server/MCPServer.domain.d.ts +1 -1
  122. package/dist/src/server/MCPServer.domain.js +81 -16
  123. package/dist/src/server/MCPServer.js +41 -14
  124. package/dist/src/server/MCPServer.resources.d.ts +2 -0
  125. package/dist/src/server/MCPServer.resources.js +91 -0
  126. package/dist/src/server/MCPServer.search.handlers.call.js +2 -1
  127. package/dist/src/server/MCPServer.search.helpers.js +1 -1
  128. package/dist/src/server/MCPServer.transport.js +12 -0
  129. package/dist/src/server/ToolCallContextGuard.js +8 -0
  130. package/dist/src/server/ToolRouter.d.ts +25 -9
  131. package/dist/src/server/ToolRouter.intent.d.ts +26 -0
  132. package/dist/src/server/ToolRouter.intent.js +77 -0
  133. package/dist/src/server/ToolRouter.js +103 -284
  134. package/dist/src/server/ToolRouter.policy.d.ts +22 -0
  135. package/dist/src/server/ToolRouter.policy.js +163 -0
  136. package/dist/src/server/ToolRouter.probe.d.ts +17 -0
  137. package/dist/src/server/ToolRouter.probe.js +103 -0
  138. package/dist/src/server/ToolRouter.renderer.d.ts +9 -0
  139. package/dist/src/server/ToolRouter.renderer.js +52 -0
  140. package/dist/src/server/activation/ActivationController.js +15 -12
  141. package/dist/src/server/activation/CompoundConditionEngine.js +1 -1
  142. package/dist/src/server/activation/PredictiveBooster.js +1 -3
  143. package/dist/src/server/domains/analysis/definitions.js +155 -655
  144. package/dist/src/server/domains/analysis/handlers.impl.js +26 -20
  145. package/dist/src/server/domains/analysis/handlers.web-tools.js +2 -1
  146. package/dist/src/server/domains/analysis/manifest.js +6 -4
  147. package/dist/src/server/domains/antidebug/definitions.js +25 -111
  148. package/dist/src/server/domains/browser/definitions.tools.advanced.js +59 -88
  149. package/dist/src/server/domains/browser/definitions.tools.behavior.js +120 -227
  150. package/dist/src/server/domains/browser/definitions.tools.page-core.js +210 -439
  151. package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
  152. package/dist/src/server/domains/browser/definitions.tools.runtime.js +98 -211
  153. package/dist/src/server/domains/browser/definitions.tools.security.js +194 -339
  154. package/dist/src/server/domains/browser/handlers/camoufox-browser.js +3 -2
  155. package/dist/src/server/domains/browser/handlers/captcha-solver.js +3 -3
  156. package/dist/src/server/domains/browser/handlers/dom-query.js +2 -1
  157. package/dist/src/server/domains/browser/handlers/framework-state.js +27 -9
  158. package/dist/src/server/domains/browser/handlers/indexeddb-dump.js +21 -20
  159. package/dist/src/server/domains/browser/handlers/script-management.js +1 -1
  160. package/dist/src/server/domains/browser/handlers/stealth-injection.d.ts +1 -0
  161. package/dist/src/server/domains/browser/handlers/stealth-injection.js +3 -0
  162. package/dist/src/server/domains/browser/handlers.impl.d.ts +1 -2
  163. package/dist/src/server/domains/browser/handlers.impl.js +2 -3
  164. package/dist/src/server/domains/browser/manifest.js +37 -13
  165. package/dist/src/server/domains/coordination/definitions.js +50 -216
  166. package/dist/src/server/domains/coordination/index.d.ts +2 -1
  167. package/dist/src/server/domains/coordination/index.js +1 -0
  168. package/dist/src/server/domains/debugger/definitions.tools.advanced.js +72 -189
  169. package/dist/src/server/domains/debugger/definitions.tools.core.js +114 -288
  170. package/dist/src/server/domains/debugger/manifest.js +9 -2
  171. package/dist/src/server/domains/encoding/definitions.js +43 -153
  172. package/dist/src/server/domains/encoding/handlers.base.js +2 -2
  173. package/dist/src/server/domains/evidence/definitions.d.ts +2 -0
  174. package/dist/src/server/domains/evidence/definitions.js +42 -0
  175. package/dist/src/server/domains/evidence/handlers.d.ts +582 -0
  176. package/dist/src/server/domains/evidence/handlers.js +60 -0
  177. package/dist/src/server/domains/evidence/index.d.ts +2 -0
  178. package/dist/src/server/domains/evidence/index.js +2 -0
  179. package/dist/src/server/domains/evidence/manifest.d.ts +63 -0
  180. package/dist/src/server/domains/evidence/manifest.js +78 -0
  181. package/dist/src/server/domains/graphql/definitions.js +53 -141
  182. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.replay.js +92 -114
  183. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.shared.js +77 -77
  184. package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
  185. package/dist/src/server/domains/hooks/ai-handlers.js +1 -67
  186. package/dist/src/server/domains/hooks/definitions.js +69 -335
  187. package/dist/src/server/domains/hooks/manifest.d.ts +1 -1
  188. package/dist/src/server/domains/hooks/manifest.js +1 -2
  189. package/dist/src/server/domains/instrumentation/definitions.d.ts +2 -0
  190. package/dist/src/server/domains/instrumentation/definitions.js +99 -0
  191. package/dist/src/server/domains/instrumentation/handlers.d.ts +78 -0
  192. package/dist/src/server/domains/instrumentation/handlers.js +206 -0
  193. package/dist/src/server/domains/instrumentation/index.d.ts +2 -0
  194. package/dist/src/server/domains/instrumentation/index.js +2 -0
  195. package/dist/src/server/domains/instrumentation/manifest.d.ts +63 -0
  196. package/dist/src/server/domains/instrumentation/manifest.js +114 -0
  197. package/dist/src/server/domains/macro/definitions.js +16 -43
  198. package/dist/src/server/domains/maintenance/definitions.js +60 -219
  199. package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
  200. package/dist/src/server/domains/memory/definitions.js +387 -559
  201. package/dist/src/server/domains/memory/handlers/hooks.d.ts +55 -0
  202. package/dist/src/server/domains/memory/handlers/hooks.js +115 -0
  203. package/dist/src/server/domains/memory/handlers/integrity.d.ts +77 -0
  204. package/dist/src/server/domains/memory/handlers/integrity.js +180 -0
  205. package/dist/src/server/domains/memory/handlers/pointer-chain.d.ts +29 -0
  206. package/dist/src/server/domains/memory/handlers/pointer-chain.js +82 -0
  207. package/dist/src/server/domains/memory/handlers/readwrite.d.ts +41 -0
  208. package/dist/src/server/domains/memory/handlers/readwrite.js +78 -0
  209. package/dist/src/server/domains/memory/handlers/scan.d.ts +35 -0
  210. package/dist/src/server/domains/memory/handlers/scan.js +97 -0
  211. package/dist/src/server/domains/memory/handlers/session.d.ts +23 -0
  212. package/dist/src/server/domains/memory/handlers/session.js +49 -0
  213. package/dist/src/server/domains/memory/handlers/structure.d.ts +29 -0
  214. package/dist/src/server/domains/memory/handlers/structure.js +74 -0
  215. package/dist/src/server/domains/memory/handlers.impl.d.ts +49 -54
  216. package/dist/src/server/domains/memory/handlers.impl.js +63 -494
  217. package/dist/src/server/domains/memory/manifest.js +236 -64
  218. package/dist/src/server/domains/native-bridge/definitions.js +54 -192
  219. package/dist/src/server/domains/native-bridge/index.d.ts +1 -0
  220. package/dist/src/server/domains/native-bridge/index.js +2 -1
  221. package/dist/src/server/domains/network/auth-extractor.js +1 -1
  222. package/dist/src/server/domains/network/definitions.js +175 -578
  223. package/dist/src/server/domains/network/handlers.base.core.d.ts +64 -0
  224. package/dist/src/server/domains/network/handlers.base.core.js +623 -0
  225. package/dist/src/server/domains/network/handlers.base.d.ts +2 -124
  226. package/dist/src/server/domains/network/handlers.base.js +3 -878
  227. package/dist/src/server/domains/network/handlers.base.performance.d.ts +63 -0
  228. package/dist/src/server/domains/network/handlers.base.performance.js +193 -0
  229. package/dist/src/server/domains/network/handlers.base.types.d.ts +42 -0
  230. package/dist/src/server/domains/network/handlers.base.types.js +89 -0
  231. package/dist/src/server/domains/network/handlers.impl.core.runtime.d.ts +1 -1
  232. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.d.ts +21 -0
  233. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.js +186 -0
  234. package/dist/src/server/domains/network/handlers.impl.core.runtime.js +1 -1
  235. package/dist/src/server/domains/network/manifest.js +15 -0
  236. package/dist/src/server/domains/network/replay.js +1 -4
  237. package/dist/src/server/domains/platform/definitions.js +121 -112
  238. package/dist/src/server/domains/platform/handlers/bridge-handlers.d.ts +4 -0
  239. package/dist/src/server/domains/platform/handlers/bridge-handlers.js +193 -4
  240. package/dist/src/server/domains/platform/handlers/electron-asar-helpers.js +26 -6
  241. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.d.ts +3 -0
  242. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.js +170 -0
  243. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.d.ts +3 -0
  244. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.js +193 -0
  245. package/dist/src/server/domains/platform/handlers/electron-handlers.d.ts +6 -0
  246. package/dist/src/server/domains/platform/handlers/electron-handlers.js +95 -2
  247. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.d.ts +2 -0
  248. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.js +370 -0
  249. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.d.ts +2 -0
  250. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.js +78 -0
  251. package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +3 -3
  252. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.d.ts +2 -0
  253. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.js +207 -0
  254. package/dist/src/server/domains/platform/handlers.d.ts +48 -0
  255. package/dist/src/server/domains/platform/handlers.js +29 -0
  256. package/dist/src/server/domains/platform/manifest.js +38 -0
  257. package/dist/src/server/domains/process/definitions.js +163 -647
  258. package/dist/src/server/domains/process/handlers.base.d.ts +3 -95
  259. package/dist/src/server/domains/process/handlers.base.js +7 -462
  260. package/dist/src/server/domains/process/handlers.base.process.d.ts +61 -0
  261. package/dist/src/server/domains/process/handlers.base.process.js +417 -0
  262. package/dist/src/server/domains/process/handlers.base.types.d.ts +57 -0
  263. package/dist/src/server/domains/process/handlers.base.types.js +50 -0
  264. package/dist/src/server/domains/process/handlers.impl.core.runtime.inject.js +18 -16
  265. package/dist/src/server/domains/process/manifest.js +6 -1
  266. package/dist/src/server/domains/sandbox/definitions.js +11 -33
  267. package/dist/src/server/domains/sandbox/handlers.js +8 -3
  268. package/dist/src/server/domains/shared/ResponseBuilder.d.ts +209 -0
  269. package/dist/src/server/domains/shared/ResponseBuilder.js +48 -0
  270. package/dist/src/server/domains/shared/modules.d.ts +0 -2
  271. package/dist/src/server/domains/shared/modules.js +0 -1
  272. package/dist/src/server/domains/shared-state-board/definitions.d.ts +2 -0
  273. package/dist/src/server/domains/shared-state-board/definitions.js +78 -0
  274. package/dist/src/server/domains/shared-state-board/handlers.impl.d.ts +58 -0
  275. package/dist/src/server/domains/shared-state-board/handlers.impl.js +419 -0
  276. package/dist/src/server/domains/shared-state-board/index.d.ts +2 -0
  277. package/dist/src/server/domains/shared-state-board/index.js +2 -0
  278. package/dist/src/server/domains/shared-state-board/manifest.d.ts +57 -0
  279. package/dist/src/server/domains/shared-state-board/manifest.js +74 -0
  280. package/dist/src/server/domains/sourcemap/definitions.js +27 -111
  281. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-common.js +7 -2
  282. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-main.js +1 -1
  283. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-parse-base.js +1 -1
  284. package/dist/src/server/domains/sourcemap/manifest.d.ts +1 -1
  285. package/dist/src/server/domains/sourcemap/manifest.js +1 -1
  286. package/dist/src/server/domains/streaming/definitions.js +36 -148
  287. package/dist/src/server/domains/streaming/handlers.impl.streaming-sse.js +163 -164
  288. package/dist/src/server/domains/streaming/handlers.impl.streaming-ws.js +1 -1
  289. package/dist/src/server/domains/trace/TraceSummarizer.js +8 -5
  290. package/dist/src/server/domains/trace/definitions.tools.js +51 -206
  291. package/dist/src/server/domains/trace/handlers.js +10 -12
  292. package/dist/src/server/domains/trace/index.d.ts +2 -1
  293. package/dist/src/server/domains/trace/index.js +2 -1
  294. package/dist/src/server/domains/trace/manifest.js +15 -3
  295. package/dist/src/server/domains/transform/definitions.js +50 -210
  296. package/dist/src/server/domains/transform/handlers.impl.transform-base.js +108 -108
  297. package/dist/src/server/domains/transform/handlers.impl.transform-crypto.js +18 -19
  298. package/dist/src/server/domains/transform/manifest.d.ts +1 -1
  299. package/dist/src/server/domains/transform/manifest.js +1 -1
  300. package/dist/src/server/domains/wasm/definitions.js +55 -232
  301. package/dist/src/server/domains/wasm/handlers.js +1 -1
  302. package/dist/src/server/domains/workflow/definitions.js +144 -414
  303. package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +1 -1
  304. package/dist/src/server/domains/workflow/handlers.impl.workflow-api.js +51 -51
  305. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.d.ts +2 -0
  306. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.js +126 -87
  307. package/dist/src/server/domains/workflow/handlers.impl.workflow-batch.js +5 -5
  308. package/dist/src/server/evidence/ReverseEvidenceGraph.d.ts +20 -0
  309. package/dist/src/server/evidence/ReverseEvidenceGraph.js +208 -0
  310. package/dist/src/server/evidence/index.d.ts +2 -0
  311. package/dist/src/server/evidence/index.js +1 -0
  312. package/dist/src/server/evidence/types.d.ts +22 -0
  313. package/dist/src/server/evidence/types.js +1 -0
  314. package/dist/src/server/extensions/ExtensionManager.d.ts +1 -0
  315. package/dist/src/server/extensions/ExtensionManager.discovery.js +72 -9
  316. package/dist/src/server/extensions/ExtensionManager.integrity.js +1 -1
  317. package/dist/src/server/extensions/ExtensionManager.js +193 -40
  318. package/dist/src/server/extensions/ExtensionManager.roots.d.ts +1 -1
  319. package/dist/src/server/extensions/ExtensionManager.roots.js +4 -4
  320. package/dist/src/server/extensions/plugin-config.js +1 -1
  321. package/dist/src/server/extensions/plugin-env.d.ts +1 -1
  322. package/dist/src/server/extensions/plugin-env.js +10 -4
  323. package/dist/src/server/extensions/types.d.ts +17 -0
  324. package/dist/src/server/extensions/types.js +1 -1
  325. package/dist/src/server/http/SseStream.d.ts +21 -0
  326. package/dist/src/server/http/SseStream.js +129 -0
  327. package/dist/src/server/instrumentation/EvidenceGraphBridge.d.ts +13 -0
  328. package/dist/src/server/instrumentation/EvidenceGraphBridge.js +150 -0
  329. package/dist/src/server/instrumentation/InstrumentationSession.d.ts +60 -0
  330. package/dist/src/server/instrumentation/InstrumentationSession.js +269 -0
  331. package/dist/src/server/instrumentation/index.d.ts +2 -0
  332. package/dist/src/server/instrumentation/index.js +2 -0
  333. package/dist/src/server/instrumentation/types.d.ts +62 -0
  334. package/dist/src/server/instrumentation/types.js +7 -0
  335. package/dist/src/server/macros/MacroConfigLoader.d.ts +6 -5
  336. package/dist/src/server/macros/MacroConfigLoader.js +61 -59
  337. package/dist/src/server/macros/MacroRunner.js +6 -2
  338. package/dist/src/server/macros/builtins/index.d.ts +2 -3
  339. package/dist/src/server/macros/builtins/index.js +51 -7
  340. package/dist/src/server/plugins/PluginContract.d.ts +1 -1
  341. package/dist/src/server/registry/contracts.d.ts +1 -1
  342. package/dist/src/server/registry/discovery.js +5 -4
  343. package/dist/src/server/registry/ensure-browser-core.js +0 -3
  344. package/dist/src/server/registry/index.js +4 -4
  345. package/dist/src/server/registry/tool-builder.d.ts +46 -0
  346. package/dist/src/server/registry/tool-builder.js +105 -0
  347. package/dist/src/server/sandbox/QuickJSSandbox.js +16 -5
  348. package/dist/src/server/sandbox/SandboxHelpers.js +250 -250
  349. package/dist/src/server/search/EmbeddingWorker.js +5 -3
  350. package/dist/src/server/search/FeedbackTracker.d.ts +9 -0
  351. package/dist/src/server/search/FeedbackTracker.js +26 -0
  352. package/dist/src/server/search/QueryNormalizer.d.ts +6 -0
  353. package/dist/src/server/search/QueryNormalizer.js +94 -0
  354. package/dist/src/server/search/ToolSearchEngineImpl.d.ts +2 -3
  355. package/dist/src/server/search/ToolSearchEngineImpl.js +38 -88
  356. package/dist/src/server/teams/TeamManager.d.ts +43 -0
  357. package/dist/src/server/teams/TeamManager.js +238 -0
  358. package/dist/src/server/teams/index.d.ts +1 -0
  359. package/dist/src/server/teams/index.js +1 -0
  360. package/dist/src/server/workflows/WorkflowContract.d.ts +44 -4
  361. package/dist/src/server/workflows/WorkflowContract.js +52 -0
  362. package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
  363. package/dist/src/server/workflows/WorkflowEngine.js +314 -4
  364. package/dist/src/types/config.d.ts +0 -14
  365. package/dist/src/types/deobfuscator.d.ts +1 -1
  366. package/dist/src/types/index.d.ts +1 -1
  367. package/dist/src/utils/DetailedDataManager.js +2 -0
  368. package/dist/src/utils/RingBuffer.js +5 -5
  369. package/dist/src/utils/TokenBudgetManager.js +1 -1
  370. package/dist/src/utils/UnifiedCacheManager.js +1 -1
  371. package/dist/src/utils/artifactRetention.js +2 -2
  372. package/dist/src/utils/betterSqlite3.d.ts +11 -0
  373. package/dist/src/utils/betterSqlite3.js +88 -0
  374. package/dist/src/utils/browserExecutable.js +2 -2
  375. package/dist/src/utils/cache/CachedDecorator.d.ts +8 -0
  376. package/dist/src/utils/cache/CachedDecorator.js +55 -0
  377. package/dist/src/utils/cache/PersistentCache.d.ts +33 -0
  378. package/dist/src/utils/cache/PersistentCache.js +246 -0
  379. package/dist/src/utils/cache/index.d.ts +2 -0
  380. package/dist/src/utils/cache/index.js +2 -0
  381. package/dist/src/utils/cliFastPath.js +5 -8
  382. package/dist/src/utils/config.js +4 -26
  383. package/dist/src/utils/environmentDoctor.js +138 -11
  384. package/dist/src/utils/outputPaths.js +16 -9
  385. package/dist/src/utils/parallel.js +1 -3
  386. package/package.json +82 -81
  387. package/scripts/postinstall.cjs +54 -27
  388. package/workflows/.gitkeep +0 -0
  389. package/workflows/anti-bot-diagnoser/.jshook-install.json +14 -0
  390. package/workflows/anti-bot-diagnoser/LICENSE +21 -0
  391. package/workflows/anti-bot-diagnoser/README.md +105 -0
  392. package/workflows/anti-bot-diagnoser/docs/agent-recipes.md +44 -0
  393. package/workflows/anti-bot-diagnoser/meta.yaml +6 -0
  394. package/workflows/anti-bot-diagnoser/package.json +22 -0
  395. package/workflows/anti-bot-diagnoser/tsconfig.json +15 -0
  396. package/workflows/anti-bot-diagnoser/workflow.ts +224 -0
  397. package/workflows/api-openapi-probe/.jshook-install.json +14 -0
  398. package/workflows/api-openapi-probe/meta.yaml +6 -0
  399. package/workflows/api-openapi-probe/package.json +22 -0
  400. package/workflows/api-openapi-probe/pnpm-lock.yaml +819 -0
  401. package/workflows/api-openapi-probe/tsconfig.json +15 -0
  402. package/workflows/api-openapi-probe/workflow.ts +40 -0
  403. package/workflows/api-probe-batch/.jshook-install.json +14 -0
  404. package/workflows/api-probe-batch/LICENSE +21 -0
  405. package/workflows/api-probe-batch/README.md +45 -0
  406. package/workflows/api-probe-batch/meta.yaml +4 -0
  407. package/workflows/api-probe-batch/package.json +23 -0
  408. package/workflows/api-probe-batch/tsconfig.json +16 -0
  409. package/workflows/api-probe-batch/workflow.ts +111 -0
  410. package/workflows/auth-bootstrap/.jshook-install.json +14 -0
  411. package/workflows/auth-bootstrap/LICENSE +21 -0
  412. package/workflows/auth-bootstrap/README.md +74 -0
  413. package/workflows/auth-bootstrap/meta.yaml +4 -0
  414. package/workflows/auth-bootstrap/package.json +23 -0
  415. package/workflows/auth-bootstrap/tsconfig.json +16 -0
  416. package/workflows/auth-bootstrap/workflow.ts +141 -0
  417. package/workflows/auth-extract/.jshook-install.json +14 -0
  418. package/workflows/auth-extract/meta.yaml +6 -0
  419. package/workflows/auth-extract/package.json +22 -0
  420. package/workflows/auth-extract/pnpm-lock.yaml +819 -0
  421. package/workflows/auth-extract/tsconfig.json +15 -0
  422. package/workflows/auth-extract/workflow.ts +36 -0
  423. package/workflows/auth-surface-mapper/.jshook-install.json +14 -0
  424. package/workflows/auth-surface-mapper/meta.yaml +6 -0
  425. package/workflows/auth-surface-mapper/package.json +22 -0
  426. package/workflows/auth-surface-mapper/pnpm-lock.yaml +819 -0
  427. package/workflows/auth-surface-mapper/tsconfig.json +15 -0
  428. package/workflows/auth-surface-mapper/workflow.ts +104 -0
  429. package/workflows/batch-register/.jshook-install.json +14 -0
  430. package/workflows/batch-register/LICENSE +21 -0
  431. package/workflows/batch-register/README.md +39 -0
  432. package/workflows/batch-register/meta.yaml +4 -0
  433. package/workflows/batch-register/package.json +23 -0
  434. package/workflows/batch-register/tsconfig.json +16 -0
  435. package/workflows/batch-register/workflow.ts +67 -0
  436. package/workflows/bundle-recovery/.jshook-install.json +14 -0
  437. package/workflows/bundle-recovery/LICENSE +21 -0
  438. package/workflows/bundle-recovery/README.md +105 -0
  439. package/workflows/bundle-recovery/docs/agent-recipes.md +44 -0
  440. package/workflows/bundle-recovery/meta.yaml +6 -0
  441. package/workflows/bundle-recovery/package.json +22 -0
  442. package/workflows/bundle-recovery/tsconfig.json +15 -0
  443. package/workflows/bundle-recovery/workflow.ts +179 -0
  444. package/workflows/challenge-detector/.jshook-install.json +14 -0
  445. package/workflows/challenge-detector/meta.yaml +14 -0
  446. package/workflows/challenge-detector/package.json +22 -0
  447. package/workflows/challenge-detector/pnpm-lock.yaml +819 -0
  448. package/workflows/challenge-detector/tsconfig.json +15 -0
  449. package/workflows/challenge-detector/workflow.ts +298 -0
  450. package/workflows/deobfuscation-pipeline/.jshook-install.json +14 -0
  451. package/workflows/deobfuscation-pipeline/meta.yaml +6 -0
  452. package/workflows/deobfuscation-pipeline/package.json +22 -0
  453. package/workflows/deobfuscation-pipeline/pnpm-lock.yaml +819 -0
  454. package/workflows/deobfuscation-pipeline/tsconfig.json +15 -0
  455. package/workflows/deobfuscation-pipeline/workflow.ts +119 -0
  456. package/workflows/electron-bridge-mapper/.jshook-install.json +14 -0
  457. package/workflows/electron-bridge-mapper/meta.yaml +6 -0
  458. package/workflows/electron-bridge-mapper/package.json +22 -0
  459. package/workflows/electron-bridge-mapper/pnpm-lock.yaml +819 -0
  460. package/workflows/electron-bridge-mapper/tsconfig.json +15 -0
  461. package/workflows/electron-bridge-mapper/workflow.ts +125 -0
  462. package/workflows/evidence-pack/.jshook-install.json +14 -0
  463. package/workflows/evidence-pack/LICENSE +21 -0
  464. package/workflows/evidence-pack/README.md +105 -0
  465. package/workflows/evidence-pack/docs/agent-recipes.md +44 -0
  466. package/workflows/evidence-pack/meta.yaml +6 -0
  467. package/workflows/evidence-pack/package.json +22 -0
  468. package/workflows/evidence-pack/tsconfig.json +15 -0
  469. package/workflows/evidence-pack/workflow.ts +154 -0
  470. package/workflows/js-bundle-search/.jshook-install.json +14 -0
  471. package/workflows/js-bundle-search/LICENSE +21 -0
  472. package/workflows/js-bundle-search/README.md +46 -0
  473. package/workflows/js-bundle-search/meta.yaml +4 -0
  474. package/workflows/js-bundle-search/package.json +23 -0
  475. package/workflows/js-bundle-search/tsconfig.json +16 -0
  476. package/workflows/js-bundle-search/workflow.ts +118 -0
  477. package/workflows/protocol-registry/.jshook-install.json +14 -0
  478. package/workflows/protocol-registry/meta.yaml +6 -0
  479. package/workflows/protocol-registry/package.json +22 -0
  480. package/workflows/protocol-registry/pnpm-lock.yaml +819 -0
  481. package/workflows/protocol-registry/tsconfig.json +15 -0
  482. package/workflows/protocol-registry/workflow.ts +107 -0
  483. package/workflows/qwen-mail-open-latest/meta.yaml +7 -0
  484. package/workflows/qwen-mail-open-latest/package.json +22 -0
  485. package/workflows/qwen-mail-open-latest/pnpm-lock.yaml +819 -0
  486. package/workflows/qwen-mail-open-latest/tsconfig.json +15 -0
  487. package/workflows/qwen-mail-open-latest/workflow.ts +77 -0
  488. package/workflows/register-account-flow/.jshook-install.json +14 -0
  489. package/workflows/register-account-flow/LICENSE +21 -0
  490. package/workflows/register-account-flow/README.md +64 -0
  491. package/workflows/register-account-flow/meta.yaml +4 -0
  492. package/workflows/register-account-flow/package.json +23 -0
  493. package/workflows/register-account-flow/tsconfig.json +16 -0
  494. package/workflows/register-account-flow/workflow.ts +127 -0
  495. package/workflows/replay-lab/.jshook-install.json +14 -0
  496. package/workflows/replay-lab/meta.yaml +6 -0
  497. package/workflows/replay-lab/package.json +22 -0
  498. package/workflows/replay-lab/pnpm-lock.yaml +819 -0
  499. package/workflows/replay-lab/tsconfig.json +15 -0
  500. package/workflows/replay-lab/workflow.ts +106 -0
  501. package/workflows/script-evidence-scan/.jshook-install.json +14 -0
  502. package/workflows/script-evidence-scan/LICENSE +21 -0
  503. package/workflows/script-evidence-scan/README.md +61 -0
  504. package/workflows/script-evidence-scan/meta.yaml +4 -0
  505. package/workflows/script-evidence-scan/package.json +23 -0
  506. package/workflows/script-evidence-scan/tsconfig.json +16 -0
  507. package/workflows/script-evidence-scan/workflow.ts +89 -0
  508. package/workflows/signature-hunter/.jshook-install.json +14 -0
  509. package/workflows/signature-hunter/LICENSE +21 -0
  510. package/workflows/signature-hunter/README.md +105 -0
  511. package/workflows/signature-hunter/docs/agent-recipes.md +44 -0
  512. package/workflows/signature-hunter/meta.yaml +6 -0
  513. package/workflows/signature-hunter/package.json +22 -0
  514. package/workflows/signature-hunter/tsconfig.json +15 -0
  515. package/workflows/signature-hunter/workflow.ts +170 -0
  516. package/workflows/signing-lineage/.jshook-install.json +14 -0
  517. package/workflows/signing-lineage/meta.yaml +6 -0
  518. package/workflows/signing-lineage/package.json +22 -0
  519. package/workflows/signing-lineage/pnpm-lock.yaml +819 -0
  520. package/workflows/signing-lineage/tsconfig.json +15 -0
  521. package/workflows/signing-lineage/workflow.ts +120 -0
  522. package/workflows/temp-mail-extract-link/.jshook-install.json +14 -0
  523. package/workflows/temp-mail-extract-link/LICENSE +21 -0
  524. package/workflows/temp-mail-extract-link/README.md +71 -0
  525. package/workflows/temp-mail-extract-link/meta.yaml +4 -0
  526. package/workflows/temp-mail-extract-link/package.json +23 -0
  527. package/workflows/temp-mail-extract-link/tsconfig.json +16 -0
  528. package/workflows/temp-mail-extract-link/workflow.ts +221 -0
  529. package/workflows/temp-mail-open-latest/.jshook-install.json +14 -0
  530. package/workflows/temp-mail-open-latest/LICENSE +21 -0
  531. package/workflows/temp-mail-open-latest/README.md +61 -0
  532. package/workflows/temp-mail-open-latest/meta.yaml +4 -0
  533. package/workflows/temp-mail-open-latest/package.json +23 -0
  534. package/workflows/temp-mail-open-latest/tsconfig.json +16 -0
  535. package/workflows/temp-mail-open-latest/workflow.ts +136 -0
  536. package/workflows/template/.jshook-install.json +14 -0
  537. package/workflows/template/LICENSE +21 -0
  538. package/workflows/template/README.md +45 -0
  539. package/workflows/template/docs/SKILL.md +111 -0
  540. package/workflows/template/meta.yaml +6 -0
  541. package/workflows/template/package.json +22 -0
  542. package/workflows/template/pnpm-lock.yaml +819 -0
  543. package/workflows/template/tsconfig.json +15 -0
  544. package/workflows/template/workflow.ts +73 -0
  545. package/workflows/web-api-capture-session/.jshook-install.json +14 -0
  546. package/workflows/web-api-capture-session/LICENSE +21 -0
  547. package/workflows/web-api-capture-session/README.md +64 -0
  548. package/workflows/web-api-capture-session/meta.yaml +4 -0
  549. package/workflows/web-api-capture-session/package.json +23 -0
  550. package/workflows/web-api-capture-session/tsconfig.json +16 -0
  551. package/workflows/web-api-capture-session/workflow.ts +124 -0
  552. package/workflows/ws-protocol-lifter/.jshook-install.json +14 -0
  553. package/workflows/ws-protocol-lifter/LICENSE +21 -0
  554. package/workflows/ws-protocol-lifter/README.md +105 -0
  555. package/workflows/ws-protocol-lifter/docs/agent-recipes.md +44 -0
  556. package/workflows/ws-protocol-lifter/meta.yaml +6 -0
  557. package/workflows/ws-protocol-lifter/package.json +22 -0
  558. package/workflows/ws-protocol-lifter/tsconfig.json +15 -0
  559. package/workflows/ws-protocol-lifter/workflow.ts +163 -0
  560. package/dist/src/modules/analyzer/AISummarizer.d.ts +0 -39
  561. package/dist/src/modules/analyzer/AISummarizer.js +0 -122
  562. package/dist/src/modules/hook/AIHookGenerator.d.ts +0 -52
  563. package/dist/src/modules/hook/AIHookGenerator.js +0 -360
  564. package/dist/src/modules/hook/AIHookGeneratorTemplates.d.ts +0 -9
  565. package/dist/src/modules/hook/AIHookGeneratorTemplates.js +0 -157
  566. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.d.ts +0 -2
  567. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.js +0 -25
  568. package/dist/src/server/macros/builtins/unpacker-flow.d.ts +0 -2
  569. package/dist/src/server/macros/builtins/unpacker-flow.js +0 -25
  570. package/dist/src/services/LLMService.d.ts +0 -37
  571. package/dist/src/services/LLMService.js +0 -233
  572. package/dist/src/services/prompts/analysis.d.ts +0 -9
  573. package/dist/src/services/prompts/analysis.js +0 -158
  574. package/dist/src/services/prompts/crypto.d.ts +0 -2
  575. package/dist/src/services/prompts/crypto.js +0 -108
  576. package/dist/src/services/prompts/deobfuscation.d.ts +0 -6
  577. package/dist/src/services/prompts/deobfuscation.js +0 -300
  578. package/dist/src/services/prompts/environment.d.ts +0 -16
  579. package/dist/src/services/prompts/environment.js +0 -372
  580. package/dist/src/services/prompts/intelligence.d.ts +0 -4
  581. package/dist/src/services/prompts/intelligence.js +0 -250
  582. package/dist/src/services/prompts/taint.d.ts +0 -2
  583. package/dist/src/services/prompts/taint.js +0 -54
@@ -0,0 +1,417 @@
1
+ import { UnifiedProcessManager, MemoryManager } from '../../domains/shared/modules.js';
2
+ import { MemoryAuditTrail } from '../../../modules/process/memory/AuditTrail.js';
3
+ import { logger } from '../../../utils/logger.js';
4
+ import { argNumber, argStringArray } from '../../domains/shared/parse-args.js';
5
+ import { validatePid, requireString, } from './handlers.base.types.js';
6
+ export class ProcessHandlersCore {
7
+ processManager;
8
+ memoryManager;
9
+ platform;
10
+ auditTrail = new MemoryAuditTrail();
11
+ constructor() {
12
+ this.processManager = new UnifiedProcessManager();
13
+ this.memoryManager = new MemoryManager();
14
+ this.platform = this.processManager.getPlatform();
15
+ logger.info(`ProcessToolHandlers initialized for platform: ${this.platform}`);
16
+ }
17
+ async buildMemoryDiagnostics(input) {
18
+ const recommendedActions = new Set();
19
+ const permission = await this.memoryManager.checkAvailability();
20
+ if (!permission.available) {
21
+ recommendedActions.add('Run as administrator');
22
+ }
23
+ let processInfo = null;
24
+ if (input.pid !== undefined && input.pid !== null) {
25
+ try {
26
+ const resolvedProcess = await this.processManager.getProcessByPid(input.pid);
27
+ processInfo = resolvedProcess
28
+ ? {
29
+ pid: resolvedProcess.pid,
30
+ name: resolvedProcess.name,
31
+ executablePath: resolvedProcess.executablePath,
32
+ windowTitle: resolvedProcess.windowTitle,
33
+ windowHandle: resolvedProcess.windowHandle,
34
+ memoryUsage: resolvedProcess.memoryUsage,
35
+ }
36
+ : null;
37
+ }
38
+ catch {
39
+ processInfo = null;
40
+ }
41
+ if (!processInfo) {
42
+ recommendedActions.add('Check if process is still running');
43
+ }
44
+ }
45
+ let protectionInfo = null;
46
+ let protectionQueryFailed = false;
47
+ if (input.pid !== undefined && input.pid !== null && input.address) {
48
+ try {
49
+ protectionInfo = await this.memoryManager.checkMemoryProtection(input.pid, input.address);
50
+ }
51
+ catch {
52
+ protectionQueryFailed = true;
53
+ }
54
+ if (protectionQueryFailed || protectionInfo?.success === false) {
55
+ recommendedActions.add('Verify address is within valid memory region');
56
+ }
57
+ }
58
+ if (input.size !== undefined &&
59
+ input.size !== null &&
60
+ protectionInfo?.regionSize !== undefined &&
61
+ protectionInfo.regionSize !== null &&
62
+ input.size > protectionInfo.regionSize) {
63
+ recommendedActions.add('Reduce the requested size to fit the target memory region');
64
+ }
65
+ if (input.operation === 'memory_read' &&
66
+ protectionInfo?.success &&
67
+ protectionInfo.isReadable === false) {
68
+ recommendedActions.add('Ensure target memory region is readable');
69
+ }
70
+ if (input.operation === 'memory_write' &&
71
+ protectionInfo?.success &&
72
+ protectionInfo.isWritable === false) {
73
+ recommendedActions.add('Ensure target memory region is writable');
74
+ }
75
+ let modulesEnumerated = false;
76
+ let moduleCount = null;
77
+ if (input.pid !== undefined && input.pid !== null) {
78
+ try {
79
+ const modulesResult = await this.memoryManager.enumerateModules(input.pid);
80
+ modulesEnumerated = modulesResult.success;
81
+ moduleCount = modulesResult.modules?.length ?? null;
82
+ }
83
+ catch {
84
+ modulesEnumerated = false;
85
+ }
86
+ }
87
+ if (input.pid !== undefined && input.pid !== null && input.address) {
88
+ recommendedActions.add('Re-resolve the address after the process restarts because ASLR can shift module addresses');
89
+ }
90
+ const normalizedError = input.error?.toLowerCase() ?? '';
91
+ if (normalizedError.includes('access denied') ||
92
+ normalizedError.includes('permission') ||
93
+ normalizedError.includes('privilege') ||
94
+ normalizedError.includes('administrator')) {
95
+ recommendedActions.add('Run as administrator');
96
+ }
97
+ const aslrNote = modulesEnumerated
98
+ ? moduleCount && moduleCount > 0
99
+ ? `Enumerated ${moduleCount} module(s). Treat absolute addresses as session-specific because ASLR can shift module bases between launches.`
100
+ : 'Module enumeration succeeded but returned no modules. Absolute addresses may still change across process launches because of ASLR.'
101
+ : 'Module enumeration was unavailable. Assume ASLR may shift absolute addresses between launches and re-resolve addresses after restarts.';
102
+ return {
103
+ permission: {
104
+ available: permission.available,
105
+ reason: permission.reason,
106
+ platform: this.platform,
107
+ },
108
+ process: {
109
+ exists: input.pid !== undefined && input.pid !== null ? Boolean(processInfo) : null,
110
+ pid: input.pid ?? null,
111
+ name: processInfo?.name ?? null,
112
+ },
113
+ address: {
114
+ queried: input.pid !== undefined && input.pid !== null && Boolean(input.address),
115
+ valid: input.pid !== undefined && input.pid !== null && input.address
116
+ ? (protectionInfo?.success ?? null)
117
+ : null,
118
+ protection: protectionInfo?.protection ?? null,
119
+ regionStart: protectionInfo?.regionStart ?? null,
120
+ regionSize: protectionInfo?.regionSize ?? null,
121
+ },
122
+ aslr: {
123
+ heuristic: true,
124
+ note: aslrNote,
125
+ },
126
+ recommendedActions: Array.from(recommendedActions),
127
+ };
128
+ }
129
+ async safeBuildMemoryDiagnostics(input) {
130
+ try {
131
+ return await this.buildMemoryDiagnostics(input);
132
+ }
133
+ catch (diagnosticError) {
134
+ logger.warn('Memory diagnostics generation failed:', diagnosticError);
135
+ return undefined;
136
+ }
137
+ }
138
+ recordMemoryAudit(entry) {
139
+ try {
140
+ this.auditTrail.record(entry);
141
+ }
142
+ catch (auditError) {
143
+ logger.warn('Memory audit trail recording failed:', auditError);
144
+ }
145
+ }
146
+ async handleProcessFind(args) {
147
+ try {
148
+ const pattern = requireString(args.pattern, 'pattern');
149
+ const processes = await this.processManager.findProcesses(pattern);
150
+ return {
151
+ content: [
152
+ {
153
+ type: 'text',
154
+ text: JSON.stringify({
155
+ success: true,
156
+ pattern,
157
+ count: processes.length,
158
+ processes: processes.map((p) => ({
159
+ pid: p.pid,
160
+ name: p.name,
161
+ path: p.executablePath,
162
+ windowTitle: p.windowTitle,
163
+ windowHandle: p.windowHandle,
164
+ memoryMB: p.memoryUsage ? Math.round(p.memoryUsage / 1024 / 1024) : undefined,
165
+ })),
166
+ }, null, 2),
167
+ },
168
+ ],
169
+ };
170
+ }
171
+ catch (error) {
172
+ logger.error('Process find failed:', error);
173
+ return {
174
+ content: [
175
+ {
176
+ type: 'text',
177
+ text: JSON.stringify({
178
+ success: false,
179
+ error: error instanceof Error ? error.message : String(error),
180
+ }, null, 2),
181
+ },
182
+ ],
183
+ };
184
+ }
185
+ }
186
+ async handleProcessGet(args) {
187
+ try {
188
+ const pid = validatePid(args.pid);
189
+ const process = await this.processManager.getProcessByPid(pid);
190
+ if (!process) {
191
+ return {
192
+ content: [
193
+ {
194
+ type: 'text',
195
+ text: JSON.stringify({
196
+ success: false,
197
+ message: `Process with PID ${pid} not found`,
198
+ }, null, 2),
199
+ },
200
+ ],
201
+ };
202
+ }
203
+ const cmdLine = await this.processManager.getProcessCommandLine(pid);
204
+ const debugPort = await this.processManager.checkDebugPort(pid, {
205
+ commandLine: cmdLine.commandLine,
206
+ });
207
+ return {
208
+ content: [
209
+ {
210
+ type: 'text',
211
+ text: JSON.stringify({
212
+ success: true,
213
+ process: {
214
+ ...process,
215
+ commandLine: cmdLine.commandLine,
216
+ parentPid: cmdLine.parentPid,
217
+ debugPort,
218
+ },
219
+ }, null, 2),
220
+ },
221
+ ],
222
+ };
223
+ }
224
+ catch (error) {
225
+ logger.error('Process get failed:', error);
226
+ return {
227
+ content: [
228
+ {
229
+ type: 'text',
230
+ text: JSON.stringify({
231
+ success: false,
232
+ error: error instanceof Error ? error.message : String(error),
233
+ }, null, 2),
234
+ },
235
+ ],
236
+ };
237
+ }
238
+ }
239
+ async handleProcessWindows(args) {
240
+ try {
241
+ const pid = validatePid(args.pid);
242
+ const windows = await this.processManager.getProcessWindows(pid);
243
+ return {
244
+ content: [
245
+ {
246
+ type: 'text',
247
+ text: JSON.stringify({
248
+ success: true,
249
+ pid,
250
+ windowCount: windows.length,
251
+ windows: windows.map((w) => ({
252
+ handle: w.handle,
253
+ title: w.title,
254
+ className: w.className,
255
+ processId: w.processId,
256
+ })),
257
+ }, null, 2),
258
+ },
259
+ ],
260
+ };
261
+ }
262
+ catch (error) {
263
+ logger.error('Process windows failed:', error);
264
+ return {
265
+ content: [
266
+ {
267
+ type: 'text',
268
+ text: JSON.stringify({
269
+ success: false,
270
+ error: error instanceof Error ? error.message : String(error),
271
+ }, null, 2),
272
+ },
273
+ ],
274
+ };
275
+ }
276
+ }
277
+ async handleProcessFindChromium(_args) {
278
+ return {
279
+ content: [
280
+ {
281
+ type: 'text',
282
+ text: JSON.stringify({
283
+ success: false,
284
+ disabled: true,
285
+ message: 'process_find_chromium is disabled to avoid scanning user-installed browser processes.',
286
+ guidance: [
287
+ 'Use browser_launch(driver="chrome"|"camoufox") to start a managed browser session.',
288
+ 'Use browser_attach/browser_launch(mode="connect") with an explicit browserURL/wsEndpoint.',
289
+ 'Use process_launch_debug for explicitly targeted Electron/Chromium executables.',
290
+ ],
291
+ platform: this.platform,
292
+ }, null, 2),
293
+ },
294
+ ],
295
+ };
296
+ }
297
+ async handleProcessCheckDebugPort(args) {
298
+ try {
299
+ const pid = validatePid(args.pid);
300
+ const debugPort = await this.processManager.checkDebugPort(pid);
301
+ return {
302
+ content: [
303
+ {
304
+ type: 'text',
305
+ text: JSON.stringify({
306
+ success: true,
307
+ pid,
308
+ debugPort,
309
+ canAttach: debugPort !== null,
310
+ attachUrl: debugPort ? `http://localhost:${debugPort}` : null,
311
+ }, null, 2),
312
+ },
313
+ ],
314
+ };
315
+ }
316
+ catch (error) {
317
+ logger.error('Check debug port failed:', error);
318
+ return {
319
+ content: [
320
+ {
321
+ type: 'text',
322
+ text: JSON.stringify({
323
+ success: false,
324
+ error: error instanceof Error ? error.message : String(error),
325
+ }, null, 2),
326
+ },
327
+ ],
328
+ };
329
+ }
330
+ }
331
+ async handleProcessLaunchDebug(args) {
332
+ try {
333
+ const executablePath = requireString(args.executablePath, 'executablePath');
334
+ const debugPort = argNumber(args, 'debugPort', 9222);
335
+ const argsList = argStringArray(args, 'args');
336
+ const process = await this.processManager.launchWithDebug(executablePath, debugPort, argsList);
337
+ if (!process) {
338
+ return {
339
+ content: [
340
+ {
341
+ type: 'text',
342
+ text: JSON.stringify({
343
+ success: false,
344
+ message: 'Failed to launch process',
345
+ }, null, 2),
346
+ },
347
+ ],
348
+ };
349
+ }
350
+ return {
351
+ content: [
352
+ {
353
+ type: 'text',
354
+ text: JSON.stringify({
355
+ success: true,
356
+ process: {
357
+ pid: process.pid,
358
+ name: process.name,
359
+ path: process.executablePath,
360
+ },
361
+ debugPort,
362
+ attachUrl: `http://localhost:${debugPort}`,
363
+ }, null, 2),
364
+ },
365
+ ],
366
+ };
367
+ }
368
+ catch (error) {
369
+ logger.error('Launch debug failed:', error);
370
+ return {
371
+ content: [
372
+ {
373
+ type: 'text',
374
+ text: JSON.stringify({
375
+ success: false,
376
+ error: error instanceof Error ? error.message : String(error),
377
+ }, null, 2),
378
+ },
379
+ ],
380
+ };
381
+ }
382
+ }
383
+ async handleProcessKill(args) {
384
+ try {
385
+ const pid = validatePid(args.pid);
386
+ const killed = await this.processManager.killProcess(pid);
387
+ return {
388
+ content: [
389
+ {
390
+ type: 'text',
391
+ text: JSON.stringify({
392
+ success: killed,
393
+ pid,
394
+ message: killed
395
+ ? `Process ${pid} killed successfully`
396
+ : `Failed to kill process ${pid}`,
397
+ }, null, 2),
398
+ },
399
+ ],
400
+ };
401
+ }
402
+ catch (error) {
403
+ logger.error('Process kill failed:', error);
404
+ return {
405
+ content: [
406
+ {
407
+ type: 'text',
408
+ text: JSON.stringify({
409
+ success: false,
410
+ error: error instanceof Error ? error.message : String(error),
411
+ }, null, 2),
412
+ },
413
+ ],
414
+ };
415
+ }
416
+ }
417
+ }
@@ -0,0 +1,57 @@
1
+ import type { AuditEntry } from '../../../modules/process/memory/AuditTrail.js';
2
+ export type { AuditEntry };
3
+ export interface ProcessSummarySource {
4
+ pid: number;
5
+ name: string;
6
+ executablePath?: string;
7
+ windowTitle?: string;
8
+ windowHandle?: string;
9
+ memoryUsage?: number;
10
+ }
11
+ export interface ProcessWindowSource {
12
+ handle: string;
13
+ title: string;
14
+ className: string;
15
+ processId: number;
16
+ }
17
+ export interface MemoryDiagnosticsInput {
18
+ pid?: number;
19
+ address?: string;
20
+ size?: number;
21
+ operation: string;
22
+ error?: string;
23
+ }
24
+ export interface MemoryDiagnostics {
25
+ permission: {
26
+ available: boolean;
27
+ reason?: string;
28
+ platform: string;
29
+ };
30
+ process: {
31
+ exists: boolean | null;
32
+ pid: number | null;
33
+ name: string | null;
34
+ };
35
+ address: {
36
+ queried: boolean;
37
+ valid: boolean | null;
38
+ protection: string | null;
39
+ regionStart: string | null;
40
+ regionSize: number | null;
41
+ };
42
+ aslr: {
43
+ heuristic: true;
44
+ note: string;
45
+ };
46
+ recommendedActions: string[];
47
+ }
48
+ export type MemoryPatternType = 'hex' | 'int32' | 'int64' | 'float' | 'double' | 'string';
49
+ export declare const MEMORY_PATTERN_TYPES: Set<MemoryPatternType>;
50
+ export declare function validatePid(value: unknown): number;
51
+ export declare function requireString(value: unknown, name: string): string;
52
+ export declare function requirePositiveNumber(value: unknown, name: string): number;
53
+ export declare function normalizePatternType(value: unknown): MemoryPatternType;
54
+ export declare function getOptionalPid(value: unknown): number | undefined;
55
+ export declare function getOptionalString(value: unknown): string | undefined;
56
+ export declare function getOptionalPositiveNumber(value: unknown): number | undefined;
57
+ export declare function getWriteSize(data: string, encoding: 'hex' | 'base64'): number;
@@ -0,0 +1,50 @@
1
+ export const MEMORY_PATTERN_TYPES = new Set([
2
+ 'hex',
3
+ 'int32',
4
+ 'int64',
5
+ 'float',
6
+ 'double',
7
+ 'string',
8
+ ]);
9
+ export function validatePid(value) {
10
+ const n = Number(value);
11
+ if (!Number.isInteger(n) || n <= 0)
12
+ throw new Error(`Invalid PID: ${JSON.stringify(value)}`);
13
+ return n;
14
+ }
15
+ export function requireString(value, name) {
16
+ if (typeof value !== 'string' || value.length === 0) {
17
+ throw new Error(`${name} must be a non-empty string`);
18
+ }
19
+ return value;
20
+ }
21
+ export function requirePositiveNumber(value, name) {
22
+ const n = Number(value);
23
+ if (!Number.isFinite(n) || n <= 0)
24
+ throw new Error(`${name} must be a positive number`);
25
+ return n;
26
+ }
27
+ export function normalizePatternType(value) {
28
+ if (typeof value === 'string' && MEMORY_PATTERN_TYPES.has(value)) {
29
+ return value;
30
+ }
31
+ return 'hex';
32
+ }
33
+ export function getOptionalPid(value) {
34
+ const pid = Number(value);
35
+ return Number.isInteger(pid) && pid > 0 ? pid : undefined;
36
+ }
37
+ export function getOptionalString(value) {
38
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
39
+ }
40
+ export function getOptionalPositiveNumber(value) {
41
+ const size = Number(value);
42
+ return Number.isFinite(size) && size > 0 ? size : undefined;
43
+ }
44
+ export function getWriteSize(data, encoding) {
45
+ if (encoding === 'hex') {
46
+ const normalized = data.replace(/\s+/g, '');
47
+ return Math.ceil(normalized.length / 2);
48
+ }
49
+ return Buffer.from(data, 'base64').length;
50
+ }
@@ -16,6 +16,20 @@ function getOptionalPid(value) {
16
16
  const pid = Number(value);
17
17
  return Number.isInteger(pid) && pid > 0 ? pid : null;
18
18
  }
19
+ function formatUnknownError(error) {
20
+ if (error instanceof Error) {
21
+ return error.message;
22
+ }
23
+ if (typeof error === 'object' && error !== null) {
24
+ try {
25
+ return JSON.stringify(error, null, 2);
26
+ }
27
+ catch {
28
+ return String(error);
29
+ }
30
+ }
31
+ return String(error);
32
+ }
19
33
  function getOptionalString(value) {
20
34
  return typeof value === 'string' && value.length > 0 ? value : null;
21
35
  }
@@ -232,20 +246,6 @@ export class ProcessToolHandlersRuntime extends ProcessHandlersBase {
232
246
  const wsEndpointArg = args.wsEndpoint ?? '';
233
247
  const evaluateExpr = args.evaluate ?? '';
234
248
  const pageUrl = args.pageUrl ?? '';
235
- const formatUnknownError = (error) => {
236
- if (error instanceof Error) {
237
- return error.message;
238
- }
239
- if (typeof error === 'object' && error !== null) {
240
- try {
241
- return JSON.stringify(error, null, 2);
242
- }
243
- catch {
244
- return String(error);
245
- }
246
- }
247
- return String(error);
248
- };
249
249
  try {
250
250
  const baseUrl = `http://127.0.0.1:${port}`;
251
251
  const listUrl = `${baseUrl}/json/list`;
@@ -261,7 +261,9 @@ export class ProcessToolHandlersRuntime extends ProcessHandlersBase {
261
261
  try {
262
262
  const resp = await fetch(`${baseUrl}/json`);
263
263
  if (!resp.ok) {
264
- throw new Error(`CDP fallback endpoint returned HTTP ${resp.status}`);
264
+ throw new Error(`CDP fallback endpoint returned HTTP ${resp.status}`, {
265
+ cause: listError,
266
+ });
265
267
  }
266
268
  targets = (await resp.json());
267
269
  }
@@ -269,7 +271,7 @@ export class ProcessToolHandlersRuntime extends ProcessHandlersBase {
269
271
  const original = formatUnknownError(fallbackError || listError);
270
272
  throw new Error(`Cannot connect to Electron CDP at ${baseUrl}. ` +
271
273
  `Ensure the target app is running with a remote debugging port (for example: process_launch_debug with debugPort=${port}), ` +
272
- `then retry electron_attach. Original error: ${original}`);
274
+ `then retry electron_attach. Original error: ${original}`, { cause: fallbackError });
273
275
  }
274
276
  }
275
277
  if (!Array.isArray(targets)) {
@@ -5,12 +5,17 @@ const DOMAIN = 'process';
5
5
  const DEP_KEY = 'processHandlers';
6
6
  const t = toolLookup(processToolDefinitions);
7
7
  const b = (invoke) => bindByDepKey(DEP_KEY, invoke);
8
+ const EFFECTIVE_PLATFORM = process.env.JSHOOK_REGISTRY_PLATFORM === 'win32' ||
9
+ process.env.JSHOOK_REGISTRY_PLATFORM === 'linux' ||
10
+ process.env.JSHOOK_REGISTRY_PLATFORM === 'darwin'
11
+ ? process.env.JSHOOK_REGISTRY_PLATFORM
12
+ : process.platform;
8
13
  function ensure(ctx) {
9
14
  if (!ctx.processHandlers)
10
15
  ctx.processHandlers = new ProcessToolHandlers();
11
16
  return ctx.processHandlers;
12
17
  }
13
- const IS_WIN32 = process.platform === 'win32';
18
+ const IS_WIN32 = EFFECTIVE_PLATFORM === 'win32';
14
19
  const WIN32_ONLY_TOOLS = new Set([
15
20
  'inject_dll',
16
21
  'module_inject_dll',
@@ -1,35 +1,13 @@
1
+ import { tool } from '../../registry/tool-builder.js';
1
2
  export const sandboxTools = [
2
- {
3
- name: 'execute_sandbox_script',
4
- description: 'Execute JavaScript code in a WASM-isolated QuickJS sandbox with optional MCP tool bridging, session persistence, and auto-correction.',
5
- inputSchema: {
6
- type: 'object',
7
- properties: {
8
- code: {
9
- type: 'string',
10
- description: 'JavaScript source code to execute inside the sandbox.',
11
- },
12
- sessionId: {
13
- type: 'string',
14
- description: 'Optional session ID for scratchpad persistence across executions. If omitted, no persistence.',
15
- },
16
- timeoutMs: {
17
- type: 'number',
18
- description: 'Execution timeout in ms (default: 1000).',
19
- },
20
- autoCorrect: {
21
- type: 'boolean',
22
- description: 'When true, failed scripts are retried up to 2 times with error context appended.',
23
- default: false,
24
- },
25
- },
26
- required: ['code'],
27
- },
28
- annotations: {
29
- readOnlyHint: false,
30
- destructiveHint: false,
31
- idempotentHint: false,
32
- openWorldHint: false,
33
- },
34
- },
3
+ tool('execute_sandbox_script')
4
+ .desc('Execute JavaScript in a WASM-isolated QuickJS sandbox with optional tool bridging and auto-correction')
5
+ .string('code', 'JavaScript source code to execute')
6
+ .string('sessionId', 'Session ID for scratchpad persistence across executions')
7
+ .number('timeoutMs', 'Execution timeout in ms', { default: 1000 })
8
+ .boolean('autoCorrect', 'Retry failed scripts up to 2 times with error context', {
9
+ default: false,
10
+ })
11
+ .required('code')
12
+ .build(),
35
13
  ];
@@ -16,7 +16,10 @@ export class SandboxToolHandlers {
16
16
  if (!code || typeof code !== 'string') {
17
17
  return {
18
18
  content: [
19
- { type: 'text', text: JSON.stringify({ ok: false, error: 'code parameter is required' }) },
19
+ {
20
+ type: 'text',
21
+ text: JSON.stringify({ ok: false, error: 'code parameter is required' }),
22
+ },
20
23
  ],
21
24
  };
22
25
  }
@@ -30,7 +33,7 @@ export class SandboxToolHandlers {
30
33
  options.sessionId = sessionId;
31
34
  const scratchpadState = this.scratchpad.getAll(sessionId);
32
35
  options.globals = {
33
- ...(options.globals ?? {}),
36
+ ...options.globals,
34
37
  __scratchpad: scratchpadState,
35
38
  };
36
39
  }
@@ -53,7 +56,9 @@ export class SandboxToolHandlers {
53
56
  `**Status:** ${result.ok ? '✓ Success' : '✗ Failed'}`,
54
57
  result.timedOut ? '**Timed out:** yes' : '',
55
58
  `**Duration:** ${result.durationMs}ms`,
56
- result.logs.length > 0 ? `**Console output:**\n\`\`\`\n${result.logs.join('\n')}\n\`\`\`` : '',
59
+ result.logs.length > 0
60
+ ? `**Console output:**\n\`\`\`\n${result.logs.join('\n')}\n\`\`\``
61
+ : '',
57
62
  result.output !== undefined ? `**Result:** ${JSON.stringify(result.output)}` : '',
58
63
  result.error ? `**Error:** ${result.error}` : '',
59
64
  ]