@easynet/agent-tool 1.0.60 → 1.0.62

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.
Files changed (114) hide show
  1. package/dist/api/adapters/LangChainToolsHub.d.ts.map +1 -1
  2. package/dist/api/expose/extension-init/initExtension.d.ts.map +1 -1
  3. package/dist/api/expose/index.d.ts +1 -1
  4. package/dist/api/expose/index.d.ts.map +1 -1
  5. package/dist/api/expose/mcp-build/build.d.ts +1 -3
  6. package/dist/api/expose/mcp-build/build.d.ts.map +1 -1
  7. package/dist/api/expose/mcp-build/index.d.ts +2 -2
  8. package/dist/api/expose/mcp-build/index.d.ts.map +1 -1
  9. package/dist/api/expose/mcp-build/run.d.ts +1 -3
  10. package/dist/api/expose/mcp-build/run.d.ts.map +1 -1
  11. package/dist/api/main.cjs +35 -15
  12. package/dist/api/main.d.ts +34 -0
  13. package/dist/api/main.d.ts.map +1 -1
  14. package/dist/api/main.js +8 -4
  15. package/dist/api/runtimeFromConfig.d.ts +2 -5
  16. package/dist/api/runtimeFromConfig.d.ts.map +1 -1
  17. package/dist/api/runtimeFromConfig.helpers.d.ts +12 -0
  18. package/dist/api/runtimeFromConfig.helpers.d.ts.map +1 -0
  19. package/dist/build.cjs +32 -0
  20. package/dist/build.cjs.map +1 -0
  21. package/dist/build.d.ts +13 -0
  22. package/dist/build.d.ts.map +1 -0
  23. package/dist/build.js +7 -0
  24. package/dist/build.js.map +1 -0
  25. package/dist/chunk-45S2HPVU.js +463 -0
  26. package/dist/chunk-45S2HPVU.js.map +1 -0
  27. package/dist/{chunk-Y75CRPVF.js → chunk-5J27MF7S.js} +11 -12
  28. package/dist/chunk-5J27MF7S.js.map +1 -0
  29. package/dist/chunk-DEDDPMBU.js +3 -0
  30. package/dist/chunk-DEDDPMBU.js.map +1 -0
  31. package/dist/chunk-FWWN4D2F.js +3 -0
  32. package/dist/chunk-FWWN4D2F.js.map +1 -0
  33. package/dist/chunk-ICHSEIZN.cjs +4 -0
  34. package/dist/chunk-ICHSEIZN.cjs.map +1 -0
  35. package/dist/chunk-JNIWNSCQ.cjs +494 -0
  36. package/dist/chunk-JNIWNSCQ.cjs.map +1 -0
  37. package/dist/{chunk-JXYANBTH.cjs → chunk-M2GEHWPN.cjs} +88 -1675
  38. package/dist/chunk-M2GEHWPN.cjs.map +1 -0
  39. package/dist/chunk-NKYFYALQ.js +181 -0
  40. package/dist/chunk-NKYFYALQ.js.map +1 -0
  41. package/dist/{chunk-DPOLJN7F.cjs → chunk-NMZ4IMEW.cjs} +22 -25
  42. package/dist/chunk-NMZ4IMEW.cjs.map +1 -0
  43. package/dist/chunk-NOGGIM7B.cjs +4 -0
  44. package/dist/chunk-NOGGIM7B.cjs.map +1 -0
  45. package/dist/chunk-OG5ZSXQ5.cjs +1099 -0
  46. package/dist/chunk-OG5ZSXQ5.cjs.map +1 -0
  47. package/dist/{chunk-WQMHMPNC.cjs → chunk-PYCCJF7C.cjs} +2 -68
  48. package/dist/chunk-PYCCJF7C.cjs.map +1 -0
  49. package/dist/chunk-QXQ4477T.js +49 -0
  50. package/dist/chunk-QXQ4477T.js.map +1 -0
  51. package/dist/chunk-R55NXJIH.cjs +184 -0
  52. package/dist/chunk-R55NXJIH.cjs.map +1 -0
  53. package/dist/{chunk-A5C2MUNA.js → chunk-RJAF5XY6.js} +72 -1630
  54. package/dist/chunk-RJAF5XY6.js.map +1 -0
  55. package/dist/chunk-RZTTO5MQ.js +65 -0
  56. package/dist/chunk-RZTTO5MQ.js.map +1 -0
  57. package/dist/{chunk-MUBZV65R.cjs → chunk-U67QDQFQ.cjs} +74 -41
  58. package/dist/chunk-U67QDQFQ.cjs.map +1 -0
  59. package/dist/chunk-WO4LZKPQ.cjs +359 -0
  60. package/dist/chunk-WO4LZKPQ.cjs.map +1 -0
  61. package/dist/{chunk-FCYBA7PR.js → chunk-WUMLZERG.js} +3 -62
  62. package/dist/chunk-WUMLZERG.js.map +1 -0
  63. package/dist/chunk-XPGHS4W7.cjs +73 -0
  64. package/dist/chunk-XPGHS4W7.cjs.map +1 -0
  65. package/dist/chunk-YL6RC7HQ.cjs +4 -0
  66. package/dist/chunk-YL6RC7HQ.cjs.map +1 -0
  67. package/dist/chunk-YLWTSNTT.js +3 -0
  68. package/dist/chunk-YLWTSNTT.js.map +1 -0
  69. package/dist/{chunk-IWM5B5DU.js → chunk-YMHUDRYE.js} +60 -31
  70. package/dist/chunk-YMHUDRYE.js.map +1 -0
  71. package/dist/chunk-YPGF5Y2Y.js +341 -0
  72. package/dist/chunk-YPGF5Y2Y.js.map +1 -0
  73. package/dist/chunk-YRFUGA3C.js +1072 -0
  74. package/dist/chunk-YRFUGA3C.js.map +1 -0
  75. package/dist/chunk-ZDSZHEQU.cjs +52 -0
  76. package/dist/chunk-ZDSZHEQU.cjs.map +1 -0
  77. package/dist/core/index.cjs +1 -0
  78. package/dist/core/index.js +1 -0
  79. package/dist/core/runtime.cjs +7 -5
  80. package/dist/core/runtime.js +3 -1
  81. package/dist/extension.cjs +58 -0
  82. package/dist/extension.cjs.map +1 -0
  83. package/dist/extension.d.ts +6 -0
  84. package/dist/extension.d.ts.map +1 -0
  85. package/dist/extension.js +5 -0
  86. package/dist/extension.js.map +1 -0
  87. package/dist/index.cjs +79 -592
  88. package/dist/index.cjs.map +1 -1
  89. package/dist/index.d.ts +51 -26
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +58 -518
  92. package/dist/index.js.map +1 -1
  93. package/dist/security.cjs +26 -0
  94. package/dist/security.cjs.map +1 -0
  95. package/dist/security.d.ts +6 -0
  96. package/dist/security.d.ts.map +1 -0
  97. package/dist/security.js +5 -0
  98. package/dist/security.js.map +1 -0
  99. package/dist/utils/cli/help.d.ts +2 -0
  100. package/dist/utils/cli/help.d.ts.map +1 -0
  101. package/dist/utils/cli/index.cjs +107 -81
  102. package/dist/utils/cli/index.cjs.map +1 -1
  103. package/dist/utils/cli/index.d.ts.map +1 -1
  104. package/dist/utils/cli/index.js +95 -69
  105. package/dist/utils/cli/index.js.map +1 -1
  106. package/package.json +18 -4
  107. package/dist/chunk-A5C2MUNA.js.map +0 -1
  108. package/dist/chunk-DPOLJN7F.cjs.map +0 -1
  109. package/dist/chunk-FCYBA7PR.js.map +0 -1
  110. package/dist/chunk-IWM5B5DU.js.map +0 -1
  111. package/dist/chunk-JXYANBTH.cjs.map +0 -1
  112. package/dist/chunk-MUBZV65R.cjs.map +0 -1
  113. package/dist/chunk-WQMHMPNC.cjs.map +0 -1
  114. package/dist/chunk-Y75CRPVF.js.map +0 -1
