@easynet/agent-tool 1.0.77 → 1.0.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/api/createAgentTools.d.ts.map +1 -1
  2. package/dist/api/main.cjs +18 -17
  3. package/dist/api/main.js +3 -2
  4. package/dist/api/runtimeFromConfig.d.ts +9 -0
  5. package/dist/api/runtimeFromConfig.d.ts.map +1 -1
  6. package/dist/{chunk-BMAYX22K.js → chunk-42UNSIZJ.js} +9 -8
  7. package/dist/chunk-42UNSIZJ.js.map +1 -0
  8. package/dist/chunk-5QH7YY4Z.cjs +101 -0
  9. package/dist/chunk-5QH7YY4Z.cjs.map +1 -0
  10. package/dist/{chunk-OKKBKZWK.cjs → chunk-BXFRXPLX.cjs} +19 -109
  11. package/dist/chunk-BXFRXPLX.cjs.map +1 -0
  12. package/dist/{chunk-LUKSY7VK.js → chunk-DVYM6VRD.js} +42 -6
  13. package/dist/chunk-DVYM6VRD.js.map +1 -0
  14. package/dist/{chunk-GSOJCOKN.js → chunk-EFILLN6Q.js} +18 -104
  15. package/dist/chunk-EFILLN6Q.js.map +1 -0
  16. package/dist/{chunk-CEVOKZFT.cjs → chunk-EIIHED57.cjs} +11 -9
  17. package/dist/chunk-EIIHED57.cjs.map +1 -0
  18. package/dist/{chunk-EZDDKTCF.cjs → chunk-GXFDYM3O.cjs} +59 -23
  19. package/dist/chunk-GXFDYM3O.cjs.map +1 -0
  20. package/dist/chunk-JZ6LKSAS.js +92 -0
  21. package/dist/chunk-JZ6LKSAS.js.map +1 -0
  22. package/dist/extension.cjs +20 -19
  23. package/dist/extension.js +2 -1
  24. package/dist/index.cjs +30 -29
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.js +5 -4
  27. package/dist/index.js.map +1 -1
  28. package/dist/utils/cli/index.cjs +12 -12
  29. package/dist/utils/cli/index.js +1 -1
  30. package/package.json +1 -1
  31. package/dist/chunk-BMAYX22K.js.map +0 -1
  32. package/dist/chunk-CEVOKZFT.cjs.map +0 -1
  33. package/dist/chunk-EZDDKTCF.cjs.map +0 -1
  34. package/dist/chunk-GSOJCOKN.js.map +0 -1
  35. package/dist/chunk-LUKSY7VK.js.map +0 -1
  36. package/dist/chunk-OKKBKZWK.cjs.map +0 -1
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkCEVOKZFT_cjs = require('./chunk-CEVOKZFT.cjs');
3
+ var chunk5QH7YY4Z_cjs = require('./chunk-5QH7YY4Z.cjs');
4
+ var chunkEIIHED57_cjs = require('./chunk-EIIHED57.cjs');
4
5
  var chunkUUNG3GL3_cjs = require('./chunk-UUNG3GL3.cjs');
5
6
  var chunk33N4Y6IS_cjs = require('./chunk-33N4Y6IS.cjs');
6
7
  var agentCommon = require('@easynet/agent-common');
@@ -118,7 +119,7 @@ function mergeHostLists(a, b) {
118
119
  return out;
119
120
  }
