@jshookmcp/jshook 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/README.md +14 -5
  2. package/README.zh.md +18 -3
  3. package/dist/packages/extension-sdk/src/bridges/shared.js +2 -2
  4. package/dist/packages/extension-sdk/src/plugin.d.ts +5 -0
  5. package/dist/packages/extension-sdk/src/plugin.js +119 -33
  6. package/dist/packages/extension-sdk/src/workflow.d.ts +156 -0
  7. package/dist/packages/extension-sdk/src/workflow.js +236 -0
  8. package/dist/src/config/search-defaults.js +161 -0
  9. package/dist/src/constants.d.ts +3 -0
  10. package/dist/src/constants.js +4 -1
  11. package/dist/src/index.d.ts +1 -1
  12. package/dist/src/index.js +13 -17
  13. package/dist/src/modules/analyzer/CodeAnalyzer.d.ts +1 -3
  14. package/dist/src/modules/analyzer/CodeAnalyzer.js +16 -28
  15. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.d.ts +1 -2
  16. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.js +1 -45
  17. package/dist/src/modules/analyzer/IntelligentAnalyzer.d.ts +1 -37
  18. package/dist/src/modules/analyzer/IntelligentAnalyzer.js +9 -142
  19. package/dist/src/modules/analyzer/PatternDetector.js +3 -3
  20. package/dist/src/modules/analyzer/PatternDetectorAuthPatterns.js +1 -1
  21. package/dist/src/modules/browser/BrowserDiscovery.js +2 -2
  22. package/dist/src/modules/browser/BrowserModeManager.js +11 -10
  23. package/dist/src/modules/browser/TabRegistry.js +2 -2
  24. package/dist/src/modules/browser/UnifiedBrowserManager.d.ts +1 -0
  25. package/dist/src/modules/browser/UnifiedBrowserManager.js +18 -3
  26. package/dist/src/modules/captcha/AICaptchaDetector.d.ts +1 -10
  27. package/dist/src/modules/captcha/AICaptchaDetector.js +7 -201
  28. package/dist/src/modules/collector/CodeCollector.js +4 -5
  29. package/dist/src/modules/collector/DOMInspector.js +48 -58
  30. package/dist/src/modules/collector/PageController.d.ts +17 -4
  31. package/dist/src/modules/collector/PageController.js +2 -5
  32. package/dist/src/modules/collector/PageScriptCollectors.js +3 -3
  33. package/dist/src/modules/crypto/CryptoDetector.d.ts +1 -4
  34. package/dist/src/modules/crypto/CryptoDetector.js +2 -42
  35. package/dist/src/modules/crypto/CryptoRules.js +1 -1
  36. package/dist/src/modules/debugger/BlackboxManager.js +1 -1
  37. package/dist/src/modules/debugger/DebuggerManager.impl.core.scope.js +1 -1
  38. package/dist/src/modules/debugger/ScriptManager.impl.extract-function-tree.js +4 -2
  39. package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
  40. package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
  41. package/dist/src/modules/deobfuscator/Deobfuscator.js +4 -39
  42. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.d.ts +0 -3
  43. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.js +2 -8
  44. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.d.ts +1 -2
  45. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +3 -55
  46. package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
  47. package/dist/src/modules/deobfuscator/VMDeobfuscator.d.ts +2 -10
  48. package/dist/src/modules/deobfuscator/VMDeobfuscator.js +3 -128
  49. package/dist/src/modules/deobfuscator/webcrack.js +15 -2
  50. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.d.ts +5 -8
  51. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.js +10 -102
  52. package/dist/src/modules/emulator/EnvironmentEmulator.d.ts +1 -5
  53. package/dist/src/modules/emulator/EnvironmentEmulator.js +7 -91
  54. package/dist/src/modules/emulator/EnvironmentEmulatorFetch.js +58 -61
  55. package/dist/src/modules/emulator/templates/chrome-env.d.ts +17 -7
  56. package/dist/src/modules/emulator/templates/chrome-env.js +14 -7
  57. package/dist/src/modules/external/ExternalToolRunner.js +25 -22
  58. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.compose.js +5 -5
  59. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.network.js +311 -311
  60. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.runtime.js +410 -410
  61. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.storage.js +122 -122
  62. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.d.ts +13 -0
  63. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.js +42 -0
  64. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.dynamic.js +194 -194
  65. package/dist/src/modules/monitor/FetchInterceptor.d.ts +46 -0
  66. package/dist/src/modules/monitor/FetchInterceptor.js +191 -0
  67. package/dist/src/modules/monitor/PerformanceMonitor.js +8 -7
  68. package/dist/src/modules/monitor/PlaywrightNetworkMonitor.js +62 -62
  69. package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
  70. package/dist/src/modules/process/LinuxProcessManager.js +2 -0
  71. package/dist/src/modules/process/MacProcessManager.js +25 -25
  72. package/dist/src/modules/process/MemoryManager.d.ts +1 -1
  73. package/dist/src/modules/process/MemoryManager.js +2 -2
  74. package/dist/src/modules/process/memory/AuditTrail.js +1 -1
  75. package/dist/src/modules/process/memory/availability.js +49 -49
  76. package/dist/src/modules/process/memory/injector.js +185 -185
  77. package/dist/src/modules/process/memory/reader.js +85 -53
  78. package/dist/src/modules/process/memory/regions.dump.js +51 -51
  79. package/dist/src/modules/process/memory/regions.enumerate.js +108 -108
  80. package/dist/src/modules/process/memory/regions.modules.js +80 -80
  81. package/dist/src/modules/process/memory/regions.protection.js +148 -115
  82. package/dist/src/modules/process/memory/scanner.d.ts +5 -1
  83. package/dist/src/modules/process/memory/scanner.darwin.js +98 -41
  84. package/dist/src/modules/process/memory/scanner.js +88 -4
  85. package/dist/src/modules/process/memory/scanner.windows.js +124 -124
  86. package/dist/src/modules/process/memory/writer.js +98 -58
  87. package/dist/src/modules/security/ExecutionSandbox.js +51 -52
  88. package/dist/src/modules/stealth/FingerprintManager.js +1 -1
  89. package/dist/src/modules/stealth/StealthScripts.d.ts +1 -0
  90. package/dist/src/modules/stealth/StealthScripts.js +18 -13
  91. package/dist/src/modules/stealth/StealthVerifier.js +1 -3
  92. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.d.ts +14 -0
  93. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.js +181 -2
  94. package/dist/src/modules/trace/TraceDB.js +75 -69
  95. package/dist/src/modules/trace/TraceRecorder.js +1 -5
  96. package/dist/src/native/AntiCheatDetector.js +67 -16
  97. package/dist/src/native/CodeInjector.js +3 -3
  98. package/dist/src/native/HardwareBreakpoint.js +24 -15
  99. package/dist/src/native/HeapAnalyzer.js +2 -2
  100. package/dist/src/native/MemoryController.js +1 -1
  101. package/dist/src/native/MemoryScanSession.js +2 -2
  102. package/dist/src/native/MemoryScanner.js +4 -8
  103. package/dist/src/native/NativeMemoryManager.impl.js +2 -2
  104. package/dist/src/native/PEAnalyzer.js +14 -15
  105. package/dist/src/native/PointerChainEngine.js +2 -4
  106. package/dist/src/native/ScriptLoader.js +4 -9
  107. package/dist/src/native/Speedhack.js +1 -1
  108. package/dist/src/native/StructureAnalyzer.js +52 -33
  109. package/dist/src/native/Win32API.d.ts +1 -0
  110. package/dist/src/native/Win32API.js +13 -0
  111. package/dist/src/native/Win32Debug.js +19 -19
  112. package/dist/src/native/platform/darwin/DarwinAPI.d.ts +2 -0
  113. package/dist/src/native/platform/darwin/DarwinAPI.js +8 -0
  114. package/dist/src/native/platform/darwin/DarwinMemoryProvider.js +6 -1
  115. package/dist/src/server/MCPServer.context.d.ts +2 -1
  116. package/dist/src/server/MCPServer.d.ts +2 -1
  117. package/dist/src/server/MCPServer.domain.d.ts +1 -1
  118. package/dist/src/server/MCPServer.domain.js +81 -16
  119. package/dist/src/server/MCPServer.js +41 -14
  120. package/dist/src/server/MCPServer.resources.d.ts +2 -0
  121. package/dist/src/server/MCPServer.resources.js +91 -0
  122. package/dist/src/server/MCPServer.search.handlers.call.js +2 -1
  123. package/dist/src/server/MCPServer.search.helpers.js +1 -1
  124. package/dist/src/server/MCPServer.transport.js +12 -0
  125. package/dist/src/server/ToolCallContextGuard.js +8 -0
  126. package/dist/src/server/ToolRouter.d.ts +25 -9
  127. package/dist/src/server/ToolRouter.intent.d.ts +26 -0
  128. package/dist/src/server/ToolRouter.intent.js +77 -0
  129. package/dist/src/server/ToolRouter.js +103 -284
  130. package/dist/src/server/ToolRouter.policy.d.ts +22 -0
  131. package/dist/src/server/ToolRouter.policy.js +163 -0
  132. package/dist/src/server/ToolRouter.probe.d.ts +17 -0
  133. package/dist/src/server/ToolRouter.probe.js +103 -0
  134. package/dist/src/server/ToolRouter.renderer.d.ts +9 -0
  135. package/dist/src/server/ToolRouter.renderer.js +52 -0
  136. package/dist/src/server/activation/ActivationController.js +15 -12
  137. package/dist/src/server/activation/CompoundConditionEngine.js +1 -1
  138. package/dist/src/server/activation/PredictiveBooster.js +1 -3
  139. package/dist/src/server/domains/analysis/definitions.js +155 -655
  140. package/dist/src/server/domains/analysis/handlers.impl.js +26 -20
  141. package/dist/src/server/domains/analysis/handlers.web-tools.js +2 -1
  142. package/dist/src/server/domains/analysis/manifest.js +6 -4
  143. package/dist/src/server/domains/antidebug/definitions.js +25 -111
  144. package/dist/src/server/domains/browser/definitions.tools.advanced.js +59 -88
  145. package/dist/src/server/domains/browser/definitions.tools.behavior.js +120 -227
  146. package/dist/src/server/domains/browser/definitions.tools.page-core.js +210 -439
  147. package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
  148. package/dist/src/server/domains/browser/definitions.tools.runtime.js +98 -211
  149. package/dist/src/server/domains/browser/definitions.tools.security.js +194 -339
  150. package/dist/src/server/domains/browser/handlers/camoufox-browser.js +3 -2
  151. package/dist/src/server/domains/browser/handlers/captcha-solver.js +3 -3
  152. package/dist/src/server/domains/browser/handlers/dom-query.js +2 -1
  153. package/dist/src/server/domains/browser/handlers/framework-state.js +27 -9
  154. package/dist/src/server/domains/browser/handlers/indexeddb-dump.js +21 -20
  155. package/dist/src/server/domains/browser/handlers/script-management.js +1 -1
  156. package/dist/src/server/domains/browser/handlers.impl.d.ts +1 -2
  157. package/dist/src/server/domains/browser/handlers.impl.js +2 -3
  158. package/dist/src/server/domains/browser/manifest.js +37 -13
  159. package/dist/src/server/domains/coordination/definitions.js +50 -216
  160. package/dist/src/server/domains/coordination/index.d.ts +2 -1
  161. package/dist/src/server/domains/coordination/index.js +1 -0
  162. package/dist/src/server/domains/debugger/definitions.tools.advanced.js +72 -189
  163. package/dist/src/server/domains/debugger/definitions.tools.core.js +114 -288
  164. package/dist/src/server/domains/debugger/manifest.js +9 -2
  165. package/dist/src/server/domains/encoding/definitions.js +43 -153
  166. package/dist/src/server/domains/encoding/handlers.base.js +2 -2
  167. package/dist/src/server/domains/evidence/definitions.d.ts +2 -0
  168. package/dist/src/server/domains/evidence/definitions.js +42 -0
  169. package/dist/src/server/domains/evidence/handlers.d.ts +582 -0
  170. package/dist/src/server/domains/evidence/handlers.js +60 -0
  171. package/dist/src/server/domains/evidence/index.d.ts +2 -0
  172. package/dist/src/server/domains/evidence/index.js +2 -0
  173. package/dist/src/server/domains/evidence/manifest.d.ts +63 -0
  174. package/dist/src/server/domains/evidence/manifest.js +78 -0
  175. package/dist/src/server/domains/graphql/definitions.js +53 -141
  176. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.replay.js +92 -114
  177. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.shared.js +77 -77
  178. package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
  179. package/dist/src/server/domains/hooks/ai-handlers.js +1 -67
  180. package/dist/src/server/domains/hooks/definitions.js +69 -335
  181. package/dist/src/server/domains/hooks/manifest.d.ts +1 -1
  182. package/dist/src/server/domains/hooks/manifest.js +1 -2
  183. package/dist/src/server/domains/instrumentation/definitions.d.ts +2 -0
  184. package/dist/src/server/domains/instrumentation/definitions.js +99 -0
  185. package/dist/src/server/domains/instrumentation/handlers.d.ts +78 -0
  186. package/dist/src/server/domains/instrumentation/handlers.js +206 -0
  187. package/dist/src/server/domains/instrumentation/index.d.ts +2 -0
  188. package/dist/src/server/domains/instrumentation/index.js +2 -0
  189. package/dist/src/server/domains/instrumentation/manifest.d.ts +63 -0
  190. package/dist/src/server/domains/instrumentation/manifest.js +114 -0
  191. package/dist/src/server/domains/macro/definitions.js +16 -43
  192. package/dist/src/server/domains/maintenance/definitions.js +60 -219
  193. package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
  194. package/dist/src/server/domains/memory/definitions.js +387 -559
  195. package/dist/src/server/domains/memory/handlers/hooks.d.ts +55 -0
  196. package/dist/src/server/domains/memory/handlers/hooks.js +115 -0
  197. package/dist/src/server/domains/memory/handlers/integrity.d.ts +77 -0
  198. package/dist/src/server/domains/memory/handlers/integrity.js +180 -0
  199. package/dist/src/server/domains/memory/handlers/pointer-chain.d.ts +29 -0
  200. package/dist/src/server/domains/memory/handlers/pointer-chain.js +82 -0
  201. package/dist/src/server/domains/memory/handlers/readwrite.d.ts +41 -0
  202. package/dist/src/server/domains/memory/handlers/readwrite.js +78 -0
  203. package/dist/src/server/domains/memory/handlers/scan.d.ts +35 -0
  204. package/dist/src/server/domains/memory/handlers/scan.js +97 -0
  205. package/dist/src/server/domains/memory/handlers/session.d.ts +23 -0
  206. package/dist/src/server/domains/memory/handlers/session.js +49 -0
  207. package/dist/src/server/domains/memory/handlers/structure.d.ts +29 -0
  208. package/dist/src/server/domains/memory/handlers/structure.js +74 -0
  209. package/dist/src/server/domains/memory/handlers.impl.d.ts +49 -54
  210. package/dist/src/server/domains/memory/handlers.impl.js +63 -494
  211. package/dist/src/server/domains/memory/manifest.js +236 -64
  212. package/dist/src/server/domains/native-bridge/definitions.js +54 -192
  213. package/dist/src/server/domains/native-bridge/index.d.ts +1 -0
  214. package/dist/src/server/domains/native-bridge/index.js +2 -1
  215. package/dist/src/server/domains/network/auth-extractor.js +1 -1
  216. package/dist/src/server/domains/network/definitions.js +175 -578
  217. package/dist/src/server/domains/network/handlers.base.core.d.ts +64 -0
  218. package/dist/src/server/domains/network/handlers.base.core.js +623 -0
  219. package/dist/src/server/domains/network/handlers.base.d.ts +2 -124
  220. package/dist/src/server/domains/network/handlers.base.js +3 -878
  221. package/dist/src/server/domains/network/handlers.base.performance.d.ts +63 -0
  222. package/dist/src/server/domains/network/handlers.base.performance.js +193 -0
  223. package/dist/src/server/domains/network/handlers.base.types.d.ts +42 -0
  224. package/dist/src/server/domains/network/handlers.base.types.js +89 -0
  225. package/dist/src/server/domains/network/handlers.impl.core.runtime.d.ts +1 -1
  226. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.d.ts +21 -0
  227. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.js +186 -0
  228. package/dist/src/server/domains/network/handlers.impl.core.runtime.js +1 -1
  229. package/dist/src/server/domains/network/manifest.js +15 -0
  230. package/dist/src/server/domains/network/replay.js +1 -4
  231. package/dist/src/server/domains/platform/definitions.js +121 -112
  232. package/dist/src/server/domains/platform/handlers/bridge-handlers.d.ts +4 -0
  233. package/dist/src/server/domains/platform/handlers/bridge-handlers.js +193 -4
  234. package/dist/src/server/domains/platform/handlers/electron-asar-helpers.js +26 -6
  235. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.d.ts +3 -0
  236. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.js +170 -0
  237. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.d.ts +3 -0
  238. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.js +193 -0
  239. package/dist/src/server/domains/platform/handlers/electron-handlers.d.ts +6 -0
  240. package/dist/src/server/domains/platform/handlers/electron-handlers.js +95 -2
  241. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.d.ts +2 -0
  242. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.js +370 -0
  243. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.d.ts +2 -0
  244. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.js +78 -0
  245. package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +3 -3
  246. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.d.ts +2 -0
  247. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.js +207 -0
  248. package/dist/src/server/domains/platform/handlers.d.ts +48 -0
  249. package/dist/src/server/domains/platform/handlers.js +29 -0
  250. package/dist/src/server/domains/platform/manifest.js +38 -0
  251. package/dist/src/server/domains/process/definitions.js +163 -647
  252. package/dist/src/server/domains/process/handlers.base.d.ts +3 -95
  253. package/dist/src/server/domains/process/handlers.base.js +7 -462
  254. package/dist/src/server/domains/process/handlers.base.process.d.ts +61 -0
  255. package/dist/src/server/domains/process/handlers.base.process.js +417 -0
  256. package/dist/src/server/domains/process/handlers.base.types.d.ts +57 -0
  257. package/dist/src/server/domains/process/handlers.base.types.js +50 -0
  258. package/dist/src/server/domains/process/handlers.impl.core.runtime.inject.js +18 -16
  259. package/dist/src/server/domains/process/manifest.js +6 -1
  260. package/dist/src/server/domains/sandbox/definitions.js +11 -33
  261. package/dist/src/server/domains/sandbox/handlers.js +8 -3
  262. package/dist/src/server/domains/shared/ResponseBuilder.d.ts +209 -0
  263. package/dist/src/server/domains/shared/ResponseBuilder.js +48 -0
  264. package/dist/src/server/domains/shared/modules.d.ts +0 -2
  265. package/dist/src/server/domains/shared/modules.js +0 -1
  266. package/dist/src/server/domains/sourcemap/definitions.js +27 -111
  267. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-common.js +7 -2
  268. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-main.js +1 -1
  269. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-parse-base.js +1 -1
  270. package/dist/src/server/domains/sourcemap/manifest.d.ts +1 -1
  271. package/dist/src/server/domains/sourcemap/manifest.js +1 -1
  272. package/dist/src/server/domains/streaming/definitions.js +36 -148
  273. package/dist/src/server/domains/streaming/handlers.impl.streaming-sse.js +163 -164
  274. package/dist/src/server/domains/streaming/handlers.impl.streaming-ws.js +1 -1
  275. package/dist/src/server/domains/trace/TraceSummarizer.js +8 -5
  276. package/dist/src/server/domains/trace/definitions.tools.js +51 -206
  277. package/dist/src/server/domains/trace/handlers.js +10 -12
  278. package/dist/src/server/domains/trace/index.d.ts +2 -1
  279. package/dist/src/server/domains/trace/index.js +2 -1
  280. package/dist/src/server/domains/trace/manifest.js +15 -3
  281. package/dist/src/server/domains/transform/definitions.js +50 -210
  282. package/dist/src/server/domains/transform/handlers.impl.transform-base.js +108 -108
  283. package/dist/src/server/domains/transform/handlers.impl.transform-crypto.js +18 -19
  284. package/dist/src/server/domains/transform/manifest.d.ts +1 -1
  285. package/dist/src/server/domains/transform/manifest.js +1 -1
  286. package/dist/src/server/domains/wasm/definitions.js +55 -232
  287. package/dist/src/server/domains/wasm/handlers.js +1 -1
  288. package/dist/src/server/domains/workflow/definitions.js +144 -414
  289. package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +1 -1
  290. package/dist/src/server/domains/workflow/handlers.impl.workflow-api.js +51 -51
  291. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.d.ts +2 -0
  292. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.js +126 -87
  293. package/dist/src/server/domains/workflow/handlers.impl.workflow-batch.js +5 -5
  294. package/dist/src/server/evidence/ReverseEvidenceGraph.d.ts +20 -0
  295. package/dist/src/server/evidence/ReverseEvidenceGraph.js +208 -0
  296. package/dist/src/server/evidence/index.d.ts +2 -0
  297. package/dist/src/server/evidence/index.js +1 -0
  298. package/dist/src/server/evidence/types.d.ts +22 -0
  299. package/dist/src/server/evidence/types.js +1 -0
  300. package/dist/src/server/extensions/ExtensionManager.d.ts +1 -0
  301. package/dist/src/server/extensions/ExtensionManager.discovery.js +72 -9
  302. package/dist/src/server/extensions/ExtensionManager.integrity.js +1 -1
  303. package/dist/src/server/extensions/ExtensionManager.js +193 -40
  304. package/dist/src/server/extensions/ExtensionManager.roots.d.ts +1 -1
  305. package/dist/src/server/extensions/ExtensionManager.roots.js +4 -4
  306. package/dist/src/server/extensions/plugin-config.js +1 -1
  307. package/dist/src/server/extensions/plugin-env.d.ts +1 -1
  308. package/dist/src/server/extensions/plugin-env.js +10 -4
  309. package/dist/src/server/extensions/types.d.ts +17 -0
  310. package/dist/src/server/extensions/types.js +1 -1
  311. package/dist/src/server/instrumentation/EvidenceGraphBridge.d.ts +13 -0
  312. package/dist/src/server/instrumentation/EvidenceGraphBridge.js +150 -0
  313. package/dist/src/server/instrumentation/InstrumentationSession.d.ts +60 -0
  314. package/dist/src/server/instrumentation/InstrumentationSession.js +269 -0
  315. package/dist/src/server/instrumentation/index.d.ts +2 -0
  316. package/dist/src/server/instrumentation/index.js +2 -0
  317. package/dist/src/server/instrumentation/types.d.ts +62 -0
  318. package/dist/src/server/instrumentation/types.js +7 -0
  319. package/dist/src/server/macros/MacroConfigLoader.d.ts +6 -5
  320. package/dist/src/server/macros/MacroConfigLoader.js +61 -59
  321. package/dist/src/server/macros/MacroRunner.js +6 -2
  322. package/dist/src/server/macros/builtins/index.d.ts +2 -3
  323. package/dist/src/server/macros/builtins/index.js +51 -7
  324. package/dist/src/server/plugins/PluginContract.d.ts +1 -1
  325. package/dist/src/server/registry/contracts.d.ts +1 -1
  326. package/dist/src/server/registry/discovery.js +5 -4
  327. package/dist/src/server/registry/ensure-browser-core.js +0 -3
  328. package/dist/src/server/registry/index.js +4 -4
  329. package/dist/src/server/registry/tool-builder.d.ts +46 -0
  330. package/dist/src/server/registry/tool-builder.js +105 -0
  331. package/dist/src/server/sandbox/QuickJSSandbox.js +16 -5
  332. package/dist/src/server/sandbox/SandboxHelpers.js +250 -250
  333. package/dist/src/server/search/EmbeddingWorker.js +5 -3
  334. package/dist/src/server/search/FeedbackTracker.d.ts +9 -0
  335. package/dist/src/server/search/FeedbackTracker.js +26 -0
  336. package/dist/src/server/search/QueryNormalizer.d.ts +6 -0
  337. package/dist/src/server/search/QueryNormalizer.js +94 -0
  338. package/dist/src/server/search/ToolSearchEngineImpl.d.ts +2 -3
  339. package/dist/src/server/search/ToolSearchEngineImpl.js +38 -88
  340. package/dist/src/server/workflows/WorkflowContract.d.ts +24 -0
  341. package/dist/src/server/workflows/WorkflowContract.js +12 -0
  342. package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
  343. package/dist/src/server/workflows/WorkflowEngine.js +136 -3
  344. package/dist/src/types/config.d.ts +0 -14
  345. package/dist/src/types/deobfuscator.d.ts +0 -1
  346. package/dist/src/types/index.d.ts +1 -1
  347. package/dist/src/utils/DetailedDataManager.js +2 -0
  348. package/dist/src/utils/RingBuffer.js +5 -5
  349. package/dist/src/utils/TokenBudgetManager.js +1 -1
  350. package/dist/src/utils/UnifiedCacheManager.js +1 -1
  351. package/dist/src/utils/artifactRetention.js +2 -2
  352. package/dist/src/utils/betterSqlite3.d.ts +11 -0
  353. package/dist/src/utils/betterSqlite3.js +88 -0
  354. package/dist/src/utils/browserExecutable.js +2 -2
  355. package/dist/src/utils/cliFastPath.js +5 -8
  356. package/dist/src/utils/config.js +4 -26
  357. package/dist/src/utils/environmentDoctor.js +138 -11
  358. package/dist/src/utils/outputPaths.js +16 -9
  359. package/dist/src/utils/parallel.js +1 -3
  360. package/package.json +74 -72
  361. package/workflows/.gitkeep +0 -0
  362. package/dist/src/modules/analyzer/AISummarizer.d.ts +0 -39
  363. package/dist/src/modules/analyzer/AISummarizer.js +0 -122
  364. package/dist/src/modules/hook/AIHookGenerator.d.ts +0 -52
  365. package/dist/src/modules/hook/AIHookGenerator.js +0 -360
  366. package/dist/src/modules/hook/AIHookGeneratorTemplates.d.ts +0 -9
  367. package/dist/src/modules/hook/AIHookGeneratorTemplates.js +0 -157
  368. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.d.ts +0 -2
  369. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.js +0 -25
  370. package/dist/src/server/macros/builtins/unpacker-flow.d.ts +0 -2
  371. package/dist/src/server/macros/builtins/unpacker-flow.js +0 -25
  372. package/dist/src/services/LLMService.d.ts +0 -37
  373. package/dist/src/services/LLMService.js +0 -233
  374. package/dist/src/services/prompts/analysis.d.ts +0 -9
  375. package/dist/src/services/prompts/analysis.js +0 -158
  376. package/dist/src/services/prompts/crypto.d.ts +0 -2
  377. package/dist/src/services/prompts/crypto.js +0 -108
  378. package/dist/src/services/prompts/deobfuscation.d.ts +0 -6
  379. package/dist/src/services/prompts/deobfuscation.js +0 -300
  380. package/dist/src/services/prompts/environment.d.ts +0 -16
  381. package/dist/src/services/prompts/environment.js +0 -372
  382. package/dist/src/services/prompts/intelligence.d.ts +0 -4
  383. package/dist/src/services/prompts/intelligence.js +0 -250
  384. package/dist/src/services/prompts/taint.d.ts +0 -2
  385. package/dist/src/services/prompts/taint.js +0 -54