@@ -0,0 +1,65 @@
1
+ import pRetry from 'p-retry';
2
+
3
+ // src/core/runtime/Retry.ts
4
+ var NON_RETRYABLE_ERRORS = /* @__PURE__ */ new Set([
5
+ "TOOL_NOT_FOUND",
6
+ "INPUT_SCHEMA_INVALID",
7
+ "POLICY_DENIED",
8
+ "HITL_DENIED",
9
+ "OUTPUT_SCHEMA_INVALID",
10
+ "PATH_OUTSIDE_SANDBOX",
11
+ "FILE_TOO_LARGE",
12
+ "HTTP_DISALLOWED_HOST",
13
+ "HTTP_TOO_LARGE",
14
+ "EXEC_INVALID",
15
+ "EXEC_SPAWN_ERROR",
16
+ "DUCKDUCKGO_INVALID"
17
+ ]);
18
+ function isRetryable(error) {
19
+ if (error instanceof Error) {
20
+ const kind = error.kind;
21
+ if (kind && NON_RETRYABLE_ERRORS.has(kind)) return false;
22
+ }
23
+ return true;
24
+ }
25
+ async function withRetry(fn, options = {}) {
26
+ const {
27
+ maxRetries = 2,
28
+ baseDelayMs = 1e3,
29
+ maxDelayMs = 1e4,
30
+ jitter = 0.1,
31
+ shouldRetry,
32
+ onRetry
33
+ } = options;
34
+ if (maxRetries <= 0) {
35
+ return fn();
36
+ }
37
+ const pRetryOptions = {
38
+ retries: maxRetries,
39
+ minTimeout: baseDelayMs,
40
+ maxTimeout: maxDelayMs,
41
+ randomize: true,
42
+ factor: 2,
43
+ onFailedAttempt: (error) => {
44
+ if (jitter > 0 && error.retriesLeft > 0) ;
45
+ if (shouldRetry && !shouldRetry(error)) {
46
+ throw error;
47
+ }
48
+ if (!isRetryable(error)) {
49
+ throw error;
50
+ }
51
+ onRetry?.(error, maxRetries - error.retriesLeft);
52
+ }
53
+ };
54
+ return pRetry(fn, pRetryOptions);
55
+ }
56
+ function createTaggedError(kind, message, details) {
57
+ const error = new Error(message);
58
+ error.kind = kind;
59
+ error.details = details;
60
+ return error;
61
+ }
62
+
63
+ export { createTaggedError, isRetryable, withRetry };
64
+ //# sourceMappingURL=chunk-RZTTO5MQ.js.map
65
+ //# sourceMappingURL=chunk-RZTTO5MQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/runtime/Retry.ts"],"names":[],"mappings":";;;AAuBA,IAAM,oBAAA,uBAA2B,GAAA,CAAI;AAAA,EACnC,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,uBAAA;AAAA,EACA,sBAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAAC,CAAA;AAKM,SAAS,YAAY,KAAA,EAAyB;AACnD,EAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,IAAA,MAAM,OAAQ,KAAA,CAAoC,IAAA;AAClD,IAAA,IAAI,IAAA,IAAQ,oBAAA,CAAqB,GAAA,CAAI,IAAI,GAAG,OAAO,KAAA;AAAA,EACrD;AACA,EAAA,OAAO,IAAA;AACT;AAKA,eAAsB,SAAA,CACpB,EAAA,EACA,OAAA,GAAwB,EAAC,EACb;AACZ,EAAA,MAAM;AAAA,IACJ,UAAA,GAAa,CAAA;AAAA,IACb,WAAA,GAAc,GAAA;AAAA,IACd,UAAA,GAAa,GAAA;AAAA,IACb,MAAA,GAAS,GAAA;AAAA,IACT,WAAA;AAAA,IACA;AAAA,GACF,GAAI,OAAA;AAEJ,EAAA,IAAI,cAAc,CAAA,EAAG;AACnB,IAAA,OAAO,EAAA,EAAG;AAAA,EACZ;AAEA,EAAA,MAAM,aAAA,GAA+B;AAAA,IACnC,OAAA,EAAS,UAAA;AAAA,IACT,UAAA,EAAY,WAAA;AAAA,IACZ,UAAA,EAAY,UAAA;AAAA,IACZ,SAAA,EAAW,IAAA;AAAA,IACX,MAAA,EAAQ,CAAA;AAAA,IACR,eAAA,EAAiB,CAAC,KAAA,KAAU;AAE1B,MAAA,IAAI,MAAA,GAAS,CAAA,IAAK,KAAA,CAAM,WAAA,GAAc,CAAA,EAAG;AAMzC,MAAA,IAAI,WAAA,IAAe,CAAC,WAAA,CAAY,KAAK,CAAA,EAAG;AACtC,QAAA,MAAM,KAAA;AAAA,MACR;AAEA,MAAA,IAAI,CAAC,WAAA,CAAY,KAAK,CAAA,EAAG;AACvB,QAAA,MAAM,KAAA;AAAA,MACR;AAEA,MAAA,OAAA,GAAU,KAAA,EAAO,UAAA,GAAa,KAAA,CAAM,WAAW,CAAA;AAAA,IACjD;AAAA,GACF;AAEA,EAAA,OAAO,MAAA,CAAO,IAAI,aAAa,CAAA;AACjC;AAKO,SAAS,iBAAA,CACd,IAAA,EACA,OAAA,EACA,OAAA,EAC6C;AAC7C,EAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,OAAO,CAAA;AAI/B,EAAA,KAAA,CAAM,IAAA,GAAO,IAAA;AACb,EAAA,KAAA,CAAM,OAAA,GAAU,OAAA;AAChB,EAAA,OAAO,KAAA;AACT","file":"chunk-RZTTO5MQ.js","sourcesContent":["import pRetry, { type Options as PRetryOptions } from \"p-retry\";\n\n/**\n * Retry configuration.\n */\nexport interface RetryOptions {\n /** Maximum number of retries (default: 2) */\n maxRetries?: number;\n /** Base delay in ms for exponential backoff (default: 1000) */\n baseDelayMs?: number;\n /** Maximum delay in ms (default: 10000) */\n maxDelayMs?: number;\n /** Jitter factor 0-1 (default: 0.1) */\n jitter?: number;\n /** Error filter: return true to retry, false to abort */\n shouldRetry?: (error: Error) => boolean;\n /** Callback on each retry attempt */\n onRetry?: (error: Error, attempt: number) => void;\n}\n\n/**\n * Default errors that should NOT be retried (deterministic failures).\n */\nconst NON_RETRYABLE_ERRORS = new Set([\n \"TOOL_NOT_FOUND\",\n \"INPUT_SCHEMA_INVALID\",\n \"POLICY_DENIED\",\n \"HITL_DENIED\",\n \"OUTPUT_SCHEMA_INVALID\",\n \"PATH_OUTSIDE_SANDBOX\",\n \"FILE_TOO_LARGE\",\n \"HTTP_DISALLOWED_HOST\",\n \"HTTP_TOO_LARGE\",\n \"EXEC_INVALID\",\n \"EXEC_SPAWN_ERROR\",\n \"DUCKDUCKGO_INVALID\",\n]);\n\n/**\n * Determine if an error is retryable.\n */\nexport function isRetryable(error: unknown): boolean {\n if (error instanceof Error) {\n const kind = (error as Error & { kind?: string }).kind;\n if (kind && NON_RETRYABLE_ERRORS.has(kind)) return false;\n }\n return true;\n}\n\n/**\n * Execute a function with retry logic using exponential backoff.\n */\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n options: RetryOptions = {},\n): Promise<T> {\n const {\n maxRetries = 2,\n baseDelayMs = 1000,\n maxDelayMs = 10_000,\n jitter = 0.1,\n shouldRetry,\n onRetry,\n } = options;\n\n if (maxRetries <= 0) {\n return fn();\n }\n\n const pRetryOptions: PRetryOptions = {\n retries: maxRetries,\n minTimeout: baseDelayMs,\n maxTimeout: maxDelayMs,\n randomize: true,\n factor: 2,\n onFailedAttempt: (error) => {\n // Apply jitter\n if (jitter > 0 && error.retriesLeft > 0) {\n // jitterMs calculated but p-retry handles backoff internally\n void (Math.random() * jitter * baseDelayMs);\n }\n\n // Check if should retry\n if (shouldRetry && !shouldRetry(error)) {\n throw error; // Abort retry\n }\n\n if (!isRetryable(error)) {\n throw error; // Non-retryable error kind\n }\n\n onRetry?.(error, maxRetries - error.retriesLeft);\n },\n };\n\n return pRetry(fn, pRetryOptions);\n}\n\n/**\n * Create a tagged error with a kind field for retry classification.\n */\nexport function createTaggedError(\n kind: string,\n message: string,\n details?: unknown,\n): Error & { kind: string; details?: unknown } {\n const error = new Error(message) as Error & {\n kind: string;\n details?: unknown;\n };\n error.kind = kind;\n error.details = details;\n return error;\n}\n"]}
@@ -1,27 +1,48 @@
1
1
  'use strict';
