@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
|
@@ -7,6 +7,7 @@ export class WorkflowNodeBuilder {
|
|
|
7
7
|
export class ToolNodeBuilder extends WorkflowNodeBuilder {
|
|
8
8
|
toolName;
|
|
9
9
|
_input;
|
|
10
|
+
_inputFrom;
|
|
10
11
|
_retry;
|
|
11
12
|
_timeoutMs;
|
|
12
13
|
constructor(id, toolName) {
|
|
@@ -17,6 +18,10 @@ export class ToolNodeBuilder extends WorkflowNodeBuilder {
|
|
|
17
18
|
this._input = input;
|
|
18
19
|
return this;
|
|
19
20
|
}
|
|
21
|
+
inputFrom(mapping) {
|
|
22
|
+
this._inputFrom = mapping;
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
20
25
|
retry(policy) {
|
|
21
26
|
this._retry = policy;
|
|
22
27
|
return this;
|
|
@@ -31,6 +36,7 @@ export class ToolNodeBuilder extends WorkflowNodeBuilder {
|
|
|
31
36
|
id: this.id,
|
|
32
37
|
toolName: this.toolName,
|
|
33
38
|
input: this._input,
|
|
39
|
+
inputFrom: this._inputFrom,
|
|
34
40
|
retry: this._retry,
|
|
35
41
|
timeoutMs: this._timeoutMs,
|
|
36
42
|
};
|
|
@@ -70,6 +76,13 @@ export class SequenceNodeBuilder extends WorkflowNodeBuilder {
|
|
|
70
76
|
this._steps.push(builder);
|
|
71
77
|
return this;
|
|
72
78
|
}
|
|
79
|
+
fallback(id, config) {
|
|
80
|
+
const builder = new FallbackNodeBuilder(id);
|
|
81
|
+
if (config)
|
|
82
|
+
config(builder);
|
|
83
|
+
this._steps.push(builder);
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
73
86
|
build() {
|
|
74
87
|
return {
|
|
75
88
|
kind: 'sequence',
|
|
@@ -114,6 +127,13 @@ export class ParallelNodeBuilder extends WorkflowNodeBuilder {
|
|
|
114
127
|
this._steps.push(builder);
|
|
115
128
|
return this;
|
|
116
129
|
}
|
|
130
|
+
fallback(id, config) {
|
|
131
|
+
const builder = new FallbackNodeBuilder(id);
|
|
132
|
+
if (config)
|
|
133
|
+
config(builder);
|
|
134
|
+
this._steps.push(builder);
|
|
135
|
+
return this;
|
|
136
|
+
}
|
|
117
137
|
maxConcurrency(concurrency) {
|
|
118
138
|
this._maxConcurrency = concurrency;
|
|
119
139
|
return this;
|
|
@@ -167,6 +187,32 @@ export class BranchNodeBuilder extends WorkflowNodeBuilder {
|
|
|
167
187
|
};
|
|
168
188
|
}
|
|
169
189
|
}
|
|
190
|
+
export class FallbackNodeBuilder extends WorkflowNodeBuilder {
|
|
191
|
+
_primary;
|
|
192
|
+
_fallback;
|
|
193
|
+
primary(nodeBuilder) {
|
|
194
|
+
this._primary = nodeBuilder;
|
|
195
|
+
return this;
|
|
196
|
+
}
|
|
197
|
+
fallback(nodeBuilder) {
|
|
198
|
+
this._fallback = nodeBuilder;
|
|
199
|
+
return this;
|
|
200
|
+
}
|
|
201
|
+
build() {
|
|
202
|
+
if (!this._primary) {
|
|
203
|
+
throw new Error(`FallbackNode '${this.id}' requires a primary step`);
|
|
204
|
+
}
|
|
205
|
+
if (!this._fallback) {
|
|
206
|
+
throw new Error(`FallbackNode '${this.id}' requires a fallback step`);
|
|
207
|
+
}
|
|
208
|
+
return {
|
|
209
|
+
kind: 'fallback',
|
|
210
|
+
id: this.id,
|
|
211
|
+
primary: this._primary.build(),
|
|
212
|
+
fallback: this._fallback.build(),
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
}
|
|
170
216
|
export class WorkflowBuilder {
|
|
171
217
|
_id;
|
|
172
218
|
_displayName;
|
|
@@ -174,6 +220,7 @@ export class WorkflowBuilder {
|
|
|
174
220
|
_tags;
|
|
175
221
|
_timeoutMs;
|
|
176
222
|
_defaultMaxConcurrency;
|
|
223
|
+
_route;
|
|
177
224
|
_buildFn;
|
|
178
225
|
_onStart;
|
|
179
226
|
_onFinish;
|
|
@@ -198,6 +245,10 @@ export class WorkflowBuilder {
|
|
|
198
245
|
this._defaultMaxConcurrency = max;
|
|
199
246
|
return this;
|
|
200
247
|
}
|
|
248
|
+
route(route) {
|
|
249
|
+
this._route = route;
|
|
250
|
+
return this;
|
|
251
|
+
}
|
|
201
252
|
buildGraph(fn) {
|
|
202
253
|
this._buildFn = (ctx) => fn(ctx).build();
|
|
203
254
|
return this;
|
|
@@ -226,6 +277,7 @@ export class WorkflowBuilder {
|
|
|
226
277
|
tags: this._tags,
|
|
227
278
|
timeoutMs: this._timeoutMs,
|
|
228
279
|
defaultMaxConcurrency: this._defaultMaxConcurrency,
|
|
280
|
+
route: this._route,
|
|
229
281
|
build: this._buildFn,
|
|
230
282
|
onStart: this._onStart,
|
|
231
283
|
onFinish: this._onFinish,
|
|
@@ -1,4 +1,55 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { getEffectivePrerequisites } from '../ToolRouter.policy.js';
|
|
3
|
+
import { getRoutingState } from '../ToolRouter.probe.js';
|
|
4
|
+
class WorkflowDataBus {
|
|
5
|
+
store = new Map();
|
|
6
|
+
set(key, value) {
|
|
7
|
+
this.store.set(key, value);
|
|
8
|
+
}
|
|
9
|
+
get(key) {
|
|
10
|
+
return this.store.get(key);
|
|
11
|
+
}
|
|
12
|
+
getValueAtPath(key, path) {
|
|
13
|
+
const value = this.store.get(key);
|
|
14
|
+
if (!value || typeof value !== 'object') {
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
const payload = parseToolPayload(value);
|
|
18
|
+
const obj = payload || value;
|
|
19
|
+
return path.split('.').reduce((current, segment) => {
|
|
20
|
+
if (current && typeof current === 'object') {
|
|
21
|
+
const arrayMatch = segment.match(/^(\d+)$/);
|
|
22
|
+
if (arrayMatch && Array.isArray(current)) {
|
|
23
|
+
return current[Number(arrayMatch[1])];
|
|
24
|
+
}
|
|
25
|
+
return current[segment];
|
|
26
|
+
}
|
|
27
|
+
return undefined;
|
|
28
|
+
}, obj);
|
|
29
|
+
}
|
|
30
|
+
resolve(template) {
|
|
31
|
+
const match = template.match(/^\$\{(.+)\}$/);
|
|
32
|
+
if (!match || !match[1]) {
|
|
33
|
+
return template;
|
|
34
|
+
}
|
|
35
|
+
const ref = match[1];
|
|
36
|
+
const dotIndex = ref.indexOf('.');
|
|
37
|
+
if (dotIndex === -1) {
|
|
38
|
+
return this.store.get(ref);
|
|
39
|
+
}
|
|
40
|
+
const stepId = ref.slice(0, dotIndex);
|
|
41
|
+
const fieldPath = ref.slice(dotIndex + 1);
|
|
42
|
+
return this.getValueAtPath(stepId, fieldPath);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
class PreflightError extends Error {
|
|
46
|
+
warnings;
|
|
47
|
+
constructor(warnings) {
|
|
48
|
+
super(`Workflow preflight failed with ${warnings.length} unsatisfied prerequisite(s)`);
|
|
49
|
+
this.warnings = warnings;
|
|
50
|
+
this.name = 'PreflightError';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
2
53
|
function extractConfigValue(config, path, fallback) {
|
|
3
54
|
const segments = path.split('.').filter(Boolean);
|
|
4
55
|
let current = config;
|
|
@@ -77,9 +128,49 @@ function collectSuccessStats(value) {
|
|
|
77
128
|
}
|
|
78
129
|
return { success: 0, failure: 0 };
|
|
79
130
|
}
|
|
80
|
-
|
|
131
|
+
function resolveInputFrom(mapping, dataBus) {
|
|
132
|
+
const resolved = {};
|
|
133
|
+
for (const [targetKey, sourceRef] of Object.entries(mapping)) {
|
|
134
|
+
const template = sourceRef.startsWith('${') ? sourceRef : `\${${sourceRef}}`;
|
|
135
|
+
resolved[targetKey] = dataBus.resolve(template);
|
|
136
|
+
}
|
|
137
|
+
return resolved;
|
|
138
|
+
}
|
|
139
|
+
function resolveInputValues(input, dataBus) {
|
|
140
|
+
if (!input)
|
|
141
|
+
return {};
|
|
142
|
+
const resolved = {};
|
|
143
|
+
for (const [key, value] of Object.entries(input)) {
|
|
144
|
+
resolved[key] = resolveValue(value, dataBus);
|
|
145
|
+
}
|
|
146
|
+
return resolved;
|
|
147
|
+
}
|
|
148
|
+
function resolveValue(value, dataBus) {
|
|
149
|
+
if (typeof value === 'string') {
|
|
150
|
+
return dataBus.resolve(value);
|
|
151
|
+
}
|
|
152
|
+
if (Array.isArray(value)) {
|
|
153
|
+
return value.map((item) => resolveValue(item, dataBus));
|
|
154
|
+
}
|
|
155
|
+
if (value && typeof value === 'object') {
|
|
156
|
+
const resolved = {};
|
|
157
|
+
for (const [k, v] of Object.entries(value)) {
|
|
158
|
+
resolved[k] = resolveValue(v, dataBus);
|
|
159
|
+
}
|
|
160
|
+
return resolved;
|
|
161
|
+
}
|
|
162
|
+
return value;
|
|
163
|
+
}
|
|
164
|
+
async function runToolNode(ctx, node, overrides, executionContext) {
|
|
165
|
+
const fromResolved = node.inputFrom
|
|
166
|
+
? resolveInputFrom(node.inputFrom, executionContext.dataBus)
|
|
167
|
+
: {};
|
|
168
|
+
const fromInputValues = node.input
|
|
169
|
+
? resolveInputValues(node.input, executionContext.dataBus)
|
|
170
|
+
: {};
|
|
81
171
|
const mergedInput = {
|
|
82
|
-
...
|
|
172
|
+
...fromInputValues,
|
|
173
|
+
...fromResolved,
|
|
83
174
|
...overrides?.[node.id],
|
|
84
175
|
};
|
|
85
176
|
const runAttempt = async () => {
|
|
@@ -88,6 +179,7 @@ async function runToolNode(ctx, node, overrides) {
|
|
|
88
179
|
if (failure) {
|
|
89
180
|
throw new Error(failure);
|
|
90
181
|
}
|
|
182
|
+
executionContext.dataBus.set(node.id, response);
|
|
91
183
|
return response;
|
|
92
184
|
};
|
|
93
185
|
const retry = node.retry;
|
|
@@ -113,7 +205,7 @@ async function runToolNode(ctx, node, overrides) {
|
|
|
113
205
|
}
|
|
114
206
|
async function runParallelNode(ctx, node, executionContext, options) {
|
|
115
207
|
const concurrency = Math.max(1, node.maxConcurrency ?? 4);
|
|
116
|
-
const results =
|
|
208
|
+
const results = Array.from({ length: node.steps.length });
|
|
117
209
|
let nextIndex = 0;
|
|
118
210
|
let stopped = false;
|
|
119
211
|
const worker = async () => {
|
|
@@ -145,6 +237,38 @@ async function runParallelNode(ctx, node, executionContext, options) {
|
|
|
145
237
|
await Promise.all(Array.from({ length: Math.min(concurrency, node.steps.length) }, () => worker()));
|
|
146
238
|
return results;
|
|
147
239
|
}
|
|
240
|
+
function getWorkflowVariable(stepResults, keyPath) {
|
|
241
|
+
if (stepResults.has(keyPath)) {
|
|
242
|
+
return stepResults.get(keyPath);
|
|
243
|
+
}
|
|
244
|
+
const segments = keyPath.split('.');
|
|
245
|
+
const stepId = segments[0];
|
|
246
|
+
const fieldSegments = segments.slice(1);
|
|
247
|
+
if (!stepId || !stepResults.has(stepId)) {
|
|
248
|
+
return undefined;
|
|
249
|
+
}
|
|
250
|
+
let current = stepResults.get(stepId);
|
|
251
|
+
if (current && typeof current === 'object') {
|
|
252
|
+
const payload = parseToolPayload(current);
|
|
253
|
+
if (payload) {
|
|
254
|
+
current = payload;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
for (const segment of fieldSegments) {
|
|
258
|
+
if (current && typeof current === 'object') {
|
|
259
|
+
const arrayMatch = segment.match(/^(\d+)$/);
|
|
260
|
+
if (arrayMatch && Array.isArray(current)) {
|
|
261
|
+
current = current[Number(arrayMatch[1])];
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
current = current[segment];
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
return undefined;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return current;
|
|
271
|
+
}
|
|
148
272
|
async function evaluatePredicate(node, ctx) {
|
|
149
273
|
if (node.predicateFn) {
|
|
150
274
|
return await node.predicateFn(ctx);
|
|
@@ -170,14 +294,72 @@ async function evaluatePredicate(node, ctx) {
|
|
|
170
294
|
return false;
|
|
171
295
|
return aggregate.success / total >= threshold / 100;
|
|
172
296
|
}
|
|
297
|
+
const equalsMatch = node.predicateId.match(/^variable_equals_(.+?)_(.+)$/);
|
|
298
|
+
if (equalsMatch && equalsMatch[1] && equalsMatch[2]) {
|
|
299
|
+
const keyPath = equalsMatch[1];
|
|
300
|
+
const expectedValue = equalsMatch[2];
|
|
301
|
+
const actualValue = getWorkflowVariable(ctx.stepResults, keyPath);
|
|
302
|
+
return deepEquals(actualValue, expectedValue);
|
|
303
|
+
}
|
|
304
|
+
const containsMatch = node.predicateId.match(/^variable_contains_(.+?)_(.+)$/);
|
|
305
|
+
if (containsMatch && containsMatch[1] && containsMatch[2]) {
|
|
306
|
+
const keyPath = containsMatch[1];
|
|
307
|
+
const substring = containsMatch[2];
|
|
308
|
+
const value = getWorkflowVariable(ctx.stepResults, keyPath);
|
|
309
|
+
if (typeof value !== 'string' && !Array.isArray(value)) {
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
return String(value).includes(substring);
|
|
313
|
+
}
|
|
314
|
+
const matchesMatch = node.predicateId.match(/^variable_matches_(.+?)_(.+)$/);
|
|
315
|
+
if (matchesMatch && matchesMatch[1] && matchesMatch[2]) {
|
|
316
|
+
const keyPath = matchesMatch[1];
|
|
317
|
+
const pattern = matchesMatch[2];
|
|
318
|
+
const value = getWorkflowVariable(ctx.stepResults, keyPath);
|
|
319
|
+
if (typeof value !== 'string') {
|
|
320
|
+
return false;
|
|
321
|
+
}
|
|
322
|
+
try {
|
|
323
|
+
const regex = new RegExp(pattern);
|
|
324
|
+
return regex.test(value);
|
|
325
|
+
}
|
|
326
|
+
catch {
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
173
330
|
throw new Error(`Unknown workflow predicateId "${node.predicateId}"`);
|
|
174
331
|
}
|
|
332
|
+
function deepEquals(a, b) {
|
|
333
|
+
if (a === b) {
|
|
334
|
+
return true;
|
|
335
|
+
}
|
|
336
|
+
if (typeof a !== typeof b) {
|
|
337
|
+
return false;
|
|
338
|
+
}
|
|
339
|
+
if (a && b && typeof a === 'object' && typeof b === 'object') {
|
|
340
|
+
if (Array.isArray(a) !== Array.isArray(b)) {
|
|
341
|
+
return false;
|
|
342
|
+
}
|
|
343
|
+
if (Array.isArray(a)) {
|
|
344
|
+
const arrA = a;
|
|
345
|
+
const arrB = b;
|
|
346
|
+
return arrA.length === arrB.length && arrA.every((v, i) => deepEquals(v, arrB[i]));
|
|
347
|
+
}
|
|
348
|
+
const keysA = Object.keys(a);
|
|
349
|
+
const keysB = Object.keys(b);
|
|
350
|
+
if (keysA.length !== keysB.length) {
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
353
|
+
return keysA.every((key) => deepEquals(a[key], b[key]));
|
|
354
|
+
}
|
|
355
|
+
return false;
|
|
356
|
+
}
|
|
175
357
|
async function executeNode(ctx, node, executionContext, options) {
|
|
176
358
|
executionContext.emitSpan('workflow.node.start', { nodeId: node.id, kind: node.kind });
|
|
177
359
|
let result;
|
|
178
360
|
switch (node.kind) {
|
|
179
361
|
case 'tool':
|
|
180
|
-
result = await runToolNode(ctx, node, options.nodeInputOverrides);
|
|
362
|
+
result = await runToolNode(ctx, node, options.nodeInputOverrides, executionContext);
|
|
181
363
|
break;
|
|
182
364
|
case 'sequence': {
|
|
183
365
|
const sequenceNode = node;
|
|
@@ -203,6 +385,22 @@ async function executeNode(ctx, node, executionContext, options) {
|
|
|
203
385
|
}
|
|
204
386
|
break;
|
|
205
387
|
}
|
|
388
|
+
case 'fallback': {
|
|
389
|
+
const fallbackNode = node;
|
|
390
|
+
try {
|
|
391
|
+
result = await executeNode(ctx, fallbackNode.primary, executionContext, options);
|
|
392
|
+
}
|
|
393
|
+
catch (error) {
|
|
394
|
+
executionContext.emitSpan('workflow.node.fallback', {
|
|
395
|
+
nodeId: fallbackNode.id,
|
|
396
|
+
primaryNodeId: fallbackNode.primary.id,
|
|
397
|
+
fallbackNodeId: fallbackNode.fallback.id,
|
|
398
|
+
error: error instanceof Error ? error.message : String(error),
|
|
399
|
+
});
|
|
400
|
+
result = await executeNode(ctx, fallbackNode.fallback, executionContext, options);
|
|
401
|
+
}
|
|
402
|
+
break;
|
|
403
|
+
}
|
|
206
404
|
default:
|
|
207
405
|
throw new Error(`Unsupported workflow node kind: ${node.kind}`);
|
|
208
406
|
}
|
|
@@ -210,6 +408,59 @@ async function executeNode(ctx, node, executionContext, options) {
|
|
|
210
408
|
executionContext.emitSpan('workflow.node.finish', { nodeId: node.id, kind: node.kind });
|
|
211
409
|
return result;
|
|
212
410
|
}
|
|
411
|
+
function collectToolNodes(node) {
|
|
412
|
+
switch (node.kind) {
|
|
413
|
+
case 'tool':
|
|
414
|
+
return [node];
|
|
415
|
+
case 'sequence':
|
|
416
|
+
case 'parallel':
|
|
417
|
+
return node.steps.flatMap((step) => collectToolNodes(step));
|
|
418
|
+
case 'branch':
|
|
419
|
+
return [
|
|
420
|
+
...collectToolNodes(node.whenTrue),
|
|
421
|
+
...(node.whenFalse ? collectToolNodes(node.whenFalse) : []),
|
|
422
|
+
];
|
|
423
|
+
case 'fallback': {
|
|
424
|
+
const fallbackNode = node;
|
|
425
|
+
return [
|
|
426
|
+
...collectToolNodes(fallbackNode.primary),
|
|
427
|
+
...collectToolNodes(fallbackNode.fallback),
|
|
428
|
+
];
|
|
429
|
+
}
|
|
430
|
+
default:
|
|
431
|
+
return [];
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
function getEvidenceState(ctx) {
|
|
435
|
+
try {
|
|
436
|
+
const evidenceGraph = ctx.getDomainInstance('evidenceGraph');
|
|
437
|
+
return evidenceGraph
|
|
438
|
+
? { hasGraph: true, nodeCount: evidenceGraph.nodeCount, edgeCount: evidenceGraph.edgeCount }
|
|
439
|
+
: { hasGraph: false, nodeCount: 0, edgeCount: 0 };
|
|
440
|
+
}
|
|
441
|
+
catch {
|
|
442
|
+
return { hasGraph: false, nodeCount: 0, edgeCount: 0 };
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
function collectUnsatisfiedPrerequisites(graph, routingState) {
|
|
446
|
+
const prerequisites = getEffectivePrerequisites();
|
|
447
|
+
const warnings = [];
|
|
448
|
+
for (const toolNode of collectToolNodes(graph)) {
|
|
449
|
+
const toolPrerequisites = prerequisites[toolNode.toolName] ?? [];
|
|
450
|
+
for (const prerequisite of toolPrerequisites) {
|
|
451
|
+
if (prerequisite.check(routingState)) {
|
|
452
|
+
continue;
|
|
453
|
+
}
|
|
454
|
+
warnings.push({
|
|
455
|
+
nodeId: toolNode.id,
|
|
456
|
+
toolName: toolNode.toolName,
|
|
457
|
+
condition: prerequisite.condition,
|
|
458
|
+
fix: prerequisite.fix,
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
return warnings;
|
|
463
|
+
}
|
|
213
464
|
export async function executeExtensionWorkflow(ctx, workflow, options = {}) {
|
|
214
465
|
const runId = randomUUID();
|
|
215
466
|
const profile = options.profile ?? String(ctx.baseTier ?? 'workflow');
|
|
@@ -218,6 +469,7 @@ export async function executeExtensionWorkflow(ctx, workflow, options = {}) {
|
|
|
218
469
|
const metrics = [];
|
|
219
470
|
const spans = [];
|
|
220
471
|
const stepResults = new Map();
|
|
472
|
+
const dataBus = new WorkflowDataBus();
|
|
221
473
|
const mergedConfig = options.config
|
|
222
474
|
? { ...ctx.config, ...options.config }
|
|
223
475
|
: ctx.config;
|
|
@@ -225,6 +477,7 @@ export async function executeExtensionWorkflow(ctx, workflow, options = {}) {
|
|
|
225
477
|
workflowRunId: runId,
|
|
226
478
|
profile,
|
|
227
479
|
stepResults,
|
|
480
|
+
dataBus,
|
|
228
481
|
invokeTool(toolName, args) {
|
|
229
482
|
return ctx.executeToolWithTracking(toolName, args);
|
|
230
483
|
},
|
|
@@ -241,8 +494,65 @@ export async function executeExtensionWorkflow(ctx, workflow, options = {}) {
|
|
|
241
494
|
try {
|
|
242
495
|
await workflow.onStart?.(executionContext);
|
|
243
496
|
const graph = workflow.build(executionContext);
|
|
497
|
+
const preflightMode = options.preflightMode ?? 'warn';
|
|
498
|
+
let preflightWarnings = [];
|
|
499
|
+
if (preflightMode === 'skip') {
|
|
500
|
+
executionContext.emitSpan('workflow.preflight', {
|
|
501
|
+
mode: preflightMode,
|
|
502
|
+
skipped: true,
|
|
503
|
+
evidenceState: getEvidenceState(ctx),
|
|
504
|
+
warningCount: 0,
|
|
505
|
+
});
|
|
506
|
+
}
|
|
507
|
+
else {
|
|
508
|
+
try {
|
|
509
|
+
const routingState = await getRoutingState(ctx);
|
|
510
|
+
const evidenceState = getEvidenceState(ctx);
|
|
511
|
+
preflightWarnings = collectUnsatisfiedPrerequisites(graph, routingState);
|
|
512
|
+
executionContext.emitSpan('workflow.preflight', {
|
|
513
|
+
mode: preflightMode,
|
|
514
|
+
routingState,
|
|
515
|
+
evidenceState,
|
|
516
|
+
warningCount: preflightWarnings.length,
|
|
517
|
+
warnings: preflightWarnings,
|
|
518
|
+
});
|
|
519
|
+
if (preflightMode === 'strict' && preflightWarnings.length > 0) {
|
|
520
|
+
throw new PreflightError(preflightWarnings);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
catch (error) {
|
|
524
|
+
if (error instanceof PreflightError) {
|
|
525
|
+
throw error;
|
|
526
|
+
}
|
|
527
|
+
executionContext.emitSpan('workflow.preflight', {
|
|
528
|
+
mode: preflightMode,
|
|
529
|
+
warningCount: 0,
|
|
530
|
+
skipped: true,
|
|
531
|
+
error: error instanceof Error ? error.message : String(error),
|
|
532
|
+
evidenceState: getEvidenceState(ctx),
|
|
533
|
+
});
|
|
534
|
+
}
|
|
535
|
+
}
|
|
244
536
|
const result = await withTimeout(executeNode(ctx, graph, executionContext, options), options.timeoutMs ?? workflow.timeoutMs ?? 0, `Workflow "${workflow.id}"`);
|
|
245
537
|
await workflow.onFinish?.(executionContext, result);
|
|
538
|
+
try {
|
|
539
|
+
const evidenceGraph = typeof ctx.getDomainInstance === 'function'
|
|
540
|
+
? ctx.getDomainInstance('evidenceGraph')
|
|
541
|
+
: undefined;
|
|
542
|
+
if (evidenceGraph && evidenceGraph.nodeCount > 0) {
|
|
543
|
+
stepResults.set('__evidenceSnapshot', evidenceGraph.exportJson());
|
|
544
|
+
executionContext.emitSpan('workflow.evidence.auto-export', {
|
|
545
|
+
nodeCount: evidenceGraph.nodeCount,
|
|
546
|
+
edgeCount: evidenceGraph.edgeCount,
|
|
547
|
+
});
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
catch (exportError) {
|
|
551
|
+
executionContext.emitSpan('workflow.evidence.auto-export', {
|
|
552
|
+
skipped: true,
|
|
553
|
+
error: exportError instanceof Error ? exportError.message : String(exportError),
|
|
554
|
+
});
|
|
555
|
+
}
|
|
246
556
|
return {
|
|
247
557
|
workflowId: workflow.id,
|
|
248
558
|
displayName: workflow.displayName,
|
|
@@ -1,24 +1,10 @@
|
|
|
1
1
|
export interface Config {
|
|
2
|
-
llm: LLMConfig;
|
|
3
2
|
puppeteer: PuppeteerConfig;
|
|
4
3
|
mcp: MCPConfig;
|
|
5
4
|
cache: CacheConfig;
|
|
6
5
|
performance: PerformanceConfig;
|
|
7
6
|
search: SearchConfig;
|
|
8
7
|
}
|
|
9
|
-
export interface LLMConfig {
|
|
10
|
-
provider: 'openai' | 'anthropic';
|
|
11
|
-
openai?: {
|
|
12
|
-
apiKey: string;
|
|
13
|
-
model: string;
|
|
14
|
-
baseURL?: string;
|
|
15
|
-
};
|
|
16
|
-
anthropic?: {
|
|
17
|
-
apiKey: string;
|
|
18
|
-
model: string;
|
|
19
|
-
baseURL?: string;
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
8
|
export interface PuppeteerConfig {
|
|
23
9
|
headless: boolean;
|
|
24
10
|
timeout: number;
|
|
@@ -6,7 +6,6 @@ export interface Transformation {
|
|
|
6
6
|
}
|
|
7
7
|
export interface DeobfuscateOptions {
|
|
8
8
|
code: string;
|
|
9
|
-
llm?: 'gpt-4' | 'claude';
|
|
10
9
|
aggressive?: boolean;
|
|
11
10
|
preserveLogic?: boolean;
|
|
12
11
|
renameVariables?: boolean;
|
|
@@ -61,4 +60,5 @@ export interface DeobfuscateResult {
|
|
|
61
60
|
warnings?: string[];
|
|
62
61
|
engine?: 'legacy' | 'webcrack' | 'hybrid';
|
|
63
62
|
webcrackApplied?: boolean;
|
|
63
|
+
cached?: boolean;
|
|
64
64
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { CodeLocation, Result } from './common.js';
|
|
2
|
-
export type { Config,
|
|
2
|
+
export type { Config, PuppeteerConfig, MCPConfig, CacheConfig, PerformanceConfig, SearchConfig, SearchQueryCategoryProfileConfig, SearchCjkQueryAliasConfig, SearchIntentToolBoostRuleConfig, } from './config.js';
|
|
3
3
|
export type { BrowserContext } from './browser.js';
|
|
4
4
|
export type { CollectCodeOptions, CodeFile, CollectCodeResult, DependencyGraph, DependencyNode, DependencyEdge, } from './collector.js';
|
|
5
5
|
export type { ObfuscationType, Transformation, DeobfuscateOptions, DeobfuscateResult, DeobfuscateMappingRule, DeobfuscateSavedArtifact, DeobfuscateBundleModuleSummary, DeobfuscateBundleSummary, } from './deobfuscator.js';
|
|
@@ -51,6 +51,8 @@ export class DetailedDataManager {
|
|
|
51
51
|
return Object(value)[key];
|
|
52
52
|
}
|
|
53
53
|
smartHandle(data, threshold = DETAILED_DATA_SMART_THRESHOLD_BYTES) {
|
|
54
|
+
if (data === null || data === undefined || typeof data !== 'object')
|
|
55
|
+
return data;
|
|
54
56
|
const { json: jsonStr, size } = this.serializeWithMemo(data);
|
|
55
57
|
if (size <= threshold) {
|
|
56
58
|
return data;
|
|
@@ -6,7 +6,7 @@ export class RingBuffer {
|
|
|
6
6
|
count = 0;
|
|
7
7
|
constructor(capacity) {
|
|
8
8
|
this.capacity = capacity;
|
|
9
|
-
this.buf =
|
|
9
|
+
this.buf = Array.from({ length: capacity });
|
|
10
10
|
}
|
|
11
11
|
get length() {
|
|
12
12
|
return this.count;
|
|
@@ -37,7 +37,7 @@ export class RingBuffer {
|
|
|
37
37
|
return item;
|
|
38
38
|
}
|
|
39
39
|
clear() {
|
|
40
|
-
this.buf =
|
|
40
|
+
this.buf = Array.from({ length: Math.min(64, this.capacity) });
|
|
41
41
|
this.head = 0;
|
|
42
42
|
this.tail = 0;
|
|
43
43
|
this.count = 0;
|
|
@@ -48,14 +48,14 @@ export class RingBuffer {
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
toArray() {
|
|
51
|
-
const result =
|
|
51
|
+
const result = Array.from({ length: this.count });
|
|
52
52
|
for (let i = 0; i < this.count; i++) {
|
|
53
53
|
result[i] = this.buf[(this.head + i) % this.buf.length];
|
|
54
54
|
}
|
|
55
55
|
return result;
|
|
56
56
|
}
|
|
57
57
|
map(fn) {
|
|
58
|
-
const result =
|
|
58
|
+
const result = Array.from({ length: this.count });
|
|
59
59
|
for (let i = 0; i < this.count; i++) {
|
|
60
60
|
result[i] = fn(this.buf[(this.head + i) % this.buf.length], i);
|
|
61
61
|
}
|
|
@@ -63,7 +63,7 @@ export class RingBuffer {
|
|
|
63
63
|
}
|
|
64
64
|
grow() {
|
|
65
65
|
const newSize = Math.min(this.buf.length * 2, this.capacity);
|
|
66
|
-
const newBuf =
|
|
66
|
+
const newBuf = Array.from({ length: newSize });
|
|
67
67
|
for (let i = 0; i < this.count; i++) {
|
|
68
68
|
newBuf[i] = this.buf[(this.head + i) % this.buf.length];
|
|
69
69
|
}
|
|
@@ -257,7 +257,7 @@ export class TokenBudgetManager {
|
|
|
257
257
|
tokens,
|
|
258
258
|
percentage: Math.round((tokens / this.currentUsage) * 100),
|
|
259
259
|
}))
|
|
260
|
-
.
|
|
260
|
+
.toSorted((a, b) => b.tokens - a.tokens)
|
|
261
261
|
.slice(0, 10);
|
|
262
262
|
const suggestions = this.generateSuggestions(topTools);
|
|
263
263
|
const recentCalls = this.toolCallHistory.slice(-20);
|
|
@@ -125,7 +125,7 @@ export class UnifiedCacheManager {
|
|
|
125
125
|
async cleanupLargeItems() {
|
|
126
126
|
logger.info('Cleaning up large caches...');
|
|
127
127
|
const stats = await this.getGlobalStats();
|
|
128
|
-
const sortedCaches = stats.caches.
|
|
128
|
+
const sortedCaches = stats.caches.toSorted((a, b) => b.size - a.size);
|
|
129
129
|
for (const cacheStats of sortedCaches.slice(0, 2)) {
|
|
130
130
|
const cache = this.caches.get(cacheStats.name);
|
|
131
131
|
if (cache?.clear) {
|
|
@@ -38,7 +38,7 @@ export async function cleanupArtifacts(options) {
|
|
|
38
38
|
if (cutoff > 0) {
|
|
39
39
|
const agedOut = remaining
|
|
40
40
|
.filter((entry) => entry.mtimeMs < cutoff)
|
|
41
|
-
.
|
|
41
|
+
.toSorted((a, b) => a.mtimeMs - b.mtimeMs);
|
|
42
42
|
if (agedOut.length > 0) {
|
|
43
43
|
const agedOutPaths = new Set(agedOut.map((entry) => entry.path));
|
|
44
44
|
remaining = remaining.filter((entry) => !agedOutPaths.has(entry.path));
|
|
@@ -54,7 +54,7 @@ export async function cleanupArtifacts(options) {
|
|
|
54
54
|
if (config.maxTotalBytes > 0) {
|
|
55
55
|
let totalBytes = remaining.reduce((sum, entry) => sum + entry.size, 0);
|
|
56
56
|
if (totalBytes > config.maxTotalBytes) {
|
|
57
|
-
const sizeCandidates = [...remaining].
|
|
57
|
+
const sizeCandidates = [...remaining].toSorted((a, b) => a.mtimeMs - b.mtimeMs);
|
|
58
58
|
const removedPaths = new Set();
|
|
59
59
|
for (const entry of sizeCandidates) {
|
|
60
60
|
if (totalBytes <= config.maxTotalBytes)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type BetterSqlite3Issue = 'missing' | 'abi-mismatch' | 'load-failed';
|
|
2
|
+
export interface BetterSqlite3ProbeResult {
|
|
3
|
+
status: 'ok' | 'missing' | 'warn';
|
|
4
|
+
detail: string;
|
|
5
|
+
version: string | null;
|
|
6
|
+
issue?: BetterSqlite3Issue;
|
|
7
|
+
}
|
|
8
|
+
export declare function isBetterSqlite3RelatedError(error: unknown): boolean;
|
|
9
|
+
export declare function classifyBetterSqlite3Issue(error: unknown): BetterSqlite3Issue;
|
|
10
|
+
export declare function formatBetterSqlite3Error(error: unknown): string;
|
|
11
|
+
export declare function probeBetterSqlite3(): BetterSqlite3ProbeResult;
|