@@ -224,7 +224,11 @@ export class FrameworkStateHandlers {
224
224
  return null;
225
225
  states.push({
226
226
  component: 'SolidRoot',
227
- state: [{ _note: 'Solid detected via hydration markers; install solid-devtools for full state extraction' }],
227
+ state: [
228
+ {
229
+ _note: 'Solid detected via hydration markers; install solid-devtools for full state extraction',
230
+ },
231
+ ],
228
232
  });
229
233
  return states;
230
234
  }
@@ -287,7 +291,9 @@ export class FrameworkStateHandlers {
287
291
  }
288
292
  const typeName = vnode['type'];
289
293
  const name = typeof typeName === 'function'
290
- ? typeName['displayName'] ?? typeName['name'] ?? 'PreactComponent'
294
+ ? (typeName['displayName'] ??
295
+ typeName['name'] ??
296
+ 'PreactComponent')
291
297
  : typeof typeName === 'string'
292
298
  ? typeName
293
299
  : 'PreactComponent';
@@ -362,25 +368,37 @@ export class FrameworkStateHandlers {
362
368
  const rootEl = getRootEl();
363
369
  const rootObj = rootEl;
364
370
  const keys = Object.keys(rootObj);
371
+ const hasReactMarker = keys.some((k) => k.startsWith('__reactFiber') ||
372
+ k.startsWith('__reactInternalInstance') ||
373
+ k.startsWith('__reactFiberContainer'));
374
+ const hasVue3Marker = keys.some((k) => k === '__vueParentComponent' || k === '__vue_app__');
375
+ const hasVue2Marker = keys.some((k) => k === '__vue__');
376
+ const hasSvelteMarker = keys.some((k) => k === '$$' || k === '__svelte_meta' || k.startsWith('__s'));
377
+ const hasSolidMarker = win['_$DX'] !== undefined ||
378
+ win['_$HY'] !== undefined ||
379
+ Boolean(document.querySelector('[data-hk]'));
380
+ const hasPreactMarker = keys.some((k) => k === '__k' || k === '__e' || k === '_dom' || k === '_children');
365
381
  let detectedFramework = opts.framework;
382
+ if (detectedFramework === 'preact' && hasReactMarker) {
383
+ detectedFramework = 'react';
384
+ }
366
385
  if (detectedFramework === 'auto') {
367
- if (keys.some((k) => k.startsWith('__reactFiber') || k.startsWith('__reactInternalInstance'))) {
386
+ if (hasReactMarker) {
368
387
  detectedFramework = 'react';
369
388
  }
370
- else if (keys.some((k) => k === '__vueParentComponent' || k === '__vue_app__')) {
389
+ else if (hasVue3Marker) {
371
390
  detectedFramework = 'vue3';
372
391
  }
373
- else if (keys.some((k) => k === '__vue__')) {
392
+ else if (hasVue2Marker) {
374
393
  detectedFramework = 'vue2';
375
394
  }
376
- else if (keys.some((k) => k === '$$' || k === '__svelte_meta' || k.startsWith('__s'))) {
395
+ else if (hasSvelteMarker) {
377
396
  detectedFramework = 'svelte';
378
397
  }
379
- else if (win['_$DX'] || win['_$HY'] || document.querySelector('[data-hk]')) {
398
+ else if (hasSolidMarker) {
380
399
  detectedFramework = 'solid';
381
400
  }
382
- else if (!keys.some((k) => k.startsWith('__reactFiber')) &&
383
- keys.some((k) => k === '__k' || k === '__e' || k === '_dom')) {
401
+ else if (hasPreactMarker) {
384
402
  detectedFramework = 'preact';
385
403
  }
386
404
  }
@@ -13,33 +13,24 @@ export class IndexedDBDumpHandlers {
13
13
  const result = await page.evaluate(async (opts) => {
14
14
  const dbList = await indexedDB.databases();
15
15
  const output = {};
16
- const openDb = (name, version) => new Promise((resolve, reject) => {
17
- const req = version ? indexedDB.open(name, version) : indexedDB.open(name);
18
- req.onsuccess = () => resolve(req.result);
19
- req.onerror = () => reject(req.error);
20
- });
21
- const getAllFromStore = (db, storeName, max) => new Promise((resolve, reject) => {
22
- try {
23
- const tx = db.transaction(storeName, 'readonly');
24
- const req = tx.objectStore(storeName).getAll();
25
- req.onsuccess = () => resolve(req.result.slice(0, max));
26
- req.onerror = () => reject(req.error);
27
- }
28
- catch (e) {
29
- reject(e);
30
- }
31
- });
32
16
  for (const dbInfo of dbList) {
33
17
  if (!dbInfo.name)
34
18
  continue;
35
19
  if (opts.database && dbInfo.name !== opts.database)
36
20
  continue;
21
+ const dbName = dbInfo.name;
37
22
  let db;
38
23
  try {
39
- db = await openDb(dbInfo.name, dbInfo.version);
24
+ db = await new Promise((resolve, reject) => {
25
+ const req = dbInfo.version
26
+ ? indexedDB.open(dbName, dbInfo.version)
27
+ : indexedDB.open(dbName);
28
+ req.addEventListener('success', () => resolve(req.result), { once: true });
29
+ req.addEventListener('error', () => reject(req.error), { once: true });
30
+ });
40
31
  }
41
32
  catch {
42
- output[dbInfo.name] = { __error__: ['failed to open'] };
33
+ output[dbName] = { __error__: ['failed to open'] };
43
34
  continue;
44
35
  }
45
36
  const storeNames = Array.from(db.objectStoreNames);
@@ -48,14 +39,24 @@ export class IndexedDBDumpHandlers {
48
39
  if (opts.store && storeName !== opts.store)
49
40
  continue;
50
41
  try {
51
- dbData[storeName] = await getAllFromStore(db, storeName, opts.maxRecords);
42
+ dbData[storeName] = await new Promise((resolve, reject) => {
43
+ try {
44
+ const tx = db.transaction(storeName, 'readonly');
45
+ const req = tx.objectStore(storeName).getAll();
46
+ req.addEventListener('success', () => resolve(req.result.slice(0, opts.maxRecords)), { once: true });
47
+ req.addEventListener('error', () => reject(req.error), { once: true });
48
+ }
49
+ catch (e) {
50
+ reject(e);
51
+ }
52
+ });
52
53
  }
53
54
  catch {
54
55
  dbData[storeName] = ['__error reading store__'];
55
56
  }
56
57
  }
57
58
  db.close();
58
- output[dbInfo.name] = dbData;
59
+ output[dbName] = dbData;
59
60
  }
60
61
  return output;
61
62
  }, { database, store, maxRecords });
@@ -24,7 +24,7 @@ export class ScriptManagementHandlers {
24
24
  async handleGetScriptSource(args) {
25
25
  const scriptId = argString(args, 'scriptId');
26
26
  const url = argString(args, 'url');
27
- const preview = argBool(args, 'preview', false);
27
+ const preview = argBool(args, 'preview', true);
28
28
  const maxLines = argNumber(args, 'maxLines', 100);
29
29
  const startLine = argNumber(args, 'startLine');
30
30
  const endLine = argNumber(args, 'endLine');
@@ -4,7 +4,6 @@ import type { DOMInspector } from '../../domains/shared/modules.js';
4
4
  import type { ScriptManager } from '../../domains/shared/modules.js';
5
5
  import type { ConsoleMonitor } from '../../domains/shared/modules.js';
6
6
  import { AICaptchaDetector } from '../../domains/shared/modules.js';
7
- import { type LLMService } from '../../../services/LLMService.js';
8
7
  import { DetailedDataManager } from '../../../utils/DetailedDataManager.js';
9
8
  import { type CamoufoxBrowserManager } from '../../domains/shared/modules.js';
10
9
  import { BrowserControlHandlers } from '../../domains/browser/handlers/browser-control.js';
@@ -58,7 +57,7 @@ export declare class BrowserToolHandlers {
58
57
  private tabWorkflow;
59
58
  private detailedData;
60
59
  private _tabRegistry;
61
- constructor(collector: CodeCollector, pageController: PageController, domInspector: DOMInspector, scriptManager: ScriptManager, consoleMonitor: ConsoleMonitor, llmService: LLMService);
60
+ constructor(collector: CodeCollector, pageController: PageController, domInspector: DOMInspector, scriptManager: ScriptManager, consoleMonitor: ConsoleMonitor);
62
61
  getTabRegistry(): TabRegistry;
63
62
  private getCamoufoxPage;
64
63
  private closeCamoufox;
@@ -1,5 +1,4 @@
1
1
  import { AICaptchaDetector } from '../../domains/shared/modules.js';
2
- import {} from '../../../services/LLMService.js';
3
2
  import { argString, argNumber, argBool } from '../../domains/shared/parse-args.js';
4
3
  import { DetailedDataManager } from '../../../utils/DetailedDataManager.js';
5
4
  import { resolveOutputDirectory } from '../../../utils/outputPaths.js';
@@ -60,14 +59,14 @@ export class BrowserToolHandlers {
60
59
  tabWorkflow;
61
60
  detailedData;
62
61
  _tabRegistry;
63
- constructor(collector, pageController, domInspector, scriptManager, consoleMonitor, llmService) {
62
+ constructor(collector, pageController, domInspector, scriptManager, consoleMonitor) {
64
63
  this.collector = collector;
65
64
  this.pageController = pageController;
66
65
  this.domInspector = domInspector;
67
66
  this.scriptManager = scriptManager;
68
67
  this.consoleMonitor = consoleMonitor;
69
68
  const screenshotDir = resolveOutputDirectory(process.env.CAPTCHA_SCREENSHOT_DIR, 'screenshots/captcha');
70
- this.captchaDetector = new AICaptchaDetector(llmService, screenshotDir);
69
+ this.captchaDetector = new AICaptchaDetector(screenshotDir);
71
70
  this.detailedDataManager = DetailedDataManager.getInstance();
72
71
  const modules = initializeBrowserHandlerModules({
73
72
  collector: this.collector,
@@ -8,7 +8,7 @@ const b = (invoke) => bindByDepKey(DEP_KEY, invoke);
8
8
  function ensure(ctx) {
9
9
  ensureBrowserCore(ctx);
10
10
  if (!ctx.browserHandlers) {
11
- ctx.browserHandlers = new BrowserToolHandlers(ctx.collector, ctx.pageController, ctx.domInspector, ctx.scriptManager, ctx.consoleMonitor, ctx.llm);
11
+ ctx.browserHandlers = new BrowserToolHandlers(ctx.collector, ctx.pageController, ctx.domInspector, ctx.scriptManager, ctx.consoleMonitor);
12
12
  }
13
13
  return ctx.browserHandlers;
14
14
  }
@@ -29,18 +29,42 @@ const manifest = {
29
29
  hint: 'Browser automation workflow: bootstrap browser/page state -> navigate -> interact -> extract data',
30
30
  },
31
31
  prerequisites: {
32
- page_navigate: [{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' }],
33
- page_click: [{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' }],
34
- page_type: [{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' }],
35
- page_screenshot: [{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' }],
36
- page_evaluate: [{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' }],
37
- page_hover: [{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' }],
38
- page_scroll: [{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' }],
39
- page_back: [{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' }],
40
- page_forward: [{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' }],
41
- page_reload: [{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' }],
42
- dom_get_structure: [{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' }],
43
- dom_query_selector: [{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' }],
32
+ page_navigate: [
33
+ { condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
34
+ ],
35
+ page_click: [
36
+ { condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
37
+ ],
38
+ page_type: [
39
+ { condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
40
+ ],
41
+ page_screenshot: [
42
+ { condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
43
+ ],
44
+ page_evaluate: [
45
+ { condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
46
+ ],
47
+ page_hover: [
48
+ { condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
49
+ ],
50
+ page_scroll: [
51
+ { condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
52
+ ],
53
+ page_back: [
54
+ { condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
55
+ ],
56
+ page_forward: [
57
+ { condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
58
+ ],
59
+ page_reload: [
60
+ { condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
61
+ ],
62
+ dom_get_structure: [
63
+ { condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
64
+ ],
65
+ dom_query_selector: [
66
+ { condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
67
+ ],
44
68
  },
45
69
  registrations: [
46
70
  { tool: t('get_detailed_data'), domain: DOMAIN, bind: b((h, a) => h.handleGetDetailedData(a)) },
@@ -1,218 +1,52 @@
1
+ import { tool } from '../../registry/tool-builder.js';
1
2
  export const coordinationTools = [
2
- {
3
- name: 'create_task_handoff',
4
- description: 'Create a sub-task handoff for specialist agent delegation.\n\n' +
5
- 'Use this as a Planner Agent to delegate work to a Specialist. ' +
6
- 'Automatically captures the current page URL (if any) and injects it into the task context.\n\n' +
7
- 'Returns:\n' +
8
- '- taskId: unique identifier to track this handoff\n' +
9
- '- status: "pending"\n' +
10
- '- pageUrl: auto-captured active page URL\n\n' +
11
- 'Example:\n' +
12
- ' create_task_handoff({ description: "Analyze API surface of current page", targetDomain: "network" })',
13
- inputSchema: {
14
- type: 'object',
15
- properties: {
16
- description: {
17
- type: 'string',
18
- description: 'Clear description of what the specialist should accomplish',
19
- },
20
- constraints: {
21
- type: 'array',
22
- items: { type: 'string' },
23
- description: 'Optional constraints for the specialist (e.g. "do not navigate away", "read-only analysis")',
24
- },
25
- targetDomain: {
26
- type: 'string',
27
- description: 'Suggested domain for the specialist (e.g. "network", "debugger", "browser"). Advisory only.',
28
- },
29
- },
30
- required: ['description'],
31
- },
32
- annotations: {
33
- title: 'Create Task Handoff',
34
- readOnlyHint: false,
35
- destructiveHint: false,
36
- idempotentHint: false,
37
- openWorldHint: false,
38
- },
39
- },
40
- {
41
- name: 'complete_task_handoff',
42
- description: 'Complete a previously created task handoff with results.\n\n' +
43
- 'Use this as a Specialist Agent to report execution results back to the Planner. ' +
44
- 'Once completed, the handoff status transitions to "completed" and cannot be modified.\n\n' +
45
- 'Example:\n' +
46
- ' complete_task_handoff({\n' +
47
- ' taskId: "abc-123",\n' +
48
- ' summary: "Found 5 API endpoints with Bearer auth",\n' +
49
- ' keyFindings: ["POST /api/v1/login uses JWT", "X-Signature header is HMAC-SHA256"]\n' +
50
- ' })',
51
- inputSchema: {
52
- type: 'object',
53
- properties: {
54
- taskId: {
55
- type: 'string',
56
- description: 'Task ID from create_task_handoff',
57
- },
58
- summary: {
59
- type: 'string',
60
- description: 'Concise summary of what was accomplished',
61
- },
62
- keyFindings: {
63
- type: 'array',
64
- items: { type: 'string' },
65
- description: 'Key discoveries or results from the task',
66
- },
67
- artifacts: {
68
- type: 'array',
69
- items: { type: 'string' },
70
- description: 'Paths to generated artifact files (HAR exports, reports, etc.)',
71
- },
72
- },
73
- required: ['taskId', 'summary'],
74
- },
75
- annotations: {
76
- title: 'Complete Task Handoff',
77
- readOnlyHint: false,
78
- destructiveHint: false,
79
- idempotentHint: false,
80
- openWorldHint: false,
81
- },
82
- },
83
- {
84
- name: 'get_task_context',
85
- description: 'Read the context of a task handoff.\n\n' +
86
- 'Returns the full handoff record including description, constraints, status, ' +
87
- 'page URL, and any completion data. If no taskId is provided, returns all active handoffs.\n\n' +
88
- 'Also returns accumulated session insights when no taskId is specified.\n\n' +
89
- 'Example:\n' +
90
- ' get_task_context() // list all handoffs + session insights\n' +
91
- ' get_task_context({ taskId: "abc" }) // specific handoff details',
92
- inputSchema: {
93
- type: 'object',
94
- properties: {
95
- taskId: {
96
- type: 'string',
97
- description: 'Specific task ID to retrieve (omit for all active handoffs)',
98
- },
99
- },
100
- },
101
- annotations: {
102
- title: 'Get Task Context',
103
- readOnlyHint: true,
104
- destructiveHint: false,
105
- idempotentHint: true,
106
- openWorldHint: false,
107
- },
108
- },
109
- {
110
- name: 'append_session_insight',
111
- description: 'Append a discovery to the session-level knowledge accumulator.\n\n' +
112
- 'Session insights persist for the lifetime of the MCP session and are shared ' +
113
- 'across all handoffs. Use this to record cross-cutting findings that any agent ' +
114
- 'in the session should know about.\n\n' +
115
- 'Categories: "auth", "crypto", "api", "anti_debug", "architecture", "vulnerability", "other"\n\n' +
116
- 'Example:\n' +
117
- ' append_session_insight({\n' +
118
- ' category: "auth",\n' +
119
- ' content: "JWT stored in localStorage under key \'access_token\'",\n' +
120
- ' confidence: 0.95\n' +
121
- ' })',
122
- inputSchema: {
123
- type: 'object',
124
- properties: {
125
- category: {
126
- type: 'string',
127
- enum: ['auth', 'crypto', 'api', 'anti_debug', 'architecture', 'vulnerability', 'other'],
128
- description: 'Category of the insight',
129
- },
130
- content: {
131
- type: 'string',
132
- description: 'The insight content',
133
- },
134
- confidence: {
135
- type: 'number',
136
- description: 'Confidence level 0.0-1.0 (default: 1.0)',
137
- minimum: 0,
138
- maximum: 1,
139
- },
140
- },
141
- required: ['category', 'content'],
142
- },
143
- annotations: {
144
- title: 'Append Session Insight',
145
- readOnlyHint: false,
146
- destructiveHint: false,
147
- idempotentHint: false,
148
- openWorldHint: false,
149
- },
150
- },
151
- {
152
- name: 'save_page_snapshot',
153
- description: 'Save a snapshot of the current page state (URL, cookies, localStorage, sessionStorage).\n\n' +
154
- 'Useful for checkpoint/restore workflows during reverse engineering — ' +
155
- 'save state before invasive operations, restore if needed.\n\n' +
156
- 'Example:\n' +
157
- ' save_page_snapshot()\n' +
158
- ' save_page_snapshot({ label: "before-login" })',
159
- inputSchema: {
160
- type: 'object',
161
- properties: {
162
- label: {
163
- type: 'string',
164
- description: 'Optional human-readable label for this snapshot',
165
- },
166
- },
167
- },
168
- annotations: {
169
- title: 'Save Page Snapshot',
170
- readOnlyHint: true,
171
- destructiveHint: false,
172
- idempotentHint: false,
173
- openWorldHint: false,
174
- },
175
- },
176
- {
177
- name: 'restore_page_snapshot',
178
- description: 'Restore a previously saved page snapshot.\n\n' +
179
- 'Navigates to the saved URL and reinjects cookies, localStorage, and sessionStorage.\n\n' +
180
- 'Example:\n' +
181
- ' restore_page_snapshot({ snapshotId: "a1b2c3d4" })',
182
- inputSchema: {
183
- type: 'object',
184
- properties: {
185
- snapshotId: {
186
- type: 'string',
187
- description: 'Snapshot ID from save_page_snapshot',
188
- },
189
- },
190
- required: ['snapshotId'],
191
- },
192
- annotations: {
193
- title: 'Restore Page Snapshot',
194
- readOnlyHint: false,
195
- destructiveHint: false,
196
- idempotentHint: true,
197
- openWorldHint: false,
198
- },
199
- },
200
- {
201
- name: 'list_page_snapshots',
202
- description: 'List all saved page snapshots in the current session.\n\n' +
203
- 'Returns snapshot IDs, URLs, labels, and state counts.\n\n' +
204
- 'Example:\n' +
205
- ' list_page_snapshots()',
206
- inputSchema: {
207
- type: 'object',
208
- properties: {},
209
- },
210
- annotations: {
211
- title: 'List Page Snapshots',
212
- readOnlyHint: true,
213
- destructiveHint: false,
214
- idempotentHint: true,
215
- openWorldHint: false,
216
- },
217
- },
3
+ tool('create_task_handoff')
4
+ .desc('Create a sub-task handoff for specialist agent delegation. Auto-captures active page URL.')
5
+ .string('description', 'What the specialist should accomplish')
6
+ .array('constraints', { type: 'string' }, 'Constraints for the specialist')
7
+ .string('targetDomain', 'Suggested domain for the specialist')
8
+ .required('description')
9
+ .build(),
10
+ tool('complete_task_handoff')
11
+ .desc('Complete a task handoff with results. Transitions status to completed.')
12
+ .string('taskId', 'Task ID from create_task_handoff')
13
+ .string('summary', 'Concise summary of what was accomplished')
14
+ .array('keyFindings', { type: 'string' }, 'Key discoveries or results')
15
+ .array('artifacts', { type: 'string' }, 'Paths to generated artifact files')
16
+ .required('taskId', 'summary')
17
+ .build(),
18
+ tool('get_task_context')
19
+ .desc('Read task handoff context. Without taskId returns all active handoffs + session insights.')
20
+ .string('taskId', 'Specific task ID to retrieve')
21
+ .readOnly()
22
+ .idempotent()
23
+ .build(),
24
+ tool('append_session_insight')
25
+ .desc('Append a discovery to the session-level knowledge accumulator shared across handoffs')
26
+ .enum('category', ['auth', 'crypto', 'api', 'anti_debug', 'architecture', 'vulnerability', 'other'], 'Insight category')
27
+ .string('content', 'The insight content')
28
+ .prop('confidence', {
29
+ type: 'number',
30
+ description: 'Confidence level 0.0-1.0',
31
+ minimum: 0,
32
+ maximum: 1,
33
+ })
34
+ .required('category', 'content')
35
+ .build(),
36
+ tool('save_page_snapshot')
37
+ .desc('Save current page state (URL, cookies, storage) for checkpoint/restore workflows')
38
+ .string('label', 'Human-readable label for this snapshot')
39
+ .readOnly()
40
+ .build(),
41
+ tool('restore_page_snapshot')
42
+ .desc('Restore a saved page snapshot — navigates to URL and reinjects cookies and storage')
43
+ .string('snapshotId', 'Snapshot ID from save_page_snapshot')
44
+ .required('snapshotId')
45
+ .idempotent()
46
+ .build(),
47
+ tool('list_page_snapshots')
48
+ .desc('List all saved page snapshots in the current session')
49
+ .readOnly()
50
+ .idempotent()
51
+ .build(),
218
52
  ];
@@ -1,4 +1,5 @@
1
- import type { MCPServerContext } from '../../MCPServer.context.js';
1
+ import type { MCPServerContext } from '../../domains/shared/registry.js';
2
+ export * from './definitions.js';
2
3
  export interface TaskHandoff {
3
4
  id: string;
4
5
  status: 'pending' | 'in_progress' | 'completed' | 'failed';
@@ -1,4 +1,5 @@
1
1
  import { randomUUID } from 'node:crypto';
2
+ export * from './definitions.js';
2
3
  export class CoordinationHandlers {
3
4
  handoffs = new Map();
4
5
  insights = [];