@easynet/agent-tool 1.0.20 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/createAgentTools.d.ts.map +1 -1
- package/dist/api/main.cjs +14 -14
- package/dist/api/main.js +3 -3
- package/dist/api/runtimeFromConfig.d.ts +15 -11
- package/dist/api/runtimeFromConfig.d.ts.map +1 -1
- package/dist/{chunk-INYWD3OJ.cjs → chunk-DB7WQWTF.cjs} +7 -7
- package/dist/{chunk-INYWD3OJ.cjs.map → chunk-DB7WQWTF.cjs.map} +1 -1
- package/dist/{chunk-TAW4FP3A.cjs → chunk-DF5ETXKZ.cjs} +16 -22
- package/dist/chunk-DF5ETXKZ.cjs.map +1 -0
- package/dist/{chunk-OHDIMQ22.js → chunk-DUWEP2CH.js} +3 -3
- package/dist/{chunk-OHDIMQ22.js.map → chunk-DUWEP2CH.js.map} +1 -1
- package/dist/{chunk-NNMMUG2X.js → chunk-K6AMVYFV.js} +7 -13
- package/dist/chunk-K6AMVYFV.js.map +1 -0
- package/dist/{chunk-6WQYJLVU.cjs → chunk-NJNQCEHG.cjs} +34 -33
- package/dist/chunk-NJNQCEHG.cjs.map +1 -0
- package/dist/{chunk-WKWSXCS4.js → chunk-SAYJJNA7.js} +3 -3
- package/dist/{chunk-WKWSXCS4.js.map → chunk-SAYJJNA7.js.map} +1 -1
- package/dist/{chunk-QP6JJF76.cjs → chunk-XDAMV3HZ.cjs} +9 -9
- package/dist/{chunk-QP6JJF76.cjs.map → chunk-XDAMV3HZ.cjs.map} +1 -1
- package/dist/{chunk-IGMDLCV7.js → chunk-XYJRKFWR.js} +34 -31
- package/dist/chunk-XYJRKFWR.js.map +1 -0
- package/dist/index.cjs +48 -48
- package/dist/index.js +5 -5
- package/dist/utils/cli/index.cjs +17 -17
- package/dist/utils/cli/index.js +3 -3
- package/package.json +1 -1
- package/dist/chunk-6WQYJLVU.cjs.map +0 -1
- package/dist/chunk-IGMDLCV7.js.map +0 -1
- package/dist/chunk-NNMMUG2X.js.map +0 -1
- package/dist/chunk-TAW4FP3A.cjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LANGCHAIN_KIND, createRuntimeFromConfigSync, loadToolConfig, isBarePackageDescriptor,
|
|
1
|
+
import { LANGCHAIN_KIND, createRuntimeFromConfigSync, loadToolConfig, isBarePackageDescriptor, expandToolDescriptorsToRegistryNames, createRuntimeFromConfig, resolveSandboxedPath } from './chunk-XYJRKFWR.js';
|
|
2
2
|
import { DynamicStructuredTool } from '@langchain/core/tools';
|
|
3
3
|
|
|
4
4
|
var DEFAULT_CTX_FACTORY = () => ({
|
|
@@ -112,11 +112,8 @@ function createAgentTools(options) {
|
|
|
112
112
|
const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];
|
|
113
113
|
if (names.length > 0) {
|
|
114
114
|
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
return p !== null && BUILTIN_PKG_NAMES.includes(p.packageName);
|
|
118
|
-
});
|
|
119
|
-
if (allBareBuiltin) {
|
|
115
|
+
const allBarePackages = names.every((n) => isBarePackageDescriptor(String(n)));
|
|
116
|
+
if (allBarePackages) {
|
|
120
117
|
return hub.getLangChainTools();
|
|
121
118
|
}
|
|
122
119
|
const expanded = expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
@@ -134,11 +131,8 @@ async function createLangChainToolsAsync(options = {}) {
|
|
|
134
131
|
const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];
|
|
135
132
|
if (names.length > 0) {
|
|
136
133
|
const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
return p !== null && BUILTIN_PKG_NAMES.includes(p.packageName);
|
|
140
|
-
});
|
|
141
|
-
if (allBareBuiltin) {
|
|
134
|
+
const allBarePackages = names.every((n) => isBarePackageDescriptor(String(n)));
|
|
135
|
+
if (allBarePackages) {
|
|
142
136
|
return hub.getLangChainTools();
|
|
143
137
|
}
|
|
144
138
|
const expanded = expandToolDescriptorsToRegistryNames(names, registryNames);
|
|
@@ -149,5 +143,5 @@ async function createLangChainToolsAsync(options = {}) {
|
|
|
149
143
|
}
|
|
150
144
|
|
|
151
145
|
export { LangChainToolsHub, createAgentTools, createLangChainToolsAsync };
|
|
152
|
-
//# sourceMappingURL=chunk-
|
|
153
|
-
//# sourceMappingURL=chunk-
|
|
146
|
+
//# sourceMappingURL=chunk-K6AMVYFV.js.map
|
|
147
|
+
//# sourceMappingURL=chunk-K6AMVYFV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api/adapters/LangChainToolsHub.ts","../src/api/createAgentTools.ts"],"names":[],"mappings":";;;AAmBA,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;AAExB,IAAA,OAAO,IAAI,qBAAA,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,QAAQ,IAAA,CAAK,WAAA;AAAA,MACb,IAAA,EAAM,OAAO,IAAA,KAAmD;AAC9D,QAAA,MAAM,MAAA,GAAqB;AAAA,UACzB,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,IAAA,EAAM,QAAQ,EAAC;AAAA,UACf,OAAA,EAAS;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;;;AC3EA,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,QAAQ,GAAA,EAAI,EAAG,YAAA,EAAc,EAAC,EAAE;AACnF,EAAA,IAAI,KAAK,cAAA,EAAgB;AACvB,IAAA,MAAM,UAAA,GAAa,cAAA,CAAe,IAAA,CAAK,cAAc,CAAA;AACrD,IAAA,MAAM,UAKF,EAAC;AACL,IAAA,IAAI,UAAA,CAAW,aAAA,IAAiB,OAAO,UAAA,CAAW,kBAAkB,QAAA,EAAU;AAC5E,MAAA,OAAA,CAAQ,WAAA,GAAc,oBAAA,CAAqB,IAAA,CAAK,cAAA,EAAgB,WAAW,aAAa,CAAA;AAAA,IAC1F;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,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,GAAI,2BAAA,CAA4B,WAAW,CAAA;AAC3D,EAAA,MAAM,GAAA,GAAM,IAAI,iBAAA,CAAkB,OAAO,CAAA;AAEzC,EAAA,IAAI,KAAK,cAAA,EAAgB;AACvB,IAAA,MAAM,UAAA,GAAa,cAAA,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,MAAM,uBAAA,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,GAAW,oCAAA,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,MAAM,wBAAwB,WAAW,CAAA;AAC7D,EAAA,MAAM,GAAA,GAAM,IAAI,iBAAA,CAAkB,OAAO,CAAA;AAEzC,EAAA,IAAI,QAAQ,cAAA,EAAgB;AAC1B,IAAA,MAAM,UAAA,GAAa,cAAA,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,MAAM,uBAAA,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,GAAW,oCAAA,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-K6AMVYFV.js","sourcesContent":["/**\n * Exposes all tools from a ToolRegistry + PTCRuntime as LangChain tools\n * for local agent use (e.g. with createReactAgent, AgentExecutor).\n *\n * For most users, use createAgentTools() which loads from tools.yaml and returns\n * StructuredTool[]. Use LangChainToolsHub when you need a custom runtime or ctxFactory.\n *\n * Use: new LangChainToolsHub(runtime, ctxFactory).getLangChainTools()\n */\n\nimport { DynamicStructuredTool, type StructuredToolInterface } from \"@langchain/core/tools\";\nimport type { PTCRuntime } from \"../../core/runtime/PTCRuntime.js\";\nimport type { ToolSpec } from \"../../core/types/ToolSpec.js\";\nimport type { ExecContext } from \"../../core/types/ToolIntent.js\";\nimport type { ToolIntent } from \"../../core/types/ToolIntent.js\";\nimport { LANGCHAIN_KIND } from \"../../tools/langchain/types.js\";\n\nexport type ExecContextFactory = () => ExecContext;\n\nconst DEFAULT_CTX_FACTORY: ExecContextFactory = () => ({\n requestId: `lc-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`,\n taskId: `task-${Date.now()}`,\n permissions: [\n \"read:web\",\n \"read:fs\",\n \"write:fs\",\n \"read:db\",\n \"write:db\",\n \"network\",\n \"workflow\",\n \"danger:destructive\",\n ],\n});\n\n/**\n * Hub that wraps PTCRuntime and exposes every registered tool as a LangChain\n * StructuredTool (DynamicStructuredTool), so local agents (LangChain AgentExecutor,\n * createReactAgent, etc.) can use the same tools as MCP and OpenAPI.\n */\nexport class LangChainToolsHub {\n constructor(\n private readonly runtime: PTCRuntime,\n private readonly ctxFactory: ExecContextFactory = DEFAULT_CTX_FACTORY,\n ) {}\n\n /**\n * Returns all registered tools as LangChain StructuredTool[].\n * Each tool invokes the runtime through the full pipeline (policy, HITL, etc.).\n */\n getLangChainTools(): StructuredToolInterface[] {\n const registry = this.runtime.getRegistry();\n const specs = registry.snapshot();\n\n return specs.map((spec) => this.specToLangChainTool(spec));\n }\n\n /**\n * Returns LangChain tools for a subset of tools (by name or query).\n */\n getLangChainToolsForNames(toolNames: string[]): StructuredToolInterface[] {\n const registry = this.runtime.getRegistry();\n const set = new Set(toolNames);\n const specs = registry.snapshot().filter((s) => set.has(s.name));\n return specs.map((spec) => this.specToLangChainTool(spec));\n }\n\n private specToLangChainTool(spec: ToolSpec): DynamicStructuredTool {\n const runtime = this.runtime;\n const ctxFactory = this.ctxFactory;\n\n return new DynamicStructuredTool({\n name: spec.name,\n description: spec.description ?? `Tool: ${spec.name}`,\n schema: spec.inputSchema as Record<string, unknown>,\n func: async (args: Record<string, unknown>): Promise<string> => {\n const intent: ToolIntent = {\n tool: spec.name,\n args: args ?? {},\n purpose: LANGCHAIN_KIND,\n };\n const ctx = ctxFactory();\n const result = await runtime.invoke(intent, ctx);\n\n if (result.ok) {\n return typeof result.result === \"string\"\n ? result.result\n : JSON.stringify(result.result);\n }\n\n const err = result.error;\n const message = err?.message ?? \"Tool failed\";\n const details = err?.details;\n return JSON.stringify(\n details != null ? { error: message, details } : { error: message },\n );\n },\n });\n }\n}\n","/**\n * Create LangChain tools from config (sync or async). Uses PTCRuntime + registry\n * and exposes tools via LangChainToolsHub. All invokes go through PTC Intent.\n */\n\nimport { loadToolConfig, resolveSandboxedPath } from \"../tools/util/toolConfig.js\";\nimport {\n expandToolDescriptorsToRegistryNames,\n isBarePackageDescriptor,\n} from \"../tools/util/toolDescriptor.js\";\nimport { 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: [] };\n if (opts.configFilePath) {\n const toolConfig = loadToolConfig(opts.configFilePath);\n const updates: {\n sandboxRoot?: string;\n allowedHosts?: string[];\n blockedHosts?: string[];\n blockedCidrs?: string[];\n } = {};\n if (toolConfig.sandboxedPath && typeof toolConfig.sandboxedPath === \"string\") {\n updates.sandboxRoot = resolveSandboxedPath(opts.configFilePath, toolConfig.sandboxedPath);\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 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"]}
|
|
@@ -1731,14 +1731,14 @@ async function importFromCache(packageRoot) {
|
|
|
1731
1731
|
fileUrl
|
|
1732
1732
|
);
|
|
1733
1733
|
}
|
|
1734
|
-
var requireFromPackage = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-
|
|
1734
|
+
var requireFromPackage = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-NJNQCEHG.cjs', document.baseURI).href)));
|
|
1735
1735
|
function getProjectRequire() {
|
|
1736
1736
|
const cwd = process.cwd();
|
|
1737
1737
|
if (fs.existsSync(path.join(cwd, "package.json"))) return module$1.createRequire(path.join(cwd, "package.json"));
|
|
1738
1738
|
if (fs.existsSync(path.join(cwd, "tool.yaml"))) return module$1.createRequire(path.join(cwd, "tool.yaml"));
|
|
1739
1739
|
return null;
|
|
1740
1740
|
}
|
|
1741
|
-
var
|
|
1741
|
+
var DEFAULT_EXTENSION_PACKAGES = [
|
|
1742
1742
|
"@easynet/agent-tool-builtin-tools",
|
|
1743
1743
|
"@easynet/agent-tool-builtin",
|
|
1744
1744
|
"@easynet/agent-tool-buildin"
|
|
@@ -1759,12 +1759,12 @@ function getInstalledPackageVersion(packageName) {
|
|
|
1759
1759
|
}
|
|
1760
1760
|
return null;
|
|
1761
1761
|
}
|
|
1762
|
-
function
|
|
1762
|
+
function loadExtensionFromNodeModules() {
|
|
1763
1763
|
const projectRequire = getProjectRequire();
|
|
1764
1764
|
const requirers = [requireFromPackage];
|
|
1765
1765
|
if (projectRequire) requirers.push(projectRequire);
|
|
1766
1766
|
for (const req of requirers) {
|
|
1767
|
-
for (const pkg of
|
|
1767
|
+
for (const pkg of DEFAULT_EXTENSION_PACKAGES) {
|
|
1768
1768
|
try {
|
|
1769
1769
|
const mod = req(pkg);
|
|
1770
1770
|
if (mod && typeof mod.registerCoreTools === "function") return { registerCoreTools: mod.registerCoreTools, packageName: pkg };
|
|
@@ -1818,7 +1818,7 @@ function parseNpmDescriptor(entry) {
|
|
|
1818
1818
|
const version = rest.slice(at + 1).split("#")[0]?.trim() || "latest";
|
|
1819
1819
|
return { packageName, version };
|
|
1820
1820
|
}
|
|
1821
|
-
function
|
|
1821
|
+
function loadExtensionFromToolYamlCache(configFilePath, stepLog) {
|
|
1822
1822
|
const localPath = path.isAbsolute(configFilePath) ? configFilePath : path.resolve(process.cwd(), configFilePath);
|
|
1823
1823
|
if (!fs.existsSync(localPath)) return null;
|
|
1824
1824
|
const config = loadToolConfig(localPath);
|
|
@@ -1826,11 +1826,11 @@ function loadBuiltinFromToolYamlCache(configFilePath, stepLog) {
|
|
|
1826
1826
|
if (!Array.isArray(tools)) return null;
|
|
1827
1827
|
const cacheBase = getCacheBaseFromToolConfig(localPath);
|
|
1828
1828
|
const cacheOpts = cacheBase ? { cacheBase } : {};
|
|
1829
|
-
if (stepLog) stepLog(`Loading
|
|
1829
|
+
if (stepLog) stepLog(`Loading extension from tool.yaml cache (cacheBase: ${cacheBase ?? "~/.agent/cache"})`);
|
|
1830
1830
|
for (const entry of tools) {
|
|
1831
1831
|
const entryStr = String(entry).trim();
|
|
1832
1832
|
const parsed = parseNpmDescriptor(entryStr);
|
|
1833
|
-
if (!parsed
|
|
1833
|
+
if (!parsed) continue;
|
|
1834
1834
|
for (const opts of [cacheOpts, {}]) {
|
|
1835
1835
|
try {
|
|
1836
1836
|
if (stepLog && Object.keys(opts).length === 0 && cacheBase) stepLog("Falling back to default cache ~/.agent/cache");
|
|
@@ -1852,7 +1852,7 @@ function loadBuiltinFromToolYamlCache(configFilePath, stepLog) {
|
|
|
1852
1852
|
}
|
|
1853
1853
|
return null;
|
|
1854
1854
|
}
|
|
1855
|
-
async function
|
|
1855
|
+
async function loadExtensionFromToolYamlCacheAsync(configFilePath, stepLog) {
|
|
1856
1856
|
const localPath = path.isAbsolute(configFilePath) ? configFilePath : path.resolve(process.cwd(), configFilePath);
|
|
1857
1857
|
if (!fs.existsSync(localPath)) return null;
|
|
1858
1858
|
const config = loadToolConfig(localPath);
|
|
@@ -1860,11 +1860,11 @@ async function loadBuiltinFromToolYamlCacheAsync(configFilePath, stepLog) {
|
|
|
1860
1860
|
if (!Array.isArray(tools)) return null;
|
|
1861
1861
|
const cacheBase = getCacheBaseFromToolConfig(localPath);
|
|
1862
1862
|
const cacheOpts = cacheBase ? { cacheBase } : {};
|
|
1863
|
-
if (stepLog) stepLog("Loading
|
|
1863
|
+
if (stepLog) stepLog("Loading extension from tool.yaml cache (async)");
|
|
1864
1864
|
for (const entry of tools) {
|
|
1865
1865
|
const entryStr = String(entry).trim();
|
|
1866
1866
|
const parsed = parseNpmDescriptor(entryStr);
|
|
1867
|
-
if (!parsed
|
|
1867
|
+
if (!parsed) continue;
|
|
1868
1868
|
for (const opts of [cacheOpts, {}]) {
|
|
1869
1869
|
try {
|
|
1870
1870
|
if (stepLog && Object.keys(opts).length === 0 && cacheBase) stepLog("Falling back to default cache ~/.agent/cache");
|
|
@@ -1895,15 +1895,16 @@ function createRuntimeFromConfigSync(options = {}) {
|
|
|
1895
1895
|
const registry = new chunkONIBCU2Y_cjs.ToolRegistry();
|
|
1896
1896
|
const stepLog = options.stepLog;
|
|
1897
1897
|
if (options.coreTools !== void 0) {
|
|
1898
|
-
if (stepLog) stepLog("Trying
|
|
1899
|
-
let
|
|
1900
|
-
if (
|
|
1901
|
-
if (stepLog) stepLog("Registered
|
|
1902
|
-
const descriptor = `npm:${
|
|
1903
|
-
const resolvedVersion = getInstalledPackageVersion(
|
|
1898
|
+
if (stepLog) stepLog("Trying extension from node_modules");
|
|
1899
|
+
let extensionNode = loadExtensionFromNodeModules();
|
|
1900
|
+
if (extensionNode) {
|
|
1901
|
+
if (stepLog) stepLog("Registered extension from node_modules");
|
|
1902
|
+
const descriptor = `npm:${extensionNode.packageName}`;
|
|
1903
|
+
const resolvedVersion = getInstalledPackageVersion(extensionNode.packageName);
|
|
1904
1904
|
const prefix = npmDescriptorToRegistryPrefix(descriptor, resolvedVersion ?? void 0);
|
|
1905
1905
|
const reg = prefix ? createPrefixingRegistry(registry, prefix) : registry;
|
|
1906
|
-
const
|
|
1906
|
+
const coreOptions = prefix ? { registryPrefix: prefix } : void 0;
|
|
1907
|
+
const coreAdapter = extensionNode.registerCoreTools(reg, options.coreTools, coreOptions);
|
|
1907
1908
|
const runtime3 = new PTCRuntime({ registry });
|
|
1908
1909
|
runtime3.registerAdapter(coreAdapter);
|
|
1909
1910
|
if (options.exampleTools !== void 0) {
|
|
@@ -1916,13 +1917,14 @@ function createRuntimeFromConfigSync(options = {}) {
|
|
|
1916
1917
|
return { runtime: runtime3, registry };
|
|
1917
1918
|
}
|
|
1918
1919
|
if (options.configFilePath) {
|
|
1919
|
-
if (stepLog) stepLog("No
|
|
1920
|
-
const
|
|
1921
|
-
if (
|
|
1922
|
-
if (stepLog) stepLog("Registered
|
|
1923
|
-
const prefix = npmDescriptorToRegistryPrefix(
|
|
1920
|
+
if (stepLog) stepLog("No extension in node_modules, loading from tool.yaml cache");
|
|
1921
|
+
const extensionCache = loadExtensionFromToolYamlCache(options.configFilePath, stepLog);
|
|
1922
|
+
if (extensionCache) {
|
|
1923
|
+
if (stepLog) stepLog("Registered extension from cache");
|
|
1924
|
+
const prefix = npmDescriptorToRegistryPrefix(extensionCache.descriptor, extensionCache.resolvedVersion);
|
|
1924
1925
|
const reg = prefix ? createPrefixingRegistry(registry, prefix) : registry;
|
|
1925
|
-
const
|
|
1926
|
+
const coreOptions = prefix ? { registryPrefix: prefix } : void 0;
|
|
1927
|
+
const coreAdapter = extensionCache.registerCoreTools(reg, options.coreTools, coreOptions);
|
|
1926
1928
|
const runtime3 = new PTCRuntime({ registry });
|
|
1927
1929
|
runtime3.registerAdapter(coreAdapter);
|
|
1928
1930
|
if (options.exampleTools !== void 0) {
|
|
@@ -1953,14 +1955,15 @@ function createRuntimeFromConfigSync(options = {}) {
|
|
|
1953
1955
|
async function createRuntimeFromConfig(options = {}) {
|
|
1954
1956
|
const syncResult = createRuntimeFromConfigSync(options);
|
|
1955
1957
|
if (options.coreTools !== void 0 && options.configFilePath && syncResult.registry.snapshot().length === 0) {
|
|
1956
|
-
if (options.stepLog) options.stepLog("No
|
|
1957
|
-
const
|
|
1958
|
-
if (
|
|
1959
|
-
if (options.stepLog) options.stepLog("Registered
|
|
1958
|
+
if (options.stepLog) options.stepLog("No extension from sync, trying async cache load");
|
|
1959
|
+
const extension = await loadExtensionFromToolYamlCacheAsync(options.configFilePath, options.stepLog);
|
|
1960
|
+
if (extension) {
|
|
1961
|
+
if (options.stepLog) options.stepLog("Registered extension from async cache");
|
|
1960
1962
|
const registry = new chunkONIBCU2Y_cjs.ToolRegistry();
|
|
1961
|
-
const prefix = npmDescriptorToRegistryPrefix(
|
|
1963
|
+
const prefix = npmDescriptorToRegistryPrefix(extension.descriptor, extension.resolvedVersion);
|
|
1962
1964
|
const reg = prefix ? createPrefixingRegistry(registry, prefix) : registry;
|
|
1963
|
-
const
|
|
1965
|
+
const coreOptions = prefix ? { registryPrefix: prefix } : void 0;
|
|
1966
|
+
const coreAdapter = extension.registerCoreTools(reg, options.coreTools, coreOptions);
|
|
1964
1967
|
const runtime = new PTCRuntime({ registry });
|
|
1965
1968
|
runtime.registerAdapter(coreAdapter);
|
|
1966
1969
|
return { runtime, registry };
|
|
@@ -1976,7 +1979,6 @@ var MCP_KIND = "mcp";
|
|
|
1976
1979
|
var LANGCHAIN_KIND = "langchain";
|
|
1977
1980
|
var LANGCHAIN_DIR_NAME = "langchain";
|
|
1978
1981
|
|
|
1979
|
-
exports.BUILTIN_PKG_NAMES = BUILTIN_PKG_NAMES;
|
|
1980
1982
|
exports.BudgetManager = BudgetManager;
|
|
1981
1983
|
exports.EventLog = EventLog;
|
|
1982
1984
|
exports.LANGCHAIN_DIR_NAME = LANGCHAIN_DIR_NAME;
|
|
@@ -2004,12 +2006,11 @@ exports.isNpmToolDescriptor = isNpmToolDescriptor;
|
|
|
2004
2006
|
exports.loadToolConfig = loadToolConfig;
|
|
2005
2007
|
exports.normalizeToolList = normalizeToolList;
|
|
2006
2008
|
exports.npmDescriptorToRegistryPrefix = npmDescriptorToRegistryPrefix;
|
|
2007
|
-
exports.parseNpmDescriptor = parseNpmDescriptor;
|
|
2008
2009
|
exports.parseNpmToolDescriptor = parseNpmToolDescriptor;
|
|
2009
2010
|
exports.resolveNpmToolDescriptor = resolveNpmToolDescriptor;
|
|
2010
2011
|
exports.resolveSandboxedPath = resolveSandboxedPath;
|
|
2011
2012
|
exports.resolveToolDescriptor = resolveToolDescriptor;
|
|
2012
2013
|
exports.sanitizeForLog = sanitizeForLog;
|
|
2013
2014
|
exports.summarizeForLog = summarizeForLog;
|
|
2014
|
-
//# sourceMappingURL=chunk-
|
|
2015
|
-
//# sourceMappingURL=chunk-
|
|
2015
|
+
//# sourceMappingURL=chunk-NJNQCEHG.cjs.map
|
|
2016
|
+
//# sourceMappingURL=chunk-NJNQCEHG.cjs.map
|