mcp-xray-pilot 0.10.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 (153) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +502 -0
  3. package/data/docs/_index.json +533 -0
  4. package/data/docs/basic__api.md +148 -0
  5. package/data/docs/basic__dns.md +366 -0
  6. package/data/docs/basic__fakedns.md +202 -0
  7. package/data/docs/basic__geodata.md +64 -0
  8. package/data/docs/basic__inbound.md +159 -0
  9. package/data/docs/basic__index.md +136 -0
  10. package/data/docs/basic__log.md +67 -0
  11. package/data/docs/basic__metrics.md +262 -0
  12. package/data/docs/basic__observatory.md +115 -0
  13. package/data/docs/basic__outbound.md +164 -0
  14. package/data/docs/basic__policy.md +140 -0
  15. package/data/docs/basic__reverse.md +268 -0
  16. package/data/docs/basic__routing.md +474 -0
  17. package/data/docs/basic__stats.md +61 -0
  18. package/data/docs/basic__transport.md +1283 -0
  19. package/data/docs/features__features_browser_dialer.md +61 -0
  20. package/data/docs/features__features_env.md +66 -0
  21. package/data/docs/features__features_fallback.md +110 -0
  22. package/data/docs/features__features_index.md +17 -0
  23. package/data/docs/features__features_multiple.md +144 -0
  24. package/data/docs/features__features_xtls.md +13 -0
  25. package/data/docs/inbounds__inbounds_dokodemo.md +11 -0
  26. package/data/docs/inbounds__inbounds_http.md +80 -0
  27. package/data/docs/inbounds__inbounds_hysteria.md +60 -0
  28. package/data/docs/inbounds__inbounds_index.md +22 -0
  29. package/data/docs/inbounds__inbounds_shadowsocks.md +118 -0
  30. package/data/docs/inbounds__inbounds_socks.md +87 -0
  31. package/data/docs/inbounds__inbounds_trojan.md +78 -0
  32. package/data/docs/inbounds__inbounds_tun.md +47 -0
  33. package/data/docs/inbounds__inbounds_tunnel.md +86 -0
  34. package/data/docs/inbounds__inbounds_vless.md +135 -0
  35. package/data/docs/inbounds__inbounds_vmess.md +95 -0
  36. package/data/docs/inbounds__inbounds_wireguard.md +78 -0
  37. package/data/docs/outbounds__outbounds_blackhole.md +42 -0
  38. package/data/docs/outbounds__outbounds_dns.md +97 -0
  39. package/data/docs/outbounds__outbounds_freedom.md +170 -0
  40. package/data/docs/outbounds__outbounds_http.md +70 -0
  41. package/data/docs/outbounds__outbounds_hysteria.md +39 -0
  42. package/data/docs/outbounds__outbounds_index.md +24 -0
  43. package/data/docs/outbounds__outbounds_loopback.md +65 -0
  44. package/data/docs/outbounds__outbounds_shadowsocks.md +105 -0
  45. package/data/docs/outbounds__outbounds_socks.md +58 -0
  46. package/data/docs/outbounds__outbounds_trojan.md +49 -0
  47. package/data/docs/outbounds__outbounds_vless.md +122 -0
  48. package/data/docs/outbounds__outbounds_vmess.md +76 -0
  49. package/data/docs/outbounds__outbounds_wireguard.md +141 -0
  50. package/data/docs/transports__transports_grpc.md +137 -0
  51. package/data/docs/transports__transports_h2.md +11 -0
  52. package/data/docs/transports__transports_http.md +11 -0
  53. package/data/docs/transports__transports_httpupgrade.md +61 -0
  54. package/data/docs/transports__transports_hysteria.md +110 -0
  55. package/data/docs/transports__transports_index.md +19 -0
  56. package/data/docs/transports__transports_mkcp.md +125 -0
  57. package/data/docs/transports__transports_quic.md +11 -0
  58. package/data/docs/transports__transports_raw.md +156 -0
  59. package/data/docs/transports__transports_splithttp.md +11 -0
  60. package/data/docs/transports__transports_tcp.md +11 -0
  61. package/data/docs/transports__transports_websocket.md +75 -0
  62. package/data/docs/transports__transports_xhttp.md +11 -0
  63. package/dist/data/compatibility.js +170 -0
  64. package/dist/data/compatibility.js.map +1 -0
  65. package/dist/data/geocatalogue.js +191 -0
  66. package/dist/data/geocatalogue.js.map +1 -0
  67. package/dist/docs.js +339 -0
  68. package/dist/docs.js.map +1 -0
  69. package/dist/handlers.js +217 -0
  70. package/dist/handlers.js.map +1 -0
  71. package/dist/index.js +66 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/lint.js +737 -0
  74. package/dist/lint.js.map +1 -0
  75. package/dist/schemas/protocols/blackhole.js +16 -0
  76. package/dist/schemas/protocols/blackhole.js.map +1 -0
  77. package/dist/schemas/protocols/common.js +32 -0
  78. package/dist/schemas/protocols/common.js.map +1 -0
  79. package/dist/schemas/protocols/dns.js +14 -0
  80. package/dist/schemas/protocols/dns.js.map +1 -0
  81. package/dist/schemas/protocols/dokodemo.js +17 -0
  82. package/dist/schemas/protocols/dokodemo.js.map +1 -0
  83. package/dist/schemas/protocols/freedom.js +45 -0
  84. package/dist/schemas/protocols/freedom.js.map +1 -0
  85. package/dist/schemas/protocols/http.js +38 -0
  86. package/dist/schemas/protocols/http.js.map +1 -0
  87. package/dist/schemas/protocols/hysteria.js +51 -0
  88. package/dist/schemas/protocols/hysteria.js.map +1 -0
  89. package/dist/schemas/protocols/index.js +50 -0
  90. package/dist/schemas/protocols/index.js.map +1 -0
  91. package/dist/schemas/protocols/loopback.js +11 -0
  92. package/dist/schemas/protocols/loopback.js.map +1 -0
  93. package/dist/schemas/protocols/shadowsocks.js +60 -0
  94. package/dist/schemas/protocols/shadowsocks.js.map +1 -0
  95. package/dist/schemas/protocols/socks.js +42 -0
  96. package/dist/schemas/protocols/socks.js.map +1 -0
  97. package/dist/schemas/protocols/trojan.js +34 -0
  98. package/dist/schemas/protocols/trojan.js.map +1 -0
  99. package/dist/schemas/protocols/tun.js +19 -0
  100. package/dist/schemas/protocols/tun.js.map +1 -0
  101. package/dist/schemas/protocols/vless.js +44 -0
  102. package/dist/schemas/protocols/vless.js.map +1 -0
  103. package/dist/schemas/protocols/vmess.js +48 -0
  104. package/dist/schemas/protocols/vmess.js.map +1 -0
  105. package/dist/schemas/protocols/wireguard.js +34 -0
  106. package/dist/schemas/protocols/wireguard.js.map +1 -0
  107. package/dist/schemas/security/index.js +16 -0
  108. package/dist/schemas/security/index.js.map +1 -0
  109. package/dist/schemas/security/reality.js +35 -0
  110. package/dist/schemas/security/reality.js.map +1 -0
  111. package/dist/schemas/security/tls.js +46 -0
  112. package/dist/schemas/security/tls.js.map +1 -0
  113. package/dist/schemas/security/xtls.js +17 -0
  114. package/dist/schemas/security/xtls.js.map +1 -0
  115. package/dist/schemas/transports/grpc.js +18 -0
  116. package/dist/schemas/transports/grpc.js.map +1 -0
  117. package/dist/schemas/transports/httpupgrade.js +14 -0
  118. package/dist/schemas/transports/httpupgrade.js.map +1 -0
  119. package/dist/schemas/transports/hysteria.js +25 -0
  120. package/dist/schemas/transports/hysteria.js.map +1 -0
  121. package/dist/schemas/transports/index.js +32 -0
  122. package/dist/schemas/transports/index.js.map +1 -0
  123. package/dist/schemas/transports/mkcp.js +34 -0
  124. package/dist/schemas/transports/mkcp.js.map +1 -0
  125. package/dist/schemas/transports/raw.js +19 -0
  126. package/dist/schemas/transports/raw.js.map +1 -0
  127. package/dist/schemas/transports/websocket.js +15 -0
  128. package/dist/schemas/transports/websocket.js.map +1 -0
  129. package/dist/schemas/transports/xhttp.js +34 -0
  130. package/dist/schemas/transports/xhttp.js.map +1 -0
  131. package/dist/search.js +78 -0
  132. package/dist/search.js.map +1 -0
  133. package/dist/state.js +87 -0
  134. package/dist/state.js.map +1 -0
  135. package/dist/tools.js +274 -0
  136. package/dist/tools.js.map +1 -0
  137. package/dist/tools_impl/diff.js +55 -0
  138. package/dist/tools_impl/diff.js.map +1 -0
  139. package/dist/tools_impl/github.js +416 -0
  140. package/dist/tools_impl/github.js.map +1 -0
  141. package/dist/tools_impl/merge.js +181 -0
  142. package/dist/tools_impl/merge.js.map +1 -0
  143. package/dist/tools_impl/refresh.js +46 -0
  144. package/dist/tools_impl/refresh.js.map +1 -0
  145. package/dist/tools_impl/suggest.js +169 -0
  146. package/dist/tools_impl/suggest.js.map +1 -0
  147. package/dist/types.js +10 -0
  148. package/dist/types.js.map +1 -0
  149. package/dist/utils.js +81 -0
  150. package/dist/utils.js.map +1 -0
  151. package/dist/validate.js +408 -0
  152. package/dist/validate.js.map +1 -0
  153. package/package.json +62 -0
