@easynet/agent-tool 1.0.14 → 1.0.16
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/createAgentTools.d.ts.map +1 -1
- package/dist/api/main.cjs +14 -14
- package/dist/api/main.js +3 -3
- package/dist/api/runtimeFromConfig.d.ts +7 -0
- package/dist/api/runtimeFromConfig.d.ts.map +1 -1
- package/dist/{chunk-FL6UMT6P.js → chunk-BNHLMLDH.js} +7 -3
- package/dist/chunk-BNHLMLDH.js.map +1 -0
- package/dist/{chunk-Z3GHHXSM.cjs → chunk-CDTLERB6.cjs} +10 -3
- package/dist/chunk-CDTLERB6.cjs.map +1 -0
- package/dist/{chunk-FBEUWFEP.cjs → chunk-F32XCT4U.cjs} +9 -9
- package/dist/{chunk-FBEUWFEP.cjs.map → chunk-F32XCT4U.cjs.map} +1 -1
- package/dist/{chunk-32KGW2ZC.js → chunk-FYJ5VD3Q.js} +3 -3
- package/dist/{chunk-32KGW2ZC.js.map → chunk-FYJ5VD3Q.js.map} +1 -1
- package/dist/{chunk-WI3KURGA.js → chunk-M2VNTQHS.js} +17 -3
- package/dist/chunk-M2VNTQHS.js.map +1 -0
- package/dist/{chunk-UVGIML54.cjs → chunk-PVVUTEZP.cjs} +7 -7
- package/dist/{chunk-UVGIML54.cjs.map → chunk-PVVUTEZP.cjs.map} +1 -1
- package/dist/{chunk-TYMFMSUF.js → chunk-SIN5JHMP.js} +3 -3
- package/dist/{chunk-TYMFMSUF.js.map → chunk-SIN5JHMP.js.map} +1 -1
- package/dist/{chunk-DAXCPVEJ.cjs → chunk-UDGQSHEO.cjs} +26 -12
- package/dist/chunk-UDGQSHEO.cjs.map +1 -0
- package/dist/index.cjs +59 -59
- package/dist/index.js +5 -5
- package/dist/tools/util/toolDescriptor.d.ts +5 -0
- package/dist/tools/util/toolDescriptor.d.ts.map +1 -1
- package/dist/utils/cli/index.cjs +17 -17
- package/dist/utils/cli/index.js +3 -3
- package/package.json +1 -1
- package/dist/chunk-DAXCPVEJ.cjs.map +0 -1
- package/dist/chunk-FL6UMT6P.js.map +0 -1
- package/dist/chunk-WI3KURGA.js.map +0 -1
- package/dist/chunk-Z3GHHXSM.cjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkCDTLERB6_cjs = require('./chunk-CDTLERB6.cjs');
|
|
4
4
|
var tools = require('@langchain/core/tools');
|
|
5
5
|
|
|
6
6
|
var DEFAULT_CTX_FACTORY = () => ({
|
|
@@ -51,7 +51,7 @@ var LangChainToolsHub = class {
|
|
|
51
51
|
const intent = {
|
|
52
52
|
tool: spec.name,
|
|
53
53
|
args: args ?? {},
|
|
54
|
-
purpose:
|
|
54
|
+
purpose: chunkCDTLERB6_cjs.LANGCHAIN_KIND
|
|
55
55
|
};
|
|
56
56
|
const ctx = ctxFactory();
|
|
57
57
|
const result = await runtime.invoke(intent, ctx);
|
|
@@ -73,9 +73,9 @@ var LangChainToolsHub = class {
|
|
|
73
73
|
function runtimeOptionsFromConfig(opts) {
|
|
74
74
|
const coreTools = opts.coreTools ?? { sandboxRoot: process.cwd(), allowedHosts: [] };
|
|
75
75
|
if (opts.configFilePath) {
|
|
76
|
-
const toolConfig =
|
|
76
|
+
const toolConfig = chunkCDTLERB6_cjs.loadToolConfig(opts.configFilePath);
|
|
77
77
|
if (toolConfig.sandboxedPath && typeof toolConfig.sandboxedPath === "string") {
|
|
78
|
-
const sandboxRoot =
|
|
78
|
+
const sandboxRoot = chunkCDTLERB6_cjs.resolveSandboxedPath(opts.configFilePath, toolConfig.sandboxedPath);
|
|
79
79
|
return { ...opts, coreTools: { ...coreTools, sandboxRoot } };
|
|
80
80
|
}
|
|
81
81
|
}
|
|
@@ -84,14 +84,21 @@ function runtimeOptionsFromConfig(opts) {
|
|
|
84
84
|
function createAgentTools(options) {
|
|
85
85
|
const opts = typeof options === "string" ? { configFilePath: options } : options ?? {};
|
|
86
86
|
const runtimeOpts = runtimeOptionsFromConfig(opts);
|
|
87
|
-
const { runtime } =
|
|
87
|
+
const { runtime } = chunkCDTLERB6_cjs.createRuntimeFromConfigSync(runtimeOpts);
|
|
88
88
|
const hub = new LangChainToolsHub(runtime);
|
|
89
89
|
if (opts.configFilePath) {
|
|
90
|
-
const toolConfig =
|
|
90
|
+
const toolConfig = chunkCDTLERB6_cjs.loadToolConfig(opts.configFilePath);
|
|
91
91
|
const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];
|
|
92
92
|
if (names.length > 0) {
|
|
93
93
|
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
94
|
-
const
|
|
94
|
+
const allBareBuiltin = names.every((n) => chunkCDTLERB6_cjs.isBarePackageDescriptor(String(n))) && names.some((n) => {
|
|
95
|
+
const p = chunkCDTLERB6_cjs.parseNpmDescriptor(String(n));
|
|
96
|
+
return p !== null && chunkCDTLERB6_cjs.BUILTIN_PKG_NAMES.includes(p.packageName);
|
|
97
|
+
});
|
|
98
|
+
if (allBareBuiltin) {
|
|
99
|
+
return hub.getLangChainTools();
|
|
100
|
+
}
|
|
101
|
+
const expanded = chunkCDTLERB6_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
95
102
|
return hub.getLangChainToolsForNames(expanded);
|
|
96
103
|
}
|
|
97
104
|
}
|
|
@@ -99,14 +106,21 @@ function createAgentTools(options) {
|
|
|
99
106
|
}
|
|
100
107
|
async function createLangChainToolsAsync(options = {}) {
|
|
101
108
|
const runtimeOpts = runtimeOptionsFromConfig(options);
|
|
102
|
-
const { runtime } = await
|
|
109
|
+
const { runtime } = await chunkCDTLERB6_cjs.createRuntimeFromConfig(runtimeOpts);
|
|
103
110
|
const hub = new LangChainToolsHub(runtime);
|
|
104
111
|
if (options.configFilePath) {
|
|
105
|
-
const toolConfig =
|
|
112
|
+
const toolConfig = chunkCDTLERB6_cjs.loadToolConfig(options.configFilePath);
|
|
106
113
|
const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];
|
|
107
114
|
if (names.length > 0) {
|
|
108
115
|
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
109
|
-
const
|
|
116
|
+
const allBareBuiltin = names.every((n) => chunkCDTLERB6_cjs.isBarePackageDescriptor(String(n))) && names.some((n) => {
|
|
117
|
+
const p = chunkCDTLERB6_cjs.parseNpmDescriptor(String(n));
|
|
118
|
+
return p !== null && chunkCDTLERB6_cjs.BUILTIN_PKG_NAMES.includes(p.packageName);
|
|
119
|
+
});
|
|
120
|
+
if (allBareBuiltin) {
|
|
121
|
+
return hub.getLangChainTools();
|
|
122
|
+
}
|
|
123
|
+
const expanded = chunkCDTLERB6_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
110
124
|
return hub.getLangChainToolsForNames(expanded);
|
|
111
125
|
}
|
|
112
126
|
}
|
|
@@ -116,5 +130,5 @@ async function createLangChainToolsAsync(options = {}) {
|
|
|
116
130
|
exports.LangChainToolsHub = LangChainToolsHub;
|
|
117
131
|
exports.createAgentTools = createAgentTools;
|
|
118
132
|
exports.createLangChainToolsAsync = createLangChainToolsAsync;
|
|
119
|
-
//# sourceMappingURL=chunk-
|
|
120
|
-
//# sourceMappingURL=chunk-
|
|
133
|
+
//# sourceMappingURL=chunk-UDGQSHEO.cjs.map
|
|
134
|
+
//# sourceMappingURL=chunk-UDGQSHEO.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api/adapters/LangChainToolsHub.ts","../src/api/createAgentTools.ts"],"names":["DynamicStructuredTool","LANGCHAIN_KIND","loadToolConfig","resolveSandboxedPath","createRuntimeFromConfigSync","isBarePackageDescriptor","parseNpmDescriptor","BUILTIN_PKG_NAMES","expandToolDescriptorsToRegistryNames","createRuntimeFromConfig"],"mappings":"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","file":"chunk-UDGQSHEO.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 { LANGCHAIN_KIND } from \"../../tools/langchain/types.js\";\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\n return new DynamicStructuredTool({\n name: spec.name,\n description: spec.description ?? `Tool: ${spec.name}`,\n schema: spec.inputSchema as Record<string, unknown>,\n func: async (args: Record<string, unknown>): Promise<string> => {\n const intent: ToolIntent = {\n tool: spec.name,\n args: args ?? {},\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} from \"../tools/util/toolDescriptor.js\";\nimport {\n createRuntimeFromConfigSync,\n createRuntimeFromConfig,\n BUILTIN_PKG_NAMES,\n parseNpmDescriptor,\n} 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\nfunction runtimeOptionsFromConfig(opts: CreateAgentToolsOptions): CreateRuntimeOptions {\n const coreTools = opts.coreTools ?? { sandboxRoot: process.cwd(), allowedHosts: [] };\n if (opts.configFilePath) {\n const toolConfig = loadToolConfig(opts.configFilePath);\n if (toolConfig.sandboxedPath && typeof toolConfig.sandboxedPath === \"string\") {\n const sandboxRoot = resolveSandboxedPath(opts.configFilePath, toolConfig.sandboxedPath);\n return { ...opts, coreTools: { ...coreTools, sandboxRoot } };\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 allBareBuiltin =\n names.every((n) => isBarePackageDescriptor(String(n))) &&\n names.some((n) => {\n const p = parseNpmDescriptor(String(n));\n return p !== null && BUILTIN_PKG_NAMES.includes(p.packageName);\n });\n if (allBareBuiltin) {\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 allBareBuiltin =\n names.every((n) => isBarePackageDescriptor(String(n))) &&\n names.some((n) => {\n const p = parseNpmDescriptor(String(n));\n return p !== null && BUILTIN_PKG_NAMES.includes(p.packageName);\n });\n if (allBareBuiltin) {\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,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var chunkZ3GHHXSM_cjs = require('./chunk-Z3GHHXSM.cjs');
|
|
3
|
+
var chunkUDGQSHEO_cjs = require('./chunk-UDGQSHEO.cjs');
|
|
4
|
+
var chunkF32XCT4U_cjs = require('./chunk-F32XCT4U.cjs');
|
|
6
5
|
var chunkSOFUWEZ6_cjs = require('./chunk-SOFUWEZ6.cjs');
|
|
6
|
+
var chunkCDTLERB6_cjs = require('./chunk-CDTLERB6.cjs');
|
|
7
7
|
var chunkZNJBRLKN_cjs = require('./chunk-ZNJBRLKN.cjs');
|
|
8
8
|
require('./chunk-6F5JHLZ7.cjs');
|
|
9
9
|
var path = require('path');
|
|
@@ -21,7 +21,7 @@ var MCPClientAdapter = class {
|
|
|
21
21
|
constructor(client) {
|
|
22
22
|
this.client = client;
|
|
23
23
|
}
|
|
24
|
-
kind =
|
|
24
|
+
kind = chunkCDTLERB6_cjs.MCP_KIND;
|
|
25
25
|
async invoke(spec, args, _ctx) {
|
|
26
26
|
const params = args != null && typeof args === "object" && !Array.isArray(args) ? args : {};
|
|
27
27
|
const result = await this.client.callTool({ name: spec.name, arguments: params });
|
|
@@ -62,7 +62,7 @@ function mcpToolsToSpecs(tools) {
|
|
|
62
62
|
return tools.map((t) => ({
|
|
63
63
|
name: t.name,
|
|
64
64
|
version: "1.0.0",
|
|
65
|
-
kind:
|
|
65
|
+
kind: chunkCDTLERB6_cjs.MCP_KIND,
|
|
66
66
|
description: t.description ?? `MCP tool: ${t.name}`,
|
|
67
67
|
inputSchema: t.inputSchema ?? chunkSOFUWEZ6_cjs.DEFAULT_INPUT_SCHEMA,
|
|
68
68
|
outputSchema: chunkSOFUWEZ6_cjs.DEFAULT_OUTPUT_SCHEMA,
|
|
@@ -102,8 +102,8 @@ async function registerMCPToolsFromConfig(runtime, registry, options = {}) {
|
|
|
102
102
|
const configPath = options.configPath ?? process.env.MCP_CONFIG_PATH ?? path.join(process.cwd(), "mcp.json");
|
|
103
103
|
const dirPath = path.dirname(configPath);
|
|
104
104
|
const entryPoint = path.basename(configPath);
|
|
105
|
-
const toolName = options.toolName ??
|
|
106
|
-
const loaded = await
|
|
105
|
+
const toolName = options.toolName ?? chunkCDTLERB6_cjs.MCP_KIND;
|
|
106
|
+
const loaded = await chunkF32XCT4U_cjs.loadMCPTool(dirPath, { kind: chunkCDTLERB6_cjs.MCP_KIND, name: toolName, entryPoint });
|
|
107
107
|
if (!loaded.mcpConfig) {
|
|
108
108
|
throw new Error("mcp.json must have command or url");
|
|
109
109
|
}
|
|
@@ -119,175 +119,175 @@ async function registerMCPToolsFromConfig(runtime, registry, options = {}) {
|
|
|
119
119
|
|
|
120
120
|
Object.defineProperty(exports, "LangChainToolsHub", {
|
|
121
121
|
enumerable: true,
|
|
122
|
-
get: function () { return
|
|
122
|
+
get: function () { return chunkUDGQSHEO_cjs.LangChainToolsHub; }
|
|
123
123
|
});
|
|
124
124
|
Object.defineProperty(exports, "createAgentTools", {
|
|
125
125
|
enumerable: true,
|
|
126
|
-
get: function () { return
|
|
126
|
+
get: function () { return chunkUDGQSHEO_cjs.createAgentTools; }
|
|
127
127
|
});
|
|
128
128
|
Object.defineProperty(exports, "DirectoryScanner", {
|
|
129
129
|
enumerable: true,
|
|
130
|
-
get: function () { return
|
|
130
|
+
get: function () { return chunkF32XCT4U_cjs.DirectoryScanner; }
|
|
131
131
|
});
|
|
132
132
|
Object.defineProperty(exports, "DiscoveryError", {
|
|
133
133
|
enumerable: true,
|
|
134
|
-
get: function () { return
|
|
134
|
+
get: function () { return chunkF32XCT4U_cjs.DiscoveryError; }
|
|
135
135
|
});
|
|
136
136
|
Object.defineProperty(exports, "SkillManifestError", {
|
|
137
137
|
enumerable: true,
|
|
138
|
-
get: function () { return
|
|
138
|
+
get: function () { return chunkF32XCT4U_cjs.SkillManifestError; }
|
|
139
139
|
});
|
|
140
140
|
Object.defineProperty(exports, "buildFunctionToTool", {
|
|
141
141
|
enumerable: true,
|
|
142
|
-
get: function () { return
|
|
142
|
+
get: function () { return chunkF32XCT4U_cjs.buildFunctionToTool; }
|
|
143
143
|
});
|
|
144
144
|
Object.defineProperty(exports, "buildMcpPackage", {
|
|
145
145
|
enumerable: true,
|
|
146
|
-
get: function () { return
|
|
146
|
+
get: function () { return chunkF32XCT4U_cjs.buildMcpPackage; }
|
|
147
147
|
});
|
|
148
148
|
Object.defineProperty(exports, "initProject", {
|
|
149
149
|
enumerable: true,
|
|
150
|
-
get: function () { return
|
|
150
|
+
get: function () { return chunkF32XCT4U_cjs.initProject; }
|
|
151
151
|
});
|
|
152
152
|
Object.defineProperty(exports, "loadMCPTool", {
|
|
153
153
|
enumerable: true,
|
|
154
|
-
get: function () { return
|
|
154
|
+
get: function () { return chunkF32XCT4U_cjs.loadMCPTool; }
|
|
155
155
|
});
|
|
156
156
|
Object.defineProperty(exports, "loadSkillDefinition", {
|
|
157
157
|
enumerable: true,
|
|
158
|
-
get: function () { return
|
|
158
|
+
get: function () { return chunkF32XCT4U_cjs.loadSkillDefinition; }
|
|
159
159
|
});
|
|
160
160
|
Object.defineProperty(exports, "parseSkillMd", {
|
|
161
161
|
enumerable: true,
|
|
162
|
-
get: function () { return
|
|
162
|
+
get: function () { return chunkF32XCT4U_cjs.parseSkillMd; }
|
|
163
163
|
});
|
|
164
164
|
Object.defineProperty(exports, "runGeneratedMCP", {
|
|
165
165
|
enumerable: true,
|
|
166
|
-
get: function () { return
|
|
166
|
+
get: function () { return chunkF32XCT4U_cjs.runGeneratedMCP; }
|
|
167
167
|
});
|
|
168
168
|
Object.defineProperty(exports, "runMcpServer", {
|
|
169
169
|
enumerable: true,
|
|
170
|
-
get: function () { return
|
|
170
|
+
get: function () { return chunkF32XCT4U_cjs.runMcpServer; }
|
|
171
171
|
});
|
|
172
172
|
Object.defineProperty(exports, "scan", {
|
|
173
173
|
enumerable: true,
|
|
174
|
-
get: function () { return
|
|
174
|
+
get: function () { return chunkF32XCT4U_cjs.scan; }
|
|
175
175
|
});
|
|
176
176
|
Object.defineProperty(exports, "scanForTools", {
|
|
177
177
|
enumerable: true,
|
|
178
|
-
get: function () { return
|
|
178
|
+
get: function () { return chunkF32XCT4U_cjs.scanForTools; }
|
|
179
179
|
});
|
|
180
180
|
Object.defineProperty(exports, "scanSkillResources", {
|
|
181
181
|
enumerable: true,
|
|
182
|
-
get: function () { return
|
|
182
|
+
get: function () { return chunkF32XCT4U_cjs.scanSkillResources; }
|
|
183
183
|
});
|
|
184
184
|
Object.defineProperty(exports, "validateFrontmatter", {
|
|
185
185
|
enumerable: true,
|
|
186
|
-
get: function () { return
|
|
186
|
+
get: function () { return chunkF32XCT4U_cjs.validateFrontmatter; }
|
|
187
|
+
});
|
|
188
|
+
Object.defineProperty(exports, "DEFAULT_INPUT_SCHEMA", {
|
|
189
|
+
enumerable: true,
|
|
190
|
+
get: function () { return chunkSOFUWEZ6_cjs.DEFAULT_INPUT_SCHEMA; }
|
|
191
|
+
});
|
|
192
|
+
Object.defineProperty(exports, "DEFAULT_OUTPUT_SCHEMA", {
|
|
193
|
+
enumerable: true,
|
|
194
|
+
get: function () { return chunkSOFUWEZ6_cjs.DEFAULT_OUTPUT_SCHEMA; }
|
|
195
|
+
});
|
|
196
|
+
Object.defineProperty(exports, "createToolSpec", {
|
|
197
|
+
enumerable: true,
|
|
198
|
+
get: function () { return chunkSOFUWEZ6_cjs.createToolSpec; }
|
|
187
199
|
});
|
|
188
200
|
Object.defineProperty(exports, "BudgetManager", {
|
|
189
201
|
enumerable: true,
|
|
190
|
-
get: function () { return
|
|
202
|
+
get: function () { return chunkCDTLERB6_cjs.BudgetManager; }
|
|
191
203
|
});
|
|
192
204
|
Object.defineProperty(exports, "EventLog", {
|
|
193
205
|
enumerable: true,
|
|
194
|
-
get: function () { return
|
|
206
|
+
get: function () { return chunkCDTLERB6_cjs.EventLog; }
|
|
195
207
|
});
|
|
196
208
|
Object.defineProperty(exports, "Metrics", {
|
|
197
209
|
enumerable: true,
|
|
198
|
-
get: function () { return
|
|
210
|
+
get: function () { return chunkCDTLERB6_cjs.Metrics; }
|
|
199
211
|
});
|
|
200
212
|
Object.defineProperty(exports, "PTCRuntime", {
|
|
201
213
|
enumerable: true,
|
|
202
|
-
get: function () { return
|
|
214
|
+
get: function () { return chunkCDTLERB6_cjs.PTCRuntime; }
|
|
203
215
|
});
|
|
204
216
|
Object.defineProperty(exports, "PolicyDeniedError", {
|
|
205
217
|
enumerable: true,
|
|
206
|
-
get: function () { return
|
|
218
|
+
get: function () { return chunkCDTLERB6_cjs.PolicyDeniedError; }
|
|
207
219
|
});
|
|
208
220
|
Object.defineProperty(exports, "PolicyEngine", {
|
|
209
221
|
enumerable: true,
|
|
210
|
-
get: function () { return
|
|
222
|
+
get: function () { return chunkCDTLERB6_cjs.PolicyEngine; }
|
|
211
223
|
});
|
|
212
224
|
Object.defineProperty(exports, "SchemaValidationError", {
|
|
213
225
|
enumerable: true,
|
|
214
|
-
get: function () { return
|
|
226
|
+
get: function () { return chunkCDTLERB6_cjs.SchemaValidationError; }
|
|
215
227
|
});
|
|
216
228
|
Object.defineProperty(exports, "SchemaValidator", {
|
|
217
229
|
enumerable: true,
|
|
218
|
-
get: function () { return
|
|
230
|
+
get: function () { return chunkCDTLERB6_cjs.SchemaValidator; }
|
|
219
231
|
});
|
|
220
232
|
Object.defineProperty(exports, "Tracing", {
|
|
221
233
|
enumerable: true,
|
|
222
|
-
get: function () { return
|
|
234
|
+
get: function () { return chunkCDTLERB6_cjs.Tracing; }
|
|
223
235
|
});
|
|
224
236
|
Object.defineProperty(exports, "buildEvidence", {
|
|
225
237
|
enumerable: true,
|
|
226
|
-
get: function () { return
|
|
238
|
+
get: function () { return chunkCDTLERB6_cjs.buildEvidence; }
|
|
227
239
|
});
|
|
228
240
|
Object.defineProperty(exports, "createLogger", {
|
|
229
241
|
enumerable: true,
|
|
230
|
-
get: function () { return
|
|
242
|
+
get: function () { return chunkCDTLERB6_cjs.createLogger; }
|
|
231
243
|
});
|
|
232
244
|
Object.defineProperty(exports, "ensurePackageInCache", {
|
|
233
245
|
enumerable: true,
|
|
234
|
-
get: function () { return
|
|
246
|
+
get: function () { return chunkCDTLERB6_cjs.ensurePackageInCache; }
|
|
235
247
|
});
|
|
236
248
|
Object.defineProperty(exports, "expandToolDescriptorsToRegistryNames", {
|
|
237
249
|
enumerable: true,
|
|
238
|
-
get: function () { return
|
|
250
|
+
get: function () { return chunkCDTLERB6_cjs.expandToolDescriptorsToRegistryNames; }
|
|
239
251
|
});
|
|
240
252
|
Object.defineProperty(exports, "getPackageEntryPath", {
|
|
241
253
|
enumerable: true,
|
|
242
|
-
get: function () { return
|
|
254
|
+
get: function () { return chunkCDTLERB6_cjs.getPackageEntryPath; }
|
|
243
255
|
});
|
|
244
256
|
Object.defineProperty(exports, "importFromCache", {
|
|
245
257
|
enumerable: true,
|
|
246
|
-
get: function () { return
|
|
258
|
+
get: function () { return chunkCDTLERB6_cjs.importFromCache; }
|
|
247
259
|
});
|
|
248
260
|
Object.defineProperty(exports, "isNpmToolDescriptor", {
|
|
249
261
|
enumerable: true,
|
|
250
|
-
get: function () { return
|
|
262
|
+
get: function () { return chunkCDTLERB6_cjs.isNpmToolDescriptor; }
|
|
251
263
|
});
|
|
252
264
|
Object.defineProperty(exports, "loadToolConfig", {
|
|
253
265
|
enumerable: true,
|
|
254
|
-
get: function () { return
|
|
266
|
+
get: function () { return chunkCDTLERB6_cjs.loadToolConfig; }
|
|
255
267
|
});
|
|
256
268
|
Object.defineProperty(exports, "normalizeToolList", {
|
|
257
269
|
enumerable: true,
|
|
258
|
-
get: function () { return
|
|
270
|
+
get: function () { return chunkCDTLERB6_cjs.normalizeToolList; }
|
|
259
271
|
});
|
|
260
272
|
Object.defineProperty(exports, "parseNpmToolDescriptor", {
|
|
261
273
|
enumerable: true,
|
|
262
|
-
get: function () { return
|
|
274
|
+
get: function () { return chunkCDTLERB6_cjs.parseNpmToolDescriptor; }
|
|
263
275
|
});
|
|
264
276
|
Object.defineProperty(exports, "resolveNpmToolDescriptor", {
|
|
265
277
|
enumerable: true,
|
|
266
|
-
get: function () { return
|
|
278
|
+
get: function () { return chunkCDTLERB6_cjs.resolveNpmToolDescriptor; }
|
|
267
279
|
});
|
|
268
280
|
Object.defineProperty(exports, "resolveToolDescriptor", {
|
|
269
281
|
enumerable: true,
|
|
270
|
-
get: function () { return
|
|
282
|
+
get: function () { return chunkCDTLERB6_cjs.resolveToolDescriptor; }
|
|
271
283
|
});
|
|
272
284
|
Object.defineProperty(exports, "sanitizeForLog", {
|
|
273
285
|
enumerable: true,
|
|
274
|
-
get: function () { return
|
|
286
|
+
get: function () { return chunkCDTLERB6_cjs.sanitizeForLog; }
|
|
275
287
|
});
|
|
276
288
|
Object.defineProperty(exports, "summarizeForLog", {
|
|
277
289
|
enumerable: true,
|
|
278
|
-
get: function () { return
|
|
279
|
-
});
|
|
280
|
-
Object.defineProperty(exports, "DEFAULT_INPUT_SCHEMA", {
|
|
281
|
-
enumerable: true,
|
|
282
|
-
get: function () { return chunkSOFUWEZ6_cjs.DEFAULT_INPUT_SCHEMA; }
|
|
283
|
-
});
|
|
284
|
-
Object.defineProperty(exports, "DEFAULT_OUTPUT_SCHEMA", {
|
|
285
|
-
enumerable: true,
|
|
286
|
-
get: function () { return chunkSOFUWEZ6_cjs.DEFAULT_OUTPUT_SCHEMA; }
|
|
287
|
-
});
|
|
288
|
-
Object.defineProperty(exports, "createToolSpec", {
|
|
289
|
-
enumerable: true,
|
|
290
|
-
get: function () { return chunkSOFUWEZ6_cjs.createToolSpec; }
|
|
290
|
+
get: function () { return chunkCDTLERB6_cjs.summarizeForLog; }
|
|
291
291
|
});
|
|
292
292
|
Object.defineProperty(exports, "ToolRegistry", {
|
|
293
293
|
enumerable: true,
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { LangChainToolsHub, createAgentTools } from './chunk-
|
|
2
|
-
import { 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-FL6UMT6P.js';
|
|
5
|
-
export { BudgetManager, EventLog, Metrics, PTCRuntime, PolicyDeniedError, PolicyEngine, SchemaValidationError, SchemaValidator, Tracing, buildEvidence, createLogger, ensurePackageInCache, expandToolDescriptorsToRegistryNames, getPackageEntryPath, importFromCache, isNpmToolDescriptor, loadToolConfig, normalizeToolList, parseNpmToolDescriptor, resolveNpmToolDescriptor, resolveToolDescriptor, sanitizeForLog, summarizeForLog } from './chunk-FL6UMT6P.js';
|
|
1
|
+
export { LangChainToolsHub, createAgentTools } from './chunk-M2VNTQHS.js';
|
|
2
|
+
import { loadMCPTool } from './chunk-FYJ5VD3Q.js';
|
|
3
|
+
export { DirectoryScanner, DiscoveryError, SkillManifestError, buildFunctionToTool, buildMcpPackage, initProject, loadMCPTool, loadSkillDefinition, parseSkillMd, runGeneratedMCP, runMcpServer, scan, scanForTools, scanSkillResources, validateFrontmatter } from './chunk-FYJ5VD3Q.js';
|
|
6
4
|
import { DEFAULT_OUTPUT_SCHEMA, DEFAULT_INPUT_SCHEMA } from './chunk-5SWSNVMI.js';
|
|
7
5
|
export { DEFAULT_INPUT_SCHEMA, DEFAULT_OUTPUT_SCHEMA, createToolSpec } from './chunk-5SWSNVMI.js';
|
|
6
|
+
import { MCP_KIND } from './chunk-BNHLMLDH.js';
|
|
7
|
+
export { BudgetManager, EventLog, Metrics, PTCRuntime, PolicyDeniedError, PolicyEngine, SchemaValidationError, SchemaValidator, Tracing, buildEvidence, createLogger, ensurePackageInCache, expandToolDescriptorsToRegistryNames, getPackageEntryPath, importFromCache, isNpmToolDescriptor, loadToolConfig, normalizeToolList, parseNpmToolDescriptor, resolveNpmToolDescriptor, resolveToolDescriptor, sanitizeForLog, summarizeForLog } from './chunk-BNHLMLDH.js';
|
|
8
8
|
export { ToolRegistry, createTaggedError, isRetryable, withRetry } from './chunk-AE6FSNGY.js';
|
|
9
9
|
import './chunk-FR2CXERF.js';
|
|
10
10
|
import { join, dirname, basename } from 'path';
|
|
@@ -29,6 +29,11 @@ export interface PackageVersion {
|
|
|
29
29
|
* Format: [protocol]:[scope]/[package with version]#[tool name]
|
|
30
30
|
*/
|
|
31
31
|
export declare function isToolPath(descriptor: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Check if a descriptor is a bare package (no #toolName).
|
|
34
|
+
* When true, the intent is to load all tools from that package.
|
|
35
|
+
*/
|
|
36
|
+
export declare function isBarePackageDescriptor(descriptor: string): boolean;
|
|
32
37
|
/**
|
|
33
38
|
* Parse a tool path into { protocol, scope, packageWithVersion, toolName }.
|
|
34
39
|
* Returns null if the string does not match the format.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolDescriptor.d.ts","sourceRoot":"","sources":["../../../src/tools/util/toolDescriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,MAAM,WAAW,QAAQ;IACvB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,6HAA6H;AAC7H,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAUjE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,GAAG,cAAc,CAO9E;AAOD,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAOnF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAGR;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,oCAAoC,CAClD,WAAW,EAAE,MAAM,EAAE,EACrB,aAAa,EAAE,MAAM,EAAE,GACtB,MAAM,EAAE,CAiBV;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAYjE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAErD"}
|
|
1
|
+
{"version":3,"file":"toolDescriptor.d.ts","sourceRoot":"","sources":["../../../src/tools/util/toolDescriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,MAAM,WAAW,QAAQ;IACvB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,6HAA6H;AAC7H,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAGnE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAUjE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,GAAG,cAAc,CAO9E;AAOD,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAOnF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAGR;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,oCAAoC,CAClD,WAAW,EAAE,MAAM,EAAE,EACrB,aAAa,EAAE,MAAM,EAAE,GACtB,MAAM,EAAE,CAiBV;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAYjE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAErD"}
|
package/dist/utils/cli/index.cjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var chunkUVGIML54_cjs = require('../../chunk-UVGIML54.cjs');
|
|
6
|
-
var chunkZ3GHHXSM_cjs = require('../../chunk-Z3GHHXSM.cjs');
|
|
4
|
+
var chunkF32XCT4U_cjs = require('../../chunk-F32XCT4U.cjs');
|
|
7
5
|
require('../../chunk-SOFUWEZ6.cjs');
|
|
6
|
+
var chunkPVVUTEZP_cjs = require('../../chunk-PVVUTEZP.cjs');
|
|
7
|
+
var chunkCDTLERB6_cjs = require('../../chunk-CDTLERB6.cjs');
|
|
8
8
|
require('../../chunk-ZNJBRLKN.cjs');
|
|
9
9
|
var chunk6F5JHLZ7_cjs = require('../../chunk-6F5JHLZ7.cjs');
|
|
10
10
|
var path = require('path');
|
|
@@ -24,10 +24,10 @@ async function getRuntimeWithTools(pathOpt, verbose = false) {
|
|
|
24
24
|
const stepLog = verbose ? (msg) => process.stderr.write(`[agent-tool] ${msg}
|
|
25
25
|
`) : void 0;
|
|
26
26
|
if (stepLog) stepLog(`Loading tool config from ${searchDir}`);
|
|
27
|
-
const config =
|
|
27
|
+
const config = chunkCDTLERB6_cjs.findAndLoadToolConfig(searchDir);
|
|
28
28
|
let sandboxRoot = cwd;
|
|
29
29
|
if (config.sandboxedPath && typeof config.sandboxedPath === "string" && config.configPath) {
|
|
30
|
-
sandboxRoot =
|
|
30
|
+
sandboxRoot = chunkCDTLERB6_cjs.resolveSandboxedPath(config.configPath, config.sandboxedPath);
|
|
31
31
|
}
|
|
32
32
|
if (stepLog) {
|
|
33
33
|
if (config.configPath) {
|
|
@@ -38,7 +38,7 @@ async function getRuntimeWithTools(pathOpt, verbose = false) {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
const coreConfig = { sandboxRoot, allowedHosts: [] };
|
|
41
|
-
const result = await
|
|
41
|
+
const result = await chunkCDTLERB6_cjs.createRuntimeFromConfig({
|
|
42
42
|
coreTools: coreConfig,
|
|
43
43
|
configFilePath: config.configPath,
|
|
44
44
|
stepLog
|
|
@@ -165,7 +165,7 @@ For agent run (ReAct + agent.yaml): npx @easynet/agent-orchestra run "task" -c a
|
|
|
165
165
|
}
|
|
166
166
|
async function cmdInit(pathOpt) {
|
|
167
167
|
try {
|
|
168
|
-
const { targetPath, filesCreated } = await
|
|
168
|
+
const { targetPath, filesCreated } = await chunkF32XCT4U_cjs.initProject({ targetPath: pathOpt || void 0 });
|
|
169
169
|
process.stdout.write(`Initialized project at ${targetPath}
|
|
170
170
|
Created: ${filesCreated.join(", ")}
|
|
171
171
|
Next: npm install && npm run build
|
|
@@ -179,7 +179,7 @@ Next: npm install && npm run build
|
|
|
179
179
|
}
|
|
180
180
|
async function cmdBuild(pathOpt, outDir, include, includeN8n) {
|
|
181
181
|
try {
|
|
182
|
-
const result = await
|
|
182
|
+
const result = await chunkF32XCT4U_cjs.buildMcpPackage({
|
|
183
183
|
projectPath: pathOpt || void 0,
|
|
184
184
|
outDir: outDir || void 0,
|
|
185
185
|
include: include.length > 0 ? include : void 0,
|
|
@@ -200,7 +200,7 @@ mcp.json: ${result.mcpJsonPath}
|
|
|
200
200
|
}
|
|
201
201
|
async function cmdServe(pathOpt) {
|
|
202
202
|
try {
|
|
203
|
-
const { process: child } = await
|
|
203
|
+
const { process: child } = await chunkF32XCT4U_cjs.runMcpServer({ path: pathOpt || void 0 });
|
|
204
204
|
child.stdin?.pipe(process.stdin);
|
|
205
205
|
child.stdout?.pipe(process.stdout);
|
|
206
206
|
process.stdin?.unref();
|
|
@@ -218,7 +218,7 @@ var LS_DESC_MAX = 72;
|
|
|
218
218
|
function formatLsOutput(specs) {
|
|
219
219
|
const rows = specs.map((spec) => {
|
|
220
220
|
const { name } = parseToolName(spec.name);
|
|
221
|
-
const scope =
|
|
221
|
+
const scope = chunkCDTLERB6_cjs.getDisplayScope(spec.name, spec.kind, spec.version);
|
|
222
222
|
const desc = (spec.description ?? "").replace(/\n/g, " ").trim().slice(0, LS_DESC_MAX);
|
|
223
223
|
return { scope, name, description: desc || "(no description)" };
|
|
224
224
|
});
|
|
@@ -245,7 +245,7 @@ function formatLsOutput(specs) {
|
|
|
245
245
|
}
|
|
246
246
|
function formatDescribeOutput(spec) {
|
|
247
247
|
const { name: localName } = parseToolName(spec.name);
|
|
248
|
-
const scope =
|
|
248
|
+
const scope = chunkCDTLERB6_cjs.getDisplayScope(spec.name, spec.kind, spec.version);
|
|
249
249
|
const sections = [];
|
|
250
250
|
sections.push("\u250C\u2500 Tool");
|
|
251
251
|
sections.push(`\u2502 name: ${spec.name}`);
|
|
@@ -281,7 +281,7 @@ async function cmdLs(pathOpt, verbose = false) {
|
|
|
281
281
|
process.stdout.write("No tools registered.\n");
|
|
282
282
|
const cwd = process.cwd();
|
|
283
283
|
const searchDir = path__default.default.resolve(cwd, pathOpt ?? ".");
|
|
284
|
-
const config =
|
|
284
|
+
const config = chunkCDTLERB6_cjs.findAndLoadToolConfig(searchDir);
|
|
285
285
|
const hasNpmTools = Array.isArray(config.tools) && config.tools.some((t) => typeof t === "string" && t.startsWith("npm:"));
|
|
286
286
|
if (hasNpmTools) {
|
|
287
287
|
process.stdout.write("Tip: Install builtin tools in this directory: npm init -y && npm install @easynet/agent-tool-buildin\n");
|
|
@@ -304,7 +304,7 @@ async function cmdDescribe(toolName, pathOpt, verbose = false) {
|
|
|
304
304
|
}
|
|
305
305
|
try {
|
|
306
306
|
const { registry } = await getRuntimeWithTools(pathOpt, verbose);
|
|
307
|
-
const registryName =
|
|
307
|
+
const registryName = chunkCDTLERB6_cjs.resolveToolDescriptor(toolName.trim());
|
|
308
308
|
const spec = registry.get(registryName);
|
|
309
309
|
if (!spec) {
|
|
310
310
|
process.stderr.write(`Tool not found: ${toolName}
|
|
@@ -353,7 +353,7 @@ async function cmdRun(toolName, toolArgsJson, pathOpt, verbose = false) {
|
|
|
353
353
|
}
|
|
354
354
|
try {
|
|
355
355
|
const { runtime, registry } = await getRuntimeWithTools(pathOpt, verbose);
|
|
356
|
-
const registryName =
|
|
356
|
+
const registryName = chunkCDTLERB6_cjs.resolveToolDescriptor(toolName.trim());
|
|
357
357
|
if (!registry.get(registryName)) {
|
|
358
358
|
process.stderr.write(`Tool not found: ${toolName}
|
|
359
359
|
`);
|
|
@@ -381,10 +381,10 @@ async function cmdStartMcp(pathOpt, verbose = false, stdio = false, port = 3e3,
|
|
|
381
381
|
try {
|
|
382
382
|
const { runtime } = await getRuntimeWithTools(pathOpt, verbose);
|
|
383
383
|
if (stdio) {
|
|
384
|
-
await
|
|
384
|
+
await chunkPVVUTEZP_cjs.runMCPServerOverStdio(runtime);
|
|
385
385
|
return 0;
|
|
386
386
|
}
|
|
387
|
-
const streamable = await
|
|
387
|
+
const streamable = await chunkPVVUTEZP_cjs.createMCPServerStreamableHttp(runtime, { port, host, path: "/mcp" });
|
|
388
388
|
const { url, port: actualPort } = await streamable.listen(port, host);
|
|
389
389
|
process.stdout.write(`MCP Streamable HTTP: ${url}
|
|
390
390
|
`);
|
|
@@ -400,7 +400,7 @@ async function cmdStartMcp(pathOpt, verbose = false, stdio = false, port = 3e3,
|
|
|
400
400
|
async function cmdStartHttp(port, host, pathOpt, verbose = false) {
|
|
401
401
|
try {
|
|
402
402
|
const { runtime } = await getRuntimeWithTools(pathOpt, verbose);
|
|
403
|
-
const http = await
|
|
403
|
+
const http = await chunkPVVUTEZP_cjs.createHttpService(runtime);
|
|
404
404
|
const { port: actualPort, host: actualHost } = await http.listen({ port, host });
|
|
405
405
|
const base = `http://${actualHost}:${actualPort}`;
|
|
406
406
|
process.stdout.write(`API: ${base}/invoke (POST), ${base}/tools (GET)
|
package/dist/utils/cli/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { initProject, buildMcpPackage, runMcpServer } from '../../chunk-
|
|
3
|
-
import { runMCPServerOverStdio, createMCPServerStreamableHttp, createHttpService } from '../../chunk-TYMFMSUF.js';
|
|
4
|
-
import { findAndLoadToolConfig, resolveToolDescriptor, resolveSandboxedPath, createRuntimeFromConfig, getDisplayScope } from '../../chunk-FL6UMT6P.js';
|
|
2
|
+
import { initProject, buildMcpPackage, runMcpServer } from '../../chunk-FYJ5VD3Q.js';
|
|
5
3
|
import '../../chunk-5SWSNVMI.js';
|
|
4
|
+
import { runMCPServerOverStdio, createMCPServerStreamableHttp, createHttpService } from '../../chunk-SIN5JHMP.js';
|
|
5
|
+
import { findAndLoadToolConfig, resolveToolDescriptor, resolveSandboxedPath, createRuntimeFromConfig, getDisplayScope } from '../../chunk-BNHLMLDH.js';
|
|
6
6
|
import '../../chunk-AE6FSNGY.js';
|
|
7
7
|
import { enrichSpecWithCanonicalSchema } from '../../chunk-FR2CXERF.js';
|
|
8
8
|
import path from 'path';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@easynet/agent-tool",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.16",
|
|
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",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api/adapters/LangChainToolsHub.ts","../src/api/createAgentTools.ts"],"names":["DynamicStructuredTool","LANGCHAIN_KIND","loadToolConfig","resolveSandboxedPath","createRuntimeFromConfigSync","expandToolDescriptorsToRegistryNames","createRuntimeFromConfig"],"mappings":"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","file":"chunk-DAXCPVEJ.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 { LANGCHAIN_KIND } from \"../../tools/langchain/types.js\";\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\n return new DynamicStructuredTool({\n name: spec.name,\n description: spec.description ?? `Tool: ${spec.name}`,\n schema: spec.inputSchema as Record<string, unknown>,\n func: async (args: Record<string, unknown>): Promise<string> => {\n const intent: ToolIntent = {\n tool: spec.name,\n args: args ?? {},\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 { expandToolDescriptorsToRegistryNames } from \"../tools/util/toolDescriptor.js\";\nimport { createRuntimeFromConfigSync } from \"./runtimeFromConfig.js\";\nimport { 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\nfunction runtimeOptionsFromConfig(opts: CreateAgentToolsOptions): CreateRuntimeOptions {\n const coreTools = opts.coreTools ?? { sandboxRoot: process.cwd(), allowedHosts: [] };\n if (opts.configFilePath) {\n const toolConfig = loadToolConfig(opts.configFilePath);\n if (toolConfig.sandboxedPath && typeof toolConfig.sandboxedPath === \"string\") {\n const sandboxRoot = resolveSandboxedPath(opts.configFilePath, toolConfig.sandboxedPath);\n return { ...opts, coreTools: { ...coreTools, sandboxRoot } };\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 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 expanded = expandToolDescriptorsToRegistryNames(names, registryNames);\n return hub.getLangChainToolsForNames(expanded);\n }\n }\n\n return hub.getLangChainTools();\n}\n"]}
|