@easynet/agent-tool 1.0.45 → 1.0.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -105
- package/dist/api/extension/groupPrefix.d.ts.map +1 -1
- package/dist/api/main.cjs +19 -20
- package/dist/api/main.js +2 -3
- package/dist/api/runtimeFromConfig.d.ts.map +1 -1
- package/dist/{chunk-JH6TWGP4.js → chunk-2ZPDD7ZO.js} +722 -279
- package/dist/chunk-2ZPDD7ZO.js.map +1 -0
- package/dist/{chunk-ONXFQ6K5.js → chunk-64ZQQV5C.js} +79 -75
- package/dist/chunk-64ZQQV5C.js.map +1 -0
- package/dist/{chunk-YVL3UMM2.cjs → chunk-A5B6Q6EG.cjs} +733 -317
- package/dist/chunk-A5B6Q6EG.cjs.map +1 -0
- package/dist/{chunk-5WY557HJ.cjs → chunk-IAEVDXWS.cjs} +15 -16
- package/dist/chunk-IAEVDXWS.cjs.map +1 -0
- package/dist/{chunk-YUA6KJWF.js → chunk-KYBIKD5R.js} +5 -5
- package/dist/chunk-KYBIKD5R.js.map +1 -0
- package/dist/{chunk-ETXVT6FE.cjs → chunk-MDPU7EIO.cjs} +83 -87
- package/dist/chunk-MDPU7EIO.cjs.map +1 -0
- package/dist/index.cjs +195 -413
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +16 -63
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +171 -281
- package/dist/index.js.map +1 -1
- package/dist/utils/cli/index.cjs +16 -17
- package/dist/utils/cli/index.cjs.map +1 -1
- package/dist/utils/cli/index.js +3 -4
- package/dist/utils/cli/index.js.map +1 -1
- package/dist/utils/npmCache.d.ts +1 -1
- package/dist/utils/npmCache.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-5WY557HJ.cjs.map +0 -1
- package/dist/chunk-CLJCCBXA.js +0 -474
- package/dist/chunk-CLJCCBXA.js.map +0 -1
- package/dist/chunk-ETXVT6FE.cjs.map +0 -1
- package/dist/chunk-H5SPD2O7.cjs +0 -480
- package/dist/chunk-H5SPD2O7.cjs.map +0 -1
- package/dist/chunk-JH6TWGP4.js.map +0 -1
- package/dist/chunk-ONXFQ6K5.js.map +0 -1
- package/dist/chunk-YUA6KJWF.js.map +0 -1
- package/dist/chunk-YVL3UMM2.cjs.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,197 +1,23 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkIAEVDXWS_cjs = require('./chunk-IAEVDXWS.cjs');
|
|
4
|
+
var chunkMDPU7EIO_cjs = require('./chunk-MDPU7EIO.cjs');
|
|
5
|
+
var chunkA5B6Q6EG_cjs = require('./chunk-A5B6Q6EG.cjs');
|
|
6
6
|
var chunkTOSPHMYU_cjs = require('./chunk-TOSPHMYU.cjs');
|
|
7
7
|
var chunkDYDNPIV2_cjs = require('./chunk-DYDNPIV2.cjs');
|
|
8
8
|
require('./chunk-UUNG3GL3.cjs');
|
|
9
|
-
var promises = require('dns/promises');
|
|
10
9
|
var async_hooks = require('async_hooks');
|
|
11
10
|
var path6 = require('path');
|
|
12
11
|
var url = require('url');
|
|
13
12
|
var fs = require('fs');
|
|
14
13
|
var yaml = require('js-yaml');
|
|
14
|
+
var promises = require('dns/promises');
|
|
15
15
|
|
|
16
16
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
17
|
|
|
18
18
|
var path6__default = /*#__PURE__*/_interopDefault(path6);
|
|
19
19
|
var yaml__default = /*#__PURE__*/_interopDefault(yaml);
|
|
20
20
|
|
|
21
|
-
async function validateUrl(url, options) {
|
|
22
|
-
let parsed;
|
|
23
|
-
try {
|
|
24
|
-
parsed = new URL(url);
|
|
25
|
-
} catch {
|
|
26
|
-
throw chunkTOSPHMYU_cjs.createTaggedError(
|
|
27
|
-
"HTTP_DISALLOWED_HOST",
|
|
28
|
-
`Invalid URL: ${url}`,
|
|
29
|
-
{ url }
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
33
|
-
throw chunkTOSPHMYU_cjs.createTaggedError(
|
|
34
|
-
"HTTP_DISALLOWED_HOST",
|
|
35
|
-
`Protocol not allowed: ${parsed.protocol}. Only http: and https: are supported.`,
|
|
36
|
-
{ url, protocol: parsed.protocol }
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
const hostname = parsed.hostname;
|
|
40
|
-
if (!isHostAllowed(hostname, options.allowedHosts)) {
|
|
41
|
-
throw chunkTOSPHMYU_cjs.createTaggedError(
|
|
42
|
-
"HTTP_DISALLOWED_HOST",
|
|
43
|
-
`Host "${hostname}" is not in the allowed hosts list`,
|
|
44
|
-
{ url, hostname, allowedHosts: options.allowedHosts }
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
if (isHostBlocked(hostname, options.blockedHosts)) {
|
|
48
|
-
throw chunkTOSPHMYU_cjs.createTaggedError(
|
|
49
|
-
"HTTP_DISALLOWED_HOST",
|
|
50
|
-
`Host "${hostname}" is in the blocked hosts list`,
|
|
51
|
-
{ url, hostname, blockedHosts: options.blockedHosts }
|
|
52
|
-
);
|
|
53
|
-
}
|
|
54
|
-
try {
|
|
55
|
-
const { address } = await promises.lookup(hostname);
|
|
56
|
-
if (isIpInBlockedCidrs(address, options.blockedCidrs)) {
|
|
57
|
-
throw chunkTOSPHMYU_cjs.createTaggedError(
|
|
58
|
-
"HTTP_DISALLOWED_HOST",
|
|
59
|
-
`Host "${hostname}" resolves to blocked IP: ${address}`,
|
|
60
|
-
{ url, hostname, resolvedIp: address }
|
|
61
|
-
);
|
|
62
|
-
}
|
|
63
|
-
} catch (err) {
|
|
64
|
-
if (err instanceof Error && err.kind === "HTTP_DISALLOWED_HOST") {
|
|
65
|
-
throw err;
|
|
66
|
-
}
|
|
67
|
-
throw chunkTOSPHMYU_cjs.createTaggedError(
|
|
68
|
-
"HTTP_DISALLOWED_HOST",
|
|
69
|
-
`DNS resolution failed for host "${hostname}": ${err instanceof Error ? err.message : String(err)}`,
|
|
70
|
-
{ url, hostname }
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
return parsed;
|
|
74
|
-
}
|
|
75
|
-
function isHostAllowed(hostname, allowedHosts) {
|
|
76
|
-
for (const pattern of allowedHosts) {
|
|
77
|
-
if (pattern === "*") {
|
|
78
|
-
return true;
|
|
79
|
-
}
|
|
80
|
-
if (pattern.startsWith("*.")) {
|
|
81
|
-
const suffix = pattern.slice(1);
|
|
82
|
-
if (hostname.endsWith(suffix) || hostname === pattern.slice(2)) {
|
|
83
|
-
return true;
|
|
84
|
-
}
|
|
85
|
-
} else if (hostname === pattern) {
|
|
86
|
-
return true;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
function isHostBlocked(hostname, blockedHosts) {
|
|
92
|
-
for (const pattern of blockedHosts) {
|
|
93
|
-
if (pattern === "*") {
|
|
94
|
-
return true;
|
|
95
|
-
}
|
|
96
|
-
if (pattern.startsWith("*.")) {
|
|
97
|
-
const suffix = pattern.slice(1);
|
|
98
|
-
if (hostname.endsWith(suffix) || hostname === pattern.slice(2)) {
|
|
99
|
-
return true;
|
|
100
|
-
}
|
|
101
|
-
} else if (hostname === pattern) {
|
|
102
|
-
return true;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
function isIpInBlockedCidrs(ip, cidrs) {
|
|
108
|
-
const normalizedIp = normalizeIp(ip);
|
|
109
|
-
if (!normalizedIp) return false;
|
|
110
|
-
for (const cidr of cidrs) {
|
|
111
|
-
if (cidr.includes(":")) {
|
|
112
|
-
if (!ip.includes(":")) continue;
|
|
113
|
-
if (isIpv6InCidr(ip, cidr)) return true;
|
|
114
|
-
} else {
|
|
115
|
-
if (isIpv4InCidr(normalizedIp, cidr)) return true;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return false;
|
|
119
|
-
}
|
|
120
|
-
function normalizeIp(ip) {
|
|
121
|
-
if (ip.startsWith("::ffff:")) {
|
|
122
|
-
return ip.slice(7);
|
|
123
|
-
}
|
|
124
|
-
if (/^\d+\.\d+\.\d+\.\d+$/.test(ip)) {
|
|
125
|
-
return ip;
|
|
126
|
-
}
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
function isIpv4InCidr(ip, cidr) {
|
|
130
|
-
const [cidrIp, prefixStr] = cidr.split("/");
|
|
131
|
-
if (!cidrIp || !prefixStr) return false;
|
|
132
|
-
const prefix = parseInt(prefixStr, 10);
|
|
133
|
-
if (isNaN(prefix) || prefix < 0 || prefix > 32) return false;
|
|
134
|
-
const ipNum = ipv4ToNum(ip);
|
|
135
|
-
const cidrNum = ipv4ToNum(cidrIp);
|
|
136
|
-
if (ipNum === null || cidrNum === null) return false;
|
|
137
|
-
const mask = prefix === 0 ? 0 : -1 << 32 - prefix >>> 0;
|
|
138
|
-
return (ipNum & mask) === (cidrNum & mask);
|
|
139
|
-
}
|
|
140
|
-
function ipv4ToNum(ip) {
|
|
141
|
-
const parts = ip.split(".");
|
|
142
|
-
if (parts.length !== 4) return null;
|
|
143
|
-
let num = 0;
|
|
144
|
-
for (const part of parts) {
|
|
145
|
-
const n = parseInt(part, 10);
|
|
146
|
-
if (isNaN(n) || n < 0 || n > 255) return null;
|
|
147
|
-
num = num << 8 | n;
|
|
148
|
-
}
|
|
149
|
-
return num >>> 0;
|
|
150
|
-
}
|
|
151
|
-
function isIpv6InCidr(ip, cidr) {
|
|
152
|
-
const [cidrIp, prefixStr] = cidr.split("/");
|
|
153
|
-
if (!cidrIp || !prefixStr) return false;
|
|
154
|
-
const prefix = parseInt(prefixStr, 10);
|
|
155
|
-
if (isNaN(prefix)) return false;
|
|
156
|
-
const ipBytes = expandIpv6(ip);
|
|
157
|
-
const cidrBytes = expandIpv6(cidrIp);
|
|
158
|
-
if (!ipBytes || !cidrBytes) return false;
|
|
159
|
-
const fullBytes = Math.floor(prefix / 8);
|
|
160
|
-
for (let i = 0; i < fullBytes && i < 16; i++) {
|
|
161
|
-
if (ipBytes[i] !== cidrBytes[i]) return false;
|
|
162
|
-
}
|
|
163
|
-
const remainingBits = prefix % 8;
|
|
164
|
-
if (remainingBits > 0 && fullBytes < 16) {
|
|
165
|
-
const mask = -1 << 8 - remainingBits & 255;
|
|
166
|
-
if ((ipBytes[fullBytes] & mask) !== (cidrBytes[fullBytes] & mask)) return false;
|
|
167
|
-
}
|
|
168
|
-
return true;
|
|
169
|
-
}
|
|
170
|
-
function expandIpv6(ip) {
|
|
171
|
-
const zoneIdx = ip.indexOf("%");
|
|
172
|
-
if (zoneIdx !== -1) ip = ip.slice(0, zoneIdx);
|
|
173
|
-
const parts = ip.split("::");
|
|
174
|
-
if (parts.length > 2) return null;
|
|
175
|
-
const bytes = new Array(16).fill(0);
|
|
176
|
-
const expandGroup = (group) => {
|
|
177
|
-
if (!group) return [];
|
|
178
|
-
return group.split(":").flatMap((hex) => {
|
|
179
|
-
const val = parseInt(hex || "0", 16);
|
|
180
|
-
return [val >> 8 & 255, val & 255];
|
|
181
|
-
});
|
|
182
|
-
};
|
|
183
|
-
if (parts.length === 1) {
|
|
184
|
-
const expanded = expandGroup(parts[0]);
|
|
185
|
-
if (expanded.length !== 16) return null;
|
|
186
|
-
return expanded;
|
|
187
|
-
}
|
|
188
|
-
const left = expandGroup(parts[0]);
|
|
189
|
-
const right = expandGroup(parts[1]);
|
|
190
|
-
if (left.length + right.length > 16) return null;
|
|
191
|
-
for (let i = 0; i < left.length; i++) bytes[i] = left[i];
|
|
192
|
-
for (let i = 0; i < right.length; i++) bytes[16 - right.length + i] = right[i];
|
|
193
|
-
return bytes;
|
|
194
|
-
}
|
|
195
21
|
function createContextRunner() {
|
|
196
22
|
const storage = new async_hooks.AsyncLocalStorage();
|
|
197
23
|
return {
|
|
@@ -443,7 +269,7 @@ function generateExtensionManifest(projectRoot = process.cwd(), options = {}) {
|
|
|
443
269
|
const root = path6__default.default.resolve(projectRoot);
|
|
444
270
|
const outDir = path6__default.default.resolve(options.outDir ?? path6__default.default.join(root, "dist"));
|
|
445
271
|
const kind = options.kind ?? "core";
|
|
446
|
-
const { specs, errors } =
|
|
272
|
+
const { specs, errors } = chunkMDPU7EIO_cjs.scanForTools({
|
|
447
273
|
projectPath: root,
|
|
448
274
|
include: options.include ?? ["**/*.ts"],
|
|
449
275
|
tsconfigPath: options.tsconfigPath
|
|
@@ -513,297 +339,266 @@ function overrideWithConfig(defaults, config) {
|
|
|
513
339
|
function getGroupNamePrefixes(options) {
|
|
514
340
|
const { groups, only, groupPrefixMap } = options;
|
|
515
341
|
const onlySet = only?.length ? new Set(only) : null;
|
|
516
|
-
const namePrefixes = !onlySet && groups?.length ? groups.map((g) => groupPrefixMap[g]).filter(
|
|
342
|
+
const namePrefixes = !onlySet && groups?.length ? groups.map((g) => groupPrefixMap[g]).filter((x) => x != null) : void 0;
|
|
517
343
|
return {
|
|
518
344
|
...onlySet ? { only: Array.from(onlySet) } : {},
|
|
519
345
|
...namePrefixes?.length ? { namePrefixes } : {}
|
|
520
346
|
};
|
|
521
347
|
}
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
348
|
+
async function validateUrl(url, options) {
|
|
349
|
+
let parsed;
|
|
350
|
+
try {
|
|
351
|
+
parsed = new URL(url);
|
|
352
|
+
} catch {
|
|
353
|
+
throw chunkTOSPHMYU_cjs.createTaggedError(
|
|
354
|
+
"HTTP_DISALLOWED_HOST",
|
|
355
|
+
`Invalid URL: ${url}`,
|
|
356
|
+
{ url }
|
|
357
|
+
);
|
|
528
358
|
}
|
|
529
|
-
if (
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
359
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
360
|
+
throw chunkTOSPHMYU_cjs.createTaggedError(
|
|
361
|
+
"HTTP_DISALLOWED_HOST",
|
|
362
|
+
`Protocol not allowed: ${parsed.protocol}. Only http: and https: are supported.`,
|
|
363
|
+
{ url, protocol: parsed.protocol }
|
|
364
|
+
);
|
|
535
365
|
}
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
resultValue = JSON.parse(text);
|
|
544
|
-
} catch {
|
|
545
|
-
}
|
|
546
|
-
return { result: resultValue, raw: result };
|
|
366
|
+
const hostname = parsed.hostname;
|
|
367
|
+
if (!isHostAllowed(hostname, options.allowedHosts)) {
|
|
368
|
+
throw chunkTOSPHMYU_cjs.createTaggedError(
|
|
369
|
+
"HTTP_DISALLOWED_HOST",
|
|
370
|
+
`Host "${hostname}" is not in the allowed hosts list`,
|
|
371
|
+
{ url, hostname, allowedHosts: options.allowedHosts }
|
|
372
|
+
);
|
|
547
373
|
}
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
throw new Error(
|
|
554
|
-
`MCP stdio requires connectionInfo.type "stdio" and command; got type=${connectionInfo.type}`
|
|
374
|
+
if (isHostBlocked(hostname, options.blockedHosts)) {
|
|
375
|
+
throw chunkTOSPHMYU_cjs.createTaggedError(
|
|
376
|
+
"HTTP_DISALLOWED_HOST",
|
|
377
|
+
`Host "${hostname}" is in the blocked hosts list`,
|
|
378
|
+
{ url, hostname, blockedHosts: options.blockedHosts }
|
|
555
379
|
);
|
|
556
380
|
}
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
381
|
+
try {
|
|
382
|
+
const { address } = await promises.lookup(hostname);
|
|
383
|
+
if (isIpInBlockedCidrs(address, options.blockedCidrs)) {
|
|
384
|
+
throw chunkTOSPHMYU_cjs.createTaggedError(
|
|
385
|
+
"HTTP_DISALLOWED_HOST",
|
|
386
|
+
`Host "${hostname}" resolves to blocked IP: ${address}`,
|
|
387
|
+
{ url, hostname, resolvedIp: address }
|
|
388
|
+
);
|
|
389
|
+
}
|
|
390
|
+
} catch (err) {
|
|
391
|
+
if (err instanceof Error && err.kind === "HTTP_DISALLOWED_HOST") {
|
|
392
|
+
throw err;
|
|
393
|
+
}
|
|
394
|
+
throw chunkTOSPHMYU_cjs.createTaggedError(
|
|
395
|
+
"HTTP_DISALLOWED_HOST",
|
|
396
|
+
`DNS resolution failed for host "${hostname}": ${err instanceof Error ? err.message : String(err)}`,
|
|
397
|
+
{ url, hostname }
|
|
398
|
+
);
|
|
399
|
+
}
|
|
400
|
+
return parsed;
|
|
572
401
|
}
|
|
573
|
-
function
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
402
|
+
function isHostAllowed(hostname, allowedHosts) {
|
|
403
|
+
for (const pattern of allowedHosts) {
|
|
404
|
+
if (pattern === "*") {
|
|
405
|
+
return true;
|
|
406
|
+
}
|
|
407
|
+
if (pattern.startsWith("*.")) {
|
|
408
|
+
const suffix = pattern.slice(1);
|
|
409
|
+
if (hostname.endsWith(suffix) || hostname === pattern.slice(2)) {
|
|
410
|
+
return true;
|
|
411
|
+
}
|
|
412
|
+
} else if (hostname === pattern) {
|
|
413
|
+
return true;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
return false;
|
|
583
417
|
}
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
};
|
|
598
|
-
this.connections.set(toolName, info);
|
|
599
|
-
return info;
|
|
418
|
+
function isHostBlocked(hostname, blockedHosts) {
|
|
419
|
+
for (const pattern of blockedHosts) {
|
|
420
|
+
if (pattern === "*") {
|
|
421
|
+
return true;
|
|
422
|
+
}
|
|
423
|
+
if (pattern.startsWith("*.")) {
|
|
424
|
+
const suffix = pattern.slice(1);
|
|
425
|
+
if (hostname.endsWith(suffix) || hostname === pattern.slice(2)) {
|
|
426
|
+
return true;
|
|
427
|
+
}
|
|
428
|
+
} else if (hostname === pattern) {
|
|
429
|
+
return true;
|
|
430
|
+
}
|
|
600
431
|
}
|
|
601
|
-
|
|
602
|
-
|
|
432
|
+
return false;
|
|
433
|
+
}
|
|
434
|
+
function isIpInBlockedCidrs(ip, cidrs) {
|
|
435
|
+
const normalizedIp = normalizeIp(ip);
|
|
436
|
+
if (!normalizedIp) return false;
|
|
437
|
+
for (const cidr of cidrs) {
|
|
438
|
+
if (cidr.includes(":")) {
|
|
439
|
+
if (!ip.includes(":")) continue;
|
|
440
|
+
if (isIpv6InCidr(ip, cidr)) return true;
|
|
441
|
+
} else {
|
|
442
|
+
if (isIpv4InCidr(normalizedIp, cidr)) return true;
|
|
443
|
+
}
|
|
603
444
|
}
|
|
604
|
-
|
|
605
|
-
|
|
445
|
+
return false;
|
|
446
|
+
}
|
|
447
|
+
function normalizeIp(ip) {
|
|
448
|
+
if (ip.startsWith("::ffff:")) {
|
|
449
|
+
return ip.slice(7);
|
|
606
450
|
}
|
|
607
|
-
|
|
608
|
-
|
|
451
|
+
if (/^\d+\.\d+\.\d+\.\d+$/.test(ip)) {
|
|
452
|
+
return ip;
|
|
609
453
|
}
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
const
|
|
616
|
-
|
|
617
|
-
const
|
|
618
|
-
const
|
|
619
|
-
if (
|
|
620
|
-
|
|
454
|
+
return null;
|
|
455
|
+
}
|
|
456
|
+
function isIpv4InCidr(ip, cidr) {
|
|
457
|
+
const [cidrIp, prefixStr] = cidr.split("/");
|
|
458
|
+
if (!cidrIp || !prefixStr) return false;
|
|
459
|
+
const prefix = parseInt(prefixStr, 10);
|
|
460
|
+
if (isNaN(prefix) || prefix < 0 || prefix > 32) return false;
|
|
461
|
+
const ipNum = ipv4ToNum(ip);
|
|
462
|
+
const cidrNum = ipv4ToNum(cidrIp);
|
|
463
|
+
if (ipNum === null || cidrNum === null) return false;
|
|
464
|
+
const mask = prefix === 0 ? 0 : -1 << 32 - prefix >>> 0;
|
|
465
|
+
return (ipNum & mask) === (cidrNum & mask);
|
|
466
|
+
}
|
|
467
|
+
function ipv4ToNum(ip) {
|
|
468
|
+
const parts = ip.split(".");
|
|
469
|
+
if (parts.length !== 4) return null;
|
|
470
|
+
let num = 0;
|
|
471
|
+
for (const part of parts) {
|
|
472
|
+
const n = parseInt(part, 10);
|
|
473
|
+
if (isNaN(n) || n < 0 || n > 255) return null;
|
|
474
|
+
num = num << 8 | n;
|
|
475
|
+
}
|
|
476
|
+
return num >>> 0;
|
|
477
|
+
}
|
|
478
|
+
function isIpv6InCidr(ip, cidr) {
|
|
479
|
+
const [cidrIp, prefixStr] = cidr.split("/");
|
|
480
|
+
if (!cidrIp || !prefixStr) return false;
|
|
481
|
+
const prefix = parseInt(prefixStr, 10);
|
|
482
|
+
if (isNaN(prefix)) return false;
|
|
483
|
+
const ipBytes = expandIpv6(ip);
|
|
484
|
+
const cidrBytes = expandIpv6(cidrIp);
|
|
485
|
+
if (!ipBytes || !cidrBytes) return false;
|
|
486
|
+
const fullBytes = Math.floor(prefix / 8);
|
|
487
|
+
for (let i = 0; i < fullBytes && i < 16; i++) {
|
|
488
|
+
if (ipBytes[i] !== cidrBytes[i]) return false;
|
|
489
|
+
}
|
|
490
|
+
const remainingBits = prefix % 8;
|
|
491
|
+
if (remainingBits > 0 && fullBytes < 16) {
|
|
492
|
+
const mask = -1 << 8 - remainingBits & 255;
|
|
493
|
+
if ((ipBytes[fullBytes] & mask) !== (cidrBytes[fullBytes] & mask)) return false;
|
|
494
|
+
}
|
|
495
|
+
return true;
|
|
496
|
+
}
|
|
497
|
+
function expandIpv6(ip) {
|
|
498
|
+
const zoneIdx = ip.indexOf("%");
|
|
499
|
+
if (zoneIdx !== -1) ip = ip.slice(0, zoneIdx);
|
|
500
|
+
const parts = ip.split("::");
|
|
501
|
+
if (parts.length > 2) return null;
|
|
502
|
+
const bytes = new Array(16).fill(0);
|
|
503
|
+
const expandGroup = (group) => {
|
|
504
|
+
if (!group) return [];
|
|
505
|
+
return group.split(":").flatMap((hex) => {
|
|
506
|
+
const val = parseInt(hex || "0", 16);
|
|
507
|
+
return [val >> 8 & 255, val & 255];
|
|
508
|
+
});
|
|
509
|
+
};
|
|
510
|
+
if (parts.length === 1) {
|
|
511
|
+
const expanded = expandGroup(parts[0]);
|
|
512
|
+
if (expanded.length !== 16) return null;
|
|
513
|
+
return expanded;
|
|
621
514
|
}
|
|
622
|
-
const
|
|
623
|
-
const
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
runtime.registerAdapter(new MCPClientAdapter(client));
|
|
629
|
-
return { transport };
|
|
515
|
+
const left = expandGroup(parts[0]);
|
|
516
|
+
const right = expandGroup(parts[1]);
|
|
517
|
+
if (left.length + right.length > 16) return null;
|
|
518
|
+
for (let i = 0; i < left.length; i++) bytes[i] = left[i];
|
|
519
|
+
for (let i = 0; i < right.length; i++) bytes[16 - right.length + i] = right[i];
|
|
520
|
+
return bytes;
|
|
630
521
|
}
|
|
631
522
|
|
|
632
|
-
Object.defineProperty(exports, "LangChainToolsHub", {
|
|
633
|
-
enumerable: true,
|
|
634
|
-
get: function () { return chunk5WY557HJ_cjs.LangChainToolsHub; }
|
|
635
|
-
});
|
|
636
523
|
Object.defineProperty(exports, "createAgentTools", {
|
|
637
524
|
enumerable: true,
|
|
638
|
-
get: function () { return
|
|
525
|
+
get: function () { return chunkIAEVDXWS_cjs.createAgentTools; }
|
|
639
526
|
});
|
|
640
|
-
Object.defineProperty(exports, "
|
|
527
|
+
Object.defineProperty(exports, "createLangChainToolsAsync", {
|
|
641
528
|
enumerable: true,
|
|
642
|
-
get: function () { return
|
|
643
|
-
});
|
|
644
|
-
Object.defineProperty(exports, "DiscoveryError", {
|
|
645
|
-
enumerable: true,
|
|
646
|
-
get: function () { return chunkETXVT6FE_cjs.DiscoveryError; }
|
|
647
|
-
});
|
|
648
|
-
Object.defineProperty(exports, "SkillManifestError", {
|
|
649
|
-
enumerable: true,
|
|
650
|
-
get: function () { return chunkETXVT6FE_cjs.SkillManifestError; }
|
|
529
|
+
get: function () { return chunkIAEVDXWS_cjs.createLangChainToolsAsync; }
|
|
651
530
|
});
|
|
652
531
|
Object.defineProperty(exports, "buildFunctionToTool", {
|
|
653
532
|
enumerable: true,
|
|
654
|
-
get: function () { return
|
|
533
|
+
get: function () { return chunkMDPU7EIO_cjs.buildFunctionToTool; }
|
|
655
534
|
});
|
|
656
535
|
Object.defineProperty(exports, "buildMcpPackage", {
|
|
657
536
|
enumerable: true,
|
|
658
|
-
get: function () { return
|
|
537
|
+
get: function () { return chunkMDPU7EIO_cjs.buildMcpPackage; }
|
|
659
538
|
});
|
|
660
539
|
Object.defineProperty(exports, "initProject", {
|
|
661
540
|
enumerable: true,
|
|
662
|
-
get: function () { return
|
|
663
|
-
});
|
|
664
|
-
Object.defineProperty(exports, "loadMCPTool", {
|
|
665
|
-
enumerable: true,
|
|
666
|
-
get: function () { return chunkETXVT6FE_cjs.loadMCPTool; }
|
|
667
|
-
});
|
|
668
|
-
Object.defineProperty(exports, "loadSkillDefinition", {
|
|
669
|
-
enumerable: true,
|
|
670
|
-
get: function () { return chunkETXVT6FE_cjs.loadSkillDefinition; }
|
|
671
|
-
});
|
|
672
|
-
Object.defineProperty(exports, "parseSkillMd", {
|
|
673
|
-
enumerable: true,
|
|
674
|
-
get: function () { return chunkETXVT6FE_cjs.parseSkillMd; }
|
|
541
|
+
get: function () { return chunkMDPU7EIO_cjs.initProject; }
|
|
675
542
|
});
|
|
676
543
|
Object.defineProperty(exports, "runGeneratedMCP", {
|
|
677
544
|
enumerable: true,
|
|
678
|
-
get: function () { return
|
|
545
|
+
get: function () { return chunkMDPU7EIO_cjs.runGeneratedMCP; }
|
|
679
546
|
});
|
|
680
547
|
Object.defineProperty(exports, "runMcpServer", {
|
|
681
548
|
enumerable: true,
|
|
682
|
-
get: function () { return
|
|
549
|
+
get: function () { return chunkMDPU7EIO_cjs.runMcpServer; }
|
|
683
550
|
});
|
|
684
551
|
Object.defineProperty(exports, "scan", {
|
|
685
552
|
enumerable: true,
|
|
686
|
-
get: function () { return
|
|
553
|
+
get: function () { return chunkMDPU7EIO_cjs.scan; }
|
|
687
554
|
});
|
|
688
555
|
Object.defineProperty(exports, "scanForTools", {
|
|
689
556
|
enumerable: true,
|
|
690
|
-
get: function () { return
|
|
691
|
-
});
|
|
692
|
-
Object.defineProperty(exports, "scanSkillResources", {
|
|
693
|
-
enumerable: true,
|
|
694
|
-
get: function () { return chunkETXVT6FE_cjs.scanSkillResources; }
|
|
695
|
-
});
|
|
696
|
-
Object.defineProperty(exports, "validateFrontmatter", {
|
|
697
|
-
enumerable: true,
|
|
698
|
-
get: function () { return chunkETXVT6FE_cjs.validateFrontmatter; }
|
|
699
|
-
});
|
|
700
|
-
Object.defineProperty(exports, "BudgetManager", {
|
|
701
|
-
enumerable: true,
|
|
702
|
-
get: function () { return chunkYVL3UMM2_cjs.BudgetManager; }
|
|
703
|
-
});
|
|
704
|
-
Object.defineProperty(exports, "EventLog", {
|
|
705
|
-
enumerable: true,
|
|
706
|
-
get: function () { return chunkYVL3UMM2_cjs.EventLog; }
|
|
707
|
-
});
|
|
708
|
-
Object.defineProperty(exports, "Metrics", {
|
|
709
|
-
enumerable: true,
|
|
710
|
-
get: function () { return chunkYVL3UMM2_cjs.Metrics; }
|
|
557
|
+
get: function () { return chunkMDPU7EIO_cjs.scanForTools; }
|
|
711
558
|
});
|
|
712
559
|
Object.defineProperty(exports, "PTCRuntime", {
|
|
713
560
|
enumerable: true,
|
|
714
|
-
get: function () { return
|
|
715
|
-
});
|
|
716
|
-
Object.defineProperty(exports, "PolicyDeniedError", {
|
|
717
|
-
enumerable: true,
|
|
718
|
-
get: function () { return chunkYVL3UMM2_cjs.PolicyDeniedError; }
|
|
719
|
-
});
|
|
720
|
-
Object.defineProperty(exports, "PolicyEngine", {
|
|
721
|
-
enumerable: true,
|
|
722
|
-
get: function () { return chunkYVL3UMM2_cjs.PolicyEngine; }
|
|
723
|
-
});
|
|
724
|
-
Object.defineProperty(exports, "SchemaValidationError", {
|
|
725
|
-
enumerable: true,
|
|
726
|
-
get: function () { return chunkYVL3UMM2_cjs.SchemaValidationError; }
|
|
561
|
+
get: function () { return chunkA5B6Q6EG_cjs.PTCRuntime; }
|
|
727
562
|
});
|
|
728
|
-
Object.defineProperty(exports, "
|
|
563
|
+
Object.defineProperty(exports, "createMCPServer", {
|
|
729
564
|
enumerable: true,
|
|
730
|
-
get: function () { return
|
|
565
|
+
get: function () { return chunkA5B6Q6EG_cjs.createMCPServer; }
|
|
731
566
|
});
|
|
732
|
-
Object.defineProperty(exports, "
|
|
567
|
+
Object.defineProperty(exports, "createMCPServerStreamableHttp", {
|
|
733
568
|
enumerable: true,
|
|
734
|
-
get: function () { return
|
|
569
|
+
get: function () { return chunkA5B6Q6EG_cjs.createMCPServerStreamableHttp; }
|
|
735
570
|
});
|
|
736
|
-
Object.defineProperty(exports, "
|
|
571
|
+
Object.defineProperty(exports, "createMCPStreamableHttpHandler", {
|
|
737
572
|
enumerable: true,
|
|
738
|
-
get: function () { return
|
|
573
|
+
get: function () { return chunkA5B6Q6EG_cjs.createMCPStreamableHttpHandler; }
|
|
739
574
|
});
|
|
740
|
-
Object.defineProperty(exports, "
|
|
575
|
+
Object.defineProperty(exports, "createOpenAPIServer", {
|
|
741
576
|
enumerable: true,
|
|
742
|
-
get: function () { return
|
|
577
|
+
get: function () { return chunkA5B6Q6EG_cjs.createHttpService; }
|
|
743
578
|
});
|
|
744
|
-
Object.defineProperty(exports, "
|
|
579
|
+
Object.defineProperty(exports, "createRuntimeFromConfig", {
|
|
745
580
|
enumerable: true,
|
|
746
|
-
get: function () { return
|
|
581
|
+
get: function () { return chunkA5B6Q6EG_cjs.createRuntimeFromConfig; }
|
|
747
582
|
});
|
|
748
|
-
Object.defineProperty(exports, "
|
|
583
|
+
Object.defineProperty(exports, "createRuntimeFromConfigSync", {
|
|
749
584
|
enumerable: true,
|
|
750
|
-
get: function () { return
|
|
751
|
-
});
|
|
752
|
-
Object.defineProperty(exports, "getPackageEntryPath", {
|
|
753
|
-
enumerable: true,
|
|
754
|
-
get: function () { return chunkYVL3UMM2_cjs.getPackageEntryPath; }
|
|
755
|
-
});
|
|
756
|
-
Object.defineProperty(exports, "importFromCache", {
|
|
757
|
-
enumerable: true,
|
|
758
|
-
get: function () { return chunkYVL3UMM2_cjs.importFromCache; }
|
|
759
|
-
});
|
|
760
|
-
Object.defineProperty(exports, "isNpmToolDescriptor", {
|
|
761
|
-
enumerable: true,
|
|
762
|
-
get: function () { return chunkYVL3UMM2_cjs.isNpmToolDescriptor; }
|
|
585
|
+
get: function () { return chunkA5B6Q6EG_cjs.createRuntimeFromConfigSync; }
|
|
763
586
|
});
|
|
764
587
|
Object.defineProperty(exports, "loadToolConfig", {
|
|
765
588
|
enumerable: true,
|
|
766
|
-
get: function () { return
|
|
767
|
-
});
|
|
768
|
-
Object.defineProperty(exports, "normalizeToolList", {
|
|
769
|
-
enumerable: true,
|
|
770
|
-
get: function () { return chunkYVL3UMM2_cjs.normalizeToolList; }
|
|
771
|
-
});
|
|
772
|
-
Object.defineProperty(exports, "npmDescriptorToRegistryPrefix", {
|
|
773
|
-
enumerable: true,
|
|
774
|
-
get: function () { return chunkYVL3UMM2_cjs.npmDescriptorToRegistryPrefix; }
|
|
775
|
-
});
|
|
776
|
-
Object.defineProperty(exports, "parseNpmToolDescriptor", {
|
|
777
|
-
enumerable: true,
|
|
778
|
-
get: function () { return chunkYVL3UMM2_cjs.parseNpmToolDescriptor; }
|
|
779
|
-
});
|
|
780
|
-
Object.defineProperty(exports, "resolveLatestVersionFromRegistry", {
|
|
781
|
-
enumerable: true,
|
|
782
|
-
get: function () { return chunkYVL3UMM2_cjs.resolveLatestVersionFromRegistry; }
|
|
783
|
-
});
|
|
784
|
-
Object.defineProperty(exports, "resolveNpmToolDescriptor", {
|
|
785
|
-
enumerable: true,
|
|
786
|
-
get: function () { return chunkYVL3UMM2_cjs.resolveNpmToolDescriptor; }
|
|
589
|
+
get: function () { return chunkA5B6Q6EG_cjs.loadToolConfig; }
|
|
787
590
|
});
|
|
788
591
|
Object.defineProperty(exports, "resolveSandboxedPath", {
|
|
789
592
|
enumerable: true,
|
|
790
|
-
get: function () { return
|
|
791
|
-
});
|
|
792
|
-
Object.defineProperty(exports, "resolveToolDescriptor", {
|
|
793
|
-
enumerable: true,
|
|
794
|
-
get: function () { return chunkYVL3UMM2_cjs.resolveToolDescriptor; }
|
|
593
|
+
get: function () { return chunkA5B6Q6EG_cjs.resolveSandboxedPath2; }
|
|
795
594
|
});
|
|
796
|
-
Object.defineProperty(exports, "
|
|
595
|
+
Object.defineProperty(exports, "runMCPServerOverStdio", {
|
|
797
596
|
enumerable: true,
|
|
798
|
-
get: function () { return
|
|
597
|
+
get: function () { return chunkA5B6Q6EG_cjs.runMCPServerOverStdio; }
|
|
799
598
|
});
|
|
800
599
|
Object.defineProperty(exports, "setSandboxValidationEnabled", {
|
|
801
600
|
enumerable: true,
|
|
802
|
-
get: function () { return
|
|
803
|
-
});
|
|
804
|
-
Object.defineProperty(exports, "summarizeForLog", {
|
|
805
|
-
enumerable: true,
|
|
806
|
-
get: function () { return chunkYVL3UMM2_cjs.summarizeForLog; }
|
|
601
|
+
get: function () { return chunkA5B6Q6EG_cjs.setSandboxValidationEnabled; }
|
|
807
602
|
});
|
|
808
603
|
Object.defineProperty(exports, "ToolRegistry", {
|
|
809
604
|
enumerable: true,
|
|
@@ -813,14 +608,6 @@ Object.defineProperty(exports, "createTaggedError", {
|
|
|
813
608
|
enumerable: true,
|
|
814
609
|
get: function () { return chunkTOSPHMYU_cjs.createTaggedError; }
|
|
815
610
|
});
|
|
816
|
-
Object.defineProperty(exports, "isRetryable", {
|
|
817
|
-
enumerable: true,
|
|
818
|
-
get: function () { return chunkTOSPHMYU_cjs.isRetryable; }
|
|
819
|
-
});
|
|
820
|
-
Object.defineProperty(exports, "withRetry", {
|
|
821
|
-
enumerable: true,
|
|
822
|
-
get: function () { return chunkTOSPHMYU_cjs.withRetry; }
|
|
823
|
-
});
|
|
824
611
|
Object.defineProperty(exports, "DEFAULT_INPUT_SCHEMA", {
|
|
825
612
|
enumerable: true,
|
|
826
613
|
get: function () { return chunkDYDNPIV2_cjs.DEFAULT_INPUT_SCHEMA; }
|
|
@@ -837,9 +624,6 @@ Object.defineProperty(exports, "normalizeToolName", {
|
|
|
837
624
|
enumerable: true,
|
|
838
625
|
get: function () { return chunkDYDNPIV2_cjs.normalizeToolName; }
|
|
839
626
|
});
|
|
840
|
-
exports.MCPClientAdapter = MCPClientAdapter;
|
|
841
|
-
exports.MCPProcessManager = MCPProcessManager;
|
|
842
|
-
exports.connectMCP = connectMCP;
|
|
843
627
|
exports.createContextRunner = createContextRunner;
|
|
844
628
|
exports.createDynamicImportAdapter = createDynamicImportAdapter;
|
|
845
629
|
exports.createExtension = createExtension;
|
|
@@ -849,10 +633,8 @@ exports.getGroupNamePrefixes = getGroupNamePrefixes;
|
|
|
849
633
|
exports.isIpInBlockedCidrs = isIpInBlockedCidrs;
|
|
850
634
|
exports.loadExtensionManifest = loadExtensionManifest;
|
|
851
635
|
exports.loadToolYaml = loadToolYaml;
|
|
852
|
-
exports.mcpToolsToSpecs = mcpToolsToSpecs;
|
|
853
636
|
exports.overrideWithConfig = overrideWithConfig;
|
|
854
637
|
exports.registerExtension = registerExtension;
|
|
855
|
-
exports.registerMCPToolsFromConfig = registerMCPToolsFromConfig;
|
|
856
638
|
exports.registerToolsFromManifest = registerToolsFromManifest;
|
|
857
639
|
exports.resolveExtensionPackageRoot = resolveExtensionPackageRoot;
|
|
858
640
|
exports.validateUrl = validateUrl;
|