@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
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
export interface RetryPolicy {
|
|
2
|
+
maxAttempts: number;
|
|
3
|
+
backoffMs: number;
|
|
4
|
+
multiplier?: number;
|
|
5
|
+
}
|
|
6
|
+
export type WorkflowNodeType = 'tool' | 'sequence' | 'parallel' | 'branch';
|
|
7
|
+
export interface ToolNode {
|
|
8
|
+
readonly kind: 'tool';
|
|
9
|
+
readonly id: string;
|
|
10
|
+
readonly toolName: string;
|
|
11
|
+
readonly input?: Record<string, unknown>;
|
|
12
|
+
readonly timeoutMs?: number;
|
|
13
|
+
readonly retry?: RetryPolicy;
|
|
14
|
+
}
|
|
15
|
+
export interface SequenceNode {
|
|
16
|
+
readonly kind: 'sequence';
|
|
17
|
+
readonly id: string;
|
|
18
|
+
readonly steps: WorkflowNode[];
|
|
19
|
+
}
|
|
20
|
+
export interface ParallelNode {
|
|
21
|
+
readonly kind: 'parallel';
|
|
22
|
+
readonly id: string;
|
|
23
|
+
readonly steps: WorkflowNode[];
|
|
24
|
+
readonly maxConcurrency?: number;
|
|
25
|
+
readonly failFast?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface BranchNode {
|
|
28
|
+
readonly kind: 'branch';
|
|
29
|
+
readonly id: string;
|
|
30
|
+
readonly predicateId: string;
|
|
31
|
+
readonly predicateFn?: (ctx: WorkflowExecutionContext) => boolean | Promise<boolean>;
|
|
32
|
+
readonly whenTrue: WorkflowNode;
|
|
33
|
+
readonly whenFalse?: WorkflowNode;
|
|
34
|
+
}
|
|
35
|
+
export type WorkflowNode = ToolNode | SequenceNode | ParallelNode | BranchNode;
|
|
36
|
+
export interface ToolNodeOptions {
|
|
37
|
+
input?: Record<string, unknown>;
|
|
38
|
+
retry?: RetryPolicy;
|
|
39
|
+
timeoutMs?: number;
|
|
40
|
+
}
|
|
41
|
+
export interface WorkflowExecutionContext {
|
|
42
|
+
readonly workflowRunId: string;
|
|
43
|
+
readonly profile: string;
|
|
44
|
+
invokeTool(toolName: string, args: Record<string, unknown>): Promise<unknown>;
|
|
45
|
+
emitSpan(name: string, attrs?: Record<string, unknown>): void;
|
|
46
|
+
emitMetric(name: string, value: number, type: 'counter' | 'gauge' | 'histogram', attrs?: Record<string, unknown>): void;
|
|
47
|
+
getConfig<T = unknown>(path: string, fallback?: T): T;
|
|
48
|
+
}
|
|
49
|
+
export interface WorkflowRouteStep {
|
|
50
|
+
readonly id: string;
|
|
51
|
+
readonly toolName: string;
|
|
52
|
+
readonly description: string;
|
|
53
|
+
readonly prerequisites: string[];
|
|
54
|
+
readonly parallel?: boolean;
|
|
55
|
+
readonly expectedInputs?: Record<string, string>;
|
|
56
|
+
readonly evidenceNodeType?: string;
|
|
57
|
+
}
|
|
58
|
+
export type WorkflowRouteKind = 'preset' | 'workflow';
|
|
59
|
+
export interface WorkflowRouteMetadata {
|
|
60
|
+
readonly kind: WorkflowRouteKind;
|
|
61
|
+
readonly triggerPatterns: RegExp[];
|
|
62
|
+
readonly steps: WorkflowRouteStep[];
|
|
63
|
+
readonly requiredDomains: string[];
|
|
64
|
+
readonly priority: number;
|
|
65
|
+
}
|
|
66
|
+
export interface WorkflowContract {
|
|
67
|
+
readonly kind: 'workflow-contract';
|
|
68
|
+
readonly version: 1;
|
|
69
|
+
readonly id: string;
|
|
70
|
+
readonly displayName: string;
|
|
71
|
+
readonly description?: string;
|
|
72
|
+
readonly tags?: string[];
|
|
73
|
+
readonly timeoutMs?: number;
|
|
74
|
+
readonly defaultMaxConcurrency?: number;
|
|
75
|
+
readonly route?: WorkflowRouteMetadata;
|
|
76
|
+
build(ctx: WorkflowExecutionContext): WorkflowNode;
|
|
77
|
+
onStart?(ctx: WorkflowExecutionContext): Promise<void> | void;
|
|
78
|
+
onFinish?(ctx: WorkflowExecutionContext, result: unknown): Promise<void> | void;
|
|
79
|
+
onError?(ctx: WorkflowExecutionContext, error: Error): Promise<void> | void;
|
|
80
|
+
}
|
|
81
|
+
export declare abstract class WorkflowNodeBuilder<T extends WorkflowNode> {
|
|
82
|
+
protected id: string;
|
|
83
|
+
constructor(id: string);
|
|
84
|
+
abstract build(): T;
|
|
85
|
+
}
|
|
86
|
+
type AnyWorkflowNodeBuilder = WorkflowNodeBuilder<WorkflowNode>;
|
|
87
|
+
export declare class ToolNodeBuilder extends WorkflowNodeBuilder<ToolNode> {
|
|
88
|
+
private toolName;
|
|
89
|
+
private _input?;
|
|
90
|
+
private _retry?;
|
|
91
|
+
private _timeoutMs?;
|
|
92
|
+
constructor(id: string, toolName: string);
|
|
93
|
+
input(input: Record<string, unknown>): this;
|
|
94
|
+
retry(policy: RetryPolicy): this;
|
|
95
|
+
timeout(ms: number): this;
|
|
96
|
+
build(): ToolNode;
|
|
97
|
+
}
|
|
98
|
+
declare abstract class CompositeNodeBuilder<T extends WorkflowNode> extends WorkflowNodeBuilder<T> {
|
|
99
|
+
protected _steps: AnyWorkflowNodeBuilder[];
|
|
100
|
+
step(nodeBuilder: AnyWorkflowNodeBuilder): this;
|
|
101
|
+
tool(id: string, toolName: string, config?: ToolNodeOptions | ((b: ToolNodeBuilder) => void)): this;
|
|
102
|
+
sequence(id: string, config?: (b: SequenceNodeBuilder) => void): this;
|
|
103
|
+
parallel(id: string, config?: (b: ParallelNodeBuilder) => void): this;
|
|
104
|
+
branch(id: string, predicateId: string, config?: (b: BranchNodeBuilder) => void): this;
|
|
105
|
+
}
|
|
106
|
+
export declare class SequenceNodeBuilder extends CompositeNodeBuilder<SequenceNode> {
|
|
107
|
+
build(): SequenceNode;
|
|
108
|
+
}
|
|
109
|
+
export declare class ParallelNodeBuilder extends CompositeNodeBuilder<ParallelNode> {
|
|
110
|
+
private _maxConcurrency?;
|
|
111
|
+
private _failFast?;
|
|
112
|
+
maxConcurrency(concurrency: number): this;
|
|
113
|
+
failFast(ff: boolean): this;
|
|
114
|
+
build(): ParallelNode;
|
|
115
|
+
}
|
|
116
|
+
export declare class BranchNodeBuilder extends WorkflowNodeBuilder<BranchNode> {
|
|
117
|
+
private predicateId;
|
|
118
|
+
private _predicateFn?;
|
|
119
|
+
private _whenTrue?;
|
|
120
|
+
private _whenFalse?;
|
|
121
|
+
constructor(id: string, predicateId: string);
|
|
122
|
+
predicateFn(fn: (ctx: WorkflowExecutionContext) => boolean | Promise<boolean>): this;
|
|
123
|
+
whenTrue(nodeBuilder: AnyWorkflowNodeBuilder): this;
|
|
124
|
+
whenFalse(nodeBuilder: AnyWorkflowNodeBuilder): this;
|
|
125
|
+
build(): BranchNode;
|
|
126
|
+
}
|
|
127
|
+
export declare class WorkflowBuilder {
|
|
128
|
+
private _id;
|
|
129
|
+
private _displayName;
|
|
130
|
+
private _description?;
|
|
131
|
+
private _tags?;
|
|
132
|
+
private _timeoutMs?;
|
|
133
|
+
private _defaultMaxConcurrency?;
|
|
134
|
+
private _route?;
|
|
135
|
+
private _buildFn;
|
|
136
|
+
private _onStart?;
|
|
137
|
+
private _onFinish?;
|
|
138
|
+
private _onError?;
|
|
139
|
+
constructor(id: string, displayName: string);
|
|
140
|
+
description(desc: string): this;
|
|
141
|
+
tags(tags: string[]): this;
|
|
142
|
+
timeoutMs(timeout: number): this;
|
|
143
|
+
defaultMaxConcurrency(max: number): this;
|
|
144
|
+
route(route: WorkflowRouteMetadata): this;
|
|
145
|
+
buildGraph(fn: (ctx: WorkflowExecutionContext) => AnyWorkflowNodeBuilder): this;
|
|
146
|
+
onStart(fn: (ctx: WorkflowExecutionContext) => Promise<void> | void): this;
|
|
147
|
+
onFinish(fn: (ctx: WorkflowExecutionContext, result: unknown) => Promise<void> | void): this;
|
|
148
|
+
onError(fn: (ctx: WorkflowExecutionContext, error: Error) => Promise<void> | void): this;
|
|
149
|
+
build(): WorkflowContract;
|
|
150
|
+
}
|
|
151
|
+
export declare function createWorkflow(id: string, displayName: string): WorkflowBuilder;
|
|
152
|
+
export declare function toolNode(id: string, toolName: string): ToolNodeBuilder;
|
|
153
|
+
export declare function sequenceNode(id: string): SequenceNodeBuilder;
|
|
154
|
+
export declare function parallelNode(id: string): ParallelNodeBuilder;
|
|
155
|
+
export declare function branchNode(id: string, predicateId: string): BranchNodeBuilder;
|
|
156
|
+
export {};
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
export class WorkflowNodeBuilder {
|
|
2
|
+
id;
|
|
3
|
+
constructor(id) {
|
|
4
|
+
this.id = id;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export class ToolNodeBuilder extends WorkflowNodeBuilder {
|
|
8
|
+
toolName;
|
|
9
|
+
_input;
|
|
10
|
+
_retry;
|
|
11
|
+
_timeoutMs;
|
|
12
|
+
constructor(id, toolName) {
|
|
13
|
+
super(id);
|
|
14
|
+
this.toolName = toolName;
|
|
15
|
+
}
|
|
16
|
+
input(input) {
|
|
17
|
+
this._input = input;
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
retry(policy) {
|
|
21
|
+
this._retry = policy;
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
timeout(ms) {
|
|
25
|
+
this._timeoutMs = ms;
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
build() {
|
|
29
|
+
return {
|
|
30
|
+
kind: 'tool',
|
|
31
|
+
id: this.id,
|
|
32
|
+
toolName: this.toolName,
|
|
33
|
+
input: this._input,
|
|
34
|
+
retry: this._retry,
|
|
35
|
+
timeoutMs: this._timeoutMs,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
class CompositeNodeBuilder extends WorkflowNodeBuilder {
|
|
40
|
+
_steps = [];
|
|
41
|
+
step(nodeBuilder) {
|
|
42
|
+
this._steps.push(nodeBuilder);
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
tool(id, toolName, config) {
|
|
46
|
+
const builder = new ToolNodeBuilder(id, toolName);
|
|
47
|
+
if (config) {
|
|
48
|
+
if (typeof config === 'function') {
|
|
49
|
+
config(builder);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
if (config.input)
|
|
53
|
+
builder.input(config.input);
|
|
54
|
+
if (config.retry)
|
|
55
|
+
builder.retry(config.retry);
|
|
56
|
+
if (config.timeoutMs !== undefined)
|
|
57
|
+
builder.timeout(config.timeoutMs);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
this._steps.push(builder);
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
sequence(id, config) {
|
|
64
|
+
const builder = new SequenceNodeBuilder(id);
|
|
65
|
+
if (config)
|
|
66
|
+
config(builder);
|
|
67
|
+
this._steps.push(builder);
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
parallel(id, config) {
|
|
71
|
+
const builder = new ParallelNodeBuilder(id);
|
|
72
|
+
if (config)
|
|
73
|
+
config(builder);
|
|
74
|
+
this._steps.push(builder);
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
branch(id, predicateId, config) {
|
|
78
|
+
const builder = new BranchNodeBuilder(id, predicateId);
|
|
79
|
+
if (config)
|
|
80
|
+
config(builder);
|
|
81
|
+
this._steps.push(builder);
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export class SequenceNodeBuilder extends CompositeNodeBuilder {
|
|
86
|
+
build() {
|
|
87
|
+
return {
|
|
88
|
+
kind: 'sequence',
|
|
89
|
+
id: this.id,
|
|
90
|
+
steps: this._steps.map((b) => b.build()),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export class ParallelNodeBuilder extends CompositeNodeBuilder {
|
|
95
|
+
_maxConcurrency = 4;
|
|
96
|
+
_failFast = false;
|
|
97
|
+
maxConcurrency(concurrency) {
|
|
98
|
+
this._maxConcurrency = concurrency;
|
|
99
|
+
return this;
|
|
100
|
+
}
|
|
101
|
+
failFast(ff) {
|
|
102
|
+
this._failFast = ff;
|
|
103
|
+
return this;
|
|
104
|
+
}
|
|
105
|
+
build() {
|
|
106
|
+
return {
|
|
107
|
+
kind: 'parallel',
|
|
108
|
+
id: this.id,
|
|
109
|
+
steps: this._steps.map((b) => b.build()),
|
|
110
|
+
maxConcurrency: this._maxConcurrency,
|
|
111
|
+
failFast: this._failFast,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export class BranchNodeBuilder extends WorkflowNodeBuilder {
|
|
116
|
+
predicateId;
|
|
117
|
+
_predicateFn;
|
|
118
|
+
_whenTrue;
|
|
119
|
+
_whenFalse;
|
|
120
|
+
constructor(id, predicateId) {
|
|
121
|
+
super(id);
|
|
122
|
+
this.predicateId = predicateId;
|
|
123
|
+
}
|
|
124
|
+
predicateFn(fn) {
|
|
125
|
+
this._predicateFn = fn;
|
|
126
|
+
return this;
|
|
127
|
+
}
|
|
128
|
+
whenTrue(nodeBuilder) {
|
|
129
|
+
this._whenTrue = nodeBuilder;
|
|
130
|
+
return this;
|
|
131
|
+
}
|
|
132
|
+
whenFalse(nodeBuilder) {
|
|
133
|
+
this._whenFalse = nodeBuilder;
|
|
134
|
+
return this;
|
|
135
|
+
}
|
|
136
|
+
build() {
|
|
137
|
+
if (!this._whenTrue) {
|
|
138
|
+
throw new Error(`BranchNode '${this.id}' requires a whenTrue step`);
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
kind: 'branch',
|
|
142
|
+
id: this.id,
|
|
143
|
+
predicateId: this.predicateId,
|
|
144
|
+
predicateFn: this._predicateFn,
|
|
145
|
+
whenTrue: this._whenTrue.build(),
|
|
146
|
+
whenFalse: this._whenFalse ? this._whenFalse.build() : undefined,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
export class WorkflowBuilder {
|
|
151
|
+
_id;
|
|
152
|
+
_displayName;
|
|
153
|
+
_description;
|
|
154
|
+
_tags;
|
|
155
|
+
_timeoutMs;
|
|
156
|
+
_defaultMaxConcurrency;
|
|
157
|
+
_route;
|
|
158
|
+
_buildFn;
|
|
159
|
+
_onStart;
|
|
160
|
+
_onFinish;
|
|
161
|
+
_onError;
|
|
162
|
+
constructor(id, displayName) {
|
|
163
|
+
this._id = id;
|
|
164
|
+
this._displayName = displayName;
|
|
165
|
+
}
|
|
166
|
+
description(desc) {
|
|
167
|
+
this._description = desc;
|
|
168
|
+
return this;
|
|
169
|
+
}
|
|
170
|
+
tags(tags) {
|
|
171
|
+
this._tags = tags;
|
|
172
|
+
return this;
|
|
173
|
+
}
|
|
174
|
+
timeoutMs(timeout) {
|
|
175
|
+
this._timeoutMs = timeout;
|
|
176
|
+
return this;
|
|
177
|
+
}
|
|
178
|
+
defaultMaxConcurrency(max) {
|
|
179
|
+
this._defaultMaxConcurrency = max;
|
|
180
|
+
return this;
|
|
181
|
+
}
|
|
182
|
+
route(route) {
|
|
183
|
+
this._route = route;
|
|
184
|
+
return this;
|
|
185
|
+
}
|
|
186
|
+
buildGraph(fn) {
|
|
187
|
+
this._buildFn = (ctx) => fn(ctx).build();
|
|
188
|
+
return this;
|
|
189
|
+
}
|
|
190
|
+
onStart(fn) {
|
|
191
|
+
this._onStart = fn;
|
|
192
|
+
return this;
|
|
193
|
+
}
|
|
194
|
+
onFinish(fn) {
|
|
195
|
+
this._onFinish = fn;
|
|
196
|
+
return this;
|
|
197
|
+
}
|
|
198
|
+
onError(fn) {
|
|
199
|
+
this._onError = fn;
|
|
200
|
+
return this;
|
|
201
|
+
}
|
|
202
|
+
build() {
|
|
203
|
+
if (!this._buildFn)
|
|
204
|
+
throw new Error(`WorkflowBuilder '${this._id}' needs a buildGraph() function.`);
|
|
205
|
+
return {
|
|
206
|
+
kind: 'workflow-contract',
|
|
207
|
+
version: 1,
|
|
208
|
+
id: this._id,
|
|
209
|
+
displayName: this._displayName,
|
|
210
|
+
description: this._description,
|
|
211
|
+
tags: this._tags,
|
|
212
|
+
timeoutMs: this._timeoutMs,
|
|
213
|
+
defaultMaxConcurrency: this._defaultMaxConcurrency,
|
|
214
|
+
route: this._route,
|
|
215
|
+
build: this._buildFn,
|
|
216
|
+
onStart: this._onStart,
|
|
217
|
+
onFinish: this._onFinish,
|
|
218
|
+
onError: this._onError,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
export function createWorkflow(id, displayName) {
|
|
223
|
+
return new WorkflowBuilder(id, displayName);
|
|
224
|
+
}
|
|
225
|
+
export function toolNode(id, toolName) {
|
|
226
|
+
return new ToolNodeBuilder(id, toolName);
|
|
227
|
+
}
|
|
228
|
+
export function sequenceNode(id) {
|
|
229
|
+
return new SequenceNodeBuilder(id);
|
|
230
|
+
}
|
|
231
|
+
export function parallelNode(id) {
|
|
232
|
+
return new ParallelNodeBuilder(id);
|
|
233
|
+
}
|
|
234
|
+
export function branchNode(id, predicateId) {
|
|
235
|
+
return new BranchNodeBuilder(id, predicateId);
|
|
236
|
+
}
|
|
@@ -58,6 +58,14 @@ export const DEFAULT_QUERY_CATEGORY_PROFILE_CONFIGS = [
|
|
|
58
58
|
{ domain: 'browser', weight: 1.1 },
|
|
59
59
|
],
|
|
60
60
|
},
|
|
61
|
+
{
|
|
62
|
+
pattern: '(?:reverse|mission|signature|hook|crypto|encrypt|websocket|\\bws\\b|protocol|bundle|webpack|deobfusc|stealth|fingerprint|evidence|\\bhar\\b|逆向|签名|加签|协议|反混淆|反检测|指纹|证据|报告)',
|
|
63
|
+
flags: 'i',
|
|
64
|
+
domainBoosts: [
|
|
65
|
+
{ domain: 'workflow', weight: 1.8 },
|
|
66
|
+
{ domain: 'analysis', weight: 1.1 },
|
|
67
|
+
],
|
|
68
|
+
},
|
|
61
69
|
];
|
|
62
70
|
export const DEFAULT_CJK_QUERY_ALIAS_CONFIGS = [
|
|
63
71
|
{ pattern: '工作流|流程编排|流程自动化|编排', tokens: ['workflow', 'flow', 'orchestration'] },
|
|
@@ -74,6 +82,14 @@ export const DEFAULT_CJK_QUERY_ALIAS_CONFIGS = [
|
|
|
74
82
|
{ pattern: '批量|并发', tokens: ['batch', 'parallel'] },
|
|
75
83
|
{ pattern: '令牌|凭证|鉴权|认证', tokens: ['token', 'auth', 'credential'] },
|
|
76
84
|
{ pattern: '提取|抽取|解析', tokens: ['extract', 'parse'] },
|
|
85
|
+
{ pattern: '签名|加签|加密|hook', tokens: ['signature', 'crypto', 'hook', 'sign'] },
|
|
86
|
+
{ pattern: '协议|消息|帧|handler', tokens: ['websocket', 'protocol', 'ws', 'handler'] },
|
|
87
|
+
{ pattern: '打包|webpack|混淆|反混淆', tokens: ['bundle', 'webpack', 'deobfuscate', 'unpack'] },
|
|
88
|
+
{
|
|
89
|
+
pattern: '反爬|反检测|指纹|stealth',
|
|
90
|
+
tokens: ['antibot', 'stealth', 'fingerprint', 'detection'],
|
|
91
|
+
},
|
|
92
|
+
{ pattern: '证据|取证|导出|报告|快照', tokens: ['evidence', 'export', 'report', 'forensic'] },
|
|
77
93
|
{ pattern: '多标签页|多标签|标签页', tokens: ['tab', 'multi'] },
|
|
78
94
|
{ pattern: '脚本库|脚本仓库', tokens: ['script', 'library'] },
|
|
79
95
|
{ pattern: '脚本', tokens: ['script'] },
|
|
@@ -81,6 +97,19 @@ export const DEFAULT_CJK_QUERY_ALIAS_CONFIGS = [
|
|
|
81
97
|
{ pattern: '导出', tokens: ['export'] },
|
|
82
98
|
{ pattern: '回放|重放', tokens: ['replay'] },
|
|
83
99
|
{ pattern: '请求', tokens: ['request'] },
|
|
100
|
+
{ pattern: '鉴权面|认证面|授权面|凭证枚举', tokens: ['auth', 'surface', 'token', 'credential'] },
|
|
101
|
+
{ pattern: '通道|通信|协议注册|协议枚举', tokens: ['protocol', 'channel', 'registry'] },
|
|
102
|
+
{ pattern: '人机|挑战|风控|拦截页', tokens: ['challenge', 'captcha', 'cloudflare', 'turnstile'] },
|
|
103
|
+
{
|
|
104
|
+
pattern: '签名谱系|签名链路|加签链路|签名追踪',
|
|
105
|
+
tokens: ['signing', 'lineage', 'signature', 'trace'],
|
|
106
|
+
},
|
|
107
|
+
{ pattern: '复现|重发|篡改|参数篡改', tokens: ['replay', 'tamper', 'request'] },
|
|
108
|
+
{
|
|
109
|
+
pattern: '反混淆链|反混淆管道|清洗|还原',
|
|
110
|
+
tokens: ['deobfuscate', 'pipeline', 'transform', 'ast'],
|
|
111
|
+
},
|
|
112
|
+
{ pattern: '桌面应用|electron|nwjs|预加载', tokens: ['electron', 'bridge', 'preload', 'ipc'] },
|
|
84
113
|
];
|
|
85
114
|
export const DEFAULT_INTENT_TOOL_BOOST_RULE_CONFIGS = [
|
|
86
115
|
{
|
|
@@ -139,6 +168,138 @@ export const DEFAULT_INTENT_TOOL_BOOST_RULE_CONFIGS = [
|
|
|
139
168
|
{ tool: 'network_extract_auth', bonus: 18 },
|
|
140
169
|
],
|
|
141
170
|
},
|
|
171
|
+
{
|
|
172
|
+
pattern: '(?:signature|crypto|encrypt|hash|hook|签名|加签|加密)',
|
|
173
|
+
flags: 'i',
|
|
174
|
+
boosts: [
|
|
175
|
+
{ tool: 'run_extension_workflow', bonus: 40 },
|
|
176
|
+
{ tool: 'list_extension_workflows', bonus: 24 },
|
|
177
|
+
{ tool: 'search_in_scripts', bonus: 12 },
|
|
178
|
+
{ tool: 'detect_crypto', bonus: 10 },
|
|
179
|
+
{ tool: 'manage_hooks', bonus: 8 },
|
|
180
|
+
],
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
pattern: '(?:websocket|\\bws\\b|protocol|socket|handler|协议|消息|帧)',
|
|
184
|
+
flags: 'i',
|
|
185
|
+
boosts: [
|
|
186
|
+
{ tool: 'run_extension_workflow', bonus: 40 },
|
|
187
|
+
{ tool: 'list_extension_workflows', bonus: 24 },
|
|
188
|
+
{ tool: 'ws_monitor_enable', bonus: 12 },
|
|
189
|
+
{ tool: 'ws_get_frames', bonus: 10 },
|
|
190
|
+
{ tool: 'ws_get_connections', bonus: 8 },
|
|
191
|
+
],
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
pattern: '(?:bundle|webpack|chunk|source.*map|deobfusc|源码|打包|混淆|反混淆)',
|
|
195
|
+
flags: 'i',
|
|
196
|
+
boosts: [
|
|
197
|
+
{ tool: 'run_extension_workflow', bonus: 40 },
|
|
198
|
+
{ tool: 'list_extension_workflows', bonus: 24 },
|
|
199
|
+
{ tool: 'js_bundle_search', bonus: 14 },
|
|
200
|
+
{ tool: 'collect_code', bonus: 10 },
|
|
201
|
+
{ tool: 'source_map_extract', bonus: 8 },
|
|
202
|
+
],
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
pattern: '(?:stealth|fingerprint|webdriver|antibot|bot.*detect|反爬|反检测|指纹)',
|
|
206
|
+
flags: 'i',
|
|
207
|
+
boosts: [
|
|
208
|
+
{ tool: 'run_extension_workflow', bonus: 40 },
|
|
209
|
+
{ tool: 'list_extension_workflows', bonus: 24 },
|
|
210
|
+
{ tool: 'stealth_inject', bonus: 10 },
|
|
211
|
+
{ tool: 'stealth_generate_fingerprint', bonus: 10 },
|
|
212
|
+
{ tool: 'stealth_verify', bonus: 8 },
|
|
213
|
+
],
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
pattern: '(?:evidence|export|har|report|snapshot|证据|导出|报告|快照|取证)',
|
|
217
|
+
flags: 'i',
|
|
218
|
+
boosts: [
|
|
219
|
+
{ tool: 'run_extension_workflow', bonus: 40 },
|
|
220
|
+
{ tool: 'list_extension_workflows', bonus: 24 },
|
|
221
|
+
{ tool: 'evidence_query_url', bonus: 14 },
|
|
222
|
+
{ tool: 'evidence_export_markdown', bonus: 12 },
|
|
223
|
+
{ tool: 'evidence_export_json', bonus: 10 },
|
|
224
|
+
],
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
pattern: '(?:auth.*surface|token.*enum|credential.*map|鉴权面|认证面|凭证枚举|jwt|csrf|api.?key|授权)',
|
|
228
|
+
flags: 'i',
|
|
229
|
+
boosts: [
|
|
230
|
+
{ tool: 'run_extension_workflow', bonus: 40 },
|
|
231
|
+
{ tool: 'list_extension_workflows', bonus: 24 },
|
|
232
|
+
{ tool: 'network_extract_auth', bonus: 14 },
|
|
233
|
+
{ tool: 'page_get_cookies', bonus: 8 },
|
|
234
|
+
],
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
pattern: '(?:protocol.*registry|channel.*enum|通道枚举|协议注册|协议归类|SSE|EventSource|beacon|postMessage)',
|
|
238
|
+
flags: 'i',
|
|
239
|
+
boosts: [
|
|
240
|
+
{ tool: 'run_extension_workflow', bonus: 40 },
|
|
241
|
+
{ tool: 'list_extension_workflows', bonus: 24 },
|
|
242
|
+
{ tool: 'ws_monitor_enable', bonus: 10 },
|
|
243
|
+
{ tool: 'sse_monitor_enable', bonus: 10 },
|
|
244
|
+
{ tool: 'network_get_requests', bonus: 8 },
|
|
245
|
+
],
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
pattern: '(?:challenge|turnstile|cloudflare|hcaptcha|datadome|akamai|perimeterx|kasada|人机|挑战|风控|拦截页)',
|
|
249
|
+
flags: 'i',
|
|
250
|
+
boosts: [
|
|
251
|
+
{ tool: 'run_extension_workflow', bonus: 40 },
|
|
252
|
+
{ tool: 'list_extension_workflows', bonus: 24 },
|
|
253
|
+
{ tool: 'captcha_detect', bonus: 14 },
|
|
254
|
+
{ tool: 'stealth_verify', bonus: 10 },
|
|
255
|
+
],
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
pattern: '(?:signing.*lineage|签名谱系|签名链路|加签链路|签名追踪|plaintext.*cipher|明文.*密文)',
|
|
259
|
+
flags: 'i',
|
|
260
|
+
boosts: [
|
|
261
|
+
{ tool: 'run_extension_workflow', bonus: 40 },
|
|
262
|
+
{ tool: 'list_extension_workflows', bonus: 24 },
|
|
263
|
+
{ tool: 'detect_crypto', bonus: 12 },
|
|
264
|
+
{ tool: 'extract_function_tree', bonus: 10 },
|
|
265
|
+
{ tool: 'manage_hooks', bonus: 8 },
|
|
266
|
+
],
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
pattern: '(?:replay.*lab|request.*replay|复现|重发|篡改|参数篡改|request.*tamper)',
|
|
270
|
+
flags: 'i',
|
|
271
|
+
boosts: [
|
|
272
|
+
{ tool: 'run_extension_workflow', bonus: 40 },
|
|
273
|
+
{ tool: 'list_extension_workflows', bonus: 24 },
|
|
274
|
+
{ tool: 'network_replay_request', bonus: 14 },
|
|
275
|
+
{ tool: 'instrumentation_network_replay', bonus: 12 },
|
|
276
|
+
{ tool: 'network_export_har', bonus: 8 },
|
|
277
|
+
],
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
pattern: '(?:deobfusc.*pipeline|反混淆链|反混淆管道|清洗|还原|ast.*transform|packer|unpack)',
|
|
281
|
+
flags: 'i',
|
|
282
|
+
boosts: [
|
|
283
|
+
{ tool: 'run_extension_workflow', bonus: 40 },
|
|
284
|
+
{ tool: 'list_extension_workflows', bonus: 24 },
|
|
285
|
+
{ tool: 'webcrack_unpack', bonus: 14 },
|
|
286
|
+
{ tool: 'ast_transform_apply', bonus: 12 },
|
|
287
|
+
{ tool: 'deobfuscate', bonus: 10 },
|
|
288
|
+
{ tool: 'detect_obfuscation', bonus: 8 },
|
|
289
|
+
],
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
pattern: '(?:electron|nwjs|preload|ipc|asar|桌面应用|预加载|桥接|electron.*bridge)',
|
|
293
|
+
flags: 'i',
|
|
294
|
+
boosts: [
|
|
295
|
+
{ tool: 'run_extension_workflow', bonus: 40 },
|
|
296
|
+
{ tool: 'list_extension_workflows', bonus: 24 },
|
|
297
|
+
{ tool: 'electron_inspect_app', bonus: 14 },
|
|
298
|
+
{ tool: 'electron_ipc_sniff', bonus: 12 },
|
|
299
|
+
{ tool: 'asar_search', bonus: 10 },
|
|
300
|
+
{ tool: 'electron_check_fuses', bonus: 8 },
|
|
301
|
+
],
|
|
302
|
+
},
|
|
142
303
|
];
|
|
143
304
|
export const DEFAULT_SEARCH_CONFIG = {
|
|
144
305
|
queryCategoryProfiles: DEFAULT_QUERY_CATEGORY_PROFILE_CONFIGS,
|
package/dist/src/constants.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export declare const SHUTDOWN_TIMEOUT_MS: number;
|
|
2
|
+
export declare const RUNTIME_ERROR_WINDOW_MS: number;
|
|
3
|
+
export declare const RUNTIME_ERROR_THRESHOLD: number;
|
|
1
4
|
export declare const DEBUG_PORT_CANDIDATES: number[];
|
|
2
5
|
export declare const DEFAULT_DEBUG_PORT: number;
|
|
3
6
|
export declare const GHIDRA_BRIDGE_ENDPOINT: string;
|
package/dist/src/constants.js
CHANGED
|
@@ -40,6 +40,9 @@ const csv = (key, fallback) => {
|
|
|
40
40
|
.filter(Boolean);
|
|
41
41
|
return parsed.length > 0 ? parsed : fallback;
|
|
42
42
|
};
|
|
43
|
+
export const SHUTDOWN_TIMEOUT_MS = int('SHUTDOWN_TIMEOUT_MS', 10_000);
|
|
44
|
+
export const RUNTIME_ERROR_WINDOW_MS = int('RUNTIME_ERROR_WINDOW_MS', 60_000);
|
|
45
|
+
export const RUNTIME_ERROR_THRESHOLD = int('RUNTIME_ERROR_THRESHOLD', 5);
|
|
43
46
|
export const DEBUG_PORT_CANDIDATES = list('DEBUG_PORT_CANDIDATES', [9222, 9229, 9333, 2039]);
|
|
44
47
|
export const DEFAULT_DEBUG_PORT = int('DEFAULT_DEBUG_PORT', 9222);
|
|
45
48
|
export const GHIDRA_BRIDGE_ENDPOINT = str('GHIDRA_BRIDGE_URL', 'http://127.0.0.1:18080');
|
|
@@ -146,7 +149,7 @@ export const PARALLEL_DEFAULT_TIMEOUT_MS = int('PARALLEL_DEFAULT_TIMEOUT_MS', 60
|
|
|
146
149
|
export const PARALLEL_DEFAULT_MAX_RETRIES = int('PARALLEL_DEFAULT_MAX_RETRIES', 2);
|
|
147
150
|
export const PARALLEL_RETRY_BACKOFF_BASE_MS = int('PARALLEL_RETRY_BACKOFF_BASE_MS', 1_000);
|
|
148
151
|
export const CACHE_GLOBAL_MAX_SIZE_BYTES = int('CACHE_GLOBAL_MAX_SIZE_BYTES', 500 * 1024 * 1024);
|
|
149
|
-
export const CACHE_LOW_HIT_RATE_THRESHOLD =
|
|
152
|
+
export const CACHE_LOW_HIT_RATE_THRESHOLD = float('CACHE_LOW_HIT_RATE_THRESHOLD', 0.3);
|
|
150
153
|
export const TOKEN_BUDGET_MAX_TOKENS = int('TOKEN_BUDGET_MAX_TOKENS', 200_000);
|
|
151
154
|
export const DETAILED_DATA_DEFAULT_TTL_MS = int('DETAILED_DATA_DEFAULT_TTL_MS', 30 * 60 * 1000);
|
|
152
155
|
export const DETAILED_DATA_MAX_TTL_MS = int('DETAILED_DATA_MAX_TTL_MS', 60 * 60 * 1000);
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export
|
|
2
|
+
export declare function main(): Promise<void>;
|
package/dist/src/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { logger } from './utils/logger.js';
|
|
|
5
5
|
import { initRegistry } from './server/registry/index.js';
|
|
6
6
|
import { resolveCliFastPath } from './utils/cliFastPath.js';
|
|
7
7
|
import { cleanupArtifacts, getArtifactRetentionConfig, startArtifactRetentionScheduler, } from './utils/artifactRetention.js';
|
|
8
|
-
|
|
8
|
+
import { SHUTDOWN_TIMEOUT_MS, RUNTIME_ERROR_WINDOW_MS, RUNTIME_ERROR_THRESHOLD, } from './constants.js';
|
|
9
9
|
const FATAL_ERROR_CODES = new Set([
|
|
10
10
|
'ERR_WORKER_OUT_OF_MEMORY',
|
|
11
11
|
'ERR_MEMORY_ALLOCATION_FAILED',
|
|
@@ -41,8 +41,16 @@ function formatUnknownError(input) {
|
|
|
41
41
|
return String(input);
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
-
async function main() {
|
|
44
|
+
export async function main() {
|
|
45
45
|
try {
|
|
46
|
+
const cliFastPath = resolveCliFastPath(process.argv.slice(2), import.meta.url);
|
|
47
|
+
if (cliFastPath.handled) {
|
|
48
|
+
if (cliFastPath.output) {
|
|
49
|
+
process.stdout.write(cliFastPath.output);
|
|
50
|
+
}
|
|
51
|
+
process.exit(cliFastPath.exitCode);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
46
54
|
const config = getConfig();
|
|
47
55
|
logger.debug('Configuration loaded:', config);
|
|
48
56
|
const validation = validateConfig(config);
|
|
@@ -50,12 +58,7 @@ async function main() {
|
|
|
50
58
|
logger.error('Configuration validation failed:');
|
|
51
59
|
validation.errors.forEach((error) => logger.error(` - ${error}`));
|
|
52
60
|
process.exit(1);
|
|
53
|
-
|
|
54
|
-
if (config.llm.provider === 'openai' && !config.llm.openai?.apiKey) {
|
|
55
|
-
logger.warn('OPENAI_API_KEY is not configured. AI-assisted tools may return configuration errors.');
|
|
56
|
-
}
|
|
57
|
-
if (config.llm.provider === 'anthropic' && !config.llm.anthropic?.apiKey) {
|
|
58
|
-
logger.warn('ANTHROPIC_API_KEY is not configured. AI-assisted tools may return configuration errors.');
|
|
61
|
+
return;
|
|
59
62
|
}
|
|
60
63
|
const artifactRetention = getArtifactRetentionConfig();
|
|
61
64
|
if (artifactRetention.cleanupOnStart && artifactRetention.enabled) {
|
|
@@ -68,8 +71,8 @@ async function main() {
|
|
|
68
71
|
await initRegistry();
|
|
69
72
|
const server = new MCPServer(config);
|
|
70
73
|
const stopArtifactRetentionScheduler = startArtifactRetentionScheduler();
|
|
71
|
-
const recoveryWindowMs = Math.max(1000,
|
|
72
|
-
const maxRecoverableErrors = Math.max(1,
|
|
74
|
+
const recoveryWindowMs = Math.max(1000, RUNTIME_ERROR_WINDOW_MS);
|
|
75
|
+
const maxRecoverableErrors = Math.max(1, RUNTIME_ERROR_THRESHOLD);
|
|
73
76
|
const runtimeRecovery = {
|
|
74
77
|
windowStart: Date.now(),
|
|
75
78
|
errorCount: 0,
|
|
@@ -175,11 +178,4 @@ async function main() {
|
|
|
175
178
|
process.exit(1);
|
|
176
179
|
}
|
|
177
180
|
}
|
|
178
|
-
const cliFastPath = resolveCliFastPath(process.argv.slice(2), import.meta.url);
|
|
179
|
-
if (cliFastPath.handled) {
|
|
180
|
-
if (cliFastPath.output) {
|
|
181
|
-
process.stdout.write(cliFastPath.output);
|
|
182
|
-
}
|
|
183
|
-
process.exit(cliFastPath.exitCode);
|
|
184
|
-
}
|
|
185
181
|
void main();
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { UnderstandCodeOptions, UnderstandCodeResult } from '../../types/index.js';
|
|
2
|
-
import { LLMService } from '../../services/LLMService.js';
|
|
3
2
|
export declare class CodeAnalyzer {
|
|
4
|
-
|
|
5
|
-
constructor(llm: LLMService);
|
|
3
|
+
constructor(legacyDependency?: unknown);
|
|
6
4
|
understand(options: UnderstandCodeOptions): Promise<UnderstandCodeResult>;
|
|
7
5
|
private analyzeStructure;
|
|
8
6
|
private aiAnalyze;
|