@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.
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkPYTHEY6A_cjs = require('./chunk-PYTHEY6A.cjs');
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-SR53PQTG.cjs', document.baseURI).href))));
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 = chunkPYTHEY6A_cjs.loadToolConfig(EMBEDDED_TOOL_CONFIG_PATH);
137
+ const baseConfig = chunkCEVOKZFT_cjs.loadToolConfig(EMBEDDED_TOOL_CONFIG_PATH);
138
138
  if (!overridePath) return baseConfig;
139
- const overrideConfig = chunkPYTHEY6A_cjs.loadToolConfig(overridePath);
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 = chunkPYTHEY6A_cjs.resolveSandboxedPath(configPathForResolve, toolConfig.sandboxedPath);
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:") ? chunkPYTHEY6A_cjs.fileDescriptorToPackagePrefix(descriptor) : chunkPYTHEY6A_cjs.npmDescriptorToPackagePrefixWithVersion(descriptor);
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 createAgentToolRegistry(options) {
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 } = await chunkPYTHEY6A_cjs.createRuntimeFromConfig(runtimeOpts);
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) => chunkPYTHEY6A_cjs.isBarePackageDescriptor(String(n)));
254
- if (allBarePackages) {
255
- return hub.getLangChainTools();
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
- createAgentToolRegistry,
266
- createLangChainToolsAsync
240
+ createLangChainAgentTools
267
241
  };
268
242
  var runtimeApi = {
269
- createRuntimeFromConfig: chunkPYTHEY6A_cjs.createRuntimeFromConfig,
270
- createRuntimeFromConfigSync: chunkPYTHEY6A_cjs.createRuntimeFromConfigSync
243
+ createRuntimeFromConfig: chunkCEVOKZFT_cjs.createRuntimeFromConfig,
244
+ createRuntimeFromConfigSync: chunkCEVOKZFT_cjs.createRuntimeFromConfigSync
271
245
  };
272
246
  var mcpApi = {
273
- createMCPServer: chunkPYTHEY6A_cjs.createMCPServer,
274
- runMCPServerOverStdio: chunkPYTHEY6A_cjs.runMCPServerOverStdio,
275
- createMCPStreamableHttpHandler: chunkPYTHEY6A_cjs.createMCPStreamableHttpHandler,
276
- createMCPServerStreamableHttp: chunkPYTHEY6A_cjs.createMCPServerStreamableHttp
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: chunkPYTHEY6A_cjs.createHttpService,
280
- createHttpService: chunkPYTHEY6A_cjs.createHttpService
254
+ createOpenAPIServer,
255
+ createHttpService: chunkCEVOKZFT_cjs.createHttpService
281
256
  };
282
257
 
283
- exports.createAgentToolRegistry = createAgentToolRegistry;
284
- exports.createLangChainToolsAsync = createLangChainToolsAsync;
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-SR53PQTG.cjs.map
290
- //# sourceMappingURL=chunk-SR53PQTG.cjs.map
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, createOpenAPIHttpServer, isBarePackageDescriptor, expandToolDescriptorsToRegistryNames, loadToolConfig, resolveSandboxedPath, fileDescriptorToPackagePrefix, npmDescriptorToPackagePrefixWithVersion } from './chunk-MBCFJBZY.js';
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 createAgentToolRegistry(options) {
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 } = await createRuntimeFromConfig(runtimeOpts);
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
- return hub.getLangChainTools();
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
- createAgentToolRegistry,
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: createHttpService,
251
+ createOpenAPIServer,
277
252
  createHttpService
278
253
  };
279
254
 
