@easynet/agent-tool 1.0.39 → 1.0.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/main.cjs +14 -14
- package/dist/api/main.js +3 -3
- package/dist/{chunk-YZLDVSS4.js → chunk-3AEYVD7K.js} +4 -4
- package/dist/chunk-3AEYVD7K.js.map +1 -0
- package/dist/{chunk-23KQ6MPJ.cjs → chunk-4NNTCCJ6.cjs} +18 -9
- package/dist/chunk-4NNTCCJ6.cjs.map +1 -0
- package/dist/{chunk-JRT4FEQB.js → chunk-GWUMQRCN.js} +12 -3
- package/dist/chunk-GWUMQRCN.js.map +1 -0
- package/dist/{chunk-JGQVKMRY.cjs → chunk-J5VQMYUV.cjs} +5 -5
- package/dist/chunk-J5VQMYUV.cjs.map +1 -0
- package/dist/{chunk-OAZPWIHV.js → chunk-OSENBU42.js} +3 -3
- package/dist/{chunk-OAZPWIHV.js.map → chunk-OSENBU42.js.map} +1 -1
- package/dist/{chunk-TRJL2ZIH.js → chunk-QRI34I5Z.js} +3 -3
- package/dist/{chunk-TRJL2ZIH.js.map → chunk-QRI34I5Z.js.map} +1 -1
- package/dist/{chunk-5BYLYZ22.cjs → chunk-TSJRMNOB.cjs} +7 -7
- package/dist/{chunk-5BYLYZ22.cjs.map → chunk-TSJRMNOB.cjs.map} +1 -1
- package/dist/{chunk-HUUG5MZ7.cjs → chunk-ZPXO5IOW.cjs} +15 -15
- package/dist/{chunk-HUUG5MZ7.cjs.map → chunk-ZPXO5IOW.cjs.map} +1 -1
- package/dist/index.cjs +52 -52
- package/dist/index.js +5 -5
- package/dist/utils/cli/index.cjs +17 -17
- package/dist/utils/cli/index.js +3 -3
- package/package.json +1 -1
- package/dist/chunk-23KQ6MPJ.cjs.map +0 -1
- package/dist/chunk-JGQVKMRY.cjs.map +0 -1
- package/dist/chunk-JRT4FEQB.js.map +0 -1
- package/dist/chunk-YZLDVSS4.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkJ5VQMYUV_cjs = require('./chunk-J5VQMYUV.cjs');
|
|
4
4
|
var chunkUUNG3GL3_cjs = require('./chunk-UUNG3GL3.cjs');
|
|
5
5
|
var tools = require('@langchain/core/tools');
|
|
6
6
|
|
|
@@ -73,7 +73,7 @@ var LangChainToolsHub = class {
|
|
|
73
73
|
const intent = {
|
|
74
74
|
tool: spec.name,
|
|
75
75
|
args: hasArgsWrapper(enriched.inputSchema) ? { args: flat } : flat,
|
|
76
|
-
purpose:
|
|
76
|
+
purpose: chunkJ5VQMYUV_cjs.LANGCHAIN_KIND
|
|
77
77
|
};
|
|
78
78
|
const ctx = ctxFactory();
|
|
79
79
|
const result = await runtime.invoke(intent, ctx);
|
|
@@ -108,10 +108,10 @@ function mergeHostLists(a, b) {
|
|
|
108
108
|
function runtimeOptionsFromConfig(opts) {
|
|
109
109
|
const coreTools = opts.coreTools ?? { sandboxRoot: process.cwd(), allowedHosts: [], enableSandboxValidation: false };
|
|
110
110
|
if (opts.configFilePath) {
|
|
111
|
-
const toolConfig =
|
|
111
|
+
const toolConfig = chunkJ5VQMYUV_cjs.loadToolConfig(opts.configFilePath);
|
|
112
112
|
const updates = {};
|
|
113
113
|
if (toolConfig.sandboxedPath && typeof toolConfig.sandboxedPath === "string") {
|
|
114
|
-
updates.sandboxRoot =
|
|
114
|
+
updates.sandboxRoot = chunkJ5VQMYUV_cjs.resolveSandboxedPath2(opts.configFilePath, toolConfig.sandboxedPath);
|
|
115
115
|
}
|
|
116
116
|
if (typeof toolConfig.enableSandboxValidation === "boolean") {
|
|
117
117
|
updates.enableSandboxValidation = toolConfig.enableSandboxValidation;
|
|
@@ -134,7 +134,7 @@ function runtimeOptionsFromConfig(opts) {
|
|
|
134
134
|
const packageDefaults = { ...coreTools.packageDefaults };
|
|
135
135
|
if (toolConfig.packageToolDefaults != null && Object.keys(toolConfig.packageToolDefaults).length > 0) {
|
|
136
136
|
for (const [descriptor, pkgConfig] of Object.entries(toolConfig.packageToolDefaults)) {
|
|
137
|
-
const prefix = descriptor.startsWith("file:") ?
|
|
137
|
+
const prefix = descriptor.startsWith("file:") ? chunkJ5VQMYUV_cjs.fileDescriptorToPackagePrefix(descriptor) : chunkJ5VQMYUV_cjs.npmDescriptorToPackagePrefixWithVersion(descriptor);
|
|
138
138
|
if (!prefix) continue;
|
|
139
139
|
const pkgDefaults = pkgConfig?.defaults != null && typeof pkgConfig.defaults === "object" && !Array.isArray(pkgConfig.defaults) ? pkgConfig.defaults : {};
|
|
140
140
|
if (Object.keys(pkgDefaults).length > 0) {
|
|
@@ -164,18 +164,18 @@ function runtimeOptionsFromConfig(opts) {
|
|
|
164
164
|
function createAgentTools(options) {
|
|
165
165
|
const opts = typeof options === "string" ? { configFilePath: options } : options ?? {};
|
|
166
166
|
const runtimeOpts = runtimeOptionsFromConfig(opts);
|
|
167
|
-
const { runtime } =
|
|
167
|
+
const { runtime } = chunkJ5VQMYUV_cjs.createRuntimeFromConfigSync(runtimeOpts);
|
|
168
168
|
const hub = new LangChainToolsHub(runtime);
|
|
169
169
|
if (opts.configFilePath) {
|
|
170
|
-
const toolConfig =
|
|
170
|
+
const toolConfig = chunkJ5VQMYUV_cjs.loadToolConfig(opts.configFilePath);
|
|
171
171
|
const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];
|
|
172
172
|
if (names.length > 0) {
|
|
173
173
|
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
174
|
-
const allBarePackages = names.every((n) =>
|
|
174
|
+
const allBarePackages = names.every((n) => chunkJ5VQMYUV_cjs.isBarePackageDescriptor(String(n)));
|
|
175
175
|
if (allBarePackages) {
|
|
176
176
|
return hub.getLangChainTools();
|
|
177
177
|
}
|
|
178
|
-
const expanded =
|
|
178
|
+
const expanded = chunkJ5VQMYUV_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
179
179
|
return hub.getLangChainToolsForNames(expanded);
|
|
180
180
|
}
|
|
181
181
|
}
|
|
@@ -183,18 +183,18 @@ function createAgentTools(options) {
|
|
|
183
183
|
}
|
|
184
184
|
async function createLangChainToolsAsync(options = {}) {
|
|
185
185
|
const runtimeOpts = runtimeOptionsFromConfig(options);
|
|
186
|
-
const { runtime } = await
|
|
186
|
+
const { runtime } = await chunkJ5VQMYUV_cjs.createRuntimeFromConfig(runtimeOpts);
|
|
187
187
|
const hub = new LangChainToolsHub(runtime);
|
|
188
188
|
if (options.configFilePath) {
|
|
189
|
-
const toolConfig =
|
|
189
|
+
const toolConfig = chunkJ5VQMYUV_cjs.loadToolConfig(options.configFilePath);
|
|
190
190
|
const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];
|
|
191
191
|
if (names.length > 0) {
|
|
192
192
|
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
193
|
-
const allBarePackages = names.every((n) =>
|
|
193
|
+
const allBarePackages = names.every((n) => chunkJ5VQMYUV_cjs.isBarePackageDescriptor(String(n)));
|
|
194
194
|
if (allBarePackages) {
|
|
195
195
|
return hub.getLangChainTools();
|
|
196
196
|
}
|
|
197
|
-
const expanded =
|
|
197
|
+
const expanded = chunkJ5VQMYUV_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
198
198
|
return hub.getLangChainToolsForNames(expanded);
|
|
199
199
|
}
|
|
200
200
|
}
|
|
@@ -204,5 +204,5 @@ async function createLangChainToolsAsync(options = {}) {
|
|
|
204
204
|
exports.LangChainToolsHub = LangChainToolsHub;
|
|
205
205
|
exports.createAgentTools = createAgentTools;
|
|
206
206
|
exports.createLangChainToolsAsync = createLangChainToolsAsync;
|
|
207
|
-
//# sourceMappingURL=chunk-
|
|
208
|
-
//# sourceMappingURL=chunk-
|
|
207
|
+
//# sourceMappingURL=chunk-ZPXO5IOW.cjs.map
|
|
208
|
+
//# sourceMappingURL=chunk-ZPXO5IOW.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api/adapters/LangChainToolsHub.ts","../src/api/createAgentTools.ts"],"names":["enrichSpecWithCanonicalSchema","DynamicStructuredTool","LANGCHAIN_KIND","loadToolConfig","resolveSandboxedPath","fileDescriptorToPackagePrefix","npmDescriptorToPackagePrefixWithVersion","createRuntimeFromConfigSync","isBarePackageDescriptor","expandToolDescriptorsToRegistryNames","createRuntimeFromConfig"],"mappings":"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","file":"chunk-HUUG5MZ7.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 createAgentTools() which loads from tools.yaml and returns\n * StructuredTool[]. Use LangChainToolsHub when you need a custom runtime or ctxFactory.\n *\n * Use: new LangChainToolsHub(runtime, ctxFactory).getLangChainTools()\n */\n\nimport { DynamicStructuredTool, type StructuredToolInterface } from \"@langchain/core/tools\";\nimport type { PTCRuntime } from \"../../core/runtime/PTCRuntime.js\";\nimport type { ToolSpec } from \"../../core/types/ToolSpec.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 * True when inputSchema wraps all params in a single \"args\" object (manifest convention).\n */\nfunction hasArgsWrapper(inputSchema: object): boolean {\n const s = inputSchema as Record<string, unknown>;\n if (s?.type !== \"object\" || !s.properties || typeof s.properties !== \"object\") return false;\n const args = (s.properties as Record<string, unknown>).args;\n return (\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}\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 s = inputSchema as Record<string, unknown>;\n if (s?.type !== \"object\" || !s.properties || typeof s.properties !== \"object\") {\n return s;\n }\n const props = s.properties as Record<string, unknown>;\n const args = props.args;\n if (hasArgsWrapper(inputSchema)) {\n return args as Record<string, unknown>;\n }\n return s;\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 flat = args ?? {};\n const intent: ToolIntent = {\n tool: spec.name,\n args: hasArgsWrapper(enriched.inputSchema) ? { args: flat } : flat,\n purpose: LANGCHAIN_KIND,\n };\n const ctx = ctxFactory();\n const result = await runtime.invoke(intent, ctx);\n\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 });\n }\n}\n","/**\n * Create LangChain tools from config (sync or async). Uses PTCRuntime + registry\n * and exposes tools via LangChainToolsHub. All invokes go through PTC Intent.\n */\n\nimport { loadToolConfig, resolveSandboxedPath } from \"../tools/util/toolConfig.js\";\nimport {\n expandToolDescriptorsToRegistryNames,\n isBarePackageDescriptor,\n npmDescriptorToPackagePrefixWithVersion,\n fileDescriptorToPackagePrefix,\n} from \"../tools/util/toolDescriptor.js\";\nimport { createRuntimeFromConfigSync, createRuntimeFromConfig } from \"./runtimeFromConfig.js\";\nimport type { CreateRuntimeOptions } from \"./runtimeFromConfig.js\";\nimport { LangChainToolsHub } from \"./adapters/LangChainToolsHub.js\";\nimport type { StructuredToolInterface } from \"@langchain/core/tools\";\n\nexport interface CreateAgentToolsOptions extends CreateRuntimeOptions {\n /** Path to tool.yaml; when set, only tools listed there are returned; sandboxedPath from it is used as sandboxRoot */\n configFilePath?: string;\n /** Project path for async loading (use createLangChainToolsAsync) */\n projectPath?: 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 runtimeOptionsFromConfig(opts: CreateAgentToolsOptions): CreateRuntimeOptions {\n const coreTools = opts.coreTools ?? { sandboxRoot: process.cwd(), allowedHosts: [], enableSandboxValidation: false };\n if (opts.configFilePath) {\n const toolConfig = loadToolConfig(opts.configFilePath);\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(opts.configFilePath, 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) {\n return { ...opts, coreTools: { ...coreTools, ...updates } };\n }\n }\n return { ...opts, coreTools };\n}\n\n/**\n * Create LangChain tools synchronously. When configFilePath is set, returns only\n * tools listed in that file (and that exist in the registry). If tool.yaml has\n * sandboxedPath, fs tools can only access that directory.\n */\nexport function createAgentTools(\n options?: CreateAgentToolsOptions | string\n): StructuredToolInterface[] {\n const opts: CreateAgentToolsOptions =\n typeof options === \"string\" ? { configFilePath: options } : options ?? {};\n const runtimeOpts = runtimeOptionsFromConfig(opts);\n const { runtime } = createRuntimeFromConfigSync(runtimeOpts);\n const hub = new LangChainToolsHub(runtime);\n\n if (opts.configFilePath) {\n const toolConfig = loadToolConfig(opts.configFilePath);\n const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];\n if (names.length > 0) {\n const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);\n const allBarePackages = names.every((n) => isBarePackageDescriptor(String(n)));\n if (allBarePackages) {\n return hub.getLangChainTools();\n }\n const expanded = expandToolDescriptorsToRegistryNames(names, registryNames);\n return hub.getLangChainToolsForNames(expanded);\n }\n }\n\n return hub.getLangChainTools();\n}\n\n/**\n * Create LangChain tools asynchronously. Use when projectPath is set to load\n * tools from the project before building the tool list.\n */\nexport async function createLangChainToolsAsync(\n options: CreateAgentToolsOptions = {}\n): Promise<StructuredToolInterface[]> {\n const runtimeOpts = runtimeOptionsFromConfig(options);\n const { runtime } = await createRuntimeFromConfig(runtimeOpts);\n const hub = new LangChainToolsHub(runtime);\n\n if (options.configFilePath) {\n const toolConfig = loadToolConfig(options.configFilePath);\n const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];\n if (names.length > 0) {\n const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);\n const allBarePackages = names.every((n) => isBarePackageDescriptor(String(n)));\n if (allBarePackages) {\n return hub.getLangChainTools();\n }\n const expanded = expandToolDescriptorsToRegistryNames(names, registryNames);\n return hub.getLangChainToolsForNames(expanded);\n }\n }\n\n return hub.getLangChainTools();\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/api/adapters/LangChainToolsHub.ts","../src/api/createAgentTools.ts"],"names":["enrichSpecWithCanonicalSchema","DynamicStructuredTool","LANGCHAIN_KIND","loadToolConfig","resolveSandboxedPath","fileDescriptorToPackagePrefix","npmDescriptorToPackagePrefixWithVersion","createRuntimeFromConfigSync","isBarePackageDescriptor","expandToolDescriptorsToRegistryNames","createRuntimeFromConfig"],"mappings":"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","file":"chunk-ZPXO5IOW.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 createAgentTools() which loads from tools.yaml and returns\n * StructuredTool[]. Use LangChainToolsHub when you need a custom runtime or ctxFactory.\n *\n * Use: new LangChainToolsHub(runtime, ctxFactory).getLangChainTools()\n */\n\nimport { DynamicStructuredTool, type StructuredToolInterface } from \"@langchain/core/tools\";\nimport type { PTCRuntime } from \"../../core/runtime/PTCRuntime.js\";\nimport type { ToolSpec } from \"../../core/types/ToolSpec.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 * True when inputSchema wraps all params in a single \"args\" object (manifest convention).\n */\nfunction hasArgsWrapper(inputSchema: object): boolean {\n const s = inputSchema as Record<string, unknown>;\n if (s?.type !== \"object\" || !s.properties || typeof s.properties !== \"object\") return false;\n const args = (s.properties as Record<string, unknown>).args;\n return (\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}\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 s = inputSchema as Record<string, unknown>;\n if (s?.type !== \"object\" || !s.properties || typeof s.properties !== \"object\") {\n return s;\n }\n const props = s.properties as Record<string, unknown>;\n const args = props.args;\n if (hasArgsWrapper(inputSchema)) {\n return args as Record<string, unknown>;\n }\n return s;\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 flat = args ?? {};\n const intent: ToolIntent = {\n tool: spec.name,\n args: hasArgsWrapper(enriched.inputSchema) ? { args: flat } : flat,\n purpose: LANGCHAIN_KIND,\n };\n const ctx = ctxFactory();\n const result = await runtime.invoke(intent, ctx);\n\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 });\n }\n}\n","/**\n * Create LangChain tools from config (sync or async). Uses PTCRuntime + registry\n * and exposes tools via LangChainToolsHub. All invokes go through PTC Intent.\n */\n\nimport { loadToolConfig, resolveSandboxedPath } from \"../tools/util/toolConfig.js\";\nimport {\n expandToolDescriptorsToRegistryNames,\n isBarePackageDescriptor,\n npmDescriptorToPackagePrefixWithVersion,\n fileDescriptorToPackagePrefix,\n} from \"../tools/util/toolDescriptor.js\";\nimport { createRuntimeFromConfigSync, createRuntimeFromConfig } from \"./runtimeFromConfig.js\";\nimport type { CreateRuntimeOptions } from \"./runtimeFromConfig.js\";\nimport { LangChainToolsHub } from \"./adapters/LangChainToolsHub.js\";\nimport type { StructuredToolInterface } from \"@langchain/core/tools\";\n\nexport interface CreateAgentToolsOptions extends CreateRuntimeOptions {\n /** Path to tool.yaml; when set, only tools listed there are returned; sandboxedPath from it is used as sandboxRoot */\n configFilePath?: string;\n /** Project path for async loading (use createLangChainToolsAsync) */\n projectPath?: 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 runtimeOptionsFromConfig(opts: CreateAgentToolsOptions): CreateRuntimeOptions {\n const coreTools = opts.coreTools ?? { sandboxRoot: process.cwd(), allowedHosts: [], enableSandboxValidation: false };\n if (opts.configFilePath) {\n const toolConfig = loadToolConfig(opts.configFilePath);\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(opts.configFilePath, 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) {\n return { ...opts, coreTools: { ...coreTools, ...updates } };\n }\n }\n return { ...opts, coreTools };\n}\n\n/**\n * Create LangChain tools synchronously. When configFilePath is set, returns only\n * tools listed in that file (and that exist in the registry). If tool.yaml has\n * sandboxedPath, fs tools can only access that directory.\n */\nexport function createAgentTools(\n options?: CreateAgentToolsOptions | string\n): StructuredToolInterface[] {\n const opts: CreateAgentToolsOptions =\n typeof options === \"string\" ? { configFilePath: options } : options ?? {};\n const runtimeOpts = runtimeOptionsFromConfig(opts);\n const { runtime } = createRuntimeFromConfigSync(runtimeOpts);\n const hub = new LangChainToolsHub(runtime);\n\n if (opts.configFilePath) {\n const toolConfig = loadToolConfig(opts.configFilePath);\n const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];\n if (names.length > 0) {\n const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);\n const allBarePackages = names.every((n) => isBarePackageDescriptor(String(n)));\n if (allBarePackages) {\n return hub.getLangChainTools();\n }\n const expanded = expandToolDescriptorsToRegistryNames(names, registryNames);\n return hub.getLangChainToolsForNames(expanded);\n }\n }\n\n return hub.getLangChainTools();\n}\n\n/**\n * Create LangChain tools asynchronously. Use when projectPath is set to load\n * tools from the project before building the tool list.\n */\nexport async function createLangChainToolsAsync(\n options: CreateAgentToolsOptions = {}\n): Promise<StructuredToolInterface[]> {\n const runtimeOpts = runtimeOptionsFromConfig(options);\n const { runtime } = await createRuntimeFromConfig(runtimeOpts);\n const hub = new LangChainToolsHub(runtime);\n\n if (options.configFilePath) {\n const toolConfig = loadToolConfig(options.configFilePath);\n const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];\n if (names.length > 0) {\n const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);\n const allBarePackages = names.every((n) => isBarePackageDescriptor(String(n)));\n if (allBarePackages) {\n return hub.getLangChainTools();\n }\n const expanded = expandToolDescriptorsToRegistryNames(names, registryNames);\n return hub.getLangChainToolsForNames(expanded);\n }\n }\n\n return hub.getLangChainTools();\n}\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkZPXO5IOW_cjs = require('./chunk-ZPXO5IOW.cjs');
|
|
4
|
+
var chunk4NNTCCJ6_cjs = require('./chunk-4NNTCCJ6.cjs');
|
|
5
|
+
var chunkJ5VQMYUV_cjs = require('./chunk-J5VQMYUV.cjs');
|
|
6
6
|
var chunkTOSPHMYU_cjs = require('./chunk-TOSPHMYU.cjs');
|
|
7
7
|
var chunkDYDNPIV2_cjs = require('./chunk-DYDNPIV2.cjs');
|
|
8
8
|
require('./chunk-UUNG3GL3.cjs');
|
|
@@ -443,7 +443,7 @@ function generateExtensionManifest(projectRoot = process.cwd(), options = {}) {
|
|
|
443
443
|
const root = path6__default.default.resolve(projectRoot);
|
|
444
444
|
const outDir = path6__default.default.resolve(options.outDir ?? path6__default.default.join(root, "dist"));
|
|
445
445
|
const kind = options.kind ?? "core";
|
|
446
|
-
const { specs, errors } =
|
|
446
|
+
const { specs, errors } = chunk4NNTCCJ6_cjs.scanForTools({
|
|
447
447
|
projectPath: root,
|
|
448
448
|
include: options.include ?? ["**/*.ts"],
|
|
449
449
|
tsconfigPath: options.tsconfigPath
|
|
@@ -533,7 +533,7 @@ var MCPClientAdapter = class {
|
|
|
533
533
|
constructor(client) {
|
|
534
534
|
this.client = client;
|
|
535
535
|
}
|
|
536
|
-
kind =
|
|
536
|
+
kind = chunkJ5VQMYUV_cjs.MCP_KIND;
|
|
537
537
|
async invoke(spec, args, _ctx) {
|
|
538
538
|
const params = args != null && typeof args === "object" && !Array.isArray(args) ? args : {};
|
|
539
539
|
const result = await this.client.callTool({ name: spec.name, arguments: params });
|
|
@@ -574,7 +574,7 @@ function mcpToolsToSpecs(tools) {
|
|
|
574
574
|
return tools.map((t) => ({
|
|
575
575
|
name: t.name,
|
|
576
576
|
version: "1.0.0",
|
|
577
|
-
kind:
|
|
577
|
+
kind: chunkJ5VQMYUV_cjs.MCP_KIND,
|
|
578
578
|
description: t.description ?? `MCP tool: ${t.name}`,
|
|
579
579
|
inputSchema: t.inputSchema ?? chunkDYDNPIV2_cjs.DEFAULT_INPUT_SCHEMA,
|
|
580
580
|
outputSchema: chunkDYDNPIV2_cjs.DEFAULT_OUTPUT_SCHEMA,
|
|
@@ -614,8 +614,8 @@ async function registerMCPToolsFromConfig(runtime, registry, options = {}) {
|
|
|
614
614
|
const configPath = options.configPath ?? process.env.MCP_CONFIG_PATH ?? path6.join(process.cwd(), "mcp.json");
|
|
615
615
|
const dirPath = path6.dirname(configPath);
|
|
616
616
|
const entryPoint = path6.basename(configPath);
|
|
617
|
-
const toolName = options.toolName ??
|
|
618
|
-
const loaded = await
|
|
617
|
+
const toolName = options.toolName ?? chunkJ5VQMYUV_cjs.MCP_KIND;
|
|
618
|
+
const loaded = await chunk4NNTCCJ6_cjs.loadMCPTool(dirPath, { kind: chunkJ5VQMYUV_cjs.MCP_KIND, name: toolName, entryPoint });
|
|
619
619
|
if (!loaded.mcpConfig) {
|
|
620
620
|
throw new Error("mcp.json must have command or url");
|
|
621
621
|
}
|
|
@@ -631,179 +631,179 @@ async function registerMCPToolsFromConfig(runtime, registry, options = {}) {
|
|
|
631
631
|
|
|
632
632
|
Object.defineProperty(exports, "LangChainToolsHub", {
|
|
633
633
|
enumerable: true,
|
|
634
|
-
get: function () { return
|
|
634
|
+
get: function () { return chunkZPXO5IOW_cjs.LangChainToolsHub; }
|
|
635
635
|
});
|
|
636
636
|
Object.defineProperty(exports, "createAgentTools", {
|
|
637
637
|
enumerable: true,
|
|
638
|
-
get: function () { return
|
|
638
|
+
get: function () { return chunkZPXO5IOW_cjs.createAgentTools; }
|
|
639
639
|
});
|
|
640
640
|
Object.defineProperty(exports, "DirectoryScanner", {
|
|
641
641
|
enumerable: true,
|
|
642
|
-
get: function () { return
|
|
642
|
+
get: function () { return chunk4NNTCCJ6_cjs.DirectoryScanner; }
|
|
643
643
|
});
|
|
644
644
|
Object.defineProperty(exports, "DiscoveryError", {
|
|
645
645
|
enumerable: true,
|
|
646
|
-
get: function () { return
|
|
646
|
+
get: function () { return chunk4NNTCCJ6_cjs.DiscoveryError; }
|
|
647
647
|
});
|
|
648
648
|
Object.defineProperty(exports, "SkillManifestError", {
|
|
649
649
|
enumerable: true,
|
|
650
|
-
get: function () { return
|
|
650
|
+
get: function () { return chunk4NNTCCJ6_cjs.SkillManifestError; }
|
|
651
651
|
});
|
|
652
652
|
Object.defineProperty(exports, "buildFunctionToTool", {
|
|
653
653
|
enumerable: true,
|
|
654
|
-
get: function () { return
|
|
654
|
+
get: function () { return chunk4NNTCCJ6_cjs.buildFunctionToTool; }
|
|
655
655
|
});
|
|
656
656
|
Object.defineProperty(exports, "buildMcpPackage", {
|
|
657
657
|
enumerable: true,
|
|
658
|
-
get: function () { return
|
|
658
|
+
get: function () { return chunk4NNTCCJ6_cjs.buildMcpPackage; }
|
|
659
659
|
});
|
|
660
660
|
Object.defineProperty(exports, "initProject", {
|
|
661
661
|
enumerable: true,
|
|
662
|
-
get: function () { return
|
|
662
|
+
get: function () { return chunk4NNTCCJ6_cjs.initProject; }
|
|
663
663
|
});
|
|
664
664
|
Object.defineProperty(exports, "loadMCPTool", {
|
|
665
665
|
enumerable: true,
|
|
666
|
-
get: function () { return
|
|
666
|
+
get: function () { return chunk4NNTCCJ6_cjs.loadMCPTool; }
|
|
667
667
|
});
|
|
668
668
|
Object.defineProperty(exports, "loadSkillDefinition", {
|
|
669
669
|
enumerable: true,
|
|
670
|
-
get: function () { return
|
|
670
|
+
get: function () { return chunk4NNTCCJ6_cjs.loadSkillDefinition; }
|
|
671
671
|
});
|
|
672
672
|
Object.defineProperty(exports, "parseSkillMd", {
|
|
673
673
|
enumerable: true,
|
|
674
|
-
get: function () { return
|
|
674
|
+
get: function () { return chunk4NNTCCJ6_cjs.parseSkillMd; }
|
|
675
675
|
});
|
|
676
676
|
Object.defineProperty(exports, "runGeneratedMCP", {
|
|
677
677
|
enumerable: true,
|
|
678
|
-
get: function () { return
|
|
678
|
+
get: function () { return chunk4NNTCCJ6_cjs.runGeneratedMCP; }
|
|
679
679
|
});
|
|
680
680
|
Object.defineProperty(exports, "runMcpServer", {
|
|
681
681
|
enumerable: true,
|
|
682
|
-
get: function () { return
|
|
682
|
+
get: function () { return chunk4NNTCCJ6_cjs.runMcpServer; }
|
|
683
683
|
});
|
|
684
684
|
Object.defineProperty(exports, "scan", {
|
|
685
685
|
enumerable: true,
|
|
686
|
-
get: function () { return
|
|
686
|
+
get: function () { return chunk4NNTCCJ6_cjs.scan; }
|
|
687
687
|
});
|
|
688
688
|
Object.defineProperty(exports, "scanForTools", {
|
|
689
689
|
enumerable: true,
|
|
690
|
-
get: function () { return
|
|
690
|
+
get: function () { return chunk4NNTCCJ6_cjs.scanForTools; }
|
|
691
691
|
});
|
|
692
692
|
Object.defineProperty(exports, "scanSkillResources", {
|
|
693
693
|
enumerable: true,
|
|
694
|
-
get: function () { return
|
|
694
|
+
get: function () { return chunk4NNTCCJ6_cjs.scanSkillResources; }
|
|
695
695
|
});
|
|
696
696
|
Object.defineProperty(exports, "validateFrontmatter", {
|
|
697
697
|
enumerable: true,
|
|
698
|
-
get: function () { return
|
|
698
|
+
get: function () { return chunk4NNTCCJ6_cjs.validateFrontmatter; }
|
|
699
699
|
});
|
|
700
700
|
Object.defineProperty(exports, "BudgetManager", {
|
|
701
701
|
enumerable: true,
|
|
702
|
-
get: function () { return
|
|
702
|
+
get: function () { return chunkJ5VQMYUV_cjs.BudgetManager; }
|
|
703
703
|
});
|
|
704
704
|
Object.defineProperty(exports, "EventLog", {
|
|
705
705
|
enumerable: true,
|
|
706
|
-
get: function () { return
|
|
706
|
+
get: function () { return chunkJ5VQMYUV_cjs.EventLog; }
|
|
707
707
|
});
|
|
708
708
|
Object.defineProperty(exports, "Metrics", {
|
|
709
709
|
enumerable: true,
|
|
710
|
-
get: function () { return
|
|
710
|
+
get: function () { return chunkJ5VQMYUV_cjs.Metrics; }
|
|
711
711
|
});
|
|
712
712
|
Object.defineProperty(exports, "PTCRuntime", {
|
|
713
713
|
enumerable: true,
|
|
714
|
-
get: function () { return
|
|
714
|
+
get: function () { return chunkJ5VQMYUV_cjs.PTCRuntime; }
|
|
715
715
|
});
|
|
716
716
|
Object.defineProperty(exports, "PolicyDeniedError", {
|
|
717
717
|
enumerable: true,
|
|
718
|
-
get: function () { return
|
|
718
|
+
get: function () { return chunkJ5VQMYUV_cjs.PolicyDeniedError; }
|
|
719
719
|
});
|
|
720
720
|
Object.defineProperty(exports, "PolicyEngine", {
|
|
721
721
|
enumerable: true,
|
|
722
|
-
get: function () { return
|
|
722
|
+
get: function () { return chunkJ5VQMYUV_cjs.PolicyEngine; }
|
|
723
723
|
});
|
|
724
724
|
Object.defineProperty(exports, "SchemaValidationError", {
|
|
725
725
|
enumerable: true,
|
|
726
|
-
get: function () { return
|
|
726
|
+
get: function () { return chunkJ5VQMYUV_cjs.SchemaValidationError; }
|
|
727
727
|
});
|
|
728
728
|
Object.defineProperty(exports, "SchemaValidator", {
|
|
729
729
|
enumerable: true,
|
|
730
|
-
get: function () { return
|
|
730
|
+
get: function () { return chunkJ5VQMYUV_cjs.SchemaValidator; }
|
|
731
731
|
});
|
|
732
732
|
Object.defineProperty(exports, "Tracing", {
|
|
733
733
|
enumerable: true,
|
|
734
|
-
get: function () { return
|
|
734
|
+
get: function () { return chunkJ5VQMYUV_cjs.Tracing; }
|
|
735
735
|
});
|
|
736
736
|
Object.defineProperty(exports, "buildEvidence", {
|
|
737
737
|
enumerable: true,
|
|
738
|
-
get: function () { return
|
|
738
|
+
get: function () { return chunkJ5VQMYUV_cjs.buildEvidence; }
|
|
739
739
|
});
|
|
740
740
|
Object.defineProperty(exports, "createLogger", {
|
|
741
741
|
enumerable: true,
|
|
742
|
-
get: function () { return
|
|
742
|
+
get: function () { return chunkJ5VQMYUV_cjs.createLogger; }
|
|
743
743
|
});
|
|
744
744
|
Object.defineProperty(exports, "ensurePackageInCache", {
|
|
745
745
|
enumerable: true,
|
|
746
|
-
get: function () { return
|
|
746
|
+
get: function () { return chunkJ5VQMYUV_cjs.ensurePackageInCache; }
|
|
747
747
|
});
|
|
748
748
|
Object.defineProperty(exports, "expandToolDescriptorsToRegistryNames", {
|
|
749
749
|
enumerable: true,
|
|
750
|
-
get: function () { return
|
|
750
|
+
get: function () { return chunkJ5VQMYUV_cjs.expandToolDescriptorsToRegistryNames; }
|
|
751
751
|
});
|
|
752
752
|
Object.defineProperty(exports, "getPackageEntryPath", {
|
|
753
753
|
enumerable: true,
|
|
754
|
-
get: function () { return
|
|
754
|
+
get: function () { return chunkJ5VQMYUV_cjs.getPackageEntryPath; }
|
|
755
755
|
});
|
|
756
756
|
Object.defineProperty(exports, "importFromCache", {
|
|
757
757
|
enumerable: true,
|
|
758
|
-
get: function () { return
|
|
758
|
+
get: function () { return chunkJ5VQMYUV_cjs.importFromCache; }
|
|
759
759
|
});
|
|
760
760
|
Object.defineProperty(exports, "isNpmToolDescriptor", {
|
|
761
761
|
enumerable: true,
|
|
762
|
-
get: function () { return
|
|
762
|
+
get: function () { return chunkJ5VQMYUV_cjs.isNpmToolDescriptor; }
|
|
763
763
|
});
|
|
764
764
|
Object.defineProperty(exports, "loadToolConfig", {
|
|
765
765
|
enumerable: true,
|
|
766
|
-
get: function () { return
|
|
766
|
+
get: function () { return chunkJ5VQMYUV_cjs.loadToolConfig; }
|
|
767
767
|
});
|
|
768
768
|
Object.defineProperty(exports, "normalizeToolList", {
|
|
769
769
|
enumerable: true,
|
|
770
|
-
get: function () { return
|
|
770
|
+
get: function () { return chunkJ5VQMYUV_cjs.normalizeToolList; }
|
|
771
771
|
});
|
|
772
772
|
Object.defineProperty(exports, "npmDescriptorToRegistryPrefix", {
|
|
773
773
|
enumerable: true,
|
|
774
|
-
get: function () { return
|
|
774
|
+
get: function () { return chunkJ5VQMYUV_cjs.npmDescriptorToRegistryPrefix; }
|
|
775
775
|
});
|
|
776
776
|
Object.defineProperty(exports, "parseNpmToolDescriptor", {
|
|
777
777
|
enumerable: true,
|
|
778
|
-
get: function () { return
|
|
778
|
+
get: function () { return chunkJ5VQMYUV_cjs.parseNpmToolDescriptor; }
|
|
779
779
|
});
|
|
780
780
|
Object.defineProperty(exports, "resolveLatestVersionFromRegistry", {
|
|
781
781
|
enumerable: true,
|
|
782
|
-
get: function () { return
|
|
782
|
+
get: function () { return chunkJ5VQMYUV_cjs.resolveLatestVersionFromRegistry; }
|
|
783
783
|
});
|
|
784
784
|
Object.defineProperty(exports, "resolveNpmToolDescriptor", {
|
|
785
785
|
enumerable: true,
|
|
786
|
-
get: function () { return
|
|
786
|
+
get: function () { return chunkJ5VQMYUV_cjs.resolveNpmToolDescriptor; }
|
|
787
787
|
});
|
|
788
788
|
Object.defineProperty(exports, "resolveSandboxedPath", {
|
|
789
789
|
enumerable: true,
|
|
790
|
-
get: function () { return
|
|
790
|
+
get: function () { return chunkJ5VQMYUV_cjs.resolveSandboxedPath; }
|
|
791
791
|
});
|
|
792
792
|
Object.defineProperty(exports, "resolveToolDescriptor", {
|
|
793
793
|
enumerable: true,
|
|
794
|
-
get: function () { return
|
|
794
|
+
get: function () { return chunkJ5VQMYUV_cjs.resolveToolDescriptor; }
|
|
795
795
|
});
|
|
796
796
|
Object.defineProperty(exports, "sanitizeForLog", {
|
|
797
797
|
enumerable: true,
|
|
798
|
-
get: function () { return
|
|
798
|
+
get: function () { return chunkJ5VQMYUV_cjs.sanitizeForLog; }
|
|
799
799
|
});
|
|
800
800
|
Object.defineProperty(exports, "setSandboxValidationEnabled", {
|
|
801
801
|
enumerable: true,
|
|
802
|
-
get: function () { return
|
|
802
|
+
get: function () { return chunkJ5VQMYUV_cjs.setSandboxValidationEnabled; }
|
|
803
803
|
});
|
|
804
804
|
Object.defineProperty(exports, "summarizeForLog", {
|
|
805
805
|
enumerable: true,
|
|
806
|
-
get: function () { return
|
|
806
|
+
get: function () { return chunkJ5VQMYUV_cjs.summarizeForLog; }
|
|
807
807
|
});
|
|
808
808
|
Object.defineProperty(exports, "ToolRegistry", {
|
|
809
809
|
enumerable: true,
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { LangChainToolsHub, createAgentTools } from './chunk-
|
|
2
|
-
import { scanForTools, loadMCPTool } from './chunk-
|
|
3
|
-
export { DirectoryScanner, DiscoveryError, SkillManifestError, buildFunctionToTool, buildMcpPackage, initProject, loadMCPTool, loadSkillDefinition, parseSkillMd, runGeneratedMCP, runMcpServer, scan, scanForTools, scanSkillResources, validateFrontmatter } from './chunk-
|
|
4
|
-
import { MCP_KIND } from './chunk-
|
|
5
|
-
export { BudgetManager, EventLog, Metrics, PTCRuntime, PolicyDeniedError, PolicyEngine, SchemaValidationError, SchemaValidator, Tracing, buildEvidence, createLogger, ensurePackageInCache, expandToolDescriptorsToRegistryNames, getPackageEntryPath, importFromCache, isNpmToolDescriptor, loadToolConfig, normalizeToolList, npmDescriptorToRegistryPrefix, parseNpmToolDescriptor, resolveLatestVersionFromRegistry, resolveNpmToolDescriptor, resolveSandboxedPath, resolveToolDescriptor, sanitizeForLog, setSandboxValidationEnabled, summarizeForLog } from './chunk-
|
|
1
|
+
export { LangChainToolsHub, createAgentTools } from './chunk-QRI34I5Z.js';
|
|
2
|
+
import { scanForTools, loadMCPTool } from './chunk-GWUMQRCN.js';
|
|
3
|
+
export { DirectoryScanner, DiscoveryError, SkillManifestError, buildFunctionToTool, buildMcpPackage, initProject, loadMCPTool, loadSkillDefinition, parseSkillMd, runGeneratedMCP, runMcpServer, scan, scanForTools, scanSkillResources, validateFrontmatter } from './chunk-GWUMQRCN.js';
|
|
4
|
+
import { MCP_KIND } from './chunk-3AEYVD7K.js';
|
|
5
|
+
export { BudgetManager, EventLog, Metrics, PTCRuntime, PolicyDeniedError, PolicyEngine, SchemaValidationError, SchemaValidator, Tracing, buildEvidence, createLogger, ensurePackageInCache, expandToolDescriptorsToRegistryNames, getPackageEntryPath, importFromCache, isNpmToolDescriptor, loadToolConfig, normalizeToolList, npmDescriptorToRegistryPrefix, parseNpmToolDescriptor, resolveLatestVersionFromRegistry, resolveNpmToolDescriptor, resolveSandboxedPath, resolveToolDescriptor, sanitizeForLog, setSandboxValidationEnabled, summarizeForLog } from './chunk-3AEYVD7K.js';
|
|
6
6
|
import { createTaggedError } from './chunk-ZRHPGW7W.js';
|
|
7
7
|
export { ToolRegistry, createTaggedError, isRetryable, withRetry } from './chunk-ZRHPGW7W.js';
|
|
8
8
|
import { createToolSpec, DEFAULT_OUTPUT_SCHEMA, DEFAULT_INPUT_SCHEMA } from './chunk-KDB3MY2H.js';
|
package/dist/utils/cli/index.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
4
|
+
var chunk4NNTCCJ6_cjs = require('../../chunk-4NNTCCJ6.cjs');
|
|
5
|
+
var chunkTSJRMNOB_cjs = require('../../chunk-TSJRMNOB.cjs');
|
|
6
|
+
var chunkJ5VQMYUV_cjs = require('../../chunk-J5VQMYUV.cjs');
|
|
7
7
|
require('../../chunk-TOSPHMYU.cjs');
|
|
8
8
|
require('../../chunk-DYDNPIV2.cjs');
|
|
9
9
|
var chunkUUNG3GL3_cjs = require('../../chunk-UUNG3GL3.cjs');
|
|
@@ -204,10 +204,10 @@ async function getRuntimeWithTools(pathOpt, verbose = false) {
|
|
|
204
204
|
const stepLog = verbose ? (msg) => process.stderr.write(`[agent-tool] ${msg}
|
|
205
205
|
`) : void 0;
|
|
206
206
|
if (stepLog) stepLog(`Loading tool config from ${searchDir}`);
|
|
207
|
-
const config =
|
|
207
|
+
const config = chunkJ5VQMYUV_cjs.findAndLoadToolConfig(searchDir);
|
|
208
208
|
let sandboxRoot = cwd;
|
|
209
209
|
if (config.sandboxedPath && typeof config.sandboxedPath === "string" && config.configPath) {
|
|
210
|
-
sandboxRoot =
|
|
210
|
+
sandboxRoot = chunkJ5VQMYUV_cjs.resolveSandboxedPath2(config.configPath, config.sandboxedPath);
|
|
211
211
|
}
|
|
212
212
|
if (stepLog) {
|
|
213
213
|
if (config.configPath) {
|
|
@@ -222,7 +222,7 @@ async function getRuntimeWithTools(pathOpt, verbose = false) {
|
|
|
222
222
|
enableSandboxValidation: config.enableSandboxValidation ?? DEFAULT_CORE_CONFIG.enableSandboxValidation,
|
|
223
223
|
allowedHosts: []
|
|
224
224
|
};
|
|
225
|
-
const result = await
|
|
225
|
+
const result = await chunkJ5VQMYUV_cjs.createRuntimeFromConfig({
|
|
226
226
|
coreTools: coreConfig,
|
|
227
227
|
configFilePath: config.configPath,
|
|
228
228
|
stepLog
|
|
@@ -378,7 +378,7 @@ Next: cd ${path2__namespace.default.basename(targetPath)} && npm install && npm
|
|
|
378
378
|
}
|
|
379
379
|
async function cmdInit(pathOpt) {
|
|
380
380
|
try {
|
|
381
|
-
const { targetPath, filesCreated } = await
|
|
381
|
+
const { targetPath, filesCreated } = await chunk4NNTCCJ6_cjs.initProject({ targetPath: pathOpt || void 0 });
|
|
382
382
|
process.stdout.write(`Initialized project at ${targetPath}
|
|
383
383
|
Created: ${filesCreated.join(", ")}
|
|
384
384
|
Next: npm install && npm run build
|
|
@@ -392,7 +392,7 @@ Next: npm install && npm run build
|
|
|
392
392
|
}
|
|
393
393
|
async function cmdBuild(pathOpt, outDir, include, includeN8n) {
|
|
394
394
|
try {
|
|
395
|
-
const result = await
|
|
395
|
+
const result = await chunk4NNTCCJ6_cjs.buildMcpPackage({
|
|
396
396
|
projectPath: pathOpt || void 0,
|
|
397
397
|
outDir: outDir || void 0,
|
|
398
398
|
include: include.length > 0 ? include : void 0,
|
|
@@ -413,7 +413,7 @@ mcp.json: ${result.mcpJsonPath}
|
|
|
413
413
|
}
|
|
414
414
|
async function cmdServe(pathOpt) {
|
|
415
415
|
try {
|
|
416
|
-
const { process: child } = await
|
|
416
|
+
const { process: child } = await chunk4NNTCCJ6_cjs.runMcpServer({ path: pathOpt || void 0 });
|
|
417
417
|
child.stdin?.pipe(process.stdin);
|
|
418
418
|
child.stdout?.pipe(process.stdout);
|
|
419
419
|
process.stdin?.unref();
|
|
@@ -431,7 +431,7 @@ var LS_DESC_MAX = 72;
|
|
|
431
431
|
function formatLsOutput(specs) {
|
|
432
432
|
const rows = specs.map((spec) => {
|
|
433
433
|
const { name } = parseToolName(spec.name);
|
|
434
|
-
const scope =
|
|
434
|
+
const scope = chunkJ5VQMYUV_cjs.getDisplayScope(spec.name, spec.kind, spec.version);
|
|
435
435
|
const desc = (spec.description ?? "").replace(/\n/g, " ").trim().slice(0, LS_DESC_MAX);
|
|
436
436
|
return { scope, name, description: desc || "(no description)" };
|
|
437
437
|
});
|
|
@@ -458,7 +458,7 @@ function formatLsOutput(specs) {
|
|
|
458
458
|
}
|
|
459
459
|
function formatDescribeOutput(spec) {
|
|
460
460
|
const { name: localName } = parseToolName(spec.name);
|
|
461
|
-
const scope =
|
|
461
|
+
const scope = chunkJ5VQMYUV_cjs.getDisplayScope(spec.name, spec.kind, spec.version);
|
|
462
462
|
const sections = [];
|
|
463
463
|
sections.push("\u250C\u2500 Tool");
|
|
464
464
|
sections.push(`\u2502 name: ${spec.name}`);
|
|
@@ -494,7 +494,7 @@ async function cmdLs(pathOpt, verbose = false) {
|
|
|
494
494
|
process.stdout.write("No tools registered.\n");
|
|
495
495
|
const cwd = process.cwd();
|
|
496
496
|
const searchDir = path2__namespace.default.resolve(cwd, pathOpt ?? ".");
|
|
497
|
-
const config =
|
|
497
|
+
const config = chunkJ5VQMYUV_cjs.findAndLoadToolConfig(searchDir);
|
|
498
498
|
const hasNpmTools = Array.isArray(config.tools) && config.tools.some((t) => typeof t === "string" && t.startsWith("npm:"));
|
|
499
499
|
if (hasNpmTools) {
|
|
500
500
|
process.stdout.write(
|
|
@@ -519,7 +519,7 @@ async function cmdDescribe(toolName, pathOpt, verbose = false) {
|
|
|
519
519
|
}
|
|
520
520
|
try {
|
|
521
521
|
const { registry } = await getRuntimeWithTools(pathOpt, verbose);
|
|
522
|
-
const registryName =
|
|
522
|
+
const registryName = chunkJ5VQMYUV_cjs.resolveToolDescriptor(toolName.trim());
|
|
523
523
|
const spec = registry.get(registryName);
|
|
524
524
|
if (!spec) {
|
|
525
525
|
process.stderr.write(`Tool not found: ${toolName}
|
|
@@ -568,7 +568,7 @@ async function cmdRun(toolName, toolArgsJson, pathOpt, verbose = false) {
|
|
|
568
568
|
}
|
|
569
569
|
try {
|
|
570
570
|
const { runtime, registry } = await getRuntimeWithTools(pathOpt, verbose);
|
|
571
|
-
const registryName =
|
|
571
|
+
const registryName = chunkJ5VQMYUV_cjs.resolveToolDescriptor(toolName.trim());
|
|
572
572
|
if (!registry.get(registryName)) {
|
|
573
573
|
process.stderr.write(`Tool not found: ${toolName}
|
|
574
574
|
`);
|
|
@@ -596,10 +596,10 @@ async function cmdStartMcp(pathOpt, verbose = false, stdio = false, port = 3e3,
|
|
|
596
596
|
try {
|
|
597
597
|
const { runtime } = await getRuntimeWithTools(pathOpt, verbose);
|
|
598
598
|
if (stdio) {
|
|
599
|
-
await
|
|
599
|
+
await chunkTSJRMNOB_cjs.runMCPServerOverStdio(runtime);
|
|
600
600
|
return 0;
|
|
601
601
|
}
|
|
602
|
-
const streamable = await
|
|
602
|
+
const streamable = await chunkTSJRMNOB_cjs.createMCPServerStreamableHttp(runtime, { port, host, path: "/mcp" });
|
|
603
603
|
const { url, port: actualPort } = await streamable.listen(port, host);
|
|
604
604
|
process.stdout.write(`MCP Streamable HTTP: ${url}
|
|
605
605
|
`);
|
|
@@ -615,7 +615,7 @@ async function cmdStartMcp(pathOpt, verbose = false, stdio = false, port = 3e3,
|
|
|
615
615
|
async function cmdStartHttp(port, host, pathOpt, verbose = false) {
|
|
616
616
|
try {
|
|
617
617
|
const { runtime } = await getRuntimeWithTools(pathOpt, verbose);
|
|
618
|
-
const http = await
|
|
618
|
+
const http = await chunkTSJRMNOB_cjs.createHttpService(runtime);
|
|
619
619
|
const { port: actualPort, host: actualHost } = await http.listen({ port, host });
|
|
620
620
|
const base = `http://${actualHost}:${actualPort}`;
|
|
621
621
|
process.stdout.write(`API: ${base}/invoke (POST), ${base}/tools (GET)
|
package/dist/utils/cli/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { initProject, buildMcpPackage, runMcpServer } from '../../chunk-
|
|
3
|
-
import { runMCPServerOverStdio, createMCPServerStreamableHttp, createHttpService } from '../../chunk-
|
|
4
|
-
import { findAndLoadToolConfig, resolveToolDescriptor, resolveSandboxedPath2, createRuntimeFromConfig, getDisplayScope } from '../../chunk-
|
|
2
|
+
import { initProject, buildMcpPackage, runMcpServer } from '../../chunk-GWUMQRCN.js';
|
|
3
|
+
import { runMCPServerOverStdio, createMCPServerStreamableHttp, createHttpService } from '../../chunk-OSENBU42.js';
|
|
4
|
+
import { findAndLoadToolConfig, resolveToolDescriptor, resolveSandboxedPath2, createRuntimeFromConfig, getDisplayScope } from '../../chunk-3AEYVD7K.js';
|
|
5
5
|
import '../../chunk-ZRHPGW7W.js';
|
|
6
6
|
import '../../chunk-KDB3MY2H.js';
|
|
7
7
|
import { enrichSpecWithCanonicalSchema } from '../../chunk-NTWOVFEY.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@easynet/agent-tool",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.40",
|
|
4
4
|
"description": "MCP build: init → build → run. Turn your project (@tool, SKILL, n8n) into a standalone MCP npm server (no framework embedding, no package conflict).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|