@easynet/agent-tool 1.0.46 → 1.0.48

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 (38) hide show
  1. package/README.md +31 -105
  2. package/dist/api/extension/groupPrefix.d.ts.map +1 -1
  3. package/dist/api/main.cjs +19 -20
  4. package/dist/api/main.js +2 -3
  5. package/dist/api/runtimeFromConfig.d.ts.map +1 -1
  6. package/dist/{chunk-5GFSI7ZJ.js → chunk-2ZPDD7ZO.js} +722 -280
  7. package/dist/chunk-2ZPDD7ZO.js.map +1 -0
  8. package/dist/{chunk-SRTE2OUH.js → chunk-64ZQQV5C.js} +79 -75
  9. package/dist/chunk-64ZQQV5C.js.map +1 -0
  10. package/dist/{chunk-XC7KPJLZ.cjs → chunk-A5B6Q6EG.cjs} +710 -295
  11. package/dist/chunk-A5B6Q6EG.cjs.map +1 -0
  12. package/dist/{chunk-QW27JAFS.cjs → chunk-IAEVDXWS.cjs} +15 -16
  13. package/dist/chunk-IAEVDXWS.cjs.map +1 -0
  14. package/dist/{chunk-H66TKSG4.js → chunk-KYBIKD5R.js} +5 -5
  15. package/dist/chunk-KYBIKD5R.js.map +1 -0
  16. package/dist/{chunk-LG5K7WOK.cjs → chunk-MDPU7EIO.cjs} +83 -87
  17. package/dist/chunk-MDPU7EIO.cjs.map +1 -0
  18. package/dist/index.cjs +195 -413
  19. package/dist/index.cjs.map +1 -1
  20. package/dist/index.d.ts +16 -63
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +171 -281
  23. package/dist/index.js.map +1 -1
  24. package/dist/utils/cli/index.cjs +16 -17
  25. package/dist/utils/cli/index.cjs.map +1 -1
  26. package/dist/utils/cli/index.js +3 -4
  27. package/dist/utils/cli/index.js.map +1 -1
  28. package/package.json +1 -1
  29. package/dist/chunk-5GFSI7ZJ.js.map +0 -1
  30. package/dist/chunk-H66TKSG4.js.map +0 -1
  31. package/dist/chunk-LG5K7WOK.cjs.map +0 -1
  32. package/dist/chunk-O4XXNLNE.cjs +0 -480
  33. package/dist/chunk-O4XXNLNE.cjs.map +0 -1
  34. package/dist/chunk-QW27JAFS.cjs.map +0 -1
  35. package/dist/chunk-SRTE2OUH.js.map +0 -1
  36. package/dist/chunk-XC7KPJLZ.cjs.map +0 -1
  37. package/dist/chunk-YDYG4HF5.js +0 -474
  38. package/dist/chunk-YDYG4HF5.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,197 +1,23 @@
1
1
  'use strict';
2
2
 
