@easynet/agent-tool 1.0.52 → 1.0.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunk3GK6IK3N_cjs = require('./chunk-3GK6IK3N.cjs');
3
+ var chunkWFPHIYB6_cjs = require('./chunk-WFPHIYB6.cjs');
4
4
  var chunkUUNG3GL3_cjs = require('./chunk-UUNG3GL3.cjs');
5
5
  var tools = require('@langchain/core/tools');
6
+ var agentCommon = require('@easynet/agent-common');
6
7
 
7
8
  function hasArgsWrapper(inputSchema) {
8
9
  const s = inputSchema;
@@ -69,11 +70,11 @@ var LangChainToolsHub = class {
69
70
  description: spec.description ?? `Tool: ${spec.name}`,
70
71
  schema,
71
72
  func: async (args) => {
72
- const flat = args ?? {};
73
+ const flat = agentCommon.stripNullishObjectFields(args ?? {});
73
74
  const intent = {
74
75
  tool: spec.name,
75
76
  args: hasArgsWrapper(enriched.inputSchema) ? { args: flat } : flat,
76
- purpose: chunk3GK6IK3N_cjs.LANGCHAIN_KIND
77
+ purpose: chunkWFPHIYB6_cjs.LANGCHAIN_KIND
77
78
  };
78
79
  const ctx = ctxFactory();
79
80
  const result = await runtime.invoke(intent, ctx);
@@ -108,10 +109,10 @@ function mergeHostLists(a, b) {
108
109
  function runtimeOptionsFromConfig(opts) {
109
110
  const coreTools = opts.coreTools ?? { sandboxRoot: process.cwd(), allowedHosts: [], enableSandboxValidation: false };
110
111
  if (opts.configFilePath) {
111
- const toolConfig = chunk3GK6IK3N_cjs.loadToolConfig(opts.configFilePath);
112
+ const toolConfig = chunkWFPHIYB6_cjs.loadToolConfig(opts.configFilePath);
112
113
  const updates = {};
113
114
  if (toolConfig.sandboxedPath && typeof toolConfig.sandboxedPath === "string") {
114
- updates.sandboxRoot = chunk3GK6IK3N_cjs.resolveSandboxedPath(opts.configFilePath, toolConfig.sandboxedPath);
115
+ updates.sandboxRoot = chunkWFPHIYB6_cjs.resolveSandboxedPath(opts.configFilePath, toolConfig.sandboxedPath);
115
116
  }
116
117
  if (typeof toolConfig.enableSandboxValidation === "boolean") {
117
118
  updates.enableSandboxValidation = toolConfig.enableSandboxValidation;
@@ -134,7 +135,7 @@ function runtimeOptionsFromConfig(opts) {
134
135
  const packageDefaults = { ...coreTools.packageDefaults };
135
136
  if (toolConfig.packageToolDefaults != null && Object.keys(toolConfig.packageToolDefaults).length > 0) {
136
137
  for (const [descriptor, pkgConfig] of Object.entries(toolConfig.packageToolDefaults)) {
137
- const prefix = descriptor.startsWith("file:") ? chunk3GK6IK3N_cjs.fileDescriptorToPackagePrefix(descriptor) : chunk3GK6IK3N_cjs.npmDescriptorToPackagePrefixWithVersion(descriptor);
138
+ const prefix = descriptor.startsWith("file:") ? chunkWFPHIYB6_cjs.fileDescriptorToPackagePrefix(descriptor) : chunkWFPHIYB6_cjs.npmDescriptorToPackagePrefixWithVersion(descriptor);
138
139
  if (!prefix) continue;
139
140
  const pkgDefaults = pkgConfig?.defaults != null && typeof pkgConfig.defaults === "object" && !Array.isArray(pkgConfig.defaults) ? pkgConfig.defaults : {};
140
141
  if (Object.keys(pkgDefaults).length > 0) {
@@ -164,18 +165,18 @@ function runtimeOptionsFromConfig(opts) {
164
165
  function createAgentTools(options) {
165
166
  const opts = typeof options === "string" ? { configFilePath: options } : options ?? {};
166
167
  const runtimeOpts = runtimeOptionsFromConfig(opts);
167
- const { runtime } = chunk3GK6IK3N_cjs.createRuntimeFromConfigSync(runtimeOpts);
168
+ const { runtime } = chunkWFPHIYB6_cjs.createRuntimeFromConfigSync(runtimeOpts);
168
169
  const hub = new LangChainToolsHub(runtime);
169
170
  if (opts.configFilePath) {
170
- const toolConfig = chunk3GK6IK3N_cjs.loadToolConfig(opts.configFilePath);
171
+ const toolConfig = chunkWFPHIYB6_cjs.loadToolConfig(opts.configFilePath);
171
172
  const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];
172
173
  if (names.length > 0) {
173
174
  const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
174
- const allBarePackages = names.every((n) => chunk3GK6IK3N_cjs.isBarePackageDescriptor(String(n)));
175
+ const allBarePackages = names.every((n) => chunkWFPHIYB6_cjs.isBarePackageDescriptor(String(n)));
175
176
  if (allBarePackages) {
176
177
  return hub.getLangChainTools();
177
178
  }
178
- const expanded = chunk3GK6IK3N_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
179
+ const expanded = chunkWFPHIYB6_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
179
180
  return hub.getLangChainToolsForNames(expanded);
180
181
  }
181
182
  }
@@ -183,18 +184,18 @@ function createAgentTools(options) {
183
184
  }
184
185
  async function createLangChainToolsAsync(options = {}) {
185
186
  const runtimeOpts = runtimeOptionsFromConfig(options);
186
- const { runtime } = await chunk3GK6IK3N_cjs.createRuntimeFromConfig(runtimeOpts);
187
+ const { runtime } = await chunkWFPHIYB6_cjs.createRuntimeFromConfig(runtimeOpts);
187
188
  const hub = new LangChainToolsHub(runtime);
188
189
  if (options.configFilePath) {
189
- const toolConfig = chunk3GK6IK3N_cjs.loadToolConfig(options.configFilePath);
190
+ const toolConfig = chunkWFPHIYB6_cjs.loadToolConfig(options.configFilePath);
190
191
  const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];
191
192
  if (names.length > 0) {
192
193
  const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
193
- const allBarePackages = names.every((n) => chunk3GK6IK3N_cjs.isBarePackageDescriptor(String(n)));
194
+ const allBarePackages = names.every((n) => chunkWFPHIYB6_cjs.isBarePackageDescriptor(String(n)));
194
195
  if (allBarePackages) {
195
196
  return hub.getLangChainTools();
196
197
  }
197
- const expanded = chunk3GK6IK3N_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
198
+ const expanded = chunkWFPHIYB6_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
198
199
  return hub.getLangChainToolsForNames(expanded);
199
200
  }
200
201
  }
@@ -203,5 +204,5 @@ async function createLangChainToolsAsync(options = {}) {
203
204
 
204
205
  exports.createAgentTools = createAgentTools;
205
206
  exports.createLangChainToolsAsync = createLangChainToolsAsync;
206
- //# sourceMappingURL=chunk-E3JK57SR.cjs.map
207
- //# sourceMappingURL=chunk-E3JK57SR.cjs.map
207
+ //# sourceMappingURL=chunk-VXEQDRMQ.cjs.map
208
+ //# sourceMappingURL=chunk-VXEQDRMQ.cjs.map
@@ -0,0 +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-VXEQDRMQ.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"]}
@@ -1302,7 +1302,7 @@ async function requireHumanApproval(spec, args, ctx, deps) {
1302
1302
  deps.logger.trace("hitl.granted", { tool: spec.name, sideEffect, requestId: ctx.requestId });
1303
1303
  }
1304
1304
  async function executeWithBudget(spec, args, ctx, spanId, deps) {
1305
- const adapter = deps.adapters.get(spec.kind);
1305
+ const adapter = deps.adaptersByToolName.get(spec.name) ?? deps.adapters.get(spec.kind);
1306
1306
  if (!adapter) {
1307
1307
  throw chunkWQMHMPNC_cjs.createTaggedError(
1308
1308
  "TOOL_NOT_FOUND",
@@ -1456,6 +1456,7 @@ function sanitizeArgs(args) {
1456
1456
  var PTCRuntime = class {
1457
1457
  registry;
1458
1458
  adapters = /* @__PURE__ */ new Map();
1459
+ adaptersByToolName = /* @__PURE__ */ new Map();
1459
1460
  validator;
1460
1461
  policy;
1461
1462
  budget;
@@ -1494,6 +1495,15 @@ var PTCRuntime = class {
1494
1495
  registerAdapter(adapter) {
1495
1496
  this.adapters.set(adapter.kind, adapter);
1496
1497
  }
1498
+ /**
1499
+ * Bind an adapter to exact tool keys (full package path + tool path).
1500
+ * This avoids collisions when multiple extensions share the same kind.
1501
+ */
1502
+ registerAdapterForTools(toolNames, adapter) {
1503
+ for (const name of toolNames) {
1504
+ this.adaptersByToolName.set(name, adapter);
1505
+ }
1506
+ }
1497
1507
  /**
1498
1508
  * Get an adapter by kind (e.g. "mcp"). Use to set MCP client via adapter.setClient().
1499
1509
  */
@@ -1651,6 +1661,7 @@ var PTCRuntime = class {
1651
1661
  return {
1652
1662
  registry: this.registry,
1653
1663
  adapters: this.adapters,
1664
+ adaptersByToolName: this.adaptersByToolName,
1654
1665
  validator: this.validator,
1655
1666
  policy: this.policy,
1656
1667
  budget: this.budget,
@@ -1756,7 +1767,7 @@ function isWithinRoot(path$1, root) {
1756
1767
  }
1757
1768
 
1758
1769
  // src/api/runtimeFromConfig.ts
1759
- var requireFromPackage = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-3GK6IK3N.cjs', document.baseURI).href)));
1770
+ var requireFromPackage = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-WFPHIYB6.cjs', document.baseURI).href)));
1760
1771
  function getProjectRequire() {
1761
1772
  const cwd = process.cwd();
1762
1773
  if (fs.existsSync(path.join(cwd, "package.json"))) return module$1.createRequire(path.join(cwd, "package.json"));
@@ -1813,7 +1824,10 @@ function loadExtensionFromNodeModules() {
1813
1824
  function createPrefixingRegistry(registry, prefix) {
1814
1825
  return {
1815
1826
  register(spec) {
1816
- registry.register({ ...spec, name: prefix + chunkQEJF3KDV_cjs.normalizeToolName(spec.name) });
1827
+ registry.register({
1828
+ ...spec,
1829
+ name: prefix + chunkQEJF3KDV_cjs.normalizeToolName(spec.name)
1830
+ });
1817
1831
  },
1818
1832
  bulkRegister(specs) {
1819
1833
  specs.forEach((s) => this.register(s));
@@ -2033,10 +2047,13 @@ function createRuntimeFromConfigSync(options = {}) {
2033
2047
  if (stepLog) stepLog(`Registered ${all.length} extension(s) from tool.yaml`);
2034
2048
  const runtime3 = new PTCRuntime({ registry });
2035
2049
  for (const ext of all) {
2050
+ const before = new Set(registry.snapshot().map((s) => s.name));
2036
2051
  const prefix = ext.descriptor.startsWith("file:") ? fileDescriptorToRegistryPrefix(ext.descriptor) : npmDescriptorToRegistryPrefix(ext.descriptor, ext.resolvedVersion);
2037
- const reg = prefix ? createPrefixingRegistry(registry, prefix) : registry;
2052
+ const reg = createPrefixingRegistry(registry, prefix ?? "");
2038
2053
  const adapter = ext.register(reg, options.coreTools);
2039
2054
  runtime3.registerAdapter(adapter);
2055
+ const registeredNow = registry.snapshot().map((s) => s.name).filter((name) => !before.has(name));
2056
+ runtime3.registerAdapterForTools(registeredNow, adapter);
2040
2057
  }
2041
2058
  return { runtime: runtime3, registry };
2042
2059
  }
@@ -2047,11 +2064,14 @@ function createRuntimeFromConfigSync(options = {}) {
2047
2064
  if (stepLog) stepLog("Registered extension from node_modules");
2048
2065
  const descriptor = `npm:${extensionNode.packageName}`;
2049
2066
  const resolvedVersion = getInstalledPackageVersion(extensionNode.packageName) ?? npm.resolveLatestVersionFromRegistry(extensionNode.packageName);
2067
+ const before = new Set(registry.snapshot().map((s) => s.name));
2050
2068
  const prefix = npmDescriptorToRegistryPrefix(descriptor, resolvedVersion);
2051
- const reg = prefix ? createPrefixingRegistry(registry, prefix) : registry;
2069
+ const reg = createPrefixingRegistry(registry, prefix ?? "");
2052
2070
  const coreAdapter = extensionNode.register(reg, options.coreTools);
2053
2071
  const runtime3 = new PTCRuntime({ registry });
2054
2072
  runtime3.registerAdapter(coreAdapter);
2073
+ const registeredNow = registry.snapshot().map((s) => s.name).filter((name) => !before.has(name));
2074
+ runtime3.registerAdapterForTools(registeredNow, coreAdapter);
2055
2075
  return { runtime: runtime3, registry };
2056
2076
  }
2057
2077
  const runtime2 = new PTCRuntime({ registry });
@@ -2069,10 +2089,13 @@ async function createRuntimeFromConfig(options = {}) {
2069
2089
  const registry = new chunkWQMHMPNC_cjs.ToolRegistry();
2070
2090
  const runtime = new PTCRuntime({ registry });
2071
2091
  for (const ext of all) {
2092
+ const before = new Set(registry.snapshot().map((s) => s.name));
2072
2093
  const prefix = ext.descriptor.startsWith("file:") ? fileDescriptorToRegistryPrefix(ext.descriptor) : npmDescriptorToRegistryPrefix(ext.descriptor, ext.resolvedVersion);
2073
- const reg = prefix ? createPrefixingRegistry(registry, prefix) : registry;
2094
+ const reg = createPrefixingRegistry(registry, prefix ?? "");
2074
2095
  const adapter = ext.register(reg, options.coreTools);
2075
2096
  runtime.registerAdapter(adapter);
2097
+ const registeredNow = registry.snapshot().map((s) => s.name).filter((name) => !before.has(name));
2098
+ runtime.registerAdapterForTools(registeredNow, adapter);
2076
2099
  }
2077
2100
  return { runtime, registry };
2078
2101
  }
@@ -2575,5 +2598,5 @@ exports.resolveSandboxedPath2 = resolveSandboxedPath2;
2575
2598
  exports.resolveToolDescriptor = resolveToolDescriptor;
2576
2599
  exports.runMCPServerOverStdio = runMCPServerOverStdio;
2577
2600
  exports.setSandboxValidationEnabled = setSandboxValidationEnabled;
2578
- //# sourceMappingURL=chunk-3GK6IK3N.cjs.map
2579
- //# sourceMappingURL=chunk-3GK6IK3N.cjs.map
2601
+ //# sourceMappingURL=chunk-WFPHIYB6.cjs.map
2602
+ //# sourceMappingURL=chunk-WFPHIYB6.cjs.map