@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.
- package/README.md +14 -5
- package/README.zh.md +18 -3
- package/dist/packages/extension-sdk/src/bridges/shared.js +2 -2
- package/dist/packages/extension-sdk/src/plugin.d.ts +5 -0
- package/dist/packages/extension-sdk/src/plugin.js +119 -33
- package/dist/packages/extension-sdk/src/workflow.d.ts +156 -0
- package/dist/packages/extension-sdk/src/workflow.js +236 -0
- package/dist/src/config/search-defaults.js +161 -0
- package/dist/src/constants.d.ts +3 -0
- package/dist/src/constants.js +4 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +13 -17
- package/dist/src/modules/analyzer/CodeAnalyzer.d.ts +1 -3
- package/dist/src/modules/analyzer/CodeAnalyzer.js +16 -28
- package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.d.ts +1 -2
- package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.js +1 -45
- package/dist/src/modules/analyzer/IntelligentAnalyzer.d.ts +1 -37
- package/dist/src/modules/analyzer/IntelligentAnalyzer.js +9 -142
- package/dist/src/modules/analyzer/PatternDetector.js +3 -3
- package/dist/src/modules/analyzer/PatternDetectorAuthPatterns.js +1 -1
- package/dist/src/modules/browser/BrowserDiscovery.js +2 -2
- package/dist/src/modules/browser/BrowserModeManager.js +11 -10
- package/dist/src/modules/browser/TabRegistry.js +2 -2
- package/dist/src/modules/browser/UnifiedBrowserManager.d.ts +1 -0
- package/dist/src/modules/browser/UnifiedBrowserManager.js +18 -3
- package/dist/src/modules/captcha/AICaptchaDetector.d.ts +1 -10
- package/dist/src/modules/captcha/AICaptchaDetector.js +7 -201
- package/dist/src/modules/collector/CodeCollector.js +4 -5
- package/dist/src/modules/collector/DOMInspector.js +48 -58
- package/dist/src/modules/collector/PageController.d.ts +17 -4
- package/dist/src/modules/collector/PageController.js +2 -5
- package/dist/src/modules/collector/PageScriptCollectors.js +3 -3
- package/dist/src/modules/crypto/CryptoDetector.d.ts +1 -4
- package/dist/src/modules/crypto/CryptoDetector.js +2 -42
- package/dist/src/modules/crypto/CryptoRules.js +1 -1
- package/dist/src/modules/debugger/BlackboxManager.js +1 -1
- package/dist/src/modules/debugger/DebuggerManager.impl.core.scope.js +1 -1
- package/dist/src/modules/debugger/ScriptManager.impl.extract-function-tree.js +4 -2
- package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
- package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
- package/dist/src/modules/deobfuscator/Deobfuscator.js +4 -39
- package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.d.ts +0 -3
- package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.js +2 -8
- package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.d.ts +1 -2
- package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +3 -55
- package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
- package/dist/src/modules/deobfuscator/VMDeobfuscator.d.ts +2 -10
- package/dist/src/modules/deobfuscator/VMDeobfuscator.js +3 -128
- package/dist/src/modules/deobfuscator/webcrack.js +15 -2
- package/dist/src/modules/emulator/AIEnvironmentAnalyzer.d.ts +5 -8
- package/dist/src/modules/emulator/AIEnvironmentAnalyzer.js +10 -102
- package/dist/src/modules/emulator/EnvironmentEmulator.d.ts +1 -5
- package/dist/src/modules/emulator/EnvironmentEmulator.js +7 -91
- package/dist/src/modules/emulator/EnvironmentEmulatorFetch.js +58 -61
- package/dist/src/modules/emulator/templates/chrome-env.d.ts +17 -7
- package/dist/src/modules/emulator/templates/chrome-env.js +14 -7
- package/dist/src/modules/external/ExternalToolRunner.js +25 -22
- package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.compose.js +5 -5
- package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.network.js +311 -311
- package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.runtime.js +410 -410
- package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.storage.js +122 -122
- package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.d.ts +13 -0
- package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.js +42 -0
- package/dist/src/modules/monitor/ConsoleMonitor.impl.core.dynamic.js +194 -194
- package/dist/src/modules/monitor/FetchInterceptor.d.ts +46 -0
- package/dist/src/modules/monitor/FetchInterceptor.js +191 -0
- package/dist/src/modules/monitor/PerformanceMonitor.js +8 -7
- package/dist/src/modules/monitor/PlaywrightNetworkMonitor.js +62 -62
- package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
- package/dist/src/modules/process/LinuxProcessManager.js +2 -0
- package/dist/src/modules/process/MacProcessManager.js +25 -25
- package/dist/src/modules/process/MemoryManager.d.ts +1 -1
- package/dist/src/modules/process/MemoryManager.js +2 -2
- package/dist/src/modules/process/memory/AuditTrail.js +1 -1
- package/dist/src/modules/process/memory/availability.js +49 -49
- package/dist/src/modules/process/memory/injector.js +185 -185
- package/dist/src/modules/process/memory/reader.js +85 -53
- package/dist/src/modules/process/memory/regions.dump.js +51 -51
- package/dist/src/modules/process/memory/regions.enumerate.js +108 -108
- package/dist/src/modules/process/memory/regions.modules.js +80 -80
- package/dist/src/modules/process/memory/regions.protection.js +148 -115
- package/dist/src/modules/process/memory/scanner.d.ts +5 -1
- package/dist/src/modules/process/memory/scanner.darwin.js +98 -41
- package/dist/src/modules/process/memory/scanner.js +88 -4
- package/dist/src/modules/process/memory/scanner.windows.js +124 -124
- package/dist/src/modules/process/memory/writer.js +98 -58
- package/dist/src/modules/security/ExecutionSandbox.js +51 -52
- package/dist/src/modules/stealth/FingerprintManager.js +1 -1
- package/dist/src/modules/stealth/StealthScripts.d.ts +1 -0
- package/dist/src/modules/stealth/StealthScripts.js +18 -13
- package/dist/src/modules/stealth/StealthVerifier.js +1 -3
- package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.d.ts +14 -0
- package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.js +181 -2
- package/dist/src/modules/trace/TraceDB.js +75 -69
- package/dist/src/modules/trace/TraceRecorder.js +1 -5
- package/dist/src/native/AntiCheatDetector.js +67 -16
- package/dist/src/native/CodeInjector.js +3 -3
- package/dist/src/native/HardwareBreakpoint.js +24 -15
- package/dist/src/native/HeapAnalyzer.js +2 -2
- package/dist/src/native/MemoryController.js +1 -1
- package/dist/src/native/MemoryScanSession.js +2 -2
- package/dist/src/native/MemoryScanner.js +4 -8
- package/dist/src/native/NativeMemoryManager.impl.js +2 -2
- package/dist/src/native/PEAnalyzer.js +14 -15
- package/dist/src/native/PointerChainEngine.js +2 -4
- package/dist/src/native/ScriptLoader.js +4 -9
- package/dist/src/native/Speedhack.js +1 -1
- package/dist/src/native/StructureAnalyzer.js +52 -33
- package/dist/src/native/Win32API.d.ts +1 -0
- package/dist/src/native/Win32API.js +13 -0
- package/dist/src/native/Win32Debug.js +19 -19
- package/dist/src/native/platform/darwin/DarwinAPI.d.ts +2 -0
- package/dist/src/native/platform/darwin/DarwinAPI.js +8 -0
- package/dist/src/native/platform/darwin/DarwinMemoryProvider.js +6 -1
- package/dist/src/server/MCPServer.context.d.ts +2 -1
- package/dist/src/server/MCPServer.d.ts +2 -1
- package/dist/src/server/MCPServer.domain.d.ts +1 -1
- package/dist/src/server/MCPServer.domain.js +81 -16
- package/dist/src/server/MCPServer.js +41 -14
- package/dist/src/server/MCPServer.resources.d.ts +2 -0
- package/dist/src/server/MCPServer.resources.js +91 -0
- package/dist/src/server/MCPServer.search.handlers.call.js +2 -1
- package/dist/src/server/MCPServer.search.helpers.js +1 -1
- package/dist/src/server/MCPServer.transport.js +12 -0
- package/dist/src/server/ToolCallContextGuard.js +8 -0
- package/dist/src/server/ToolRouter.d.ts +25 -9
- package/dist/src/server/ToolRouter.intent.d.ts +26 -0
- package/dist/src/server/ToolRouter.intent.js +77 -0
- package/dist/src/server/ToolRouter.js +103 -284
- package/dist/src/server/ToolRouter.policy.d.ts +22 -0
- package/dist/src/server/ToolRouter.policy.js +163 -0
- package/dist/src/server/ToolRouter.probe.d.ts +17 -0
- package/dist/src/server/ToolRouter.probe.js +103 -0
- package/dist/src/server/ToolRouter.renderer.d.ts +9 -0
- package/dist/src/server/ToolRouter.renderer.js +52 -0
- package/dist/src/server/activation/ActivationController.js +15 -12
- package/dist/src/server/activation/CompoundConditionEngine.js +1 -1
- package/dist/src/server/activation/PredictiveBooster.js +1 -3
- package/dist/src/server/domains/analysis/definitions.js +155 -655
- package/dist/src/server/domains/analysis/handlers.impl.js +26 -20
- package/dist/src/server/domains/analysis/handlers.web-tools.js +2 -1
- package/dist/src/server/domains/analysis/manifest.js +6 -4
- package/dist/src/server/domains/antidebug/definitions.js +25 -111
- package/dist/src/server/domains/browser/definitions.tools.advanced.js +59 -88
- package/dist/src/server/domains/browser/definitions.tools.behavior.js +120 -227
- package/dist/src/server/domains/browser/definitions.tools.page-core.js +210 -439
- package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
- package/dist/src/server/domains/browser/definitions.tools.runtime.js +98 -211
- package/dist/src/server/domains/browser/definitions.tools.security.js +194 -339
- package/dist/src/server/domains/browser/handlers/camoufox-browser.js +3 -2
- package/dist/src/server/domains/browser/handlers/captcha-solver.js +3 -3
- package/dist/src/server/domains/browser/handlers/dom-query.js +2 -1
- package/dist/src/server/domains/browser/handlers/framework-state.js +27 -9
- package/dist/src/server/domains/browser/handlers/indexeddb-dump.js +21 -20
- package/dist/src/server/domains/browser/handlers/script-management.js +1 -1
- package/dist/src/server/domains/browser/handlers.impl.d.ts +1 -2
- package/dist/src/server/domains/browser/handlers.impl.js +2 -3
- package/dist/src/server/domains/browser/manifest.js +37 -13
- package/dist/src/server/domains/coordination/definitions.js +50 -216
- package/dist/src/server/domains/coordination/index.d.ts +2 -1
- package/dist/src/server/domains/coordination/index.js +1 -0
- package/dist/src/server/domains/debugger/definitions.tools.advanced.js +72 -189
- package/dist/src/server/domains/debugger/definitions.tools.core.js +114 -288
- package/dist/src/server/domains/debugger/manifest.js +9 -2
- package/dist/src/server/domains/encoding/definitions.js +43 -153
- package/dist/src/server/domains/encoding/handlers.base.js +2 -2
- package/dist/src/server/domains/evidence/definitions.d.ts +2 -0
- package/dist/src/server/domains/evidence/definitions.js +42 -0
- package/dist/src/server/domains/evidence/handlers.d.ts +582 -0
- package/dist/src/server/domains/evidence/handlers.js +60 -0
- package/dist/src/server/domains/evidence/index.d.ts +2 -0
- package/dist/src/server/domains/evidence/index.js +2 -0
- package/dist/src/server/domains/evidence/manifest.d.ts +63 -0
- package/dist/src/server/domains/evidence/manifest.js +78 -0
- package/dist/src/server/domains/graphql/definitions.js +53 -141
- package/dist/src/server/domains/graphql/handlers.impl.core.runtime.replay.js +92 -114
- package/dist/src/server/domains/graphql/handlers.impl.core.runtime.shared.js +77 -77
- package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
- package/dist/src/server/domains/hooks/ai-handlers.js +1 -67
- package/dist/src/server/domains/hooks/definitions.js +69 -335
- package/dist/src/server/domains/hooks/manifest.d.ts +1 -1
- package/dist/src/server/domains/hooks/manifest.js +1 -2
- package/dist/src/server/domains/instrumentation/definitions.d.ts +2 -0
- package/dist/src/server/domains/instrumentation/definitions.js +99 -0
- package/dist/src/server/domains/instrumentation/handlers.d.ts +78 -0
- package/dist/src/server/domains/instrumentation/handlers.js +206 -0
- package/dist/src/server/domains/instrumentation/index.d.ts +2 -0
- package/dist/src/server/domains/instrumentation/index.js +2 -0
- package/dist/src/server/domains/instrumentation/manifest.d.ts +63 -0
- package/dist/src/server/domains/instrumentation/manifest.js +114 -0
- package/dist/src/server/domains/macro/definitions.js +16 -43
- package/dist/src/server/domains/maintenance/definitions.js +60 -219
- package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
- package/dist/src/server/domains/memory/definitions.js +387 -559
- package/dist/src/server/domains/memory/handlers/hooks.d.ts +55 -0
- package/dist/src/server/domains/memory/handlers/hooks.js +115 -0
- package/dist/src/server/domains/memory/handlers/integrity.d.ts +77 -0
- package/dist/src/server/domains/memory/handlers/integrity.js +180 -0
- package/dist/src/server/domains/memory/handlers/pointer-chain.d.ts +29 -0
- package/dist/src/server/domains/memory/handlers/pointer-chain.js +82 -0
- package/dist/src/server/domains/memory/handlers/readwrite.d.ts +41 -0
- package/dist/src/server/domains/memory/handlers/readwrite.js +78 -0
- package/dist/src/server/domains/memory/handlers/scan.d.ts +35 -0
- package/dist/src/server/domains/memory/handlers/scan.js +97 -0
- package/dist/src/server/domains/memory/handlers/session.d.ts +23 -0
- package/dist/src/server/domains/memory/handlers/session.js +49 -0
- package/dist/src/server/domains/memory/handlers/structure.d.ts +29 -0
- package/dist/src/server/domains/memory/handlers/structure.js +74 -0
- package/dist/src/server/domains/memory/handlers.impl.d.ts +49 -54
- package/dist/src/server/domains/memory/handlers.impl.js +63 -494
- package/dist/src/server/domains/memory/manifest.js +236 -64
- package/dist/src/server/domains/native-bridge/definitions.js +54 -192
- package/dist/src/server/domains/native-bridge/index.d.ts +1 -0
- package/dist/src/server/domains/native-bridge/index.js +2 -1
- package/dist/src/server/domains/network/auth-extractor.js +1 -1
- package/dist/src/server/domains/network/definitions.js +175 -578
- package/dist/src/server/domains/network/handlers.base.core.d.ts +64 -0
- package/dist/src/server/domains/network/handlers.base.core.js +623 -0
- package/dist/src/server/domains/network/handlers.base.d.ts +2 -124
- package/dist/src/server/domains/network/handlers.base.js +3 -878
- package/dist/src/server/domains/network/handlers.base.performance.d.ts +63 -0
- package/dist/src/server/domains/network/handlers.base.performance.js +193 -0
- package/dist/src/server/domains/network/handlers.base.types.d.ts +42 -0
- package/dist/src/server/domains/network/handlers.base.types.js +89 -0
- package/dist/src/server/domains/network/handlers.impl.core.runtime.d.ts +1 -1
- package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.d.ts +21 -0
- package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.js +186 -0
- package/dist/src/server/domains/network/handlers.impl.core.runtime.js +1 -1
- package/dist/src/server/domains/network/manifest.js +15 -0
- package/dist/src/server/domains/network/replay.js +1 -4
- package/dist/src/server/domains/platform/definitions.js +121 -112
- package/dist/src/server/domains/platform/handlers/bridge-handlers.d.ts +4 -0
- package/dist/src/server/domains/platform/handlers/bridge-handlers.js +193 -4
- package/dist/src/server/domains/platform/handlers/electron-asar-helpers.js +26 -6
- package/dist/src/server/domains/platform/handlers/electron-dual-cdp.d.ts +3 -0
- package/dist/src/server/domains/platform/handlers/electron-dual-cdp.js +170 -0
- package/dist/src/server/domains/platform/handlers/electron-fuse-handler.d.ts +3 -0
- package/dist/src/server/domains/platform/handlers/electron-fuse-handler.js +193 -0
- package/dist/src/server/domains/platform/handlers/electron-handlers.d.ts +6 -0
- package/dist/src/server/domains/platform/handlers/electron-handlers.js +95 -2
- package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.d.ts +2 -0
- package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.js +370 -0
- package/dist/src/server/domains/platform/handlers/electron-userdata-handler.d.ts +2 -0
- package/dist/src/server/domains/platform/handlers/electron-userdata-handler.js +78 -0
- package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +3 -3
- package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.d.ts +2 -0
- package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.js +207 -0
- package/dist/src/server/domains/platform/handlers.d.ts +48 -0
- package/dist/src/server/domains/platform/handlers.js +29 -0
- package/dist/src/server/domains/platform/manifest.js +38 -0
- package/dist/src/server/domains/process/definitions.js +163 -647
- package/dist/src/server/domains/process/handlers.base.d.ts +3 -95
- package/dist/src/server/domains/process/handlers.base.js +7 -462
- package/dist/src/server/domains/process/handlers.base.process.d.ts +61 -0
- package/dist/src/server/domains/process/handlers.base.process.js +417 -0
- package/dist/src/server/domains/process/handlers.base.types.d.ts +57 -0
- package/dist/src/server/domains/process/handlers.base.types.js +50 -0
- package/dist/src/server/domains/process/handlers.impl.core.runtime.inject.js +18 -16
- package/dist/src/server/domains/process/manifest.js +6 -1
- package/dist/src/server/domains/sandbox/definitions.js +11 -33
- package/dist/src/server/domains/sandbox/handlers.js +8 -3
- package/dist/src/server/domains/shared/ResponseBuilder.d.ts +209 -0
- package/dist/src/server/domains/shared/ResponseBuilder.js +48 -0
- package/dist/src/server/domains/shared/modules.d.ts +0 -2
- package/dist/src/server/domains/shared/modules.js +0 -1
- package/dist/src/server/domains/sourcemap/definitions.js +27 -111
- package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-common.js +7 -2
- package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-main.js +1 -1
- package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-parse-base.js +1 -1
- package/dist/src/server/domains/sourcemap/manifest.d.ts +1 -1
- package/dist/src/server/domains/sourcemap/manifest.js +1 -1
- package/dist/src/server/domains/streaming/definitions.js +36 -148
- package/dist/src/server/domains/streaming/handlers.impl.streaming-sse.js +163 -164
- package/dist/src/server/domains/streaming/handlers.impl.streaming-ws.js +1 -1
- package/dist/src/server/domains/trace/TraceSummarizer.js +8 -5
- package/dist/src/server/domains/trace/definitions.tools.js +51 -206
- package/dist/src/server/domains/trace/handlers.js +10 -12
- package/dist/src/server/domains/trace/index.d.ts +2 -1
- package/dist/src/server/domains/trace/index.js +2 -1
- package/dist/src/server/domains/trace/manifest.js +15 -3
- package/dist/src/server/domains/transform/definitions.js +50 -210
- package/dist/src/server/domains/transform/handlers.impl.transform-base.js +108 -108
- package/dist/src/server/domains/transform/handlers.impl.transform-crypto.js +18 -19
- package/dist/src/server/domains/transform/manifest.d.ts +1 -1
- package/dist/src/server/domains/transform/manifest.js +1 -1
- package/dist/src/server/domains/wasm/definitions.js +55 -232
- package/dist/src/server/domains/wasm/handlers.js +1 -1
- package/dist/src/server/domains/workflow/definitions.js +144 -414
- package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +1 -1
- package/dist/src/server/domains/workflow/handlers.impl.workflow-api.js +51 -51
- package/dist/src/server/domains/workflow/handlers.impl.workflow-base.d.ts +2 -0
- package/dist/src/server/domains/workflow/handlers.impl.workflow-base.js +126 -87
- package/dist/src/server/domains/workflow/handlers.impl.workflow-batch.js +5 -5
- package/dist/src/server/evidence/ReverseEvidenceGraph.d.ts +20 -0
- package/dist/src/server/evidence/ReverseEvidenceGraph.js +208 -0
- package/dist/src/server/evidence/index.d.ts +2 -0
- package/dist/src/server/evidence/index.js +1 -0
- package/dist/src/server/evidence/types.d.ts +22 -0
- package/dist/src/server/evidence/types.js +1 -0
- package/dist/src/server/extensions/ExtensionManager.d.ts +1 -0
- package/dist/src/server/extensions/ExtensionManager.discovery.js +72 -9
- package/dist/src/server/extensions/ExtensionManager.integrity.js +1 -1
- package/dist/src/server/extensions/ExtensionManager.js +193 -40
- package/dist/src/server/extensions/ExtensionManager.roots.d.ts +1 -1
- package/dist/src/server/extensions/ExtensionManager.roots.js +4 -4
- package/dist/src/server/extensions/plugin-config.js +1 -1
- package/dist/src/server/extensions/plugin-env.d.ts +1 -1
- package/dist/src/server/extensions/plugin-env.js +10 -4
- package/dist/src/server/extensions/types.d.ts +17 -0
- package/dist/src/server/extensions/types.js +1 -1
- package/dist/src/server/instrumentation/EvidenceGraphBridge.d.ts +13 -0
- package/dist/src/server/instrumentation/EvidenceGraphBridge.js +150 -0
- package/dist/src/server/instrumentation/InstrumentationSession.d.ts +60 -0
- package/dist/src/server/instrumentation/InstrumentationSession.js +269 -0
- package/dist/src/server/instrumentation/index.d.ts +2 -0
- package/dist/src/server/instrumentation/index.js +2 -0
- package/dist/src/server/instrumentation/types.d.ts +62 -0
- package/dist/src/server/instrumentation/types.js +7 -0
- package/dist/src/server/macros/MacroConfigLoader.d.ts +6 -5
- package/dist/src/server/macros/MacroConfigLoader.js +61 -59
- package/dist/src/server/macros/MacroRunner.js +6 -2
- package/dist/src/server/macros/builtins/index.d.ts +2 -3
- package/dist/src/server/macros/builtins/index.js +51 -7
- package/dist/src/server/plugins/PluginContract.d.ts +1 -1
- package/dist/src/server/registry/contracts.d.ts +1 -1
- package/dist/src/server/registry/discovery.js +5 -4
- package/dist/src/server/registry/ensure-browser-core.js +0 -3
- package/dist/src/server/registry/index.js +4 -4
- package/dist/src/server/registry/tool-builder.d.ts +46 -0
- package/dist/src/server/registry/tool-builder.js +105 -0
- package/dist/src/server/sandbox/QuickJSSandbox.js +16 -5
- package/dist/src/server/sandbox/SandboxHelpers.js +250 -250
- package/dist/src/server/search/EmbeddingWorker.js +5 -3
- package/dist/src/server/search/FeedbackTracker.d.ts +9 -0
- package/dist/src/server/search/FeedbackTracker.js +26 -0
- package/dist/src/server/search/QueryNormalizer.d.ts +6 -0
- package/dist/src/server/search/QueryNormalizer.js +94 -0
- package/dist/src/server/search/ToolSearchEngineImpl.d.ts +2 -3
- package/dist/src/server/search/ToolSearchEngineImpl.js +38 -88
- package/dist/src/server/workflows/WorkflowContract.d.ts +24 -0
- package/dist/src/server/workflows/WorkflowContract.js +12 -0
- package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
- package/dist/src/server/workflows/WorkflowEngine.js +136 -3
- package/dist/src/types/config.d.ts +0 -14
- package/dist/src/types/deobfuscator.d.ts +0 -1
- package/dist/src/types/index.d.ts +1 -1
- package/dist/src/utils/DetailedDataManager.js +2 -0
- package/dist/src/utils/RingBuffer.js +5 -5
- package/dist/src/utils/TokenBudgetManager.js +1 -1
- package/dist/src/utils/UnifiedCacheManager.js +1 -1
- package/dist/src/utils/artifactRetention.js +2 -2
- package/dist/src/utils/betterSqlite3.d.ts +11 -0
- package/dist/src/utils/betterSqlite3.js +88 -0
- package/dist/src/utils/browserExecutable.js +2 -2
- package/dist/src/utils/cliFastPath.js +5 -8
- package/dist/src/utils/config.js +4 -26
- package/dist/src/utils/environmentDoctor.js +138 -11
- package/dist/src/utils/outputPaths.js +16 -9
- package/dist/src/utils/parallel.js +1 -3
- package/package.json +74 -72
- package/workflows/.gitkeep +0 -0
- package/dist/src/modules/analyzer/AISummarizer.d.ts +0 -39
- package/dist/src/modules/analyzer/AISummarizer.js +0 -122
- package/dist/src/modules/hook/AIHookGenerator.d.ts +0 -52
- package/dist/src/modules/hook/AIHookGenerator.js +0 -360
- package/dist/src/modules/hook/AIHookGeneratorTemplates.d.ts +0 -9
- package/dist/src/modules/hook/AIHookGeneratorTemplates.js +0 -157
- package/dist/src/server/macros/builtins/deobfuscate-ast-flow.d.ts +0 -2
- package/dist/src/server/macros/builtins/deobfuscate-ast-flow.js +0 -25
- package/dist/src/server/macros/builtins/unpacker-flow.d.ts +0 -2
- package/dist/src/server/macros/builtins/unpacker-flow.js +0 -25
- package/dist/src/services/LLMService.d.ts +0 -37
- package/dist/src/services/LLMService.js +0 -233
- package/dist/src/services/prompts/analysis.d.ts +0 -9
- package/dist/src/services/prompts/analysis.js +0 -158
- package/dist/src/services/prompts/crypto.d.ts +0 -2
- package/dist/src/services/prompts/crypto.js +0 -108
- package/dist/src/services/prompts/deobfuscation.d.ts +0 -6
- package/dist/src/services/prompts/deobfuscation.js +0 -300
- package/dist/src/services/prompts/environment.d.ts +0 -16
- package/dist/src/services/prompts/environment.js +0 -372
- package/dist/src/services/prompts/intelligence.d.ts +0 -4
- package/dist/src/services/prompts/intelligence.js +0 -250
- package/dist/src/services/prompts/taint.d.ts +0 -2
- 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,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,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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
];
|