@jshookmcp/jshook 0.2.8 → 0.2.9

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.
Files changed (157) hide show
  1. package/README.md +36 -5
  2. package/README.zh.md +36 -5
  3. package/dist/{AntiCheatDetector-S8VRj-dD.mjs → AntiCheatDetector-BNk-EoBt.mjs} +3 -3
  4. package/dist/{CodeInjector-4Z3ngPoX.mjs → CodeInjector-Cq8q01kp.mjs} +5 -5
  5. package/dist/ConsoleMonitor-CPVQW1Y-.mjs +2201 -0
  6. package/dist/{DarwinAPI-B8hg_yhz.mjs → DarwinAPI-BNPxu0RH.mjs} +1 -1
  7. package/dist/DetailedDataManager-BQQcxh64.mjs +217 -0
  8. package/dist/EventBus-DgPmwpeu.mjs +141 -0
  9. package/dist/EvidenceGraphBridge-SFesNera.mjs +153 -0
  10. package/dist/{ExtensionManager-D5-bO9D8.mjs → ExtensionManager-CWYgw0YW.mjs} +13 -6
  11. package/dist/{FingerprintManager-BVxFJL2-.mjs → FingerprintManager-gzWtkKuf.mjs} +1 -1
  12. package/dist/{HardwareBreakpoint-DK1yjWkV.mjs → HardwareBreakpoint-B9gZCdFP.mjs} +3 -3
  13. package/dist/{HeapAnalyzer-CEbo10xU.mjs → HeapAnalyzer-BLDH0dCv.mjs} +4 -4
  14. package/dist/HookGeneratorBuilders.core.generators.storage-CtcdK78Q.mjs +639 -0
  15. package/dist/InstrumentationSession-CvPC7Jwy.mjs +244 -0
  16. package/dist/{MemoryController-DdtnBdD4.mjs → MemoryController-CbVdCIJF.mjs} +3 -3
  17. package/dist/{MemoryScanSession-RMixN3bX.mjs → MemoryScanSession-BsDZbLYm.mjs} +81 -78
  18. package/dist/{MemoryScanner-QjK4ld0B.mjs → MemoryScanner-Bcpml6II.mjs} +44 -18
  19. package/dist/{NativeMemoryManager.impl-CB6gJ0NM.mjs → NativeMemoryManager.impl-dZtA1ZGn.mjs} +14 -53
  20. package/dist/{NativeMemoryManager.utils-BML4q1ry.mjs → NativeMemoryManager.utils-B-FjA2mJ.mjs} +1 -1
  21. package/dist/{PEAnalyzer-CK0xe0Fs.mjs → PEAnalyzer-D1lzJ_VG.mjs} +2 -2
  22. package/dist/PageController-Bqm2kZ_X.mjs +417 -0
  23. package/dist/{PointerChainEngine-Cd73qu5b.mjs → PointerChainEngine-BOhyVsjx.mjs} +4 -4
  24. package/dist/PrerequisiteError-Dl33Svkz.mjs +20 -0
  25. package/dist/ResponseBuilder-D3iFYx2N.mjs +143 -0
  26. package/dist/ReverseEvidenceGraph-Dlsk94LC.mjs +269 -0
  27. package/dist/ScriptManager-aHHq0X7U.mjs +3000 -0
  28. package/dist/{Speedhack-CeF0XmEz.mjs → Speedhack-CqdIFlQl.mjs} +2 -2
  29. package/dist/{StructureAnalyzer-D4GkMduU.mjs → StructureAnalyzer-DhFaPvRO.mjs} +3 -3
  30. package/dist/ToolCatalog-C0JGZoOm.mjs +582 -0
  31. package/dist/ToolError-jh9whhMd.mjs +15 -0
  32. package/dist/ToolProbe-oC7aPrkv.mjs +45 -0
  33. package/dist/ToolRegistry-BjaF4oNz.mjs +131 -0
  34. package/dist/ToolRouter.policy-BWV67ZK-.mjs +304 -0
  35. package/dist/TraceRecorder-DgxyVbdQ.mjs +519 -0
  36. package/dist/{Win32API-Bc0QnQsN.mjs → Win32API-CePkipZY.mjs} +1 -1
  37. package/dist/{Win32Debug-DUHt9XUn.mjs → Win32Debug-BvKs-gxc.mjs} +2 -2
  38. package/dist/WorkflowEngine-CuvkZtWu.mjs +598 -0
  39. package/dist/analysis-CL9uACt9.mjs +463 -0
  40. package/dist/antidebug-CqDTB_uk.mjs +1081 -0
  41. package/dist/artifactRetention-CFEprwPw.mjs +591 -0
  42. package/dist/artifacts-Bk2-_uPq.mjs +59 -0
  43. package/dist/betterSqlite3-0pqusHHH.mjs +74 -0
  44. package/dist/binary-instrument-CXfpx6fT.mjs +979 -0
  45. package/dist/bind-helpers-xFfRF-qm.mjs +22 -0
  46. package/dist/boringssl-inspector-BH2D3VKc.mjs +180 -0
  47. package/dist/browser-BpOr5PEx.mjs +4082 -0
  48. package/dist/concurrency-Bt0yv1kJ.mjs +41 -0
  49. package/dist/{constants-CCvsN80K.mjs → constants-B0OANIBL.mjs} +88 -46
  50. package/dist/coordination-qUbyF8KU.mjs +259 -0
  51. package/dist/debugger-gnKxRSN0.mjs +1271 -0
  52. package/dist/definitions-6M-eejaT.mjs +53 -0
  53. package/dist/definitions-B18eyf0B.mjs +18 -0
  54. package/dist/definitions-B3QdlrHv.mjs +34 -0
  55. package/dist/definitions-B4rAvHNZ.mjs +63 -0
  56. package/dist/definitions-BB_4jnmy.mjs +37 -0
  57. package/dist/definitions-BMfYXoNC.mjs +43 -0
  58. package/dist/definitions-Beid2EB3.mjs +27 -0
  59. package/dist/definitions-C1UvM5Iy.mjs +126 -0
  60. package/dist/definitions-CXEI7QC72.mjs +216 -0
  61. package/dist/definitions-C_4r7Fo-2.mjs +14 -0
  62. package/dist/definitions-CkFDALoa.mjs +26 -0
  63. package/dist/definitions-Cke7zEb8.mjs +94 -0
  64. package/dist/definitions-ClJLzsJQ.mjs +25 -0
  65. package/dist/definitions-Cq-zroAU.mjs +28 -0
  66. package/dist/definitions-Cy3Sl6gV.mjs +34 -0
  67. package/dist/definitions-D3VsGcvz.mjs +47 -0
  68. package/dist/definitions-DVGfrn7y.mjs +96 -0
  69. package/dist/definitions-LKpC3-nL.mjs +9 -0
  70. package/dist/definitions-bAhHQJq9.mjs +359 -0
  71. package/dist/encoding-Bvz5jLRv.mjs +1065 -0
  72. package/dist/evidence-graph-bridge-C_fv9PuC.mjs +135 -0
  73. package/dist/{factory-CibqTNC8.mjs → factory-DxlGh9Xf.mjs} +37 -52
  74. package/dist/graphql-DYWzJ29s.mjs +1026 -0
  75. package/dist/handlers-9sAbfIg-.mjs +2552 -0
  76. package/dist/handlers-Bl8zkwz1.mjs +2716 -0
  77. package/dist/handlers-C67ktuRN.mjs +710 -0
  78. package/dist/handlers-C87g8oCe.mjs +276 -0
  79. package/dist/handlers-CTsDAO6p.mjs +681 -0
  80. package/dist/handlers-Cgyg6c0U.mjs +645 -0
  81. package/dist/handlers-D6j6yka7.mjs +2124 -0
  82. package/dist/handlers-DdFzXLvF.mjs +446 -0
  83. package/dist/handlers-DeLOCd5m.mjs +799 -0
  84. package/dist/handlers-DlCJN4Td.mjs +757 -0
  85. package/dist/handlers-DxGIq15_2.mjs +917 -0
  86. package/dist/handlers-U6L4xhuF.mjs +585 -0
  87. package/dist/handlers-tB9Mp9ZK.mjs +84 -0
  88. package/dist/handlers-tiy7EIBp.mjs +572 -0
  89. package/dist/handlers.impl-DS0d9fUw.mjs +761 -0
  90. package/dist/hooks-CzCWByww.mjs +898 -0
  91. package/dist/index.mjs +377 -155
  92. package/dist/{logger-BmWzC2lM.mjs → logger-Dh_xb7_2.mjs} +14 -6
  93. package/dist/maintenance-P7ePRXQC.mjs +830 -0
  94. package/dist/manifest-2ToTpjv8.mjs +106 -0
  95. package/dist/manifest-3g71z6Bg.mjs +79 -0
  96. package/dist/manifest-82baTv4U.mjs +45 -0
  97. package/dist/manifest-B3QVVeBS.mjs +82 -0
  98. package/dist/manifest-BB2J8IMJ.mjs +149 -0
  99. package/dist/manifest-BKbgbSiY.mjs +60 -0
  100. package/dist/manifest-Bcf-TJzH.mjs +848 -0
  101. package/dist/manifest-BmtZzQiQ2.mjs +45 -0
  102. package/dist/manifest-Bnd7kqEY.mjs +55 -0
  103. package/dist/manifest-BqQX6OQC2.mjs +65 -0
  104. package/dist/manifest-BqrQ4Tpj.mjs +81 -0
  105. package/dist/manifest-Br4RPFt5.mjs +370 -0
  106. package/dist/manifest-C5qDjysN.mjs +107 -0
  107. package/dist/manifest-C9RT5nk32.mjs +34 -0
  108. package/dist/manifest-CAhOuvSl.mjs +204 -0
  109. package/dist/manifest-CBYWCUBJ.mjs +51 -0
  110. package/dist/manifest-CFADCRa1.mjs +37 -0
  111. package/dist/manifest-CQVhavRF.mjs +114 -0
  112. package/dist/manifest-CT7zZBV1.mjs +48 -0
  113. package/dist/manifest-CV12bcrF.mjs +121 -0
  114. package/dist/manifest-CXsRWjjI.mjs +224 -0
  115. package/dist/manifest-CZLUCfG02.mjs +95 -0
  116. package/dist/manifest-D6phHKFd.mjs +131 -0
  117. package/dist/manifest-DCyjf4n2.mjs +294 -0
  118. package/dist/manifest-DHsnKgP6.mjs +60 -0
  119. package/dist/manifest-Df_dliIe.mjs +55 -0
  120. package/dist/manifest-Dh8WBmEW.mjs +129 -0
  121. package/dist/manifest-DhKRAT8_.mjs +92 -0
  122. package/dist/manifest-DlpTj4ic2.mjs +193 -0
  123. package/dist/manifest-DrbmZcFl2.mjs +253 -0
  124. package/dist/manifest-DuwHjUa5.mjs +70 -0
  125. package/dist/manifest-DzwvxPJX.mjs +38 -0
  126. package/dist/manifest-NXctwWQq.mjs +68 -0
  127. package/dist/manifest-Sc_0JQ13.mjs +418 -0
  128. package/dist/manifest-gZ4s_UtG.mjs +96 -0
  129. package/dist/manifest-qSleDqdO.mjs +1023 -0
  130. package/dist/modules-C184v-S9.mjs +11365 -0
  131. package/dist/mojo-ipc-B_H61Afw.mjs +525 -0
  132. package/dist/network-671Cw6hV.mjs +3346 -0
  133. package/dist/{artifacts-BbdOMET5.mjs → outputPaths-B1uGmrWZ.mjs} +219 -212
  134. package/dist/parse-args-BlRjqlkL.mjs +39 -0
  135. package/dist/platform-WmNn8Sxb.mjs +2070 -0
  136. package/dist/process-QcbIy5Zq.mjs +1401 -0
  137. package/dist/proxy-DqNs0bAd.mjs +170 -0
  138. package/dist/registry-D-6e18lB.mjs +34 -0
  139. package/dist/response-BQVP-xUn.mjs +28 -0
  140. package/dist/server/plugin-api.mjs +2 -2
  141. package/dist/shared-state-board-DV-dpHFJ.mjs +586 -0
  142. package/dist/sourcemap-Dq8ez8vS.mjs +650 -0
  143. package/dist/ssrf-policy-ZaUfvhq7.mjs +166 -0
  144. package/dist/streaming-BUQ0VJsg.mjs +725 -0
  145. package/dist/tool-builder-DCbIC5Eo.mjs +186 -0
  146. package/dist/transform-CiYJfNX0.mjs +1007 -0
  147. package/dist/types-Bx92KJfT.mjs +4 -0
  148. package/dist/wasm-DQTnHDs4.mjs +531 -0
  149. package/dist/workflow-f3xJOcjx.mjs +725 -0
  150. package/package.json +16 -16
  151. package/dist/ExtensionManager-CPTJhHFg.mjs +0 -2
  152. package/dist/ToolCatalog-Bq4V2sbJ.mjs +0 -67201
  153. package/dist/{CacheAdapters-CzFNpD9a.mjs → CacheAdapters-CDe5WPSV.mjs} +0 -0
  154. package/dist/{StealthVerifier-BzBCFiwx.mjs → StealthVerifier-Bo4T3bz8.mjs} +0 -0
  155. package/dist/{VersionDetector-CNXcvD46.mjs → VersionDetector-CwVLVdDM.mjs} +0 -0
  156. package/dist/{formatAddress-ChCSIRWT.mjs → formatAddress-DVkj9kpI.mjs} +0 -0
  157. package/dist/{types-BBjOqye-.mjs → types-CPhOReNX.mjs} +1 -1
