@jshookmcp/jshook 0.2.9 → 0.3.0
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 +2 -2
- package/README.zh.md +2 -2
- package/dist/{AntiCheatDetector-BNk-EoBt.mjs → AntiCheatDetector-CqGDXmfc.mjs} +159 -53
- package/dist/{CodeInjector-Cq8q01kp.mjs → CodeInjector-BdjRfNx7.mjs} +5 -5
- package/dist/{ConsoleMonitor-CPVQW1Y-.mjs → ConsoleMonitor-DykL3IAw.mjs} +85 -17
- package/dist/{DetailedDataManager-BQQcxh64.mjs → DetailedDataManager-HT49OrvF.mjs} +1 -1
- package/dist/{ExtensionManager-CWYgw0YW.mjs → ExtensionManager-BDMsY2Dz.mjs} +15 -8
- package/dist/{HardwareBreakpoint-B9gZCdFP.mjs → HardwareBreakpoint-Cc2AFq1Y.mjs} +3 -3
- package/dist/{HeapAnalyzer-BLDH0dCv.mjs → HeapAnalyzer-DruMgsgj.mjs} +20 -20
- package/dist/{HookGeneratorBuilders.core.generators.storage-CtcdK78Q.mjs → HookGeneratorBuilders.core.generators.storage-CTbB4Lcx.mjs} +1 -74
- package/dist/{InstrumentationSession-CvPC7Jwy.mjs → InstrumentationSession-DLH0vd-z.mjs} +2 -2
- package/dist/{MemoryController-CbVdCIJF.mjs → MemoryController-CMtviNW_.mjs} +3 -3
- package/dist/{MemoryScanSession-BsDZbLYm.mjs → MemoryScanSession-ITgb_NMi.mjs} +2 -2
- package/dist/{MemoryScanner-Bcpml6II.mjs → MemoryScanner-CiL7Z3ey.mjs} +12 -9
- package/dist/{NativeMemoryManager.impl-dZtA1ZGn.mjs → NativeMemoryManager.impl-D9Lkovvn.mjs} +13 -10
- package/dist/{NativeMemoryManager.utils-B-FjA2mJ.mjs → NativeMemoryManager.utils-BBlAixF5.mjs} +1 -1
- package/dist/{PEAnalyzer-D1lzJ_VG.mjs → PEAnalyzer-DMQ44gen.mjs} +15 -15
- package/dist/{PageController-Bqm2kZ_X.mjs → PageController-BPJNqqBN.mjs} +18 -4
- package/dist/{PointerChainEngine-BOhyVsjx.mjs → PointerChainEngine-K7wN8Z-w.mjs} +10 -7
- package/dist/ProcessRegistry-zGg12QbE.mjs +74 -0
- package/dist/{ResponseBuilder-D3iFYx2N.mjs → ResponseBuilder-CJXWmWNw.mjs} +10 -10
- package/dist/{ScriptManager-aHHq0X7U.mjs → ScriptManager-ZuWD-0Jg.mjs} +195 -192
- package/dist/{Speedhack-CqdIFlQl.mjs → Speedhack-D-z0umeT.mjs} +2 -2
- package/dist/{StructureAnalyzer-DhFaPvRO.mjs → StructureAnalyzer-Cav5AVSL.mjs} +9 -6
- package/dist/{ToolCatalog-C0JGZoOm.mjs → ToolCatalog-5OJdMiF0.mjs} +81 -81
- package/dist/{ToolProbe-oC7aPrkv.mjs → ToolProbe-DbCFGyrg.mjs} +1 -1
- package/dist/{ToolRegistry-BjaF4oNz.mjs → ToolRegistry-B9krbTtI.mjs} +51 -2
- package/dist/{ToolRouter.policy-BWV67ZK-.mjs → ToolRouter.policy-BGDAGyeH.mjs} +60 -20
- package/dist/TraceRecorder-B41Z5XBj.mjs +1286 -0
- package/dist/{Win32API-CePkipZY.mjs → Win32API-C2kjj0ze.mjs} +18 -12
- package/dist/{Win32Debug-BvKs-gxc.mjs → Win32Debug-CKrGOTpo.mjs} +2 -2
- package/dist/{WorkflowEngine-CuvkZtWu.mjs → WorkflowEngine-DJ6M4opp.mjs} +226 -255
- package/dist/analysis-BHeJW2Nb.mjs +1234 -0
- package/dist/{antidebug-CqDTB_uk.mjs → antidebug-BRKeyt27.mjs} +3 -3
- package/dist/{artifactRetention-CFEprwPw.mjs → artifactRetention-CPXkUJXp.mjs} +13 -6
- package/dist/{artifacts-Bk2-_uPq.mjs → artifacts-DkfosXH3.mjs} +1 -1
- package/dist/authorization-schema-DRqyJMSk.mjs +31 -0
- package/dist/{binary-instrument-CXfpx6fT.mjs → binary-instrument--V3MAhJ4.mjs} +19 -27
- package/dist/bind-helpers-ClV34xdn.mjs +42 -0
- package/dist/{boringssl-inspector-BH2D3VKc.mjs → boringssl-inspector-Bo_LOLaS.mjs} +1 -1
- package/dist/{browser-BpOr5PEx.mjs → browser-Dx3_S2cG.mjs} +324 -37
- package/dist/capabilities-CcHlvWgK.mjs +33 -0
- package/dist/{constants-B0OANIBL.mjs → constants-CDZLOoVv.mjs} +18 -3
- package/dist/{coordination-qUbyF8KU.mjs → coordination-DgItD9DL.mjs} +2 -2
- package/dist/{debugger-gnKxRSN0.mjs → debugger-RS3RSAqs.mjs} +30 -13
- package/dist/definitions-BEoYofW5.mjs +47 -0
- package/dist/{definitions-bAhHQJq9.mjs → definitions-BRaefg3u.mjs} +11 -5
- package/dist/{definitions-DVGfrn7y.mjs → definitions-BbkvZkiv.mjs} +2 -2
- package/dist/definitions-BtWSHJ3o.mjs +17 -0
- package/dist/{definitions-BMfYXoNC.mjs → definitions-C1gCHO0i.mjs} +1 -1
- package/dist/{definitions-C1UvM5Iy.mjs → definitions-CDOg_b-l.mjs} +14 -2
- package/dist/definitions-CVPD9hzZ.mjs +54 -0
- package/dist/{definitions-Cke7zEb8.mjs → definitions-Cea8Lgl7.mjs} +1 -1
- package/dist/definitions-DAgIyjxM.mjs +10 -0
- package/dist/{definitions-B4rAvHNZ.mjs → definitions-DJA27nsL.mjs} +12 -9
- package/dist/{definitions-ClJLzsJQ.mjs → definitions-DKPFU3LW.mjs} +1 -1
- package/dist/{definitions-D3VsGcvz.mjs → definitions-DPRpZQ96.mjs} +7 -7
- package/dist/{definitions-B18eyf0B.mjs → definitions-DUE5gmdn.mjs} +1 -1
- package/dist/definitions-DYVjOtxa.mjs +26 -0
- package/dist/{definitions-BB_4jnmy.mjs → definitions-DcYLVLCo.mjs} +1 -1
- package/dist/{definitions-Beid2EB3.mjs → definitions-Pp5LI2H4.mjs} +1 -1
- package/dist/definitions-j9KdHVNR.mjs +14 -0
- package/dist/definitions-uzkjBwa7.mjs +258 -0
- package/dist/{definitions-Cq-zroAU.mjs → definitions-va-AnLuQ.mjs} +4 -4
- package/dist/{encoding-Bvz5jLRv.mjs → encoding-DJeqHmpd.mjs} +18 -4
- package/dist/{evidence-graph-bridge-C_fv9PuC.mjs → evidence-graph-bridge-DcYizFk2.mjs} +1 -0
- package/dist/{factory-DxlGh9Xf.mjs → factory-C90tBff6.mjs} +6 -6
- package/dist/flat-target-session-Dgax2Cy3.mjs +29 -0
- package/dist/{graphql-DYWzJ29s.mjs → graphql-CoHrhweh.mjs} +205 -34
- package/dist/{handlers-C67ktuRN.mjs → handlers-4jmR0nMs.mjs} +220 -32
- package/dist/{handlers-DlCJN4Td.mjs → handlers-BAHPxcch.mjs} +122 -90
- package/dist/{handlers-9sAbfIg-.mjs → handlers-BOs9b907.mjs} +849 -801
- package/dist/{handlers-DxGIq15_2.mjs → handlers-BWXEy6ef.mjs} +16 -16
- package/dist/{handlers-tB9Mp9ZK.mjs → handlers-Bndn6QvE.mjs} +31 -4
- package/dist/{handlers-CTsDAO6p.mjs → handlers-BqC4bD4s.mjs} +1 -1
- package/dist/{handlers-C87g8oCe.mjs → handlers-BtYq60bM2.mjs} +1 -1
- package/dist/{handlers-DeLOCd5m.mjs → handlers-BzgcB4iv.mjs} +17 -17
- package/dist/{handlers-Cgyg6c0U.mjs → handlers-CRyRWj2b.mjs} +237 -23
- package/dist/{handlers-U6L4xhuF.mjs → handlers-CVv2H1uq.mjs} +24 -17
- package/dist/{handlers-tiy7EIBp.mjs → handlers-Dl5a7JS4.mjs} +3 -3
- package/dist/{handlers-D6j6yka7.mjs → handlers-Dx2d7jt7.mjs} +1893 -1480
- package/dist/{handlers-Bl8zkwz1.mjs → handlers-Dz9PYsCa.mjs} +95 -6
- package/dist/handlers-HujRKC3b.mjs +661 -0
- package/dist/{handlers.impl-DS0d9fUw.mjs → handlers.impl-XWXkQfyi.mjs} +70 -24
- package/dist/{hooks-CzCWByww.mjs → hooks-B1B8NRHL.mjs} +3 -3
- package/dist/index.mjs +154 -144
- package/dist/{maintenance-P7ePRXQC.mjs → maintenance-PRMkLVRW.mjs} +35 -30
- package/dist/manifest-67Bok-Si.mjs +58 -0
- package/dist/{manifest-B3QVVeBS.mjs → manifest-6lNTMZAB2.mjs} +33 -28
- package/dist/manifest-B2duEHiH.mjs +90 -0
- package/dist/manifest-B6EY9Vm8.mjs +57 -0
- package/dist/{manifest-gZ4s_UtG.mjs → manifest-B6nKSbyY.mjs} +32 -33
- package/dist/{manifest-2ToTpjv8.mjs → manifest-BL8AQNPF.mjs} +31 -31
- package/dist/{manifest-DzwvxPJX.mjs → manifest-BSZvJJmV.mjs} +23 -14
- package/dist/{manifest-Sc_0JQ13.mjs → manifest-BU7qzUyX.mjs} +23 -23
- package/dist/{manifest-CT7zZBV1.mjs → manifest-Bl62e8WK.mjs} +24 -23
- package/dist/manifest-Bo5cXjdt.mjs +82 -0
- package/dist/manifest-BpS4gtUK.mjs +1347 -0
- package/dist/manifest-Bv65_e2W.mjs +101 -0
- package/dist/manifest-BytNIF4Z.mjs +117 -0
- package/dist/{manifest-BqrQ4Tpj.mjs → manifest-C-xtsjS3.mjs} +23 -23
- package/dist/{manifest-NXctwWQq.mjs → manifest-CDYl7OhA.mjs} +36 -38
- package/dist/manifest-CRZ3xmkD.mjs +61 -0
- package/dist/manifest-CoW6u4Tp.mjs +132 -0
- package/dist/manifest-Cq5zN_8A.mjs +50 -0
- package/dist/{manifest-CAhOuvSl.mjs → manifest-D7YZM_2e.mjs} +75 -85
- package/dist/{manifest-DCyjf4n2.mjs → manifest-DE_VrAeQ.mjs} +27 -7
- package/dist/manifest-DGsXSCpT.mjs +39 -0
- package/dist/{manifest-BB2J8IMJ.mjs → manifest-DJ2vfEuW.mjs} +48 -41
- package/dist/{manifest-3g71z6Bg.mjs → manifest-DPXDYhEu.mjs} +26 -25
- package/dist/manifest-Dd4fQb0a.mjs +322 -0
- package/dist/{manifest-CXsRWjjI.mjs → manifest-Deq6opGg.mjs} +95 -96
- package/dist/{manifest-C9RT5nk32.mjs → manifest-DfJTafJK.mjs} +14 -11
- package/dist/manifest-DgOdgN_j.mjs +50 -0
- package/dist/{manifest-BmtZzQiQ2.mjs → manifest-DlbMW4v4.mjs} +17 -15
- package/dist/{manifest-DrbmZcFl2.mjs → manifest-DmVfbH0w.mjs} +212 -91
- package/dist/manifest-Dog6Ddjr.mjs +109 -0
- package/dist/manifest-DvgU5FWb.mjs +58 -0
- package/dist/manifest-HsfDBs7j.mjs +50 -0
- package/dist/manifest-I8oQHvCG.mjs +186 -0
- package/dist/manifest-NvH_a-av.mjs +786 -0
- package/dist/{manifest-Dh8WBmEW.mjs → manifest-cEJU1v0Z.mjs} +24 -24
- package/dist/manifest-wOl5XLB12.mjs +112 -0
- package/dist/{modules-C184v-S9.mjs → modules-tZozf0LQ.mjs} +130 -860
- package/dist/{mojo-ipc-B_H61Afw.mjs → mojo-ipc-DXNEXEqb.mjs} +141 -26
- package/dist/{network-671Cw6hV.mjs → network-CPVvwvFg.mjs} +1329 -823
- package/dist/{outputPaths-B1uGmrWZ.mjs → outputPaths-um7lCRY3.mjs} +4 -8
- package/dist/{platform-WmNn8Sxb.mjs → platform-CYeFoTWp.mjs} +101 -10
- package/dist/{process-QcbIy5Zq.mjs → process-BTbgcVc6.mjs} +251 -346
- package/dist/{proxy-DqNs0bAd.mjs → proxy-r8YN6nP1.mjs} +30 -8
- package/dist/{registry-D-6e18lB.mjs → registry-Bl8ZQW61.mjs} +3 -3
- package/dist/{response-BQVP-xUn.mjs → response-CWhh2aLo.mjs} +7 -1
- package/dist/{shared-state-board-DV-dpHFJ.mjs → shared-state-board-BoZnSoj-.mjs} +2 -2
- package/dist/{sourcemap-Dq8ez8vS.mjs → sourcemap-BIDHUVXy.mjs} +350 -66
- package/dist/{streaming-BUQ0VJsg.mjs → streaming-Dal6utPp.mjs} +13 -13
- package/dist/{tool-builder-DCbIC5Eo.mjs → tool-builder-BHJp32mV.mjs} +1 -1
- package/dist/{transform-CiYJfNX0.mjs → transform-DRVgGG90.mjs} +18 -14
- package/dist/wasm-BYx5UOeG.mjs +1044 -0
- package/dist/webcrack-Be0_FccV.mjs +747 -0
- package/dist/{workflow-f3xJOcjx.mjs → workflow-BpuKEtvn.mjs} +8 -8
- package/package.json +76 -43
- package/dist/TraceRecorder-DgxyVbdQ.mjs +0 -519
- package/dist/analysis-CL9uACt9.mjs +0 -463
- package/dist/bind-helpers-xFfRF-qm.mjs +0 -22
- package/dist/definitions-6M-eejaT.mjs +0 -53
- package/dist/definitions-B3QdlrHv.mjs +0 -34
- package/dist/definitions-CXEI7QC72.mjs +0 -216
- package/dist/definitions-C_4r7Fo-2.mjs +0 -14
- package/dist/definitions-CkFDALoa.mjs +0 -26
- package/dist/definitions-Cy3Sl6gV.mjs +0 -34
- package/dist/definitions-LKpC3-nL.mjs +0 -9
- package/dist/handlers-DdFzXLvF.mjs +0 -446
- package/dist/manifest-82baTv4U.mjs +0 -45
- package/dist/manifest-BKbgbSiY.mjs +0 -60
- package/dist/manifest-Bcf-TJzH.mjs +0 -848
- package/dist/manifest-Bnd7kqEY.mjs +0 -55
- package/dist/manifest-BqQX6OQC2.mjs +0 -65
- package/dist/manifest-Br4RPFt5.mjs +0 -370
- package/dist/manifest-C5qDjysN.mjs +0 -107
- package/dist/manifest-CBYWCUBJ.mjs +0 -51
- package/dist/manifest-CFADCRa1.mjs +0 -37
- package/dist/manifest-CQVhavRF.mjs +0 -114
- package/dist/manifest-CV12bcrF.mjs +0 -121
- package/dist/manifest-CZLUCfG02.mjs +0 -95
- package/dist/manifest-D6phHKFd.mjs +0 -131
- package/dist/manifest-DHsnKgP6.mjs +0 -60
- package/dist/manifest-Df_dliIe.mjs +0 -55
- package/dist/manifest-DhKRAT8_.mjs +0 -92
- package/dist/manifest-DlpTj4ic2.mjs +0 -193
- package/dist/manifest-DuwHjUa5.mjs +0 -70
- package/dist/manifest-qSleDqdO.mjs +0 -1023
- package/dist/wasm-DQTnHDs4.mjs +0 -531
- /package/dist/{CacheAdapters-CDe5WPSV.mjs → CacheAdapters-jJFy20G-.mjs} +0 -0
- /package/dist/{DarwinAPI-BNPxu0RH.mjs → DarwinAPI-ETyy0xyo.mjs} +0 -0
- /package/dist/{EventBus-DgPmwpeu.mjs → EventBus-DFKvADm3.mjs} +0 -0
- /package/dist/{EvidenceGraphBridge-SFesNera.mjs → EvidenceGraphBridge-318Oi0Lf.mjs} +0 -0
- /package/dist/{FingerprintManager-gzWtkKuf.mjs → FingerprintManager-BN4UQWnX.mjs} +0 -0
- /package/dist/{PrerequisiteError-Dl33Svkz.mjs → PrerequisiteError-TuyZIs6n.mjs} +0 -0
- /package/dist/{ReverseEvidenceGraph-Dlsk94LC.mjs → ReverseEvidenceGraph-C02-gXOh.mjs} +0 -0
- /package/dist/{StealthVerifier-Bo4T3bz8.mjs → StealthVerifier-BWmPgQsv.mjs} +0 -0
- /package/dist/{VersionDetector-CwVLVdDM.mjs → VersionDetector-K3V4vGsw.mjs} +0 -0
- /package/dist/{betterSqlite3-0pqusHHH.mjs → betterSqlite3-DLSBZodi.mjs} +0 -0
- /package/dist/{concurrency-Bt0yv1kJ.mjs → concurrency-Drev_Vz9.mjs} +0 -0
- /package/dist/{formatAddress-DVkj9kpI.mjs → formatAddress-nnMvEohD.mjs} +0 -0
- /package/dist/{parse-args-BlRjqlkL.mjs → parse-args-B4cY5Vx5.mjs} +0 -0
- /package/dist/{ssrf-policy-ZaUfvhq7.mjs → ssrf-policy-Dsqd-DTX.mjs} +0 -0
- /package/dist/{types-CPhOReNX.mjs → types-DDBWs9UP.mjs} +0 -0
package/dist/index.mjs
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { t as logger } from "./logger-Dh_xb7_2.mjs";
|
|
3
|
-
import { $
|
|
4
|
-
import { a as TokenBudgetManager, i as UnifiedCacheManager, n as getArtifactRetentionConfig, r as startArtifactRetentionScheduler, t as cleanupArtifacts } from "./artifactRetention-
|
|
5
|
-
import { t as DetailedDataManager } from "./DetailedDataManager-
|
|
6
|
-
import { r as asTextResponse, t as asErrorResponse } from "./response-
|
|
7
|
-
import { a as getToolsForProfile, c as ensureAllDomainsLoaded, d as getAllKnownDomains, f as getAllManifests, h as getLoaderMetadata, i as getToolsByDomains, l as ensureDomainLoaded, m as initRegistry, n as getProfileDomains, o as parseToolDomains, p as getAllRegistrations, r as getToolDomain, s as buildHandlerMapFromRegistry, t as allTools, u as getAllDomains } from "./ToolCatalog-
|
|
3
|
+
import { $t as PREDICTIVE_CONFIDENCE_THRESHOLD, An as SEARCH_CACHE_VECTOR_WEIGHT_TOLERANCE, Bn as SEARCH_RECENCY_WINDOW_MS, Ct as MCP_HTTP_KEEPALIVE_TIMEOUT_MS, Dn as SEARCH_AFFINITY_TOP_N, En as SEARCH_AFFINITY_BOOST_FACTOR, Fn as SEARCH_PARAM_TOKEN_WEIGHT, Gn as SEARCH_TIER_PENALTY, Hn as SEARCH_RRF_K, In as SEARCH_PREFIX_MATCH_MULTIPLIER, Jn as SEARCH_TIER_PENALTY_WORKFLOW, Kn as SEARCH_TIER_PENALTY_FULL, Ln as SEARCH_QUERY_CACHE_CAPACITY, M as COMPOUND_LONG_WINDOW_MS, Mn as SEARCH_DOMAIN_HUB_BOOST_MULTIPLIER, Nn as SEARCH_DOMAIN_HUB_THRESHOLD, On as SEARCH_BM25_B, Pn as SEARCH_EXACT_NAME_MATCH_MULTIPLIER, Qn as SEARCH_VECTOR_COSINE_WEIGHT, Rn as SEARCH_RECENCY_MAX_BOOST, St as MCP_HTTP_HEADERS_TIMEOUT_MS, Tn as SEARCH_AFFINITY_BASE_WEIGHT, Un as SEARCH_RRF_RESCALE_FACTOR, Vn as SEARCH_RRF_BM25_BLEND, Wn as SEARCH_SYNONYM_EXPANSION_LIMIT, Xn as SEARCH_TRIGRAM_WEIGHT, Yn as SEARCH_TRIGRAM_THRESHOLD, Zn as SEARCH_VECTOR_BM25_SKIP_THRESHOLD, a as ACTIVATION_TTL_MINUTES, ar as SEARCH_WORKFLOW_DOMAIN_BOOST_MULTIPLIER, bt as MCP_COMPACT_SCHEMA, dn as RUNTIME_ERROR_WINDOW_MS, dt as HTTP_RATE_LIMIT_MAX_IPS, en as PREDICTIVE_DECAY_FACTOR, er as SEARCH_VECTOR_ENABLED, h as AUTOPRUNE_MANUAL_INACTIVITY_MS, i as ACTIVATION_EVENT_HISTORY_MAX, j as COMPOUND_EVENT_WINDOW_MS, jn as SEARCH_COVERAGE_PRECISION_FACTOR, kn as SEARCH_BM25_K1, m as AUTOPRUNE_CHECK_INTERVAL_MS, n as ACTIVATION_COMPOUND_EVAL_EVERY, nn as PREDICTIVE_MAX_SECOND_ORDER_KEYS, nr as SEARCH_VECTOR_LEARN_TOP_N, or as SHUTDOWN_TIMEOUT_MS, p as AUTOPRUNE_AUTO_INACTIVITY_MS, qn as SEARCH_TIER_PENALTY_SEARCH, r as ACTIVATION_COOLDOWN_MS, rr as SEARCH_VECTOR_LEARN_UP, t as ACTIVATION_BOOST_WINDOW_MS, tn as PREDICTIVE_MAX_HISTORY, tr as SEARCH_VECTOR_LEARN_DOWN, un as RUNTIME_ERROR_THRESHOLD, ut as HTTP_CLEANUP_INTERVAL_MS, wt as MCP_HTTP_REQUEST_TIMEOUT_MS, xt as MCP_HTTP_FORCE_CLOSE_TIMEOUT_MS, zn as SEARCH_RECENCY_TRACKER_MAX } from "./constants-CDZLOoVv.mjs";
|
|
4
|
+
import { a as TokenBudgetManager, i as UnifiedCacheManager, n as getArtifactRetentionConfig, r as startArtifactRetentionScheduler, t as cleanupArtifacts } from "./artifactRetention-CPXkUJXp.mjs";
|
|
5
|
+
import { t as DetailedDataManager } from "./DetailedDataManager-HT49OrvF.mjs";
|
|
6
|
+
import { r as asTextResponse, t as asErrorResponse } from "./response-CWhh2aLo.mjs";
|
|
7
|
+
import { a as getToolsForProfile, c as ensureAllDomainsLoaded, d as getAllKnownDomains, f as getAllManifests, h as getLoaderMetadata, i as getToolsByDomains, l as ensureDomainLoaded, m as initRegistry, n as getProfileDomains, o as parseToolDomains, p as getAllRegistrations, r as getToolDomain, s as buildHandlerMapFromRegistry, t as allTools, u as getAllDomains } from "./ToolCatalog-5OJdMiF0.mjs";
|
|
8
8
|
import { t as ToolError } from "./ToolError-jh9whhMd.mjs";
|
|
9
|
-
import {
|
|
10
|
-
import { c as getConfig, d as DEFAULT_SEARCH_CONFIG, u as validateConfig } from "./outputPaths-
|
|
11
|
-
import { i as reloadExtensions, n as ensureWorkflowsLoaded, r as listExtensions } from "./ExtensionManager-
|
|
12
|
-
import { _ as
|
|
13
|
-
import {
|
|
9
|
+
import { t as ProcessRegistry } from "./ProcessRegistry-zGg12QbE.mjs";
|
|
10
|
+
import { c as getConfig, d as DEFAULT_SEARCH_CONFIG, u as validateConfig } from "./outputPaths-um7lCRY3.mjs";
|
|
11
|
+
import { i as reloadExtensions, n as ensureWorkflowsLoaded, r as listExtensions } from "./ExtensionManager-BDMsY2Dz.mjs";
|
|
12
|
+
import { _ as isBrowserOrNetworkTask, a as buildWorkflowToolSequence, b as matchWorkflowRoute, c as getAvailableToolNames, d as getToolDomainFromContext, f as getToolInputSchema, g as detectWorkflowIntent, h as validateToolNameArray, i as buildWorkflowRouteRecommendation, l as getRoutingState, m as normalizeToolName, n as buildRouteMatchMetadata, o as getEffectivePrerequisites, p as isToolActive, r as buildStatelessComputeRecommendations, s as rerankResultsForContext, t as buildPresetRecommendations, u as getToolDescription, v as isMaintenanceTask, y as isStatelessComputeTask } from "./ToolRouter.policy-BGDAGyeH.mjs";
|
|
13
|
+
import { i as generateAntiDebugBypass, r as getInjectionInstructions } from "./HookGeneratorBuilders.core.generators.storage-CTbB4Lcx.mjs";
|
|
14
|
+
import { n as createServerEventBus } from "./EventBus-DFKvADm3.mjs";
|
|
14
15
|
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
15
16
|
import { CompleteRequestSchema, ErrorCode, McpError } from "@modelcontextprotocol/sdk/types.js";
|
|
16
17
|
import { promises } from "fs";
|
|
@@ -307,7 +308,7 @@ var ToolExecutionRouter = class {
|
|
|
307
308
|
* appends `_tabContext` metadata to responses so the LLM always knows which page
|
|
308
309
|
* it is operating on, preventing silent context drift.
|
|
309
310
|
*
|
|
310
|
-
* Additionally, tracks consecutive identical tool calls and injects `
|
|
311
|
+
* Additionally, tracks consecutive identical tool calls and injects `repeatWarning`
|
|
311
312
|
* when the same tool is called ≥ MAX_CONSECUTIVE_REPEATS times in a row, helping
|
|
312
313
|
* break LLM degeneration loops (e.g. stealth_inject called 5× instead of page_navigate).
|
|
313
314
|
*/
|
|
@@ -345,15 +346,21 @@ const REPEAT_GUARD_EXCLUDES = new Set([
|
|
|
345
346
|
const DOMAIN_ALTERNATIVES = new Map([
|
|
346
347
|
["stealth", [
|
|
347
348
|
"page_navigate",
|
|
348
|
-
"
|
|
349
|
-
"stealth_verify"
|
|
349
|
+
"page_evaluate",
|
|
350
|
+
"stealth_verify",
|
|
351
|
+
"page_screenshot"
|
|
350
352
|
]],
|
|
351
353
|
["page", [
|
|
352
|
-
"
|
|
353
|
-
"
|
|
354
|
-
"
|
|
354
|
+
"browser_jsdom_parse",
|
|
355
|
+
"js_bundle_search",
|
|
356
|
+
"network_get_requests",
|
|
357
|
+
"page_screenshot"
|
|
358
|
+
]],
|
|
359
|
+
["console", [
|
|
360
|
+
"page_evaluate",
|
|
361
|
+
"console_get_logs",
|
|
362
|
+
"page_screenshot"
|
|
355
363
|
]],
|
|
356
|
-
["console", ["page_evaluate", "page_screenshot"]],
|
|
357
364
|
["network", ["network_get_requests", "page_navigate"]],
|
|
358
365
|
["captcha", ["captcha_wait", "page_screenshot"]],
|
|
359
366
|
["ai_hook", [
|
|
@@ -361,8 +368,8 @@ const DOMAIN_ALTERNATIVES = new Map([
|
|
|
361
368
|
"page_evaluate",
|
|
362
369
|
"ai_hook_inject"
|
|
363
370
|
]],
|
|
364
|
-
["instrumentation", ["
|
|
365
|
-
["evidence", ["
|
|
371
|
+
["instrumentation", ["instrumentation_session", "instrumentation_artifact"]],
|
|
372
|
+
["evidence", ["evidence_query", "evidence_chain"]]
|
|
366
373
|
]);
|
|
367
374
|
var ToolCallContextGuard = class {
|
|
368
375
|
/** Memoize prefix-match results — tool names repeat heavily across calls. */
|
|
@@ -455,12 +462,17 @@ var ToolCallContextGuard = class {
|
|
|
455
462
|
return raw.replace(/\}\s*$/, `,"_tabContext":${compactJson}}`);
|
|
456
463
|
}
|
|
457
464
|
/**
|
|
458
|
-
* Inject a `
|
|
465
|
+
* Inject a `repeatWarning` into the response when a tool call loop is detected.
|
|
459
466
|
* Splices into JSON text content if possible, or appends a new text entry.
|
|
460
467
|
*/
|
|
461
468
|
injectRepeatWarning(toolName, response) {
|
|
462
469
|
const prefix = toolName.split("_")[0] ?? "";
|
|
463
|
-
const suggestions = (
|
|
470
|
+
const suggestions = (toolName === "page_evaluate" ? [
|
|
471
|
+
"browser_jsdom_parse",
|
|
472
|
+
"js_bundle_search",
|
|
473
|
+
"network_get_requests",
|
|
474
|
+
"page_screenshot"
|
|
475
|
+
] : DOMAIN_ALTERNATIVES.get(prefix) ?? ["page_navigate", "page_evaluate"]).filter((t) => t !== toolName);
|
|
464
476
|
const warning = {
|
|
465
477
|
detected: true,
|
|
466
478
|
consecutiveCount: this.consecutiveCount,
|
|
@@ -476,7 +488,7 @@ var ToolCallContextGuard = class {
|
|
|
476
488
|
try {
|
|
477
489
|
const parsed = JSON.parse(raw);
|
|
478
490
|
if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) {
|
|
479
|
-
parsed.
|
|
491
|
+
parsed.repeatWarning = warning;
|
|
480
492
|
firstText.text = JSON.stringify(parsed, null, 2);
|
|
481
493
|
return;
|
|
482
494
|
}
|
|
@@ -484,7 +496,7 @@ var ToolCallContextGuard = class {
|
|
|
484
496
|
}
|
|
485
497
|
content.push({
|
|
486
498
|
type: "text",
|
|
487
|
-
text: JSON.stringify({
|
|
499
|
+
text: JSON.stringify({ repeatWarning: warning }, null, 2)
|
|
488
500
|
});
|
|
489
501
|
}
|
|
490
502
|
};
|
|
@@ -2113,20 +2125,7 @@ const QueryNormalizer = {
|
|
|
2113
2125
|
}
|
|
2114
2126
|
};
|
|
2115
2127
|
//#endregion
|
|
2116
|
-
//#region src/server/search/
|
|
2117
|
-
/**
|
|
2118
|
-
* Hybrid BM25 + RRF multi-signal tool search engine for progressive tool discovery.
|
|
2119
|
-
*
|
|
2120
|
-
* Enhancements:
|
|
2121
|
-
* - BM25 keyword scoring with synonym-expanded queries and field weights
|
|
2122
|
-
* - Trigram fuzzy matching for typo tolerance
|
|
2123
|
-
* - RRF (Reciprocal Rank Fusion) combining all signals
|
|
2124
|
-
* - Dense vector similarity (384-dim embeddings) as semantic signal
|
|
2125
|
-
* - Tool affinity graph with prefix-group expansion (§4.1.4 dependency hull)
|
|
2126
|
-
* - Query category adaptive domain weights (§4.1.3 task-type encoding)
|
|
2127
|
-
* - Parameter name indexing for schema-aware search
|
|
2128
|
-
* - LRU query result cache (§4.3 CSAPC cross-session caching)
|
|
2129
|
-
*/
|
|
2128
|
+
//#region src/server/search/ToolSearchEngine.helpers.ts
|
|
2130
2129
|
function findDelimitedIndex(haystack, needle, wordChar) {
|
|
2131
2130
|
if (!needle) return -1;
|
|
2132
2131
|
let idx = haystack.indexOf(needle);
|
|
@@ -2140,6 +2139,93 @@ function findDelimitedIndex(haystack, needle, wordChar) {
|
|
|
2140
2139
|
}
|
|
2141
2140
|
return -1;
|
|
2142
2141
|
}
|
|
2142
|
+
function buildAffinityGraph(docs) {
|
|
2143
|
+
const graph = /* @__PURE__ */ new Map();
|
|
2144
|
+
const prefixGroups = /* @__PURE__ */ new Map();
|
|
2145
|
+
for (let i = 0; i < docs.length; i++) {
|
|
2146
|
+
const name = docs[i].name;
|
|
2147
|
+
const underscoreIdx = name.indexOf("_");
|
|
2148
|
+
if (underscoreIdx <= 0) continue;
|
|
2149
|
+
const prefix = name.slice(0, underscoreIdx);
|
|
2150
|
+
const group = prefixGroups.get(prefix) ?? [];
|
|
2151
|
+
group.push(i);
|
|
2152
|
+
prefixGroups.set(prefix, group);
|
|
2153
|
+
}
|
|
2154
|
+
for (const [, members] of prefixGroups) {
|
|
2155
|
+
if (members.length < 2 || members.length > 15) continue;
|
|
2156
|
+
const affinityWeight = SEARCH_AFFINITY_BASE_WEIGHT / Math.sqrt(members.length);
|
|
2157
|
+
for (const src of members) {
|
|
2158
|
+
const edges = graph.get(src) ?? [];
|
|
2159
|
+
for (const dst of members) if (dst !== src) edges.push({
|
|
2160
|
+
docIndex: dst,
|
|
2161
|
+
weight: affinityWeight
|
|
2162
|
+
});
|
|
2163
|
+
graph.set(src, edges);
|
|
2164
|
+
}
|
|
2165
|
+
}
|
|
2166
|
+
return graph;
|
|
2167
|
+
}
|
|
2168
|
+
function rankByScores(scores) {
|
|
2169
|
+
const entries = [];
|
|
2170
|
+
for (let i = 0; i < scores.length; i++) if (scores[i] > 0) entries.push({
|
|
2171
|
+
idx: i,
|
|
2172
|
+
score: scores[i]
|
|
2173
|
+
});
|
|
2174
|
+
entries.sort((a, b) => b.score - a.score);
|
|
2175
|
+
const ranked = /* @__PURE__ */ new Map();
|
|
2176
|
+
for (let rank = 0; rank < entries.length; rank++) ranked.set(entries[rank].idx, rank);
|
|
2177
|
+
return ranked;
|
|
2178
|
+
}
|
|
2179
|
+
function rankByMap(scoreMap) {
|
|
2180
|
+
const entries = [...scoreMap.entries()].toSorted((a, b) => b[1] - a[1]);
|
|
2181
|
+
const ranked = /* @__PURE__ */ new Map();
|
|
2182
|
+
for (let rank = 0; rank < entries.length; rank++) ranked.set(entries[rank][0], rank);
|
|
2183
|
+
return ranked;
|
|
2184
|
+
}
|
|
2185
|
+
function blendRrfIntoScores(scores, rrfScores) {
|
|
2186
|
+
for (let i = 0; i < scores.length; i++) {
|
|
2187
|
+
const rrfScore = rrfScores[i];
|
|
2188
|
+
if (rrfScore <= 0) continue;
|
|
2189
|
+
const bm25Original = scores[i];
|
|
2190
|
+
const rrfRescaled = rrfScore * SEARCH_RRF_RESCALE_FACTOR;
|
|
2191
|
+
const blend = SEARCH_RRF_BM25_BLEND;
|
|
2192
|
+
scores[i] = Math.max(bm25Original, rrfRescaled * blend) + rrfRescaled * blend;
|
|
2193
|
+
}
|
|
2194
|
+
}
|
|
2195
|
+
function applyGraphExpansionToScores(options) {
|
|
2196
|
+
const { scores, docs, affinityGraph } = options;
|
|
2197
|
+
const scored = [];
|
|
2198
|
+
for (let i = 0; i < scores.length; i++) if (scores[i] > 0) scored.push({
|
|
2199
|
+
idx: i,
|
|
2200
|
+
score: scores[i]
|
|
2201
|
+
});
|
|
2202
|
+
if (scored.length === 0) return;
|
|
2203
|
+
scored.sort((a, b) => b.score - a.score);
|
|
2204
|
+
if (affinityGraph.size > 0) {
|
|
2205
|
+
const limit = Math.min(SEARCH_AFFINITY_TOP_N, scored.length);
|
|
2206
|
+
for (let rank = 0; rank < limit; rank++) {
|
|
2207
|
+
const { idx, score } = scored[rank];
|
|
2208
|
+
const neighbors = affinityGraph.get(idx);
|
|
2209
|
+
if (!neighbors) continue;
|
|
2210
|
+
const rankDecay = 1 / (1 + rank);
|
|
2211
|
+
for (const { docIndex, weight } of neighbors) if (scores[docIndex] > 0) scores[docIndex] += score * weight * rankDecay * SEARCH_AFFINITY_BOOST_FACTOR;
|
|
2212
|
+
}
|
|
2213
|
+
}
|
|
2214
|
+
if (SEARCH_DOMAIN_HUB_THRESHOLD > 0 && scored.length >= SEARCH_DOMAIN_HUB_THRESHOLD) {
|
|
2215
|
+
const top10 = scored.slice(0, 10);
|
|
2216
|
+
const domainCounts = /* @__PURE__ */ new Map();
|
|
2217
|
+
for (const { idx } of top10) {
|
|
2218
|
+
const domain = docs[idx].domain;
|
|
2219
|
+
if (domain) domainCounts.set(domain, (domainCounts.get(domain) ?? 0) + 1);
|
|
2220
|
+
}
|
|
2221
|
+
for (const [domain, count] of domainCounts) {
|
|
2222
|
+
if (count < SEARCH_DOMAIN_HUB_THRESHOLD) continue;
|
|
2223
|
+
for (let i = 0; i < docs.length; i++) if (scores[i] > 0 && docs[i].domain === domain) scores[i] *= SEARCH_DOMAIN_HUB_BOOST_MULTIPLIER;
|
|
2224
|
+
}
|
|
2225
|
+
}
|
|
2226
|
+
}
|
|
2227
|
+
//#endregion
|
|
2228
|
+
//#region src/server/search/ToolSearchEngineImpl.ts
|
|
2143
2229
|
function buildSearchCacheKey(query, topK, visibleDomains) {
|
|
2144
2230
|
if (!visibleDomains || visibleDomains.size === 0) return `${query}\0${topK}`;
|
|
2145
2231
|
return `${query}\0${topK}\0${[...visibleDomains].toSorted().join("|")}`;
|
|
@@ -2295,7 +2381,7 @@ var ToolSearchEngine = class {
|
|
|
2295
2381
|
}
|
|
2296
2382
|
this.avgDocLength = this.docCount > 0 ? totalLength / this.docCount : 1;
|
|
2297
2383
|
this.sortedKeys = [...this.invertedIndex.keys()].toSorted();
|
|
2298
|
-
this.affinityGraph = this.
|
|
2384
|
+
this.affinityGraph = buildAffinityGraph(this.docs);
|
|
2299
2385
|
this.trigramIndex = new TrigramIndex(this.docs.map((d) => d.name));
|
|
2300
2386
|
this.queryCache = new LRUCache(SEARCH_QUERY_CACHE_CAPACITY);
|
|
2301
2387
|
}
|
|
@@ -2540,9 +2626,8 @@ var ToolSearchEngine = class {
|
|
|
2540
2626
|
async applyRRFFusion(_queryTokens, query, scores) {
|
|
2541
2627
|
const k = SEARCH_RRF_K;
|
|
2542
2628
|
const trigramWeight = SEARCH_TRIGRAM_WEIGHT;
|
|
2543
|
-
const bm25Ranked =
|
|
2544
|
-
const
|
|
2545
|
-
const trigramRanked = this.rankByMap(trigramScores);
|
|
2629
|
+
const bm25Ranked = rankByScores(scores);
|
|
2630
|
+
const trigramRanked = rankByMap(this.trigramIndex.search(query, SEARCH_TRIGRAM_THRESHOLD));
|
|
2546
2631
|
let vectorScores;
|
|
2547
2632
|
let vectorRanked;
|
|
2548
2633
|
if (SEARCH_VECTOR_BM25_SKIP_THRESHOLD > 0 && bm25Ranked.size > 0) {
|
|
@@ -2552,15 +2637,16 @@ var ToolSearchEngine = class {
|
|
|
2552
2637
|
vectorRanked = /* @__PURE__ */ new Map();
|
|
2553
2638
|
} else {
|
|
2554
2639
|
vectorScores = await this.computeVectorCosineScores(query);
|
|
2555
|
-
vectorRanked =
|
|
2640
|
+
vectorRanked = rankByMap(vectorScores);
|
|
2556
2641
|
}
|
|
2557
2642
|
} else {
|
|
2558
2643
|
vectorScores = await this.computeVectorCosineScores(query);
|
|
2559
|
-
vectorRanked =
|
|
2644
|
+
vectorRanked = rankByMap(vectorScores);
|
|
2560
2645
|
}
|
|
2561
2646
|
const ranking = /* @__PURE__ */ new Map();
|
|
2562
2647
|
for (const [docIdx, rank] of vectorRanked) ranking.set(this.docs[docIdx].name, rank);
|
|
2563
2648
|
this.feedbackTracker.recordVectorRanking(ranking);
|
|
2649
|
+
const fusedRrfScores = new Float64Array(this.docCount);
|
|
2564
2650
|
for (let i = 0; i < this.docCount; i++) {
|
|
2565
2651
|
let rrfScore = 0;
|
|
2566
2652
|
const bm25Rank = bm25Ranked.get(i);
|
|
@@ -2569,38 +2655,9 @@ var ToolSearchEngine = class {
|
|
|
2569
2655
|
if (trigramRank !== void 0 && trigramWeight > 0) rrfScore += trigramWeight * (1 / (k + trigramRank));
|
|
2570
2656
|
const vectorRank = vectorRanked.get(i);
|
|
2571
2657
|
if (vectorRank !== void 0 && this.feedbackTracker.getVectorWeight() > 0) rrfScore += this.feedbackTracker.getVectorWeight() * (1 / (k + vectorRank));
|
|
2572
|
-
|
|
2573
|
-
const bm25Original = scores[i];
|
|
2574
|
-
const rrfRescaled = rrfScore * SEARCH_RRF_RESCALE_FACTOR;
|
|
2575
|
-
const blend = SEARCH_RRF_BM25_BLEND;
|
|
2576
|
-
scores[i] = Math.max(bm25Original, rrfRescaled * blend) + rrfRescaled * blend;
|
|
2577
|
-
}
|
|
2658
|
+
fusedRrfScores[i] = rrfScore;
|
|
2578
2659
|
}
|
|
2579
|
-
|
|
2580
|
-
/**
|
|
2581
|
-
* Rank documents by Float64Array scores.
|
|
2582
|
-
* Returns Map<docIndex, rank> (0-based, lower = better).
|
|
2583
|
-
*/
|
|
2584
|
-
rankByScores(scores) {
|
|
2585
|
-
const entries = [];
|
|
2586
|
-
for (let i = 0; i < scores.length; i++) if (scores[i] > 0) entries.push({
|
|
2587
|
-
idx: i,
|
|
2588
|
-
score: scores[i]
|
|
2589
|
-
});
|
|
2590
|
-
entries.sort((a, b) => b.score - a.score);
|
|
2591
|
-
const ranked = /* @__PURE__ */ new Map();
|
|
2592
|
-
for (let rank = 0; rank < entries.length; rank++) ranked.set(entries[rank].idx, rank);
|
|
2593
|
-
return ranked;
|
|
2594
|
-
}
|
|
2595
|
-
/**
|
|
2596
|
-
* Rank documents by a score map.
|
|
2597
|
-
* Returns Map<docIndex, rank> (0-based, lower = better).
|
|
2598
|
-
*/
|
|
2599
|
-
rankByMap(scoreMap) {
|
|
2600
|
-
const entries = [...scoreMap.entries()].toSorted((a, b) => b[1] - a[1]);
|
|
2601
|
-
const ranked = /* @__PURE__ */ new Map();
|
|
2602
|
-
for (let rank = 0; rank < entries.length; rank++) ranked.set(entries[rank][0], rank);
|
|
2603
|
-
return ranked;
|
|
2660
|
+
blendRrfIntoScores(scores, fusedRrfScores);
|
|
2604
2661
|
}
|
|
2605
2662
|
/**
|
|
2606
2663
|
* Lazy-compute and cache tool description embeddings.
|
|
@@ -2689,72 +2746,16 @@ var ToolSearchEngine = class {
|
|
|
2689
2746
|
}
|
|
2690
2747
|
/**
|
|
2691
2748
|
* Build prefix-group affinity graph (§4.1.4 dependency hull).
|
|
2692
|
-
* Tools sharing a name prefix (e.g. "breakpoint_set"
|
|
2749
|
+
* Tools sharing a name prefix (e.g. legacy "breakpoint_set"/"breakpoint_list"
|
|
2750
|
+
* or unified families such as "memory_*")
|
|
2693
2751
|
* form an affinity group with mutual edges.
|
|
2694
2752
|
*/
|
|
2695
|
-
buildAffinityGraph() {
|
|
2696
|
-
const graph = /* @__PURE__ */ new Map();
|
|
2697
|
-
const prefixGroups = /* @__PURE__ */ new Map();
|
|
2698
|
-
for (let i = 0; i < this.docCount; i++) {
|
|
2699
|
-
const name = this.docs[i].name;
|
|
2700
|
-
const underscoreIdx = name.indexOf("_");
|
|
2701
|
-
if (underscoreIdx <= 0) continue;
|
|
2702
|
-
const prefix = name.slice(0, underscoreIdx);
|
|
2703
|
-
const group = prefixGroups.get(prefix) ?? [];
|
|
2704
|
-
group.push(i);
|
|
2705
|
-
prefixGroups.set(prefix, group);
|
|
2706
|
-
}
|
|
2707
|
-
for (const [, members] of prefixGroups) {
|
|
2708
|
-
if (members.length < 2 || members.length > 15) continue;
|
|
2709
|
-
const affinityWeight = SEARCH_AFFINITY_BASE_WEIGHT / Math.sqrt(members.length);
|
|
2710
|
-
for (const src of members) {
|
|
2711
|
-
const edges = graph.get(src) ?? [];
|
|
2712
|
-
for (const dst of members) if (dst !== src) edges.push({
|
|
2713
|
-
docIndex: dst,
|
|
2714
|
-
weight: affinityWeight
|
|
2715
|
-
});
|
|
2716
|
-
graph.set(src, edges);
|
|
2717
|
-
}
|
|
2718
|
-
}
|
|
2719
|
-
return graph;
|
|
2720
|
-
}
|
|
2721
|
-
/**
|
|
2722
|
-
* Combined graph-based expansion: affinity (prefix-group co-retrieval) +
|
|
2723
|
-
* domain hub (coherence boost for well-represented domains).
|
|
2724
|
-
* Single sort of scored documents feeds both expansion strategies.
|
|
2725
|
-
*/
|
|
2726
2753
|
applyGraphExpansion(scores) {
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2754
|
+
applyGraphExpansionToScores({
|
|
2755
|
+
scores,
|
|
2756
|
+
docs: this.docs,
|
|
2757
|
+
affinityGraph: this.affinityGraph
|
|
2731
2758
|
});
|
|
2732
|
-
if (scored.length === 0) return;
|
|
2733
|
-
scored.sort((a, b) => b.score - a.score);
|
|
2734
|
-
if (this.affinityGraph.size > 0) {
|
|
2735
|
-
const topN = SEARCH_AFFINITY_TOP_N;
|
|
2736
|
-
const boostFactor = SEARCH_AFFINITY_BOOST_FACTOR;
|
|
2737
|
-
const limit = Math.min(topN, scored.length);
|
|
2738
|
-
for (let rank = 0; rank < limit; rank++) {
|
|
2739
|
-
const { idx, score } = scored[rank];
|
|
2740
|
-
const neighbors = this.affinityGraph.get(idx);
|
|
2741
|
-
if (!neighbors) continue;
|
|
2742
|
-
const rankDecay = 1 / (1 + rank);
|
|
2743
|
-
for (const { docIndex, weight } of neighbors) if (scores[docIndex] > 0) scores[docIndex] += score * weight * rankDecay * boostFactor;
|
|
2744
|
-
}
|
|
2745
|
-
}
|
|
2746
|
-
const threshold = SEARCH_DOMAIN_HUB_THRESHOLD;
|
|
2747
|
-
if (threshold > 0 && scored.length >= threshold) {
|
|
2748
|
-
const top10 = scored.slice(0, 10);
|
|
2749
|
-
const domainCounts = /* @__PURE__ */ new Map();
|
|
2750
|
-
for (const { idx } of top10) {
|
|
2751
|
-
const domain = this.docs[idx].domain;
|
|
2752
|
-
if (domain) domainCounts.set(domain, (domainCounts.get(domain) ?? 0) + 1);
|
|
2753
|
-
}
|
|
2754
|
-
for (const [domain, count] of domainCounts) if (count >= threshold) {
|
|
2755
|
-
for (let i = 0; i < this.docCount; i++) if (scores[i] > 0 && this.docs[i].domain === domain) scores[i] *= SEARCH_DOMAIN_HUB_BOOST_MULTIPLIER;
|
|
2756
|
-
}
|
|
2757
|
-
}
|
|
2758
2759
|
}
|
|
2759
2760
|
};
|
|
2760
2761
|
//#endregion
|
|
@@ -3679,7 +3680,7 @@ function stripParamDescriptions(schema) {
|
|
|
3679
3680
|
}
|
|
3680
3681
|
function registerSingleTool(ctx, toolDef) {
|
|
3681
3682
|
const builtTool = toolDef;
|
|
3682
|
-
if (builtTool.
|
|
3683
|
+
if (builtTool.autocompleteHandlers) ctx.toolAutocompleteHandlers.set(toolDef.name, builtTool.autocompleteHandlers);
|
|
3683
3684
|
const rawSchema = MCP_COMPACT_SCHEMA && toolDef.inputSchema ? stripParamDescriptions(toolDef.inputSchema) : toolDef.inputSchema;
|
|
3684
3685
|
const shape = rawSchema && typeof rawSchema === "object" ? buildZodShape(rawSchema) : {};
|
|
3685
3686
|
const description = toolDef.description ?? toolDef.name;
|
|
@@ -3697,7 +3698,7 @@ function registerSingleTool(ctx, toolDef) {
|
|
|
3697
3698
|
}
|
|
3698
3699
|
});
|
|
3699
3700
|
if (builtTool.execution) {
|
|
3700
|
-
const sdkInternalMap = ctx.server.
|
|
3701
|
+
const sdkInternalMap = ctx.server.registeredTools;
|
|
3701
3702
|
if (sdkInternalMap && sdkInternalMap[toolDef.name]) sdkInternalMap[toolDef.name].execution = builtTool.execution;
|
|
3702
3703
|
}
|
|
3703
3704
|
return registeredTool;
|
|
@@ -3712,7 +3713,7 @@ function registerSingleTool(ctx, toolDef) {
|
|
|
3712
3713
|
}
|
|
3713
3714
|
});
|
|
3714
3715
|
if (builtTool.execution) {
|
|
3715
|
-
const sdkInternalMap = ctx.server.
|
|
3716
|
+
const sdkInternalMap = ctx.server.registeredTools;
|
|
3716
3717
|
if (sdkInternalMap && sdkInternalMap[toolDef.name]) sdkInternalMap[toolDef.name].execution = builtTool.execution;
|
|
3717
3718
|
}
|
|
3718
3719
|
return registeredTool;
|
|
@@ -3778,17 +3779,25 @@ async function routeToolRequest(request, ctx, searchEngine) {
|
|
|
3778
3779
|
const workflowResult = buildWorkflowRouteRecommendation(routeMatch, ctx);
|
|
3779
3780
|
finalResults = [workflowResult, ...searchResults.filter((result) => result.name !== workflowResult.name)];
|
|
3780
3781
|
} else if (workflow) {
|
|
3782
|
+
const statelessWorkflow = isStatelessComputeTask(task);
|
|
3781
3783
|
const workflowSequence = buildWorkflowToolSequence(workflow, routingState, availableToolNames);
|
|
3782
3784
|
const workflowTools = workflowSequence.map((name, index) => ({
|
|
3783
3785
|
name,
|
|
3784
3786
|
domain: getToolDomainFromContext(name, ctx),
|
|
3785
3787
|
shortDescription: searchResults.find((r) => r.name === name)?.shortDescription ?? ctx.extensionToolsByName.get(name)?.tool.description ?? "",
|
|
3786
|
-
score: workflow.priority - index * .01,
|
|
3788
|
+
score: (statelessWorkflow ? 90 : workflow.priority) - index * .01,
|
|
3787
3789
|
isActive: isToolActive(name, ctx)
|
|
3788
3790
|
}));
|
|
3789
3791
|
const workflowNames = new Set(workflowSequence);
|
|
3790
3792
|
const otherResults = searchResults.filter((result) => !workflowNames.has(result.name));
|
|
3791
3793
|
finalResults = [...workflowTools, ...otherResults];
|
|
3794
|
+
} else if (task && !isBrowserOrNetworkTask(task, workflow) && !isMaintenanceTask(task)) {
|
|
3795
|
+
const statelessRecommendations = buildStatelessComputeRecommendations(task, ctx, availableToolNames);
|
|
3796
|
+
if (statelessRecommendations.length > 0) {
|
|
3797
|
+
const statelessNames = new Set(statelessRecommendations.map((tool) => tool.name));
|
|
3798
|
+
const otherResults = searchResults.filter((result) => !statelessNames.has(result.name));
|
|
3799
|
+
finalResults = [...statelessRecommendations, ...otherResults];
|
|
3800
|
+
} else finalResults = [...searchResults];
|
|
3792
3801
|
} else finalResults = [...searchResults];
|
|
3793
3802
|
const dedupedResults = [];
|
|
3794
3803
|
const seenNames = /* @__PURE__ */ new Set();
|
|
@@ -4174,6 +4183,7 @@ function buildCallToolMetadata(wasAutoActivated, activatedTools) {
|
|
|
4174
4183
|
};
|
|
4175
4184
|
}
|
|
4176
4185
|
function attachCallToolMetadata(response, metadata) {
|
|
4186
|
+
if (!response?.content || !Array.isArray(response.content)) return response;
|
|
4177
4187
|
return {
|
|
4178
4188
|
...response,
|
|
4179
4189
|
content: response.content.map((item) => {
|
|
@@ -4269,7 +4279,7 @@ function buildMetaToolDefinitions(ctx) {
|
|
|
4269
4279
|
},
|
|
4270
4280
|
autoActivate: {
|
|
4271
4281
|
type: "boolean",
|
|
4272
|
-
description: "Whether to auto-activate recommended tools (default:
|
|
4282
|
+
description: "Whether to auto-activate recommended tools (default: false)"
|
|
4273
4283
|
},
|
|
4274
4284
|
maxRecommendations: {
|
|
4275
4285
|
type: "number",
|
|
@@ -4325,7 +4335,7 @@ function buildMetaToolDefinitions(ctx) {
|
|
|
4325
4335
|
},
|
|
4326
4336
|
{
|
|
4327
4337
|
name: "activate_domain",
|
|
4328
|
-
description: `Activate all tools in a domain at once. Domains: ${[...getAllDomains()].join(", ")}. Use
|
|
4338
|
+
description: `Activate all tools in a domain at once. Domains: ${[...getAllDomains()].join(", ")}. Use reload_extensions first to include external plugin/workflow domains.`,
|
|
4329
4339
|
inputSchema: {
|
|
4330
4340
|
type: "object",
|
|
4331
4341
|
properties: {
|
|
@@ -4344,7 +4354,7 @@ function buildMetaToolDefinitions(ctx) {
|
|
|
4344
4354
|
},
|
|
4345
4355
|
{
|
|
4346
4356
|
name: "call_tool",
|
|
4347
|
-
description: "Execute
|
|
4357
|
+
description: "Execute an already-active tool by name. Use this when activate_tools/activate_domain registered a tool but your client did not refresh its tool list. Does not auto-activate inactive tools.",
|
|
4348
4358
|
inputSchema: {
|
|
4349
4359
|
type: "object",
|
|
4350
4360
|
properties: {
|
|
@@ -4872,7 +4882,7 @@ var MCPServer = class {
|
|
|
4872
4882
|
}
|
|
4873
4883
|
this.cacheRegistrationPromise = (async () => {
|
|
4874
4884
|
try {
|
|
4875
|
-
const { createCacheAdapters } = await import("./CacheAdapters-
|
|
4885
|
+
const { createCacheAdapters } = await import("./CacheAdapters-jJFy20G-.mjs");
|
|
4876
4886
|
const codeCache = this.collector.getCache();
|
|
4877
4887
|
const codeCompressor = this.collector.getCompressor();
|
|
4878
4888
|
const adapters = createCacheAdapters(this.detailedData, codeCache, codeCompressor);
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { t as logger } from "./logger-Dh_xb7_2.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { n as getArtifactRetentionConfig, t as cleanupArtifacts } from "./artifactRetention-
|
|
4
|
-
import {
|
|
5
|
-
import { c as getConfig, i as getProjectRoot } from "./outputPaths-
|
|
2
|
+
import { $ as GHIDRA_BRIDGE_ENDPOINT, U as EXTENSION_GIT_CHECKOUT_TIMEOUT_MS, W as EXTENSION_GIT_CLONE_TIMEOUT_MS, ht as IDA_BRIDGE_ENDPOINT } from "./constants-CDZLOoVv.mjs";
|
|
3
|
+
import { n as getArtifactRetentionConfig, t as cleanupArtifacts } from "./artifactRetention-CPXkUJXp.mjs";
|
|
4
|
+
import { a as serializeError, n as asJsonResponse } from "./response-CWhh2aLo.mjs";
|
|
5
|
+
import { c as getConfig, i as getProjectRoot } from "./outputPaths-um7lCRY3.mjs";
|
|
6
6
|
import { t as INSTALLED_EXTENSION_METADATA_FILENAME } from "./types-Bx92KJfT.mjs";
|
|
7
|
-
import { r as probeBetterSqlite3 } from "./betterSqlite3-
|
|
8
|
-
import { r as ioLimit } from "./concurrency-
|
|
9
|
-
import { t as ToolRegistry } from "./ToolRegistry-
|
|
10
|
-
import "./definitions-
|
|
7
|
+
import { r as probeBetterSqlite3 } from "./betterSqlite3-DLSBZodi.mjs";
|
|
8
|
+
import { r as ioLimit } from "./concurrency-Drev_Vz9.mjs";
|
|
9
|
+
import { t as ToolRegistry } from "./ToolRegistry-B9krbTtI.mjs";
|
|
10
|
+
import "./definitions-DKPFU3LW.mjs";
|
|
11
11
|
import { createRequire } from "node:module";
|
|
12
12
|
import { existsSync } from "node:fs";
|
|
13
13
|
import { dirname, isAbsolute, relative, resolve } from "node:path";
|
|
@@ -395,7 +395,10 @@ var CoreMaintenanceHandlers = class {
|
|
|
395
395
|
}
|
|
396
396
|
};
|
|
397
397
|
//#endregion
|
|
398
|
-
//#region src/server/domains/maintenance/handlers.
|
|
398
|
+
//#region src/server/domains/maintenance/handlers/extension-registry-utils.ts
|
|
399
|
+
/**
|
|
400
|
+
* Extension registry utilities — fetch, cache, install helpers.
|
|
401
|
+
*/
|
|
399
402
|
const execFileAsync = promisify(execFile);
|
|
400
403
|
function getJshookInstallRoot() {
|
|
401
404
|
return fileURLToPath(new URL("../../../../", import.meta.url));
|
|
@@ -658,6 +661,8 @@ async function findRegistryEntryBySlug(registryBase, slug) {
|
|
|
658
661
|
if (workflowFetchError) throw new Error(`Extension "${slug}" was not found in plugin registry, and workflow registry lookup failed: ${workflowFetchError.message}`);
|
|
659
662
|
throw new Error(`Extension "${slug}" not found in workflow or plugin registry`);
|
|
660
663
|
}
|
|
664
|
+
//#endregion
|
|
665
|
+
//#region src/server/domains/maintenance/handlers.extensions.ts
|
|
661
666
|
var ExtensionManagementHandlers = class {
|
|
662
667
|
ctx;
|
|
663
668
|
constructor(ctx) {
|
|
@@ -692,20 +697,20 @@ var ExtensionManagementHandlers = class {
|
|
|
692
697
|
const showWorkflows = kind === "all" || kind === "workflow";
|
|
693
698
|
const result = { success: true };
|
|
694
699
|
let stale = false;
|
|
695
|
-
const
|
|
696
|
-
const
|
|
697
|
-
const [pluginIndex, workflowIndex] = await Promise.all([
|
|
700
|
+
const pluginIndexPromise = showPlugins ? fetchJson(`${registryBase}/plugins.index.json`, { cacheKey: "plugins" }) : void 0;
|
|
701
|
+
const workflowIndexPromise = showWorkflows ? fetchJson(`${registryBase}/workflows.index.json`, { cacheKey: "workflows" }) : void 0;
|
|
702
|
+
const [pluginIndex, workflowIndex] = await Promise.all([pluginIndexPromise ?? Promise.resolve(void 0), workflowIndexPromise ?? Promise.resolve(void 0)]);
|
|
698
703
|
if (pluginIndex) {
|
|
699
704
|
const plugins = Array.isArray(pluginIndex.data.plugins) ? pluginIndex.data.plugins : [];
|
|
700
|
-
result.plugins = plugins.map((
|
|
701
|
-
slug:
|
|
702
|
-
id:
|
|
703
|
-
name:
|
|
704
|
-
description:
|
|
705
|
-
author:
|
|
706
|
-
repo:
|
|
707
|
-
commit:
|
|
708
|
-
entry:
|
|
705
|
+
result.plugins = plugins.map((plugin) => ({
|
|
706
|
+
slug: plugin.slug,
|
|
707
|
+
id: plugin.id,
|
|
708
|
+
name: plugin.meta.name,
|
|
709
|
+
description: plugin.meta.description,
|
|
710
|
+
author: plugin.meta.author,
|
|
711
|
+
repo: plugin.source.repo,
|
|
712
|
+
commit: plugin.source.commit,
|
|
713
|
+
entry: plugin.source.entry
|
|
709
714
|
}));
|
|
710
715
|
result.pluginCount = plugins.length;
|
|
711
716
|
result.pluginSource = pluginIndex.source;
|
|
@@ -713,15 +718,15 @@ var ExtensionManagementHandlers = class {
|
|
|
713
718
|
}
|
|
714
719
|
if (workflowIndex) {
|
|
715
720
|
const workflows = Array.isArray(workflowIndex.data.workflows) ? workflowIndex.data.workflows : [];
|
|
716
|
-
result.workflows = workflows.map((
|
|
717
|
-
slug:
|
|
718
|
-
id:
|
|
719
|
-
name:
|
|
720
|
-
description:
|
|
721
|
-
author:
|
|
722
|
-
repo:
|
|
723
|
-
commit:
|
|
724
|
-
entry:
|
|
721
|
+
result.workflows = workflows.map((workflow) => ({
|
|
722
|
+
slug: workflow.slug,
|
|
723
|
+
id: workflow.id,
|
|
724
|
+
name: workflow.meta.name,
|
|
725
|
+
description: workflow.meta.description,
|
|
726
|
+
author: workflow.meta.author,
|
|
727
|
+
repo: workflow.source.repo,
|
|
728
|
+
commit: workflow.source.commit,
|
|
729
|
+
entry: workflow.source.entry
|
|
725
730
|
}));
|
|
726
731
|
result.workflowCount = workflows.length;
|
|
727
732
|
result.workflowSource = workflowIndex.source;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { n as toolLookup } from "./registry-Bl8ZQW61.mjs";
|
|
2
|
+
import { n as defineMethodRegistrations } from "./bind-helpers-ClV34xdn.mjs";
|
|
3
|
+
import { t as transformTools } from "./definitions-va-AnLuQ.mjs";
|
|
4
|
+
//#region src/server/domains/transform/manifest.ts
|
|
5
|
+
const DOMAIN = "transform";
|
|
6
|
+
const DEP_KEY = "transformHandlers";
|
|
7
|
+
const registrations = defineMethodRegistrations({
|
|
8
|
+
domain: DOMAIN,
|
|
9
|
+
depKey: DEP_KEY,
|
|
10
|
+
lookup: toolLookup(transformTools),
|
|
11
|
+
entries: [
|
|
12
|
+
{
|
|
13
|
+
tool: "ast_transform_preview",
|
|
14
|
+
method: "handleAstTransformPreview"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
tool: "ast_transform_chain",
|
|
18
|
+
method: "handleAstTransformChain"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
tool: "ast_transform_apply",
|
|
22
|
+
method: "handleAstTransformApply"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
tool: "crypto_extract_standalone",
|
|
26
|
+
method: "handleCryptoExtractStandalone"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
tool: "crypto_test_harness",
|
|
30
|
+
method: "handleCryptoTestHarness"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
tool: "crypto_compare",
|
|
34
|
+
method: "handleCryptoCompare"
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
});
|
|
38
|
+
async function ensure(ctx) {
|
|
39
|
+
const { CodeCollector } = await import("./modules-tZozf0LQ.mjs").then((n) => n.t);
|
|
40
|
+
const { TransformToolHandlers } = await import("./transform-DRVgGG90.mjs");
|
|
41
|
+
if (!ctx.collector) {
|
|
42
|
+
ctx.collector = new CodeCollector(ctx.config.puppeteer);
|
|
43
|
+
ctx.registerCaches();
|
|
44
|
+
}
|
|
45
|
+
if (!ctx.transformHandlers) ctx.transformHandlers = new TransformToolHandlers(ctx.collector);
|
|
46
|
+
return ctx.transformHandlers;
|
|
47
|
+
}
|
|
48
|
+
const manifest = {
|
|
49
|
+
kind: "domain-manifest",
|
|
50
|
+
version: 1,
|
|
51
|
+
domain: DOMAIN,
|
|
52
|
+
depKey: DEP_KEY,
|
|
53
|
+
profiles: ["full"],
|
|
54
|
+
ensure,
|
|
55
|
+
registrations
|
|
56
|
+
};
|
|
57
|
+
//#endregion
|
|
58
|
+
export { manifest as default };
|