@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
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { f as getAllManifests, r as getToolDomain, t as allTools } from "./ToolCatalog-
|
|
1
|
+
import { f as getAllManifests, r as getToolDomain, t as allTools } from "./ToolCatalog-5OJdMiF0.mjs";
|
|
2
2
|
//#region src/server/ToolRouter.intent.ts
|
|
3
3
|
const BROWSER_OR_NETWORK_TASK_PATTERN = /(browser|page|navigate|click|type|screenshot|scrape|network|request|response|api|traffic|hook|capture|intercept|monitor|浏览器|页面|导航|点击|输入|截图|爬取|网络|请求|响应|接口|流量|抓包|拦截|监控)/i;
|
|
4
4
|
const MAINTENANCE_TASK_PATTERN = /(token budget|cache|artifact|extension|plugin|reload|doctor|cleanup|memory|profile|tool list|令牌预算|缓存|工件|扩展|插件|重载|环境诊断|清理|内存|配置)/i;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
const STATELESS_COMPUTE_TASK_PATTERN = /(stateless|deterministic|pure compute|offline|decode|encode|hex|base64|protobuf|msgpack|checksum|hash|payload|frame|packet|bytes?|bytecode|pcap|protocol|state machine|field inference|ast transform|crypto harness|无状态|确定性|纯算|离线|解码|编码|十六进制|校验和|载荷|字节|协议|报文|帧|字段推断|状态机|构包)/i;
|
|
6
|
+
let cachedWorkflowRules = null;
|
|
7
|
+
const intentCache = /* @__PURE__ */ new Map();
|
|
7
8
|
const INTENT_CACHE_MAX = 64;
|
|
8
9
|
/**
|
|
9
10
|
* Aggregate workflow rules declared by domain manifests.
|
|
@@ -13,7 +14,7 @@ const INTENT_CACHE_MAX = 64;
|
|
|
13
14
|
* Cached lazily — manifests are immutable at runtime.
|
|
14
15
|
*/
|
|
15
16
|
function getEffectiveWorkflowRules() {
|
|
16
|
-
if (
|
|
17
|
+
if (cachedWorkflowRules) return cachedWorkflowRules;
|
|
17
18
|
const rules = [];
|
|
18
19
|
for (const m of getAllManifests()) if (m.workflowRule) rules.push({
|
|
19
20
|
patterns: [...m.workflowRule.patterns],
|
|
@@ -22,12 +23,12 @@ function getEffectiveWorkflowRules() {
|
|
|
22
23
|
tools: [...m.workflowRule.tools],
|
|
23
24
|
hint: m.workflowRule.hint
|
|
24
25
|
});
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return
|
|
26
|
+
cachedWorkflowRules = [...rules].toSorted((a, b) => b.priority - a.priority);
|
|
27
|
+
intentCache.clear();
|
|
28
|
+
return cachedWorkflowRules;
|
|
28
29
|
}
|
|
29
30
|
function detectWorkflowIntent(query) {
|
|
30
|
-
const cached =
|
|
31
|
+
const cached = intentCache.get(query);
|
|
31
32
|
if (cached !== void 0) return cached;
|
|
32
33
|
const matches = [];
|
|
33
34
|
for (const rule of getEffectiveWorkflowRules()) for (const pattern of rule.patterns) if (pattern.test(query)) {
|
|
@@ -35,11 +36,11 @@ function detectWorkflowIntent(query) {
|
|
|
35
36
|
break;
|
|
36
37
|
}
|
|
37
38
|
const result = matches.length === 0 ? null : matches.toSorted((a, b) => b.priority - a.priority)[0];
|
|
38
|
-
if (
|
|
39
|
-
const firstKey =
|
|
40
|
-
if (firstKey !== void 0)
|
|
39
|
+
if (intentCache.size >= INTENT_CACHE_MAX) {
|
|
40
|
+
const firstKey = intentCache.keys().next().value;
|
|
41
|
+
if (firstKey !== void 0) intentCache.delete(firstKey);
|
|
41
42
|
}
|
|
42
|
-
|
|
43
|
+
intentCache.set(query, result);
|
|
43
44
|
return result;
|
|
44
45
|
}
|
|
45
46
|
function matchWorkflowRoute(query, ctx) {
|
|
@@ -69,11 +70,15 @@ function matchWorkflowRoute(query, ctx) {
|
|
|
69
70
|
return bestMatch;
|
|
70
71
|
}
|
|
71
72
|
function isBrowserOrNetworkTask(task, workflow) {
|
|
73
|
+
if (workflow?.domain !== "browser" && workflow?.domain !== "network" && isStatelessComputeTask(task)) return false;
|
|
72
74
|
return workflow?.domain === "browser" || workflow?.domain === "network" || BROWSER_OR_NETWORK_TASK_PATTERN.test(task);
|
|
73
75
|
}
|
|
74
76
|
function isMaintenanceTask(task) {
|
|
75
77
|
return MAINTENANCE_TASK_PATTERN.test(task);
|
|
76
78
|
}
|
|
79
|
+
function isStatelessComputeTask(task) {
|
|
80
|
+
return STATELESS_COMPUTE_TASK_PATTERN.test(task);
|
|
81
|
+
}
|
|
77
82
|
//#endregion
|
|
78
83
|
//#region src/server/MCPServer.search.validation.ts
|
|
79
84
|
/**
|
|
@@ -104,10 +109,10 @@ function validateToolNameArray(args) {
|
|
|
104
109
|
}
|
|
105
110
|
//#endregion
|
|
106
111
|
//#region src/server/ToolRouter.probe.ts
|
|
107
|
-
let
|
|
112
|
+
let allToolsByNameCache = null;
|
|
108
113
|
function getAllToolsByName() {
|
|
109
|
-
if (!
|
|
110
|
-
return
|
|
114
|
+
if (!allToolsByNameCache) allToolsByNameCache = new Map(allTools.map((t) => [t.name, t]));
|
|
115
|
+
return allToolsByNameCache;
|
|
111
116
|
}
|
|
112
117
|
function getToolInputSchema(toolName, ctx) {
|
|
113
118
|
const canonicalName = normalizeToolName(toolName);
|
|
@@ -177,6 +182,25 @@ async function getRoutingState(ctx) {
|
|
|
177
182
|
}
|
|
178
183
|
//#endregion
|
|
179
184
|
//#region src/server/ToolRouter.policy.ts
|
|
185
|
+
function buildStatelessComputeSequence(task, availableToolNames) {
|
|
186
|
+
if (!isStatelessComputeTask(task)) return [];
|
|
187
|
+
const candidates = [];
|
|
188
|
+
const pushIfAvailable = (name, description) => {
|
|
189
|
+
if (availableToolNames.has(name) && !candidates.some((item) => item.name === name)) candidates.push({
|
|
190
|
+
name,
|
|
191
|
+
description
|
|
192
|
+
});
|
|
193
|
+
};
|
|
194
|
+
pushIfAvailable("binary_detect_format", "Detect the payload encoding or container before decoding");
|
|
195
|
+
pushIfAvailable("binary_decode", "Decode the payload into deterministic offline bytes or structured output");
|
|
196
|
+
pushIfAvailable("proto_auto_detect", "Infer a likely protocol layout from repeated payload samples");
|
|
197
|
+
pushIfAvailable("proto_infer_fields", "Derive stable field boundaries and candidate semantics");
|
|
198
|
+
pushIfAvailable("proto_infer_state_machine", "Infer request/response state transitions from repeated samples");
|
|
199
|
+
pushIfAvailable("crypto_test_harness", "Validate extracted signing or crypto logic with deterministic test vectors");
|
|
200
|
+
pushIfAvailable("crypto_compare", "Compare competing crypto implementations against the same vectors");
|
|
201
|
+
pushIfAvailable("network_get_requests", "Collect request or response samples only if payload bytes still need to be extracted");
|
|
202
|
+
return candidates;
|
|
203
|
+
}
|
|
180
204
|
/**
|
|
181
205
|
* Build a real runtime check function from the prerequisite condition string.
|
|
182
206
|
* Returns true when the prerequisite IS satisfied, false when it is not.
|
|
@@ -190,21 +214,21 @@ function buildPrerequisiteCheck(condition) {
|
|
|
190
214
|
if (condition.includes("WebSocket monitoring")) return (state) => state.hasActivePage;
|
|
191
215
|
return () => false;
|
|
192
216
|
}
|
|
193
|
-
let
|
|
217
|
+
let cachedPrerequisites = null;
|
|
194
218
|
/**
|
|
195
219
|
* Aggregate prerequisite declarations from domain manifests.
|
|
196
220
|
* Cached lazily — manifests are immutable at runtime.
|
|
197
221
|
*/
|
|
198
222
|
function getEffectivePrerequisites() {
|
|
199
|
-
if (
|
|
223
|
+
if (cachedPrerequisites) return cachedPrerequisites;
|
|
200
224
|
const merged = {};
|
|
201
225
|
for (const m of getAllManifests()) if (m.prerequisites) for (const [toolName, entries] of Object.entries(m.prerequisites)) merged[toolName] = entries.map((e) => ({
|
|
202
226
|
condition: e.condition,
|
|
203
227
|
check: buildPrerequisiteCheck(e.condition),
|
|
204
228
|
fix: e.fix
|
|
205
229
|
}));
|
|
206
|
-
|
|
207
|
-
return
|
|
230
|
+
cachedPrerequisites = merged;
|
|
231
|
+
return cachedPrerequisites;
|
|
208
232
|
}
|
|
209
233
|
function buildWorkflowToolSequence(workflow, state, availableToolNames) {
|
|
210
234
|
const sequence = [];
|
|
@@ -251,6 +275,15 @@ function buildPresetRecommendations(match, state, ctx, availableToolNames) {
|
|
|
251
275
|
isActive: isToolActive(plannedTool.name, ctx)
|
|
252
276
|
}));
|
|
253
277
|
}
|
|
278
|
+
function buildStatelessComputeRecommendations(task, ctx, availableToolNames) {
|
|
279
|
+
return buildStatelessComputeSequence(task, availableToolNames).map((plannedTool, index) => ({
|
|
280
|
+
name: plannedTool.name,
|
|
281
|
+
domain: getToolDomainFromContext(plannedTool.name, ctx),
|
|
282
|
+
shortDescription: plannedTool.description,
|
|
283
|
+
score: 90 - index * .01,
|
|
284
|
+
isActive: isToolActive(plannedTool.name, ctx)
|
|
285
|
+
}));
|
|
286
|
+
}
|
|
254
287
|
function buildWorkflowRouteRecommendation(match, ctx) {
|
|
255
288
|
return {
|
|
256
289
|
name: "run_extension_workflow",
|
|
@@ -283,9 +316,16 @@ function buildRouteMatchMetadata(match, ctx) {
|
|
|
283
316
|
function rerankResultsForContext(results, task, workflow, state) {
|
|
284
317
|
const browserOrNetworkTask = isBrowserOrNetworkTask(task, workflow);
|
|
285
318
|
const maintenanceTask = isMaintenanceTask(task);
|
|
319
|
+
const statelessComputeTask = isStatelessComputeTask(task);
|
|
286
320
|
const reranked = results.map((result) => {
|
|
287
321
|
let score = result.score;
|
|
288
322
|
if (browserOrNetworkTask && !maintenanceTask && result.domain === "maintenance") score *= .1;
|
|
323
|
+
if (statelessComputeTask) {
|
|
324
|
+
if (result.domain === "browser" || result.domain === "network" || result.domain === "debugger" || result.domain === "hooks" || result.domain === "maintenance") score *= .35;
|
|
325
|
+
if (result.domain === "core" || result.domain === "streaming" || result.domain === "workflow") score *= .2;
|
|
326
|
+
if (result.domain === "encoding" || result.domain === "transform" || result.domain === "protocol-analysis" || result.domain === "sourcemap" || result.domain === "core") score *= 1.6;
|
|
327
|
+
if (result.name === "binary_detect_format" || result.name === "binary_decode" || result.name === "crypto_test_harness" || result.name === "ast_transform_apply" || result.name === "proto_auto_detect" || result.name === "proto_infer_fields" || result.name === "proto_infer_state_machine" || result.name === "proto_fingerprint") score *= 1.25;
|
|
328
|
+
}
|
|
289
329
|
if (browserOrNetworkTask) {
|
|
290
330
|
if (!state.hasActivePage && result.name === "browser_launch") score *= 1.4;
|
|
291
331
|
if (!state.hasActivePage && result.name === "browser_attach") score *= 1.2;
|
|
@@ -301,4 +341,4 @@ function rerankResultsForContext(results, task, workflow, state) {
|
|
|
301
341
|
return reranked;
|
|
302
342
|
}
|
|
303
343
|
//#endregion
|
|
304
|
-
export {
|
|
344
|
+
export { isBrowserOrNetworkTask as _, buildWorkflowToolSequence as a, matchWorkflowRoute as b, getAvailableToolNames as c, getToolDomainFromContext as d, getToolInputSchema as f, detectWorkflowIntent as g, validateToolNameArray as h, buildWorkflowRouteRecommendation as i, getRoutingState as l, normalizeToolName as m, buildRouteMatchMetadata as n, getEffectivePrerequisites as o, isToolActive as p, buildStatelessComputeRecommendations as r, rerankResultsForContext as s, buildPresetRecommendations as t, getToolDescription as u, isMaintenanceTask as v, isStatelessComputeTask as y };
|