@easynet/agent-tool 1.0.60 → 1.0.62

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 (114) hide show
  1. package/dist/api/adapters/LangChainToolsHub.d.ts.map +1 -1
  2. package/dist/api/expose/extension-init/initExtension.d.ts.map +1 -1
  3. package/dist/api/expose/index.d.ts +1 -1
  4. package/dist/api/expose/index.d.ts.map +1 -1
  5. package/dist/api/expose/mcp-build/build.d.ts +1 -3
  6. package/dist/api/expose/mcp-build/build.d.ts.map +1 -1
  7. package/dist/api/expose/mcp-build/index.d.ts +2 -2
  8. package/dist/api/expose/mcp-build/index.d.ts.map +1 -1
  9. package/dist/api/expose/mcp-build/run.d.ts +1 -3
  10. package/dist/api/expose/mcp-build/run.d.ts.map +1 -1
  11. package/dist/api/main.cjs +35 -15
  12. package/dist/api/main.d.ts +34 -0
  13. package/dist/api/main.d.ts.map +1 -1
  14. package/dist/api/main.js +8 -4
  15. package/dist/api/runtimeFromConfig.d.ts +2 -5
  16. package/dist/api/runtimeFromConfig.d.ts.map +1 -1
  17. package/dist/api/runtimeFromConfig.helpers.d.ts +12 -0
  18. package/dist/api/runtimeFromConfig.helpers.d.ts.map +1 -0
  19. package/dist/build.cjs +32 -0
  20. package/dist/build.cjs.map +1 -0
  21. package/dist/build.d.ts +13 -0
  22. package/dist/build.d.ts.map +1 -0
  23. package/dist/build.js +7 -0
  24. package/dist/build.js.map +1 -0
  25. package/dist/chunk-45S2HPVU.js +463 -0
  26. package/dist/chunk-45S2HPVU.js.map +1 -0
  27. package/dist/{chunk-Y75CRPVF.js → chunk-5J27MF7S.js} +11 -12
  28. package/dist/chunk-5J27MF7S.js.map +1 -0
  29. package/dist/chunk-DEDDPMBU.js +3 -0
  30. package/dist/chunk-DEDDPMBU.js.map +1 -0
  31. package/dist/chunk-FWWN4D2F.js +3 -0
  32. package/dist/chunk-FWWN4D2F.js.map +1 -0
  33. package/dist/chunk-ICHSEIZN.cjs +4 -0
  34. package/dist/chunk-ICHSEIZN.cjs.map +1 -0
  35. package/dist/chunk-JNIWNSCQ.cjs +494 -0
  36. package/dist/chunk-JNIWNSCQ.cjs.map +1 -0
  37. package/dist/{chunk-JXYANBTH.cjs → chunk-M2GEHWPN.cjs} +88 -1675
  38. package/dist/chunk-M2GEHWPN.cjs.map +1 -0
  39. package/dist/chunk-NKYFYALQ.js +181 -0
  40. package/dist/chunk-NKYFYALQ.js.map +1 -0
  41. package/dist/{chunk-DPOLJN7F.cjs → chunk-NMZ4IMEW.cjs} +22 -25
  42. package/dist/chunk-NMZ4IMEW.cjs.map +1 -0
  43. package/dist/chunk-NOGGIM7B.cjs +4 -0
  44. package/dist/chunk-NOGGIM7B.cjs.map +1 -0
  45. package/dist/chunk-OG5ZSXQ5.cjs +1099 -0
  46. package/dist/chunk-OG5ZSXQ5.cjs.map +1 -0
  47. package/dist/{chunk-WQMHMPNC.cjs → chunk-PYCCJF7C.cjs} +2 -68
  48. package/dist/chunk-PYCCJF7C.cjs.map +1 -0
  49. package/dist/chunk-QXQ4477T.js +49 -0
  50. package/dist/chunk-QXQ4477T.js.map +1 -0
  51. package/dist/chunk-R55NXJIH.cjs +184 -0
  52. package/dist/chunk-R55NXJIH.cjs.map +1 -0
  53. package/dist/{chunk-A5C2MUNA.js → chunk-RJAF5XY6.js} +72 -1630
  54. package/dist/chunk-RJAF5XY6.js.map +1 -0
  55. package/dist/chunk-RZTTO5MQ.js +65 -0
  56. package/dist/chunk-RZTTO5MQ.js.map +1 -0
  57. package/dist/{chunk-MUBZV65R.cjs → chunk-U67QDQFQ.cjs} +74 -41
  58. package/dist/chunk-U67QDQFQ.cjs.map +1 -0
  59. package/dist/chunk-WO4LZKPQ.cjs +359 -0
  60. package/dist/chunk-WO4LZKPQ.cjs.map +1 -0
  61. package/dist/{chunk-FCYBA7PR.js → chunk-WUMLZERG.js} +3 -62
  62. package/dist/chunk-WUMLZERG.js.map +1 -0
  63. package/dist/chunk-XPGHS4W7.cjs +73 -0
  64. package/dist/chunk-XPGHS4W7.cjs.map +1 -0
  65. package/dist/chunk-YL6RC7HQ.cjs +4 -0
  66. package/dist/chunk-YL6RC7HQ.cjs.map +1 -0
  67. package/dist/chunk-YLWTSNTT.js +3 -0
  68. package/dist/chunk-YLWTSNTT.js.map +1 -0
  69. package/dist/{chunk-IWM5B5DU.js → chunk-YMHUDRYE.js} +60 -31
  70. package/dist/chunk-YMHUDRYE.js.map +1 -0
  71. package/dist/chunk-YPGF5Y2Y.js +341 -0
  72. package/dist/chunk-YPGF5Y2Y.js.map +1 -0
  73. package/dist/chunk-YRFUGA3C.js +1072 -0
  74. package/dist/chunk-YRFUGA3C.js.map +1 -0
  75. package/dist/chunk-ZDSZHEQU.cjs +52 -0
  76. package/dist/chunk-ZDSZHEQU.cjs.map +1 -0
  77. package/dist/core/index.cjs +1 -0
  78. package/dist/core/index.js +1 -0
  79. package/dist/core/runtime.cjs +7 -5
  80. package/dist/core/runtime.js +3 -1
  81. package/dist/extension.cjs +58 -0
  82. package/dist/extension.cjs.map +1 -0
  83. package/dist/extension.d.ts +6 -0
  84. package/dist/extension.d.ts.map +1 -0
  85. package/dist/extension.js +5 -0
  86. package/dist/extension.js.map +1 -0
  87. package/dist/index.cjs +79 -592
  88. package/dist/index.cjs.map +1 -1
  89. package/dist/index.d.ts +51 -26
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +58 -518
  92. package/dist/index.js.map +1 -1
  93. package/dist/security.cjs +26 -0
  94. package/dist/security.cjs.map +1 -0
  95. package/dist/security.d.ts +6 -0
  96. package/dist/security.d.ts.map +1 -0
  97. package/dist/security.js +5 -0
  98. package/dist/security.js.map +1 -0
  99. package/dist/utils/cli/help.d.ts +2 -0
  100. package/dist/utils/cli/help.d.ts.map +1 -0
  101. package/dist/utils/cli/index.cjs +107 -81
  102. package/dist/utils/cli/index.cjs.map +1 -1
  103. package/dist/utils/cli/index.d.ts.map +1 -1
  104. package/dist/utils/cli/index.js +95 -69
  105. package/dist/utils/cli/index.js.map +1 -1
  106. package/package.json +18 -4
  107. package/dist/chunk-A5C2MUNA.js.map +0 -1
  108. package/dist/chunk-DPOLJN7F.cjs.map +0 -1
  109. package/dist/chunk-FCYBA7PR.js.map +0 -1
  110. package/dist/chunk-IWM5B5DU.js.map +0 -1
  111. package/dist/chunk-JXYANBTH.cjs.map +0 -1
  112. package/dist/chunk-MUBZV65R.cjs.map +0 -1
  113. package/dist/chunk-WQMHMPNC.cjs.map +0 -1
  114. package/dist/chunk-Y75CRPVF.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,644 +1,131 @@
