@jshookmcp/jshook 0.2.7 → 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-CZ6IveoV.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 +384 -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 +48 -78
  151. package/dist/ExtensionManager-DqUSOamB.mjs +0 -2
  152. package/dist/ToolCatalog-CnwmMIw3.mjs +0 -61483
  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,193 @@
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 advancedTools } from "./definitions-CXEI7QC72.mjs";
4
+ //#region src/server/domains/network/manifest.ts
5
+ const DOMAIN = "network";
6
+ const DEP_KEY = "advancedHandlers";
7
+ const t = toolLookup(advancedTools);
8
+ const b = (invoke) => bindByDepKey(DEP_KEY, invoke);
9
+ async function ensure(ctx) {
10
+ const { AdvancedToolHandlers } = await import("./network-671Cw6hV.mjs");
11
+ await ensureBrowserCore(ctx);
12
+ if (!ctx.advancedHandlers) ctx.advancedHandlers = new AdvancedToolHandlers(ctx.collector, ctx.consoleMonitor, ctx.eventBus);
13
+ return ctx.advancedHandlers;
14
+ }
15
+ const manifest = {
16
+ kind: "domain-manifest",
17
+ version: 1,
18
+ domain: DOMAIN,
19
+ depKey: DEP_KEY,
20
+ profiles: ["workflow", "full"],
21
+ ensure,
22
+ workflowRule: {
23
+ patterns: [/(capture|intercept|monitor|hook).*(network|request|response|api|traffic)/i, /(抓包|拦截|监控|hook).*(网络|请求|响应|api|流量)/i],
24
+ priority: 100,
25
+ tools: [
26
+ "run_extension_workflow",
27
+ "list_extension_workflows",
28
+ "network_monitor",
29
+ "page_navigate",
30
+ "network_get_requests"
31
+ ],
32
+ hint: "Network capture workflow: prefer extension workflows first; otherwise bootstrap browser/page state -> enable capture -> navigate or act -> inspect captured requests"
33
+ },
34
+ prerequisites: {
35
+ network_get_requests: [{
36
+ condition: "Browser must be launched",
37
+ fix: "Call browser_launch or browser_attach first"
38
+ }, {
39
+ condition: "Network monitoring must be enabled",
40
+ fix: "Call network_monitor(enable) first"
41
+ }],
42
+ network_get_response_body: [{
43
+ condition: "Browser must be launched",
44
+ fix: "Call browser_launch or browser_attach first"
45
+ }, {
46
+ condition: "Network monitoring must be enabled",
47
+ fix: "Call network_monitor(enable) first"
48
+ }],
49
+ network_extract_auth: [{
50
+ condition: "Network monitoring must be enabled",
51
+ fix: "Call network_monitor(enable) first"
52
+ }]
53
+ },
54
+ registrations: [
55
+ {
56
+ tool: t("network_enable"),
57
+ domain: DOMAIN,
58
+ bind: b((h, a) => h.handleNetworkEnable(a))
59
+ },
60
+ {
61
+ tool: t("network_disable"),
62
+ domain: DOMAIN,
63
+ bind: b((h, a) => h.handleNetworkDisable(a))
64
+ },
65
+ {
66
+ tool: t("network_get_status"),
67
+ domain: DOMAIN,
68
+ bind: b((h, a) => h.handleNetworkGetStatus(a))
69
+ },
70
+ {
71
+ tool: t("network_monitor"),
72
+ domain: DOMAIN,
73
+ bind: b((h, a) => h.handleNetworkMonitor(a))
74
+ },
75
+ {
76
+ tool: t("network_get_requests"),
77
+ domain: DOMAIN,
78
+ bind: b((h, a) => h.handleNetworkGetRequests(a))
79
+ },
80
+ {
81
+ tool: t("network_get_response_body"),
82
+ domain: DOMAIN,
83
+ bind: b((h, a) => h.handleNetworkGetResponseBody(a))
84
+ },
85
+ {
86
+ tool: t("network_get_stats"),
87
+ domain: DOMAIN,
88
+ bind: b((h, a) => h.handleNetworkGetStats(a))
89
+ },
90
+ {
91
+ tool: t("performance_get_metrics"),
92
+ domain: DOMAIN,
93
+ bind: b((h, a) => h.handlePerformanceGetMetrics(a))
94
+ },
95
+ {
96
+ tool: t("performance_coverage"),
97
+ domain: DOMAIN,
98
+ bind: b((h, a) => h.handlePerformanceCoverage(a))
99
+ },
100
+ {
101
+ tool: t("performance_take_heap_snapshot"),
102
+ domain: DOMAIN,
103
+ bind: b((h, a) => h.handlePerformanceTakeHeapSnapshot(a))
104
+ },
105
+ {
106
+ tool: t("performance_trace"),
107
+ domain: DOMAIN,
108
+ bind: b((h, a) => h.handlePerformanceTraceDispatch(a))
109
+ },
110
+ {
111
+ tool: t("profiler_cpu"),
112
+ domain: DOMAIN,
113
+ bind: b((h, a) => h.handleProfilerCpuDispatch(a))
114
+ },
115
+ {
116
+ tool: t("profiler_heap_sampling"),
117
+ domain: DOMAIN,
118
+ bind: b((h, a) => h.handleProfilerHeapSamplingDispatch(a))
119
+ },
120
+ {
121
+ tool: t("console_get_exceptions"),
122
+ domain: DOMAIN,
123
+ bind: b((h, a) => h.handleConsoleGetExceptions(a))
124
+ },
125
+ {
126
+ tool: t("console_inject"),
127
+ domain: DOMAIN,
128
+ bind: b((h, a) => h.handleConsoleInjectDispatch(a))
129
+ },
130
+ {
131
+ tool: t("console_buffers"),
132
+ domain: DOMAIN,
133
+ bind: b((h, a) => h.handleConsoleBuffersDispatch(a))
134
+ },
135
+ {
136
+ tool: t("http_request_build"),
137
+ domain: DOMAIN,
138
+ bind: b((h, a) => h.handleHttpRequestBuild(a))
139
+ },
140
+ {
141
+ tool: t("http_plain_request"),
142
+ domain: DOMAIN,
143
+ bind: b((h, a) => h.handleHttpPlainRequest(a))
144
+ },
145
+ {
146
+ tool: t("http2_probe"),
147
+ domain: DOMAIN,
148
+ bind: b((h, a) => h.handleHttp2Probe(a))
149
+ },
150
+ {
151
+ tool: t("http2_frame_build"),
152
+ domain: DOMAIN,
153
+ bind: b((h, a) => h.handleHttp2FrameBuild(a))
154
+ },
155
+ {
156
+ tool: t("network_rtt_measure"),
157
+ domain: DOMAIN,
158
+ bind: b((h, a) => h.handleNetworkRttMeasure(a))
159
+ },
160
+ {
161
+ tool: t("network_traceroute"),
162
+ domain: DOMAIN,
163
+ bind: b((h, a) => h.handleNetworkTraceroute(a))
164
+ },
165
+ {
166
+ tool: t("network_icmp_probe"),
167
+ domain: DOMAIN,
168
+ bind: b((h, a) => h.handleNetworkIcmpProbe(a))
169
+ },
170
+ {
171
+ tool: t("network_extract_auth"),
172
+ domain: DOMAIN,
173
+ bind: b((h, a) => h.handleNetworkExtractAuth(a))
174
+ },
175
+ {
176
+ tool: t("network_export_har"),
177
+ domain: DOMAIN,
178
+ bind: b((h, a) => h.handleNetworkExportHar(a))
179
+ },
180
+ {
181
+ tool: t("network_replay_request"),
182
+ domain: DOMAIN,
183
+ bind: b((h, a) => h.handleNetworkReplayRequest(a))
184
+ },
185
+ {
186
+ tool: t("network_intercept"),
187
+ domain: DOMAIN,
188
+ bind: b((h, a) => h.handleNetworkInterceptDispatch(a))
189
+ }
190
+ ]
191
+ };
192
+ //#endregion
193
+ export { manifest as default };
@@ -0,0 +1,253 @@
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/protocol-analysis/definitions.ts
5
+ const protocolAnalysisTools = [
6
+ tool("payload_template_build", (t) => t.desc("Build a binary payload from declarative field definitions.").idempotent()),
7
+ tool("payload_mutate", (t) => t.desc("Apply deterministic byte-level mutations to a hex payload. Useful for protocol probing, boundary testing, and replay preparation.").string("hexPayload", "Source payload as a hex string").array("mutations", {
8
+ type: "object",
9
+ properties: {
10
+ offset: {
11
+ type: "number",
12
+ description: "Zero-based byte offset"
13
+ },
14
+ length: {
15
+ type: "number",
16
+ description: "Mutation length in bytes (default: 1, ignored for replace_hex when valueHex is longer)"
17
+ },
18
+ mode: {
19
+ type: "string",
20
+ enum: [
21
+ "zero",
22
+ "ff",
23
+ "flip_bits",
24
+ "increment_u8",
25
+ "decrement_u8",
26
+ "replace_hex"
27
+ ],
28
+ description: "Mutation strategy"
29
+ },
30
+ valueHex: {
31
+ type: "string",
32
+ description: "Replacement hex bytes for replace_hex mode"
33
+ }
34
+ },
35
+ required: ["offset", "mode"]
36
+ }, "Byte-level mutations to apply in order").required("hexPayload", "mutations")),
37
+ tool("ethernet_frame_build", (t) => t.desc("Build a deterministic Ethernet II frame from source/destination MAC addresses, EtherType, and payload bytes.").string("destinationMac", "Destination MAC address in colon, dash, dotted, or plain hex form").string("sourceMac", "Source MAC address in colon, dash, dotted, or plain hex form").string("etherType", "EtherType name (arp, ipv4, ipv6, vlan) or a 16-bit hex value such as 0800").string("payloadHex", "Frame payload as a hex string").required("destinationMac", "sourceMac", "etherType", "payloadHex").idempotent()),
38
+ tool("arp_build", (t) => t.desc("Build a deterministic ARP payload for Ethernet/IPv4 style address resolution packets.").enum("operation", ["request", "reply"], "ARP operation code", { default: "request" }).string("senderMac", "Sender hardware address").string("senderIp", "Sender IPv4 address").string("targetMac", "Target hardware address (use zeros for requests)", { default: "00:00:00:00:00:00" }).string("targetIp", "Target IPv4 address").number("hardwareType", "Hardware type number. Default: 1 (Ethernet)", { default: 1 }).string("protocolType", "Protocol type name (ipv4) or 16-bit hex value. Default: ipv4", { default: "ipv4" }).number("hardwareSize", "Hardware address size in bytes. Default: 6", { default: 6 }).number("protocolSize", "Protocol address size in bytes. Default: 4", { default: 4 }).required("senderMac", "senderIp", "targetIp").idempotent()),
39
+ tool("raw_ip_packet_build", (t) => t.desc("Build a deterministic raw IPv4 or IPv6 packet header around an existing payload.").string("destinationIp", "Destination IPv4/IPv6 address").string("protocol", "Protocol/next-header name (icmp, tcp, udp, icmpv6) or an 8-bit integer string/hex value").string("payloadHex", "Inner payload as a hex string", { default: "" }).number("ttl", "IPv4 TTL or IPv6 hop limit fallback. Default: 64", { default: 64 }).number("hopLimit", "Explicit IPv6 hop limit override").number("identification", "IPv4 identification field. Default: 0", { default: 0 }).boolean("dontFragment", "Set the IPv4 DF flag", { default: false }).boolean("moreFragments", "Set the IPv4 MF flag", { default: false }).number("fragmentOffset", "IPv4 fragment offset in 8-byte units. Default: 0", { default: 0 }).number("dscp", "IPv4 DSCP or IPv6 traffic-class DSCP value (0-63). Default: 0", { default: 0 }).number("ecn", "IPv4/IPv6 ECN bits (0-3). Default: 0", { default: 0 }).number("flowLabel", "IPv6 flow label (0-1048575). Default: 0", { default: 0 }).required("version", "sourceIp", "destinationIp", "protocol").idempotent()),
40
+ tool("icmp_echo_build", (t) => t.desc("Build a deterministic ICMPv4 echo request or reply payload with an automatically computed checksum.").enum("operation", ["request", "reply"], "ICMP echo operation", { default: "request" }).number("identifier", "ICMP echo identifier field. Default: 0", { default: 0 }).number("sequenceNumber", "ICMP echo sequence number field. Default: 0", { default: 0 }).string("payloadHex", "Optional ICMP payload as a hex string", { default: "" }).idempotent()),
41
+ tool("checksum_apply", (t) => t.desc("Apply a deterministic 16-bit Internet checksum across a payload slice, optionally zeroing and writing the checksum field back into the packet.").string("hexPayload", "Source payload as a hex string").number("startOffset", "Inclusive start offset for checksum range. Default: 0", { default: 0 }).number("endOffset", "Exclusive end offset for checksum range. Default: payload length").number("zeroOffset", "Optional checksum field offset to zero before calculation").number("zeroLength", "Checksum field width in bytes when zeroOffset is set. Default: 2", { default: 2 }).number("writeOffset", "Optional destination offset for writing the computed checksum. Defaults to zeroOffset when provided").enum("endian", ["big", "little"], "Byte order used when writing the checksum back", { default: "big" }).required("hexPayload").idempotent()),
42
+ tool("pcap_write", (t) => t.desc("Write a compact classic PCAP file from deterministic packet byte records.").string("path", "Destination path for the PCAP file").array("packets", {
43
+ type: "object",
44
+ properties: {
45
+ dataHex: {
46
+ type: "string",
47
+ description: "Packet bytes as a hex string"
48
+ },
49
+ timestampSeconds: {
50
+ type: "number",
51
+ description: "Unix timestamp seconds. Defaults to 0 when omitted"
52
+ },
53
+ timestampFraction: {
54
+ type: "number",
55
+ description: "Microsecond or nanosecond fraction depending on timestampPrecision"
56
+ },
57
+ originalLength: {
58
+ type: "number",
59
+ description: "Original on-wire packet length. Defaults to included length"
60
+ }
61
+ },
62
+ required: ["dataHex"]
63
+ }, "Packet records to serialize in order").enum("endianness", ["little", "big"], "PCAP byte order for numeric fields", { default: "little" }).enum("timestampPrecision", ["micro", "nano"], "Timestamp precision marker in the PCAP magic", { default: "micro" }).number("snapLength", "Global snapshot length. Default: 65535", { default: 65535 }).string("linkType", "Link-layer type name (ethernet, raw, loopback) or integer string", { default: "ethernet" }).required("path", "packets").idempotent()),
64
+ tool("pcap_read", (t) => t.desc("Read a classic PCAP file and return compact deterministic packet summaries. PCAPNG is intentionally not supported.").string("path", "Path to the PCAP file to parse").number("maxPackets", "Maximum number of packet records to decode").number("maxBytesPerPacket", "Maximum payload bytes to return per packet before truncating the reported hex payload").required("path").query()),
65
+ tool("proto_define_pattern", (t) => t.desc("Define a protocol pattern with delimiter, byte order, and field layout").string("name", "Pattern name").prop("spec", {
66
+ type: "object",
67
+ description: "Pattern specification object",
68
+ additionalProperties: true
69
+ }).required("name", "spec").idempotent()),
70
+ tool("proto_auto_detect", (t) => t.desc("Auto-detect a protocol pattern from one or more hex payload samples").array("hexPayloads", { type: "string" }, "Hex payload samples").required("hexPayloads").query()),
71
+ tool("proto_export_schema", (t) => t.desc("Export a protocol pattern to a .proto-like schema definition").string("patternId", "Pattern ID to export").required("patternId").query()),
72
+ tool("proto_infer_fields", (t) => t.desc("Infer likely protocol fields from repeated hex payload samples").array("hexPayloads", { type: "string" }, "Hex payload samples").required("hexPayloads").query()),
73
+ tool("proto_infer_state_machine", (t) => t.desc("Infer a protocol state machine from captured message sequences").array("messages", {
74
+ type: "object",
75
+ properties: {
76
+ direction: {
77
+ type: "string",
78
+ enum: ["req", "res"],
79
+ description: "Message direction"
80
+ },
81
+ timestamp: {
82
+ type: "number",
83
+ description: "Message timestamp"
84
+ },
85
+ fields: {
86
+ type: "object",
87
+ description: "Decoded message fields",
88
+ additionalProperties: true
89
+ },
90
+ raw: {
91
+ type: "string",
92
+ description: "Raw message or payload summary"
93
+ }
94
+ },
95
+ required: [
96
+ "direction",
97
+ "timestamp",
98
+ "fields",
99
+ "raw"
100
+ ]
101
+ }, "Captured protocol messages").required("messages").query()),
102
+ tool("proto_visualize_state", (t) => t.desc("Generate a Mermaid state diagram from a protocol state machine definition").prop("stateMachine", {
103
+ type: "object",
104
+ description: "State machine definition with states and transitions",
105
+ additionalProperties: true
106
+ }).query())
107
+ ];
108
+ //#endregion
109
+ //#region src/server/domains/protocol-analysis/manifest.ts
110
+ const DOMAIN = "protocol-analysis";
111
+ const DEP_KEY = "protocolAnalysisHandlers";
112
+ const t = toolLookup(protocolAnalysisTools);
113
+ const b = (invoke) => bindByDepKey(DEP_KEY, invoke);
114
+ async function ensure(ctx) {
115
+ const { ProtocolAnalysisHandlers } = await import("./handlers-D6j6yka7.mjs");
116
+ const existing = ctx.getDomainInstance(DEP_KEY);
117
+ if (existing) return existing;
118
+ const handlers = new ProtocolAnalysisHandlers(void 0, void 0, ctx.eventBus);
119
+ ctx.setDomainInstance(DEP_KEY, handlers);
120
+ return handlers;
121
+ }
122
+ const manifest = {
123
+ kind: "domain-manifest",
124
+ version: 1,
125
+ domain: DOMAIN,
126
+ depKey: DEP_KEY,
127
+ profiles: ["full"],
128
+ ensure,
129
+ registrations: [
130
+ {
131
+ tool: t("proto_define_pattern"),
132
+ domain: DOMAIN,
133
+ bind: b((handlers, args) => handlers.handleDefinePattern(args))
134
+ },
135
+ {
136
+ tool: t("proto_auto_detect"),
137
+ domain: DOMAIN,
138
+ bind: b((handlers, args) => handlers.handleAutoDetect(args))
139
+ },
140
+ {
141
+ tool: t("proto_infer_fields"),
142
+ domain: DOMAIN,
143
+ bind: b((handlers, args) => handlers.handleInferFields(args))
144
+ },
145
+ {
146
+ tool: t("proto_infer_state_machine"),
147
+ domain: DOMAIN,
148
+ bind: b((handlers, args) => handlers.handleInferStateMachine(args))
149
+ },
150
+ {
151
+ tool: t("proto_export_schema"),
152
+ domain: DOMAIN,
153
+ bind: b((handlers, args) => handlers.handleExportSchema(args))
154
+ },
155
+ {
156
+ tool: t("proto_visualize_state"),
157
+ domain: DOMAIN,
158
+ bind: b((handlers, args) => handlers.handleVisualizeState(args))
159
+ },
160
+ {
161
+ tool: t("payload_template_build"),
162
+ domain: DOMAIN,
163
+ bind: b((handlers, args) => handlers.handlePayloadTemplateBuild(args))
164
+ },
165
+ {
166
+ tool: t("payload_mutate"),
167
+ domain: DOMAIN,
168
+ bind: b((handlers, args) => handlers.handlePayloadMutate(args))
169
+ },
170
+ {
171
+ tool: t("ethernet_frame_build"),
172
+ domain: DOMAIN,
173
+ bind: b((handlers, args) => handlers.handleEthernetFrameBuild(args))
174
+ },
175
+ {
176
+ tool: t("arp_build"),
177
+ domain: DOMAIN,
178
+ bind: b((handlers, args) => handlers.handleArpBuild(args))
179
+ },
180
+ {
181
+ tool: t("raw_ip_packet_build"),
182
+ domain: DOMAIN,
183
+ bind: b((handlers, args) => handlers.handleRawIpPacketBuild(args))
184
+ },
185
+ {
186
+ tool: t("icmp_echo_build"),
187
+ domain: DOMAIN,
188
+ bind: b((handlers, args) => handlers.handleIcmpEchoBuild(args))
189
+ },
190
+ {
191
+ tool: t("checksum_apply"),
192
+ domain: DOMAIN,
193
+ bind: b((handlers, args) => handlers.handleChecksumApply(args))
194
+ },
195
+ {
196
+ tool: t("pcap_write"),
197
+ domain: DOMAIN,
198
+ bind: b((handlers, args) => handlers.handlePcapWrite(args))
199
+ },
200
+ {
201
+ tool: t("pcap_read"),
202
+ domain: DOMAIN,
203
+ bind: b((handlers, args) => handlers.handlePcapRead(args))
204
+ }
205
+ ],
206
+ prerequisites: {
207
+ proto_auto_detect: [{
208
+ condition: "At least one hex payload sample is required",
209
+ fix: "Capture traffic using network monitoring tools first"
210
+ }],
211
+ proto_infer_state_machine: [{
212
+ condition: "Multiple message samples are required for state machine inference",
213
+ fix: "Capture message sequences with mojo-ipc or network tools"
214
+ }]
215
+ },
216
+ workflowRule: {
217
+ patterns: [
218
+ /protocol\s+(reverse|analysis|pattern|state\s*machine|schema)/i,
219
+ /custom\s+protocol|binary\s+protocol|wire\s+format/i,
220
+ /infer\s+(protocol|fields|state\s*machine)/i,
221
+ /proto.*export|proto.*schema|proto.*diagram/i,
222
+ /payload\s+(template|build|mutate)|packet\s+(template|mutate)/i,
223
+ /ethernet|arp|ipv4|ipv6|pcap|internet\s+checksum|raw\s+packet/i
224
+ ],
225
+ priority: .6,
226
+ tools: [
227
+ "proto_auto_detect",
228
+ "proto_infer_fields",
229
+ "proto_define_pattern",
230
+ "proto_infer_state_machine",
231
+ "proto_export_schema",
232
+ "proto_visualize_state",
233
+ "payload_template_build",
234
+ "payload_mutate",
235
+ "ethernet_frame_build",
236
+ "arp_build",
237
+ "raw_ip_packet_build",
238
+ "icmp_echo_build",
239
+ "checksum_apply",
240
+ "pcap_write",
241
+ "pcap_read"
242
+ ],
243
+ hint: "Capture or craft packet bytes -> build Ethernet/ARP/IP/ICMP headers -> apply deterministic checksums and payload mutations -> read/write compact PCAP files -> infer fields or state machines from resulting payloads"
244
+ },
245
+ toolDependencies: [{
246
+ from: "network",
247
+ to: "protocol-analysis",
248
+ relation: "uses",
249
+ weight: .7
250
+ }]
251
+ };
252
+ //#endregion
253
+ export { manifest as default };
@@ -0,0 +1,70 @@
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 wasmTools } from "./definitions-Cy3Sl6gV.mjs";
4
+ //#region src/server/domains/wasm/manifest.ts
5
+ const DOMAIN = "wasm";
6
+ const DEP_KEY = "wasmHandlers";
7
+ const t = toolLookup(wasmTools);
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 { WasmToolHandlers } = await import("./wasm-DQTnHDs4.mjs");
12
+ if (!ctx.collector) {
13
+ ctx.collector = new CodeCollector(ctx.config.puppeteer);
14
+ ctx.registerCaches();
15
+ }
16
+ if (!ctx.wasmHandlers) ctx.wasmHandlers = new WasmToolHandlers(ctx.collector);
17
+ return ctx.wasmHandlers;
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("wasm_dump"),
29
+ domain: DOMAIN,
30
+ bind: b((h, a) => h.handleWasmDump(a))
31
+ },
32
+ {
33
+ tool: t("wasm_disassemble"),
34
+ domain: DOMAIN,
35
+ bind: b((h, a) => h.handleWasmDisassemble(a))
36
+ },
37
+ {
38
+ tool: t("wasm_decompile"),
39
+ domain: DOMAIN,
40
+ bind: b((h, a) => h.handleWasmDecompile(a))
41
+ },
42
+ {
43
+ tool: t("wasm_inspect_sections"),
44
+ domain: DOMAIN,
45
+ bind: b((h, a) => h.handleWasmInspectSections(a))
46
+ },
47
+ {
48
+ tool: t("wasm_offline_run"),
49
+ domain: DOMAIN,
50
+ bind: b((h, a) => h.handleWasmOfflineRun(a))
51
+ },
52
+ {
53
+ tool: t("wasm_optimize"),
54
+ domain: DOMAIN,
55
+ bind: b((h, a) => h.handleWasmOptimize(a))
56
+ },
57
+ {
58
+ tool: t("wasm_vmp_trace"),
59
+ domain: DOMAIN,
60
+ bind: b((h, a) => h.handleWasmVmpTrace(a))
61
+ },
62
+ {
63
+ tool: t("wasm_memory_inspect"),
64
+ domain: DOMAIN,
65
+ bind: b((h, a) => h.handleWasmMemoryInspect(a))
66
+ }
67
+ ]
68
+ };
69
+ //#endregion
70
+ export { manifest as default };
@@ -0,0 +1,38 @@
1
+ import { n as toolLookup, t as ensureBrowserCore } from "./registry-D-6e18lB.mjs";
2
+ import { n as getDep, t as bindByDepKey } from "./bind-helpers-xFfRF-qm.mjs";
3
+ import { n as hookPresetTools, t as aiHookTools } from "./definitions-BMfYXoNC.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 b = (invoke) => bindByDepKey(DEP_KEY, invoke);
10
+ async function ensure(ctx) {
11
+ const { AIHookToolHandlers, HookPresetToolHandlers } = await import("./hooks-CzCWByww.mjs");
12
+ await ensureBrowserCore(ctx);
13
+ if (!ctx.aiHookHandlers || !ctx.hookPresetHandlers) {
14
+ if (!ctx.aiHookHandlers) ctx.aiHookHandlers = new AIHookToolHandlers(ctx.pageController);
15
+ if (!ctx.hookPresetHandlers) ctx.hookPresetHandlers = new HookPresetToolHandlers(ctx.pageController);
16
+ }
17
+ return ctx.aiHookHandlers;
18
+ }
19
+ const manifest = {
20
+ kind: "domain-manifest",
21
+ version: 1,
22
+ domain: DOMAIN,
23
+ depKey: DEP_KEY,
24
+ secondaryDepKeys: ["hookPresetHandlers"],
25
+ profiles: ["full"],
26
+ ensure,
27
+ registrations: [{
28
+ tool: t("ai_hook"),
29
+ domain: DOMAIN,
30
+ bind: b((h, a) => h.handleAIHook(a))
31
+ }, {
32
+ tool: t("hook_preset"),
33
+ domain: DOMAIN,
34
+ bind: (deps) => (args) => getDep(deps, DEP_KEY_PRESET).handleHookPreset(args)
35
+ }]
36
+ };
37
+ //#endregion
38
+ export { manifest as default };
@@ -0,0 +1,68 @@
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 workflowToolDefinitions } from "./definitions-Cke7zEb8.mjs";
4
+ //#region src/server/domains/workflow/manifest.ts
5
+ const DOMAIN = "workflow";
6
+ const DEP_KEY = "workflowHandlers";
7
+ const t = toolLookup(workflowToolDefinitions);
8
+ const b = (invoke) => bindByDepKey(DEP_KEY, invoke);
9
+ async function ensure(ctx) {
10
+ const { WorkflowHandlers } = await import("./workflow-f3xJOcjx.mjs");
11
+ await ensureBrowserCore(ctx);
12
+ const browserHandlers = ctx.handlerDeps.browserHandlers;
13
+ const advancedHandlers = ctx.handlerDeps.advancedHandlers;
14
+ if (!ctx.workflowHandlers) ctx.workflowHandlers = new WorkflowHandlers({
15
+ browserHandlers,
16
+ advancedHandlers,
17
+ serverContext: ctx
18
+ });
19
+ return ctx.workflowHandlers;
20
+ }
21
+ const manifest = {
22
+ kind: "domain-manifest",
23
+ version: 1,
24
+ domain: DOMAIN,
25
+ depKey: DEP_KEY,
26
+ profiles: ["workflow", "full"],
27
+ ensure,
28
+ workflowRule: {
29
+ patterns: [/(workflow|extension|run)/i, /(工作流|扩展|运行)/i],
30
+ priority: 95,
31
+ tools: ["run_extension_workflow", "list_extension_workflows"],
32
+ hint: "Extension workflow: list available workflows -> run the best matching workflow"
33
+ },
34
+ registrations: [
35
+ {
36
+ tool: t("page_script_register"),
37
+ domain: DOMAIN,
38
+ bind: b((h, a) => h.handlePageScriptRegister(a))
39
+ },
40
+ {
41
+ tool: t("page_script_run"),
42
+ domain: DOMAIN,
43
+ bind: b((h, a) => h.handlePageScriptRun(a))
44
+ },
45
+ {
46
+ tool: t("api_probe_batch"),
47
+ domain: DOMAIN,
48
+ bind: b((h, a) => h.handleApiProbeBatch(a))
49
+ },
50
+ {
51
+ tool: t("js_bundle_search"),
52
+ domain: DOMAIN,
53
+ bind: b((h, a) => h.handleJsBundleSearch(a))
54
+ },
55
+ {
56
+ tool: t("list_extension_workflows"),
57
+ domain: DOMAIN,
58
+ bind: b((h) => h.handleListExtensionWorkflows())
59
+ },
60
+ {
61
+ tool: t("run_extension_workflow"),
62
+ domain: DOMAIN,
63
+ bind: b((h, a) => h.handleRunExtensionWorkflow(a))
64
+ }
65
+ ]
66
+ };
67
+ //#endregion
68
+ export { manifest as default };