@easynet/agent-tool 1.0.77 → 1.0.78
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/dist/api/createAgentTools.d.ts.map +1 -1
- package/dist/api/main.cjs +18 -17
- package/dist/api/main.js +3 -2
- package/dist/api/runtimeFromConfig.d.ts +9 -0
- package/dist/api/runtimeFromConfig.d.ts.map +1 -1
- package/dist/{chunk-BMAYX22K.js → chunk-42UNSIZJ.js} +9 -8
- package/dist/chunk-42UNSIZJ.js.map +1 -0
- package/dist/chunk-5QH7YY4Z.cjs +101 -0
- package/dist/chunk-5QH7YY4Z.cjs.map +1 -0
- package/dist/{chunk-OKKBKZWK.cjs → chunk-BXFRXPLX.cjs} +19 -109
- package/dist/chunk-BXFRXPLX.cjs.map +1 -0
- package/dist/{chunk-LUKSY7VK.js → chunk-DVYM6VRD.js} +42 -6
- package/dist/chunk-DVYM6VRD.js.map +1 -0
- package/dist/{chunk-GSOJCOKN.js → chunk-EFILLN6Q.js} +18 -104
- package/dist/chunk-EFILLN6Q.js.map +1 -0
- package/dist/{chunk-CEVOKZFT.cjs → chunk-EIIHED57.cjs} +11 -9
- package/dist/chunk-EIIHED57.cjs.map +1 -0
- package/dist/{chunk-EZDDKTCF.cjs → chunk-GXFDYM3O.cjs} +59 -23
- package/dist/chunk-GXFDYM3O.cjs.map +1 -0
- package/dist/chunk-JZ6LKSAS.js +92 -0
- package/dist/chunk-JZ6LKSAS.js.map +1 -0
- package/dist/extension.cjs +20 -19
- package/dist/extension.js +2 -1
- package/dist/index.cjs +30 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/utils/cli/index.cjs +12 -12
- package/dist/utils/cli/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-BMAYX22K.js.map +0 -1
- package/dist/chunk-CEVOKZFT.cjs.map +0 -1
- package/dist/chunk-EZDDKTCF.cjs.map +0 -1
- package/dist/chunk-GSOJCOKN.js.map +0 -1
- package/dist/chunk-LUKSY7VK.js.map +0 -1
- package/dist/chunk-OKKBKZWK.cjs.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk5QH7YY4Z_cjs = require('./chunk-5QH7YY4Z.cjs');
|
|
4
|
+
var chunkEIIHED57_cjs = require('./chunk-EIIHED57.cjs');
|
|
4
5
|
var chunkUUNG3GL3_cjs = require('./chunk-UUNG3GL3.cjs');
|
|
5
6
|
var chunk33N4Y6IS_cjs = require('./chunk-33N4Y6IS.cjs');
|
|
6
7
|
var agentCommon = require('@easynet/agent-common');
|
|
@@ -118,7 +119,7 @@ function mergeHostLists(a, b) {
|
|
|
118
119
|
return out;
|
|
119
120
|
}
|
|
120
121
|
function resolveEmbeddedToolConfigPath() {
|
|
121
|
-
const moduleDir = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-
|
|
122
|
+
const moduleDir = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-GXFDYM3O.cjs', document.baseURI).href))));
|
|
122
123
|
const candidates = [
|
|
123
124
|
path.resolve(moduleDir, "../../config/tool.yaml"),
|
|
124
125
|
// src/api -> config
|
|
@@ -133,18 +134,46 @@ function resolveEmbeddedToolConfigPath() {
|
|
|
133
134
|
return candidates[0];
|
|
134
135
|
}
|
|
135
136
|
var EMBEDDED_TOOL_CONFIG_PATH = resolveEmbeddedToolConfigPath();
|
|
137
|
+
function collectExtensionEmbeddedDefaults(exts) {
|
|
138
|
+
const merged = {};
|
|
139
|
+
for (const ext of exts) {
|
|
140
|
+
const configPath = [path.resolve(ext.packageRoot, "dist/config/tool.yaml"), path.resolve(ext.packageRoot, "config/tool.yaml")].find(
|
|
141
|
+
fs.existsSync
|
|
142
|
+
) ?? "";
|
|
143
|
+
if (!configPath) continue;
|
|
144
|
+
try {
|
|
145
|
+
const toolDefaults = chunkEIIHED57_cjs.loadToolConfig(configPath).toolDefaults ?? {};
|
|
146
|
+
if (Object.keys(toolDefaults).length === 0) continue;
|
|
147
|
+
const manifest = chunk5QH7YY4Z_cjs.loadExtensionManifest(ext.packageRoot);
|
|
148
|
+
const ownToolNames = /* @__PURE__ */ new Set();
|
|
149
|
+
for (const e of manifest.entries) {
|
|
150
|
+
if (e.name) ownToolNames.add(e.name);
|
|
151
|
+
if (e.sourcePath) {
|
|
152
|
+
ownToolNames.add(e.sourcePath.replace(/^src\//, "").replace(/\//g, "."));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
for (const [k, v] of Object.entries(toolDefaults)) {
|
|
156
|
+
if (ownToolNames.has(k)) {
|
|
157
|
+
merged[k] = v;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
} catch {
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return merged;
|
|
164
|
+
}
|
|
136
165
|
function loadMergedToolConfig(overridePath) {
|
|
137
|
-
const baseConfig =
|
|
166
|
+
const baseConfig = chunkEIIHED57_cjs.loadToolConfig(EMBEDDED_TOOL_CONFIG_PATH);
|
|
138
167
|
if (!overridePath) return baseConfig;
|
|
139
|
-
const overrideConfig =
|
|
168
|
+
const overrideConfig = chunkEIIHED57_cjs.loadToolConfig(overridePath);
|
|
140
169
|
return agentCommon.deepMerge({}, baseConfig, overrideConfig);
|
|
141
170
|
}
|
|
142
|
-
function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve) {
|
|
171
|
+
function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve, extensionEmbeddedDefaults) {
|
|
143
172
|
const coreTools = opts.coreTools ?? { sandboxRoot: process.cwd(), allowedHosts: [], enableSandboxValidation: false };
|
|
144
173
|
{
|
|
145
174
|
const updates = {};
|
|
146
175
|
if (toolConfig.sandboxedPath && typeof toolConfig.sandboxedPath === "string") {
|
|
147
|
-
updates.sandboxRoot =
|
|
176
|
+
updates.sandboxRoot = chunkEIIHED57_cjs.resolveSandboxedPath(configPathForResolve, toolConfig.sandboxedPath);
|
|
148
177
|
}
|
|
149
178
|
if (typeof toolConfig.enableSandboxValidation === "boolean") {
|
|
150
179
|
updates.enableSandboxValidation = toolConfig.enableSandboxValidation;
|
|
@@ -159,7 +188,11 @@ function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve) {
|
|
|
159
188
|
updates.blockedCidrs = coreTools.blockedCidrs;
|
|
160
189
|
}
|
|
161
190
|
let hasToolDefaults = false;
|
|
162
|
-
const flatOverrides = {
|
|
191
|
+
const flatOverrides = {
|
|
192
|
+
...extensionEmbeddedDefaults,
|
|
193
|
+
...coreTools.toolOverrides
|
|
194
|
+
};
|
|
195
|
+
if (Object.keys(extensionEmbeddedDefaults).length > 0) hasToolDefaults = true;
|
|
163
196
|
if (toolConfig.toolDefaults != null && Object.keys(toolConfig.toolDefaults).length > 0) {
|
|
164
197
|
Object.assign(flatOverrides, toolConfig.toolDefaults);
|
|
165
198
|
hasToolDefaults = true;
|
|
@@ -167,7 +200,7 @@ function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve) {
|
|
|
167
200
|
const packageDefaults = { ...coreTools.packageDefaults };
|
|
168
201
|
if (toolConfig.packageToolDefaults != null && Object.keys(toolConfig.packageToolDefaults).length > 0) {
|
|
169
202
|
for (const [descriptor, pkgConfig] of Object.entries(toolConfig.packageToolDefaults)) {
|
|
170
|
-
const prefix = descriptor.startsWith("file:") ?
|
|
203
|
+
const prefix = descriptor.startsWith("file:") ? chunkEIIHED57_cjs.fileDescriptorToPackagePrefix(descriptor) : chunkEIIHED57_cjs.npmDescriptorToPackagePrefixWithVersion(descriptor);
|
|
171
204
|
if (!prefix) continue;
|
|
172
205
|
const pkgDefaults = pkgConfig?.defaults != null && typeof pkgConfig.defaults === "object" && !Array.isArray(pkgConfig.defaults) ? pkgConfig.defaults : {};
|
|
173
206
|
if (Object.keys(pkgDefaults).length > 0) {
|
|
@@ -195,8 +228,11 @@ function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve) {
|
|
|
195
228
|
function buildRuntimeAndHub(options = {}) {
|
|
196
229
|
const configPathForResolve = options.configFilePath ?? EMBEDDED_TOOL_CONFIG_PATH;
|
|
197
230
|
const mergedToolConfig = loadMergedToolConfig(options.configFilePath);
|
|
198
|
-
const
|
|
199
|
-
|
|
231
|
+
const extensionEmbeddedDefaults = collectExtensionEmbeddedDefaults(
|
|
232
|
+
chunkEIIHED57_cjs.loadAllExtensionsFromToolYamlSync(configPathForResolve)
|
|
233
|
+
);
|
|
234
|
+
const runtimeOpts = runtimeOptionsFromConfig(options, mergedToolConfig, configPathForResolve, extensionEmbeddedDefaults);
|
|
235
|
+
const { runtime } = chunkEIIHED57_cjs.createRuntimeFromConfigSync(runtimeOpts);
|
|
200
236
|
const hub = new LangChainToolsHub(runtime);
|
|
201
237
|
return { runtime, hub, mergedToolConfig };
|
|
202
238
|
}
|
|
@@ -206,9 +242,9 @@ function createLangChainAgentTools(options) {
|
|
|
206
242
|
const names = Array.isArray(mergedToolConfig.tools) ? mergedToolConfig.tools : [];
|
|
207
243
|
if (names.length > 0) {
|
|
208
244
|
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
209
|
-
const allBarePackages = names.every((n) =>
|
|
245
|
+
const allBarePackages = names.every((n) => chunkEIIHED57_cjs.isBarePackageDescriptor(String(n)));
|
|
210
246
|
if (allBarePackages) return hub.getLangChainTools();
|
|
211
|
-
return hub.getLangChainToolsForNames(
|
|
247
|
+
return hub.getLangChainToolsForNames(chunkEIIHED57_cjs.expandToolDescriptorsToRegistryNames(names, registryNames));
|
|
212
248
|
}
|
|
213
249
|
return hub.getLangChainTools();
|
|
214
250
|
}
|
|
@@ -220,7 +256,7 @@ async function createMcpServer(options) {
|
|
|
220
256
|
version: opts.version ?? mergedToolConfig.mcp?.version,
|
|
221
257
|
execContextFactory: opts.execContextFactory
|
|
222
258
|
};
|
|
223
|
-
const { server } = await
|
|
259
|
+
const { server } = await chunkEIIHED57_cjs.createMCPServer(runtime, serverOpts);
|
|
224
260
|
return server;
|
|
225
261
|
}
|
|
226
262
|
async function createOpenAPIServer(options) {
|
|
@@ -232,7 +268,7 @@ async function createOpenAPIServer(options) {
|
|
|
232
268
|
basePath: opts.basePath ?? mergedToolConfig.openapi?.basePath,
|
|
233
269
|
execContextFactory: opts.execContextFactory
|
|
234
270
|
};
|
|
235
|
-
return
|
|
271
|
+
return chunkEIIHED57_cjs.createOpenAPIHttpServer(runtime, serverOpts);
|
|
236
272
|
}
|
|
237
273
|
|
|
238
274
|
// src/api/main.ts
|
|
@@ -240,19 +276,19 @@ var langchainApi = {
|
|
|
240
276
|
createLangChainAgentTools
|
|
241
277
|
};
|
|
242
278
|
var runtimeApi = {
|
|
243
|
-
createRuntimeFromConfig:
|
|
244
|
-
createRuntimeFromConfigSync:
|
|
279
|
+
createRuntimeFromConfig: chunkEIIHED57_cjs.createRuntimeFromConfig,
|
|
280
|
+
createRuntimeFromConfigSync: chunkEIIHED57_cjs.createRuntimeFromConfigSync
|
|
245
281
|
};
|
|
246
282
|
var mcpApi = {
|
|
247
283
|
createMcpServer,
|
|
248
|
-
createMCPServer:
|
|
249
|
-
runMCPServerOverStdio:
|
|
250
|
-
createMCPStreamableHttpHandler:
|
|
251
|
-
createMCPServerStreamableHttp:
|
|
284
|
+
createMCPServer: chunkEIIHED57_cjs.createMCPServer,
|
|
285
|
+
runMCPServerOverStdio: chunkEIIHED57_cjs.runMCPServerOverStdio,
|
|
286
|
+
createMCPStreamableHttpHandler: chunkEIIHED57_cjs.createMCPStreamableHttpHandler,
|
|
287
|
+
createMCPServerStreamableHttp: chunkEIIHED57_cjs.createMCPServerStreamableHttp
|
|
252
288
|
};
|
|
253
289
|
var openApi = {
|
|
254
290
|
createOpenAPIServer,
|
|
255
|
-
createHttpService:
|
|
291
|
+
createHttpService: chunkEIIHED57_cjs.createHttpService
|
|
256
292
|
};
|
|
257
293
|
|
|
258
294
|
exports.createLangChainAgentTools = createLangChainAgentTools;
|
|
@@ -262,5 +298,5 @@ exports.langchainApi = langchainApi;
|
|
|
262
298
|
exports.mcpApi = mcpApi;
|
|
263
299
|
exports.openApi = openApi;
|
|
264
300
|
exports.runtimeApi = runtimeApi;
|
|
265
|
-
//# sourceMappingURL=chunk-
|
|
266
|
-
//# sourceMappingURL=chunk-
|
|
301
|
+
//# sourceMappingURL=chunk-GXFDYM3O.cjs.map
|
|
302
|
+
//# sourceMappingURL=chunk-GXFDYM3O.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api/adapters/LangChainToolsHub.ts","../src/api/createAgentTools.ts","../src/api/main.ts"],"names":["LANGCHAIN_KIND","stripNullishObjectFields","enrichSpecWithCanonicalSchema","DynamicStructuredTool","dirname","fileURLToPath","resolve","existsSync","loadToolConfig","loadExtensionManifest","deepMerge","resolveSandboxedPath","fileDescriptorToPackagePrefix","npmDescriptorToPackagePrefixWithVersion","loadAllExtensionsFromToolYamlSync","createRuntimeFromConfigSync","isBarePackageDescriptor","expandToolDescriptorsToRegistryNames","createMCPServer","createOpenAPIHttpServer","createRuntimeFromConfig","runMCPServerOverStdio","createMCPStreamableHttpHandler","createMCPServerStreamableHttp","createHttpService"],"mappings":";;;;;;;;;;;;;AAwBA,SAAS,uBAAuB,WAAA,EAAqD;AACnF,EAAA,MAAM,CAAA,GAAI,WAAA;AACV,EAAA,IAAI,CAAA,EAAG,IAAA,KAAS,QAAA,IAAY,CAAC,CAAA,CAAE,cAAc,OAAO,CAAA,CAAE,UAAA,KAAe,QAAA,EAAU,OAAO,IAAA;AACtF,EAAA,MAAM,IAAA,GAAQ,EAAE,UAAA,CAAuC,IAAA;AACvD,EAAA,IACE,IAAA,IAAQ,IAAA,IACR,OAAO,IAAA,KAAS,QAAA,IACf,KAAiC,IAAA,KAAS,QAAA,IAC1C,IAAA,CAAiC,UAAA,IAAc,IAAA,EAChD;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA;AACT;AAKA,SAAS,eAAe,WAAA,EAA8B;AACpD,EAAA,OAAO,sBAAA,CAAuB,WAAW,CAAA,KAAM,IAAA;AACjD;AAMA,SAAS,mBAAmB,WAAA,EAA8C;AACxE,EAAA,MAAM,OAAA,GAAU,uBAAuB,WAAW,CAAA;AAClD,EAAA,IAAI,OAAA,KAAY,MAAM,OAAO,OAAA;AAC7B,EAAA,OAAO,WAAA;AACT;AAEA,SAAS,WAAA,CACP,QAAA,EACA,WAAA,EACA,IAAA,EACY;AACZ,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,QAAA;AAAA,IACN,MAAM,cAAA,CAAe,WAAW,CAAA,GAAI,EAAE,MAAK,GAAI,IAAA;AAAA,IAC/C,OAAA,EAASA;AAAA,GACX;AACF;AAEA,SAAS,cAAc,IAAA,EAAoE;AACzF,EAAA,OAAOC,oCAAA,CAAyB,IAAA,IAAQ,EAAE,CAAA;AAC5C;AAEA,SAAS,oBAAoB,MAAA,EAA4B;AACvD,EAAA,IAAI,OAAO,EAAA,EAAI;AACb,IAAA,OAAO,OAAO,OAAO,MAAA,KAAW,QAAA,GAC5B,OAAO,MAAA,GACP,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,MAAM,CAAA;AAAA,EAClC;AAEA,EAAA,MAAM,MAAM,MAAA,CAAO,KAAA;AACnB,EAAA,MAAM,OAAA,GAAU,KAAK,OAAA,IAAW,aAAA;AAChC,EAAA,MAAM,UAAU,GAAA,EAAK,OAAA;AACrB,EAAA,OAAO,IAAA,CAAK,SAAA;AAAA,IACV,OAAA,IAAW,OAAO,EAAE,KAAA,EAAO,SAAS,OAAA,EAAQ,GAAI,EAAE,KAAA,EAAO,OAAA;AAAQ,GACnE;AACF;AAIA,IAAM,sBAA0C,OAAO;AAAA,EACrD,SAAA,EAAW,CAAA,GAAA,EAAM,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA,EAAI,IAAA,CAAK,MAAA,EAAO,CAAE,SAAS,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AAAA,EACrE,MAAA,EAAQ,CAAA,KAAA,EAAQ,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA;AAAA,EAC1B,WAAA,EAAa;AAAA,IACX,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA;AAEJ,CAAA,CAAA;AAOO,IAAM,oBAAN,MAAwB;AAAA,EAC7B,WAAA,CACmB,OAAA,EACA,UAAA,GAAiC,mBAAA,EAClD;AAFiB,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMH,iBAAA,GAA+C;AAC7C,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,WAAA,EAAY;AAC1C,IAAA,MAAM,KAAA,GAAQ,SAAS,QAAA,EAAS;AAEhC,IAAA,OAAO,MAAM,GAAA,CAAI,CAAC,SAAS,IAAA,CAAK,mBAAA,CAAoB,IAAI,CAAC,CAAA;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA,EAKA,0BAA0B,SAAA,EAAgD;AACxE,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,WAAA,EAAY;AAC1C,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,SAAS,CAAA;AAC7B,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,QAAA,EAAS,CAAE,MAAA,CAAO,CAAC,CAAA,KAAM,GAAA,CAAI,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AAC/D,IAAA,OAAO,MAAM,GAAA,CAAI,CAAC,SAAS,IAAA,CAAK,mBAAA,CAAoB,IAAI,CAAC,CAAA;AAAA,EAC3D;AAAA,EAEQ,oBAAoB,IAAA,EAAuC;AACjE,IAAA,MAAM,UAAU,IAAA,CAAK,OAAA;AACrB,IAAA,MAAM,aAAa,IAAA,CAAK,UAAA;AACxB,IAAA,MAAM,QAAA,GAAWC,gDAA8B,IAAI,CAAA;AAEnD,IAAA,MAAM,MAAA,GAAS,kBAAA,CAAmB,QAAA,CAAS,WAAW,CAAA;AACtD,IAAA,OAAO,IAAIC,2BAAA,CAAsB;AAAA,MAC/B,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,WAAA,EAAa,IAAA,CAAK,WAAA,IAAe,CAAA,MAAA,EAAS,KAAK,IAAI,CAAA,CAAA;AAAA,MACnD,MAAA;AAAA,MACA,IAAA,EAAM,OAAO,IAAA,KAAmD;AAC9D,QAAA,MAAM,cAAA,GAAiB,cAAc,IAAI,CAAA;AACzC,QAAA,MAAM,SAAS,WAAA,CAAY,IAAA,CAAK,IAAA,EAAM,QAAA,CAAS,aAAa,cAAc,CAAA;AAC1E,QAAA,MAAM,MAAM,UAAA,EAAW;AACvB,QAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,MAAA,CAAO,QAAQ,GAAG,CAAA;AAC/C,QAAA,OAAO,oBAAoB,MAAM,CAAA;AAAA,MACnC;AAAA,KACD,CAAA;AAAA,EACH;AACF,CAAA;ACjHA,SAAS,cAAA,CAAe,GAAc,CAAA,EAAwB;AAC5D,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,MAAM,MAAgB,EAAC;AACvB,EAAA,KAAA,MAAW,IAAA,IAAQ,CAAC,CAAA,IAAK,IAAI,CAAA,IAAK,EAAE,CAAA,EAAG;AACrC,IAAA,KAAA,MAAW,KAAK,IAAA,EAAM;AACpB,MAAA,IAAI,CAAC,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,EAAG;AAChB,QAAA,IAAA,CAAK,IAAI,CAAC,CAAA;AACV,QAAA,GAAA,CAAI,KAAK,CAAC,CAAA;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,6BAAA,GAAwC;AAC/C,EAAA,MAAM,SAAA,GAAYC,YAAA,CAAQC,iBAAA,CAAc,oQAAe,CAAC,CAAA;AACxD,EAAA,MAAM,UAAA,GAAa;AAAA,IACjBC,YAAA,CAAQ,WAAW,wBAAwB,CAAA;AAAA;AAAA,IAC3CA,YAAA,CAAQ,WAAW,qBAAqB,CAAA;AAAA;AAAA,IACxCA,YAAA,CAAQ,OAAA,CAAQ,GAAA,EAAI,EAAG,kBAAkB;AAAA;AAAA,GAC3C;AACA,EAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,IAAA,IAAIC,aAAA,CAAW,SAAS,CAAA,EAAG,OAAO,SAAA;AAAA,EACpC;AACA,EAAA,OAAO,WAAW,CAAC,CAAA;AACrB;AAEA,IAAM,4BAA4B,6BAAA,EAA8B;AAUhE,SAAS,iCACP,IAAA,EACyC;AACzC,EAAA,MAAM,SAAkD,EAAC;AACzD,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AAEtB,IAAA,MAAM,UAAA,GACJ,CAACD,YAAA,CAAQ,GAAA,CAAI,WAAA,EAAa,uBAAuB,CAAA,EAAGA,YAAA,CAAQ,GAAA,CAAI,WAAA,EAAa,kBAAkB,CAAC,CAAA,CAAE,IAAA;AAAA,MAChGC;AAAA,KACF,IAAK,EAAA;AACP,IAAA,IAAI,CAAC,UAAA,EAAY;AACjB,IAAA,IAAI;AACF,MAAA,MAAM,YAAA,GAAeC,gCAAA,CAAe,UAAU,CAAA,CAAE,gBAAgB,EAAC;AACjE,MAAA,IAAI,MAAA,CAAO,IAAA,CAAK,YAAY,CAAA,CAAE,WAAW,CAAA,EAAG;AAM5C,MAAA,MAAM,QAAA,GAAWC,uCAAA,CAAsB,GAAA,CAAI,WAAW,CAAA;AACtD,MAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,MAAA,KAAA,MAAW,CAAA,IAAK,SAAS,OAAA,EAAS;AAChC,QAAA,IAAI,CAAA,CAAE,IAAA,EAAM,YAAA,CAAa,GAAA,CAAI,EAAE,IAAI,CAAA;AACnC,QAAA,IAAI,EAAE,UAAA,EAAY;AAChB,UAAA,YAAA,CAAa,GAAA,CAAI,CAAA,CAAE,UAAA,CAAW,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA,CAAE,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAC,CAAA;AAAA,QACzE;AAAA,MACF;AAEA,MAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,KAAK,MAAA,CAAO,OAAA,CAAQ,YAAY,CAAA,EAAG;AAEjD,QAAA,IAAI,YAAA,CAAa,GAAA,CAAI,CAAC,CAAA,EAAG;AACvB,UAAA,MAAA,CAAO,CAAC,CAAA,GAAI,CAAA;AAAA,QACd;AAAA,MACF;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,qBAAqB,YAAA,EAAsC;AAClE,EAAA,MAAM,UAAA,GAAaD,iCAAe,yBAAyB,CAAA;AAC3D,EAAA,IAAI,CAAC,cAAc,OAAO,UAAA;AAC1B,EAAA,MAAM,cAAA,GAAiBA,iCAAe,YAAY,CAAA;AAClD,EAAA,OAAOE,qBAAA,CAAU,EAAC,EAAoB,UAAA,EAAY,cAAc,CAAA;AAClE;AAEA,SAAS,wBAAA,CACP,IAAA,EACA,UAAA,EACA,oBAAA,EACA,yBAAA,EACsB;AACtB,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,SAAA,IAAa,EAAE,WAAA,EAAa,OAAA,CAAQ,GAAA,EAAI,EAAG,YAAA,EAAc,EAAC,EAAG,uBAAA,EAAyB,KAAA,EAAM;AACnH,EAAA;AACE,IAAA,MAAM,UAQF,EAAC;AACL,IAAA,IAAI,UAAA,CAAW,aAAA,IAAiB,OAAO,UAAA,CAAW,kBAAkB,QAAA,EAAU;AAC5E,MAAA,OAAA,CAAQ,WAAA,GAAcC,sCAAA,CAAqB,oBAAA,EAAsB,UAAA,CAAW,aAAa,CAAA;AAAA,IAC3F;AACA,IAAA,IAAI,OAAO,UAAA,CAAW,uBAAA,KAA4B,SAAA,EAAW;AAC3D,MAAA,OAAA,CAAQ,0BAA0B,UAAA,CAAW,uBAAA;AAAA,IAC/C,CAAA,MAAA,IAAW,SAAA,CAAU,uBAAA,IAA2B,IAAA,EAAM;AACpD,MAAA,OAAA,CAAQ,uBAAA,GAA0B,KAAA;AAAA,IACpC;AAEA,IAAA,OAAA,CAAQ,YAAA,GAAe,cAAA,CAAe,SAAA,CAAU,YAAA,EAAc,WAAW,YAAY,CAAA;AACrF,IAAA,OAAA,CAAQ,YAAA,GAAe,cAAA,CAAe,SAAA,CAAU,YAAA,EAAc,WAAW,YAAY,CAAA;AACrF,IAAA,IAAI,KAAA,CAAM,QAAQ,UAAA,CAAW,YAAY,KAAK,UAAA,CAAW,YAAA,CAAa,SAAS,CAAA,EAAG;AAChF,MAAA,OAAA,CAAQ,eAAe,UAAA,CAAW,YAAA;AAAA,IACpC,CAAA,MAAA,IAAW,SAAA,CAAU,YAAA,EAAc,MAAA,EAAQ;AACzC,MAAA,OAAA,CAAQ,eAAe,SAAA,CAAU,YAAA;AAAA,IACnC;AACA,IAAA,IAAI,eAAA,GAAkB,KAAA;AAEtB,IAAA,MAAM,aAAA,GAAyD;AAAA,MAC7D,GAAG,yBAAA;AAAA,MACH,GAAG,SAAA,CAAU;AAAA,KACf;AACA,IAAA,IAAI,OAAO,IAAA,CAAK,yBAAyB,CAAA,CAAE,MAAA,GAAS,GAAG,eAAA,GAAkB,IAAA;AACzE,IAAA,IAAI,UAAA,CAAW,gBAAgB,IAAA,IAAQ,MAAA,CAAO,KAAK,UAAA,CAAW,YAAY,CAAA,CAAE,MAAA,GAAS,CAAA,EAAG;AACtF,MAAA,MAAA,CAAO,MAAA,CAAO,aAAA,EAAe,UAAA,CAAW,YAAY,CAAA;AACpD,MAAA,eAAA,GAAkB,IAAA;AAAA,IACpB;AACA,IAAA,MAAM,eAAA,GAA2D,EAAE,GAAG,SAAA,CAAU,eAAA,EAAgB;AAChG,IAAA,IAAI,UAAA,CAAW,uBAAuB,IAAA,IAAQ,MAAA,CAAO,KAAK,UAAA,CAAW,mBAAmB,CAAA,CAAE,MAAA,GAAS,CAAA,EAAG;AACpG,MAAA,KAAA,MAAW,CAAC,YAAY,SAAS,CAAA,IAAK,OAAO,OAAA,CAAQ,UAAA,CAAW,mBAAmB,CAAA,EAAG;AACpF,QAAA,MAAM,MAAA,GAAS,WAAW,UAAA,CAAW,OAAO,IACxCC,+CAAA,CAA8B,UAAU,CAAA,GACxCC,yDAAA,CAAwC,UAAU,CAAA;AACtD,QAAA,IAAI,CAAC,MAAA,EAAQ;AACb,QAAA,MAAM,cACJ,SAAA,EAAW,QAAA,IAAY,IAAA,IAAQ,OAAO,UAAU,QAAA,KAAa,QAAA,IAAY,CAAC,KAAA,CAAM,QAAQ,SAAA,CAAU,QAAQ,CAAA,GACrG,SAAA,CAAU,WACX,EAAC;AACP,QAAA,IAAI,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA,CAAE,SAAS,CAAA,EAAG;AACvC,UAAA,eAAA,CAAgB,MAAM,CAAA,GAAI,WAAA;AAAA,QAC5B;AACA,QAAA,MAAM,cAAc,SAAA,EAAW,KAAA,IAAS,IAAA,IAAQ,OAAO,UAAU,KAAA,KAAU,QAAA,IAAY,CAAC,KAAA,CAAM,QAAQ,SAAA,CAAU,KAAK,CAAA,GAAI,SAAA,CAAU,QAAQ,EAAC;AAC5I,QAAA,KAAA,MAAW,CAAC,QAAA,EAAU,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC5D,UAAA,IAAI,MAAA,IAAU,IAAA,IAAQ,OAAO,MAAA,KAAW,QAAA,EAAU;AAChD,YAAA,eAAA,GAAkB,IAAA;AAClB,YAAA,aAAA,CAAc,CAAA,EAAG,MAAM,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAE,IAAI,EAAE,GAAG,WAAA,EAAa,GAAI,MAAA,EAAmC;AAAA,UACrG;AAAA,QACF;AAAA,MACF;AACA,MAAA,IAAI,MAAA,CAAO,IAAA,CAAK,eAAe,CAAA,CAAE,SAAS,CAAA,EAAG;AAC3C,QAAA,OAAA,CAAQ,eAAA,GAAkB,eAAA;AAAA,MAC5B;AAAA,IACF;AACA,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,OAAA,CAAQ,aAAA,GAAgB,aAAA;AAAA,IAC1B;AACA,IAAA,IAAI,OAAO,IAAA,CAAK,OAAO,CAAA,CAAE,MAAA,GAAS,GAAG,OAAO,EAAE,GAAG,IAAA,EAAM,WAAW,EAAE,GAAG,SAAA,EAAW,GAAG,SAAQ,EAAE;AAAA,EACjG;AACA,EAAA,OAAO,EAAE,GAAG,IAAA,EAAM,SAAA,EAAU;AAC9B;AAOA,SAAS,kBAAA,CAAmB,OAAA,GAAmC,EAAC,EAI9D;AACA,EAAA,MAAM,oBAAA,GAAuB,QAAQ,cAAA,IAAkB,yBAAA;AACvD,EAAA,MAAM,gBAAA,GAAmB,oBAAA,CAAqB,OAAA,CAAQ,cAAc,CAAA;AAGpE,EAAA,MAAM,yBAAA,GAA4B,gCAAA;AAAA,IAChCC,oDAAkC,oBAAoB;AAAA,GACxD;AACA,EAAA,MAAM,WAAA,GAAc,wBAAA,CAAyB,OAAA,EAAS,gBAAA,EAAkB,sBAAsB,yBAAyB,CAAA;AACvH,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAIC,6CAAA,CAA4B,WAAW,CAAA;AAC3D,EAAA,MAAM,GAAA,GAAM,IAAI,iBAAA,CAAkB,OAAO,CAAA;AACzC,EAAA,OAAO,EAAE,OAAA,EAAS,GAAA,EAAK,gBAAA,EAAiB;AAC1C;AAgBO,SAAS,0BACd,OAAA,EAC2B;AAC3B,EAAA,MAAM,IAAA,GACJ,OAAO,OAAA,KAAY,QAAA,GAAW,EAAE,cAAA,EAAgB,OAAA,EAAQ,GAAI,OAAA,IAAW,EAAC;AAC1E,EAAA,MAAM,EAAE,OAAA,EAAS,GAAA,EAAK,gBAAA,EAAiB,GAAI,mBAAmB,IAAI,CAAA;AAElE,EAAA,MAAM,KAAA,GAAQ,MAAM,OAAA,CAAQ,gBAAA,CAAiB,KAAK,CAAA,GAAI,gBAAA,CAAiB,QAAQ,EAAC;AAChF,EAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,IAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,WAAA,EAAY,CAAE,QAAA,GAAW,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAI,CAAA;AACxE,IAAA,MAAM,eAAA,GAAkB,MAAM,KAAA,CAAM,CAAC,MAAMC,yCAAA,CAAwB,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA;AAC7E,IAAA,IAAI,eAAA,EAAiB,OAAO,GAAA,CAAI,iBAAA,EAAkB;AAClD,IAAA,OAAO,GAAA,CAAI,yBAAA,CAA0BC,sDAAA,CAAqC,KAAA,EAAO,aAAa,CAAC,CAAA;AAAA,EACjG;AACA,EAAA,OAAO,IAAI,iBAAA,EAAkB;AAC/B;AAiBA,eAAsB,gBACpB,OAAA,EACoB;AACpB,EAAA,MAAM,IAAA,GACJ,OAAO,OAAA,KAAY,QAAA,GAAW,EAAE,cAAA,EAAgB,OAAA,EAAQ,GAAI,OAAA,IAAW,EAAC;AAC1E,EAAA,MAAM,EAAE,OAAA,EAAS,gBAAA,EAAiB,GAAI,mBAAmB,IAAI,CAAA;AAC7D,EAAA,MAAM,UAAA,GAA+B;AAAA,IACnC,IAAA,EAAM,IAAA,CAAK,IAAA,IAAQ,gBAAA,CAAiB,GAAA,EAAK,IAAA;AAAA,IACzC,OAAA,EAAS,IAAA,CAAK,OAAA,IAAW,gBAAA,CAAiB,GAAA,EAAK,OAAA;AAAA,IAC/C,oBAAoB,IAAA,CAAK;AAAA,GAC3B;AACA,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAMC,iCAAA,CAAgB,SAAS,UAAU,CAAA;AAC5D,EAAA,OAAO,MAAA;AACT;AAiBA,eAAsB,oBACpB,OAAA,EAC4B;AAC5B,EAAA,MAAM,IAAA,GACJ,OAAO,OAAA,KAAY,QAAA,GAAW,EAAE,cAAA,EAAgB,OAAA,EAAQ,GAAI,OAAA,IAAW,EAAC;AAC1E,EAAA,MAAM,EAAE,OAAA,EAAS,gBAAA,EAAiB,GAAI,mBAAmB,IAAI,CAAA;AAC7D,EAAA,MAAM,UAAA,GAAuC;AAAA,IAC3C,IAAA,EAAM,IAAA,CAAK,IAAA,IAAQ,gBAAA,CAAiB,OAAA,EAAS,IAAA;AAAA,IAC7C,IAAA,EAAM,IAAA,CAAK,IAAA,IAAQ,gBAAA,CAAiB,OAAA,EAAS,IAAA;AAAA,IAC7C,QAAA,EAAU,IAAA,CAAK,QAAA,IAAY,gBAAA,CAAiB,OAAA,EAAS,QAAA;AAAA,IACrD,oBAAoB,IAAA,CAAK;AAAA,GAC3B;AACA,EAAA,OAAOC,yCAAA,CAAwB,SAAS,UAAU,CAAA;AACpD;;;ACzPO,IAAM,YAAA,GAAe;AAAA,EAC1B;AACF;AAKO,IAAM,UAAA,GAAa;AAAA,2BACxBC,yCAAA;AAAA,+BACAL;AACF;AAKO,IAAM,MAAA,GAAS;AAAA,EACpB,eAAA;AAAA,mBACAG,iCAAA;AAAA,yBACAG,uCAAA;AAAA,kCACAC,gDAAA;AAAA,iCACAC;AACF;AAKO,IAAM,OAAA,GAAU;AAAA,EACrB,mBAAA;AAAA,qBACAC;AACF","file":"chunk-GXFDYM3O.cjs","sourcesContent":["/**\n * Exposes all tools from a ToolRegistry + PTCRuntime as LangChain tools\n * for local agent use (e.g. with createReactAgent, AgentExecutor).\n *\n * For most users, use createLangChainAgentTools() which loads from tool.yaml and returns\n * StructuredTool[]. Use LangChainToolsHub when you need a custom runtime or ctxFactory.\n *\n * Use: new LangChainToolsHub(runtime, ctxFactory).getLangChainTools()\n */\n\nimport { DynamicStructuredTool, type StructuredToolInterface } from \"@langchain/core/tools\";\nimport { stripNullishObjectFields } from \"@easynet/agent-common\";\nimport type { PTCRuntime } from \"../../core/runtime/PTCRuntime.js\";\nimport type { ToolSpec } from \"../../core/types/ToolSpec.js\";\nimport type { ToolResult } from \"../../core/types/ToolResult.js\";\nimport type { ExecContext } from \"../../core/types/ToolIntent.js\";\nimport type { ToolIntent } from \"../../core/types/ToolIntent.js\";\nimport { enrichSpecWithCanonicalSchema } from \"../../tools/util/canonicalCoreSchemas.js\";\nimport { LANGCHAIN_KIND } from \"../../tools/langchain/types.js\";\n\n/**\n * If inputSchema wraps all params in a single \"args\" object (manifest convention),\n * returns that inner args schema; otherwise returns null.\n */\nfunction getArgsSchemaIfWrapped(inputSchema: object): Record<string, unknown> | null {\n const s = inputSchema as Record<string, unknown>;\n if (s?.type !== \"object\" || !s.properties || typeof s.properties !== \"object\") return null;\n const args = (s.properties as Record<string, unknown>).args;\n if (\n args != null &&\n typeof args === \"object\" &&\n (args as Record<string, unknown>).type === \"object\" &&\n (args as Record<string, unknown>).properties != null\n ) {\n return args as Record<string, unknown>;\n }\n return null;\n}\n\n/**\n * True when inputSchema wraps all params in a single \"args\" object (manifest convention).\n */\nfunction hasArgsWrapper(inputSchema: object): boolean {\n return getArgsSchemaIfWrapped(inputSchema) !== null;\n}\n\n/**\n * If inputSchema is { type: \"object\", properties: { args: { type: \"object\", properties: {...} } } },\n * return the inner args schema so the LLM can pass { path: \".\" } instead of { args: { path: \".\" } }.\n */\nfunction schemaForLangChain(inputSchema: object): Record<string, unknown> {\n const wrapped = getArgsSchemaIfWrapped(inputSchema);\n if (wrapped !== null) return wrapped;\n return inputSchema as Record<string, unknown>;\n}\n\nfunction buildIntent(\n toolName: string,\n inputSchema: object,\n args: Record<string, unknown>,\n): ToolIntent {\n return {\n tool: toolName,\n args: hasArgsWrapper(inputSchema) ? { args } : args,\n purpose: LANGCHAIN_KIND,\n };\n}\n\nfunction normalizeArgs(args: Record<string, unknown> | undefined): Record<string, unknown> {\n return stripNullishObjectFields(args ?? {}) as Record<string, unknown>;\n}\n\nfunction serializeToolResult(result: ToolResult): string {\n if (result.ok) {\n return typeof result.result === \"string\"\n ? result.result\n : JSON.stringify(result.result);\n }\n\n const err = result.error;\n const message = err?.message ?? \"Tool failed\";\n const details = err?.details;\n return JSON.stringify(\n details != null ? { error: message, details } : { error: message },\n );\n}\n\nexport type ExecContextFactory = () => ExecContext;\n\nconst DEFAULT_CTX_FACTORY: ExecContextFactory = () => ({\n requestId: `lc-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`,\n taskId: `task-${Date.now()}`,\n permissions: [\n \"read:web\",\n \"read:fs\",\n \"write:fs\",\n \"read:db\",\n \"write:db\",\n \"network\",\n \"workflow\",\n \"danger:destructive\",\n ],\n});\n\n/**\n * Hub that wraps PTCRuntime and exposes every registered tool as a LangChain\n * StructuredTool (DynamicStructuredTool), so local agents (LangChain AgentExecutor,\n * createReactAgent, etc.) can use the same tools as MCP and OpenAPI.\n */\nexport class LangChainToolsHub {\n constructor(\n private readonly runtime: PTCRuntime,\n private readonly ctxFactory: ExecContextFactory = DEFAULT_CTX_FACTORY,\n ) {}\n\n /**\n * Returns all registered tools as LangChain StructuredTool[].\n * Each tool invokes the runtime through the full pipeline (policy, HITL, etc.).\n */\n getLangChainTools(): StructuredToolInterface[] {\n const registry = this.runtime.getRegistry();\n const specs = registry.snapshot();\n\n return specs.map((spec) => this.specToLangChainTool(spec));\n }\n\n /**\n * Returns LangChain tools for a subset of tools (by name or query).\n */\n getLangChainToolsForNames(toolNames: string[]): StructuredToolInterface[] {\n const registry = this.runtime.getRegistry();\n const set = new Set(toolNames);\n const specs = registry.snapshot().filter((s) => set.has(s.name));\n return specs.map((spec) => this.specToLangChainTool(spec));\n }\n\n private specToLangChainTool(spec: ToolSpec): DynamicStructuredTool {\n const runtime = this.runtime;\n const ctxFactory = this.ctxFactory;\n const enriched = enrichSpecWithCanonicalSchema(spec);\n\n const schema = schemaForLangChain(enriched.inputSchema);\n return new DynamicStructuredTool({\n name: spec.name,\n description: spec.description ?? `Tool: ${spec.name}`,\n schema,\n func: async (args: Record<string, unknown>): Promise<string> => {\n const normalizedArgs = normalizeArgs(args);\n const intent = buildIntent(spec.name, enriched.inputSchema, normalizedArgs);\n const ctx = ctxFactory();\n const result = await runtime.invoke(intent, ctx);\n return serializeToolResult(result);\n },\n });\n }\n}\n","/**\n * Standalone tool creation functions. Each function:\n * - Uses the embedded config/tool.yaml as the default base.\n * - If a configFilePath is provided, merges it on top of the default.\n * - If no options are provided at all, behaves as if only the embedded default is used.\n *\n * Functions:\n * createLangChainAgentTools(options?) → StructuredToolInterface[]\n * createMcpServer(options?) → Promise<McpServer>\n * createOpenAPIServer(options?) → Promise<OpenAPIExpressApp>\n */\n\nimport { loadToolConfig, resolveSandboxedPath } from \"../tools/util/toolConfig.js\";\nimport type { ToolYamlShape } from \"../tools/util/toolConfig.js\";\nimport { loadExtensionManifest } from \"./extension/registerFromManifest.js\";\nimport {\n expandToolDescriptorsToRegistryNames,\n isBarePackageDescriptor,\n npmDescriptorToPackagePrefixWithVersion,\n fileDescriptorToPackagePrefix,\n} from \"../tools/util/toolDescriptor.js\";\nimport { deepMerge } from \"@easynet/agent-common\";\nimport { createRuntimeFromConfigSync, loadAllExtensionsFromToolYamlSync } from \"./runtimeFromConfig.js\";\nimport type { CreateRuntimeOptions, LoadedExtension } from \"./runtimeFromConfig.js\";\nimport { LangChainToolsHub } from \"./adapters/LangChainToolsHub.js\";\nimport { createMCPServer, type MCPServerOptions, type McpServer } from \"./expose/mcpServer.js\";\nimport {\n createOpenAPIHttpServer,\n type OpenAPIExpressApp,\n type OpenAPIHttpServerOptions,\n} from \"./expose/openapiHttp.js\";\nimport type { StructuredToolInterface } from \"@langchain/core/tools\";\nimport { fileURLToPath } from \"node:url\";\nimport { dirname, resolve } from \"node:path\";\nimport { existsSync } from \"node:fs\";\n\nexport interface CreateAgentToolsOptions extends CreateRuntimeOptions {\n /** Path to an override tool.yaml; its values are merged on top of the embedded default config/tool.yaml */\n configFilePath?: string;\n}\n\n/** Merge host lists from multiple sources (e.g. tool.yaml + programmatic). Union, dedup, preserves order. */\nfunction mergeHostLists(a?: string[], b?: string[]): string[] {\n const seen = new Set<string>();\n const out: string[] = [];\n for (const list of [a ?? [], b ?? []]) {\n for (const h of list) {\n if (!seen.has(h)) {\n seen.add(h);\n out.push(h);\n }\n }\n }\n return out;\n}\n\nfunction resolveEmbeddedToolConfigPath(): string {\n const moduleDir = dirname(fileURLToPath(import.meta.url));\n const candidates = [\n resolve(moduleDir, \"../../config/tool.yaml\"), // src/api -> config\n resolve(moduleDir, \"../config/tool.yaml\"), // dist/* -> config\n resolve(process.cwd(), \"config/tool.yaml\"), // fallback for local app runtime\n ];\n for (const candidate of candidates) {\n if (existsSync(candidate)) return candidate;\n }\n return candidates[0]!;\n}\n\nconst EMBEDDED_TOOL_CONFIG_PATH = resolveEmbeddedToolConfigPath();\n\n/**\n * For each loaded extension, load its embedded config/tool.yaml (layer 2) and collect\n * the toolDefaults into a flat map. Later entries in the list win over earlier ones.\n *\n * Security constraint: each extension's embedded config may only set defaults for tools\n * that belong to that extension (verified against its own manifest). Keys that reference\n * tools from other extensions or global config fields are silently ignored.\n */\nfunction collectExtensionEmbeddedDefaults(\n exts: LoadedExtension[],\n): Record<string, Record<string, unknown>> {\n const merged: Record<string, Record<string, unknown>> = {};\n for (const ext of exts) {\n // Prefer dist/config/tool.yaml (published package); fall back to config/tool.yaml (local dev).\n const configPath =\n [resolve(ext.packageRoot, \"dist/config/tool.yaml\"), resolve(ext.packageRoot, \"config/tool.yaml\")].find(\n existsSync,\n ) ?? \"\";\n if (!configPath) continue;\n try {\n const toolDefaults = loadToolConfig(configPath).toolDefaults ?? {};\n if (Object.keys(toolDefaults).length === 0) continue;\n\n // Build the set of short names this extension owns from its manifest.\n // Include both the explicit name field and the dot-path derived from sourcePath\n // (e.g. \"listDir\" and \"fs.listDir\" for src/fs/listDir) so that config keys in\n // either format are accepted.\n const manifest = loadExtensionManifest(ext.packageRoot);\n const ownToolNames = new Set<string>();\n for (const e of manifest.entries) {\n if (e.name) ownToolNames.add(e.name);\n if (e.sourcePath) {\n ownToolNames.add(e.sourcePath.replace(/^src\\//, \"\").replace(/\\//g, \".\"));\n }\n }\n\n for (const [k, v] of Object.entries(toolDefaults)) {\n // Only allow keys that are short names of tools this extension registers.\n if (ownToolNames.has(k)) {\n merged[k] = v;\n }\n }\n } catch {\n // skip malformed extension config or missing manifest\n }\n }\n return merged;\n}\n\nfunction loadMergedToolConfig(overridePath?: string): ToolYamlShape {\n const baseConfig = loadToolConfig(EMBEDDED_TOOL_CONFIG_PATH);\n if (!overridePath) return baseConfig;\n const overrideConfig = loadToolConfig(overridePath);\n return deepMerge({} as ToolYamlShape, baseConfig, overrideConfig);\n}\n\nfunction runtimeOptionsFromConfig(\n opts: CreateAgentToolsOptions,\n toolConfig: ToolYamlShape,\n configPathForResolve: string,\n extensionEmbeddedDefaults: Record<string, Record<string, unknown>>,\n): CreateRuntimeOptions {\n const coreTools = opts.coreTools ?? { sandboxRoot: process.cwd(), allowedHosts: [], enableSandboxValidation: false };\n {\n const updates: {\n sandboxRoot?: string;\n enableSandboxValidation?: boolean;\n allowedHosts?: string[];\n blockedHosts?: string[];\n blockedCidrs?: string[];\n toolOverrides?: Record<string, Record<string, unknown>>;\n packageDefaults?: Record<string, Record<string, unknown>>;\n } = {};\n if (toolConfig.sandboxedPath && typeof toolConfig.sandboxedPath === \"string\") {\n updates.sandboxRoot = resolveSandboxedPath(configPathForResolve, toolConfig.sandboxedPath);\n }\n if (typeof toolConfig.enableSandboxValidation === \"boolean\") {\n updates.enableSandboxValidation = toolConfig.enableSandboxValidation;\n } else if (coreTools.enableSandboxValidation == null) {\n updates.enableSandboxValidation = false;\n }\n // Smart merge: union of allowedHosts and blockedHosts from yaml + programmatic (both lists always applied)\n updates.allowedHosts = mergeHostLists(coreTools.allowedHosts, toolConfig.allowedHosts);\n updates.blockedHosts = mergeHostLists(coreTools.blockedHosts, toolConfig.blockedHosts);\n if (Array.isArray(toolConfig.blockedCidrs) && toolConfig.blockedCidrs.length > 0) {\n updates.blockedCidrs = toolConfig.blockedCidrs;\n } else if (coreTools.blockedCidrs?.length) {\n updates.blockedCidrs = coreTools.blockedCidrs;\n }\n let hasToolDefaults = false;\n // Priority (low → high): extension embedded (layer 2) < programmatic coreTools < layer 1+3 toolDefaults\n const flatOverrides: Record<string, Record<string, unknown>> = {\n ...extensionEmbeddedDefaults,\n ...coreTools.toolOverrides,\n };\n if (Object.keys(extensionEmbeddedDefaults).length > 0) hasToolDefaults = true;\n if (toolConfig.toolDefaults != null && Object.keys(toolConfig.toolDefaults).length > 0) {\n Object.assign(flatOverrides, toolConfig.toolDefaults);\n hasToolDefaults = true;\n }\n const packageDefaults: Record<string, Record<string, unknown>> = { ...coreTools.packageDefaults };\n if (toolConfig.packageToolDefaults != null && Object.keys(toolConfig.packageToolDefaults).length > 0) {\n for (const [descriptor, pkgConfig] of Object.entries(toolConfig.packageToolDefaults)) {\n const prefix = descriptor.startsWith(\"file:\")\n ? fileDescriptorToPackagePrefix(descriptor)\n : npmDescriptorToPackagePrefixWithVersion(descriptor);\n if (!prefix) continue;\n const pkgDefaults =\n pkgConfig?.defaults != null && typeof pkgConfig.defaults === \"object\" && !Array.isArray(pkgConfig.defaults)\n ? (pkgConfig.defaults as Record<string, unknown>)\n : {};\n if (Object.keys(pkgDefaults).length > 0) {\n packageDefaults[prefix] = pkgDefaults;\n }\n const toolConfigs = pkgConfig?.tools != null && typeof pkgConfig.tools === \"object\" && !Array.isArray(pkgConfig.tools) ? pkgConfig.tools : {};\n for (const [toolName, config] of Object.entries(toolConfigs)) {\n if (config != null && typeof config === \"object\") {\n hasToolDefaults = true;\n flatOverrides[`${prefix}::${toolName}`] = { ...pkgDefaults, ...(config as Record<string, unknown>) };\n }\n }\n }\n if (Object.keys(packageDefaults).length > 0) {\n updates.packageDefaults = packageDefaults;\n }\n }\n if (hasToolDefaults) {\n updates.toolOverrides = flatOverrides;\n }\n if (Object.keys(updates).length > 0) return { ...opts, coreTools: { ...coreTools, ...updates } };\n }\n return { ...opts, coreTools };\n}\n\n/**\n * Build a ready-to-use runtime + hub from options.\n * - No options → embedded default config/tool.yaml only.\n * - options.configFilePath → override merged on top of embedded default.\n */\nfunction buildRuntimeAndHub(options: CreateAgentToolsOptions = {}): {\n runtime: ReturnType<typeof createRuntimeFromConfigSync>[\"runtime\"];\n hub: LangChainToolsHub;\n mergedToolConfig: ToolYamlShape;\n} {\n const configPathForResolve = options.configFilePath ?? EMBEDDED_TOOL_CONFIG_PATH;\n const mergedToolConfig = loadMergedToolConfig(options.configFilePath);\n // Collect layer-2 defaults from each extension's embedded config/tool.yaml.\n // loadAllExtensionsFromToolYamlSync is cheap here (require() is cached by Node.js).\n const extensionEmbeddedDefaults = collectExtensionEmbeddedDefaults(\n loadAllExtensionsFromToolYamlSync(configPathForResolve),\n );\n const runtimeOpts = runtimeOptionsFromConfig(options, mergedToolConfig, configPathForResolve, extensionEmbeddedDefaults);\n const { runtime } = createRuntimeFromConfigSync(runtimeOpts);\n const hub = new LangChainToolsHub(runtime);\n return { runtime, hub, mergedToolConfig };\n}\n\n/**\n * Create LangChain agent tools.\n *\n * - No argument → uses embedded default config/tool.yaml.\n * - options.configFilePath → merged on top of embedded default.\n * - All other CreateAgentToolsOptions (coreTools, etc.) are applied as programmatic overrides.\n *\n * @example\n * // Use embedded defaults\n * const tools = createLangChainAgentTools();\n *\n * // Override with a project-specific tool.yaml\n * const tools = createLangChainAgentTools({ configFilePath: \"./config/tool.yaml\" });\n */\nexport function createLangChainAgentTools(\n options?: CreateAgentToolsOptions | string,\n): StructuredToolInterface[] {\n const opts: CreateAgentToolsOptions =\n typeof options === \"string\" ? { configFilePath: options } : options ?? {};\n const { runtime, hub, mergedToolConfig } = buildRuntimeAndHub(opts);\n\n const names = Array.isArray(mergedToolConfig.tools) ? mergedToolConfig.tools : [];\n if (names.length > 0) {\n const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);\n const allBarePackages = names.every((n) => isBarePackageDescriptor(String(n)));\n if (allBarePackages) return hub.getLangChainTools();\n return hub.getLangChainToolsForNames(expandToolDescriptorsToRegistryNames(names, registryNames));\n }\n return hub.getLangChainTools();\n}\n\n/**\n * Create an MCP server from tool config.\n *\n * - No argument → uses embedded default config/tool.yaml.\n * - options.configFilePath → merged on top of embedded default.\n * - options.mcp → passed to the MCP server (name, version, execContextFactory).\n *\n * @example\n * // Use embedded defaults\n * const server = await createMcpServer();\n * await server.connectStdio();\n *\n * // Override with a project-specific tool.yaml\n * const server = await createMcpServer({ configFilePath: \"./config/tool.yaml\" });\n */\nexport async function createMcpServer(\n options?: (CreateAgentToolsOptions & MCPServerOptions) | string,\n): Promise<McpServer> {\n const opts: CreateAgentToolsOptions & MCPServerOptions =\n typeof options === \"string\" ? { configFilePath: options } : options ?? {};\n const { runtime, mergedToolConfig } = buildRuntimeAndHub(opts);\n const serverOpts: MCPServerOptions = {\n name: opts.name ?? mergedToolConfig.mcp?.name,\n version: opts.version ?? mergedToolConfig.mcp?.version,\n execContextFactory: opts.execContextFactory,\n };\n const { server } = await createMCPServer(runtime, serverOpts);\n return server;\n}\n\n/**\n * Create an OpenAPI / Swagger HTTP server from tool config.\n *\n * - No argument → uses embedded default config/tool.yaml.\n * - options.configFilePath → merged on top of embedded default.\n * - options.port, host, basePath → passed to the HTTP server; tool.yaml openapi: section provides defaults.\n *\n * @example\n * // Use embedded defaults\n * const app = await createOpenAPIServer();\n * app.listen(3000);\n *\n * // Override with a project-specific tool.yaml\n * const app = await createOpenAPIServer({ configFilePath: \"./config/tool.yaml\", port: 8080 });\n */\nexport async function createOpenAPIServer(\n options?: (CreateAgentToolsOptions & OpenAPIHttpServerOptions) | string,\n): Promise<OpenAPIExpressApp> {\n const opts: CreateAgentToolsOptions & OpenAPIHttpServerOptions =\n typeof options === \"string\" ? { configFilePath: options } : options ?? {};\n const { runtime, mergedToolConfig } = buildRuntimeAndHub(opts);\n const serverOpts: OpenAPIHttpServerOptions = {\n host: opts.host ?? mergedToolConfig.openapi?.host,\n port: opts.port ?? mergedToolConfig.openapi?.port,\n basePath: opts.basePath ?? mergedToolConfig.openapi?.basePath,\n execContextFactory: opts.execContextFactory,\n };\n return createOpenAPIHttpServer(runtime, serverOpts);\n}\n","/**\n * Public API: three config-driven create functions + runtime.\n *\n * 1. createLangChainAgentTools(options?) → LangChain tools (createReactAgent / AgentExecutor)\n * 2. createMcpServer(options?) → MCP server (stdio, Cursor / Claude)\n * 3. createOpenAPIServer(options?) → HTTP + OpenAPI/Swagger (GET /tools, POST /invoke)\n *\n * Each function:\n * - Uses the embedded config/tool.yaml as the base when no configFilePath is given.\n * - Merges an override tool.yaml on top when options.configFilePath is provided.\n *\n * All tool invokes go through PTC Intent (runtime.invoke(intent, ctx)) for policy, budget, observability.\n * Use createRuntimeFromConfig(config) when you need the runtime for multiple servers.\n */\n\nexport {\n createLangChainAgentTools,\n createMcpServer,\n createOpenAPIServer,\n} from \"./createAgentTools.js\";\nexport type { CreateAgentToolsOptions } from \"./createAgentTools.js\";\n\nexport { createHttpService } from \"./expose/openapiHttp.js\";\nexport type {\n CreateHttpServiceOptions,\n HttpServiceResult,\n OpenAPIExpressApp,\n OpenAPIHttpServerOptions,\n} from \"./expose/openapiHttp.js\";\n\nexport {\n createMCPServer,\n runMCPServerOverStdio,\n createMCPStreamableHttpHandler,\n createMCPServerStreamableHttp,\n} from \"./expose/mcpServer.js\";\nexport type {\n MCPServerOptions,\n MCPServerResult,\n McpServer,\n MCPStreamableHttpHandler,\n MCPServerStreamableHttpResult,\n CreateMCPServerStreamableHttpOptions,\n} from \"./expose/mcpServer.js\";\n\nexport { createRuntimeFromConfig, createRuntimeFromConfigSync } from \"./runtimeFromConfig.js\";\nexport type { CreateRuntimeOptions, CreateRuntimeResult } from \"./runtimeFromConfig.js\";\n\nexport { PTCRuntime } from \"../core/runtime/PTCRuntime.js\";\nexport type { PTCRuntimeConfig } from \"../core/runtime/PTCRuntime.js\";\n\nimport {\n createLangChainAgentTools,\n createMcpServer,\n createOpenAPIServer,\n} from \"./createAgentTools.js\";\nimport { createHttpService } from \"./expose/openapiHttp.js\";\nimport {\n createMCPServer,\n runMCPServerOverStdio,\n createMCPStreamableHttpHandler,\n createMCPServerStreamableHttp,\n} from \"./expose/mcpServer.js\";\nimport { createRuntimeFromConfig, createRuntimeFromConfigSync } from \"./runtimeFromConfig.js\";\n\n/**\n * Facade: grouped API for lower import complexity in callers.\n */\nexport const langchainApi = {\n createLangChainAgentTools,\n} as const;\n\n/**\n * Facade: grouped runtime creation helpers.\n */\nexport const runtimeApi = {\n createRuntimeFromConfig,\n createRuntimeFromConfigSync,\n} as const;\n\n/**\n * Facade: grouped MCP server helpers.\n */\nexport const mcpApi = {\n createMcpServer,\n createMCPServer,\n runMCPServerOverStdio,\n createMCPStreamableHttpHandler,\n createMCPServerStreamableHttp,\n} as const;\n\n/**\n * Facade: grouped OpenAPI/HTTP helpers.\n */\nexport const openApi = {\n createOpenAPIServer,\n createHttpService,\n} as const;\n"]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { createToolSpec } from './chunk-ODEHUAR4.js';
|
|
2
|
+
import { existsSync, readFileSync, statSync } from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import yaml from 'js-yaml';
|
|
5
|
+
|
|
6
|
+
function loadToolYaml(packageRoot, sourcePath) {
|
|
7
|
+
const dir = path.dirname(sourcePath);
|
|
8
|
+
const base = path.basename(sourcePath);
|
|
9
|
+
const dirPath = path.join(packageRoot, dir);
|
|
10
|
+
const yamlPath = existsSync(path.join(dirPath, `${base}.tool.yaml`)) ? path.join(dirPath, `${base}.tool.yaml`) : path.join(dirPath, `${base}.example.yaml`);
|
|
11
|
+
if (!existsSync(yamlPath)) return void 0;
|
|
12
|
+
try {
|
|
13
|
+
const raw = readFileSync(yamlPath, "utf-8");
|
|
14
|
+
const data = yaml.load(raw);
|
|
15
|
+
if (data == null || typeof data !== "object" || Array.isArray(data)) return void 0;
|
|
16
|
+
const obj = data;
|
|
17
|
+
const toolBlock = obj?.tool;
|
|
18
|
+
const arr = toolBlock?.list;
|
|
19
|
+
if (!Array.isArray(arr)) return void 0;
|
|
20
|
+
const defaults = toolBlock?.defaults != null && typeof toolBlock.defaults === "object" && !Array.isArray(toolBlock.defaults) ? toolBlock.defaults : {};
|
|
21
|
+
const item = arr.find(
|
|
22
|
+
(e) => e != null && typeof e === "object" && e.name === base
|
|
23
|
+
);
|
|
24
|
+
if (!item || typeof item !== "object") return void 0;
|
|
25
|
+
const { name: _n, ...rest } = item;
|
|
26
|
+
const merged = { ...defaults, ...rest };
|
|
27
|
+
if (Object.keys(merged).length === 0) return void 0;
|
|
28
|
+
return merged;
|
|
29
|
+
} catch {
|
|
30
|
+
return void 0;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function loadExtensionManifest(manifestPathOrDir) {
|
|
34
|
+
const p = path.resolve(manifestPathOrDir);
|
|
35
|
+
let manifestPath;
|
|
36
|
+
if (existsSync(p) && statSync(p).isFile()) {
|
|
37
|
+
manifestPath = p;
|
|
38
|
+
} else {
|
|
39
|
+
const inDir = path.join(p, "core-tools-manifest.json");
|
|
40
|
+
const inDist = path.join(p, "dist", "core-tools-manifest.json");
|
|
41
|
+
manifestPath = existsSync(inDir) ? inDir : inDist;
|
|
42
|
+
}
|
|
43
|
+
const raw = readFileSync(manifestPath, "utf-8");
|
|
44
|
+
const parsed = JSON.parse(raw);
|
|
45
|
+
if (Array.isArray(parsed)) {
|
|
46
|
+
return { entries: parsed };
|
|
47
|
+
}
|
|
48
|
+
return { kind: parsed.kind, entries: parsed.tools ?? [] };
|
|
49
|
+
}
|
|
50
|
+
function registerToolsFromManifest(registry, options) {
|
|
51
|
+
const { manifestPathOrDir, kind: kindOpt, only, namePrefixes, packageRoot } = options;
|
|
52
|
+
const loaded = loadExtensionManifest(manifestPathOrDir);
|
|
53
|
+
const kind = kindOpt ?? loaded.kind ?? "extension";
|
|
54
|
+
const entries = loaded.entries;
|
|
55
|
+
const onlySet = only?.length ? new Set(only) : null;
|
|
56
|
+
const registered = [];
|
|
57
|
+
for (const entry of entries) {
|
|
58
|
+
const toolName = entry.name ?? (entry.coreName != null ? entry.coreName.replace(/^[^/]+\//, "").replace(/^src\./, "") : entry.sourcePath.replace(/^src\//, "").replace(/\//g, "."));
|
|
59
|
+
let spec = createToolSpec({
|
|
60
|
+
name: toolName,
|
|
61
|
+
kind,
|
|
62
|
+
description: entry.description,
|
|
63
|
+
inputSchema: entry.inputSchema,
|
|
64
|
+
outputSchema: entry.outputSchema,
|
|
65
|
+
capabilities: [],
|
|
66
|
+
sideEffect: entry.sideEffect
|
|
67
|
+
});
|
|
68
|
+
if (onlySet && !onlySet.has(spec.name)) continue;
|
|
69
|
+
if (namePrefixes?.length && !namePrefixes.some((prefix) => spec.name.startsWith(prefix))) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const defaultArgs = packageRoot != null ? loadToolYaml(packageRoot, entry.sourcePath) : void 0;
|
|
73
|
+
spec = {
|
|
74
|
+
...spec,
|
|
75
|
+
_meta: {
|
|
76
|
+
...spec._meta,
|
|
77
|
+
sourcePath: entry.sourcePath,
|
|
78
|
+
exportName: entry.exportName,
|
|
79
|
+
shortName: toolName,
|
|
80
|
+
...packageRoot != null && { packageRoot },
|
|
81
|
+
...defaultArgs != null && Object.keys(defaultArgs).length > 0 && { defaultArgs }
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
registry.register(spec);
|
|
85
|
+
registered.push(spec);
|
|
86
|
+
}
|
|
87
|
+
return registered;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export { loadExtensionManifest, loadToolYaml, registerToolsFromManifest };
|
|
91
|
+
//# sourceMappingURL=chunk-JZ6LKSAS.js.map
|
|
92
|
+
//# sourceMappingURL=chunk-JZ6LKSAS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api/extension/loadToolYaml.ts","../src/api/extension/registerFromManifest.ts"],"names":["path","existsSync","readFileSync"],"mappings":"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","file":"chunk-JZ6LKSAS.js","sourcesContent":["/**\n * Load per-tool default args/config from <base>.tool.yaml (framework-defined format).\n *\n * Supported YAML format:\n * tool:\n * defaults: # optional; same level as list; merged into every tool's defaultArgs\n * sandboxRoot: \"\"\n * maxBytes: 5242880\n * list:\n * - name: fetchText\n * timeoutMs: 5000\n * maxBytes: 1048576\n * (find item where name === tool base name; result = { ...defaults, ...item } minus name)\n */\nimport { readFileSync, existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport yaml from \"js-yaml\";\n\n/**\n * Load tool.yaml for a given tool. Path: packageRoot / dirname(sourcePath) / basename(sourcePath).tool.yaml\n * Returns default args (and config) for the tool, or undefined if file missing or no matching entry.\n * If tool.defaults exists (same level as tool.list), it is merged first; list item fields override.\n */\nexport function loadToolYaml(\n packageRoot: string,\n sourcePath: string,\n): Record<string, unknown> | undefined {\n const dir = path.dirname(sourcePath);\n const base = path.basename(sourcePath);\n const dirPath = path.join(packageRoot, dir);\n const yamlPath = existsSync(path.join(dirPath, `${base}.tool.yaml`))\n ? path.join(dirPath, `${base}.tool.yaml`)\n : path.join(dirPath, `${base}.example.yaml`);\n if (!existsSync(yamlPath)) return undefined;\n try {\n const raw = readFileSync(yamlPath, \"utf-8\");\n const data = yaml.load(raw) as unknown;\n if (data == null || typeof data !== \"object\" || Array.isArray(data)) return undefined;\n const obj = data as Record<string, unknown>;\n const toolBlock = obj?.tool as Record<string, unknown> | undefined;\n const arr = toolBlock?.list;\n if (!Array.isArray(arr)) return undefined;\n const defaults =\n toolBlock?.defaults != null &&\n typeof toolBlock.defaults === \"object\" &&\n !Array.isArray(toolBlock.defaults)\n ? (toolBlock.defaults as Record<string, unknown>)\n : {};\n const item = arr.find(\n (e: unknown) => e != null && typeof e === \"object\" && (e as Record<string, unknown>).name === base,\n ) as Record<string, unknown> | undefined;\n if (!item || typeof item !== \"object\") return undefined;\n const { name: _n, ...rest } = item;\n const merged = { ...defaults, ...rest };\n if (Object.keys(merged).length === 0) return undefined;\n return merged;\n } catch {\n return undefined;\n }\n}\n","/**\n * Generic manifest-based registration for extensions.\n * Reads a pre-built JSON manifest (extension produces it at build time; agent-tool does not scan @tool).\n * Registers ToolSpecs with the registry. When packageRoot is provided, loads <base>.tool.yaml per tool and sets defaultArgs in _meta.\n */\nimport { readFileSync, existsSync, statSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { createToolSpec } from \"../../core/types/ToolSpec.js\";\nimport type { ToolSpec, HitlSideEffect } from \"../../core/types/ToolSpec.js\";\nimport type { ToolRegistry } from \"../../core/registry/ToolRegistry.js\";\nimport { loadToolYaml } from \"./loadToolYaml.js\";\n\n/** Manifest entry shape (convention: extension build emits this, e.g. from @tool scan). */\nexport interface ExtensionManifestEntry {\n /** Tool name (e.g. \"exec.runCommand\"). Legacy manifests may have coreName instead. */\n name?: string;\n /** @deprecated Use name instead. Legacy: e.g. \"core/src.exec.runCommand\". */\n coreName?: string;\n description: string;\n inputSchema: object;\n outputSchema: object;\n sourcePath: string;\n exportName: string;\n sideEffect: HitlSideEffect;\n}\n\n/** Loaded manifest: entries + optional kind from manifest file. */\nexport interface LoadedExtensionManifest {\n kind?: string;\n entries: ExtensionManifestEntry[];\n}\n\nexport interface RegisterFromManifestOptions {\n /** Path to manifest JSON (or directory containing core-tools-manifest.json). */\n manifestPathOrDir: string;\n /** Tool kind; if omitted, uses manifest.kind or \"extension\". */\n kind?: string;\n /** Filter: only register these tool names. */\n only?: string[];\n /** Filter: only register tools whose name starts with one of these prefixes. */\n namePrefixes?: string[];\n /** Extension package root (e.g. dist); when set, loads <base>.tool.yaml per tool and sets defaultArgs in _meta. */\n packageRoot?: string;\n}\n\n/**\n * Load manifest from path. Supports array or { kind?, tools: ExtensionManifestEntry[] }.\n * Returns entries + optional kind so framework can use dynamic kind from manifest.\n */\nexport function loadExtensionManifest(manifestPathOrDir: string): LoadedExtensionManifest {\n const p = path.resolve(manifestPathOrDir);\n let manifestPath: string;\n if (existsSync(p) && statSync(p).isFile()) {\n manifestPath = p;\n } else {\n const inDir = path.join(p, \"core-tools-manifest.json\");\n const inDist = path.join(p, \"dist\", \"core-tools-manifest.json\");\n manifestPath = existsSync(inDir) ? inDir : inDist;\n }\n const raw = readFileSync(manifestPath, \"utf-8\");\n const parsed = JSON.parse(raw) as ExtensionManifestEntry[] | { kind?: string; tools: ExtensionManifestEntry[] };\n if (Array.isArray(parsed)) {\n return { entries: parsed };\n }\n return { kind: parsed.kind, entries: parsed.tools ?? [] };\n}\n\n/**\n * Register tools from a manifest with the registry. Returns the list of registered specs.\n * Extension packages call this from their register (or equivalent) with their package root.\n */\nexport function registerToolsFromManifest(\n registry: ToolRegistry,\n options: RegisterFromManifestOptions,\n): ToolSpec[] {\n const { manifestPathOrDir, kind: kindOpt, only, namePrefixes, packageRoot } = options;\n const loaded = loadExtensionManifest(manifestPathOrDir);\n const kind = (kindOpt ?? loaded.kind ?? \"extension\") as ToolSpec[\"kind\"];\n const entries = loaded.entries;\n const onlySet = only?.length ? new Set(only) : null;\n const registered: ToolSpec[] = [];\n\n for (const entry of entries) {\n const toolName =\n entry.name ??\n (entry.coreName != null\n ? entry.coreName.replace(/^[^/]+\\//, \"\").replace(/^src\\./, \"\")\n : entry.sourcePath.replace(/^src\\//, \"\").replace(/\\//g, \".\"));\n let spec = createToolSpec({\n name: toolName,\n kind,\n description: entry.description,\n inputSchema: entry.inputSchema,\n outputSchema: entry.outputSchema,\n capabilities: [],\n sideEffect: entry.sideEffect,\n });\n if (onlySet && !onlySet.has(spec.name)) continue;\n if (namePrefixes?.length && !namePrefixes.some((prefix) => spec.name.startsWith(prefix))) {\n continue;\n }\n const defaultArgs =\n packageRoot != null ? loadToolYaml(packageRoot, entry.sourcePath) : undefined;\n spec = {\n ...spec,\n _meta: {\n ...spec._meta,\n sourcePath: entry.sourcePath,\n exportName: entry.exportName,\n shortName: toolName,\n ...(packageRoot != null && { packageRoot }),\n ...(defaultArgs != null && Object.keys(defaultArgs).length > 0 && { defaultArgs }),\n },\n } as ToolSpec;\n registry.register(spec);\n registered.push(spec);\n }\n return registered;\n}\n"]}
|
package/dist/extension.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkBXFRXPLX_cjs = require('./chunk-BXFRXPLX.cjs');
|
|
4
|
+
var chunk5QH7YY4Z_cjs = require('./chunk-5QH7YY4Z.cjs');
|
|
4
5
|
require('./chunk-LHKEJNKL.cjs');
|
|
5
6
|
require('./chunk-QEJF3KDV.cjs');
|
|
6
7
|
|
|
@@ -8,51 +9,51 @@ require('./chunk-QEJF3KDV.cjs');
|
|
|
8
9
|
|
|
9
10
|
Object.defineProperty(exports, "createContextRunner", {
|
|
10
11
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
12
|
+
get: function () { return chunkBXFRXPLX_cjs.createContextRunner; }
|
|
12
13
|
});
|
|
13
14
|
Object.defineProperty(exports, "createDynamicImportAdapter", {
|
|
14
15
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
16
|
+
get: function () { return chunkBXFRXPLX_cjs.createDynamicImportAdapter; }
|
|
16
17
|
});
|
|
17
18
|
Object.defineProperty(exports, "createExtension", {
|
|
18
19
|
enumerable: true,
|
|
19
|
-
get: function () { return
|
|
20
|
+
get: function () { return chunkBXFRXPLX_cjs.createExtension; }
|
|
20
21
|
});
|
|
21
22
|
Object.defineProperty(exports, "generateExtensionManifest", {
|
|
22
23
|
enumerable: true,
|
|
23
|
-
get: function () { return
|
|
24
|
+
get: function () { return chunkBXFRXPLX_cjs.generateExtensionManifest; }
|
|
24
25
|
});
|
|
25
26
|
Object.defineProperty(exports, "generateManifest", {
|
|
26
27
|
enumerable: true,
|
|
27
|
-
get: function () { return
|
|
28
|
+
get: function () { return chunkBXFRXPLX_cjs.generateManifest; }
|
|
28
29
|
});
|
|
29
30
|
Object.defineProperty(exports, "getGroupNamePrefixes", {
|
|
30
31
|
enumerable: true,
|
|
31
|
-
get: function () { return
|
|
32
|
+
get: function () { return chunkBXFRXPLX_cjs.getGroupNamePrefixes; }
|
|
32
33
|
});
|
|
33
|
-
Object.defineProperty(exports, "
|
|
34
|
+
Object.defineProperty(exports, "overrideWithConfig", {
|
|
34
35
|
enumerable: true,
|
|
35
|
-
get: function () { return
|
|
36
|
+
get: function () { return chunkBXFRXPLX_cjs.overrideWithConfig; }
|
|
36
37
|
});
|
|
37
|
-
Object.defineProperty(exports, "
|
|
38
|
+
Object.defineProperty(exports, "registerExtension", {
|
|
38
39
|
enumerable: true,
|
|
39
|
-
get: function () { return
|
|
40
|
+
get: function () { return chunkBXFRXPLX_cjs.registerExtension; }
|
|
40
41
|
});
|
|
41
|
-
Object.defineProperty(exports, "
|
|
42
|
+
Object.defineProperty(exports, "resolveExtensionPackageRoot", {
|
|
42
43
|
enumerable: true,
|
|
43
|
-
get: function () { return
|
|
44
|
+
get: function () { return chunkBXFRXPLX_cjs.resolveExtensionPackageRoot; }
|
|
44
45
|
});
|
|
45
|
-
Object.defineProperty(exports, "
|
|
46
|
+
Object.defineProperty(exports, "loadExtensionManifest", {
|
|
46
47
|
enumerable: true,
|
|
47
|
-
get: function () { return
|
|
48
|
+
get: function () { return chunk5QH7YY4Z_cjs.loadExtensionManifest; }
|
|
48
49
|
});
|
|
49
|
-
Object.defineProperty(exports, "
|
|
50
|
+
Object.defineProperty(exports, "loadToolYaml", {
|
|
50
51
|
enumerable: true,
|
|
51
|
-
get: function () { return
|
|
52
|
+
get: function () { return chunk5QH7YY4Z_cjs.loadToolYaml; }
|
|
52
53
|
});
|
|
53
|
-
Object.defineProperty(exports, "
|
|
54
|
+
Object.defineProperty(exports, "registerToolsFromManifest", {
|
|
54
55
|
enumerable: true,
|
|
55
|
-
get: function () { return
|
|
56
|
+
get: function () { return chunk5QH7YY4Z_cjs.registerToolsFromManifest; }
|
|
56
57
|
});
|
|
57
58
|
//# sourceMappingURL=extension.cjs.map
|
|
58
59
|
//# sourceMappingURL=extension.cjs.map
|
package/dist/extension.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { createContextRunner, createDynamicImportAdapter, createExtension, generateExtensionManifest, generateManifest, getGroupNamePrefixes,
|
|
1
|
+
export { createContextRunner, createDynamicImportAdapter, createExtension, generateExtensionManifest, generateManifest, getGroupNamePrefixes, overrideWithConfig, registerExtension, resolveExtensionPackageRoot } from './chunk-EFILLN6Q.js';
|
|
2
|
+
export { loadExtensionManifest, loadToolYaml, registerToolsFromManifest } from './chunk-JZ6LKSAS.js';
|
|
2
3
|
import './chunk-HEVWKBBQ.js';
|
|
3
4
|
import './chunk-ODEHUAR4.js';
|
|
4
5
|
//# sourceMappingURL=extension.js.map
|
package/dist/index.cjs
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
require('./chunk-YL6RC7HQ.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkBXFRXPLX_cjs = require('./chunk-BXFRXPLX.cjs');
|
|
5
5
|
var chunkR55NXJIH_cjs = require('./chunk-R55NXJIH.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunkGXFDYM3O_cjs = require('./chunk-GXFDYM3O.cjs');
|
|
7
|
+
var chunk5QH7YY4Z_cjs = require('./chunk-5QH7YY4Z.cjs');
|
|
7
8
|
require('./chunk-ICHSEIZN.cjs');
|
|
8
9
|
require('./chunk-NOGGIM7B.cjs');
|
|
9
10
|
var chunkTBDSFXNG_cjs = require('./chunk-TBDSFXNG.cjs');
|
|
10
|
-
var
|
|
11
|
+
var chunkEIIHED57_cjs = require('./chunk-EIIHED57.cjs');
|
|
11
12
|
require('./chunk-UUNG3GL3.cjs');
|
|
12
13
|
require('./chunk-33N4Y6IS.cjs');
|
|
13
14
|
var chunkLHKEJNKL_cjs = require('./chunk-LHKEJNKL.cjs');
|
|
@@ -36,7 +37,7 @@ function normalizeAgentToolConfigRef(raw) {
|
|
|
36
37
|
// src/config/index.ts
|
|
37
38
|
function loadToolRuntimeConfig(options = {}) {
|
|
38
39
|
const configPath = path.resolve(options.configPath ?? "config/tool.yaml");
|
|
39
|
-
return
|
|
40
|
+
return chunkEIIHED57_cjs.loadToolConfig(configPath);
|
|
40
41
|
}
|
|
41
42
|
function createToolConfig(options = {}) {
|
|
42
43
|
const base = loadToolRuntimeConfig(options);
|
|
@@ -54,18 +55,18 @@ var platformApi = {
|
|
|
54
55
|
scan: chunkLHKEJNKL_cjs.scan
|
|
55
56
|
},
|
|
56
57
|
extension: {
|
|
57
|
-
createExtension:
|
|
58
|
-
generateManifest:
|
|
59
|
-
generateExtensionManifest:
|
|
60
|
-
registerExtension:
|
|
61
|
-
registerToolsFromManifest:
|
|
62
|
-
loadExtensionManifest:
|
|
63
|
-
loadToolYaml:
|
|
64
|
-
resolveExtensionPackageRoot:
|
|
65
|
-
overrideWithConfig:
|
|
66
|
-
getGroupNamePrefixes:
|
|
67
|
-
createDynamicImportAdapter:
|
|
68
|
-
createContextRunner:
|
|
58
|
+
createExtension: chunkBXFRXPLX_cjs.createExtension,
|
|
59
|
+
generateManifest: chunkBXFRXPLX_cjs.generateManifest,
|
|
60
|
+
generateExtensionManifest: chunkBXFRXPLX_cjs.generateExtensionManifest,
|
|
61
|
+
registerExtension: chunkBXFRXPLX_cjs.registerExtension,
|
|
62
|
+
registerToolsFromManifest: chunk5QH7YY4Z_cjs.registerToolsFromManifest,
|
|
63
|
+
loadExtensionManifest: chunk5QH7YY4Z_cjs.loadExtensionManifest,
|
|
64
|
+
loadToolYaml: chunk5QH7YY4Z_cjs.loadToolYaml,
|
|
65
|
+
resolveExtensionPackageRoot: chunkBXFRXPLX_cjs.resolveExtensionPackageRoot,
|
|
66
|
+
overrideWithConfig: chunkBXFRXPLX_cjs.overrideWithConfig,
|
|
67
|
+
getGroupNamePrefixes: chunkBXFRXPLX_cjs.getGroupNamePrefixes,
|
|
68
|
+
createDynamicImportAdapter: chunkBXFRXPLX_cjs.createDynamicImportAdapter,
|
|
69
|
+
createContextRunner: chunkBXFRXPLX_cjs.createContextRunner
|
|
69
70
|
},
|
|
70
71
|
security: {
|
|
71
72
|
resolveSandboxedPath: chunkZDSZHEQU_cjs.resolveSandboxedPath,
|
|
@@ -88,55 +89,55 @@ var platformApi = {
|
|
|
88
89
|
|
|
89
90
|
Object.defineProperty(exports, "createLangChainAgentTools", {
|
|
90
91
|
enumerable: true,
|
|
91
|
-
get: function () { return
|
|
92
|
+
get: function () { return chunkGXFDYM3O_cjs.createLangChainAgentTools; }
|
|
92
93
|
});
|
|
93
94
|
Object.defineProperty(exports, "createMcpServer", {
|
|
94
95
|
enumerable: true,
|
|
95
|
-
get: function () { return
|
|
96
|
+
get: function () { return chunkGXFDYM3O_cjs.createMcpServer; }
|
|
96
97
|
});
|
|
97
98
|
Object.defineProperty(exports, "createOpenAPIServer", {
|
|
98
99
|
enumerable: true,
|
|
99
|
-
get: function () { return
|
|
100
|
+
get: function () { return chunkGXFDYM3O_cjs.createOpenAPIServer; }
|
|
100
101
|
});
|
|
101
102
|
Object.defineProperty(exports, "langchainApi", {
|
|
102
103
|
enumerable: true,
|
|
103
|
-
get: function () { return
|
|
104
|
+
get: function () { return chunkGXFDYM3O_cjs.langchainApi; }
|
|
104
105
|
});
|
|
105
106
|
Object.defineProperty(exports, "mcpApi", {
|
|
106
107
|
enumerable: true,
|
|
107
|
-
get: function () { return
|
|
108
|
+
get: function () { return chunkGXFDYM3O_cjs.mcpApi; }
|
|
108
109
|
});
|
|
109
110
|
Object.defineProperty(exports, "openApi", {
|
|
110
111
|
enumerable: true,
|
|
111
|
-
get: function () { return
|
|
112
|
+
get: function () { return chunkGXFDYM3O_cjs.openApi; }
|
|
112
113
|
});
|
|
113
114
|
Object.defineProperty(exports, "runtimeApi", {
|
|
114
115
|
enumerable: true,
|
|
115
|
-
get: function () { return
|
|
116
|
+
get: function () { return chunkGXFDYM3O_cjs.runtimeApi; }
|
|
116
117
|
});
|
|
117
118
|
Object.defineProperty(exports, "createMCPServer", {
|
|
118
119
|
enumerable: true,
|
|
119
|
-
get: function () { return
|
|
120
|
+
get: function () { return chunkEIIHED57_cjs.createMCPServer; }
|
|
120
121
|
});
|
|
121
122
|
Object.defineProperty(exports, "createMCPServerStreamableHttp", {
|
|
122
123
|
enumerable: true,
|
|
123
|
-
get: function () { return
|
|
124
|
+
get: function () { return chunkEIIHED57_cjs.createMCPServerStreamableHttp; }
|
|
124
125
|
});
|
|
125
126
|
Object.defineProperty(exports, "createMCPStreamableHttpHandler", {
|
|
126
127
|
enumerable: true,
|
|
127
|
-
get: function () { return
|
|
128
|
+
get: function () { return chunkEIIHED57_cjs.createMCPStreamableHttpHandler; }
|
|
128
129
|
});
|
|
129
130
|
Object.defineProperty(exports, "createRuntimeFromConfig", {
|
|
130
131
|
enumerable: true,
|
|
131
|
-
get: function () { return
|
|
132
|
+
get: function () { return chunkEIIHED57_cjs.createRuntimeFromConfig; }
|
|
132
133
|
});
|
|
133
134
|
Object.defineProperty(exports, "createRuntimeFromConfigSync", {
|
|
134
135
|
enumerable: true,
|
|
135
|
-
get: function () { return
|
|
136
|
+
get: function () { return chunkEIIHED57_cjs.createRuntimeFromConfigSync; }
|
|
136
137
|
});
|
|
137
138
|
Object.defineProperty(exports, "runMCPServerOverStdio", {
|
|
138
139
|
enumerable: true,
|
|
139
|
-
get: function () { return
|
|
140
|
+
get: function () { return chunkEIIHED57_cjs.runMCPServerOverStdio; }
|
|
140
141
|
});
|
|
141
142
|
Object.defineProperty(exports, "ToolRegistry", {
|
|
142
143
|
enumerable: true,
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config/ref.ts","../src/config/index.ts","../src/index.ts"],"names":["resolve","loadToolConfig","deepMerge","initProject","buildMCPPackage","runMCPServer","scanForTools","scan","createExtension","generateManifest","generateExtensionManifest","registerExtension","registerToolsFromManifest","loadExtensionManifest","loadToolYaml","resolveExtensionPackageRoot","overrideWithConfig","getGroupNamePrefixes","createDynamicImportAdapter","createContextRunner","resolveSandboxedPath","setSandboxValidationEnabled","validateUrl","isIpInBlockedCidrs","createToolSpec","DEFAULT_INPUT_SCHEMA","DEFAULT_OUTPUT_SCHEMA","createTaggedError","withRetry","isRetryable","ToolRegistry"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/config/ref.ts","../src/config/index.ts","../src/index.ts"],"names":["resolve","loadToolConfig","deepMerge","initProject","buildMCPPackage","runMCPServer","scanForTools","scan","createExtension","generateManifest","generateExtensionManifest","registerExtension","registerToolsFromManifest","loadExtensionManifest","loadToolYaml","resolveExtensionPackageRoot","overrideWithConfig","getGroupNamePrefixes","createDynamicImportAdapter","createContextRunner","resolveSandboxedPath","setSandboxValidationEnabled","validateUrl","isIpInBlockedCidrs","createToolSpec","DEFAULT_INPUT_SCHEMA","DEFAULT_OUTPUT_SCHEMA","createTaggedError","withRetry","isRetryable","ToolRegistry"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAOA,SAAS,SAAS,KAAA,EAAqD;AACrE,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,OAAQ,KAAA,GAAoC,MAAA;AAC5F;AAGO,SAAS,4BAA4B,GAAA,EAA2C;AACrF,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,IAAY,GAAA,CAAI,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA,EAAG,OAAO,EAAE,GAAA,EAAK,GAAA,CAAI,MAAK,EAAE;AAC/E,EAAA,MAAM,GAAA,GAAM,SAAS,GAAG,CAAA;AACxB,EAAA,IAAI,CAAC,GAAA,EAAK,OAAO,EAAC;AAElB,EAAA,MAAM,MAAmC,EAAC;AAC1C,EAAA,IAAI,OAAO,GAAA,CAAI,GAAA,KAAQ,QAAA,IAAY,IAAI,GAAA,CAAI,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA,EAAG,GAAA,CAAI,GAAA,GAAM,GAAA,CAAI,IAAI,IAAA,EAAK;AACrF,EAAA,IAAI,OAAO,GAAA,CAAI,WAAA,KAAgB,QAAA,IAAY,IAAI,WAAA,CAAY,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA,EAAG,GAAA,CAAI,WAAA,GAAc,GAAA,CAAI,YAAY,IAAA,EAAK;AACrH,EAAA,IAAI,OAAO,GAAA,CAAI,UAAA,KAAe,QAAA,IAAY,IAAI,UAAA,CAAW,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA,EAAG,GAAA,CAAI,UAAA,GAAa,GAAA,CAAI,WAAW,IAAA,EAAK;AACjH,EAAA,OAAO,GAAA;AACT;;;ACPO,SAAS,qBAAA,CAAsB,OAAA,GAAiC,EAAC,EAAkB;AACxF,EAAA,MAAM,UAAA,GAAaA,YAAA,CAAQ,OAAA,CAAQ,UAAA,IAAc,kBAAkB,CAAA;AACnE,EAAA,OAAOC,iCAAe,UAAU,CAAA;AAClC;AAEO,SAAS,gBAAA,CAAiB,OAAA,GAAmC,EAAC,EAAkB;AACrF,EAAA,MAAM,IAAA,GAAO,sBAAsB,OAAO,CAAA;AAC1C,EAAA,IAAI,CAAC,OAAA,CAAQ,SAAA,EAAW,OAAO,IAAA;AAC/B,EAAA,OAAOC,qBAAA,CAAU,EAAC,EAAoB,IAAA,EAAM,QAAQ,SAAS,CAAA;AAC/D;;;ACgEO,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAO;AAAA,iBACLC,6BAAA;AAAA,qBACAC,iCAAA;AAAA,kBACAC,8BAAA;AAAA,kBACAC,8BAAA;AAAA,UACAC;AAAA,GACF;AAAA,EACA,SAAA,EAAW;AAAA,qBACTC,iCAAA;AAAA,sBACAC,kCAAA;AAAA,+BACAC,2CAAA;AAAA,uBACAC,mCAAA;AAAA,+BACAC,2CAAA;AAAA,2BACAC,uCAAA;AAAA,kBACAC,8BAAA;AAAA,iCACAC,6CAAA;AAAA,wBACAC,oCAAA;AAAA,0BACAC,sCAAA;AAAA,gCACAC,4CAAA;AAAA,yBACAC;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,0BACRC,sCAAA;AAAA,iCACAC,6CAAA;AAAA,iBACAC,6BAAA;AAAA,wBACAC;AAAA,GACF;AAAA,EACA,IAAA,EAAM;AAAA,oBACJC,gCAAA;AAAA,0BACAC,sCAAA;AAAA,2BACAC;AAAA,GACF;AAAA,EACA,OAAA,EAAS;AAAA,uBACPC,mCAAA;AAAA,eACAC,2BAAA;AAAA,iBACAC,6BAAA;AAAA,kBACAC;AAAA;AAEJ","file":"index.cjs","sourcesContent":["/** Agent-level reference to tool config files by environment. */\nexport interface AgentToolConfigRef {\n ref?: string;\n development?: string;\n production?: string;\n}\n\nfunction asObject(input: unknown): Record<string, unknown> | undefined {\n return typeof input === \"object\" && input !== null ? (input as Record<string, unknown>) : undefined;\n}\n\n/** Normalize unknown value to AgentToolConfigRef. */\nexport function normalizeAgentToolConfigRef(raw: unknown): Partial<AgentToolConfigRef> {\n if (typeof raw === \"string\" && raw.trim().length > 0) return { ref: raw.trim() };\n const obj = asObject(raw);\n if (!obj) return {};\n\n const out: Partial<AgentToolConfigRef> = {};\n if (typeof obj.ref === \"string\" && obj.ref.trim().length > 0) out.ref = obj.ref.trim();\n if (typeof obj.development === \"string\" && obj.development.trim().length > 0) out.development = obj.development.trim();\n if (typeof obj.production === \"string\" && obj.production.trim().length > 0) out.production = obj.production.trim();\n return out;\n}\n","import { resolve } from \"node:path\";\nimport { deepMerge } from \"@easynet/agent-common\";\nimport { loadToolConfig, type ToolYamlShape } from \"../tools/util/toolConfig.js\";\n\nexport { normalizeAgentToolConfigRef } from \"./ref.js\";\nexport type { AgentToolConfigRef } from \"./ref.js\";\n\nexport interface LoadToolConfigOptions {\n configPath?: string;\n}\n\nexport interface CreateToolConfigOptions extends LoadToolConfigOptions {\n overrides?: Partial<ToolYamlShape>;\n}\n\nexport function loadToolRuntimeConfig(options: LoadToolConfigOptions = {}): ToolYamlShape {\n const configPath = resolve(options.configPath ?? \"config/tool.yaml\");\n return loadToolConfig(configPath);\n}\n\nexport function createToolConfig(options: CreateToolConfigOptions = {}): ToolYamlShape {\n const base = loadToolRuntimeConfig(options);\n if (!options.overrides) return base;\n return deepMerge({} as ToolYamlShape, base, options.overrides);\n}\n","/**\n * Minimal public API for @easynet/agent-tool.\n * Keep root exports focused on high-level runtime/server creation.\n */\n\n// High-level API (most users should import from @easynet/agent-tool/api)\nexport {\n createLangChainAgentTools,\n createMcpServer,\n createOpenAPIServer,\n createMCPServer,\n runMCPServerOverStdio,\n createMCPStreamableHttpHandler,\n createMCPServerStreamableHttp,\n createRuntimeFromConfig,\n createRuntimeFromConfigSync,\n langchainApi,\n runtimeApi,\n mcpApi,\n openApi,\n} from \"./api/main.js\";\nexport type {\n CreateAgentToolsOptions,\n CreateRuntimeOptions,\n CreateRuntimeResult,\n MCPServerOptions,\n MCPServerResult,\n McpServer,\n CreateMCPServerStreamableHttpOptions,\n MCPServerStreamableHttpResult,\n CreateHttpServiceOptions,\n HttpServiceResult,\n OpenAPIExpressApp,\n OpenAPIHttpServerOptions,\n} from \"./api/main.js\";\nexport type { AgentToolConfigRef } from \"./config/index.js\";\nexport {\n normalizeAgentToolConfigRef,\n loadToolRuntimeConfig,\n createToolConfig,\n} from \"./config/index.js\";\nexport type { LoadToolConfigOptions, CreateToolConfigOptions } from \"./config/index.js\";\n\n// Backward compatibility: older extensions import runtime helpers from package root.\nexport { createTaggedError, withRetry, isRetryable, ToolRegistry } from \"./core/runtime.js\";\n\nimport {\n initProject,\n buildMCPPackage,\n runMCPServer,\n scanForTools,\n scan,\n} from \"./build.js\";\nimport {\n createExtension,\n generateManifest,\n generateExtensionManifest,\n registerExtension,\n registerToolsFromManifest,\n loadExtensionManifest,\n loadToolYaml,\n resolveExtensionPackageRoot,\n overrideWithConfig,\n getGroupNamePrefixes,\n createDynamicImportAdapter,\n createContextRunner,\n} from \"./extension.js\";\nimport {\n resolveSandboxedPath,\n setSandboxValidationEnabled,\n validateUrl,\n isIpInBlockedCidrs,\n} from \"./security.js\";\nimport {\n createToolSpec,\n DEFAULT_INPUT_SCHEMA,\n DEFAULT_OUTPUT_SCHEMA,\n} from \"./core/index.js\";\nimport {\n createTaggedError,\n withRetry,\n isRetryable,\n ToolRegistry,\n} from \"./core/runtime.js\";\n\n/**\n * Facade: grouped utilities beyond runtime/server creation.\n */\nexport const platformApi = {\n build: {\n initProject,\n buildMCPPackage,\n runMCPServer,\n scanForTools,\n scan,\n },\n extension: {\n createExtension,\n generateManifest,\n generateExtensionManifest,\n registerExtension,\n registerToolsFromManifest,\n loadExtensionManifest,\n loadToolYaml,\n resolveExtensionPackageRoot,\n overrideWithConfig,\n getGroupNamePrefixes,\n createDynamicImportAdapter,\n createContextRunner,\n },\n security: {\n resolveSandboxedPath,\n setSandboxValidationEnabled,\n validateUrl,\n isIpInBlockedCidrs,\n },\n core: {\n createToolSpec,\n DEFAULT_INPUT_SCHEMA,\n DEFAULT_OUTPUT_SCHEMA,\n },\n runtime: {\n createTaggedError,\n withRetry,\n isRetryable,\n ToolRegistry,\n },\n} as const;\n"]}
|