@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
@@ -1,6 +1,11 @@
1
1
  import { logger } from '../utils/logger.js';
2
2
  import { getToolDomain } from './ToolCatalog.js';
3
3
  import { ToolError } from '../errors/ToolError.js';
4
+ function isPromiseLike(value) {
5
+ return ((typeof value === 'object' || typeof value === 'function') &&
6
+ value !== null &&
7
+ typeof value.then === 'function');
8
+ }
4
9
  export function resolveEnabledDomains(tools) {
5
10
  const domains = new Set();
6
11
  for (const tool of tools) {
@@ -12,30 +17,90 @@ export function resolveEnabledDomains(tools) {
12
17
  return domains;
13
18
  }
14
19
  export function createDomainProxy(ctx, domain, label, factory) {
20
+ const errorDetails = { domain, label };
21
+ let initPromise;
15
22
  let instance;
16
- let initializing = false;
23
+ let factoryKind = 'unknown';
24
+ let factoryDepth = 0;
25
+ function bindPropertyValue(targetInstance, prop) {
26
+ const value = targetInstance[prop];
27
+ return typeof value === 'function' ? value.bind(targetInstance) : value;
28
+ }
29
+ function initialize() {
30
+ if (instance)
31
+ return instance;
32
+ if (initPromise)
33
+ return initPromise;
34
+ if (factoryDepth > 0) {
35
+ throw new ToolError('RUNTIME', `${label}: circular initialization detected for domain "${domain}"`, { details: errorDetails });
36
+ }
37
+ logger.info(`Lazy-initializing ${label} for domain "${domain}"`);
38
+ factoryDepth++;
39
+ try {
40
+ const created = factory();
41
+ if (isPromiseLike(created)) {
42
+ factoryKind = 'async';
43
+ initPromise = Promise.resolve(created).then((resolvedInstance) => {
44
+ instance = resolvedInstance;
45
+ return resolvedInstance;
46
+ });
47
+ return initPromise;
48
+ }
49
+ factoryKind = 'sync';
50
+ instance = created;
51
+ initPromise = Promise.resolve(created);
52
+ return created;
53
+ }
54
+ finally {
55
+ factoryDepth--;
56
+ }
57
+ }
58
+ async function getOrCreateInstance() {
59
+ const created = initialize();
60
+ return isPromiseLike(created) ? await created : created;
61
+ }
62
+ function createAsyncPropertyAccessor(prop) {
63
+ const resolveProperty = () => getOrCreateInstance().then((resolvedInstance) => bindPropertyValue(resolvedInstance, prop));
64
+ const accessor = (...args) => getOrCreateInstance().then((resolvedInstance) => {
65
+ const value = resolvedInstance[prop];
66
+ if (typeof value === 'function') {
67
+ return value.call(resolvedInstance, ...args);
68
+ }
69
+ return value;
70
+ });
71
+ return new Proxy(accessor, {
72
+ get: (target, asyncProp, receiver) => {
73
+ if (asyncProp === 'then') {
74
+ return (...args) => resolveProperty().then(...args);
75
+ }
76
+ if (asyncProp === 'catch') {
77
+ return (...args) => resolveProperty().catch(...args);
78
+ }
79
+ if (asyncProp === 'finally') {
80
+ return (...args) => resolveProperty().finally(...args);
81
+ }
82
+ return Reflect.get(target, asyncProp, receiver);
83
+ },
84
+ });
85
+ }
17
86
  return new Proxy({}, {
18
87
  get: (_target, prop) => {
19
88
  if (!ctx.enabledDomains.has(domain)) {
20
89
  return () => {
21
- throw new ToolError('PREREQUISITE', `${label} is unavailable: domain "${domain}" not enabled by current tool profile`, { details: { domain, label } });
90
+ throw new ToolError('PREREQUISITE', `${label} is unavailable: domain "${domain}" not enabled by current tool profile`, { details: errorDetails });
22
91
  };
23
92
  }
24
- if (!instance) {
25
- if (initializing) {
26
- throw new ToolError('RUNTIME', `${label}: circular initialization detected for domain "${domain}"`, { details: { domain, label } });
27
- }
28
- initializing = true;
29
- try {
30
- logger.info(`Lazy-initializing ${label} for domain "${domain}"`);
31
- instance = factory();
32
- }
33
- finally {
34
- initializing = false;
35
- }
93
+ if (prop === 'then' || prop === 'catch' || prop === Symbol.toStringTag) {
94
+ return undefined;
95
+ }
96
+ if (instance && factoryKind === 'sync') {
97
+ return bindPropertyValue(instance, prop);
98
+ }
99
+ const created = initialize();
100
+ if (isPromiseLike(created)) {
101
+ return createAsyncPropertyAccessor(prop);
36
102
  }
37
- const value = instance[prop];
38
- return typeof value === 'function' ? value.bind(instance) : value;
103
+ return bindPropertyValue(created, prop);
39
104
  },
40
105
  });
41
106
  }
@@ -13,8 +13,10 @@ import { resolveToolsForRegistration } from './MCPServer.registration.js';
13
13
  import { createDomainProxy, resolveEnabledDomains } from './MCPServer.domain.js';
14
14
  import { refreshDomainTtlForTool } from './MCPServer.activation.ttl.js';
15
15
  import { closeServer, startHttpTransport, startStdioTransport } from './MCPServer.transport.js';
16
+ import { ActivationController } from './activation/ActivationController.js';
16
17
  import { registerSingleTool as registerSingleToolImpl } from './MCPServer.tools.js';
17
18
  import { registerSearchMetaTools } from './MCPServer.search.js';
19
+ import { registerServerResources } from './MCPServer.resources.js';
18
20
  import { createServerEventBus } from './EventBus.js';
19
21
  import { getAllManifests } from './registry/index.js';
20
22
  import { listExtensions as listExtensionsImpl, reloadExtensions as reloadExtensionsImpl, } from './extensions/ExtensionManager.js';
@@ -81,8 +83,8 @@ export class MCPServer {
81
83
  if (!depsEntries.some(([k]) => k === key)) {
82
84
  depsEntries.push([
83
85
  key,
84
- createDomainProxy(this, m.domain, `${m.domain}:${key}`, () => {
85
- m.ensure(this);
86
+ createDomainProxy(this, m.domain, `${m.domain}:${key}`, async () => {
87
+ await m.ensure(this);
86
88
  return this[key];
87
89
  }),
88
90
  ]);
@@ -101,6 +103,7 @@ export class MCPServer {
101
103
  return null;
102
104
  });
103
105
  this.server = new McpServer({ name: config.mcp.name, version: config.mcp.version }, { capabilities: { tools: { listChanged: true }, logging: {} } });
106
+ this.setDomainInstance('activationController', new ActivationController(this.eventBus, this));
104
107
  this.registerTools();
105
108
  }
106
109
  resolveEnabledDomains(tools) {
@@ -210,22 +213,46 @@ export class MCPServer {
210
213
  this.registerSingleTool(toolDef);
211
214
  }
212
215
  registerSearchMetaTools(this);
216
+ registerServerResources(this);
213
217
  logger.info(`Registered ${this.selectedTools.length} tools + meta tools with McpServer`);
214
218
  }
215
219
  }
216
220
  const DOMAIN_INSTANCE_KEYS = [
217
- 'collector', 'pageController', 'domInspector',
218
- 'scriptManager', 'debuggerManager', 'runtimeInspector',
219
- 'consoleMonitor', 'llm',
220
- 'browserHandlers', 'debuggerHandlers', 'advancedHandlers',
221
- 'aiHookHandlers', 'hookPresetHandlers',
222
- 'deobfuscator', 'advancedDeobfuscator', 'astOptimizer',
223
- 'obfuscationDetector', 'analyzer', 'cryptoDetector', 'hookManager',
224
- 'coreAnalysisHandlers', 'coreMaintenanceHandlers', 'extensionManagementHandlers',
225
- 'processHandlers', 'workflowHandlers', 'wasmHandlers',
226
- 'streamingHandlers', 'encodingHandlers', 'antidebugHandlers',
227
- 'graphqlHandlers', 'platformHandlers', 'sourcemapHandlers',
228
- 'transformHandlers', 'coordinationHandlers',
221
+ 'collector',
222
+ 'pageController',
223
+ 'domInspector',
224
+ 'scriptManager',
225
+ 'debuggerManager',
226
+ 'runtimeInspector',
227
+ 'consoleMonitor',
228
+ 'browserHandlers',
229
+ 'debuggerHandlers',
230
+ 'advancedHandlers',
231
+ 'aiHookHandlers',
232
+ 'hookPresetHandlers',
233
+ 'deobfuscator',
234
+ 'advancedDeobfuscator',
235
+ 'astOptimizer',
236
+ 'obfuscationDetector',
237
+ 'analyzer',
238
+ 'cryptoDetector',
239
+ 'hookManager',
240
+ 'coreAnalysisHandlers',
241
+ 'coreMaintenanceHandlers',
242
+ 'extensionManagementHandlers',
243
+ 'processHandlers',
244
+ 'workflowHandlers',
245
+ 'wasmHandlers',
246
+ 'streamingHandlers',
247
+ 'encodingHandlers',
248
+ 'antidebugHandlers',
249
+ 'graphqlHandlers',
250
+ 'platformHandlers',
251
+ 'sourcemapHandlers',
252
+ 'transformHandlers',
253
+ 'coordinationHandlers',
254
+ 'evidenceHandlers',
255
+ 'instrumentationHandlers',
229
256
  ];
230
257
  for (const key of DOMAIN_INSTANCE_KEYS) {
231
258
  if (key === 'domainInstanceMap' || key === 'getDomainInstance' || key === 'setDomainInstance')
@@ -0,0 +1,2 @@
1
+ import type { MCPServerContext } from './MCPServer.context.js';
2
+ export declare function registerServerResources(ctx: MCPServerContext): void;
@@ -0,0 +1,91 @@
1
+ import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ function asJsonResource(uri, payload) {
3
+ return {
4
+ contents: [
5
+ {
6
+ uri,
7
+ mimeType: 'application/json',
8
+ text: JSON.stringify(payload, null, 2),
9
+ },
10
+ ],
11
+ };
12
+ }
13
+ function asTextResource(uri, text, mimeType) {
14
+ return {
15
+ contents: [
16
+ {
17
+ uri,
18
+ mimeType,
19
+ text,
20
+ },
21
+ ],
22
+ };
23
+ }
24
+ function getEvidenceGraph(ctx) {
25
+ return ctx.getDomainInstance('evidenceGraph');
26
+ }
27
+ function getSessionManager(ctx) {
28
+ return ctx.getDomainInstance('instrumentationSessionManager');
29
+ }
30
+ export function registerServerResources(ctx) {
31
+ ctx.server.registerResource('evidence_graph_json', 'jshook://evidence/graph', {
32
+ title: 'Evidence Graph JSON',
33
+ description: 'Serializable snapshot of the current reverse evidence graph.',
34
+ mimeType: 'application/json',
35
+ }, async (uri) => {
36
+ const graph = getEvidenceGraph(ctx);
37
+ return asJsonResource(uri.toString(), graph
38
+ ? graph.exportJson()
39
+ : { version: 1, nodes: [], edges: [], exportedAt: new Date().toISOString() });
40
+ });
41
+ ctx.server.registerResource('evidence_graph_markdown', 'jshook://evidence/graph.md', {
42
+ title: 'Evidence Graph Markdown',
43
+ description: 'Markdown report for the current reverse evidence graph.',
44
+ mimeType: 'text/markdown',
45
+ }, async (uri) => {
46
+ const graph = getEvidenceGraph(ctx);
47
+ return asTextResource(uri.toString(), graph
48
+ ? graph.exportMarkdown()
49
+ : '# Reverse Evidence Graph Report\n\nNo evidence graph is available.\n', 'text/markdown');
50
+ });
51
+ ctx.server.registerResource('instrumentation_sessions', 'jshook://instrumentation/sessions', {
52
+ title: 'Instrumentation Sessions',
53
+ description: 'Expanded snapshots for all active instrumentation sessions.',
54
+ mimeType: 'application/json',
55
+ }, async (uri) => {
56
+ const manager = getSessionManager(ctx);
57
+ return asJsonResource(uri.toString(), manager ? manager.listSessionSnapshots() : []);
58
+ });
59
+ const sessionTemplate = new ResourceTemplate('jshook://instrumentation/session/{sessionId}', {
60
+ list: async () => {
61
+ const manager = getSessionManager(ctx);
62
+ return {
63
+ resources: (manager?.listSessions() ?? []).map((session) => ({
64
+ name: session.name || `Instrumentation Session ${session.id}`,
65
+ uri: `jshook://instrumentation/session/${session.id}`,
66
+ mimeType: 'application/json',
67
+ description: `operations=${session.operationCount}, artifacts=${session.artifactCount}, status=${session.status}`,
68
+ })),
69
+ };
70
+ },
71
+ complete: {
72
+ sessionId: async () => {
73
+ const manager = getSessionManager(ctx);
74
+ return (manager?.listSessions() ?? []).map((session) => session.id);
75
+ },
76
+ },
77
+ });
78
+ ctx.server.registerResource('instrumentation_session_snapshot', sessionTemplate, {
79
+ title: 'Instrumentation Session Snapshot',
80
+ description: 'Expanded snapshot for a single instrumentation session.',
81
+ mimeType: 'application/json',
82
+ }, async (uri, variables) => {
83
+ const sessionId = String(variables['sessionId'] ?? '');
84
+ const manager = getSessionManager(ctx);
85
+ const snapshot = manager?.getSessionSnapshot(sessionId);
86
+ return asJsonResource(uri.toString(), snapshot ?? {
87
+ success: false,
88
+ error: `Instrumentation session "${sessionId}" not found`,
89
+ });
90
+ });
91
+ }
@@ -76,7 +76,8 @@ export async function handleCallTool(ctx, args) {
76
76
  const engine = getSearchEngine(ctx);
77
77
  engine.recordToolCallFeedback(name, '');
78
78
  }
79
- catch { }
79
+ catch {
80
+ }
80
81
  return attachCallToolMetadata(response, callMetadata);
81
82
  }
82
83
  catch (error) {
@@ -65,7 +65,7 @@ export function buildDomainDescription(ctx) {
65
65
  }
66
66
  const totalTools = getAllRegistrations().length + ctx.extensionToolsByName.size;
67
67
  const parts = Object.entries(groups)
68
- .sort((a, b) => b[1] - a[1])
68
+ .toSorted((a, b) => b[1] - a[1])
69
69
  .map(([domain, count]) => `${domain} (${count})`)
70
70
  .join(' | ');
71
71
  return (`Search ${totalTools} tools across ${Object.keys(groups).length} capability domains. ` +
@@ -119,6 +119,18 @@ export async function closeServer(ctx) {
119
119
  }
120
120
  ctx.domainTtlEntries.clear();
121
121
  ctx.detailedData.shutdown();
122
+ const activationController = typeof ctx.getDomainInstance === 'function'
123
+ ? ctx.getDomainInstance('activationController')
124
+ : (ctx
125
+ .activationController ?? undefined);
126
+ if (activationController && typeof activationController.dispose === 'function') {
127
+ try {
128
+ activationController.dispose();
129
+ }
130
+ catch (error) {
131
+ logger.warn('activationController cleanup failed:', error);
132
+ }
133
+ }
122
134
  if (ctx.httpServer) {
123
135
  const httpServer = ctx.httpServer;
124
136
  const closePromise = new Promise((resolve) => httpServer.close(() => resolve()));
@@ -11,6 +11,11 @@ const CONTEXT_SENSITIVE_PREFIXES = [
11
11
  'js_heap_',
12
12
  'script_',
13
13
  'captcha_',
14
+ 'ai_hook_',
15
+ 'instrumentation_',
16
+ 'hook_preset_',
17
+ 'ws_',
18
+ 'evidence_',
14
19
  ];
15
20
  const MAX_CONSECUTIVE_REPEATS = 3;
16
21
  const REPEAT_GUARD_EXCLUDES = new Set([
@@ -28,6 +33,9 @@ const DOMAIN_ALTERNATIVES = new Map([
28
33
  ['console', ['page_evaluate', 'page_screenshot']],
29
34
  ['network', ['network_get_requests', 'page_navigate']],
30
35
  ['captcha', ['captcha_wait', 'page_screenshot']],
36
+ ['ai_hook', ['manage_hooks', 'page_evaluate', 'ai_hook_inject']],
37
+ ['instrumentation', ['instrumentation_session_list', 'instrumentation_artifact_query']],
38
+ ['evidence', ['evidence_query_url', 'evidence_chain']],
31
39
  ]);
32
40
  export class ToolCallContextGuard {
33
41
  getProvider;
@@ -1,6 +1,10 @@
1
1
  import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
- import type { MCPServerContext } from './MCPServer.context.js';
3
2
  import { type ToolSearchEngine } from './ToolSearch.js';
3
+ import type { WorkflowRule, RoutedWorkflowMatch } from './ToolRouter.intent.js';
4
+ import type { RoutingState } from './ToolRouter.probe.js';
5
+ export type { WorkflowRule, RoutedWorkflowMatch };
6
+ export type { RoutingState };
7
+ import type { WorkflowRouteMetadata } from './workflows/WorkflowContract.js';
4
8
  export interface RouterRequest {
5
9
  task: string;
6
10
  context?: {
@@ -34,15 +38,27 @@ export interface RouterResponse {
34
38
  description: string;
35
39
  }>;
36
40
  workflowHint?: string;
41
+ routeMatch?: {
42
+ kind: WorkflowRouteMetadata['kind'];
43
+ id: string;
44
+ name: string;
45
+ description: string;
46
+ confidence: number;
47
+ matchedPattern: string;
48
+ requiredDomains: string[];
49
+ steps: Array<{
50
+ id: string;
51
+ toolName: string;
52
+ domain: string | null;
53
+ description: string;
54
+ prerequisites: string[];
55
+ parallel?: boolean;
56
+ isActive: boolean;
57
+ }>;
58
+ };
37
59
  autoActivated?: boolean;
38
60
  activatedNames?: string[];
39
61
  callToolHint?: string;
40
62
  }
41
- export declare function routeToolRequest(request: RouterRequest, ctx: MCPServerContext, searchEngine: ToolSearchEngine): Promise<RouterResponse>;
42
- export declare function buildCallToolCommand(toolName: string, schema: Tool['inputSchema']): string;
43
- export declare function generateExampleArgs(schema: Tool['inputSchema']): Record<string, unknown>;
44
- export declare function describeTool(toolName: string, ctx: MCPServerContext): {
45
- name: string;
46
- description: string;
47
- inputSchema: Tool['inputSchema'];
48
- } | null;
63
+ export declare function routeToolRequest(request: RouterRequest, ctx: import('./MCPServer.context.js').MCPServerContext, searchEngine: ToolSearchEngine): Promise<RouterResponse>;
64
+ export { buildCallToolCommand, describeTool, generateExampleArgs, } from './ToolRouter.renderer.js';
@@ -0,0 +1,26 @@
1
+ import type { MCPServerContext } from './MCPServer.context.js';
2
+ import type { WorkflowRouteMetadata } from './workflows/WorkflowContract.js';
3
+ export interface WorkflowRule {
4
+ patterns: RegExp[];
5
+ domain: string;
6
+ priority: number;
7
+ tools: string[];
8
+ hint: string;
9
+ }
10
+ export interface RoutedWorkflowMatch {
11
+ workflow: {
12
+ id: string;
13
+ name: string;
14
+ description: string;
15
+ route: WorkflowRouteMetadata;
16
+ };
17
+ confidence: number;
18
+ matchedPattern: string;
19
+ }
20
+ export declare const BROWSER_OR_NETWORK_TASK_PATTERN: RegExp;
21
+ export declare const MAINTENANCE_TASK_PATTERN: RegExp;
22
+ export declare function getEffectiveWorkflowRules(): WorkflowRule[];
23
+ export declare function detectWorkflowIntent(query: string): WorkflowRule | null;
24
+ export declare function matchWorkflowRoute(query: string, ctx: MCPServerContext): RoutedWorkflowMatch | null;
25
+ export declare function isBrowserOrNetworkTask(task: string, workflow: WorkflowRule | null): boolean;
26
+ export declare function isMaintenanceTask(task: string): boolean;
@@ -0,0 +1,77 @@
1
+ import { getAllManifests } from './registry/index.js';
2
+ export const BROWSER_OR_NETWORK_TASK_PATTERN = /(browser|page|navigate|click|type|screenshot|scrape|network|request|response|api|traffic|hook|capture|intercept|monitor|浏览器|页面|导航|点击|输入|截图|爬取|网络|请求|响应|接口|流量|抓包|拦截|监控)/i;
3
+ export const MAINTENANCE_TASK_PATTERN = /(token budget|cache|artifact|extension|plugin|reload|doctor|cleanup|memory|profile|tool list|令牌预算|缓存|工件|扩展|插件|重载|环境诊断|清理|内存|配置)/i;
4
+ let _cachedWorkflowRules = null;
5
+ export function getEffectiveWorkflowRules() {
6
+ if (_cachedWorkflowRules)
7
+ return _cachedWorkflowRules;
8
+ const rules = [];
9
+ for (const m of getAllManifests()) {
10
+ if (m.workflowRule) {
11
+ rules.push({
12
+ patterns: [...m.workflowRule.patterns],
13
+ domain: m.domain,
14
+ priority: m.workflowRule.priority,
15
+ tools: [...m.workflowRule.tools],
16
+ hint: m.workflowRule.hint,
17
+ });
18
+ }
19
+ }
20
+ _cachedWorkflowRules = [...rules].toSorted((a, b) => b.priority - a.priority);
21
+ return _cachedWorkflowRules;
22
+ }
23
+ export function detectWorkflowIntent(query) {
24
+ const matches = [];
25
+ for (const rule of getEffectiveWorkflowRules()) {
26
+ for (const pattern of rule.patterns) {
27
+ if (pattern.test(query)) {
28
+ matches.push(rule);
29
+ break;
30
+ }
31
+ }
32
+ }
33
+ if (matches.length === 0)
34
+ return null;
35
+ matches.sort((a, b) => b.priority - a.priority);
36
+ return matches[0];
37
+ }
38
+ export function matchWorkflowRoute(query, ctx) {
39
+ let bestMatch = null;
40
+ for (const [workflowId, runtimeRecord] of ctx.extensionWorkflowRuntimeById.entries()) {
41
+ const route = runtimeRecord.route ?? runtimeRecord.workflow.route;
42
+ if (!route) {
43
+ continue;
44
+ }
45
+ const descriptor = ctx.extensionWorkflowsById.get(workflowId);
46
+ const name = descriptor?.displayName ?? runtimeRecord.workflow.displayName;
47
+ const description = descriptor?.description ?? runtimeRecord.workflow.description ?? 'Workflow route';
48
+ for (const pattern of route.triggerPatterns) {
49
+ if (!pattern.test(query)) {
50
+ continue;
51
+ }
52
+ const confidence = route.priority / 100;
53
+ if (!bestMatch || confidence > bestMatch.confidence) {
54
+ bestMatch = {
55
+ workflow: {
56
+ id: workflowId,
57
+ name,
58
+ description,
59
+ route,
60
+ },
61
+ confidence,
62
+ matchedPattern: pattern.source,
63
+ };
64
+ }
65
+ break;
66
+ }
67
+ }
68
+ return bestMatch;
69
+ }
70
+ export function isBrowserOrNetworkTask(task, workflow) {
71
+ return (workflow?.domain === 'browser' ||
72
+ workflow?.domain === 'network' ||
73
+ BROWSER_OR_NETWORK_TASK_PATTERN.test(task));
74
+ }
75
+ export function isMaintenanceTask(task) {
76
+ return MAINTENANCE_TASK_PATTERN.test(task);
77
+ }