@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
@@ -1,247 +1,46 @@
1
1
  import { logger } from '../utils/logger.js';
2
- import { allTools, getToolDomain } from './ToolCatalog.js';
3
- import { getActiveToolNames } from './MCPServer.search.helpers.js';
4
- import { normalizeToolName } from './MCPServer.search.validation.js';
5
2
  import {} from './ToolSearch.js';
6
- import { getAllManifests } from './registry/index.js';
7
- let _allToolsByName = null;
8
- function getAllToolsByName() {
9
- if (!_allToolsByName)
10
- _allToolsByName = new Map(allTools.map((t) => [t.name, t]));
11
- return _allToolsByName;
12
- }
13
- let _cachedWorkflowRules = null;
14
- function getEffectiveWorkflowRules() {
15
- if (_cachedWorkflowRules)
16
- return _cachedWorkflowRules;
17
- const rules = [];
18
- for (const m of getAllManifests()) {
19
- if (m.workflowRule) {
20
- rules.push({
21
- patterns: [...m.workflowRule.patterns],
22
- domain: m.domain,
23
- priority: m.workflowRule.priority,
24
- tools: [...m.workflowRule.tools],
25
- hint: m.workflowRule.hint,
26
- });
27
- }
28
- }
29
- _cachedWorkflowRules = rules.sort((a, b) => b.priority - a.priority);
30
- return _cachedWorkflowRules;
31
- }
32
- const BROWSER_OR_NETWORK_TASK_PATTERN = /(browser|page|navigate|click|type|screenshot|scrape|network|request|response|api|traffic|hook|capture|intercept|monitor|浏览器|页面|导航|点击|输入|截图|爬取|网络|请求|响应|接口|流量|抓包|拦截|监控)/i;
33
- const MAINTENANCE_TASK_PATTERN = /(token budget|cache|artifact|extension|plugin|reload|doctor|cleanup|memory|profile|tool list|令牌预算|缓存|工件|扩展|插件|重载|环境诊断|清理|内存|配置)/i;
34
- let _cachedPrerequisites = null;
35
- function getEffectivePrerequisites() {
36
- if (_cachedPrerequisites)
37
- return _cachedPrerequisites;
38
- const merged = {};
39
- for (const m of getAllManifests()) {
40
- if (m.prerequisites) {
41
- for (const [toolName, entries] of Object.entries(m.prerequisites)) {
42
- merged[toolName] = entries.map((e) => ({
43
- condition: e.condition,
44
- check: () => false,
45
- fix: e.fix,
46
- }));
47
- }
48
- }
49
- }
50
- _cachedPrerequisites = merged;
51
- return _cachedPrerequisites;
52
- }
53
- function detectWorkflowIntent(query) {
54
- const matches = [];
55
- for (const rule of getEffectiveWorkflowRules()) {
56
- for (const pattern of rule.patterns) {
57
- if (pattern.test(query)) {
58
- matches.push(rule);
59
- break;
60
- }
61
- }
62
- }
63
- if (matches.length === 0)
64
- return null;
65
- matches.sort((a, b) => b.priority - a.priority);
66
- return matches[0];
67
- }
68
- function getToolInputSchema(toolName, ctx) {
69
- const canonicalName = normalizeToolName(toolName);
70
- const builtInTool = getAllToolsByName().get(canonicalName);
71
- if (builtInTool) {
72
- return builtInTool.inputSchema;
73
- }
74
- const extTool = ctx.extensionToolsByName.get(canonicalName);
75
- if (extTool) {
76
- return extTool.tool.inputSchema;
77
- }
78
- const metaTool = ctx.metaToolsByName.get(canonicalName);
79
- if (metaTool) {
80
- return metaTool.inputSchema;
81
- }
82
- return undefined;
83
- }
84
- function getToolDescription(toolName, ctx) {
85
- const canonicalName = normalizeToolName(toolName);
86
- const builtInTool = getAllToolsByName().get(canonicalName);
87
- if (builtInTool?.description) {
88
- return builtInTool.description.split('\n')[0] || 'No description available';
89
- }
90
- const extTool = ctx.extensionToolsByName.get(canonicalName);
91
- if (extTool?.tool?.description) {
92
- return extTool.tool.description.split('\n')[0] || 'No description available';
93
- }
94
- const metaTool = ctx.metaToolsByName.get(canonicalName);
95
- if (metaTool?.description) {
96
- return metaTool.description.split('\n')[0] || 'No description available';
97
- }
98
- return 'No description available';
99
- }
100
- function isActive(toolName, ctx) {
101
- const canonicalName = normalizeToolName(toolName);
102
- const activeTools = new Set([
103
- ...ctx.selectedTools.map((tool) => tool.name),
104
- ...ctx.activatedToolNames,
105
- ]);
106
- return activeTools.has(canonicalName);
107
- }
108
- function getAvailableToolNames(ctx) {
109
- return new Set([...allTools.map((tool) => tool.name), ...ctx.extensionToolsByName.keys()]);
110
- }
111
- async function probeActivePage(ctx) {
112
- if (!ctx.pageController || typeof ctx.pageController.getPage !== 'function')
113
- return false;
114
- try {
115
- return Boolean(await ctx.pageController.getPage());
116
- }
117
- catch {
118
- return false;
119
- }
120
- }
121
- function probeNetworkEnabled(ctx) {
122
- if (!ctx.consoleMonitor)
123
- return false;
124
- try {
125
- if (typeof ctx.consoleMonitor.getNetworkStatus === 'function') {
126
- return Boolean(ctx.consoleMonitor.getNetworkStatus().enabled);
127
- }
128
- if (typeof ctx.consoleMonitor.isNetworkEnabled === 'function') {
129
- return Boolean(ctx.consoleMonitor.isNetworkEnabled());
130
- }
131
- }
132
- catch { }
133
- return false;
134
- }
135
- function probeCapturedRequests(ctx) {
136
- if (!ctx.consoleMonitor || typeof ctx.consoleMonitor.getNetworkRequests !== 'function')
137
- return 0;
138
- try {
139
- const requests = ctx.consoleMonitor.getNetworkRequests({ limit: 1 });
140
- return Array.isArray(requests) ? requests.length : 0;
141
- }
142
- catch {
143
- try {
144
- const requests = ctx.consoleMonitor.getNetworkRequests();
145
- return Array.isArray(requests) ? requests.length : 0;
146
- }
147
- catch {
148
- return 0;
149
- }
150
- }
151
- }
152
- async function getRoutingState(ctx) {
153
- return {
154
- hasActivePage: await probeActivePage(ctx),
155
- networkEnabled: probeNetworkEnabled(ctx),
156
- capturedRequestCount: probeCapturedRequests(ctx),
157
- };
158
- }
159
- function buildWorkflowToolSequence(workflow, state, availableToolNames) {
160
- const sequence = [];
161
- const pushIfAvailable = (toolName) => {
162
- if (availableToolNames.has(toolName) && !sequence.includes(toolName)) {
163
- sequence.push(toolName);
164
- }
165
- };
166
- if ((workflow.domain === 'browser' || workflow.domain === 'network') && !state.hasActivePage) {
167
- pushIfAvailable('browser_launch');
168
- pushIfAvailable('browser_attach');
169
- }
170
- if (workflow.domain === 'network') {
171
- if (state.hasActivePage && !state.networkEnabled) {
172
- pushIfAvailable('network_enable');
173
- }
174
- if (state.hasActivePage && state.networkEnabled && state.capturedRequestCount > 0) {
175
- pushIfAvailable('network_get_requests');
176
- }
177
- }
178
- for (const toolName of workflow.tools) {
179
- pushIfAvailable(toolName);
180
- }
181
- if (workflow.domain === 'network' && state.hasActivePage && state.networkEnabled) {
182
- pushIfAvailable('network_get_requests');
183
- }
184
- return sequence;
185
- }
186
- function isBrowserOrNetworkTask(task, workflow) {
187
- return (workflow?.domain === 'browser' ||
188
- workflow?.domain === 'network' ||
189
- BROWSER_OR_NETWORK_TASK_PATTERN.test(task));
190
- }
191
- function isMaintenanceTask(task) {
192
- return MAINTENANCE_TASK_PATTERN.test(task);
193
- }
194
- function rerankResultsForContext(results, task, workflow, state) {
195
- const browserOrNetworkTask = isBrowserOrNetworkTask(task, workflow);
196
- const maintenanceTask = isMaintenanceTask(task);
197
- const reranked = results.map((result) => {
198
- let score = result.score;
199
- if (browserOrNetworkTask && !maintenanceTask && result.domain === 'maintenance') {
200
- score *= 0.1;
201
- }
202
- if (browserOrNetworkTask) {
203
- if (!state.hasActivePage && result.name === 'browser_launch') {
204
- score *= 1.4;
205
- }
206
- if (!state.hasActivePage && result.name === 'browser_attach') {
207
- score *= 1.2;
208
- }
209
- if (state.hasActivePage && !state.networkEnabled && result.name === 'network_enable') {
210
- score *= 1.35;
211
- }
212
- if (state.hasActivePage &&
213
- state.networkEnabled &&
214
- state.capturedRequestCount > 0 &&
215
- result.name === 'network_get_requests') {
216
- score *= 1.5;
217
- }
218
- }
219
- return {
220
- ...result,
221
- score,
222
- };
223
- });
224
- reranked.sort((a, b) => b.score - a.score);
225
- return reranked;
226
- }
3
+ import { ensureWorkflowsLoaded } from './extensions/ExtensionManager.js';
4
+ import { getActiveToolNames } from './MCPServer.search.helpers.js';
5
+ import { detectWorkflowIntent, matchWorkflowRoute, isBrowserOrNetworkTask, isMaintenanceTask, } from './ToolRouter.intent.js';
6
+ import { getAvailableToolNames, getRoutingState, isToolActive, getToolDomainFromContext, getToolInputSchema, } from './ToolRouter.probe.js';
7
+ import { getEffectivePrerequisites, buildWorkflowToolSequence, buildPresetRecommendations, buildWorkflowRouteRecommendation, buildRouteMatchMetadata, rerankResultsForContext, } from './ToolRouter.policy.js';
8
+ import { buildCallToolCommand, generateExampleArgs } from './ToolRouter.renderer.js';
227
9
  export async function routeToolRequest(request, ctx, searchEngine) {
228
10
  const { task, context = {} } = request;
229
11
  const maxRecommendations = context.maxRecommendations || 5;
230
12
  logger.info('[ToolRouter] Routing request', { task, context });
13
+ await ensureWorkflowsLoaded(ctx);
231
14
  const workflow = detectWorkflowIntent(task);
232
15
  const activeNames = getActiveToolNames(ctx);
233
16
  const routingState = await getRoutingState(ctx);
234
17
  const availableToolNames = getAvailableToolNames(ctx);
18
+ const routeMatch = matchWorkflowRoute(task, ctx);
19
+ let presetPlannedToolNames = null;
235
20
  const searchResults = await searchEngine.search(task, maxRecommendations * 2, activeNames);
236
21
  let finalResults = [];
237
- if (workflow) {
22
+ if (routeMatch?.workflow.route.kind === 'preset') {
23
+ const presetTools = buildPresetRecommendations(routeMatch, routingState, ctx, availableToolNames);
24
+ presetPlannedToolNames = new Set(presetTools.map((tool) => tool.name));
25
+ const presetNames = new Set(presetTools.map((tool) => tool.name));
26
+ const otherResults = searchResults.filter((result) => !presetNames.has(result.name));
27
+ finalResults = [...presetTools, ...otherResults];
28
+ }
29
+ else if (routeMatch?.workflow.route.kind === 'workflow') {
30
+ const workflowResult = buildWorkflowRouteRecommendation(routeMatch, ctx);
31
+ const otherResults = searchResults.filter((result) => result.name !== workflowResult.name);
32
+ finalResults = [workflowResult, ...otherResults];
33
+ }
34
+ else if (workflow) {
238
35
  const workflowSequence = buildWorkflowToolSequence(workflow, routingState, availableToolNames);
239
36
  const workflowTools = workflowSequence.map((name, index) => ({
240
37
  name,
241
- domain: getToolDomain(name) ?? ctx.extensionToolsByName.get(name)?.domain ?? null,
242
- shortDescription: getToolDescription(name, ctx),
38
+ domain: getToolDomainFromContext(name, ctx),
39
+ shortDescription: searchResults.find((r) => r.name === name)?.shortDescription ??
40
+ ctx.extensionToolsByName.get(name)?.tool.description ??
41
+ '',
243
42
  score: workflow.priority - index * 0.01,
244
- isActive: isActive(name, ctx),
43
+ isActive: isToolActive(name, ctx),
245
44
  }));
246
45
  const workflowNames = new Set(workflowSequence);
247
46
  const otherResults = searchResults.filter((result) => !workflowNames.has(result.name));
@@ -268,10 +67,12 @@ export async function routeToolRequest(request, ctx, searchEngine) {
268
67
  }));
269
68
  finalResults.sort((a, b) => b.score - a.score);
270
69
  }
