@jshookmcp/jshook 0.2.2 → 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/LICENSE +661 -661
- package/README.md +15 -6
- package/README.zh.md +19 -4
- package/dist/native/scripts/linux/enum-windows.sh +12 -12
- package/dist/native/scripts/macos/enum-windows.applescript +22 -22
- package/dist/native/scripts/windows/enum-windows-by-class.ps1 +51 -51
- package/dist/native/scripts/windows/enum-windows.ps1 +44 -44
- package/dist/native/scripts/windows/inject-dll.ps1 +21 -21
- 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.d.ts +6 -5
- package/dist/src/modules/browser/BrowserDiscovery.js +3 -3
- package/dist/src/modules/browser/BrowserModeManager.d.ts +1 -1
- 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 +19 -4
- package/dist/src/modules/captcha/AICaptchaDetector.d.ts +14 -23
- package/dist/src/modules/captcha/AICaptchaDetector.js +8 -202
- package/dist/src/modules/captcha/CaptchaDetector.d.ts +31 -17
- package/dist/src/modules/captcha/CaptchaDetector.js +1 -1
- package/dist/src/modules/collector/CodeCache.d.ts +2 -2
- package/dist/src/modules/collector/CodeCollector.d.ts +12 -9
- package/dist/src/modules/collector/CodeCollector.js +5 -6
- package/dist/src/modules/collector/DOMInspector.d.ts +3 -2
- package/dist/src/modules/collector/DOMInspector.js +49 -59
- 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 +5 -3
- 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 +2 -3
- package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +5 -57
- package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
- package/dist/src/modules/deobfuscator/PackerDeobfuscator.js +1 -1
- 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.d.ts +1 -1
- package/dist/src/modules/external/ExternalToolRunner.js +26 -23
- 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/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/process/BaseMemoryManager.d.ts +1 -1
- package/dist/src/modules/process/LinuxProcessManager.js +4 -2
- package/dist/src/modules/process/MacProcessManager.js +1 -1
- package/dist/src/modules/process/MemoryManager.d.ts +1 -1
- package/dist/src/modules/process/MemoryManager.js +2 -2
- package/dist/src/modules/process/ProcessManager.impl.js +1 -1
- package/dist/src/modules/process/memory/AuditTrail.js +1 -1
- package/dist/src/modules/process/memory/reader.js +35 -3
- package/dist/src/modules/process/memory/regions.enumerate.js +1 -1
- package/dist/src/modules/process/memory/regions.protection.js +42 -9
- package/dist/src/modules/process/memory/scanner.d.ts +5 -1
- package/dist/src/modules/process/memory/scanner.darwin.js +57 -0
- package/dist/src/modules/process/memory/scanner.js +88 -4
- package/dist/src/modules/process/memory/writer.js +44 -4
- package/dist/src/modules/security/ExecutionSandbox.js +7 -8
- package/dist/src/modules/stealth/FingerprintManager.js +1 -1
- package/dist/src/modules/stealth/StealthScripts.d.ts +4 -2
- package/dist/src/modules/stealth/StealthScripts.js +53 -14
- package/dist/src/modules/stealth/StealthVerifier.d.ts +1 -1
- package/dist/src/modules/stealth/StealthVerifier.js +2 -4
- 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 +12 -6
- package/dist/src/modules/trace/TraceRecorder.js +1 -5
- package/dist/src/native/AntiCheatDetector.js +67 -16
- package/dist/src/native/CodeInjector.js +4 -4
- package/dist/src/native/HardwareBreakpoint.js +25 -16
- 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 +42 -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 +2 -2
- package/dist/src/server/MCPServer.tools.js +1 -1
- package/dist/src/server/MCPServer.transport.js +12 -0
- package/dist/src/server/ToolCallContextGuard.d.ts +5 -0
- package/dist/src/server/ToolCallContextGuard.js +85 -0
- package/dist/src/server/ToolRouter.d.ts +26 -10
- 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.d.ts +8 -8
- package/dist/src/server/domains/analysis/handlers.impl.js +34 -28
- package/dist/src/server/domains/analysis/handlers.web-tools.js +4 -3
- 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 +157 -386
- package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
- package/dist/src/server/domains/browser/definitions.tools.runtime.js +61 -174
- package/dist/src/server/domains/browser/definitions.tools.security.js +92 -237
- 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/facade-initializer.d.ts +3 -3
- package/dist/src/server/domains/browser/handlers/facade-initializer.js +3 -3
- package/dist/src/server/domains/browser/handlers/framework-state.js +231 -3
- 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/stealth-injection.js +8 -2
- package/dist/src/server/domains/browser/handlers.impl.d.ts +15 -12
- package/dist/src/server/domains/browser/handlers.impl.js +5 -6
- package/dist/src/server/domains/browser/manifest.js +37 -13
- package/dist/src/server/domains/coordination/definitions.js +50 -149
- package/dist/src/server/domains/coordination/index.d.ts +20 -1
- package/dist/src/server/domains/coordination/index.js +133 -0
- package/dist/src/server/domains/coordination/manifest.js +15 -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/hooks/ai-handlers.d.ts +0 -7
- package/dist/src/server/domains/hooks/ai-handlers.js +4 -70
- 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.d.ts +2 -2
- package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
- package/dist/src/server/domains/maintenance/handlers.js +2 -2
- 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 +5 -1
- package/dist/src/server/domains/platform/handlers/bridge-handlers.js +194 -5
- 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.d.ts +1 -1
- package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +4 -4
- 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 +19 -17
- 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.d.ts +60 -0
- package/dist/src/server/domains/trace/TraceSummarizer.js +112 -0
- package/dist/src/server/domains/trace/definitions.tools.js +51 -176
- package/dist/src/server/domains/trace/handlers.d.ts +2 -1
- package/dist/src/server/domains/trace/handlers.js +62 -9
- 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 +18 -4
- package/dist/src/server/domains/transform/definitions.js +50 -210
- package/dist/src/server/domains/transform/handlers.impl.transform-base.js +6 -6
- 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 +3 -3
- package/dist/src/server/domains/workflow/definitions.js +144 -414
- package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +2 -2
- 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 +19 -9
- 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/http/HttpMiddleware.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 +7 -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/MCPBridge.d.ts +9 -0
- package/dist/src/server/sandbox/MCPBridge.js +22 -0
- package/dist/src/server/sandbox/QuickJSSandbox.d.ts +4 -1
- package/dist/src/server/sandbox/QuickJSSandbox.js +162 -2
- package/dist/src/server/sandbox/types.d.ts +13 -0
- package/dist/src/server/search/AffinityGraph.d.ts +7 -1
- package/dist/src/server/search/AffinityGraph.js +24 -3
- 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.d.ts +1 -1
- package/dist/src/utils/UnifiedCacheManager.js +3 -3
- 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 +17 -6
- 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 +76 -72
- package/scripts/postinstall.cjs +37 -37
- package/src/native/scripts/linux/enum-windows.sh +12 -12
- package/src/native/scripts/macos/enum-windows.applescript +22 -22
- package/src/native/scripts/windows/enum-windows-by-class.ps1 +51 -51
- package/src/native/scripts/windows/enum-windows.ps1 +44 -44
- package/src/native/scripts/windows/inject-dll.ps1 +21 -21
- 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
|
@@ -1,77 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { evaluateWithTimeout, evaluateOnNewDocumentWithTimeout } from '../../../modules/collector/PageController.js';
|
|
1
|
+
import { evaluateWithTimeout, evaluateOnNewDocumentWithTimeout, } from '../../../modules/collector/PageController.js';
|
|
3
2
|
import { logger } from '../../../utils/logger.js';
|
|
4
3
|
import { argString, argStringRequired, argBool } from '../../domains/shared/parse-args.js';
|
|
5
4
|
export class AIHookToolHandlers {
|
|
6
5
|
pageController;
|
|
7
|
-
hookGenerator;
|
|
8
6
|
injectedHooks = new Map();
|
|
9
7
|
constructor(pageController) {
|
|
10
8
|
this.pageController = pageController;
|
|
11
|
-
this.hookGenerator = new AIHookGenerator();
|
|
12
|
-
}
|
|
13
|
-
async handleAIHookGenerate(args) {
|
|
14
|
-
try {
|
|
15
|
-
let target;
|
|
16
|
-
if (args.target) {
|
|
17
|
-
target = args.target;
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
const pattern = argString(args, 'pattern', '');
|
|
21
|
-
let targetType = 'function';
|
|
22
|
-
let targetName = pattern;
|
|
23
|
-
if (pattern === 'fetch' || pattern === 'XMLHttpRequest') {
|
|
24
|
-
targetType = 'api';
|
|
25
|
-
}
|
|
26
|
-
else if (pattern.includes('.')) {
|
|
27
|
-
targetType = 'object-method';
|
|
28
|
-
targetName = pattern.split('.').pop() || pattern;
|
|
29
|
-
}
|
|
30
|
-
target = { type: targetType, name: targetName };
|
|
31
|
-
}
|
|
32
|
-
const request = {
|
|
33
|
-
description: argString(args, 'description') || `Hook ${target.name || 'target'}`,
|
|
34
|
-
target,
|
|
35
|
-
behavior: args.behavior || {
|
|
36
|
-
captureArgs: true,
|
|
37
|
-
captureReturn: true,
|
|
38
|
-
logToConsole: true,
|
|
39
|
-
},
|
|
40
|
-
condition: args.condition,
|
|
41
|
-
customCode: args.customCode,
|
|
42
|
-
};
|
|
43
|
-
const response = this.hookGenerator.generateHook(request);
|
|
44
|
-
return {
|
|
45
|
-
content: [
|
|
46
|
-
{
|
|
47
|
-
type: 'text',
|
|
48
|
-
text: JSON.stringify({
|
|
49
|
-
success: response.success,
|
|
50
|
-
hookId: response.hookId,
|
|
51
|
-
generatedCode: response.generatedCode,
|
|
52
|
-
explanation: response.explanation,
|
|
53
|
-
injectionMethod: response.injectionMethod,
|
|
54
|
-
warnings: response.warnings,
|
|
55
|
-
usage: ` ai_hook_inject(hookId: "${response.hookId}") Hook`,
|
|
56
|
-
}, null, 2),
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
logger.error('AI Hook generation failed', error);
|
|
63
|
-
return {
|
|
64
|
-
content: [
|
|
65
|
-
{
|
|
66
|
-
type: 'text',
|
|
67
|
-
text: JSON.stringify({
|
|
68
|
-
success: false,
|
|
69
|
-
error: error instanceof Error ? error.message : String(error),
|
|
70
|
-
}, null, 2),
|
|
71
|
-
},
|
|
72
|
-
],
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
9
|
}
|
|
76
10
|
async handleAIHookInject(args) {
|
|
77
11
|
try {
|
|
@@ -125,7 +59,7 @@ export class AIHookToolHandlers {
|
|
|
125
59
|
const hookId = argStringRequired(args, 'hookId');
|
|
126
60
|
const page = await this.pageController.getPage();
|
|
127
61
|
const hookData = await evaluateWithTimeout(page, (id) => {
|
|
128
|
-
if (!window.__aiHooks
|
|
62
|
+
if (!window.__aiHooks?.[id]) {
|
|
129
63
|
return null;
|
|
130
64
|
}
|
|
131
65
|
return {
|
|
@@ -222,7 +156,7 @@ export class AIHookToolHandlers {
|
|
|
222
156
|
const page = await this.pageController.getPage();
|
|
223
157
|
if (hookId) {
|
|
224
158
|
await evaluateWithTimeout(page, (id) => {
|
|
225
|
-
if (window.__aiHooks
|
|
159
|
+
if (window.__aiHooks?.[id]) {
|
|
226
160
|
window.__aiHooks[id] = [];
|
|
227
161
|
}
|
|
228
162
|
}, hookId);
|
|
@@ -280,7 +214,7 @@ export class AIHookToolHandlers {
|
|
|
280
214
|
const enabled = argBool(args, 'enabled');
|
|
281
215
|
const page = await this.pageController.getPage();
|
|
282
216
|
await evaluateWithTimeout(page, (id, enable) => {
|
|
283
|
-
if (window.__aiHookMetadata
|
|
217
|
+
if (window.__aiHookMetadata?.[id]) {
|
|
284
218
|
window.__aiHookMetadata[id].enabled = enable;
|
|
285
219
|
}
|
|
286
220
|
}, hookId, enabled);
|
|
@@ -1,343 +1,77 @@
|
|
|
1
|
+
import { tool } from '../../registry/tool-builder.js';
|
|
1
2
|
export const aiHookTools = [
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
default: true,
|
|
48
|
-
},
|
|
49
|
-
captureReturn: {
|
|
50
|
-
type: 'boolean',
|
|
51
|
-
description: 'Capture return value',
|
|
52
|
-
default: true,
|
|
53
|
-
},
|
|
54
|
-
captureStack: {
|
|
55
|
-
type: 'boolean',
|
|
56
|
-
description: 'Capture call stack',
|
|
57
|
-
default: false,
|
|
58
|
-
},
|
|
59
|
-
modifyArgs: {
|
|
60
|
-
type: 'boolean',
|
|
61
|
-
description: 'Allow argument modification',
|
|
62
|
-
default: false,
|
|
63
|
-
},
|
|
64
|
-
modifyReturn: {
|
|
65
|
-
type: 'boolean',
|
|
66
|
-
description: 'Allow return value modification',
|
|
67
|
-
default: false,
|
|
68
|
-
},
|
|
69
|
-
blockExecution: {
|
|
70
|
-
type: 'boolean',
|
|
71
|
-
description: 'Block the original function from executing',
|
|
72
|
-
default: false,
|
|
73
|
-
},
|
|
74
|
-
logToConsole: {
|
|
75
|
-
type: 'boolean',
|
|
76
|
-
description: 'Log hook events to console',
|
|
77
|
-
default: true,
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
condition: {
|
|
82
|
-
type: 'object',
|
|
83
|
-
description: 'Conditional trigger for the hook',
|
|
84
|
-
properties: {
|
|
85
|
-
argFilter: {
|
|
86
|
-
type: 'string',
|
|
87
|
-
description: 'JS expression to filter by args (e.g., "args[0].includes(\'password\')")',
|
|
88
|
-
},
|
|
89
|
-
returnFilter: {
|
|
90
|
-
type: 'string',
|
|
91
|
-
description: 'JS expression to filter by return value',
|
|
92
|
-
},
|
|
93
|
-
urlPattern: {
|
|
94
|
-
type: 'string',
|
|
95
|
-
description: 'Regex pattern to match request URL',
|
|
96
|
-
},
|
|
97
|
-
maxCalls: {
|
|
98
|
-
type: 'number',
|
|
99
|
-
description: 'Stop capturing after this many calls',
|
|
100
|
-
},
|
|
101
|
-
},
|
|
102
|
-
},
|
|
103
|
-
customCode: {
|
|
104
|
-
type: 'object',
|
|
105
|
-
description: 'Custom code to inject at hook points',
|
|
106
|
-
properties: {
|
|
107
|
-
before: {
|
|
108
|
-
type: 'string',
|
|
109
|
-
description: 'Code to run before the original function',
|
|
110
|
-
},
|
|
111
|
-
after: {
|
|
112
|
-
type: 'string',
|
|
113
|
-
description: 'Code to run after the original function',
|
|
114
|
-
},
|
|
115
|
-
replace: {
|
|
116
|
-
type: 'string',
|
|
117
|
-
description: 'Code to replace the original function entirely',
|
|
118
|
-
},
|
|
119
|
-
},
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
|
-
required: ['description', 'target', 'behavior'],
|
|
123
|
-
},
|
|
124
|
-
annotations: {
|
|
125
|
-
readOnlyHint: false,
|
|
126
|
-
destructiveHint: false,
|
|
127
|
-
idempotentHint: false,
|
|
128
|
-
openWorldHint: false,
|
|
129
|
-
},
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
name: 'ai_hook_inject',
|
|
133
|
-
description: 'Inject a generated hook into the page.\n\nMethods:\n- evaluateOnNewDocument: Runs before page scripts (use for API hooks like fetch/XHR)\n- evaluate: Runs in current page context (use for hooking already-loaded code)',
|
|
134
|
-
inputSchema: {
|
|
135
|
-
type: 'object',
|
|
136
|
-
properties: {
|
|
137
|
-
hookId: {
|
|
138
|
-
type: 'string',
|
|
139
|
-
description: 'Hook ID returned by ai_hook_generate',
|
|
140
|
-
},
|
|
141
|
-
code: {
|
|
142
|
-
type: 'string',
|
|
143
|
-
description: 'Hook code returned by ai_hook_generate',
|
|
144
|
-
},
|
|
145
|
-
method: {
|
|
146
|
-
type: 'string',
|
|
147
|
-
enum: ['evaluateOnNewDocument', 'evaluate'],
|
|
148
|
-
description: 'Injection method',
|
|
149
|
-
default: 'evaluate',
|
|
150
|
-
},
|
|
151
|
-
},
|
|
152
|
-
required: ['hookId', 'code'],
|
|
153
|
-
},
|
|
154
|
-
annotations: {
|
|
155
|
-
readOnlyHint: false,
|
|
156
|
-
destructiveHint: false,
|
|
157
|
-
idempotentHint: false,
|
|
158
|
-
openWorldHint: false,
|
|
159
|
-
},
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
name: 'ai_hook_get_data',
|
|
163
|
-
description: 'Retrieve captured data from an active hook (arguments, return values, timestamps, call count)',
|
|
164
|
-
inputSchema: {
|
|
165
|
-
type: 'object',
|
|
166
|
-
properties: {
|
|
167
|
-
hookId: {
|
|
168
|
-
type: 'string',
|
|
169
|
-
description: 'Hook ID',
|
|
170
|
-
},
|
|
171
|
-
},
|
|
172
|
-
required: ['hookId'],
|
|
173
|
-
},
|
|
174
|
-
annotations: {
|
|
175
|
-
readOnlyHint: false,
|
|
176
|
-
destructiveHint: false,
|
|
177
|
-
idempotentHint: false,
|
|
178
|
-
openWorldHint: false,
|
|
179
|
-
},
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
name: 'ai_hook_list',
|
|
183
|
-
description: 'List all active hooks with their IDs, types, creation time, and call counts',
|
|
184
|
-
inputSchema: {
|
|
185
|
-
type: 'object',
|
|
186
|
-
properties: {},
|
|
187
|
-
},
|
|
188
|
-
annotations: {
|
|
189
|
-
readOnlyHint: false,
|
|
190
|
-
destructiveHint: false,
|
|
191
|
-
idempotentHint: false,
|
|
192
|
-
openWorldHint: false,
|
|
193
|
-
},
|
|
194
|
-
},
|
|
195
|
-
{
|
|
196
|
-
name: 'ai_hook_clear',
|
|
197
|
-
description: 'Remove one hook by ID or clear all hooks and their captured data',
|
|
198
|
-
inputSchema: {
|
|
199
|
-
type: 'object',
|
|
200
|
-
properties: {
|
|
201
|
-
hookId: {
|
|
202
|
-
type: 'string',
|
|
203
|
-
description: 'Hook ID to clear (omit to clear all hooks)',
|
|
204
|
-
},
|
|
205
|
-
},
|
|
206
|
-
},
|
|
207
|
-
annotations: {
|
|
208
|
-
readOnlyHint: false,
|
|
209
|
-
destructiveHint: false,
|
|
210
|
-
idempotentHint: false,
|
|
211
|
-
openWorldHint: false,
|
|
212
|
-
},
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
name: 'ai_hook_toggle',
|
|
216
|
-
description: 'Enable or disable a hook without removing it',
|
|
217
|
-
inputSchema: {
|
|
218
|
-
type: 'object',
|
|
219
|
-
properties: {
|
|
220
|
-
hookId: {
|
|
221
|
-
type: 'string',
|
|
222
|
-
description: 'Hook ID',
|
|
223
|
-
},
|
|
224
|
-
enabled: {
|
|
225
|
-
type: 'boolean',
|
|
226
|
-
description: 'true to enable, false to disable',
|
|
227
|
-
},
|
|
3
|
+
tool('ai_hook_inject')
|
|
4
|
+
.desc('Inject a generated hook into the page.\n\nMethods:\n- evaluateOnNewDocument: Runs before page scripts (use for API hooks like fetch/XHR)\n- evaluate: Runs in current page context (use for hooking already-loaded code)')
|
|
5
|
+
.string('hookId', 'Hook ID for injection')
|
|
6
|
+
.string('code', 'Hook code to inject')
|
|
7
|
+
.enum('method', ['evaluateOnNewDocument', 'evaluate'], 'Injection method', {
|
|
8
|
+
default: 'evaluate',
|
|
9
|
+
})
|
|
10
|
+
.required('hookId', 'code')
|
|
11
|
+
.build(),
|
|
12
|
+
tool('ai_hook_get_data')
|
|
13
|
+
.desc('Retrieve captured data from an active hook (arguments, return values, timestamps, call count)')
|
|
14
|
+
.string('hookId', 'Hook ID')
|
|
15
|
+
.required('hookId')
|
|
16
|
+
.build(),
|
|
17
|
+
tool('ai_hook_list')
|
|
18
|
+
.desc('List all active hooks with their IDs, types, creation time, and call counts')
|
|
19
|
+
.build(),
|
|
20
|
+
tool('ai_hook_clear')
|
|
21
|
+
.desc('Remove one hook by ID or clear all hooks and their captured data')
|
|
22
|
+
.string('hookId', 'Hook ID to clear (omit to clear all hooks)')
|
|
23
|
+
.build(),
|
|
24
|
+
tool('ai_hook_toggle')
|
|
25
|
+
.desc('Enable or disable a hook without removing it')
|
|
26
|
+
.string('hookId', 'Hook ID')
|
|
27
|
+
.boolean('enabled', 'true to enable, false to disable')
|
|
28
|
+
.required('hookId', 'enabled')
|
|
29
|
+
.build(),
|
|
30
|
+
tool('ai_hook_export')
|
|
31
|
+
.desc('Export captured hook data in JSON or CSV format')
|
|
32
|
+
.string('hookId', 'Hook ID to export (omit to export all hooks)')
|
|
33
|
+
.enum('format', ['json', 'csv'], 'Export format', { default: 'json' })
|
|
34
|
+
.build(),
|
|
35
|
+
];
|
|
36
|
+
export const hookPresetTools = [
|
|
37
|
+
tool('hook_preset')
|
|
38
|
+
.desc('Install a pre-built JavaScript hook from 20+ built-in presets (eval, atob/btoa, Proxy, Reflect, Object.defineProperty, etc.), or provide customTemplate/customTemplates to install your own reusable hook bodies. Use listPresets=true to see all available preset descriptions.')
|
|
39
|
+
.string('preset', 'Single preset name to install. Accepts built-in preset ids or ids provided by customTemplate/customTemplates.')
|
|
40
|
+
.array('presets', { type: 'string' }, 'List of preset names to install simultaneously. Accepts built-in ids and custom template ids.')
|
|
41
|
+
.prop('customTemplate', {
|
|
42
|
+
type: 'object',
|
|
43
|
+
properties: {
|
|
44
|
+
id: { type: 'string', description: 'Stable preset id, for example deobfuscation-sinks' },
|
|
45
|
+
description: {
|
|
46
|
+
type: 'string',
|
|
47
|
+
description: 'Human-readable description for listPresets output.',
|
|
228
48
|
},
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
readOnlyHint: false,
|
|
233
|
-
destructiveHint: false,
|
|
234
|
-
idempotentHint: false,
|
|
235
|
-
openWorldHint: false,
|
|
236
|
-
},
|
|
237
|
-
},
|
|
238
|
-
{
|
|
239
|
-
name: 'ai_hook_export',
|
|
240
|
-
description: 'Export captured hook data in JSON or CSV format',
|
|
241
|
-
inputSchema: {
|
|
242
|
-
type: 'object',
|
|
243
|
-
properties: {
|
|
244
|
-
hookId: {
|
|
245
|
-
type: 'string',
|
|
246
|
-
description: 'Hook ID to export (omit to export all hooks)',
|
|
247
|
-
},
|
|
248
|
-
format: {
|
|
249
|
-
type: 'string',
|
|
250
|
-
enum: ['json', 'csv'],
|
|
251
|
-
description: 'Export format',
|
|
252
|
-
default: 'json',
|
|
253
|
-
},
|
|
49
|
+
body: {
|
|
50
|
+
type: 'string',
|
|
51
|
+
description: 'Hook body snippet inserted into the preset wrapper.',
|
|
254
52
|
},
|
|
255
53
|
},
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
},
|
|
263
|
-
];
|
|
264
|
-
export const hookPresetTools = [
|
|
265
|
-
{
|
|
266
|
-
name: 'hook_preset',
|
|
267
|
-
description: 'Install a pre-built JavaScript hook from 20+ built-in presets (eval, atob/btoa, Proxy, Reflect, Object.defineProperty, etc.), or provide customTemplate/customTemplates to install your own reusable hook bodies. Use listPresets=true to see all available preset descriptions.',
|
|
268
|
-
inputSchema: {
|
|
54
|
+
required: ['id', 'body'],
|
|
55
|
+
description: 'Inline custom template. body should contain the hook body inserted into the standard buildHookCode wrapper. Use {{STACK_CODE}} and {{LOG_FN}} placeholders when needed.',
|
|
56
|
+
})
|
|
57
|
+
.prop('customTemplates', {
|
|
58
|
+
type: 'array',
|
|
59
|
+
items: {
|
|
269
60
|
type: 'object',
|
|
270
61
|
properties: {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
},
|
|
275
|
-
presets: {
|
|
276
|
-
type: 'array',
|
|
277
|
-
description: 'List of preset names to install simultaneously. Accepts built-in ids and custom template ids.',
|
|
278
|
-
items: { type: 'string' },
|
|
279
|
-
},
|
|
280
|
-
customTemplate: {
|
|
281
|
-
type: 'object',
|
|
282
|
-
description: 'Inline custom template. body should contain the hook body inserted into the standard buildHookCode wrapper. Use {{STACK_CODE}} and {{LOG_FN}} placeholders when needed.',
|
|
283
|
-
properties: {
|
|
284
|
-
id: {
|
|
285
|
-
type: 'string',
|
|
286
|
-
description: 'Stable preset id, for example deobfuscation-sinks',
|
|
287
|
-
},
|
|
288
|
-
description: {
|
|
289
|
-
type: 'string',
|
|
290
|
-
description: 'Human-readable description for listPresets output.',
|
|
291
|
-
},
|
|
292
|
-
body: {
|
|
293
|
-
type: 'string',
|
|
294
|
-
description: 'Hook body snippet inserted into the preset wrapper.',
|
|
295
|
-
},
|
|
296
|
-
},
|
|
297
|
-
required: ['id', 'body'],
|
|
298
|
-
},
|
|
299
|
-
customTemplates: {
|
|
300
|
-
type: 'array',
|
|
301
|
-
description: 'List of inline custom templates to register for this invocation.',
|
|
302
|
-
items: {
|
|
303
|
-
type: 'object',
|
|
304
|
-
properties: {
|
|
305
|
-
id: { type: 'string' },
|
|
306
|
-
description: { type: 'string' },
|
|
307
|
-
body: { type: 'string' },
|
|
308
|
-
},
|
|
309
|
-
required: ['id', 'body'],
|
|
310
|
-
},
|
|
311
|
-
},
|
|
312
|
-
captureStack: {
|
|
313
|
-
type: 'boolean',
|
|
314
|
-
description: 'Include call stack in captured data (default: false, has performance impact).',
|
|
315
|
-
default: false,
|
|
316
|
-
},
|
|
317
|
-
logToConsole: {
|
|
318
|
-
type: 'boolean',
|
|
319
|
-
description: 'Log hook events to browser console (default: true).',
|
|
320
|
-
default: true,
|
|
321
|
-
},
|
|
322
|
-
method: {
|
|
323
|
-
type: 'string',
|
|
324
|
-
enum: ['evaluate', 'evaluateOnNewDocument'],
|
|
325
|
-
description: 'Injection method: evaluate=current page, evaluateOnNewDocument=before page scripts (default: evaluate).',
|
|
326
|
-
default: 'evaluate',
|
|
327
|
-
},
|
|
328
|
-
listPresets: {
|
|
329
|
-
type: 'boolean',
|
|
330
|
-
description: 'Set to true to list all available presets with descriptions instead of installing.',
|
|
331
|
-
default: false,
|
|
332
|
-
},
|
|
62
|
+
id: { type: 'string' },
|
|
63
|
+
description: { type: 'string' },
|
|
64
|
+
body: { type: 'string' },
|
|
333
65
|
},
|
|
334
|
-
required: [],
|
|
335
|
-
},
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
}
|
|
342
|
-
|
|
66
|
+
required: ['id', 'body'],
|
|
67
|
+
},
|
|
68
|
+
description: 'List of inline custom templates to register for this invocation.',
|
|
69
|
+
})
|
|
70
|
+
.boolean('captureStack', 'Include call stack in captured data (has performance impact)', {
|
|
71
|
+
default: false,
|
|
72
|
+
})
|
|
73
|
+
.boolean('logToConsole', 'Log hook events to browser console', { default: true })
|
|
74
|
+
.enum('method', ['evaluate', 'evaluateOnNewDocument'], 'Injection method: evaluate=current page, evaluateOnNewDocument=before page scripts', { default: 'evaluate' })
|
|
75
|
+
.boolean('listPresets', 'Set to true to list all available presets with descriptions instead of installing.', { default: false })
|
|
76
|
+
.build(),
|
|
343
77
|
];
|
|
@@ -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
|
+
];
|