@librechat/agents 1.5.3 → 1.5.4

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/cjs/main.cjs CHANGED
@@ -5,6 +5,7 @@ var stream = require('./stream.cjs');
5
5
  var events = require('./events.cjs');
6
6
  var messages = require('./messages.cjs');
7
7
  var Graph = require('./graphs/Graph.cjs');
8
+ var CodeExecutor = require('./tools/CodeExecutor.cjs');
8
9
  var _enum = require('./common/enum.cjs');
9
10
  var graph = require('./utils/graph.cjs');
10
11
  var run$1 = require('./utils/run.cjs');
@@ -27,6 +28,7 @@ exports.getConverseOverrideMessage = messages.getConverseOverrideMessage;
27
28
  exports.modifyDeltaProperties = messages.modifyDeltaProperties;
28
29
  exports.Graph = Graph.Graph;
29
30
  exports.StandardGraph = Graph.StandardGraph;
31
+ exports.createCodeExecutionTool = CodeExecutor.createCodeExecutionTool;
30
32
  Object.defineProperty(exports, "Callback", {
31
33
  enumerable: true,
32
34
  get: function () { return _enum.Callback; }
@@ -1 +1 @@
1
- {"version":3,"file":"main.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"main.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,81 @@
1
+ 'use strict';
2
+
3
+ var zod = require('zod');
4
+ var dotenv = require('dotenv');
5
+ var tools = require('@langchain/core/tools');
6
+
7
+ dotenv.config();
8
+ const EXEC_ENDPOINT = 'https://api.librechat.ai/exec';
9
+ const CodeExecutionToolSchema = zod.z.object({
10
+ lang: zod.z.enum([
11
+ 'py',
12
+ 'js',
13
+ 'ts',
14
+ 'c',
15
+ 'cpp',
16
+ 'java',
17
+ 'php',
18
+ 'rs',
19
+ 'go',
20
+ 'bash',
21
+ 'd',
22
+ 'f90',
23
+ ])
24
+ .describe('The programming language or runtime to execute the code in.'),
25
+ code: zod.z.string()
26
+ .describe('The complete, self-contained code to execute, without any truncation or minimization.'),
27
+ args: zod.z.array(zod.z.string()).optional()
28
+ .describe('Additional arguments to execute the code with.'),
29
+ });
30
+ function createCodeExecutionTool(params = {}) {
31
+ return tools.tool(async ({ lang, code, ...rest }) => {
32
+ const postData = {
33
+ lang,
34
+ code,
35
+ ...rest,
36
+ ...params,
37
+ };
38
+ try {
39
+ const response = await fetch(EXEC_ENDPOINT, {
40
+ method: 'POST',
41
+ headers: {
42
+ 'Content-Type': 'application/json',
43
+ 'User-Agent': 'LibreChat/1.0',
44
+ },
45
+ body: JSON.stringify(postData),
46
+ });
47
+ if (!response.ok) {
48
+ throw new Error(`HTTP error! status: ${response.status}`);
49
+ }
50
+ const result = await response.json();
51
+ let formattedOutput = '';
52
+ if (result.stdout)
53
+ formattedOutput += `stdout:\n${result.stdout}\n`;
54
+ if (result.stderr)
55
+ formattedOutput += `stderr:\n${result.stderr}\n`;
56
+ if (result.files && result.files.length > 0) {
57
+ formattedOutput += 'Generated files:\n';
58
+ result.files.forEach((file) => {
59
+ formattedOutput += `${file.name}`;
60
+ });
61
+ return [formattedOutput.trim(), result.files];
62
+ }
63
+ return [formattedOutput.trim(), undefined];
64
+ }
65
+ catch (error) {
66
+ return `Calling tool with arguments:\n\n${JSON.stringify({
67
+ lang,
68
+ code,
69
+ ...rest,
70
+ })}\n\nraised the following error:\n\n${error?.message}`;
71
+ }
72
+ }, {
73
+ name: 'execute_code',
74
+ description: 'Executes code in various programming languages, returning stdout/stderr output.',
75
+ schema: CodeExecutionToolSchema,
76
+ responseFormat: 'content_and_artifact',
77
+ });
78
+ }
79
+
80
+ exports.createCodeExecutionTool = createCodeExecutionTool;
81
+ //# sourceMappingURL=CodeExecutor.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeExecutor.cjs","sources":["../../../src/tools/CodeExecutor.ts"],"sourcesContent":["import { z } from 'zod';\nimport { config } from 'dotenv';\nimport { tool, DynamicStructuredTool } from '@langchain/core/tools';\n\nconfig();\n\nconst EXEC_ENDPOINT = 'https://api.librechat.ai/exec';\n\nexport type CodeExecutionToolParams = {\n session_id?: string;\n user_id?: string;\n}\n\nexport type FileRef = {\n id: string;\n name: string;\n path?: string;\n};\n\nexport type FileRefs = FileRef[];\n\nexport type ExecuteResult = {\n session_id: string;\n stdout: string;\n stderr: string;\n files?: FileRefs;\n};\n\nconst CodeExecutionToolSchema = z.object({\n lang: z.enum([\n 'py',\n 'js',\n 'ts',\n 'c',\n 'cpp',\n 'java',\n 'php',\n 'rs',\n 'go',\n 'bash',\n 'd',\n 'f90',\n ])\n .describe('The programming language or runtime to execute the code in.'),\n code: z.string()\n .describe('The complete, self-contained code to execute, without any truncation or minimization.'),\n args: z.array(z.string()).optional()\n .describe('Additional arguments to execute the code with.'),\n});\n\nfunction createCodeExecutionTool(params: CodeExecutionToolParams = {}): DynamicStructuredTool<typeof CodeExecutionToolSchema> {\n return tool<typeof CodeExecutionToolSchema>(\n async ({ lang, code, ...rest }) => {\n const postData = {\n lang,\n code,\n ...rest,\n ...params,\n };\n\n try {\n const response = await fetch(EXEC_ENDPOINT, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': 'LibreChat/1.0',\n },\n body: JSON.stringify(postData),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const result: ExecuteResult = await response.json();\n let formattedOutput = '';\n if (result.stdout) formattedOutput += `stdout:\\n${result.stdout}\\n`;\n if (result.stderr) formattedOutput += `stderr:\\n${result.stderr}\\n`;\n if (result.files && result.files.length > 0) {\n formattedOutput += 'Generated files:\\n';\n result.files.forEach((file: FileRef) => {\n formattedOutput += `${file.name}`;\n });\n return [formattedOutput.trim(), result.files];\n }\n\n return [formattedOutput.trim(), undefined];\n } catch (error) {\n return `Calling tool with arguments:\\n\\n${JSON.stringify({\n lang,\n code,\n ...rest,\n })}\\n\\nraised the following error:\\n\\n${(error as Error | undefined)?.message}`;\n }\n },\n {\n name: 'execute_code',\n description: 'Executes code in various programming languages, returning stdout/stderr output.',\n schema: CodeExecutionToolSchema,\n responseFormat: 'content_and_artifact',\n }\n );\n}\n\nexport { createCodeExecutionTool };"],"names":["config","z","tool"],"mappings":"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"}
package/dist/esm/main.mjs CHANGED
@@ -3,6 +3,7 @@ export { ChatModelStreamHandler, createContentAggregator } from './stream.mjs';
3
3
  export { HandlerRegistry, LLMStreamHandler, ModelEndHandler, TestChatStreamHandler, TestLLMStreamHandler, ToolEndHandler, createMetadataAggregator } from './events.mjs';
4
4
  export { convertMessagesToContent, formatAnthropicMessage, getConverseOverrideMessage, modifyDeltaProperties } from './messages.mjs';
5
5
  export { Graph, StandardGraph } from './graphs/Graph.mjs';
6
+ export { createCodeExecutionTool } from './tools/CodeExecutor.mjs';
6
7
  export { Callback, CommonEvents, ContentTypes, GraphEvents, GraphNodeActions, GraphNodeKeys, Providers, StepTypes, ToolCallTypes } from './common/enum.mjs';
7
8
  export { joinKeys, resetIfNotEmpty } from './utils/graph.mjs';
8
9
  export { RunnableCallable, sleep } from './utils/run.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"main.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
1
+ {"version":3,"file":"main.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,79 @@
1
+ import { z } from 'zod';
2
+ import { config } from 'dotenv';
3
+ import { tool } from '@langchain/core/tools';
4
+
5
+ config();
6
+ const EXEC_ENDPOINT = 'https://api.librechat.ai/exec';
7
+ const CodeExecutionToolSchema = z.object({
8
+ lang: z.enum([
9
+ 'py',
10
+ 'js',
11
+ 'ts',
12
+ 'c',
13
+ 'cpp',
14
+ 'java',
15
+ 'php',
16
+ 'rs',
17
+ 'go',
18
+ 'bash',
19
+ 'd',
20
+ 'f90',
21
+ ])
22
+ .describe('The programming language or runtime to execute the code in.'),
23
+ code: z.string()
24
+ .describe('The complete, self-contained code to execute, without any truncation or minimization.'),
25
+ args: z.array(z.string()).optional()
26
+ .describe('Additional arguments to execute the code with.'),
27
+ });
28
+ function createCodeExecutionTool(params = {}) {
29
+ return tool(async ({ lang, code, ...rest }) => {
30
+ const postData = {
31
+ lang,
32
+ code,
33
+ ...rest,
34
+ ...params,
35
+ };
36
+ try {
37
+ const response = await fetch(EXEC_ENDPOINT, {
38
+ method: 'POST',
39
+ headers: {
40
+ 'Content-Type': 'application/json',
41
+ 'User-Agent': 'LibreChat/1.0',
42
+ },
43
+ body: JSON.stringify(postData),
44
+ });
45
+ if (!response.ok) {
46
+ throw new Error(`HTTP error! status: ${response.status}`);
47
+ }
48
+ const result = await response.json();
49
+ let formattedOutput = '';
50
+ if (result.stdout)
51
+ formattedOutput += `stdout:\n${result.stdout}\n`;
52
+ if (result.stderr)
53
+ formattedOutput += `stderr:\n${result.stderr}\n`;
54
+ if (result.files && result.files.length > 0) {
55
+ formattedOutput += 'Generated files:\n';
56
+ result.files.forEach((file) => {
57
+ formattedOutput += `${file.name}`;
58
+ });
59
+ return [formattedOutput.trim(), result.files];
60
+ }
61
+ return [formattedOutput.trim(), undefined];
62
+ }
63
+ catch (error) {
64
+ return `Calling tool with arguments:\n\n${JSON.stringify({
65
+ lang,
66
+ code,
67
+ ...rest,
68
+ })}\n\nraised the following error:\n\n${error?.message}`;
69
+ }
70
+ }, {
71
+ name: 'execute_code',
72
+ description: 'Executes code in various programming languages, returning stdout/stderr output.',
73
+ schema: CodeExecutionToolSchema,
74
+ responseFormat: 'content_and_artifact',
75
+ });
76
+ }
77
+
78
+ export { createCodeExecutionTool };
79
+ //# sourceMappingURL=CodeExecutor.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeExecutor.mjs","sources":["../../../src/tools/CodeExecutor.ts"],"sourcesContent":["import { z } from 'zod';\nimport { config } from 'dotenv';\nimport { tool, DynamicStructuredTool } from '@langchain/core/tools';\n\nconfig();\n\nconst EXEC_ENDPOINT = 'https://api.librechat.ai/exec';\n\nexport type CodeExecutionToolParams = {\n session_id?: string;\n user_id?: string;\n}\n\nexport type FileRef = {\n id: string;\n name: string;\n path?: string;\n};\n\nexport type FileRefs = FileRef[];\n\nexport type ExecuteResult = {\n session_id: string;\n stdout: string;\n stderr: string;\n files?: FileRefs;\n};\n\nconst CodeExecutionToolSchema = z.object({\n lang: z.enum([\n 'py',\n 'js',\n 'ts',\n 'c',\n 'cpp',\n 'java',\n 'php',\n 'rs',\n 'go',\n 'bash',\n 'd',\n 'f90',\n ])\n .describe('The programming language or runtime to execute the code in.'),\n code: z.string()\n .describe('The complete, self-contained code to execute, without any truncation or minimization.'),\n args: z.array(z.string()).optional()\n .describe('Additional arguments to execute the code with.'),\n});\n\nfunction createCodeExecutionTool(params: CodeExecutionToolParams = {}): DynamicStructuredTool<typeof CodeExecutionToolSchema> {\n return tool<typeof CodeExecutionToolSchema>(\n async ({ lang, code, ...rest }) => {\n const postData = {\n lang,\n code,\n ...rest,\n ...params,\n };\n\n try {\n const response = await fetch(EXEC_ENDPOINT, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': 'LibreChat/1.0',\n },\n body: JSON.stringify(postData),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const result: ExecuteResult = await response.json();\n let formattedOutput = '';\n if (result.stdout) formattedOutput += `stdout:\\n${result.stdout}\\n`;\n if (result.stderr) formattedOutput += `stderr:\\n${result.stderr}\\n`;\n if (result.files && result.files.length > 0) {\n formattedOutput += 'Generated files:\\n';\n result.files.forEach((file: FileRef) => {\n formattedOutput += `${file.name}`;\n });\n return [formattedOutput.trim(), result.files];\n }\n\n return [formattedOutput.trim(), undefined];\n } catch (error) {\n return `Calling tool with arguments:\\n\\n${JSON.stringify({\n lang,\n code,\n ...rest,\n })}\\n\\nraised the following error:\\n\\n${(error as Error | undefined)?.message}`;\n }\n },\n {\n name: 'execute_code',\n description: 'Executes code in various programming languages, returning stdout/stderr output.',\n schema: CodeExecutionToolSchema,\n responseFormat: 'content_and_artifact',\n }\n );\n}\n\nexport { createCodeExecutionTool };"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export * from './stream';
3
3
  export * from './events';
4
4
  export * from './messages';
5
5
  export * from './graphs';
6
+ export { createCodeExecutionTool } from './tools/CodeExecutor';
6
7
  export * from './common';
7
8
  export * from './utils';
8
9
  export type * from './types';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@librechat/agents",
3
- "version": "1.5.3",
3
+ "version": "1.5.4",
4
4
  "main": "./dist/cjs/main.cjs",
5
5
  "module": "./dist/esm/main.mjs",
6
6
  "types": "./dist/types/index.d.ts",
package/src/index.ts CHANGED
@@ -7,6 +7,9 @@ export * from './messages';
7
7
  /* Graphs */
8
8
  export * from './graphs';
9
9
 
10
+ /* Tools */
11
+ export { createCodeExecutionTool } from './tools/CodeExecutor';
12
+
10
13
  /* Misc. */
11
14
  export * from './common';
12
15
  export * from './utils';