271
- finalResults = finalResults.slice(0, maxRecommendations);
70
+ const recommendationLimit = Math.max(maxRecommendations, presetPlannedToolNames?.size ?? 0);
71
+ finalResults = finalResults.slice(0, recommendationLimit);
72
+ const routeMatchMetadata = routeMatch ? buildRouteMatchMetadata(routeMatch, ctx) : undefined;
272
73
  const recommendations = finalResults.map((result) => {
273
74
  const schema = getToolInputSchema(result.name, ctx);
274
- const toolIsActive = isActive(result.name, ctx);
75
+ const toolIsActive = isToolActive(result.name, ctx);
275
76
  const recommendation = {
276
77
  name: result.name,
277
78
  domain: result.domain,
@@ -295,15 +96,79 @@ export async function routeToolRequest(request, ctx, searchEngine) {
295
96
  return recommendation;
296
97
  });
297
98
  const nextActions = [];
298
- const inactiveTools = recommendations.filter((recommendation) => !recommendation.isActive);
99
+ const presetRecommendations = presetPlannedToolNames
100
+ ? recommendations.filter((recommendation) => presetPlannedToolNames.has(recommendation.name))
101
+ : [];
102
+ const inactiveTools = (presetRecommendations.length > 0 ? presetRecommendations : recommendations).filter((recommendation) => !recommendation.isActive);
299
103
  const activationCandidates = (() => {
300
- if (!isBrowserOrNetworkTask(task, workflow) || isMaintenanceTask(task)) {
104
+ if (presetRecommendations.length > 0 ||
105
+ !isBrowserOrNetworkTask(task, workflow) ||
106
+ isMaintenanceTask(task)) {
301
107
  return inactiveTools;
302
108
  }
303
109
  const nonMaintenanceTools = inactiveTools.filter((tool) => tool.domain !== 'maintenance');
304
110
  return nonMaintenanceTools.length > 0 ? nonMaintenanceTools : inactiveTools;
305
111
  })();
306
- if (recommendations.length > 0 && recommendations[0]?.isActive) {
112
+ if (routeMatchMetadata?.kind === 'preset' && presetRecommendations.length > 0) {
113
+ let stepNumber = 1;
114
+ if (activationCandidates.length > 0) {
115
+ nextActions.push({
116
+ step: stepNumber++,
117
+ action: 'activate',
118
+ toolName: activationCandidates.length === 1 ? activationCandidates[0].name : undefined,
119
+ command: `activate_tools with names: [${activationCandidates.map((tool) => `"${tool.name}"`).join(', ')}]`,
120
+ description: `Activate ${activationCandidates.length} preset tool${activationCandidates.length === 1 ? '' : 's'} for ${routeMatchMetadata.name}`,
121
+ });
122
+ }
123
+ const bootstrapRecommendations = recommendations.filter((recommendation) => recommendation.name === 'browser_launch' || recommendation.name === 'browser_attach');
124
+ for (const bootstrap of bootstrapRecommendations) {
125
+ nextActions.push({
126
+ step: stepNumber++,
127
+ action: 'call',
128
+ toolName: bootstrap.name,
129
+ command: bootstrap.name,
130
+ exampleArgs: generateExampleArgs(bootstrap.inputSchema),
131
+ description: bootstrap.description,
132
+ });
133
+ }
134
+ for (const step of routeMatchMetadata.steps) {
135
+ const recommendation = presetRecommendations.find((item) => item.name === step.toolName);
136
+ nextActions.push({
137
+ step: stepNumber++,
138
+ action: 'call',
139
+ toolName: step.toolName,
140
+ command: step.toolName,
141
+ exampleArgs: generateExampleArgs(recommendation?.inputSchema ??
142
+ getToolInputSchema(step.toolName, ctx) ?? { type: 'object' }),
143
+ description: `${step.id}: ${step.description}`,
144
+ });
145
+ }
146
+ }
147
+ else if (routeMatchMetadata?.kind === 'workflow') {
148
+ const workflowRecommendation = recommendations.find((recommendation) => recommendation.name === 'run_extension_workflow');
149
+ let stepNumber = 1;
150
+ if (!workflowRecommendation.isActive) {
151
+ nextActions.push({
152
+ step: stepNumber++,
153
+ action: 'activate',
154
+ toolName: workflowRecommendation.name,
155
+ command: `activate_tools with names: ["${workflowRecommendation.name}"]`,
156
+ description: `Activate workflow runner for ${routeMatchMetadata.name}`,
157
+ });
158
+ }
159
+ nextActions.push({
160
+ step: stepNumber,
161
+ action: 'call',
162
+ toolName: 'run_extension_workflow',
163
+ command: 'run_extension_workflow',
164
+ exampleArgs: {
165
+ ...generateExampleArgs(workflowRecommendation.inputSchema),
166
+ workflowId: routeMatchMetadata.id,
167
+ },
168
+ description: `Execute routed workflow ${routeMatchMetadata.name}`,
169
+ });
170
+ }
171
+ else if (recommendations.length > 0 && recommendations[0]?.isActive) {
307
172
  nextActions.push({
308
173
  step: 1,
309
174
  action: 'call',
@@ -334,57 +199,11 @@ export async function routeToolRequest(request, ctx, searchEngine) {
334
199
  return {
335
200
  recommendations,
336
201
  nextActions,
337
- workflowHint: workflow?.hint,
202
+ workflowHint: routeMatchMetadata
203
+ ? `${routeMatchMetadata.kind === 'preset' ? 'Preset' : 'Workflow'} ${routeMatchMetadata.name}: ${routeMatchMetadata.description}`
204
+ : workflow?.hint,
205
+ routeMatch: routeMatchMetadata,
338
206
  autoActivated: false,
339
207
  };
340
208
  }
341
- export function buildCallToolCommand(toolName, schema) {
342
- return `call_tool({ name: "${toolName}", args: ${JSON.stringify(generateExampleArgs(schema))} })`;
343
- }
344
- export function generateExampleArgs(schema) {
345
- if (schema?.type !== 'object' || !schema.properties) {
346
- return {};
347
- }
348
- const example = {};
349
- const required = new Set(Array.isArray(schema.required) ? schema.required : []);
350
- for (const [key, prop] of Object.entries(schema.properties)) {
351
- const propSchema = prop;
352
- if (!required.has(key) && propSchema.default === undefined) {
353
- continue;
354
- }
355
- if (propSchema.default !== undefined) {
356
- example[key] = propSchema.default;
357
- }
358
- else if (propSchema.enum && Array.isArray(propSchema.enum) && propSchema.enum.length > 0) {
359
- example[key] = propSchema.enum[0];
360
- }
361
- else if (propSchema.type === 'string') {
362
- example[key] = `<${key}>`;
363
- }
364
- else if (propSchema.type === 'number' || propSchema.type === 'integer') {
365
- example[key] = 0;
366
- }
367
- else if (propSchema.type === 'boolean') {
368
- example[key] = false;
369
- }
370
- else if (propSchema.type === 'array') {
371
- example[key] = [];
372
- }
373
- else if (propSchema.type === 'object') {
374
- example[key] = {};
375
- }
376
- }
377
- return example;
378
- }
379
- export function describeTool(toolName, ctx) {
380
- const canonicalName = normalizeToolName(toolName);
381
- const schema = getToolInputSchema(canonicalName, ctx);
382
- if (!schema) {
383
- return null;
384
- }
385
- return {
386
- name: canonicalName,
387
- description: getToolDescription(canonicalName, ctx),
388
- inputSchema: schema,
389
- };
390
- }
209
+ export { buildCallToolCommand, describeTool, generateExampleArgs, } from './ToolRouter.renderer.js';
@@ -0,0 +1,22 @@
1
+ import type { MCPServerContext } from './MCPServer.context.js';
2
+ import type { ToolSearchResult } from './ToolSearch.js';
3
+ import type { WorkflowRule, RoutedWorkflowMatch } from './ToolRouter.intent.js';
4
+ import type { RoutingState } from './ToolRouter.probe.js';
5
+ import type { RouterResponse } from './ToolRouter.js';
6
+ export interface PrerequisiteEntry {
7
+ condition: string;
8
+ check: (state: RoutingState) => boolean;
9
+ fix: string;
10
+ }
11
+ interface PlannedTool {
12
+ name: string;
13
+ description: string;
14
+ }
15
+ export declare function getEffectivePrerequisites(): Record<string, PrerequisiteEntry[]>;
16
+ export declare function buildWorkflowToolSequence(workflow: WorkflowRule, state: RoutingState, availableToolNames: Set<string>): string[];
17
+ export declare function buildPresetToolSequence(match: RoutedWorkflowMatch, state: RoutingState, availableToolNames: Set<string>): PlannedTool[];
18
+ export declare function buildPresetRecommendations(match: RoutedWorkflowMatch, state: RoutingState, ctx: MCPServerContext, availableToolNames: Set<string>): ToolSearchResult[];
19
+ export declare function buildWorkflowRouteRecommendation(match: RoutedWorkflowMatch, ctx: MCPServerContext): ToolSearchResult;
20
+ export declare function buildRouteMatchMetadata(match: RoutedWorkflowMatch, ctx: MCPServerContext): NonNullable<RouterResponse['routeMatch']>;
21
+ export declare function rerankResultsForContext(results: ToolSearchResult[], task: string, workflow: WorkflowRule | null, state: RoutingState): ToolSearchResult[];
22
+ export {};
@@ -0,0 +1,163 @@
1
+ import { getToolDomain } from './ToolCatalog.js';
2
+ import { getAllManifests } from './registry/index.js';
3
+ import { isBrowserOrNetworkTask, isMaintenanceTask } from './ToolRouter.intent.js';
4
+ import { isToolActive, getToolDomainFromContext } from './ToolRouter.probe.js';
5
+ function buildPrerequisiteCheck(condition) {
6
+ if (condition.includes('Browser must be launched')) {
7
+ return (state) => state.hasActivePage;
8
+ }
9
+ if (condition.includes('Network monitoring must be enabled')) {
10
+ return (state) => state.networkEnabled;
11
+ }
12
+ if (condition.includes('Debugger must be enabled')) {
13
+ return (state) => state.hasActivePage;
14
+ }
15
+ if (condition.includes('Debugger must be attached')) {
16
+ return (state) => state.hasActivePage;
17
+ }
18
+ if (condition.includes('Page must be navigated')) {
19
+ return (state) => state.hasActivePage;
20
+ }
21
+ if (condition.includes('WebSocket monitoring')) {
22
+ return (state) => state.hasActivePage;
23
+ }
24
+ return () => false;
25
+ }
26
+ let _cachedPrerequisites = null;
27
+ export function getEffectivePrerequisites() {
28
+ if (_cachedPrerequisites)
29
+ return _cachedPrerequisites;
30
+ const merged = {};
31
+ for (const m of getAllManifests()) {
32
+ if (m.prerequisites) {
33
+ for (const [toolName, entries] of Object.entries(m.prerequisites)) {
34
+ merged[toolName] = entries.map((e) => ({
35
+ condition: e.condition,
36
+ check: buildPrerequisiteCheck(e.condition),
37
+ fix: e.fix,
38
+ }));
39
+ }
40
+ }
41
+ }
42
+ _cachedPrerequisites = merged;
43
+ return _cachedPrerequisites;
44
+ }
45
+ export function buildWorkflowToolSequence(workflow, state, availableToolNames) {
46
+ const sequence = [];
47
+ const pushIfAvailable = (toolName) => {
48
+ if (availableToolNames.has(toolName) && !sequence.includes(toolName)) {
49
+ sequence.push(toolName);
50
+ }
51
+ };
52
+ if ((workflow.domain === 'browser' || workflow.domain === 'network') && !state.hasActivePage) {
53
+ pushIfAvailable('browser_launch');
54
+ pushIfAvailable('browser_attach');
55
+ }
56
+ if (workflow.domain === 'network') {
57
+ if (state.hasActivePage && !state.networkEnabled) {
58
+ pushIfAvailable('network_enable');
59
+ }
60
+ if (state.hasActivePage && state.networkEnabled && state.capturedRequestCount > 0) {
61
+ pushIfAvailable('network_get_requests');
62
+ }
63
+ }
64
+ for (const toolName of workflow.tools) {
65
+ pushIfAvailable(toolName);
66
+ }
67
+ if (workflow.domain === 'network' && state.hasActivePage && state.networkEnabled) {
68
+ pushIfAvailable('network_get_requests');
69
+ }
70
+ return sequence;
71
+ }
72
+ export function buildPresetToolSequence(match, state, availableToolNames) {
73
+ const sequence = [];
74
+ const seen = new Set();
75
+ const requiresBrowserSession = match.workflow.route.requiredDomains.includes('browser') ||
76
+ match.workflow.route.requiredDomains.includes('network');
77
+ const pushIfAvailable = (toolName, description) => {
78
+ if (!availableToolNames.has(toolName) || seen.has(toolName)) {
79
+ return;
80
+ }
81
+ seen.add(toolName);
82
+ sequence.push({ name: toolName, description });
83
+ };
84
+ if (!state.hasActivePage && requiresBrowserSession) {
85
+ pushIfAvailable('browser_launch', 'Launch a browser session before executing the preset');
86
+ pushIfAvailable('browser_attach', 'Attach preset tooling to the active browser session before capture begins');
87
+ }
88
+ for (const step of match.workflow.route.steps) {
89
+ pushIfAvailable(step.toolName, step.description);
90
+ }
91
+ return sequence;
92
+ }
93
+ export function buildPresetRecommendations(match, state, ctx, availableToolNames) {
94
+ return buildPresetToolSequence(match, state, availableToolNames).map((plannedTool, index) => ({
95
+ name: plannedTool.name,
96
+ domain: getToolDomainFromContext(plannedTool.name, ctx),
97
+ shortDescription: plannedTool.description,
98
+ score: match.workflow.route.priority + match.confidence - index * 0.01,
99
+ isActive: isToolActive(plannedTool.name, ctx),
100
+ }));
101
+ }
102
+ export function buildWorkflowRouteRecommendation(match, ctx) {
103
+ return {
104
+ name: 'run_extension_workflow',
105
+ domain: getToolDomainFromContext('run_extension_workflow', ctx),
106
+ shortDescription: `Execute routed workflow ${match.workflow.name} (${match.workflow.id}) via run_extension_workflow`,
107
+ score: match.workflow.route.priority + match.confidence,
108
+ isActive: isToolActive('run_extension_workflow', ctx),
109
+ };
110
+ }
111
+ export function buildRouteMatchMetadata(match, ctx) {
112
+ return {
113
+ kind: match.workflow.route.kind,
114
+ id: match.workflow.id,
115
+ name: match.workflow.name,
116
+ description: match.workflow.description,
117
+ confidence: match.confidence,
118
+ matchedPattern: match.matchedPattern,
119
+ requiredDomains: [...match.workflow.route.requiredDomains],
120
+ steps: match.workflow.route.steps.map((step) => ({
121
+ id: step.id,
122
+ toolName: step.toolName,
123
+ domain: getToolDomain(step.toolName) ?? ctx.extensionToolsByName.get(step.toolName)?.domain ?? null,
124
+ description: step.description,
125
+ prerequisites: [...step.prerequisites],
126
+ parallel: step.parallel,
127
+ isActive: isToolActive(step.toolName, ctx),
128
+ })),
129
+ };
130
+ }
131
+ export function rerankResultsForContext(results, task, workflow, state) {
132
+ const browserOrNetworkTask = isBrowserOrNetworkTask(task, workflow);
133
+ const maintenanceTask = isMaintenanceTask(task);
134
+ const reranked = results.map((result) => {
135
+ let score = result.score;
136
+ if (browserOrNetworkTask && !maintenanceTask && result.domain === 'maintenance') {
137
+ score *= 0.1;
138
+ }
139
+ if (browserOrNetworkTask) {
140
+ if (!state.hasActivePage && result.name === 'browser_launch') {
141
+ score *= 1.4;
142
+ }
143
+ if (!state.hasActivePage && result.name === 'browser_attach') {
144
+ score *= 1.2;
145
+ }
146
+ if (state.hasActivePage && !state.networkEnabled && result.name === 'network_enable') {
147
+ score *= 1.35;
148
+ }
149
+ if (state.hasActivePage &&
150
+ state.networkEnabled &&
151
+ state.capturedRequestCount > 0 &&
152
+ result.name === 'network_get_requests') {
153
+ score *= 1.5;
154
+ }
155
+ }
156
+ return {
157
+ ...result,
158
+ score,
159
+ };
160
+ });
161
+ reranked.sort((a, b) => b.score - a.score);
162
+ return reranked;
163
+ }
@@ -0,0 +1,17 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { MCPServerContext } from './MCPServer.context.js';
3
+ export interface RoutingState {
4
+ hasActivePage: boolean;
5
+ networkEnabled: boolean;
6
+ capturedRequestCount: number;
7
+ }
8
+ export declare function getAllToolsByName(): Map<string, Tool>;
9
+ export declare function getToolInputSchema(toolName: string, ctx: MCPServerContext): Tool['inputSchema'] | undefined;
10
+ export declare function getToolDescription(toolName: string, ctx: MCPServerContext): string;
11
+ export declare function isToolActive(toolName: string, ctx: MCPServerContext): boolean;
12
+ export declare function getAvailableToolNames(ctx: MCPServerContext): Set<string>;
13
+ export declare function getToolDomainFromContext(toolName: string, ctx: MCPServerContext): string | null;
14
+ export declare function probeActivePage(ctx: MCPServerContext): Promise<boolean>;
15
+ export declare function probeNetworkEnabled(ctx: MCPServerContext): boolean;
16
+ export declare function probeCapturedRequests(ctx: MCPServerContext): number;
17
+ export declare function getRoutingState(ctx: MCPServerContext): Promise<RoutingState>;