3
- var chunkQW27JAFS_cjs = require('./chunk-QW27JAFS.cjs');
4
- var chunkLG5K7WOK_cjs = require('./chunk-LG5K7WOK.cjs');
5
- var chunkXC7KPJLZ_cjs = require('./chunk-XC7KPJLZ.cjs');
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 } = chunkLG5K7WOK_cjs.scanForTools({
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(Boolean) : void 0;
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
- // src/tools/mcp/MCPClientAdapter.ts
524
- function textFromCallToolResult(result) {
525
- if (result.content?.length) {
526
- const parts = result.content.filter((c) => c.type === "text" && c.text != null).map((c) => c.text);
527
- if (parts.length) return parts.join("\n");
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 (result.toolResult !== void 0) return JSON.stringify(result.toolResult);
530
- return JSON.stringify(result);
531
- }
532
- var MCPClientAdapter = class {
533
- constructor(client) {
534
- this.client = client;
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
- kind = chunkXC7KPJLZ_cjs.MCP_KIND;
537
- async invoke(spec, args, _ctx) {
538
- const params = args != null && typeof args === "object" && !Array.isArray(args) ? args : {};
539
- const result = await this.client.callTool({ name: spec.name, arguments: params });
540
- const text = textFromCallToolResult(result);
541
- let resultValue = text;
542
- try {
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
- // src/tools/mcp/connectMCP.ts
551
- async function connectMCP(connectionInfo) {
552
- if (connectionInfo.type !== "stdio" || !connectionInfo.command) {
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
- const { Client } = await import('@modelcontextprotocol/sdk/client');
558
- const { StdioClientTransport } = await import('@modelcontextprotocol/sdk/client/stdio.js');
559
- const serverParams = {
560
- command: connectionInfo.command,
561
- args: connectionInfo.args ?? [],
562
- env: connectionInfo.env,
563
- cwd: connectionInfo.cwd
564
- };
565
- const transport = new StdioClientTransport(serverParams);
566
- const client = new Client({ name: "agent-tool", version: "1.0.0" });
567
- await client.connect(transport);
568
- return {
569
- client,
570
- transport
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 mcpToolsToSpecs(tools) {
574
- return tools.map((t) => ({
575
- name: t.name,
576
- version: "1.0.0",
577
- kind: chunkXC7KPJLZ_cjs.MCP_KIND,
578
- description: t.description ?? `MCP tool: ${t.name}`,
579
- inputSchema: t.inputSchema ?? chunkDYDNPIV2_cjs.DEFAULT_INPUT_SCHEMA,
580
- outputSchema: chunkDYDNPIV2_cjs.DEFAULT_OUTPUT_SCHEMA,
581
- capabilities: []
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
- // src/tools/mcp/MCPProcessManager.ts
586
- var MCPProcessManager = class {
587
- connections = /* @__PURE__ */ new Map();
588
- getConnectionInfo(toolName, config) {
589
- const cached = this.connections.get(toolName);
590
- if (cached) return cached;
591
- const info = config.url ? { type: "url", url: config.url } : {
592
- type: "stdio",
593
- command: config.command,
594
- args: config.args,
595
- env: config.env,
596
- cwd: config.cwd
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
- remove(toolName) {
602
- return this.connections.delete(toolName);
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
- getToolNames() {
605
- return [...this.connections.keys()];
445
+ return false;
446
+ }
447
+ function normalizeIp(ip) {
448
+ if (ip.startsWith("::ffff:")) {
449
+ return ip.slice(7);
606
450
  }
607
- dispose() {
608
- this.connections.clear();
451
+ if (/^\d+\.\d+\.\d+\.\d+$/.test(ip)) {
452
+ return ip;
609
453
  }
610
- };
611
-
612
- // src/tools/mcp/registerMCPTools.ts
613
- async function registerMCPToolsFromConfig(runtime, registry, options = {}) {
614
- const configPath = options.configPath ?? process.env.MCP_CONFIG_PATH ?? path6.join(process.cwd(), "mcp.json");
615
- const dirPath = path6.dirname(configPath);
616
- const entryPoint = path6.basename(configPath);
617
- const toolName = options.toolName ?? chunkXC7KPJLZ_cjs.MCP_KIND;
618
- const loaded = await chunkLG5K7WOK_cjs.loadMCPTool(dirPath, { kind: chunkXC7KPJLZ_cjs.MCP_KIND, name: toolName, entryPoint });
619
- if (!loaded.mcpConfig) {
620
- throw new Error("mcp.json must have command or url");
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 manager = new MCPProcessManager();
623
- const connectionInfo = manager.getConnectionInfo(toolName, loaded.mcpConfig);
624
- const { client, transport } = await connectMCP(connectionInfo);
625
- const { tools } = await client.listTools();
626
- const specs = mcpToolsToSpecs(tools);
627
- registry.bulkRegister(specs);
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 chunkQW27JAFS_cjs.LangChainToolsHub; }
635
- });
636
523
  Object.defineProperty(exports, "createAgentTools", {
637
524
  enumerable: true,
638
- get: function () { return chunkQW27JAFS_cjs.createAgentTools; }
525
+ get: function () { return chunkIAEVDXWS_cjs.createAgentTools; }
639
526
  });
640
- Object.defineProperty(exports, "DirectoryScanner", {
527
+ Object.defineProperty(exports, "createLangChainToolsAsync", {
641
528
  enumerable: true,
642
- get: function () { return chunkLG5K7WOK_cjs.DirectoryScanner; }
643
- });
644
- Object.defineProperty(exports, "DiscoveryError", {
645
- enumerable: true,
646
- get: function () { return chunkLG5K7WOK_cjs.DiscoveryError; }
647
- });
648
- Object.defineProperty(exports, "SkillManifestError", {
649
- enumerable: true,
650
- get: function () { return chunkLG5K7WOK_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 chunkLG5K7WOK_cjs.buildFunctionToTool; }
533
+ get: function () { return chunkMDPU7EIO_cjs.buildFunctionToTool; }
655
534
  });
656
535
  Object.defineProperty(exports, "buildMcpPackage", {
657
536
  enumerable: true,
658
- get: function () { return chunkLG5K7WOK_cjs.buildMcpPackage; }
537
+ get: function () { return chunkMDPU7EIO_cjs.buildMcpPackage; }
659
538
  });
660
539
  Object.defineProperty(exports, "initProject", {
661
540
  enumerable: true,
662
- get: function () { return chunkLG5K7WOK_cjs.initProject; }
663
- });
664
- Object.defineProperty(exports, "loadMCPTool", {
665
- enumerable: true,
666
- get: function () { return chunkLG5K7WOK_cjs.loadMCPTool; }
667
- });
668
- Object.defineProperty(exports, "loadSkillDefinition", {
669
- enumerable: true,
670
- get: function () { return chunkLG5K7WOK_cjs.loadSkillDefinition; }
671
- });
672
- Object.defineProperty(exports, "parseSkillMd", {
673
- enumerable: true,
674
- get: function () { return chunkLG5K7WOK_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 chunkLG5K7WOK_cjs.runGeneratedMCP; }
545
+ get: function () { return chunkMDPU7EIO_cjs.runGeneratedMCP; }
679
546
  });
680
547
  Object.defineProperty(exports, "runMcpServer", {
681
548
  enumerable: true,
682
- get: function () { return chunkLG5K7WOK_cjs.runMcpServer; }
549
+ get: function () { return chunkMDPU7EIO_cjs.runMcpServer; }
683
550
  });
684
551
  Object.defineProperty(exports, "scan", {
685
552
  enumerable: true,
686
- get: function () { return chunkLG5K7WOK_cjs.scan; }
553
+ get: function () { return chunkMDPU7EIO_cjs.scan; }
687
554
  });
688
555
  Object.defineProperty(exports, "scanForTools", {
689
556
  enumerable: true,
690
- get: function () { return chunkLG5K7WOK_cjs.scanForTools; }
691
- });
692
- Object.defineProperty(exports, "scanSkillResources", {
693
- enumerable: true,
694
- get: function () { return chunkLG5K7WOK_cjs.scanSkillResources; }
695
- });
696
- Object.defineProperty(exports, "validateFrontmatter", {
697
- enumerable: true,
698
- get: function () { return chunkLG5K7WOK_cjs.validateFrontmatter; }
699
- });
700
- Object.defineProperty(exports, "BudgetManager", {
701
- enumerable: true,
702
- get: function () { return chunkXC7KPJLZ_cjs.BudgetManager; }
703
- });
704
- Object.defineProperty(exports, "EventLog", {
705
- enumerable: true,
706
- get: function () { return chunkXC7KPJLZ_cjs.EventLog; }
707
- });
708
- Object.defineProperty(exports, "Metrics", {
709
- enumerable: true,
710
- get: function () { return chunkXC7KPJLZ_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 chunkXC7KPJLZ_cjs.PTCRuntime; }
715
- });
716
- Object.defineProperty(exports, "PolicyDeniedError", {
717
- enumerable: true,
718
- get: function () { return chunkXC7KPJLZ_cjs.PolicyDeniedError; }
719
- });
720
- Object.defineProperty(exports, "PolicyEngine", {
721
- enumerable: true,
722
- get: function () { return chunkXC7KPJLZ_cjs.PolicyEngine; }
723
- });
724
- Object.defineProperty(exports, "SchemaValidationError", {
725
- enumerable: true,
726
- get: function () { return chunkXC7KPJLZ_cjs.SchemaValidationError; }
561
+ get: function () { return chunkA5B6Q6EG_cjs.PTCRuntime; }
727
562
  });
728
- Object.defineProperty(exports, "SchemaValidator", {
563
+ Object.defineProperty(exports, "createMCPServer", {
729
564
  enumerable: true,
730
- get: function () { return chunkXC7KPJLZ_cjs.SchemaValidator; }
565
+ get: function () { return chunkA5B6Q6EG_cjs.createMCPServer; }
731
566
  });
732
- Object.defineProperty(exports, "Tracing", {
567
+ Object.defineProperty(exports, "createMCPServerStreamableHttp", {
733
568
  enumerable: true,
734
- get: function () { return chunkXC7KPJLZ_cjs.Tracing; }
569
+ get: function () { return chunkA5B6Q6EG_cjs.createMCPServerStreamableHttp; }
735
570
  });
736
- Object.defineProperty(exports, "buildEvidence", {
571
+ Object.defineProperty(exports, "createMCPStreamableHttpHandler", {
737
572
  enumerable: true,
738
- get: function () { return chunkXC7KPJLZ_cjs.buildEvidence; }
573
+ get: function () { return chunkA5B6Q6EG_cjs.createMCPStreamableHttpHandler; }
739
574
  });
740
- Object.defineProperty(exports, "createLogger", {
575
+ Object.defineProperty(exports, "createOpenAPIServer", {
741
576
  enumerable: true,
742
- get: function () { return chunkXC7KPJLZ_cjs.createLogger; }
577
+ get: function () { return chunkA5B6Q6EG_cjs.createHttpService; }
743
578
  });
744
- Object.defineProperty(exports, "ensurePackageInCache", {
579
+ Object.defineProperty(exports, "createRuntimeFromConfig", {
745
580
  enumerable: true,
746
- get: function () { return chunkXC7KPJLZ_cjs.ensurePackageInCache; }
581
+ get: function () { return chunkA5B6Q6EG_cjs.createRuntimeFromConfig; }
747
582
  });
748
- Object.defineProperty(exports, "expandToolDescriptorsToRegistryNames", {
583
+ Object.defineProperty(exports, "createRuntimeFromConfigSync", {
749
584
  enumerable: true,
750
- get: function () { return chunkXC7KPJLZ_cjs.expandToolDescriptorsToRegistryNames; }
751
- });
752
- Object.defineProperty(exports, "getPackageEntryPath", {
753
- enumerable: true,
754
- get: function () { return chunkXC7KPJLZ_cjs.getPackageEntryPath; }
755
- });
756
- Object.defineProperty(exports, "importFromCache", {
757
- enumerable: true,
758
- get: function () { return chunkXC7KPJLZ_cjs.importFromCache; }
759
- });
760
- Object.defineProperty(exports, "isNpmToolDescriptor", {
761
- enumerable: true,
762
- get: function () { return chunkXC7KPJLZ_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 chunkXC7KPJLZ_cjs.loadToolConfig; }
767
- });
768
- Object.defineProperty(exports, "normalizeToolList", {
769
- enumerable: true,
770
- get: function () { return chunkXC7KPJLZ_cjs.normalizeToolList; }
771
- });
772
- Object.defineProperty(exports, "npmDescriptorToRegistryPrefix", {
773
- enumerable: true,
774
- get: function () { return chunkXC7KPJLZ_cjs.npmDescriptorToRegistryPrefix; }
775
- });
776
- Object.defineProperty(exports, "parseNpmToolDescriptor", {
777
- enumerable: true,
778
- get: function () { return chunkXC7KPJLZ_cjs.parseNpmToolDescriptor; }
779
- });
780
- Object.defineProperty(exports, "resolveLatestVersionFromRegistry", {
781
- enumerable: true,
782
- get: function () { return chunkXC7KPJLZ_cjs.resolveLatestVersionFromRegistry; }
783
- });
784
- Object.defineProperty(exports, "resolveNpmToolDescriptor", {
785
- enumerable: true,
786
- get: function () { return chunkXC7KPJLZ_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 chunkXC7KPJLZ_cjs.resolveSandboxedPath; }
791
- });
792
- Object.defineProperty(exports, "resolveToolDescriptor", {
793
- enumerable: true,
794
- get: function () { return chunkXC7KPJLZ_cjs.resolveToolDescriptor; }
593
+ get: function () { return chunkA5B6Q6EG_cjs.resolveSandboxedPath2; }
795
594
  });
796
- Object.defineProperty(exports, "sanitizeForLog", {
595
+ Object.defineProperty(exports, "runMCPServerOverStdio", {
797
596
  enumerable: true,
798
- get: function () { return chunkXC7KPJLZ_cjs.sanitizeForLog; }
597
+ get: function () { return chunkA5B6Q6EG_cjs.runMCPServerOverStdio; }
799
598
  });
800
599
  Object.defineProperty(exports, "setSandboxValidationEnabled", {
801
600
  enumerable: true,
802
- get: function () { return chunkXC7KPJLZ_cjs.setSandboxValidationEnabled; }
803
- });
804
- Object.defineProperty(exports, "summarizeForLog", {
805
- enumerable: true,
806
- get: function () { return chunkXC7KPJLZ_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;