280
- export { createAgentToolRegistry, createLangChainToolsAsync, langchainApi, mcpApi, openApi, runtimeApi };
281
- //# sourceMappingURL=chunk-XS26ZNYC.js.map
282
- //# sourceMappingURL=chunk-XS26ZNYC.js.map
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 chunkSR53PQTG_cjs = require('./chunk-SR53PQTG.cjs');
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 chunkPYTHEY6A_cjs = require('./chunk-PYTHEY6A.cjs');
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 chunkPYTHEY6A_cjs.loadToolConfig(configPath);
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, "createAgentToolRegistry", {
89
+ Object.defineProperty(exports, "createLangChainAgentTools", {
90
90
  enumerable: true,
91
- get: function () { return chunkSR53PQTG_cjs.createAgentToolRegistry; }
91
+ get: function () { return chunkEZDDKTCF_cjs.createLangChainAgentTools; }
92
92
  });
93
- Object.defineProperty(exports, "createLangChainToolsAsync", {
93
+ Object.defineProperty(exports, "createMcpServer", {
94
94
  enumerable: true,
95
- get: function () { return chunkSR53PQTG_cjs.createLangChainToolsAsync; }
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 chunkSR53PQTG_cjs.langchainApi; }
103
+ get: function () { return chunkEZDDKTCF_cjs.langchainApi; }
100
104
  });
101
105
  Object.defineProperty(exports, "mcpApi", {
102
106
  enumerable: true,
103
- get: function () { return chunkSR53PQTG_cjs.mcpApi; }
107
+ get: function () { return chunkEZDDKTCF_cjs.mcpApi; }
104
108
  });
105
109
  Object.defineProperty(exports, "openApi", {
106
110
  enumerable: true,
107
- get: function () { return chunkSR53PQTG_cjs.openApi; }
111
+ get: function () { return chunkEZDDKTCF_cjs.openApi; }
108
112
  });
109
113
  Object.defineProperty(exports, "runtimeApi", {
110
114
  enumerable: true,
111
- get: function () { return chunkSR53PQTG_cjs.runtimeApi; }
115
+ get: function () { return chunkEZDDKTCF_cjs.runtimeApi; }
112
116
  });
113
117
  Object.defineProperty(exports, "createMCPServer", {
114
118
  enumerable: true,
115
- get: function () { return chunkPYTHEY6A_cjs.createMCPServer; }
119
+ get: function () { return chunkCEVOKZFT_cjs.createMCPServer; }
116
120
  });
117
121
  Object.defineProperty(exports, "createMCPServerStreamableHttp", {
118
122
  enumerable: true,
119
- get: function () { return chunkPYTHEY6A_cjs.createMCPServerStreamableHttp; }
123
+ get: function () { return chunkCEVOKZFT_cjs.createMCPServerStreamableHttp; }
120
124
  });
121
125
  Object.defineProperty(exports, "createMCPStreamableHttpHandler", {
122
126
  enumerable: true,
123
- get: function () { return chunkPYTHEY6A_cjs.createMCPStreamableHttpHandler; }
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 chunkPYTHEY6A_cjs.createRuntimeFromConfig; }
131
+ get: function () { return chunkCEVOKZFT_cjs.createRuntimeFromConfig; }
132
132
  });
133
133
  Object.defineProperty(exports, "createRuntimeFromConfigSync", {
134
134
  enumerable: true,
135
- get: function () { return chunkPYTHEY6A_cjs.createRuntimeFromConfigSync; }
135
+ get: function () { return chunkCEVOKZFT_cjs.createRuntimeFromConfigSync; }
136
136
  });
137
137
  Object.defineProperty(exports, "runMCPServerOverStdio", {
138
138
  enumerable: true,
139
- get: function () { return chunkPYTHEY6A_cjs.runMCPServerOverStdio; }
139
+ get: function () { return chunkCEVOKZFT_cjs.runMCPServerOverStdio; }
140
140
  });
141
141
  Object.defineProperty(exports, "ToolRegistry", {
142
142
  enumerable: true,
@@ -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;;;ACiEO,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 createAgentToolRegistry,\n createLangChainToolsAsync,\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 AgentToolRegistry,\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"]}
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 { createAgentToolRegistry, createLangChainToolsAsync, createOpenAPIServer, createMCPServer, runMCPServerOverStdio, createMCPStreamableHttpHandler, createMCPServerStreamableHttp, createRuntimeFromConfig, createRuntimeFromConfigSync, langchainApi, runtimeApi, mcpApi, openApi, } from "./api/main.js";
6
- export type { CreateAgentToolsOptions, AgentToolRegistry, CreateRuntimeOptions, CreateRuntimeResult, MCPServerOptions, MCPServerResult, McpServer, CreateMCPServerStreamableHttpOptions, MCPServerStreamableHttpResult, CreateHttpServiceOptions, HttpServiceResult, OpenAPIExpressApp, OpenAPIHttpServerOptions, } from "./api/main.js";
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";