2
2
 
3
- var chunkJXYANBTH_cjs = require('./chunk-JXYANBTH.cjs');
3
+ var chunkM2GEHWPN_cjs = require('./chunk-M2GEHWPN.cjs');
4
4
  var chunkUUNG3GL3_cjs = require('./chunk-UUNG3GL3.cjs');
5
+ var chunkOG5ZSXQ5_cjs = require('./chunk-OG5ZSXQ5.cjs');
5
6
  var tools = require('@langchain/core/tools');
6
7
  var agentCommon = require('@easynet/agent-common');
7
8
 
8
- function hasArgsWrapper(inputSchema) {
9
+ function getArgsSchemaIfWrapped(inputSchema) {
9
10
  const s = inputSchema;
10
- if (s?.type !== "object" || !s.properties || typeof s.properties !== "object") return false;
11
+ if (s?.type !== "object" || !s.properties || typeof s.properties !== "object") return null;
11
12
  const args = s.properties.args;
12
- return args != null && typeof args === "object" && args.type === "object" && args.properties != null;
13
+ if (args != null && typeof args === "object" && args.type === "object" && args.properties != null) {
14
+ return args;
15
+ }
16
+ return null;
17
+ }
18
+ function hasArgsWrapper(inputSchema) {
19
+ return getArgsSchemaIfWrapped(inputSchema) !== null;
13
20
  }
14
21
  function schemaForLangChain(inputSchema) {
15
- const s = inputSchema;
16
- if (s?.type !== "object" || !s.properties || typeof s.properties !== "object") {
17
- return s;
18
- }
19
- const props = s.properties;
20
- const args = props.args;
21
- if (hasArgsWrapper(inputSchema)) {
22
- return args;
22
+ const wrapped = getArgsSchemaIfWrapped(inputSchema);
23
+ if (wrapped !== null) return wrapped;
24
+ return inputSchema;
25
+ }
26
+ function buildIntent(toolName, inputSchema, args) {
27
+ return {
28
+ tool: toolName,
29
+ args: hasArgsWrapper(inputSchema) ? { args } : args,
30
+ purpose: chunkOG5ZSXQ5_cjs.LANGCHAIN_KIND
31
+ };
32
+ }
33
+ function normalizeArgs(args) {
34
+ return agentCommon.stripNullishObjectFields(args ?? {});
35
+ }
36
+ function serializeToolResult(result) {
37
+ if (result.ok) {
38
+ return typeof result.result === "string" ? result.result : JSON.stringify(result.result);
23
39
  }
24
- return s;
40
+ const err = result.error;
41
+ const message = err?.message ?? "Tool failed";
42
+ const details = err?.details;
43
+ return JSON.stringify(
44
+ details != null ? { error: message, details } : { error: message }
45
+ );
25
46
  }
26
47
  var DEFAULT_CTX_FACTORY = () => ({
27
48
  requestId: `lc-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`,
@@ -70,23 +91,11 @@ var LangChainToolsHub = class {
70
91
  description: spec.description ?? `Tool: ${spec.name}`,
71
92
  schema,
72
93
  func: async (args) => {
73
- const flat = agentCommon.stripNullishObjectFields(args ?? {});
74
- const intent = {
75
- tool: spec.name,
76
- args: hasArgsWrapper(enriched.inputSchema) ? { args: flat } : flat,
77
- purpose: chunkJXYANBTH_cjs.LANGCHAIN_KIND
78
- };
94
+ const normalizedArgs = normalizeArgs(args);
95
+ const intent = buildIntent(spec.name, enriched.inputSchema, normalizedArgs);
79
96
  const ctx = ctxFactory();
80
97
  const result = await runtime.invoke(intent, ctx);
81
- if (result.ok) {
82
- return typeof result.result === "string" ? result.result : JSON.stringify(result.result);
83
- }
84
- const err = result.error;
85
- const message = err?.message ?? "Tool failed";
86
- const details = err?.details;
87
- return JSON.stringify(
88
- details != null ? { error: message, details } : { error: message }
89
- );
98
+ return serializeToolResult(result);
90
99
  }
91
100
  });
92
101
  }
@@ -109,10 +118,10 @@ function mergeHostLists(a, b) {
109
118
  function runtimeOptionsFromConfig(opts) {
110
119
  const coreTools = opts.coreTools ?? { sandboxRoot: process.cwd(), allowedHosts: [], enableSandboxValidation: false };
111
120
  if (opts.configFilePath) {
112
- const toolConfig = chunkJXYANBTH_cjs.loadToolConfig(opts.configFilePath);
121
+ const toolConfig = chunkM2GEHWPN_cjs.loadToolConfig(opts.configFilePath);
113
122
  const updates = {};
114
123
  if (toolConfig.sandboxedPath && typeof toolConfig.sandboxedPath === "string") {
115
- updates.sandboxRoot = chunkJXYANBTH_cjs.resolveSandboxedPath(opts.configFilePath, toolConfig.sandboxedPath);
124
+ updates.sandboxRoot = chunkM2GEHWPN_cjs.resolveSandboxedPath(opts.configFilePath, toolConfig.sandboxedPath);
116
125
  }
117
126
  if (typeof toolConfig.enableSandboxValidation === "boolean") {
118
127
  updates.enableSandboxValidation = toolConfig.enableSandboxValidation;
@@ -135,7 +144,7 @@ function runtimeOptionsFromConfig(opts) {
135
144
  const packageDefaults = { ...coreTools.packageDefaults };
136
145
  if (toolConfig.packageToolDefaults != null && Object.keys(toolConfig.packageToolDefaults).length > 0) {
137
146
  for (const [descriptor, pkgConfig] of Object.entries(toolConfig.packageToolDefaults)) {
138
- const prefix = descriptor.startsWith("file:") ? chunkJXYANBTH_cjs.fileDescriptorToPackagePrefix(descriptor) : chunkJXYANBTH_cjs.npmDescriptorToPackagePrefixWithVersion(descriptor);
147
+ const prefix = descriptor.startsWith("file:") ? chunkM2GEHWPN_cjs.fileDescriptorToPackagePrefix(descriptor) : chunkM2GEHWPN_cjs.npmDescriptorToPackagePrefixWithVersion(descriptor);
139
148
  if (!prefix) continue;
140
149
  const pkgDefaults = pkgConfig?.defaults != null && typeof pkgConfig.defaults === "object" && !Array.isArray(pkgConfig.defaults) ? pkgConfig.defaults : {};
141
150
  if (Object.keys(pkgDefaults).length > 0) {
@@ -165,18 +174,18 @@ function runtimeOptionsFromConfig(opts) {
165
174
  function createAgentTools(options) {
166
175
  const opts = typeof options === "string" ? { configFilePath: options } : options ?? {};
167
176
  const runtimeOpts = runtimeOptionsFromConfig(opts);
168
- const { runtime } = chunkJXYANBTH_cjs.createRuntimeFromConfigSync(runtimeOpts);
177
+ const { runtime } = chunkM2GEHWPN_cjs.createRuntimeFromConfigSync(runtimeOpts);
169
178
  const hub = new LangChainToolsHub(runtime);
170
179
  if (opts.configFilePath) {
171
- const toolConfig = chunkJXYANBTH_cjs.loadToolConfig(opts.configFilePath);
180
+ const toolConfig = chunkM2GEHWPN_cjs.loadToolConfig(opts.configFilePath);
172
181
  const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];
173
182
  if (names.length > 0) {
174
183
  const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
175
- const allBarePackages = names.every((n) => chunkJXYANBTH_cjs.isBarePackageDescriptor(String(n)));
184
+ const allBarePackages = names.every((n) => chunkM2GEHWPN_cjs.isBarePackageDescriptor(String(n)));
176
185
  if (allBarePackages) {
177
186
  return hub.getLangChainTools();
178
187
  }
179
- const expanded = chunkJXYANBTH_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
188
+ const expanded = chunkM2GEHWPN_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
180
189
  return hub.getLangChainToolsForNames(expanded);
181
190
  }
182
191
  }
@@ -184,25 +193,49 @@ function createAgentTools(options) {
184
193
  }
185
194
  async function createLangChainToolsAsync(options = {}) {
186
195
  const runtimeOpts = runtimeOptionsFromConfig(options);
187
- const { runtime } = await chunkJXYANBTH_cjs.createRuntimeFromConfig(runtimeOpts);
196
+ const { runtime } = await chunkM2GEHWPN_cjs.createRuntimeFromConfig(runtimeOpts);
188
197
  const hub = new LangChainToolsHub(runtime);
189
198
  if (options.configFilePath) {
190
- const toolConfig = chunkJXYANBTH_cjs.loadToolConfig(options.configFilePath);
199
+ const toolConfig = chunkM2GEHWPN_cjs.loadToolConfig(options.configFilePath);
191
200
  const names = Array.isArray(toolConfig.tools) ? toolConfig.tools : [];
192
201
  if (names.length > 0) {
193
202
  const registryNames = runtime.getRegistry().snapshot().map((s) => s.name);
194
- const allBarePackages = names.every((n) => chunkJXYANBTH_cjs.isBarePackageDescriptor(String(n)));
203
+ const allBarePackages = names.every((n) => chunkM2GEHWPN_cjs.isBarePackageDescriptor(String(n)));
195
204
  if (allBarePackages) {
196
205
  return hub.getLangChainTools();
197
206
  }
198
- const expanded = chunkJXYANBTH_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
207
+ const expanded = chunkM2GEHWPN_cjs.expandToolDescriptorsToRegistryNames(names, registryNames);
199
208
  return hub.getLangChainToolsForNames(expanded);
200
209
  }
201
210
  }
202
211
  return hub.getLangChainTools();
203
212
  }
204
213
 
214
+ // src/api/main.ts
215
+ var langchainApi = {
216
+ createAgentTools,
217
+ createLangChainToolsAsync
218
+ };
219
+ var runtimeApi = {
220
+ createRuntimeFromConfig: chunkM2GEHWPN_cjs.createRuntimeFromConfig,
221
+ createRuntimeFromConfigSync: chunkM2GEHWPN_cjs.createRuntimeFromConfigSync
222
+ };
223
+ var mcpApi = {
224
+ createMCPServer: chunkM2GEHWPN_cjs.createMCPServer,
225
+ runMCPServerOverStdio: chunkM2GEHWPN_cjs.runMCPServerOverStdio,
226
+ createMCPStreamableHttpHandler: chunkM2GEHWPN_cjs.createMCPStreamableHttpHandler,
227
+ createMCPServerStreamableHttp: chunkM2GEHWPN_cjs.createMCPServerStreamableHttp
228
+ };
229
+ var openApi = {
230
+ createOpenAPIServer: chunkM2GEHWPN_cjs.createHttpService,
231
+ createHttpService: chunkM2GEHWPN_cjs.createHttpService
232
+ };
233
+
205
234
  exports.createAgentTools = createAgentTools;
206
235
  exports.createLangChainToolsAsync = createLangChainToolsAsync;
207
- //# sourceMappingURL=chunk-MUBZV65R.cjs.map
208
- //# sourceMappingURL=chunk-MUBZV65R.cjs.map
236
+ exports.langchainApi = langchainApi;
237
+ exports.mcpApi = mcpApi;
238
+ exports.openApi = openApi;
239
+ exports.runtimeApi = runtimeApi;
240
+ //# sourceMappingURL=chunk-U67QDQFQ.cjs.map
241
+ //# sourceMappingURL=chunk-U67QDQFQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/api/adapters/LangChainToolsHub.ts","../src/api/createAgentTools.ts","../src/api/main.ts"],"names":["LANGCHAIN_KIND","stripNullishObjectFields","enrichSpecWithCanonicalSchema","DynamicStructuredTool","loadToolConfig","resolveSandboxedPath","fileDescriptorToPackagePrefix","npmDescriptorToPackagePrefixWithVersion","createRuntimeFromConfigSync","isBarePackageDescriptor","expandToolDescriptorsToRegistryNames","createRuntimeFromConfig","createMCPServer","runMCPServerOverStdio","createMCPStreamableHttpHandler","createMCPServerStreamableHttp","createHttpService"],"mappings":"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","file":"chunk-U67QDQFQ.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 { ToolResult } from \"../../core/types/ToolResult.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 * If inputSchema wraps all params in a single \"args\" object (manifest convention),\n * returns that inner args schema; otherwise returns null.\n */\nfunction getArgsSchemaIfWrapped(inputSchema: object): Record<string, unknown> | null {\n const s = inputSchema as Record<string, unknown>;\n if (s?.type !== \"object\" || !s.properties || typeof s.properties !== \"object\") return null;\n const args = (s.properties as Record<string, unknown>).args;\n if (\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 return args as Record<string, unknown>;\n }\n return null;\n}\n\n/**\n * True when inputSchema wraps all params in a single \"args\" object (manifest convention).\n */\nfunction hasArgsWrapper(inputSchema: object): boolean {\n return getArgsSchemaIfWrapped(inputSchema) !== null;\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 wrapped = getArgsSchemaIfWrapped(inputSchema);\n if (wrapped !== null) return wrapped;\n return inputSchema as Record<string, unknown>;\n}\n\nfunction buildIntent(\n toolName: string,\n inputSchema: object,\n args: Record<string, unknown>,\n): ToolIntent {\n return {\n tool: toolName,\n args: hasArgsWrapper(inputSchema) ? { args } : args,\n purpose: LANGCHAIN_KIND,\n };\n}\n\nfunction normalizeArgs(args: Record<string, unknown> | undefined): Record<string, unknown> {\n return stripNullishObjectFields(args ?? {}) as Record<string, unknown>;\n}\n\nfunction serializeToolResult(result: ToolResult): string {\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\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 normalizedArgs = normalizeArgs(args);\n const intent = buildIntent(spec.name, enriched.inputSchema, normalizedArgs);\n const ctx = ctxFactory();\n const result = await runtime.invoke(intent, ctx);\n return serializeToolResult(result);\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","/**\n * Public API: three create functions (config-driven) + runtime.\n *\n * 1. createLangChainTools(config?) → LangChain tools (createReactAgent / AgentExecutor)\n * 2. createMCPServer(runtime | config, options?) → MCP server (stdio, Cursor / Claude)\n * 3. createOpenAPIServer(runtime | config, options?) → HTTP + OpenAPI/Swagger (GET /tools, POST /invoke)\n *\n * All tool invokes go through PTC Intent (runtime.invoke(intent, ctx)) for policy, budget, observability.\n * Use createRuntimeFromConfig(config) when you need the runtime for multiple servers.\n */\n\nexport { createAgentTools, createLangChainToolsAsync } from \"./createAgentTools.js\";\nexport type { CreateAgentToolsOptions } from \"./createAgentTools.js\";\n\nexport { createHttpService } from \"./expose/openapiHttp.js\";\nexport type {\n CreateHttpServiceOptions,\n HttpServiceResult,\n OpenAPIHttpServerOptions,\n} from \"./expose/openapiHttp.js\";\n/** Alias: OpenAPI server with Swagger support */\nexport { createHttpService as createOpenAPIServer } from \"./expose/openapiHttp.js\";\n\nexport {\n createMCPServer,\n runMCPServerOverStdio,\n createMCPStreamableHttpHandler,\n createMCPServerStreamableHttp,\n} from \"./expose/mcpServer.js\";\nexport type {\n MCPServerOptions,\n MCPServerResult,\n MCPStreamableHttpHandler,\n MCPServerStreamableHttpResult,\n CreateMCPServerStreamableHttpOptions,\n} from \"./expose/mcpServer.js\";\n\nexport { createRuntimeFromConfig, createRuntimeFromConfigSync } from \"./runtimeFromConfig.js\";\nexport type { CreateRuntimeOptions, CreateRuntimeResult } from \"./runtimeFromConfig.js\";\n\nexport { PTCRuntime } from \"../core/runtime/PTCRuntime.js\";\nexport type { PTCRuntimeConfig } from \"../core/runtime/PTCRuntime.js\";\n\nimport { createAgentTools, createLangChainToolsAsync } from \"./createAgentTools.js\";\nimport { createHttpService } from \"./expose/openapiHttp.js\";\nimport {\n createMCPServer,\n runMCPServerOverStdio,\n createMCPStreamableHttpHandler,\n createMCPServerStreamableHttp,\n} from \"./expose/mcpServer.js\";\nimport { createRuntimeFromConfig, createRuntimeFromConfigSync } from \"./runtimeFromConfig.js\";\n\n/**\n * Facade: grouped API for lower import complexity in callers.\n */\nexport const langchainApi = {\n createAgentTools,\n createLangChainToolsAsync,\n} as const;\n\n/**\n * Facade: grouped runtime creation helpers.\n */\nexport const runtimeApi = {\n createRuntimeFromConfig,\n createRuntimeFromConfigSync,\n} as const;\n\n/**\n * Facade: grouped MCP server helpers.\n */\nexport const mcpApi = {\n createMCPServer,\n runMCPServerOverStdio,\n createMCPStreamableHttpHandler,\n createMCPServerStreamableHttp,\n} as const;\n\n/**\n * Facade: grouped OpenAPI/HTTP helpers.\n */\nexport const openApi = {\n createOpenAPIServer: createHttpService,\n createHttpService,\n} as const;\n"]}