@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.
Files changed (162) hide show
  1. package/README.md +36 -5
  2. package/README.zh.md +36 -5
  3. package/dist/{AntiCheatDetector-S8VRj-dD.mjs → AntiCheatDetector-CqGDXmfc.mjs} +160 -54
  4. package/dist/{CodeInjector-4Z3ngPoX.mjs → CodeInjector-BdjRfNx7.mjs} +5 -5
  5. package/dist/ConsoleMonitor-DykL3IAw.mjs +2269 -0
  6. package/dist/{DarwinAPI-B8hg_yhz.mjs → DarwinAPI-ETyy0xyo.mjs} +1 -1
  7. package/dist/DetailedDataManager-HT49OrvF.mjs +217 -0
  8. package/dist/EventBus-DFKvADm3.mjs +141 -0
  9. package/dist/EvidenceGraphBridge-318Oi0Lf.mjs +153 -0
  10. package/dist/{ExtensionManager-D5-bO9D8.mjs → ExtensionManager-BDMsY2Dz.mjs} +27 -13
  11. package/dist/{FingerprintManager-BVxFJL2-.mjs → FingerprintManager-BN4UQWnX.mjs} +1 -1
  12. package/dist/{HardwareBreakpoint-DK1yjWkV.mjs → HardwareBreakpoint-Cc2AFq1Y.mjs} +3 -3
  13. package/dist/{HeapAnalyzer-CEbo10xU.mjs → HeapAnalyzer-DruMgsgj.mjs} +21 -21
  14. package/dist/HookGeneratorBuilders.core.generators.storage-CTbB4Lcx.mjs +566 -0
  15. package/dist/InstrumentationSession-DLH0vd-z.mjs +244 -0
  16. package/dist/{MemoryController-DdtnBdD4.mjs → MemoryController-CMtviNW_.mjs} +3 -3
  17. package/dist/{MemoryScanSession-RMixN3bX.mjs → MemoryScanSession-ITgb_NMi.mjs} +81 -78
  18. package/dist/{MemoryScanner-QjK4ld0B.mjs → MemoryScanner-CiL7Z3ey.mjs} +50 -21
  19. package/dist/{NativeMemoryManager.impl-CB6gJ0NM.mjs → NativeMemoryManager.impl-D9Lkovvn.mjs} +20 -56
  20. package/dist/{NativeMemoryManager.utils-BML4q1ry.mjs → NativeMemoryManager.utils-BBlAixF5.mjs} +1 -1
  21. package/dist/{PEAnalyzer-CK0xe0Fs.mjs → PEAnalyzer-DMQ44gen.mjs} +16 -16
  22. package/dist/PageController-BPJNqqBN.mjs +431 -0
  23. package/dist/{PointerChainEngine-Cd73qu5b.mjs → PointerChainEngine-K7wN8Z-w.mjs} +10 -7
  24. package/dist/PrerequisiteError-TuyZIs6n.mjs +20 -0
  25. package/dist/ProcessRegistry-zGg12QbE.mjs +74 -0
  26. package/dist/ResponseBuilder-CJXWmWNw.mjs +143 -0
  27. package/dist/ReverseEvidenceGraph-C02-gXOh.mjs +269 -0
  28. package/dist/ScriptManager-ZuWD-0Jg.mjs +3003 -0
  29. package/dist/{Speedhack-CeF0XmEz.mjs → Speedhack-D-z0umeT.mjs} +2 -2
  30. package/dist/{StructureAnalyzer-D4GkMduU.mjs → StructureAnalyzer-Cav5AVSL.mjs} +9 -6
  31. package/dist/ToolCatalog-5OJdMiF0.mjs +582 -0
  32. package/dist/ToolError-jh9whhMd.mjs +15 -0
  33. package/dist/ToolProbe-DbCFGyrg.mjs +45 -0
  34. package/dist/ToolRegistry-B9krbTtI.mjs +180 -0
  35. package/dist/ToolRouter.policy-BGDAGyeH.mjs +344 -0
  36. package/dist/TraceRecorder-B41Z5XBj.mjs +1286 -0
  37. package/dist/{Win32API-Bc0QnQsN.mjs → Win32API-C2kjj0ze.mjs} +19 -13
  38. package/dist/{Win32Debug-DUHt9XUn.mjs → Win32Debug-CKrGOTpo.mjs} +3 -3
  39. package/dist/WorkflowEngine-DJ6M4opp.mjs +569 -0
  40. package/dist/analysis-BHeJW2Nb.mjs +1234 -0
  41. package/dist/antidebug-BRKeyt27.mjs +1081 -0
  42. package/dist/artifactRetention-CPXkUJXp.mjs +598 -0
  43. package/dist/artifacts-DkfosXH3.mjs +59 -0
  44. package/dist/authorization-schema-DRqyJMSk.mjs +31 -0
  45. package/dist/betterSqlite3-DLSBZodi.mjs +74 -0
  46. package/dist/binary-instrument--V3MAhJ4.mjs +971 -0
  47. package/dist/bind-helpers-ClV34xdn.mjs +42 -0
  48. package/dist/boringssl-inspector-Bo_LOLaS.mjs +180 -0
  49. package/dist/browser-Dx3_S2cG.mjs +4369 -0
  50. package/dist/capabilities-CcHlvWgK.mjs +33 -0
  51. package/dist/concurrency-Drev_Vz9.mjs +41 -0
  52. package/dist/{constants-CCvsN80K.mjs → constants-CDZLOoVv.mjs} +105 -48
  53. package/dist/coordination-DgItD9DL.mjs +259 -0
  54. package/dist/debugger-RS3RSAqs.mjs +1288 -0
  55. package/dist/definitions-BEoYofW5.mjs +47 -0
  56. package/dist/definitions-BRaefg3u.mjs +365 -0
  57. package/dist/definitions-BbkvZkiv.mjs +96 -0
  58. package/dist/definitions-BtWSHJ3o.mjs +17 -0
  59. package/dist/definitions-C1gCHO0i.mjs +43 -0
  60. package/dist/definitions-CDOg_b-l.mjs +138 -0
  61. package/dist/definitions-CVPD9hzZ.mjs +54 -0
  62. package/dist/definitions-Cea8Lgl7.mjs +94 -0
  63. package/dist/definitions-DAgIyjxM.mjs +10 -0
  64. package/dist/definitions-DJA27nsL.mjs +66 -0
  65. package/dist/definitions-DKPFU3LW.mjs +25 -0
  66. package/dist/definitions-DPRpZQ96.mjs +47 -0
  67. package/dist/definitions-DUE5gmdn.mjs +18 -0
  68. package/dist/definitions-DYVjOtxa.mjs +26 -0
  69. package/dist/definitions-DcYLVLCo.mjs +37 -0
  70. package/dist/definitions-Pp5LI2H4.mjs +27 -0
  71. package/dist/definitions-j9KdHVNR.mjs +14 -0
  72. package/dist/definitions-uzkjBwa7.mjs +258 -0
  73. package/dist/definitions-va-AnLuQ.mjs +28 -0
  74. package/dist/encoding-DJeqHmpd.mjs +1079 -0
  75. package/dist/evidence-graph-bridge-DcYizFk2.mjs +136 -0
  76. package/dist/{factory-CibqTNC8.mjs → factory-C90tBff6.mjs} +41 -56
  77. package/dist/flat-target-session-Dgax2Cy3.mjs +29 -0
  78. package/dist/graphql-CoHrhweh.mjs +1197 -0
  79. package/dist/handlers-4jmR0nMs.mjs +898 -0
  80. package/dist/handlers-BAHPxcch.mjs +789 -0
  81. package/dist/handlers-BOs9b907.mjs +2600 -0
  82. package/dist/handlers-BWXEy6ef.mjs +917 -0
  83. package/dist/handlers-Bndn6QvE.mjs +111 -0
  84. package/dist/handlers-BqC4bD4s.mjs +681 -0
  85. package/dist/handlers-BtYq60bM2.mjs +276 -0
  86. package/dist/handlers-BzgcB4iv.mjs +799 -0
  87. package/dist/handlers-CRyRWj2b.mjs +859 -0
  88. package/dist/handlers-CVv2H1uq.mjs +592 -0
  89. package/dist/handlers-Dl5a7JS4.mjs +572 -0
  90. package/dist/handlers-Dx2d7jt7.mjs +2537 -0
  91. package/dist/handlers-Dz9PYsCa.mjs +2805 -0
  92. package/dist/handlers-HujRKC3b.mjs +661 -0
  93. package/dist/handlers.impl-XWXkQfyi.mjs +807 -0
  94. package/dist/hooks-B1B8NRHL.mjs +898 -0
  95. package/dist/index.mjs +491 -259
  96. package/dist/{logger-BmWzC2lM.mjs → logger-Dh_xb7_2.mjs} +14 -6
  97. package/dist/maintenance-PRMkLVRW.mjs +835 -0
  98. package/dist/manifest-67Bok-Si.mjs +58 -0
  99. package/dist/manifest-6lNTMZAB2.mjs +87 -0
  100. package/dist/manifest-B2duEHiH.mjs +90 -0
  101. package/dist/manifest-B6EY9Vm8.mjs +57 -0
  102. package/dist/manifest-B6nKSbyY.mjs +95 -0
  103. package/dist/manifest-BL8AQNPF.mjs +106 -0
  104. package/dist/manifest-BSZvJJmV.mjs +47 -0
  105. package/dist/manifest-BU7qzUyX.mjs +418 -0
  106. package/dist/manifest-Bl62e8WK.mjs +49 -0
  107. package/dist/manifest-Bo5cXjdt.mjs +82 -0
  108. package/dist/manifest-BpS4gtUK.mjs +1347 -0
  109. package/dist/manifest-Bv65_e2W.mjs +101 -0
  110. package/dist/manifest-BytNIF4Z.mjs +117 -0
  111. package/dist/manifest-C-xtsjS3.mjs +81 -0
  112. package/dist/manifest-CDYl7OhA.mjs +66 -0
  113. package/dist/manifest-CRZ3xmkD.mjs +61 -0
  114. package/dist/manifest-CoW6u4Tp.mjs +132 -0
  115. package/dist/manifest-Cq5zN_8A.mjs +50 -0
  116. package/dist/manifest-D7YZM_2e.mjs +194 -0
  117. package/dist/manifest-DE_VrAeQ.mjs +314 -0
  118. package/dist/manifest-DGsXSCpT.mjs +39 -0
  119. package/dist/manifest-DJ2vfEuW.mjs +156 -0
  120. package/dist/manifest-DPXDYhEu.mjs +80 -0
  121. package/dist/manifest-Dd4fQb0a.mjs +322 -0
  122. package/dist/manifest-Deq6opGg.mjs +223 -0
  123. package/dist/manifest-DfJTafJK.mjs +37 -0
  124. package/dist/manifest-DgOdgN_j.mjs +50 -0
  125. package/dist/manifest-DlbMW4v4.mjs +47 -0
  126. package/dist/manifest-DmVfbH0w.mjs +374 -0
  127. package/dist/manifest-Dog6Ddjr.mjs +109 -0
  128. package/dist/manifest-DvgU5FWb.mjs +58 -0
  129. package/dist/manifest-HsfDBs7j.mjs +50 -0
  130. package/dist/manifest-I8oQHvCG.mjs +186 -0
  131. package/dist/manifest-NvH_a-av.mjs +786 -0
  132. package/dist/manifest-cEJU1v0Z.mjs +129 -0
  133. package/dist/manifest-wOl5XLB12.mjs +112 -0
  134. package/dist/modules-tZozf0LQ.mjs +10635 -0
  135. package/dist/mojo-ipc-DXNEXEqb.mjs +640 -0
  136. package/dist/network-CPVvwvFg.mjs +3852 -0
  137. package/dist/{artifacts-BbdOMET5.mjs → outputPaths-um7lCRY3.mjs} +219 -216
  138. package/dist/parse-args-B4cY5Vx5.mjs +39 -0
  139. package/dist/platform-CYeFoTWp.mjs +2161 -0
  140. package/dist/process-BTbgcVc6.mjs +1306 -0
  141. package/dist/proxy-r8YN6nP1.mjs +192 -0
  142. package/dist/registry-Bl8ZQW61.mjs +34 -0
  143. package/dist/response-CWhh2aLo.mjs +34 -0
  144. package/dist/server/plugin-api.mjs +2 -2
  145. package/dist/shared-state-board-BoZnSoj-.mjs +586 -0
  146. package/dist/sourcemap-BIDHUVXy.mjs +934 -0
  147. package/dist/ssrf-policy-Dsqd-DTX.mjs +166 -0
  148. package/dist/streaming-Dal6utPp.mjs +725 -0
  149. package/dist/tool-builder-BHJp32mV.mjs +186 -0
  150. package/dist/transform-DRVgGG90.mjs +1011 -0
  151. package/dist/types-Bx92KJfT.mjs +4 -0
  152. package/dist/wasm-BYx5UOeG.mjs +1044 -0
  153. package/dist/webcrack-Be0_FccV.mjs +747 -0
  154. package/dist/workflow-BpuKEtvn.mjs +725 -0
  155. package/package.json +82 -49
  156. package/dist/ExtensionManager-CPTJhHFg.mjs +0 -2
  157. package/dist/ToolCatalog-Bq4V2sbJ.mjs +0 -67201
  158. package/dist/{CacheAdapters-CzFNpD9a.mjs → CacheAdapters-jJFy20G-.mjs} +0 -0
  159. package/dist/{StealthVerifier-BzBCFiwx.mjs → StealthVerifier-BWmPgQsv.mjs} +0 -0
  160. package/dist/{VersionDetector-CNXcvD46.mjs → VersionDetector-K3V4vGsw.mjs} +0 -0
  161. package/dist/{formatAddress-ChCSIRWT.mjs → formatAddress-nnMvEohD.mjs} +0 -0
  162. package/dist/{types-BBjOqye-.mjs → types-DDBWs9UP.mjs} +1 -1