@@ -0,0 +1,408 @@
1
+ /*
2
+ * Structural validator for xray-core configs.
3
+ *
4
+ * v0.2+ scope:
5
+ * - JSON parse safety
6
+ * - Top-level shape: at minimum `inbounds[]` AND `outbounds[]` must exist
7
+ * - Each inbound/outbound has `tag` and a known `protocol`
8
+ * - Per-protocol Zod schema for `settings`
9
+ * - streamSettings.network and matching *Settings block via Zod
10
+ * - streamSettings.security ("tls" / "reality") *Settings via Zod
11
+ * - Cross-network and cross-security leftover *Settings warning
12
+ * - All routing.rules tag references resolve to existing inbound/outbound tags
13
+ * - Basic type sanity for `port`, `listen`
14
+ */
15
+ import { inboundProtocolSchemas, outboundProtocolSchemas, } from "./schemas/protocols/index.js";
16
+ import { allSettingsKeys, transportByNetwork, } from "./schemas/transports/index.js";
17
+ import { allSecuritySettingsKeys, securityByName, } from "./schemas/security/index.js";
18
+ const KNOWN_INBOUND_PROTOCOLS = new Set([
19
+ "vless",
20
+ "vmess",
21
+ "trojan",
22
+ "shadowsocks",
23
+ "socks",
24
+ "http",
25
+ "wireguard",
26
+ "hysteria2",
27
+ "hysteria",
28
+ "tunnel",
29
+ "dokodemo-door",
30
+ "tun",
31
+ ]);
32
+ const KNOWN_OUTBOUND_PROTOCOLS = new Set([
33
+ "vless",
34
+ "vmess",
35
+ "trojan",
36
+ "shadowsocks",
37
+ "socks",
38
+ "http",
39
+ "wireguard",
40
+ "hysteria2",
41
+ "hysteria",
42
+ "freedom",
43
+ "blackhole",
44
+ "loopback",
45
+ "dns",
46
+ ]);
47
+ function isObject(x) {
48
+ return typeof x === "object" && x !== null && !Array.isArray(x);
49
+ }
50
+ function zodPath(issue) {
51
+ if (!issue.path.length)
52
+ return "";
53
+ return "/" + issue.path.map(String).join("/");
54
+ }
55
+ function pushZodIssues(issues, basePath, zodIssues, idPrefix) {
56
+ for (const z of zodIssues) {
57
+ issues.push({
58
+ id: `${idPrefix}_${z.code}`,
59
+ severity: "error",
60
+ message: z.message,
61
+ where: basePath + zodPath(z),
62
+ });
63
+ }
64
+ }
65
+ export function validateConfig(jsonText) {
66
+ const issues = [];
67
+ let parsed;
68
+ try {
69
+ parsed = JSON.parse(jsonText);
70
+ }
71
+ catch (err) {
72
+ issues.push({
73
+ id: "bad_json",
74
+ severity: "error",
75
+ message: `Config is not valid JSON: ${err.message}`,
76
+ });
77
+ return { ok: false, parsed: null, issues };
78
+ }
79
+ if (!isObject(parsed)) {
80
+ issues.push({
81
+ id: "not_object",
82
+ severity: "error",
83
+ message: "Top-level must be a JSON object.",
84
+ where: "/",
85
+ });
86
+ return { ok: false, parsed, issues };
87
+ }
88
+ const inbounds = parsed["inbounds"];
89
+ const outbounds = parsed["outbounds"];
90
+ if (!Array.isArray(inbounds) || inbounds.length === 0) {
91
+ issues.push({
92
+ id: "missing_inbounds",
93
+ severity: "error",
94
+ message: "Required `inbounds[]` is missing or empty.",
95
+ where: "/inbounds",
96
+ });
97
+ }
98
+ if (!Array.isArray(outbounds) || outbounds.length === 0) {
99
+ issues.push({
100
+ id: "missing_outbounds",
101
+ severity: "error",
102
+ message: "Required `outbounds[]` is missing or empty.",
103
+ where: "/outbounds",
104
+ });
105
+ }
106
+ const inboundTags = new Set();
107
+ if (Array.isArray(inbounds)) {
108
+ inbounds.forEach((ib, i) => validateInbound(ib, i, issues, inboundTags));
109
+ }
110
+ const outboundTags = new Set();
111
+ if (Array.isArray(outbounds)) {
112
+ outbounds.forEach((ob, i) => validateOutbound(ob, i, issues, outboundTags));
113
+ }
114
+ /* routing rules cross-checks */
115
+ const routing = parsed["routing"];
116
+ if (isObject(routing) && Array.isArray(routing["rules"])) {
117
+ routing["rules"].forEach((rule, i) => {
118
+ if (!isObject(rule))
119
+ return;
120
+ const path = `/routing/rules/${i}`;
121
+ const ot = rule["outboundTag"];
122
+ if (typeof ot === "string" && ot && !outboundTags.has(ot)) {
123
+ issues.push({
124
+ id: "dangling_outbound_tag",
125
+ severity: "error",
126
+ message: `routing.rule references unknown outboundTag "${ot}"`,
127
+ where: `${path}/outboundTag`,
128
+ });
129
+ }
130
+ const its = rule["inboundTag"];
131
+ const itArr = Array.isArray(its) ? its : its ? [its] : [];
132
+ itArr.forEach((tag, j) => {
133
+ if (typeof tag === "string" && tag && !inboundTags.has(tag)) {
134
+ issues.push({
135
+ id: "dangling_inbound_tag",
136
+ severity: "error",
137
+ message: `routing.rule references unknown inboundTag "${tag}"`,
138
+ where: `${path}/inboundTag/${j}`,
139
+ });
140
+ }
141
+ });
142
+ if (rule["type"] !== undefined && rule["type"] !== "field") {
143
+ issues.push({
144
+ id: "rule_type_must_be_field",
145
+ severity: "warn",
146
+ message: `routing.rule.type should be "field" (got ${JSON.stringify(rule["type"])})`,
147
+ where: `${path}/type`,
148
+ });
149
+ }
150
+ if (rule["outboundTag"] && rule["balancerTag"]) {
151
+ issues.push({
152
+ id: "rule_outbound_balancer_conflict",
153
+ severity: "error",
154
+ message: "routing.rule has both outboundTag and balancerTag (mutually exclusive).",
155
+ where: path,
156
+ });
157
+ }
158
+ });
159
+ }
160
+ const fatal = issues.some((i) => i.severity === "error");
161
+ return { ok: !fatal, parsed, issues };
162
+ }
163
+ function validateStreamSettings(ss, basePath, issues) {
164
+ if (!isObject(ss))
165
+ return;
166
+ const ssPath = `${basePath}/streamSettings`;
167
+ const network = ss["network"];
168
+ if (network !== undefined && typeof network !== "string") {
169
+ issues.push({
170
+ id: "stream_network_not_string",
171
+ severity: "error",
172
+ message: "streamSettings.network must be a string.",
173
+ where: `${ssPath}/network`,
174
+ });
175
+ }
176
+ else if (typeof network === "string" && network) {
177
+ const spec = transportByNetwork[network];
178
+ if (!spec) {
179
+ issues.push({
180
+ id: "stream_network_unknown",
181
+ severity: "warn",
182
+ message: `Unknown streamSettings.network "${network}".`,
183
+ where: `${ssPath}/network`,
184
+ });
185
+ }
186
+ else {
187
+ /* Validate the matching *Settings block. */
188
+ const block = ss[spec.settingsKey];
189
+ if (block !== undefined) {
190
+ const r = spec.schema.safeParse(block);
191
+ if (!r.success) {
192
+ pushZodIssues(issues, `${ssPath}/${spec.settingsKey}`, r.error.issues, spec.settingsKey);
193
+ }
194
+ }
195
+ /* Cross-network leftovers: another *Settings present besides current? */
196
+ for (const key of allSettingsKeys) {
197
+ if (key === spec.settingsKey)
198
+ continue;
199
+ if (ss[key] !== undefined) {
200
+ issues.push({
201
+ id: "stream_settings_cross_network",
202
+ severity: "warn",
203
+ message: `streamSettings.network="${network}" but ${key} is also set — xray will ignore it.`,
204
+ where: `${ssPath}/${key}`,
205
+ });
206
+ }
207
+ }
208
+ }
209
+ }
210
+ const security = ss["security"];
211
+ if (security !== undefined && typeof security !== "string") {
212
+ issues.push({
213
+ id: "stream_security_not_string",
214
+ severity: "error",
215
+ message: "streamSettings.security must be a string.",
216
+ where: `${ssPath}/security`,
217
+ });
218
+ }
219
+ else if (typeof security === "string" && security && security !== "none") {
220
+ const spec = securityByName[security];
221
+ if (!spec) {
222
+ issues.push({
223
+ id: "stream_security_unknown",
224
+ severity: "warn",
225
+ message: `Unknown streamSettings.security "${security}".`,
226
+ where: `${ssPath}/security`,
227
+ });
228
+ }
229
+ else {
230
+ const block = ss[spec.settingsKey];
231
+ if (block !== undefined) {
232
+ const r = spec.schema.safeParse(block);
233
+ if (!r.success) {
234
+ pushZodIssues(issues, `${ssPath}/${spec.settingsKey}`, r.error.issues, spec.settingsKey);
235
+ }
236
+ }
237
+ for (const key of allSecuritySettingsKeys) {
238
+ if (key === spec.settingsKey)
239
+ continue;
240
+ if (ss[key] !== undefined) {
241
+ issues.push({
242
+ id: "stream_security_cross",
243
+ severity: "warn",
244
+ message: `streamSettings.security="${security}" but ${key} is also set — xray will ignore it.`,
245
+ where: `${ssPath}/${key}`,
246
+ });
247
+ }
248
+ }
249
+ }
250
+ }
251
+ }
252
+ function validateInbound(ib, i, issues, tags) {
253
+ const path = `/inbounds/${i}`;
254
+ if (!isObject(ib)) {
255
+ issues.push({
256
+ id: "inbound_not_object",
257
+ severity: "error",
258
+ message: "inbound entry must be an object.",
259
+ where: path,
260
+ });
261
+ return;
262
+ }
263
+ const tag = ib["tag"];
264
+ if (typeof tag !== "string" || !tag) {
265
+ issues.push({
266
+ id: "inbound_missing_tag",
267
+ severity: "error",
268
+ message: "inbound is missing required `tag`.",
269
+ where: `${path}/tag`,
270
+ });
271
+ }
272
+ else {
273
+ if (tags.has(tag)) {
274
+ issues.push({
275
+ id: "duplicate_inbound_tag",
276
+ severity: "error",
277
+ message: `Duplicate inbound tag "${tag}".`,
278
+ where: `${path}/tag`,
279
+ });
280
+ }
281
+ tags.add(tag);
282
+ }
283
+ const proto = ib["protocol"];
284
+ if (typeof proto !== "string" || !proto) {
285
+ issues.push({
286
+ id: "inbound_missing_protocol",
287
+ severity: "error",
288
+ message: "inbound is missing required `protocol`.",
289
+ where: `${path}/protocol`,
290
+ });
291
+ }
292
+ else if (!KNOWN_INBOUND_PROTOCOLS.has(proto)) {
293
+ issues.push({
294
+ id: "inbound_unknown_protocol",
295
+ severity: "warn",
296
+ message: `Unknown inbound protocol "${proto}". Known: ${[...KNOWN_INBOUND_PROTOCOLS].join(", ")}.`,
297
+ where: `${path}/protocol`,
298
+ });
299
+ }
300
+ const port = ib["port"];
301
+ if (port !== undefined) {
302
+ const okType = typeof port === "number" ||
303
+ (typeof port === "string" && /^[0-9,\-]+$/.test(port));
304
+ if (!okType) {
305
+ issues.push({
306
+ id: "inbound_bad_port_type",
307
+ severity: "error",
308
+ message: "inbound.port must be a number, range string, or comma-list.",
309
+ where: `${path}/port`,
310
+ });
311
+ }
312
+ }
313
+ const listen = ib["listen"];
314
+ if (listen !== undefined && typeof listen !== "string") {
315
+ issues.push({
316
+ id: "inbound_bad_listen_type",
317
+ severity: "error",
318
+ message: "inbound.listen must be a string IP/hostname.",
319
+ where: `${path}/listen`,
320
+ });
321
+ }
322
+ /* Per-protocol settings deep validation. */
323
+ if (typeof proto === "string" && proto in inboundProtocolSchemas) {
324
+ const settings = ib["settings"];
325
+ if (settings === undefined) {
326
+ issues.push({
327
+ id: "inbound_missing_settings",
328
+ severity: "warn",
329
+ message: `inbound protocol "${proto}" usually requires settings{}.`,
330
+ where: `${path}/settings`,
331
+ });
332
+ }
333
+ else {
334
+ const r = inboundProtocolSchemas[proto].safeParse(settings);
335
+ if (!r.success) {
336
+ pushZodIssues(issues, `${path}/settings`, r.error.issues, "inbound_settings");
337
+ }
338
+ }
339
+ }
340
+ /* Stream/transport/security validation. */
341
+ if (ib["streamSettings"] !== undefined) {
342
+ validateStreamSettings(ib["streamSettings"], path, issues);
343
+ }
344
+ }
345
+ function validateOutbound(ob, i, issues, tags) {
346
+ const path = `/outbounds/${i}`;
347
+ if (!isObject(ob)) {
348
+ issues.push({
349
+ id: "outbound_not_object",
350
+ severity: "error",
351
+ message: "outbound entry must be an object.",
352
+ where: path,
353
+ });
354
+ return;
355
+ }
356
+ const tag = ob["tag"];
357
+ if (typeof tag === "string" && tag) {
358
+ if (tags.has(tag)) {
359
+ issues.push({
360
+ id: "duplicate_outbound_tag",
361
+ severity: "error",
362
+ message: `Duplicate outbound tag "${tag}".`,
363
+ where: `${path}/tag`,
364
+ });
365
+ }
366
+ tags.add(tag);
367
+ }
368
+ else if (i > 0) {
369
+ /* only the first/default outbound can omit tag in xray; warn for clarity. */
370
+ issues.push({
371
+ id: "outbound_missing_tag",
372
+ severity: "warn",
373
+ message: "outbound has no `tag`; routing.rules cannot reference it.",
374
+ where: `${path}/tag`,
375
+ });
376
+ }
377
+ const proto = ob["protocol"];
378
+ if (typeof proto !== "string" || !proto) {
379
+ issues.push({
380
+ id: "outbound_missing_protocol",
381
+ severity: "error",
382
+ message: "outbound is missing required `protocol`.",
383
+ where: `${path}/protocol`,
384
+ });
385
+ }
386
+ else if (!KNOWN_OUTBOUND_PROTOCOLS.has(proto)) {
387
+ issues.push({
388
+ id: "outbound_unknown_protocol",
389
+ severity: "warn",
390
+ message: `Unknown outbound protocol "${proto}". Known: ${[...KNOWN_OUTBOUND_PROTOCOLS].join(", ")}.`,
391
+ where: `${path}/protocol`,
392
+ });
393
+ }
394
+ if (typeof proto === "string" && proto in outboundProtocolSchemas) {
395
+ const settings = ob["settings"];
396
+ /* Several outbound protocols (freedom, blackhole) don't require settings. */
397
+ if (settings !== undefined) {
398
+ const r = outboundProtocolSchemas[proto].safeParse(settings);
399
+ if (!r.success) {
400
+ pushZodIssues(issues, `${path}/settings`, r.error.issues, "outbound_settings");
401
+ }
402
+ }
403
+ }
404
+ if (ob["streamSettings"] !== undefined) {
405
+ validateStreamSettings(ob["streamSettings"], path, issues);
406
+ }
407
+ }
408
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "mcp-xray-pilot",
3
+ "version": "0.10.0",
4
+ "description": "MCP server for xray-core: offline docs cache (auto-refresh), config validation, REALITY/XTLS lint, anti-DPI recipes, GitHub research from XTLS repos.",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "mcp-xray-pilot": "dist/index.js"
8
+ },
9
+ "type": "module",
10
+ "engines": {
11
+ "node": ">=18"
12
+ },
13
+ "author": "beekamai",
14
+ "license": "MIT",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/beekamai/mcp-xray-pilot.git"
18
+ },
19
+ "homepage": "https://github.com/beekamai/mcp-xray-pilot#readme",
20
+ "bugs": {
21
+ "url": "https://github.com/beekamai/mcp-xray-pilot/issues"
22
+ },
23
+ "keywords": [
24
+ "mcp",
25
+ "model-context-protocol",
26
+ "xray",
27
+ "xray-core",
28
+ "vless",
29
+ "reality",
30
+ "vmess",
31
+ "trojan",
32
+ "shadowsocks",
33
+ "vpn",
34
+ "anti-dpi",
35
+ "rkn",
36
+ "tspu",
37
+ "claude",
38
+ "claude-code"
39
+ ],
40
+ "files": [
41
+ "dist",
42
+ "data/docs",
43
+ "README.md",
44
+ "LICENSE"
45
+ ],
46
+ "scripts": {
47
+ "build": "tsc",
48
+ "dev": "tsx src/index.ts",
49
+ "fetch-docs": "tsx scripts/fetch-docs.ts",
50
+ "prepare": "npm run build",
51
+ "prepublishOnly": "npm run build"
52
+ },
53
+ "dependencies": {
54
+ "@modelcontextprotocol/sdk": "^1.0.0",
55
+ "zod": "^3.23.8"
56
+ },
57
+ "devDependencies": {
58
+ "@types/node": "^22.10.0",
59
+ "tsx": "^4.19.2",
60
+ "typescript": "^5.6.3"
61
+ }
62
+ }