@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
|
@@ -23,6 +23,7 @@ export class FrameworkStateHandlers {
|
|
|
23
23
|
'Call debugger_disable() before framework_state_extract, or run it before debugger_enable.');
|
|
24
24
|
}
|
|
25
25
|
const evalPromise = page.evaluate((opts) => {
|
|
26
|
+
const win = window;
|
|
26
27
|
function safeSerialize(val, depth = 0) {
|
|
27
28
|
if (depth > 4)
|
|
28
29
|
return '[deep]';
|
|
@@ -170,20 +171,236 @@ export class FrameworkStateHandlers {
|
|
|
170
171
|
visitVm(vm, 0);
|
|
171
172
|
return states;
|
|
172
173
|
};
|
|
174
|
+
const extractSvelte = () => {
|
|
175
|
+
const states = [];
|
|
176
|
+
const visited = new WeakSet();
|
|
177
|
+
const svelteEls = document.querySelectorAll('[class]');
|
|
178
|
+
const candidates = [getRootEl(), ...Array.from(svelteEls)];
|
|
179
|
+
let foundAny = false;
|
|
180
|
+
for (const el of candidates) {
|
|
181
|
+
const obj = el;
|
|
182
|
+
const keys = Object.keys(obj);
|
|
183
|
+
const hasSvelte = keys.some((k) => k === '$$' || k === '__svelte_meta' || k.startsWith('__s'));
|
|
184
|
+
if (!hasSvelte)
|
|
185
|
+
continue;
|
|
186
|
+
foundAny = true;
|
|
187
|
+
const ctx = obj['$$'];
|
|
188
|
+
if (!ctx || visited.has(ctx))
|
|
189
|
+
continue;
|
|
190
|
+
visited.add(ctx);
|
|
191
|
+
const meta = obj['__svelte_meta'];
|
|
192
|
+
const componentName = meta?.['loc']?.['file'];
|
|
193
|
+
const ctxArray = ctx['ctx'];
|
|
194
|
+
const stateObj = {};
|
|
195
|
+
if (Array.isArray(ctxArray)) {
|
|
196
|
+
let idx = 0;
|
|
197
|
+
for (const val of ctxArray.slice(0, 20)) {
|
|
198
|
+
if (val !== undefined && typeof val !== 'function') {
|
|
199
|
+
stateObj[`$${idx}`] = safeSerialize(val);
|
|
200
|
+
}
|
|
201
|
+
idx++;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
const fragment = ctx['fragment'];
|
|
205
|
+
if (Object.keys(stateObj).length > 0 || fragment) {
|
|
206
|
+
states.push({
|
|
207
|
+
component: componentName ?? el.tagName?.toLowerCase() ?? 'svelte-component',
|
|
208
|
+
state: [stateObj],
|
|
209
|
+
...(componentName ? { file: componentName } : {}),
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
if (states.length >= 50)
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
return foundAny ? states : null;
|
|
216
|
+
};
|
|
217
|
+
const extractSolid = () => {
|
|
218
|
+
const states = [];
|
|
219
|
+
const dx = win['_$DX'];
|
|
220
|
+
const hy = win['_$HY'];
|
|
221
|
+
if (!dx && !hy) {
|
|
222
|
+
const hydrationMarker = document.querySelector('[data-hk]');
|
|
223
|
+
if (!hydrationMarker)
|
|
224
|
+
return null;
|
|
225
|
+
states.push({
|
|
226
|
+
component: 'SolidRoot',
|
|
227
|
+
state: [
|
|
228
|
+
{
|
|
229
|
+
_note: 'Solid detected via hydration markers; install solid-devtools for full state extraction',
|
|
230
|
+
},
|
|
231
|
+
],
|
|
232
|
+
});
|
|
233
|
+
return states;
|
|
234
|
+
}
|
|
235
|
+
if (dx) {
|
|
236
|
+
const roots = dx['roots'];
|
|
237
|
+
if (roots && typeof roots === 'object') {
|
|
238
|
+
const entries = roots instanceof Map ? Array.from(roots.values()) : Object.values(roots);
|
|
239
|
+
let count = 0;
|
|
240
|
+
for (const root of entries) {
|
|
241
|
+
if (count++ >= opts.maxDepth * 10)
|
|
242
|
+
break;
|
|
243
|
+
const name = root['name'] ?? 'SolidComponent';
|
|
244
|
+
const value = root['value'] ?? root['state'];
|
|
245
|
+
states.push({
|
|
246
|
+
component: name,
|
|
247
|
+
state: value ? [safeSerialize(value)] : [],
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
if (hy && states.length === 0) {
|
|
253
|
+
states.push({
|
|
254
|
+
component: 'SolidHydration',
|
|
255
|
+
state: [safeSerialize(hy)],
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
return states.length > 0 ? states : null;
|
|
259
|
+
};
|
|
260
|
+
const extractPreact = () => {
|
|
261
|
+
const rootEl = getRootEl();
|
|
262
|
+
const rootObj = rootEl;
|
|
263
|
+
const rootKeys = Object.keys(rootObj);
|
|
264
|
+
if (rootKeys.some((k) => k.startsWith('__reactFiber') || k.startsWith('__reactInternalInstance'))) {
|
|
265
|
+
return null;
|
|
266
|
+
}
|
|
267
|
+
const hasPreact = rootKeys.some((k) => k === '__k' || k === '__e' || k === '_dom');
|
|
268
|
+
if (!hasPreact)
|
|
269
|
+
return null;
|
|
270
|
+
const states = [];
|
|
271
|
+
const visited = new WeakSet();
|
|
272
|
+
const visitVNode = (vnode, depth) => {
|
|
273
|
+
if (!vnode || depth > opts.maxDepth || visited.has(vnode))
|
|
274
|
+
return;
|
|
275
|
+
visited.add(vnode);
|
|
276
|
+
const component = vnode['__c'];
|
|
277
|
+
if (component) {
|
|
278
|
+
const compState = component['state'];
|
|
279
|
+
const compProps = component['props'];
|
|
280
|
+
const hooks = component['__H'];
|
|
281
|
+
const hookStates = [];
|
|
282
|
+
if (hooks) {
|
|
283
|
+
const list = hooks['__'];
|
|
284
|
+
if (Array.isArray(list)) {
|
|
285
|
+
for (const h of list.slice(0, 20)) {
|
|
286
|
+
const val = h['__'] ?? h['_value'];
|
|
287
|
+
if (val !== undefined)
|
|
288
|
+
hookStates.push(safeSerialize(val));
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
const typeName = vnode['type'];
|
|
293
|
+
const name = typeof typeName === 'function'
|
|
294
|
+
? (typeName['displayName'] ??
|
|
295
|
+
typeName['name'] ??
|
|
296
|
+
'PreactComponent')
|
|
297
|
+
: typeof typeName === 'string'
|
|
298
|
+
? typeName
|
|
299
|
+
: 'PreactComponent';
|
|
300
|
+
if (compState || hookStates.length > 0) {
|
|
301
|
+
states.push({
|
|
302
|
+
component: String(name),
|
|
303
|
+
state: hookStates.length > 0
|
|
304
|
+
? hookStates
|
|
305
|
+
: compState
|
|
306
|
+
? [safeSerialize(compState)]
|
|
307
|
+
: [],
|
|
308
|
+
...(compProps ? { props: safeSerialize(compProps) } : {}),
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
const children = vnode['__k'];
|
|
313
|
+
if (Array.isArray(children)) {
|
|
314
|
+
for (const child of children) {
|
|
315
|
+
if (child)
|
|
316
|
+
visitVNode(child, depth + 1);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
const rootVNode = rootObj['__k'];
|
|
321
|
+
if (Array.isArray(rootVNode)) {
|
|
322
|
+
for (const vn of rootVNode) {
|
|
323
|
+
if (vn)
|
|
324
|
+
visitVNode(vn, 0);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
else if (rootObj['_children']) {
|
|
328
|
+
const alt = rootObj['_children'];
|
|
329
|
+
if (Array.isArray(alt)) {
|
|
330
|
+
for (const vn of alt) {
|
|
331
|
+
if (vn)
|
|
332
|
+
visitVNode(vn, 0);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return states.length > 0 ? states : null;
|
|
337
|
+
};
|
|
338
|
+
const extractMetaFramework = () => {
|
|
339
|
+
const nextData = win['__NEXT_DATA__'];
|
|
340
|
+
if (nextData) {
|
|
341
|
+
return {
|
|
342
|
+
framework: 'nextjs',
|
|
343
|
+
route: nextData['page'],
|
|
344
|
+
buildId: nextData['buildId'],
|
|
345
|
+
runtimeConfig: safeSerialize(nextData['runtimeConfig']),
|
|
346
|
+
props: safeSerialize(nextData['props']),
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
const nuxt = win['__NUXT__'];
|
|
350
|
+
if (nuxt) {
|
|
351
|
+
const isNuxt3 = nuxt['config'] !== undefined || nuxt['_errors'] !== undefined;
|
|
352
|
+
if (isNuxt3) {
|
|
353
|
+
return {
|
|
354
|
+
framework: 'nuxt3',
|
|
355
|
+
state: safeSerialize(nuxt['state']),
|
|
356
|
+
config: safeSerialize(nuxt['config']),
|
|
357
|
+
payload: safeSerialize(nuxt['data']),
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
return {
|
|
361
|
+
framework: 'nuxt2',
|
|
362
|
+
state: safeSerialize(nuxt['state']),
|
|
363
|
+
serverRendered: nuxt['serverRendered'],
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
return null;
|
|
367
|
+
};
|
|
173
368
|
const rootEl = getRootEl();
|
|
174
369
|
const rootObj = rootEl;
|
|
175
370
|
const keys = Object.keys(rootObj);
|
|
371
|
+
const hasReactMarker = keys.some((k) => k.startsWith('__reactFiber') ||
|
|
372
|
+
k.startsWith('__reactInternalInstance') ||
|
|
373
|
+
k.startsWith('__reactFiberContainer'));
|
|
374
|
+
const hasVue3Marker = keys.some((k) => k === '__vueParentComponent' || k === '__vue_app__');
|
|
375
|
+
const hasVue2Marker = keys.some((k) => k === '__vue__');
|
|
376
|
+
const hasSvelteMarker = keys.some((k) => k === '$$' || k === '__svelte_meta' || k.startsWith('__s'));
|
|
377
|
+
const hasSolidMarker = win['_$DX'] !== undefined ||
|
|
378
|
+
win['_$HY'] !== undefined ||
|
|
379
|
+
Boolean(document.querySelector('[data-hk]'));
|
|
380
|
+
const hasPreactMarker = keys.some((k) => k === '__k' || k === '__e' || k === '_dom' || k === '_children');
|
|
176
381
|
let detectedFramework = opts.framework;
|
|
382
|
+
if (detectedFramework === 'preact' && hasReactMarker) {
|
|
383
|
+
detectedFramework = 'react';
|
|
384
|
+
}
|
|
177
385
|
if (detectedFramework === 'auto') {
|
|
178
|
-
if (
|
|
386
|
+
if (hasReactMarker) {
|
|
179
387
|
detectedFramework = 'react';
|
|
180
388
|
}
|
|
181
|
-
else if (
|
|
389
|
+
else if (hasVue3Marker) {
|
|
182
390
|
detectedFramework = 'vue3';
|
|
183
391
|
}
|
|
184
|
-
else if (
|
|
392
|
+
else if (hasVue2Marker) {
|
|
185
393
|
detectedFramework = 'vue2';
|
|
186
394
|
}
|
|
395
|
+
else if (hasSvelteMarker) {
|
|
396
|
+
detectedFramework = 'svelte';
|
|
397
|
+
}
|
|
398
|
+
else if (hasSolidMarker) {
|
|
399
|
+
detectedFramework = 'solid';
|
|
400
|
+
}
|
|
401
|
+
else if (hasPreactMarker) {
|
|
402
|
+
detectedFramework = 'preact';
|
|
403
|
+
}
|
|
187
404
|
}
|
|
188
405
|
let states = null;
|
|
189
406
|
if (detectedFramework === 'react' || detectedFramework === 'auto') {
|
|
@@ -195,10 +412,21 @@ export class FrameworkStateHandlers {
|
|
|
195
412
|
if (!states && (detectedFramework === 'vue2' || detectedFramework === 'auto')) {
|
|
196
413
|
states = extractVue2();
|
|
197
414
|
}
|
|
415
|
+
if (!states && (detectedFramework === 'svelte' || detectedFramework === 'auto')) {
|
|
416
|
+
states = extractSvelte();
|
|
417
|
+
}
|
|
418
|
+
if (!states && (detectedFramework === 'solid' || detectedFramework === 'auto')) {
|
|
419
|
+
states = extractSolid();
|
|
420
|
+
}
|
|
421
|
+
if (!states && (detectedFramework === 'preact' || detectedFramework === 'auto')) {
|
|
422
|
+
states = extractPreact();
|
|
423
|
+
}
|
|
424
|
+
const meta = extractMetaFramework();
|
|
198
425
|
return {
|
|
199
426
|
detected: detectedFramework,
|
|
200
427
|
states: states ?? [],
|
|
201
428
|
found: states !== null && states.length > 0,
|
|
429
|
+
...(meta ? { meta } : {}),
|
|
202
430
|
};
|
|
203
431
|
}, { framework, selector, maxDepth });
|
|
204
432
|
const result = (await Promise.race([
|
|
@@ -13,33 +13,24 @@ export class IndexedDBDumpHandlers {
|
|
|
13
13
|
const result = await page.evaluate(async (opts) => {
|
|
14
14
|
const dbList = await indexedDB.databases();
|
|
15
15
|
const output = {};
|
|
16
|
-
const openDb = (name, version) => new Promise((resolve, reject) => {
|
|
17
|
-
const req = version ? indexedDB.open(name, version) : indexedDB.open(name);
|
|
18
|
-
req.onsuccess = () => resolve(req.result);
|
|
19
|
-
req.onerror = () => reject(req.error);
|
|
20
|
-
});
|
|
21
|
-
const getAllFromStore = (db, storeName, max) => new Promise((resolve, reject) => {
|
|
22
|
-
try {
|
|
23
|
-
const tx = db.transaction(storeName, 'readonly');
|
|
24
|
-
const req = tx.objectStore(storeName).getAll();
|
|
25
|
-
req.onsuccess = () => resolve(req.result.slice(0, max));
|
|
26
|
-
req.onerror = () => reject(req.error);
|
|
27
|
-
}
|
|
28
|
-
catch (e) {
|
|
29
|
-
reject(e);
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
16
|
for (const dbInfo of dbList) {
|
|
33
17
|
if (!dbInfo.name)
|
|
34
18
|
continue;
|
|
35
19
|
if (opts.database && dbInfo.name !== opts.database)
|
|
36
20
|
continue;
|
|
21
|
+
const dbName = dbInfo.name;
|
|
37
22
|
let db;
|
|
38
23
|
try {
|
|
39
|
-
db = await
|
|
24
|
+
db = await new Promise((resolve, reject) => {
|
|
25
|
+
const req = dbInfo.version
|
|
26
|
+
? indexedDB.open(dbName, dbInfo.version)
|
|
27
|
+
: indexedDB.open(dbName);
|
|
28
|
+
req.addEventListener('success', () => resolve(req.result), { once: true });
|
|
29
|
+
req.addEventListener('error', () => reject(req.error), { once: true });
|
|
30
|
+
});
|
|
40
31
|
}
|
|
41
32
|
catch {
|
|
42
|
-
output[
|
|
33
|
+
output[dbName] = { __error__: ['failed to open'] };
|
|
43
34
|
continue;
|
|
44
35
|
}
|
|
45
36
|
const storeNames = Array.from(db.objectStoreNames);
|
|
@@ -48,14 +39,24 @@ export class IndexedDBDumpHandlers {
|
|
|
48
39
|
if (opts.store && storeName !== opts.store)
|
|
49
40
|
continue;
|
|
50
41
|
try {
|
|
51
|
-
dbData[storeName] = await
|
|
42
|
+
dbData[storeName] = await new Promise((resolve, reject) => {
|
|
43
|
+
try {
|
|
44
|
+
const tx = db.transaction(storeName, 'readonly');
|
|
45
|
+
const req = tx.objectStore(storeName).getAll();
|
|
46
|
+
req.addEventListener('success', () => resolve(req.result.slice(0, opts.maxRecords)), { once: true });
|
|
47
|
+
req.addEventListener('error', () => reject(req.error), { once: true });
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
reject(e);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
52
53
|
}
|
|
53
54
|
catch {
|
|
54
55
|
dbData[storeName] = ['__error reading store__'];
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
58
|
db.close();
|
|
58
|
-
output[
|
|
59
|
+
output[dbName] = dbData;
|
|
59
60
|
}
|
|
60
61
|
return output;
|
|
61
62
|
}, { database, store, maxRecords });
|
|
@@ -24,7 +24,7 @@ export class ScriptManagementHandlers {
|
|
|
24
24
|
async handleGetScriptSource(args) {
|
|
25
25
|
const scriptId = argString(args, 'scriptId');
|
|
26
26
|
const url = argString(args, 'url');
|
|
27
|
-
const preview = argBool(args, 'preview',
|
|
27
|
+
const preview = argBool(args, 'preview', true);
|
|
28
28
|
const maxLines = argNumber(args, 'maxLines', 100);
|
|
29
29
|
const startLine = argNumber(args, 'startLine');
|
|
30
30
|
const endLine = argNumber(args, 'endLine');
|
|
@@ -3,7 +3,7 @@ import { argString } from '../../../domains/shared/parse-args.js';
|
|
|
3
3
|
import { CDPTimingProxy } from '../../../../modules/stealth/CDPTimingProxy.js';
|
|
4
4
|
import { DEFAULT_TIMING_OPTIONS } from '../../../../modules/stealth/CDPTimingProxy.types.js';
|
|
5
5
|
import { logger } from '../../../../utils/logger.js';
|
|
6
|
-
|
|
6
|
+
const jitterOptions = { ...DEFAULT_TIMING_OPTIONS };
|
|
7
7
|
let fingerprintManagerInstance = null;
|
|
8
8
|
async function getFingerprintManager() {
|
|
9
9
|
if (fingerprintManagerInstance)
|
|
@@ -64,6 +64,9 @@ export class StealthInjectionHandlers {
|
|
|
64
64
|
success: true,
|
|
65
65
|
message: 'Stealth scripts injected successfully',
|
|
66
66
|
fingerprintApplied,
|
|
67
|
+
_nextStepHint: 'Stealth patches are now active. ' +
|
|
68
|
+
'Next: navigate to your target URL with page_navigate. ' +
|
|
69
|
+
'Do NOT call stealth_inject again — it only needs to run once per page.',
|
|
67
70
|
}, null, 2),
|
|
68
71
|
},
|
|
69
72
|
],
|
|
@@ -81,6 +84,9 @@ export class StealthInjectionHandlers {
|
|
|
81
84
|
success: true,
|
|
82
85
|
platform,
|
|
83
86
|
message: `User-Agent set for ${platform}`,
|
|
87
|
+
_nextStepHint: 'User-Agent is now configured. ' +
|
|
88
|
+
'Next: call stealth_inject to apply all anti-detection patches, ' +
|
|
89
|
+
'then page_navigate to your target URL.',
|
|
84
90
|
}, null, 2),
|
|
85
91
|
},
|
|
86
92
|
],
|
|
@@ -110,7 +116,7 @@ export class StealthInjectionHandlers {
|
|
|
110
116
|
}
|
|
111
117
|
async handleStealthGenerateFingerprint(args) {
|
|
112
118
|
const fm = await getFingerprintManager();
|
|
113
|
-
if (!fm
|
|
119
|
+
if (!fm?.isAvailable()) {
|
|
114
120
|
return {
|
|
115
121
|
content: [
|
|
116
122
|
{
|
|
@@ -3,7 +3,9 @@ import type { PageController } from '../../domains/shared/modules.js';
|
|
|
3
3
|
import type { DOMInspector } from '../../domains/shared/modules.js';
|
|
4
4
|
import type { ScriptManager } from '../../domains/shared/modules.js';
|
|
5
5
|
import type { ConsoleMonitor } from '../../domains/shared/modules.js';
|
|
6
|
-
import {
|
|
6
|
+
import { AICaptchaDetector } from '../../domains/shared/modules.js';
|
|
7
|
+
import { DetailedDataManager } from '../../../utils/DetailedDataManager.js';
|
|
8
|
+
import { type CamoufoxBrowserManager } from '../../domains/shared/modules.js';
|
|
7
9
|
import { BrowserControlHandlers } from '../../domains/browser/handlers/browser-control.js';
|
|
8
10
|
import { CamoufoxBrowserHandlers } from '../../domains/browser/handlers/camoufox-browser.js';
|
|
9
11
|
import { PageNavigationHandlers } from '../../domains/browser/handlers/page-navigation.js';
|
|
@@ -21,17 +23,18 @@ import { FrameworkStateHandlers } from '../../domains/browser/handlers/framework
|
|
|
21
23
|
import { IndexedDBDumpHandlers } from '../../domains/browser/handlers/indexeddb-dump.js';
|
|
22
24
|
import { DetailedDataHandlers } from '../../domains/browser/handlers/detailed-data.js';
|
|
23
25
|
import type { TabRegistry } from '../../../modules/browser/TabRegistry.js';
|
|
26
|
+
import { type CamoufoxPage } from '../../domains/browser/handlers/camoufox-flow.js';
|
|
24
27
|
export declare class BrowserToolHandlers {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
protected collector: CodeCollector;
|
|
29
|
+
protected pageController: PageController;
|
|
30
|
+
protected domInspector: DOMInspector;
|
|
31
|
+
protected scriptManager: ScriptManager;
|
|
32
|
+
protected consoleMonitor: ConsoleMonitor;
|
|
33
|
+
protected captchaDetector: AICaptchaDetector;
|
|
34
|
+
protected detailedDataManager: DetailedDataManager;
|
|
35
|
+
protected camoufoxManager: CamoufoxBrowserManager | null;
|
|
36
|
+
protected activeDriver: 'chrome' | 'camoufox';
|
|
37
|
+
protected camoufoxPage: CamoufoxPage | null;
|
|
35
38
|
private autoDetectCaptcha;
|
|
36
39
|
private autoSwitchHeadless;
|
|
37
40
|
private captchaTimeout;
|
|
@@ -54,7 +57,7 @@ export declare class BrowserToolHandlers {
|
|
|
54
57
|
private tabWorkflow;
|
|
55
58
|
private detailedData;
|
|
56
59
|
private _tabRegistry;
|
|
57
|
-
constructor(collector: CodeCollector, pageController: PageController, domInspector: DOMInspector, scriptManager: ScriptManager, consoleMonitor: ConsoleMonitor
|
|
60
|
+
constructor(collector: CodeCollector, pageController: PageController, domInspector: DOMInspector, scriptManager: ScriptManager, consoleMonitor: ConsoleMonitor);
|
|
58
61
|
getTabRegistry(): TabRegistry;
|
|
59
62
|
private getCamoufoxPage;
|
|
60
63
|
private closeCamoufox;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { AICaptchaDetector } from '../../domains/shared/modules.js';
|
|
2
|
-
import { LLMService } from '../../../services/LLMService.js';
|
|
3
2
|
import { argString, argNumber, argBool } from '../../domains/shared/parse-args.js';
|
|
4
3
|
import { DetailedDataManager } from '../../../utils/DetailedDataManager.js';
|
|
5
4
|
import { resolveOutputDirectory } from '../../../utils/outputPaths.js';
|
|
6
5
|
import { logger } from '../../../utils/logger.js';
|
|
7
|
-
import {
|
|
6
|
+
import {} from '../../domains/shared/modules.js';
|
|
8
7
|
import { BrowserControlHandlers } from '../../domains/browser/handlers/browser-control.js';
|
|
9
8
|
import { CamoufoxBrowserHandlers } from '../../domains/browser/handlers/camoufox-browser.js';
|
|
10
9
|
import { PageNavigationHandlers } from '../../domains/browser/handlers/page-navigation.js';
|
|
@@ -21,8 +20,8 @@ import { StealthInjectionHandlers } from '../../domains/browser/handlers/stealth
|
|
|
21
20
|
import { FrameworkStateHandlers } from '../../domains/browser/handlers/framework-state.js';
|
|
22
21
|
import { IndexedDBDumpHandlers } from '../../domains/browser/handlers/indexeddb-dump.js';
|
|
23
22
|
import { DetailedDataHandlers } from '../../domains/browser/handlers/detailed-data.js';
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
23
|
+
import {} from '../../domains/browser/handlers/js-heap.js';
|
|
24
|
+
import {} from '../../domains/browser/handlers/tab-workflow.js';
|
|
26
25
|
import { initializeBrowserHandlerModules } from '../../domains/browser/handlers/facade-initializer.js';
|
|
27
26
|
import { handleHumanMouse, handleHumanScroll, handleHumanTyping, } from '../../domains/browser/handlers/human-behavior.js';
|
|
28
27
|
import { handleCaptchaVisionSolve, handleWidgetChallengeSolve, } from '../../domains/browser/handlers/captcha-solver.js';
|
|
@@ -60,14 +59,14 @@ export class BrowserToolHandlers {
|
|
|
60
59
|
tabWorkflow;
|
|
61
60
|
detailedData;
|
|
62
61
|
_tabRegistry;
|
|
63
|
-
constructor(collector, pageController, domInspector, scriptManager, consoleMonitor
|
|
62
|
+
constructor(collector, pageController, domInspector, scriptManager, consoleMonitor) {
|
|
64
63
|
this.collector = collector;
|
|
65
64
|
this.pageController = pageController;
|
|
66
65
|
this.domInspector = domInspector;
|
|
67
66
|
this.scriptManager = scriptManager;
|
|
68
67
|
this.consoleMonitor = consoleMonitor;
|
|
69
68
|
const screenshotDir = resolveOutputDirectory(process.env.CAPTCHA_SCREENSHOT_DIR, 'screenshots/captcha');
|
|
70
|
-
this.captchaDetector = new AICaptchaDetector(
|
|
69
|
+
this.captchaDetector = new AICaptchaDetector(screenshotDir);
|
|
71
70
|
this.detailedDataManager = DetailedDataManager.getInstance();
|
|
72
71
|
const modules = initializeBrowserHandlerModules({
|
|
73
72
|
collector: this.collector,
|
|
@@ -8,7 +8,7 @@ const b = (invoke) => bindByDepKey(DEP_KEY, invoke);
|
|
|
8
8
|
function ensure(ctx) {
|
|
9
9
|
ensureBrowserCore(ctx);
|
|
10
10
|
if (!ctx.browserHandlers) {
|
|
11
|
-
ctx.browserHandlers = new BrowserToolHandlers(ctx.collector, ctx.pageController, ctx.domInspector, ctx.scriptManager, ctx.consoleMonitor
|
|
11
|
+
ctx.browserHandlers = new BrowserToolHandlers(ctx.collector, ctx.pageController, ctx.domInspector, ctx.scriptManager, ctx.consoleMonitor);
|
|
12
12
|
}
|
|
13
13
|
return ctx.browserHandlers;
|
|
14
14
|
}
|
|
@@ -29,18 +29,42 @@ const manifest = {
|
|
|
29
29
|
hint: 'Browser automation workflow: bootstrap browser/page state -> navigate -> interact -> extract data',
|
|
30
30
|
},
|
|
31
31
|
prerequisites: {
|
|
32
|
-
page_navigate: [
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
32
|
+
page_navigate: [
|
|
33
|
+
{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
|
|
34
|
+
],
|
|
35
|
+
page_click: [
|
|
36
|
+
{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
|
|
37
|
+
],
|
|
38
|
+
page_type: [
|
|
39
|
+
{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
|
|
40
|
+
],
|
|
41
|
+
page_screenshot: [
|
|
42
|
+
{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
|
|
43
|
+
],
|
|
44
|
+
page_evaluate: [
|
|
45
|
+
{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
|
|
46
|
+
],
|
|
47
|
+
page_hover: [
|
|
48
|
+
{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
|
|
49
|
+
],
|
|
50
|
+
page_scroll: [
|
|
51
|
+
{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
|
|
52
|
+
],
|
|
53
|
+
page_back: [
|
|
54
|
+
{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
|
|
55
|
+
],
|
|
56
|
+
page_forward: [
|
|
57
|
+
{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
|
|
58
|
+
],
|
|
59
|
+
page_reload: [
|
|
60
|
+
{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
|
|
61
|
+
],
|
|
62
|
+
dom_get_structure: [
|
|
63
|
+
{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
|
|
64
|
+
],
|
|
65
|
+
dom_query_selector: [
|
|
66
|
+
{ condition: 'Browser must be launched', fix: 'Call browser_launch or browser_attach first' },
|
|
67
|
+
],
|
|
44
68
|
},
|
|
45
69
|
registrations: [
|
|
46
70
|
{ tool: t('get_detailed_data'), domain: DOMAIN, bind: b((h, a) => h.handleGetDetailedData(a)) },
|