@@ -0,0 +1,101 @@
1
+ import { n as toolLookup } from "./registry-Bl8ZQW61.mjs";
2
+ import { n as defineMethodRegistrations } from "./bind-helpers-ClV34xdn.mjs";
3
+ import { t as processToolDefinitions } from "./definitions-DJA27nsL.mjs";
4
+ //#region src/server/domains/process/manifest.ts
5
+ const DOMAIN = "process";
6
+ const DEP_KEY = "processHandlers";
7
+ const t = toolLookup(processToolDefinitions);
8
+ const EFFECTIVE_PLATFORM = process.env.JSHOOK_REGISTRY_PLATFORM === "win32" || process.env.JSHOOK_REGISTRY_PLATFORM === "linux" || process.env.JSHOOK_REGISTRY_PLATFORM === "darwin" ? process.env.JSHOOK_REGISTRY_PLATFORM : process.platform;
9
+ async function ensure(ctx) {
10
+ const { ProcessToolHandlers } = await import("./process-BTbgcVc6.mjs");
11
+ if (!ctx.processHandlers) ctx.processHandlers = new ProcessToolHandlers();
12
+ return ctx.processHandlers;
13
+ }
14
+ const IS_WIN32 = EFFECTIVE_PLATFORM === "win32";
15
+ const WIN32_ONLY_TOOLS = new Set(["check_debug_port"]);
16
+ const allRegistrations = defineMethodRegistrations({
17
+ domain: DOMAIN,
18
+ depKey: DEP_KEY,
19
+ lookup: t,
20
+ entries: [
21
+ {
22
+ tool: "electron_attach",
23
+ method: "handleElectronAttach"
24
+ },
25
+ {
26
+ tool: "process_windows",
27
+ method: "handleProcessWindows"
28
+ },
29
+ {
30
+ tool: "process_check_debug_port",
31
+ method: "handleProcessCheckDebugPort"
32
+ },
33
+ {
34
+ tool: "process_launch_debug",
35
+ method: "handleProcessLaunchDebug"
36
+ },
37
+ {
38
+ tool: "memory_read",
39
+ method: "handleMemoryRead"
40
+ },
41
+ {
42
+ tool: "memory_write",
43
+ method: "handleMemoryWrite"
44
+ },
45
+ {
46
+ tool: "memory_scan",
47
+ method: "handleMemoryScan"
48
+ },
49
+ {
50
+ tool: "memory_check_protection",
51
+ method: "handleMemoryCheckProtection"
52
+ },
53
+ {
54
+ tool: "memory_scan_filtered",
55
+ method: "handleMemoryScanFiltered"
56
+ },
57
+ {
58
+ tool: "memory_batch_write",
59
+ method: "handleMemoryBatchWrite"
60
+ },
61
+ {
62
+ tool: "memory_dump_region",
63
+ method: "handleMemoryDumpRegion"
64
+ },
65
+ {
66
+ tool: "memory_list_regions",
67
+ method: "handleMemoryListRegions"
68
+ },
69
+ {
70
+ tool: "memory_audit_export",
71
+ method: "handleMemoryAuditExport"
72
+ },
73
+ {
74
+ tool: "inject_dll",
75
+ method: "handleInjectDll"
76
+ },
77
+ {
78
+ tool: "inject_shellcode",
79
+ method: "handleInjectShellcode"
80
+ },
81
+ {
82
+ tool: "check_debug_port",
83
+ method: "handleCheckDebugPort"
84
+ },
85
+ {
86
+ tool: "enumerate_modules",
87
+ method: "handleEnumerateModules"
88
+ }
89
+ ]
90
+ });
91
+ const manifest = {
92
+ kind: "domain-manifest",
93
+ version: 1,
94
+ domain: DOMAIN,
95
+ depKey: DEP_KEY,
96
+ profiles: ["full"],
97
+ ensure,
98
+ registrations: IS_WIN32 ? allRegistrations : allRegistrations.filter((r) => !WIN32_ONLY_TOOLS.has(r.tool.name))
99
+ };
100
+ //#endregion
101
+ export { manifest as default };
@@ -0,0 +1,117 @@
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
+ import { t as networkAuthorizationSchema } from "./authorization-schema-DRqyJMSk.mjs";
5
+ //#region src/server/domains/instrumentation/definitions.ts
6
+ const queryTypes = [
7
+ "before-load-inject",
8
+ "runtime-hook",
9
+ "network-intercept",
10
+ "function-trace"
11
+ ];
12
+ const instrumentationTools = [
13
+ tool("instrumentation_session", (t) => t.desc("Manage instrumentation sessions.").enum("action", [
14
+ "create",
15
+ "list",
16
+ "destroy",
17
+ "status"
18
+ ], "Session operation").string("name", "Optional session name for create").string("sessionId", "Session ID (required for destroy/status)").required("action")),
19
+ tool("instrumentation_operation", (t) => t.desc("Manage operations inside an instrumentation session.").enum("action", ["register", "list"], "Operation").string("sessionId", "Session ID").enum("type", queryTypes, "Instrumentation type (action=register)").string("target", "Function name, URL pattern, or script target (action=register)").object("config", {}, "Operation-specific config (action=register)").required("action", "sessionId")),
20
+ tool("instrumentation_artifact", (t) => t.desc("Manage artifacts captured by instrumentation operations.").enum("action", ["record", "query"], "Artifact operation").string("sessionId", "Session ID").string("operationId", "Operation ID (action=record)").object("data", {}, "Captured artifact payload (action=record)").enum("type", queryTypes, "Optional artifact type filter (action=query)").number("limit", "Max artifacts to return (action=query, default: 50)", { default: 50 }).required("action", "sessionId")),
21
+ tool("instrumentation_hook_preset", (t) => t.desc("Apply hook presets inside an instrumentation session.").string("sessionId", "Session ID").string("preset", "Single preset id to inject").array("presets", { type: "string" }, "Multiple preset ids to inject in one call").boolean("captureStack", "Whether injected presets should capture stack traces", { default: false }).boolean("logToConsole", "Whether injected presets should log to console", { default: true }).enum("method", ["evaluate", "evaluateOnNewDocument"], "Injection method forwarded to hook_preset", { default: "evaluate" }).prop("customTemplate", {
22
+ type: "object",
23
+ additionalProperties: true,
24
+ description: "Optional inline custom preset definition"
25
+ }).prop("customTemplates", {
26
+ type: "array",
27
+ items: {
28
+ type: "object",
29
+ additionalProperties: true
30
+ },
31
+ description: "Optional inline custom preset definitions"
32
+ }).requiredOpenWorld("sessionId")),
33
+ tool("instrumentation_network_replay", (t) => t.desc("Replay a captured network request inside an instrumentation session.").string("sessionId", "Session ID").string("requestId", "Captured request ID returned by network_get_requests").object("headerPatch", { additionalProperties: { type: "string" } }, "Optional request header overrides").string("bodyPatch", "Optional raw request body override").string("methodOverride", "Optional HTTP method override").string("urlOverride", "Optional destination URL override").object("authorization", networkAuthorizationSchema, "Optional request-scoped authorization for private-network or insecure-HTTP replay.").string("authorizationCapability", "Optional base64url-encoded request-scoped authorization capability.").number("timeoutMs", "Optional replay timeout in milliseconds").boolean("dryRun", "Preview the replay without sending the request", { default: true }).requiredOpenWorld("sessionId", "requestId"))
34
+ ];
35
+ //#endregion
36
+ //#region src/server/domains/instrumentation/manifest.ts
37
+ const DOMAIN = "instrumentation";
38
+ const DEP_KEY = "instrumentationHandlers";
39
+ const registrations = defineMethodRegistrations({
40
+ domain: DOMAIN,
41
+ depKey: DEP_KEY,
42
+ lookup: toolLookup(instrumentationTools),
43
+ entries: [
44
+ {
45
+ tool: "instrumentation_session",
46
+ method: "handleSessionDispatch"
47
+ },
48
+ {
49
+ tool: "instrumentation_operation",
50
+ method: "handleOperationDispatch"
51
+ },
52
+ {
53
+ tool: "instrumentation_artifact",
54
+ method: "handleArtifactDispatch"
55
+ },
56
+ {
57
+ tool: "instrumentation_hook_preset",
58
+ method: "handleHookPreset"
59
+ },
60
+ {
61
+ tool: "instrumentation_network_replay",
62
+ method: "handleNetworkReplay"
63
+ }
64
+ ]
65
+ });
66
+ async function ensure(ctx) {
67
+ const { ReverseEvidenceGraph } = await import("./ReverseEvidenceGraph-C02-gXOh.mjs").then((n) => n.t);
68
+ const { InstrumentationSessionManager } = await import("./InstrumentationSession-DLH0vd-z.mjs");
69
+ const { EvidenceGraphBridge } = await import("./EvidenceGraphBridge-318Oi0Lf.mjs");
70
+ const { InstrumentationHandlers } = await import("./handlers-BtYq60bM2.mjs");
71
+ const hookPresetHandlers = ctx.handlerDeps.hookPresetHandlers;
72
+ const advancedHandlers = ctx.handlerDeps.advancedHandlers;
73
+ let graph = ctx.getDomainInstance("evidenceGraph");
74
+ if (!graph) {
75
+ graph = new ReverseEvidenceGraph();
76
+ ctx.setDomainInstance("evidenceGraph", graph);
77
+ }
78
+ let sessionManager = ctx.getDomainInstance("instrumentationSessionManager");
79
+ if (!sessionManager) {
80
+ sessionManager = new InstrumentationSessionManager();
81
+ ctx.setDomainInstance("instrumentationSessionManager", sessionManager);
82
+ }
83
+ let bridge = ctx.getDomainInstance("evidenceGraphBridge");
84
+ if (!bridge) {
85
+ bridge = new EvidenceGraphBridge(graph);
86
+ ctx.setDomainInstance("evidenceGraphBridge", bridge);
87
+ }
88
+ sessionManager.setEvidenceBridge(bridge);
89
+ if (!ctx.instrumentationHandlers) ctx.instrumentationHandlers = new InstrumentationHandlers(sessionManager, {
90
+ hookPresetHandlers,
91
+ advancedHandlers
92
+ });
93
+ return ctx.instrumentationHandlers;
94
+ }
95
+ const manifest = {
96
+ kind: "domain-manifest",
97
+ version: 1,
98
+ domain: DOMAIN,
99
+ depKey: DEP_KEY,
100
+ profiles: ["full"],
101
+ ensure,
102
+ workflowRule: {
103
+ patterns: [/(hook|intercept|trace|instrument).*(session|unified|manage|all)/i, /(session|统一|会话).*(hook|拦截|追踪|仪器化|instrument)/i],
104
+ priority: 95,
105
+ tools: [
106
+ "instrumentation_session",
107
+ "instrumentation_operation",
108
+ "instrumentation_artifact",
109
+ "instrumentation_hook_preset",
110
+ "instrumentation_network_replay"
111
+ ],
112
+ hint: "Instrumentation session: create session → attach hook presets / network replay → record artifacts → query artifacts → destroy when done"
113
+ },
114
+ registrations
115
+ };
116
+ //#endregion
117
+ export { manifest as default };
@@ -0,0 +1,81 @@
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/adb-bridge/definitions.ts
5
+ const adbBridgeTools = [
6
+ tool("adb_apk_analyze", (t) => t.desc("Analyze an installed APK — package name, version, permissions, activities, se...").string("serial", "Required. Android device serial or emulator id.").string("packageName", "Required. Android package name, for example com.example.app.").requiredOpenWorld("serial", "packageName")),
7
+ tool("adb_webview_list", (t) => t.desc("List debuggable WebView targets via ADB port forwarding to Chrome DevTools.").string("serial", "Required. Android device serial or emulator id.").number("hostPort", "Optional. Local port to use for forwarding.", { default: 9222 }).requiredOpenWorld("serial")),
8
+ tool("adb_webview_attach", (t) => t.desc("Attach to a WebView via ADB port forwarding; returns WebSocket debugger URL for CDP.").string("serial", "Required. Android device serial or emulator id.").string("targetId", "Required. WebView target id returned by adb_webview_list.").number("hostPort", "Optional. Local port to use for forwarding.", { default: 9222 }).requiredOpenWorld("serial", "targetId"))
9
+ ];
10
+ //#endregion
11
+ //#region src/server/domains/adb-bridge/manifest.ts
12
+ const DOMAIN = "adb-bridge";
13
+ const DEP_KEY = "adbBridgeHandlers";
14
+ const registrations = defineMethodRegistrations({
15
+ domain: DOMAIN,
16
+ depKey: DEP_KEY,
17
+ lookup: toolLookup(adbBridgeTools),
18
+ entries: [
19
+ {
20
+ tool: "adb_apk_analyze",
21
+ method: "handleAnalyzeApk"
22
+ },
23
+ {
24
+ tool: "adb_webview_list",
25
+ method: "handleWebViewList"
26
+ },
27
+ {
28
+ tool: "adb_webview_attach",
29
+ method: "handleWebViewAttach"
30
+ }
31
+ ]
32
+ });
33
+ async function ensure(ctx) {
34
+ const { ADBBridgeHandlers } = await import("./handlers-Dl5a7JS4.mjs");
35
+ const existingHandlers = ctx.getDomainInstance(DEP_KEY);
36
+ if (existingHandlers) return existingHandlers;
37
+ const handlers = new ADBBridgeHandlers();
38
+ ctx.setDomainInstance(DEP_KEY, handlers);
39
+ return handlers;
40
+ }
41
+ const manifest = {
42
+ kind: "domain-manifest",
43
+ version: 1,
44
+ domain: DOMAIN,
45
+ depKey: DEP_KEY,
46
+ profiles: ["full"],
47
+ registrations,
48
+ ensure,
49
+ workflowRule: {
50
+ patterns: [/(android|adb|mobile|apk|device).*(list|shell|pull|analyze|dump)/i, /(adb|android).*(webview|chrome|debug|cdp|inspect)/i],
51
+ priority: 75,
52
+ tools: [
53
+ "adb_apk_analyze",
54
+ "adb_webview_list",
55
+ "adb_webview_attach"
56
+ ],
57
+ hint: "Android/ADB: list devices → run shell commands → pull/analyze APK → debug WebViews via CDP"
58
+ },
59
+ prerequisites: {
60
+ "*": [{
61
+ condition: "ADB server binary must be in PATH",
62
+ fix: "Install Android Platform Tools: https://developer.android.com/studio/command-line/adb"
63
+ }],
64
+ adb_webview_list: [{
65
+ condition: "App must have android:debuggable=\"true\"",
66
+ fix: "Use a debug build of the Android app"
67
+ }],
68
+ adb_webview_attach: [{
69
+ condition: "App must have android:debuggable=\"true\"",
70
+ fix: "Use a debug build of the Android app"
71
+ }]
72
+ },
73
+ toolDependencies: [{
74
+ from: "browser",
75
+ to: "adb-bridge",
76
+ relation: "uses",
77
+ weight: .7
78
+ }]
79
+ };
80
+ //#endregion
81
+ export { manifest as default };
@@ -0,0 +1,66 @@
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 workflowToolDefinitions } from "./definitions-Cea8Lgl7.mjs";
4
+ //#region src/server/domains/workflow/manifest.ts
5
+ const DOMAIN = "workflow";
6
+ const DEP_KEY = "workflowHandlers";
7
+ const registrations = defineMethodRegistrations({
8
+ domain: DOMAIN,
9
+ depKey: DEP_KEY,
10
+ lookup: toolLookup(workflowToolDefinitions),
11
+ entries: [
12
+ {
13
+ tool: "page_script_register",
14
+ method: "handlePageScriptRegister"
15
+ },
16
+ {
17
+ tool: "page_script_run",
18
+ method: "handlePageScriptRun"
19
+ },
20
+ {
21
+ tool: "api_probe_batch",
22
+ method: "handleApiProbeBatch"
23
+ },
24
+ {
25
+ tool: "js_bundle_search",
26
+ method: "handleJsBundleSearch"
27
+ },
28
+ {
29
+ tool: "list_extension_workflows",
30
+ method: "handleListExtensionWorkflows"
31
+ },
32
+ {
33
+ tool: "run_extension_workflow",
34
+ method: "handleRunExtensionWorkflow"
35
+ }
36
+ ]
37
+ });
38
+ async function ensure(ctx) {
39
+ const { WorkflowHandlers } = await import("./workflow-BpuKEtvn.mjs");
40
+ await ensureBrowserCore(ctx);
41
+ const browserHandlers = ctx.handlerDeps.browserHandlers;
42
+ const advancedHandlers = ctx.handlerDeps.advancedHandlers;
43
+ if (!ctx.workflowHandlers) ctx.workflowHandlers = new WorkflowHandlers({
44
+ browserHandlers,
45
+ advancedHandlers,
46
+ serverContext: ctx
47
+ });
48
+ return ctx.workflowHandlers;
49
+ }
50
+ const manifest = {
51
+ kind: "domain-manifest",
52
+ version: 1,
53
+ domain: DOMAIN,
54
+ depKey: DEP_KEY,
55
+ profiles: ["workflow", "full"],
56
+ ensure,
57
+ workflowRule: {
58
+ patterns: [/(workflow|extension|run)/i, /(工作流|扩展|运行)/i],
59
+ priority: 95,
60
+ tools: ["run_extension_workflow", "list_extension_workflows"],
61
+ hint: "Extension workflow: list available workflows -> run the best matching workflow"
62
+ },
63
+ registrations
64
+ };
65
+ //#endregion
66
+ export { manifest as default };
@@ -0,0 +1,61 @@
1
+ import { n as toolLookup } from "./registry-Bl8ZQW61.mjs";
2
+ import { n as defineMethodRegistrations } from "./bind-helpers-ClV34xdn.mjs";
3
+ import { t as PROXY_TOOLS } from "./definitions-j9KdHVNR.mjs";
4
+ //#region src/server/domains/proxy/manifest.ts
5
+ const DOMAIN = "proxy";
6
+ const DEP_KEY = "proxyHandlers";
7
+ const registrations = defineMethodRegistrations({
8
+ domain: DOMAIN,
9
+ depKey: DEP_KEY,
10
+ lookup: toolLookup(PROXY_TOOLS),
11
+ entries: [
12
+ {
13
+ tool: "proxy_start",
14
+ method: "handleProxyStart"
15
+ },
16
+ {
17
+ tool: "proxy_stop",
18
+ method: "handleProxyStop"
19
+ },
20
+ {
21
+ tool: "proxy_status",
22
+ method: "handleProxyStatus"
23
+ },
24
+ {
25
+ tool: "proxy_export_ca",
26
+ method: "handleProxyExportCa"
27
+ },
28
+ {
29
+ tool: "proxy_add_rule",
30
+ method: "handleProxyAddRule"
31
+ },
32
+ {
33
+ tool: "proxy_get_requests",
34
+ method: "handleProxyGetRequests"
35
+ },
36
+ {
37
+ tool: "proxy_clear_logs",
38
+ method: "handleProxyClearLogs"
39
+ },
40
+ {
41
+ tool: "proxy_setup_adb_device",
42
+ method: "handleProxySetupAdbDevice"
43
+ }
44
+ ]
45
+ });
46
+ async function ensure(ctx) {
47
+ const { ProxyHandlers } = await import("./proxy-r8YN6nP1.mjs");
48
+ if (!ctx.proxyHandlers) ctx.proxyHandlers = new ProxyHandlers();
49
+ return ctx.proxyHandlers;
50
+ }
51
+ const manifest = {
52
+ kind: "domain-manifest",
53
+ version: 1,
54
+ domain: DOMAIN,
55
+ depKey: DEP_KEY,
56
+ profiles: ["full"],
57
+ ensure,
58
+ registrations
59
+ };
60
+ //#endregion
61
+ export { manifest as default };
@@ -0,0 +1,132 @@
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/trace/definitions.tools.ts
5
+ const TRACE_TOOLS = [
6
+ tool("trace_recording", (t) => t.desc("Start or stop trace recording into a SQLite database.").enum("action", ["start", "stop"], "Recording action").array("cdpDomains", { type: "string" }, "CDP domains to record (default: Debugger, Runtime, Network, Page)").boolean("recordMemoryDeltas", "Record memory write deltas", { default: true }).boolean("recordResponseBodies", "Persist response bodies when available.", { default: true }).boolean("streamResponseChunks", "Capture response chunks when the browser supports it.", { default: true }).number("networkBodyMaxBytes", "Maximum response body bytes to persist per request", {
7
+ default: 10485760,
8
+ minimum: 1024,
9
+ maximum: 104857600
10
+ }).number("networkInlineBodyBytes", "Bodies up to this size are stored inline in SQLite; larger ones go to artifacts", {
11
+ default: 262144,
12
+ minimum: 1024,
13
+ maximum: 10485760
14
+ }).required("action").idempotent()),
15
+ tool("start_trace_recording", (t) => t.desc("Start trace recording into a SQLite database.").array("cdpDomains", { type: "string" }, "CDP domains to record (default: Debugger, Runtime, Network, Page)").boolean("recordMemoryDeltas", "Record memory write deltas", { default: true }).boolean("recordResponseBodies", "Persist response bodies when available.", { default: true }).boolean("streamResponseChunks", "Capture response chunks when the browser supports it.", { default: true }).number("networkBodyMaxBytes", "Maximum response body bytes to persist per request", {
16
+ default: 10485760,
17
+ minimum: 1024,
18
+ maximum: 104857600
19
+ }).number("networkInlineBodyBytes", "Bodies up to this size are stored inline in SQLite; larger ones go to artifacts", {
20
+ default: 262144,
21
+ minimum: 1024,
22
+ maximum: 10485760
23
+ }).idempotent()),
24
+ tool("stop_trace_recording", (t) => t.desc("Stop trace recording and return the final session summary.").idempotent()),
25
+ tool("query_trace_sql", (t) => t.desc("Execute a read-only SQL query against a trace database.").string("sql", "SQL query to execute (SELECT only — write operations are rejected)").string("dbPath", "Path to trace DB file. Uses the active recording if omitted.").required("sql").query()),
26
+ tool("seek_to_timestamp", (t) => t.desc("Reconstruct trace state at a specific timestamp.").number("timestamp", "Target timestamp in milliseconds").string("dbPath", "Path to trace DB file. Uses the active recording if omitted.").number("windowMs", "Time window around timestamp to include in ms", { default: 100 }).enum("timeDomain", ["wall", "monotonic"], "Interpret timestamp using wall or monotonic time", { default: "wall" }).required("timestamp").query()),
27
+ tool("trace_get_network_flow", (t) => t.desc("Get a recorded request-scoped network flow from a trace.").string("requestId", "Network requestId to retrieve from the trace").string("dbPath", "Path to trace DB file. Uses the active recording if omitted.").boolean("includeBody", "Include persisted response body metadata/content when available", { default: true }).boolean("includeChunks", "Include recorded response chunk timing data", { default: true }).boolean("includeEvents", "Include related network events from the trace", { default: true }).number("chunkLimit", "Maximum number of chunks to return", {
28
+ default: 200,
29
+ minimum: 1,
30
+ maximum: 5e3
31
+ }).number("maxBodyBytes", "Maximum response body bytes to inline before summarizing", {
32
+ default: 1e5,
33
+ minimum: 1024,
34
+ maximum: 52428800
35
+ }).boolean("returnSummary", "Return body summary even when body is within maxBodyBytes", { default: false }).required("requestId").query()),
36
+ tool("diff_heap_snapshots", (t) => t.desc("Compare two heap snapshots from a trace.").number("snapshotId1", "First snapshot ID (earlier)").number("snapshotId2", "Second snapshot ID (later)").string("dbPath", "Path to trace DB file. Uses the active recording if omitted.").required("snapshotId1", "snapshotId2").query()),
37
+ tool("export_trace", (t) => t.desc("Export a trace database to Chrome Trace Event JSON.").string("dbPath", "Path to trace DB file. Uses the active recording if omitted.").string("outputPath", "Output JSON file path. Auto-generated if omitted.").idempotent()),
38
+ tool("summarize_trace", (t) => t.desc("Generate a compact summary of a trace database.").enum("detail", [
39
+ "compact",
40
+ "balanced",
41
+ "full"
42
+ ], "Summary detail level", { default: "balanced" }).string("dbPath", "Path to trace DB file. Uses the active recording if omitted.").query())
43
+ ];
44
+ //#endregion
45
+ //#region src/server/domains/trace/manifest.ts
46
+ const DOMAIN = "trace";
47
+ const DEP_KEY = "traceHandlers";
48
+ const registrations = defineMethodRegistrations({
49
+ domain: DOMAIN,
50
+ depKey: DEP_KEY,
51
+ lookup: toolLookup(TRACE_TOOLS),
52
+ entries: [
53
+ {
54
+ tool: "trace_recording",
55
+ method: "handleTraceRecording"
56
+ },
57
+ {
58
+ tool: "start_trace_recording",
59
+ method: "handleStartTraceRecording"
60
+ },
61
+ {
62
+ tool: "stop_trace_recording",
63
+ method: "handleStopTraceRecording"
64
+ },
65
+ {
66
+ tool: "query_trace_sql",
67
+ method: "handleQueryTraceSql"
68
+ },
69
+ {
70
+ tool: "seek_to_timestamp",
71
+ method: "handleSeekToTimestamp"
72
+ },
73
+ {
74
+ tool: "trace_get_network_flow",
75
+ method: "handleGetTraceNetworkFlow"
76
+ },
77
+ {
78
+ tool: "diff_heap_snapshots",
79
+ method: "handleDiffHeapSnapshots"
80
+ },
81
+ {
82
+ tool: "export_trace",
83
+ method: "handleExportTrace"
84
+ },
85
+ {
86
+ tool: "summarize_trace",
87
+ method: "handleSummarizeTrace"
88
+ }
89
+ ]
90
+ });
91
+ async function ensure(ctx) {
92
+ const { TraceRecorder } = await import("./TraceRecorder-B41Z5XBj.mjs");
93
+ const { TraceToolHandlers } = await import("./handlers-HujRKC3b.mjs");
94
+ if (!ctx.traceRecorder || !ctx.traceHandlers) {
95
+ if (!ctx.traceRecorder) ctx.traceRecorder = new TraceRecorder();
96
+ if (!ctx.traceHandlers) ctx.traceHandlers = new TraceToolHandlers(ctx.traceRecorder, ctx);
97
+ }
98
+ return ctx.traceHandlers;
99
+ }
100
+ const manifest = {
101
+ kind: "domain-manifest",
102
+ version: 1,
103
+ domain: DOMAIN,
104
+ depKey: DEP_KEY,
105
+ profiles: ["full"],
106
+ ensure,
107
+ prerequisites: {},
108
+ workflowRule: {
109
+ patterns: [
110
+ /trace/i,
111
+ /time.?travel/i,
112
+ /replay/i,
113
+ /recorded?\s+events?/i
114
+ ],
115
+ priority: 70,
116
+ tools: [
117
+ "trace_recording",
118
+ "start_trace_recording",
119
+ "stop_trace_recording",
120
+ "query_trace_sql",
121
+ "seek_to_timestamp",
122
+ "trace_get_network_flow",
123
+ "diff_heap_snapshots",
124
+ "export_trace",
125
+ "summarize_trace"
126
+ ],
127
+ hint: "Start recording → perform actions → stop recording → summarize/query/seek/diff/export"
128
+ },
129
+ registrations
130
+ };
131
+ //#endregion
132
+ export { manifest as default };
@@ -0,0 +1,50 @@
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 encodingTools } from "./definitions-DPRpZQ96.mjs";
4
+ //#region src/server/domains/encoding/manifest.ts
5
+ const DOMAIN = "encoding";
6
+ const DEP_KEY = "encodingHandlers";
7
+ const registrations = defineMethodRegistrations({
8
+ domain: DOMAIN,
9
+ depKey: DEP_KEY,
10
+ lookup: toolLookup(encodingTools),
11
+ entries: [
12
+ {
13
+ tool: "binary_detect_format",
14
+ method: "handleBinaryDetectFormat"
15
+ },
16
+ {
17
+ tool: "binary_decode",
18
+ method: "handleBinaryDecode"
19
+ },
20
+ {
21
+ tool: "binary_encode",
22
+ method: "handleBinaryEncode"
23
+ },
24
+ {
25
+ tool: "binary_entropy_analysis",
26
+ method: "handleBinaryEntropyAnalysis"
27
+ },
28
+ {
29
+ tool: "protobuf_decode_raw",
30
+ method: "handleProtobufDecodeRaw"
31
+ }
32
+ ]
33
+ });
34
+ async function ensure(ctx) {
35
+ const { EncodingToolHandlers } = await import("./encoding-DJeqHmpd.mjs");
36
+ await ensureBrowserCore(ctx);
37
+ if (!ctx.encodingHandlers) ctx.encodingHandlers = new EncodingToolHandlers(ctx.collector, async (requestId) => ctx.consoleMonitor?.getResponseBody(requestId) ?? null);
38
+ return ctx.encodingHandlers;
39
+ }
40
+ const manifest = {
41
+ kind: "domain-manifest",
42
+ version: 1,
43
+ domain: DOMAIN,
44
+ depKey: DEP_KEY,
45
+ profiles: ["workflow", "full"],
46
+ ensure,
47
+ registrations
48
+ };
49
+ //#endregion
50
+ export { manifest as default };