@easynet/agent-tool 1.0.55 → 1.0.57
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/expose/openapiHttp.d.ts.map +1 -1
- package/dist/api/main.cjs +13 -13
- package/dist/api/main.js +2 -2
- package/dist/{chunk-XT2CXR6A.js → chunk-A5C2MUNA.js} +61 -10
- package/dist/{chunk-XT2CXR6A.js.map → chunk-A5C2MUNA.js.map} +1 -1
- package/dist/{chunk-TFT4RYFZ.cjs → chunk-DPOLJN7F.cjs} +13 -13
- package/dist/{chunk-TFT4RYFZ.cjs.map → chunk-DPOLJN7F.cjs.map} +1 -1
- package/dist/{chunk-WC54NBDE.js → chunk-IWM5B5DU.js} +3 -3
- package/dist/{chunk-WC54NBDE.js.map → chunk-IWM5B5DU.js.map} +1 -1
- package/dist/{chunk-D2T3NTFN.cjs → chunk-JXYANBTH.cjs} +62 -11
- package/dist/chunk-JXYANBTH.cjs.map +1 -0
- package/dist/{chunk-WAGGOFT3.cjs → chunk-MUBZV65R.cjs} +15 -15
- package/dist/{chunk-WAGGOFT3.cjs.map → chunk-MUBZV65R.cjs.map} +1 -1
- package/dist/{chunk-W4AGLV2U.js → chunk-Y75CRPVF.js} +3 -3
- package/dist/{chunk-W4AGLV2U.js.map → chunk-Y75CRPVF.js.map} +1 -1
- package/dist/index.cjs +24 -24
- package/dist/index.js +4 -4
- package/dist/utils/cli/index.cjs +16 -16
- package/dist/utils/cli/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-D2T3NTFN.cjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkJXYANBTH_cjs = require('./chunk-JXYANBTH.cjs');
|
|
4
4
|
var chunkUUNG3GL3_cjs = require('./chunk-UUNG3GL3.cjs');
|
|
5
5
|
var tools = require('@langchain/core/tools');
|
|
6
6
|
var agentCommon = require('@easynet/agent-common');
|
|
@@ -74,7 +74,7 @@ var LangChainToolsHub = class {
|
|
|
74
74
|
const intent = {
|
|
75
75
|
tool: spec.name,
|
|
76
76
|
args: hasArgsWrapper(enriched.inputSchema) ? { args: flat } : flat,
|
|
77
|
-
purpose:
|
|
77
|
+
purpose: chunkJXYANBTH_cjs.LANGCHAIN_KIND
|
|
78
78
|
};
|
|
79
79
|
const ctx = ctxFactory();
|
|
80
80
|
const result = await runtime.invoke(intent, ctx);
|
|
@@ -109,10 +109,10 @@ function mergeHostLists(a, b) {
|
|
|
109
109
|
function runtimeOptionsFromConfig(opts) {
|
|
110
110
|
const coreTools = opts.coreTools ?? { sandboxRoot: process.cwd(), allowedHosts: [], enableSandboxValidation: false };
|
|
111
111
|
if (opts.configFilePath) {
|
|
112
|
-
const toolConfig =
|
|
112
|
+
const toolConfig = chunkJXYANBTH_cjs.loadToolConfig(opts.configFilePath);
|
|
113
113
|
const updates = {};
|
|
114
114
|
if (toolConfig.sandboxedPath && typeof toolConfig.sandboxedPath === "string") {
|
|
115
|
-
updates.sandboxRoot =
|
|
115
|
+
updates.sandboxRoot = chunkJXYANBTH_cjs.resolveSandboxedPath(opts.configFilePath, toolConfig.sandboxedPath);
|
|
116
116
|
}
|
|
117
117
|
if (typeof toolConfig.enableSandboxValidation === "boolean") {
|
|
118
118
|
updates.enableSandboxValidation = toolConfig.enableSandboxValidation;
|
|
@@ -135,7 +135,7 @@ function runtimeOptionsFromConfig(opts) {
|
|
|
135
135
|
const packageDefaults = { ...coreTools.packageDefaults };
|
|
136
136
|
if (toolConfig.packageToolDefaults != null && Object.keys(toolConfig.packageToolDefaults).length > 0) {
|
|
137
137
|
for (const [descriptor, pkgConfig] of Object.entries(toolConfig.packageToolDefaults)) {
|
|
138
|
-
const prefix = descriptor.startsWith("file:") ?
|
|
138
|
+
const prefix = descriptor.startsWith("file:") ? chunkJXYANBTH_cjs.fileDescriptorToPackagePrefix(descriptor) : chunkJXYANBTH_cjs.npmDescriptorToPackagePrefixWithVersion(descriptor);
|
|
139
139
|
if (!prefix) continue;
|
|
140
140
|
const pkgDefaults = pkgConfig?.defaults != null && typeof pkgConfig.defaults === "object" && !Array.isArray(pkgConfig.defaults) ? pkgConfig.defaults : {};
|
|
141
141
|
if (Object.keys(pkgDefaults).length > 0) {
|
|
@@ -165,18 +165,18 @@ function runtimeOptionsFromConfig(opts) {
|
|
|
165
165
|
function createAgentTools(options) {
|
|
166
166
|
const opts = typeof options === "string" ? { configFilePath: options } : options ?? {};
|
|
167
167
|
const runtimeOpts = runtimeOptionsFromConfig(opts);
|
|
168
|
-
const { runtime } =
|
|
168
|
+
const { runtime } = chunkJXYANBTH_cjs.createRuntimeFromConfigSync(runtimeOpts);
|
|
169
169
|
const hub = new LangChainToolsHub(runtime);
|
|
170
170
|
if (opts.configFilePath) {
|
|
171
|
-
const toolConfig =
|
|
171
|
+
const toolConfig = chunkJXYANBTH_cjs.loadToolConfig(opts.configFilePath);
|
|
172
172
|
const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];
|
|
173
173
|
if (names.length > 0) {
|
|
174
174
|
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
175
|
-
const allBarePackages = names.every((n) =>
|
|
175
|
+
const allBarePackages = names.every((n) => chunkJXYANBTH_cjs.isBarePackageDescriptor(String(n)));
|
|
176
176
|
if (allBarePackages) {
|
|
177
177
|
return hub.getLangChainTools();
|
|
178
178
|
}
|
|
179
|
-
const expanded =
|
|
179
|
+
const expanded = chunkJXYANBTH_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
180
180
|
return hub.getLangChainToolsForNames(expanded);
|
|
181
181
|
}
|
|
182
182
|
}
|
|
@@ -184,18 +184,18 @@ function createAgentTools(options) {
|
|
|
184
184
|
}
|
|
185
185
|
async function createLangChainToolsAsync(options = {}) {
|
|
186
186
|
const runtimeOpts = runtimeOptionsFromConfig(options);
|
|
187
|
-
const { runtime } = await
|
|
187
|
+
const { runtime } = await chunkJXYANBTH_cjs.createRuntimeFromConfig(runtimeOpts);
|
|
188
188
|
const hub = new LangChainToolsHub(runtime);
|
|
189
189
|
if (options.configFilePath) {
|
|
190
|
-
const toolConfig =
|
|
190
|
+
const toolConfig = chunkJXYANBTH_cjs.loadToolConfig(options.configFilePath);
|
|
191
191
|
const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];
|
|
192
192
|
if (names.length > 0) {
|
|
193
193
|
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
194
|
-
const allBarePackages = names.every((n) =>
|
|
194
|
+
const allBarePackages = names.every((n) => chunkJXYANBTH_cjs.isBarePackageDescriptor(String(n)));
|
|
195
195
|
if (allBarePackages) {
|
|
196
196
|
return hub.getLangChainTools();
|
|
197
197
|
}
|
|
198
|
-
const expanded =
|
|
198
|
+
const expanded = chunkJXYANBTH_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
199
199
|
return hub.getLangChainToolsForNames(expanded);
|
|
200
200
|
}
|
|
201
201
|
}
|
|
@@ -204,5 +204,5 @@ async function createLangChainToolsAsync(options = {}) {
|
|
|
204
204
|
|
|
205
205
|
exports.createAgentTools = createAgentTools;
|
|
206
206
|
exports.createLangChainToolsAsync = createLangChainToolsAsync;
|
|
207
|
-
//# sourceMappingURL=chunk-
|
|
208
|
-
//# sourceMappingURL=chunk-
|
|
207
|
+
//# sourceMappingURL=chunk-MUBZV65R.cjs.map
|
|
208
|
+
//# sourceMappingURL=chunk-MUBZV65R.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api/adapters/LangChainToolsHub.ts","../src/api/createAgentTools.ts"],"names":["enrichSpecWithCanonicalSchema","DynamicStructuredTool","stripNullishObjectFields","LANGCHAIN_KIND","loadToolConfig","resolveSandboxedPath","fileDescriptorToPackagePrefix","npmDescriptorToPackagePrefixWithVersion","createRuntimeFromConfigSync","isBarePackageDescriptor","expandToolDescriptorsToRegistryNames","createRuntimeFromConfig"],"mappings":";;;;;;;AAsBA,SAAS,eAAe,WAAA,EAA8B;AACpD,EAAA,MAAM,CAAA,GAAI,WAAA;AACV,EAAA,IAAI,CAAA,EAAG,IAAA,KAAS,QAAA,IAAY,CAAC,CAAA,CAAE,cAAc,OAAO,CAAA,CAAE,UAAA,KAAe,QAAA,EAAU,OAAO,KAAA;AACtF,EAAA,MAAM,IAAA,GAAQ,EAAE,UAAA,CAAuC,IAAA;AACvD,EAAA,OACE,IAAA,IAAQ,QACR,OAAO,IAAA,KAAS,YACf,IAAA,CAAiC,IAAA,KAAS,QAAA,IAC1C,IAAA,CAAiC,UAAA,IAAc,IAAA;AAEpD;AAMA,SAAS,mBAAmB,WAAA,EAA8C;AACxE,EAAA,MAAM,CAAA,GAAI,WAAA;AACV,EAAA,IAAI,CAAA,EAAG,SAAS,QAAA,IAAY,CAAC,EAAE,UAAA,IAAc,OAAO,CAAA,CAAE,UAAA,KAAe,QAAA,EAAU;AAC7E,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,MAAM,QAAQ,CAAA,CAAE,UAAA;AAChB,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,EAAA,IAAI,cAAA,CAAe,WAAW,CAAA,EAAG;AAC/B,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,CAAA;AACT;AAIA,IAAM,sBAA0C,OAAO;AAAA,EACrD,SAAA,EAAW,CAAA,GAAA,EAAM,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA,EAAI,IAAA,CAAK,MAAA,EAAO,CAAE,SAAS,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AAAA,EACrE,MAAA,EAAQ,CAAA,KAAA,EAAQ,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA;AAAA,EAC1B,WAAA,EAAa;AAAA,IACX,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA;AAEJ,CAAA,CAAA;AAOO,IAAM,oBAAN,MAAwB;AAAA,EAC7B,WAAA,CACmB,OAAA,EACA,UAAA,GAAiC,mBAAA,EAClD;AAFiB,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMH,iBAAA,GAA+C;AAC7C,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,WAAA,EAAY;AAC1C,IAAA,MAAM,KAAA,GAAQ,SAAS,QAAA,EAAS;AAEhC,IAAA,OAAO,MAAM,GAAA,CAAI,CAAC,SAAS,IAAA,CAAK,mBAAA,CAAoB,IAAI,CAAC,CAAA;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA,EAKA,0BAA0B,SAAA,EAAgD;AACxE,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,WAAA,EAAY;AAC1C,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,SAAS,CAAA;AAC7B,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,QAAA,EAAS,CAAE,MAAA,CAAO,CAAC,CAAA,KAAM,GAAA,CAAI,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA;AAC/D,IAAA,OAAO,MAAM,GAAA,CAAI,CAAC,SAAS,IAAA,CAAK,mBAAA,CAAoB,IAAI,CAAC,CAAA;AAAA,EAC3D;AAAA,EAEQ,oBAAoB,IAAA,EAAuC;AACjE,IAAA,MAAM,UAAU,IAAA,CAAK,OAAA;AACrB,IAAA,MAAM,aAAa,IAAA,CAAK,UAAA;AACxB,IAAA,MAAM,QAAA,GAAWA,gDAA8B,IAAI,CAAA;AAEnD,IAAA,MAAM,MAAA,GAAS,kBAAA,CAAmB,QAAA,CAAS,WAAW,CAAA;AACtD,IAAA,OAAO,IAAIC,2BAAA,CAAsB;AAAA,MAC/B,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,WAAA,EAAa,IAAA,CAAK,WAAA,IAAe,CAAA,MAAA,EAAS,KAAK,IAAI,CAAA,CAAA;AAAA,MACnD,MAAA;AAAA,MACA,IAAA,EAAM,OAAO,IAAA,KAAmD;AAC9D,QAAA,MAAM,IAAA,GAAOC,oCAAA,CAAyB,IAAA,IAAQ,EAAE,CAAA;AAChD,QAAA,MAAM,MAAA,GAAqB;AAAA,UACzB,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,IAAA,EAAM,eAAe,QAAA,CAAS,WAAW,IAAI,EAAE,IAAA,EAAM,MAAK,GAAI,IAAA;AAAA,UAC9D,OAAA,EAASC;AAAA,SACX;AACA,QAAA,MAAM,MAAM,UAAA,EAAW;AACvB,QAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,MAAA,CAAO,QAAQ,GAAG,CAAA;AAE/C,QAAA,IAAI,OAAO,EAAA,EAAI;AACb,UAAA,OAAO,OAAO,OAAO,MAAA,KAAW,QAAA,GAC5B,OAAO,MAAA,GACP,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,MAAM,CAAA;AAAA,QAClC;AAEA,QAAA,MAAM,MAAM,MAAA,CAAO,KAAA;AACnB,QAAA,MAAM,OAAA,GAAU,KAAK,OAAA,IAAW,aAAA;AAChC,QAAA,MAAM,UAAU,GAAA,EAAK,OAAA;AACrB,QAAA,OAAO,IAAA,CAAK,SAAA;AAAA,UACV,OAAA,IAAW,OAAO,EAAE,KAAA,EAAO,SAAS,OAAA,EAAQ,GAAI,EAAE,KAAA,EAAO,OAAA;AAAQ,SACnE;AAAA,MACF;AAAA,KACD,CAAA;AAAA,EACH;AACF,CAAA;;;AC9GA,SAAS,cAAA,CAAe,GAAc,CAAA,EAAwB;AAC5D,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,MAAM,MAAgB,EAAC;AACvB,EAAA,KAAA,MAAW,IAAA,IAAQ,CAAC,CAAA,IAAK,IAAI,CAAA,IAAK,EAAE,CAAA,EAAG;AACrC,IAAA,KAAA,MAAW,KAAK,IAAA,EAAM;AACpB,MAAA,IAAI,CAAC,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,EAAG;AAChB,QAAA,IAAA,CAAK,IAAI,CAAC,CAAA;AACV,QAAA,GAAA,CAAI,KAAK,CAAC,CAAA;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,yBAAyB,IAAA,EAAqD;AACrF,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,SAAA,IAAa,EAAE,WAAA,EAAa,OAAA,CAAQ,GAAA,EAAI,EAAG,YAAA,EAAc,EAAC,EAAG,uBAAA,EAAyB,KAAA,EAAM;AACnH,EAAA,IAAI,KAAK,cAAA,EAAgB;AACvB,IAAA,MAAM,UAAA,GAAaC,gCAAA,CAAe,IAAA,CAAK,cAAc,CAAA;AACrD,IAAA,MAAM,UAQF,EAAC;AACL,IAAA,IAAI,UAAA,CAAW,aAAA,IAAiB,OAAO,UAAA,CAAW,kBAAkB,QAAA,EAAU;AAC5E,MAAA,OAAA,CAAQ,WAAA,GAAcC,sCAAA,CAAqB,IAAA,CAAK,cAAA,EAAgB,WAAW,aAAa,CAAA;AAAA,IAC1F;AACA,IAAA,IAAI,OAAO,UAAA,CAAW,uBAAA,KAA4B,SAAA,EAAW;AAC3D,MAAA,OAAA,CAAQ,0BAA0B,UAAA,CAAW,uBAAA;AAAA,IAC/C,CAAA,MAAA,IAAW,SAAA,CAAU,uBAAA,IAA2B,IAAA,EAAM;AACpD,MAAA,OAAA,CAAQ,uBAAA,GAA0B,KAAA;AAAA,IACpC;AAEA,IAAA,OAAA,CAAQ,YAAA,GAAe,cAAA,CAAe,SAAA,CAAU,YAAA,EAAc,WAAW,YAAY,CAAA;AACrF,IAAA,OAAA,CAAQ,YAAA,GAAe,cAAA,CAAe,SAAA,CAAU,YAAA,EAAc,WAAW,YAAY,CAAA;AACrF,IAAA,IAAI,KAAA,CAAM,QAAQ,UAAA,CAAW,YAAY,KAAK,UAAA,CAAW,YAAA,CAAa,SAAS,CAAA,EAAG;AAChF,MAAA,OAAA,CAAQ,eAAe,UAAA,CAAW,YAAA;AAAA,IACpC,CAAA,MAAA,IAAW,SAAA,CAAU,YAAA,EAAc,MAAA,EAAQ;AACzC,MAAA,OAAA,CAAQ,eAAe,SAAA,CAAU,YAAA;AAAA,IACnC;AACA,IAAA,IAAI,eAAA,GAAkB,KAAA;AACtB,IAAA,MAAM,aAAA,GAAyD,EAAE,GAAG,SAAA,CAAU,aAAA,EAAc;AAC5F,IAAA,IAAI,UAAA,CAAW,gBAAgB,IAAA,IAAQ,MAAA,CAAO,KAAK,UAAA,CAAW,YAAY,CAAA,CAAE,MAAA,GAAS,CAAA,EAAG;AACtF,MAAA,MAAA,CAAO,MAAA,CAAO,aAAA,EAAe,UAAA,CAAW,YAAY,CAAA;AACpD,MAAA,eAAA,GAAkB,IAAA;AAAA,IACpB;AACA,IAAA,MAAM,eAAA,GAA2D,EAAE,GAAG,SAAA,CAAU,eAAA,EAAgB;AAChG,IAAA,IAAI,UAAA,CAAW,uBAAuB,IAAA,IAAQ,MAAA,CAAO,KAAK,UAAA,CAAW,mBAAmB,CAAA,CAAE,MAAA,GAAS,CAAA,EAAG;AACpG,MAAA,KAAA,MAAW,CAAC,YAAY,SAAS,CAAA,IAAK,OAAO,OAAA,CAAQ,UAAA,CAAW,mBAAmB,CAAA,EAAG;AACpF,QAAA,MAAM,MAAA,GAAS,WAAW,UAAA,CAAW,OAAO,IACxCC,+CAAA,CAA8B,UAAU,CAAA,GACxCC,yDAAA,CAAwC,UAAU,CAAA;AACtD,QAAA,IAAI,CAAC,MAAA,EAAQ;AACb,QAAA,MAAM,cACJ,SAAA,EAAW,QAAA,IAAY,IAAA,IAAQ,OAAO,UAAU,QAAA,KAAa,QAAA,IAAY,CAAC,KAAA,CAAM,QAAQ,SAAA,CAAU,QAAQ,CAAA,GACrG,SAAA,CAAU,WACX,EAAC;AACP,QAAA,IAAI,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA,CAAE,SAAS,CAAA,EAAG;AACvC,UAAA,eAAA,CAAgB,MAAM,CAAA,GAAI,WAAA;AAAA,QAC5B;AACA,QAAA,MAAM,cAAc,SAAA,EAAW,KAAA,IAAS,IAAA,IAAQ,OAAO,UAAU,KAAA,KAAU,QAAA,IAAY,CAAC,KAAA,CAAM,QAAQ,SAAA,CAAU,KAAK,CAAA,GAAI,SAAA,CAAU,QAAQ,EAAC;AAC5I,QAAA,KAAA,MAAW,CAAC,QAAA,EAAU,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC5D,UAAA,IAAI,MAAA,IAAU,IAAA,IAAQ,OAAO,MAAA,KAAW,QAAA,EAAU;AAChD,YAAA,eAAA,GAAkB,IAAA;AAClB,YAAA,aAAA,CAAc,CAAA,EAAG,MAAM,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAE,IAAI,EAAE,GAAG,WAAA,EAAa,GAAI,MAAA,EAAmC;AAAA,UACrG;AAAA,QACF;AAAA,MACF;AACA,MAAA,IAAI,MAAA,CAAO,IAAA,CAAK,eAAe,CAAA,CAAE,SAAS,CAAA,EAAG;AAC3C,QAAA,OAAA,CAAQ,eAAA,GAAkB,eAAA;AAAA,MAC5B;AAAA,IACF;AACA,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,OAAA,CAAQ,aAAA,GAAgB,aAAA;AAAA,IAC1B;AACA,IAAA,IAAI,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,SAAS,CAAA,EAAG;AACnC,MAAA,OAAO,EAAE,GAAG,IAAA,EAAM,SAAA,EAAW,EAAE,GAAG,SAAA,EAAW,GAAG,OAAA,EAAQ,EAAE;AAAA,IAC5D;AAAA,EACF;AACA,EAAA,OAAO,EAAE,GAAG,IAAA,EAAM,SAAA,EAAU;AAC9B;AAOO,SAAS,iBACd,OAAA,EAC2B;AAC3B,EAAA,MAAM,IAAA,GACJ,OAAO,OAAA,KAAY,QAAA,GAAW,EAAE,cAAA,EAAgB,OAAA,EAAQ,GAAI,OAAA,IAAW,EAAC;AAC1E,EAAA,MAAM,WAAA,GAAc,yBAAyB,IAAI,CAAA;AACjD,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAIC,6CAAA,CAA4B,WAAW,CAAA;AAC3D,EAAA,MAAM,GAAA,GAAM,IAAI,iBAAA,CAAkB,OAAO,CAAA;AAEzC,EAAA,IAAI,KAAK,cAAA,EAAgB;AACvB,IAAA,MAAM,UAAA,GAAaJ,gCAAA,CAAe,IAAA,CAAK,cAAc,CAAA;AACrD,IAAA,MAAM,KAAA,GAAQ,MAAM,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA,GAAI,UAAA,CAAW,QAAQ,EAAC;AACpE,IAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,MAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,WAAA,EAAY,CAAE,QAAA,GAAW,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAI,CAAA;AACxE,MAAA,MAAM,eAAA,GAAkB,MAAM,KAAA,CAAM,CAAC,MAAMK,yCAAA,CAAwB,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA;AAC7E,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,OAAO,IAAI,iBAAA,EAAkB;AAAA,MAC/B;AACA,MAAA,MAAM,QAAA,GAAWC,sDAAA,CAAqC,KAAA,EAAO,aAAa,CAAA;AAC1E,MAAA,OAAO,GAAA,CAAI,0BAA0B,QAAQ,CAAA;AAAA,IAC/C;AAAA,EACF;AAEA,EAAA,OAAO,IAAI,iBAAA,EAAkB;AAC/B;AAMA,eAAsB,yBAAA,CACpB,OAAA,GAAmC,EAAC,EACA;AACpC,EAAA,MAAM,WAAA,GAAc,yBAAyB,OAAO,CAAA;AACpD,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAMC,0CAAwB,WAAW,CAAA;AAC7D,EAAA,MAAM,GAAA,GAAM,IAAI,iBAAA,CAAkB,OAAO,CAAA;AAEzC,EAAA,IAAI,QAAQ,cAAA,EAAgB;AAC1B,IAAA,MAAM,UAAA,GAAaP,gCAAA,CAAe,OAAA,CAAQ,cAAc,CAAA;AACxD,IAAA,MAAM,KAAA,GAAQ,MAAM,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA,GAAI,UAAA,CAAW,QAAQ,EAAC;AACpE,IAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,MAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,WAAA,EAAY,CAAE,QAAA,GAAW,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAI,CAAA;AACxE,MAAA,MAAM,eAAA,GAAkB,MAAM,KAAA,CAAM,CAAC,MAAMK,yCAAA,CAAwB,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA;AAC7E,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,OAAO,IAAI,iBAAA,EAAkB;AAAA,MAC/B;AACA,MAAA,MAAM,QAAA,GAAWC,sDAAA,CAAqC,KAAA,EAAO,aAAa,CAAA;AAC1E,MAAA,OAAO,GAAA,CAAI,0BAA0B,QAAQ,CAAA;AAAA,IAC/C;AAAA,EACF;AAEA,EAAA,OAAO,IAAI,iBAAA,EAAkB;AAC/B","file":"chunk-WAGGOFT3.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 { stripNullishObjectFields } from \"@easynet/agent-common\";\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 = stripNullishObjectFields(args ?? {}) as Record<string, unknown>;\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","stripNullishObjectFields","LANGCHAIN_KIND","loadToolConfig","resolveSandboxedPath","fileDescriptorToPackagePrefix","npmDescriptorToPackagePrefixWithVersion","createRuntimeFromConfigSync","isBarePackageDescriptor","expandToolDescriptorsToRegistryNames","createRuntimeFromConfig"],"mappings":"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","file":"chunk-MUBZV65R.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 { stripNullishObjectFields } from \"@easynet/agent-common\";\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 = stripNullishObjectFields(args ?? {}) as Record<string, unknown>;\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,4 +1,4 @@
|
|
|
1
|
-
import { discoverTools, FUNCTION_KIND, SKILL_KIND, N8N_KIND } from './chunk-
|
|
1
|
+
import { discoverTools, FUNCTION_KIND, SKILL_KIND, N8N_KIND } from './chunk-A5C2MUNA.js';
|
|
2
2
|
import * as fs2 from 'fs/promises';
|
|
3
3
|
import * as path3 from 'path';
|
|
4
4
|
import { fileURLToPath } from 'url';
|
|
@@ -321,5 +321,5 @@ async function runMcpServer(options = {}) {
|
|
|
321
321
|
var runGeneratedMCP = runMcpServer;
|
|
322
322
|
|
|
323
323
|
export { buildFunctionToTool, buildMcpPackage, initProject, runGeneratedMCP, runMcpServer };
|
|
324
|
-
//# sourceMappingURL=chunk-
|
|
325
|
-
//# sourceMappingURL=chunk-
|
|
324
|
+
//# sourceMappingURL=chunk-Y75CRPVF.js.map
|
|
325
|
+
//# sourceMappingURL=chunk-Y75CRPVF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api/expose/mcp-build/init.ts","../src/tools/scanPackage.ts","../src/api/expose/mcp-build/generator.ts","../src/api/expose/mcp-build/build.ts","../src/api/expose/mcp-build/run.ts"],"names":["path","fs","__dirname","path4","path5","fs3"],"mappings":"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","file":"chunk-W4AGLV2U.js","sourcesContent":["/**\n * Scaffold a new MCP tool project: @tool TS, SKILL sample, tsconfig, README.\n * Use: init → build → run.\n */\n\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\n\nexport interface InitOptions {\n /** Target directory to create project (default: cwd). */\n targetPath?: string;\n}\n\nconst TEMPLATES = {\n \"package.json\": `{\n \"name\": \"my-mcp-tools\",\n \"version\": \"1.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"build\": \"node build.mjs\",\n \"start\": \"node start.mjs\"\n },\n \"devDependencies\": {\n \"@easynet/agent-tool\": \"latest\"\n }\n}\n`,\n \"build.mjs\": `import { buildMcpPackage } from \"@easynet/agent-tool\";\n\nconst result = await buildMcpPackage({ outDir: \"dist\" });\nconsole.log(\"Built\", result.toolCount, \"tool(s) ->\", result.outDir);\n`,\n \"start.mjs\": `import { runMcpServer } from \"@easynet/agent-tool\";\n\nconst { process: child } = await runMcpServer({ path: \"./dist\" });\nchild.stdin?.pipe(process.stdin);\nchild.stdout?.pipe(process.stdout);\nchild.stderr?.pipe(process.stderr);\nprocess.stdin?.ref();\nchild.on(\"close\", (code) => process.exit(code ?? 0));\n`,\n \"tsconfig.json\": `{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"module\": \"ESNext\",\n \"strict\": true,\n \"skipLibCheck\": true,\n \"noEmit\": true\n },\n \"include\": [\"src/**/*.ts\"]\n}\n`,\n \"src/tools/example.ts\": `/**\n * Add two numbers.\n * @tool\n */\nexport async function add(a: number, b: number): Promise<number> {\n return a + b;\n}\n`,\n \"skills/hello-skill/SKILL.md\": `---\nname: hello-skill\ndescription: Say hello with a name.\n---\n\n# Hello Skill\n\nReturns a greeting for the given name.\n`,\n \"skills/hello-skill/handler.js\": `export default async function handler(args, ctx) {\n const name = args?.name ?? \"World\";\n return { message: \\`Hello, \\${name}!\\` };\n}\n`,\n \"README.md\": `# MCP Tool Project\n\nScaffolded by \\`agent-tool init\\`. Workflow:\n\n1. **init** — create project template (you are here)\n2. **npm install** — install dependencies\n3. **npm run build** — generate MCP package under \\`dist/\\`\n4. **npm start** — start the MCP server for testing\n\n## Quick start\n\n\\`\\`\\`bash\nnpm install\nnpm run build\nnpm start\n\\`\\`\\`\n\nEdit \\`src/tools/*.ts\\` (add \\`@tool\\` JSDoc) and/or \\`skills/*/SKILL.md\\`, then \\`npm run build\\` again.\n`,\n};\n\n/**\n * Create project template at targetPath. Writes tsconfig, src/tools/example.ts,\n * skills/hello-skill (SKILL.md + handler.js), and README.\n */\nexport async function initProject(options: InitOptions = {}): Promise<{ targetPath: string; filesCreated: string[] }> {\n const targetPath = path.resolve(options.targetPath ?? process.cwd());\n const filesCreated: string[] = [];\n\n await fs.mkdir(targetPath, { recursive: true });\n\n for (const [relPath, content] of Object.entries(TEMPLATES)) {\n const fullPath = path.join(targetPath, relPath);\n await fs.mkdir(path.dirname(fullPath), { recursive: true });\n try {\n await fs.access(fullPath);\n if (relPath === \"package.json\") continue; // skip so we don't overwrite existing\n } catch {\n // file doesn't exist, write it\n }\n await fs.writeFile(fullPath, content, \"utf8\");\n filesCreated.push(relPath);\n }\n\n return { targetPath, filesCreated };\n}\n","/**\n * Scan package for tools: scanForAllTools, scanPackageForTools, registerPackageTools.\n * Aggregates function/skill/n8n discovery and optional directory discovery.\n */\n\nimport * as path from \"node:path\";\nimport type { ToolSpec } from \"../core/types/ToolSpec.js\";\nimport {\n discoverTools,\n DirectoryScanner,\n type DiscoverToolsOptions,\n} from \"./discoveryFactory.js\";\n\nexport interface ScanAllToolsResult {\n specs: ToolSpec[];\n errors: Array<{ file: string; message: string }>;\n warnings: Array<{ file: string; message: string }>;\n}\n\nexport interface ScanAllToolsOptions {\n include?: string[];\n tsconfigPath?: string;\n includeN8n?: boolean;\n}\n\nexport async function scanForAllTools(\n projectPath: string,\n options: ScanAllToolsOptions = {},\n): Promise<ScanAllToolsResult> {\n const include = options.include ?? [\"**/*.ts\"];\n const tsconfigPath = options.tsconfigPath;\n const includeN8n = options.includeN8n === true;\n const opts: DiscoverToolsOptions = { include, tsconfigPath };\n\n const results = await Promise.all([\n discoverTools(\"function\", projectPath, opts),\n discoverTools(\"skill\", projectPath, opts),\n ...(includeN8n ? [discoverTools(\"n8n\", projectPath, opts)] : []),\n ]);\n const specs = results.flatMap((r) => r.specs);\n const errors = results.flatMap((r) => r.errors);\n const warnings = results.flatMap((r) => r.warnings ?? []);\n\n return { specs, errors, warnings };\n}\n\nexport interface ScanPackageResult {\n specs: ToolSpec[];\n errors: Array<{ file: string; message: string }>;\n warnings: Array<{ file: string; message: string }>;\n}\n\nexport interface ScanPackageOptions extends ScanAllToolsOptions {\n includeDirectoryDiscovery?: boolean;\n namespace?: string;\n}\n\nexport async function scanPackageForTools(\n packagePath: string,\n options: ScanPackageOptions = {},\n): Promise<ScanPackageResult> {\n const root = path.resolve(packagePath);\n const includeDirectoryDiscovery = options.includeDirectoryDiscovery !== false;\n const namespace = options.namespace ?? \"pkg\";\n\n const errors: Array<{ file: string; message: string }> = [];\n const warnings: Array<{ file: string; message: string }> = [];\n\n const scanResult = await scanForAllTools(root, {\n include: options.include,\n tsconfigPath: options.tsconfigPath,\n includeN8n: options.includeN8n,\n });\n errors.push(...scanResult.errors);\n warnings.push(...scanResult.warnings);\n\n let dirSpecs: ToolSpec[] = [];\n if (includeDirectoryDiscovery) {\n const scanner = new DirectoryScanner({\n roots: [root],\n namespace,\n onError: (dir, err) => errors.push({ file: dir, message: err.message }),\n });\n try {\n dirSpecs = await scanner.scan();\n } catch (err) {\n errors.push({\n file: root,\n message: err instanceof Error ? err.message : String(err),\n });\n }\n }\n\n const byName = new Map<string, ToolSpec>();\n for (const spec of dirSpecs) byName.set(spec.name, spec);\n for (const spec of scanResult.specs) {\n if (!byName.has(spec.name)) byName.set(spec.name, spec);\n }\n\n return { specs: Array.from(byName.values()), errors, warnings };\n}\n\nexport async function registerPackageTools(\n registry: { bulkRegister: (specs: ToolSpec[]) => void },\n packagePath: string,\n options: ScanPackageOptions = {},\n): Promise<ScanPackageResult> {\n const result = await scanPackageForTools(packagePath, options);\n if (result.specs.length > 0) registry.bulkRegister(result.specs);\n return result;\n}\n","/**\n * Generate MCP server entrypoint, tool-specs.json, invokers for function/skill/n8n.\n * Accepts unified ToolSpec[] (reads _meta.sourcePath/exportName, endpoint for codegen).\n */\n\nimport * as path from \"node:path\";\nimport * as fs from \"node:fs/promises\";\nimport { fileURLToPath } from \"node:url\";\nimport type { ToolSpec } from \"../../../core/types/ToolSpec.js\";\nimport { FUNCTION_KIND } from \"../../../tools/function/types.js\";\nimport { SKILL_KIND } from \"../../../tools/skill/types.js\";\nimport { N8N_KIND } from \"../../../tools/n8n/types.js\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\n/** Function spec with required codegen fields (from ToolSpec._meta). */\ninterface FunctionSpecForCodegen extends ToolSpec {\n kind: \"function\";\n _meta: { sourcePath: string; exportName: string; projectPath?: string };\n}\n\n/** Skill spec with required codegen fields. */\ninterface SkillSpecForCodegen extends ToolSpec {\n kind: \"skill\";\n _meta: { sourcePath: string; projectPath?: string };\n}\n\n/** N8n spec with endpoint (webhook URL) and _meta.sourcePath. */\ninterface N8nSpecForCodegen extends ToolSpec {\n kind: \"n8n\";\n endpoint?: string;\n _meta?: { sourcePath?: string };\n}\n\nasync function loadTemplate(name: string): Promise<string> {\n for (const dir of [\n path.join(__dirname, \"templates\"),\n path.join(__dirname, \"..\", \"templates\"),\n ]) {\n try {\n return await fs.readFile(path.join(dir, name), \"utf-8\");\n } catch {\n continue;\n }\n }\n throw new Error(`Template not found: ${name}. Tried templates/ next to generator and ../templates.`);\n}\n\nconst TEMPLATE_NAMES = {\n mcpServer: \"mcp-server.js\",\n toolIndex: \"tool-index.js\",\n skillInvoker: \"skill-invoker.js\",\n n8nInvoker: \"n8n-invoker.js\",\n} as const;\n\nfunction buildToolIndexCases(specs: FunctionSpecForCodegen[], fromGeneratedToProject: string): string {\n return specs\n .map((s) => {\n const modPath = path.join(fromGeneratedToProject, s._meta.sourcePath).replace(/\\\\/g, \"/\");\n return ` case \"${s.name}\": return (await import(\"${modPath}\")).${s._meta.exportName};`;\n })\n .join(\"\\n\");\n}\n\nfunction buildSkillInvokerCases(specs: SkillSpecForCodegen[], fromGeneratedToProject: string): string {\n return specs\n .map((s) => {\n const handlerPath = path.join(fromGeneratedToProject, s._meta.sourcePath, \"handler\").replace(/\\\\/g, \"/\");\n const descEscaped = (s.description ?? \"\").replace(/\"/g, '\\\\\"');\n return ` case \"${s.name}\": {\n const mod = await import(\"${handlerPath}.js\")\n .catch(() => import(\"${handlerPath}.mjs\"))\n .catch(() => null);\n if (!mod) return { result: null, error: \"No handler\" };\n const fn = mod.default ?? mod.handler;\n if (typeof fn !== \"function\") return { result: null, error: \"No handler\" };\n const ctx = { requestId: \"mcp\", taskId: \"mcp\", skill: { name: \"${s.name}\", description: \"${descEscaped}\", instructions: \"\", resources: [], readResource: async () => \"\", getResourcesByType: () => [], dirPath: \"\" } };\n const out = await fn(args, ctx);\n return out?.result !== undefined ? out.result : out;\n }`;\n })\n .join(\"\\n\");\n}\n\nfunction buildN8nInvokerCases(specs: N8nSpecForCodegen[]): string {\n return specs\n .map((s) => {\n const webhookUrl = s.endpoint;\n const url =\n webhookUrl\n ? `\"${webhookUrl}\"`\n : \"process.env.N8N_WEBHOOK_\" + s.name.replace(/[^a-zA-Z0-9]/g, \"_\").toUpperCase() + \" ?? null\";\n return ` case \"${s.name}\": {\n const url = ${url};\n if (!url) throw new Error(\"n8n webhook not configured for ${s.name}. Set N8N_WEBHOOK_* or add webhook to workflow.\");\n const res = await fetch(url, { method: \"POST\", headers: { \"Content-Type\": \"application/json\" }, body: JSON.stringify(args) });\n if (!res.ok) throw new Error(\"n8n request failed: \" + res.status);\n return res.json().catch(() => ({}));\n }`;\n })\n .join(\"\\n\");\n}\n\n/** Write generated files into outDir. projectPath is the folder containing source. */\nexport async function generate(options: {\n specs: ToolSpec[];\n outDir: string;\n projectPath: string;\n}): Promise<{ entryPath: string; mcpJsonPath: string }> {\n const { specs, outDir, projectPath } = options;\n await fs.mkdir(outDir, { recursive: true });\n\n const functionSpecs = specs.filter(\n (s): s is FunctionSpecForCodegen =>\n s.kind === FUNCTION_KIND && s._meta?.sourcePath != null && s._meta?.exportName != null,\n );\n const skillSpecs = specs.filter(\n (s): s is SkillSpecForCodegen => s.kind === SKILL_KIND && s._meta?.sourcePath != null,\n );\n const n8nSpecs = specs.filter((s): s is N8nSpecForCodegen => s.kind === N8N_KIND);\n\n const toolSpecsJson = specs.map((s) => ({\n kind: s.kind,\n name: s.name,\n description: s.description,\n inputSchema: s.inputSchema,\n ...(s.kind === FUNCTION_KIND && s._meta?.sourcePath != null && s._meta?.exportName != null && {\n outputSchema: s.outputSchema ?? { type: \"object\", additionalProperties: true },\n sourcePath: s._meta.sourcePath,\n exportName: s._meta.exportName,\n }),\n _meta: s._meta,\n ...(s.kind === SKILL_KIND && s._meta?.sourcePath != null && { sourcePath: s._meta.sourcePath }),\n ...(s.kind === N8N_KIND && {\n sourcePath: s._meta?.sourcePath,\n webhookUrl: s.endpoint,\n }),\n }));\n await fs.writeFile(\n path.join(outDir, \"tool-specs.json\"),\n JSON.stringify(toolSpecsJson, null, 2),\n \"utf-8\",\n );\n\n const configJson = { projectPath: path.resolve(projectPath) };\n await fs.writeFile(path.join(outDir, \"config.json\"), JSON.stringify(configJson, null, 2), \"utf-8\");\n\n const rel = path.relative(outDir, projectPath) || \".\";\n const fromGeneratedToProject = rel.split(path.sep).length ? rel : \".\";\n\n const [mcpServerTemplate, toolIndexTemplate, skillInvokerTemplate, n8nInvokerTemplate] = await Promise.all([\n loadTemplate(TEMPLATE_NAMES.mcpServer),\n loadTemplate(TEMPLATE_NAMES.toolIndex),\n loadTemplate(TEMPLATE_NAMES.skillInvoker),\n loadTemplate(TEMPLATE_NAMES.n8nInvoker),\n ]);\n\n const toolIndexTs = toolIndexTemplate.replace(\"{{CASES}}\", buildToolIndexCases(functionSpecs, fromGeneratedToProject));\n await fs.writeFile(path.join(outDir, \"tool-index.ts\"), toolIndexTs, \"utf-8\");\n\n const skillCases = buildSkillInvokerCases(skillSpecs, fromGeneratedToProject);\n const skillDefaultCase =\n skillSpecs.length === 0 ? \"default: throw new Error('Unknown skill: ' + name);\" : 'default: throw new Error(\"Unknown skill: \" + name);';\n const skillInvokerTs = skillInvokerTemplate.replace(\"{{CASES}}\", skillCases).replace(\"{{DEFAULT_CASE}}\", skillDefaultCase);\n await fs.writeFile(path.join(outDir, \"skill-invoker.ts\"), skillInvokerTs, \"utf-8\");\n\n const n8nCases = buildN8nInvokerCases(n8nSpecs);\n const n8nDefaultCase =\n n8nSpecs.length === 0 ? \"default: throw new Error('Unknown n8n tool: ' + name);\" : 'default: throw new Error(\"Unknown n8n tool: \" + name);';\n const n8nInvokerTs = n8nInvokerTemplate.replace(\"{{CASES}}\", n8nCases).replace(\"{{DEFAULT_CASE}}\", n8nDefaultCase);\n await fs.writeFile(path.join(outDir, \"n8n-invoker.ts\"), n8nInvokerTs, \"utf-8\");\n\n await fs.writeFile(path.join(outDir, \"mcp-server.ts\"), mcpServerTemplate, \"utf-8\");\n\n const mcpJson = {\n command: \"npx\",\n args: [\"-y\", \"tsx\", path.join(outDir, \"mcp-server.ts\")],\n };\n await fs.writeFile(path.join(outDir, \"mcp.json\"), JSON.stringify(mcpJson, null, 2), \"utf-8\");\n\n const packageJson = {\n name: \"function-tools-mcp\",\n version: \"1.0.0\",\n type: \"module\",\n description: \"MCP server generated from @tool functions, SKILL.md, and workflow.json\",\n main: \"mcp-server.ts\",\n scripts: { start: \"npx tsx mcp-server.ts\" },\n dependencies: {\n \"@modelcontextprotocol/sdk\": \"^1.25.3\",\n typescript: \">=5.0.0\",\n tsx: \">=4.0.0\",\n },\n };\n await fs.writeFile(path.join(outDir, \"package.json\"), JSON.stringify(packageJson, null, 2), \"utf-8\");\n\n return {\n entryPath: path.join(outDir, \"mcp-server.ts\"),\n mcpJsonPath: path.join(outDir, \"mcp.json\"),\n };\n}\n","/**\n * MCP build: scan project for @tool, SKILL, n8n; generate MCP entrypoint and npm package.\n */\n\nimport * as path from \"node:path\";\nimport { scanForAllTools } from \"../../../tools/scanPackage.js\";\nimport { generate } from \"./generator.js\";\nimport type { BuildResult } from \"./types.js\";\nimport type { ToolSpec } from \"../../../core/types/ToolSpec.js\";\n\nexport interface BuildOptions {\n /** Project root (folder to scan; default: cwd). */\n projectPath?: string;\n /** Output directory for generated files (default: projectPath/dist). */\n outDir?: string;\n /** Glob patterns for TS files (default: [\"**\\/*.ts\"]). Used for @tool (TypeScript) scanning only. */\n include?: string[];\n /** Path to tsconfig.json (default: projectPath/tsconfig.json). Used for @tool scanning only. */\n tsconfigPath?: string;\n /** Include n8n (workflow.json) tools. Default false: we do not start or install n8n-local; set true if you use n8n. */\n includeN8n?: boolean;\n}\n\n/**\n * Scan project for all tools (@tool, SKILL, n8n); generate MCP server + tool-specs + invokers (npm package).\n */\nexport async function buildMcpPackage(options: BuildOptions = {}): Promise<BuildResult> {\n const projectPath = path.resolve(options.projectPath ?? process.cwd());\n const outDir = path.resolve(projectPath, options.outDir ?? \"dist\");\n const include = options.include ?? [\"**/*.ts\"];\n const tsconfigPath = options.tsconfigPath;\n\n const scanResult = await scanForAllTools(projectPath, {\n include,\n tsconfigPath,\n includeN8n: options.includeN8n,\n });\n\n if (scanResult.errors.length > 0) {\n const msg = scanResult.errors.map((e) => `${e.file}: ${e.message}`).join(\"; \");\n throw new Error(`Scan failed: ${msg}`);\n }\n\n const allSpecs: ToolSpec[] = scanResult.specs;\n\n if (allSpecs.length === 0) {\n throw new Error(\n \"No tools found. Add @tool functions (JSDoc), SKILL.md directories, or workflow.json directories.\",\n );\n }\n\n const { entryPath, mcpJsonPath } = await generate({\n specs: allSpecs,\n outDir,\n projectPath,\n });\n\n return {\n outDir,\n toolCount: allSpecs.length,\n entryPath,\n mcpJsonPath,\n };\n}\n\n/** @deprecated Use buildMcpPackage. */\nexport const buildFunctionToTool = buildMcpPackage;\n","/**\n * Run step: start the generated MCP server (stdio) for testing. Spawns entrypoint via npx tsx.\n */\n\nimport { spawn } from \"node:child_process\";\nimport * as path from \"node:path\";\nimport * as fs from \"node:fs/promises\";\n\nexport interface RunOptions {\n /** Directory containing generated mcp-server (default: cwd or cwd/dist). */\n path?: string;\n}\n\n/**\n * Start the MCP server from the given directory.\n * Expects mcp-server.ts and tool-specs.json there; runs via npx tsx mcp-server.ts.\n * Returns a child process; caller should handle stdin/stdout and cleanup.\n */\nexport async function runMcpServer(options: RunOptions = {}): Promise<{ process: ReturnType<typeof spawn> }> {\n const base = options.path ?? process.cwd();\n const candidates = [\n path.join(base, \"mcp-server.ts\"),\n path.join(base, \"mcp-server.js\"),\n path.join(base, \"dist\", \"mcp-server.ts\"),\n path.join(base, \"dist\", \"mcp-server.js\"),\n path.join(base, \"generated\", \"mcp-server.ts\"),\n path.join(base, \"generated\", \"mcp-server.js\"),\n ];\n let entry = \"\";\n for (const p of candidates) {\n try {\n await fs.access(p);\n entry = p;\n break;\n } catch {\n // continue\n }\n }\n if (!entry) {\n throw new Error(\n `MCP entrypoint not found. Run \"agent-tool build\" first, or pass --path to a directory containing mcp-server.ts. Tried: ${candidates.join(\", \")}`,\n );\n }\n\n const dir = path.dirname(entry);\n const child = spawn(\"npx\", [\"-y\", \"tsx\", path.basename(entry)], {\n cwd: dir,\n stdio: [\"pipe\", \"pipe\", \"inherit\"],\n shell: false,\n });\n\n return { process: child };\n}\n\n/** @deprecated Use runMcpServer. */\nexport const runGeneratedMCP = runMcpServer;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/api/expose/mcp-build/init.ts","../src/tools/scanPackage.ts","../src/api/expose/mcp-build/generator.ts","../src/api/expose/mcp-build/build.ts","../src/api/expose/mcp-build/run.ts"],"names":["path","fs","__dirname","path4","path5","fs3"],"mappings":"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","file":"chunk-Y75CRPVF.js","sourcesContent":["/**\n * Scaffold a new MCP tool project: @tool TS, SKILL sample, tsconfig, README.\n * Use: init → build → run.\n */\n\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\n\nexport interface InitOptions {\n /** Target directory to create project (default: cwd). */\n targetPath?: string;\n}\n\nconst TEMPLATES = {\n \"package.json\": `{\n \"name\": \"my-mcp-tools\",\n \"version\": \"1.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"build\": \"node build.mjs\",\n \"start\": \"node start.mjs\"\n },\n \"devDependencies\": {\n \"@easynet/agent-tool\": \"latest\"\n }\n}\n`,\n \"build.mjs\": `import { buildMcpPackage } from \"@easynet/agent-tool\";\n\nconst result = await buildMcpPackage({ outDir: \"dist\" });\nconsole.log(\"Built\", result.toolCount, \"tool(s) ->\", result.outDir);\n`,\n \"start.mjs\": `import { runMcpServer } from \"@easynet/agent-tool\";\n\nconst { process: child } = await runMcpServer({ path: \"./dist\" });\nchild.stdin?.pipe(process.stdin);\nchild.stdout?.pipe(process.stdout);\nchild.stderr?.pipe(process.stderr);\nprocess.stdin?.ref();\nchild.on(\"close\", (code) => process.exit(code ?? 0));\n`,\n \"tsconfig.json\": `{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"module\": \"ESNext\",\n \"strict\": true,\n \"skipLibCheck\": true,\n \"noEmit\": true\n },\n \"include\": [\"src/**/*.ts\"]\n}\n`,\n \"src/tools/example.ts\": `/**\n * Add two numbers.\n * @tool\n */\nexport async function add(a: number, b: number): Promise<number> {\n return a + b;\n}\n`,\n \"skills/hello-skill/SKILL.md\": `---\nname: hello-skill\ndescription: Say hello with a name.\n---\n\n# Hello Skill\n\nReturns a greeting for the given name.\n`,\n \"skills/hello-skill/handler.js\": `export default async function handler(args, ctx) {\n const name = args?.name ?? \"World\";\n return { message: \\`Hello, \\${name}!\\` };\n}\n`,\n \"README.md\": `# MCP Tool Project\n\nScaffolded by \\`agent-tool init\\`. Workflow:\n\n1. **init** — create project template (you are here)\n2. **npm install** — install dependencies\n3. **npm run build** — generate MCP package under \\`dist/\\`\n4. **npm start** — start the MCP server for testing\n\n## Quick start\n\n\\`\\`\\`bash\nnpm install\nnpm run build\nnpm start\n\\`\\`\\`\n\nEdit \\`src/tools/*.ts\\` (add \\`@tool\\` JSDoc) and/or \\`skills/*/SKILL.md\\`, then \\`npm run build\\` again.\n`,\n};\n\n/**\n * Create project template at targetPath. Writes tsconfig, src/tools/example.ts,\n * skills/hello-skill (SKILL.md + handler.js), and README.\n */\nexport async function initProject(options: InitOptions = {}): Promise<{ targetPath: string; filesCreated: string[] }> {\n const targetPath = path.resolve(options.targetPath ?? process.cwd());\n const filesCreated: string[] = [];\n\n await fs.mkdir(targetPath, { recursive: true });\n\n for (const [relPath, content] of Object.entries(TEMPLATES)) {\n const fullPath = path.join(targetPath, relPath);\n await fs.mkdir(path.dirname(fullPath), { recursive: true });\n try {\n await fs.access(fullPath);\n if (relPath === \"package.json\") continue; // skip so we don't overwrite existing\n } catch {\n // file doesn't exist, write it\n }\n await fs.writeFile(fullPath, content, \"utf8\");\n filesCreated.push(relPath);\n }\n\n return { targetPath, filesCreated };\n}\n","/**\n * Scan package for tools: scanForAllTools, scanPackageForTools, registerPackageTools.\n * Aggregates function/skill/n8n discovery and optional directory discovery.\n */\n\nimport * as path from \"node:path\";\nimport type { ToolSpec } from \"../core/types/ToolSpec.js\";\nimport {\n discoverTools,\n DirectoryScanner,\n type DiscoverToolsOptions,\n} from \"./discoveryFactory.js\";\n\nexport interface ScanAllToolsResult {\n specs: ToolSpec[];\n errors: Array<{ file: string; message: string }>;\n warnings: Array<{ file: string; message: string }>;\n}\n\nexport interface ScanAllToolsOptions {\n include?: string[];\n tsconfigPath?: string;\n includeN8n?: boolean;\n}\n\nexport async function scanForAllTools(\n projectPath: string,\n options: ScanAllToolsOptions = {},\n): Promise<ScanAllToolsResult> {\n const include = options.include ?? [\"**/*.ts\"];\n const tsconfigPath = options.tsconfigPath;\n const includeN8n = options.includeN8n === true;\n const opts: DiscoverToolsOptions = { include, tsconfigPath };\n\n const results = await Promise.all([\n discoverTools(\"function\", projectPath, opts),\n discoverTools(\"skill\", projectPath, opts),\n ...(includeN8n ? [discoverTools(\"n8n\", projectPath, opts)] : []),\n ]);\n const specs = results.flatMap((r) => r.specs);\n const errors = results.flatMap((r) => r.errors);\n const warnings = results.flatMap((r) => r.warnings ?? []);\n\n return { specs, errors, warnings };\n}\n\nexport interface ScanPackageResult {\n specs: ToolSpec[];\n errors: Array<{ file: string; message: string }>;\n warnings: Array<{ file: string; message: string }>;\n}\n\nexport interface ScanPackageOptions extends ScanAllToolsOptions {\n includeDirectoryDiscovery?: boolean;\n namespace?: string;\n}\n\nexport async function scanPackageForTools(\n packagePath: string,\n options: ScanPackageOptions = {},\n): Promise<ScanPackageResult> {\n const root = path.resolve(packagePath);\n const includeDirectoryDiscovery = options.includeDirectoryDiscovery !== false;\n const namespace = options.namespace ?? \"pkg\";\n\n const errors: Array<{ file: string; message: string }> = [];\n const warnings: Array<{ file: string; message: string }> = [];\n\n const scanResult = await scanForAllTools(root, {\n include: options.include,\n tsconfigPath: options.tsconfigPath,\n includeN8n: options.includeN8n,\n });\n errors.push(...scanResult.errors);\n warnings.push(...scanResult.warnings);\n\n let dirSpecs: ToolSpec[] = [];\n if (includeDirectoryDiscovery) {\n const scanner = new DirectoryScanner({\n roots: [root],\n namespace,\n onError: (dir, err) => errors.push({ file: dir, message: err.message }),\n });\n try {\n dirSpecs = await scanner.scan();\n } catch (err) {\n errors.push({\n file: root,\n message: err instanceof Error ? err.message : String(err),\n });\n }\n }\n\n const byName = new Map<string, ToolSpec>();\n for (const spec of dirSpecs) byName.set(spec.name, spec);\n for (const spec of scanResult.specs) {\n if (!byName.has(spec.name)) byName.set(spec.name, spec);\n }\n\n return { specs: Array.from(byName.values()), errors, warnings };\n}\n\nexport async function registerPackageTools(\n registry: { bulkRegister: (specs: ToolSpec[]) => void },\n packagePath: string,\n options: ScanPackageOptions = {},\n): Promise<ScanPackageResult> {\n const result = await scanPackageForTools(packagePath, options);\n if (result.specs.length > 0) registry.bulkRegister(result.specs);\n return result;\n}\n","/**\n * Generate MCP server entrypoint, tool-specs.json, invokers for function/skill/n8n.\n * Accepts unified ToolSpec[] (reads _meta.sourcePath/exportName, endpoint for codegen).\n */\n\nimport * as path from \"node:path\";\nimport * as fs from \"node:fs/promises\";\nimport { fileURLToPath } from \"node:url\";\nimport type { ToolSpec } from \"../../../core/types/ToolSpec.js\";\nimport { FUNCTION_KIND } from \"../../../tools/function/types.js\";\nimport { SKILL_KIND } from \"../../../tools/skill/types.js\";\nimport { N8N_KIND } from \"../../../tools/n8n/types.js\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\n/** Function spec with required codegen fields (from ToolSpec._meta). */\ninterface FunctionSpecForCodegen extends ToolSpec {\n kind: \"function\";\n _meta: { sourcePath: string; exportName: string; projectPath?: string };\n}\n\n/** Skill spec with required codegen fields. */\ninterface SkillSpecForCodegen extends ToolSpec {\n kind: \"skill\";\n _meta: { sourcePath: string; projectPath?: string };\n}\n\n/** N8n spec with endpoint (webhook URL) and _meta.sourcePath. */\ninterface N8nSpecForCodegen extends ToolSpec {\n kind: \"n8n\";\n endpoint?: string;\n _meta?: { sourcePath?: string };\n}\n\nasync function loadTemplate(name: string): Promise<string> {\n for (const dir of [\n path.join(__dirname, \"templates\"),\n path.join(__dirname, \"..\", \"templates\"),\n ]) {\n try {\n return await fs.readFile(path.join(dir, name), \"utf-8\");\n } catch {\n continue;\n }\n }\n throw new Error(`Template not found: ${name}. Tried templates/ next to generator and ../templates.`);\n}\n\nconst TEMPLATE_NAMES = {\n mcpServer: \"mcp-server.js\",\n toolIndex: \"tool-index.js\",\n skillInvoker: \"skill-invoker.js\",\n n8nInvoker: \"n8n-invoker.js\",\n} as const;\n\nfunction buildToolIndexCases(specs: FunctionSpecForCodegen[], fromGeneratedToProject: string): string {\n return specs\n .map((s) => {\n const modPath = path.join(fromGeneratedToProject, s._meta.sourcePath).replace(/\\\\/g, \"/\");\n return ` case \"${s.name}\": return (await import(\"${modPath}\")).${s._meta.exportName};`;\n })\n .join(\"\\n\");\n}\n\nfunction buildSkillInvokerCases(specs: SkillSpecForCodegen[], fromGeneratedToProject: string): string {\n return specs\n .map((s) => {\n const handlerPath = path.join(fromGeneratedToProject, s._meta.sourcePath, \"handler\").replace(/\\\\/g, \"/\");\n const descEscaped = (s.description ?? \"\").replace(/\"/g, '\\\\\"');\n return ` case \"${s.name}\": {\n const mod = await import(\"${handlerPath}.js\")\n .catch(() => import(\"${handlerPath}.mjs\"))\n .catch(() => null);\n if (!mod) return { result: null, error: \"No handler\" };\n const fn = mod.default ?? mod.handler;\n if (typeof fn !== \"function\") return { result: null, error: \"No handler\" };\n const ctx = { requestId: \"mcp\", taskId: \"mcp\", skill: { name: \"${s.name}\", description: \"${descEscaped}\", instructions: \"\", resources: [], readResource: async () => \"\", getResourcesByType: () => [], dirPath: \"\" } };\n const out = await fn(args, ctx);\n return out?.result !== undefined ? out.result : out;\n }`;\n })\n .join(\"\\n\");\n}\n\nfunction buildN8nInvokerCases(specs: N8nSpecForCodegen[]): string {\n return specs\n .map((s) => {\n const webhookUrl = s.endpoint;\n const url =\n webhookUrl\n ? `\"${webhookUrl}\"`\n : \"process.env.N8N_WEBHOOK_\" + s.name.replace(/[^a-zA-Z0-9]/g, \"_\").toUpperCase() + \" ?? null\";\n return ` case \"${s.name}\": {\n const url = ${url};\n if (!url) throw new Error(\"n8n webhook not configured for ${s.name}. Set N8N_WEBHOOK_* or add webhook to workflow.\");\n const res = await fetch(url, { method: \"POST\", headers: { \"Content-Type\": \"application/json\" }, body: JSON.stringify(args) });\n if (!res.ok) throw new Error(\"n8n request failed: \" + res.status);\n return res.json().catch(() => ({}));\n }`;\n })\n .join(\"\\n\");\n}\n\n/** Write generated files into outDir. projectPath is the folder containing source. */\nexport async function generate(options: {\n specs: ToolSpec[];\n outDir: string;\n projectPath: string;\n}): Promise<{ entryPath: string; mcpJsonPath: string }> {\n const { specs, outDir, projectPath } = options;\n await fs.mkdir(outDir, { recursive: true });\n\n const functionSpecs = specs.filter(\n (s): s is FunctionSpecForCodegen =>\n s.kind === FUNCTION_KIND && s._meta?.sourcePath != null && s._meta?.exportName != null,\n );\n const skillSpecs = specs.filter(\n (s): s is SkillSpecForCodegen => s.kind === SKILL_KIND && s._meta?.sourcePath != null,\n );\n const n8nSpecs = specs.filter((s): s is N8nSpecForCodegen => s.kind === N8N_KIND);\n\n const toolSpecsJson = specs.map((s) => ({\n kind: s.kind,\n name: s.name,\n description: s.description,\n inputSchema: s.inputSchema,\n ...(s.kind === FUNCTION_KIND && s._meta?.sourcePath != null && s._meta?.exportName != null && {\n outputSchema: s.outputSchema ?? { type: \"object\", additionalProperties: true },\n sourcePath: s._meta.sourcePath,\n exportName: s._meta.exportName,\n }),\n _meta: s._meta,\n ...(s.kind === SKILL_KIND && s._meta?.sourcePath != null && { sourcePath: s._meta.sourcePath }),\n ...(s.kind === N8N_KIND && {\n sourcePath: s._meta?.sourcePath,\n webhookUrl: s.endpoint,\n }),\n }));\n await fs.writeFile(\n path.join(outDir, \"tool-specs.json\"),\n JSON.stringify(toolSpecsJson, null, 2),\n \"utf-8\",\n );\n\n const configJson = { projectPath: path.resolve(projectPath) };\n await fs.writeFile(path.join(outDir, \"config.json\"), JSON.stringify(configJson, null, 2), \"utf-8\");\n\n const rel = path.relative(outDir, projectPath) || \".\";\n const fromGeneratedToProject = rel.split(path.sep).length ? rel : \".\";\n\n const [mcpServerTemplate, toolIndexTemplate, skillInvokerTemplate, n8nInvokerTemplate] = await Promise.all([\n loadTemplate(TEMPLATE_NAMES.mcpServer),\n loadTemplate(TEMPLATE_NAMES.toolIndex),\n loadTemplate(TEMPLATE_NAMES.skillInvoker),\n loadTemplate(TEMPLATE_NAMES.n8nInvoker),\n ]);\n\n const toolIndexTs = toolIndexTemplate.replace(\"{{CASES}}\", buildToolIndexCases(functionSpecs, fromGeneratedToProject));\n await fs.writeFile(path.join(outDir, \"tool-index.ts\"), toolIndexTs, \"utf-8\");\n\n const skillCases = buildSkillInvokerCases(skillSpecs, fromGeneratedToProject);\n const skillDefaultCase =\n skillSpecs.length === 0 ? \"default: throw new Error('Unknown skill: ' + name);\" : 'default: throw new Error(\"Unknown skill: \" + name);';\n const skillInvokerTs = skillInvokerTemplate.replace(\"{{CASES}}\", skillCases).replace(\"{{DEFAULT_CASE}}\", skillDefaultCase);\n await fs.writeFile(path.join(outDir, \"skill-invoker.ts\"), skillInvokerTs, \"utf-8\");\n\n const n8nCases = buildN8nInvokerCases(n8nSpecs);\n const n8nDefaultCase =\n n8nSpecs.length === 0 ? \"default: throw new Error('Unknown n8n tool: ' + name);\" : 'default: throw new Error(\"Unknown n8n tool: \" + name);';\n const n8nInvokerTs = n8nInvokerTemplate.replace(\"{{CASES}}\", n8nCases).replace(\"{{DEFAULT_CASE}}\", n8nDefaultCase);\n await fs.writeFile(path.join(outDir, \"n8n-invoker.ts\"), n8nInvokerTs, \"utf-8\");\n\n await fs.writeFile(path.join(outDir, \"mcp-server.ts\"), mcpServerTemplate, \"utf-8\");\n\n const mcpJson = {\n command: \"npx\",\n args: [\"-y\", \"tsx\", path.join(outDir, \"mcp-server.ts\")],\n };\n await fs.writeFile(path.join(outDir, \"mcp.json\"), JSON.stringify(mcpJson, null, 2), \"utf-8\");\n\n const packageJson = {\n name: \"function-tools-mcp\",\n version: \"1.0.0\",\n type: \"module\",\n description: \"MCP server generated from @tool functions, SKILL.md, and workflow.json\",\n main: \"mcp-server.ts\",\n scripts: { start: \"npx tsx mcp-server.ts\" },\n dependencies: {\n \"@modelcontextprotocol/sdk\": \"^1.25.3\",\n typescript: \">=5.0.0\",\n tsx: \">=4.0.0\",\n },\n };\n await fs.writeFile(path.join(outDir, \"package.json\"), JSON.stringify(packageJson, null, 2), \"utf-8\");\n\n return {\n entryPath: path.join(outDir, \"mcp-server.ts\"),\n mcpJsonPath: path.join(outDir, \"mcp.json\"),\n };\n}\n","/**\n * MCP build: scan project for @tool, SKILL, n8n; generate MCP entrypoint and npm package.\n */\n\nimport * as path from \"node:path\";\nimport { scanForAllTools } from \"../../../tools/scanPackage.js\";\nimport { generate } from \"./generator.js\";\nimport type { BuildResult } from \"./types.js\";\nimport type { ToolSpec } from \"../../../core/types/ToolSpec.js\";\n\nexport interface BuildOptions {\n /** Project root (folder to scan; default: cwd). */\n projectPath?: string;\n /** Output directory for generated files (default: projectPath/dist). */\n outDir?: string;\n /** Glob patterns for TS files (default: [\"**\\/*.ts\"]). Used for @tool (TypeScript) scanning only. */\n include?: string[];\n /** Path to tsconfig.json (default: projectPath/tsconfig.json). Used for @tool scanning only. */\n tsconfigPath?: string;\n /** Include n8n (workflow.json) tools. Default false: we do not start or install n8n-local; set true if you use n8n. */\n includeN8n?: boolean;\n}\n\n/**\n * Scan project for all tools (@tool, SKILL, n8n); generate MCP server + tool-specs + invokers (npm package).\n */\nexport async function buildMcpPackage(options: BuildOptions = {}): Promise<BuildResult> {\n const projectPath = path.resolve(options.projectPath ?? process.cwd());\n const outDir = path.resolve(projectPath, options.outDir ?? \"dist\");\n const include = options.include ?? [\"**/*.ts\"];\n const tsconfigPath = options.tsconfigPath;\n\n const scanResult = await scanForAllTools(projectPath, {\n include,\n tsconfigPath,\n includeN8n: options.includeN8n,\n });\n\n if (scanResult.errors.length > 0) {\n const msg = scanResult.errors.map((e) => `${e.file}: ${e.message}`).join(\"; \");\n throw new Error(`Scan failed: ${msg}`);\n }\n\n const allSpecs: ToolSpec[] = scanResult.specs;\n\n if (allSpecs.length === 0) {\n throw new Error(\n \"No tools found. Add @tool functions (JSDoc), SKILL.md directories, or workflow.json directories.\",\n );\n }\n\n const { entryPath, mcpJsonPath } = await generate({\n specs: allSpecs,\n outDir,\n projectPath,\n });\n\n return {\n outDir,\n toolCount: allSpecs.length,\n entryPath,\n mcpJsonPath,\n };\n}\n\n/** @deprecated Use buildMcpPackage. */\nexport const buildFunctionToTool = buildMcpPackage;\n","/**\n * Run step: start the generated MCP server (stdio) for testing. Spawns entrypoint via npx tsx.\n */\n\nimport { spawn } from \"node:child_process\";\nimport * as path from \"node:path\";\nimport * as fs from \"node:fs/promises\";\n\nexport interface RunOptions {\n /** Directory containing generated mcp-server (default: cwd or cwd/dist). */\n path?: string;\n}\n\n/**\n * Start the MCP server from the given directory.\n * Expects mcp-server.ts and tool-specs.json there; runs via npx tsx mcp-server.ts.\n * Returns a child process; caller should handle stdin/stdout and cleanup.\n */\nexport async function runMcpServer(options: RunOptions = {}): Promise<{ process: ReturnType<typeof spawn> }> {\n const base = options.path ?? process.cwd();\n const candidates = [\n path.join(base, \"mcp-server.ts\"),\n path.join(base, \"mcp-server.js\"),\n path.join(base, \"dist\", \"mcp-server.ts\"),\n path.join(base, \"dist\", \"mcp-server.js\"),\n path.join(base, \"generated\", \"mcp-server.ts\"),\n path.join(base, \"generated\", \"mcp-server.js\"),\n ];\n let entry = \"\";\n for (const p of candidates) {\n try {\n await fs.access(p);\n entry = p;\n break;\n } catch {\n // continue\n }\n }\n if (!entry) {\n throw new Error(\n `MCP entrypoint not found. Run \"agent-tool build\" first, or pass --path to a directory containing mcp-server.ts. Tried: ${candidates.join(\", \")}`,\n );\n }\n\n const dir = path.dirname(entry);\n const child = spawn(\"npx\", [\"-y\", \"tsx\", path.basename(entry)], {\n cwd: dir,\n stdio: [\"pipe\", \"pipe\", \"inherit\"],\n shell: false,\n });\n\n return { process: child };\n}\n\n/** @deprecated Use runMcpServer. */\nexport const runGeneratedMCP = runMcpServer;\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkMUBZV65R_cjs = require('./chunk-MUBZV65R.cjs');
|
|
4
|
+
var chunkDPOLJN7F_cjs = require('./chunk-DPOLJN7F.cjs');
|
|
5
|
+
var chunkJXYANBTH_cjs = require('./chunk-JXYANBTH.cjs');
|
|
6
6
|
var chunkWQMHMPNC_cjs = require('./chunk-WQMHMPNC.cjs');
|
|
7
7
|
var chunkQEJF3KDV_cjs = require('./chunk-QEJF3KDV.cjs');
|
|
8
8
|
require('./chunk-UUNG3GL3.cjs');
|
|
@@ -271,7 +271,7 @@ function generateExtensionManifest(projectRoot = process.cwd(), options = {}) {
|
|
|
271
271
|
const root = path6__default.default.resolve(projectRoot);
|
|
272
272
|
const outDir = path6__default.default.resolve(options.outDir ?? path6__default.default.join(root, "dist"));
|
|
273
273
|
const kind = options.kind ?? "core";
|
|
274
|
-
const { specs, errors } =
|
|
274
|
+
const { specs, errors } = chunkJXYANBTH_cjs.scanForTools({
|
|
275
275
|
projectPath: root,
|
|
276
276
|
include: options.include ?? ["**/*.ts"],
|
|
277
277
|
tsconfigPath: options.tsconfigPath
|
|
@@ -524,83 +524,83 @@ function expandIpv6(ip) {
|
|
|
524
524
|
|
|
525
525
|
Object.defineProperty(exports, "createAgentTools", {
|
|
526
526
|
enumerable: true,
|
|
527
|
-
get: function () { return
|
|
527
|
+
get: function () { return chunkMUBZV65R_cjs.createAgentTools; }
|
|
528
528
|
});
|
|
529
529
|
Object.defineProperty(exports, "createLangChainToolsAsync", {
|
|
530
530
|
enumerable: true,
|
|
531
|
-
get: function () { return
|
|
531
|
+
get: function () { return chunkMUBZV65R_cjs.createLangChainToolsAsync; }
|
|
532
532
|
});
|
|
533
533
|
Object.defineProperty(exports, "buildFunctionToTool", {
|
|
534
534
|
enumerable: true,
|
|
535
|
-
get: function () { return
|
|
535
|
+
get: function () { return chunkDPOLJN7F_cjs.buildFunctionToTool; }
|
|
536
536
|
});
|
|
537
537
|
Object.defineProperty(exports, "buildMcpPackage", {
|
|
538
538
|
enumerable: true,
|
|
539
|
-
get: function () { return
|
|
539
|
+
get: function () { return chunkDPOLJN7F_cjs.buildMcpPackage; }
|
|
540
540
|
});
|
|
541
541
|
Object.defineProperty(exports, "initProject", {
|
|
542
542
|
enumerable: true,
|
|
543
|
-
get: function () { return
|
|
543
|
+
get: function () { return chunkDPOLJN7F_cjs.initProject; }
|
|
544
544
|
});
|
|
545
545
|
Object.defineProperty(exports, "runGeneratedMCP", {
|
|
546
546
|
enumerable: true,
|
|
547
|
-
get: function () { return
|
|
547
|
+
get: function () { return chunkDPOLJN7F_cjs.runGeneratedMCP; }
|
|
548
548
|
});
|
|
549
549
|
Object.defineProperty(exports, "runMcpServer", {
|
|
550
550
|
enumerable: true,
|
|
551
|
-
get: function () { return
|
|
551
|
+
get: function () { return chunkDPOLJN7F_cjs.runMcpServer; }
|
|
552
552
|
});
|
|
553
553
|
Object.defineProperty(exports, "PTCRuntime", {
|
|
554
554
|
enumerable: true,
|
|
555
|
-
get: function () { return
|
|
555
|
+
get: function () { return chunkJXYANBTH_cjs.PTCRuntime; }
|
|
556
556
|
});
|
|
557
557
|
Object.defineProperty(exports, "createMCPServer", {
|
|
558
558
|
enumerable: true,
|
|
559
|
-
get: function () { return
|
|
559
|
+
get: function () { return chunkJXYANBTH_cjs.createMCPServer; }
|
|
560
560
|
});
|
|
561
561
|
Object.defineProperty(exports, "createMCPServerStreamableHttp", {
|
|
562
562
|
enumerable: true,
|
|
563
|
-
get: function () { return
|
|
563
|
+
get: function () { return chunkJXYANBTH_cjs.createMCPServerStreamableHttp; }
|
|
564
564
|
});
|
|
565
565
|
Object.defineProperty(exports, "createMCPStreamableHttpHandler", {
|
|
566
566
|
enumerable: true,
|
|
567
|
-
get: function () { return
|
|
567
|
+
get: function () { return chunkJXYANBTH_cjs.createMCPStreamableHttpHandler; }
|
|
568
568
|
});
|
|
569
569
|
Object.defineProperty(exports, "createOpenAPIServer", {
|
|
570
570
|
enumerable: true,
|
|
571
|
-
get: function () { return
|
|
571
|
+
get: function () { return chunkJXYANBTH_cjs.createHttpService; }
|
|
572
572
|
});
|
|
573
573
|
Object.defineProperty(exports, "createRuntimeFromConfig", {
|
|
574
574
|
enumerable: true,
|
|
575
|
-
get: function () { return
|
|
575
|
+
get: function () { return chunkJXYANBTH_cjs.createRuntimeFromConfig; }
|
|
576
576
|
});
|
|
577
577
|
Object.defineProperty(exports, "createRuntimeFromConfigSync", {
|
|
578
578
|
enumerable: true,
|
|
579
|
-
get: function () { return
|
|
579
|
+
get: function () { return chunkJXYANBTH_cjs.createRuntimeFromConfigSync; }
|
|
580
580
|
});
|
|
581
581
|
Object.defineProperty(exports, "loadToolConfig", {
|
|
582
582
|
enumerable: true,
|
|
583
|
-
get: function () { return
|
|
583
|
+
get: function () { return chunkJXYANBTH_cjs.loadToolConfig; }
|
|
584
584
|
});
|
|
585
585
|
Object.defineProperty(exports, "resolveSandboxedPath", {
|
|
586
586
|
enumerable: true,
|
|
587
|
-
get: function () { return
|
|
587
|
+
get: function () { return chunkJXYANBTH_cjs.resolveSandboxedPath2; }
|
|
588
588
|
});
|
|
589
589
|
Object.defineProperty(exports, "runMCPServerOverStdio", {
|
|
590
590
|
enumerable: true,
|
|
591
|
-
get: function () { return
|
|
591
|
+
get: function () { return chunkJXYANBTH_cjs.runMCPServerOverStdio; }
|
|
592
592
|
});
|
|
593
593
|
Object.defineProperty(exports, "scan", {
|
|
594
594
|
enumerable: true,
|
|
595
|
-
get: function () { return
|
|
595
|
+
get: function () { return chunkJXYANBTH_cjs.scan; }
|
|
596
596
|
});
|
|
597
597
|
Object.defineProperty(exports, "scanForTools", {
|
|
598
598
|
enumerable: true,
|
|
599
|
-
get: function () { return
|
|
599
|
+
get: function () { return chunkJXYANBTH_cjs.scanForTools; }
|
|
600
600
|
});
|
|
601
601
|
Object.defineProperty(exports, "setSandboxValidationEnabled", {
|
|
602
602
|
enumerable: true,
|
|
603
|
-
get: function () { return
|
|
603
|
+
get: function () { return chunkJXYANBTH_cjs.setSandboxValidationEnabled; }
|
|
604
604
|
});
|
|
605
605
|
Object.defineProperty(exports, "ToolRegistry", {
|
|
606
606
|
enumerable: true,
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { createAgentTools, createLangChainToolsAsync } from './chunk-
|
|
2
|
-
export { buildFunctionToTool, buildMcpPackage, initProject, runGeneratedMCP, runMcpServer } from './chunk-
|
|
3
|
-
import { scanForTools } from './chunk-
|
|
4
|
-
export { PTCRuntime, createMCPServer, createMCPServerStreamableHttp, createMCPStreamableHttpHandler, createHttpService as createOpenAPIServer, createRuntimeFromConfig, createRuntimeFromConfigSync, loadToolConfig, resolveSandboxedPath2 as resolveSandboxedPath, runMCPServerOverStdio, scan, scanForTools, setSandboxValidationEnabled } from './chunk-
|
|
1
|
+
export { createAgentTools, createLangChainToolsAsync } from './chunk-IWM5B5DU.js';
|
|
2
|
+
export { buildFunctionToTool, buildMcpPackage, initProject, runGeneratedMCP, runMcpServer } from './chunk-Y75CRPVF.js';
|
|
3
|
+
import { scanForTools } from './chunk-A5C2MUNA.js';
|
|
4
|
+
export { PTCRuntime, createMCPServer, createMCPServerStreamableHttp, createMCPStreamableHttpHandler, createHttpService as createOpenAPIServer, createRuntimeFromConfig, createRuntimeFromConfigSync, loadToolConfig, resolveSandboxedPath2 as resolveSandboxedPath, runMCPServerOverStdio, scan, scanForTools, setSandboxValidationEnabled } from './chunk-A5C2MUNA.js';
|
|
5
5
|
import { createTaggedError } from './chunk-FCYBA7PR.js';
|
|
6
6
|
export { ToolRegistry, createTaggedError } from './chunk-FCYBA7PR.js';
|
|
7
7
|
import { createToolSpec } from './chunk-ODEHUAR4.js';
|