®️ feat: Support Rscript for Code Interpreter & recursionLimit for Agents (#5170)

* chore: bump @librechat/agents to v1.9.8 for rscript support

* chore: fix @langchain/google-genai dep., match agents

* chore: fix @langchain/google-vertexai to v0.1.5, match with agents

* chore: bump @librechat/agents to v1.9.9

* chore: update @librechat/agents to v1.9.91 and @langchain/google-vertexai to v0.1.6

* chore: increase MAX_FILE_SIZE to 150MB for file uploads

* chore: bump @librechat/agents to v1.9.92

* feat: support `recursionLimit` for agents

* chore: update configuration version to 1.2.1 in librechat.yaml and config.ts

* feat: add R language SVG icon to the assets and include it in ApiKeyDialog

* feat: add support for new vision model 'o1' and exclude 'o1-mini'
This commit is contained in:
Danny Avila 2025-01-03 16:50:00 -05:00 committed by GitHub
parent 28966e3ddc
commit bf0a84e45a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 46 additions and 81 deletions

View file

@ -41,10 +41,10 @@
"@keyv/redis": "^2.8.1",
"@langchain/community": "^0.3.14",
"@langchain/core": "^0.3.18",
"@langchain/google-genai": "^0.1.4",
"@langchain/google-vertexai": "^0.1.4",
"@langchain/google-genai": "^0.1.6",
"@langchain/google-vertexai": "^0.1.6",
"@langchain/textsplitters": "^0.1.0",
"@librechat/agents": "^1.9.7",
"@librechat/agents": "^1.9.92",
"axios": "^1.7.7",
"bcryptjs": "^2.4.3",
"cheerio": "^1.0.0-rc.12",

View file

@ -494,6 +494,7 @@ class AgentClient extends BaseClient {
last_agent_index: this.agentConfigs?.size ?? 0,
hide_sequential_outputs: this.options.agent.hide_sequential_outputs,
},
recursionLimit: this.options.req.app.locals[EModelEndpoint.agents]?.recursionLimit,
signal: abortController.signal,
streamMode: 'values',
version: 'v2',

View file

@ -3,7 +3,7 @@ const axios = require('axios');
const FormData = require('form-data');
const { getCodeBaseURL } = require('@librechat/agents');
const MAX_FILE_SIZE = 25 * 1024 * 1024;
const MAX_FILE_SIZE = 150 * 1024 * 1024;
/**
* Retrieves a download stream for a specified file.

View file

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>R</title><path d="M12 2.746c-6.627 0-12 3.599-12 8.037 0 3.897 4.144 7.144 9.64 7.88V16.26c-2.924-.915-4.925-2.755-4.925-4.877 0-3.035 4.084-5.494 9.12-5.494 5.038 0 8.757 1.683 8.757 5.494 0 1.976-.999 3.379-2.662 4.272.09.066.174.128.258.216.169.149.25.363.372.544 2.128-1.45 3.44-3.437 3.44-5.631 0-4.44-5.373-8.038-12-8.038zm-2.111 4.99v13.516l4.093-.002-.002-5.291h1.1c.225 0 .321.066.549.25.272.22.715.982.715.982l2.164 4.063 4.627-.002-2.864-4.826s-.086-.193-.265-.383a2.22 2.22 0 00-.582-.416c-.422-.214-1.149-.434-1.149-.434s3.578-.264 3.578-3.826c0-3.562-3.744-3.63-3.744-3.63zm4.127 2.93l2.478.002s1.149-.062 1.149 1.127c0 1.165-1.149 1.17-1.149 1.17h-2.478zm1.754 6.119c-.494.049-1.012.079-1.54.088v1.807a16.622 16.622 0 002.37-.473l-.471-.891s-.108-.183-.248-.394c-.039-.054-.08-.098-.111-.137z"/></svg>

After

Width:  |  Height:  |  Size: 894 B

View file

@ -34,6 +34,7 @@ export default function ApiKeyDialog({
'cplusplus.svg',
'php.svg',
'fortran.svg',
'r.svg',
];
return (

View file

@ -2,7 +2,7 @@
# https://www.librechat.ai/docs/configuration/librechat_yaml
# Configuration version (required)
version: 1.2.0
version: 1.2.1
# Cache settings: Set to true to enable caching
cache: true
@ -149,6 +149,9 @@ endpoints:
# # (optional) Assistant Capabilities available to all users. Omit the ones you wish to exclude. Defaults to list below.
# capabilities: ["code_interpreter", "retrieval", "actions", "tools", "image_vision"]
# agents:
# (optional) Maximum recursion depth for agents, defaults to 25
# recursionLimit: 50
# (optional) Disable the builder interface for agents
# disableBuilder: false
# (optional) Agent Capabilities available to all users. Omit the ones you wish to exclude. Defaults to list below.
# capabilities: ["execute_code", "file_search", "actions", "tools"]

103
package-lock.json generated
View file

@ -50,10 +50,10 @@
"@keyv/redis": "^2.8.1",
"@langchain/community": "^0.3.14",
"@langchain/core": "^0.3.18",
"@langchain/google-genai": "^0.1.4",
"@langchain/google-vertexai": "^0.1.4",
"@langchain/google-genai": "^0.1.6",
"@langchain/google-vertexai": "^0.1.6",
"@langchain/textsplitters": "^0.1.0",
"@librechat/agents": "^1.9.7",
"@librechat/agents": "^1.9.92",
"axios": "^1.7.7",
"bcryptjs": "^2.4.3",
"cheerio": "^1.0.0-rc.12",
@ -628,35 +628,6 @@
}
}
},
"api/node_modules/@langchain/google-genai": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/@langchain/google-genai/-/google-genai-0.1.4.tgz",
"integrity": "sha512-b8qrqnHYbNseaAikrWyxuDTww6CUIse82F5/BmF2GtWVR25yJrNUWETfTp7o7iIMxhFR0PuQag4gEZOL74F5Tw==",
"dependencies": {
"@google/generative-ai": "^0.21.0",
"zod-to-json-schema": "^3.22.4"
},
"engines": {
"node": ">=18"
},
"peerDependencies": {
"@langchain/core": ">=0.3.17 <0.4.0"
}
},
"api/node_modules/@langchain/google-vertexai": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/@langchain/google-vertexai/-/google-vertexai-0.1.4.tgz",
"integrity": "sha512-x78wezYBOxmiMOPSatlCk4UOQd6RPxz2YVfGKLOzNV89xxHrEVX9JcyRUCx4L568S4kqZYkLvnqzZA9AF/TCaA==",
"dependencies": {
"@langchain/google-gauth": "~0.1.4"
},
"engines": {
"node": ">=18"
},
"peerDependencies": {
"@langchain/core": ">=0.2.21 <0.4.0"
}
},
"api/node_modules/@langchain/textsplitters": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/@langchain/textsplitters/-/textsplitters-0.1.0.tgz",
@ -672,19 +643,19 @@
}
},
"api/node_modules/@librechat/agents": {
"version": "1.9.7",
"resolved": "https://registry.npmjs.org/@librechat/agents/-/agents-1.9.7.tgz",
"integrity": "sha512-FprbiuQrjV3ULOmvOl2HpMnWJhV6BC0TqyUt6/mkpqBZVhPxjzzTBAiE/X3tIOOKAHcjORNaZVibGwV3s0U4Mw==",
"version": "1.9.92",
"resolved": "https://registry.npmjs.org/@librechat/agents/-/agents-1.9.92.tgz",
"integrity": "sha512-kWkUf3/ZVKbrg/BlFH5XJzafyzuUSC2JVBRdI7WJUGmbto1Wxx+LdMy0A8k665gReRjg3ebqbZxo7NqUH9uxlw==",
"dependencies": {
"@aws-crypto/sha256-js": "^5.2.0",
"@aws-sdk/credential-provider-node": "^3.613.0",
"@aws-sdk/types": "^3.609.0",
"@langchain/anthropic": "^0.3.11",
"@langchain/aws": "^0.1.2",
"@langchain/aws": "^0.1.3",
"@langchain/community": "^0.3.14",
"@langchain/core": "^0.3.26",
"@langchain/google-genai": "^0.1.6",
"@langchain/google-vertexai": "^0.1.5",
"@langchain/google-vertexai": "^0.1.6",
"@langchain/langgraph": "^0.2.34",
"@langchain/mistralai": "^0.0.26",
"@langchain/ollama": "^0.1.1",
@ -9222,9 +9193,9 @@
}
},
"node_modules/@langchain/aws": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@langchain/aws/-/aws-0.1.2.tgz",
"integrity": "sha512-1cQvv8XSbaZXceAbYexSm/8WLqfEJ4VF6qbf/XLwkpUKMFGqpSBA00+Bn5p8K/Ms+PyMguZrxVNqd6daqxhDBQ==",
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/@langchain/aws/-/aws-0.1.3.tgz",
"integrity": "sha512-OjS6V/virzRvOX1D2xgTyyHkYzdepjes77dU2bBS53jt4mp0DT8vzgclZQ/16DA20YgNFtMKYiFbOfMI+RTHyg==",
"dependencies": {
"@aws-sdk/client-bedrock-agent-runtime": "^3.616.0",
"@aws-sdk/client-bedrock-runtime": "^3.602.0",
@ -9811,10 +9782,9 @@
}
},
"node_modules/@langchain/google-common": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/@langchain/google-common/-/google-common-0.1.5.tgz",
"integrity": "sha512-VgTghTTROBPez8TgAD+GWKzfoJ24EaWMjdo3dB69QCVt23ZyNGM8Hk4rm6LgjMxmLFNnXi6UnhQuoece3ffmAA==",
"license": "MIT",
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/@langchain/google-common/-/google-common-0.1.6.tgz",
"integrity": "sha512-egGLnZ/OYu3hd37cIh7jx+Hx9kdrFpe6ADoLCwOnmRYZHoJ/nV1L+wNRAHVBgWzO5gIt4xL13nlZARTinjTTlA==",
"dependencies": {
"uuid": "^10.0.0",
"zod-to-json-schema": "^3.22.4"
@ -9834,18 +9804,16 @@
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
],
"license": "MIT",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/@langchain/google-gauth": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/@langchain/google-gauth/-/google-gauth-0.1.5.tgz",
"integrity": "sha512-FYqHtW06gRJdImzlh1nyNHtIgp1F4nf1SiOBN5/ynblze2ho523BruFeKprDRR3Iv+CEJm+3v8fRf0QKf9esPw==",
"license": "MIT",
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/@langchain/google-gauth/-/google-gauth-0.1.6.tgz",
"integrity": "sha512-3Gg4OK/5rNHwjfJrlnWNAUwfPzx90my4mvF1NPeUMIYOIVa9Rd3ROG/Ep18iimq3ZBjxceoKKNTeyQBvJ71csw==",
"dependencies": {
"@langchain/google-common": "~0.1.5",
"@langchain/google-common": "~0.1.6",
"google-auth-library": "^8.9.0"
},
"engines": {
@ -9859,9 +9827,6 @@
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/@langchain/google-genai/-/google-genai-0.1.6.tgz",
"integrity": "sha512-LF3fan9pvgFa1vw2/IYGhi5KjppE0OvPFX3QQBUshBLpXWERP+BSpSD7jcXyqm9Kf7DcFj7w5/2knKeEwih8Xg==",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"@google/generative-ai": "^0.21.0",
"zod-to-json-schema": "^3.22.4"
@ -9874,14 +9839,11 @@
}
},
"node_modules/@langchain/google-vertexai": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/@langchain/google-vertexai/-/google-vertexai-0.1.5.tgz",
"integrity": "sha512-wd9mjrQRdlFAnwhCGtHIsOTtuF6Oto8+F8nthU3guU7T/gfuICvg26+MaOpdUmuTVFuIDqVMc0l7kf3ZK4DFlA==",
"license": "MIT",
"optional": true,
"peer": true,
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/@langchain/google-vertexai/-/google-vertexai-0.1.6.tgz",
"integrity": "sha512-MU97EPpg+JX9S9zEVxHogkpnE2cxqtDD2NsvK0b8sPER75BTkQkhVprjJy5YWyN7x6I4IkLzQ1EAS8r8GzZiXQ==",
"dependencies": {
"@langchain/google-gauth": "~0.1.5"
"@langchain/google-gauth": "~0.1.6"
},
"engines": {
"node": ">=18"
@ -9891,13 +9853,12 @@
}
},
"node_modules/@langchain/langgraph": {
"version": "0.2.36",
"resolved": "https://registry.npmjs.org/@langchain/langgraph/-/langgraph-0.2.36.tgz",
"integrity": "sha512-zxk7ZCVxP0/Ut9785EiXCS7BE7sXd8cu943mcZUF2aNFUaQRTBbbiKpNdR3nb1+xO/B+HVktrJT2VFdkAywnng==",
"license": "MIT",
"version": "0.2.38",
"resolved": "https://registry.npmjs.org/@langchain/langgraph/-/langgraph-0.2.38.tgz",
"integrity": "sha512-mVy99pMftBGgUTBTCepSyzTovWCvpgdNcXsAjxTiMrMX6lzueNiBz0ljkY7UFoIoHYwurQbyl2WmMPFuxkSIAw==",
"dependencies": {
"@langchain/langgraph-checkpoint": "~0.0.13",
"@langchain/langgraph-sdk": "~0.0.21",
"@langchain/langgraph-sdk": "~0.0.32",
"uuid": "^10.0.0",
"zod": "^3.23.8"
},
@ -9912,7 +9873,6 @@
"version": "0.0.13",
"resolved": "https://registry.npmjs.org/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-0.0.13.tgz",
"integrity": "sha512-amdmBcNT8a9xP2VwcEWxqArng4gtRDcnVyVI4DsQIo1Aaz8e8+hH17zSwrUF3pt1pIYztngIfYnBOim31mtKMg==",
"license": "MIT",
"dependencies": {
"uuid": "^10.0.0"
},
@ -9931,16 +9891,14 @@
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
],
"license": "MIT",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/@langchain/langgraph-sdk": {
"version": "0.0.32",
"resolved": "https://registry.npmjs.org/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.32.tgz",
"integrity": "sha512-KQyM9kLO7T6AxwNrceajH7JOybP3pYpvUPnhiI2rrVndI1WyZUJ1eVC1e722BVRAPi6o+WcoTT4uMSZVinPOtA==",
"license": "MIT",
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.33.tgz",
"integrity": "sha512-l/hRbI6roLzplBXy2VyDUwqY1TkK7RcjPmrMUuVdvCCH4LTwLfIXh/G1kHatNiN7VUTskw0FkfBbgq6gtj0ang==",
"dependencies": {
"@types/json-schema": "^7.0.15",
"p-queue": "^6.6.2",
@ -9956,7 +9914,6 @@
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
],
"license": "MIT",
"bin": {
"uuid": "dist/bin/uuid"
}
@ -36335,7 +36292,7 @@
},
"packages/data-provider": {
"name": "librechat-data-provider",
"version": "0.7.67",
"version": "0.7.68",
"license": "ISC",
"dependencies": {
"axios": "^1.7.7",

View file

@ -1,6 +1,6 @@
{
"name": "librechat-data-provider",
"version": "0.7.67",
"version": "0.7.68",
"description": "data services for librechat apps",
"main": "dist/index.js",
"module": "dist/index.es.js",

View file

@ -210,6 +210,7 @@ export type TAssistantEndpoint = z.infer<typeof assistantEndpointSchema>;
export const agentsEndpointSChema = baseEndpointSchema.merge(
z.object({
/* agents specific */
recursionLimit: z.number().optional(),
disableBuilder: z.boolean().optional(),
capabilities: z
.array(z.nativeEnum(AgentCapabilities))
@ -739,6 +740,7 @@ export const supportsBalanceCheck = {
};
export const visionModels = [
'o1',
'gpt-4o',
'gpt-4o-mini',
'gpt-4-turbo',
@ -775,7 +777,7 @@ export function validateVisionModel({
return false;
}
if (model === 'gpt-4-turbo-preview') {
if (model.includes('gpt-4-turbo-preview') || model.includes('o1-mini')) {
return false;
}
@ -1088,7 +1090,7 @@ export enum Constants {
/** Key for the app's version. */
VERSION = 'v0.7.6',
/** Key for the Custom Config's version (librechat.yaml). */
CONFIG_VERSION = '1.2.0',
CONFIG_VERSION = '1.2.1',
/** Standard value for the first message's `parentMessageId` value, to indicate no parent exists. */
NO_PARENT = '00000000-0000-0000-0000-000000000000',
/** Standard value for the initial conversationId before a request is sent */