1
1
  'use strict';
2
2
 
3
- var chunkMUBZV65R_cjs = require('./chunk-MUBZV65R.cjs');
4
- var chunkDPOLJN7F_cjs = require('./chunk-DPOLJN7F.cjs');
5
- var chunkJXYANBTH_cjs = require('./chunk-JXYANBTH.cjs');
6
- var chunkWQMHMPNC_cjs = require('./chunk-WQMHMPNC.cjs');
7
- var chunkQEJF3KDV_cjs = require('./chunk-QEJF3KDV.cjs');
3
+ require('./chunk-YL6RC7HQ.cjs');
4
+ var chunkWO4LZKPQ_cjs = require('./chunk-WO4LZKPQ.cjs');
5
+ var chunkR55NXJIH_cjs = require('./chunk-R55NXJIH.cjs');
6
+ var chunkU67QDQFQ_cjs = require('./chunk-U67QDQFQ.cjs');
7
+ require('./chunk-ICHSEIZN.cjs');
8
+ require('./chunk-NOGGIM7B.cjs');
9
+ var chunkNMZ4IMEW_cjs = require('./chunk-NMZ4IMEW.cjs');
10
+ var chunkM2GEHWPN_cjs = require('./chunk-M2GEHWPN.cjs');
8
11
  require('./chunk-UUNG3GL3.cjs');