120
121
  function resolveEmbeddedToolConfigPath() {
121
- const moduleDir = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-EZDDKTCF.cjs', document.baseURI).href))));
122
+ const moduleDir = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-GXFDYM3O.cjs', document.baseURI).href))));
122
123
  const candidates = [
123
124
  path.resolve(moduleDir, "../../config/tool.yaml"),
124
125
  // src/api -> config
@@ -133,18 +134,46 @@ function resolveEmbeddedToolConfigPath() {
133
134
  return candidates[0];
134
135
  }
135
136
  var EMBEDDED_TOOL_CONFIG_PATH = resolveEmbeddedToolConfigPath();
137
+ function collectExtensionEmbeddedDefaults(exts) {
138
+ const merged = {};
139
+ for (const ext of exts) {
140
+ const configPath = [path.resolve(ext.packageRoot, "dist/config/tool.yaml"), path.resolve(ext.packageRoot, "config/tool.yaml")].find(
141
+ fs.existsSync
142
+ ) ?? "";
143
+ if (!configPath) continue;
144
+ try {
145
+ const toolDefaults = chunkEIIHED57_cjs.loadToolConfig(configPath).toolDefaults ?? {};
146
+ if (Object.keys(toolDefaults).length === 0) continue;
147
+ const manifest = chunk5QH7YY4Z_cjs.loadExtensionManifest(ext.packageRoot);
148
+ const ownToolNames = /* @__PURE__ */ new Set();
149
+ for (const e of manifest.entries) {
150
+ if (e.name) ownToolNames.add(e.name);
151
+ if (e.sourcePath) {
152
+ ownToolNames.add(e.sourcePath.replace(/^src\//, "").replace(/\//g, "."));
153
+ }
154
+ }
155
+ for (const [k, v] of Object.entries(toolDefaults)) {
156
+ if (ownToolNames.has(k)) {
157
+ merged[k] = v;
158
+ }
159
+ }
160
+ } catch {
161
+ }
162
+ }
163
+ return merged;
164
+ }
136
165
  function loadMergedToolConfig(overridePath) {
137
- const baseConfig = chunkCEVOKZFT_cjs.loadToolConfig(EMBEDDED_TOOL_CONFIG_PATH);
166
+ const baseConfig = chunkEIIHED57_cjs.loadToolConfig(EMBEDDED_TOOL_CONFIG_PATH);
138
167
  if (!overridePath) return baseConfig;
139
- const overrideConfig = chunkCEVOKZFT_cjs.loadToolConfig(overridePath);
168
+ const overrideConfig = chunkEIIHED57_cjs.loadToolConfig(overridePath);
140
169
  return agentCommon.deepMerge({}, baseConfig, overrideConfig);
141
170
  }
142
- function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve) {
171
+ function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve, extensionEmbeddedDefaults) {
143
172
  const coreTools = opts.coreTools ?? { sandboxRoot: process.cwd(), allowedHosts: [], enableSandboxValidation: false };
144
173
  {
145
174
  const updates = {};
146
175
  if (toolConfig.sandboxedPath && typeof toolConfig.sandboxedPath === "string") {
147
- updates.sandboxRoot = chunkCEVOKZFT_cjs.resolveSandboxedPath(configPathForResolve, toolConfig.sandboxedPath);
176
+ updates.sandboxRoot = chunkEIIHED57_cjs.resolveSandboxedPath(configPathForResolve, toolConfig.sandboxedPath);
148
177
  }
149
178
  if (typeof toolConfig.enableSandboxValidation === "boolean") {
150
179
  updates.enableSandboxValidation = toolConfig.enableSandboxValidation;
@@ -159,7 +188,11 @@ function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve) {
159
188
  updates.blockedCidrs = coreTools.blockedCidrs;
160
189
  }
161
190
  let hasToolDefaults = false;
162
- const flatOverrides = { ...coreTools.toolOverrides };
191
+ const flatOverrides = {
192
+ ...extensionEmbeddedDefaults,
193
+ ...coreTools.toolOverrides
194
+ };
195
+ if (Object.keys(extensionEmbeddedDefaults).length > 0) hasToolDefaults = true;
163
196
  if (toolConfig.toolDefaults != null && Object.keys(toolConfig.toolDefaults).length > 0) {
164
197
  Object.assign(flatOverrides, toolConfig.toolDefaults);
165
198
  hasToolDefaults = true;
@@ -167,7 +200,7 @@ function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve) {
167
200
  const packageDefaults = { ...coreTools.packageDefaults };
168
201
  if (toolConfig.packageToolDefaults != null && Object.keys(toolConfig.packageToolDefaults).length > 0) {
169
202
  for (const [descriptor, pkgConfig] of Object.entries(toolConfig.packageToolDefaults)) {
170
- const prefix = descriptor.startsWith("file:") ? chunkCEVOKZFT_cjs.fileDescriptorToPackagePrefix(descriptor) : chunkCEVOKZFT_cjs.npmDescriptorToPackagePrefixWithVersion(descriptor);
203
+ const prefix = descriptor.startsWith("file:") ? chunkEIIHED57_cjs.fileDescriptorToPackagePrefix(descriptor) : chunkEIIHED57_cjs.npmDescriptorToPackagePrefixWithVersion(descriptor);
171
204
  if (!prefix) continue;
172
205
  const pkgDefaults = pkgConfig?.defaults != null && typeof pkgConfig.defaults === "object" && !Array.isArray(pkgConfig.defaults) ? pkgConfig.defaults : {};
173
206
  if (Object.keys(pkgDefaults).length > 0) {
@@ -195,8 +228,11 @@ function runtimeOptionsFromConfig(opts, toolConfig, configPathForResolve) {
195
228
  function buildRuntimeAndHub(options = {}) {
196
229
  const configPathForResolve = options.configFilePath ?? EMBEDDED_TOOL_CONFIG_PATH;
197
230
  const mergedToolConfig = loadMergedToolConfig(options.configFilePath);
198
- const runtimeOpts = runtimeOptionsFromConfig(options, mergedToolConfig, configPathForResolve);
199
- const { runtime } = chunkCEVOKZFT_cjs.createRuntimeFromConfigSync(runtimeOpts);
231
+ const extensionEmbeddedDefaults = collectExtensionEmbeddedDefaults(
232
+ chunkEIIHED57_cjs.loadAllExtensionsFromToolYamlSync(configPathForResolve)
233
+ );
234
+ const runtimeOpts = runtimeOptionsFromConfig(options, mergedToolConfig, configPathForResolve, extensionEmbeddedDefaults);
235
+ const { runtime } = chunkEIIHED57_cjs.createRuntimeFromConfigSync(runtimeOpts);
200
236
  const hub = new LangChainToolsHub(runtime);
201
237
  return { runtime, hub, mergedToolConfig };
202
238
  }
@@ -206,9 +242,9 @@ function createLangChainAgentTools(options) {
206
242
  const names = Array.isArray(mergedToolConfig.tools) ? mergedToolConfig.tools : [];
207
243
  if (names.length > 0) {
208
244
  const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
209
- const allBarePackages = names.every((n) => chunkCEVOKZFT_cjs.isBarePackageDescriptor(String(n)));
245
+ const allBarePackages = names.every((n) => chunkEIIHED57_cjs.isBarePackageDescriptor(String(n)));
210
246
  if (allBarePackages) return hub.getLangChainTools();
211
- return hub.getLangChainToolsForNames(chunkCEVOKZFT_cjs.expandToolDescriptorsToRegistryNames(names, registryNames));
247
+ return hub.getLangChainToolsForNames(chunkEIIHED57_cjs.expandToolDescriptorsToRegistryNames(names, registryNames));
212
248
  }
213
249
  return hub.getLangChainTools();
214
250
  }
@@ -220,7 +256,7 @@ async function createMcpServer(options) {
220
256
  version: opts.version ?? mergedToolConfig.mcp?.version,
221
257
  execContextFactory: opts.execContextFactory
222
258
  };
223
- const { server } = await chunkCEVOKZFT_cjs.createMCPServer(runtime, serverOpts);
259
+ const { server } = await chunkEIIHED57_cjs.createMCPServer(runtime, serverOpts);
224
260
  return server;
225
261
  }
226
262
  async function createOpenAPIServer(options) {
@@ -232,7 +268,7 @@ async function createOpenAPIServer(options) {
232
268
  basePath: opts.basePath ?? mergedToolConfig.openapi?.basePath,
233
269
  execContextFactory: opts.execContextFactory
234
270
  };
235
- return chunkCEVOKZFT_cjs.createOpenAPIHttpServer(runtime, serverOpts);
271
+ return chunkEIIHED57_cjs.createOpenAPIHttpServer(runtime, serverOpts);
236
272
  }
237
273
 
238
274
  // src/api/main.ts
@@ -240,19 +276,19 @@ var langchainApi = {
240
276
  createLangChainAgentTools
241
277
  };
242
278
  var runtimeApi = {
243
- createRuntimeFromConfig: chunkCEVOKZFT_cjs.createRuntimeFromConfig,
244
- createRuntimeFromConfigSync: chunkCEVOKZFT_cjs.createRuntimeFromConfigSync
279
+ createRuntimeFromConfig: chunkEIIHED57_cjs.createRuntimeFromConfig,
280
+ createRuntimeFromConfigSync: chunkEIIHED57_cjs.createRuntimeFromConfigSync
245
281
  };
246
282
  var mcpApi = {
247
283
  createMcpServer,
248
- createMCPServer: chunkCEVOKZFT_cjs.createMCPServer,
249
- runMCPServerOverStdio: chunkCEVOKZFT_cjs.runMCPServerOverStdio,
250
- createMCPStreamableHttpHandler: chunkCEVOKZFT_cjs.createMCPStreamableHttpHandler,
251
- createMCPServerStreamableHttp: chunkCEVOKZFT_cjs.createMCPServerStreamableHttp
284
+ createMCPServer: chunkEIIHED57_cjs.createMCPServer,
285
+ runMCPServerOverStdio: chunkEIIHED57_cjs.runMCPServerOverStdio,
286
+ createMCPStreamableHttpHandler: chunkEIIHED57_cjs.createMCPStreamableHttpHandler,
287
+ createMCPServerStreamableHttp: chunkEIIHED57_cjs.createMCPServerStreamableHttp
252
288
  };
253
289
  var openApi = {
254
290
  createOpenAPIServer,
255
- createHttpService: chunkCEVOKZFT_cjs.createHttpService
291
+ createHttpService: chunkEIIHED57_cjs.createHttpService
256
292
  };
257
293
 
258
294
  exports.createLangChainAgentTools = createLangChainAgentTools;
@@ -262,5 +298,5 @@ exports.langchainApi = langchainApi;
262
298
  exports.mcpApi = mcpApi;
263
299
  exports.openApi = openApi;
264
300
  exports.runtimeApi = runtimeApi;
265
- //# sourceMappingURL=chunk-EZDDKTCF.cjs.map
266
- //# sourceMappingURL=chunk-EZDDKTCF.cjs.map
301
+ //# sourceMappingURL=chunk-GXFDYM3O.cjs.map
302
+ //# sourceMappingURL=chunk-GXFDYM3O.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/api/adapters/LangChainToolsHub.ts","../src/api/createAgentTools.ts","../src/api/main.ts"],"names":["LANGCHAIN_KIND","stripNullishObjectFields","enrichSpecWithCanonicalSchema","DynamicStructuredTool","dirname","fileURLToPath","resolve","existsSync","loadToolConfig","loadExtensionManifest","deepMerge","resolveSandboxedPath","fileDescriptorToPackagePrefix","npmDescriptorToPackagePrefixWithVersion","loadAllExtensionsFromToolYamlSync","createRuntimeFromConfigSync","isBarePackageDescriptor","expandToolDescriptorsToRegistryNames","createMCPServer","createOpenAPIHttpServer","createRuntimeFromConfig","runMCPServerOverStdio","createMCPStreamableHttpHandler","createMCPServerStreamableHttp","createHttpService"],"mappings":"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","file":"chunk-GXFDYM3O.cjs","sourcesContent":["/**\n * Exposes all tools from a ToolRegistry + PTCRuntime as LangChain tools\n * for local agent use (e.g. with createReactAgent, AgentExecutor).\n *\n * For most users, use createLangChainAgentTools() which loads from tool.yaml and returns\n * StructuredTool[]. Use LangChainToolsHub when you need a custom runtime or ctxFactory.\n *\n * Use: new LangChainToolsHub(runtime, ctxFactory).getLangChainTools()\n */\n\nimport { DynamicStructuredTool, type StructuredToolInterface } from \"@langchain/core/tools\";\nimport { stripNullishObjectFields } from \"@easynet/agent-common\";\nimport type { PTCRuntime } from \"../../core/runtime/PTCRuntime.js\";\nimport type { ToolSpec } from \"../../core/types/ToolSpec.js\";\nimport type { ToolResult } from \"../../core/types/ToolResult.js\";\nimport type { ExecContext } from \"../../core/types/ToolIntent.js\";\nimport type { ToolIntent } from \"../../core/types/ToolIntent.js\";\nimport { enrichSpecWithCanonicalSchema } from \"../../tools/util/canonicalCoreSchemas.js\";\nimport { LANGCHAIN_KIND } from \"../../tools/langchain/types.js\";\n\n/**\n * If inputSchema wraps all params in a single \"args\" object (manifest convention),\n * returns that inner args schema; otherwise returns null.\n */\nfunction getArgsSchemaIfWrapped(inputSchema: object): Record<string, unknown> | null {\n const s = inputSchema as Record<string, unknown>;\n if (s?.type !== \"object\" || !s.properties || typeof s.properties !== \"object\") return null;\n const args = (s.properties as Record<string, unknown>).args;\n if (\n args != null &&\n typeof args === \"object\" &&\n (args as Record<string, unknown>).type === \"object\" &&\n (args as Record<string, unknown>).properties != null\n ) {\n return args as Record<string, unknown>;\n }\n return null;\n}\n\n/**\n * True when inputSchema wraps all params in a single \"args\" object (manifest convention).\n */\nfunction hasArgsWrapper(inputSchema: object): boolean {\n return getArgsSchemaIfWrapped(inputSchema) !== null;\n}\n\n/**\n * If inputSchema is { type: \"object\", properties: { args: { type: \"object\", properties: {...} } } },\n * return the inner args schema so the LLM can pass { path: \".\" } instead of { args: { path: \".\" } }.\n */\nfunction schemaForLangChain(inputSchema: object): Record<string, unknown> {\n const wrapped = getArgsSchemaIfWrapped(inputSchema);\n if (wrapped !== null) return wrapped;\n return inputSchema as Record<string, unknown>;\n}\n\nfunction buildIntent(\n toolName: string,\n inputSchema: object,\n args: Record<string, unknown>,\n): ToolIntent {\n return {\n tool: toolName,\n args: hasArgsWrapper(inputSchema) ? { args } : args,\n purpose: LANGCHAIN_KIND,\n };\n}\n\nfunction normalizeArgs(args: Record<string, unknown> | undefined): Record<string, unknown> {\n return stripNullishObjectFields(args ?? {}) as Record<string, unknown>;\n}\n\nfunction serializeToolResult(result: ToolResult): string {\n if (result.ok) {\n return typeof result.result === \"string\"\n ? result.result\n : JSON.stringify(result.result);\n }\n\n const err = result.error;\n const message = err?.message ?? \"Tool failed\";\n const details = err?.details;\n return JSON.stringify(\n details != null ? { error: message, details } : { error: message },\n );\n}\n\nexport type ExecContextFactory = () => ExecContext;\n\nconst DEFAULT_CTX_FACTORY: ExecContextFactory = () => ({\n requestId: `lc-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`,\n taskId: `task-${Date.now()}`,\n permissions: [\n \"read:web\",\n \"read:fs\",\n \"write:fs\",\n \"read:db\",\n \"write:db\",\n \"network\",\n \"workflow\",\n \"danger:destructive\",\n ],\n});\n\n/**\n * Hub that wraps PTCRuntime and exposes every registered tool as a LangChain\n * StructuredTool (DynamicStructuredTool), so local agents (LangChain AgentExecutor,\n * createReactAgent, etc.) can use the same tools as MCP and OpenAPI.\n */\nexport class LangChainToolsHub {\n constructor(\n private readonly runtime: PTCRuntime,\n private readonly ctxFactory: ExecContextFactory = DEFAULT_CTX_FACTORY,\n ) {}\n\n /**\n * Returns all registered tools as LangChain StructuredTool[].\n * Each tool invokes the runtime through the full pipeline (policy, HITL, etc.).\n */\n getLangChainTools(): StructuredToolInterface[] {\n const registry = this.runtime.getRegistry();\n const specs = registry.snapshot();\n\n return specs.map((spec) => this.specToLangChainTool(spec));\n }\n\n /**\n * Returns LangChain tools for a subset of tools (by name or query).\n */\n getLangChainToolsForNames(toolNames: string[]): StructuredToolInterface[] {\n const registry = this.runtime.getRegistry();\n const set = new Set(toolNames);\n const specs = registry.snapshot().filter((s) => set.has(s.name));\n return specs.map((spec) => this.specToLangChainTool(spec));\n }\n\n private specToLangChainTool(spec: ToolSpec): DynamicStructuredTool {\n const runtime = this.runtime;\n const ctxFactory = this.ctxFactory;\n const enriched = enrichSpecWithCanonicalSchema(spec);\n\n const schema = schemaForLangChain(enriched.inputSchema);\n return new DynamicStructuredTool({\n name: spec.name,\n description: spec.description ?? `Tool: ${spec.name}`,\n schema,\n func: async (args: Record<string, unknown>): Promise<string> => {\n const normalizedArgs = normalizeArgs(args);\n const intent = buildIntent(spec.name, enriched.inputSchema, normalizedArgs);\n const ctx = ctxFactory();\n const result = await runtime.invoke(intent, ctx);\n return serializeToolResult(result);\n },\n });\n }\n}\n","/**\n * Standalone tool creation functions. Each function:\n * - Uses the embedded config/tool.yaml as the default base.\n * - If a configFilePath is provided, merges it on top of the default.\n * - If no options are provided at all, behaves as if only the embedded default is used.\n *\n * Functions:\n * createLangChainAgentTools(options?) → StructuredToolInterface[]\n * createMcpServer(options?) → Promise<McpServer>\n * createOpenAPIServer(options?) → Promise<OpenAPIExpressApp>\n */\n\nimport { loadToolConfig, resolveSandboxedPath } from \"../tools/util/toolConfig.js\";\nimport type { ToolYamlShape } from \"../tools/util/toolConfig.js\";\nimport { loadExtensionManifest } from \"./extension/registerFromManifest.js\";\nimport {\n expandToolDescriptorsToRegistryNames,\n isBarePackageDescriptor,\n npmDescriptorToPackagePrefixWithVersion,\n fileDescriptorToPackagePrefix,\n} from \"../tools/util/toolDescriptor.js\";\nimport { deepMerge } from \"@easynet/agent-common\";\nimport { createRuntimeFromConfigSync, loadAllExtensionsFromToolYamlSync } from \"./runtimeFromConfig.js\";\nimport type { CreateRuntimeOptions, LoadedExtension } from \"./runtimeFromConfig.js\";\nimport { LangChainToolsHub } from \"./adapters/LangChainToolsHub.js\";\nimport { createMCPServer, type MCPServerOptions, type McpServer } from \"./expose/mcpServer.js\";\nimport {\n createOpenAPIHttpServer,\n type OpenAPIExpressApp,\n type OpenAPIHttpServerOptions,\n} from \"./expose/openapiHttp.js\";\nimport type { StructuredToolInterface } from \"@langchain/core/tools\";\nimport { fileURLToPath } from \"node:url\";\nimport { dirname, resolve } from \"node:path\";\nimport { existsSync } from \"node:fs\";\n\nexport interface CreateAgentToolsOptions extends CreateRuntimeOptions {\n /** Path to an override tool.yaml; its values are merged on top of the embedded default config/tool.yaml */\n configFilePath?: string;\n}\n\n/** Merge host lists from multiple sources (e.g. tool.yaml + programmatic). Union, dedup, preserves order. */\nfunction mergeHostLists(a?: string[], b?: string[]): string[] {\n const seen = new Set<string>();\n const out: string[] = [];\n for (const list of [a ?? [], b ?? []]) {\n for (const h of list) {\n if (!seen.has(h)) {\n seen.add(h);\n out.push(h);\n }\n }\n }\n return out;\n}\n\nfunction resolveEmbeddedToolConfigPath(): string {\n const moduleDir = dirname(fileURLToPath(import.meta.url));\n const candidates = [\n resolve(moduleDir, \"../../config/tool.yaml\"), // src/api -> config\n resolve(moduleDir, \"../config/tool.yaml\"), // dist/* -> config\n resolve(process.cwd(), \"config/tool.yaml\"), // fallback for local app runtime\n ];\n for (const candidate of candidates) {\n if (existsSync(candidate)) return candidate;\n }\n return candidates[0]!;\n}\n\nconst EMBEDDED_TOOL_CONFIG_PATH = resolveEmbeddedToolConfigPath();\n\n/**\n * For each loaded extension, load its embedded config/tool.yaml (layer 2) and collect\n * the toolDefaults into a flat map. Later entries in the list win over earlier ones.\n *\n * Security constraint: each extension's embedded config may only set defaults for tools\n * that belong to that extension (verified against its own manifest). Keys that reference\n * tools from other extensions or global config fields are silently ignored.\n */\nfunction collectExtensionEmbeddedDefaults(\n exts: LoadedExtension[],\n): Record<string, Record<string, unknown>> {\n const merged: Record<string, Record<string, unknown>> = {};\n for (const ext of exts) {\n // Prefer dist/config/tool.yaml (published package); fall back to config/tool.yaml (local dev).\n const configPath =\n [resolve(ext.packageRoot, \"dist/config/tool.yaml\"), resolve(ext.packageRoot, \"config/tool.yaml\")].find(\n existsSync,\n ) ?? \"\";\n if (!configPath) continue;\n try {\n const toolDefaults = loadToolConfig(configPath).toolDefaults ?? {};\n if (Object.keys(toolDefaults).length === 0) continue;\n\n // Build the set of short names this extension owns from its manifest.\n // Include both the explicit name field and the dot-path derived from sourcePath\n // (e.g. \"listDir\" and \"fs.listDir\" for src/fs/listDir) so that config keys in\n // either format are accepted.\n const manifest = loadExtensionManifest(ext.packageRoot);\n const ownToolNames = new Set<string>();\n for (const e of manifest.entries) {\n if (e.name) ownToolNames.add(e.name);\n if (e.sourcePath) {\n ownToolNames.add(e.sourcePath.replace(/^src\\//, \"\").replace(/\\//g, \".\"));\n }\n }\n\n for (const [k, v] of Object.entries(toolDefaults)) {\n // Only allow keys that are short names of tools this extension registers.\n if (ownToolNames.has(k)) {\n merged[k] = v;\n }\n }\n } catch {\n // skip malformed extension config or missing manifest\n }\n }\n return merged;\n}\n\nfunction loadMergedToolConfig(overridePath?: string): ToolYamlShape {\n const baseConfig = loadToolConfig(EMBEDDED_TOOL_CONFIG_PATH);\n if (!overridePath) return baseConfig;\n const overrideConfig = loadToolConfig(overridePath);\n return deepMerge({} as ToolYamlShape, baseConfig, overrideConfig);\n}\n\nfunction runtimeOptionsFromConfig(\n opts: CreateAgentToolsOptions,\n toolConfig: ToolYamlShape,\n configPathForResolve: string,\n extensionEmbeddedDefaults: Record<string, Record<string, unknown>>,\n): CreateRuntimeOptions {\n const coreTools = opts.coreTools ?? { sandboxRoot: process.cwd(), allowedHosts: [], enableSandboxValidation: false };\n {\n const updates: {\n sandboxRoot?: string;\n enableSandboxValidation?: boolean;\n allowedHosts?: string[];\n blockedHosts?: string[];\n blockedCidrs?: string[];\n toolOverrides?: Record<string, Record<string, unknown>>;\n packageDefaults?: Record<string, Record<string, unknown>>;\n } = {};\n if (toolConfig.sandboxedPath && typeof toolConfig.sandboxedPath === \"string\") {\n updates.sandboxRoot = resolveSandboxedPath(configPathForResolve, toolConfig.sandboxedPath);\n }\n if (typeof toolConfig.enableSandboxValidation === \"boolean\") {\n updates.enableSandboxValidation = toolConfig.enableSandboxValidation;\n } else if (coreTools.enableSandboxValidation == null) {\n updates.enableSandboxValidation = false;\n }\n // Smart merge: union of allowedHosts and blockedHosts from yaml + programmatic (both lists always applied)\n updates.allowedHosts = mergeHostLists(coreTools.allowedHosts, toolConfig.allowedHosts);\n updates.blockedHosts = mergeHostLists(coreTools.blockedHosts, toolConfig.blockedHosts);\n if (Array.isArray(toolConfig.blockedCidrs) && toolConfig.blockedCidrs.length > 0) {\n updates.blockedCidrs = toolConfig.blockedCidrs;\n } else if (coreTools.blockedCidrs?.length) {\n updates.blockedCidrs = coreTools.blockedCidrs;\n }\n let hasToolDefaults = false;\n // Priority (low → high): extension embedded (layer 2) < programmatic coreTools < layer 1+3 toolDefaults\n const flatOverrides: Record<string, Record<string, unknown>> = {\n ...extensionEmbeddedDefaults,\n ...coreTools.toolOverrides,\n };\n if (Object.keys(extensionEmbeddedDefaults).length > 0) hasToolDefaults = true;\n if (toolConfig.toolDefaults != null && Object.keys(toolConfig.toolDefaults).length > 0) {\n Object.assign(flatOverrides, toolConfig.toolDefaults);\n hasToolDefaults = true;\n }\n const packageDefaults: Record<string, Record<string, unknown>> = { ...coreTools.packageDefaults };\n if (toolConfig.packageToolDefaults != null && Object.keys(toolConfig.packageToolDefaults).length > 0) {\n for (const [descriptor, pkgConfig] of Object.entries(toolConfig.packageToolDefaults)) {\n const prefix = descriptor.startsWith(\"file:\")\n ? fileDescriptorToPackagePrefix(descriptor)\n : npmDescriptorToPackagePrefixWithVersion(descriptor);\n if (!prefix) continue;\n const pkgDefaults =\n pkgConfig?.defaults != null && typeof pkgConfig.defaults === \"object\" && !Array.isArray(pkgConfig.defaults)\n ? (pkgConfig.defaults as Record<string, unknown>)\n : {};\n if (Object.keys(pkgDefaults).length > 0) {\n packageDefaults[prefix] = pkgDefaults;\n }\n const toolConfigs = pkgConfig?.tools != null && typeof pkgConfig.tools === \"object\" && !Array.isArray(pkgConfig.tools) ? pkgConfig.tools : {};\n for (const [toolName, config] of Object.entries(toolConfigs)) {\n if (config != null && typeof config === \"object\") {\n hasToolDefaults = true;\n flatOverrides[`${prefix}::${toolName}`] = { ...pkgDefaults, ...(config as Record<string, unknown>) };\n }\n }\n }\n if (Object.keys(packageDefaults).length > 0) {\n updates.packageDefaults = packageDefaults;\n }\n }\n if (hasToolDefaults) {\n updates.toolOverrides = flatOverrides;\n }\n if (Object.keys(updates).length > 0) return { ...opts, coreTools: { ...coreTools, ...updates } };\n }\n return { ...opts, coreTools };\n}\n\n/**\n * Build a ready-to-use runtime + hub from options.\n * - No options → embedded default config/tool.yaml only.\n * - options.configFilePath → override merged on top of embedded default.\n */\nfunction buildRuntimeAndHub(options: CreateAgentToolsOptions = {}): {\n runtime: ReturnType<typeof createRuntimeFromConfigSync>[\"runtime\"];\n hub: LangChainToolsHub;\n mergedToolConfig: ToolYamlShape;\n} {\n const configPathForResolve = options.configFilePath ?? EMBEDDED_TOOL_CONFIG_PATH;\n const mergedToolConfig = loadMergedToolConfig(options.configFilePath);\n // Collect layer-2 defaults from each extension's embedded config/tool.yaml.\n // loadAllExtensionsFromToolYamlSync is cheap here (require() is cached by Node.js).\n const extensionEmbeddedDefaults = collectExtensionEmbeddedDefaults(\n loadAllExtensionsFromToolYamlSync(configPathForResolve),\n );\n const runtimeOpts = runtimeOptionsFromConfig(options, mergedToolConfig, configPathForResolve, extensionEmbeddedDefaults);\n const { runtime } = createRuntimeFromConfigSync(runtimeOpts);\n const hub = new LangChainToolsHub(runtime);\n return { runtime, hub, mergedToolConfig };\n}\n\n/**\n * Create LangChain agent tools.\n *\n * - No argument → uses embedded default config/tool.yaml.\n * - options.configFilePath → merged on top of embedded default.\n * - All other CreateAgentToolsOptions (coreTools, etc.) are applied as programmatic overrides.\n *\n * @example\n * // Use embedded defaults\n * const tools = createLangChainAgentTools();\n *\n * // Override with a project-specific tool.yaml\n * const tools = createLangChainAgentTools({ configFilePath: \"./config/tool.yaml\" });\n */\nexport function createLangChainAgentTools(\n options?: CreateAgentToolsOptions | string,\n): StructuredToolInterface[] {\n const opts: CreateAgentToolsOptions =\n typeof options === \"string\" ? { configFilePath: options } : options ?? {};\n const { runtime, hub, mergedToolConfig } = buildRuntimeAndHub(opts);\n\n const names = Array.isArray(mergedToolConfig.tools) ? mergedToolConfig.tools : [];\n if (names.length > 0) {\n const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);\n const allBarePackages = names.every((n) => isBarePackageDescriptor(String(n)));\n if (allBarePackages) return hub.getLangChainTools();\n return hub.getLangChainToolsForNames(expandToolDescriptorsToRegistryNames(names, registryNames));\n }\n return hub.getLangChainTools();\n}\n\n/**\n * Create an MCP server from tool config.\n *\n * - No argument → uses embedded default config/tool.yaml.\n * - options.configFilePath → merged on top of embedded default.\n * - options.mcp → passed to the MCP server (name, version, execContextFactory).\n *\n * @example\n * // Use embedded defaults\n * const server = await createMcpServer();\n * await server.connectStdio();\n *\n * // Override with a project-specific tool.yaml\n * const server = await createMcpServer({ configFilePath: \"./config/tool.yaml\" });\n */\nexport async function createMcpServer(\n options?: (CreateAgentToolsOptions & MCPServerOptions) | string,\n): Promise<McpServer> {\n const opts: CreateAgentToolsOptions & MCPServerOptions =\n typeof options === \"string\" ? { configFilePath: options } : options ?? {};\n const { runtime, mergedToolConfig } = buildRuntimeAndHub(opts);\n const serverOpts: MCPServerOptions = {\n name: opts.name ?? mergedToolConfig.mcp?.name,\n version: opts.version ?? mergedToolConfig.mcp?.version,\n execContextFactory: opts.execContextFactory,\n };\n const { server } = await createMCPServer(runtime, serverOpts);\n return server;\n}\n\n/**\n * Create an OpenAPI / Swagger HTTP server from tool config.\n *\n * - No argument → uses embedded default config/tool.yaml.\n * - options.configFilePath → merged on top of embedded default.\n * - options.port, host, basePath → passed to the HTTP server; tool.yaml openapi: section provides defaults.\n *\n * @example\n * // Use embedded defaults\n * const app = await createOpenAPIServer();\n * app.listen(3000);\n *\n * // Override with a project-specific tool.yaml\n * const app = await createOpenAPIServer({ configFilePath: \"./config/tool.yaml\", port: 8080 });\n */\nexport async function createOpenAPIServer(\n options?: (CreateAgentToolsOptions & OpenAPIHttpServerOptions) | string,\n): Promise<OpenAPIExpressApp> {\n const opts: CreateAgentToolsOptions & OpenAPIHttpServerOptions =\n typeof options === \"string\" ? { configFilePath: options } : options ?? {};\n const { runtime, mergedToolConfig } = buildRuntimeAndHub(opts);\n const serverOpts: OpenAPIHttpServerOptions = {\n host: opts.host ?? mergedToolConfig.openapi?.host,\n port: opts.port ?? mergedToolConfig.openapi?.port,\n basePath: opts.basePath ?? mergedToolConfig.openapi?.basePath,\n execContextFactory: opts.execContextFactory,\n };\n return createOpenAPIHttpServer(runtime, serverOpts);\n}\n","/**\n * Public API: three config-driven create functions + runtime.\n *\n * 1. createLangChainAgentTools(options?) → LangChain tools (createReactAgent / AgentExecutor)\n * 2. createMcpServer(options?) → MCP server (stdio, Cursor / Claude)\n * 3. createOpenAPIServer(options?) → HTTP + OpenAPI/Swagger (GET /tools, POST /invoke)\n *\n * Each function:\n * - Uses the embedded config/tool.yaml as the base when no configFilePath is given.\n * - Merges an override tool.yaml on top when options.configFilePath is provided.\n *\n * All tool invokes go through PTC Intent (runtime.invoke(intent, ctx)) for policy, budget, observability.\n * Use createRuntimeFromConfig(config) when you need the runtime for multiple servers.\n */\n\nexport {\n createLangChainAgentTools,\n createMcpServer,\n createOpenAPIServer,\n} from \"./createAgentTools.js\";\nexport type { CreateAgentToolsOptions } from \"./createAgentTools.js\";\n\nexport { createHttpService } from \"./expose/openapiHttp.js\";\nexport type {\n CreateHttpServiceOptions,\n HttpServiceResult,\n OpenAPIExpressApp,\n OpenAPIHttpServerOptions,\n} from \"./expose/openapiHttp.js\";\n\nexport {\n createMCPServer,\n runMCPServerOverStdio,\n createMCPStreamableHttpHandler,\n createMCPServerStreamableHttp,\n} from \"./expose/mcpServer.js\";\nexport type {\n MCPServerOptions,\n MCPServerResult,\n McpServer,\n MCPStreamableHttpHandler,\n MCPServerStreamableHttpResult,\n CreateMCPServerStreamableHttpOptions,\n} from \"./expose/mcpServer.js\";\n\nexport { createRuntimeFromConfig, createRuntimeFromConfigSync } from \"./runtimeFromConfig.js\";\nexport type { CreateRuntimeOptions, CreateRuntimeResult } from \"./runtimeFromConfig.js\";\n\nexport { PTCRuntime } from \"../core/runtime/PTCRuntime.js\";\nexport type { PTCRuntimeConfig } from \"../core/runtime/PTCRuntime.js\";\n\nimport {\n createLangChainAgentTools,\n createMcpServer,\n createOpenAPIServer,\n} from \"./createAgentTools.js\";\nimport { createHttpService } from \"./expose/openapiHttp.js\";\nimport {\n createMCPServer,\n runMCPServerOverStdio,\n createMCPStreamableHttpHandler,\n createMCPServerStreamableHttp,\n} from \"./expose/mcpServer.js\";\nimport { createRuntimeFromConfig, createRuntimeFromConfigSync } from \"./runtimeFromConfig.js\";\n\n/**\n * Facade: grouped API for lower import complexity in callers.\n */\nexport const langchainApi = {\n createLangChainAgentTools,\n} as const;\n\n/**\n * Facade: grouped runtime creation helpers.\n */\nexport const runtimeApi = {\n createRuntimeFromConfig,\n createRuntimeFromConfigSync,\n} as const;\n\n/**\n * Facade: grouped MCP server helpers.\n */\nexport const mcpApi = {\n createMcpServer,\n createMCPServer,\n runMCPServerOverStdio,\n createMCPStreamableHttpHandler,\n createMCPServerStreamableHttp,\n} as const;\n\n/**\n * Facade: grouped OpenAPI/HTTP helpers.\n */\nexport const openApi = {\n createOpenAPIServer,\n createHttpService,\n} as const;\n"]}
@@ -0,0 +1,92 @@
1
+ import { createToolSpec } from './chunk-ODEHUAR4.js';
2
+ import { existsSync, readFileSync, statSync } from 'fs';
3
+ import path from 'path';
4
+ import yaml from 'js-yaml';
5
+
6
+ function loadToolYaml(packageRoot, sourcePath) {
7
+ const dir = path.dirname(sourcePath);
8
+ const base = path.basename(sourcePath);
9
+ const dirPath = path.join(packageRoot, dir);
10
+ const yamlPath = existsSync(path.join(dirPath, `${base}.tool.yaml`)) ? path.join(dirPath, `${base}.tool.yaml`) : path.join(dirPath, `${base}.example.yaml`);
11
+ if (!existsSync(yamlPath)) return void 0;
12
+ try {
13
+ const raw = readFileSync(yamlPath, "utf-8");
14
+ const data = yaml.load(raw);
15
+ if (data == null || typeof data !== "object" || Array.isArray(data)) return void 0;
16
+ const obj = data;
17
+ const toolBlock = obj?.tool;
18
+ const arr = toolBlock?.list;
19
+ if (!Array.isArray(arr)) return void 0;
20
+ const defaults = toolBlock?.defaults != null && typeof toolBlock.defaults === "object" && !Array.isArray(toolBlock.defaults) ? toolBlock.defaults : {};
21
+ const item = arr.find(
22
+ (e) => e != null && typeof e === "object" && e.name === base
23
+ );
24
+ if (!item || typeof item !== "object") return void 0;
25
+ const { name: _n, ...rest } = item;
26
+ const merged = { ...defaults, ...rest };
27
+ if (Object.keys(merged).length === 0) return void 0;
28
+ return merged;
29
+ } catch {
30
+ return void 0;
31
+ }
32
+ }
33
+ function loadExtensionManifest(manifestPathOrDir) {
34
+ const p = path.resolve(manifestPathOrDir);
35
+ let manifestPath;
36
+ if (existsSync(p) && statSync(p).isFile()) {
37
+ manifestPath = p;
38
+ } else {
39
+ const inDir = path.join(p, "core-tools-manifest.json");
40
+ const inDist = path.join(p, "dist", "core-tools-manifest.json");
41
+ manifestPath = existsSync(inDir) ? inDir : inDist;
42
+ }
43
+ const raw = readFileSync(manifestPath, "utf-8");
44
+ const parsed = JSON.parse(raw);
45
+ if (Array.isArray(parsed)) {
46
+ return { entries: parsed };
47
+ }
48
+ return { kind: parsed.kind, entries: parsed.tools ?? [] };
49
+ }
50
+ function registerToolsFromManifest(registry, options) {
51
+ const { manifestPathOrDir, kind: kindOpt, only, namePrefixes, packageRoot } = options;
52
+ const loaded = loadExtensionManifest(manifestPathOrDir);
53
+ const kind = kindOpt ?? loaded.kind ?? "extension";
54
+ const entries = loaded.entries;
55
+ const onlySet = only?.length ? new Set(only) : null;
56
+ const registered = [];
57
+ for (const entry of entries) {
58
+ const toolName = entry.name ?? (entry.coreName != null ? entry.coreName.replace(/^[^/]+\//, "").replace(/^src\./, "") : entry.sourcePath.replace(/^src\//, "").replace(/\//g, "."));
59
+ let spec = createToolSpec({
60
+ name: toolName,
61
+ kind,
62
+ description: entry.description,
63
+ inputSchema: entry.inputSchema,
64
+ outputSchema: entry.outputSchema,
65
+ capabilities: [],
66
+ sideEffect: entry.sideEffect
67
+ });
68
+ if (onlySet && !onlySet.has(spec.name)) continue;
69
+ if (namePrefixes?.length && !namePrefixes.some((prefix) => spec.name.startsWith(prefix))) {
70
+ continue;
71
+ }
72
+ const defaultArgs = packageRoot != null ? loadToolYaml(packageRoot, entry.sourcePath) : void 0;
73
+ spec = {
74
+ ...spec,
75
+ _meta: {
76
+ ...spec._meta,
77
+ sourcePath: entry.sourcePath,
78
+ exportName: entry.exportName,
79
+ shortName: toolName,
80
+ ...packageRoot != null && { packageRoot },
81
+ ...defaultArgs != null && Object.keys(defaultArgs).length > 0 && { defaultArgs }
82
+ }
83
+ };
84
+ registry.register(spec);
85
+ registered.push(spec);
86
+ }
87
+ return registered;
88
+ }
89
+
90
+ export { loadExtensionManifest, loadToolYaml, registerToolsFromManifest };
91
+ //# sourceMappingURL=chunk-JZ6LKSAS.js.map
92
+ //# sourceMappingURL=chunk-JZ6LKSAS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/api/extension/loadToolYaml.ts","../src/api/extension/registerFromManifest.ts"],"names":["path","existsSync","readFileSync"],"mappings":"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","file":"chunk-JZ6LKSAS.js","sourcesContent":["/**\n * Load per-tool default args/config from <base>.tool.yaml (framework-defined format).\n *\n * Supported YAML format:\n * tool:\n * defaults: # optional; same level as list; merged into every tool's defaultArgs\n * sandboxRoot: \"\"\n * maxBytes: 5242880\n * list:\n * - name: fetchText\n * timeoutMs: 5000\n * maxBytes: 1048576\n * (find item where name === tool base name; result = { ...defaults, ...item } minus name)\n */\nimport { readFileSync, existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport yaml from \"js-yaml\";\n\n/**\n * Load tool.yaml for a given tool. Path: packageRoot / dirname(sourcePath) / basename(sourcePath).tool.yaml\n * Returns default args (and config) for the tool, or undefined if file missing or no matching entry.\n * If tool.defaults exists (same level as tool.list), it is merged first; list item fields override.\n */\nexport function loadToolYaml(\n packageRoot: string,\n sourcePath: string,\n): Record<string, unknown> | undefined {\n const dir = path.dirname(sourcePath);\n const base = path.basename(sourcePath);\n const dirPath = path.join(packageRoot, dir);\n const yamlPath = existsSync(path.join(dirPath, `${base}.tool.yaml`))\n ? path.join(dirPath, `${base}.tool.yaml`)\n : path.join(dirPath, `${base}.example.yaml`);\n if (!existsSync(yamlPath)) return undefined;\n try {\n const raw = readFileSync(yamlPath, \"utf-8\");\n const data = yaml.load(raw) as unknown;\n if (data == null || typeof data !== \"object\" || Array.isArray(data)) return undefined;\n const obj = data as Record<string, unknown>;\n const toolBlock = obj?.tool as Record<string, unknown> | undefined;\n const arr = toolBlock?.list;\n if (!Array.isArray(arr)) return undefined;\n const defaults =\n toolBlock?.defaults != null &&\n typeof toolBlock.defaults === \"object\" &&\n !Array.isArray(toolBlock.defaults)\n ? (toolBlock.defaults as Record<string, unknown>)\n : {};\n const item = arr.find(\n (e: unknown) => e != null && typeof e === \"object\" && (e as Record<string, unknown>).name === base,\n ) as Record<string, unknown> | undefined;\n if (!item || typeof item !== \"object\") return undefined;\n const { name: _n, ...rest } = item;\n const merged = { ...defaults, ...rest };\n if (Object.keys(merged).length === 0) return undefined;\n return merged;\n } catch {\n return undefined;\n }\n}\n","/**\n * Generic manifest-based registration for extensions.\n * Reads a pre-built JSON manifest (extension produces it at build time; agent-tool does not scan @tool).\n * Registers ToolSpecs with the registry. When packageRoot is provided, loads <base>.tool.yaml per tool and sets defaultArgs in _meta.\n */\nimport { readFileSync, existsSync, statSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { createToolSpec } from \"../../core/types/ToolSpec.js\";\nimport type { ToolSpec, HitlSideEffect } from \"../../core/types/ToolSpec.js\";\nimport type { ToolRegistry } from \"../../core/registry/ToolRegistry.js\";\nimport { loadToolYaml } from \"./loadToolYaml.js\";\n\n/** Manifest entry shape (convention: extension build emits this, e.g. from @tool scan). */\nexport interface ExtensionManifestEntry {\n /** Tool name (e.g. \"exec.runCommand\"). Legacy manifests may have coreName instead. */\n name?: string;\n /** @deprecated Use name instead. Legacy: e.g. \"core/src.exec.runCommand\". */\n coreName?: string;\n description: string;\n inputSchema: object;\n outputSchema: object;\n sourcePath: string;\n exportName: string;\n sideEffect: HitlSideEffect;\n}\n\n/** Loaded manifest: entries + optional kind from manifest file. */\nexport interface LoadedExtensionManifest {\n kind?: string;\n entries: ExtensionManifestEntry[];\n}\n\nexport interface RegisterFromManifestOptions {\n /** Path to manifest JSON (or directory containing core-tools-manifest.json). */\n manifestPathOrDir: string;\n /** Tool kind; if omitted, uses manifest.kind or \"extension\". */\n kind?: string;\n /** Filter: only register these tool names. */\n only?: string[];\n /** Filter: only register tools whose name starts with one of these prefixes. */\n namePrefixes?: string[];\n /** Extension package root (e.g. dist); when set, loads <base>.tool.yaml per tool and sets defaultArgs in _meta. */\n packageRoot?: string;\n}\n\n/**\n * Load manifest from path. Supports array or { kind?, tools: ExtensionManifestEntry[] }.\n * Returns entries + optional kind so framework can use dynamic kind from manifest.\n */\nexport function loadExtensionManifest(manifestPathOrDir: string): LoadedExtensionManifest {\n const p = path.resolve(manifestPathOrDir);\n let manifestPath: string;\n if (existsSync(p) && statSync(p).isFile()) {\n manifestPath = p;\n } else {\n const inDir = path.join(p, \"core-tools-manifest.json\");\n const inDist = path.join(p, \"dist\", \"core-tools-manifest.json\");\n manifestPath = existsSync(inDir) ? inDir : inDist;\n }\n const raw = readFileSync(manifestPath, \"utf-8\");\n const parsed = JSON.parse(raw) as ExtensionManifestEntry[] | { kind?: string; tools: ExtensionManifestEntry[] };\n if (Array.isArray(parsed)) {\n return { entries: parsed };\n }\n return { kind: parsed.kind, entries: parsed.tools ?? [] };\n}\n\n/**\n * Register tools from a manifest with the registry. Returns the list of registered specs.\n * Extension packages call this from their register (or equivalent) with their package root.\n */\nexport function registerToolsFromManifest(\n registry: ToolRegistry,\n options: RegisterFromManifestOptions,\n): ToolSpec[] {\n const { manifestPathOrDir, kind: kindOpt, only, namePrefixes, packageRoot } = options;\n const loaded = loadExtensionManifest(manifestPathOrDir);\n const kind = (kindOpt ?? loaded.kind ?? \"extension\") as ToolSpec[\"kind\"];\n const entries = loaded.entries;\n const onlySet = only?.length ? new Set(only) : null;\n const registered: ToolSpec[] = [];\n\n for (const entry of entries) {\n const toolName =\n entry.name ??\n (entry.coreName != null\n ? entry.coreName.replace(/^[^/]+\\//, \"\").replace(/^src\\./, \"\")\n : entry.sourcePath.replace(/^src\\//, \"\").replace(/\\//g, \".\"));\n let spec = createToolSpec({\n name: toolName,\n kind,\n description: entry.description,\n inputSchema: entry.inputSchema,\n outputSchema: entry.outputSchema,\n capabilities: [],\n sideEffect: entry.sideEffect,\n });\n if (onlySet && !onlySet.has(spec.name)) continue;\n if (namePrefixes?.length && !namePrefixes.some((prefix) => spec.name.startsWith(prefix))) {\n continue;\n }\n const defaultArgs =\n packageRoot != null ? loadToolYaml(packageRoot, entry.sourcePath) : undefined;\n spec = {\n ...spec,\n _meta: {\n ...spec._meta,\n sourcePath: entry.sourcePath,\n exportName: entry.exportName,\n shortName: toolName,\n ...(packageRoot != null && { packageRoot }),\n ...(defaultArgs != null && Object.keys(defaultArgs).length > 0 && { defaultArgs }),\n },\n } as ToolSpec;\n registry.register(spec);\n registered.push(spec);\n }\n return registered;\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkOKKBKZWK_cjs = require('./chunk-OKKBKZWK.cjs');
3
+ var chunkBXFRXPLX_cjs = require('./chunk-BXFRXPLX.cjs');
4
+ var chunk5QH7YY4Z_cjs = require('./chunk-5QH7YY4Z.cjs');
4
5
  require('./chunk-LHKEJNKL.cjs');
5
6
  require('./chunk-QEJF3KDV.cjs');
6
7
 
@@ -8,51 +9,51 @@ require('./chunk-QEJF3KDV.cjs');
8
9
 
9
10
  Object.defineProperty(exports, "createContextRunner", {
10
11
  enumerable: true,
11
- get: function () { return chunkOKKBKZWK_cjs.createContextRunner; }
12
+ get: function () { return chunkBXFRXPLX_cjs.createContextRunner; }
12
13
  });
13
14
  Object.defineProperty(exports, "createDynamicImportAdapter", {
14
15
  enumerable: true,
15
- get: function () { return chunkOKKBKZWK_cjs.createDynamicImportAdapter; }
16
+ get: function () { return chunkBXFRXPLX_cjs.createDynamicImportAdapter; }
16
17
  });
17
18
  Object.defineProperty(exports, "createExtension", {
18
19
  enumerable: true,
19
- get: function () { return chunkOKKBKZWK_cjs.createExtension; }
20
+ get: function () { return chunkBXFRXPLX_cjs.createExtension; }
20
21
  });
21
22
  Object.defineProperty(exports, "generateExtensionManifest", {
22
23
  enumerable: true,
23
- get: function () { return chunkOKKBKZWK_cjs.generateExtensionManifest; }
24
+ get: function () { return chunkBXFRXPLX_cjs.generateExtensionManifest; }
24
25
  });
25
26
  Object.defineProperty(exports, "generateManifest", {
26
27
  enumerable: true,
27
- get: function () { return chunkOKKBKZWK_cjs.generateManifest; }
28
+ get: function () { return chunkBXFRXPLX_cjs.generateManifest; }
28
29
  });
29
30
  Object.defineProperty(exports, "getGroupNamePrefixes", {
30
31
  enumerable: true,
31
- get: function () { return chunkOKKBKZWK_cjs.getGroupNamePrefixes; }
32
+ get: function () { return chunkBXFRXPLX_cjs.getGroupNamePrefixes; }
32
33
  });
33
- Object.defineProperty(exports, "loadExtensionManifest", {
34
+ Object.defineProperty(exports, "overrideWithConfig", {
34
35
  enumerable: true,
35
- get: function () { return chunkOKKBKZWK_cjs.loadExtensionManifest; }
36
+ get: function () { return chunkBXFRXPLX_cjs.overrideWithConfig; }
36
37
  });
37
- Object.defineProperty(exports, "loadToolYaml", {
38
+ Object.defineProperty(exports, "registerExtension", {
38
39
  enumerable: true,
39
- get: function () { return chunkOKKBKZWK_cjs.loadToolYaml; }
40
+ get: function () { return chunkBXFRXPLX_cjs.registerExtension; }
40
41
  });
41
- Object.defineProperty(exports, "overrideWithConfig", {
42
+ Object.defineProperty(exports, "resolveExtensionPackageRoot", {
42
43
  enumerable: true,
43
- get: function () { return chunkOKKBKZWK_cjs.overrideWithConfig; }
44
+ get: function () { return chunkBXFRXPLX_cjs.resolveExtensionPackageRoot; }
44
45
  });
45
- Object.defineProperty(exports, "registerExtension", {
46
+ Object.defineProperty(exports, "loadExtensionManifest", {
46
47
  enumerable: true,
47
- get: function () { return chunkOKKBKZWK_cjs.registerExtension; }
48
+ get: function () { return chunk5QH7YY4Z_cjs.loadExtensionManifest; }
48
49
  });
49
- Object.defineProperty(exports, "registerToolsFromManifest", {
50
+ Object.defineProperty(exports, "loadToolYaml", {
50
51
  enumerable: true,
51
- get: function () { return chunkOKKBKZWK_cjs.registerToolsFromManifest; }
52
+ get: function () { return chunk5QH7YY4Z_cjs.loadToolYaml; }
52
53
  });
53
- Object.defineProperty(exports, "resolveExtensionPackageRoot", {
54
+ Object.defineProperty(exports, "registerToolsFromManifest", {
54
55
  enumerable: true,
55
- get: function () { return chunkOKKBKZWK_cjs.resolveExtensionPackageRoot; }
56
+ get: function () { return chunk5QH7YY4Z_cjs.registerToolsFromManifest; }
56
57
  });
57
58
  //# sourceMappingURL=extension.cjs.map
58
59
  //# sourceMappingURL=extension.cjs.map
package/dist/extension.js CHANGED
@@ -1,4 +1,5 @@
1
- export { createContextRunner, createDynamicImportAdapter, createExtension, generateExtensionManifest, generateManifest, getGroupNamePrefixes, loadExtensionManifest, loadToolYaml, overrideWithConfig, registerExtension, registerToolsFromManifest, resolveExtensionPackageRoot } from './chunk-GSOJCOKN.js';
1
+ export { createContextRunner, createDynamicImportAdapter, createExtension, generateExtensionManifest, generateManifest, getGroupNamePrefixes, overrideWithConfig, registerExtension, resolveExtensionPackageRoot } from './chunk-EFILLN6Q.js';
2
+ export { loadExtensionManifest, loadToolYaml, registerToolsFromManifest } from './chunk-JZ6LKSAS.js';
2
3
  import './chunk-HEVWKBBQ.js';
3
4
  import './chunk-ODEHUAR4.js';
4
5
  //# sourceMappingURL=extension.js.map
package/dist/index.cjs CHANGED
@@ -1,13 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  require('./chunk-YL6RC7HQ.cjs');
4
- var chunkOKKBKZWK_cjs = require('./chunk-OKKBKZWK.cjs');
4
+ var chunkBXFRXPLX_cjs = require('./chunk-BXFRXPLX.cjs');
5
5
  var chunkR55NXJIH_cjs = require('./chunk-R55NXJIH.cjs');
6
- var chunkEZDDKTCF_cjs = require('./chunk-EZDDKTCF.cjs');
6
+ var chunkGXFDYM3O_cjs = require('./chunk-GXFDYM3O.cjs');
7
+ var chunk5QH7YY4Z_cjs = require('./chunk-5QH7YY4Z.cjs');
7
8
  require('./chunk-ICHSEIZN.cjs');
8
9
  require('./chunk-NOGGIM7B.cjs');
9
10
  var chunkTBDSFXNG_cjs = require('./chunk-TBDSFXNG.cjs');
10
- var chunkCEVOKZFT_cjs = require('./chunk-CEVOKZFT.cjs');
11
+ var chunkEIIHED57_cjs = require('./chunk-EIIHED57.cjs');
11
12
  require('./chunk-UUNG3GL3.cjs');
12
13
  require('./chunk-33N4Y6IS.cjs');
13
14
  var chunkLHKEJNKL_cjs = require('./chunk-LHKEJNKL.cjs');
@@ -36,7 +37,7 @@ function normalizeAgentToolConfigRef(raw) {
36
37
  // src/config/index.ts
37
38
  function loadToolRuntimeConfig(options = {}) {
38
39
  const configPath = path.resolve(options.configPath ?? "config/tool.yaml");
39
- return chunkCEVOKZFT_cjs.loadToolConfig(configPath);
40
+ return chunkEIIHED57_cjs.loadToolConfig(configPath);
40
41
  }
41
42
  function createToolConfig(options = {}) {
42
43
  const base = loadToolRuntimeConfig(options);
@@ -54,18 +55,18 @@ var platformApi = {
54
55
  scan: chunkLHKEJNKL_cjs.scan
55
56
  },
56
57
  extension: {
57
- createExtension: chunkOKKBKZWK_cjs.createExtension,
58
- generateManifest: chunkOKKBKZWK_cjs.generateManifest,
59
- generateExtensionManifest: chunkOKKBKZWK_cjs.generateExtensionManifest,
60
- registerExtension: chunkOKKBKZWK_cjs.registerExtension,
61
- registerToolsFromManifest: chunkOKKBKZWK_cjs.registerToolsFromManifest,
62
- loadExtensionManifest: chunkOKKBKZWK_cjs.loadExtensionManifest,
63
- loadToolYaml: chunkOKKBKZWK_cjs.loadToolYaml,
64
- resolveExtensionPackageRoot: chunkOKKBKZWK_cjs.resolveExtensionPackageRoot,
65
- overrideWithConfig: chunkOKKBKZWK_cjs.overrideWithConfig,
66
- getGroupNamePrefixes: chunkOKKBKZWK_cjs.getGroupNamePrefixes,
67
- createDynamicImportAdapter: chunkOKKBKZWK_cjs.createDynamicImportAdapter,
68
- createContextRunner: chunkOKKBKZWK_cjs.createContextRunner
58
+ createExtension: chunkBXFRXPLX_cjs.createExtension,
59
+ generateManifest: chunkBXFRXPLX_cjs.generateManifest,
60
+ generateExtensionManifest: chunkBXFRXPLX_cjs.generateExtensionManifest,
61
+ registerExtension: chunkBXFRXPLX_cjs.registerExtension,
62
+ registerToolsFromManifest: chunk5QH7YY4Z_cjs.registerToolsFromManifest,
63
+ loadExtensionManifest: chunk5QH7YY4Z_cjs.loadExtensionManifest,
64
+ loadToolYaml: chunk5QH7YY4Z_cjs.loadToolYaml,
65
+ resolveExtensionPackageRoot: chunkBXFRXPLX_cjs.resolveExtensionPackageRoot,
66
+ overrideWithConfig: chunkBXFRXPLX_cjs.overrideWithConfig,
67
+ getGroupNamePrefixes: chunkBXFRXPLX_cjs.getGroupNamePrefixes,
68
+ createDynamicImportAdapter: chunkBXFRXPLX_cjs.createDynamicImportAdapter,
69
+ createContextRunner: chunkBXFRXPLX_cjs.createContextRunner
69
70
  },
70
71
  security: {
71
72
  resolveSandboxedPath: chunkZDSZHEQU_cjs.resolveSandboxedPath,
@@ -88,55 +89,55 @@ var platformApi = {
88
89
 
89
90
  Object.defineProperty(exports, "createLangChainAgentTools", {
90
91
  enumerable: true,
91
- get: function () { return chunkEZDDKTCF_cjs.createLangChainAgentTools; }
92
+ get: function () { return chunkGXFDYM3O_cjs.createLangChainAgentTools; }
92
93
  });
93
94
  Object.defineProperty(exports, "createMcpServer", {
94
95
  enumerable: true,
95
- get: function () { return chunkEZDDKTCF_cjs.createMcpServer; }
96
+ get: function () { return chunkGXFDYM3O_cjs.createMcpServer; }
96
97
  });
97
98
  Object.defineProperty(exports, "createOpenAPIServer", {
98
99
  enumerable: true,
99
- get: function () { return chunkEZDDKTCF_cjs.createOpenAPIServer; }
100
+ get: function () { return chunkGXFDYM3O_cjs.createOpenAPIServer; }
100
101
  });
101
102
  Object.defineProperty(exports, "langchainApi", {
102
103
  enumerable: true,
103
- get: function () { return chunkEZDDKTCF_cjs.langchainApi; }
104
+ get: function () { return chunkGXFDYM3O_cjs.langchainApi; }
104
105
  });
105
106
  Object.defineProperty(exports, "mcpApi", {
106
107
  enumerable: true,
107
- get: function () { return chunkEZDDKTCF_cjs.mcpApi; }
108
+ get: function () { return chunkGXFDYM3O_cjs.mcpApi; }
108
109
  });
109
110
  Object.defineProperty(exports, "openApi", {
110
111
  enumerable: true,
111
- get: function () { return chunkEZDDKTCF_cjs.openApi; }
112
+ get: function () { return chunkGXFDYM3O_cjs.openApi; }
112
113
  });
113
114
  Object.defineProperty(exports, "runtimeApi", {
114
115
  enumerable: true,
115
- get: function () { return chunkEZDDKTCF_cjs.runtimeApi; }
116
+ get: function () { return chunkGXFDYM3O_cjs.runtimeApi; }
116
117
  });
117
118
  Object.defineProperty(exports, "createMCPServer", {
118
119
  enumerable: true,
119
- get: function () { return chunkCEVOKZFT_cjs.createMCPServer; }
120
+ get: function () { return chunkEIIHED57_cjs.createMCPServer; }
120
121
  });
121
122
  Object.defineProperty(exports, "createMCPServerStreamableHttp", {
122
123
  enumerable: true,
123
- get: function () { return chunkCEVOKZFT_cjs.createMCPServerStreamableHttp; }
124
+ get: function () { return chunkEIIHED57_cjs.createMCPServerStreamableHttp; }
124
125
  });
125
126
  Object.defineProperty(exports, "createMCPStreamableHttpHandler", {
126
127
  enumerable: true,
127
- get: function () { return chunkCEVOKZFT_cjs.createMCPStreamableHttpHandler; }
128
+ get: function () { return chunkEIIHED57_cjs.createMCPStreamableHttpHandler; }
128
129
  });
129
130
  Object.defineProperty(exports, "createRuntimeFromConfig", {
130
131
  enumerable: true,
131
- get: function () { return chunkCEVOKZFT_cjs.createRuntimeFromConfig; }
132
+ get: function () { return chunkEIIHED57_cjs.createRuntimeFromConfig; }
132
133
  });
133
134
  Object.defineProperty(exports, "createRuntimeFromConfigSync", {
134
135
  enumerable: true,
135
- get: function () { return chunkCEVOKZFT_cjs.createRuntimeFromConfigSync; }
136
+ get: function () { return chunkEIIHED57_cjs.createRuntimeFromConfigSync; }
136
137
  });
137
138
  Object.defineProperty(exports, "runMCPServerOverStdio", {
138
139
  enumerable: true,
139
- get: function () { return chunkCEVOKZFT_cjs.runMCPServerOverStdio; }
140
+ get: function () { return chunkEIIHED57_cjs.runMCPServerOverStdio; }
140
141
  });
141
142
  Object.defineProperty(exports, "ToolRegistry", {
142
143
  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;;;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"]}
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"]}