@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
@@ -22,10 +22,9 @@ const manifest = {
22
22
  domain: DOMAIN,
23
23
  depKey: DEP_KEY,
24
24
  secondaryDepKeys: ['hookPresetHandlers'],
25
- profiles: ['full'],
25
+ profiles: ['workflow', 'full'],
26
26
  ensure,
27
27
  registrations: [
28
- { tool: t('ai_hook_generate'), domain: DOMAIN, bind: b((h, a) => h.handleAIHookGenerate(a)) },
29
28
  { tool: t('ai_hook_inject'), domain: DOMAIN, bind: b((h, a) => h.handleAIHookInject(a)) },
30
29
  { tool: t('ai_hook_get_data'), domain: DOMAIN, bind: b((h, a) => h.handleAIHookGetData(a)) },
31
30
  { tool: t('ai_hook_list'), domain: DOMAIN, bind: b((h, a) => h.handleAIHookList(a)) },
@@ -0,0 +1,2 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ export declare const instrumentationTools: Tool[];
@@ -0,0 +1,99 @@
1
+ import { tool } from '../../registry/tool-builder.js';
2
+ const queryTypes = [
3
+ 'before-load-inject',
4
+ 'runtime-hook',
5
+ 'network-intercept',
6
+ 'function-trace',
7
+ ];
8
+ export const instrumentationTools = [
9
+ tool('instrumentation_session_create')
10
+ .desc('Create a new instrumentation session that groups hooks, intercepts, and traces into a single queryable container.\n\nAll subsequent instrumentation operations can be associated with this session for unified management and artifact export.')
11
+ .string('name', 'Optional human-readable name for the session')
12
+ .build(),
13
+ tool('instrumentation_session_list')
14
+ .desc('List all active instrumentation sessions with their operation and artifact counts.')
15
+ .readOnly()
16
+ .idempotent()
17
+ .build(),
18
+ tool('instrumentation_session_destroy')
19
+ .desc('Destroy an instrumentation session, marking all its operations as completed. Session data is retained for querying but no new operations can be added.')
20
+ .string('sessionId', 'Session ID returned by instrumentation_session_create')
21
+ .required('sessionId')
22
+ .destructive()
23
+ .idempotent()
24
+ .build(),
25
+ tool('instrumentation_session_status')
26
+ .desc('Get detailed status for an instrumentation session including operation count, artifact count, and active/destroyed state.')
27
+ .string('sessionId', 'Session ID')
28
+ .required('sessionId')
29
+ .readOnly()
30
+ .idempotent()
31
+ .build(),
32
+ tool('instrumentation_operation_register')
33
+ .desc('Register a new instrumentation operation within a session so hooks, intercepts, and traces become queryable evidence-producing work items.')
34
+ .string('sessionId', 'Session ID returned by instrumentation_session_create')
35
+ .enum('type', queryTypes, 'Instrumentation type to register')
36
+ .string('target', 'Function name, URL pattern, or script target for the operation')
37
+ .object('config', {}, 'Operation-specific configuration payload')
38
+ .required('sessionId', 'type', 'target')
39
+ .build(),
40
+ tool('instrumentation_operation_list')
41
+ .desc('List all operations (hooks, intercepts, traces) registered within a session, optionally filtered by type.')
42
+ .string('sessionId', 'Session ID')
43
+ .enum('type', queryTypes, 'Optional filter by instrumentation type')
44
+ .required('sessionId')
45
+ .readOnly()
46
+ .idempotent()
47
+ .build(),
48
+ tool('instrumentation_artifact_record')
49
+ .desc('Record a captured artifact for an instrumentation operation so the session and evidence graph reflect observed runtime data.')
50
+ .string('operationId', 'Operation ID returned by instrumentation_operation_register')
51
+ .object('data', {}, 'Captured artifact payload such as args, returnValue, headers, or body')
52
+ .required('operationId', 'data')
53
+ .build(),
54
+ tool('instrumentation_artifact_query')
55
+ .desc('Query captured artifacts (args, return values, intercepted requests, trace data) from a session, optionally filtered by type and limited.')
56
+ .string('sessionId', 'Session ID')
57
+ .enum('type', queryTypes, 'Optional filter by artifact type')
58
+ .number('limit', 'Maximum number of artifacts to return', { default: 50 })
59
+ .required('sessionId')
60
+ .readOnly()
61
+ .idempotent()
62
+ .build(),
63
+ tool('instrumentation_hook_preset')
64
+ .desc('Apply hooks domain preset hooks within an instrumentation session and persist the injected preset summary as session artifacts.')
65
+ .string('sessionId', 'Session ID returned by instrumentation_session_create')
66
+ .string('preset', 'Single preset id to inject')
67
+ .array('presets', { type: 'string' }, 'Multiple preset ids to inject in one call')
68
+ .boolean('captureStack', 'Whether injected presets should capture stack traces', {
69
+ default: false,
70
+ })
71
+ .boolean('logToConsole', 'Whether injected presets should log to console', { default: true })
72
+ .enum('method', ['evaluate', 'evaluateOnNewDocument'], 'Injection method forwarded to hook_preset', { default: 'evaluate' })
73
+ .prop('customTemplate', {
74
+ type: 'object',
75
+ additionalProperties: true,
76
+ description: 'Optional inline custom preset definition',
77
+ })
78
+ .prop('customTemplates', {
79
+ type: 'array',
80
+ items: { type: 'object', additionalProperties: true },
81
+ description: 'Optional inline custom preset definitions',
82
+ })
83
+ .required('sessionId')
84
+ .openWorld()
85
+ .build(),
86
+ tool('instrumentation_network_replay')
87
+ .desc('Replay a previously captured network request inside an instrumentation session and persist the replay result or dry-run preview as session artifacts.')
88
+ .string('sessionId', 'Session ID returned by instrumentation_session_create')
89
+ .string('requestId', 'Captured request ID returned by network_get_requests')
90
+ .object('headerPatch', { additionalProperties: { type: 'string' } }, 'Optional request header overrides')
91
+ .string('bodyPatch', 'Optional raw request body override')
92
+ .string('methodOverride', 'Optional HTTP method override')
93
+ .string('urlOverride', 'Optional destination URL override')
94
+ .number('timeoutMs', 'Optional replay timeout in milliseconds')
95
+ .boolean('dryRun', 'Preview the replay without sending the request', { default: true })
96
+ .required('sessionId', 'requestId')
97
+ .openWorld()
98
+ .build(),
99
+ ];
@@ -0,0 +1,78 @@
1
+ import type { InstrumentationSessionManager } from '../../instrumentation/InstrumentationSession.js';
2
+ import type { ToolResponse } from '../../types.js';
3
+ interface HookPresetHandlerLike {
4
+ handleHookPreset(args: Record<string, unknown>): Promise<ToolResponse>;
5
+ }
6
+ interface NetworkReplayHandlerLike {
7
+ handleNetworkReplayRequest(args: Record<string, unknown>): Promise<ToolResponse>;
8
+ }
9
+ interface InstrumentationHandlerDeps {
10
+ hookPresetHandlers?: HookPresetHandlerLike;
11
+ advancedHandlers?: NetworkReplayHandlerLike;
12
+ }
13
+ export declare class InstrumentationHandlers {
14
+ private readonly sessionManager;
15
+ private readonly deps;
16
+ constructor(sessionManager: InstrumentationSessionManager, deps?: InstrumentationHandlerDeps);
17
+ handleSessionCreate(args: Record<string, unknown>): Promise<{
18
+ content: {
19
+ type: "text";
20
+ text: string;
21
+ }[];
22
+ }>;
23
+ handleSessionList(_args: Record<string, unknown>): Promise<{
24
+ content: {
25
+ type: "text";
26
+ text: string;
27
+ }[];
28
+ }>;
29
+ handleSessionDestroy(args: Record<string, unknown>): Promise<{
30
+ content: {
31
+ type: "text";
32
+ text: string;
33
+ }[];
34
+ }>;
35
+ handleSessionStatus(args: Record<string, unknown>): Promise<{
36
+ content: {
37
+ type: "text";
38
+ text: string;
39
+ }[];
40
+ }>;
41
+ handleOperationList(args: Record<string, unknown>): Promise<{
42
+ content: {
43
+ type: "text";
44
+ text: string;
45
+ }[];
46
+ }>;
47
+ handleOperationRegister(args: Record<string, unknown>): Promise<{
48
+ content: {
49
+ type: "text";
50
+ text: string;
51
+ }[];
52
+ }>;
53
+ handleArtifactQuery(args: Record<string, unknown>): Promise<{
54
+ content: {
55
+ type: "text";
56
+ text: string;
57
+ }[];
58
+ }>;
59
+ handleArtifactRecord(args: Record<string, unknown>): Promise<{
60
+ content: {
61
+ type: "text";
62
+ text: string;
63
+ }[];
64
+ }>;
65
+ handleHookPreset(args: Record<string, unknown>): Promise<{
66
+ content: {
67
+ type: "text";
68
+ text: string;
69
+ }[];
70
+ }>;
71
+ handleNetworkReplay(args: Record<string, unknown>): Promise<{
72
+ content: {
73
+ type: "text";
74
+ text: string;
75
+ }[];
76
+ }>;
77
+ }
78
+ export {};
@@ -0,0 +1,206 @@
1
+ import { InstrumentationType } from '../../instrumentation/types.js';
2
+ import { argString } from '../../domains/shared/parse-args.js';
3
+ function jsonResponse(data) {
4
+ return {
5
+ content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
6
+ };
7
+ }
8
+ export class InstrumentationHandlers {
9
+ sessionManager;
10
+ deps;
11
+ constructor(sessionManager, deps = {}) {
12
+ this.sessionManager = sessionManager;
13
+ this.deps = deps;
14
+ }
15
+ async handleSessionCreate(args) {
16
+ try {
17
+ const name = argString(args, 'name');
18
+ const session = this.sessionManager.createSession(name || undefined);
19
+ return jsonResponse({ success: true, session });
20
+ }
21
+ catch (error) {
22
+ return jsonResponse({
23
+ success: false,
24
+ error: error instanceof Error ? error.message : String(error),
25
+ });
26
+ }
27
+ }
28
+ async handleSessionList(_args) {
29
+ try {
30
+ const sessions = this.sessionManager.listSessions();
31
+ return jsonResponse({ success: true, totalSessions: sessions.length, sessions });
32
+ }
33
+ catch (error) {
34
+ return jsonResponse({
35
+ success: false,
36
+ error: error instanceof Error ? error.message : String(error),
37
+ });
38
+ }
39
+ }
40
+ async handleSessionDestroy(args) {
41
+ try {
42
+ const sessionId = argString(args, 'sessionId', '');
43
+ if (!sessionId)
44
+ return jsonResponse({ success: false, error: 'sessionId is required' });
45
+ this.sessionManager.destroySession(sessionId);
46
+ return jsonResponse({ success: true, sessionId, message: 'Session destroyed' });
47
+ }
48
+ catch (error) {
49
+ return jsonResponse({
50
+ success: false,
51
+ error: error instanceof Error ? error.message : String(error),
52
+ });
53
+ }
54
+ }
55
+ async handleSessionStatus(args) {
56
+ try {
57
+ const sessionId = argString(args, 'sessionId', '');
58
+ if (!sessionId)
59
+ return jsonResponse({ success: false, error: 'sessionId is required' });
60
+ const session = this.sessionManager.getSession(sessionId);
61
+ if (!session)
62
+ return jsonResponse({ success: false, error: `Session "${sessionId}" not found` });
63
+ const stats = this.sessionManager.getSessionStats(sessionId);
64
+ return jsonResponse({ success: true, session, stats });
65
+ }
66
+ catch (error) {
67
+ return jsonResponse({
68
+ success: false,
69
+ error: error instanceof Error ? error.message : String(error),
70
+ });
71
+ }
72
+ }
73
+ async handleOperationList(args) {
74
+ try {
75
+ const sessionId = argString(args, 'sessionId', '');
76
+ if (!sessionId)
77
+ return jsonResponse({ success: false, error: 'sessionId is required' });
78
+ let ops = this.sessionManager.getSessionOperations(sessionId);
79
+ const typeFilter = argString(args, 'type');
80
+ if (typeFilter) {
81
+ ops = ops.filter((o) => o.type === typeFilter);
82
+ }
83
+ return jsonResponse({ success: true, totalOperations: ops.length, operations: ops });
84
+ }
85
+ catch (error) {
86
+ return jsonResponse({
87
+ success: false,
88
+ error: error instanceof Error ? error.message : String(error),
89
+ });
90
+ }
91
+ }
92
+ async handleOperationRegister(args) {
93
+ try {
94
+ const sessionId = argString(args, 'sessionId', '');
95
+ const type = argString(args, 'type', '');
96
+ const target = argString(args, 'target', '');
97
+ const config = args.config && typeof args.config === 'object' && !Array.isArray(args.config)
98
+ ? args.config
99
+ : {};
100
+ if (!sessionId)
101
+ return jsonResponse({ success: false, error: 'sessionId is required' });
102
+ if (!type)
103
+ return jsonResponse({ success: false, error: 'type is required' });
104
+ if (!target)
105
+ return jsonResponse({ success: false, error: 'target is required' });
106
+ const operation = this.sessionManager.registerOperation(sessionId, type, target, config);
107
+ return jsonResponse({ success: true, operation });
108
+ }
109
+ catch (error) {
110
+ return jsonResponse({
111
+ success: false,
112
+ error: error instanceof Error ? error.message : String(error),
113
+ });
114
+ }
115
+ }
116
+ async handleArtifactQuery(args) {
117
+ try {
118
+ const sessionId = argString(args, 'sessionId', '');
119
+ if (!sessionId)
120
+ return jsonResponse({ success: false, error: 'sessionId is required' });
121
+ const typeRaw = argString(args, 'type');
122
+ const type = typeRaw ? typeRaw : undefined;
123
+ const limit = typeof args.limit === 'number' ? args.limit : 50;
124
+ let artifacts = this.sessionManager.getArtifacts(sessionId, type);
125
+ if (limit > 0)
126
+ artifacts = artifacts.slice(0, limit);
127
+ return jsonResponse({ success: true, totalArtifacts: artifacts.length, artifacts });
128
+ }
129
+ catch (error) {
130
+ return jsonResponse({
131
+ success: false,
132
+ error: error instanceof Error ? error.message : String(error),
133
+ });
134
+ }
135
+ }
136
+ async handleArtifactRecord(args) {
137
+ try {
138
+ const operationId = argString(args, 'operationId', '');
139
+ const data = args.data && typeof args.data === 'object' && !Array.isArray(args.data)
140
+ ? args.data
141
+ : undefined;
142
+ if (!operationId)
143
+ return jsonResponse({ success: false, error: 'operationId is required' });
144
+ if (!data)
145
+ return jsonResponse({ success: false, error: 'data is required' });
146
+ const artifact = this.sessionManager.recordArtifact(operationId, data);
147
+ return jsonResponse({ success: true, artifact });
148
+ }
149
+ catch (error) {
150
+ return jsonResponse({
151
+ success: false,
152
+ error: error instanceof Error ? error.message : String(error),
153
+ });
154
+ }
155
+ }
156
+ async handleHookPreset(args) {
157
+ try {
158
+ const sessionId = argString(args, 'sessionId', '');
159
+ if (!sessionId)
160
+ return jsonResponse({ success: false, error: 'sessionId is required' });
161
+ if (!this.deps.hookPresetHandlers) {
162
+ return jsonResponse({ success: false, error: 'hookPresetHandlers is not available' });
163
+ }
164
+ const delegatedArgs = { ...args };
165
+ delete delegatedArgs['sessionId'];
166
+ const result = await this.sessionManager.applyHookPreset(sessionId, this.deps.hookPresetHandlers, delegatedArgs);
167
+ return jsonResponse({
168
+ success: result.payload.success !== false && result.operation.status === 'completed',
169
+ operation: result.operation,
170
+ artifacts: result.artifacts,
171
+ result: result.payload,
172
+ });
173
+ }
174
+ catch (error) {
175
+ return jsonResponse({
176
+ success: false,
177
+ error: error instanceof Error ? error.message : String(error),
178
+ });
179
+ }
180
+ }
181
+ async handleNetworkReplay(args) {
182
+ try {
183
+ const sessionId = argString(args, 'sessionId', '');
184
+ if (!sessionId)
185
+ return jsonResponse({ success: false, error: 'sessionId is required' });
186
+ if (!this.deps.advancedHandlers) {
187
+ return jsonResponse({ success: false, error: 'advancedHandlers is not available' });
188
+ }
189
+ const delegatedArgs = { ...args };
190
+ delete delegatedArgs['sessionId'];
191
+ const result = await this.sessionManager.replayNetworkRequest(sessionId, this.deps.advancedHandlers, delegatedArgs);
192
+ return jsonResponse({
193
+ success: result.payload.success !== false && result.operation.status === 'completed',
194
+ operation: result.operation,
195
+ artifacts: result.artifacts,
196
+ result: result.payload,
197
+ });
198
+ }
199
+ catch (error) {
200
+ return jsonResponse({
201
+ success: false,
202
+ error: error instanceof Error ? error.message : String(error),
203
+ });
204
+ }
205
+ }
206
+ }
@@ -0,0 +1,2 @@
1
+ export { InstrumentationHandlers } from './handlers.js';
2
+ export { instrumentationTools } from './definitions.js';
@@ -0,0 +1,2 @@
1
+ export { InstrumentationHandlers } from './handlers.js';
2
+ export { instrumentationTools } from './definitions.js';
@@ -0,0 +1,63 @@
1
+ import type { MCPServerContext } from '../../domains/shared/registry.js';
2
+ import { InstrumentationHandlers } from '../../domains/instrumentation/handlers.js';
3
+ type H = InstrumentationHandlers;
4
+ declare function ensure(ctx: MCPServerContext): H;
5
+ declare const manifest: {
6
+ kind: "domain-manifest";
7
+ version: 1;
8
+ domain: "instrumentation";
9
+ depKey: "instrumentationHandlers";
10
+ profiles: ("workflow" | "full")[];
11
+ ensure: typeof ensure;
12
+ workflowRule: {
13
+ patterns: RegExp[];
14
+ priority: number;
15
+ tools: string[];
16
+ hint: string;
17
+ };
18
+ registrations: {
19
+ tool: {
20
+ inputSchema: {
21
+ [x: string]: unknown;
22
+ type: "object";
23
+ properties?: {
24
+ [x: string]: object;
25
+ } | undefined;
26
+ required?: string[] | undefined;
27
+ };
28
+ name: string;
29
+ description?: string | undefined;
30
+ outputSchema?: {
31
+ [x: string]: unknown;
32
+ type: "object";
33
+ properties?: {
34
+ [x: string]: object;
35
+ } | undefined;
36
+ required?: string[] | undefined;
37
+ } | undefined;
38
+ annotations?: {
39
+ title?: string | undefined;
40
+ readOnlyHint?: boolean | undefined;
41
+ destructiveHint?: boolean | undefined;
42
+ idempotentHint?: boolean | undefined;
43
+ openWorldHint?: boolean | undefined;
44
+ } | undefined;
45
+ execution?: {
46
+ taskSupport?: "optional" | "required" | "forbidden" | undefined;
47
+ } | undefined;
48
+ _meta?: {
49
+ [x: string]: unknown;
50
+ } | undefined;
51
+ icons?: {
52
+ src: string;
53
+ mimeType?: string | undefined;
54
+ sizes?: string[] | undefined;
55
+ theme?: "light" | "dark" | undefined;
56
+ }[] | undefined;
57
+ title?: string | undefined;
58
+ };
59
+ domain: "instrumentation";
60
+ bind: (deps: import("../../domains/shared/registry.js").ToolHandlerDeps) => (args: import("../../types.js").ToolArgs) => Promise<unknown>;
61
+ }[];
62
+ };
63
+ export default manifest;
@@ -0,0 +1,114 @@
1
+ import { bindByDepKey, toolLookup } from '../../domains/shared/registry.js';
2
+ import { instrumentationTools } from '../../domains/instrumentation/definitions.js';
3
+ import { InstrumentationHandlers } from '../../domains/instrumentation/handlers.js';
4
+ import { InstrumentationSessionManager } from '../../instrumentation/InstrumentationSession.js';
5
+ import { EvidenceGraphBridge } from '../../instrumentation/EvidenceGraphBridge.js';
6
+ import { ReverseEvidenceGraph } from '../../evidence/ReverseEvidenceGraph.js';
7
+ const DOMAIN = 'instrumentation';
8
+ const DEP_KEY = 'instrumentationHandlers';
9
+ const t = toolLookup(instrumentationTools);
10
+ const b = (invoke) => bindByDepKey(DEP_KEY, invoke);
11
+ function ensure(ctx) {
12
+ const hookPresetHandlers = ctx.handlerDeps.hookPresetHandlers;
13
+ const advancedHandlers = ctx.handlerDeps.advancedHandlers;
14
+ let graph = ctx.getDomainInstance('evidenceGraph');
15
+ if (!graph) {
16
+ graph = new ReverseEvidenceGraph();
17
+ ctx.setDomainInstance('evidenceGraph', graph);
18
+ }
19
+ let sessionManager = ctx.getDomainInstance('instrumentationSessionManager');
20
+ if (!sessionManager) {
21
+ sessionManager = new InstrumentationSessionManager();
22
+ ctx.setDomainInstance('instrumentationSessionManager', sessionManager);
23
+ }
24
+ let bridge = ctx.getDomainInstance('evidenceGraphBridge');
25
+ if (!bridge) {
26
+ bridge = new EvidenceGraphBridge(graph);
27
+ ctx.setDomainInstance('evidenceGraphBridge', bridge);
28
+ }
29
+ sessionManager.setEvidenceBridge(bridge);
30
+ if (!ctx.instrumentationHandlers) {
31
+ ctx.instrumentationHandlers = new InstrumentationHandlers(sessionManager, {
32
+ hookPresetHandlers: hookPresetHandlers,
33
+ advancedHandlers: advancedHandlers,
34
+ });
35
+ }
36
+ return ctx.instrumentationHandlers;
37
+ }
38
+ const manifest = {
39
+ kind: 'domain-manifest',
40
+ version: 1,
41
+ domain: DOMAIN,
42
+ depKey: DEP_KEY,
43
+ profiles: ['workflow', 'full'],
44
+ ensure,
45
+ workflowRule: {
46
+ patterns: [
47
+ /(hook|intercept|trace|instrument).*(session|unified|manage|all)/i,
48
+ /(session|统一|会话).*(hook|拦截|追踪|仪器化|instrument)/i,
49
+ ],
50
+ priority: 95,
51
+ tools: [
52
+ 'instrumentation_session_create',
53
+ 'instrumentation_operation_register',
54
+ 'instrumentation_artifact_record',
55
+ 'instrumentation_artifact_query',
56
+ 'instrumentation_hook_preset',
57
+ 'instrumentation_network_replay',
58
+ ],
59
+ hint: 'Instrumentation session: create session → attach hook presets / network replay → record artifacts → query artifacts → destroy when done',
60
+ },
61
+ registrations: [
62
+ {
63
+ tool: t('instrumentation_session_create'),
64
+ domain: DOMAIN,
65
+ bind: b((h, a) => h.handleSessionCreate(a)),
66
+ },
67
+ {
68
+ tool: t('instrumentation_session_list'),
69
+ domain: DOMAIN,
70
+ bind: b((h, a) => h.handleSessionList(a)),
71
+ },
72
+ {
73
+ tool: t('instrumentation_session_destroy'),
74
+ domain: DOMAIN,
75
+ bind: b((h, a) => h.handleSessionDestroy(a)),
76
+ },
77
+ {
78
+ tool: t('instrumentation_session_status'),
79
+ domain: DOMAIN,
80
+ bind: b((h, a) => h.handleSessionStatus(a)),
81
+ },
82
+ {
83
+ tool: t('instrumentation_operation_register'),
84
+ domain: DOMAIN,
85
+ bind: b((h, a) => h.handleOperationRegister(a)),
86
+ },
87
+ {
88
+ tool: t('instrumentation_operation_list'),
89
+ domain: DOMAIN,
90
+ bind: b((h, a) => h.handleOperationList(a)),
91
+ },
92
+ {
93
+ tool: t('instrumentation_artifact_record'),
94
+ domain: DOMAIN,
95
+ bind: b((h, a) => h.handleArtifactRecord(a)),
96
+ },
97
+ {
98
+ tool: t('instrumentation_artifact_query'),
99
+ domain: DOMAIN,
100
+ bind: b((h, a) => h.handleArtifactQuery(a)),
101
+ },
102
+ {
103
+ tool: t('instrumentation_hook_preset'),
104
+ domain: DOMAIN,
105
+ bind: b((h, a) => h.handleHookPreset(a)),
106
+ },
107
+ {
108
+ tool: t('instrumentation_network_replay'),
109
+ domain: DOMAIN,
110
+ bind: b((h, a) => h.handleNetworkReplay(a)),
111
+ },
112
+ ],
113
+ };
114
+ export default manifest;
@@ -1,45 +1,18 @@
1
+ import { tool } from '../../registry/tool-builder.js';
1
2
  export const macroTools = [
2
- {
3
- name: 'run_macro',
4
- description: 'Execute a registered macro by ID. Macros chain multiple MCP tools in sequence with inline progress reporting and atomic bailout.\n\nBuilt-in macros:\n- `deobfuscate_ast_flow` — deobfuscate → advanced deobfuscation → extract function tree\n- `unpacker_flow` — detect packer → extract → deobfuscate → beautify\n\nUser-defined macros are loaded from JSON files in `macros/` directory.\n\nUse `list_macros` to see all available macros.',
5
- inputSchema: {
6
- type: 'object',
7
- properties: {
8
- macroId: {
9
- type: 'string',
10
- description: 'ID of the macro to execute (e.g., "deobfuscate_ast_flow")',
11
- },
12
- inputOverrides: {
13
- type: 'object',
14
- description: 'Optional per-step input overrides keyed by step ID (e.g., { "deobfuscate": { "code": "..." } })',
15
- additionalProperties: {
16
- type: 'object',
17
- additionalProperties: true,
18
- },
19
- },
20
- },
21
- required: ['macroId'],
22
- },
23
- annotations: {
24
- readOnlyHint: false,
25
- destructiveHint: false,
26
- idempotentHint: false,
27
- openWorldHint: false,
28
- },
29
- },
30
- {
31
- name: 'list_macros',
32
- description: 'List all available macros (built-in + user-defined from macros/ directory).',
33
- inputSchema: {
34
- type: 'object',
35
- properties: {},
36
- additionalProperties: false,
37
- },
38
- annotations: {
39
- readOnlyHint: true,
40
- destructiveHint: false,
41
- idempotentHint: true,
42
- openWorldHint: false,
43
- },
44
- },
3
+ tool('run_macro')
4
+ .desc('Execute a registered macro by ID with inline progress and atomic bailout')
5
+ .string('macroId', 'Macro ID to execute')
6
+ .prop('inputOverrides', {
7
+ type: 'object',
8
+ description: 'Per-step input overrides keyed by step ID',
9
+ additionalProperties: { type: 'object', additionalProperties: true },
10
+ })
11
+ .required('macroId')
12
+ .build(),
13
+ tool('list_macros')
14
+ .desc('List all available macros (built-in + user-defined)')
15
+ .readOnly()
16
+ .idempotent()
17
+ .build(),
45
18
  ];