@easynet/agent-tool 1.0.73 → 1.0.75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -4
- package/dist/api/adapters/LangChainToolsHub.d.ts +1 -1
- package/dist/api/createAgentTools.d.ts +9 -7
- package/dist/api/createAgentTools.d.ts.map +1 -1
- package/dist/api/expose/index.d.ts +2 -2
- package/dist/api/expose/index.d.ts.map +1 -1
- package/dist/api/expose/mcpServer.d.ts +3 -4
- package/dist/api/expose/mcpServer.d.ts.map +1 -1
- package/dist/api/expose/openapiHttp.d.ts +15 -31
- package/dist/api/expose/openapiHttp.d.ts.map +1 -1
- package/dist/api/main.cjs +18 -18
- package/dist/api/main.d.ts +6 -6
- package/dist/api/main.d.ts.map +1 -1
- package/dist/api/main.js +2 -2
- package/dist/api/runtimeFromConfig.d.ts +1 -1
- package/dist/api/runtimeFromConfig.d.ts.map +1 -1
- package/dist/{chunk-EHXA64OA.js → chunk-MBCFJBZY.js} +300 -270
- package/dist/chunk-MBCFJBZY.js.map +1 -0
- package/dist/{chunk-QVXWW657.cjs → chunk-PYTHEY6A.cjs} +303 -271
- package/dist/chunk-PYTHEY6A.cjs.map +1 -0
- package/dist/{chunk-ZZHS55OM.cjs → chunk-SR53PQTG.cjs} +100 -51
- package/dist/chunk-SR53PQTG.cjs.map +1 -0
- package/dist/{chunk-4YLATI7J.js → chunk-XS26ZNYC.js} +87 -39
- package/dist/chunk-XS26ZNYC.js.map +1 -0
- package/dist/index.cjs +17 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/tools/util/toolConfig.d.ts +13 -0
- package/dist/tools/util/toolConfig.d.ts.map +1 -1
- package/dist/utils/cli/index.cjs +12 -12
- package/dist/utils/cli/index.js +1 -1
- package/package.json +4 -1
- package/dist/chunk-4YLATI7J.js.map +0 -1
- package/dist/chunk-EHXA64OA.js.map +0 -1
- package/dist/chunk-QVXWW657.cjs.map +0 -1
- package/dist/chunk-ZZHS55OM.cjs.map +0 -1
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkPYTHEY6A_cjs = require('./chunk-PYTHEY6A.cjs');
|
|
4
4
|
var chunkUUNG3GL3_cjs = require('./chunk-UUNG3GL3.cjs');
|
|
5
5
|
var chunk33N4Y6IS_cjs = require('./chunk-33N4Y6IS.cjs');
|
|
6
|
-
var tools = require('@langchain/core/tools');
|
|
7
6
|
var agentCommon = require('@easynet/agent-common');
|
|
7
|
+
var tools = require('@langchain/core/tools');
|
|
8
|
+
var url = require('url');
|
|
9
|
+
var path = require('path');
|
|
10
|
+
var fs = require('fs');
|
|
8
11
|
|
|
12
|
+
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
9
13
|
function getArgsSchemaIfWrapped(inputSchema) {
|
|
10
14
|
const s = inputSchema;
|
|
11
15
|
if (s?.type !== "object" || !s.properties || typeof s.properties !== "object") return null;
|
|
@@ -100,8 +104,6 @@ var LangChainToolsHub = class {
|
|
|
100
104
|
});
|
|
101
105
|
}
|
|
102
106
|
};
|
|
103
|
-
|
|
104
|
-
// src/api/createAgentTools.ts
|
|
105
107
|
function mergeHostLists(a, b) {
|
|
106
108
|
const seen = /* @__PURE__ */ new Set();
|
|
107
109
|
const out = [];
|
|
@@ -115,13 +117,34 @@ function mergeHostLists(a, b) {
|
|
|
115
117
|
}
|
|
116
118
|
return out;
|
|
117
119
|
}
|
|
118
|
-
function
|
|
120
|
+
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-SR53PQTG.cjs', document.baseURI).href))));
|
|
122
|
+
const candidates = [
|
|
123
|
+
path.resolve(moduleDir, "../../config/tool.yaml"),
|
|
124
|
+
// src/api -> config
|
|
125
|
+
path.resolve(moduleDir, "../config/tool.yaml"),
|
|
126
|
+
// dist/* -> config
|
|
127
|
+
path.resolve(process.cwd(), "config/tool.yaml")
|
|
128
|
+
// fallback for local app runtime
|
|
129
|
+
];
|
|
130
|
+
for (const candidate of candidates) {
|
|
131
|
+
if (fs.existsSync(candidate)) return candidate;
|
|
132
|
+
}
|
|
133
|
+
return candidates[0];
|
|
134
|
+
}
|
|
135
|
+
var EMBEDDED_TOOL_CONFIG_PATH = resolveEmbeddedToolConfigPath();
|
|
136
|
+
function loadMergedToolConfig(overridePath) {
|
|
137
|
+
const baseConfig = chunkPYTHEY6A_cjs.loadToolConfig(EMBEDDED_TOOL_CONFIG_PATH);
|
|
138
|
+
if (!overridePath) return baseConfig;
|
|
139
|
+
const overrideConfig = chunkPYTHEY6A_cjs.loadToolConfig(overridePath);
|
|
140
|
+
return agentCommon.deepMerge({}, baseConfig, overrideConfig);
|
|
141
|
+
}
|
|
142
|
+
function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve) {
|
|
119
143
|
const coreTools = opts.coreTools ?? { sandboxRoot: process.cwd(), allowedHosts: [], enableSandboxValidation: false };
|
|
120
|
-
|
|
121
|
-
const toolConfig = chunkQVXWW657_cjs.loadToolConfig(opts.configFilePath);
|
|
144
|
+
{
|
|
122
145
|
const updates = {};
|
|
123
146
|
if (toolConfig.sandboxedPath && typeof toolConfig.sandboxedPath === "string") {
|
|
124
|
-
updates.sandboxRoot =
|
|
147
|
+
updates.sandboxRoot = chunkPYTHEY6A_cjs.resolveSandboxedPath(configPathForResolve, toolConfig.sandboxedPath);
|
|
125
148
|
}
|
|
126
149
|
if (typeof toolConfig.enableSandboxValidation === "boolean") {
|
|
127
150
|
updates.enableSandboxValidation = toolConfig.enableSandboxValidation;
|
|
@@ -144,7 +167,7 @@ function runtimeOptionsFromConfig(opts) {
|
|
|
144
167
|
const packageDefaults = { ...coreTools.packageDefaults };
|
|
145
168
|
if (toolConfig.packageToolDefaults != null && Object.keys(toolConfig.packageToolDefaults).length > 0) {
|
|
146
169
|
for (const [descriptor, pkgConfig] of Object.entries(toolConfig.packageToolDefaults)) {
|
|
147
|
-
const prefix = descriptor.startsWith("file:") ?
|
|
170
|
+
const prefix = descriptor.startsWith("file:") ? chunkPYTHEY6A_cjs.fileDescriptorToPackagePrefix(descriptor) : chunkPYTHEY6A_cjs.npmDescriptorToPackagePrefixWithVersion(descriptor);
|
|
148
171
|
if (!prefix) continue;
|
|
149
172
|
const pkgDefaults = pkgConfig?.defaults != null && typeof pkgConfig.defaults === "object" && !Array.isArray(pkgConfig.defaults) ? pkgConfig.defaults : {};
|
|
150
173
|
if (Object.keys(pkgDefaults).length > 0) {
|
|
@@ -165,77 +188,103 @@ function runtimeOptionsFromConfig(opts) {
|
|
|
165
188
|
if (hasToolDefaults) {
|
|
166
189
|
updates.toolOverrides = flatOverrides;
|
|
167
190
|
}
|
|
168
|
-
if (Object.keys(updates).length > 0) {
|
|
169
|
-
return { ...opts, coreTools: { ...coreTools, ...updates } };
|
|
170
|
-
}
|
|
191
|
+
if (Object.keys(updates).length > 0) return { ...opts, coreTools: { ...coreTools, ...updates } };
|
|
171
192
|
}
|
|
172
193
|
return { ...opts, coreTools };
|
|
173
194
|
}
|
|
174
|
-
function
|
|
195
|
+
function createAgentToolRegistry(options) {
|
|
175
196
|
const opts = typeof options === "string" ? { configFilePath: options } : options ?? {};
|
|
176
|
-
const
|
|
177
|
-
const
|
|
197
|
+
const configPathForResolve = opts.configFilePath ?? EMBEDDED_TOOL_CONFIG_PATH;
|
|
198
|
+
const mergedToolConfig = loadMergedToolConfig(opts.configFilePath);
|
|
199
|
+
const runtimeOpts = runtimeOptionsFromConfig(opts, mergedToolConfig, configPathForResolve);
|
|
200
|
+
const { runtime } = chunkPYTHEY6A_cjs.createRuntimeFromConfigSync(runtimeOpts);
|
|
178
201
|
const hub = new LangChainToolsHub(runtime);
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
202
|
+
let cachedTools;
|
|
203
|
+
const getAllOrFilteredTools = () => {
|
|
204
|
+
if (cachedTools) return cachedTools;
|
|
205
|
+
const names = Array.isArray(mergedToolConfig.tools) ? mergedToolConfig.tools : [];
|
|
182
206
|
if (names.length > 0) {
|
|
183
207
|
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
184
|
-
const allBarePackages = names.every((n) =>
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
}
|
|
188
|
-
const expanded = chunkQVXWW657_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
189
|
-
return hub.getLangChainToolsForNames(expanded);
|
|
208
|
+
const allBarePackages = names.every((n) => chunkPYTHEY6A_cjs.isBarePackageDescriptor(String(n)));
|
|
209
|
+
cachedTools = allBarePackages ? hub.getLangChainTools() : hub.getLangChainToolsForNames(chunkPYTHEY6A_cjs.expandToolDescriptorsToRegistryNames(names, registryNames));
|
|
210
|
+
return cachedTools;
|
|
190
211
|
}
|
|
191
|
-
|
|
192
|
-
|
|
212
|
+
cachedTools = hub.getLangChainTools();
|
|
213
|
+
return cachedTools;
|
|
214
|
+
};
|
|
215
|
+
const pickToolsById = (id) => {
|
|
216
|
+
const tools = getAllOrFilteredTools();
|
|
217
|
+
if (!id) return tools;
|
|
218
|
+
const picked = tools.filter((tool) => tool.name === id);
|
|
219
|
+
if (picked.length === 0) throw new Error(`agent-tool cannot find tool id: ${id}`);
|
|
220
|
+
return picked;
|
|
221
|
+
};
|
|
222
|
+
return {
|
|
223
|
+
getLangChainAgentTools(id) {
|
|
224
|
+
return pickToolsById(id);
|
|
225
|
+
},
|
|
226
|
+
async getMcpServer(options2) {
|
|
227
|
+
const yamlDefaults = {
|
|
228
|
+
name: mergedToolConfig.mcp?.name,
|
|
229
|
+
version: mergedToolConfig.mcp?.version
|
|
230
|
+
};
|
|
231
|
+
const { server } = await chunkPYTHEY6A_cjs.createMCPServer(runtime, { ...yamlDefaults, ...options2 ?? {} });
|
|
232
|
+
return server;
|
|
233
|
+
},
|
|
234
|
+
async getOpenAPIServer(options2) {
|
|
235
|
+
const yamlDefaults = {
|
|
236
|
+
host: mergedToolConfig.openapi?.host,
|
|
237
|
+
port: mergedToolConfig.openapi?.port,
|
|
238
|
+
basePath: mergedToolConfig.openapi?.basePath
|
|
239
|
+
};
|
|
240
|
+
return chunkPYTHEY6A_cjs.createOpenAPIHttpServer(runtime, { ...yamlDefaults, ...options2 ?? {} });
|
|
241
|
+
}
|
|
242
|
+
};
|
|
193
243
|
}
|
|
194
244
|
async function createLangChainToolsAsync(options = {}) {
|
|
195
|
-
const
|
|
196
|
-
const
|
|
245
|
+
const configPathForResolve = options.configFilePath ?? EMBEDDED_TOOL_CONFIG_PATH;
|
|
246
|
+
const mergedToolConfig = loadMergedToolConfig(options.configFilePath);
|
|
247
|
+
const runtimeOpts = runtimeOptionsFromConfig(options, mergedToolConfig, configPathForResolve);
|
|
248
|
+
const { runtime } = await chunkPYTHEY6A_cjs.createRuntimeFromConfig(runtimeOpts);
|
|
197
249
|
const hub = new LangChainToolsHub(runtime);
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
if (allBarePackages) {
|
|
205
|
-
return hub.getLangChainTools();
|
|
206
|
-
}
|
|
207
|
-
const expanded = chunkQVXWW657_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
208
|
-
return hub.getLangChainToolsForNames(expanded);
|
|
250
|
+
const names = Array.isArray(mergedToolConfig.tools) ? mergedToolConfig.tools : [];
|
|
251
|
+
if (names.length > 0) {
|
|
252
|
+
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
253
|
+
const allBarePackages = names.every((n) => chunkPYTHEY6A_cjs.isBarePackageDescriptor(String(n)));
|
|
254
|
+
if (allBarePackages) {
|
|
255
|
+
return hub.getLangChainTools();
|
|
209
256
|
}
|
|
257
|
+
const expanded = chunkPYTHEY6A_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
258
|
+
return hub.getLangChainToolsForNames(expanded);
|
|
210
259
|
}
|
|
211
260
|
return hub.getLangChainTools();
|
|
212
261
|
}
|
|
213
262
|
|
|
214
263
|
// src/api/main.ts
|
|
215
264
|
var langchainApi = {
|
|
216
|
-
|
|
265
|
+
createAgentToolRegistry,
|
|
217
266
|
createLangChainToolsAsync
|
|
218
267
|
};
|
|
219
268
|
var runtimeApi = {
|
|
220
|
-
createRuntimeFromConfig:
|
|
221
|
-
createRuntimeFromConfigSync:
|
|
269
|
+
createRuntimeFromConfig: chunkPYTHEY6A_cjs.createRuntimeFromConfig,
|
|
270
|
+
createRuntimeFromConfigSync: chunkPYTHEY6A_cjs.createRuntimeFromConfigSync
|
|
222
271
|
};
|
|
223
272
|
var mcpApi = {
|
|
224
|
-
createMCPServer:
|
|
225
|
-
runMCPServerOverStdio:
|
|
226
|
-
createMCPStreamableHttpHandler:
|
|
227
|
-
createMCPServerStreamableHttp:
|
|
273
|
+
createMCPServer: chunkPYTHEY6A_cjs.createMCPServer,
|
|
274
|
+
runMCPServerOverStdio: chunkPYTHEY6A_cjs.runMCPServerOverStdio,
|
|
275
|
+
createMCPStreamableHttpHandler: chunkPYTHEY6A_cjs.createMCPStreamableHttpHandler,
|
|
276
|
+
createMCPServerStreamableHttp: chunkPYTHEY6A_cjs.createMCPServerStreamableHttp
|
|
228
277
|
};
|
|
229
278
|
var openApi = {
|
|
230
|
-
createOpenAPIServer:
|
|
231
|
-
createHttpService:
|
|
279
|
+
createOpenAPIServer: chunkPYTHEY6A_cjs.createHttpService,
|
|
280
|
+
createHttpService: chunkPYTHEY6A_cjs.createHttpService
|
|
232
281
|
};
|
|
233
282
|
|
|
234
|
-
exports.
|
|
283
|
+
exports.createAgentToolRegistry = createAgentToolRegistry;
|
|
235
284
|
exports.createLangChainToolsAsync = createLangChainToolsAsync;
|
|
236
285
|
exports.langchainApi = langchainApi;
|
|
237
286
|
exports.mcpApi = mcpApi;
|
|
238
287
|
exports.openApi = openApi;
|
|
239
288
|
exports.runtimeApi = runtimeApi;
|
|
240
|
-
//# sourceMappingURL=chunk-
|
|
241
|
-
//# sourceMappingURL=chunk-
|
|
289
|
+
//# sourceMappingURL=chunk-SR53PQTG.cjs.map
|
|
290
|
+
//# sourceMappingURL=chunk-SR53PQTG.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","deepMerge","resolveSandboxedPath","fileDescriptorToPackagePrefix","npmDescriptorToPackagePrefixWithVersion","createRuntimeFromConfigSync","isBarePackageDescriptor","expandToolDescriptorsToRegistryNames","options","createMCPServer","createOpenAPIHttpServer","createRuntimeFromConfig","runMCPServerOverStdio","createMCPStreamableHttpHandler","createMCPServerStreamableHttp","createHttpService"],"mappings":"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","file":"chunk-SR53PQTG.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 createAgentToolRegistry().getLangChainAgentTools() which loads from tools.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 * Create LangChain tools from config (sync or async). Uses PTCRuntime + registry\n * and exposes tools via LangChainToolsHub. All invokes go through PTC Intent.\n */\n\nimport { loadToolConfig, resolveSandboxedPath } from \"../tools/util/toolConfig.js\";\nimport type { ToolYamlShape } from \"../tools/util/toolConfig.js\";\nimport {\n expandToolDescriptorsToRegistryNames,\n isBarePackageDescriptor,\n npmDescriptorToPackagePrefixWithVersion,\n fileDescriptorToPackagePrefix,\n} from \"../tools/util/toolDescriptor.js\";\nimport { deepMerge } from \"@easynet/agent-common\";\nimport { createRuntimeFromConfigSync, createRuntimeFromConfig } from \"./runtimeFromConfig.js\";\nimport type { CreateRuntimeOptions } 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 override tool.yaml; values override embedded config/tool.yaml */\n configFilePath?: string;\n /** Project path for async loading (use createLangChainToolsAsync) */\n projectPath?: string;\n}\n\nexport interface AgentToolRegistry {\n getLangChainAgentTools(id?: string): StructuredToolInterface[];\n getMcpServer(options?: MCPServerOptions): Promise<McpServer>;\n getOpenAPIServer(options?: OpenAPIHttpServerOptions): Promise<OpenAPIExpressApp>;\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\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): 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 const flatOverrides: Record<string, Record<string, unknown>> = { ...coreTools.toolOverrides };\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\nexport function createAgentToolRegistry(\n options?: CreateAgentToolsOptions | string\n): AgentToolRegistry {\n const opts: CreateAgentToolsOptions =\n typeof options === \"string\" ? { configFilePath: options } : options ?? {};\n const configPathForResolve = opts.configFilePath ?? EMBEDDED_TOOL_CONFIG_PATH;\n const mergedToolConfig = loadMergedToolConfig(opts.configFilePath);\n const runtimeOpts = runtimeOptionsFromConfig(opts, mergedToolConfig, configPathForResolve);\n const { runtime } = createRuntimeFromConfigSync(runtimeOpts);\n const hub = new LangChainToolsHub(runtime);\n let cachedTools: StructuredToolInterface[] | undefined;\n\n const getAllOrFilteredTools = (): StructuredToolInterface[] => {\n if (cachedTools) return cachedTools;\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 cachedTools = allBarePackages\n ? hub.getLangChainTools()\n : hub.getLangChainToolsForNames(expandToolDescriptorsToRegistryNames(names, registryNames));\n return cachedTools;\n }\n cachedTools = hub.getLangChainTools();\n return cachedTools;\n };\n\n const pickToolsById = (id?: string): StructuredToolInterface[] => {\n const tools = getAllOrFilteredTools();\n if (!id) return tools;\n const picked = tools.filter((tool) => tool.name === id);\n if (picked.length === 0) throw new Error(`agent-tool cannot find tool id: ${id}`);\n return picked;\n };\n\n return {\n getLangChainAgentTools(id?: string): StructuredToolInterface[] {\n return pickToolsById(id);\n },\n async getMcpServer(options?: MCPServerOptions): Promise<McpServer> {\n const yamlDefaults: MCPServerOptions = {\n name: mergedToolConfig.mcp?.name,\n version: mergedToolConfig.mcp?.version,\n };\n const { server } = await createMCPServer(runtime, { ...yamlDefaults, ...(options ?? {}) });\n return server;\n },\n async getOpenAPIServer(options?: OpenAPIHttpServerOptions): Promise<OpenAPIExpressApp> {\n const yamlDefaults: OpenAPIHttpServerOptions = {\n host: mergedToolConfig.openapi?.host,\n port: mergedToolConfig.openapi?.port,\n basePath: mergedToolConfig.openapi?.basePath,\n };\n return createOpenAPIHttpServer(runtime, { ...yamlDefaults, ...(options ?? {}) });\n },\n };\n}\n\n/**\n * Create LangChain tools asynchronously. Use when projectPath is set to load\n * tools from the project before building the tool list.\n */\nexport async function createLangChainToolsAsync(\n options: CreateAgentToolsOptions = {}\n): Promise<StructuredToolInterface[]> {\n const configPathForResolve = options.configFilePath ?? EMBEDDED_TOOL_CONFIG_PATH;\n const mergedToolConfig = loadMergedToolConfig(options.configFilePath);\n const runtimeOpts = runtimeOptionsFromConfig(options, mergedToolConfig, configPathForResolve);\n const { runtime } = await createRuntimeFromConfig(runtimeOpts);\n const hub = new LangChainToolsHub(runtime);\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) {\n return hub.getLangChainTools();\n }\n const expanded = expandToolDescriptorsToRegistryNames(names, registryNames);\n return hub.getLangChainToolsForNames(expanded);\n }\n\n return hub.getLangChainTools();\n}\n","/**\n * Public API: three create functions (config-driven) + runtime.\n *\n * 1. createLangChainTools(config?) → LangChain tools (createReactAgent / AgentExecutor)\n * 2. createMCPServer(runtime | config, options?) → MCP server (stdio, Cursor / Claude)\n * 3. createOpenAPIServer(runtime | config, options?) → HTTP + OpenAPI/Swagger (GET /tools, POST /invoke)\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 createAgentToolRegistry,\n createLangChainToolsAsync,\n} from \"./createAgentTools.js\";\nexport type { AgentToolRegistry, 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/** Alias: OpenAPI server with Swagger support */\nexport { createHttpService as createOpenAPIServer } 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 createAgentToolRegistry,\n createLangChainToolsAsync,\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 createAgentToolRegistry,\n createLangChainToolsAsync,\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 runMCPServerOverStdio,\n createMCPStreamableHttpHandler,\n createMCPServerStreamableHttp,\n} as const;\n\n/**\n * Facade: grouped OpenAPI/HTTP helpers.\n */\nexport const openApi = {\n createOpenAPIServer: createHttpService,\n createHttpService,\n} as const;\n"]}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { createMCPServerStreamableHttp, createMCPStreamableHttpHandler, runMCPServerOverStdio, createMCPServer, createHttpService, createRuntimeFromConfigSync, createRuntimeFromConfig,
|
|
1
|
+
import { createMCPServerStreamableHttp, createMCPStreamableHttpHandler, runMCPServerOverStdio, createMCPServer, createHttpService, createRuntimeFromConfigSync, createRuntimeFromConfig, createOpenAPIHttpServer, isBarePackageDescriptor, expandToolDescriptorsToRegistryNames, loadToolConfig, resolveSandboxedPath, fileDescriptorToPackagePrefix, npmDescriptorToPackagePrefixWithVersion } from './chunk-MBCFJBZY.js';
|
|
2
2
|
import { enrichSpecWithCanonicalSchema } from './chunk-NTWOVFEY.js';
|
|
3
3
|
import { LANGCHAIN_KIND } from './chunk-Q6W32HAP.js';
|
|
4
|
+
import { deepMerge, stripNullishObjectFields } from '@easynet/agent-common';
|
|
4
5
|
import { DynamicStructuredTool } from '@langchain/core/tools';
|
|
5
|
-
import {
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
7
|
+
import { dirname, resolve } from 'path';
|
|
8
|
+
import { existsSync } from 'fs';
|
|
6
9
|
|
|
7
10
|
function getArgsSchemaIfWrapped(inputSchema) {
|
|
8
11
|
const s = inputSchema;
|
|
@@ -98,8 +101,6 @@ var LangChainToolsHub = class {
|
|
|
98
101
|
});
|
|
99
102
|
}
|
|
100
103
|
};
|
|
101
|
-
|
|
102
|
-
// src/api/createAgentTools.ts
|
|
103
104
|
function mergeHostLists(a, b) {
|
|
104
105
|
const seen = /* @__PURE__ */ new Set();
|
|
105
106
|
const out = [];
|
|
@@ -113,13 +114,34 @@ function mergeHostLists(a, b) {
|
|
|
113
114
|
}
|
|
114
115
|
return out;
|
|
115
116
|
}
|
|
116
|
-
function
|
|
117
|
+
function resolveEmbeddedToolConfigPath() {
|
|
118
|
+
const moduleDir = dirname(fileURLToPath(import.meta.url));
|
|
119
|
+
const candidates = [
|
|
120
|
+
resolve(moduleDir, "../../config/tool.yaml"),
|
|
121
|
+
// src/api -> config
|
|
122
|
+
resolve(moduleDir, "../config/tool.yaml"),
|
|
123
|
+
// dist/* -> config
|
|
124
|
+
resolve(process.cwd(), "config/tool.yaml")
|
|
125
|
+
// fallback for local app runtime
|
|
126
|
+
];
|
|
127
|
+
for (const candidate of candidates) {
|
|
128
|
+
if (existsSync(candidate)) return candidate;
|
|
129
|
+
}
|
|
130
|
+
return candidates[0];
|
|
131
|
+
}
|
|
132
|
+
var EMBEDDED_TOOL_CONFIG_PATH = resolveEmbeddedToolConfigPath();
|
|
133
|
+
function loadMergedToolConfig(overridePath) {
|
|
134
|
+
const baseConfig = loadToolConfig(EMBEDDED_TOOL_CONFIG_PATH);
|
|
135
|
+
if (!overridePath) return baseConfig;
|
|
136
|
+
const overrideConfig = loadToolConfig(overridePath);
|
|
137
|
+
return deepMerge({}, baseConfig, overrideConfig);
|
|
138
|
+
}
|
|
139
|
+
function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve) {
|
|
117
140
|
const coreTools = opts.coreTools ?? { sandboxRoot: process.cwd(), allowedHosts: [], enableSandboxValidation: false };
|
|
118
|
-
|
|
119
|
-
const toolConfig = loadToolConfig(opts.configFilePath);
|
|
141
|
+
{
|
|
120
142
|
const updates = {};
|
|
121
143
|
if (toolConfig.sandboxedPath && typeof toolConfig.sandboxedPath === "string") {
|
|
122
|
-
updates.sandboxRoot = resolveSandboxedPath(
|
|
144
|
+
updates.sandboxRoot = resolveSandboxedPath(configPathForResolve, toolConfig.sandboxedPath);
|
|
123
145
|
}
|
|
124
146
|
if (typeof toolConfig.enableSandboxValidation === "boolean") {
|
|
125
147
|
updates.enableSandboxValidation = toolConfig.enableSandboxValidation;
|
|
@@ -163,55 +185,81 @@ function runtimeOptionsFromConfig(opts) {
|
|
|
163
185
|
if (hasToolDefaults) {
|
|
164
186
|
updates.toolOverrides = flatOverrides;
|
|
165
187
|
}
|
|
166
|
-
if (Object.keys(updates).length > 0) {
|
|
167
|
-
return { ...opts, coreTools: { ...coreTools, ...updates } };
|
|
168
|
-
}
|
|
188
|
+
if (Object.keys(updates).length > 0) return { ...opts, coreTools: { ...coreTools, ...updates } };
|
|
169
189
|
}
|
|
170
190
|
return { ...opts, coreTools };
|
|
171
191
|
}
|
|
172
|
-
function
|
|
192
|
+
function createAgentToolRegistry(options) {
|
|
173
193
|
const opts = typeof options === "string" ? { configFilePath: options } : options ?? {};
|
|
174
|
-
const
|
|
194
|
+
const configPathForResolve = opts.configFilePath ?? EMBEDDED_TOOL_CONFIG_PATH;
|
|
195
|
+
const mergedToolConfig = loadMergedToolConfig(opts.configFilePath);
|
|
196
|
+
const runtimeOpts = runtimeOptionsFromConfig(opts, mergedToolConfig, configPathForResolve);
|
|
175
197
|
const { runtime } = createRuntimeFromConfigSync(runtimeOpts);
|
|
176
198
|
const hub = new LangChainToolsHub(runtime);
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
199
|
+
let cachedTools;
|
|
200
|
+
const getAllOrFilteredTools = () => {
|
|
201
|
+
if (cachedTools) return cachedTools;
|
|
202
|
+
const names = Array.isArray(mergedToolConfig.tools) ? mergedToolConfig.tools : [];
|
|
180
203
|
if (names.length > 0) {
|
|
181
204
|
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
182
205
|
const allBarePackages = names.every((n) => isBarePackageDescriptor(String(n)));
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
186
|
-
const expanded = expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
187
|
-
return hub.getLangChainToolsForNames(expanded);
|
|
206
|
+
cachedTools = allBarePackages ? hub.getLangChainTools() : hub.getLangChainToolsForNames(expandToolDescriptorsToRegistryNames(names, registryNames));
|
|
207
|
+
return cachedTools;
|
|
188
208
|
}
|
|
189
|
-
|
|
190
|
-
|
|
209
|
+
cachedTools = hub.getLangChainTools();
|
|
210
|
+
return cachedTools;
|
|
211
|
+
};
|
|
212
|
+
const pickToolsById = (id) => {
|
|
213
|
+
const tools = getAllOrFilteredTools();
|
|
214
|
+
if (!id) return tools;
|
|
215
|
+
const picked = tools.filter((tool) => tool.name === id);
|
|
216
|
+
if (picked.length === 0) throw new Error(`agent-tool cannot find tool id: ${id}`);
|
|
217
|
+
return picked;
|
|
218
|
+
};
|
|
219
|
+
return {
|
|
220
|
+
getLangChainAgentTools(id) {
|
|
221
|
+
return pickToolsById(id);
|
|
222
|
+
},
|
|
223
|
+
async getMcpServer(options2) {
|
|
224
|
+
const yamlDefaults = {
|
|
225
|
+
name: mergedToolConfig.mcp?.name,
|
|
226
|
+
version: mergedToolConfig.mcp?.version
|
|
227
|
+
};
|
|
228
|
+
const { server } = await createMCPServer(runtime, { ...yamlDefaults, ...options2 ?? {} });
|
|
229
|
+
return server;
|
|
230
|
+
},
|
|
231
|
+
async getOpenAPIServer(options2) {
|
|
232
|
+
const yamlDefaults = {
|
|
233
|
+
host: mergedToolConfig.openapi?.host,
|
|
234
|
+
port: mergedToolConfig.openapi?.port,
|
|
235
|
+
basePath: mergedToolConfig.openapi?.basePath
|
|
236
|
+
};
|
|
237
|
+
return createOpenAPIHttpServer(runtime, { ...yamlDefaults, ...options2 ?? {} });
|
|
238
|
+
}
|
|
239
|
+
};
|
|
191
240
|
}
|
|
192
241
|
async function createLangChainToolsAsync(options = {}) {
|
|
193
|
-
const
|
|
242
|
+
const configPathForResolve = options.configFilePath ?? EMBEDDED_TOOL_CONFIG_PATH;
|
|
243
|
+
const mergedToolConfig = loadMergedToolConfig(options.configFilePath);
|
|
244
|
+
const runtimeOpts = runtimeOptionsFromConfig(options, mergedToolConfig, configPathForResolve);
|
|
194
245
|
const { runtime } = await createRuntimeFromConfig(runtimeOpts);
|
|
195
246
|
const hub = new LangChainToolsHub(runtime);
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
const
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
if (allBarePackages) {
|
|
203
|
-
return hub.getLangChainTools();
|
|
204
|
-
}
|
|
205
|
-
const expanded = expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
206
|
-
return hub.getLangChainToolsForNames(expanded);
|
|
247
|
+
const names = Array.isArray(mergedToolConfig.tools) ? mergedToolConfig.tools : [];
|
|
248
|
+
if (names.length > 0) {
|
|
249
|
+
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
250
|
+
const allBarePackages = names.every((n) => isBarePackageDescriptor(String(n)));
|
|
251
|
+
if (allBarePackages) {
|
|
252
|
+
return hub.getLangChainTools();
|
|
207
253
|
}
|
|
254
|
+
const expanded = expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
255
|
+
return hub.getLangChainToolsForNames(expanded);
|
|
208
256
|
}
|
|
209
257
|
return hub.getLangChainTools();
|
|
210
258
|
}
|
|
211
259
|
|
|
212
260
|
// src/api/main.ts
|
|
213
261
|
var langchainApi = {
|
|
214
|
-
|
|
262
|
+
createAgentToolRegistry,
|
|
215
263
|
createLangChainToolsAsync
|
|
216
264
|
};
|
|
217
265
|
var runtimeApi = {
|
|
@@ -229,6 +277,6 @@ var openApi = {
|
|
|
229
277
|
createHttpService
|
|
230
278
|
};
|
|
231
279
|
|
|
232
|
-
export {
|
|
233
|
-
//# sourceMappingURL=chunk-
|
|
234
|
-
//# sourceMappingURL=chunk-
|
|
280
|
+
export { createAgentToolRegistry, createLangChainToolsAsync, langchainApi, mcpApi, openApi, runtimeApi };
|
|
281
|
+
//# sourceMappingURL=chunk-XS26ZNYC.js.map
|
|
282
|
+
//# sourceMappingURL=chunk-XS26ZNYC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api/adapters/LangChainToolsHub.ts","../src/api/createAgentTools.ts","../src/api/main.ts"],"names":["options"],"mappings":"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","file":"chunk-XS26ZNYC.js","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 createAgentToolRegistry().getLangChainAgentTools() which loads from tools.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 * Create LangChain tools from config (sync or async). Uses PTCRuntime + registry\n * and exposes tools via LangChainToolsHub. All invokes go through PTC Intent.\n */\n\nimport { loadToolConfig, resolveSandboxedPath } from \"../tools/util/toolConfig.js\";\nimport type { ToolYamlShape } from \"../tools/util/toolConfig.js\";\nimport {\n expandToolDescriptorsToRegistryNames,\n isBarePackageDescriptor,\n npmDescriptorToPackagePrefixWithVersion,\n fileDescriptorToPackagePrefix,\n} from \"../tools/util/toolDescriptor.js\";\nimport { deepMerge } from \"@easynet/agent-common\";\nimport { createRuntimeFromConfigSync, createRuntimeFromConfig } from \"./runtimeFromConfig.js\";\nimport type { CreateRuntimeOptions } 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 override tool.yaml; values override embedded config/tool.yaml */\n configFilePath?: string;\n /** Project path for async loading (use createLangChainToolsAsync) */\n projectPath?: string;\n}\n\nexport interface AgentToolRegistry {\n getLangChainAgentTools(id?: string): StructuredToolInterface[];\n getMcpServer(options?: MCPServerOptions): Promise<McpServer>;\n getOpenAPIServer(options?: OpenAPIHttpServerOptions): Promise<OpenAPIExpressApp>;\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\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): 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 const flatOverrides: Record<string, Record<string, unknown>> = { ...coreTools.toolOverrides };\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\nexport function createAgentToolRegistry(\n options?: CreateAgentToolsOptions | string\n): AgentToolRegistry {\n const opts: CreateAgentToolsOptions =\n typeof options === \"string\" ? { configFilePath: options } : options ?? {};\n const configPathForResolve = opts.configFilePath ?? EMBEDDED_TOOL_CONFIG_PATH;\n const mergedToolConfig = loadMergedToolConfig(opts.configFilePath);\n const runtimeOpts = runtimeOptionsFromConfig(opts, mergedToolConfig, configPathForResolve);\n const { runtime } = createRuntimeFromConfigSync(runtimeOpts);\n const hub = new LangChainToolsHub(runtime);\n let cachedTools: StructuredToolInterface[] | undefined;\n\n const getAllOrFilteredTools = (): StructuredToolInterface[] => {\n if (cachedTools) return cachedTools;\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 cachedTools = allBarePackages\n ? hub.getLangChainTools()\n : hub.getLangChainToolsForNames(expandToolDescriptorsToRegistryNames(names, registryNames));\n return cachedTools;\n }\n cachedTools = hub.getLangChainTools();\n return cachedTools;\n };\n\n const pickToolsById = (id?: string): StructuredToolInterface[] => {\n const tools = getAllOrFilteredTools();\n if (!id) return tools;\n const picked = tools.filter((tool) => tool.name === id);\n if (picked.length === 0) throw new Error(`agent-tool cannot find tool id: ${id}`);\n return picked;\n };\n\n return {\n getLangChainAgentTools(id?: string): StructuredToolInterface[] {\n return pickToolsById(id);\n },\n async getMcpServer(options?: MCPServerOptions): Promise<McpServer> {\n const yamlDefaults: MCPServerOptions = {\n name: mergedToolConfig.mcp?.name,\n version: mergedToolConfig.mcp?.version,\n };\n const { server } = await createMCPServer(runtime, { ...yamlDefaults, ...(options ?? {}) });\n return server;\n },\n async getOpenAPIServer(options?: OpenAPIHttpServerOptions): Promise<OpenAPIExpressApp> {\n const yamlDefaults: OpenAPIHttpServerOptions = {\n host: mergedToolConfig.openapi?.host,\n port: mergedToolConfig.openapi?.port,\n basePath: mergedToolConfig.openapi?.basePath,\n };\n return createOpenAPIHttpServer(runtime, { ...yamlDefaults, ...(options ?? {}) });\n },\n };\n}\n\n/**\n * Create LangChain tools asynchronously. Use when projectPath is set to load\n * tools from the project before building the tool list.\n */\nexport async function createLangChainToolsAsync(\n options: CreateAgentToolsOptions = {}\n): Promise<StructuredToolInterface[]> {\n const configPathForResolve = options.configFilePath ?? EMBEDDED_TOOL_CONFIG_PATH;\n const mergedToolConfig = loadMergedToolConfig(options.configFilePath);\n const runtimeOpts = runtimeOptionsFromConfig(options, mergedToolConfig, configPathForResolve);\n const { runtime } = await createRuntimeFromConfig(runtimeOpts);\n const hub = new LangChainToolsHub(runtime);\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) {\n return hub.getLangChainTools();\n }\n const expanded = expandToolDescriptorsToRegistryNames(names, registryNames);\n return hub.getLangChainToolsForNames(expanded);\n }\n\n return hub.getLangChainTools();\n}\n","/**\n * Public API: three create functions (config-driven) + runtime.\n *\n * 1. createLangChainTools(config?) → LangChain tools (createReactAgent / AgentExecutor)\n * 2. createMCPServer(runtime | config, options?) → MCP server (stdio, Cursor / Claude)\n * 3. createOpenAPIServer(runtime | config, options?) → HTTP + OpenAPI/Swagger (GET /tools, POST /invoke)\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 createAgentToolRegistry,\n createLangChainToolsAsync,\n} from \"./createAgentTools.js\";\nexport type { AgentToolRegistry, 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/** Alias: OpenAPI server with Swagger support */\nexport { createHttpService as createOpenAPIServer } 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 createAgentToolRegistry,\n createLangChainToolsAsync,\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 createAgentToolRegistry,\n createLangChainToolsAsync,\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 runMCPServerOverStdio,\n createMCPStreamableHttpHandler,\n createMCPServerStreamableHttp,\n} as const;\n\n/**\n * Facade: grouped OpenAPI/HTTP helpers.\n */\nexport const openApi = {\n createOpenAPIServer: createHttpService,\n createHttpService,\n} as const;\n"]}
|