@@ -0,0 +1,106 @@
1
+ import { n as toolLookup, t as ensureBrowserCore } from "./registry-D-6e18lB.mjs";
2
+ import { t as bindByDepKey } from "./bind-helpers-xFfRF-qm.mjs";
3
+ import { t as tool } from "./tool-builder-DCbIC5Eo.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 t = toolLookup(canvasTools);
20
+ const b = (invoke) => bindByDepKey(DEP_KEY, invoke);
21
+ async function ensure(ctx) {
22
+ const { DebuggerManager } = await import("./modules-C184v-S9.mjs").then((n) => n.t);
23
+ const { TraceRecorder } = await import("./TraceRecorder-DgxyVbdQ.mjs");
24
+ const { ReverseEvidenceGraph } = await import("./ReverseEvidenceGraph-Dlsk94LC.mjs").then((n) => n.t);
25
+ const { CanvasToolHandlers } = await import("./handlers-Bl8zkwz1.mjs");
26
+ await ensureBrowserCore(ctx);
27
+ if (!ctx.debuggerManager) ctx.debuggerManager = new DebuggerManager(ctx.collector);
28
+ if (!ctx.traceRecorder) ctx.traceRecorder = new TraceRecorder();
29
+ let graph = ctx.getDomainInstance("evidenceGraph");
30
+ if (!graph) {
31
+ graph = new ReverseEvidenceGraph();
32
+ ctx.setDomainInstance("evidenceGraph", graph);
33
+ }
34
+ if (!ctx.canvasHandlers) ctx.canvasHandlers = new CanvasToolHandlers({
35
+ pageController: ctx.pageController,
36
+ debuggerManager: ctx.debuggerManager,
37
+ traceRecorder: ctx.traceRecorder,
38
+ evidenceStore: graph
39
+ });
40
+ return ctx.canvasHandlers;
41
+ }
42
+ const manifest = {
43
+ kind: "domain-manifest",
44
+ version: 1,
45
+ domain: DOMAIN,
46
+ depKey: DEP_KEY,
47
+ profiles: ["full"],
48
+ ensure,
49
+ workflowRule: {
50
+ patterns: [
51
+ /(canvas|scene|engine|game).*(pick|dump|trace|reverse)/i,
52
+ /(canvas|webgl|webgpu|scene).*(graph|tree|node)/i,
53
+ /(laya|pixi|phaser|cocos|unity).*(reverse|scene|dump|hook)/i
54
+ ],
55
+ priority: 80,
56
+ tools: [
57
+ "canvas_engine_fingerprint",
58
+ "canvas_scene_dump",
59
+ "canvas_pick_object_at_point",
60
+ "canvas_trace_click_handler"
61
+ ],
62
+ hint: "Canvas reverse: fingerprint engine → dump scene tree → pick object at point → trace click to handler"
63
+ },
64
+ prerequisites: {
65
+ canvas_engine_fingerprint: [{
66
+ condition: "Browser must be running",
67
+ fix: "Call browser_launch or browser_attach first"
68
+ }],
69
+ canvas_scene_dump: [{
70
+ condition: "Browser must be running",
71
+ fix: "Call browser_launch or browser_attach first"
72
+ }],
73
+ canvas_pick_object_at_point: [{
74
+ condition: "Browser must be running",
75
+ fix: "Call browser_launch or browser_attach first"
76
+ }],
77
+ canvas_trace_click_handler: [{
78
+ condition: "Debugger must be enabled",
79
+ fix: "Call debugger_lifecycle({ action: 'enable' }) first"
80
+ }]
81
+ },
82
+ registrations: [
83
+ {
84
+ tool: t("canvas_engine_fingerprint"),
85
+ domain: DOMAIN,
86
+ bind: b((h, a) => h.handleFingerprint(a))
87
+ },
88
+ {
89
+ tool: t("canvas_scene_dump"),
90
+ domain: DOMAIN,
91
+ bind: b((h, a) => h.handleSceneDump(a))
92
+ },
93
+ {
94
+ tool: t("canvas_pick_object_at_point"),
95
+ domain: DOMAIN,
96
+ bind: b((h, a) => h.handlePick(a))
97
+ },
98
+ {
99
+ tool: t("canvas_trace_click_handler"),
100
+ domain: DOMAIN,
101
+ bind: b((h, a) => h.handleTraceClick(a))
102
+ }
103
+ ]
104
+ };
105
+ //#endregion
106
+ export { manifest as default };
@@ -0,0 +1,79 @@
1
+ import { n as toolLookup } from "./registry-D-6e18lB.mjs";
2
+ import { t as bindByDepKey } from "./bind-helpers-xFfRF-qm.mjs";
3
+ import { t as tool } from "./tool-builder-DCbIC5Eo.mjs";
4
+ import { resolve } from "node:path";
5
+ //#region src/server/domains/evidence/definitions.ts
6
+ const evidenceTools = [
7
+ tool("evidence_query", (t) => t.desc("Query reverse evidence graph by URL, function name, or script ID to find associated nodes.").enum("by", [
8
+ "url",
9
+ "function",
10
+ "script"
11
+ ], "Query dimension").string("value", "Search value: URL/fragment, function name, or script ID").required("by", "value").query()),
12
+ tool("evidence_export", (t) => t.desc("Export the reverse evidence graph as JSON snapshot or Markdown report.").enum("format", ["json", "markdown"], "Export format").required("format").query()),
13
+ tool("evidence_chain", (t) => t.desc("Get full provenance chain from a node ID in specified direction").string("nodeId", "Evidence node ID to start from").enum("direction", ["forward", "backward"], "Traversal direction", { default: "forward" }).required("nodeId").query())
14
+ ];
15
+ //#endregion
16
+ //#region src/server/domains/evidence/manifest.ts
17
+ const DOMAIN = "evidence";
18
+ const DEP_KEY = "evidenceHandlers";
19
+ const t = toolLookup(evidenceTools);
20
+ const b = (invoke) => bindByDepKey(DEP_KEY, invoke);
21
+ async function ensure(ctx) {
22
+ const { ReverseEvidenceGraph } = await import("./ReverseEvidenceGraph-Dlsk94LC.mjs").then((n) => n.t);
23
+ const { EvidenceGraphBridge } = await import("./EvidenceGraphBridge-SFesNera.mjs");
24
+ const { EvidenceHandlers } = await import("./handlers-tB9Mp9ZK.mjs");
25
+ let graph = ctx.getDomainInstance("evidenceGraph");
26
+ if (!graph) {
27
+ graph = new ReverseEvidenceGraph();
28
+ graph.setEventBus(ctx.eventBus);
29
+ ctx.setDomainInstance("evidenceGraph", graph);
30
+ }
31
+ let bridge = ctx.getDomainInstance("evidenceGraphBridge");
32
+ if (!bridge) {
33
+ bridge = new EvidenceGraphBridge(graph);
34
+ ctx.setDomainInstance("evidenceGraphBridge", bridge);
35
+ }
36
+ ctx.getDomainInstance("instrumentationSessionManager")?.setEvidenceBridge(bridge);
37
+ if (!ctx.evidenceHandlers) ctx.evidenceHandlers = new EvidenceHandlers(graph);
38
+ const scheduler = ctx.getDomainInstance("snapshotScheduler");
39
+ const stateDir = ctx.getDomainInstance("snapshotStateDir");
40
+ graph.setPersistNotifier(scheduler ? () => scheduler.notifyDirty() : void 0);
41
+ if (scheduler && stateDir && !ctx.getDomainInstance("evidenceGraphSnapshotRegistered")) {
42
+ scheduler.register(resolve(stateDir, "evidence-graph", "current.json"), graph);
43
+ ctx.setDomainInstance("evidenceGraphSnapshotRegistered", true);
44
+ }
45
+ return ctx.evidenceHandlers;
46
+ }
47
+ const manifest = {
48
+ kind: "domain-manifest",
49
+ version: 1,
50
+ domain: DOMAIN,
51
+ depKey: DEP_KEY,
52
+ profiles: ["full"],
53
+ ensure,
54
+ workflowRule: {
55
+ patterns: [/(evidence|provenance|chain).*(graph|query|export|report)/i, /(证据|溯源|链).*(图|查询|导出|报告)/i],
56
+ priority: 90,
57
+ tools: ["evidence_query", "evidence_export"],
58
+ hint: "Evidence graph: query by URL/function/scriptId → get provenance chain → export as JSON or Markdown report"
59
+ },
60
+ registrations: [
61
+ {
62
+ tool: t("evidence_query"),
63
+ domain: DOMAIN,
64
+ bind: b(async (h, a) => h.handleQueryDispatch(a))
65
+ },
66
+ {
67
+ tool: t("evidence_export"),
68
+ domain: DOMAIN,
69
+ bind: b(async (h, a) => h.handleExportDispatch(a))
70
+ },
71
+ {
72
+ tool: t("evidence_chain"),
73
+ domain: DOMAIN,
74
+ bind: b(async (h, a) => h.handleChain(a))
75
+ }
76
+ ]
77
+ };
78
+ //#endregion
79
+ export { manifest as default };
@@ -0,0 +1,45 @@
1
+ import { n as toolLookup } from "./registry-D-6e18lB.mjs";
2
+ import { t as bindByDepKey } from "./bind-helpers-xFfRF-qm.mjs";
3
+ import { t as sourcemapTools } from "./definitions-LKpC3-nL.mjs";
4
+ //#region src/server/domains/sourcemap/manifest.ts
5
+ const DOMAIN = "sourcemap";
6
+ const DEP_KEY = "sourcemapHandlers";
7
+ const t = toolLookup(sourcemapTools);
8
+ const b = (invoke) => bindByDepKey(DEP_KEY, invoke);
9
+ async function ensure(ctx) {
10
+ const { CodeCollector } = await import("./modules-C184v-S9.mjs").then((n) => n.t);
11
+ const { SourcemapToolHandlers } = await import("./sourcemap-Dq8ez8vS.mjs");
12
+ if (!ctx.collector) {
13
+ ctx.collector = new CodeCollector(ctx.config.puppeteer);
14
+ ctx.registerCaches();
15
+ }
16
+ if (!ctx.sourcemapHandlers) ctx.sourcemapHandlers = new SourcemapToolHandlers(ctx.collector);
17
+ return ctx.sourcemapHandlers;
18
+ }
19
+ const manifest = {
20
+ kind: "domain-manifest",
21
+ version: 1,
22
+ domain: DOMAIN,
23
+ depKey: DEP_KEY,
24
+ profiles: ["full"],
25
+ ensure,
26
+ registrations: [
27
+ {
28
+ tool: t("sourcemap_discover"),
29
+ domain: DOMAIN,
30
+ bind: b((h, a) => h.handleSourcemapDiscover(a))
31
+ },
32
+ {
33
+ tool: t("sourcemap_fetch_and_parse"),
34
+ domain: DOMAIN,
35
+ bind: b((h, a) => h.handleSourcemapFetchAndParse(a))
36
+ },
37
+ {
38
+ tool: t("sourcemap_reconstruct_tree"),
39
+ domain: DOMAIN,
40
+ bind: b((h, a) => h.handleSourcemapReconstructTree(a))
41
+ }
42
+ ]
43
+ };
44
+ //#endregion
45
+ export { manifest as default };
@@ -0,0 +1,82 @@
1
+ import { n as toolLookup } from "./registry-D-6e18lB.mjs";
2
+ import { t as bindByDepKey } from "./bind-helpers-xFfRF-qm.mjs";
3
+ import { t as tool } from "./tool-builder-DCbIC5Eo.mjs";
4
+ //#region src/server/domains/mojo-ipc/definitions.ts
5
+ const mojoIpcTools = [
6
+ 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")),
7
+ 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()),
8
+ tool("mojo_list_interfaces", (t) => t.desc("List discovered Mojo IPC interfaces and their pending message counts").query()),
9
+ 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())
10
+ ];
11
+ //#endregion
12
+ //#region src/server/domains/mojo-ipc/manifest.ts
13
+ const DOMAIN = "mojo-ipc";
14
+ const DEP_KEY = "mojoIpcHandlers";
15
+ const toolByName = toolLookup(mojoIpcTools);
16
+ const bind = (invoke) => bindByDepKey(DEP_KEY, invoke);
17
+ async function ensure(ctx) {
18
+ const { MojoIPCHandlers } = await import("./mojo-ipc-B_H61Afw.mjs");
19
+ const existingHandlers = ctx.getDomainInstance(DEP_KEY);
20
+ if (existingHandlers) return existingHandlers;
21
+ const handlers = new MojoIPCHandlers(void 0, void 0, ctx.eventBus);
22
+ ctx.setDomainInstance(DEP_KEY, handlers);
23
+ return handlers;
24
+ }
25
+ const manifest = {
26
+ kind: "domain-manifest",
27
+ version: 1,
28
+ domain: DOMAIN,
29
+ depKey: DEP_KEY,
30
+ profiles: ["full"],
31
+ registrations: [
32
+ {
33
+ tool: toolByName("mojo_monitor"),
34
+ domain: DOMAIN,
35
+ bind: bind((handlers, args) => handlers.handleMojoMonitorDispatch(args))
36
+ },
37
+ {
38
+ tool: toolByName("mojo_decode_message"),
39
+ domain: DOMAIN,
40
+ bind: bind((handlers, args) => handlers.handleMojoDecodeMessage(args))
41
+ },
42
+ {
43
+ tool: toolByName("mojo_list_interfaces"),
44
+ domain: DOMAIN,
45
+ bind: bind((handlers) => handlers.handleMojoListInterfaces())
46
+ },
47
+ {
48
+ tool: toolByName("mojo_messages_get"),
49
+ domain: DOMAIN,
50
+ bind: bind((handlers, args) => handlers.handleMojoMessagesGet(args))
51
+ }
52
+ ],
53
+ ensure,
54
+ workflowRule: {
55
+ patterns: [/\b(mojo|ipc|chromium\s?(ipc|message)|interface\s?(broker|registry))\b/i, /(mojo|ipc|chromium).*(monitor|capture|hook|trace)/i],
56
+ priority: 75,
57
+ tools: [
58
+ "mojo_monitor",
59
+ "mojo_decode_message",
60
+ "mojo_list_interfaces"
61
+ ],
62
+ hint: "Mojo IPC: start monitor → capture messages → decode payloads → correlate with CDP"
63
+ },
64
+ prerequisites: {
65
+ mojo_monitor: [{
66
+ condition: "Frida must be available for real process attachment",
67
+ fix: "Install Frida and ensure the Chromium target process is launched first"
68
+ }],
69
+ mojo_decode_message: [{
70
+ condition: "Captured message payload hex is required",
71
+ fix: "Start a monitoring session via mojo_monitor and capture traffic first"
72
+ }]
73
+ },
74
+ toolDependencies: [{
75
+ from: "browser",
76
+ to: "mojo-ipc",
77
+ relation: "uses",
78
+ weight: .8
79
+ }]
80
+ };
81
+ //#endregion
82
+ export { manifest as default, mojoIpcTools as t };
@@ -0,0 +1,149 @@
1
+ import { n as toolLookup } from "./registry-D-6e18lB.mjs";
2
+ import { t as bindByDepKey } from "./bind-helpers-xFfRF-qm.mjs";
3
+ import { t as tool } from "./tool-builder-DCbIC5Eo.mjs";
4
+ //#region src/server/domains/syscall-hook/definitions.ts
5
+ const BACKEND_OPTIONS = [
6
+ "etw",
7
+ "strace",
8
+ "dtrace"
9
+ ];
10
+ const SYSCALL_EVENT_SCHEMA = {
11
+ type: "object",
12
+ properties: {
13
+ timestamp: {
14
+ type: "number",
15
+ description: "Unix timestamp in milliseconds"
16
+ },
17
+ pid: {
18
+ type: "number",
19
+ description: "Process identifier"
20
+ },
21
+ syscall: {
22
+ type: "string",
23
+ description: "Observed syscall name"
24
+ },
25
+ args: {
26
+ type: "array",
27
+ description: "Stringified syscall arguments",
28
+ items: { type: "string" }
29
+ },
30
+ returnValue: {
31
+ type: "number",
32
+ description: "Numeric syscall return value if available"
33
+ },
34
+ duration: {
35
+ type: "number",
36
+ description: "Execution duration in milliseconds if available"
37
+ }
38
+ },
39
+ required: [
40
+ "timestamp",
41
+ "pid",
42
+ "syscall",
43
+ "args"
44
+ ]
45
+ };
46
+ const syscallHookToolDefinitions = [
47
+ tool("syscall_start_monitor", (t) => t.desc("Start syscall monitoring using ETW, strace, or dtrace.").enum("backend", BACKEND_OPTIONS, "Syscall capture backend").number("pid", "Optional PID to scope monitoring to a single process").required("backend")),
48
+ tool("syscall_stop_monitor", (t) => t.desc("Stop syscall monitoring.").idempotent()),
49
+ tool("syscall_capture_events", (t) => t.desc("Capture syscall events from the active or last monitoring session.").prop("filter", {
50
+ type: "object",
51
+ description: "Optional event filter",
52
+ properties: {
53
+ name: {
54
+ type: "array",
55
+ description: "Restrict events to specific syscall names",
56
+ items: { type: "string" }
57
+ },
58
+ pid: {
59
+ type: "number",
60
+ description: "Restrict events to a specific process ID"
61
+ }
62
+ }
63
+ }).query()),
64
+ tool("syscall_correlate_js", (t) => t.desc("Correlate captured syscalls with likely JavaScript functions.").array("syscallEvents", SYSCALL_EVENT_SCHEMA, "Syscall events to correlate").required("syscallEvents").query()),
65
+ tool("syscall_filter", (t) => t.desc("Filter captured syscall events by syscall name.").array("names", { type: "string" }, "Syscall names to keep").query()),
66
+ tool("syscall_get_stats", (t) => t.desc("Get syscall monitoring statistics.").query())
67
+ ];
68
+ //#endregion
69
+ //#region src/server/domains/syscall-hook/manifest.ts
70
+ const DOMAIN = "syscall-hook";
71
+ const DEP_KEY = "syscallHookHandlers";
72
+ const lookupTool = toolLookup(syscallHookToolDefinitions);
73
+ const bindTool = (invoke) => bindByDepKey(DEP_KEY, invoke);
74
+ async function ensure(ctx) {
75
+ const { SyscallHookHandlers } = await import("./handlers-C67ktuRN.mjs");
76
+ const existing = ctx.getDomainInstance(DEP_KEY);
77
+ if (existing) return existing;
78
+ const handlers = new SyscallHookHandlers(void 0, void 0, ctx.eventBus);
79
+ ctx.setDomainInstance(DEP_KEY, handlers);
80
+ return handlers;
81
+ }
82
+ const manifest = {
83
+ kind: "domain-manifest",
84
+ version: 1,
85
+ domain: DOMAIN,
86
+ depKey: DEP_KEY,
87
+ profiles: ["full"],
88
+ ensure,
89
+ registrations: [
90
+ {
91
+ tool: lookupTool("syscall_start_monitor"),
92
+ domain: DOMAIN,
93
+ bind: bindTool((handlers, args) => handlers.handleSyscallStartMonitor(args))
94
+ },
95
+ {
96
+ tool: lookupTool("syscall_stop_monitor"),
97
+ domain: DOMAIN,
98
+ bind: bindTool((handlers) => handlers.handleSyscallStopMonitor())
99
+ },
100
+ {
101
+ tool: lookupTool("syscall_capture_events"),
102
+ domain: DOMAIN,
103
+ bind: bindTool((handlers, args) => handlers.handleSyscallCaptureEvents(args))
104
+ },
105
+ {
106
+ tool: lookupTool("syscall_correlate_js"),
107
+ domain: DOMAIN,
108
+ bind: bindTool((handlers, args) => handlers.handleSyscallCorrelateJs(args))
109
+ },
110
+ {
111
+ tool: lookupTool("syscall_filter"),
112
+ domain: DOMAIN,
113
+ bind: bindTool((handlers, args) => handlers.handleSyscallFilter(args))
114
+ },
115
+ {
116
+ tool: lookupTool("syscall_get_stats"),
117
+ domain: DOMAIN,
118
+ bind: bindTool((handlers) => handlers.handleSyscallGetStats())
119
+ }
120
+ ],
121
+ workflowRule: {
122
+ patterns: [/\b(syscall|etw|strace|dtrace|kernel|system\s?call)\b/i, /(syscall|kernel).*(trace|monitor|capture|filter)/i],
123
+ priority: 78,
124
+ tools: [
125
+ "syscall_start_monitor",
126
+ "syscall_capture_events",
127
+ "syscall_correlate_js"
128
+ ],
129
+ hint: "Syscall tracing: start monitor (ETW/strace/dtrace) → capture events → correlate with JS stacks."
130
+ },
131
+ prerequisites: {
132
+ syscall_start_monitor: [{
133
+ condition: "Administrator/root privileges required for ETW and dtrace; Linux strace needs ptrace_scope=0",
134
+ fix: "Run the MCP server with elevated privileges, or relax kernel restrictions on Linux"
135
+ }],
136
+ syscall_correlate_js: [{
137
+ condition: "A debugger or v8-inspector session must expose JS stacks",
138
+ fix: "Attach the debugger or v8-inspector domain before correlating"
139
+ }]
140
+ },
141
+ toolDependencies: [{
142
+ from: "memory",
143
+ to: "syscall-hook",
144
+ relation: "uses",
145
+ weight: .5
146
+ }]
147
+ };
148
+ //#endregion
149
+ export { manifest as default };
@@ -0,0 +1,60 @@
1
+ import { n as toolLookup } from "./registry-D-6e18lB.mjs";
2
+ import { t as bindByDepKey } from "./bind-helpers-xFfRF-qm.mjs";
3
+ import { t as coordinationTools } from "./definitions-CkFDALoa.mjs";
4
+ //#region src/server/domains/coordination/manifest.ts
5
+ const DOMAIN = "coordination";
6
+ const DEP_KEY = "coordinationHandlers";
7
+ const t = toolLookup(coordinationTools);
8
+ const b = (invoke) => bindByDepKey(DEP_KEY, invoke);
9
+ async function ensure(ctx) {
10
+ const { CoordinationHandlers } = await import("./coordination-qUbyF8KU.mjs");
11
+ if (!ctx.coordinationHandlers) ctx.coordinationHandlers = new CoordinationHandlers(ctx);
12
+ return ctx.coordinationHandlers;
13
+ }
14
+ const manifest = {
15
+ kind: "domain-manifest",
16
+ version: 1,
17
+ domain: DOMAIN,
18
+ depKey: DEP_KEY,
19
+ profiles: ["full"],
20
+ ensure,
21
+ registrations: [
22
+ {
23
+ tool: t("create_task_handoff"),
24
+ domain: DOMAIN,
25
+ bind: b((h, a) => h.handleCreateTaskHandoff(a))
26
+ },
27
+ {
28
+ tool: t("complete_task_handoff"),
29
+ domain: DOMAIN,
30
+ bind: b((h, a) => h.handleCompleteTaskHandoff(a))
31
+ },
32
+ {
33
+ tool: t("get_task_context"),
34
+ domain: DOMAIN,
35
+ bind: b((h, a) => h.handleGetTaskContext(a))
36
+ },
37
+ {
38
+ tool: t("append_session_insight"),
39
+ domain: DOMAIN,
40
+ bind: b((h, a) => h.handleAppendSessionInsight(a))
41
+ },
42
+ {
43
+ tool: t("save_page_snapshot"),
44
+ domain: DOMAIN,
45
+ bind: b((h, a) => h.handleSavePageSnapshot(a))
46
+ },
47
+ {
48
+ tool: t("restore_page_snapshot"),
49
+ domain: DOMAIN,
50
+ bind: b((h, a) => h.handleRestorePageSnapshot(a))
51
+ },
52
+ {
53
+ tool: t("list_page_snapshots"),
54
+ domain: DOMAIN,
55
+ bind: b((h) => h.handleListPageSnapshots())
56
+ }
57
+ ]
58
+ };
59
+ //#endregion
60
+ export { manifest as default };