@jshookmcp/jshook 0.2.8 → 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 +36 -5
- package/README.zh.md +36 -5
- package/dist/{AntiCheatDetector-S8VRj-dD.mjs → AntiCheatDetector-CqGDXmfc.mjs} +160 -54
- package/dist/{CodeInjector-4Z3ngPoX.mjs → CodeInjector-BdjRfNx7.mjs} +5 -5
- package/dist/ConsoleMonitor-DykL3IAw.mjs +2269 -0
- package/dist/{DarwinAPI-B8hg_yhz.mjs → DarwinAPI-ETyy0xyo.mjs} +1 -1
- package/dist/DetailedDataManager-HT49OrvF.mjs +217 -0
- package/dist/EventBus-DFKvADm3.mjs +141 -0
- package/dist/EvidenceGraphBridge-318Oi0Lf.mjs +153 -0
- package/dist/{ExtensionManager-D5-bO9D8.mjs → ExtensionManager-BDMsY2Dz.mjs} +27 -13
- package/dist/{FingerprintManager-BVxFJL2-.mjs → FingerprintManager-BN4UQWnX.mjs} +1 -1
- package/dist/{HardwareBreakpoint-DK1yjWkV.mjs → HardwareBreakpoint-Cc2AFq1Y.mjs} +3 -3
- package/dist/{HeapAnalyzer-CEbo10xU.mjs → HeapAnalyzer-DruMgsgj.mjs} +21 -21
- package/dist/HookGeneratorBuilders.core.generators.storage-CTbB4Lcx.mjs +566 -0
- package/dist/InstrumentationSession-DLH0vd-z.mjs +244 -0
- package/dist/{MemoryController-DdtnBdD4.mjs → MemoryController-CMtviNW_.mjs} +3 -3
- package/dist/{MemoryScanSession-RMixN3bX.mjs → MemoryScanSession-ITgb_NMi.mjs} +81 -78
- package/dist/{MemoryScanner-QjK4ld0B.mjs → MemoryScanner-CiL7Z3ey.mjs} +50 -21
- package/dist/{NativeMemoryManager.impl-CB6gJ0NM.mjs → NativeMemoryManager.impl-D9Lkovvn.mjs} +20 -56
- package/dist/{NativeMemoryManager.utils-BML4q1ry.mjs → NativeMemoryManager.utils-BBlAixF5.mjs} +1 -1
- package/dist/{PEAnalyzer-CK0xe0Fs.mjs → PEAnalyzer-DMQ44gen.mjs} +16 -16
- package/dist/PageController-BPJNqqBN.mjs +431 -0
- package/dist/{PointerChainEngine-Cd73qu5b.mjs → PointerChainEngine-K7wN8Z-w.mjs} +10 -7
- package/dist/PrerequisiteError-TuyZIs6n.mjs +20 -0
- package/dist/ProcessRegistry-zGg12QbE.mjs +74 -0
- package/dist/ResponseBuilder-CJXWmWNw.mjs +143 -0
- package/dist/ReverseEvidenceGraph-C02-gXOh.mjs +269 -0
- package/dist/ScriptManager-ZuWD-0Jg.mjs +3003 -0
- package/dist/{Speedhack-CeF0XmEz.mjs → Speedhack-D-z0umeT.mjs} +2 -2
- package/dist/{StructureAnalyzer-D4GkMduU.mjs → StructureAnalyzer-Cav5AVSL.mjs} +9 -6
- package/dist/ToolCatalog-5OJdMiF0.mjs +582 -0
- package/dist/ToolError-jh9whhMd.mjs +15 -0
- package/dist/ToolProbe-DbCFGyrg.mjs +45 -0
- package/dist/ToolRegistry-B9krbTtI.mjs +180 -0
- package/dist/ToolRouter.policy-BGDAGyeH.mjs +344 -0
- package/dist/TraceRecorder-B41Z5XBj.mjs +1286 -0
- package/dist/{Win32API-Bc0QnQsN.mjs → Win32API-C2kjj0ze.mjs} +19 -13
- package/dist/{Win32Debug-DUHt9XUn.mjs → Win32Debug-CKrGOTpo.mjs} +3 -3
- package/dist/WorkflowEngine-DJ6M4opp.mjs +569 -0
- package/dist/analysis-BHeJW2Nb.mjs +1234 -0
- package/dist/antidebug-BRKeyt27.mjs +1081 -0
- package/dist/artifactRetention-CPXkUJXp.mjs +598 -0
- package/dist/artifacts-DkfosXH3.mjs +59 -0
- package/dist/authorization-schema-DRqyJMSk.mjs +31 -0
- package/dist/betterSqlite3-DLSBZodi.mjs +74 -0
- package/dist/binary-instrument--V3MAhJ4.mjs +971 -0
- package/dist/bind-helpers-ClV34xdn.mjs +42 -0
- package/dist/boringssl-inspector-Bo_LOLaS.mjs +180 -0
- package/dist/browser-Dx3_S2cG.mjs +4369 -0
- package/dist/capabilities-CcHlvWgK.mjs +33 -0
- package/dist/concurrency-Drev_Vz9.mjs +41 -0
- package/dist/{constants-CCvsN80K.mjs → constants-CDZLOoVv.mjs} +105 -48
- package/dist/coordination-DgItD9DL.mjs +259 -0
- package/dist/debugger-RS3RSAqs.mjs +1288 -0
- package/dist/definitions-BEoYofW5.mjs +47 -0
- package/dist/definitions-BRaefg3u.mjs +365 -0
- package/dist/definitions-BbkvZkiv.mjs +96 -0
- package/dist/definitions-BtWSHJ3o.mjs +17 -0
- package/dist/definitions-C1gCHO0i.mjs +43 -0
- package/dist/definitions-CDOg_b-l.mjs +138 -0
- package/dist/definitions-CVPD9hzZ.mjs +54 -0
- package/dist/definitions-Cea8Lgl7.mjs +94 -0
- package/dist/definitions-DAgIyjxM.mjs +10 -0
- package/dist/definitions-DJA27nsL.mjs +66 -0
- package/dist/definitions-DKPFU3LW.mjs +25 -0
- package/dist/definitions-DPRpZQ96.mjs +47 -0
- package/dist/definitions-DUE5gmdn.mjs +18 -0
- package/dist/definitions-DYVjOtxa.mjs +26 -0
- package/dist/definitions-DcYLVLCo.mjs +37 -0
- package/dist/definitions-Pp5LI2H4.mjs +27 -0
- package/dist/definitions-j9KdHVNR.mjs +14 -0
- package/dist/definitions-uzkjBwa7.mjs +258 -0
- package/dist/definitions-va-AnLuQ.mjs +28 -0
- package/dist/encoding-DJeqHmpd.mjs +1079 -0
- package/dist/evidence-graph-bridge-DcYizFk2.mjs +136 -0
- package/dist/{factory-CibqTNC8.mjs → factory-C90tBff6.mjs} +41 -56
- package/dist/flat-target-session-Dgax2Cy3.mjs +29 -0
- package/dist/graphql-CoHrhweh.mjs +1197 -0
- package/dist/handlers-4jmR0nMs.mjs +898 -0
- package/dist/handlers-BAHPxcch.mjs +789 -0
- package/dist/handlers-BOs9b907.mjs +2600 -0
- package/dist/handlers-BWXEy6ef.mjs +917 -0
- package/dist/handlers-Bndn6QvE.mjs +111 -0
- package/dist/handlers-BqC4bD4s.mjs +681 -0
- package/dist/handlers-BtYq60bM2.mjs +276 -0
- package/dist/handlers-BzgcB4iv.mjs +799 -0
- package/dist/handlers-CRyRWj2b.mjs +859 -0
- package/dist/handlers-CVv2H1uq.mjs +592 -0
- package/dist/handlers-Dl5a7JS4.mjs +572 -0
- package/dist/handlers-Dx2d7jt7.mjs +2537 -0
- package/dist/handlers-Dz9PYsCa.mjs +2805 -0
- package/dist/handlers-HujRKC3b.mjs +661 -0
- package/dist/handlers.impl-XWXkQfyi.mjs +807 -0
- package/dist/hooks-B1B8NRHL.mjs +898 -0
- package/dist/index.mjs +491 -259
- package/dist/{logger-BmWzC2lM.mjs → logger-Dh_xb7_2.mjs} +14 -6
- package/dist/maintenance-PRMkLVRW.mjs +835 -0
- package/dist/manifest-67Bok-Si.mjs +58 -0
- package/dist/manifest-6lNTMZAB2.mjs +87 -0
- package/dist/manifest-B2duEHiH.mjs +90 -0
- package/dist/manifest-B6EY9Vm8.mjs +57 -0
- package/dist/manifest-B6nKSbyY.mjs +95 -0
- package/dist/manifest-BL8AQNPF.mjs +106 -0
- package/dist/manifest-BSZvJJmV.mjs +47 -0
- package/dist/manifest-BU7qzUyX.mjs +418 -0
- package/dist/manifest-Bl62e8WK.mjs +49 -0
- 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-C-xtsjS3.mjs +81 -0
- package/dist/manifest-CDYl7OhA.mjs +66 -0
- 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-D7YZM_2e.mjs +194 -0
- package/dist/manifest-DE_VrAeQ.mjs +314 -0
- package/dist/manifest-DGsXSCpT.mjs +39 -0
- package/dist/manifest-DJ2vfEuW.mjs +156 -0
- package/dist/manifest-DPXDYhEu.mjs +80 -0
- package/dist/manifest-Dd4fQb0a.mjs +322 -0
- package/dist/manifest-Deq6opGg.mjs +223 -0
- package/dist/manifest-DfJTafJK.mjs +37 -0
- package/dist/manifest-DgOdgN_j.mjs +50 -0
- package/dist/manifest-DlbMW4v4.mjs +47 -0
- package/dist/manifest-DmVfbH0w.mjs +374 -0
- 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-cEJU1v0Z.mjs +129 -0
- package/dist/manifest-wOl5XLB12.mjs +112 -0
- package/dist/modules-tZozf0LQ.mjs +10635 -0
- package/dist/mojo-ipc-DXNEXEqb.mjs +640 -0
- package/dist/network-CPVvwvFg.mjs +3852 -0
- package/dist/{artifacts-BbdOMET5.mjs → outputPaths-um7lCRY3.mjs} +219 -216
- package/dist/parse-args-B4cY5Vx5.mjs +39 -0
- package/dist/platform-CYeFoTWp.mjs +2161 -0
- package/dist/process-BTbgcVc6.mjs +1306 -0
- package/dist/proxy-r8YN6nP1.mjs +192 -0
- package/dist/registry-Bl8ZQW61.mjs +34 -0
- package/dist/response-CWhh2aLo.mjs +34 -0
- package/dist/server/plugin-api.mjs +2 -2
- package/dist/shared-state-board-BoZnSoj-.mjs +586 -0
- package/dist/sourcemap-BIDHUVXy.mjs +934 -0
- package/dist/ssrf-policy-Dsqd-DTX.mjs +166 -0
- package/dist/streaming-Dal6utPp.mjs +725 -0
- package/dist/tool-builder-BHJp32mV.mjs +186 -0
- package/dist/transform-DRVgGG90.mjs +1011 -0
- package/dist/types-Bx92KJfT.mjs +4 -0
- package/dist/wasm-BYx5UOeG.mjs +1044 -0
- package/dist/webcrack-Be0_FccV.mjs +747 -0
- package/dist/workflow-BpuKEtvn.mjs +725 -0
- package/package.json +82 -49
- package/dist/ExtensionManager-CPTJhHFg.mjs +0 -2
- package/dist/ToolCatalog-Bq4V2sbJ.mjs +0 -67201
- package/dist/{CacheAdapters-CzFNpD9a.mjs → CacheAdapters-jJFy20G-.mjs} +0 -0
- package/dist/{StealthVerifier-BzBCFiwx.mjs → StealthVerifier-BWmPgQsv.mjs} +0 -0
- package/dist/{VersionDetector-CNXcvD46.mjs → VersionDetector-K3V4vGsw.mjs} +0 -0
- package/dist/{formatAddress-ChCSIRWT.mjs → formatAddress-nnMvEohD.mjs} +0 -0
- package/dist/{types-BBjOqye-.mjs → types-DDBWs9UP.mjs} +1 -1
|
@@ -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 };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { n as toolLookup } from "./registry-Bl8ZQW61.mjs";
|
|
2
|
+
import { n as defineMethodRegistrations } from "./bind-helpers-ClV34xdn.mjs";
|
|
3
|
+
import { t as tool } from "./tool-builder-BHJp32mV.mjs";
|
|
4
|
+
//#region src/server/domains/mojo-ipc/definitions.ts
|
|
5
|
+
const mojoIpcTools = [
|
|
6
|
+
tool("mojo_ipc_capabilities", (t) => t.desc("Report Mojo IPC monitoring availability.").query()),
|
|
7
|
+
tool("mojo_monitor", (t) => t.desc("Start or stop Mojo IPC monitoring for the active Chromium-based target.").enum("action", ["start", "stop"], "Monitor action").string("deviceId", "Optional device or transport identifier (action=start)").required("action")),
|
|
8
|
+
tool("mojo_decode_message", (t) => t.desc("Decode a Mojo IPC hex payload into a structured field map").string("hexPayload", "Hex-encoded Mojo IPC payload").required("hexPayload").query()),
|
|
9
|
+
tool("mojo_list_interfaces", (t) => t.desc("List discovered Mojo IPC interfaces and their pending message counts").query()),
|
|
10
|
+
tool("mojo_messages_get", (t) => t.desc("Retrieve captured Mojo IPC messages from the active monitoring session").number("limit", "Maximum number of messages to retrieve (default 100)").string("interface", "Filter messages by interface name").query())
|
|
11
|
+
];
|
|
12
|
+
//#endregion
|
|
13
|
+
//#region src/server/domains/mojo-ipc/manifest.ts
|
|
14
|
+
const DOMAIN = "mojo-ipc";
|
|
15
|
+
const DEP_KEY = "mojoIpcHandlers";
|
|
16
|
+
const registrations = defineMethodRegistrations({
|
|
17
|
+
domain: DOMAIN,
|
|
18
|
+
depKey: DEP_KEY,
|
|
19
|
+
lookup: toolLookup(mojoIpcTools),
|
|
20
|
+
entries: [
|
|
21
|
+
{
|
|
22
|
+
tool: "mojo_ipc_capabilities",
|
|
23
|
+
method: "handleMojoIpcCapabilities"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
tool: "mojo_monitor",
|
|
27
|
+
method: "handleMojoMonitorDispatch"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
tool: "mojo_decode_message",
|
|
31
|
+
method: "handleMojoDecodeMessage"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
tool: "mojo_list_interfaces",
|
|
35
|
+
method: "handleMojoListInterfaces"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
tool: "mojo_messages_get",
|
|
39
|
+
method: "handleMojoMessagesGet"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
});
|
|
43
|
+
async function ensure(ctx) {
|
|
44
|
+
const { MojoIPCHandlers } = await import("./mojo-ipc-DXNEXEqb.mjs");
|
|
45
|
+
const existingHandlers = ctx.getDomainInstance(DEP_KEY);
|
|
46
|
+
if (existingHandlers) return existingHandlers;
|
|
47
|
+
const handlers = new MojoIPCHandlers(void 0, void 0, ctx.eventBus);
|
|
48
|
+
ctx.setDomainInstance(DEP_KEY, handlers);
|
|
49
|
+
return handlers;
|
|
50
|
+
}
|
|
51
|
+
const manifest = {
|
|
52
|
+
kind: "domain-manifest",
|
|
53
|
+
version: 1,
|
|
54
|
+
domain: DOMAIN,
|
|
55
|
+
depKey: DEP_KEY,
|
|
56
|
+
profiles: ["full"],
|
|
57
|
+
registrations,
|
|
58
|
+
ensure,
|
|
59
|
+
workflowRule: {
|
|
60
|
+
patterns: [/\b(mojo|ipc|chromium\s?(ipc|message)|interface\s?(broker|registry))\b/i, /(mojo|ipc|chromium).*(monitor|capture|hook|trace)/i],
|
|
61
|
+
priority: 75,
|
|
62
|
+
tools: [
|
|
63
|
+
"mojo_monitor",
|
|
64
|
+
"mojo_decode_message",
|
|
65
|
+
"mojo_list_interfaces"
|
|
66
|
+
],
|
|
67
|
+
hint: "Mojo IPC: start monitor → capture messages → decode payloads → correlate with CDP"
|
|
68
|
+
},
|
|
69
|
+
prerequisites: {
|
|
70
|
+
mojo_monitor: [{
|
|
71
|
+
condition: "Frida must be available for real process attachment",
|
|
72
|
+
fix: "Install Frida and ensure the Chromium target process is launched first"
|
|
73
|
+
}],
|
|
74
|
+
mojo_decode_message: [{
|
|
75
|
+
condition: "Captured message payload hex is required",
|
|
76
|
+
fix: "Start a monitoring session via mojo_monitor and capture traffic first"
|
|
77
|
+
}]
|
|
78
|
+
},
|
|
79
|
+
toolDependencies: [{
|
|
80
|
+
from: "browser",
|
|
81
|
+
to: "mojo-ipc",
|
|
82
|
+
relation: "uses",
|
|
83
|
+
weight: .8
|
|
84
|
+
}]
|
|
85
|
+
};
|
|
86
|
+
//#endregion
|
|
87
|
+
export { manifest as default, mojoIpcTools as t };
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { n as toolLookup } from "./registry-Bl8ZQW61.mjs";
|
|
2
|
+
import { n as defineMethodRegistrations } from "./bind-helpers-ClV34xdn.mjs";
|
|
3
|
+
import { t as platformTools } from "./definitions-CVPD9hzZ.mjs";
|
|
4
|
+
//#region src/server/domains/platform/manifest.ts
|
|
5
|
+
const DOMAIN = "platform";
|
|
6
|
+
const DEP_KEY = "platformHandlers";
|
|
7
|
+
const registrations = defineMethodRegistrations({
|
|
8
|
+
domain: DOMAIN,
|
|
9
|
+
depKey: DEP_KEY,
|
|
10
|
+
lookup: toolLookup(platformTools),
|
|
11
|
+
entries: [
|
|
12
|
+
{
|
|
13
|
+
tool: "platform_capabilities",
|
|
14
|
+
method: "handlePlatformCapabilities"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
tool: "miniapp_pkg_scan",
|
|
18
|
+
method: "handleMiniappPkgScan"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
tool: "miniapp_pkg_unpack",
|
|
22
|
+
method: "handleMiniappPkgUnpack"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
tool: "miniapp_pkg_analyze",
|
|
26
|
+
method: "handleMiniappPkgAnalyze"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
tool: "asar_extract",
|
|
30
|
+
method: "handleAsarExtract"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
tool: "electron_inspect_app",
|
|
34
|
+
method: "handleElectronInspectApp"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
tool: "electron_scan_userdata",
|
|
38
|
+
method: "handleElectronScanUserdata"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
tool: "asar_search",
|
|
42
|
+
method: "handleAsarSearch"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
tool: "electron_check_fuses",
|
|
46
|
+
method: "handleElectronCheckFuses"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
tool: "electron_patch_fuses",
|
|
50
|
+
method: "handleElectronPatchFuses"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
tool: "v8_bytecode_decompile",
|
|
54
|
+
method: "handleV8BytecodeDecompile"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
tool: "electron_launch_debug",
|
|
58
|
+
method: "handleElectronLaunchDebug"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
tool: "electron_debug_status",
|
|
62
|
+
method: "handleElectronDebugStatus"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
tool: "electron_ipc_sniff",
|
|
66
|
+
method: "handleElectronIPCSniff"
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
});
|
|
70
|
+
async function ensure(ctx) {
|
|
71
|
+
const { CodeCollector } = await import("./modules-tZozf0LQ.mjs").then((n) => n.t);
|
|
72
|
+
const { PlatformToolHandlers } = await import("./platform-CYeFoTWp.mjs");
|
|
73
|
+
if (!ctx.collector) {
|
|
74
|
+
ctx.collector = new CodeCollector(ctx.config.puppeteer);
|
|
75
|
+
ctx.registerCaches();
|
|
76
|
+
}
|
|
77
|
+
if (!ctx.platformHandlers) ctx.platformHandlers = new PlatformToolHandlers(ctx.collector);
|
|
78
|
+
return ctx.platformHandlers;
|
|
79
|
+
}
|
|
80
|
+
const manifest = {
|
|
81
|
+
kind: "domain-manifest",
|
|
82
|
+
version: 1,
|
|
83
|
+
domain: DOMAIN,
|
|
84
|
+
depKey: DEP_KEY,
|
|
85
|
+
profiles: ["full"],
|
|
86
|
+
ensure,
|
|
87
|
+
registrations
|
|
88
|
+
};
|
|
89
|
+
//#endregion
|
|
90
|
+
export { manifest as default };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { n as toolLookup } from "./registry-Bl8ZQW61.mjs";
|
|
2
|
+
import { n as defineMethodRegistrations } from "./bind-helpers-ClV34xdn.mjs";
|
|
3
|
+
import { t as coordinationTools } from "./definitions-BtWSHJ3o.mjs";
|
|
4
|
+
//#region src/server/domains/coordination/manifest.ts
|
|
5
|
+
const DOMAIN = "coordination";
|
|
6
|
+
const DEP_KEY = "coordinationHandlers";
|
|
7
|
+
const registrations = defineMethodRegistrations({
|
|
8
|
+
domain: DOMAIN,
|
|
9
|
+
depKey: DEP_KEY,
|
|
10
|
+
lookup: toolLookup(coordinationTools),
|
|
11
|
+
entries: [
|
|
12
|
+
{
|
|
13
|
+
tool: "create_task_handoff",
|
|
14
|
+
method: "handleCreateTaskHandoff"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
tool: "complete_task_handoff",
|
|
18
|
+
method: "handleCompleteTaskHandoff"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
tool: "get_task_context",
|
|
22
|
+
method: "handleGetTaskContext"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
tool: "append_session_insight",
|
|
26
|
+
method: "handleAppendSessionInsight"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
tool: "save_page_snapshot",
|
|
30
|
+
method: "handleSavePageSnapshot"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
tool: "restore_page_snapshot",
|
|
34
|
+
method: "handleRestorePageSnapshot"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
tool: "list_page_snapshots",
|
|
38
|
+
method: "handleListPageSnapshots"
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
});
|
|
42
|
+
async function ensure(ctx) {
|
|
43
|
+
const { CoordinationHandlers } = await import("./coordination-DgItD9DL.mjs");
|
|
44
|
+
if (!ctx.coordinationHandlers) ctx.coordinationHandlers = new CoordinationHandlers(ctx);
|
|
45
|
+
return ctx.coordinationHandlers;
|
|
46
|
+
}
|
|
47
|
+
const manifest = {
|
|
48
|
+
kind: "domain-manifest",
|
|
49
|
+
version: 1,
|
|
50
|
+
domain: DOMAIN,
|
|
51
|
+
depKey: DEP_KEY,
|
|
52
|
+
profiles: ["full"],
|
|
53
|
+
ensure,
|
|
54
|
+
registrations
|
|
55
|
+
};
|
|
56
|
+
//#endregion
|
|
57
|
+
export { manifest as default };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { n as toolLookup } from "./registry-Bl8ZQW61.mjs";
|
|
2
|
+
import { n as defineMethodRegistrations } from "./bind-helpers-ClV34xdn.mjs";
|
|
3
|
+
import { t as tool } from "./tool-builder-BHJp32mV.mjs";
|
|
4
|
+
//#region src/server/domains/extension-registry/definitions.ts
|
|
5
|
+
const extensionRegistryTools = [
|
|
6
|
+
tool("extension_list_installed", (t) => t.desc("List installed extensions from the local extension registry").query()),
|
|
7
|
+
tool("extension_execute_in_context", (t) => t.desc("Load an extension and execute a named exported context function").string("pluginId", "Plugin identifier").string("contextName", "Exported function or context name").prop("args", {
|
|
8
|
+
type: "object",
|
|
9
|
+
description: "Arguments passed to the target context",
|
|
10
|
+
additionalProperties: true
|
|
11
|
+
}).requiredOpenWorld("pluginId", "contextName")),
|
|
12
|
+
tool("extension_reload", (t) => t.desc("Reload an installed extension by unloading and loading it again").string("pluginId", "Plugin identifier").requiredOpenWorld("pluginId")),
|
|
13
|
+
tool("extension_uninstall", (t) => t.desc("Uninstall an extension from the local extension registry").string("pluginId", "Plugin identifier").required("pluginId").destructive()),
|
|
14
|
+
tool("webhook", (t) => t.desc("Manage webhook endpoints for external callbacks. Actions: create, list, delete, commands.").enum("action", [
|
|
15
|
+
"create",
|
|
16
|
+
"list",
|
|
17
|
+
"delete",
|
|
18
|
+
"commands"
|
|
19
|
+
], "Webhook operation").string("name", "Human-readable webhook name (action=create)").string("path", "URL path for the webhook endpoint (action=create)").string("secret", "Optional HMAC secret for webhook authentication (action=create)").string("url", "Optional external callback URL for webhook forwarding (action=create)").array("events", { type: "string" }, "List of events to subscribe to (action=create)").string("endpointId", "Webhook endpoint identifier (action=delete, commands)").string("status", "Filter commands by status: pending, processing, completed, failed (action=commands)").prop("command", {
|
|
20
|
+
type: "object",
|
|
21
|
+
description: "Command to enqueue (action=commands, if provided adds to queue instead of listing)",
|
|
22
|
+
additionalProperties: true
|
|
23
|
+
}).required("action"))
|
|
24
|
+
];
|
|
25
|
+
//#endregion
|
|
26
|
+
//#region src/server/domains/extension-registry/manifest.ts
|
|
27
|
+
const DOMAIN = "extension-registry";
|
|
28
|
+
const DEP_KEY = "extensionRegistryHandlers";
|
|
29
|
+
const registrations = defineMethodRegistrations({
|
|
30
|
+
domain: DOMAIN,
|
|
31
|
+
depKey: DEP_KEY,
|
|
32
|
+
lookup: toolLookup(extensionRegistryTools),
|
|
33
|
+
entries: [
|
|
34
|
+
{
|
|
35
|
+
tool: "extension_list_installed",
|
|
36
|
+
method: "handleListInstalled"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
tool: "extension_execute_in_context",
|
|
40
|
+
method: "handleExecuteInContext"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
tool: "extension_reload",
|
|
44
|
+
method: "handleReload"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
tool: "extension_uninstall",
|
|
48
|
+
method: "handleUninstall"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
tool: "webhook",
|
|
52
|
+
method: "handleWebhookDispatch"
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
});
|
|
56
|
+
async function ensure(ctx) {
|
|
57
|
+
const { ExtensionRegistryHandlers } = await import("./handlers-BzgcB4iv.mjs");
|
|
58
|
+
const existing = ctx.getDomainInstance(DEP_KEY);
|
|
59
|
+
if (existing) return existing;
|
|
60
|
+
const handlers = new ExtensionRegistryHandlers();
|
|
61
|
+
ctx.setDomainInstance(DEP_KEY, handlers);
|
|
62
|
+
handlers.startWebhookServer().catch(() => void 0);
|
|
63
|
+
return handlers;
|
|
64
|
+
}
|
|
65
|
+
const manifest = {
|
|
66
|
+
kind: "domain-manifest",
|
|
67
|
+
version: 1,
|
|
68
|
+
domain: DOMAIN,
|
|
69
|
+
depKey: DEP_KEY,
|
|
70
|
+
profiles: ["full"],
|
|
71
|
+
ensure,
|
|
72
|
+
registrations,
|
|
73
|
+
workflowRule: {
|
|
74
|
+
patterns: [/\b(extension|plugin|addon|webhook|c2|bluetooth|ble|hid|serial|esp32|registry)\b/i, /(install|uninstall|reload).*(extension|plugin)/i],
|
|
75
|
+
priority: 70,
|
|
76
|
+
tools: [
|
|
77
|
+
"install_extension",
|
|
78
|
+
"extension_list_installed",
|
|
79
|
+
"webhook"
|
|
80
|
+
],
|
|
81
|
+
hint: "Plugin + webhook C2 + BLE HID + serial flashing pipeline."
|
|
82
|
+
},
|
|
83
|
+
prerequisites: { webhook: [{
|
|
84
|
+
condition: "Webhook listen port must be free",
|
|
85
|
+
fix: "Pick an unused port via the `port` argument or stop the conflicting service"
|
|
86
|
+
}] },
|
|
87
|
+
toolDependencies: [{
|
|
88
|
+
from: "webhook",
|
|
89
|
+
to: "extension_list_installed",
|
|
90
|
+
relation: "suggests",
|
|
91
|
+
weight: .5
|
|
92
|
+
}]
|
|
93
|
+
};
|
|
94
|
+
//#endregion
|
|
95
|
+
export { manifest as default };
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { n as toolLookup, t as ensureBrowserCore } from "./registry-Bl8ZQW61.mjs";
|
|
2
|
+
import { n as defineMethodRegistrations } from "./bind-helpers-ClV34xdn.mjs";
|
|
3
|
+
import { t as tool } from "./tool-builder-BHJp32mV.mjs";
|
|
4
|
+
//#region src/server/domains/canvas/definitions.ts
|
|
5
|
+
const canvasTools = [
|
|
6
|
+
tool("canvas_engine_fingerprint", (t) => t.desc("Detect Canvas/WebGL game engine instances running in the page (LayaAir, PixiJ...").query()),
|
|
7
|
+
tool("canvas_scene_dump", (t) => t.desc("Extract the full scene tree / display list from a detected canvas engine").string("canvasId", "Canvas element ID or index to target").number("maxDepth", "Maximum tree traversal depth", { default: 20 }).boolean("onlyInteractive", "Only include interactive (mouseEnabled) nodes", { default: false }).boolean("onlyVisible", "Only include visible nodes", { default: false }).query()),
|
|
8
|
+
tool("canvas_pick_object_at_point", (t) => t.desc("Pick / hit-test the topmost object at a given screen coordinate using the engine's hit-test system").number("x", "Screen X coordinate").number("y", "Screen Y coordinate").string("canvasId", "Canvas element ID or index to target").boolean("highlight", "Draw a highlight rectangle on the picked object", { default: false }).required("x", "y").readOnly()),
|
|
9
|
+
tool("canvas_trace_click_handler", (t) => t.desc("Trace a click event through DOM events, engine dispatch, and JS call stack to...").number("x", "Screen X coordinate to click").number("y", "Screen Y coordinate to click").string("canvasId", "Canvas element ID or index to target").enum("breakpointType", [
|
|
10
|
+
"click",
|
|
11
|
+
"mousedown",
|
|
12
|
+
"pointerdown"
|
|
13
|
+
], "Event breakpoint type", { default: "click" }).number("maxFrames", "Maximum call stack frames to capture", { default: 50 }).requiredOpenWorld("x", "y"))
|
|
14
|
+
];
|
|
15
|
+
//#endregion
|
|
16
|
+
//#region src/server/domains/canvas/manifest.ts
|
|
17
|
+
const DOMAIN = "canvas";
|
|
18
|
+
const DEP_KEY = "canvasHandlers";
|
|
19
|
+
const registrations = defineMethodRegistrations({
|
|
20
|
+
domain: DOMAIN,
|
|
21
|
+
depKey: DEP_KEY,
|
|
22
|
+
lookup: toolLookup(canvasTools),
|
|
23
|
+
entries: [
|
|
24
|
+
{
|
|
25
|
+
tool: "canvas_engine_fingerprint",
|
|
26
|
+
method: "handleFingerprint"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
tool: "canvas_scene_dump",
|
|
30
|
+
method: "handleSceneDump"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
tool: "canvas_pick_object_at_point",
|
|
34
|
+
method: "handlePick"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
tool: "canvas_trace_click_handler",
|
|
38
|
+
method: "handleTraceClick"
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
});
|
|
42
|
+
async function ensure(ctx) {
|
|
43
|
+
const { DebuggerManager } = await import("./modules-tZozf0LQ.mjs").then((n) => n.t);
|
|
44
|
+
const { TraceRecorder } = await import("./TraceRecorder-B41Z5XBj.mjs");
|
|
45
|
+
const { ReverseEvidenceGraph } = await import("./ReverseEvidenceGraph-C02-gXOh.mjs").then((n) => n.t);
|
|
46
|
+
const { CanvasToolHandlers } = await import("./handlers-Dz9PYsCa.mjs");
|
|
47
|
+
await ensureBrowserCore(ctx);
|
|
48
|
+
if (!ctx.debuggerManager) ctx.debuggerManager = new DebuggerManager(ctx.collector);
|
|
49
|
+
if (!ctx.traceRecorder) ctx.traceRecorder = new TraceRecorder();
|
|
50
|
+
let graph = ctx.getDomainInstance("evidenceGraph");
|
|
51
|
+
if (!graph) {
|
|
52
|
+
graph = new ReverseEvidenceGraph();
|
|
53
|
+
ctx.setDomainInstance("evidenceGraph", graph);
|
|
54
|
+
}
|
|
55
|
+
if (!ctx.canvasHandlers) ctx.canvasHandlers = new CanvasToolHandlers({
|
|
56
|
+
pageController: ctx.pageController,
|
|
57
|
+
debuggerManager: ctx.debuggerManager,
|
|
58
|
+
traceRecorder: ctx.traceRecorder,
|
|
59
|
+
evidenceStore: graph
|
|
60
|
+
});
|
|
61
|
+
return ctx.canvasHandlers;
|
|
62
|
+
}
|
|
63
|
+
const manifest = {
|
|
64
|
+
kind: "domain-manifest",
|
|
65
|
+
version: 1,
|
|
66
|
+
domain: DOMAIN,
|
|
67
|
+
depKey: DEP_KEY,
|
|
68
|
+
profiles: ["full"],
|
|
69
|
+
ensure,
|
|
70
|
+
workflowRule: {
|
|
71
|
+
patterns: [
|
|
72
|
+
/(canvas|scene|engine|game).*(pick|dump|trace|reverse)/i,
|
|
73
|
+
/(canvas|webgl|webgpu|scene).*(graph|tree|node)/i,
|
|
74
|
+
/(laya|pixi|phaser|cocos|unity).*(reverse|scene|dump|hook)/i
|
|
75
|
+
],
|
|
76
|
+
priority: 80,
|
|
77
|
+
tools: [
|
|
78
|
+
"canvas_engine_fingerprint",
|
|
79
|
+
"canvas_scene_dump",
|
|
80
|
+
"canvas_pick_object_at_point",
|
|
81
|
+
"canvas_trace_click_handler"
|
|
82
|
+
],
|
|
83
|
+
hint: "Canvas reverse: fingerprint engine → dump scene tree → pick object at point → trace click to handler"
|
|
84
|
+
},
|
|
85
|
+
prerequisites: {
|
|
86
|
+
canvas_engine_fingerprint: [{
|
|
87
|
+
condition: "Browser must be running",
|
|
88
|
+
fix: "Call browser_launch or browser_attach first"
|
|
89
|
+
}],
|
|
90
|
+
canvas_scene_dump: [{
|
|
91
|
+
condition: "Browser must be running",
|
|
92
|
+
fix: "Call browser_launch or browser_attach first"
|
|
93
|
+
}],
|
|
94
|
+
canvas_pick_object_at_point: [{
|
|
95
|
+
condition: "Browser must be running",
|
|
96
|
+
fix: "Call browser_launch or browser_attach first"
|
|
97
|
+
}],
|
|
98
|
+
canvas_trace_click_handler: [{
|
|
99
|
+
condition: "Debugger must be enabled",
|
|
100
|
+
fix: "Call debugger_lifecycle({ action: 'enable' }) first"
|
|
101
|
+
}]
|
|
102
|
+
},
|
|
103
|
+
registrations
|
|
104
|
+
};
|
|
105
|
+
//#endregion
|
|
106
|
+
export { manifest as default };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { n as toolLookup, t as ensureBrowserCore } from "./registry-Bl8ZQW61.mjs";
|
|
2
|
+
import { n as defineMethodRegistrations } from "./bind-helpers-ClV34xdn.mjs";
|
|
3
|
+
import { n as hookPresetTools, t as aiHookTools } from "./definitions-C1gCHO0i.mjs";
|
|
4
|
+
//#region src/server/domains/hooks/manifest.ts
|
|
5
|
+
const DOMAIN = "hooks";
|
|
6
|
+
const DEP_KEY = "aiHookHandlers";
|
|
7
|
+
const DEP_KEY_PRESET = "hookPresetHandlers";
|
|
8
|
+
const t = toolLookup([...aiHookTools, ...hookPresetTools]);
|
|
9
|
+
const aiRegistrations = defineMethodRegistrations({
|
|
10
|
+
domain: DOMAIN,
|
|
11
|
+
depKey: DEP_KEY,
|
|
12
|
+
lookup: t,
|
|
13
|
+
entries: [{
|
|
14
|
+
tool: "ai_hook",
|
|
15
|
+
method: "handleAIHook"
|
|
16
|
+
}]
|
|
17
|
+
});
|
|
18
|
+
const presetRegistrations = defineMethodRegistrations({
|
|
19
|
+
domain: DOMAIN,
|
|
20
|
+
depKey: DEP_KEY_PRESET,
|
|
21
|
+
lookup: t,
|
|
22
|
+
entries: [{
|
|
23
|
+
tool: "hook_preset",
|
|
24
|
+
method: "handleHookPreset"
|
|
25
|
+
}]
|
|
26
|
+
});
|
|
27
|
+
async function ensure(ctx) {
|
|
28
|
+
const { AIHookToolHandlers, HookPresetToolHandlers } = await import("./hooks-B1B8NRHL.mjs");
|
|
29
|
+
await ensureBrowserCore(ctx);
|
|
30
|
+
if (!ctx.aiHookHandlers || !ctx.hookPresetHandlers) {
|
|
31
|
+
if (!ctx.aiHookHandlers) ctx.aiHookHandlers = new AIHookToolHandlers(ctx.pageController);
|
|
32
|
+
if (!ctx.hookPresetHandlers) ctx.hookPresetHandlers = new HookPresetToolHandlers(ctx.pageController);
|
|
33
|
+
}
|
|
34
|
+
return ctx.aiHookHandlers;
|
|
35
|
+
}
|
|
36
|
+
const manifest = {
|
|
37
|
+
kind: "domain-manifest",
|
|
38
|
+
version: 1,
|
|
39
|
+
domain: DOMAIN,
|
|
40
|
+
depKey: DEP_KEY,
|
|
41
|
+
secondaryDepKeys: ["hookPresetHandlers"],
|
|
42
|
+
profiles: ["full"],
|
|
43
|
+
ensure,
|
|
44
|
+
registrations: [...aiRegistrations, ...presetRegistrations]
|
|
45
|
+
};
|
|
46
|
+
//#endregion
|
|
47
|
+
export { manifest as default };
|