9
- var async_hooks = require('async_hooks');
10
- var path6 = require('path');
11
- var url = require('url');
12
- var fs = require('fs');
13
- var yaml = require('js-yaml');
14
- var promises = require('dns/promises');
15
-
16
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
17
-
18
- var path6__default = /*#__PURE__*/_interopDefault(path6);
19
- var yaml__default = /*#__PURE__*/_interopDefault(yaml);
20
-
21
- function createContextRunner() {
22
- const storage = new async_hooks.AsyncLocalStorage();
23
- return {
24
- runWith(ctx, fn) {
25
- return storage.run(ctx, fn);
26
- },
27
- getContext() {
28
- const ctx = storage.getStore();
29
- if (ctx === void 0) {
30
- throw new Error("Extension context not set; invoke only through the extension adapter.");
31
- }
32
- return ctx;
33
- }
34
- };
35
- }
36
- function unwrapArgsForHandler(spec, args) {
37
- if (args == null || typeof args !== "object" || Array.isArray(args)) return args;
38
- const s = spec.inputSchema;
39
- if (s?.type !== "object" || !s.properties || typeof s.properties !== "object") return args;
40
- const props = s.properties;
41
- const argsProp = props.args;
42
- if (argsProp != null && typeof argsProp === "object" && argsProp.type === "object" && argsProp.properties != null) {
43
- const obj = args;
44
- if (Object.keys(obj).length === 1 && "args" in obj && typeof obj.args === "object" && obj.args !== null) {
45
- return obj.args;
46
- }
47
- }
48
- return args;
49
- }
50
- function createDynamicImportAdapter(options) {
51
- const { kind, packageRoot, getExtensionContext, contextRunner } = options;
52
- return {
53
- kind,
54
- async invoke(spec, args, execCtx) {
55
- const meta = spec._meta;
56
- const sourcePath = meta?.sourcePath;
57
- const exportName = meta?.exportName;
58
- if (!sourcePath || !exportName) {
59
- throw new Error(`Extension tool ${spec.name} missing _meta.sourcePath or _meta.exportName`);
60
- }
61
- const defaultArgs = meta?.defaultArgs ?? {};
62
- const mergedArgs = Object.keys(defaultArgs).length === 0 ? args : { ...defaultArgs, ...args };
63
- const handlerArgs = unwrapArgsForHandler(spec, mergedArgs);
64
- const resolvedPackageRoot = meta?.packageRoot ?? packageRoot;
65
- const modulePath = path6__default.default.join(resolvedPackageRoot, `${sourcePath}.js`);
66
- const mod = await import(url.pathToFileURL(modulePath).href);
67
- const handler = mod[exportName];
68
- if (typeof handler !== "function") {
69
- throw new Error(
70
- `Extension tool ${spec.name}: export "${exportName}" from ${sourcePath} is not a function`
71
- );
72
- }
73
- const ctx = getExtensionContext(execCtx, spec, mergedArgs);
74
- const output = await contextRunner.runWith(ctx, () => handler(handlerArgs));
75
- return {
76
- result: { result: output.result, evidence: output.evidence },
77
- raw: { evidence: output.evidence }
78
- };
79
- }
80
- };
81
- }
82
- function loadToolYaml(packageRoot, sourcePath) {
83
- const dir = path6__default.default.dirname(sourcePath);
84
- const base = path6__default.default.basename(sourcePath);
85
- const dirPath = path6__default.default.join(packageRoot, dir);
86
- const yamlPath = fs.existsSync(path6__default.default.join(dirPath, `${base}.tool.yaml`)) ? path6__default.default.join(dirPath, `${base}.tool.yaml`) : path6__default.default.join(dirPath, `${base}.example.yaml`);
87
- if (!fs.existsSync(yamlPath)) return void 0;
88
- try {
89
- const raw = fs.readFileSync(yamlPath, "utf-8");
90
- const data = yaml__default.default.load(raw);
91
- if (data == null || typeof data !== "object" || Array.isArray(data)) return void 0;
92
- const obj = data;
93
- const toolBlock = obj?.tool;
94
- const arr = toolBlock?.list;
95
- if (!Array.isArray(arr)) return void 0;
96
- const defaults = toolBlock?.defaults != null && typeof toolBlock.defaults === "object" && !Array.isArray(toolBlock.defaults) ? toolBlock.defaults : {};
97
- const item = arr.find(
98
- (e) => e != null && typeof e === "object" && e.name === base
99
- );
100
- if (!item || typeof item !== "object") return void 0;
101
- const { name: _n, ...rest } = item;
102
- const merged = { ...defaults, ...rest };
103
- if (Object.keys(merged).length === 0) return void 0;
104
- return merged;
105
- } catch {
106
- return void 0;
107
- }
108
- }
109
-
110
- // src/api/extension/registerFromManifest.ts
111
- function loadExtensionManifest(manifestPathOrDir) {
112
- const p = path6__default.default.resolve(manifestPathOrDir);
113
- let manifestPath;
114
- if (fs.existsSync(p) && fs.statSync(p).isFile()) {
115
- manifestPath = p;
116
- } else {
117
- const inDir = path6__default.default.join(p, "core-tools-manifest.json");
118
- const inDist = path6__default.default.join(p, "dist", "core-tools-manifest.json");
119
- manifestPath = fs.existsSync(inDir) ? inDir : inDist;
120
- }
121
- const raw = fs.readFileSync(manifestPath, "utf-8");
122
- const parsed = JSON.parse(raw);
123
- if (Array.isArray(parsed)) {
124
- return { entries: parsed };
125
- }
126
- return { kind: parsed.kind, entries: parsed.tools ?? [] };
127
- }
128
- function registerToolsFromManifest(registry, options) {
129
- const { manifestPathOrDir, kind: kindOpt, only, namePrefixes, packageRoot } = options;
130
- const loaded = loadExtensionManifest(manifestPathOrDir);
131
- const kind = kindOpt ?? loaded.kind ?? "extension";
132
- const entries = loaded.entries;
133
- const onlySet = only?.length ? new Set(only) : null;
134
- const registered = [];
135
- for (const entry of entries) {
136
- const toolName = entry.name ?? (entry.coreName != null ? entry.coreName.replace(/^[^/]+\//, "").replace(/^src\./, "") : entry.sourcePath.replace(/^src\//, "").replace(/\//g, "."));
137
- let spec = chunkQEJF3KDV_cjs.createToolSpec({
138
- name: toolName,
139
- kind,
140
- description: entry.description,
141
- inputSchema: entry.inputSchema,
142
- outputSchema: entry.outputSchema,
143
- capabilities: [],
144
- sideEffect: entry.sideEffect
145
- });
146
- if (onlySet && !onlySet.has(spec.name)) continue;
147
- if (namePrefixes?.length && !namePrefixes.some((prefix) => spec.name.startsWith(prefix))) {
148
- continue;
149
- }
150
- const defaultArgs = packageRoot != null ? loadToolYaml(packageRoot, entry.sourcePath) : void 0;
151
- spec = {
152
- ...spec,
153
- _meta: {
154
- ...spec._meta,
155
- sourcePath: entry.sourcePath,
156
- exportName: entry.exportName,
157
- shortName: toolName,
158
- ...packageRoot != null && { packageRoot },
159
- ...defaultArgs != null && Object.keys(defaultArgs).length > 0 && { defaultArgs }
160
- }
161
- };
162
- registry.register(spec);
163
- registered.push(spec);
164
- }
165
- return registered;
166
- }
167
- function resolveExtensionPackageRoot(metaUrlOrPath) {
168
- const dir = metaUrlOrPath.startsWith("file:") ? path6__default.default.dirname(url.fileURLToPath(metaUrlOrPath)) : path6__default.default.resolve(metaUrlOrPath);
169
- const dist = path6__default.default.join(dir, "dist");
170
- return fs.existsSync(dist) ? dist : dir;
171
- }
172
-
173
- // src/api/extension/registerExtension.ts
174
- function registerExtension(registry, options) {
175
- const { packagePath, kind: kindOpt, config, getContextRunner, only, namePrefixes } = options;
176
- const packageRoot = resolveExtensionPackageRoot(packagePath);
177
- const contextRunner = getContextRunner();
178
- const loaded = loadExtensionManifest(packagePath);
179
- const kind = kindOpt ?? loaded.kind ?? "extension";
180
- registerToolsFromManifest(registry, {
181
- manifestPathOrDir: packagePath,
182
- kind,
183
- only,
184
- namePrefixes,
185
- packageRoot
186
- });
187
- const adapter = createDynamicImportAdapter({
188
- kind,
189
- packageRoot,
190
- getExtensionContext: (execCtx, spec, mergedArgs) => {
191
- const defaultArgs = spec._meta?.defaultArgs ?? {};
192
- const baseConfig = config !== void 0 ? config : {};
193
- const toolOverrides = baseConfig?.toolOverrides;
194
- const shortName = spec._meta?.shortName ?? spec.name;
195
- const prefixWithVersion = shortName && spec.name.endsWith(shortName) && spec.name.length > shortName.length ? spec.name.slice(0, spec.name.length - shortName.length - 1) : "";
196
- const parts = prefixWithVersion ? prefixWithVersion.split(".") : [];
197
- const packageScopedKey = parts.length > 1 ? `${parts.slice(0, -1).join(".")}::${shortName}` : "";
198
- const perTool = toolOverrides?.[spec.name] ?? (packageScopedKey ? toolOverrides?.[packageScopedKey] : void 0) ?? toolOverrides?.[shortName] ?? {};
199
- const packagePrefix = parts.length > 1 ? parts.slice(0, -1).join(".") : "";
200
- const packageDefaults = baseConfig?.packageDefaults;
201
- const packageDefaultsForPkg = (packagePrefix && packageDefaults?.[packagePrefix]) ?? (prefixWithVersion && packageDefaults?.[prefixWithVersion]) ?? {};
202
- const baseWithoutOverrides = { ...baseConfig };
203
- delete baseWithoutOverrides.toolOverrides;
204
- delete baseWithoutOverrides.packageDefaults;
205
- const resolvedConfig = {
206
- ...defaultArgs,
207
- ...baseWithoutOverrides,
208
- ...packageDefaultsForPkg,
209
- ...perTool,
210
- ...mergedArgs ?? {}
211
- };
212
- return { execCtx, config: resolvedConfig };
213
- },
214
- contextRunner: {
215
- runWith(ctx, fn) {
216
- return contextRunner.runWith(ctx, fn);
217
- }
218
- }
219
- });
220
- return adapter;
221
- }
222
-
223
- // src/api/extension/createExtension.ts
224
- function resolvePackagePath(options) {
225
- if (options.packagePath != null && options.packagePath !== "") return options.packagePath;
226
- if (options.importMeta?.url) return path6__default.default.dirname(url.fileURLToPath(options.importMeta.url));
227
- throw new Error("createExtension: provide packagePath or importMeta");
228
- }
229
- function createExtension(options) {
230
- const packagePath = resolvePackagePath(options);
231
- const kind = options.kind;
232
- const buildConfig = "buildConfig" in options ? options.buildConfig : void 0;
233
- const contextRunner = createContextRunner();
234
- return {
235
- register(registry, userConfigOrOpts, opts) {
236
- const config = buildConfig ? buildConfig(userConfigOrOpts) : userConfigOrOpts;
237
- return registerExtension(registry, {
238
- packagePath,
239
- kind,
240
- config,
241
- getContextRunner: () => contextRunner,
242
- only: opts?.only ?? userConfigOrOpts?.only,
243
- namePrefixes: opts?.namePrefixes ?? userConfigOrOpts?.namePrefixes
244
- });
245
- },
246
- getContext() {
247
- return contextRunner.getContext();
248
- },
249
- runWith(ctx, fn) {
250
- return contextRunner.runWith(ctx, fn);
251
- }
252
- };
253
- }
254
- function copyToolYamlRecursive(srcDir, destDir) {
255
- if (!fs.existsSync(srcDir)) return 0;
256
- let copied = 0;
257
- for (const e of fs.readdirSync(srcDir, { withFileTypes: true })) {
258
- const srcPath = path6__default.default.join(srcDir, e.name);
259
- const destPath = path6__default.default.join(destDir, e.name);
260
- if (e.isFile() && (e.name.endsWith(".tool.yaml") || e.name.endsWith(".example.yaml"))) {
261
- if (!fs.existsSync(destDir)) fs.mkdirSync(destDir, { recursive: true });
262
- fs.copyFileSync(srcPath, destPath);
263
- copied++;
264
- } else if (e.isDirectory()) {
265
- copied += copyToolYamlRecursive(srcPath, destPath);
266
- }
267
- }
268
- return copied;
269
- }
270
- function generateExtensionManifest(projectRoot = process.cwd(), options = {}) {
271
- const root = path6__default.default.resolve(projectRoot);
272
- const outDir = path6__default.default.resolve(options.outDir ?? path6__default.default.join(root, "dist"));
273
- const kind = options.kind ?? "core";
274
- const { specs, errors } = chunkJXYANBTH_cjs.scanForTools({
275
- projectPath: root,
276
- include: options.include ?? ["**/*.ts"],
277
- tsconfigPath: options.tsconfigPath
278
- });
279
- if (errors.length > 0) {
280
- console.warn("generateExtensionManifest: scan errors", errors);
281
- }
282
- const entries = specs.map((spec) => {
283
- const sourcePathNoExt = (spec.sourcePath ?? "").replace(/\.(ts|tsx)$/i, "");
284
- const pathBasedName = sourcePathNoExt.replace(/^src\//, "").replace(/\//g, ".");
285
- const name = spec.exportName ?? pathBasedName;
286
- const sideEffect = spec._meta?.hitl?.sideEffect ?? "none";
287
- return {
288
- name,
289
- description: spec.description ?? sourcePathNoExt,
290
- inputSchema: spec.inputSchema ?? { type: "object", additionalProperties: true },
291
- outputSchema: spec.outputSchema ?? { type: "object", additionalProperties: true },
292
- sourcePath: sourcePathNoExt,
293
- exportName: spec.exportName ?? "",
294
- sideEffect
295
- };
296
- });
297
- if (!fs.existsSync(outDir)) fs.mkdirSync(outDir, { recursive: true });
298
- const manifestPath = path6__default.default.join(outDir, "core-tools-manifest.json");
299
- fs.writeFileSync(
300
- manifestPath,
301
- JSON.stringify({ kind, tools: entries }, null, 2),
302
- "utf-8"
303
- );
304
- let toolYamlCopied = 0;
305
- const copyDirs = options.copyToolYamlDirs;
306
- if (copyDirs?.length) {
307
- for (const d of copyDirs) {
308
- const srcDir = path6__default.default.join(root, d);
309
- const destDir = path6__default.default.join(outDir, d);
310
- try {
311
- toolYamlCopied += copyToolYamlRecursive(srcDir, destDir);
312
- } catch {
313
- }
314
- }
315
- }
316
- return { manifestPath, toolsCount: entries.length, toolYamlCopied };
317
- }
318
- function generateManifest(projectRoot = process.cwd(), options = {}) {
319
- const { manifestPath, toolsCount, toolYamlCopied } = generateExtensionManifest(projectRoot, {
320
- include: ["src/**/*.ts"],
321
- copyToolYamlDirs: ["src"],
322
- ...options
323
- });
324
- console.log(`Wrote ${toolsCount} tools to ${path6__default.default.relative(projectRoot, manifestPath)}`);
325
- if (toolYamlCopied > 0) console.log(`Copied ${toolYamlCopied} .tool.yaml/.example.yaml file(s) to dist`);
326
- }
327
-
328
- // src/api/extension/overrideWithConfig.ts
329
- function overrideWithConfig(defaults, config) {
330
- const c = config != null && typeof config === "object" && !Array.isArray(config) ? config : {};
331
- const out = { ...defaults };
332
- for (const key of Object.keys(defaults)) {
333
- if (key in c && c[key] !== void 0) {
334
- out[key] = c[key];
335
- }
336
- }
337
- return out;
338
- }
12
+ require('./chunk-OG5ZSXQ5.cjs');
13
+ var chunkJNIWNSCQ_cjs = require('./chunk-JNIWNSCQ.cjs');
14
+ var chunkZDSZHEQU_cjs = require('./chunk-ZDSZHEQU.cjs');
15
+ var chunkPYCCJF7C_cjs = require('./chunk-PYCCJF7C.cjs');
16
+ var chunkXPGHS4W7_cjs = require('./chunk-XPGHS4W7.cjs');
17
+ var chunkQEJF3KDV_cjs = require('./chunk-QEJF3KDV.cjs');
339
18
 
340
- // src/api/extension/groupPrefix.ts
341
- function getGroupNamePrefixes(options) {
342
- const { groups, only, groupPrefixMap } = options;
343
- const onlySet = only?.length ? new Set(only) : null;
344
- const namePrefixes = !onlySet && groups?.length ? groups.map((g) => groupPrefixMap[g]).filter((x) => x != null) : void 0;
345
- return {
346
- ...onlySet ? { only: Array.from(onlySet) } : {},
347
- ...namePrefixes?.length ? { namePrefixes } : {}
348
- };
349
- }
350
- async function validateUrl(url, options) {
351
- let parsed;
352
- try {
353
- parsed = new URL(url);
354
- } catch {
355
- throw chunkWQMHMPNC_cjs.createTaggedError(
356
- "HTTP_DISALLOWED_HOST",
357
- `Invalid URL: ${url}`,
358
- { url }
359
- );
360
- }
361
- if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
362
- throw chunkWQMHMPNC_cjs.createTaggedError(
363
- "HTTP_DISALLOWED_HOST",
364
- `Protocol not allowed: ${parsed.protocol}. Only http: and https: are supported.`,
365
- { url, protocol: parsed.protocol }
366
- );
367
- }
368
- const hostname = parsed.hostname;
369
- if (!isHostAllowed(hostname, options.allowedHosts)) {
370
- throw chunkWQMHMPNC_cjs.createTaggedError(
371
- "HTTP_DISALLOWED_HOST",
372
- `Host "${hostname}" is not in the allowed hosts list`,
373
- { url, hostname, allowedHosts: options.allowedHosts }
374
- );
375
- }
376
- if (isHostBlocked(hostname, options.blockedHosts)) {
377
- throw chunkWQMHMPNC_cjs.createTaggedError(
378
- "HTTP_DISALLOWED_HOST",
379
- `Host "${hostname}" is in the blocked hosts list`,
380
- { url, hostname, blockedHosts: options.blockedHosts }
381
- );
382
- }
383
- try {
384
- const { address } = await promises.lookup(hostname);
385
- if (isIpInBlockedCidrs(address, options.blockedCidrs)) {
386
- throw chunkWQMHMPNC_cjs.createTaggedError(
387
- "HTTP_DISALLOWED_HOST",
388
- `Host "${hostname}" resolves to blocked IP: ${address}`,
389
- { url, hostname, resolvedIp: address }
390
- );
391
- }
392
- } catch (err) {
393
- if (err instanceof Error && err.kind === "HTTP_DISALLOWED_HOST") {
394
- throw err;
395
- }
396
- throw chunkWQMHMPNC_cjs.createTaggedError(
397
- "HTTP_DISALLOWED_HOST",
398
- `DNS resolution failed for host "${hostname}": ${err instanceof Error ? err.message : String(err)}`,
399
- { url, hostname }
400
- );
401
- }
402
- return parsed;
403
- }
404
- function isHostAllowed(hostname, allowedHosts) {
405
- for (const pattern of allowedHosts) {
406
- if (pattern === "*") {
407
- return true;
408
- }
409
- if (pattern.startsWith("*.")) {
410
- const suffix = pattern.slice(1);
411
- if (hostname.endsWith(suffix) || hostname === pattern.slice(2)) {
412
- return true;
413
- }
414
- } else if (hostname === pattern) {
415
- return true;
416
- }
417
- }
418
- return false;
419
- }
420
- function isHostBlocked(hostname, blockedHosts) {
421
- for (const pattern of blockedHosts) {
422
- if (pattern === "*") {
423
- return true;
424
- }
425
- if (pattern.startsWith("*.")) {
426
- const suffix = pattern.slice(1);
427
- if (hostname.endsWith(suffix) || hostname === pattern.slice(2)) {
428
- return true;
429
- }
430
- } else if (hostname === pattern) {
431
- return true;
432
- }
433
- }
434
- return false;
435
- }
436
- function isIpInBlockedCidrs(ip, cidrs) {
437
- const normalizedIp = normalizeIp(ip);
438
- if (!normalizedIp) return false;
439
- for (const cidr of cidrs) {
440
- if (cidr.includes(":")) {
441
- if (!ip.includes(":")) continue;
442
- if (isIpv6InCidr(ip, cidr)) return true;
443
- } else {
444
- if (isIpv4InCidr(normalizedIp, cidr)) return true;
445
- }
446
- }
447
- return false;
448
- }
449
- function normalizeIp(ip) {
450
- if (ip.startsWith("::ffff:")) {
451
- return ip.slice(7);
452
- }
453
- if (/^\d+\.\d+\.\d+\.\d+$/.test(ip)) {
454
- return ip;
455
- }
456
- return null;
457
- }
458
- function isIpv4InCidr(ip, cidr) {
459
- const [cidrIp, prefixStr] = cidr.split("/");
460
- if (!cidrIp || !prefixStr) return false;
461
- const prefix = parseInt(prefixStr, 10);
462
- if (isNaN(prefix) || prefix < 0 || prefix > 32) return false;
463
- const ipNum = ipv4ToNum(ip);
464
- const cidrNum = ipv4ToNum(cidrIp);
465
- if (ipNum === null || cidrNum === null) return false;
466
- const mask = prefix === 0 ? 0 : -1 << 32 - prefix >>> 0;
467
- return (ipNum & mask) === (cidrNum & mask);
468
- }
469
- function ipv4ToNum(ip) {
470
- const parts = ip.split(".");
471
- if (parts.length !== 4) return null;
472
- let num = 0;
473
- for (const part of parts) {
474
- const n = parseInt(part, 10);
475
- if (isNaN(n) || n < 0 || n > 255) return null;
476
- num = num << 8 | n;
477
- }
478
- return num >>> 0;
479
- }
480
- function isIpv6InCidr(ip, cidr) {
481
- const [cidrIp, prefixStr] = cidr.split("/");
482
- if (!cidrIp || !prefixStr) return false;
483
- const prefix = parseInt(prefixStr, 10);
484
- if (isNaN(prefix)) return false;
485
- const ipBytes = expandIpv6(ip);
486
- const cidrBytes = expandIpv6(cidrIp);
487
- if (!ipBytes || !cidrBytes) return false;
488
- const fullBytes = Math.floor(prefix / 8);
489
- for (let i = 0; i < fullBytes && i < 16; i++) {
490
- if (ipBytes[i] !== cidrBytes[i]) return false;
491
- }
492
- const remainingBits = prefix % 8;
493
- if (remainingBits > 0 && fullBytes < 16) {
494
- const mask = -1 << 8 - remainingBits & 255;
495
- if ((ipBytes[fullBytes] & mask) !== (cidrBytes[fullBytes] & mask)) return false;
496
- }
497
- return true;
498
- }
499
- function expandIpv6(ip) {
500
- const zoneIdx = ip.indexOf("%");
501
- if (zoneIdx !== -1) ip = ip.slice(0, zoneIdx);
502
- const parts = ip.split("::");
503
- if (parts.length > 2) return null;
504
- const bytes = new Array(16).fill(0);
505
- const expandGroup = (group) => {
506
- if (!group) return [];
507
- return group.split(":").flatMap((hex) => {
508
- const val = parseInt(hex || "0", 16);
509
- return [val >> 8 & 255, val & 255];
510
- });
511
- };
512
- if (parts.length === 1) {
513
- const expanded = expandGroup(parts[0]);
514
- if (expanded.length !== 16) return null;
515
- return expanded;
516
- }
517
- const left = expandGroup(parts[0]);
518
- const right = expandGroup(parts[1]);
519
- if (left.length + right.length > 16) return null;
520
- for (let i = 0; i < left.length; i++) bytes[i] = left[i];
521
- for (let i = 0; i < right.length; i++) bytes[16 - right.length + i] = right[i];
522
- return bytes;
523
- }
19
+ // src/index.ts
20
+ var platformApi = {
21
+ build: {
22
+ initProject: chunkNMZ4IMEW_cjs.initProject,
23
+ buildMCPPackage: chunkNMZ4IMEW_cjs.buildMCPPackage,
24
+ runMCPServer: chunkNMZ4IMEW_cjs.runMCPServer,
25
+ scanForTools: chunkJNIWNSCQ_cjs.scanForTools,
26
+ scan: chunkJNIWNSCQ_cjs.scan
27
+ },
28
+ extension: {
29
+ createExtension: chunkWO4LZKPQ_cjs.createExtension,
30
+ generateManifest: chunkWO4LZKPQ_cjs.generateManifest,
31
+ generateExtensionManifest: chunkWO4LZKPQ_cjs.generateExtensionManifest,
32
+ registerExtension: chunkWO4LZKPQ_cjs.registerExtension,
33
+ registerToolsFromManifest: chunkWO4LZKPQ_cjs.registerToolsFromManifest,
34
+ loadExtensionManifest: chunkWO4LZKPQ_cjs.loadExtensionManifest,
35
+ loadToolYaml: chunkWO4LZKPQ_cjs.loadToolYaml,
36
+ resolveExtensionPackageRoot: chunkWO4LZKPQ_cjs.resolveExtensionPackageRoot,
37
+ overrideWithConfig: chunkWO4LZKPQ_cjs.overrideWithConfig,
38
+ getGroupNamePrefixes: chunkWO4LZKPQ_cjs.getGroupNamePrefixes,
39
+ createDynamicImportAdapter: chunkWO4LZKPQ_cjs.createDynamicImportAdapter,
40
+ createContextRunner: chunkWO4LZKPQ_cjs.createContextRunner
41
+ },
42
+ security: {
43
+ resolveSandboxedPath: chunkZDSZHEQU_cjs.resolveSandboxedPath,
44
+ setSandboxValidationEnabled: chunkZDSZHEQU_cjs.setSandboxValidationEnabled,
45
+ validateUrl: chunkR55NXJIH_cjs.validateUrl,
46
+ isIpInBlockedCidrs: chunkR55NXJIH_cjs.isIpInBlockedCidrs
47
+ },
48
+ core: {
49
+ createToolSpec: chunkQEJF3KDV_cjs.createToolSpec,
50
+ DEFAULT_INPUT_SCHEMA: chunkQEJF3KDV_cjs.DEFAULT_INPUT_SCHEMA,
51
+ DEFAULT_OUTPUT_SCHEMA: chunkQEJF3KDV_cjs.DEFAULT_OUTPUT_SCHEMA
52
+ },
53
+ runtime: {
54
+ createTaggedError: chunkXPGHS4W7_cjs.createTaggedError,
55
+ withRetry: chunkXPGHS4W7_cjs.withRetry,
56
+ isRetryable: chunkXPGHS4W7_cjs.isRetryable,
57
+ ToolRegistry: chunkPYCCJF7C_cjs.ToolRegistry
58
+ }
59
+ };
524
60
 
525
61
  Object.defineProperty(exports, "createAgentTools", {
526
62
  enumerable: true,
527
- get: function () { return chunkMUBZV65R_cjs.createAgentTools; }
63
+ get: function () { return chunkU67QDQFQ_cjs.createAgentTools; }
528
64
  });
529
65
  Object.defineProperty(exports, "createLangChainToolsAsync", {
530
66
  enumerable: true,
531
- get: function () { return chunkMUBZV65R_cjs.createLangChainToolsAsync; }
67
+ get: function () { return chunkU67QDQFQ_cjs.createLangChainToolsAsync; }
532
68
  });
533
- Object.defineProperty(exports, "buildFunctionToTool", {
69
+ Object.defineProperty(exports, "langchainApi", {
534
70
  enumerable: true,
535
- get: function () { return chunkDPOLJN7F_cjs.buildFunctionToTool; }
71
+ get: function () { return chunkU67QDQFQ_cjs.langchainApi; }
536
72
  });
537
- Object.defineProperty(exports, "buildMcpPackage", {
73
+ Object.defineProperty(exports, "mcpApi", {
538
74
  enumerable: true,
539
- get: function () { return chunkDPOLJN7F_cjs.buildMcpPackage; }
75
+ get: function () { return chunkU67QDQFQ_cjs.mcpApi; }
540
76
  });
541
- Object.defineProperty(exports, "initProject", {
77
+ Object.defineProperty(exports, "openApi", {
542
78
  enumerable: true,
543
- get: function () { return chunkDPOLJN7F_cjs.initProject; }
79
+ get: function () { return chunkU67QDQFQ_cjs.openApi; }
544
80
  });
545
- Object.defineProperty(exports, "runGeneratedMCP", {
81
+ Object.defineProperty(exports, "runtimeApi", {
546
82
  enumerable: true,
547
- get: function () { return chunkDPOLJN7F_cjs.runGeneratedMCP; }
548
- });
549
- Object.defineProperty(exports, "runMcpServer", {
550
- enumerable: true,
551
- get: function () { return chunkDPOLJN7F_cjs.runMcpServer; }
552
- });
553
- Object.defineProperty(exports, "PTCRuntime", {
554
- enumerable: true,
555
- get: function () { return chunkJXYANBTH_cjs.PTCRuntime; }
83
+ get: function () { return chunkU67QDQFQ_cjs.runtimeApi; }
556
84
  });
557
85
  Object.defineProperty(exports, "createMCPServer", {
558
86
  enumerable: true,
559
- get: function () { return chunkJXYANBTH_cjs.createMCPServer; }
87
+ get: function () { return chunkM2GEHWPN_cjs.createMCPServer; }
560
88
  });
561
89
  Object.defineProperty(exports, "createMCPServerStreamableHttp", {
562
90
  enumerable: true,
563
- get: function () { return chunkJXYANBTH_cjs.createMCPServerStreamableHttp; }
91
+ get: function () { return chunkM2GEHWPN_cjs.createMCPServerStreamableHttp; }
564
92
  });
565
93
  Object.defineProperty(exports, "createMCPStreamableHttpHandler", {
566
94
  enumerable: true,
567
- get: function () { return chunkJXYANBTH_cjs.createMCPStreamableHttpHandler; }
95
+ get: function () { return chunkM2GEHWPN_cjs.createMCPStreamableHttpHandler; }
568
96
  });
569
97
  Object.defineProperty(exports, "createOpenAPIServer", {
570
98
  enumerable: true,
571
- get: function () { return chunkJXYANBTH_cjs.createHttpService; }
99
+ get: function () { return chunkM2GEHWPN_cjs.createHttpService; }
572
100
  });
573
101
  Object.defineProperty(exports, "createRuntimeFromConfig", {
574
102
  enumerable: true,
575
- get: function () { return chunkJXYANBTH_cjs.createRuntimeFromConfig; }
103
+ get: function () { return chunkM2GEHWPN_cjs.createRuntimeFromConfig; }
576
104
  });
577
105
  Object.defineProperty(exports, "createRuntimeFromConfigSync", {
578
106
  enumerable: true,
579
- get: function () { return chunkJXYANBTH_cjs.createRuntimeFromConfigSync; }
580
- });
581
- Object.defineProperty(exports, "loadToolConfig", {
582
- enumerable: true,
583
- get: function () { return chunkJXYANBTH_cjs.loadToolConfig; }
584
- });
585
- Object.defineProperty(exports, "resolveSandboxedPath", {
586
- enumerable: true,
587
- get: function () { return chunkJXYANBTH_cjs.resolveSandboxedPath2; }
107
+ get: function () { return chunkM2GEHWPN_cjs.createRuntimeFromConfigSync; }
588
108
  });
589
109
  Object.defineProperty(exports, "runMCPServerOverStdio", {
590
110
  enumerable: true,
591
- get: function () { return chunkJXYANBTH_cjs.runMCPServerOverStdio; }
592
- });
593
- Object.defineProperty(exports, "scan", {
594
- enumerable: true,
595
- get: function () { return chunkJXYANBTH_cjs.scan; }
596
- });
597
- Object.defineProperty(exports, "scanForTools", {
598
- enumerable: true,
599
- get: function () { return chunkJXYANBTH_cjs.scanForTools; }
600
- });
601
- Object.defineProperty(exports, "setSandboxValidationEnabled", {
602
- enumerable: true,
603
- get: function () { return chunkJXYANBTH_cjs.setSandboxValidationEnabled; }
111
+ get: function () { return chunkM2GEHWPN_cjs.runMCPServerOverStdio; }
604
112
  });
605
113
  Object.defineProperty(exports, "ToolRegistry", {
606
114
  enumerable: true,
607
- get: function () { return chunkWQMHMPNC_cjs.ToolRegistry; }
115
+ get: function () { return chunkPYCCJF7C_cjs.ToolRegistry; }
608
116
  });
609
117
  Object.defineProperty(exports, "createTaggedError", {
610
118
  enumerable: true,
611
- get: function () { return chunkWQMHMPNC_cjs.createTaggedError; }
612
- });
613
- Object.defineProperty(exports, "DEFAULT_INPUT_SCHEMA", {
614
- enumerable: true,
615
- get: function () { return chunkQEJF3KDV_cjs.DEFAULT_INPUT_SCHEMA; }
616
- });
617
- Object.defineProperty(exports, "DEFAULT_OUTPUT_SCHEMA", {
618
- enumerable: true,
619
- get: function () { return chunkQEJF3KDV_cjs.DEFAULT_OUTPUT_SCHEMA; }
119
+ get: function () { return chunkXPGHS4W7_cjs.createTaggedError; }
620
120
  });
621
- Object.defineProperty(exports, "createToolSpec", {
121
+ Object.defineProperty(exports, "isRetryable", {
622
122
  enumerable: true,
623
- get: function () { return chunkQEJF3KDV_cjs.createToolSpec; }
123
+ get: function () { return chunkXPGHS4W7_cjs.isRetryable; }
624
124
  });
625
- Object.defineProperty(exports, "normalizeToolName", {
125
+ Object.defineProperty(exports, "withRetry", {
626
126
  enumerable: true,
627
- get: function () { return chunkQEJF3KDV_cjs.normalizeToolName; }
127
+ get: function () { return chunkXPGHS4W7_cjs.withRetry; }
628
128
  });
629
- exports.createContextRunner = createContextRunner;
630
- exports.createDynamicImportAdapter = createDynamicImportAdapter;
631
- exports.createExtension = createExtension;
632
- exports.generateExtensionManifest = generateExtensionManifest;
633
- exports.generateManifest = generateManifest;
634
- exports.getGroupNamePrefixes = getGroupNamePrefixes;
635
- exports.isIpInBlockedCidrs = isIpInBlockedCidrs;
636
- exports.loadExtensionManifest = loadExtensionManifest;
637
- exports.loadToolYaml = loadToolYaml;
638
- exports.overrideWithConfig = overrideWithConfig;
639
- exports.registerExtension = registerExtension;
640
- exports.registerToolsFromManifest = registerToolsFromManifest;
641
- exports.resolveExtensionPackageRoot = resolveExtensionPackageRoot;
642
- exports.validateUrl = validateUrl;
129
+ exports.platformApi = platformApi;
643
130
  //# sourceMappingURL=index.cjs.map
644
131
  //# sourceMappingURL=index.cjs.map