@jshookmcp/jshook 0.2.3 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -5
- package/README.zh.md +18 -3
- package/dist/packages/extension-sdk/src/bridges/shared.js +2 -2
- package/dist/packages/extension-sdk/src/plugin.d.ts +5 -0
- package/dist/packages/extension-sdk/src/plugin.js +119 -33
- package/dist/packages/extension-sdk/src/workflow.d.ts +171 -0
- package/dist/packages/extension-sdk/src/workflow.js +272 -0
- package/dist/src/config/search-defaults.js +161 -0
- package/dist/src/constants.d.ts +3 -0
- package/dist/src/constants.js +4 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +13 -17
- package/dist/src/modules/analyzer/CodeAnalyzer.d.ts +1 -3
- package/dist/src/modules/analyzer/CodeAnalyzer.js +16 -28
- package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.d.ts +1 -2
- package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.js +1 -45
- package/dist/src/modules/analyzer/IntelligentAnalyzer.d.ts +1 -37
- package/dist/src/modules/analyzer/IntelligentAnalyzer.js +9 -142
- package/dist/src/modules/analyzer/PatternDetector.js +3 -3
- package/dist/src/modules/analyzer/PatternDetectorAuthPatterns.js +1 -1
- package/dist/src/modules/browser/BrowserDiscovery.js +2 -2
- package/dist/src/modules/browser/BrowserModeManager.js +11 -10
- package/dist/src/modules/browser/BrowserPool.d.ts +49 -0
- package/dist/src/modules/browser/BrowserPool.js +288 -0
- package/dist/src/modules/browser/TabRegistry.js +2 -2
- package/dist/src/modules/browser/UnifiedBrowserManager.d.ts +1 -0
- package/dist/src/modules/browser/UnifiedBrowserManager.js +18 -3
- package/dist/src/modules/captcha/AICaptchaDetector.d.ts +1 -10
- package/dist/src/modules/captcha/AICaptchaDetector.js +7 -201
- package/dist/src/modules/collector/CodeCollector.js +4 -5
- package/dist/src/modules/collector/DOMInspector.js +48 -58
- package/dist/src/modules/collector/PageController.d.ts +17 -4
- package/dist/src/modules/collector/PageController.js +2 -5
- package/dist/src/modules/collector/PageScriptCollectors.js +3 -3
- package/dist/src/modules/crypto/CryptoDetector.d.ts +1 -4
- package/dist/src/modules/crypto/CryptoDetector.js +2 -42
- package/dist/src/modules/crypto/CryptoRules.js +1 -1
- package/dist/src/modules/debugger/BlackboxManager.js +1 -1
- package/dist/src/modules/debugger/DebuggerManager.impl.core.scope.js +1 -1
- package/dist/src/modules/debugger/ScriptManager.impl.extract-function-tree.js +4 -2
- package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
- package/dist/src/modules/deobfuscator/AdvancedDeobfuscator.d.ts +5 -0
- package/dist/src/modules/deobfuscator/AdvancedDeobfuscator.js +43 -2
- package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
- package/dist/src/modules/deobfuscator/Deobfuscator.js +9 -39
- package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.d.ts +0 -3
- package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.js +2 -8
- package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.d.ts +1 -2
- package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +3 -55
- package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
- package/dist/src/modules/deobfuscator/VMDeobfuscator.d.ts +2 -10
- package/dist/src/modules/deobfuscator/VMDeobfuscator.js +3 -128
- package/dist/src/modules/deobfuscator/webcrack.js +15 -2
- package/dist/src/modules/emulator/AIEnvironmentAnalyzer.d.ts +5 -8
- package/dist/src/modules/emulator/AIEnvironmentAnalyzer.js +10 -102
- package/dist/src/modules/emulator/EnvironmentEmulator.d.ts +1 -5
- package/dist/src/modules/emulator/EnvironmentEmulator.js +7 -91
- package/dist/src/modules/emulator/EnvironmentEmulatorFetch.js +58 -61
- package/dist/src/modules/emulator/templates/chrome-env.d.ts +17 -7
- package/dist/src/modules/emulator/templates/chrome-env.js +14 -7
- package/dist/src/modules/external/ExternalToolRunner.js +25 -22
- package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.compose.js +5 -5
- package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.network.js +311 -311
- package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.runtime.js +410 -410
- package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.storage.js +122 -122
- package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.d.ts +13 -0
- package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.js +42 -0
- package/dist/src/modules/monitor/ConsoleMonitor.impl.core.dynamic.js +194 -194
- package/dist/src/modules/monitor/FetchInterceptor.d.ts +46 -0
- package/dist/src/modules/monitor/FetchInterceptor.js +191 -0
- package/dist/src/modules/monitor/PerformanceMonitor.js +8 -7
- package/dist/src/modules/monitor/PlaywrightNetworkMonitor.js +62 -62
- package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
- package/dist/src/modules/process/LinuxProcessManager.js +2 -0
- package/dist/src/modules/process/MacProcessManager.js +25 -25
- package/dist/src/modules/process/MemoryManager.d.ts +1 -1
- package/dist/src/modules/process/MemoryManager.js +2 -2
- package/dist/src/modules/process/memory/AuditTrail.js +1 -1
- package/dist/src/modules/process/memory/availability.js +49 -49
- package/dist/src/modules/process/memory/injector.js +185 -185
- package/dist/src/modules/process/memory/reader.js +85 -53
- package/dist/src/modules/process/memory/regions.dump.js +51 -51
- package/dist/src/modules/process/memory/regions.enumerate.js +108 -108
- package/dist/src/modules/process/memory/regions.modules.js +80 -80
- package/dist/src/modules/process/memory/regions.protection.js +148 -115
- package/dist/src/modules/process/memory/scanner.d.ts +5 -1
- package/dist/src/modules/process/memory/scanner.darwin.js +98 -41
- package/dist/src/modules/process/memory/scanner.js +88 -4
- package/dist/src/modules/process/memory/scanner.windows.js +124 -124
- package/dist/src/modules/process/memory/writer.js +98 -58
- package/dist/src/modules/security/ExecutionSandbox.js +51 -52
- package/dist/src/modules/stealth/FingerprintManager.js +1 -1
- package/dist/src/modules/stealth/StealthScripts.d.ts +1 -0
- package/dist/src/modules/stealth/StealthScripts.js +18 -13
- package/dist/src/modules/stealth/StealthVerifier.js +1 -3
- package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.d.ts +14 -0
- package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.js +181 -2
- package/dist/src/modules/trace/TraceDB.js +75 -69
- package/dist/src/modules/trace/TraceRecorder.js +1 -5
- package/dist/src/native/AntiCheatDetector.js +67 -16
- package/dist/src/native/CodeInjector.js +3 -3
- package/dist/src/native/HardwareBreakpoint.js +24 -15
- package/dist/src/native/HeapAnalyzer.js +2 -2
- package/dist/src/native/MemoryController.js +1 -1
- package/dist/src/native/MemoryScanSession.js +2 -2
- package/dist/src/native/MemoryScanner.js +4 -8
- package/dist/src/native/NativeMemoryManager.impl.js +2 -2
- package/dist/src/native/PEAnalyzer.js +14 -15
- package/dist/src/native/PointerChainEngine.js +2 -4
- package/dist/src/native/ScriptLoader.js +4 -9
- package/dist/src/native/Speedhack.js +1 -1
- package/dist/src/native/StructureAnalyzer.js +52 -33
- package/dist/src/native/Win32API.d.ts +1 -0
- package/dist/src/native/Win32API.js +13 -0
- package/dist/src/native/Win32Debug.js +19 -19
- package/dist/src/native/platform/darwin/DarwinAPI.d.ts +2 -0
- package/dist/src/native/platform/darwin/DarwinAPI.js +8 -0
- package/dist/src/native/platform/darwin/DarwinMemoryProvider.js +6 -1
- package/dist/src/server/MCPServer.context.d.ts +3 -1
- package/dist/src/server/MCPServer.d.ts +2 -1
- package/dist/src/server/MCPServer.domain.d.ts +1 -1
- package/dist/src/server/MCPServer.domain.js +81 -16
- package/dist/src/server/MCPServer.js +41 -14
- package/dist/src/server/MCPServer.resources.d.ts +2 -0
- package/dist/src/server/MCPServer.resources.js +91 -0
- package/dist/src/server/MCPServer.search.handlers.call.js +2 -1
- package/dist/src/server/MCPServer.search.helpers.js +1 -1
- package/dist/src/server/MCPServer.transport.js +12 -0
- package/dist/src/server/ToolCallContextGuard.js +8 -0
- package/dist/src/server/ToolRouter.d.ts +25 -9
- package/dist/src/server/ToolRouter.intent.d.ts +26 -0
- package/dist/src/server/ToolRouter.intent.js +77 -0
- package/dist/src/server/ToolRouter.js +103 -284
- package/dist/src/server/ToolRouter.policy.d.ts +22 -0
- package/dist/src/server/ToolRouter.policy.js +163 -0
- package/dist/src/server/ToolRouter.probe.d.ts +17 -0
- package/dist/src/server/ToolRouter.probe.js +103 -0
- package/dist/src/server/ToolRouter.renderer.d.ts +9 -0
- package/dist/src/server/ToolRouter.renderer.js +52 -0
- package/dist/src/server/activation/ActivationController.js +15 -12
- package/dist/src/server/activation/CompoundConditionEngine.js +1 -1
- package/dist/src/server/activation/PredictiveBooster.js +1 -3
- package/dist/src/server/domains/analysis/definitions.js +155 -655
- package/dist/src/server/domains/analysis/handlers.impl.js +26 -20
- package/dist/src/server/domains/analysis/handlers.web-tools.js +2 -1
- package/dist/src/server/domains/analysis/manifest.js +6 -4
- package/dist/src/server/domains/antidebug/definitions.js +25 -111
- package/dist/src/server/domains/browser/definitions.tools.advanced.js +59 -88
- package/dist/src/server/domains/browser/definitions.tools.behavior.js +120 -227
- package/dist/src/server/domains/browser/definitions.tools.page-core.js +210 -439
- package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
- package/dist/src/server/domains/browser/definitions.tools.runtime.js +98 -211
- package/dist/src/server/domains/browser/definitions.tools.security.js +194 -339
- package/dist/src/server/domains/browser/handlers/camoufox-browser.js +3 -2
- package/dist/src/server/domains/browser/handlers/captcha-solver.js +3 -3
- package/dist/src/server/domains/browser/handlers/dom-query.js +2 -1
- package/dist/src/server/domains/browser/handlers/framework-state.js +27 -9
- package/dist/src/server/domains/browser/handlers/indexeddb-dump.js +21 -20
- package/dist/src/server/domains/browser/handlers/script-management.js +1 -1
- package/dist/src/server/domains/browser/handlers/stealth-injection.d.ts +1 -0
- package/dist/src/server/domains/browser/handlers/stealth-injection.js +3 -0
- package/dist/src/server/domains/browser/handlers.impl.d.ts +1 -2
- package/dist/src/server/domains/browser/handlers.impl.js +2 -3
- package/dist/src/server/domains/browser/manifest.js +37 -13
- package/dist/src/server/domains/coordination/definitions.js +50 -216
- package/dist/src/server/domains/coordination/index.d.ts +2 -1
- package/dist/src/server/domains/coordination/index.js +1 -0
- package/dist/src/server/domains/debugger/definitions.tools.advanced.js +72 -189
- package/dist/src/server/domains/debugger/definitions.tools.core.js +114 -288
- package/dist/src/server/domains/debugger/manifest.js +9 -2
- package/dist/src/server/domains/encoding/definitions.js +43 -153
- package/dist/src/server/domains/encoding/handlers.base.js +2 -2
- package/dist/src/server/domains/evidence/definitions.d.ts +2 -0
- package/dist/src/server/domains/evidence/definitions.js +42 -0
- package/dist/src/server/domains/evidence/handlers.d.ts +582 -0
- package/dist/src/server/domains/evidence/handlers.js +60 -0
- package/dist/src/server/domains/evidence/index.d.ts +2 -0
- package/dist/src/server/domains/evidence/index.js +2 -0
- package/dist/src/server/domains/evidence/manifest.d.ts +63 -0
- package/dist/src/server/domains/evidence/manifest.js +78 -0
- package/dist/src/server/domains/graphql/definitions.js +53 -141
- package/dist/src/server/domains/graphql/handlers.impl.core.runtime.replay.js +92 -114
- package/dist/src/server/domains/graphql/handlers.impl.core.runtime.shared.js +77 -77
- package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
- package/dist/src/server/domains/hooks/ai-handlers.js +1 -67
- package/dist/src/server/domains/hooks/definitions.js +69 -335
- package/dist/src/server/domains/hooks/manifest.d.ts +1 -1
- package/dist/src/server/domains/hooks/manifest.js +1 -2
- package/dist/src/server/domains/instrumentation/definitions.d.ts +2 -0
- package/dist/src/server/domains/instrumentation/definitions.js +99 -0
- package/dist/src/server/domains/instrumentation/handlers.d.ts +78 -0
- package/dist/src/server/domains/instrumentation/handlers.js +206 -0
- package/dist/src/server/domains/instrumentation/index.d.ts +2 -0
- package/dist/src/server/domains/instrumentation/index.js +2 -0
- package/dist/src/server/domains/instrumentation/manifest.d.ts +63 -0
- package/dist/src/server/domains/instrumentation/manifest.js +114 -0
- package/dist/src/server/domains/macro/definitions.js +16 -43
- package/dist/src/server/domains/maintenance/definitions.js +60 -219
- package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
- package/dist/src/server/domains/memory/definitions.js +387 -559
- package/dist/src/server/domains/memory/handlers/hooks.d.ts +55 -0
- package/dist/src/server/domains/memory/handlers/hooks.js +115 -0
- package/dist/src/server/domains/memory/handlers/integrity.d.ts +77 -0
- package/dist/src/server/domains/memory/handlers/integrity.js +180 -0
- package/dist/src/server/domains/memory/handlers/pointer-chain.d.ts +29 -0
- package/dist/src/server/domains/memory/handlers/pointer-chain.js +82 -0
- package/dist/src/server/domains/memory/handlers/readwrite.d.ts +41 -0
- package/dist/src/server/domains/memory/handlers/readwrite.js +78 -0
- package/dist/src/server/domains/memory/handlers/scan.d.ts +35 -0
- package/dist/src/server/domains/memory/handlers/scan.js +97 -0
- package/dist/src/server/domains/memory/handlers/session.d.ts +23 -0
- package/dist/src/server/domains/memory/handlers/session.js +49 -0
- package/dist/src/server/domains/memory/handlers/structure.d.ts +29 -0
- package/dist/src/server/domains/memory/handlers/structure.js +74 -0
- package/dist/src/server/domains/memory/handlers.impl.d.ts +49 -54
- package/dist/src/server/domains/memory/handlers.impl.js +63 -494
- package/dist/src/server/domains/memory/manifest.js +236 -64
- package/dist/src/server/domains/native-bridge/definitions.js +54 -192
- package/dist/src/server/domains/native-bridge/index.d.ts +1 -0
- package/dist/src/server/domains/native-bridge/index.js +2 -1
- package/dist/src/server/domains/network/auth-extractor.js +1 -1
- package/dist/src/server/domains/network/definitions.js +175 -578
- package/dist/src/server/domains/network/handlers.base.core.d.ts +64 -0
- package/dist/src/server/domains/network/handlers.base.core.js +623 -0
- package/dist/src/server/domains/network/handlers.base.d.ts +2 -124
- package/dist/src/server/domains/network/handlers.base.js +3 -878
- package/dist/src/server/domains/network/handlers.base.performance.d.ts +63 -0
- package/dist/src/server/domains/network/handlers.base.performance.js +193 -0
- package/dist/src/server/domains/network/handlers.base.types.d.ts +42 -0
- package/dist/src/server/domains/network/handlers.base.types.js +89 -0
- package/dist/src/server/domains/network/handlers.impl.core.runtime.d.ts +1 -1
- package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.d.ts +21 -0
- package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.js +186 -0
- package/dist/src/server/domains/network/handlers.impl.core.runtime.js +1 -1
- package/dist/src/server/domains/network/manifest.js +15 -0
- package/dist/src/server/domains/network/replay.js +1 -4
- package/dist/src/server/domains/platform/definitions.js +121 -112
- package/dist/src/server/domains/platform/handlers/bridge-handlers.d.ts +4 -0
- package/dist/src/server/domains/platform/handlers/bridge-handlers.js +193 -4
- package/dist/src/server/domains/platform/handlers/electron-asar-helpers.js +26 -6
- package/dist/src/server/domains/platform/handlers/electron-dual-cdp.d.ts +3 -0
- package/dist/src/server/domains/platform/handlers/electron-dual-cdp.js +170 -0
- package/dist/src/server/domains/platform/handlers/electron-fuse-handler.d.ts +3 -0
- package/dist/src/server/domains/platform/handlers/electron-fuse-handler.js +193 -0
- package/dist/src/server/domains/platform/handlers/electron-handlers.d.ts +6 -0
- package/dist/src/server/domains/platform/handlers/electron-handlers.js +95 -2
- package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.d.ts +2 -0
- package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.js +370 -0
- package/dist/src/server/domains/platform/handlers/electron-userdata-handler.d.ts +2 -0
- package/dist/src/server/domains/platform/handlers/electron-userdata-handler.js +78 -0
- package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +3 -3
- package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.d.ts +2 -0
- package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.js +207 -0
- package/dist/src/server/domains/platform/handlers.d.ts +48 -0
- package/dist/src/server/domains/platform/handlers.js +29 -0
- package/dist/src/server/domains/platform/manifest.js +38 -0
- package/dist/src/server/domains/process/definitions.js +163 -647
- package/dist/src/server/domains/process/handlers.base.d.ts +3 -95
- package/dist/src/server/domains/process/handlers.base.js +7 -462
- package/dist/src/server/domains/process/handlers.base.process.d.ts +61 -0
- package/dist/src/server/domains/process/handlers.base.process.js +417 -0
- package/dist/src/server/domains/process/handlers.base.types.d.ts +57 -0
- package/dist/src/server/domains/process/handlers.base.types.js +50 -0
- package/dist/src/server/domains/process/handlers.impl.core.runtime.inject.js +18 -16
- package/dist/src/server/domains/process/manifest.js +6 -1
- package/dist/src/server/domains/sandbox/definitions.js +11 -33
- package/dist/src/server/domains/sandbox/handlers.js +8 -3
- package/dist/src/server/domains/shared/ResponseBuilder.d.ts +209 -0
- package/dist/src/server/domains/shared/ResponseBuilder.js +48 -0
- package/dist/src/server/domains/shared/modules.d.ts +0 -2
- package/dist/src/server/domains/shared/modules.js +0 -1
- package/dist/src/server/domains/shared-state-board/definitions.d.ts +2 -0
- package/dist/src/server/domains/shared-state-board/definitions.js +78 -0
- package/dist/src/server/domains/shared-state-board/handlers.impl.d.ts +58 -0
- package/dist/src/server/domains/shared-state-board/handlers.impl.js +419 -0
- package/dist/src/server/domains/shared-state-board/index.d.ts +2 -0
- package/dist/src/server/domains/shared-state-board/index.js +2 -0
- package/dist/src/server/domains/shared-state-board/manifest.d.ts +57 -0
- package/dist/src/server/domains/shared-state-board/manifest.js +74 -0
- package/dist/src/server/domains/sourcemap/definitions.js +27 -111
- package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-common.js +7 -2
- package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-main.js +1 -1
- package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-parse-base.js +1 -1
- package/dist/src/server/domains/sourcemap/manifest.d.ts +1 -1
- package/dist/src/server/domains/sourcemap/manifest.js +1 -1
- package/dist/src/server/domains/streaming/definitions.js +36 -148
- package/dist/src/server/domains/streaming/handlers.impl.streaming-sse.js +163 -164
- package/dist/src/server/domains/streaming/handlers.impl.streaming-ws.js +1 -1
- package/dist/src/server/domains/trace/TraceSummarizer.js +8 -5
- package/dist/src/server/domains/trace/definitions.tools.js +51 -206
- package/dist/src/server/domains/trace/handlers.js +10 -12
- package/dist/src/server/domains/trace/index.d.ts +2 -1
- package/dist/src/server/domains/trace/index.js +2 -1
- package/dist/src/server/domains/trace/manifest.js +15 -3
- package/dist/src/server/domains/transform/definitions.js +50 -210
- package/dist/src/server/domains/transform/handlers.impl.transform-base.js +108 -108
- package/dist/src/server/domains/transform/handlers.impl.transform-crypto.js +18 -19
- package/dist/src/server/domains/transform/manifest.d.ts +1 -1
- package/dist/src/server/domains/transform/manifest.js +1 -1
- package/dist/src/server/domains/wasm/definitions.js +55 -232
- package/dist/src/server/domains/wasm/handlers.js +1 -1
- package/dist/src/server/domains/workflow/definitions.js +144 -414
- package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +1 -1
- package/dist/src/server/domains/workflow/handlers.impl.workflow-api.js +51 -51
- package/dist/src/server/domains/workflow/handlers.impl.workflow-base.d.ts +2 -0
- package/dist/src/server/domains/workflow/handlers.impl.workflow-base.js +126 -87
- package/dist/src/server/domains/workflow/handlers.impl.workflow-batch.js +5 -5
- package/dist/src/server/evidence/ReverseEvidenceGraph.d.ts +20 -0
- package/dist/src/server/evidence/ReverseEvidenceGraph.js +208 -0
- package/dist/src/server/evidence/index.d.ts +2 -0
- package/dist/src/server/evidence/index.js +1 -0
- package/dist/src/server/evidence/types.d.ts +22 -0
- package/dist/src/server/evidence/types.js +1 -0
- package/dist/src/server/extensions/ExtensionManager.d.ts +1 -0
- package/dist/src/server/extensions/ExtensionManager.discovery.js +72 -9
- package/dist/src/server/extensions/ExtensionManager.integrity.js +1 -1
- package/dist/src/server/extensions/ExtensionManager.js +193 -40
- package/dist/src/server/extensions/ExtensionManager.roots.d.ts +1 -1
- package/dist/src/server/extensions/ExtensionManager.roots.js +4 -4
- package/dist/src/server/extensions/plugin-config.js +1 -1
- package/dist/src/server/extensions/plugin-env.d.ts +1 -1
- package/dist/src/server/extensions/plugin-env.js +10 -4
- package/dist/src/server/extensions/types.d.ts +17 -0
- package/dist/src/server/extensions/types.js +1 -1
- package/dist/src/server/http/SseStream.d.ts +21 -0
- package/dist/src/server/http/SseStream.js +129 -0
- package/dist/src/server/instrumentation/EvidenceGraphBridge.d.ts +13 -0
- package/dist/src/server/instrumentation/EvidenceGraphBridge.js +150 -0
- package/dist/src/server/instrumentation/InstrumentationSession.d.ts +60 -0
- package/dist/src/server/instrumentation/InstrumentationSession.js +269 -0
- package/dist/src/server/instrumentation/index.d.ts +2 -0
- package/dist/src/server/instrumentation/index.js +2 -0
- package/dist/src/server/instrumentation/types.d.ts +62 -0
- package/dist/src/server/instrumentation/types.js +7 -0
- package/dist/src/server/macros/MacroConfigLoader.d.ts +6 -5
- package/dist/src/server/macros/MacroConfigLoader.js +61 -59
- package/dist/src/server/macros/MacroRunner.js +6 -2
- package/dist/src/server/macros/builtins/index.d.ts +2 -3
- package/dist/src/server/macros/builtins/index.js +51 -7
- package/dist/src/server/plugins/PluginContract.d.ts +1 -1
- package/dist/src/server/registry/contracts.d.ts +1 -1
- package/dist/src/server/registry/discovery.js +5 -4
- package/dist/src/server/registry/ensure-browser-core.js +0 -3
- package/dist/src/server/registry/index.js +4 -4
- package/dist/src/server/registry/tool-builder.d.ts +46 -0
- package/dist/src/server/registry/tool-builder.js +105 -0
- package/dist/src/server/sandbox/QuickJSSandbox.js +16 -5
- package/dist/src/server/sandbox/SandboxHelpers.js +250 -250
- package/dist/src/server/search/EmbeddingWorker.js +5 -3
- package/dist/src/server/search/FeedbackTracker.d.ts +9 -0
- package/dist/src/server/search/FeedbackTracker.js +26 -0
- package/dist/src/server/search/QueryNormalizer.d.ts +6 -0
- package/dist/src/server/search/QueryNormalizer.js +94 -0
- package/dist/src/server/search/ToolSearchEngineImpl.d.ts +2 -3
- package/dist/src/server/search/ToolSearchEngineImpl.js +38 -88
- package/dist/src/server/teams/TeamManager.d.ts +43 -0
- package/dist/src/server/teams/TeamManager.js +238 -0
- package/dist/src/server/teams/index.d.ts +1 -0
- package/dist/src/server/teams/index.js +1 -0
- package/dist/src/server/workflows/WorkflowContract.d.ts +44 -4
- package/dist/src/server/workflows/WorkflowContract.js +52 -0
- package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
- package/dist/src/server/workflows/WorkflowEngine.js +314 -4
- package/dist/src/types/config.d.ts +0 -14
- package/dist/src/types/deobfuscator.d.ts +1 -1
- package/dist/src/types/index.d.ts +1 -1
- package/dist/src/utils/DetailedDataManager.js +2 -0
- package/dist/src/utils/RingBuffer.js +5 -5
- package/dist/src/utils/TokenBudgetManager.js +1 -1
- package/dist/src/utils/UnifiedCacheManager.js +1 -1
- package/dist/src/utils/artifactRetention.js +2 -2
- package/dist/src/utils/betterSqlite3.d.ts +11 -0
- package/dist/src/utils/betterSqlite3.js +88 -0
- package/dist/src/utils/browserExecutable.js +2 -2
- package/dist/src/utils/cache/CachedDecorator.d.ts +8 -0
- package/dist/src/utils/cache/CachedDecorator.js +55 -0
- package/dist/src/utils/cache/PersistentCache.d.ts +33 -0
- package/dist/src/utils/cache/PersistentCache.js +246 -0
- package/dist/src/utils/cache/index.d.ts +2 -0
- package/dist/src/utils/cache/index.js +2 -0
- package/dist/src/utils/cliFastPath.js +5 -8
- package/dist/src/utils/config.js +4 -26
- package/dist/src/utils/environmentDoctor.js +138 -11
- package/dist/src/utils/outputPaths.js +16 -9
- package/dist/src/utils/parallel.js +1 -3
- package/package.json +82 -81
- package/scripts/postinstall.cjs +54 -27
- package/workflows/.gitkeep +0 -0
- package/workflows/anti-bot-diagnoser/.jshook-install.json +14 -0
- package/workflows/anti-bot-diagnoser/LICENSE +21 -0
- package/workflows/anti-bot-diagnoser/README.md +105 -0
- package/workflows/anti-bot-diagnoser/docs/agent-recipes.md +44 -0
- package/workflows/anti-bot-diagnoser/meta.yaml +6 -0
- package/workflows/anti-bot-diagnoser/package.json +22 -0
- package/workflows/anti-bot-diagnoser/tsconfig.json +15 -0
- package/workflows/anti-bot-diagnoser/workflow.ts +224 -0
- package/workflows/api-openapi-probe/.jshook-install.json +14 -0
- package/workflows/api-openapi-probe/meta.yaml +6 -0
- package/workflows/api-openapi-probe/package.json +22 -0
- package/workflows/api-openapi-probe/pnpm-lock.yaml +819 -0
- package/workflows/api-openapi-probe/tsconfig.json +15 -0
- package/workflows/api-openapi-probe/workflow.ts +40 -0
- package/workflows/api-probe-batch/.jshook-install.json +14 -0
- package/workflows/api-probe-batch/LICENSE +21 -0
- package/workflows/api-probe-batch/README.md +45 -0
- package/workflows/api-probe-batch/meta.yaml +4 -0
- package/workflows/api-probe-batch/package.json +23 -0
- package/workflows/api-probe-batch/tsconfig.json +16 -0
- package/workflows/api-probe-batch/workflow.ts +111 -0
- package/workflows/auth-bootstrap/.jshook-install.json +14 -0
- package/workflows/auth-bootstrap/LICENSE +21 -0
- package/workflows/auth-bootstrap/README.md +74 -0
- package/workflows/auth-bootstrap/meta.yaml +4 -0
- package/workflows/auth-bootstrap/package.json +23 -0
- package/workflows/auth-bootstrap/tsconfig.json +16 -0
- package/workflows/auth-bootstrap/workflow.ts +141 -0
- package/workflows/auth-extract/.jshook-install.json +14 -0
- package/workflows/auth-extract/meta.yaml +6 -0
- package/workflows/auth-extract/package.json +22 -0
- package/workflows/auth-extract/pnpm-lock.yaml +819 -0
- package/workflows/auth-extract/tsconfig.json +15 -0
- package/workflows/auth-extract/workflow.ts +36 -0
- package/workflows/auth-surface-mapper/.jshook-install.json +14 -0
- package/workflows/auth-surface-mapper/meta.yaml +6 -0
- package/workflows/auth-surface-mapper/package.json +22 -0
- package/workflows/auth-surface-mapper/pnpm-lock.yaml +819 -0
- package/workflows/auth-surface-mapper/tsconfig.json +15 -0
- package/workflows/auth-surface-mapper/workflow.ts +104 -0
- package/workflows/batch-register/.jshook-install.json +14 -0
- package/workflows/batch-register/LICENSE +21 -0
- package/workflows/batch-register/README.md +39 -0
- package/workflows/batch-register/meta.yaml +4 -0
- package/workflows/batch-register/package.json +23 -0
- package/workflows/batch-register/tsconfig.json +16 -0
- package/workflows/batch-register/workflow.ts +67 -0
- package/workflows/bundle-recovery/.jshook-install.json +14 -0
- package/workflows/bundle-recovery/LICENSE +21 -0
- package/workflows/bundle-recovery/README.md +105 -0
- package/workflows/bundle-recovery/docs/agent-recipes.md +44 -0
- package/workflows/bundle-recovery/meta.yaml +6 -0
- package/workflows/bundle-recovery/package.json +22 -0
- package/workflows/bundle-recovery/tsconfig.json +15 -0
- package/workflows/bundle-recovery/workflow.ts +179 -0
- package/workflows/challenge-detector/.jshook-install.json +14 -0
- package/workflows/challenge-detector/meta.yaml +14 -0
- package/workflows/challenge-detector/package.json +22 -0
- package/workflows/challenge-detector/pnpm-lock.yaml +819 -0
- package/workflows/challenge-detector/tsconfig.json +15 -0
- package/workflows/challenge-detector/workflow.ts +298 -0
- package/workflows/deobfuscation-pipeline/.jshook-install.json +14 -0
- package/workflows/deobfuscation-pipeline/meta.yaml +6 -0
- package/workflows/deobfuscation-pipeline/package.json +22 -0
- package/workflows/deobfuscation-pipeline/pnpm-lock.yaml +819 -0
- package/workflows/deobfuscation-pipeline/tsconfig.json +15 -0
- package/workflows/deobfuscation-pipeline/workflow.ts +119 -0
- package/workflows/electron-bridge-mapper/.jshook-install.json +14 -0
- package/workflows/electron-bridge-mapper/meta.yaml +6 -0
- package/workflows/electron-bridge-mapper/package.json +22 -0
- package/workflows/electron-bridge-mapper/pnpm-lock.yaml +819 -0
- package/workflows/electron-bridge-mapper/tsconfig.json +15 -0
- package/workflows/electron-bridge-mapper/workflow.ts +125 -0
- package/workflows/evidence-pack/.jshook-install.json +14 -0
- package/workflows/evidence-pack/LICENSE +21 -0
- package/workflows/evidence-pack/README.md +105 -0
- package/workflows/evidence-pack/docs/agent-recipes.md +44 -0
- package/workflows/evidence-pack/meta.yaml +6 -0
- package/workflows/evidence-pack/package.json +22 -0
- package/workflows/evidence-pack/tsconfig.json +15 -0
- package/workflows/evidence-pack/workflow.ts +154 -0
- package/workflows/js-bundle-search/.jshook-install.json +14 -0
- package/workflows/js-bundle-search/LICENSE +21 -0
- package/workflows/js-bundle-search/README.md +46 -0
- package/workflows/js-bundle-search/meta.yaml +4 -0
- package/workflows/js-bundle-search/package.json +23 -0
- package/workflows/js-bundle-search/tsconfig.json +16 -0
- package/workflows/js-bundle-search/workflow.ts +118 -0
- package/workflows/protocol-registry/.jshook-install.json +14 -0
- package/workflows/protocol-registry/meta.yaml +6 -0
- package/workflows/protocol-registry/package.json +22 -0
- package/workflows/protocol-registry/pnpm-lock.yaml +819 -0
- package/workflows/protocol-registry/tsconfig.json +15 -0
- package/workflows/protocol-registry/workflow.ts +107 -0
- package/workflows/qwen-mail-open-latest/meta.yaml +7 -0
- package/workflows/qwen-mail-open-latest/package.json +22 -0
- package/workflows/qwen-mail-open-latest/pnpm-lock.yaml +819 -0
- package/workflows/qwen-mail-open-latest/tsconfig.json +15 -0
- package/workflows/qwen-mail-open-latest/workflow.ts +77 -0
- package/workflows/register-account-flow/.jshook-install.json +14 -0
- package/workflows/register-account-flow/LICENSE +21 -0
- package/workflows/register-account-flow/README.md +64 -0
- package/workflows/register-account-flow/meta.yaml +4 -0
- package/workflows/register-account-flow/package.json +23 -0
- package/workflows/register-account-flow/tsconfig.json +16 -0
- package/workflows/register-account-flow/workflow.ts +127 -0
- package/workflows/replay-lab/.jshook-install.json +14 -0
- package/workflows/replay-lab/meta.yaml +6 -0
- package/workflows/replay-lab/package.json +22 -0
- package/workflows/replay-lab/pnpm-lock.yaml +819 -0
- package/workflows/replay-lab/tsconfig.json +15 -0
- package/workflows/replay-lab/workflow.ts +106 -0
- package/workflows/script-evidence-scan/.jshook-install.json +14 -0
- package/workflows/script-evidence-scan/LICENSE +21 -0
- package/workflows/script-evidence-scan/README.md +61 -0
- package/workflows/script-evidence-scan/meta.yaml +4 -0
- package/workflows/script-evidence-scan/package.json +23 -0
- package/workflows/script-evidence-scan/tsconfig.json +16 -0
- package/workflows/script-evidence-scan/workflow.ts +89 -0
- package/workflows/signature-hunter/.jshook-install.json +14 -0
- package/workflows/signature-hunter/LICENSE +21 -0
- package/workflows/signature-hunter/README.md +105 -0
- package/workflows/signature-hunter/docs/agent-recipes.md +44 -0
- package/workflows/signature-hunter/meta.yaml +6 -0
- package/workflows/signature-hunter/package.json +22 -0
- package/workflows/signature-hunter/tsconfig.json +15 -0
- package/workflows/signature-hunter/workflow.ts +170 -0
- package/workflows/signing-lineage/.jshook-install.json +14 -0
- package/workflows/signing-lineage/meta.yaml +6 -0
- package/workflows/signing-lineage/package.json +22 -0
- package/workflows/signing-lineage/pnpm-lock.yaml +819 -0
- package/workflows/signing-lineage/tsconfig.json +15 -0
- package/workflows/signing-lineage/workflow.ts +120 -0
- package/workflows/temp-mail-extract-link/.jshook-install.json +14 -0
- package/workflows/temp-mail-extract-link/LICENSE +21 -0
- package/workflows/temp-mail-extract-link/README.md +71 -0
- package/workflows/temp-mail-extract-link/meta.yaml +4 -0
- package/workflows/temp-mail-extract-link/package.json +23 -0
- package/workflows/temp-mail-extract-link/tsconfig.json +16 -0
- package/workflows/temp-mail-extract-link/workflow.ts +221 -0
- package/workflows/temp-mail-open-latest/.jshook-install.json +14 -0
- package/workflows/temp-mail-open-latest/LICENSE +21 -0
- package/workflows/temp-mail-open-latest/README.md +61 -0
- package/workflows/temp-mail-open-latest/meta.yaml +4 -0
- package/workflows/temp-mail-open-latest/package.json +23 -0
- package/workflows/temp-mail-open-latest/tsconfig.json +16 -0
- package/workflows/temp-mail-open-latest/workflow.ts +136 -0
- package/workflows/template/.jshook-install.json +14 -0
- package/workflows/template/LICENSE +21 -0
- package/workflows/template/README.md +45 -0
- package/workflows/template/docs/SKILL.md +111 -0
- package/workflows/template/meta.yaml +6 -0
- package/workflows/template/package.json +22 -0
- package/workflows/template/pnpm-lock.yaml +819 -0
- package/workflows/template/tsconfig.json +15 -0
- package/workflows/template/workflow.ts +73 -0
- package/workflows/web-api-capture-session/.jshook-install.json +14 -0
- package/workflows/web-api-capture-session/LICENSE +21 -0
- package/workflows/web-api-capture-session/README.md +64 -0
- package/workflows/web-api-capture-session/meta.yaml +4 -0
- package/workflows/web-api-capture-session/package.json +23 -0
- package/workflows/web-api-capture-session/tsconfig.json +16 -0
- package/workflows/web-api-capture-session/workflow.ts +124 -0
- package/workflows/ws-protocol-lifter/.jshook-install.json +14 -0
- package/workflows/ws-protocol-lifter/LICENSE +21 -0
- package/workflows/ws-protocol-lifter/README.md +105 -0
- package/workflows/ws-protocol-lifter/docs/agent-recipes.md +44 -0
- package/workflows/ws-protocol-lifter/meta.yaml +6 -0
- package/workflows/ws-protocol-lifter/package.json +22 -0
- package/workflows/ws-protocol-lifter/tsconfig.json +15 -0
- package/workflows/ws-protocol-lifter/workflow.ts +163 -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
|
@@ -5,22 +5,30 @@ import { ToolRegistry } from '../modules/external/ToolRegistry.js';
|
|
|
5
5
|
import { GHIDRA_BRIDGE_ENDPOINT, IDA_BRIDGE_ENDPOINT } from '../constants.js';
|
|
6
6
|
import { getProjectRoot } from './outputPaths.js';
|
|
7
7
|
import { getArtifactRetentionConfig } from './artifactRetention.js';
|
|
8
|
+
import { probeBetterSqlite3 } from './betterSqlite3.js';
|
|
8
9
|
const execFileAsync = promisify(execFile);
|
|
9
10
|
const require = createRequire(import.meta.url);
|
|
10
11
|
export async function runEnvironmentDoctor(options) {
|
|
11
12
|
const includeBridgeHealth = options?.includeBridgeHealth ?? true;
|
|
12
13
|
const registry = new ToolRegistry();
|
|
13
14
|
const externalResults = await registry.probeAll(true);
|
|
15
|
+
const gitCommand = await checkCommand('git', ['--version']);
|
|
16
|
+
const pythonCommand = await checkCommand('python', ['--version']);
|
|
17
|
+
const pnpmCommand = await checkPnpmCommand();
|
|
18
|
+
const corepackCommand = normalizeCorepackCheck(await checkCommand('corepack', ['--version']), pnpmCommand);
|
|
14
19
|
const packages = [
|
|
15
20
|
checkPackage('@modelcontextprotocol/sdk'),
|
|
16
21
|
checkPackage('rebrowser-puppeteer-core'),
|
|
22
|
+
checkBetterSqlite3(),
|
|
17
23
|
checkPackage('camoufox-js', 'Optional Firefox anti-detect driver'),
|
|
18
24
|
checkPackage('playwright-core', 'Optional browser automation dependency'),
|
|
25
|
+
checkNativeMemory(),
|
|
19
26
|
];
|
|
20
27
|
const commands = [
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
28
|
+
gitCommand,
|
|
29
|
+
pythonCommand,
|
|
30
|
+
pnpmCommand,
|
|
31
|
+
corepackCommand,
|
|
24
32
|
...Object.entries(externalResults).map(([name, result]) => ({
|
|
25
33
|
name,
|
|
26
34
|
status: (result.available ? 'ok' : 'missing'),
|
|
@@ -127,17 +135,118 @@ function checkPackage(packageName, missingHint) {
|
|
|
127
135
|
};
|
|
128
136
|
}
|
|
129
137
|
}
|
|
130
|
-
|
|
138
|
+
function checkBetterSqlite3() {
|
|
139
|
+
const result = probeBetterSqlite3();
|
|
140
|
+
return {
|
|
141
|
+
name: 'better-sqlite3',
|
|
142
|
+
status: result.status,
|
|
143
|
+
detail: result.detail,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
function isPnpmOperational(pnpm) {
|
|
147
|
+
return pnpm.status === 'ok' || pnpm.detail.includes('npx fallback works');
|
|
148
|
+
}
|
|
149
|
+
async function checkPnpmCommand() {
|
|
150
|
+
const direct = await checkCommand('pnpm', ['--version']);
|
|
151
|
+
if (direct.status === 'ok') {
|
|
152
|
+
return direct;
|
|
153
|
+
}
|
|
154
|
+
const npxFallback = await checkCommand('npx', ['pnpm', '--version'], 10_000);
|
|
155
|
+
if (npxFallback.status === 'ok') {
|
|
156
|
+
return {
|
|
157
|
+
name: 'pnpm',
|
|
158
|
+
status: 'warn',
|
|
159
|
+
detail: `direct pnpm command unavailable; npx fallback works (${npxFallback.detail})`,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
return direct;
|
|
163
|
+
}
|
|
164
|
+
function normalizeCorepackCheck(corepack, pnpm) {
|
|
165
|
+
if (corepack.status !== 'missing' || !isPnpmOperational(pnpm)) {
|
|
166
|
+
return corepack;
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
name: corepack.name,
|
|
170
|
+
status: 'warn',
|
|
171
|
+
detail: process.platform === 'win32'
|
|
172
|
+
? pnpm.detail.includes('npx fallback works')
|
|
173
|
+
? 'corepack not found; use `npx pnpm` directly (common with nvm4w-managed Node on Windows)'
|
|
174
|
+
: 'corepack not found; standalone pnpm is available (common with nvm4w-managed Node on Windows)'
|
|
175
|
+
: pnpm.detail.includes('npx fallback works')
|
|
176
|
+
? 'corepack not found; use `npx pnpm` directly'
|
|
177
|
+
: 'corepack not found; standalone pnpm is available',
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
function checkNativeMemory() {
|
|
181
|
+
try {
|
|
182
|
+
const koffiPkg = require.resolve('koffi/package.json');
|
|
183
|
+
const koffiJson = require(koffiPkg);
|
|
184
|
+
const koffiVersion = koffiJson.version ?? 'unknown';
|
|
185
|
+
if (process.platform === 'win32') {
|
|
186
|
+
return {
|
|
187
|
+
name: 'native-memory',
|
|
188
|
+
status: 'ok',
|
|
189
|
+
detail: `koffi ${koffiVersion} — Win32 kernel32.dll available`,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
if (process.platform === 'darwin') {
|
|
193
|
+
try {
|
|
194
|
+
const koffi = require('koffi');
|
|
195
|
+
const lib = koffi.load('/usr/lib/libSystem.B.dylib');
|
|
196
|
+
lib.unload();
|
|
197
|
+
return {
|
|
198
|
+
name: 'native-memory',
|
|
199
|
+
status: 'ok',
|
|
200
|
+
detail: `koffi ${koffiVersion} — macOS libSystem.B.dylib available (Mach APIs need root + SIP config)`,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
return {
|
|
205
|
+
name: 'native-memory',
|
|
206
|
+
status: 'warn',
|
|
207
|
+
detail: `koffi ${koffiVersion} installed but cannot load libSystem.B.dylib`,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
name: 'native-memory',
|
|
213
|
+
status: 'warn',
|
|
214
|
+
detail: `koffi ${koffiVersion} — no native FFI memory provider for ${process.platform} (proc-based ops available on Linux)`,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
return {
|
|
219
|
+
name: 'native-memory',
|
|
220
|
+
status: 'missing',
|
|
221
|
+
detail: 'koffi not installed — native memory tools unavailable. Install with: pnpm add koffi',
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
async function checkCommand(command, args, timeout = 4000) {
|
|
131
226
|
try {
|
|
132
227
|
const { stdout, stderr } = await execFileAsync(command, args, {
|
|
133
|
-
timeout
|
|
228
|
+
timeout,
|
|
134
229
|
windowsHide: true,
|
|
135
230
|
});
|
|
136
231
|
const detail = `${stdout || stderr}`.trim().split(/\r?\n/)[0] || 'available';
|
|
137
232
|
return { name: command, status: 'ok', detail };
|
|
138
233
|
}
|
|
139
234
|
catch (error) {
|
|
140
|
-
|
|
235
|
+
let finalError = error;
|
|
236
|
+
if (process.platform === 'win32') {
|
|
237
|
+
try {
|
|
238
|
+
const { stdout, stderr } = await execFileAsync('cmd', ['/c', command, ...args], {
|
|
239
|
+
timeout,
|
|
240
|
+
windowsHide: true,
|
|
241
|
+
});
|
|
242
|
+
const detail = `${stdout || stderr}`.trim().split(/\r?\n/)[0] || 'available';
|
|
243
|
+
return { name: command, status: 'ok', detail: `${detail} (via cmd)` };
|
|
244
|
+
}
|
|
245
|
+
catch (cmdError) {
|
|
246
|
+
finalError = cmdError;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
const detail = finalError instanceof Error ? finalError.message : String(finalError);
|
|
141
250
|
const missing = /ENOENT|not recognized|not found/i.test(detail);
|
|
142
251
|
return {
|
|
143
252
|
name: command,
|
|
@@ -168,25 +277,43 @@ async function checkHttpEndpoint(name, url) {
|
|
|
168
277
|
}
|
|
169
278
|
function buildPlatformLimitations() {
|
|
170
279
|
const limitations = [];
|
|
171
|
-
if (process.platform
|
|
172
|
-
limitations.push('
|
|
280
|
+
if (process.platform === 'darwin') {
|
|
281
|
+
limitations.push('26 cross-platform memory tools available (scan, pointer-chain, structure-analysis, heap). ' +
|
|
282
|
+
'15 Windows-only tools unavailable (PE analysis, anti-cheat, code injection, speedhack, hardware breakpoints).');
|
|
283
|
+
limitations.push('Native memory operations (mach_vm_read/write) require root privileges and may require SIP configuration on ARM64.');
|
|
173
284
|
}
|
|
174
|
-
if (process.platform === 'linux') {
|
|
285
|
+
else if (process.platform === 'linux') {
|
|
286
|
+
limitations.push('Process management available via /proc. Native FFI memory provider not implemented — memory read/write uses /proc/pid/mem (requires root or CAP_SYS_PTRACE).');
|
|
175
287
|
limitations.push('Camoufox runs on Linux, but some Chrome/CDP-heavy workflows are better served by the Chrome driver.');
|
|
176
288
|
}
|
|
177
|
-
if (process.platform
|
|
178
|
-
limitations.push(
|
|
289
|
+
else if (process.platform !== 'win32') {
|
|
290
|
+
limitations.push(`Platform ${process.platform} is not supported for native memory operations. Use Windows or macOS.`);
|
|
179
291
|
}
|
|
180
292
|
return limitations;
|
|
181
293
|
}
|
|
182
294
|
function buildRecommendations(packages, commands, bridges, limitations) {
|
|
183
295
|
const recommendations = [];
|
|
296
|
+
const pnpmCommand = commands.find((item) => item.name === 'pnpm');
|
|
297
|
+
const corepackCommand = commands.find((item) => item.name === 'corepack');
|
|
298
|
+
if (packages.some((item) => item.name === 'better-sqlite3' && item.status !== 'ok')) {
|
|
299
|
+
recommendations.push('Install or rebuild the optional SQLite trace backend with `pnpm add -O better-sqlite3@12.6.2` or `npm rebuild better-sqlite3 --foreground-scripts` under the active Node version if you need trace tooling.');
|
|
300
|
+
}
|
|
184
301
|
if (packages.some((item) => item.name === 'camoufox-js' && item.status !== 'ok')) {
|
|
185
302
|
recommendations.push('Install optional browser dependencies with `pnpm run install:full` if you need Camoufox support.');
|
|
186
303
|
}
|
|
187
304
|
if (commands.some((item) => item.name.startsWith('wabt.') && item.status !== 'ok')) {
|
|
188
305
|
recommendations.push('Install wabt if you need full WASM disassembly/decompilation; otherwise the server will stay in basic mode.');
|
|
189
306
|
}
|
|
307
|
+
if (pnpmCommand && !isPnpmOperational(pnpmCommand)) {
|
|
308
|
+
recommendations.push('Install pnpm or enable Corepack (`corepack enable`) before running package-management workflows.');
|
|
309
|
+
}
|
|
310
|
+
else if (pnpmCommand?.detail.includes('npx fallback works')) {
|
|
311
|
+
recommendations.push('Use `npx pnpm` directly on this machine or repair the local pnpm/Corepack shim if scripts expect bare `pnpm`.');
|
|
312
|
+
}
|
|
313
|
+
else if (corepackCommand?.status === 'warn' &&
|
|
314
|
+
corepackCommand.detail.includes('standalone pnpm')) {
|
|
315
|
+
recommendations.push('Use `pnpm` or `npx pnpm` directly on this machine; `corepack` is optional and may be absent on nvm4w-managed Windows installs.');
|
|
316
|
+
}
|
|
190
317
|
if (bridges.some((item) => item.status !== 'ok')) {
|
|
191
318
|
recommendations.push('Check local bridge endpoints (Ghidra / IDA / Burp) before relying on native-bridge workflows.');
|
|
192
319
|
}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { mkdir } from 'node:fs/promises';
|
|
2
2
|
import { basename, dirname, extname, isAbsolute, normalize, relative, resolve, sep, } from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
const
|
|
4
|
+
const defaultProjectRoot = fileURLToPath(new URL('../..', import.meta.url));
|
|
5
|
+
function resolveProjectRoot(env = process.env) {
|
|
6
|
+
const requestedRoot = env.MCP_PROJECT_ROOT?.trim();
|
|
7
|
+
if (!requestedRoot) {
|
|
8
|
+
return defaultProjectRoot;
|
|
9
|
+
}
|
|
10
|
+
return normalize(isAbsolute(requestedRoot) ? requestedRoot : resolve(defaultProjectRoot, requestedRoot));
|
|
11
|
+
}
|
|
7
12
|
function isInside(baseDir, targetPath) {
|
|
8
13
|
const rel = relative(baseDir, targetPath);
|
|
9
14
|
if (!rel || rel === '..' || rel.startsWith(`..${sep}`) || isAbsolute(rel)) {
|
|
@@ -11,11 +16,11 @@ function isInside(baseDir, targetPath) {
|
|
|
11
16
|
}
|
|
12
17
|
return true;
|
|
13
18
|
}
|
|
14
|
-
function resolveWithinProject(inputPath) {
|
|
15
|
-
const candidate = isAbsolute(inputPath) ? normalize(inputPath) : resolve(
|
|
16
|
-
return isInside(
|
|
19
|
+
function resolveWithinProject(inputPath, baseRoot = getProjectRoot()) {
|
|
20
|
+
const candidate = isAbsolute(inputPath) ? normalize(inputPath) : resolve(baseRoot, inputPath);
|
|
21
|
+
return isInside(baseRoot, candidate)
|
|
17
22
|
? candidate
|
|
18
|
-
: resolve(
|
|
23
|
+
: resolve(baseRoot, 'screenshots', 'external', normalize(inputPath).split(/[\\/]/).pop() || 'output.bin');
|
|
19
24
|
}
|
|
20
25
|
function withDefaultExtension(filePath, extension) {
|
|
21
26
|
if (extname(filePath)) {
|
|
@@ -24,20 +29,22 @@ function withDefaultExtension(filePath, extension) {
|
|
|
24
29
|
return `${filePath}.${extension.replace(/^\./, '')}`;
|
|
25
30
|
}
|
|
26
31
|
export function getProjectRoot() {
|
|
27
|
-
return
|
|
32
|
+
return resolveProjectRoot();
|
|
28
33
|
}
|
|
29
34
|
export function resolveOutputDirectory(inputDir, fallbackDir = 'screenshots') {
|
|
35
|
+
const projectRoot = getProjectRoot();
|
|
30
36
|
const requested = inputDir?.trim();
|
|
31
37
|
if (!requested) {
|
|
32
38
|
return resolve(projectRoot, fallbackDir);
|
|
33
39
|
}
|
|
34
|
-
const resolved = resolveWithinProject(requested);
|
|
40
|
+
const resolved = resolveWithinProject(requested, projectRoot);
|
|
35
41
|
if (isInside(projectRoot, resolved)) {
|
|
36
42
|
return resolved;
|
|
37
43
|
}
|
|
38
44
|
return resolve(projectRoot, fallbackDir);
|
|
39
45
|
}
|
|
40
46
|
export async function resolveScreenshotOutputPath(options) {
|
|
47
|
+
const projectRoot = getProjectRoot();
|
|
41
48
|
const extension = options.type === 'jpeg' ? 'jpg' : 'png';
|
|
42
49
|
const fallbackDir = options.fallbackDir || 'screenshots/manual';
|
|
43
50
|
const fallbackName = options.fallbackName || 'page';
|
|
@@ -44,9 +44,7 @@ export async function parallelExecute(items, executor, options = {}) {
|
|
|
44
44
|
duration: Date.now() - startTime,
|
|
45
45
|
};
|
|
46
46
|
})();
|
|
47
|
-
const wrappedTask = task.
|
|
48
|
-
executing.delete(wrappedTask);
|
|
49
|
-
}, () => {
|
|
47
|
+
const wrappedTask = task.finally(() => {
|
|
50
48
|
executing.delete(wrappedTask);
|
|
51
49
|
});
|
|
52
50
|
executing.add(wrappedTask);
|
package/package.json
CHANGED
|
@@ -1,8 +1,55 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jshookmcp/jshook",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "MCP server with
|
|
5
|
-
"
|
|
3
|
+
"version": "0.2.6",
|
|
4
|
+
"description": "MCP server with 337 built-in tools across 24 domains for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ai",
|
|
7
|
+
"anti-detection",
|
|
8
|
+
"ast",
|
|
9
|
+
"browser-automation",
|
|
10
|
+
"captcha",
|
|
11
|
+
"chrome-devtools",
|
|
12
|
+
"claude",
|
|
13
|
+
"code-analysis",
|
|
14
|
+
"cryptography-detection",
|
|
15
|
+
"debugger",
|
|
16
|
+
"deobfuscation",
|
|
17
|
+
"hook",
|
|
18
|
+
"hooking",
|
|
19
|
+
"javascript",
|
|
20
|
+
"javascript-analysis",
|
|
21
|
+
"mcp",
|
|
22
|
+
"model-context-protocol",
|
|
23
|
+
"network-monitoring",
|
|
24
|
+
"obfuscation",
|
|
25
|
+
"puppeteer",
|
|
26
|
+
"security-analysis",
|
|
27
|
+
"web-scraping"
|
|
28
|
+
],
|
|
29
|
+
"homepage": "https://github.com/vmoranv/jshookmcp#readme",
|
|
30
|
+
"bugs": {
|
|
31
|
+
"url": "https://github.com/vmoranv/jshookmcp/issues"
|
|
32
|
+
},
|
|
33
|
+
"license": "AGPL-3.0-only",
|
|
34
|
+
"author": {
|
|
35
|
+
"name": "vmoranv",
|
|
36
|
+
"url": "https://github.com/vmoranv"
|
|
37
|
+
},
|
|
38
|
+
"repository": {
|
|
39
|
+
"type": "git",
|
|
40
|
+
"url": "https://github.com/vmoranv/jshookmcp.git"
|
|
41
|
+
},
|
|
42
|
+
"bin": {
|
|
43
|
+
"jshook": "dist/src/index.js",
|
|
44
|
+
"jshookmcp": "dist/src/index.js"
|
|
45
|
+
},
|
|
46
|
+
"files": [
|
|
47
|
+
"dist",
|
|
48
|
+
"workflows",
|
|
49
|
+
"src/native/scripts",
|
|
50
|
+
"scripts/postinstall.cjs"
|
|
51
|
+
],
|
|
52
|
+
"type": "module",
|
|
6
53
|
"main": "dist/src/index.js",
|
|
7
54
|
"types": "dist/src/index.d.ts",
|
|
8
55
|
"exports": {
|
|
@@ -15,136 +62,90 @@
|
|
|
15
62
|
"types": "./dist/src/server/plugin-api.d.ts"
|
|
16
63
|
}
|
|
17
64
|
},
|
|
18
|
-
"type": "module",
|
|
19
|
-
"files": [
|
|
20
|
-
"dist",
|
|
21
|
-
"src/native/scripts",
|
|
22
|
-
"scripts/postinstall.cjs"
|
|
23
|
-
],
|
|
24
|
-
"bin": {
|
|
25
|
-
"jshook": "dist/src/index.js",
|
|
26
|
-
"jshookmcp": "dist/src/index.js"
|
|
27
|
-
},
|
|
28
|
-
"repository": {
|
|
29
|
-
"type": "git",
|
|
30
|
-
"url": "https://github.com/vmoranv/jshookmcp.git"
|
|
31
|
-
},
|
|
32
|
-
"bugs": {
|
|
33
|
-
"url": "https://github.com/vmoranv/jshookmcp/issues"
|
|
34
|
-
},
|
|
35
|
-
"homepage": "https://github.com/vmoranv/jshookmcp#readme",
|
|
36
65
|
"publishConfig": {
|
|
37
|
-
"
|
|
38
|
-
"
|
|
66
|
+
"access": "public",
|
|
67
|
+
"registry": "https://registry.npmjs.org"
|
|
39
68
|
},
|
|
40
|
-
"keywords": [
|
|
41
|
-
"mcp",
|
|
42
|
-
"model-context-protocol",
|
|
43
|
-
"javascript",
|
|
44
|
-
"javascript-analysis",
|
|
45
|
-
"security-analysis",
|
|
46
|
-
"hook",
|
|
47
|
-
"hooking",
|
|
48
|
-
"deobfuscation",
|
|
49
|
-
"ai",
|
|
50
|
-
"claude",
|
|
51
|
-
"puppeteer",
|
|
52
|
-
"chrome-devtools",
|
|
53
|
-
"debugger",
|
|
54
|
-
"web-scraping",
|
|
55
|
-
"anti-detection",
|
|
56
|
-
"captcha",
|
|
57
|
-
"browser-automation",
|
|
58
|
-
"network-monitoring",
|
|
59
|
-
"ast",
|
|
60
|
-
"obfuscation",
|
|
61
|
-
"cryptography-detection",
|
|
62
|
-
"code-analysis"
|
|
63
|
-
],
|
|
64
|
-
"author": {
|
|
65
|
-
"name": "vmoranv",
|
|
66
|
-
"url": "https://github.com/vmoranv"
|
|
67
|
-
},
|
|
68
|
-
"license": "AGPL-3.0-only",
|
|
69
69
|
"dependencies": {
|
|
70
70
|
"@anthropic-ai/sdk": "^0.78.0",
|
|
71
71
|
"@babel/generator": "^7.29.1",
|
|
72
72
|
"@babel/parser": "^7.29.0",
|
|
73
73
|
"@babel/traverse": "^7.29.0",
|
|
74
74
|
"@babel/types": "^7.29.0",
|
|
75
|
+
"@huggingface/transformers": "^3.8.1",
|
|
75
76
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
76
77
|
"ajv": "^8.18.0",
|
|
77
78
|
"ajv-formats": "^3.0.1",
|
|
78
79
|
"chalk": "^5.6.2",
|
|
79
80
|
"commander": "^14.0.3",
|
|
80
|
-
"dotenv": "^17.
|
|
81
|
+
"dotenv": "^17.4.0",
|
|
81
82
|
"koffi": "^2.15.1",
|
|
82
83
|
"openai": "^6.25.0",
|
|
83
84
|
"ora": "^9.3.0",
|
|
85
|
+
"quickjs-emscripten": "^0.32.0",
|
|
84
86
|
"rebrowser-puppeteer-core": "^24.8.1",
|
|
85
87
|
"tinyglobby": "^0.2.15",
|
|
86
88
|
"zod": "^4.3.6"
|
|
87
89
|
},
|
|
88
|
-
"optionalDependencies": {
|
|
89
|
-
"camoufox-js": "^0.9.1",
|
|
90
|
-
"playwright-core": "^1.58.2",
|
|
91
|
-
"webcrack": "^2.15.1"
|
|
92
|
-
},
|
|
93
90
|
"devDependencies": {
|
|
94
|
-
"@huggingface/transformers": "^3.8.1",
|
|
95
91
|
"@types/babel__generator": "^7.27.0",
|
|
96
92
|
"@types/babel__traverse": "^7.28.0",
|
|
97
93
|
"@types/better-sqlite3": "^7.6.13",
|
|
98
94
|
"@types/node": "^25.3.0",
|
|
99
|
-
"@
|
|
100
|
-
"@typescript-eslint/parser": "^8.56.1",
|
|
101
|
-
"@vitest/coverage-v8": "^4.0.18",
|
|
95
|
+
"@vitest/coverage-v8": "^4.1.2",
|
|
102
96
|
"cross-env": "^10.1.0",
|
|
103
|
-
"eslint": "^10.0.2",
|
|
104
97
|
"estree-walker": "^2.0.2",
|
|
105
|
-
"lefthook": "^2.1.
|
|
98
|
+
"lefthook": "^2.1.4",
|
|
106
99
|
"medium-zoom": "^1.1.0",
|
|
107
|
-
"
|
|
108
|
-
"oxlint": "^1.
|
|
109
|
-
"prettier": "^3.8.1",
|
|
110
|
-
"quickjs-emscripten": "^0.32.0",
|
|
100
|
+
"oxfmt": "^0.43.0",
|
|
101
|
+
"oxlint": "^1.58.0",
|
|
111
102
|
"tsc-alias": "^1.8.16",
|
|
112
103
|
"tsx": "^4.21.0",
|
|
113
104
|
"typescript": "^5.9.3",
|
|
114
|
-
"vite": "^
|
|
105
|
+
"vite": "^8.0.2",
|
|
115
106
|
"vitepress": "1.6.4",
|
|
116
|
-
"vitest": "^4.
|
|
107
|
+
"vitest": "^4.1.2",
|
|
117
108
|
"vue": "^3.5.30"
|
|
118
109
|
},
|
|
110
|
+
"optionalDependencies": {
|
|
111
|
+
"better-sqlite3": "12.6.2",
|
|
112
|
+
"camoufox-js": "^0.9.1",
|
|
113
|
+
"playwright-core": "^1.58.2",
|
|
114
|
+
"webcrack": "^2.15.1"
|
|
115
|
+
},
|
|
119
116
|
"engines": {
|
|
120
|
-
"node": "
|
|
117
|
+
"node": "^20.19.0 || >=22.12.0"
|
|
121
118
|
},
|
|
119
|
+
"mcpName": "io.github.vmoranv/jshookmcp",
|
|
122
120
|
"scripts": {
|
|
123
121
|
"build": "node scripts/clean-dist.mjs && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs && node scripts/generate-entry-reexport.mjs && node scripts/fix-bin-permissions.mjs",
|
|
124
122
|
"typecheck": "tsc --noEmit -p tsconfig.build.json && pnpm -C packages/extension-sdk typecheck",
|
|
125
123
|
"dev": "tsx --conditions=development watch src/index.ts",
|
|
126
124
|
"start": "node dist/src/index.js",
|
|
127
125
|
"doctor": "tsx src/cli/doctor.ts",
|
|
128
|
-
"docs:generate": "node scripts/generate-vitepress-reference.mjs
|
|
126
|
+
"docs:generate": "node scripts/generate-vitepress-reference.mjs",
|
|
129
127
|
"docs:dev": "vitepress dev docs --host 127.0.0.1 --port 5173",
|
|
130
128
|
"docs:build": "pnpm run docs:generate && vitepress build docs",
|
|
131
129
|
"docs:preview": "vitepress preview docs --host 127.0.0.1 --port 4173",
|
|
132
130
|
"lint:md": "pnpm dlx markdownlint-cli2",
|
|
133
|
-
"
|
|
134
|
-
"
|
|
135
|
-
"
|
|
136
|
-
"
|
|
137
|
-
"format": "prettier --write \"src/**/*.ts\"",
|
|
131
|
+
"lint": "oxlint src/ tests/",
|
|
132
|
+
"lint:fix": "oxlint --fix src/ tests/",
|
|
133
|
+
"format": "oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --write --no-error-on-unmatched-pattern",
|
|
134
|
+
"format:check": "oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --check --no-error-on-unmatched-pattern",
|
|
138
135
|
"test": "vitest run",
|
|
139
136
|
"test:e2e": "cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ vitest run --config tests/e2e/vitest.e2e.config.ts",
|
|
140
|
-
"test:coverage": "cross-env ENABLE_INJECTION_TOOLS=true vitest run --coverage",
|
|
137
|
+
"test:coverage": "node -e \"require('fs').mkdirSync('coverage/.tmp', { recursive: true })\" && cross-env ENABLE_INJECTION_TOOLS=true COVERAGE_FULL=true vitest run --coverage",
|
|
141
138
|
"package:verify-bin": "node scripts/verify-packed-bin.mjs",
|
|
142
139
|
"package:verify-install": "node scripts/verify-packed-install.mjs",
|
|
143
140
|
"package:verify-release": "node scripts/verify-release-artifact.mjs",
|
|
144
|
-
"audit:tools": "
|
|
145
|
-
"
|
|
141
|
+
"audit:tools": "tsx scripts/audit-tools.mjs",
|
|
142
|
+
"git:refresh-noise": "node scripts/refresh-git-noise.mjs",
|
|
143
|
+
"check": "pnpm run metadata:check && pnpm run lint && pnpm run format:check && pnpm run typecheck && pnpm run test",
|
|
146
144
|
"package": "pnpm pack",
|
|
147
145
|
"postinstall": "node scripts/postinstall.cjs",
|
|
148
|
-
"install:full": "pnpm install && pnpm exec camoufox-js fetch"
|
|
146
|
+
"install:full": "pnpm install && pnpm exec camoufox-js fetch",
|
|
147
|
+
"metadata:sync": "node scripts/generate-metadata.mjs --write",
|
|
148
|
+
"metadata:check": "node scripts/generate-metadata.mjs --check",
|
|
149
|
+
"check:docs-format": "pnpm run lint:md"
|
|
149
150
|
}
|
|
150
151
|
}
|
package/scripts/postinstall.cjs
CHANGED
|
@@ -2,36 +2,63 @@ const fs = require('node:fs');
|
|
|
2
2
|
const path = require('node:path');
|
|
3
3
|
const { spawnSync } = require('node:child_process');
|
|
4
4
|
|
|
5
|
-
const repoGitDir = path.join(process.cwd(), '.git');
|
|
6
|
-
const localBin = path.join(
|
|
7
|
-
process.cwd(),
|
|
8
|
-
'node_modules',
|
|
9
|
-
'.bin',
|
|
10
|
-
process.platform === 'win32' ? 'lefthook.cmd' : 'lefthook'
|
|
11
|
-
);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
5
|
+
const repoGitDir = path.join(process.cwd(), '.git');
|
|
6
|
+
const localBin = path.join(
|
|
7
|
+
process.cwd(),
|
|
8
|
+
'node_modules',
|
|
9
|
+
'.bin',
|
|
10
|
+
process.platform === 'win32' ? 'lefthook.cmd' : 'lefthook'
|
|
11
|
+
);
|
|
12
|
+
const isCi = process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true';
|
|
13
|
+
|
|
14
|
+
if (isCi || !fs.existsSync(repoGitDir)) {
|
|
15
|
+
process.exit(0);
|
|
16
|
+
}
|
|
16
17
|
|
|
17
18
|
if (!fs.existsSync(localBin)) {
|
|
18
19
|
console.warn('[postinstall] lefthook not found locally; skipping git hook installation.');
|
|
19
20
|
process.exit(0);
|
|
20
21
|
}
|
|
21
22
|
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
shell: process.platform === 'win32',
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
23
|
+
const hooksPathResult = spawnSync('git', ['config', '--local', '--get', 'core.hooksPath'], {
|
|
24
|
+
encoding: 'utf8',
|
|
25
|
+
shell: process.platform === 'win32',
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
const configuredHooksPath = hooksPathResult.status === 0 ? hooksPathResult.stdout.trim() : '';
|
|
29
|
+
if (configuredHooksPath) {
|
|
30
|
+
const resolvedHooksPath = path.resolve(process.cwd(), configuredHooksPath);
|
|
31
|
+
const defaultHooksPath = path.resolve(repoGitDir, 'hooks');
|
|
32
|
+
|
|
33
|
+
if (resolvedHooksPath === defaultHooksPath) {
|
|
34
|
+
process.exit(0);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
console.warn(
|
|
38
|
+
`[postinstall] core.hooksPath is already set to "${configuredHooksPath}"; skipping git hook installation.`
|
|
39
|
+
);
|
|
40
|
+
process.exit(0);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const result = spawnSync(localBin, ['install'], {
|
|
44
|
+
encoding: 'utf8',
|
|
45
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
46
|
+
shell: process.platform === 'win32',
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
if (result.error) {
|
|
50
|
+
console.warn(
|
|
51
|
+
`[postinstall] lefthook install failed to spawn: ${result.error.message}; skipping git hook installation.`
|
|
52
|
+
);
|
|
53
|
+
} else if (result.status !== 0) {
|
|
54
|
+
const firstDetailLine = [result.stdout, result.stderr]
|
|
55
|
+
.join('\n')
|
|
56
|
+
.split(/\r?\n/)
|
|
57
|
+
.map((line) => line.trim())
|
|
58
|
+
.find(Boolean);
|
|
59
|
+
console.warn(
|
|
60
|
+
`[postinstall] lefthook install exited with status ${result.status}; skipping git hook installation${firstDetailLine ? ` (${firstDetailLine})` : ''}.`
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
process.exit(0);
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"kind": "workflow",
|
|
4
|
+
"slug": "anti-bot-diagnoser",
|
|
5
|
+
"id": "workflow.anti-bot-diagnoser.v1",
|
|
6
|
+
"source": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"repo": "https://github.com/vmoranv/jshook_workflow_anti_bot_diagnoser",
|
|
9
|
+
"ref": "main",
|
|
10
|
+
"commit": "b7e270de2a0cbb90ed431bd9de4fcd101cc53439",
|
|
11
|
+
"subpath": ".",
|
|
12
|
+
"entry": "workflow.ts"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 vmoranv
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|