@easynet/agent-tool 1.0.75 → 1.0.77
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 +17 -11
- package/dist/api/adapters/LangChainToolsHub.d.ts +1 -1
- package/dist/api/createAgentTools.d.ts +55 -14
- package/dist/api/createAgentTools.d.ts.map +1 -1
- package/dist/api/expose/index.d.ts +1 -1
- package/dist/api/main.cjs +22 -22
- package/dist/api/main.d.ts +14 -12
- 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-MBCFJBZY.js → chunk-BMAYX22K.js} +2 -2
- package/dist/chunk-BMAYX22K.js.map +1 -0
- package/dist/{chunk-PYTHEY6A.cjs → chunk-CEVOKZFT.cjs} +4 -4
- package/dist/chunk-CEVOKZFT.cjs.map +1 -0
- package/dist/{chunk-SR53PQTG.cjs → chunk-EZDDKTCF.cjs} +53 -77
- package/dist/chunk-EZDDKTCF.cjs.map +1 -0
- package/dist/{chunk-XS26ZNYC.js → chunk-LUKSY7VK.js} +38 -63
- package/dist/chunk-LUKSY7VK.js.map +1 -0
- package/dist/index.cjs +21 -21
- 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 +2 -2
- 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 +1 -1
- package/dist/chunk-MBCFJBZY.js.map +0 -1
- package/dist/chunk-PYTHEY6A.cjs.map +0 -1
- package/dist/chunk-SR53PQTG.cjs.map +0 -1
- package/dist/chunk-XS26ZNYC.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkCEVOKZFT_cjs = require('./chunk-CEVOKZFT.cjs');
|
|
4
4
|
var chunkUUNG3GL3_cjs = require('./chunk-UUNG3GL3.cjs');
|
|
5
5
|
var chunk33N4Y6IS_cjs = require('./chunk-33N4Y6IS.cjs');
|
|
6
6
|
var agentCommon = require('@easynet/agent-common');
|
|
@@ -118,7 +118,7 @@ function mergeHostLists(a, b) {
|
|
|
118
118
|
return out;
|
|
119
119
|
}
|
|
120
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-
|
|
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-EZDDKTCF.cjs', document.baseURI).href))));
|
|
122
122
|
const candidates = [
|
|
123
123
|
path.resolve(moduleDir, "../../config/tool.yaml"),
|
|
124
124
|
// src/api -> config
|
|
@@ -134,9 +134,9 @@ function resolveEmbeddedToolConfigPath() {
|
|
|
134
134
|
}
|
|
135
135
|
var EMBEDDED_TOOL_CONFIG_PATH = resolveEmbeddedToolConfigPath();
|
|
136
136
|
function loadMergedToolConfig(overridePath) {
|
|
137
|
-
const baseConfig =
|
|
137
|
+
const baseConfig = chunkCEVOKZFT_cjs.loadToolConfig(EMBEDDED_TOOL_CONFIG_PATH);
|
|
138
138
|
if (!overridePath) return baseConfig;
|
|
139
|
-
const overrideConfig =
|
|
139
|
+
const overrideConfig = chunkCEVOKZFT_cjs.loadToolConfig(overridePath);
|
|
140
140
|
return agentCommon.deepMerge({}, baseConfig, overrideConfig);
|
|
141
141
|
}
|
|
142
142
|
function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve) {
|
|
@@ -144,7 +144,7 @@ function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve) {
|
|
|
144
144
|
{
|
|
145
145
|
const updates = {};
|
|
146
146
|
if (toolConfig.sandboxedPath && typeof toolConfig.sandboxedPath === "string") {
|
|
147
|
-
updates.sandboxRoot =
|
|
147
|
+
updates.sandboxRoot = chunkCEVOKZFT_cjs.resolveSandboxedPath(configPathForResolve, toolConfig.sandboxedPath);
|
|
148
148
|
}
|
|
149
149
|
if (typeof toolConfig.enableSandboxValidation === "boolean") {
|
|
150
150
|
updates.enableSandboxValidation = toolConfig.enableSandboxValidation;
|
|
@@ -167,7 +167,7 @@ function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve) {
|
|
|
167
167
|
const packageDefaults = { ...coreTools.packageDefaults };
|
|
168
168
|
if (toolConfig.packageToolDefaults != null && Object.keys(toolConfig.packageToolDefaults).length > 0) {
|
|
169
169
|
for (const [descriptor, pkgConfig] of Object.entries(toolConfig.packageToolDefaults)) {
|
|
170
|
-
const prefix = descriptor.startsWith("file:") ?
|
|
170
|
+
const prefix = descriptor.startsWith("file:") ? chunkCEVOKZFT_cjs.fileDescriptorToPackagePrefix(descriptor) : chunkCEVOKZFT_cjs.npmDescriptorToPackagePrefixWithVersion(descriptor);
|
|
171
171
|
if (!prefix) continue;
|
|
172
172
|
const pkgDefaults = pkgConfig?.defaults != null && typeof pkgConfig.defaults === "object" && !Array.isArray(pkgConfig.defaults) ? pkgConfig.defaults : {};
|
|
173
173
|
if (Object.keys(pkgDefaults).length > 0) {
|
|
@@ -192,99 +192,75 @@ function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve) {
|
|
|
192
192
|
}
|
|
193
193
|
return { ...opts, coreTools };
|
|
194
194
|
}
|
|
195
|
-
function
|
|
196
|
-
const opts = typeof options === "string" ? { configFilePath: options } : options ?? {};
|
|
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);
|
|
201
|
-
const hub = new LangChainToolsHub(runtime);
|
|
202
|
-
let cachedTools;
|
|
203
|
-
const getAllOrFilteredTools = () => {
|
|
204
|
-
if (cachedTools) return cachedTools;
|
|
205
|
-
const names = Array.isArray(mergedToolConfig.tools) ? mergedToolConfig.tools : [];
|
|
206
|
-
if (names.length > 0) {
|
|
207
|
-
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
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;
|
|
211
|
-
}
|
|
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
|
-
};
|
|
243
|
-
}
|
|
244
|
-
async function createLangChainToolsAsync(options = {}) {
|
|
195
|
+
function buildRuntimeAndHub(options = {}) {
|
|
245
196
|
const configPathForResolve = options.configFilePath ?? EMBEDDED_TOOL_CONFIG_PATH;
|
|
246
197
|
const mergedToolConfig = loadMergedToolConfig(options.configFilePath);
|
|
247
198
|
const runtimeOpts = runtimeOptionsFromConfig(options, mergedToolConfig, configPathForResolve);
|
|
248
|
-
const { runtime } =
|
|
199
|
+
const { runtime } = chunkCEVOKZFT_cjs.createRuntimeFromConfigSync(runtimeOpts);
|
|
249
200
|
const hub = new LangChainToolsHub(runtime);
|
|
201
|
+
return { runtime, hub, mergedToolConfig };
|
|
202
|
+
}
|
|
203
|
+
function createLangChainAgentTools(options) {
|
|
204
|
+
const opts = typeof options === "string" ? { configFilePath: options } : options ?? {};
|
|
205
|
+
const { runtime, hub, mergedToolConfig } = buildRuntimeAndHub(opts);
|
|
250
206
|
const names = Array.isArray(mergedToolConfig.tools) ? mergedToolConfig.tools : [];
|
|
251
207
|
if (names.length > 0) {
|
|
252
208
|
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
253
|
-
const allBarePackages = names.every((n) =>
|
|
254
|
-
if (allBarePackages)
|
|
255
|
-
|
|
256
|
-
}
|
|
257
|
-
const expanded = chunkPYTHEY6A_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
258
|
-
return hub.getLangChainToolsForNames(expanded);
|
|
209
|
+
const allBarePackages = names.every((n) => chunkCEVOKZFT_cjs.isBarePackageDescriptor(String(n)));
|
|
210
|
+
if (allBarePackages) return hub.getLangChainTools();
|
|
211
|
+
return hub.getLangChainToolsForNames(chunkCEVOKZFT_cjs.expandToolDescriptorsToRegistryNames(names, registryNames));
|
|
259
212
|
}
|
|
260
213
|
return hub.getLangChainTools();
|
|
261
214
|
}
|
|
215
|
+
async function createMcpServer(options) {
|
|
216
|
+
const opts = typeof options === "string" ? { configFilePath: options } : options ?? {};
|
|
217
|
+
const { runtime, mergedToolConfig } = buildRuntimeAndHub(opts);
|
|
218
|
+
const serverOpts = {
|
|
219
|
+
name: opts.name ?? mergedToolConfig.mcp?.name,
|
|
220
|
+
version: opts.version ?? mergedToolConfig.mcp?.version,
|
|
221
|
+
execContextFactory: opts.execContextFactory
|
|
222
|
+
};
|
|
223
|
+
const { server } = await chunkCEVOKZFT_cjs.createMCPServer(runtime, serverOpts);
|
|
224
|
+
return server;
|
|
225
|
+
}
|
|
226
|
+
async function createOpenAPIServer(options) {
|
|
227
|
+
const opts = typeof options === "string" ? { configFilePath: options } : options ?? {};
|
|
228
|
+
const { runtime, mergedToolConfig } = buildRuntimeAndHub(opts);
|
|
229
|
+
const serverOpts = {
|
|
230
|
+
host: opts.host ?? mergedToolConfig.openapi?.host,
|
|
231
|
+
port: opts.port ?? mergedToolConfig.openapi?.port,
|
|
232
|
+
basePath: opts.basePath ?? mergedToolConfig.openapi?.basePath,
|
|
233
|
+
execContextFactory: opts.execContextFactory
|
|
234
|
+
};
|
|
235
|
+
return chunkCEVOKZFT_cjs.createOpenAPIHttpServer(runtime, serverOpts);
|
|
236
|
+
}
|
|
262
237
|
|
|
263
238
|
// src/api/main.ts
|
|
264
239
|
var langchainApi = {
|
|
265
|
-
|
|
266
|
-
createLangChainToolsAsync
|
|
240
|
+
createLangChainAgentTools
|
|
267
241
|
};
|
|
268
242
|
var runtimeApi = {
|
|
269
|
-
createRuntimeFromConfig:
|
|
270
|
-
createRuntimeFromConfigSync:
|
|
243
|
+
createRuntimeFromConfig: chunkCEVOKZFT_cjs.createRuntimeFromConfig,
|
|
244
|
+
createRuntimeFromConfigSync: chunkCEVOKZFT_cjs.createRuntimeFromConfigSync
|
|
271
245
|
};
|
|
272
246
|
var mcpApi = {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
247
|
+
createMcpServer,
|
|
248
|
+
createMCPServer: chunkCEVOKZFT_cjs.createMCPServer,
|
|
249
|
+
runMCPServerOverStdio: chunkCEVOKZFT_cjs.runMCPServerOverStdio,
|
|
250
|
+
createMCPStreamableHttpHandler: chunkCEVOKZFT_cjs.createMCPStreamableHttpHandler,
|
|
251
|
+
createMCPServerStreamableHttp: chunkCEVOKZFT_cjs.createMCPServerStreamableHttp
|
|
277
252
|
};
|
|
278
253
|
var openApi = {
|
|
279
|
-
createOpenAPIServer
|
|
280
|
-
createHttpService:
|
|
254
|
+
createOpenAPIServer,
|
|
255
|
+
createHttpService: chunkCEVOKZFT_cjs.createHttpService
|
|
281
256
|
};
|
|
282
257
|
|
|
283
|
-
exports.
|
|
284
|
-
exports.
|
|
258
|
+
exports.createLangChainAgentTools = createLangChainAgentTools;
|
|
259
|
+
exports.createMcpServer = createMcpServer;
|
|
260
|
+
exports.createOpenAPIServer = createOpenAPIServer;
|
|
285
261
|
exports.langchainApi = langchainApi;
|
|
286
262
|
exports.mcpApi = mcpApi;
|
|
287
263
|
exports.openApi = openApi;
|
|
288
264
|
exports.runtimeApi = runtimeApi;
|
|
289
|
-
//# sourceMappingURL=chunk-
|
|
290
|
-
//# sourceMappingURL=chunk-
|
|
265
|
+
//# sourceMappingURL=chunk-EZDDKTCF.cjs.map
|
|
266
|
+
//# sourceMappingURL=chunk-EZDDKTCF.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","createMCPServer","createOpenAPIHttpServer","createRuntimeFromConfig","runMCPServerOverStdio","createMCPStreamableHttpHandler","createMCPServerStreamableHttp","createHttpService"],"mappings":"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","file":"chunk-EZDDKTCF.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 {\n expandToolDescriptorsToRegistryNames,\n isBarePackageDescriptor,\n npmDescriptorToPackagePrefixWithVersion,\n fileDescriptorToPackagePrefix,\n} from \"../tools/util/toolDescriptor.js\";\nimport { deepMerge } from \"@easynet/agent-common\";\nimport { createRuntimeFromConfigSync } 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 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\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\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 const runtimeOpts = runtimeOptionsFromConfig(options, mergedToolConfig, configPathForResolve);\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"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createMCPServerStreamableHttp, createMCPStreamableHttpHandler, runMCPServerOverStdio, createMCPServer, createHttpService, createRuntimeFromConfigSync, createRuntimeFromConfig,
|
|
1
|
+
import { createMCPServerStreamableHttp, createMCPStreamableHttpHandler, runMCPServerOverStdio, createMCPServer, createHttpService, createRuntimeFromConfigSync, createRuntimeFromConfig, isBarePackageDescriptor, expandToolDescriptorsToRegistryNames, createOpenAPIHttpServer, loadToolConfig, resolveSandboxedPath, fileDescriptorToPackagePrefix, npmDescriptorToPackagePrefixWithVersion } from './chunk-BMAYX22K.js';
|
|
2
2
|
import { enrichSpecWithCanonicalSchema } from './chunk-NTWOVFEY.js';
|
|
3
3
|
import { LANGCHAIN_KIND } from './chunk-Q6W32HAP.js';
|
|
4
4
|
import { deepMerge, stripNullishObjectFields } from '@easynet/agent-common';
|
|
@@ -189,94 +189,69 @@ function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve) {
|
|
|
189
189
|
}
|
|
190
190
|
return { ...opts, coreTools };
|
|
191
191
|
}
|
|
192
|
-
function
|
|
193
|
-
const opts = typeof options === "string" ? { configFilePath: options } : options ?? {};
|
|
194
|
-
const configPathForResolve = opts.configFilePath ?? EMBEDDED_TOOL_CONFIG_PATH;
|
|
195
|
-
const mergedToolConfig = loadMergedToolConfig(opts.configFilePath);
|
|
196
|
-
const runtimeOpts = runtimeOptionsFromConfig(opts, mergedToolConfig, configPathForResolve);
|
|
197
|
-
const { runtime } = createRuntimeFromConfigSync(runtimeOpts);
|
|
198
|
-
const hub = new LangChainToolsHub(runtime);
|
|
199
|
-
let cachedTools;
|
|
200
|
-
const getAllOrFilteredTools = () => {
|
|
201
|
-
if (cachedTools) return cachedTools;
|
|
202
|
-
const names = Array.isArray(mergedToolConfig.tools) ? mergedToolConfig.tools : [];
|
|
203
|
-
if (names.length > 0) {
|
|
204
|
-
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
205
|
-
const allBarePackages = names.every((n) => isBarePackageDescriptor(String(n)));
|
|
206
|
-
cachedTools = allBarePackages ? hub.getLangChainTools() : hub.getLangChainToolsForNames(expandToolDescriptorsToRegistryNames(names, registryNames));
|
|
207
|
-
return cachedTools;
|
|
208
|
-
}
|
|
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
|
-
};
|
|
240
|
-
}
|
|
241
|
-
async function createLangChainToolsAsync(options = {}) {
|
|
192
|
+
function buildRuntimeAndHub(options = {}) {
|
|
242
193
|
const configPathForResolve = options.configFilePath ?? EMBEDDED_TOOL_CONFIG_PATH;
|
|
243
194
|
const mergedToolConfig = loadMergedToolConfig(options.configFilePath);
|
|
244
195
|
const runtimeOpts = runtimeOptionsFromConfig(options, mergedToolConfig, configPathForResolve);
|
|
245
|
-
const { runtime } =
|
|
196
|
+
const { runtime } = createRuntimeFromConfigSync(runtimeOpts);
|
|
246
197
|
const hub = new LangChainToolsHub(runtime);
|
|
198
|
+
return { runtime, hub, mergedToolConfig };
|
|
199
|
+
}
|
|
200
|
+
function createLangChainAgentTools(options) {
|
|
201
|
+
const opts = typeof options === "string" ? { configFilePath: options } : options ?? {};
|
|
202
|
+
const { runtime, hub, mergedToolConfig } = buildRuntimeAndHub(opts);
|
|
247
203
|
const names = Array.isArray(mergedToolConfig.tools) ? mergedToolConfig.tools : [];
|
|
248
204
|
if (names.length > 0) {
|
|
249
205
|
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
250
206
|
const allBarePackages = names.every((n) => isBarePackageDescriptor(String(n)));
|
|
251
|
-
if (allBarePackages)
|
|
252
|
-
|
|
253
|
-
}
|
|
254
|
-
const expanded = expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
255
|
-
return hub.getLangChainToolsForNames(expanded);
|
|
207
|
+
if (allBarePackages) return hub.getLangChainTools();
|
|
208
|
+
return hub.getLangChainToolsForNames(expandToolDescriptorsToRegistryNames(names, registryNames));
|
|
256
209
|
}
|
|
257
210
|
return hub.getLangChainTools();
|
|
258
211
|
}
|
|
212
|
+
async function createMcpServer(options) {
|
|
213
|
+
const opts = typeof options === "string" ? { configFilePath: options } : options ?? {};
|
|
214
|
+
const { runtime, mergedToolConfig } = buildRuntimeAndHub(opts);
|
|
215
|
+
const serverOpts = {
|
|
216
|
+
name: opts.name ?? mergedToolConfig.mcp?.name,
|
|
217
|
+
version: opts.version ?? mergedToolConfig.mcp?.version,
|
|
218
|
+
execContextFactory: opts.execContextFactory
|
|
219
|
+
};
|
|
220
|
+
const { server } = await createMCPServer(runtime, serverOpts);
|
|
221
|
+
return server;
|
|
222
|
+
}
|
|
223
|
+
async function createOpenAPIServer(options) {
|
|
224
|
+
const opts = typeof options === "string" ? { configFilePath: options } : options ?? {};
|
|
225
|
+
const { runtime, mergedToolConfig } = buildRuntimeAndHub(opts);
|
|
226
|
+
const serverOpts = {
|
|
227
|
+
host: opts.host ?? mergedToolConfig.openapi?.host,
|
|
228
|
+
port: opts.port ?? mergedToolConfig.openapi?.port,
|
|
229
|
+
basePath: opts.basePath ?? mergedToolConfig.openapi?.basePath,
|
|
230
|
+
execContextFactory: opts.execContextFactory
|
|
231
|
+
};
|
|
232
|
+
return createOpenAPIHttpServer(runtime, serverOpts);
|
|
233
|
+
}
|
|
259
234
|
|
|
260
235
|
// src/api/main.ts
|
|
261
236
|
var langchainApi = {
|
|
262
|
-
|
|
263
|
-
createLangChainToolsAsync
|
|
237
|
+
createLangChainAgentTools
|
|
264
238
|
};
|
|
265
239
|
var runtimeApi = {
|
|
266
240
|
createRuntimeFromConfig,
|
|
267
241
|
createRuntimeFromConfigSync
|
|
268
242
|
};
|
|
269
243
|
var mcpApi = {
|
|
244
|
+
createMcpServer,
|
|
270
245
|
createMCPServer,
|
|
271
246
|
runMCPServerOverStdio,
|
|
272
247
|
createMCPStreamableHttpHandler,
|
|
273
248
|
createMCPServerStreamableHttp
|
|
274
249
|
};
|
|
275
250
|
var openApi = {
|
|
276
|
-
createOpenAPIServer
|
|
251
|
+
createOpenAPIServer,
|
|
277
252
|
createHttpService
|
|
278
253
|
};
|
|
279
254
|
|
|
280
|
-
export {
|
|
281
|
-
//# sourceMappingURL=chunk-
|
|
282
|
-
//# sourceMappingURL=chunk-
|
|
255
|
+
export { createLangChainAgentTools, createMcpServer, createOpenAPIServer, langchainApi, mcpApi, openApi, runtimeApi };
|
|
256
|
+
//# sourceMappingURL=chunk-LUKSY7VK.js.map
|
|
257
|
+
//# sourceMappingURL=chunk-LUKSY7VK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api/adapters/LangChainToolsHub.ts","../src/api/createAgentTools.ts","../src/api/main.ts"],"names":[],"mappings":"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","file":"chunk-LUKSY7VK.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 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 {\n expandToolDescriptorsToRegistryNames,\n isBarePackageDescriptor,\n npmDescriptorToPackagePrefixWithVersion,\n fileDescriptorToPackagePrefix,\n} from \"../tools/util/toolDescriptor.js\";\nimport { deepMerge } from \"@easynet/agent-common\";\nimport { createRuntimeFromConfigSync } 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 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\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\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 const runtimeOpts = runtimeOptionsFromConfig(options, mergedToolConfig, configPathForResolve);\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"]}
|
package/dist/index.cjs
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
require('./chunk-YL6RC7HQ.cjs');
|
|
4
4
|
var chunkOKKBKZWK_cjs = require('./chunk-OKKBKZWK.cjs');
|
|
5
5
|
var chunkR55NXJIH_cjs = require('./chunk-R55NXJIH.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunkEZDDKTCF_cjs = require('./chunk-EZDDKTCF.cjs');
|
|
7
7
|
require('./chunk-ICHSEIZN.cjs');
|
|
8
8
|
require('./chunk-NOGGIM7B.cjs');
|
|
9
9
|
var chunkTBDSFXNG_cjs = require('./chunk-TBDSFXNG.cjs');
|
|
10
|
-
var
|
|
10
|
+
var chunkCEVOKZFT_cjs = require('./chunk-CEVOKZFT.cjs');
|
|
11
11
|
require('./chunk-UUNG3GL3.cjs');
|
|
12
12
|
require('./chunk-33N4Y6IS.cjs');
|
|
13
13
|
var chunkLHKEJNKL_cjs = require('./chunk-LHKEJNKL.cjs');
|
|
@@ -36,7 +36,7 @@ function normalizeAgentToolConfigRef(raw) {
|
|
|
36
36
|
// src/config/index.ts
|
|
37
37
|
function loadToolRuntimeConfig(options = {}) {
|
|
38
38
|
const configPath = path.resolve(options.configPath ?? "config/tool.yaml");
|
|
39
|
-
return
|
|
39
|
+
return chunkCEVOKZFT_cjs.loadToolConfig(configPath);
|
|
40
40
|
}
|
|
41
41
|
function createToolConfig(options = {}) {
|
|
42
42
|
const base = loadToolRuntimeConfig(options);
|
|
@@ -86,57 +86,57 @@ var platformApi = {
|
|
|
86
86
|
}
|
|
87
87
|
};
|
|
88
88
|
|
|
89
|
-
Object.defineProperty(exports, "
|
|
89
|
+
Object.defineProperty(exports, "createLangChainAgentTools", {
|
|
90
90
|
enumerable: true,
|
|
91
|
-
get: function () { return
|
|
91
|
+
get: function () { return chunkEZDDKTCF_cjs.createLangChainAgentTools; }
|
|
92
92
|
});
|
|
93
|
-
Object.defineProperty(exports, "
|
|
93
|
+
Object.defineProperty(exports, "createMcpServer", {
|
|
94
94
|
enumerable: true,
|
|
95
|
-
get: function () { return
|
|
95
|
+
get: function () { return chunkEZDDKTCF_cjs.createMcpServer; }
|
|
96
|
+
});
|
|
97
|
+
Object.defineProperty(exports, "createOpenAPIServer", {
|
|
98
|
+
enumerable: true,
|
|
99
|
+
get: function () { return chunkEZDDKTCF_cjs.createOpenAPIServer; }
|
|
96
100
|
});
|
|
97
101
|
Object.defineProperty(exports, "langchainApi", {
|
|
98
102
|
enumerable: true,
|
|
99
|
-
get: function () { return
|
|
103
|
+
get: function () { return chunkEZDDKTCF_cjs.langchainApi; }
|
|
100
104
|
});
|
|
101
105
|
Object.defineProperty(exports, "mcpApi", {
|
|
102
106
|
enumerable: true,
|
|
103
|
-
get: function () { return
|
|
107
|
+
get: function () { return chunkEZDDKTCF_cjs.mcpApi; }
|
|
104
108
|
});
|
|
105
109
|
Object.defineProperty(exports, "openApi", {
|
|
106
110
|
enumerable: true,
|
|
107
|
-
get: function () { return
|
|
111
|
+
get: function () { return chunkEZDDKTCF_cjs.openApi; }
|
|
108
112
|
});
|
|
109
113
|
Object.defineProperty(exports, "runtimeApi", {
|
|
110
114
|
enumerable: true,
|
|
111
|
-
get: function () { return
|
|
115
|
+
get: function () { return chunkEZDDKTCF_cjs.runtimeApi; }
|
|
112
116
|
});
|
|
113
117
|
Object.defineProperty(exports, "createMCPServer", {
|
|
114
118
|
enumerable: true,
|
|
115
|
-
get: function () { return
|
|
119
|
+
get: function () { return chunkCEVOKZFT_cjs.createMCPServer; }
|
|
116
120
|
});
|
|
117
121
|
Object.defineProperty(exports, "createMCPServerStreamableHttp", {
|
|
118
122
|
enumerable: true,
|
|
119
|
-
get: function () { return
|
|
123
|
+
get: function () { return chunkCEVOKZFT_cjs.createMCPServerStreamableHttp; }
|
|
120
124
|
});
|
|
121
125
|
Object.defineProperty(exports, "createMCPStreamableHttpHandler", {
|
|
122
126
|
enumerable: true,
|
|
123
|
-
get: function () { return
|
|
124
|
-
});
|
|
125
|
-
Object.defineProperty(exports, "createOpenAPIServer", {
|
|
126
|
-
enumerable: true,
|
|
127
|
-
get: function () { return chunkPYTHEY6A_cjs.createHttpService; }
|
|
127
|
+
get: function () { return chunkCEVOKZFT_cjs.createMCPStreamableHttpHandler; }
|
|
128
128
|
});
|
|
129
129
|
Object.defineProperty(exports, "createRuntimeFromConfig", {
|
|
130
130
|
enumerable: true,
|
|
131
|
-
get: function () { return
|
|
131
|
+
get: function () { return chunkCEVOKZFT_cjs.createRuntimeFromConfig; }
|
|
132
132
|
});
|
|
133
133
|
Object.defineProperty(exports, "createRuntimeFromConfigSync", {
|
|
134
134
|
enumerable: true,
|
|
135
|
-
get: function () { return
|
|
135
|
+
get: function () { return chunkCEVOKZFT_cjs.createRuntimeFromConfigSync; }
|
|
136
136
|
});
|
|
137
137
|
Object.defineProperty(exports, "runMCPServerOverStdio", {
|
|
138
138
|
enumerable: true,
|
|
139
|
-
get: function () { return
|
|
139
|
+
get: function () { return chunkCEVOKZFT_cjs.runMCPServerOverStdio; }
|
|
140
140
|
});
|
|
141
141
|
Object.defineProperty(exports, "ToolRegistry", {
|
|
142
142
|
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":";;;;;;;;;;;;;;;;;;;;;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;;;
|
|
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"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Minimal public API for @easynet/agent-tool.
|
|
3
3
|
* Keep root exports focused on high-level runtime/server creation.
|
|
4
4
|
*/
|
|
5
|
-
export {
|
|
6
|
-
export type { CreateAgentToolsOptions,
|
|
5
|
+
export { createLangChainAgentTools, createMcpServer, createOpenAPIServer, createMCPServer, runMCPServerOverStdio, createMCPStreamableHttpHandler, createMCPServerStreamableHttp, createRuntimeFromConfig, createRuntimeFromConfigSync, langchainApi, runtimeApi, mcpApi, openApi, } from "./api/main.js";
|
|
6
|
+
export type { CreateAgentToolsOptions, CreateRuntimeOptions, CreateRuntimeResult, MCPServerOptions, MCPServerResult, McpServer, CreateMCPServerStreamableHttpOptions, MCPServerStreamableHttpResult, CreateHttpServiceOptions, HttpServiceResult, OpenAPIExpressApp, OpenAPIHttpServerOptions, } from "./api/main.js";
|
|
7
7
|
export type { AgentToolConfigRef } from "./config/index.js";
|
|
8
8
|
export { normalizeAgentToolConfigRef, loadToolRuntimeConfig, createToolConfig, } from "./config/index.js";
|
|
9
9
|
export type { LoadToolConfigOptions, CreateToolConfigOptions } from "./config/index.js";
|