From 3a62a2633d48b9995be4762d38828bc45ceb2f2f Mon Sep 17 00:00:00 2001 From: Ruben Talstra Date: Fri, 21 Mar 2025 22:48:11 +0100 Subject: [PATCH 001/123] =?UTF-8?q?=F0=9F=92=B5=20feat:=20Add=20Automatic?= =?UTF-8?q?=20Balance=20Refill=20(#6452)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🚀 feat: Add automatic refill settings to balance schema * 🚀 feat: Refactor balance feature to use global interface configuration * 🚀 feat: Implement auto-refill functionality for balance management * 🚀 feat: Enhance auto-refill logic and configuration for balance management * 🚀 chore: Bump version to 0.7.74 in package.json and package-lock.json * 🚀 chore: Bump version to 0.0.5 in package.json and package-lock.json * 🚀 docs: Update comment for balance settings in librechat.example.yaml * chore: space in `.env.example` * 🚀 feat: Implement balance configuration loading and refactor related components * 🚀 test: Refactor tests to use custom config for balance feature * 🚀 fix: Update balance response handling in Transaction.js to use Balance model * 🚀 test: Update AppService tests to include balance configuration in mock setup * 🚀 test: Enhance AppService tests with complete balance configuration scenarios * 🚀 refactor: Rename balanceConfig to balance and update related tests for clarity * 🚀 refactor: Remove loadDefaultBalance and update balance handling in AppService * 🚀 test: Update AppService tests to reflect new balance structure and defaults * 🚀 test: Mock getCustomConfig in BaseClient tests to control balance configuration * 🚀 test: Add get method to mockCache in OpenAIClient tests for improved cache handling * 🚀 test: Mock getCustomConfig in OpenAIClient tests to control balance configuration * 🚀 test: Remove mock for getCustomConfig in OpenAIClient tests to streamline configuration handling * 🚀 fix: Update balance configuration reference in config.js for consistency * refactor: Add getBalanceConfig function to retrieve balance configuration * chore: Comment out example balance settings in librechat.example.yaml * refactor: Replace getCustomConfig with getBalanceConfig for balance handling * fix: tests * refactor: Replace getBalanceConfig call with balance from request locals * refactor: Update balance handling to use environment variables for configuration * refactor: Replace getBalanceConfig calls with balance from request locals * refactor: Simplify balance configuration logic in getBalanceConfig --------- Co-authored-by: Danny Avila --- .env.example | 2 +- api/app/clients/BaseClient.js | 5 +- api/app/clients/PluginsClient.js | 4 +- .../clients/callbacks/createStartHandler.js | 6 +- api/app/clients/specs/OpenAIClient.test.js | 7 +- api/models/Balance.js | 79 ++++++++-- api/models/Transaction.js | 28 ++-- api/models/Transaction.spec.js | 138 +++++++++--------- api/models/spendTokens.spec.js | 15 +- api/models/userMethods.js | 42 ++++-- api/server/controllers/assistants/chatV1.js | 5 +- api/server/controllers/assistants/chatV2.js | 5 +- api/server/routes/config.js | 2 +- api/server/services/AppService.js | 13 +- api/server/services/AppService.spec.js | 29 +++- api/server/services/Config/getCustomConfig.js | 27 +++- client/src/components/Nav/AccountSettings.tsx | 4 +- client/src/hooks/SSE/useSSE.ts | 7 +- librechat.example.yaml | 10 ++ package-lock.json | 4 +- packages/data-provider/package.json | 2 +- packages/data-provider/src/config.ts | 16 +- packages/data-schemas/package.json | 2 +- packages/data-schemas/src/schema/balance.ts | 29 ++++ 24 files changed, 334 insertions(+), 147 deletions(-) diff --git a/.env.example b/.env.example index d0e189acdb..57af603540 100644 --- a/.env.example +++ b/.env.example @@ -364,7 +364,7 @@ ILLEGAL_MODEL_REQ_SCORE=5 # Balance # #========================# -CHECK_BALANCE=false +# CHECK_BALANCE=false # START_BALANCE=20000 # note: the number of tokens that will be credited after registration. #========================# diff --git a/api/app/clients/BaseClient.js b/api/app/clients/BaseClient.js index d3077e68f5..54e88e5953 100644 --- a/api/app/clients/BaseClient.js +++ b/api/app/clients/BaseClient.js @@ -11,8 +11,8 @@ const { Constants, } = require('librechat-data-provider'); const { getMessages, saveMessage, updateMessage, saveConvo, getConvo } = require('~/models'); -const { addSpaceIfNeeded, isEnabled } = require('~/server/utils'); const { truncateToolCallOutputs } = require('./prompts'); +const { addSpaceIfNeeded } = require('~/server/utils'); const checkBalance = require('~/models/checkBalance'); const { getFiles } = require('~/models/File'); const TextStream = require('./TextStream'); @@ -634,8 +634,9 @@ class BaseClient { } } + const balance = this.options.req?.app?.locals?.balance; if ( - isEnabled(process.env.CHECK_BALANCE) && + balance?.enabled && supportsBalanceCheck[this.options.endpointType ?? this.options.endpoint] ) { await checkBalance({ diff --git a/api/app/clients/PluginsClient.js b/api/app/clients/PluginsClient.js index bfe222e248..9fd906ae47 100644 --- a/api/app/clients/PluginsClient.js +++ b/api/app/clients/PluginsClient.js @@ -7,7 +7,6 @@ const { processFileURL } = require('~/server/services/Files/process'); const { EModelEndpoint } = require('librechat-data-provider'); const { formatLangChainMessages } = require('./prompts'); const checkBalance = require('~/models/checkBalance'); -const { isEnabled } = require('~/server/utils'); const { extractBaseURL } = require('~/utils'); const { loadTools } = require('./tools/util'); const { logger } = require('~/config'); @@ -336,7 +335,8 @@ class PluginsClient extends OpenAIClient { } } - if (isEnabled(process.env.CHECK_BALANCE)) { + const balance = this.options.req?.app?.locals?.balance; + if (balance?.enabled) { await checkBalance({ req: this.options.req, res: this.options.res, diff --git a/api/app/clients/callbacks/createStartHandler.js b/api/app/clients/callbacks/createStartHandler.js index 4bc32bc0c2..d5d806e6c2 100644 --- a/api/app/clients/callbacks/createStartHandler.js +++ b/api/app/clients/callbacks/createStartHandler.js @@ -1,8 +1,8 @@ const { promptTokensEstimate } = require('openai-chat-tokens'); const { EModelEndpoint, supportsBalanceCheck } = require('librechat-data-provider'); const { formatFromLangChain } = require('~/app/clients/prompts'); +const { getBalanceConfig } = require('~/server/services/Config'); const checkBalance = require('~/models/checkBalance'); -const { isEnabled } = require('~/server/utils'); const { logger } = require('~/config'); const createStartHandler = ({ @@ -49,8 +49,8 @@ const createStartHandler = ({ prelimPromptTokens += tokenBuffer; try { - // TODO: if plugins extends to non-OpenAI models, this will need to be updated - if (isEnabled(process.env.CHECK_BALANCE) && supportsBalanceCheck[EModelEndpoint.openAI]) { + const balance = await getBalanceConfig(); + if (balance?.enabled && supportsBalanceCheck[EModelEndpoint.openAI]) { const generations = initialMessageCount && messages.length > initialMessageCount ? messages.slice(initialMessageCount) diff --git a/api/app/clients/specs/OpenAIClient.test.js b/api/app/clients/specs/OpenAIClient.test.js index 0e811cf38a..adc290486a 100644 --- a/api/app/clients/specs/OpenAIClient.test.js +++ b/api/app/clients/specs/OpenAIClient.test.js @@ -136,10 +136,11 @@ OpenAI.mockImplementation(() => ({ })); describe('OpenAIClient', () => { - const mockSet = jest.fn(); - const mockCache = { set: mockSet }; - beforeEach(() => { + const mockCache = { + get: jest.fn().mockResolvedValue({}), + set: jest.fn(), + }; getLogStores.mockReturnValue(mockCache); }); let client; diff --git a/api/models/Balance.js b/api/models/Balance.js index f7978d8049..c26ed90bc0 100644 --- a/api/models/Balance.js +++ b/api/models/Balance.js @@ -3,6 +3,40 @@ const { balanceSchema } = require('@librechat/data-schemas'); const { getMultiplier } = require('./tx'); const { logger } = require('~/config'); +/** + * Adds a time interval to a given date. + * @param {Date} date - The starting date. + * @param {number} value - The numeric value of the interval. + * @param {'seconds'|'minutes'|'hours'|'days'|'weeks'|'months'} unit - The unit of time. + * @returns {Date} A new Date representing the starting date plus the interval. + */ +const addIntervalToDate = (date, value, unit) => { + const result = new Date(date); + switch (unit) { + case 'seconds': + result.setSeconds(result.getSeconds() + value); + break; + case 'minutes': + result.setMinutes(result.getMinutes() + value); + break; + case 'hours': + result.setHours(result.getHours() + value); + break; + case 'days': + result.setDate(result.getDate() + value); + break; + case 'weeks': + result.setDate(result.getDate() + value * 7); + break; + case 'months': + result.setMonth(result.getMonth() + value); + break; + default: + break; + } + return result; +}; + balanceSchema.statics.check = async function ({ user, model, @@ -14,9 +48,20 @@ balanceSchema.statics.check = async function ({ }) { const multiplier = getMultiplier({ valueKey, tokenType, model, endpoint, endpointTokenConfig }); const tokenCost = amount * multiplier; - const { tokenCredits: balance } = (await this.findOne({ user }, 'tokenCredits').lean()) ?? {}; - logger.debug('[Balance.check]', { + // Retrieve the complete balance record + let record = await this.findOne({ user }).lean(); + if (!record) { + logger.debug('[Balance.check] No balance record found for user', { user }); + return { + canSpend: false, + balance: 0, + tokenCost, + }; + } + let balance = record.tokenCredits; + + logger.debug('[Balance.check] Initial state', { user, model, endpoint, @@ -28,15 +73,31 @@ balanceSchema.statics.check = async function ({ endpointTokenConfig: !!endpointTokenConfig, }); - if (!balance) { - return { - canSpend: false, - balance: 0, - tokenCost, - }; + // Only perform auto-refill if spending would bring the balance to 0 or below + if (balance - tokenCost <= 0 && record.autoRefillEnabled && record.refillAmount > 0) { + const lastRefillDate = new Date(record.lastRefill); + const nextRefillDate = addIntervalToDate( + lastRefillDate, + record.refillIntervalValue, + record.refillIntervalUnit, + ); + const now = new Date(); + + if (now >= nextRefillDate) { + record = await this.findOneAndUpdate( + { user }, + { + $inc: { tokenCredits: record.refillAmount }, + $set: { lastRefill: new Date() }, + }, + { new: true }, + ).lean(); + balance = record.tokenCredits; + logger.debug('[Balance.check] Auto-refill performed', { balance }); + } } - logger.debug('[Balance.check]', { tokenCost }); + logger.debug('[Balance.check] Token cost', { tokenCost }); return { canSpend: balance >= tokenCost, balance, tokenCost }; }; diff --git a/api/models/Transaction.js b/api/models/Transaction.js index b1c4c65710..b9f444d984 100644 --- a/api/models/Transaction.js +++ b/api/models/Transaction.js @@ -1,6 +1,6 @@ const mongoose = require('mongoose'); -const { isEnabled } = require('~/server/utils/handleText'); const { transactionSchema } = require('@librechat/data-schemas'); +const { getBalanceConfig } = require('~/server/services/Config'); const { getMultiplier, getCacheMultiplier } = require('./tx'); const { logger } = require('~/config'); const Balance = require('./Balance'); @@ -37,18 +37,19 @@ transactionSchema.statics.create = async function (txData) { await transaction.save(); - if (!isEnabled(process.env.CHECK_BALANCE)) { + const balance = await getBalanceConfig(); + if (!balance?.enabled) { return; } - let balance = await Balance.findOne({ user: transaction.user }).lean(); + let balanceResponse = await Balance.findOne({ user: transaction.user }).lean(); let incrementValue = transaction.tokenValue; - if (balance && balance?.tokenCredits + incrementValue < 0) { - incrementValue = -balance.tokenCredits; + if (balanceResponse && balanceResponse.tokenCredits + incrementValue < 0) { + incrementValue = -balanceResponse.tokenCredits; } - balance = await Balance.findOneAndUpdate( + balanceResponse = await Balance.findOneAndUpdate( { user: transaction.user }, { $inc: { tokenCredits: incrementValue } }, { upsert: true, new: true }, @@ -57,7 +58,7 @@ transactionSchema.statics.create = async function (txData) { return { rate: transaction.rate, user: transaction.user.toString(), - balance: balance.tokenCredits, + balance: balanceResponse.tokenCredits, [transaction.tokenType]: incrementValue, }; }; @@ -78,18 +79,19 @@ transactionSchema.statics.createStructured = async function (txData) { await transaction.save(); - if (!isEnabled(process.env.CHECK_BALANCE)) { + const balance = await getBalanceConfig(); + if (!balance?.enabled) { return; } - let balance = await Balance.findOne({ user: transaction.user }).lean(); + let balanceResponse = await Balance.findOne({ user: transaction.user }).lean(); let incrementValue = transaction.tokenValue; - if (balance && balance?.tokenCredits + incrementValue < 0) { - incrementValue = -balance.tokenCredits; + if (balanceResponse && balanceResponse.tokenCredits + incrementValue < 0) { + incrementValue = -balanceResponse.tokenCredits; } - balance = await Balance.findOneAndUpdate( + balanceResponse = await Balance.findOneAndUpdate( { user: transaction.user }, { $inc: { tokenCredits: incrementValue } }, { upsert: true, new: true }, @@ -98,7 +100,7 @@ transactionSchema.statics.createStructured = async function (txData) { return { rate: transaction.rate, user: transaction.user.toString(), - balance: balance.tokenCredits, + balance: balanceResponse.tokenCredits, [transaction.tokenType]: incrementValue, }; }; diff --git a/api/models/Transaction.spec.js b/api/models/Transaction.spec.js index b8c69e13f4..43f3c004b2 100644 --- a/api/models/Transaction.spec.js +++ b/api/models/Transaction.spec.js @@ -1,9 +1,13 @@ const mongoose = require('mongoose'); const { MongoMemoryServer } = require('mongodb-memory-server'); +const { spendTokens, spendStructuredTokens } = require('./spendTokens'); +const { getBalanceConfig } = require('~/server/services/Config'); +const { getMultiplier, getCacheMultiplier } = require('./tx'); const { Transaction } = require('./Transaction'); const Balance = require('./Balance'); -const { spendTokens, spendStructuredTokens } = require('./spendTokens'); -const { getMultiplier, getCacheMultiplier } = require('./tx'); + +// Mock the custom config module so we can control the balance flag. +jest.mock('~/server/services/Config'); let mongoServer; @@ -20,6 +24,8 @@ afterAll(async () => { beforeEach(async () => { await mongoose.connection.dropDatabase(); + // Default: enable balance updates in tests. + getBalanceConfig.mockResolvedValue({ enabled: true }); }); describe('Regular Token Spending Tests', () => { @@ -44,34 +50,22 @@ describe('Regular Token Spending Tests', () => { }; // Act - process.env.CHECK_BALANCE = 'true'; await spendTokens(txData, tokenUsage); // Assert - console.log('Initial Balance:', initialBalance); - const updatedBalance = await Balance.findOne({ user: userId }); - console.log('Updated Balance:', updatedBalance.tokenCredits); - const promptMultiplier = getMultiplier({ model, tokenType: 'prompt' }); const completionMultiplier = getMultiplier({ model, tokenType: 'completion' }); - - const expectedPromptCost = tokenUsage.promptTokens * promptMultiplier; - const expectedCompletionCost = tokenUsage.completionTokens * completionMultiplier; - const expectedTotalCost = expectedPromptCost + expectedCompletionCost; + const expectedTotalCost = 100 * promptMultiplier + 50 * completionMultiplier; const expectedBalance = initialBalance - expectedTotalCost; - expect(updatedBalance.tokenCredits).toBeLessThan(initialBalance); expect(updatedBalance.tokenCredits).toBeCloseTo(expectedBalance, 0); - - console.log('Expected Total Cost:', expectedTotalCost); - console.log('Actual Balance Decrease:', initialBalance - updatedBalance.tokenCredits); }); test('spendTokens should handle zero completion tokens', async () => { // Arrange const userId = new mongoose.Types.ObjectId(); - const initialBalance = 10000000; // $10.00 + const initialBalance = 10000000; await Balance.create({ user: userId, tokenCredits: initialBalance }); const model = 'gpt-3.5-turbo'; @@ -89,24 +83,19 @@ describe('Regular Token Spending Tests', () => { }; // Act - process.env.CHECK_BALANCE = 'true'; await spendTokens(txData, tokenUsage); // Assert const updatedBalance = await Balance.findOne({ user: userId }); - const promptMultiplier = getMultiplier({ model, tokenType: 'prompt' }); - const expectedCost = tokenUsage.promptTokens * promptMultiplier; + const expectedCost = 100 * promptMultiplier; expect(updatedBalance.tokenCredits).toBeCloseTo(initialBalance - expectedCost, 0); - - console.log('Initial Balance:', initialBalance); - console.log('Updated Balance:', updatedBalance.tokenCredits); - console.log('Expected Cost:', expectedCost); }); test('spendTokens should handle undefined token counts', async () => { + // Arrange const userId = new mongoose.Types.ObjectId(); - const initialBalance = 10000000; // $10.00 + const initialBalance = 10000000; await Balance.create({ user: userId, tokenCredits: initialBalance }); const model = 'gpt-3.5-turbo'; @@ -120,14 +109,17 @@ describe('Regular Token Spending Tests', () => { const tokenUsage = {}; + // Act const result = await spendTokens(txData, tokenUsage); + // Assert: No transaction should be created expect(result).toBeUndefined(); }); test('spendTokens should handle only prompt tokens', async () => { + // Arrange const userId = new mongoose.Types.ObjectId(); - const initialBalance = 10000000; // $10.00 + const initialBalance = 10000000; await Balance.create({ user: userId, tokenCredits: initialBalance }); const model = 'gpt-3.5-turbo'; @@ -141,14 +133,44 @@ describe('Regular Token Spending Tests', () => { const tokenUsage = { promptTokens: 100 }; + // Act await spendTokens(txData, tokenUsage); + // Assert const updatedBalance = await Balance.findOne({ user: userId }); - const promptMultiplier = getMultiplier({ model, tokenType: 'prompt' }); const expectedCost = 100 * promptMultiplier; expect(updatedBalance.tokenCredits).toBeCloseTo(initialBalance - expectedCost, 0); }); + + test('spendTokens should not update balance when balance feature is disabled', async () => { + // Arrange: Override the config to disable balance updates. + getBalanceConfig.mockResolvedValue({ balance: { enabled: false } }); + const userId = new mongoose.Types.ObjectId(); + const initialBalance = 10000000; + await Balance.create({ user: userId, tokenCredits: initialBalance }); + + const model = 'gpt-3.5-turbo'; + const txData = { + user: userId, + conversationId: 'test-conversation-id', + model, + context: 'test', + endpointTokenConfig: null, + }; + + const tokenUsage = { + promptTokens: 100, + completionTokens: 50, + }; + + // Act + await spendTokens(txData, tokenUsage); + + // Assert: Balance should remain unchanged. + const updatedBalance = await Balance.findOne({ user: userId }); + expect(updatedBalance.tokenCredits).toBe(initialBalance); + }); }); describe('Structured Token Spending Tests', () => { @@ -164,7 +186,7 @@ describe('Structured Token Spending Tests', () => { conversationId: 'c23a18da-706c-470a-ac28-ec87ed065199', model, context: 'message', - endpointTokenConfig: null, // We'll use the default rates + endpointTokenConfig: null, }; const tokenUsage = { @@ -176,28 +198,15 @@ describe('Structured Token Spending Tests', () => { completionTokens: 5, }; - // Get the actual multipliers const promptMultiplier = getMultiplier({ model, tokenType: 'prompt' }); const completionMultiplier = getMultiplier({ model, tokenType: 'completion' }); const writeMultiplier = getCacheMultiplier({ model, cacheType: 'write' }); const readMultiplier = getCacheMultiplier({ model, cacheType: 'read' }); - console.log('Multipliers:', { - promptMultiplier, - completionMultiplier, - writeMultiplier, - readMultiplier, - }); - // Act - process.env.CHECK_BALANCE = 'true'; const result = await spendStructuredTokens(txData, tokenUsage); - // Assert - console.log('Initial Balance:', initialBalance); - console.log('Updated Balance:', result.completion.balance); - console.log('Transaction Result:', result); - + // Calculate expected costs. const expectedPromptCost = tokenUsage.promptTokens.input * promptMultiplier + tokenUsage.promptTokens.write * writeMultiplier + @@ -206,37 +215,21 @@ describe('Structured Token Spending Tests', () => { const expectedTotalCost = expectedPromptCost + expectedCompletionCost; const expectedBalance = initialBalance - expectedTotalCost; - console.log('Expected Cost:', expectedTotalCost); - console.log('Expected Balance:', expectedBalance); - + // Assert expect(result.completion.balance).toBeLessThan(initialBalance); - - // Allow for a small difference (e.g., 100 token credits, which is $0.0001) const allowedDifference = 100; expect(Math.abs(result.completion.balance - expectedBalance)).toBeLessThan(allowedDifference); - - // Check if the decrease is approximately as expected const balanceDecrease = initialBalance - result.completion.balance; expect(balanceDecrease).toBeCloseTo(expectedTotalCost, 0); - // Check token values - const expectedPromptTokenValue = -( - tokenUsage.promptTokens.input * promptMultiplier + - tokenUsage.promptTokens.write * writeMultiplier + - tokenUsage.promptTokens.read * readMultiplier - ); - const expectedCompletionTokenValue = -tokenUsage.completionTokens * completionMultiplier; - + const expectedPromptTokenValue = -expectedPromptCost; + const expectedCompletionTokenValue = -expectedCompletionCost; expect(result.prompt.prompt).toBeCloseTo(expectedPromptTokenValue, 1); expect(result.completion.completion).toBe(expectedCompletionTokenValue); - - console.log('Expected prompt tokenValue:', expectedPromptTokenValue); - console.log('Actual prompt tokenValue:', result.prompt.prompt); - console.log('Expected completion tokenValue:', expectedCompletionTokenValue); - console.log('Actual completion tokenValue:', result.completion.completion); }); test('should handle zero completion tokens in structured spending', async () => { + // Arrange const userId = new mongoose.Types.ObjectId(); const initialBalance = 17613154.55; await Balance.create({ user: userId, tokenCredits: initialBalance }); @@ -258,15 +251,17 @@ describe('Structured Token Spending Tests', () => { completionTokens: 0, }; - process.env.CHECK_BALANCE = 'true'; + // Act const result = await spendStructuredTokens(txData, tokenUsage); + // Assert expect(result.prompt).toBeDefined(); expect(result.completion).toBeUndefined(); expect(result.prompt.prompt).toBeLessThan(0); }); test('should handle only prompt tokens in structured spending', async () => { + // Arrange const userId = new mongoose.Types.ObjectId(); const initialBalance = 17613154.55; await Balance.create({ user: userId, tokenCredits: initialBalance }); @@ -287,15 +282,17 @@ describe('Structured Token Spending Tests', () => { }, }; - process.env.CHECK_BALANCE = 'true'; + // Act const result = await spendStructuredTokens(txData, tokenUsage); + // Assert expect(result.prompt).toBeDefined(); expect(result.completion).toBeUndefined(); expect(result.prompt.prompt).toBeLessThan(0); }); test('should handle undefined token counts in structured spending', async () => { + // Arrange const userId = new mongoose.Types.ObjectId(); const initialBalance = 17613154.55; await Balance.create({ user: userId, tokenCredits: initialBalance }); @@ -310,9 +307,10 @@ describe('Structured Token Spending Tests', () => { const tokenUsage = {}; - process.env.CHECK_BALANCE = 'true'; + // Act const result = await spendStructuredTokens(txData, tokenUsage); + // Assert expect(result).toEqual({ prompt: undefined, completion: undefined, @@ -320,6 +318,7 @@ describe('Structured Token Spending Tests', () => { }); test('should handle incomplete context for completion tokens', async () => { + // Arrange const userId = new mongoose.Types.ObjectId(); const initialBalance = 17613154.55; await Balance.create({ user: userId, tokenCredits: initialBalance }); @@ -341,15 +340,18 @@ describe('Structured Token Spending Tests', () => { completionTokens: 50, }; - process.env.CHECK_BALANCE = 'true'; + // Act const result = await spendStructuredTokens(txData, tokenUsage); - expect(result.completion.completion).toBeCloseTo(-50 * 15 * 1.15, 0); // Assuming multiplier is 15 and cancelRate is 1.15 + // Assert: + // (Assuming a multiplier for completion of 15 and a cancel rate of 1.15 as noted in the original test.) + expect(result.completion.completion).toBeCloseTo(-50 * 15 * 1.15, 0); }); }); describe('NaN Handling Tests', () => { test('should skip transaction creation when rawAmount is NaN', async () => { + // Arrange const userId = new mongoose.Types.ObjectId(); const initialBalance = 10000000; await Balance.create({ user: userId, tokenCredits: initialBalance }); @@ -365,9 +367,11 @@ describe('NaN Handling Tests', () => { tokenType: 'prompt', }; + // Act const result = await Transaction.create(txData); - expect(result).toBeUndefined(); + // Assert: No transaction should be created and balance remains unchanged. + expect(result).toBeUndefined(); const balance = await Balance.findOne({ user: userId }); expect(balance.tokenCredits).toBe(initialBalance); }); diff --git a/api/models/spendTokens.spec.js b/api/models/spendTokens.spec.js index 91056bb54c..f855c31196 100644 --- a/api/models/spendTokens.spec.js +++ b/api/models/spendTokens.spec.js @@ -19,14 +19,19 @@ jest.mock('~/config', () => ({ }, })); +// New config module +const { getBalanceConfig } = require('~/server/services/Config'); +jest.mock('~/server/services/Config'); + // Import after mocking const { spendTokens, spendStructuredTokens } = require('./spendTokens'); const { Transaction } = require('./Transaction'); const Balance = require('./Balance'); + describe('spendTokens', () => { beforeEach(() => { jest.clearAllMocks(); - process.env.CHECK_BALANCE = 'true'; + getBalanceConfig.mockResolvedValue({ enabled: true }); }); it('should create transactions for both prompt and completion tokens', async () => { @@ -92,7 +97,7 @@ describe('spendTokens', () => { expect(Transaction.create).toHaveBeenCalledWith( expect.objectContaining({ tokenType: 'completion', - rawAmount: -0, // Changed from 0 to -0 + rawAmount: -0, }), ); }); @@ -111,8 +116,9 @@ describe('spendTokens', () => { expect(Transaction.create).not.toHaveBeenCalled(); }); - it('should not update balance when CHECK_BALANCE is false', async () => { - process.env.CHECK_BALANCE = 'false'; + it('should not update balance when the balance feature is disabled', async () => { + // Override configuration: disable balance updates. + getBalanceConfig.mockResolvedValue({ enabled: false }); const txData = { user: new mongoose.Types.ObjectId(), conversationId: 'test-convo', @@ -130,6 +136,7 @@ describe('spendTokens', () => { await spendTokens(txData, tokenUsage); expect(Transaction.create).toHaveBeenCalledTimes(2); + // When balance updates are disabled, Balance methods should not be called. expect(Balance.findOne).not.toHaveBeenCalled(); expect(Balance.findOneAndUpdate).not.toHaveBeenCalled(); }); diff --git a/api/models/userMethods.js b/api/models/userMethods.js index 63b25edd3a..fbcd33aba8 100644 --- a/api/models/userMethods.js +++ b/api/models/userMethods.js @@ -1,6 +1,6 @@ const bcrypt = require('bcryptjs'); +const { getBalanceConfig } = require('~/server/services/Config'); const signPayload = require('~/server/services/signPayload'); -const { isEnabled } = require('~/server/utils/handleText'); const Balance = require('./Balance'); const User = require('./User'); @@ -13,11 +13,9 @@ const User = require('./User'); */ const getUserById = async function (userId, fieldsToSelect = null) { const query = User.findById(userId); - if (fieldsToSelect) { query.select(fieldsToSelect); } - return await query.lean(); }; @@ -32,7 +30,6 @@ const findUser = async function (searchCriteria, fieldsToSelect = null) { if (fieldsToSelect) { query.select(fieldsToSelect); } - return await query.lean(); }; @@ -58,11 +55,12 @@ const updateUser = async function (userId, updateData) { * Creates a new user, optionally with a TTL of 1 week. * @param {MongoUser} data - The user data to be created, must contain user_id. * @param {boolean} [disableTTL=true] - Whether to disable the TTL. Defaults to `true`. - * @param {boolean} [returnUser=false] - Whether to disable the TTL. Defaults to `true`. - * @returns {Promise} A promise that resolves to the created user document ID. + * @param {boolean} [returnUser=false] - Whether to return the created user object. + * @returns {Promise} A promise that resolves to the created user document ID or user object. * @throws {Error} If a user with the same user_id already exists. */ const createUser = async (data, disableTTL = true, returnUser = false) => { + const balance = await getBalanceConfig(); const userData = { ...data, expiresAt: disableTTL ? null : new Date(Date.now() + 604800 * 1000), // 1 week in milliseconds @@ -74,13 +72,27 @@ const createUser = async (data, disableTTL = true, returnUser = false) => { const user = await User.create(userData); - if (isEnabled(process.env.CHECK_BALANCE) && process.env.START_BALANCE) { - let incrementValue = parseInt(process.env.START_BALANCE); - await Balance.findOneAndUpdate( - { user: user._id }, - { $inc: { tokenCredits: incrementValue } }, - { upsert: true, new: true }, - ).lean(); + // If balance is enabled, create or update a balance record for the user using global.interfaceConfig.balance + if (balance?.enabled && balance?.startBalance) { + const update = { + $inc: { tokenCredits: balance.startBalance }, + }; + + if ( + balance.autoRefillEnabled && + balance.refillIntervalValue != null && + balance.refillIntervalUnit != null && + balance.refillAmount != null + ) { + update.$set = { + autoRefillEnabled: true, + refillIntervalValue: balance.refillIntervalValue, + refillIntervalUnit: balance.refillIntervalUnit, + refillAmount: balance.refillAmount, + }; + } + + await Balance.findOneAndUpdate({ user: user._id }, update, { upsert: true, new: true }).lean(); } if (returnUser) { @@ -123,7 +135,7 @@ const expires = eval(SESSION_EXPIRY) ?? 1000 * 60 * 15; /** * Generates a JWT token for a given user. * - * @param {MongoUser} user - ID of the user for whom the token is being generated. + * @param {MongoUser} user - The user for whom the token is being generated. * @returns {Promise} A promise that resolves to a JWT token. */ const generateToken = async (user) => { @@ -146,7 +158,7 @@ const generateToken = async (user) => { /** * Compares the provided password with the user's password. * - * @param {MongoUser} user - the user to compare password for. + * @param {MongoUser} user - The user to compare the password for. * @param {string} candidatePassword - The password to test against the user's password. * @returns {Promise} A promise that resolves to a boolean indicating if the password matches. */ diff --git a/api/server/controllers/assistants/chatV1.js b/api/server/controllers/assistants/chatV1.js index 8461941e05..cb30277e93 100644 --- a/api/server/controllers/assistants/chatV1.js +++ b/api/server/controllers/assistants/chatV1.js @@ -19,7 +19,7 @@ const { addThreadMetadata, saveAssistantMessage, } = require('~/server/services/Threads'); -const { sendResponse, sendMessage, sleep, isEnabled, countTokens } = require('~/server/utils'); +const { sendResponse, sendMessage, sleep, countTokens } = require('~/server/utils'); const { runAssistant, createOnTextProgress } = require('~/server/services/AssistantService'); const validateAuthor = require('~/server/middleware/assistants/validateAuthor'); const { formatMessage, createVisionPrompt } = require('~/app/clients/prompts'); @@ -248,7 +248,8 @@ const chatV1 = async (req, res) => { } const checkBalanceBeforeRun = async () => { - if (!isEnabled(process.env.CHECK_BALANCE)) { + const balance = req.app?.locals?.balance; + if (!balance?.enabled) { return; } const transactions = diff --git a/api/server/controllers/assistants/chatV2.js b/api/server/controllers/assistants/chatV2.js index 24a8e38fa4..cf130e4eef 100644 --- a/api/server/controllers/assistants/chatV2.js +++ b/api/server/controllers/assistants/chatV2.js @@ -18,11 +18,11 @@ const { saveAssistantMessage, } = require('~/server/services/Threads'); const { runAssistant, createOnTextProgress } = require('~/server/services/AssistantService'); -const { sendMessage, sleep, isEnabled, countTokens } = require('~/server/utils'); const { createErrorHandler } = require('~/server/controllers/assistants/errors'); const validateAuthor = require('~/server/middleware/assistants/validateAuthor'); const { createRun, StreamRunManager } = require('~/server/services/Runs'); const { addTitle } = require('~/server/services/Endpoints/assistants'); +const { sendMessage, sleep, countTokens } = require('~/server/utils'); const { createRunBody } = require('~/server/services/createRunBody'); const { getTransactions } = require('~/models/Transaction'); const checkBalance = require('~/models/checkBalance'); @@ -124,7 +124,8 @@ const chatV2 = async (req, res) => { } const checkBalanceBeforeRun = async () => { - if (!isEnabled(process.env.CHECK_BALANCE)) { + const balance = req.app?.locals?.balance; + if (!balance?.enabled) { return; } const transactions = diff --git a/api/server/routes/config.js b/api/server/routes/config.js index e8d2fe57ac..e1e8ba763b 100644 --- a/api/server/routes/config.js +++ b/api/server/routes/config.js @@ -69,7 +69,6 @@ router.get('/', async function (req, res) { !!process.env.EMAIL_PASSWORD && !!process.env.EMAIL_FROM, passwordResetEnabled, - checkBalance: isEnabled(process.env.CHECK_BALANCE), showBirthdayIcon: isBirthday() || isEnabled(process.env.SHOW_BIRTHDAY_ICON) || @@ -77,6 +76,7 @@ router.get('/', async function (req, res) { helpAndFaqURL: process.env.HELP_AND_FAQ_URL || 'https://librechat.ai', interface: req.app.locals.interfaceConfig, modelSpecs: req.app.locals.modelSpecs, + balance: req.app.locals.balance, sharedLinksEnabled, publicSharedLinksEnabled, analyticsGtmId: process.env.ANALYTICS_GTM_ID, diff --git a/api/server/services/AppService.js b/api/server/services/AppService.js index 3fdae6ac10..baead97448 100644 --- a/api/server/services/AppService.js +++ b/api/server/services/AppService.js @@ -9,15 +9,16 @@ const { checkVariables, checkHealth, checkConfig, checkAzureVariables } = requir const { azureAssistantsDefaults, assistantsConfigSetup } = require('./start/assistants'); const { initializeAzureBlobService } = require('./Files/Azure/initialize'); const { initializeFirebase } = require('./Files/Firebase/initialize'); -const { initializeS3 } = require('./Files/S3/initialize'); const loadCustomConfig = require('./Config/loadCustomConfig'); const handleRateLimits = require('./Config/handleRateLimits'); const { loadDefaultInterface } = require('./start/interface'); const { azureConfigSetup } = require('./start/azureOpenAI'); const { processModelSpecs } = require('./start/modelSpecs'); +const { initializeS3 } = require('./Files/S3/initialize'); const { loadAndFormatTools } = require('./ToolService'); const { agentsConfigSetup } = require('./start/agents'); const { initializeRoles } = require('~/models/Role'); +const { isEnabled } = require('~/server/utils'); const { getMCPManager } = require('~/config'); const paths = require('~/config/paths'); @@ -29,7 +30,7 @@ const paths = require('~/config/paths'); */ const AppService = async (app) => { await initializeRoles(); - /** @type {TCustomConfig}*/ + /** @type {TCustomConfig} */ const config = (await loadCustomConfig()) ?? {}; const configDefaults = getConfigDefaults(); @@ -37,6 +38,11 @@ const AppService = async (app) => { const filteredTools = config.filteredTools; const includedTools = config.includedTools; const fileStrategy = config.fileStrategy ?? configDefaults.fileStrategy; + const startBalance = process.env.START_BALANCE; + const balance = config.balance ?? { + enabled: isEnabled(process.env.CHECK_BALANCE), + startBalance: startBalance ? parseInt(startBalance, 10) : undefined, + }; const imageOutputType = config?.imageOutputType ?? configDefaults.imageOutputType; process.env.CDN_PROVIDER = fileStrategy; @@ -52,7 +58,7 @@ const AppService = async (app) => { initializeS3(); } - /** @type {Record} */ const availableTools = loadAndFormatTools({ adminFilter: filteredTools, adminIncluded: includedTools, @@ -79,6 +85,7 @@ const AppService = async (app) => { availableTools, imageOutputType, interfaceConfig, + balance, }; if (!Object.keys(config).length) { diff --git a/api/server/services/AppService.spec.js b/api/server/services/AppService.spec.js index e47bfe7d5d..465ec9fdd6 100644 --- a/api/server/services/AppService.spec.js +++ b/api/server/services/AppService.spec.js @@ -15,6 +15,9 @@ jest.mock('./Config/loadCustomConfig', () => { Promise.resolve({ registration: { socialLogins: ['testLogin'] }, fileStrategy: 'testStrategy', + balance: { + enabled: true, + }, }), ); }); @@ -124,6 +127,9 @@ describe('AppService', () => { imageOutputType: expect.any(String), fileConfig: undefined, secureImageLinks: undefined, + balance: { enabled: true }, + filteredTools: undefined, + includedTools: undefined, }); }); @@ -341,9 +347,6 @@ describe('AppService', () => { process.env.FILE_UPLOAD_USER_MAX = 'initialUserMax'; process.env.FILE_UPLOAD_USER_WINDOW = 'initialUserWindow'; - // Mock a custom configuration without specific rate limits - require('./Config/loadCustomConfig').mockImplementationOnce(() => Promise.resolve({})); - await AppService(app); // Verify that process.env falls back to the initial values @@ -404,9 +407,6 @@ describe('AppService', () => { process.env.IMPORT_USER_MAX = 'initialUserMax'; process.env.IMPORT_USER_WINDOW = 'initialUserWindow'; - // Mock a custom configuration without specific rate limits - require('./Config/loadCustomConfig').mockImplementationOnce(() => Promise.resolve({})); - await AppService(app); // Verify that process.env falls back to the initial values @@ -445,13 +445,27 @@ describe('AppService updating app.locals and issuing warnings', () => { expect(app.locals.availableTools).toBeDefined(); expect(app.locals.fileStrategy).toEqual(FileSources.local); expect(app.locals.socialLogins).toEqual(defaultSocialLogins); + expect(app.locals.balance).toEqual( + expect.objectContaining({ + enabled: false, + startBalance: undefined, + }), + ); }); it('should update app.locals with values from loadCustomConfig', async () => { - // Mock loadCustomConfig to return a specific config object + // Mock loadCustomConfig to return a specific config object with a complete balance config const customConfig = { fileStrategy: 'firebase', registration: { socialLogins: ['testLogin'] }, + balance: { + enabled: false, + startBalance: 5000, + autoRefillEnabled: true, + refillIntervalValue: 15, + refillIntervalUnit: 'hours', + refillAmount: 5000, + }, }; require('./Config/loadCustomConfig').mockImplementationOnce(() => Promise.resolve(customConfig), @@ -464,6 +478,7 @@ describe('AppService updating app.locals and issuing warnings', () => { expect(app.locals.availableTools).toBeDefined(); expect(app.locals.fileStrategy).toEqual(customConfig.fileStrategy); expect(app.locals.socialLogins).toEqual(customConfig.registration.socialLogins); + expect(app.locals.balance).toEqual(customConfig.balance); }); it('should apply the assistants endpoint configuration correctly to app.locals', async () => { diff --git a/api/server/services/Config/getCustomConfig.js b/api/server/services/Config/getCustomConfig.js index 5b9b2dd186..2a154421b0 100644 --- a/api/server/services/Config/getCustomConfig.js +++ b/api/server/services/Config/getCustomConfig.js @@ -1,5 +1,5 @@ const { CacheKeys, EModelEndpoint } = require('librechat-data-provider'); -const { normalizeEndpointName } = require('~/server/utils'); +const { normalizeEndpointName, isEnabled } = require('~/server/utils'); const loadCustomConfig = require('./loadCustomConfig'); const getLogStores = require('~/cache/getLogStores'); @@ -23,6 +23,29 @@ async function getCustomConfig() { return customConfig; } +/** + * Retrieves the configuration object + * @function getBalanceConfig + * @returns {Promise} + * */ +async function getBalanceConfig() { + const isLegacyEnabled = isEnabled(process.env.CHECK_BALANCE); + const startBalance = process.env.START_BALANCE; + if (isLegacyEnabled || (startBalance != null && startBalance)) { + /** @type {TCustomConfig['balance']} */ + const config = { + enabled: isLegacyEnabled, + startBalance: startBalance ? parseInt(startBalance, 10) : undefined, + }; + return config; + } + const customConfig = await getCustomConfig(); + if (!customConfig) { + return null; + } + return customConfig?.['balance'] ?? null; +} + /** * * @param {string | EModelEndpoint} endpoint @@ -40,4 +63,4 @@ const getCustomEndpointConfig = async (endpoint) => { ); }; -module.exports = { getCustomConfig, getCustomEndpointConfig }; +module.exports = { getCustomConfig, getBalanceConfig, getCustomEndpointConfig }; diff --git a/client/src/components/Nav/AccountSettings.tsx b/client/src/components/Nav/AccountSettings.tsx index 77ed49ce4e..ec6b52fd50 100644 --- a/client/src/components/Nav/AccountSettings.tsx +++ b/client/src/components/Nav/AccountSettings.tsx @@ -17,7 +17,7 @@ function AccountSettings() { const { user, isAuthenticated, logout } = useAuthContext(); const { data: startupConfig } = useGetStartupConfig(); const balanceQuery = useGetUserBalance({ - enabled: !!isAuthenticated && startupConfig?.checkBalance, + enabled: !!isAuthenticated && startupConfig?.balance?.enabled, }); const [showSettings, setShowSettings] = useState(false); const [showFiles, setShowFiles] = useRecoilState(store.showFiles); @@ -75,7 +75,7 @@ function AccountSettings() { {user?.email ?? localize('com_nav_user')} - {startupConfig?.checkBalance === true && + {startupConfig?.balance?.enabled === true && balanceQuery.data != null && !isNaN(parseFloat(balanceQuery.data)) && ( <> diff --git a/client/src/hooks/SSE/useSSE.ts b/client/src/hooks/SSE/useSSE.ts index a52928caad..92f03090e5 100644 --- a/client/src/hooks/SSE/useSSE.ts +++ b/client/src/hooks/SSE/useSSE.ts @@ -76,7 +76,7 @@ export default function useSSE( const { data: startupConfig } = useGetStartupConfig(); const balanceQuery = useGetUserBalance({ - enabled: !!isAuthenticated && startupConfig?.checkBalance, + enabled: !!isAuthenticated && startupConfig?.balance?.enabled, }); useEffect(() => { @@ -114,7 +114,7 @@ export default function useSSE( if (data.final != null) { const { plugins } = data; finalHandler(data, { ...submission, plugins } as EventSubmission); - (startupConfig?.checkBalance ?? false) && balanceQuery.refetch(); + (startupConfig?.balance?.enabled ?? false) && balanceQuery.refetch(); console.log('final', data); return; } else if (data.created != null) { @@ -208,7 +208,7 @@ export default function useSSE( } console.log('error in server stream.'); - (startupConfig?.checkBalance ?? false) && balanceQuery.refetch(); + (startupConfig?.balance?.enabled ?? false) && balanceQuery.refetch(); let data: TResData | undefined = undefined; try { @@ -234,6 +234,5 @@ export default function useSSE( sse.dispatchEvent(e); } }; - // eslint-disable-next-line react-hooks/exhaustive-deps }, [submission]); } diff --git a/librechat.example.yaml b/librechat.example.yaml index c8c914ced9..0b4963cb2a 100644 --- a/librechat.example.yaml +++ b/librechat.example.yaml @@ -77,6 +77,16 @@ registration: # allowedDomains: # - "gmail.com" + +# Example Balance settings +# balance: +# enabled: false +# startBalance: 20000 +# autoRefillEnabled: false +# refillIntervalValue: 30 +# refillIntervalUnit: 'days' +# refillAmount: 10000 + # speech: # tts: # openai: diff --git a/package-lock.json b/package-lock.json index 38c4ec0520..d7bc3c39a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43995,7 +43995,7 @@ }, "packages/data-provider": { "name": "librechat-data-provider", - "version": "0.7.73", + "version": "0.7.74", "license": "ISC", "dependencies": { "axios": "^1.8.2", @@ -44132,7 +44132,7 @@ }, "packages/data-schemas": { "name": "@librechat/data-schemas", - "version": "0.0.4", + "version": "0.0.5", "license": "MIT", "dependencies": { "mongoose": "^8.12.1" diff --git a/packages/data-provider/package.json b/packages/data-provider/package.json index 6f495a9aeb..ff7d4cb93c 100644 --- a/packages/data-provider/package.json +++ b/packages/data-provider/package.json @@ -1,6 +1,6 @@ { "name": "librechat-data-provider", - "version": "0.7.73", + "version": "0.7.74", "description": "data services for librechat apps", "main": "dist/index.js", "module": "dist/index.es.js", diff --git a/packages/data-provider/src/config.ts b/packages/data-provider/src/config.ts index 679d600eb9..eb4fb89fe8 100644 --- a/packages/data-provider/src/config.ts +++ b/packages/data-provider/src/config.ts @@ -501,11 +501,13 @@ export const intefaceSchema = z }); export type TInterfaceConfig = z.infer; +export type TBalanceConfig = z.infer; export type TStartupConfig = { appTitle: string; socialLogins?: string[]; interface?: TInterfaceConfig; + balance?: TBalanceConfig; discordLoginEnabled: boolean; facebookLoginEnabled: boolean; githubLoginEnabled: boolean; @@ -528,7 +530,6 @@ export type TStartupConfig = { socialLoginEnabled: boolean; passwordResetEnabled: boolean; emailEnabled: boolean; - checkBalance: boolean; showBirthdayIcon: boolean; helpAndFaqURL: string; customFooter?: string; @@ -552,6 +553,18 @@ export const ocrSchema = z.object({ strategy: z.nativeEnum(OCRStrategy).default(OCRStrategy.MISTRAL_OCR), }); +export const balanceSchema = z.object({ + enabled: z.boolean().optional().default(false), + startBalance: z.number().optional().default(20000), + autoRefillEnabled: z.boolean().optional().default(false), + refillIntervalValue: z.number().optional().default(30), + refillIntervalUnit: z + .enum(['seconds', 'minutes', 'hours', 'days', 'weeks', 'months']) + .optional() + .default('days'), + refillAmount: z.number().optional().default(10000), +}); + export const configSchema = z.object({ version: z.string(), cache: z.boolean().default(true), @@ -574,6 +587,7 @@ export const configSchema = z.object({ allowedDomains: z.array(z.string()).optional(), }) .default({ socialLogins: defaultSocialLogins }), + balance: balanceSchema.optional(), speech: z .object({ tts: ttsSchema.optional(), diff --git a/packages/data-schemas/package.json b/packages/data-schemas/package.json index 5d1ab2cf4e..3add216e47 100644 --- a/packages/data-schemas/package.json +++ b/packages/data-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@librechat/data-schemas", - "version": "0.0.4", + "version": "0.0.5", "description": "Mongoose schemas and models for LibreChat", "type": "module", "main": "dist/index.cjs", diff --git a/packages/data-schemas/src/schema/balance.ts b/packages/data-schemas/src/schema/balance.ts index 0878a57601..c02871dffe 100644 --- a/packages/data-schemas/src/schema/balance.ts +++ b/packages/data-schemas/src/schema/balance.ts @@ -3,6 +3,12 @@ import { Schema, Document, Types } from 'mongoose'; export interface IBalance extends Document { user: Types.ObjectId; tokenCredits: number; + // Automatic refill settings + autoRefillEnabled: boolean; + refillIntervalValue: number; + refillIntervalUnit: 'seconds' | 'minutes' | 'hours' | 'days' | 'weeks' | 'months'; + lastRefill: Date; + refillAmount: number; } const balanceSchema = new Schema({ @@ -17,6 +23,29 @@ const balanceSchema = new Schema({ type: Number, default: 0, }, + // Automatic refill settings + autoRefillEnabled: { + type: Boolean, + default: false, + }, + refillIntervalValue: { + type: Number, + default: 30, + }, + refillIntervalUnit: { + type: String, + enum: ['seconds', 'minutes', 'hours', 'days', 'weeks', 'months'], + default: 'days', + }, + lastRefill: { + type: Date, + default: Date.now, + }, + // amount to add on each refill + refillAmount: { + type: Number, + default: 0, + }, }); export default balanceSchema; From 2ecb16776170a4ac97f7fc447ac43fd022ef1549 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Sat, 22 Mar 2025 12:38:44 -0400 Subject: [PATCH 002/123] =?UTF-8?q?=F0=9F=8F=83=E2=80=8D=E2=99=82=EF=B8=8F?= =?UTF-8?q?=20refactor:=20More=20Agent=20Context=20Improvements=20during?= =?UTF-8?q?=20Run=20(#6477)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: Add optional chaining utility and update agent parameter types * v2.3.9 * chore: Update @librechat/agents version to 2.3.93 --- api/package.json | 2 +- .../services/Endpoints/agents/initialize.js | 30 +++++++++++++++---- package-lock.json | 8 ++--- .../data-provider/src/types/assistants.ts | 3 +- 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/api/package.json b/api/package.json index b04b049ce8..2ee9df6016 100644 --- a/api/package.json +++ b/api/package.json @@ -49,7 +49,7 @@ "@langchain/google-genai": "^0.1.11", "@langchain/google-vertexai": "^0.2.2", "@langchain/textsplitters": "^0.1.0", - "@librechat/agents": "^2.3.8", + "@librechat/agents": "^2.3.93", "@librechat/data-schemas": "*", "@waylaidwanderer/fetch-event-source": "^3.0.1", "axios": "^1.8.2", diff --git a/api/server/services/Endpoints/agents/initialize.js b/api/server/services/Endpoints/agents/initialize.js index 04cd20d072..26a476527a 100644 --- a/api/server/services/Endpoints/agents/initialize.js +++ b/api/server/services/Endpoints/agents/initialize.js @@ -99,6 +99,19 @@ const primeResources = async (req, _attachments, _tool_resources) => { } }; +/** + * @param {...string | number} values + * @returns {string | number | undefined} + */ +function optionalChainWithEmptyCheck(...values) { + for (const value of values) { + if (value !== undefined && value !== null && value !== '') { + return value; + } + } + return values[values.length - 1]; +} + /** * @param {object} params * @param {ServerRequest} params.req @@ -200,12 +213,17 @@ const initializeAgentOptions = async ({ const tokensModel = agent.provider === EModelEndpoint.azureOpenAI ? agent.model : agent.model_parameters.model; - const maxTokens = agent.model_parameters.maxOutputTokens ?? agent.model_parameters.maxTokens ?? 0; - const maxContextTokens = - agent.model_parameters.maxContextTokens ?? - agent.max_context_tokens ?? - getModelMaxTokens(tokensModel, providerEndpointMap[provider]) ?? - 4096; + const maxTokens = optionalChainWithEmptyCheck( + agent.model_parameters.maxOutputTokens, + agent.model_parameters.maxTokens, + 0, + ); + const maxContextTokens = optionalChainWithEmptyCheck( + agent.model_parameters.maxContextTokens, + agent.max_context_tokens, + getModelMaxTokens(tokensModel, providerEndpointMap[provider]), + 4096, + ); return { ...agent, tools, diff --git a/package-lock.json b/package-lock.json index d7bc3c39a0..7a9c0798dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,7 +65,7 @@ "@langchain/google-genai": "^0.1.11", "@langchain/google-vertexai": "^0.2.2", "@langchain/textsplitters": "^0.1.0", - "@librechat/agents": "^2.3.8", + "@librechat/agents": "^2.3.93", "@librechat/data-schemas": "*", "@waylaidwanderer/fetch-event-source": "^3.0.1", "axios": "^1.8.2", @@ -671,9 +671,9 @@ } }, "api/node_modules/@librechat/agents": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@librechat/agents/-/agents-2.3.8.tgz", - "integrity": "sha512-S8v1EmEBvE/cJ85inApFCkYay97EJ2s0goUfXGK86wPssC0EZRUJ/iYhcD61cnAQ+vRTk0a+Hn7P42Yw68V93A==", + "version": "2.3.93", + "resolved": "https://registry.npmjs.org/@librechat/agents/-/agents-2.3.93.tgz", + "integrity": "sha512-TlGpxfO+fBs+6xecNlX2mQcHh7BdAGRsBBri1DNpzAaPclMVWQGxIdUGJBqrqcnrlVLKkb4xctExxmmXe9mt0A==", "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", "@aws-sdk/credential-provider-node": "^3.613.0", diff --git a/packages/data-provider/src/types/assistants.ts b/packages/data-provider/src/types/assistants.ts index 932fc02077..0ecf751961 100644 --- a/packages/data-provider/src/types/assistants.ts +++ b/packages/data-provider/src/types/assistants.ts @@ -150,11 +150,12 @@ export type File = { /* Agent types */ -export type AgentParameterValue = number | null; +export type AgentParameterValue = number | string | null; export type AgentModelParameters = { model?: string; temperature: AgentParameterValue; + maxContextTokens: AgentParameterValue; max_context_tokens: AgentParameterValue; max_output_tokens: AgentParameterValue; top_p: AgentParameterValue; From 5e6a3ec2196998b322b590924a7889991e31810f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 22 Mar 2025 12:41:03 -0400 Subject: [PATCH 003/123] =?UTF-8?q?=F0=9F=8C=8D=20i18n:=20Update=20transla?= =?UTF-8?q?tion.json=20with=20latest=20translations=20(#6414)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- client/src/locales/de/translation.json | 18 ++++ client/src/locales/en/translation.json | 2 +- client/src/locales/et/translation.json | 3 + client/src/locales/it/translation.json | 29 +++++++ client/src/locales/nl/translation.json | 34 ++++++-- client/src/locales/pl/translation.json | 68 +++++++++------ client/src/locales/ru/translation.json | 115 +++++++++++++++++++++++++ 7 files changed, 234 insertions(+), 35 deletions(-) diff --git a/client/src/locales/de/translation.json b/client/src/locales/de/translation.json index bbcc01789c..51be904f4a 100644 --- a/client/src/locales/de/translation.json +++ b/client/src/locales/de/translation.json @@ -1,4 +1,6 @@ { + "chat_direction_left_to_right": "Leer – etwas fehlt noch", + "chat_direction_right_to_left": "Leer – etwas fehlt noch", "com_a11y_ai_composing": "Die KI erstellt noch ihre Antwort.", "com_a11y_end": "Die KI hat ihre Antwort beendet.", "com_a11y_start": "Die KI hat mit ihrer Antwort begonnen.", @@ -9,6 +11,9 @@ "com_agents_create_error": "Bei der Erstellung deines Agenten ist ein Fehler aufgetreten.", "com_agents_description_placeholder": "Optional: Beschreibe hier deinen Agenten", "com_agents_enable_file_search": "Dateisuche aktivieren", + "com_agents_file_context": "Datei-Kontext (OCR)", + "com_agents_file_context_disabled": "Der Agent muss vor dem Hochladen von Dateien für den Datei-Kontext erstellt werden.", + "com_agents_file_context_info": "Als „Kontext“ hochgeladene Dateien werden mit OCR verarbeitet, um Text zu extrahieren, der dann den Anweisungen des Agenten hinzugefügt wird. Ideal für Dokumente, Bilder mit Text oder PDFs, wenn Sie den vollständigen Textinhalt einer Datei benötigen", "com_agents_file_search_disabled": "Der Agent muss erstellt werden, bevor Dateien für die Dateisuche hochgeladen werden können.", "com_agents_file_search_info": "Wenn aktiviert, wird der Agent über die unten aufgelisteten exakten Dateinamen informiert und kann dadurch relevante Informationen aus diesen Dateien abrufen", "com_agents_instructions_placeholder": "Die Systemanweisungen, die der Agent verwendet", @@ -217,6 +222,7 @@ "com_endpoint_plug_use_functions": "Funktionen verwenden", "com_endpoint_presence_penalty": "Presence Penalty", "com_endpoint_preset": "Voreinstellung", + "com_endpoint_preset_custom_name_placeholder": "Leer – etwas fehlt noch", "com_endpoint_preset_default": "ist jetzt die Standardvoreinstellung.", "com_endpoint_preset_default_item": "Standard:", "com_endpoint_preset_default_none": "Keine Standardvoreinstellung aktiv.", @@ -459,12 +465,18 @@ "com_ui_admin_settings": "Admin-Einstellungen", "com_ui_advanced": "Erweitert", "com_ui_agent": "Agent", + "com_ui_agent_chain": "Agent-Kette", + "com_ui_agent_chain_info": "Ermöglicht das Erstellen von Agenten-Sequenzen. Jeder Agent kann auf die Ausgaben vorheriger Agenten in der Kette zugreifen. Basiert auf der \"Mixture-of-Agents\"-Architektur, bei der Agenten vorherige Ausgaben als zusätzliche Informationen verwenden.", + "com_ui_agent_chain_max": "Du hast die maximale Anzahl von {{0}} Agenten erreicht.", "com_ui_agent_delete_error": "Beim Löschen des Assistenten ist ein Fehler aufgetreten", "com_ui_agent_deleted": "Assistent erfolgreich gelöscht", "com_ui_agent_duplicate_error": "Beim Duplizieren des Assistenten ist ein Fehler aufgetreten", "com_ui_agent_duplicated": "Agent wurde erfolgreich dupliziert", "com_ui_agent_editing_allowed": "Andere Nutzende können diesen Agenten bereits bearbeiten", + "com_ui_agent_recursion_limit": "Maximale Agenten-Schritte", + "com_ui_agent_recursion_limit_info": "Begrenzt, wie viele Schritte der Agent in einem Durchlauf ausführen kann, bevor er eine endgültige Antwort gibt. Der Standardwert ist 25 Schritte. Ein Schritt ist entweder eine KI-API-Anfrage oder eine Werkzeugnutzungsrunde. Eine einfache Werkzeuginteraktion umfasst beispielsweise 3 Schritte: die ursprüngliche Anfrage, die Werkzeugnutzung und die Folgeanfrage.", "com_ui_agent_shared_to_all": "Hier muss etwas eingegeben werden. War leer.", + "com_ui_agent_var": "{{0}} Agent", "com_ui_agents": "Agenten", "com_ui_agents_allow_create": "Erstellung von Assistenten erlauben", "com_ui_agents_allow_share_global": "Assistenten für alle Nutzenden freigeben", @@ -649,6 +661,7 @@ "com_ui_generate_backup": "Backup-Codes generieren", "com_ui_generate_qrcode": "QR-Code generieren", "com_ui_generating": "Generiere …", + "com_ui_global_group": "Leer – etwas fehlt noch", "com_ui_go_back": "Zurück", "com_ui_go_to_conversation": "Zur Konversation gehen", "com_ui_happy_birthday": "Es ist mein 1. Geburtstag!", @@ -694,7 +707,9 @@ "com_ui_no_bookmarks": "Du hast noch keine Lesezeichen. Klicke auf einen Chat und füge ein neues hinzu", "com_ui_no_category": "Keine Kategorie", "com_ui_no_changes": "Keine Änderungen zum Aktualisieren", + "com_ui_no_data": "Leer – etwas fehlt noch", "com_ui_no_terms_content": "Keine Inhalte der Allgemeinen Geschäftsbedingungen zum Anzeigen", + "com_ui_no_valid_items": "Leer - Text fehlt noch", "com_ui_none": "Keine", "com_ui_none_selected": "Nichts ausgewählt", "com_ui_not_used": "Nicht verwendet", @@ -764,6 +779,7 @@ "com_ui_share_create_message": "Ihr Name und alle Nachrichten, die du nach dem Teilen hinzufügst, bleiben privat.", "com_ui_share_delete_error": "Beim Löschen des geteilten Links ist ein Fehler aufgetreten", "com_ui_share_error": "Beim Teilen des Chat-Links ist ein Fehler aufgetreten", + "com_ui_share_form_description": "Leer - Text fehlt noch", "com_ui_share_link_to_chat": "Link zum Chat teilen", "com_ui_share_to_all_users": "Mit allen Benutzern teilen", "com_ui_share_update_message": "Ihr Name, benutzerdefinierte Anweisungen und alle Nachrichten, die du nach dem Teilen hinzufügen, bleiben privat.", @@ -803,12 +819,14 @@ "com_ui_upload_code_files": "Hochladen für Code-Interpreter", "com_ui_upload_delay": "Das Hochladen von \"{{0}}\" dauert etwas länger. Bitte warte, während die Datei für den Abruf indexiert wird.", "com_ui_upload_error": "Beim Hochladen Ihrer Datei ist ein Fehler aufgetreten", + "com_ui_upload_file_context": "Kontext der Datei hochladen", "com_ui_upload_file_search": "Hochladen für Dateisuche", "com_ui_upload_files": "Dateien hochladen", "com_ui_upload_image": "Ein Bild hochladen", "com_ui_upload_image_input": "Bild hochladen", "com_ui_upload_invalid": "Ungültige Datei zum Hochladen. Muss ein Bild sein und das Limit nicht überschreiten", "com_ui_upload_invalid_var": "Ungültige Datei zum Hochladen. Muss ein Bild sein und {{0}} MB nicht überschreiten", + "com_ui_upload_ocr_text": "Hochladen als Text", "com_ui_upload_success": "Datei erfolgreich hochgeladen", "com_ui_upload_type": "Upload-Typ auswählen", "com_ui_use_2fa_code": "Stattdessen 2FA-Code verwenden", diff --git a/client/src/locales/en/translation.json b/client/src/locales/en/translation.json index 58dd833c27..67a05d1962 100644 --- a/client/src/locales/en/translation.json +++ b/client/src/locales/en/translation.json @@ -104,7 +104,6 @@ "com_auth_google_login": "Continue with Google", "com_auth_here": "HERE", "com_auth_login": "Login", - "com_ui_redirecting_to_provider": "Redirecting to {{0}}, please wait...", "com_auth_login_with_new_password": "You may now login with your new password.", "com_auth_name_max_length": "Name must be less than 80 characters", "com_auth_name_min_length": "Name must be at least 3 characters", @@ -741,6 +740,7 @@ "com_ui_prompts_allow_use": "Allow using Prompts", "com_ui_provider": "Provider", "com_ui_read_aloud": "Read aloud", + "com_ui_redirecting_to_provider": "Redirecting to {{0}}, please wait...", "com_ui_refresh_link": "Refresh link", "com_ui_regenerate": "Regenerate", "com_ui_regenerate_backup": "Regenerate Backup Codes", diff --git a/client/src/locales/et/translation.json b/client/src/locales/et/translation.json index 7e4956ec5a..cec2b74e49 100644 --- a/client/src/locales/et/translation.json +++ b/client/src/locales/et/translation.json @@ -11,6 +11,8 @@ "com_agents_create_error": "Agendi loomisel tekkis viga.", "com_agents_description_placeholder": "Valikuline: Kirjelda oma agenti siin", "com_agents_enable_file_search": "Luba failiotsing", + "com_agents_file_context": "Faili kontekst (OCR)", + "com_agents_file_context_disabled": "Agent tuleb luua enne failide üleslaadimist failikontekstiks.", "com_agents_file_search_disabled": "Agent tuleb luua enne failide üleslaadimist failiotsinguks.", "com_agents_file_search_info": "Kui see on lubatud, teavitatakse agenti täpselt allpool loetletud failinimedest, mis võimaldab tal nendest failidest asjakohast konteksti hankida.", "com_agents_instructions_placeholder": "Süsteemijuhised, mida agent kasutab", @@ -812,6 +814,7 @@ "com_ui_upload_image_input": "Laadi pilt üles", "com_ui_upload_invalid": "Fail on üleslaadimiseks vigane. Peab olema pilt, mis ei ületa piirangut", "com_ui_upload_invalid_var": "Fail on üleslaadimiseks vigane. Peab olema pilt, mis ei ületa {{0}} MB", + "com_ui_upload_ocr_text": "Laadi üles tekstina", "com_ui_upload_success": "Faili üleslaadimine õnnestus", "com_ui_upload_type": "Vali üleslaadimise tüüp", "com_ui_use_2fa_code": "Kasuta hoopis 2FA koodi", diff --git a/client/src/locales/it/translation.json b/client/src/locales/it/translation.json index 5c6f27c454..44dc08932d 100644 --- a/client/src/locales/it/translation.json +++ b/client/src/locales/it/translation.json @@ -9,6 +9,8 @@ "com_agents_create_error": "Si è verificato un errore durante la creazione del tuo agente.", "com_agents_description_placeholder": "Opzionale: Descrivi qui il tuo Agente", "com_agents_enable_file_search": "Abilita Ricerca File", + "com_agents_file_context": "Contesto del File (OCR)", + "com_agents_file_context_disabled": "L'agente deve essere creato prima di caricare i file per il Contesto del File.", "com_agents_file_search_disabled": "L'Agente deve essere creato prima di caricare file per la Ricerca File.", "com_agents_file_search_info": "Quando abilitato, l'agente verrà informato dei nomi esatti dei file elencati di seguito, permettendogli di recuperare il contesto pertinente da questi file.", "com_agents_instructions_placeholder": "Le istruzioni di sistema utilizzate dall'agente", @@ -18,13 +20,16 @@ "com_agents_not_available": "Agente Non Disponibile", "com_agents_search_name": "Cerca agenti per nome", "com_agents_update_error": "Si è verificato un errore durante l'aggiornamento del tuo agente.", + "com_assistants_action_attempt": "L'assistente vuole parlare con {{0}}", "com_assistants_actions": "Azioni", "com_assistants_actions_disabled": "Devi prima creare un assistente prima di aggiungere azioni.", "com_assistants_actions_info": "Permetti al tuo Assistente di recuperare informazioni o eseguire azioni tramite API", "com_assistants_add_actions": "Aggiungi Azioni", "com_assistants_add_tools": "Aggiungi Strumenti", + "com_assistants_allow_sites_you_trust": "Consenti solo i siti di cui ti fidati.", "com_assistants_append_date": "Aggiungi Data e Ora Attuali", "com_assistants_append_date_tooltip": "Quando attivo, la data e l'ora attuali del cliente saranno aggiunte alle istruzioni del sistema dell'Assistente.", + "com_assistants_attempt_info": "L'assistente vuole inviare quanto segue:", "com_assistants_available_actions": "Azioni Disponibili", "com_assistants_capabilities": "Capacità", "com_assistants_code_interpreter": "Interprete Codice", @@ -82,6 +87,7 @@ "com_auth_email_verification_redirecting": "Reindirizzamento in {{0}} secondi...", "com_auth_email_verification_resend_prompt": "Non hai ricevuto l'email?", "com_auth_email_verification_success": "Email verificata con successo", + "com_auth_email_verifying_ellipsis": "Verifica in corso...", "com_auth_error_create": "Si è verificato un errore durante il tentativo di registrare il tuo account. Riprova.", "com_auth_error_invalid_reset_token": "Questo token di reset della password non è più valido.", "com_auth_error_login": "Impossibile eseguire l'accesso con le informazioni fornite. Controlla le tue credenziali e riprova.", @@ -118,9 +124,11 @@ "com_auth_submit_registration": "Invia registrazione", "com_auth_to_reset_your_password": "per reimpostare la tua password.", "com_auth_to_try_again": "per riprovare.", + "com_auth_two_factor": "Controlla la tua applicazione preferita per le password monouso per un codice", "com_auth_username": "Nome utente (opzionale)", "com_auth_username_max_length": "Il nome utente deve essere inferiore a 20 caratteri", "com_auth_username_min_length": "Il nome utente deve essere di almeno 2 caratteri", + "com_auth_verify_your_identity": "Verifica la propria identità", "com_auth_welcome_back": "Ben tornato", "com_click_to_download": "clicca qui per scaricare", "com_download_expired": "download scaduto", @@ -133,6 +141,8 @@ "com_endpoint_anthropic_maxoutputtokens": "Numero massimo di token che possono essere generati nella risposta. Specifica un valore più basso per risposte più brevi e un valore più alto per risposte più lunghe.", "com_endpoint_anthropic_prompt_cache": "La cache dei prompt permette di riutilizzare contesti o istruzioni estese tra le chiamate API, riducendo costi e latenza", "com_endpoint_anthropic_temp": "Varia da 0 a 1. Usa temp più vicino a 0 per analitica / scelta multipla, e più vicino a 1 per compiti creativi e generativi. Consigliamo di modificare questo o Top P ma non entrambi.", + "com_endpoint_anthropic_thinking": "Abilita il ragionamento interno per i modelli Claude supportati (3.7 Sonnet). Nota: richiede che \"Thinking Budget\" sia impostato e inferiore a \"Massimo Output Token\"", + "com_endpoint_anthropic_thinking_budget": "Determina il numero massimo di token che Claude può utilizzare per il suo processo di ragionamento interno. Un budget maggiore può migliorare la qualità della risposta, consentendo un'analisi più approfondita di problemi complessi, anche se Claude potrebbe non utilizzare l'intero budget assegnato, soprattutto con intervalli superiori a 32K. Questa impostazione deve essere inferiore a \"Massimo Output Token\".", "com_endpoint_anthropic_topk": "Top-k cambia il modo in cui il modello seleziona i token per l'output. Un top-k di 1 significa che il token selezionato è il più probabile tra tutti i token nel vocabolario del modello (anche chiamato greedy decoding), mentre un top-k di 3 significa che il prossimo token è selezionato tra i 3 più probabili (usando la temperatura).", "com_endpoint_anthropic_topp": "Top-p cambia il modo in cui il modello seleziona i token per l'output. I token vengono selezionati dai più probabili K (vedi parametro topK) ai meno probabili fino a quando la somma delle loro probabilità eguaglia il valore top-p.", "com_endpoint_assistant": "Assistente", @@ -237,6 +247,8 @@ "com_endpoint_stop": "Sequenze di stop", "com_endpoint_stop_placeholder": "Separa i valori premendo `Invio`", "com_endpoint_temperature": "Temperatura", + "com_endpoint_thinking": "Ragionando", + "com_endpoint_thinking_budget": "Budget Ragionamento", "com_endpoint_top_k": "Top K", "com_endpoint_top_p": "Top P", "com_endpoint_use_active_assistant": "Usa Assistente Attivo", @@ -258,6 +270,7 @@ "com_files_number_selected": "{{0}} di {{1}} file selezionati", "com_generated_files": "File generati:", "com_hide_examples": "Nascondi esempi", + "com_nav_2fa": "Autenticazione a due fattori (2FA)", "com_nav_account_settings": "Impostazioni account", "com_nav_always_make_prod": "Rendi sempre produttive le nuove versioni", "com_nav_archive_created_at": "DateCreated", @@ -323,6 +336,7 @@ "com_nav_help_faq": "Guida e FAQ", "com_nav_hide_panel": "Nascondi il Pannello laterale più a destra", "com_nav_info_code_artifacts": "Abilita la visualizzazione di artefatti di codice sperimentali accanto alla chat", + "com_nav_info_code_artifacts_agent": "Abilita l'uso di artefatti di codice per questo agente. Per impostazione predefinita, vengono aggiunte istruzioni aggiuntive specifiche per l'uso degli artefatti, a meno che non sia abilitata la \"Modalità prompt personalizzato\".", "com_nav_info_custom_prompt_mode": "Quando attivata, l'istruzione predefinita del sistema per gli artefatti non verrà inclusa. In questa modalità, tutte le istruzioni per la generazione degli artefatti dovranno essere fornite manualmente.", "com_nav_info_enter_to_send": "Quando attivo, premendo `INVIO` invierai il tuo messaggio. Quando disattivato, premendo Invio andrai a capo, e dovrai premere `CTRL + INVIO` / `⌘ + INVIO` per inviare il messaggio.", "com_nav_info_fork_change_default": "\"Solo messaggi visibili\" include solo il percorso diretto al messaggio selezionato. \"Includi rami correlati\" aggiunge i rami lungo il percorso. \"Includi tutti i messaggi da/verso qui\" include tutti i messaggi e i rami connessi.", @@ -428,6 +442,16 @@ "com_sidepanel_parameters": "Parametri", "com_sidepanel_select_agent": "Seleziona un Agente", "com_sidepanel_select_assistant": "Seleziona un Assistente", + "com_ui_2fa_account_security": "L'autenticazione a due fattori aggiunge un ulteriore livello di sicurezza al vostro account", + "com_ui_2fa_disable": "Disattivare 2FA", + "com_ui_2fa_disable_error": "Si è verificato un errore nella disabilitazione dell'autenticazione a due fattori", + "com_ui_2fa_disabled": "Il 2FA è stato disattivato", + "com_ui_2fa_enable": "Abilitare 2FA", + "com_ui_2fa_enabled": "Il 2FA è stato abilitato", + "com_ui_2fa_generate_error": "Si è verificato un errore nella generazione delle impostazioni dell'autenticazione a due fattori", + "com_ui_2fa_invalid": "Codice di autenticazione a due fattori non valido", + "com_ui_2fa_setup": "Setup 2FA", + "com_ui_2fa_verified": "Autenticazione a due fattori verificata con successo", "com_ui_accept": "Accetto", "com_ui_add": "Aggiungi", "com_ui_add_model_preset": "Aggiungi un modello o una preimpostazione per una risposta aggiuntiva", @@ -436,12 +460,17 @@ "com_ui_admin_access_warning": "La disattivazione dell'accesso amministratore a questa funzionalità potrebbe causare problemi imprevisti all'interfaccia utente che richiedono un aggiornamento. Una volta salvata, l'unico modo per ripristinare è attraverso l'impostazione dell'interfaccia nel file di configurazione librechat.yaml, che influisce su tutti i ruoli.", "com_ui_admin_settings": "Impostazioni Amministratore", "com_ui_advanced": "Avanzate", + "com_ui_advanced_settings": "Impostazioni avanzate", "com_ui_agent": "Agente", + "com_ui_agent_chain": "Catena di agenti (Mixture-of-Agents)", + "com_ui_agent_chain_info": "Consente di creare sequenze di agenti. Ogni agente può accedere agli output degli agenti precedenti nella catena. Si basa sull'architettura \"Mixture-of-Agents\", in cui gli agenti utilizzano le uscite precedenti come informazioni ausiliarie.", + "com_ui_agent_chain_max": "Avete raggiunto il massimo di {{0}} agenti.", "com_ui_agent_delete_error": "Si è verificato un errore durante l'eliminazione dell'agente", "com_ui_agent_deleted": "Agente eliminato con successo", "com_ui_agent_duplicate_error": "Si è verificato un errore durante la duplicazione dell'assistente", "com_ui_agent_duplicated": "Agente duplicato con successo", "com_ui_agent_editing_allowed": "Altri utenti possono già modificare questo assistente", + "com_ui_agent_recursion_limit": "Passi massimi dell'agente", "com_ui_agents": "Agenti", "com_ui_agents_allow_create": "Consenti creazione Agenti", "com_ui_agents_allow_share_global": "Consenti la condivisione degli Agenti con tutti gli utenti", diff --git a/client/src/locales/nl/translation.json b/client/src/locales/nl/translation.json index de451e03c2..af578faeb2 100644 --- a/client/src/locales/nl/translation.json +++ b/client/src/locales/nl/translation.json @@ -1,13 +1,29 @@ { - "com_a11y_ai_composing": "De AI is nog steeds aan het componeren.", - "com_a11y_end": "De AI heeft zijn antwoord klaar.", - "com_a11y_start": "De AI is begonnen met hun antwoord.", - "com_agents_allow_editing": "Andere gebruikers toestaan om je agent te bewerken", - "com_agents_by_librechat": "door LibreChat", - "com_agents_code_interpreter": "Indien ingeschakeld, kan je agent de LibreChat Code Interpreter API gebruiken om gegenereerde code, inclusief bestandsverwerking, veilig uit te voeren. Vereist een geldige API-sleutel.", - "com_agents_code_interpreter_title": "Code-interpreter API", - "com_agents_create_error": "Er is een fout opgetreden bij het aanmaken van uw agent.", + "com_a11y_ai_composing": "De AI is nog bezig met het formuleren van een antwoord.", + "com_a11y_end": "De AI is klaar met het antwoord.", + "com_a11y_start": "De AI is begonnen met antwoorden.", + "com_agents_allow_editing": "Sta sndere gebruikers toe om je agent te bewerken", + "com_agents_by_librechat": "door LibreCha", + "com_agents_code_interpreter": "Indien ingeschakeld, kan je agent de LibreChat Code Interpreter API gebruiken om gegenereerde code, inclusief het verwerken van bestanden, veilig uit te voeren. Vereist een geldige API-sleutel.", + "com_agents_code_interpreter_title": "Code Interpreter API", + "com_agents_create_error": "Er is een fout opgetreden bij het aanmaken van je agent.", + "com_agents_description_placeholder": "Optioneel: Beschrijf hier je agent", + "com_agents_enable_file_search": "File Search inschakelen", + "com_agents_file_context": "File Context (OCR)", + "com_agents_file_context_disabled": "Agent moet worden aangemaakt voordat bestanden worden geüpload voor File Context", + "com_agents_file_context_info": "Bestanden die als \"Context\" worden geüpload, worden verwerkt met OCR voor tekstherkenning. De tekst wordt daarna toegevoegd aan de instructies van de Agent. Ideaal voor documenten, afbeeldingen met tekst of PDF's waarvan je de volledige tekstinhoud nodig hebt.\"", + "com_agents_file_search_disabled": "Maak eerst een Agent aan voordat je bestanden uploadt voor File Search.", + "com_agents_file_search_info": "Als deze functie is ingeschakeld, krijgt de agent informatie over de exacte bestandsnamen die hieronder staan vermeld, zodat deze relevante context uit deze bestanden kan ophalen.", "com_agents_instructions_placeholder": "De systeeminstructies die de agent gebruikt", + "com_agents_missing_provider_model": "Selecteer een provider en model voordat je een agent aanmaakt.", + "com_agents_name_placeholder": "De naam van de agent", + "com_agents_no_access": "Je hebt geen toegang om deze agent te bewerken.", + "com_agents_not_available": "Agent niet beschikbaar", + "com_agents_search_name": "Agents zoeken op naam", + "com_agents_update_error": "Er is een fout opgetreden bij het updaten van je agent.", + "com_assistants_action_attempt": "Assistent wil praten met {{0}}", + "com_assistants_actions": "Actions", + "com_assistants_actions_disabled": "Maak een assistent aan voordat je actions toevoegt.", "com_auth_already_have_account": "Heb je al een account?", "com_auth_click": "Klik", "com_auth_click_here": "Klik hier", @@ -146,7 +162,7 @@ "com_nav_font_size": "Lettertypegrootte", "com_nav_help_faq": "Help & FAQ", "com_nav_lang_arabic": "العربية", - "com_nav_lang_auto": "Automatisch detecteren", + "com_nav_lang_auto": "Auto detect", "com_nav_lang_brazilian_portuguese": "Português Brasileiro", "com_nav_lang_chinese": "中文", "com_nav_lang_dutch": "Nederlands", diff --git a/client/src/locales/pl/translation.json b/client/src/locales/pl/translation.json index d00b97ba71..1a7c699f54 100644 --- a/client/src/locales/pl/translation.json +++ b/client/src/locales/pl/translation.json @@ -2,32 +2,41 @@ "com_a11y_ai_composing": "AI nadal komponuje.", "com_a11y_end": "AI zakończył swoją odpowiedź.", "com_a11y_start": "AI rozpoczął swoją odpowiedź.", + "com_agents_allow_editing": "Zezwól by inni użytkownicy mogli edytować twojego agenta", "com_agents_by_librechat": "od LibreChat", "com_agents_code_interpreter_title": "API interpretera kodu", "com_agents_create_error": "Wystąpił błąd podczas tworzenia agenta.", "com_agents_description_placeholder": "Opcjonalnie: Opisz swojego agenta tutaj", "com_agents_enable_file_search": "Włącz wyszukiwanie plików", + "com_agents_file_context": "Kontest Pliku (OCR)", + "com_agents_file_context_disabled": "Agent musi zostać utworzony przed przesłaniem plików dla Kontekstu Plików", + "com_agents_file_context_info": "Pliki przesłane jako \"Kontekst\" są przetworzone przez OCR by wydobyć tekst, który potem jest dodany do instrukcji Agenta. Jest to idealne dla dokumentów, obrazów z tekstem oraz plików PDF, gdzie potrzebujesz całego tekstu z pliku.", "com_agents_file_search_disabled": "Agent musi zostać utworzony przed przesłaniem plików do wyszukiwania.", "com_agents_file_search_info": "Po włączeniu agent zostanie poinformowany o dokładnych nazwach plików wymienionych poniżej, co pozwoli mu na pobranie odpowiedniego kontekstu z tych plików.", "com_agents_instructions_placeholder": "Instrukcje systemowe używane przez agenta", "com_agents_missing_provider_model": "Wybierz dostawcę i model przed utworzeniem agenta.", "com_agents_name_placeholder": "Opcjonalnie: Nazwa agenta", + "com_agents_no_access": "Nie masz zezwolenia na edycję tego agenta.", + "com_agents_not_available": "Agent nie jest dostępny", "com_agents_search_name": "Wyszukaj agentów po nazwie", "com_agents_update_error": "Wystąpił błąd podczas aktualizacji agenta.", + "com_assistants_action_attempt": "Asysten chce rozmawiać z {{0}}", "com_assistants_actions": "Akcje", "com_assistants_actions_disabled": "Musisz utworzyć asystenta przed dodaniem akcji.", "com_assistants_actions_info": "Pozwól swojemu Asystentowi pobierać informacje lub podejmować działania poprzez API", "com_assistants_add_actions": "Dodaj akcje", "com_assistants_add_tools": "Dodaj narzędzia", + "com_assistants_allow_sites_you_trust": "Zezwól tylko na strony, którym ufasz.", "com_assistants_append_date": "Dodaj aktualną datę i czas", "com_assistants_append_date_tooltip": "Po włączeniu, aktualna data i czas klienta zostaną dodane do instrukcji systemowych asystenta.", + "com_assistants_attempt_info": "Asystent chce wysłać następującą treść: ", "com_assistants_available_actions": "Dostępne akcje", "com_assistants_capabilities": "Możliwości", "com_assistants_code_interpreter": "Interpreter kodu", "com_assistants_code_interpreter_files": "Poniższe pliki są tylko dla interpretera kodu:", "com_assistants_code_interpreter_info": "Interpreter kodu umożliwia asystentowi pisanie i uruchamianie kodu. To narzędzie może przetwarzać pliki z różnymi danymi i formatowaniem oraz generować pliki, takie jak wykresy.", - "com_assistants_completed_action": "Rozmawiał z {0}", - "com_assistants_completed_function": "Uruchomiono {0}", + "com_assistants_completed_action": "Rozmawiał z {{0}}", + "com_assistants_completed_function": "Uruchomiono {{0}}", "com_assistants_conversation_starters": "Rozpoczęcie rozmowy", "com_assistants_conversation_starters_placeholder": "Wprowadź rozpoczęcie rozmowy", "com_assistants_create_error": "Wystąpił błąd podczas tworzenia asystenta.", @@ -35,10 +44,10 @@ "com_assistants_delete_actions_error": "Wystąpił błąd podczas usuwania akcji.", "com_assistants_delete_actions_success": "Pomyślnie usunięto akcję z asystenta", "com_assistants_description_placeholder": "Opcjonalnie: Opisz swojego asystenta tutaj", - "com_assistants_domain_info": "Asystent wysłał te informacje do {0}", + "com_assistants_domain_info": "Asystent wysłał te informacje do {{0}}", "com_assistants_file_search": "Wyszukiwanie plików", "com_assistants_file_search_info": "Wyszukiwanie plików umożliwia asystentowi dostęp do wiedzy z plików przesłanych przez ciebie lub twoich użytkowników. Po przesłaniu pliku asystent automatycznie decyduje, kiedy pobierać treść na podstawie żądań użytkownika. Dołączanie magazynów wektorowych do wyszukiwania plików nie jest jeszcze obsługiwane. Możesz je dołączyć z Playground dostawcy lub dołączyć pliki do wiadomości w celu wyszukiwania plików na podstawie wątku.", - "com_assistants_function_use": "Asystent użył {0}", + "com_assistants_function_use": "Asystent użył {{0}}", "com_assistants_image_vision": "Widzenie obrazu", "com_assistants_instructions_placeholder": "Instrukcje systemowe używane przez asystenta", "com_assistants_knowledge": "Wiedza", @@ -46,6 +55,7 @@ "com_assistants_knowledge_info": "Jeśli prześlesz pliki w sekcji Wiedza, rozmowy z twoim Asystentem mogą zawierać treść plików.", "com_assistants_max_starters_reached": "Osiągnięto maksymalną liczbę rozpoczęć rozmowy", "com_assistants_name_placeholder": "Opcjonalnie: Nazwa asystenta", + "com_assistants_non_retrieval_model": "Wyszukiwanie w plikach nie jest włączone dla tego modelu. Proszę wybierz inny model.", "com_assistants_retrieval": "Pobieranie", "com_assistants_running_action": "Uruchomiona akcja", "com_assistants_search_name": "Wyszukaj asystentów po nazwie", @@ -74,11 +84,17 @@ "com_auth_email_verification_failed_token_missing": "Weryfikacja nie powiodła się, brak tokenu", "com_auth_email_verification_in_progress": "Weryfikacja twojego emaila, proszę czekać", "com_auth_email_verification_invalid": "Nieprawidłowa weryfikacja email", - "com_auth_email_verification_redirecting": "Przekierowanie za {0} sekund...", + "com_auth_email_verification_redirecting": "Przekierowanie za {{0}} sekund...", + "com_auth_email_verification_resend_prompt": "Nie otrzymałeś maila?", "com_auth_email_verification_success": "Email zweryfikowany pomyślnie", + "com_auth_email_verifying_ellipsis": "Weryfikowanie...", "com_auth_error_create": "Wystąpił błąd podczas tworzenia konta. Spróbuj ponownie.", "com_auth_error_invalid_reset_token": "Ten token do resetowania hasła jest już nieważny.", "com_auth_error_login": "Nie udało się zalogować przy użyciu podanych danych. Sprawdź swoje dane logowania i spróbuj ponownie.", + "com_auth_error_login_ban": "Twoje konto zostało tymczasowo zablokowane z powodu naruszeń reguł korzystania z naszego serwisu.", + "com_auth_error_login_rl": "Zbyt wiele prób logowania w krótkim czasie. Spróbuj ponownie później.", + "com_auth_error_login_server": "Wystąpił wewnętrzny błąd serwera,. Proszę, poczekaj chwilę i spróbuj ponownie.", + "com_auth_error_login_unverified": "Twoje konto nie jest zweryfikowane. Sprawdź swoją skrzynkę email by znaleźć link weryfikacyjny.", "com_auth_facebook_login": "Zaloguj się przez Facebooka", "com_auth_full_name": "Pełne imię", "com_auth_github_login": "Zaloguj się przez Githuba", @@ -113,7 +129,7 @@ "com_auth_welcome_back": "Witamy z powrotem", "com_click_to_download": "(kliknij tutaj, aby pobrać)", "com_download_expired": "(pobieranie wygasło)", - "com_download_expires": "(kliknij tutaj, aby pobrać - wygasa {0})", + "com_download_expires": "(kliknij tutaj, aby pobrać - wygasa {{0}})", "com_endpoint": "Punkt końcowy", "com_endpoint_agent": "Agent", "com_endpoint_agent_model": "Model agenta (zalecany: GPT-3.5)", @@ -121,6 +137,7 @@ "com_endpoint_ai": "AI", "com_endpoint_anthropic_maxoutputtokens": "Maksymalna liczba tokenów, która może zostać wygenerowana w odpowiedzi. Wybierz mniejszą wartość dla krótszych odpowiedzi i większą wartość dla dłuższych odpowiedzi.", "com_endpoint_anthropic_temp": "Zakres od 0 do 1. Użyj wartości bliżej 0 dla analizy/wyboru wielokrotnego, a bliżej 1 dla zadań twórczych i generatywnych. Zalecamy dostosowanie tej wartości lub Top P, ale nie obu jednocześnie.", + "com_endpoint_anthropic_thinking": "Włącza wewnętrzne rozumowanie dla wspieranych modeli Claude (3.7 Sonnet). Notatka: wymaga \"Thinking Budget\" by był włączony oraz mniejszy niż \"Max Output Tokens\".", "com_endpoint_anthropic_topk": "Top-K wpływa na sposób wyboru tokenów przez model. Top-K równa 1 oznacza, że wybrany token jest najbardziej prawdopodobny spośród wszystkich tokenów w słowniku modelu (tzw. dekodowanie zachłanne), podczas gdy top-K równa 3 oznacza, że następny token zostaje wybrany spośród 3 najbardziej prawdopodobnych tokenów (za pomocą temperatury).", "com_endpoint_anthropic_topp": "Top-P wpływa na sposób wyboru tokenów przez model. Tokeny wybierane są od najbardziej prawdopodobnych do najmniej prawdopodobnych, aż suma ich prawdopodobieństw osiągnie wartość top-P.", "com_endpoint_assistant": "Asystent", @@ -137,6 +154,7 @@ "com_endpoint_config_key": "Ustaw klucz API", "com_endpoint_config_key_encryption": "Twój klucz zostanie zaszyfrowany i usunięty o", "com_endpoint_config_key_for": "Ustaw klucz API dla", + "com_endpoint_config_key_google_need_to": "Powinieneś ", "com_endpoint_config_key_import_json_key": "Importuj klucz JSON konta usługi.", "com_endpoint_config_key_import_json_key_invalid": "Nieprawidłowy klucz JSON konta usługi. Czy zaimportowano właściwy plik?", "com_endpoint_config_key_import_json_key_success": "Pomyślnie zaimportowano klucz JSON konta usługi", @@ -164,7 +182,7 @@ "com_endpoint_instructions_assistants": "Nadpisz instrukcje", "com_endpoint_max_output_tokens": "Maksymalna liczba tokenów wyjściowych", "com_endpoint_message": "Wiadomość", - "com_endpoint_message_new": "Wiadomość {0}", + "com_endpoint_message_new": "Wiadomość {{0}}", "com_endpoint_message_not_appendable": "Edytuj swoją wiadomość lub wygeneruj ponownie.", "com_endpoint_my_preset": "Moje predefiniowane ustawienie", "com_endpoint_no_presets": "Brak zapisanych predefiniowanych ustawień", @@ -214,21 +232,21 @@ "com_endpoint_top_k": "Top K", "com_endpoint_top_p": "Top P", "com_endpoint_use_active_assistant": "Użyj aktywnego asystenta", - "com_error_expired_user_key": "Podany klucz dla {0} wygasł w {1}. Proszę podać nowy klucz i spróbować ponownie.", + "com_error_expired_user_key": "Podany klucz dla {{0}} wygasł w {{1}}. Proszę podać nowy klucz i spróbować ponownie.", "com_error_files_dupe": "Wykryto zduplikowany plik.", "com_error_files_empty": "Puste pliki nie są dozwolone.", "com_error_files_process": "Wystąpił błąd podczas przetwarzania pliku.", "com_error_files_upload": "Wystąpił błąd podczas przesyłania pliku.", "com_error_files_upload_canceled": "Żądanie przesłania pliku zostało anulowane. Uwaga: przesyłanie pliku może nadal być przetwarzane i będzie wymagało ręcznego usunięcia.", "com_error_files_validation": "Wystąpił błąd podczas walidacji pliku.", - "com_error_input_length": "Liczba tokenów najnowszej wiadomości jest zbyt duża, przekraczając limit tokenów ({0}). Proszę skrócić swoją wiadomość, dostosować maksymalny rozmiar kontekstu z parametrów rozmowy lub rozgałęzić rozmowę, aby kontynuować.", + "com_error_input_length": "Liczba tokenów najnowszej wiadomości jest zbyt duża, przekraczając limit tokenów ({{0}}). Proszę skrócić swoją wiadomość, dostosować maksymalny rozmiar kontekstu z parametrów rozmowy lub rozgałęzić rozmowę, aby kontynuować.", "com_error_invalid_user_key": "Podano nieprawidłowy klucz. Podaj prawidłowy klucz i spróbuj ponownie.", "com_error_moderation": "Wygląda na to, że przesłana treść została oznaczona przez nasz system moderacji jako niezgodna z naszymi wytycznymi społeczności. Nie możemy kontynuować z tym konkretnym tematem. Jeśli masz inne pytania lub tematy do omówienia, proszę edytuj swoją wiadomość lub utwórz nową rozmowę.", "com_error_no_base_url": "Nie znaleziono podstawowego URL. Podaj go i spróbuj ponownie.", "com_error_no_user_key": "Nie znaleziono klucza. Podaj klucz i spróbuj ponownie.", "com_files_filter": "Filtruj pliki...", "com_files_no_results": "Brak wyników.", - "com_files_number_selected": "{0} z {1} elementów wybranych", + "com_files_number_selected": "{{0}} z {{1}} elementów wybranych", "com_generated_files": "Wygenerowane pliki:", "com_hide_examples": "Ukryj przykłady", "com_nav_account_settings": "Ustawienia konta", @@ -239,8 +257,8 @@ "com_nav_archived_chats_empty": "Nie masz żadnych zarchiwizowanych rozmów.", "com_nav_at_command": "Polecenie @", "com_nav_at_command_description": "Przełącz polecenie \"@\" do przełączania punktów końcowych, modeli, presetów, itp.", - "com_nav_audio_play_error": "Błąd odtwarzania audio: {0}", - "com_nav_audio_process_error": "Błąd przetwarzania audio: {0}", + "com_nav_audio_play_error": "Błąd odtwarzania audio: {{0}}", + "com_nav_audio_process_error": "Błąd przetwarzania audio: {{0}}", "com_nav_auto_scroll": "Automatyczne przewijanie do najnowszej wiadomości przy otwarciu czatu", "com_nav_auto_send_prompts": "Automatycznie wysyłaj prompty", "com_nav_auto_send_text": "Automatycznie wysyłaj tekst", @@ -373,7 +391,7 @@ "com_nav_tool_dialog_description": "Asystent musi zostać zapisany, aby zachować wybrane narzędzia.", "com_nav_tool_remove": "Usuń", "com_nav_tool_search": "Wyszukaj narzędzia", - "com_nav_tts_init_error": "Nie udało się zainicjować tekstu na mowę: {0}", + "com_nav_tts_init_error": "Nie udało się zainicjować tekstu na mowę: {{0}}", "com_nav_tts_unsupported_error": "Tekst na mowę dla wybranego silnika nie jest obsługiwany w tej przeglądarce.", "com_nav_user": "Użytkownik", "com_nav_user_msg_markdown": "Renderuj wiadomości użytkownika jako markdown", @@ -504,7 +522,7 @@ "com_ui_delete_agent_confirm": "Czy na pewno chcesz usunąć tego agenta?", "com_ui_delete_assistant_confirm": "Czy na pewno chcesz usunąć tego Asystenta? Tej operacji nie można cofnąć.", "com_ui_delete_confirm": "Spowoduje to usunięcie", - "com_ui_delete_confirm_prompt_version_var": "Spowoduje to usunięcie wybranej wersji dla \"{0}.\" Jeśli nie istnieją inne wersje, prompt zostanie usunięty.", + "com_ui_delete_confirm_prompt_version_var": "Spowoduje to usunięcie wybranej wersji dla \"{{0}}.\" Jeśli nie istnieją inne wersje, prompt zostanie usunięty.", "com_ui_delete_conversation": "Usunąć czat?", "com_ui_delete_prompt": "Usunąć prompt?", "com_ui_delete_tool": "Usuń narzędzie", @@ -528,7 +546,7 @@ "com_ui_enter": "Wprowadź", "com_ui_enter_api_key": "Wprowadź klucz API", "com_ui_enter_openapi_schema": "Wprowadź swoją schemę OpenAPI tutaj", - "com_ui_enter_var": "Wprowadź {0}", + "com_ui_enter_var": "Wprowadź {{0}}", "com_ui_error": "Błąd", "com_ui_error_connection": "Błąd połączenia z serwerem, spróbuj odświeżyć stronę.", "com_ui_error_save_admin_settings": "Wystąpił błąd podczas zapisywania ustawień administratora.", @@ -546,7 +564,7 @@ "com_ui_fork_from_message": "Wybierz opcję rozgałęzienia", "com_ui_fork_info_1": "Użyj tego ustawienia, aby rozgałęzić wiadomości z pożądanym zachowaniem.", "com_ui_fork_info_2": "\"Rozgałęzianie\" odnosi się do tworzenia nowej rozmowy, która zaczyna/kończy się od określonych wiadomości w bieżącej rozmowie, tworząc kopię zgodnie z wybranymi opcjami.", - "com_ui_fork_info_3": "\"Wiadomość docelowa\" odnosi się do wiadomości, z której otwarto to okno, lub, jeśli zaznaczysz \"{0}\", do najnowszej wiadomości w rozmowie.", + "com_ui_fork_info_3": "\"Wiadomość docelowa\" odnosi się do wiadomości, z której otwarto to okno, lub, jeśli zaznaczysz \"{{0}}\", do najnowszej wiadomości w rozmowie.", "com_ui_fork_info_branches": "Ta opcja rozgałęzia widoczne wiadomości wraz z powiązanymi gałęziami; innymi słowy, bezpośrednią ścieżkę do wiadomości docelowej, włączając gałęzie wzdłuż ścieżki.", "com_ui_fork_info_remember": "Zaznacz to, aby zapamiętać wybrane opcje do przyszłego użycia, ułatwiając szybsze rozgałęzianie rozmów według preferencji.", "com_ui_fork_info_start": "Jeśli zaznaczone, rozgałęzianie rozpocznie się od tej wiadomości do najnowszej wiadomości w rozmowie, zgodnie z wybranym zachowaniem powyżej.", @@ -580,11 +598,11 @@ "com_ui_llm_menu": "Menu LLM", "com_ui_llms_available": "Dostępne LLM", "com_ui_locked": "Zablokowane", - "com_ui_logo": "Logo {0}", + "com_ui_logo": "Logo {{0}}", "com_ui_manage": "Zarządzaj", - "com_ui_max_tags": "Maksymalna dozwolona liczba to {0}, używane są najnowsze wartości.", + "com_ui_max_tags": "Maksymalna dozwolona liczba to {{0}}, używane są najnowsze wartości.", "com_ui_mention": "Wspomnij punkt końcowy, asystenta lub preset, aby szybko się przełączyć", - "com_ui_min_tags": "Nie można usunąć więcej wartości, wymagane minimum to {0}.", + "com_ui_min_tags": "Nie można usunąć więcej wartości, wymagane minimum to {{0}}.", "com_ui_model": "Model", "com_ui_model_parameters": "Parametry modelu", "com_ui_more_info": "Więcej informacji", @@ -626,12 +644,12 @@ "com_ui_region": "Region", "com_ui_rename": "Zmień nazwę", "com_ui_rename_prompt": "Zmień nazwę promptu", - "com_ui_reset_var": "Resetuj {0}", + "com_ui_reset_var": "Resetuj {{0}}", "com_ui_result": "Wynik", "com_ui_revoke": "Odwołaj", "com_ui_revoke_info": "Odwołaj wszystkie poświadczenia dostarczone przez użytkownika", "com_ui_revoke_key_confirm": "Czy na pewno chcesz odwołać ten klucz?", - "com_ui_revoke_key_endpoint": "Odwołaj klucz dla {0}", + "com_ui_revoke_key_endpoint": "Odwołaj klucz dla {{0}}", "com_ui_revoke_keys": "Odwołaj klucze", "com_ui_revoke_keys_confirm": "Czy na pewno chcesz odwołać wszystkie klucze?", "com_ui_role_select": "Rola", @@ -659,7 +677,7 @@ "com_ui_share_link_to_chat": "Udostępnij link w czacie", "com_ui_share_to_all_users": "Udostępnij wszystkim użytkownikom", "com_ui_share_update_message": "Twoje imię, niestandardowe instrukcje i jakiekolwiek wiadomości dodane po udostępnieniu pozostaną prywatne.", - "com_ui_share_var": "Udostępnij {0}", + "com_ui_share_var": "Udostępnij {{0}}", "com_ui_shared_link_bulk_delete_success": "Pomyślnie usunięto udostępnione linki", "com_ui_shared_link_delete_success": "Pomyślnie usunięto udostępniony link", "com_ui_shared_link_not_found": "Nie znaleziono linku udostępnionego", @@ -684,21 +702,21 @@ "com_ui_update": "Aktualizuj", "com_ui_upload": "Prześlij", "com_ui_upload_code_files": "Prześlij do interpretera kodu", - "com_ui_upload_delay": "Przesyłanie \"{0}\" trwa dłużej niż przewidywano. Proszę poczekać, aż plik zakończy indeksowanie do pobrania.", + "com_ui_upload_delay": "Przesyłanie \"{{0}}\" trwa dłużej niż przewidywano. Proszę poczekać, aż plik zakończy indeksowanie do pobrania.", "com_ui_upload_error": "Wystąpił błąd podczas przesyłania pliku", "com_ui_upload_file_search": "Prześlij do wyszukiwania plików", "com_ui_upload_files": "Prześlij pliki", "com_ui_upload_image": "Prześlij obraz", "com_ui_upload_image_input": "Prześlij obraz", "com_ui_upload_invalid": "Nieprawidłowy plik do przesłania. Musi być obrazem nieprzekraczającym limitu", - "com_ui_upload_invalid_var": "Nieprawidłowy plik do przesłania. Musi być obrazem nieprzekraczającym {0} MB", + "com_ui_upload_invalid_var": "Nieprawidłowy plik do przesłania. Musi być obrazem nieprzekraczającym {{0}} MB", "com_ui_upload_success": "Pomyślnie przesłano plik", "com_ui_upload_type": "Wybierz typ przesyłania", "com_ui_use_micrphone": "Użyj mikrofonu", "com_ui_use_prompt": "Użyj podpowiedzi", "com_ui_variables": "Zmienne", "com_ui_variables_info": "Użyj podwójnych nawiasów klamrowych w tekście, aby utworzyć zmienne, np. `{{przykładowa zmienna}}`, które później można wypełnić podczas używania promptu.", - "com_ui_version_var": "Wersja {0}", + "com_ui_version_var": "Wersja {{0}}", "com_ui_versions": "Wersje", "com_ui_view_source": "Zobacz źródłowy czat", "com_ui_yes": "Tak", diff --git a/client/src/locales/ru/translation.json b/client/src/locales/ru/translation.json index 982a2df3e0..1a1e4cd4ec 100644 --- a/client/src/locales/ru/translation.json +++ b/client/src/locales/ru/translation.json @@ -9,6 +9,9 @@ "com_agents_create_error": "Произошла ошибка при создании вашего агента", "com_agents_description_placeholder": "Необязательно: описание вашего агента", "com_agents_enable_file_search": "Включить поиск файлов", + "com_agents_file_context": "Контекст файла (OCR)", + "com_agents_file_context_disabled": "Агент должен быть создан перед загрузкой файлов для контекста файла", + "com_agents_file_context_info": "Файлы, загруженные как «Контекст», обрабатываются с использованием OCR для извлечения текста, который затем добавляется в инструкции агента. Идеально подходит для документов, изображений с текстом или PDF-файлов, где требуется полный текстовый контент.", "com_agents_file_search_disabled": "Для загрузки файлов в Поиск необходимо сначала создать агента", "com_agents_file_search_info": "При включении агент получит доступ к точным названиям файлов, перечисленным ниже, что позволит ему извлекать из них релевантный контекст.", "com_agents_instructions_placeholder": "Системные инструкции, используемые агентом", @@ -18,13 +21,16 @@ "com_agents_not_available": "Агент недоступен", "com_agents_search_name": "Поиск агентов по имени", "com_agents_update_error": "Произошла ошибка при обновлении вашего агента.", + "com_assistants_action_attempt": "Ассистент хочет поговорить с {{0}}", "com_assistants_actions": "Действия", "com_assistants_actions_disabled": "Вам нужно сохранить ассистента, прежде чем добавлять Actions.", "com_assistants_actions_info": "Позвольте вашему ассистенту получать информацию или выполнять действия через API", "com_assistants_add_actions": "Добавить действия", "com_assistants_add_tools": "Добавить инструменты", + "com_assistants_allow_sites_you_trust": "Разрешайте только сайты, которым доверяете.", "com_assistants_append_date": "Добавить текущую дату и время", "com_assistants_append_date_tooltip": "Когда включено, текущая дата и время клиента будут добавлены к инструкциям системы Ассистента.", + "com_assistants_attempt_info": "Ассистент хочет отправить следующее:", "com_assistants_available_actions": "Доступные действия", "com_assistants_capabilities": "Возможности", "com_assistants_code_interpreter": "Интерпретатор кода", @@ -59,6 +65,7 @@ "com_assistants_update_error": "Произошла ошибка при обновлении вашего ассистента.", "com_assistants_update_success": "Успешно обновлено", "com_auth_already_have_account": "Уже зарегистрированы?", + "com_auth_apple_login": "Зарегистрироваться с помощью Apple", "com_auth_back_to_login": "Вернуться к авторизации", "com_auth_click": "Нажмите", "com_auth_click_here": "Нажмите здесь", @@ -81,6 +88,7 @@ "com_auth_email_verification_redirecting": "Перенаправление через {{0}} сек...", "com_auth_email_verification_resend_prompt": "Не получили письмо?", "com_auth_email_verification_success": "Адрес электронной почты успешно подтвержден", + "com_auth_email_verifying_ellipsis": "Подтверждение...", "com_auth_error_create": "Возникла ошибка при попытке зарегистрировать ваш аккаунт. Пожалуйста, попробуйте еще раз.", "com_auth_error_invalid_reset_token": "Этот токен сброса пароля больше не действителен.", "com_auth_error_login": "Не удалось войти с предоставленной информацией. Пожалуйста, проверьте ваши учетные данные и попробуйте снова.", @@ -117,9 +125,11 @@ "com_auth_submit_registration": "Отправить регистрацию", "com_auth_to_reset_your_password": "чтобы сбросить ваш пароль.", "com_auth_to_try_again": "чтобы попробовать снова.", + "com_auth_two_factor": "Проверьте код в выбранном вами приложении одноразовых паролей", "com_auth_username": "Имя пользователя (необязательно)", "com_auth_username_max_length": "Имя пользователя должно быть не более 20 символов", "com_auth_username_min_length": "Имя пользователя должно содержать не менее 2 символов", + "com_auth_verify_your_identity": "Подтвердите ваши идентификационные данные.", "com_auth_welcome_back": "Добро пожаловать", "com_click_to_download": "(нажмите для скачивания)", "com_download_expired": "срок скачивания истек", @@ -132,6 +142,8 @@ "com_endpoint_anthropic_maxoutputtokens": "Максимальное количество токенов, которые могут быть сгенерированы в ответе. Укажите меньшее значение для более коротких ответов и большее значение для более длинных ответов.", "com_endpoint_anthropic_prompt_cache": "Кэширование промтов позволяет повторно использовать большой контекст или инструкции между API-запросами, снижая затраты и задержки", "com_endpoint_anthropic_temp": "Диапазон значений от 0 до 1. Используйте значение temp ближе к 0 для аналитических / множественного выбора и ближе к 1 для креативных и генеративных задач. Мы рекомендуем изменять это или Top P, но не оба значения одновременно.", + "com_endpoint_anthropic_thinking": "Включает режим \"Рассуждение\" для поддерживаемых моделей Claude (3.7 Sonnet). \nПримечание: требуется установка «Бюджета на рассуждение» ниже «Максимального числа токенов на вывод».", + "com_endpoint_anthropic_thinking_budget": "Определяет максимальное количество токенов, которое Claude может использовать для режима \"Рассуждение\". Более высокий бюджет может повысить качество ответов за счёт более глубокого анализа сложных задач, хотя Claude может использовать не весь выделенный бюджет, особенно при значениях выше 32K. Этот параметр должен быть меньше, чем «Максимальное число токенов на вывод».", "com_endpoint_anthropic_topk": "Top K изменяет то, как модель выбирает токены для вывода. Top K равное 1 означает, что выбирается наиболее вероятный токен из всего словаря модели (так называемое жадное декодирование), а Top K равное 3 означает, что следующий токен выбирается из трех наиболее вероятных токенов (с использованием температуры).", "com_endpoint_anthropic_topp": "Top P изменяет то, как модель выбирает токены для вывода. Токены выбираются из наиболее вероятных (см. параметр topK) до наименее вероятных, пока сумма их вероятностей не достигнет значения top-p.", "com_endpoint_assistant": "Ассистент", @@ -194,6 +206,7 @@ "com_endpoint_openai_max_tokens": "Необязательное поле `max_tokens`, задающее максимальное количество токенов, которое может быть сгенерировано в ответе чата. Общая длина входных токенов и сгенерированных токенов ограничена длиной контекста модели. Вы можете получить ошибку, если это число превысит максимальную длину контекста.", "com_endpoint_openai_pres": "Число от -2.0 до 2.0. Положительные значения штрафуют новые токены на основе того, появляются ли они в тексте до сих пор, увеличивая вероятность модели говорить о новых темах.", "com_endpoint_openai_prompt_prefix_placeholder": "Задайте кастомные промпты для включения в системное сообщение. По умолчанию: нет", + "com_endpoint_openai_reasoning_effort": "Только для моделей o1: ограничивает затраты на рассуждение для моделей с поддержкой рассуждения. Снижение усилий на рассуждение может ускорить ответы и уменьшить количество токенов, используемых для размышлений.", "com_endpoint_openai_resend": "Повторно отправить все ранее прикрепленные изображения. Примечание: это может значительно увеличить стоимость токенов, и при большом количестве прикрепленных изображений могут возникнуть ошибки.", "com_endpoint_openai_resend_files": "Повторно отправить все ранее прикрепленные файлы. Примечание: это увеличит расход токенов, и при большом количестве вложений могут возникнуть ошибки.", "com_endpoint_openai_stop": "До 4 последовательностей, после которых API прекратит генерировать дальнейшие токены.", @@ -227,6 +240,7 @@ "com_endpoint_prompt_prefix_assistants": "Дополнительные инструкции", "com_endpoint_prompt_prefix_assistants_placeholder": "Задайте дополнительные инструкции или контекст сверху основных инструкций ассистента. Игнорируется, если пусто.", "com_endpoint_prompt_prefix_placeholder": "Задайте пользовательские инструкции или контекст. Игнорируется, если пусто.", + "com_endpoint_reasoning_effort": "Затраты на рассуждение", "com_endpoint_save_as_preset": "Сохранить как Пресет", "com_endpoint_search": "Поиск эндпоинта по имени", "com_endpoint_set_custom_name": "Задайте кастомное имя на случай, если вы сможете найти эту предустановку :)", @@ -234,6 +248,8 @@ "com_endpoint_stop": "Стоп-последовательности", "com_endpoint_stop_placeholder": "Разделяйте значения нажатием `Enter`", "com_endpoint_temperature": "Температура", + "com_endpoint_thinking": "Размышление", + "com_endpoint_thinking_budget": "Бюджет на размышления", "com_endpoint_top_k": "Top K", "com_endpoint_top_p": "Top P", "com_endpoint_use_active_assistant": "Использовать активного ассистента", @@ -255,6 +271,7 @@ "com_files_number_selected": "Выбрано {{0}} из {{1}} файл(а/ов)", "com_generated_files": "Сгенерированные файлы:", "com_hide_examples": "Скрыть примеры", + "com_nav_2fa": "Двухфакторная аутентификация (2FA)", "com_nav_account_settings": "Настройки аккаунта", "com_nav_always_make_prod": "Автоматически публиковать новые версии", "com_nav_archive_created_at": "Дата создания", @@ -320,6 +337,7 @@ "com_nav_help_faq": "Помощь и Вопросы", "com_nav_hide_panel": "Скрыть правую боковую панель", "com_nav_info_code_artifacts": "Включает отображение экспериментального программного кода рядом с чатом", + "com_nav_info_code_artifacts_agent": "Включает использование артефактов кода для этого агента. По умолчанию добавляются дополнительные инструкции, связанные с использованием артефактов, если не включен режим «Пользовательский промт».", "com_nav_info_custom_prompt_mode": "При включении этого режима системный промт по умолчанию для создания артефактов не будет использоваться. Все инструкции для генерации артефактов должны задаваться вручную.", "com_nav_info_enter_to_send": "Если включено, нажатие клавиши Enter отправит ваше сообщение. Если отключено, Enter добавит новую строку, а для отправки сообщения нужно будет нажать CTRL + Enter или ⌘ + Enter.", "com_nav_info_fork_change_default": "«Только видимые сообщения» включает лишь прямой путь к выбранному сообщению. «Включить связанные ветки» добавляет ответвления вдоль этого пути. «Включить все сообщения до/от этой точки» охватывает все связанные сообщения и ветки.", @@ -327,6 +345,7 @@ "com_nav_info_include_shadcnui": "При включении будут добавлены инструкции по использованию компонентов shadcn/ui. shadcn/ui — это набор переиспользуемых компонентов, созданных на основе Radix UI и Tailwind CSS. Примечание: эти инструкции довольно объемные, включайте их только если для вас важно информировать LLM о правильных импортах и компонентах. Подробнее о компонентах можно узнать на сайте: https://ui.shadcn.com/", "com_nav_info_latex_parsing": "При включении этой функции код LaTeX в сообщениях будет отображаться в виде математических формул. Если вам не требуется отображение LaTeX, отключение этой функции может улучшить производительность.", "com_nav_info_save_draft": "При включении этой функции текст и прикрепленные файлы, введенные в форму чата, будут автоматически сохраняться локально как черновики. Эти черновики останутся доступными даже после перезагрузки страницы или перехода к другому разговору. Черновики хранятся локально на вашем устройстве и удаляются после отправки сообщения.", + "com_nav_info_show_thinking": "Если включено, выпадающие блоки размышлений в чате будут открыты по умолчанию, позволяя видеть ход рассуждений ИИ в реальном времени. Если отключено, блоки размышлений будут скрыты по умолчанию для более упрощённого интерфейса.", "com_nav_info_user_name_display": "Если включено, над каждым вашим сообщением будет отображаться ваше имя пользователя. Если отключено, над вашими сообщениями будет отображаться только \"Вы\".", "com_nav_lang_arabic": "العربية", "com_nav_lang_auto": "Автоопределение", @@ -373,6 +392,7 @@ "com_nav_plus_command_description": "Переключить команду ' + ' для настройки множественных ответов", "com_nav_profile_picture": "Изображение профиля", "com_nav_save_drafts": "Сохранить черновики локально", + "com_nav_scroll_button": "Открывать блоки размышлений по умолчанию", "com_nav_search_placeholder": "Поиск сообщений", "com_nav_send_message": "Отправить сообщение", "com_nav_setting_account": "Аккаунт", @@ -384,6 +404,7 @@ "com_nav_settings": "Настройки", "com_nav_shared_links": "Связываемые ссылки", "com_nav_show_code": "Всегда показывать код при использовании интерпретатора", + "com_nav_show_thinking": "Открывать блоки размышлений по умолчанию", "com_nav_slash_command": "/-Команда", "com_nav_slash_command_description": "Вызов командной строки клавишей '/' для выбора промта с клавиатуры", "com_nav_source_buffer_error": "Ошибка при настройке воспроизведения звука. Пожалуйста, обновите страницу.", @@ -422,6 +443,16 @@ "com_sidepanel_parameters": "Параметры", "com_sidepanel_select_agent": "Выбрать Ассистента", "com_sidepanel_select_assistant": "Выбрать Ассистента", + "com_ui_2fa_account_security": "Двухфакторная аутентификация добавляет дополнительный уровень защиты вашему аккаунту.", + "com_ui_2fa_disable": "Отключить 2FA", + "com_ui_2fa_disable_error": "Произошла ошибка при отключении двухфакторной аутентификации.", + "com_ui_2fa_disabled": "Двухфакторная аутентификация (2FA) отключена", + "com_ui_2fa_enable": "Включить 2FA", + "com_ui_2fa_enabled": "Двухфакторная аутентификация (2FA) включена", + "com_ui_2fa_generate_error": "Произошла ошибка при создании настроек двухфакторной аутентификации", + "com_ui_2fa_invalid": "Неверный код двухфакторной аутентификации", + "com_ui_2fa_setup": "Настроить 2FA", + "com_ui_2fa_verified": "Двухфакторная аутентификация успешно подтверждена", "com_ui_accept": "Принимаю", "com_ui_add": "Добавить", "com_ui_add_model_preset": "Добавить модель или пресет для дополнительного ответа", @@ -430,23 +461,35 @@ "com_ui_admin_access_warning": "Отключение административного доступа к этой функции может вызвать непредвиденные проблемы с интерфейсом, требующие обновления страницы. После сохранения изменений вернуть настройку можно будет только через параметр interface в конфигурационном файле librechat.yaml, что повлияет на все роли.", "com_ui_admin_settings": "Настройки администратора", "com_ui_advanced": "Расширенные", + "com_ui_advanced_settings": "Дополнительные настройки", "com_ui_agent": "Агент", + "com_ui_agent_chain": "Цепочка агентов (\"Mixture-of-Agents\")", + "com_ui_agent_chain_info": "Позволяет создавать последовательности агентов, где каждый агент может использовать результаты работы предыдущих агентов в цепочке. Основано на архитектуре «Смешение агентов» (Mixture-of-Agents), в которой агенты используют предыдущие результаты в качестве вспомогательной информации.", + "com_ui_agent_chain_max": "Вы достигли максимального количества агентов: {{0}}.", "com_ui_agent_delete_error": "Произошла ошибка при удалении ассистента", "com_ui_agent_deleted": "Ассистент успешно удален", "com_ui_agent_duplicate_error": "Произошла ошибка при дублировании ассистента", "com_ui_agent_duplicated": "Ассистент успешно скопирован", "com_ui_agent_editing_allowed": "Другие пользователи уже могут редактировать этого ассистента", + "com_ui_agent_recursion_limit": "Максимальное количество шагов агента", + "com_ui_agent_recursion_limit_info": "Ограничивает количество шагов, которые агент может выполнить за один запуск перед выдачей окончательного ответа. Значение по умолчанию — 25 шагов. Шагом считается либо запрос к API ИИ, либо использование инструмента. Например, базовое взаимодействие с инструментом включает 3 шага: исходный запрос, использование инструмента и последующий запрос.", + "com_ui_agent_shared_to_all": "Анализ", + "com_ui_agent_var": "{{0}} агент", "com_ui_agents": "Агенты", "com_ui_agents_allow_create": "Разрешить создание ассистентов", "com_ui_agents_allow_share_global": "Разрешить доступ к Агентам всем пользователям", "com_ui_agents_allow_use": "Разрешить использование ассистентов", "com_ui_all": "все", "com_ui_all_proper": "Все", + "com_ui_analyzing": "Анализ", + "com_ui_analyzing_finished": "Анализ завершен", + "com_ui_api_key": "ключ API", "com_ui_archive": "Архивировать", "com_ui_archive_error": "Не удалось заархивировать чат", "com_ui_artifact_click": "Нажмите, чтобы открыть", "com_ui_artifacts": "Артефакты", "com_ui_artifacts_toggle": "Показать/скрыть артефакты", + "com_ui_artifacts_toggle_agent": "Включить артефакты", "com_ui_ascending": "По возрастанию", "com_ui_assistant": "Помощник", "com_ui_assistant_delete_error": "Произошла ошибка при удалении ассистента", @@ -459,10 +502,19 @@ "com_ui_attach_error_type": "Неподдерживаемый тип файла для этого режима:", "com_ui_attach_warn_endpoint": "Файлы сторонних приложений могут быть проигнорированы без совместимого плагина", "com_ui_attachment": "Вложение", + "com_ui_auth_type": "Тип аутентификации", + "com_ui_auth_url": "URL авторизации", "com_ui_authentication": "Аутентификация", + "com_ui_authentication_type": "Тип аутентификации", "com_ui_avatar": "Аватар", + "com_ui_azure": "Azure", "com_ui_back_to_chat": "Вернуться к чату", "com_ui_back_to_prompts": "Вернуться к промтам", + "com_ui_backup_codes": "Резервные коды", + "com_ui_backup_codes_regenerate_error": "Произошла ошибка при повторной генерации резервных кодов", + "com_ui_backup_codes_regenerated": "Резервные коды успешно сгенерированы повторно", + "com_ui_basic_auth_header": "Заголовок базовой авторизации", + "com_ui_bearer": "Токен на предъявителя", "com_ui_bookmark_delete_confirm": "Вы уверены, что хотите удалить эту закладку?", "com_ui_bookmarks": "Закладки", "com_ui_bookmarks_add": "Добавить закладку", @@ -481,17 +533,24 @@ "com_ui_bookmarks_title": "Заголовок", "com_ui_bookmarks_update_error": "Произошла ошибка при обновлении закладки", "com_ui_bookmarks_update_success": "Закладка успешно обновлена", + "com_ui_bulk_delete_error": "Не удалось удалить общие ссылки", "com_ui_cancel": "Отмена", "com_ui_chat": "Чат", "com_ui_chat_history": "История чатов", "com_ui_clear": "Удалить", "com_ui_clear_all": "Очистить всё", + "com_ui_client_id": "ID клиента", + "com_ui_client_secret": "Секрет клиента", "com_ui_close": "Закрыть", + "com_ui_close_menu": "Закрыть меню", "com_ui_code": "Код", "com_ui_collapse_chat": "Свернуть чат", "com_ui_command_placeholder": "Необязательно: введите команду для промта или будет использовано название", "com_ui_command_usage_placeholder": "Выберите промпт по команде или названию", + "com_ui_complete_setup": "Завершить настройку", "com_ui_confirm_action": "Подтвердить действие", + "com_ui_confirm_admin_use_change": "Изменение этого параметра заблокирует доступ для администраторов, включая вас. Вы уверены, что хотите продолжить?", + "com_ui_confirm_change": "Подтвердить изменения", "com_ui_context": "Контекст", "com_ui_continue": "Продолжить", "com_ui_controls": "Управление", @@ -503,6 +562,9 @@ "com_ui_create": "Создать", "com_ui_create_link": "Создать ссылку", "com_ui_create_prompt": "Создать промт", + "com_ui_currently_production": "В настоящее время в продакшене", + "com_ui_custom": "Настраиваемый", + "com_ui_custom_header_name": "Настраиваемое имя заголовка", "com_ui_custom_prompt_mode": "Режим пользовательского промта", "com_ui_dashboard": "Главная панель", "com_ui_date": "Дата", @@ -523,6 +585,7 @@ "com_ui_date_today": "Сегодня", "com_ui_date_yesterday": "Вчера", "com_ui_decline": "Не принимаю", + "com_ui_default_post_request": "По умолчанию (POST-запрос)", "com_ui_delete": "Удалить", "com_ui_delete_action": "Удалить действие", "com_ui_delete_action_confirm": "Вы действительно хотите удалить это действие?", @@ -538,6 +601,11 @@ "com_ui_descending": "По убыванию", "com_ui_description": "Описание", "com_ui_description_placeholder": "Дополнительно: введите описание для промта", + "com_ui_disabling": "Отключение...", + "com_ui_download": "Скачать", + "com_ui_download_artifact": "Скачать артифакт", + "com_ui_download_backup": "Скачать резервные коды", + "com_ui_download_backup_tooltip": "Прежде чем продолжить, скачайте ваши резервные коды. Они понадобятся вам для восстановления доступа в случае утери устройства аутентификации", "com_ui_download_error": "Ошибка загрузки файла. Возможно, файл был удален.", "com_ui_dropdown_variables": "Выпадающие переменные:", "com_ui_dropdown_variables_info": "Создавайте пользовательские выпадающие списки для ваших промптов: `{{название_переменной:вариант1|вариант2|вариант3}}`", @@ -559,7 +627,9 @@ "com_ui_examples": "Примеры", "com_ui_export_convo_modal": "Экспорт беседы", "com_ui_field_required": "Это поле обязательно для заполнения", + "com_ui_filter_prompts": "Фильтр промтов", "com_ui_filter_prompts_name": "Фильтровать промты по названию", + "com_ui_finance": "Финансы", "com_ui_fork": "Разделить", "com_ui_fork_all_target": "Включить все сюда", "com_ui_fork_branches": "Включить связанные ветки", @@ -582,46 +652,62 @@ "com_ui_fork_split_target_setting": "По умолчанию создавать ветку от целевого сообщения", "com_ui_fork_success": "Разветвление беседы успешно выполнено", "com_ui_fork_visible": "Только видимые сообщения", + "com_ui_generate_backup": "Создать резервные коды", + "com_ui_generate_qrcode": "Сгенерировать QR-код", + "com_ui_generating": "Генерация...", + "com_ui_go_back": "Назад", "com_ui_go_to_conversation": "Перейти к беседе", "com_ui_happy_birthday": "Это мой первый день рождения!", + "com_ui_hide_qr": "Ск", "com_ui_host": "Хост", + "com_ui_idea": "Идеи", "com_ui_image_gen": "Генератор изображений", + "com_ui_import": "Импорт", "com_ui_import_conversation_error": "При импорте бесед произошла ошибка", "com_ui_import_conversation_file_type_error": "Неподдерживаемый тип импорта", "com_ui_import_conversation_info": "Импортировать беседы из файла JSON", "com_ui_import_conversation_success": "Беседы успешно импортированы", "com_ui_include_shadcnui": "Включить компоненты shadcn/ui", + "com_ui_include_shadcnui_agent": "Включить инструкции shadcn/ui", "com_ui_input": "Ввод", "com_ui_instructions": "Инструкции", "com_ui_latest_footer": "Искусственный интеллект для каждого", + "com_ui_latest_production_version": "Последняя рабочая версия", + "com_ui_latest_version": "Последняя версия", "com_ui_librechat_code_api_key": "Получить ключ API интерпретатора кода LibreChat", "com_ui_librechat_code_api_subtitle": "Безопасно. Многоязычно. Работа с файлами.", "com_ui_librechat_code_api_title": "Запустить AI-код", "com_ui_llm_menu": "Меню LLM", "com_ui_llms_available": "Доступные языковые модели", + "com_ui_loading": "Загрузка...", "com_ui_locked": "Заблокировано", "com_ui_logo": "Логотип {{0}}", "com_ui_manage": "Управление", "com_ui_max_tags": "Максимально допустимое количество - {{0}}, используются последние значения.", "com_ui_mention": "Упомянуть конечную точку, помощника или предустановку для быстрого переключения", "com_ui_min_tags": "Нельзя удалить больше значений, требуется минимум {{0}}.", + "com_ui_misc": "Разное", "com_ui_model": "Модель", "com_ui_model_parameters": "Параметры модели", "com_ui_more_info": "Подробнее", "com_ui_my_prompts": "Мои промты", "com_ui_name": "Имя", + "com_ui_new": "Новый", "com_ui_new_chat": "Создать чат", "com_ui_next": "Следующий", "com_ui_no": "Нет", + "com_ui_no_backup_codes": "Резервные коды отсутствуют. Сгенерируйте новые", "com_ui_no_bookmarks": "Похоже, у вас пока нет закладок. Выберите чат и добавьте новую закладку", "com_ui_no_category": "Без категории", "com_ui_no_changes": "Нет изменений для обновления", "com_ui_no_terms_content": "Нет содержания условий использования для отображения", "com_ui_none_selected": "Ничего не выбрано", "com_ui_nothing_found": "Ничего не найдено", + "com_ui_oauth": "OAuth", "com_ui_of": "из", "com_ui_off": "Выкл.", "com_ui_on": "Вкл.", + "com_ui_openai": "OpenAI", "com_ui_page": "Страница", "com_ui_prev": "Предыдущий", "com_ui_preview": "Предпросмотр", @@ -641,9 +727,15 @@ "com_ui_prompts_allow_use": "Разрешить использование промтов", "com_ui_provider": "Провайдер", "com_ui_read_aloud": "Прочитать вслух", + "com_ui_redirecting_to_provider": "Перенаправление на {{0}}, пожалуйста, подождите...", + "com_ui_refresh_link": "Обновить ссылку", "com_ui_regenerate": "Повторная генерация", + "com_ui_regenerate_backup": "Сгенерировать резервные коды заново", + "com_ui_regenerating": "Повторная генерация...", "com_ui_region": "Регион", "com_ui_rename": "Переименовать", + "com_ui_rename_prompt": "Переименовать промт", + "com_ui_requires_auth": "Требуется аутентификация", "com_ui_reset_var": "Сбросить {{0}}", "com_ui_result": "Результат", "com_ui_revoke": "Отозвать", @@ -653,12 +745,15 @@ "com_ui_revoke_keys": "Отозвать ключи", "com_ui_revoke_keys_confirm": "Вы действительно хотите отозвать все ключи?", "com_ui_role_select": "Роль", + "com_ui_roleplay": "Ролевой режим", "com_ui_run_code": "Выполнить код", "com_ui_run_code_error": "Произошла ошибка при выполнении кода", "com_ui_save": "Сохранить", "com_ui_save_submit": "Сохранить и отправить", "com_ui_saved": "Сохранено!", "com_ui_schema": "Схема", + "com_ui_search": "Поиск", + "com_ui_secret_key": "Секретный ключ", "com_ui_select": "Выбрать", "com_ui_select_file": "Выберите файл", "com_ui_select_model": "Выберите модель", @@ -677,9 +772,15 @@ "com_ui_share_to_all_users": "Поделиться со всеми пользователями", "com_ui_share_update_message": "Ваше имя, пользовательские инструкции и любые сообщения, которые вы добавите после обмена, останутся конфиденциальными.", "com_ui_share_var": "Поделиться {{0}}", + "com_ui_shared_link_bulk_delete_success": "Общие ссылки успешно удалены", + "com_ui_shared_link_delete_success": "Общая ссылка успешно удалена", "com_ui_shared_link_not_found": "Общая ссылка не найдена", "com_ui_shared_prompts": "Общие промты", + "com_ui_shop": "Покупки", + "com_ui_show": "Показать", "com_ui_show_all": "Показать все", + "com_ui_show_qr": "Показать QR код", + "com_ui_sign_in_to_domain": "Вход в {{0}}", "com_ui_simple": "Простой", "com_ui_size": "Размер", "com_ui_special_variables": "Специальные переменные:", @@ -688,9 +789,16 @@ "com_ui_stop": "Остановить генерацию", "com_ui_storage": "Хранилище", "com_ui_submit": "Отправить", + "com_ui_teach_or_explain": "Обучение", + "com_ui_temporary_chat": "Временный чат", "com_ui_terms_and_conditions": "Условия использования", "com_ui_terms_of_service": "Условия использования", + "com_ui_thinking": "Думаю...", + "com_ui_thoughts": "Мысли", + "com_ui_token_exchange_method": "Метод обмена токена", + "com_ui_token_url": "URL токена", "com_ui_tools": "Инструменты", + "com_ui_travel": "Путешествия", "com_ui_unarchive": "разархивировать", "com_ui_unarchive_error": "Не удалось восстановить чат из архива", "com_ui_unknown": "Неизвестно", @@ -699,20 +807,27 @@ "com_ui_upload_code_files": "Загрузить для Интерпретатора кода", "com_ui_upload_delay": "Загрузка \"{{0}}\" занимает больше времени, чем ожидалось. Пожалуйста, подождите, пока файл полностью проиндексируется для доступа.", "com_ui_upload_error": "Произошла ошибка при загрузке вашего файла", + "com_ui_upload_file_context": "Загрузить файл контекста", "com_ui_upload_file_search": "Загрузить для поиска по файлам", "com_ui_upload_files": "Загрузить файлы", "com_ui_upload_image": "Загрузить изображение", "com_ui_upload_image_input": "Загрузить изображение", "com_ui_upload_invalid": "Недопустимый файл для загрузки. Загружаемое изображение не должно превышать установленный размер", "com_ui_upload_invalid_var": "Недопустимый файл. Загружаемое изображение не должно превышать {{0}} МБ", + "com_ui_upload_ocr_text": "Загрузить как текст", "com_ui_upload_success": "Файл успешно загружен", "com_ui_upload_type": "Выберите тип загрузки", + "com_ui_use_2fa_code": "Использовать код 2FA вместо этого", + "com_ui_use_backup_code": "Использовать резервный код вместо этого", "com_ui_use_micrphone": "Использовать микрофон", "com_ui_use_prompt": "Использовать промпт", + "com_ui_used": "Использован", "com_ui_variables": "Переменные", "com_ui_variables_info": "Используйте двойные фигурные скобки в тексте для создания переменных, например `{{пример переменной}}`, чтобы заполнить их позже при использовании промта.", + "com_ui_verify": "Проверить", "com_ui_version_var": "Версия {{0}}", "com_ui_versions": "Версии", + "com_ui_view_source": "Просмотреть исходный чат", "com_ui_yes": "Да", "com_ui_zoom": "Масштаб", "com_user_message": "Вы", From 842b68fc32998f3c89d2a5d56b54f10db7501675 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Sat, 22 Mar 2025 17:54:25 -0400 Subject: [PATCH 004/123] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20fix:=20Agents?= =?UTF-8?q?=20Token=20Spend=20Race=20Conditions,=20Add=20Auto-refill=20Tx,?= =?UTF-8?q?=20Add=20Relevant=20Tests=20(#6480)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🏗️ refactor: Improve spendTokens logic to handle zero completion tokens and enhance test coverage * 🏗️ test: Add tests to ensure balance does not go below zero when spending tokens * 🏗️ fix: Ensure proper continuation in AgentClient when handling errors * fix: spend token race conditions * 🏗️ test: Add test for handling multiple concurrent transactions with high balance * fix: Handle Omni models prompt prefix handling for user messages with array content in OpenAIClient * refactor: Update checkBalance import paths to use new balanceMethods module * refactor: Update checkBalance imports and implement updateBalance function for atomic balance updates * fix: import from replace method * feat: Add createAutoRefillTransaction method to handle non-balance updating transactions * refactor: Move auto-refill logic to balanceMethods and enhance checkBalance functionality * feat: Implement logging for auto-refill transactions in balance checks * refactor: Remove logRefill calls from multiple client and handler files * refactor: Move balance checking and auto-refill logic to balanceMethods for improved structure * refactor: Simplify balance check calls by removing unnecessary balanceRecord assignments * fix: Prevent negative rawAmount in spendTokens when promptTokens is zero * fix: Update balanceMethods to use Balance model for findOneAndUpdate * chore: import order * refactor: remove unused txMethods file to streamline codebase * feat: enhance updateBalance and createAutoRefillTransaction methods to support additional parameters for improved balance management --- api/app/clients/BaseClient.js | 2 +- api/app/clients/OpenAIClient.js | 21 +- api/app/clients/PluginsClient.js | 2 +- .../clients/callbacks/createStartHandler.js | 2 +- api/models/Balance.js | 101 --- api/models/Transaction.js | 98 ++- api/models/balanceMethods.js | 153 ++++ api/models/checkBalance.js | 45 -- api/models/spendTokens.js | 4 +- api/models/spendTokens.spec.js | 653 +++++++++++++++--- api/server/controllers/agents/client.js | 1 + api/server/controllers/assistants/chatV1.js | 2 +- api/server/controllers/assistants/chatV2.js | 2 +- 13 files changed, 807 insertions(+), 279 deletions(-) create mode 100644 api/models/balanceMethods.js delete mode 100644 api/models/checkBalance.js diff --git a/api/app/clients/BaseClient.js b/api/app/clients/BaseClient.js index 54e88e5953..44ccc926db 100644 --- a/api/app/clients/BaseClient.js +++ b/api/app/clients/BaseClient.js @@ -11,9 +11,9 @@ const { Constants, } = require('librechat-data-provider'); const { getMessages, saveMessage, updateMessage, saveConvo, getConvo } = require('~/models'); +const { checkBalance } = require('~/models/balanceMethods'); const { truncateToolCallOutputs } = require('./prompts'); const { addSpaceIfNeeded } = require('~/server/utils'); -const checkBalance = require('~/models/checkBalance'); const { getFiles } = require('~/models/File'); const TextStream = require('./TextStream'); const { logger } = require('~/config'); diff --git a/api/app/clients/OpenAIClient.js b/api/app/clients/OpenAIClient.js index b4477cca8a..0874225ed8 100644 --- a/api/app/clients/OpenAIClient.js +++ b/api/app/clients/OpenAIClient.js @@ -5,6 +5,7 @@ const { SplitStreamHandler, GraphEvents } = require('@librechat/agents'); const { Constants, ImageDetail, + ContentTypes, EModelEndpoint, resolveHeaders, KnownEndpoints, @@ -505,8 +506,24 @@ class OpenAIClient extends BaseClient { if (promptPrefix && this.isOmni === true) { const lastUserMessageIndex = payload.findLastIndex((message) => message.role === 'user'); if (lastUserMessageIndex !== -1) { - payload[lastUserMessageIndex].content = - `${promptPrefix}\n${payload[lastUserMessageIndex].content}`; + if (Array.isArray(payload[lastUserMessageIndex].content)) { + const firstTextPartIndex = payload[lastUserMessageIndex].content.findIndex( + (part) => part.type === ContentTypes.TEXT, + ); + if (firstTextPartIndex !== -1) { + const firstTextPart = payload[lastUserMessageIndex].content[firstTextPartIndex]; + payload[lastUserMessageIndex].content[firstTextPartIndex].text = + `${promptPrefix}\n${firstTextPart.text}`; + } else { + payload[lastUserMessageIndex].content.unshift({ + type: ContentTypes.TEXT, + text: promptPrefix, + }); + } + } else { + payload[lastUserMessageIndex].content = + `${promptPrefix}\n${payload[lastUserMessageIndex].content}`; + } } } diff --git a/api/app/clients/PluginsClient.js b/api/app/clients/PluginsClient.js index 9fd906ae47..60f8703e0f 100644 --- a/api/app/clients/PluginsClient.js +++ b/api/app/clients/PluginsClient.js @@ -5,8 +5,8 @@ const { addImages, buildErrorInput, buildPromptPrefix } = require('./output_pars const { initializeCustomAgent, initializeFunctionsAgent } = require('./agents'); const { processFileURL } = require('~/server/services/Files/process'); const { EModelEndpoint } = require('librechat-data-provider'); +const { checkBalance } = require('~/models/balanceMethods'); const { formatLangChainMessages } = require('./prompts'); -const checkBalance = require('~/models/checkBalance'); const { extractBaseURL } = require('~/utils'); const { loadTools } = require('./tools/util'); const { logger } = require('~/config'); diff --git a/api/app/clients/callbacks/createStartHandler.js b/api/app/clients/callbacks/createStartHandler.js index d5d806e6c2..b7292aaf17 100644 --- a/api/app/clients/callbacks/createStartHandler.js +++ b/api/app/clients/callbacks/createStartHandler.js @@ -2,7 +2,7 @@ const { promptTokensEstimate } = require('openai-chat-tokens'); const { EModelEndpoint, supportsBalanceCheck } = require('librechat-data-provider'); const { formatFromLangChain } = require('~/app/clients/prompts'); const { getBalanceConfig } = require('~/server/services/Config'); -const checkBalance = require('~/models/checkBalance'); +const { checkBalance } = require('~/models/balanceMethods'); const { logger } = require('~/config'); const createStartHandler = ({ diff --git a/api/models/Balance.js b/api/models/Balance.js index c26ed90bc0..226f6ef508 100644 --- a/api/models/Balance.js +++ b/api/models/Balance.js @@ -1,105 +1,4 @@ const mongoose = require('mongoose'); const { balanceSchema } = require('@librechat/data-schemas'); -const { getMultiplier } = require('./tx'); -const { logger } = require('~/config'); - -/** - * Adds a time interval to a given date. - * @param {Date} date - The starting date. - * @param {number} value - The numeric value of the interval. - * @param {'seconds'|'minutes'|'hours'|'days'|'weeks'|'months'} unit - The unit of time. - * @returns {Date} A new Date representing the starting date plus the interval. - */ -const addIntervalToDate = (date, value, unit) => { - const result = new Date(date); - switch (unit) { - case 'seconds': - result.setSeconds(result.getSeconds() + value); - break; - case 'minutes': - result.setMinutes(result.getMinutes() + value); - break; - case 'hours': - result.setHours(result.getHours() + value); - break; - case 'days': - result.setDate(result.getDate() + value); - break; - case 'weeks': - result.setDate(result.getDate() + value * 7); - break; - case 'months': - result.setMonth(result.getMonth() + value); - break; - default: - break; - } - return result; -}; - -balanceSchema.statics.check = async function ({ - user, - model, - endpoint, - valueKey, - tokenType, - amount, - endpointTokenConfig, -}) { - const multiplier = getMultiplier({ valueKey, tokenType, model, endpoint, endpointTokenConfig }); - const tokenCost = amount * multiplier; - - // Retrieve the complete balance record - let record = await this.findOne({ user }).lean(); - if (!record) { - logger.debug('[Balance.check] No balance record found for user', { user }); - return { - canSpend: false, - balance: 0, - tokenCost, - }; - } - let balance = record.tokenCredits; - - logger.debug('[Balance.check] Initial state', { - user, - model, - endpoint, - valueKey, - tokenType, - amount, - balance, - multiplier, - endpointTokenConfig: !!endpointTokenConfig, - }); - - // Only perform auto-refill if spending would bring the balance to 0 or below - if (balance - tokenCost <= 0 && record.autoRefillEnabled && record.refillAmount > 0) { - const lastRefillDate = new Date(record.lastRefill); - const nextRefillDate = addIntervalToDate( - lastRefillDate, - record.refillIntervalValue, - record.refillIntervalUnit, - ); - const now = new Date(); - - if (now >= nextRefillDate) { - record = await this.findOneAndUpdate( - { user }, - { - $inc: { tokenCredits: record.refillAmount }, - $set: { lastRefill: new Date() }, - }, - { new: true }, - ).lean(); - balance = record.tokenCredits; - logger.debug('[Balance.check] Auto-refill performed', { balance }); - } - } - - logger.debug('[Balance.check] Token cost', { tokenCost }); - - return { canSpend: balance >= tokenCost, balance, tokenCost }; -}; module.exports = mongoose.model('Balance', balanceSchema); diff --git a/api/models/Transaction.js b/api/models/Transaction.js index b9f444d984..f68b311315 100644 --- a/api/models/Transaction.js +++ b/api/models/Transaction.js @@ -4,8 +4,45 @@ const { getBalanceConfig } = require('~/server/services/Config'); const { getMultiplier, getCacheMultiplier } = require('./tx'); const { logger } = require('~/config'); const Balance = require('./Balance'); + const cancelRate = 1.15; +/** + * Updates a user's token balance based on a transaction. + * + * @async + * @function + * @param {Object} params - The function parameters. + * @param {string} params.user - The user ID. + * @param {number} params.incrementValue - The value to increment the balance by (can be negative). + * @param {import('mongoose').UpdateQuery['$set']} params.setValues + * @returns {Promise} Returns the updated balance response. + */ +const updateBalance = async ({ user, incrementValue, setValues }) => { + // Use findOneAndUpdate with a conditional update to make the balance update atomic + // This prevents race conditions when multiple transactions are processed concurrently + const balanceResponse = await Balance.findOneAndUpdate( + { user }, + [ + { + $set: { + tokenCredits: { + $cond: { + if: { $lt: [{ $add: ['$tokenCredits', incrementValue] }, 0] }, + then: 0, + else: { $add: ['$tokenCredits', incrementValue] }, + }, + }, + ...setValues, + }, + }, + ], + { upsert: true, new: true }, + ).lean(); + + return balanceResponse; +}; + /** Method to calculate and set the tokenValue for a transaction */ transactionSchema.methods.calculateTokenValue = function () { if (!this.valueKey || !this.tokenType) { @@ -21,6 +58,39 @@ transactionSchema.methods.calculateTokenValue = function () { } }; +/** + * New static method to create an auto-refill transaction that does NOT trigger a balance update. + * @param {object} txData - Transaction data. + * @param {string} txData.user - The user ID. + * @param {string} txData.tokenType - The type of token. + * @param {string} txData.context - The context of the transaction. + * @param {number} txData.rawAmount - The raw amount of tokens. + * @returns {Promise} - The created transaction. + */ +transactionSchema.statics.createAutoRefillTransaction = async function (txData) { + if (txData.rawAmount != null && isNaN(txData.rawAmount)) { + return; + } + const transaction = new this(txData); + transaction.endpointTokenConfig = txData.endpointTokenConfig; + transaction.calculateTokenValue(); + await transaction.save(); + + const balanceResponse = await updateBalance({ + user: transaction.user, + incrementValue: txData.rawAmount, + setValues: { lastRefill: new Date() }, + }); + const result = { + rate: transaction.rate, + user: transaction.user.toString(), + balance: balanceResponse.tokenCredits, + }; + logger.debug('[Balance.check] Auto-refill performed', result); + result.transaction = transaction; + return result; +}; + /** * Static method to create a transaction and update the balance * @param {txData} txData - Transaction data. @@ -42,18 +112,12 @@ transactionSchema.statics.create = async function (txData) { return; } - let balanceResponse = await Balance.findOne({ user: transaction.user }).lean(); let incrementValue = transaction.tokenValue; - if (balanceResponse && balanceResponse.tokenCredits + incrementValue < 0) { - incrementValue = -balanceResponse.tokenCredits; - } - - balanceResponse = await Balance.findOneAndUpdate( - { user: transaction.user }, - { $inc: { tokenCredits: incrementValue } }, - { upsert: true, new: true }, - ).lean(); + const balanceResponse = await updateBalance({ + user: transaction.user, + incrementValue, + }); return { rate: transaction.rate, @@ -84,18 +148,12 @@ transactionSchema.statics.createStructured = async function (txData) { return; } - let balanceResponse = await Balance.findOne({ user: transaction.user }).lean(); let incrementValue = transaction.tokenValue; - if (balanceResponse && balanceResponse.tokenCredits + incrementValue < 0) { - incrementValue = -balanceResponse.tokenCredits; - } - - balanceResponse = await Balance.findOneAndUpdate( - { user: transaction.user }, - { $inc: { tokenCredits: incrementValue } }, - { upsert: true, new: true }, - ).lean(); + const balanceResponse = await updateBalance({ + user: transaction.user, + incrementValue, + }); return { rate: transaction.rate, diff --git a/api/models/balanceMethods.js b/api/models/balanceMethods.js new file mode 100644 index 0000000000..e700cc96e7 --- /dev/null +++ b/api/models/balanceMethods.js @@ -0,0 +1,153 @@ +const { ViolationTypes } = require('librechat-data-provider'); +const { Transaction } = require('./Transaction'); +const { logViolation } = require('~/cache'); +const { getMultiplier } = require('./tx'); +const { logger } = require('~/config'); +const Balance = require('./Balance'); + +/** + * Simple check method that calculates token cost and returns balance info. + * The auto-refill logic has been moved to balanceMethods.js to prevent circular dependencies. + */ +const checkBalanceRecord = async function ({ + user, + model, + endpoint, + valueKey, + tokenType, + amount, + endpointTokenConfig, +}) { + const multiplier = getMultiplier({ valueKey, tokenType, model, endpoint, endpointTokenConfig }); + const tokenCost = amount * multiplier; + + // Retrieve the balance record + let record = await Balance.findOne({ user }).lean(); + if (!record) { + logger.debug('[Balance.check] No balance record found for user', { user }); + return { + canSpend: false, + balance: 0, + tokenCost, + }; + } + let balance = record.tokenCredits; + + logger.debug('[Balance.check] Initial state', { + user, + model, + endpoint, + valueKey, + tokenType, + amount, + balance, + multiplier, + endpointTokenConfig: !!endpointTokenConfig, + }); + + // Only perform auto-refill if spending would bring the balance to 0 or below + if (balance - tokenCost <= 0 && record.autoRefillEnabled && record.refillAmount > 0) { + const lastRefillDate = new Date(record.lastRefill); + const nextRefillDate = addIntervalToDate( + lastRefillDate, + record.refillIntervalValue, + record.refillIntervalUnit, + ); + const now = new Date(); + if (now >= nextRefillDate) { + try { + /** @type {{ rate: number, user: string, balance: number, transaction: import('@librechat/data-schemas').ITransaction}} */ + const result = await Transaction.createAutoRefillTransaction({ + user: user, + tokenType: 'credits', + context: 'autoRefill', + rawAmount: record.refillAmount, + }); + balance = result.balance; + } catch (error) { + logger.error('[Balance.check] Failed to record transaction for auto-refill', error); + } + } + } + + logger.debug('[Balance.check] Token cost', { tokenCost }); + return { canSpend: balance >= tokenCost, balance, tokenCost }; +}; + +/** + * Adds a time interval to a given date. + * @param {Date} date - The starting date. + * @param {number} value - The numeric value of the interval. + * @param {'seconds'|'minutes'|'hours'|'days'|'weeks'|'months'} unit - The unit of time. + * @returns {Date} A new Date representing the starting date plus the interval. + */ +const addIntervalToDate = (date, value, unit) => { + const result = new Date(date); + switch (unit) { + case 'seconds': + result.setSeconds(result.getSeconds() + value); + break; + case 'minutes': + result.setMinutes(result.getMinutes() + value); + break; + case 'hours': + result.setHours(result.getHours() + value); + break; + case 'days': + result.setDate(result.getDate() + value); + break; + case 'weeks': + result.setDate(result.getDate() + value * 7); + break; + case 'months': + result.setMonth(result.getMonth() + value); + break; + default: + break; + } + return result; +}; + +/** + * Checks the balance for a user and determines if they can spend a certain amount. + * If the user cannot spend the amount, it logs a violation and denies the request. + * + * @async + * @function + * @param {Object} params - The function parameters. + * @param {Express.Request} params.req - The Express request object. + * @param {Express.Response} params.res - The Express response object. + * @param {Object} params.txData - The transaction data. + * @param {string} params.txData.user - The user ID or identifier. + * @param {('prompt' | 'completion')} params.txData.tokenType - The type of token. + * @param {number} params.txData.amount - The amount of tokens. + * @param {string} params.txData.model - The model name or identifier. + * @param {string} [params.txData.endpointTokenConfig] - The token configuration for the endpoint. + * @returns {Promise} Throws error if the user cannot spend the amount. + * @throws {Error} Throws an error if there's an issue with the balance check. + */ +const checkBalance = async ({ req, res, txData }) => { + const { canSpend, balance, tokenCost } = await checkBalanceRecord(txData); + if (canSpend) { + return true; + } + + const type = ViolationTypes.TOKEN_BALANCE; + const errorMessage = { + type, + balance, + tokenCost, + promptTokens: txData.amount, + }; + + if (txData.generations && txData.generations.length > 0) { + errorMessage.generations = txData.generations; + } + + await logViolation(req, res, type, errorMessage, 0); + throw new Error(JSON.stringify(errorMessage)); +}; + +module.exports = { + checkBalance, +}; diff --git a/api/models/checkBalance.js b/api/models/checkBalance.js deleted file mode 100644 index 5af77bbb19..0000000000 --- a/api/models/checkBalance.js +++ /dev/null @@ -1,45 +0,0 @@ -const { ViolationTypes } = require('librechat-data-provider'); -const { logViolation } = require('~/cache'); -const Balance = require('./Balance'); -/** - * Checks the balance for a user and determines if they can spend a certain amount. - * If the user cannot spend the amount, it logs a violation and denies the request. - * - * @async - * @function - * @param {Object} params - The function parameters. - * @param {Express.Request} params.req - The Express request object. - * @param {Express.Response} params.res - The Express response object. - * @param {Object} params.txData - The transaction data. - * @param {string} params.txData.user - The user ID or identifier. - * @param {('prompt' | 'completion')} params.txData.tokenType - The type of token. - * @param {number} params.txData.amount - The amount of tokens. - * @param {string} params.txData.model - The model name or identifier. - * @param {string} [params.txData.endpointTokenConfig] - The token configuration for the endpoint. - * @returns {Promise} Returns true if the user can spend the amount, otherwise denies the request. - * @throws {Error} Throws an error if there's an issue with the balance check. - */ -const checkBalance = async ({ req, res, txData }) => { - const { canSpend, balance, tokenCost } = await Balance.check(txData); - - if (canSpend) { - return true; - } - - const type = ViolationTypes.TOKEN_BALANCE; - const errorMessage = { - type, - balance, - tokenCost, - promptTokens: txData.amount, - }; - - if (txData.generations && txData.generations.length > 0) { - errorMessage.generations = txData.generations; - } - - await logViolation(req, res, type, errorMessage, 0); - throw new Error(JSON.stringify(errorMessage)); -}; - -module.exports = checkBalance; diff --git a/api/models/spendTokens.js b/api/models/spendTokens.js index f91b2bb9cd..36b71ca9fc 100644 --- a/api/models/spendTokens.js +++ b/api/models/spendTokens.js @@ -36,7 +36,7 @@ const spendTokens = async (txData, tokenUsage) => { prompt = await Transaction.create({ ...txData, tokenType: 'prompt', - rawAmount: -Math.max(promptTokens, 0), + rawAmount: promptTokens === 0 ? 0 : -Math.max(promptTokens, 0), }); } @@ -44,7 +44,7 @@ const spendTokens = async (txData, tokenUsage) => { completion = await Transaction.create({ ...txData, tokenType: 'completion', - rawAmount: -Math.max(completionTokens, 0), + rawAmount: completionTokens === 0 ? 0 : -Math.max(completionTokens, 0), }); } diff --git a/api/models/spendTokens.spec.js b/api/models/spendTokens.spec.js index f855c31196..09da9a46b2 100644 --- a/api/models/spendTokens.spec.js +++ b/api/models/spendTokens.spec.js @@ -1,17 +1,10 @@ const mongoose = require('mongoose'); +const { MongoMemoryServer } = require('mongodb-memory-server'); +const { Transaction } = require('./Transaction'); +const Balance = require('./Balance'); +const { spendTokens, spendStructuredTokens } = require('./spendTokens'); -jest.mock('./Transaction', () => ({ - Transaction: { - create: jest.fn(), - createStructured: jest.fn(), - }, -})); - -jest.mock('./Balance', () => ({ - findOne: jest.fn(), - findOneAndUpdate: jest.fn(), -})); - +// Mock the logger to prevent console output during tests jest.mock('~/config', () => ({ logger: { debug: jest.fn(), @@ -19,24 +12,46 @@ jest.mock('~/config', () => ({ }, })); -// New config module +// Mock the Config service const { getBalanceConfig } = require('~/server/services/Config'); jest.mock('~/server/services/Config'); -// Import after mocking -const { spendTokens, spendStructuredTokens } = require('./spendTokens'); -const { Transaction } = require('./Transaction'); -const Balance = require('./Balance'); - describe('spendTokens', () => { - beforeEach(() => { - jest.clearAllMocks(); + let mongoServer; + let userId; + + beforeAll(async () => { + mongoServer = await MongoMemoryServer.create(); + const mongoUri = mongoServer.getUri(); + await mongoose.connect(mongoUri); + }); + + afterAll(async () => { + await mongoose.disconnect(); + await mongoServer.stop(); + }); + + beforeEach(async () => { + // Clear collections before each test + await Transaction.deleteMany({}); + await Balance.deleteMany({}); + + // Create a new user ID for each test + userId = new mongoose.Types.ObjectId(); + + // Mock the balance config to be enabled by default getBalanceConfig.mockResolvedValue({ enabled: true }); }); it('should create transactions for both prompt and completion tokens', async () => { + // Create a balance for the user + await Balance.create({ + user: userId, + tokenCredits: 10000, + }); + const txData = { - user: new mongoose.Types.ObjectId(), + user: userId, conversationId: 'test-convo', model: 'gpt-3.5-turbo', context: 'test', @@ -46,31 +61,35 @@ describe('spendTokens', () => { completionTokens: 50, }; - Transaction.create.mockResolvedValueOnce({ tokenType: 'prompt', rawAmount: -100 }); - Transaction.create.mockResolvedValueOnce({ tokenType: 'completion', rawAmount: -50 }); - Balance.findOne.mockResolvedValue({ tokenCredits: 10000 }); - Balance.findOneAndUpdate.mockResolvedValue({ tokenCredits: 9850 }); - await spendTokens(txData, tokenUsage); - expect(Transaction.create).toHaveBeenCalledTimes(2); - expect(Transaction.create).toHaveBeenCalledWith( - expect.objectContaining({ - tokenType: 'prompt', - rawAmount: -100, - }), - ); - expect(Transaction.create).toHaveBeenCalledWith( - expect.objectContaining({ - tokenType: 'completion', - rawAmount: -50, - }), - ); + // Verify transactions were created + const transactions = await Transaction.find({ user: userId }).sort({ tokenType: 1 }); + expect(transactions).toHaveLength(2); + + // Check completion transaction + expect(transactions[0].tokenType).toBe('completion'); + expect(transactions[0].rawAmount).toBe(-50); + + // Check prompt transaction + expect(transactions[1].tokenType).toBe('prompt'); + expect(transactions[1].rawAmount).toBe(-100); + + // Verify balance was updated + const balance = await Balance.findOne({ user: userId }); + expect(balance).toBeDefined(); + expect(balance.tokenCredits).toBeLessThan(10000); // Balance should be reduced }); it('should handle zero completion tokens', async () => { + // Create a balance for the user + await Balance.create({ + user: userId, + tokenCredits: 10000, + }); + const txData = { - user: new mongoose.Types.ObjectId(), + user: userId, conversationId: 'test-convo', model: 'gpt-3.5-turbo', context: 'test', @@ -80,31 +99,26 @@ describe('spendTokens', () => { completionTokens: 0, }; - Transaction.create.mockResolvedValueOnce({ tokenType: 'prompt', rawAmount: -100 }); - Transaction.create.mockResolvedValueOnce({ tokenType: 'completion', rawAmount: -0 }); - Balance.findOne.mockResolvedValue({ tokenCredits: 10000 }); - Balance.findOneAndUpdate.mockResolvedValue({ tokenCredits: 9850 }); - await spendTokens(txData, tokenUsage); - expect(Transaction.create).toHaveBeenCalledTimes(2); - expect(Transaction.create).toHaveBeenCalledWith( - expect.objectContaining({ - tokenType: 'prompt', - rawAmount: -100, - }), - ); - expect(Transaction.create).toHaveBeenCalledWith( - expect.objectContaining({ - tokenType: 'completion', - rawAmount: -0, - }), - ); + // Verify transactions were created + const transactions = await Transaction.find({ user: userId }).sort({ tokenType: 1 }); + expect(transactions).toHaveLength(2); + + // Check completion transaction + expect(transactions[0].tokenType).toBe('completion'); + // In JavaScript -0 and 0 are different but functionally equivalent + // Use Math.abs to handle both 0 and -0 + expect(Math.abs(transactions[0].rawAmount)).toBe(0); + + // Check prompt transaction + expect(transactions[1].tokenType).toBe('prompt'); + expect(transactions[1].rawAmount).toBe(-100); }); it('should handle undefined token counts', async () => { const txData = { - user: new mongoose.Types.ObjectId(), + user: userId, conversationId: 'test-convo', model: 'gpt-3.5-turbo', context: 'test', @@ -113,14 +127,22 @@ describe('spendTokens', () => { await spendTokens(txData, tokenUsage); - expect(Transaction.create).not.toHaveBeenCalled(); + // Verify no transactions were created + const transactions = await Transaction.find({ user: userId }); + expect(transactions).toHaveLength(0); }); it('should not update balance when the balance feature is disabled', async () => { - // Override configuration: disable balance updates. + // Override configuration: disable balance updates getBalanceConfig.mockResolvedValue({ enabled: false }); + // Create a balance for the user + await Balance.create({ + user: userId, + tokenCredits: 10000, + }); + const txData = { - user: new mongoose.Types.ObjectId(), + user: userId, conversationId: 'test-convo', model: 'gpt-3.5-turbo', context: 'test', @@ -130,20 +152,454 @@ describe('spendTokens', () => { completionTokens: 50, }; - Transaction.create.mockResolvedValueOnce({ tokenType: 'prompt', rawAmount: -100 }); - Transaction.create.mockResolvedValueOnce({ tokenType: 'completion', rawAmount: -50 }); + await spendTokens(txData, tokenUsage); + + // Verify transactions were created + const transactions = await Transaction.find({ user: userId }); + expect(transactions).toHaveLength(2); + + // Verify balance was not updated (should still be 10000) + const balance = await Balance.findOne({ user: userId }); + expect(balance.tokenCredits).toBe(10000); + }); + + it('should not allow balance to go below zero when spending tokens', async () => { + // Create a balance with a low amount + await Balance.create({ + user: userId, + tokenCredits: 5000, + }); + + const txData = { + user: userId, + conversationId: 'test-convo', + model: 'gpt-4', // Using a more expensive model + context: 'test', + }; + + // Spending more tokens than the user has balance for + const tokenUsage = { + promptTokens: 1000, + completionTokens: 500, + }; await spendTokens(txData, tokenUsage); - expect(Transaction.create).toHaveBeenCalledTimes(2); - // When balance updates are disabled, Balance methods should not be called. - expect(Balance.findOne).not.toHaveBeenCalled(); - expect(Balance.findOneAndUpdate).not.toHaveBeenCalled(); + // Verify transactions were created + const transactions = await Transaction.find({ user: userId }).sort({ tokenType: 1 }); + expect(transactions).toHaveLength(2); + + // Verify balance was reduced to exactly 0, not negative + const balance = await Balance.findOne({ user: userId }); + expect(balance).toBeDefined(); + expect(balance.tokenCredits).toBe(0); + + // Check that the transaction records show the adjusted values + const transactionResults = await Promise.all( + transactions.map((t) => + Transaction.create({ + ...txData, + tokenType: t.tokenType, + rawAmount: t.rawAmount, + }), + ), + ); + + // The second transaction should have an adjusted value since balance is already 0 + expect(transactionResults[1]).toEqual( + expect.objectContaining({ + balance: 0, + }), + ); + }); + + it('should handle multiple transactions in sequence with low balance and not increase balance', async () => { + // This test is specifically checking for the issue reported in production + // where the balance increases after a transaction when it should remain at 0 + // Create a balance with a very low amount + await Balance.create({ + user: userId, + tokenCredits: 100, + }); + + // First transaction - should reduce balance to 0 + const txData1 = { + user: userId, + conversationId: 'test-convo-1', + model: 'gpt-4', + context: 'test', + }; + + const tokenUsage1 = { + promptTokens: 100, + completionTokens: 50, + }; + + await spendTokens(txData1, tokenUsage1); + + // Check balance after first transaction + let balance = await Balance.findOne({ user: userId }); + expect(balance.tokenCredits).toBe(0); + + // Second transaction - should keep balance at 0, not make it negative or increase it + const txData2 = { + user: userId, + conversationId: 'test-convo-2', + model: 'gpt-4', + context: 'test', + }; + + const tokenUsage2 = { + promptTokens: 200, + completionTokens: 100, + }; + + await spendTokens(txData2, tokenUsage2); + + // Check balance after second transaction - should still be 0 + balance = await Balance.findOne({ user: userId }); + expect(balance.tokenCredits).toBe(0); + + // Verify all transactions were created + const transactions = await Transaction.find({ user: userId }); + expect(transactions).toHaveLength(4); // 2 transactions (prompt+completion) for each call + + // Let's examine the actual transaction records to see what's happening + const transactionDetails = await Transaction.find({ user: userId }).sort({ createdAt: 1 }); + + // Log the transaction details for debugging + console.log('Transaction details:'); + transactionDetails.forEach((tx, i) => { + console.log(`Transaction ${i + 1}:`, { + tokenType: tx.tokenType, + rawAmount: tx.rawAmount, + tokenValue: tx.tokenValue, + model: tx.model, + }); + }); + + // Check the return values from Transaction.create directly + // This is to verify that the incrementValue is not becoming positive + const directResult = await Transaction.create({ + user: userId, + conversationId: 'test-convo-3', + model: 'gpt-4', + tokenType: 'completion', + rawAmount: -100, + context: 'test', + }); + + console.log('Direct Transaction.create result:', directResult); + + // The completion value should never be positive + expect(directResult.completion).not.toBeGreaterThan(0); + }); + + it('should ensure tokenValue is always negative for spending tokens', async () => { + // Create a balance for the user + await Balance.create({ + user: userId, + tokenCredits: 10000, + }); + + // Test with various models to check multiplier calculations + const models = ['gpt-3.5-turbo', 'gpt-4', 'claude-3-5-sonnet']; + + for (const model of models) { + const txData = { + user: userId, + conversationId: `test-convo-${model}`, + model, + context: 'test', + }; + + const tokenUsage = { + promptTokens: 100, + completionTokens: 50, + }; + + await spendTokens(txData, tokenUsage); + + // Get the transactions for this model + const transactions = await Transaction.find({ + user: userId, + model, + }); + + // Verify tokenValue is negative for all transactions + transactions.forEach((tx) => { + console.log(`Model ${model}, Type ${tx.tokenType}: tokenValue = ${tx.tokenValue}`); + expect(tx.tokenValue).toBeLessThan(0); + }); + } + }); + + it('should handle structured transactions in sequence with low balance', async () => { + // Create a balance with a very low amount + await Balance.create({ + user: userId, + tokenCredits: 100, + }); + + // First transaction - should reduce balance to 0 + const txData1 = { + user: userId, + conversationId: 'test-convo-1', + model: 'claude-3-5-sonnet', + context: 'test', + }; + + const tokenUsage1 = { + promptTokens: { + input: 10, + write: 100, + read: 5, + }, + completionTokens: 50, + }; + + await spendStructuredTokens(txData1, tokenUsage1); + + // Check balance after first transaction + let balance = await Balance.findOne({ user: userId }); + expect(balance.tokenCredits).toBe(0); + + // Second transaction - should keep balance at 0, not make it negative or increase it + const txData2 = { + user: userId, + conversationId: 'test-convo-2', + model: 'claude-3-5-sonnet', + context: 'test', + }; + + const tokenUsage2 = { + promptTokens: { + input: 20, + write: 200, + read: 10, + }, + completionTokens: 100, + }; + + await spendStructuredTokens(txData2, tokenUsage2); + + // Check balance after second transaction - should still be 0 + balance = await Balance.findOne({ user: userId }); + expect(balance.tokenCredits).toBe(0); + + // Verify all transactions were created + const transactions = await Transaction.find({ user: userId }); + expect(transactions).toHaveLength(4); // 2 transactions (prompt+completion) for each call + + // Let's examine the actual transaction records to see what's happening + const transactionDetails = await Transaction.find({ user: userId }).sort({ createdAt: 1 }); + + // Log the transaction details for debugging + console.log('Structured transaction details:'); + transactionDetails.forEach((tx, i) => { + console.log(`Transaction ${i + 1}:`, { + tokenType: tx.tokenType, + rawAmount: tx.rawAmount, + tokenValue: tx.tokenValue, + inputTokens: tx.inputTokens, + writeTokens: tx.writeTokens, + readTokens: tx.readTokens, + model: tx.model, + }); + }); + }); + + it('should not allow balance to go below zero when spending structured tokens', async () => { + // Create a balance with a low amount + await Balance.create({ + user: userId, + tokenCredits: 5000, + }); + + const txData = { + user: userId, + conversationId: 'test-convo', + model: 'claude-3-5-sonnet', // Using a model that supports structured tokens + context: 'test', + }; + + // Spending more tokens than the user has balance for + const tokenUsage = { + promptTokens: { + input: 100, + write: 1000, + read: 50, + }, + completionTokens: 500, + }; + + const result = await spendStructuredTokens(txData, tokenUsage); + + // Verify transactions were created + const transactions = await Transaction.find({ user: userId }).sort({ tokenType: 1 }); + expect(transactions).toHaveLength(2); + + // Verify balance was reduced to exactly 0, not negative + const balance = await Balance.findOne({ user: userId }); + expect(balance).toBeDefined(); + expect(balance.tokenCredits).toBe(0); + + // The result should show the adjusted values + expect(result).toEqual({ + prompt: expect.objectContaining({ + user: userId.toString(), + balance: expect.any(Number), + }), + completion: expect.objectContaining({ + user: userId.toString(), + balance: 0, // Final balance should be 0 + }), + }); + }); + + it('should handle multiple concurrent transactions correctly with a high balance', async () => { + // Create a balance with a high amount + const initialBalance = 1000000; + await Balance.create({ + user: userId, + tokenCredits: initialBalance, + }); + + // Simulate the recordCollectedUsage function from the production code + const conversationId = 'test-concurrent-convo'; + const context = 'message'; + const model = 'gpt-4'; + + // Create 10 usage records to simulate multiple transactions + const collectedUsage = Array.from({ length: 10 }, (_, i) => ({ + model, + input_tokens: 100 + i * 10, // Increasing input tokens + output_tokens: 50 + i * 5, // Increasing output tokens + input_token_details: { + cache_creation: i % 2 === 0 ? 20 : 0, // Some have cache creation + cache_read: i % 3 === 0 ? 10 : 0, // Some have cache read + }, + })); + + // Process all transactions concurrently to simulate race conditions + const promises = []; + let expectedTotalSpend = 0; + + for (let i = 0; i < collectedUsage.length; i++) { + const usage = collectedUsage[i]; + if (!usage) { + continue; + } + + const cache_creation = Number(usage.input_token_details?.cache_creation) || 0; + const cache_read = Number(usage.input_token_details?.cache_read) || 0; + + const txMetadata = { + context, + conversationId, + user: userId, + model: usage.model, + }; + + // Calculate expected spend for this transaction + const promptTokens = usage.input_tokens; + const completionTokens = usage.output_tokens; + + // For regular transactions + if (cache_creation === 0 && cache_read === 0) { + // Add to expected spend using the correct multipliers from tx.js + // For gpt-4, the multipliers are: prompt=30, completion=60 + expectedTotalSpend += promptTokens * 30; // gpt-4 prompt rate is 30 + expectedTotalSpend += completionTokens * 60; // gpt-4 completion rate is 60 + + promises.push( + spendTokens(txMetadata, { + promptTokens, + completionTokens, + }), + ); + } else { + // For structured transactions with cache operations + // The multipliers for claude models with cache operations are different + // But since we're using gpt-4 in the test, we need to use appropriate values + expectedTotalSpend += promptTokens * 30; // Base prompt rate for gpt-4 + // Since gpt-4 doesn't have cache multipliers defined, we'll use the prompt rate + expectedTotalSpend += cache_creation * 30; // Write rate (using prompt rate as fallback) + expectedTotalSpend += cache_read * 30; // Read rate (using prompt rate as fallback) + expectedTotalSpend += completionTokens * 60; // Completion rate for gpt-4 + + promises.push( + spendStructuredTokens(txMetadata, { + promptTokens: { + input: promptTokens, + write: cache_creation, + read: cache_read, + }, + completionTokens, + }), + ); + } + } + + // Wait for all transactions to complete + await Promise.all(promises); + + // Verify final balance + const finalBalance = await Balance.findOne({ user: userId }); + expect(finalBalance).toBeDefined(); + + // The final balance should be the initial balance minus the expected total spend + const expectedFinalBalance = initialBalance - expectedTotalSpend; + + console.log('Initial balance:', initialBalance); + console.log('Expected total spend:', expectedTotalSpend); + console.log('Expected final balance:', expectedFinalBalance); + console.log('Actual final balance:', finalBalance.tokenCredits); + + // Allow for small rounding differences + expect(finalBalance.tokenCredits).toBeCloseTo(expectedFinalBalance, 0); + + // Verify all transactions were created + const transactions = await Transaction.find({ + user: userId, + conversationId, + }); + + // We should have 2 transactions (prompt + completion) for each usage record + // Some might be structured, some regular + expect(transactions.length).toBeGreaterThanOrEqual(collectedUsage.length); + + // Log transaction details for debugging + console.log('Transaction summary:'); + let totalTokenValue = 0; + transactions.forEach((tx) => { + console.log(`${tx.tokenType}: rawAmount=${tx.rawAmount}, tokenValue=${tx.tokenValue}`); + totalTokenValue += tx.tokenValue; + }); + console.log('Total token value from transactions:', totalTokenValue); + + // The difference between expected and actual is significant + // This is likely due to the multipliers being different in the test environment + // Let's adjust our expectation based on the actual transactions + const actualSpend = initialBalance - finalBalance.tokenCredits; + console.log('Actual spend:', actualSpend); + + // Instead of checking the exact balance, let's verify that: + // 1. The balance was reduced (tokens were spent) + expect(finalBalance.tokenCredits).toBeLessThan(initialBalance); + // 2. The total token value from transactions matches the actual spend + expect(Math.abs(totalTokenValue)).toBeCloseTo(actualSpend, -3); // Allow for larger differences }); it('should create structured transactions for both prompt and completion tokens', async () => { + // Create a balance for the user + await Balance.create({ + user: userId, + tokenCredits: 10000, + }); + const txData = { - user: new mongoose.Types.ObjectId(), + user: userId, conversationId: 'test-convo', model: 'claude-3-5-sonnet', context: 'test', @@ -157,48 +613,37 @@ describe('spendTokens', () => { completionTokens: 50, }; - Transaction.createStructured.mockResolvedValueOnce({ - rate: 3.75, - user: txData.user.toString(), - balance: 9570, - prompt: -430, - }); - Transaction.create.mockResolvedValueOnce({ - rate: 15, - user: txData.user.toString(), - balance: 8820, - completion: -750, - }); - const result = await spendStructuredTokens(txData, tokenUsage); - expect(Transaction.createStructured).toHaveBeenCalledWith( - expect.objectContaining({ - tokenType: 'prompt', - inputTokens: -10, - writeTokens: -100, - readTokens: -5, - }), - ); - expect(Transaction.create).toHaveBeenCalledWith( - expect.objectContaining({ - tokenType: 'completion', - rawAmount: -50, - }), - ); + // Verify transactions were created + const transactions = await Transaction.find({ user: userId }).sort({ tokenType: 1 }); + expect(transactions).toHaveLength(2); + + // Check completion transaction + expect(transactions[0].tokenType).toBe('completion'); + expect(transactions[0].rawAmount).toBe(-50); + + // Check prompt transaction + expect(transactions[1].tokenType).toBe('prompt'); + expect(transactions[1].inputTokens).toBe(-10); + expect(transactions[1].writeTokens).toBe(-100); + expect(transactions[1].readTokens).toBe(-5); + + // Verify result contains transaction info expect(result).toEqual({ prompt: expect.objectContaining({ - rate: 3.75, - user: txData.user.toString(), - balance: 9570, - prompt: -430, + user: userId.toString(), + prompt: expect.any(Number), }), completion: expect.objectContaining({ - rate: 15, - user: txData.user.toString(), - balance: 8820, - completion: -750, + user: userId.toString(), + completion: expect.any(Number), }), }); + + // Verify balance was updated + const balance = await Balance.findOne({ user: userId }); + expect(balance).toBeDefined(); + expect(balance.tokenCredits).toBeLessThan(10000); // Balance should be reduced }); }); diff --git a/api/server/controllers/agents/client.js b/api/server/controllers/agents/client.js index 4b995bb06a..0473ab8747 100644 --- a/api/server/controllers/agents/client.js +++ b/api/server/controllers/agents/client.js @@ -471,6 +471,7 @@ class AgentClient extends BaseClient { err, ); }); + continue; } spendTokens(txMetadata, { promptTokens: usage.input_tokens, diff --git a/api/server/controllers/assistants/chatV1.js b/api/server/controllers/assistants/chatV1.js index cb30277e93..2f10d31a6b 100644 --- a/api/server/controllers/assistants/chatV1.js +++ b/api/server/controllers/assistants/chatV1.js @@ -27,7 +27,7 @@ const { createRun, StreamRunManager } = require('~/server/services/Runs'); const { addTitle } = require('~/server/services/Endpoints/assistants'); const { createRunBody } = require('~/server/services/createRunBody'); const { getTransactions } = require('~/models/Transaction'); -const checkBalance = require('~/models/checkBalance'); +const { checkBalance } = require('~/models/balanceMethods'); const { getConvo } = require('~/models/Conversation'); const getLogStores = require('~/cache/getLogStores'); const { getModelMaxTokens } = require('~/utils'); diff --git a/api/server/controllers/assistants/chatV2.js b/api/server/controllers/assistants/chatV2.js index cf130e4eef..799326aea9 100644 --- a/api/server/controllers/assistants/chatV2.js +++ b/api/server/controllers/assistants/chatV2.js @@ -25,7 +25,7 @@ const { addTitle } = require('~/server/services/Endpoints/assistants'); const { sendMessage, sleep, countTokens } = require('~/server/utils'); const { createRunBody } = require('~/server/services/createRunBody'); const { getTransactions } = require('~/models/Transaction'); -const checkBalance = require('~/models/checkBalance'); +const { checkBalance } = require('~/models/balanceMethods'); const { getConvo } = require('~/models/Conversation'); const getLogStores = require('~/cache/getLogStores'); const { getModelMaxTokens } = require('~/utils'); From 20f353630e676a283f72fcb3ed952037379584a5 Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+berry-13@users.noreply.github.com> Date: Sun, 23 Mar 2025 16:26:06 +0100 Subject: [PATCH 005/123] =?UTF-8?q?=F0=9F=97=A3=EF=B8=8F=20feat:=20add=20s?= =?UTF-8?q?upport=20for=20`gpt-4o-transcribe`=20models=20(#6483)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/server/services/Files/Audio/STTService.js | 76 ++++++++++++++++++- .../hooks/Input/useSpeechToTextExternal.ts | 53 ++++++++++++- 2 files changed, 124 insertions(+), 5 deletions(-) diff --git a/api/server/services/Files/Audio/STTService.js b/api/server/services/Files/Audio/STTService.js index ea8d6ffaac..d6c8cc4146 100644 --- a/api/server/services/Files/Audio/STTService.js +++ b/api/server/services/Files/Audio/STTService.js @@ -7,6 +7,78 @@ const { getCustomConfig } = require('~/server/services/Config'); const { genAzureEndpoint } = require('~/utils'); const { logger } = require('~/config'); +/** + * Maps MIME types to their corresponding file extensions for audio files. + * @type {Object} + */ +const MIME_TO_EXTENSION_MAP = { + // MP4 container formats + 'audio/mp4': 'm4a', + 'audio/x-m4a': 'm4a', + // Ogg formats + 'audio/ogg': 'ogg', + 'audio/vorbis': 'ogg', + 'application/ogg': 'ogg', + // Wave formats + 'audio/wav': 'wav', + 'audio/x-wav': 'wav', + 'audio/wave': 'wav', + // MP3 formats + 'audio/mp3': 'mp3', + 'audio/mpeg': 'mp3', + 'audio/mpeg3': 'mp3', + // WebM formats + 'audio/webm': 'webm', + // Additional formats + 'audio/flac': 'flac', + 'audio/x-flac': 'flac', +}; + +/** + * Gets the file extension from the MIME type. + * @param {string} mimeType - The MIME type. + * @returns {string} The file extension. + */ +function getFileExtensionFromMime(mimeType) { + // Default fallback + if (!mimeType) { + return 'webm'; + } + + // Direct lookup (fastest) + const extension = MIME_TO_EXTENSION_MAP[mimeType]; + if (extension) { + return extension; + } + + // Try to extract subtype as fallback + const subtype = mimeType.split('/')[1]?.toLowerCase(); + + // If subtype matches a known extension + if (['mp3', 'mp4', 'ogg', 'wav', 'webm', 'm4a', 'flac'].includes(subtype)) { + return subtype === 'mp4' ? 'm4a' : subtype; + } + + // Generic checks for partial matches + if (subtype?.includes('mp4') || subtype?.includes('m4a')) { + return 'm4a'; + } + if (subtype?.includes('ogg')) { + return 'ogg'; + } + if (subtype?.includes('wav')) { + return 'wav'; + } + if (subtype?.includes('mp3') || subtype?.includes('mpeg')) { + return 'mp3'; + } + if (subtype?.includes('webm')) { + return 'webm'; + } + + return 'webm'; // Default fallback +} + /** * Service class for handling Speech-to-Text (STT) operations. * @class @@ -170,8 +242,10 @@ class STTService { throw new Error('Invalid provider'); } + const fileExtension = getFileExtensionFromMime(audioFile.mimetype); + const audioReadStream = Readable.from(audioBuffer); - audioReadStream.path = 'audio.wav'; + audioReadStream.path = `audio.${fileExtension}`; const [url, data, headers] = strategy.call(this, sttSchema, audioReadStream, audioFile); diff --git a/client/src/hooks/Input/useSpeechToTextExternal.ts b/client/src/hooks/Input/useSpeechToTextExternal.ts index b9f0ee94d8..5ddccc9f3e 100644 --- a/client/src/hooks/Input/useSpeechToTextExternal.ts +++ b/client/src/hooks/Input/useSpeechToTextExternal.ts @@ -21,6 +21,7 @@ const useSpeechToTextExternal = ( const [isListening, setIsListening] = useState(false); const [audioChunks, setAudioChunks] = useState([]); const [isRequestBeingMade, setIsRequestBeingMade] = useState(false); + const [audioMimeType, setAudioMimeType] = useState('audio/webm'); const [minDecibels] = useRecoilState(store.decibelValue); const [autoSendText] = useRecoilState(store.autoSendText); @@ -48,6 +49,44 @@ const useSpeechToTextExternal = ( }, }); + const getBestSupportedMimeType = () => { + const types = [ + 'audio/webm', + 'audio/webm;codecs=opus', + 'audio/mp4', + 'audio/ogg;codecs=opus', + 'audio/ogg', + 'audio/wav', + ]; + + for (const type of types) { + if (MediaRecorder.isTypeSupported(type)) { + return type; + } + } + + const ua = navigator.userAgent.toLowerCase(); + if (ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1) { + return 'audio/mp4'; + } else if (ua.indexOf('firefox') !== -1) { + return 'audio/ogg'; + } else { + return 'audio/webm'; + } + }; + + const getFileExtension = (mimeType: string) => { + if (mimeType.includes('mp4')) { + return 'm4a'; + } else if (mimeType.includes('ogg')) { + return 'ogg'; + } else if (mimeType.includes('wav')) { + return 'wav'; + } else { + return 'webm'; + } + }; + const cleanup = () => { if (mediaRecorderRef.current) { mediaRecorderRef.current.removeEventListener('dataavailable', (event: BlobEvent) => { @@ -73,12 +112,13 @@ const useSpeechToTextExternal = ( const handleStop = () => { if (audioChunks.length > 0) { - const audioBlob = new Blob(audioChunks, { type: 'audio/wav' }); + const audioBlob = new Blob(audioChunks, { type: audioMimeType }); + const fileExtension = getFileExtension(audioMimeType); setAudioChunks([]); const formData = new FormData(); - formData.append('audio', audioBlob, 'audio.wav'); + formData.append('audio', audioBlob, `audio.${fileExtension}`); setIsRequestBeingMade(true); cleanup(); processAudio(formData); @@ -133,7 +173,12 @@ const useSpeechToTextExternal = ( if (audioStream.current) { try { setAudioChunks([]); - mediaRecorderRef.current = new MediaRecorder(audioStream.current); + const bestMimeType = getBestSupportedMimeType(); + setAudioMimeType(bestMimeType); + + mediaRecorderRef.current = new MediaRecorder(audioStream.current, { + mimeType: bestMimeType, + }); mediaRecorderRef.current.addEventListener('dataavailable', (event: BlobEvent) => { audioChunks.push(event.data); }); @@ -221,7 +266,7 @@ const useSpeechToTextExternal = ( return () => { window.removeEventListener('keydown', handleKeyDown); }; - // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isListening]); return { From 4b85fe920661360815c3dd22544669b24a8e3738 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Sun, 23 Mar 2025 18:47:40 -0400 Subject: [PATCH 006/123] =?UTF-8?q?=F0=9F=94=83=20fix:=20Draft=20Clearing,?= =?UTF-8?q?=20Claude=20Titles,=20Remove=20Default=20Vision=20Max=20Tokens?= =?UTF-8?q?=20(#6501)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: remove legacy max_tokens setting for vision models in OpenAIClient (intended for gpt-4-preview) * refactor: streamline capability checks in loadAgentTools function, still allow actions if tools are disabled * fix: enhance error handling for token limits in AnthropicClient and update error message in translations * feat: append timestamp to cloned agent names for better identification * chore: update @librechat/agents dependency to version 2.3.94 * refactor: remove clearDraft helper from useSubmitMessage and centralize draft clearing logic to SSE handling, helps prevent user message loss if logout occurs * refactor: increase debounce time for clearDraft function to improve auto-save performance --- api/app/clients/AnthropicClient.js | 18 +- api/app/clients/OpenAIClient.js | 4 - api/package.json | 2 +- api/server/controllers/agents/v1.js | 5 + api/server/services/ToolService.js | 25 +- client/src/components/Chat/Input/ChatForm.tsx | 4 +- client/src/hooks/Input/useAutoSave.ts | 15 +- client/src/hooks/Messages/useSubmitMessage.ts | 4 +- client/src/hooks/SSE/useSSE.ts | 13 + client/src/locales/en/translation.json | 4 +- package-lock.json | 1130 +++++++++-------- 11 files changed, 634 insertions(+), 590 deletions(-) diff --git a/api/app/clients/AnthropicClient.js b/api/app/clients/AnthropicClient.js index 8331e54bfb..a1fc03a256 100644 --- a/api/app/clients/AnthropicClient.js +++ b/api/app/clients/AnthropicClient.js @@ -2,6 +2,7 @@ const Anthropic = require('@anthropic-ai/sdk'); const { HttpsProxyAgent } = require('https-proxy-agent'); const { Constants, + ErrorTypes, EModelEndpoint, anthropicSettings, getResponseSender, @@ -147,12 +148,17 @@ class AnthropicClient extends BaseClient { this.maxPromptTokens = this.options.maxPromptTokens || this.maxContextTokens - this.maxResponseTokens; - if (this.maxPromptTokens + this.maxResponseTokens > this.maxContextTokens) { - throw new Error( - `maxPromptTokens + maxOutputTokens (${this.maxPromptTokens} + ${this.maxResponseTokens} = ${ - this.maxPromptTokens + this.maxResponseTokens - }) must be less than or equal to maxContextTokens (${this.maxContextTokens})`, - ); + const reservedTokens = this.maxPromptTokens + this.maxResponseTokens; + if (reservedTokens > this.maxContextTokens) { + const info = `Total Possible Tokens + Max Output Tokens must be less than or equal to Max Context Tokens: ${this.maxPromptTokens} (total possible output) + ${this.maxResponseTokens} (max output) = ${reservedTokens}/${this.maxContextTokens} (max context)`; + const errorMessage = `{ "type": "${ErrorTypes.INPUT_LENGTH}", "info": "${info}" }`; + logger.warn(info); + throw new Error(errorMessage); + } else if (this.maxResponseTokens === this.maxContextTokens) { + const info = `Max Output Tokens must be less than Max Context Tokens: ${this.maxResponseTokens} (max output) = ${this.maxContextTokens} (max context)`; + const errorMessage = `{ "type": "${ErrorTypes.INPUT_LENGTH}", "info": "${info}" }`; + logger.warn(info); + throw new Error(errorMessage); } this.sender = diff --git a/api/app/clients/OpenAIClient.js b/api/app/clients/OpenAIClient.js index 0874225ed8..d1184e5f7b 100644 --- a/api/app/clients/OpenAIClient.js +++ b/api/app/clients/OpenAIClient.js @@ -1185,10 +1185,6 @@ ${convo} opts.httpAgent = new HttpsProxyAgent(this.options.proxy); } - if (this.isVisionModel) { - modelOptions.max_tokens = 4000; - } - /** @type {TAzureConfig | undefined} */ const azureConfig = this.options?.req?.app?.locals?.[EModelEndpoint.azureOpenAI]; diff --git a/api/package.json b/api/package.json index 2ee9df6016..9a6eb3688d 100644 --- a/api/package.json +++ b/api/package.json @@ -49,7 +49,7 @@ "@langchain/google-genai": "^0.1.11", "@langchain/google-vertexai": "^0.2.2", "@langchain/textsplitters": "^0.1.0", - "@librechat/agents": "^2.3.93", + "@librechat/agents": "^2.3.94", "@librechat/data-schemas": "*", "@waylaidwanderer/fetch-event-source": "^3.0.1", "axios": "^1.8.2", diff --git a/api/server/controllers/agents/v1.js b/api/server/controllers/agents/v1.js index 731dee69a2..52e6ed2fc9 100644 --- a/api/server/controllers/agents/v1.js +++ b/api/server/controllers/agents/v1.js @@ -212,6 +212,11 @@ const duplicateAgentHandler = async (req, res) => { tool_resources: _tool_resources = {}, ...cloneData } = agent; + cloneData.name = `${agent.name} (${new Date().toLocaleString('en-US', { + dateStyle: 'short', + timeStyle: 'short', + hour12: false, + })})`; if (_tool_resources?.[EToolResources.ocr]) { cloneData.tool_resources = { diff --git a/api/server/services/ToolService.js b/api/server/services/ToolService.js index 969ca8d8ff..ad2d3632b4 100644 --- a/api/server/services/ToolService.js +++ b/api/server/services/ToolService.js @@ -425,21 +425,16 @@ async function loadAgentTools({ req, res, agent, tool_resources, openAIApiKey }) } const endpointsConfig = await getEndpointsConfig(req); - const capabilities = endpointsConfig?.[EModelEndpoint.agents]?.capabilities ?? []; - const areToolsEnabled = capabilities.includes(AgentCapabilities.tools); - if (!areToolsEnabled) { - logger.debug('Tools are not enabled for this agent.'); - return {}; - } - - const isFileSearchEnabled = capabilities.includes(AgentCapabilities.file_search); - const isCodeEnabled = capabilities.includes(AgentCapabilities.execute_code); - const areActionsEnabled = capabilities.includes(AgentCapabilities.actions); + const enabledCapabilities = new Set(endpointsConfig?.[EModelEndpoint.agents]?.capabilities ?? []); + const checkCapability = (capability) => enabledCapabilities.has(capability); + const areToolsEnabled = checkCapability(AgentCapabilities.tools); const _agentTools = agent.tools?.filter((tool) => { - if (tool === Tools.file_search && !isFileSearchEnabled) { + if (tool === Tools.file_search && !checkCapability(AgentCapabilities.file_search)) { return false; - } else if (tool === Tools.execute_code && !isCodeEnabled) { + } else if (tool === Tools.execute_code && !checkCapability(AgentCapabilities.execute_code)) { + return false; + } else if (!areToolsEnabled && !tool.includes(actionDelimiter)) { return false; } return true; @@ -473,6 +468,10 @@ async function loadAgentTools({ req, res, agent, tool_resources, openAIApiKey }) continue; } + if (!areToolsEnabled) { + continue; + } + if (tool.mcp === true) { agentTools.push(tool); continue; @@ -505,7 +504,7 @@ async function loadAgentTools({ req, res, agent, tool_resources, openAIApiKey }) return map; }, {}); - if (!areActionsEnabled) { + if (!checkCapability(AgentCapabilities.actions)) { return { tools: agentTools, toolContextMap, diff --git a/client/src/components/Chat/Input/ChatForm.tsx b/client/src/components/Chat/Input/ChatForm.tsx index 442d32a45e..29592abeaa 100644 --- a/client/src/components/Chat/Input/ChatForm.tsx +++ b/client/src/components/Chat/Input/ChatForm.tsx @@ -93,7 +93,7 @@ const ChatForm = ({ index = 0 }) => { } = useAddedChatContext(); const showStopAdded = useRecoilValue(store.showStopButtonByIndex(addedIndex)); - const { clearDraft } = useAutoSave({ + useAutoSave({ conversationId: useMemo(() => conversation?.conversationId, [conversation]), textAreaRef, files, @@ -101,7 +101,7 @@ const ChatForm = ({ index = 0 }) => { }); const assistantMap = useAssistantsMapContext(); - const { submitMessage, submitPrompt } = useSubmitMessage({ clearDraft }); + const { submitMessage, submitPrompt } = useSubmitMessage(); const { endpoint: _endpoint, endpointType } = conversation ?? { endpoint: null }; const endpoint = endpointType ?? _endpoint; diff --git a/client/src/hooks/Input/useAutoSave.ts b/client/src/hooks/Input/useAutoSave.ts index 70e3ab2bf2..6b7be2437d 100644 --- a/client/src/hooks/Input/useAutoSave.ts +++ b/client/src/hooks/Input/useAutoSave.ts @@ -7,6 +7,10 @@ import { useChatFormContext } from '~/Providers'; import { useGetFiles } from '~/data-provider'; import store from '~/store'; +const clearDraft = debounce((id?: string | null) => { + localStorage.removeItem(`${LocalStorageKeys.TEXT_DRAFT}${id ?? ''}`); +}, 2500); + export const useAutoSave = ({ conversationId, textAreaRef, @@ -103,7 +107,7 @@ export const useAutoSave = ({ } // Save the draft of the current conversation before switching if (textAreaRef.current.value === '') { - localStorage.removeItem(`${LocalStorageKeys.TEXT_DRAFT}${id}`); + clearDraft(id); } else { localStorage.setItem( `${LocalStorageKeys.TEXT_DRAFT}${id}`, @@ -208,13 +212,4 @@ export const useAutoSave = ({ ); } }, [files, conversationId, saveDrafts, currentConversationId, fileIds]); - - const clearDraft = useCallback(() => { - if (conversationId != null && conversationId) { - localStorage.removeItem(`${LocalStorageKeys.TEXT_DRAFT}${conversationId}`); - localStorage.removeItem(`${LocalStorageKeys.FILES_DRAFT}${conversationId}`); - } - }, [conversationId]); - - return { clearDraft }; }; diff --git a/client/src/hooks/Messages/useSubmitMessage.ts b/client/src/hooks/Messages/useSubmitMessage.ts index f69ee6ee9a..1ed468d61a 100644 --- a/client/src/hooks/Messages/useSubmitMessage.ts +++ b/client/src/hooks/Messages/useSubmitMessage.ts @@ -14,7 +14,7 @@ const appendIndex = (index: number, value?: string) => { return `${value}${Constants.COMMON_DIVIDER}${index}`; }; -export default function useSubmitMessage(helpers?: { clearDraft?: () => void }) { +export default function useSubmitMessage() { const { user } = useAuthContext(); const methods = useChatFormContext(); const { ask, index, getMessages, setMessages, latestMessage } = useChatContext(); @@ -66,12 +66,10 @@ export default function useSubmitMessage(helpers?: { clearDraft?: () => void }) ); } methods.reset(); - helpers?.clearDraft && helpers.clearDraft(); }, [ ask, methods, - helpers, addedIndex, addedConvo, setMessages, diff --git a/client/src/hooks/SSE/useSSE.ts b/client/src/hooks/SSE/useSSE.ts index 92f03090e5..3e5b3eda4d 100644 --- a/client/src/hooks/SSE/useSSE.ts +++ b/client/src/hooks/SSE/useSSE.ts @@ -4,9 +4,11 @@ import { SSE } from 'sse.js'; import { useSetRecoilState } from 'recoil'; import { request, + Constants, /* @ts-ignore */ createPayload, isAgentsEndpoint, + LocalStorageKeys, removeNullishValues, isAssistantsEndpoint, } from 'librechat-data-provider'; @@ -18,6 +20,16 @@ import { useAuthContext } from '~/hooks/AuthContext'; import useEventHandlers from './useEventHandlers'; import store from '~/store'; +const clearDraft = (conversationId?: string | null) => { + if (conversationId) { + localStorage.removeItem(`${LocalStorageKeys.TEXT_DRAFT}${conversationId}`); + localStorage.removeItem(`${LocalStorageKeys.FILES_DRAFT}${conversationId}`); + } else { + localStorage.removeItem(`${LocalStorageKeys.TEXT_DRAFT}${Constants.NEW_CONVO}`); + localStorage.removeItem(`${LocalStorageKeys.FILES_DRAFT}${Constants.NEW_CONVO}`); + } +}; + type ChatHelpers = Pick< EventHandlerParams, | 'setMessages' @@ -112,6 +124,7 @@ export default function useSSE( const data = JSON.parse(e.data); if (data.final != null) { + clearDraft(submission.conversationId); const { plugins } = data; finalHandler(data, { ...submission, plugins } as EventSubmission); (startupConfig?.balance?.enabled ?? false) && balanceQuery.refetch(); diff --git a/client/src/locales/en/translation.json b/client/src/locales/en/translation.json index 67a05d1962..0fd7ac01e4 100644 --- a/client/src/locales/en/translation.json +++ b/client/src/locales/en/translation.json @@ -264,7 +264,7 @@ "com_error_files_upload": "An error occurred while uploading the file.", "com_error_files_upload_canceled": "The file upload request was canceled. Note: the file upload may still be processing and will need to be manually deleted.", "com_error_files_validation": "An error occurred while validating the file.", - "com_error_input_length": "The latest message token count is too long, exceeding the token limit ({{0}} respectively). Please shorten your message, adjust the max context size from the conversation parameters, or fork the conversation to continue.", + "com_error_input_length": "The latest message token count is too long, exceeding the token limit, or your token limit parameters are misconfigured, adversely affecting the context window. More info: {{0}}. Please shorten your message, adjust the max context size from the conversation parameters, or fork the conversation to continue.", "com_error_invalid_user_key": "Invalid key provided. Please provide a valid key and try again.", "com_error_moderation": "It appears that the content submitted has been flagged by our moderation system for not aligning with our community guidelines. We're unable to proceed with this specific topic. If you have any other questions or topics you'd like to explore, please edit your message, or create a new conversation.", "com_error_no_base_url": "No base URL found. Please provide one and try again.", @@ -848,4 +848,4 @@ "com_ui_zoom": "Zoom", "com_user_message": "You", "com_warning_resubmit_unsupported": "Resubmitting the AI message is not supported for this endpoint." -} \ No newline at end of file +} diff --git a/package-lock.json b/package-lock.json index 7a9c0798dd..c29b53cd21 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,7 +65,7 @@ "@langchain/google-genai": "^0.1.11", "@langchain/google-vertexai": "^0.2.2", "@langchain/textsplitters": "^0.1.0", - "@librechat/agents": "^2.3.93", + "@librechat/agents": "^2.3.94", "@librechat/data-schemas": "*", "@waylaidwanderer/fetch-event-source": "^3.0.1", "axios": "^1.8.2", @@ -670,554 +670,6 @@ } } }, - "api/node_modules/@librechat/agents": { - "version": "2.3.93", - "resolved": "https://registry.npmjs.org/@librechat/agents/-/agents-2.3.93.tgz", - "integrity": "sha512-TlGpxfO+fBs+6xecNlX2mQcHh7BdAGRsBBri1DNpzAaPclMVWQGxIdUGJBqrqcnrlVLKkb4xctExxmmXe9mt0A==", - "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.14", - "@langchain/aws": "^0.1.7", - "@langchain/community": "^0.3.35", - "@langchain/core": "^0.3.40", - "@langchain/deepseek": "^0.0.1", - "@langchain/google-genai": "^0.1.11", - "@langchain/google-vertexai": "^0.2.2", - "@langchain/langgraph": "^0.2.49", - "@langchain/mistralai": "^0.0.26", - "@langchain/ollama": "^0.1.5", - "@langchain/openai": "^0.4.2", - "@langchain/xai": "^0.0.2", - "@smithy/eventstream-codec": "^2.2.0", - "@smithy/protocol-http": "^3.0.6", - "@smithy/signature-v4": "^2.0.10", - "@smithy/util-utf8": "^2.0.0", - "dotenv": "^16.4.7", - "https-proxy-agent": "^7.0.6", - "nanoid": "^3.3.7" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "api/node_modules/@librechat/agents/node_modules/@langchain/community": { - "version": "0.3.36", - "resolved": "https://registry.npmjs.org/@langchain/community/-/community-0.3.36.tgz", - "integrity": "sha512-4jBB4yqux8CGfCwlBbtXck5qP0yJPwDvtwI4KUN2j/At+zSZn1FyTL11G75ctG2b5GO7u+cR6QatDXIPooJphA==", - "dependencies": { - "@langchain/openai": ">=0.2.0 <0.5.0", - "binary-extensions": "^2.2.0", - "expr-eval": "^2.0.2", - "flat": "^5.0.2", - "js-yaml": "^4.1.0", - "langchain": ">=0.2.3 <0.3.0 || >=0.3.4 <0.4.0", - "langsmith": ">=0.2.8 <0.4.0", - "uuid": "^10.0.0", - "zod": "^3.22.3", - "zod-to-json-schema": "^3.22.5" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@arcjet/redact": "^v1.0.0-alpha.23", - "@aws-crypto/sha256-js": "^5.0.0", - "@aws-sdk/client-bedrock-agent-runtime": "^3.749.0", - "@aws-sdk/client-bedrock-runtime": "^3.749.0", - "@aws-sdk/client-dynamodb": "^3.749.0", - "@aws-sdk/client-kendra": "^3.749.0", - "@aws-sdk/client-lambda": "^3.749.0", - "@aws-sdk/client-s3": "^3.749.0", - "@aws-sdk/client-sagemaker-runtime": "^3.749.0", - "@aws-sdk/client-sfn": "^3.749.0", - "@aws-sdk/credential-provider-node": "^3.388.0", - "@azure/search-documents": "^12.0.0", - "@azure/storage-blob": "^12.15.0", - "@browserbasehq/sdk": "*", - "@browserbasehq/stagehand": "^1.0.0", - "@clickhouse/client": "^0.2.5", - "@cloudflare/ai": "*", - "@datastax/astra-db-ts": "^1.0.0", - "@elastic/elasticsearch": "^8.4.0", - "@getmetal/metal-sdk": "*", - "@getzep/zep-cloud": "^1.0.6", - "@getzep/zep-js": "^0.9.0", - "@gomomento/sdk": "^1.51.1", - "@gomomento/sdk-core": "^1.51.1", - "@google-ai/generativelanguage": "*", - "@google-cloud/storage": "^6.10.1 || ^7.7.0", - "@gradientai/nodejs-sdk": "^1.2.0", - "@huggingface/inference": "^2.6.4", - "@huggingface/transformers": "^3.2.3", - "@ibm-cloud/watsonx-ai": "*", - "@lancedb/lancedb": "^0.12.0", - "@langchain/core": ">=0.2.21 <0.4.0", - "@layerup/layerup-security": "^1.5.12", - "@libsql/client": "^0.14.0", - "@mendable/firecrawl-js": "^1.4.3", - "@mlc-ai/web-llm": "*", - "@mozilla/readability": "*", - "@neondatabase/serverless": "*", - "@notionhq/client": "^2.2.10", - "@opensearch-project/opensearch": "*", - "@pinecone-database/pinecone": "*", - "@planetscale/database": "^1.8.0", - "@premai/prem-sdk": "^0.3.25", - "@qdrant/js-client-rest": "^1.8.2", - "@raycast/api": "^1.55.2", - "@rockset/client": "^0.9.1", - "@smithy/eventstream-codec": "^2.0.5", - "@smithy/protocol-http": "^3.0.6", - "@smithy/signature-v4": "^2.0.10", - "@smithy/util-utf8": "^2.0.0", - "@spider-cloud/spider-client": "^0.0.21", - "@supabase/supabase-js": "^2.45.0", - "@tensorflow-models/universal-sentence-encoder": "*", - "@tensorflow/tfjs-converter": "*", - "@tensorflow/tfjs-core": "*", - "@upstash/ratelimit": "^1.1.3 || ^2.0.3", - "@upstash/redis": "^1.20.6", - "@upstash/vector": "^1.1.1", - "@vercel/kv": "*", - "@vercel/postgres": "*", - "@writerai/writer-sdk": "^0.40.2", - "@xata.io/client": "^0.28.0", - "@zilliz/milvus2-sdk-node": ">=2.3.5", - "apify-client": "^2.7.1", - "assemblyai": "^4.6.0", - "better-sqlite3": ">=9.4.0 <12.0.0", - "cassandra-driver": "^4.7.2", - "cborg": "^4.1.1", - "cheerio": "^1.0.0-rc.12", - "chromadb": "*", - "closevector-common": "0.1.3", - "closevector-node": "0.1.6", - "closevector-web": "0.1.6", - "cohere-ai": "*", - "convex": "^1.3.1", - "crypto-js": "^4.2.0", - "d3-dsv": "^2.0.0", - "discord.js": "^14.14.1", - "dria": "^0.0.3", - "duck-duck-scrape": "^2.2.5", - "epub2": "^3.0.1", - "fast-xml-parser": "*", - "firebase-admin": "^11.9.0 || ^12.0.0", - "google-auth-library": "*", - "googleapis": "*", - "hnswlib-node": "^3.0.0", - "html-to-text": "^9.0.5", - "ibm-cloud-sdk-core": "*", - "ignore": "^5.2.0", - "interface-datastore": "^8.2.11", - "ioredis": "^5.3.2", - "it-all": "^3.0.4", - "jsdom": "*", - "jsonwebtoken": "^9.0.2", - "llmonitor": "^0.5.9", - "lodash": "^4.17.21", - "lunary": "^0.7.10", - "mammoth": "^1.6.0", - "mariadb": "^3.4.0", - "mongodb": ">=5.2.0", - "mysql2": "^3.9.8", - "neo4j-driver": "*", - "notion-to-md": "^3.1.0", - "officeparser": "^4.0.4", - "openai": "*", - "pdf-parse": "1.1.1", - "pg": "^8.11.0", - "pg-copy-streams": "^6.0.5", - "pickleparser": "^0.2.1", - "playwright": "^1.32.1", - "portkey-ai": "^0.1.11", - "puppeteer": "*", - "pyodide": ">=0.24.1 <0.27.0", - "redis": "*", - "replicate": "*", - "sonix-speech-recognition": "^2.1.1", - "srt-parser-2": "^1.2.3", - "typeorm": "^0.3.20", - "typesense": "^1.5.3", - "usearch": "^1.1.1", - "voy-search": "0.6.2", - "weaviate-ts-client": "*", - "web-auth-library": "^1.0.3", - "word-extractor": "*", - "ws": "^8.14.2", - "youtubei.js": "*" - }, - "peerDependenciesMeta": { - "@arcjet/redact": { - "optional": true - }, - "@aws-crypto/sha256-js": { - "optional": true - }, - "@aws-sdk/client-bedrock-agent-runtime": { - "optional": true - }, - "@aws-sdk/client-bedrock-runtime": { - "optional": true - }, - "@aws-sdk/client-dynamodb": { - "optional": true - }, - "@aws-sdk/client-kendra": { - "optional": true - }, - "@aws-sdk/client-lambda": { - "optional": true - }, - "@aws-sdk/client-s3": { - "optional": true - }, - "@aws-sdk/client-sagemaker-runtime": { - "optional": true - }, - "@aws-sdk/client-sfn": { - "optional": true - }, - "@aws-sdk/credential-provider-node": { - "optional": true - }, - "@aws-sdk/dsql-signer": { - "optional": true - }, - "@azure/search-documents": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@browserbasehq/sdk": { - "optional": true - }, - "@clickhouse/client": { - "optional": true - }, - "@cloudflare/ai": { - "optional": true - }, - "@datastax/astra-db-ts": { - "optional": true - }, - "@elastic/elasticsearch": { - "optional": true - }, - "@getmetal/metal-sdk": { - "optional": true - }, - "@getzep/zep-cloud": { - "optional": true - }, - "@getzep/zep-js": { - "optional": true - }, - "@gomomento/sdk": { - "optional": true - }, - "@gomomento/sdk-core": { - "optional": true - }, - "@google-ai/generativelanguage": { - "optional": true - }, - "@google-cloud/storage": { - "optional": true - }, - "@gradientai/nodejs-sdk": { - "optional": true - }, - "@huggingface/inference": { - "optional": true - }, - "@huggingface/transformers": { - "optional": true - }, - "@lancedb/lancedb": { - "optional": true - }, - "@layerup/layerup-security": { - "optional": true - }, - "@libsql/client": { - "optional": true - }, - "@mendable/firecrawl-js": { - "optional": true - }, - "@mlc-ai/web-llm": { - "optional": true - }, - "@mozilla/readability": { - "optional": true - }, - "@neondatabase/serverless": { - "optional": true - }, - "@notionhq/client": { - "optional": true - }, - "@opensearch-project/opensearch": { - "optional": true - }, - "@pinecone-database/pinecone": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@premai/prem-sdk": { - "optional": true - }, - "@qdrant/js-client-rest": { - "optional": true - }, - "@raycast/api": { - "optional": true - }, - "@rockset/client": { - "optional": true - }, - "@smithy/eventstream-codec": { - "optional": true - }, - "@smithy/protocol-http": { - "optional": true - }, - "@smithy/signature-v4": { - "optional": true - }, - "@smithy/util-utf8": { - "optional": true - }, - "@spider-cloud/spider-client": { - "optional": true - }, - "@supabase/supabase-js": { - "optional": true - }, - "@tensorflow-models/universal-sentence-encoder": { - "optional": true - }, - "@tensorflow/tfjs-converter": { - "optional": true - }, - "@tensorflow/tfjs-core": { - "optional": true - }, - "@upstash/ratelimit": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@upstash/vector": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "@vercel/postgres": { - "optional": true - }, - "@writerai/writer-sdk": { - "optional": true - }, - "@xata.io/client": { - "optional": true - }, - "@zilliz/milvus2-sdk-node": { - "optional": true - }, - "apify-client": { - "optional": true - }, - "assemblyai": { - "optional": true - }, - "better-sqlite3": { - "optional": true - }, - "cassandra-driver": { - "optional": true - }, - "cborg": { - "optional": true - }, - "cheerio": { - "optional": true - }, - "chromadb": { - "optional": true - }, - "closevector-common": { - "optional": true - }, - "closevector-node": { - "optional": true - }, - "closevector-web": { - "optional": true - }, - "cohere-ai": { - "optional": true - }, - "convex": { - "optional": true - }, - "crypto-js": { - "optional": true - }, - "d3-dsv": { - "optional": true - }, - "discord.js": { - "optional": true - }, - "dria": { - "optional": true - }, - "duck-duck-scrape": { - "optional": true - }, - "epub2": { - "optional": true - }, - "fast-xml-parser": { - "optional": true - }, - "firebase-admin": { - "optional": true - }, - "google-auth-library": { - "optional": true - }, - "googleapis": { - "optional": true - }, - "hnswlib-node": { - "optional": true - }, - "html-to-text": { - "optional": true - }, - "ignore": { - "optional": true - }, - "interface-datastore": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "it-all": { - "optional": true - }, - "jsdom": { - "optional": true - }, - "jsonwebtoken": { - "optional": true - }, - "llmonitor": { - "optional": true - }, - "lodash": { - "optional": true - }, - "lunary": { - "optional": true - }, - "mammoth": { - "optional": true - }, - "mariadb": { - "optional": true - }, - "mongodb": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "neo4j-driver": { - "optional": true - }, - "notion-to-md": { - "optional": true - }, - "officeparser": { - "optional": true - }, - "pdf-parse": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-copy-streams": { - "optional": true - }, - "pickleparser": { - "optional": true - }, - "playwright": { - "optional": true - }, - "portkey-ai": { - "optional": true - }, - "puppeteer": { - "optional": true - }, - "pyodide": { - "optional": true - }, - "redis": { - "optional": true - }, - "replicate": { - "optional": true - }, - "sonix-speech-recognition": { - "optional": true - }, - "srt-parser-2": { - "optional": true - }, - "typeorm": { - "optional": true - }, - "typesense": { - "optional": true - }, - "usearch": { - "optional": true - }, - "voy-search": { - "optional": true - }, - "weaviate-ts-client": { - "optional": true - }, - "web-auth-library": { - "optional": true - }, - "word-extractor": { - "optional": true - }, - "ws": { - "optional": true - }, - "youtubei.js": { - "optional": true - } - } - }, "api/node_modules/@types/node": { "version": "18.19.14", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.14.tgz", @@ -18441,6 +17893,534 @@ "node": ">=18.0.0" } }, + "node_modules/@langchain/community": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@langchain/community/-/community-0.3.36.tgz", + "integrity": "sha512-4jBB4yqux8CGfCwlBbtXck5qP0yJPwDvtwI4KUN2j/At+zSZn1FyTL11G75ctG2b5GO7u+cR6QatDXIPooJphA==", + "dependencies": { + "@langchain/openai": ">=0.2.0 <0.5.0", + "binary-extensions": "^2.2.0", + "expr-eval": "^2.0.2", + "flat": "^5.0.2", + "js-yaml": "^4.1.0", + "langchain": ">=0.2.3 <0.3.0 || >=0.3.4 <0.4.0", + "langsmith": ">=0.2.8 <0.4.0", + "uuid": "^10.0.0", + "zod": "^3.22.3", + "zod-to-json-schema": "^3.22.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@arcjet/redact": "^v1.0.0-alpha.23", + "@aws-crypto/sha256-js": "^5.0.0", + "@aws-sdk/client-bedrock-agent-runtime": "^3.749.0", + "@aws-sdk/client-bedrock-runtime": "^3.749.0", + "@aws-sdk/client-dynamodb": "^3.749.0", + "@aws-sdk/client-kendra": "^3.749.0", + "@aws-sdk/client-lambda": "^3.749.0", + "@aws-sdk/client-s3": "^3.749.0", + "@aws-sdk/client-sagemaker-runtime": "^3.749.0", + "@aws-sdk/client-sfn": "^3.749.0", + "@aws-sdk/credential-provider-node": "^3.388.0", + "@azure/search-documents": "^12.0.0", + "@azure/storage-blob": "^12.15.0", + "@browserbasehq/sdk": "*", + "@browserbasehq/stagehand": "^1.0.0", + "@clickhouse/client": "^0.2.5", + "@cloudflare/ai": "*", + "@datastax/astra-db-ts": "^1.0.0", + "@elastic/elasticsearch": "^8.4.0", + "@getmetal/metal-sdk": "*", + "@getzep/zep-cloud": "^1.0.6", + "@getzep/zep-js": "^0.9.0", + "@gomomento/sdk": "^1.51.1", + "@gomomento/sdk-core": "^1.51.1", + "@google-ai/generativelanguage": "*", + "@google-cloud/storage": "^6.10.1 || ^7.7.0", + "@gradientai/nodejs-sdk": "^1.2.0", + "@huggingface/inference": "^2.6.4", + "@huggingface/transformers": "^3.2.3", + "@ibm-cloud/watsonx-ai": "*", + "@lancedb/lancedb": "^0.12.0", + "@langchain/core": ">=0.2.21 <0.4.0", + "@layerup/layerup-security": "^1.5.12", + "@libsql/client": "^0.14.0", + "@mendable/firecrawl-js": "^1.4.3", + "@mlc-ai/web-llm": "*", + "@mozilla/readability": "*", + "@neondatabase/serverless": "*", + "@notionhq/client": "^2.2.10", + "@opensearch-project/opensearch": "*", + "@pinecone-database/pinecone": "*", + "@planetscale/database": "^1.8.0", + "@premai/prem-sdk": "^0.3.25", + "@qdrant/js-client-rest": "^1.8.2", + "@raycast/api": "^1.55.2", + "@rockset/client": "^0.9.1", + "@smithy/eventstream-codec": "^2.0.5", + "@smithy/protocol-http": "^3.0.6", + "@smithy/signature-v4": "^2.0.10", + "@smithy/util-utf8": "^2.0.0", + "@spider-cloud/spider-client": "^0.0.21", + "@supabase/supabase-js": "^2.45.0", + "@tensorflow-models/universal-sentence-encoder": "*", + "@tensorflow/tfjs-converter": "*", + "@tensorflow/tfjs-core": "*", + "@upstash/ratelimit": "^1.1.3 || ^2.0.3", + "@upstash/redis": "^1.20.6", + "@upstash/vector": "^1.1.1", + "@vercel/kv": "*", + "@vercel/postgres": "*", + "@writerai/writer-sdk": "^0.40.2", + "@xata.io/client": "^0.28.0", + "@zilliz/milvus2-sdk-node": ">=2.3.5", + "apify-client": "^2.7.1", + "assemblyai": "^4.6.0", + "better-sqlite3": ">=9.4.0 <12.0.0", + "cassandra-driver": "^4.7.2", + "cborg": "^4.1.1", + "cheerio": "^1.0.0-rc.12", + "chromadb": "*", + "closevector-common": "0.1.3", + "closevector-node": "0.1.6", + "closevector-web": "0.1.6", + "cohere-ai": "*", + "convex": "^1.3.1", + "crypto-js": "^4.2.0", + "d3-dsv": "^2.0.0", + "discord.js": "^14.14.1", + "dria": "^0.0.3", + "duck-duck-scrape": "^2.2.5", + "epub2": "^3.0.1", + "fast-xml-parser": "*", + "firebase-admin": "^11.9.0 || ^12.0.0", + "google-auth-library": "*", + "googleapis": "*", + "hnswlib-node": "^3.0.0", + "html-to-text": "^9.0.5", + "ibm-cloud-sdk-core": "*", + "ignore": "^5.2.0", + "interface-datastore": "^8.2.11", + "ioredis": "^5.3.2", + "it-all": "^3.0.4", + "jsdom": "*", + "jsonwebtoken": "^9.0.2", + "llmonitor": "^0.5.9", + "lodash": "^4.17.21", + "lunary": "^0.7.10", + "mammoth": "^1.6.0", + "mariadb": "^3.4.0", + "mongodb": ">=5.2.0", + "mysql2": "^3.9.8", + "neo4j-driver": "*", + "notion-to-md": "^3.1.0", + "officeparser": "^4.0.4", + "openai": "*", + "pdf-parse": "1.1.1", + "pg": "^8.11.0", + "pg-copy-streams": "^6.0.5", + "pickleparser": "^0.2.1", + "playwright": "^1.32.1", + "portkey-ai": "^0.1.11", + "puppeteer": "*", + "pyodide": ">=0.24.1 <0.27.0", + "redis": "*", + "replicate": "*", + "sonix-speech-recognition": "^2.1.1", + "srt-parser-2": "^1.2.3", + "typeorm": "^0.3.20", + "typesense": "^1.5.3", + "usearch": "^1.1.1", + "voy-search": "0.6.2", + "weaviate-ts-client": "*", + "web-auth-library": "^1.0.3", + "word-extractor": "*", + "ws": "^8.14.2", + "youtubei.js": "*" + }, + "peerDependenciesMeta": { + "@arcjet/redact": { + "optional": true + }, + "@aws-crypto/sha256-js": { + "optional": true + }, + "@aws-sdk/client-bedrock-agent-runtime": { + "optional": true + }, + "@aws-sdk/client-bedrock-runtime": { + "optional": true + }, + "@aws-sdk/client-dynamodb": { + "optional": true + }, + "@aws-sdk/client-kendra": { + "optional": true + }, + "@aws-sdk/client-lambda": { + "optional": true + }, + "@aws-sdk/client-s3": { + "optional": true + }, + "@aws-sdk/client-sagemaker-runtime": { + "optional": true + }, + "@aws-sdk/client-sfn": { + "optional": true + }, + "@aws-sdk/credential-provider-node": { + "optional": true + }, + "@aws-sdk/dsql-signer": { + "optional": true + }, + "@azure/search-documents": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@browserbasehq/sdk": { + "optional": true + }, + "@clickhouse/client": { + "optional": true + }, + "@cloudflare/ai": { + "optional": true + }, + "@datastax/astra-db-ts": { + "optional": true + }, + "@elastic/elasticsearch": { + "optional": true + }, + "@getmetal/metal-sdk": { + "optional": true + }, + "@getzep/zep-cloud": { + "optional": true + }, + "@getzep/zep-js": { + "optional": true + }, + "@gomomento/sdk": { + "optional": true + }, + "@gomomento/sdk-core": { + "optional": true + }, + "@google-ai/generativelanguage": { + "optional": true + }, + "@google-cloud/storage": { + "optional": true + }, + "@gradientai/nodejs-sdk": { + "optional": true + }, + "@huggingface/inference": { + "optional": true + }, + "@huggingface/transformers": { + "optional": true + }, + "@lancedb/lancedb": { + "optional": true + }, + "@layerup/layerup-security": { + "optional": true + }, + "@libsql/client": { + "optional": true + }, + "@mendable/firecrawl-js": { + "optional": true + }, + "@mlc-ai/web-llm": { + "optional": true + }, + "@mozilla/readability": { + "optional": true + }, + "@neondatabase/serverless": { + "optional": true + }, + "@notionhq/client": { + "optional": true + }, + "@opensearch-project/opensearch": { + "optional": true + }, + "@pinecone-database/pinecone": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@premai/prem-sdk": { + "optional": true + }, + "@qdrant/js-client-rest": { + "optional": true + }, + "@raycast/api": { + "optional": true + }, + "@rockset/client": { + "optional": true + }, + "@smithy/eventstream-codec": { + "optional": true + }, + "@smithy/protocol-http": { + "optional": true + }, + "@smithy/signature-v4": { + "optional": true + }, + "@smithy/util-utf8": { + "optional": true + }, + "@spider-cloud/spider-client": { + "optional": true + }, + "@supabase/supabase-js": { + "optional": true + }, + "@tensorflow-models/universal-sentence-encoder": { + "optional": true + }, + "@tensorflow/tfjs-converter": { + "optional": true + }, + "@tensorflow/tfjs-core": { + "optional": true + }, + "@upstash/ratelimit": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@upstash/vector": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "@vercel/postgres": { + "optional": true + }, + "@writerai/writer-sdk": { + "optional": true + }, + "@xata.io/client": { + "optional": true + }, + "@zilliz/milvus2-sdk-node": { + "optional": true + }, + "apify-client": { + "optional": true + }, + "assemblyai": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "cassandra-driver": { + "optional": true + }, + "cborg": { + "optional": true + }, + "cheerio": { + "optional": true + }, + "chromadb": { + "optional": true + }, + "closevector-common": { + "optional": true + }, + "closevector-node": { + "optional": true + }, + "closevector-web": { + "optional": true + }, + "cohere-ai": { + "optional": true + }, + "convex": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "d3-dsv": { + "optional": true + }, + "discord.js": { + "optional": true + }, + "dria": { + "optional": true + }, + "duck-duck-scrape": { + "optional": true + }, + "epub2": { + "optional": true + }, + "fast-xml-parser": { + "optional": true + }, + "firebase-admin": { + "optional": true + }, + "google-auth-library": { + "optional": true + }, + "googleapis": { + "optional": true + }, + "hnswlib-node": { + "optional": true + }, + "html-to-text": { + "optional": true + }, + "ignore": { + "optional": true + }, + "interface-datastore": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "it-all": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "jsonwebtoken": { + "optional": true + }, + "llmonitor": { + "optional": true + }, + "lodash": { + "optional": true + }, + "lunary": { + "optional": true + }, + "mammoth": { + "optional": true + }, + "mariadb": { + "optional": true + }, + "mongodb": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "neo4j-driver": { + "optional": true + }, + "notion-to-md": { + "optional": true + }, + "officeparser": { + "optional": true + }, + "pdf-parse": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-copy-streams": { + "optional": true + }, + "pickleparser": { + "optional": true + }, + "playwright": { + "optional": true + }, + "portkey-ai": { + "optional": true + }, + "puppeteer": { + "optional": true + }, + "pyodide": { + "optional": true + }, + "redis": { + "optional": true + }, + "replicate": { + "optional": true + }, + "sonix-speech-recognition": { + "optional": true + }, + "srt-parser-2": { + "optional": true + }, + "typeorm": { + "optional": true + }, + "typesense": { + "optional": true + }, + "usearch": { + "optional": true + }, + "voy-search": { + "optional": true + }, + "weaviate-ts-client": { + "optional": true + }, + "web-auth-library": { + "optional": true + }, + "word-extractor": { + "optional": true + }, + "ws": { + "optional": true + }, + "youtubei.js": { + "optional": true + } + } + }, + "node_modules/@langchain/community/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@langchain/core": { "version": "0.3.42", "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.42.tgz", @@ -18857,6 +18837,58 @@ "@lezer/common": "^1.0.0" } }, + "node_modules/@librechat/agents": { + "version": "2.3.94", + "resolved": "https://registry.npmjs.org/@librechat/agents/-/agents-2.3.94.tgz", + "integrity": "sha512-/hcojcTJiWADtcDMbgtNv8LZJnimORfDw0DPllqS+8rt2+PPhOEvBFoNFXibUWyW38S35CT9PQJCFIkidHfMsQ==", + "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.14", + "@langchain/aws": "^0.1.7", + "@langchain/community": "^0.3.35", + "@langchain/core": "^0.3.40", + "@langchain/deepseek": "^0.0.1", + "@langchain/google-genai": "^0.1.11", + "@langchain/google-vertexai": "^0.2.2", + "@langchain/langgraph": "^0.2.49", + "@langchain/mistralai": "^0.0.26", + "@langchain/ollama": "^0.1.5", + "@langchain/openai": "^0.4.2", + "@langchain/xai": "^0.0.2", + "@smithy/eventstream-codec": "^2.2.0", + "@smithy/protocol-http": "^3.0.6", + "@smithy/signature-v4": "^2.0.10", + "@smithy/util-utf8": "^2.0.0", + "dotenv": "^16.4.7", + "https-proxy-agent": "^7.0.6", + "nanoid": "^3.3.7" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@librechat/agents/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@librechat/agents/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/@librechat/backend": { "resolved": "api", "link": true From 1d29c1efa64946683cfb80e0571c38112f0ffc56 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 09:02:33 +0100 Subject: [PATCH 007/123] =?UTF-8?q?=F0=9F=8C=8D=20i18n:=20Update=20transla?= =?UTF-8?q?tion.json=20with=20latest=20translations=20(#6505)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- client/src/locales/en/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/locales/en/translation.json b/client/src/locales/en/translation.json index 0fd7ac01e4..6e5730050f 100644 --- a/client/src/locales/en/translation.json +++ b/client/src/locales/en/translation.json @@ -848,4 +848,4 @@ "com_ui_zoom": "Zoom", "com_user_message": "You", "com_warning_resubmit_unsupported": "Resubmitting the AI message is not supported for this endpoint." -} +} \ No newline at end of file From c4fea9cd79686bd675256be8d336d462873450c3 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Mon, 24 Mar 2025 09:03:46 -0400 Subject: [PATCH 008/123] =?UTF-8?q?=F0=9F=94=83=20refactor:=20Allow=20stre?= =?UTF-8?q?aming=20for=20o1=20models=20in=20OpenAIClient=20and=20agent=20r?= =?UTF-8?q?uns=20(#6509)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/app/clients/OpenAIClient.js | 8 -------- api/server/controllers/agents/run.js | 4 ---- 2 files changed, 12 deletions(-) diff --git a/api/app/clients/OpenAIClient.js b/api/app/clients/OpenAIClient.js index d1184e5f7b..ad467fa3a9 100644 --- a/api/app/clients/OpenAIClient.js +++ b/api/app/clients/OpenAIClient.js @@ -1346,14 +1346,6 @@ ${convo} let streamResolve; if ( - this.isOmni === true && - (this.azure || /o1(?!-(?:mini|preview)).*$/.test(modelOptions.model)) && - !/o3-.*$/.test(this.modelOptions.model) && - modelOptions.stream - ) { - delete modelOptions.stream; - delete modelOptions.stop; - } else if ( (!this.isOmni || /^o1-(mini|preview)/i.test(modelOptions.model)) && modelOptions.reasoning_effort != null ) { diff --git a/api/server/controllers/agents/run.js b/api/server/controllers/agents/run.js index 45fbf56b49..dfc5444c5a 100644 --- a/api/server/controllers/agents/run.js +++ b/api/server/controllers/agents/run.js @@ -51,10 +51,6 @@ async function createRun({ ) { reasoningKey = 'reasoning'; } - if (/o1(?!-(?:mini|preview)).*$/.test(llmConfig.model)) { - llmConfig.streaming = false; - llmConfig.disableStreaming = true; - } /** @type {StandardGraphConfig} */ const graphConfig = { From 7f29f2f676ac61007416c2afe33bd3bc5af952d7 Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+berry-13@users.noreply.github.com> Date: Tue, 25 Mar 2025 23:50:58 +0100 Subject: [PATCH 009/123] =?UTF-8?q?=F0=9F=8E=A8=20feat:=20UI=20Refresh=20f?= =?UTF-8?q?or=20Enhanced=20UX=20(#6346)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ✨ feat: Add Expand Chat functionality and improve UI components * ✨ feat: Introduce Chat Badges feature with editing capabilities and UI enhancements * ✨ feat: re-implement file attachment functionality with new components and improved UI * ✨ feat: Enhance BadgeRow component with drag-and-drop functionality and add animations for better user experience * ✨ feat: Add useChatBadges hook and enhance Badge component with animations and toggle functionality * feat: Improve Add/Delete Badges + style and bug fixes * ✨ feat: Refactor EditBadges component and optimize useChatBadges hook for improved performance and readability * ✨ feat: Add type definition for LucideIcon in EditBadges component * refactor: Clean up BadgeRow component by removing outdated comment and improving code readability * refactor: Rename app-icon class to badge-icon for consistency and improve badge styling * feat: Add Center Chat Input toggle and update related components for improved UI/UX * refactor: Simplify ChatView and MessagesView components for improved readability and performance * refactor: Improve layout and positioning of scroll button in MessagesView component * refactor: Adjust scroll button position in MessagesView component for better visibility * refactor: Remove redundant background class from Badge component for cleaner styling * feat: disable chat badges * refactor: adjust positioning of scroll button and popover for improved layout * refactor: simplify class names in ChatForm and RemoveFile components for cleaner code * refactor: move Switcher to HeaderOptions from SidePanel * fix(Landing): duplicate description * feat: add SplitText component for animated text display and update Landing component to use it * feat(Chat): add ConversationStarters component and integrate it into ChatView; remove ConvoStarter component * feat(Chat): enhance Message component layout and styling for improved readability * feat(ControlCombobox, Select): enhance styling and add animation for improved UI experience * feat(Chat): update Header and HeaderNewChat components for improved layout and styling * feat(Chat): add ModelDropdown (now includes both endpoint and model) and refactor Menu components for improved UI * feat(ModelDropdown): add Agent Select; removed old AgentSwitcher components * feat(ModelDropdown): add settings button for user key configuration * fix(ModelDropdown): the model dropdown wasn't opening automatically when opening the endpoint one * refactor(Chat): remove unused EndpointsMenu and related components to streamline codebase * feat: enhance greeting message and improve accessibility fro ModelDropdown * refactor(Endpoints): add new hooks and components for endpoint management * feat(Endpoint): add support for modelSpecs * feat(Endpoints): add mobile support * fix: type issues * fix(modelSpec): type issue * fix(EndpointMenuDropdown): double overflow scroller in mobile model list * fix: search model on mobile * refactor: Endpoint/Model/modelSpec dropdown * refactor: reorganize imports in Endpoint components * refactor: remove unused translation keys from English locale * BREAKING: moving to ariakit with new CustomMenu * refactor: remove unnecessary comments * refactor: remove EndpointItem, ModelDropdownButton, SpecIcon, and SpecItem components * 🔧 fix: AI Icon bump when regenerating message * wip: chat UI refactoring, fix issues * chore: add recent update to useAutoSave * feat: add access control for agent permissions in useMentions hook * refactor: streamline ModelSelector by removing unused endpoints logic * refactor: enhance ModelSelector and context by integrating endpointsConfig and improving type usage * feat: update ModelSelectorContext to utilize conversation data for initial state * feat: add selector effects for synced endpoint handling * feat: add guard clause for conversation endpoint in useSelectorEffects hook * fix: safely call onSelectMention and add autofocus to mention input * chore: typing * refactor: ModelSelector to streamline key dialog handling and improve endpoint rendering * refactor: extract SettingsButton component for cleaner endpoint item rendering * wip: first pass, expand set api key * wip: first pass, expanding set key * refactor: update EndpointItem styles for improved layout and hover effects * refactor: adjust padding in EndpointItem for improved layout consistency * refactor: update preset structure in useSelectMention to include spec as null * refactor: rename setKeyDialogOpen to onOpenChange for clarity and consistency, bring focus back to button that opened dialog * feat: add SpecIcon component for dynamic model spec icons in menu, adjust icon styling * refactor: update getSelectedIcon to accept additional parameters and improve icon rendering logic * fix: adjust padding in MessageRender for improved layout * refactor: remove inline style for menu width in CustomMenu component * refactor: enhance layout and styling in ModelSpecItem component for better responsiveness * refactor: update getDefaultModelSpec to accept startupConfig and improve model spec retrieval logic * refactor: improve key management and default values in ModelSelector and related components * refactor: adjust menu width and improve responsiveness in CustomMenu and EndpointItem components * refactor: enhance focus styles and responsiveness in EndpointItem component * refactor: improve layout and spacing in Header and ModelSelector components for better responsiveness * refactor: adjust button styles for consistency and improved layout in AddMultiConvo and PresetsMenu components * fix: initial fix of assistant names * fix: assistants handling * chore: update version of librechat-data-provider to 0.7.75 and add 'spec' to excludedKeys * fix: improve endpoint filtering logic based on interface configuration and access rights * fix: remove unused HeaderOptions import and set spec to null in presets and mentions * fix: ensure currentExample is always an object when updating examples * fix: update interfaceConfig checks to ensure modelSelect is considered for rendering components * fix: update model selection logic to consider interface configuration when prioritizing model specs * fix: add missing localizations * fix: remove unused agent and assistant selection translations * fix: implement debounced state updates for selected values in useSelectorEffects * style: minor style changes related to the ModelSelector * fix: adjust maximum height for popover and set fixed height for model item * fix: update placeholders for model and endpoint search inputs * fix: refactor MessageRender and ContentRender components to better match each other * fix: remove convo fallback for iconURL in MessageRender and ContentRender components * fix: update handling of spec, iconURL, and modelLabel in conversation presets, to allow better interchangeability * fix: replace chatGptLabel with modelLabel in OpenAI settings configuration (fully deprecate chatGptLabel) * fix: remove console log for assistantNames in useEndpoints hook * refactor: add cleanInput and cleanOutput options to default conversation handling * chore: update bun.lockb * fix: set default value for showIconInHeader in getSelectedIcon function * refactor: enhance error handling in message processing when latest message has existing content blocks * chore: allow import/no-cycle for messages * fix: adjust flex properties in BookmarkMenu for better layout * feat: support both 'prompt' and 'q' as query parameters in useQueryParams hook * feat: re-enable Badges components * refactor: disable edit badge component * chore: rename assistantMap to assistantsMap for consistency * chore: rename assistantMap to assistantsMap for consistency in Mention component * feat: set staleTime for various queries to improve data freshness * feat: add spec field to tQueryParamsSchema for model specification * feat: enhance useQueryParams to handle model specs --------- Co-authored-by: Danny Avila --- api/app/clients/BaseClient.js | 3 +- bun.lockb | Bin 983152 -> 1131200 bytes client/package.json | 3 +- client/src/common/index.ts | 1 + client/src/common/selector.ts | 24 ++ client/src/common/types.ts | 39 +- client/src/components/Chat/AddMultiConvo.tsx | 4 +- client/src/components/Chat/ChatView.tsx | 37 +- client/src/components/Chat/ConvoStarter.tsx | 17 - client/src/components/Chat/Footer.tsx | 6 +- client/src/components/Chat/Header.tsx | 14 +- .../components/Chat/Input/AudioRecorder.tsx | 6 +- client/src/components/Chat/Input/BadgeRow.tsx | 357 +++++++++++++++++ client/src/components/Chat/Input/ChatForm.tsx | 368 ++++++++++-------- .../components/Chat/Input/CollapseChat.tsx | 46 ++- .../Chat/Input/ConversationStarters.tsx | 85 ++++ .../src/components/Chat/Input/EditBadges.tsx | 87 +++++ .../Chat/Input/Files/AttachFile.tsx | 78 ++-- .../Chat/Input/Files/AttachFileChat.tsx | 44 +++ .../Chat/Input/Files/AttachFileMenu.tsx | 33 +- .../Chat/Input/Files/FileFormChat.tsx | 30 ++ .../Chat/Input/Files/FileFormWrapper.tsx | 80 ---- .../Chat/Input/Files/RemoveFile.tsx | 2 +- .../components/Chat/Input/HeaderOptions.tsx | 29 +- client/src/components/Chat/Input/Mention.tsx | 12 +- .../components/Chat/Input/PromptsCommand.tsx | 8 +- .../src/components/Chat/Input/SendButton.tsx | 4 +- .../src/components/Chat/Input/StopButton.tsx | 2 +- .../components/Chat/Input/TemporaryChat.tsx | 38 -- .../components/Chat/Input/TextareaHeader.tsx | 2 +- client/src/components/Chat/Landing.tsx | 230 +++++------ .../components/Chat/Menus/BookmarkMenu.tsx | 2 +- .../Chat/Menus/Endpoints/CustomMenu.tsx | 246 ++++++++++++ .../Chat/Menus/Endpoints/DialogManager.tsx | 34 ++ .../Chat/Menus/Endpoints/MenuItem.tsx | 221 ----------- .../Chat/Menus/Endpoints/MenuItems.tsx | 59 --- .../Chat/Menus/Endpoints/ModelSelector.tsx | 95 +++++ .../Menus/Endpoints/ModelSelectorContext.tsx | 224 +++++++++++ .../Endpoints/components/EndpointItem.tsx | 174 +++++++++ .../components/EndpointModelItem.tsx | 97 +++++ .../Endpoints/components/ModelSpecItem.tsx | 74 ++++ .../Endpoints/components/SearchResults.tsx | 253 ++++++++++++ .../components}/SpecIcon.tsx | 12 +- .../Chat/Menus/Endpoints/components/index.ts | 4 + .../components/Chat/Menus/Endpoints/utils.ts | 162 ++++++++ .../components/Chat/Menus/EndpointsMenu.tsx | 105 ----- .../components/Chat/Menus/HeaderNewChat.tsx | 17 +- .../Chat/Menus/Models/MenuButton.tsx | 66 ---- .../Chat/Menus/Models/ModelSpec.tsx | 153 -------- .../Chat/Menus/Models/ModelSpecs.tsx | 44 --- .../Chat/Menus/Models/ModelSpecsMenu.tsx | 168 -------- .../Chat/Menus/Presets/PresetItems.tsx | 4 +- .../src/components/Chat/Menus/PresetsMenu.tsx | 2 +- client/src/components/Chat/Menus/index.ts | 2 - .../components/Chat/Messages/Content/Part.tsx | 8 +- .../components/Chat/Messages/MessageParts.tsx | 98 +++-- .../components/Chat/Messages/MessagesView.tsx | 112 +++--- .../components/Chat/Messages/MultiMessage.tsx | 2 +- .../Chat/Messages/ui/MessageRender.tsx | 159 ++++---- client/src/components/Chat/Presentation.tsx | 8 - client/src/components/Endpoints/ConvoIcon.tsx | 2 +- .../src/components/Endpoints/ConvoIconURL.tsx | 29 +- client/src/components/Endpoints/Icon.tsx | 72 ++-- .../Endpoints/MessageEndpointIcon.tsx | 4 +- .../src/components/Endpoints/MinimalIcon.tsx | 2 +- client/src/components/Endpoints/URLIcon.tsx | 52 ++- .../Input/ModelSelect/Anthropic.tsx | 2 - .../components/Input/ModelSelect/ChatGPT.tsx | 2 - .../components/Input/ModelSelect/Google.tsx | 2 - .../components/Input/ModelSelect/OpenAI.tsx | 2 - .../Input/ModelSelect/TemporaryChat.tsx | 65 ---- .../components/Messages/Content/CodeBlock.tsx | 2 +- .../src/components/Messages/ContentRender.tsx | 129 +++--- .../components/Messages/ScrollToBottom.tsx | 10 +- client/src/components/Nav/NewChat.tsx | 2 +- .../components/Nav/SettingsTabs/Beta/Beta.tsx | 4 + .../Nav/SettingsTabs/Beta/ChatBadges.tsx | 22 ++ .../Nav/SettingsTabs/Chat/CenterChatInput.tsx | 34 ++ .../components/Nav/SettingsTabs/Chat/Chat.tsx | 4 + .../components/SidePanel/AgentSwitcher.tsx | 88 ----- .../SidePanel/Agents/AgentConfig.tsx | 2 +- .../SidePanel/AssistantSwitcher.tsx | 92 ----- .../components/SidePanel/ModelSwitcher.tsx | 58 --- .../SidePanel/Parameters/settings.ts | 4 +- client/src/components/SidePanel/SidePanel.tsx | 18 +- client/src/components/SidePanel/Switcher.tsx | 17 - client/src/components/svg/BirthdayIcon.tsx | 2 +- client/src/components/ui/Badge.tsx | 83 ++++ client/src/components/ui/ControlCombobox.tsx | 10 +- client/src/components/ui/Select.tsx | 8 +- client/src/components/ui/SplitText.tsx | 102 +++++ client/src/components/ui/index.ts | 2 + client/src/data-provider/Agents/queries.ts | 1 + client/src/data-provider/Endpoints/queries.ts | 1 + client/src/data-provider/queries.ts | 2 + .../hooks/Conversations/useDefaultConvo.ts | 49 ++- client/src/hooks/Conversations/usePresets.ts | 13 +- .../hooks/Conversations/useSetIndexOptions.ts | 2 +- .../Endpoints => hooks/Endpoint}/Icons.tsx | 0 .../Endpoint}/UnknownIcon.tsx | 0 client/src/hooks/Endpoint/index.ts | 4 + client/src/hooks/Endpoint/useEndpoints.ts | 182 +++++++++ client/src/hooks/Endpoint/useKeyDialog.ts | 38 ++ client/src/hooks/Endpoint/useModels.ts | 277 +++++++++++++ .../src/hooks/Endpoint/useSelectorEffects.ts | 96 +++++ client/src/hooks/Input/useMentions.ts | 38 +- client/src/hooks/Input/useQueryParams.ts | 42 +- client/src/hooks/Input/useSelectMention.ts | 44 ++- client/src/hooks/SSE/useEventHandlers.ts | 94 ++++- client/src/hooks/index.ts | 9 +- client/src/hooks/useChatBadges.ts | 35 ++ client/src/hooks/useNewConvo.ts | 5 +- client/src/locales/en/translation.json | 28 +- client/src/routes/ChatRoute.tsx | 9 +- client/src/store/index.ts | 1 + client/src/store/misc.ts | 21 +- client/src/store/settings.ts | 2 + client/src/style.css | 269 +++++++++++-- client/src/utils/endpointFilter.ts | 73 ++++ client/src/utils/endpoints.ts | 30 +- client/src/utils/index.ts | 1 + client/tailwind.config.cjs | 1 + package-lock.json | 75 +++- packages/data-provider/package.json | 2 +- packages/data-provider/src/config.ts | 1 + packages/data-provider/src/schemas.ts | 2 + .../data-provider/src/types/assistants.ts | 2 +- 127 files changed, 4507 insertions(+), 2163 deletions(-) create mode 100644 client/src/common/selector.ts delete mode 100644 client/src/components/Chat/ConvoStarter.tsx create mode 100644 client/src/components/Chat/Input/BadgeRow.tsx create mode 100644 client/src/components/Chat/Input/ConversationStarters.tsx create mode 100644 client/src/components/Chat/Input/EditBadges.tsx create mode 100644 client/src/components/Chat/Input/Files/AttachFileChat.tsx create mode 100644 client/src/components/Chat/Input/Files/FileFormChat.tsx delete mode 100644 client/src/components/Chat/Input/Files/FileFormWrapper.tsx delete mode 100644 client/src/components/Chat/Input/TemporaryChat.tsx create mode 100644 client/src/components/Chat/Menus/Endpoints/CustomMenu.tsx create mode 100644 client/src/components/Chat/Menus/Endpoints/DialogManager.tsx delete mode 100644 client/src/components/Chat/Menus/Endpoints/MenuItem.tsx delete mode 100644 client/src/components/Chat/Menus/Endpoints/MenuItems.tsx create mode 100644 client/src/components/Chat/Menus/Endpoints/ModelSelector.tsx create mode 100644 client/src/components/Chat/Menus/Endpoints/ModelSelectorContext.tsx create mode 100644 client/src/components/Chat/Menus/Endpoints/components/EndpointItem.tsx create mode 100644 client/src/components/Chat/Menus/Endpoints/components/EndpointModelItem.tsx create mode 100644 client/src/components/Chat/Menus/Endpoints/components/ModelSpecItem.tsx create mode 100644 client/src/components/Chat/Menus/Endpoints/components/SearchResults.tsx rename client/src/components/Chat/Menus/{Models => Endpoints/components}/SpecIcon.tsx (77%) create mode 100644 client/src/components/Chat/Menus/Endpoints/components/index.ts create mode 100644 client/src/components/Chat/Menus/Endpoints/utils.ts delete mode 100644 client/src/components/Chat/Menus/EndpointsMenu.tsx delete mode 100644 client/src/components/Chat/Menus/Models/MenuButton.tsx delete mode 100644 client/src/components/Chat/Menus/Models/ModelSpec.tsx delete mode 100644 client/src/components/Chat/Menus/Models/ModelSpecs.tsx delete mode 100644 client/src/components/Chat/Menus/Models/ModelSpecsMenu.tsx delete mode 100644 client/src/components/Input/ModelSelect/TemporaryChat.tsx create mode 100644 client/src/components/Nav/SettingsTabs/Beta/ChatBadges.tsx create mode 100644 client/src/components/Nav/SettingsTabs/Chat/CenterChatInput.tsx delete mode 100644 client/src/components/SidePanel/AgentSwitcher.tsx delete mode 100644 client/src/components/SidePanel/AssistantSwitcher.tsx delete mode 100644 client/src/components/SidePanel/ModelSwitcher.tsx delete mode 100644 client/src/components/SidePanel/Switcher.tsx create mode 100644 client/src/components/ui/Badge.tsx create mode 100644 client/src/components/ui/SplitText.tsx rename client/src/{components/Chat/Menus/Endpoints => hooks/Endpoint}/Icons.tsx (100%) rename client/src/{components/Chat/Menus/Endpoints => hooks/Endpoint}/UnknownIcon.tsx (100%) create mode 100644 client/src/hooks/Endpoint/index.ts create mode 100644 client/src/hooks/Endpoint/useEndpoints.ts create mode 100644 client/src/hooks/Endpoint/useKeyDialog.ts create mode 100644 client/src/hooks/Endpoint/useModels.ts create mode 100644 client/src/hooks/Endpoint/useSelectorEffects.ts create mode 100644 client/src/hooks/useChatBadges.ts create mode 100644 client/src/utils/endpointFilter.ts diff --git a/api/app/clients/BaseClient.js b/api/app/clients/BaseClient.js index 44ccc926db..fd1a051832 100644 --- a/api/app/clients/BaseClient.js +++ b/api/app/clients/BaseClient.js @@ -879,13 +879,14 @@ class BaseClient { : await getConvo(this.options.req?.user?.id, message.conversationId); const unsetFields = {}; + const exceptions = new Set(['spec', 'iconURL']); if (existingConvo != null) { this.fetchedConvo = true; for (const key in existingConvo) { if (!key) { continue; } - if (excludedKeys.has(key)) { + if (excludedKeys.has(key) && !exceptions.has(key)) { continue; } diff --git a/bun.lockb b/bun.lockb index e85113bbcec57847255941c8e9ceb2cb5e99c809..61118178fd40c4cda7f4ba0f1055623a2ae2722e 100755 GIT binary patch literal 1131200 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%0A79Z*}w9Ttn$~viE>b1ONq+t!DJ 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

ILMCC6NQN>-uREit}BXh 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�HNf=(+|9Op{0#l166$5?{r z-xGyjM^(SAo7FAB!o%v5M|}0=DQ;OK@XKm>N};&U<0*5m>ILF;0bSQjo%?xO+`JZ# z-~Higu>Q@BsW$GnDjjXcxt>1vN)eS*Fw47?ibMYYG$t~{v|g}mk00I zqAYIz3*iaD=)0igXP*iJFQ~i_DjHv`%!a|a}uGE4kGxG@X65{sWJe`FlFbufOdCByT2vCQ1O`eiq26+sj@Rhr+;{)q!`VKcGD zw5DakF5oRHAQ+9z1RxKdpu1|*ScurvL5-$<(8?gG z=FIA_pDNZ*sj4tCC6^QK$%ORMT3+EN^2bFt66%7W*;cr?J~>}(M&;jMcryV8L~xyX zf$oN8&mxx8N!p&nxcA7RM=#8|yKVV#c@ySfoQkP0^rL&mtJ9Z_)hrj=BF~x^pG9p% zcoC6-Zo@~?^1-^GuVCHN8+1LaO-Y6BQ&E$ze_2QHp42kuaP!XzM8Vm-nbNmYkY66R z56^@uiSX0%slG^cc|m*$^l;LgtrXTIkS4-B83X4Dd_ed5G6scU)3jw~r7OyEA)LGe zK`!+-I?Ek{Q81! zkVi;~^?k~%Imv=@qNo(RH9?=w#77^!I@|)}7;NIY3Sw>EiA9l& zWL(SMm0~z7RbG)F1Fj$Fa_q(mPs8Js1aNko$#`tA3@Z8gwNs>v-mTFR9;3x(PG!O| zLI?kWv1KT&#uP1SGi>jfT4gck{HiFtU>yD+47mQF>+2#_GYD_gK%q(O#8-F|fyZu^vs3?NH1oqzoK$kTU zd&Jmsyd0s8*lx;`m-dFgBwm}o%Y;J_&1P_9b=34%=vSFypNKI-In+jp`nN=^vcimF z6B*MvoJjiW)k`4Wub?|9yfJ2=Hc3c9XIevdJ1VtnXRav6pNfIvf+w%QD}v2Vv?wT; zNVxxnZDv&FQldsqmMZTdYE4cG7vGYT~2m1jHK(x?;CZY5uNL zA>vDu^l+@2Ke=_sX$L^^yKTYqD#9cFV6y;_3qchH?J7IPcJhHU?V^C66=eN>j2&G)H&1E>0D#^}ypf>05p4lO@ZMZy17#*X z@)?iQy)tU*lOgF@nI?u1#ONJDBc$}uwS?+LWavEiAcy18PZi=!UBT~X34g+q-Y&Wx z05=MBJ2Y1*d1=(JGMdD_%e?G=X~}r<2LG#PB=WHQLbXmFgMEl*mX5q^u%kse9g3kq zKE`l@Oe9{6b1VIm>=U0$3gAYAZZXxy?egP&bos`~!`Lgn6bvJw7Tc>}+WE!q(eLsw zg3rN_vHqNnq_u)gRSOFW_t~hHqqvcaPom}pnws<1TYwt_y768)uv)aFfe;W30u#e9 zRpc{Y`-eVXDrY4x?*7W7L@k|BD_YP2@5>2CJ`ttQ`5gWGGDs795oR zli}$~M;<1>l0lAG$t2*$fi6CS39;Cvl;DWEayFo!RDO=$^Qi0c+maZGf6u@X?*xKY%E)~*n49V zhSY)3v-T=y|9W?FvX^|5+2yU36PrjfDH};;)5e&=}d+@dG!K z@U^)xT8LxuKC6UGj09-!Tf#31zUXx4ZM8KdLX+6DRM43O-k__ct2t?=+dq# zT-y|y;-DDlcK_2#4E2J(5cF6#l&{MTW_Py>W4-_I0|ln_#!$SXcbhK4brm2-B@wC_xS<$$lZmEl zl9#7CqlRC>b(RLY=axxU%!=p70uL6F#-;XD=nn1W*M;uZ@|aYfO95j?^f* zHLb>xsku!mH4Bv&Hj#msxXvDIzw=g1fpwM+x_1%sQ=Y!%k8vsX+OE#0)`ag23f-sr z4uxg#I^l-o%=&82o2m($<8)}3#U)7Em8)1?%3nwZsw4hk8${M=GXQP|=;{=87;O*C zp{h6y_9F>xm}iKMa<9xRjT?H2=hF~9D#kv{?jI>j zyAnP-b1>da(AB$HN{ZF{EQw#wL)+A|nOBdjM@S|8LHumtg=G=PHz&Ntw`}iNz;af! z(dB9-bV;r|%3D2?aH%z!{$|6kLI{XA3v_YkSQaIAT?+-C+ssZSq$u8izArgRmr&DvwaUEt;7aN+;M(8Z0YR+z&T-ArMiA_)1bdr)J4U4(G#)IH_i zy_sR6@y35OWU8HbKO$tVZUe}}PteUI9Icir+RUolZ4ng~6h-B?U0?1E)Y3I@mA7e3 zv0S!YTkEpl7{R~bk(oGg6MT5pf}C|^tdsdS`&idfYf=rk1)!@^u#KL$tJ{tF-^EsI z{*Lsx9Q-{JPv8C&k$o?`Q}_c_&9XI{bmv9qG2Vl?00Z4YvnN{vEcU(!KoW)D?is1lrFFg691E> zbiZERUEOL^IsUJ@%lW#RI|LC}ZyNv?+`610e{P3=1?1ru=wd&^7iLzs(v+jVA1ltz z39bFUCXnQQpT=eU?!U`Wwj3pUXl|3l2p;3?O}q52yWF|VJ7wkm2wJX@ijGkY-&hkN?T%D2-F`THp-Ne;Rx4cJpjoM9dYz#~Dxte8t8XQ;T9}v+JhxZ| zx(V9f7O1iMdmERc1>6FZ{aNL=loONNzsy_oWwrXqJgnc(O!uVgeq;aE%=VzE$NsUW znVYAt!O>y)j)aTC2>g902VGAS4w|&a8Yz|Brufp&mqJwuMy%t4ylTW_`jRNO$qaTL z`}U8eN1~t5mo#{JRvaJQ(quvpO(9z68u}=kPQi6n0lJiNVH`nc#>cXY4TceFy1`h8 zP#H+ad>a`PrbS2|dF4Ism0AM`o?RnPffuui7WMGSfh||>D7DAbFYWlCk-+|OCFshJ z{gBvwVAH@b-Vr2wZGqB?IP?v2fTmYFZCvW!Zza!l~e=(RX zGS?%t55B4FmZawc>!AvCn^zCv_TlDLtV#4JPz5d+1Z%ww?>i=n>ouVk1Ww%op+`mb|M$NDS>!@gYFw- z_2rdk+OpgnW6}Az+Jgp%(VAH}ROI+=hJt#hBpYqX}XfNr2L{MDyrIXBm{t;A-O()oPE%=Bzy0VSU)jFoA&Y1#JQzk@CD=`{ti;aLqNALCsh-a61Vfw^OR zA}^q356Ajg*=X7j?h!pqRTu?-7{}6ML1LIeGv?={&NR!>GO_{(g)U#nh_ryZ_P~9T z6kqM~rt=-#7uJLBbP&Ds2;SA_-C2p&RJJjGoeTU~x;WxM!3Xl@f`lA%0$8#OH0sE>mBJqjj*kWN9d4v>dN&`p^_Rxv%p zCL8u2DT2N*GeL5T*r+fKm{pcL}YbF!oYU&`T zE3kIt5jJgW(|d#pGcx~FN&dX5IR!#axgUd?OG+&YzorKy=$yJ z#7&bB3rY#*5Qdk+e2w%_neA#6aN9sP-HTL0FLqC+p?f3!`%Ula^xCVI-(hQA4E)V6 zL}sQZ=cB%*2>-L;t$0Zvu5mv`$A&zEhs9*M6))d(7@`QUF4qpas{O{Ax8JvD`7-M7 zzDO36e&-Z5k;K{TdE&O7E%Up^YeQzAv4}H@n;(2!spBq@$=61Ffq*Mv5g<8u5_6IT z=g&Gomo5w$;k`-d<xXTF5;tAARI!=~M#8#)M)o8KTBWrKT-(7#jAEdA!4p3pW!)tK7NZ&6M}K ziFyc%_Zy#zCMMYv?$omp;P!wnbZJ1*#bW@u0kp>S8EsK7PrCW}Ctq^%EOB9RmDRwpV{N7(!0iRy20@g)(~rTq(vq(C(y@(&R{2LpEn40Javsok2^t_Q}2BV0^?yxLGWK}EwdjVPuvq?OvHti?eJhY?8 z@8qfP^8DO#$s0Lh!MT-w&}|cX;;DQ^!l5!`fG(BzXms`@GmL>M&%K_QV+LO?8v_r$ ze&f$QIWLS7;NUSgD#Ei*1mkM8;U~P>Mdi?dGyudq0J_S!AGJQ?Y!w8EOSM1$ag4d8 z7fPKoDY~I#iqL{SBGyZ!%*E1tQD@EkjsO8H zCgG0W7G9QJK{__z4uNh&H=%$?!runt;Kn5z+C_;0=sKARS^PLPU6(A26<_sSYTbgLzloKYda|Y3V}HHWUe+iB7ht<{( zc~RFSq3O(E)c1bVoNr9nJYbl>69mXhHBm-o(2^ zj}9T<~T*Xj3j(JfPNdPlQ5gp}8a)Kzav`4Jp>D1ivQU+5_%5=nC!yHwzw& z*RUl?^>zF^6zr>?WyYmLz3AJNPV9n8=XI>qIn5hVx)G%D<+H zMtLz{C=a+3pu3LhdzsZcLgea;?Od2TcS)vPu*+gLFrGtI;d-m7aABqCXME%l&0i&3 zj^MHD%SMqZY-l5Buj#-Qtogf38QjlLg09Re$_nMauLP5t&Bvq&%(2r5q;dA!lU7ys zL+4(O#%itJQ3@w>LDF20gPg!ml-;gWRSrBTwG|;>C8>CcZ^3=Q6zD$ol%ilWd{%r6 zBSjS|e2*y&8_x}A&SjtD%z{gtBX-Sk92kxvF40mm`A=qLZ=t;E-!_!_I7dgd-9k<@ zgg^Mbj%m=fY`Tn0ug3rH^D0@4t&P+5j`zBKGcygN&WG06WM#an@sZa0%-wos6KLHk z{O<49A>wa>#x6EU;j3=iP6t=O{@V=bdPHT-6He+sF%?K{PgF$9?!E8uG_sk96xyC) zanDw)mcB)mFaBPI%=u68Utj4=#wa2|XXbkXAxj3MH}mPMTK z2HhQ&__r@T%q^%yQvMjHeLQu|SIC1~;3D5KMt=Jea?D@wfy15L&rx-^iBfhvS5cVh-Cl4Wj}l1pPoy zF)}H)7P@16lmVY_gYV^Gz&5zwoCn=U>Wr(RaOR*gp38Vg8VnLzc`0j$pUHa`Vvt>Y zf4JWYN0X9G9BVPd5Il%B_DHUWcmAEcLt`SiEBAAD?Z5!v`xZb~BtWE7*PHZ1;8LE3 z53*15Chl(JNSrq7-a?`9!WaR*f)8C4%+_Cfrb@|ToZ7Z0B#ooiX+kXuxCG{(7)T-D zJj^2K{`biZB4a|lnk-A?A1l8@-jMXmmr|KEo(|%fa3-mYewhCi{)%00aC%bZO+TE@ zROb-d#W5nMY6pABFi>zRfC%LG59spw7q)MP`gQFXhwDTA4V4R}q)zRvdRe6Pm1*F= z6A;$_hkqE2B$%C!?1{F*i})^~E^Zcqk&JtHduqDR?3*{>E`jbIe8Ptzwen($`u>pI z`piSkRS49hmzhMD}wsl}nca z?lR~O?6rFEV;A<=o*`}t43DcJ>-_Rn?a6S*YsmP5i%`J$-^-4vT5y?qxVg}JG zkB`u=$UZ1vnYrcX6o`}y?F*d9w9EHEVLE>Hewo?Pf1tpG+u{=Y4tXa{;#X!b4Y+Hd zOY@7{ajIqwW!nBn1cE)16W)N{b{8sM87tdyq`8y)#$3G1DRCx`qJ~ioO)=cTpoVX| z4INa{R*z=}X0_U^BjB!sZmB*!y?E<;jkr!*;oX?4P#GU(0wp2~yWP6w^}7Z`N=-Vb zx16WW)BFntQ^oJLG$=t;pEMUpU$7Q!s?O`4p#gUTbSvCqryF1Q{m}D$h#sgleHVvn z=wmjWnbTe91>FTDG@-^yRLVKY+`~?;T$BX*Omvu{q<*H{YT+dM;J(Z7$4nf^?+)mOF8|97 zyZu$9HgGlxZ>FUi(rSUq&|YNk>M8%1%Qrx=K!#Val82@biq%6T-GsFb&y12g*N1oz z^Bo$kc!Ki?;O>I1K2|hRD-+Blmh6o!Z#+#6w_VLE#HF7*?N>%Py7ZBk{~nu-mTKfD zOyw=Rsb4a1Cf!Dy`FQ*`-qd(K5x#th0Ng#$)gks(XHjRFO^}{pxF6?z?Fp`MiX&9buYl z)*r$0W`KJDy4fD>&k=F2#6zJmC2ssHaH~)6IA<9exTfB&+ir^X6GIb>emB_;WO==5 z&5d(kJ3!w0y=gdj6EKY{+dA{*PXq2D=-Qe1nTr>4d-=6Ko$8liy}$U3FK^6nRxM>z zIOn&BQ6@42i!f&2o%=SFzq_gmw||qI#^l%Yf%w;~+n*$@-zR{31iBa1OTE}MeI@5> z1ztNA!p7Y$1*ODH+W}(G38QZiZ-n<%CdwAJ;=%S z*KLgfc{l^z4`^0RmXeR9Us{7?h3|!%=#r}1q{Xa^18P*{l{5)Lx;}NSFIQ3bWx0(Y z|C=dEh*kWj%=(BuW5aY#H%~|W1i0s*i|1b68J*PZLE-Vizu!AYUp*{Y#puyqZ`n3t zCY65(a!L5o(%fCZy)NhZ6F2n4k3dt@oARv}+fDk)e1h&p7Qnp#U5yKw#)8ahT?%k7K{tsPvW88KL+6g!`L^>?Ykk!s+*U`4KZE~&?41Ra z6j$1Y8w>948r34fWdWUaCZsr?(PKl1c%`6BqTrtf(DoWd55phnV*y0O*YvL zVQ-yzx^6vlZ^>8HRn^s1U;Cd=QK)l*k;Qjif0(>pn}C2J3yP)ewdz3LgY`!BzkTmm z;)!v0%ulu{dXVux2s+-=k-LO$kbLxv-HldkyFR4izJZr|X3mpnPrjG?pGGKM_rSK! zp$lv+nW*Q`RPjU4i9F;@-{*NVc3&8L@9x-T))YN^w(J*-_qTQ-t)jQDK{iv5uYc1tC11h#pTLdDpoJe8>^dcJI@;onKq}RU&&lye0emn)^G(K+6#^n#U84Wr|Hd zihEE09arP;nrE%^mi`&K`m|~7IT^>}iR9LKVEh!958?Qx3ODw`daJ=j-eFp0@6s<}X~4Zqk2? z2IUdig;&0z~zvliH3*%NQB;q%O|El1$K-M?Mi94upm z25+zV{lReksm=BE#2FutC+2%_J?d?&eEl0UPd-iFUi1A^7xr&3GR2@*bG8-MN8{El z0%|)u5~A0&zK%> zKjZufqjjTj5%`~qfZj(Jhj=_OIPU*UpRd9D{E+}?d>cx$iDF|5jb;yYC?1uXW?*#znwIz(v4Cz(wGFiok#4vzn%Heck`Rru9C>z|D(`fQx{O zfQx{OfQ!KU8v&h1w0w`hOMQPM=jQCMj)1mZ{YHbn!wvZE{kso9-(!UV_5Yil;nTf|LbiOKOVpRf9E;cxBIng-MV9Yo~H{P><@p>{yxR{LteJ`DbD|mdC|J` z-Y0#IMDEHT@ZXs3e`6Yf+v&e~&zRfB{~K%Q&!0x%db4NdLna9pm#bdT-?l#7r_Q}cnfQ$KXHUY7j|eEv9XqyYqF_8t7c4Lzlw6xuOm>Mq+28zOGj{UmsoswEea6 z3GnSg-`!jB;jLe{L@oj@0xkkB0xkkB0xkkB0xkkB0)Nj4=(C!CbDzMxgc&orEHmD< zsJIL{6D%-q<9Pb+H+{U3aeWs77XcRm7XcRm7XcRm7XcRm7lA(#0e#l!5-ND$XN_sfTGgW+CX1Y89EVFa|_xEwcl;O{zbP7wTqdY17YF0}i{|5OCD zjdyAh5STOMQL5m7_`WKQ@7;UQWP5p^=H-tphimI1;3D86;3D86;3D86@OO)V&SU?Ie9fBfpP8%p?-qB>Z(t1E zZwdV!SKV)#XRY5pi{9ST_}T8@fw{uuIyP(FqG{Kb{*yR`SwFShlG7vh7;P5=;SN+GI ztyJ&hYHzpujP#@No_O1~ec<&MKb*VP_pjH5?hkjJi-3!Oi-3!Oi-3!Oi-3!Oi-3!O zi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!O zi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!O zi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!O zi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!O zi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi-3!Oi@@JD z0>S>abM9u`MZiVCMZiVCMZiVCMZiVCMZiVCMZiVCMZiVCMZiVCMZiVCMZiVCMZiVC zMZiVCMZiVCMZiVCMZiVCMZiVi!;OHutL4L8w{FQ?1Y87M1Y87M1Y87M1Y87M1Y87M z1Y87M1Y87M1Y87M1Y87M1Y87M1Y87M1Y87M1Y87M1Y87M1Y87M1Y87M1Y87M1Y86@ z;0U-I06*ZB>lV#Lz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4C zz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4C zz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4C zz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4C zz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4C zz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(v4C zz(v4Cz(v4Cz(v4Cz(v4Cz(v4Cz(wGHGXlZ>Hy7J2wTr-C6an{+`-=kaChH>LBH$w6 zBH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6 zBH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6 zBH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6 zBH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BJjaS;NF?Afy?-P)^LISaQXfH8fR?L z)<3|fb?c0++cj?0v_)&*j8*-7eG4YZnmLJoi*CN{nx;>ZJ&8~27R}nWYx=g?+c>>` z^S0B_@X#KQet0DK+kXWPt1Lp88%Z6NMM!gFaH^wWih*V%&o9` z8cb+z4Nh^71lxlQKc;j)<9Y%V@7r@1ZW65w)~ z+iFg6&uwm-xkR{P=C+&Dx;SJp-C-^X?kjUUahhkXpTp+9w0g;KN6qcBddYF8&FwLl z0(ZvTK5P3i?yR}}=2GG=m^*;ex=aNZ%^kLSsa4P3EJw_x!Cf(T6sLJk3s=n@$7vm< zgKOqanM;qmY3{7G&4ByC+EOAx2;|t+)HzJ z%;m)e(;JrVXLI=|hcb89Tz*^_bN6uCj}(CL<{n$Ug1Ct0p5Qbug&?ZAXI8H;E}FUL z=8E8=n|oodC@z_~m*$G$lAC*Ft~f4@x!2}O;L@9WW3D7Fqd5;dIj!?jki%RsbER?l z%mp`B2AAJl2yG z7Xhd7Rf0aCF0$48lycud!~W4+WrnNJR>y*0a-gD{_ zn5#}%?+0}W&DEf+ZB<<&oR+Po$~KK8R<9QBfi@hvq&O`{ZFp!d1y1{eI`GI`Y8zi& z+!J$Yt!+KrQ*#+`T9@_VwYiMewgK*qxyy(5kq(A*&8%%_ z%6>YK(zUdDT_|@n*UDU1Tt92u+FUnWe{*fjb;k`f*VbGQ+(>in%=N^LHP_x;FWdri z9nAH{l{DvPt`Dx9Ie&9~aTUx3nCpkDXs)BV{xXARo;1v5o zP|#dAbAxe(tZff#I|Nt6>h;8FoezbgRvtGD(+LaR0BidhUjI(ecSY~veAd6v0hIL-4Ym~C#jwH=L1q?0VV5$48FPHb)@PV+n#l9(Hd(_48Q z6teM6wzlJO<8e{xPcb)v@*t}>)!anf%UHb7O~YyaCc!InGt5m^1#3IY+D<`*FgM%W zR9r}Nb8w33GzevGzPahR(B>9d+Znhp<`!GMnYggHX!Ms^y;+pQS-s^ry{BhGc&oPt zr{$OfPi#5XTHCp}pK;OYuQNA~au3^guE%Mf=R+@C4Emd_-U7-)tlnmv*2h8^Wp2CG zTZGf+4s|=sEv9^)>BgkL)7%ouZ4p|OFL0XYrO?^jE~~c;ca0g*=C<4FEvGy~Bct1E z^;S?GfzvK#pShKkt607L=2qbvN8yD|$7bz^Rznk9BKil-t)bl1>K!uoIj)(xugtB* zEeOX8-C=X%LpHsBJNJ8o_xE*35^{S(%96XkHYB=k?2+e|sK zxii*w3+^#xb!W|OrF@F{OGf{kwcSSfw7CmbZ#z!gaSHku&F!G9{j$1C=5|tUZtk+V zFK{}BrKEqw+?SL~n!8G0G1vvA%zbV3cH>$`@D?Y5tBu6?6Bk-f`Rxz1ipX?xH% zeg;Ncy(c)WkFziYmyZ53t9Op_P;<|5n&9GjEpBE-k33&S#M zx|blK)eDQ$_%6dM?S$wen7cyx1ui3fZP#jh6<(T)g3~_d8mzXqF|6L#xHaZtn)?Q~ z)|}o?8sBwTZ!WgEZ*d#U={>8sd)_9o?P?3}aFPmI&D-GZ;p zC9}5Q<2K^drNn6(KfpFzcKWH!{Yd#stCtq1dHxA@n@eZ)ZsYb@+YDCk4sO5I%V_m} z#(l~`Fem-Y=I&CSNxfY3vzog{Ik&aVZsWU;%WE!&)q8-;kIPLz7f#Fj5XvzPb$N08 zc^*M6+fNolXgPj??BOuU_U7<8I)};Ch=&g1d=R*T-B^+yPuUTwim^a0jhkKb+<-Iqr}- z9U~d^q~PT%YpY|V>V1qmY;G`4@BNgx3Aj%v53{zZaFcNAJ~NjZH^tm=b7^o>t?dXK zUs~Mc@Ne6WwtDH**4!9#>2afR<*7Q>+GfC=;k>gVZURo5SVo+#1*)5m({g0ObqO?_ zzuNfpS$d+mMdq^Lbk18D7Msh8TWoHLxoo%&xEiq3Tz1^Pj}Uar%;muCH@6(eAv5sv z`ayH+aGJkd)QieI*P^_^+UhfWG+U01=JXjphSl4IOGtfvh9A%PYEwRA~|>Z`xVtI%8QPp>av+DhP(Avd9veZ;wg?B!E}8n=fUatTLL!+1_+h0lCXscJ) zTq)dl8VOx79D|~5k6Ui_`kSkOTVZaXxr(@#SOt}x}V}&o73kDO`|fdy)D}! zYg+~9XKt~%s<+#z!(aSVED z@p8NUY_GNK<9! z)(mS~ZHLqM44Q5mhV>q9Pg&n7C@yUo)-hP!D;r-shIK5|KI^r)_6)~iqw~kT!D;?F z;NogSq|goFk20fj4(dR66 zADQcn`&m0Ay3ppj;O?2z_ZDi~m6!Xtu9U;#G|$~|z2nlStnV`9y5lP0x>MG78EV^u zm#(z!K{=ASp1Ah7p18>7df^JjL(oMr*Bcjt@u}1IAPjo?@Nzk3pbGpRM6NF{A2B|4 z`W{41+e#YT5Xv#kXY`g#P+^ZWJyBZY(alwH=N7*y`!K8wNdNcu8aRa+({98^UzeK+TqFl_{ zPQgXS&BhfsHx)OC&qs4``YuRqr{U&sY@A2AwAGuA)Azo5|Ccd01E=q$7vjpAn~6JT z>#dx*S-93L7N4<~;mYF_gE_bbv|UcQqPe-aUf$0i)^;AQkN5M3Iqm2A z;a1VMin#?iO?Ne}s=0-@E$lDURWr8;x7u8FbBl2)IDc4Ay&C40-~vA^(yM81DekH5 z4{DiPhMR}mPQBXZmg5#!y*fB8?+To*fvc-$ZY8dzxdzsD6|S|phB&RG)pCqv7v;uQ zZw+oIZa1!pxzBM2Sq^o+=GNl;IB(yJYie#CZWnF$;hN#JFJ6z^ZLXEo+khKxv1)B@ zBd)f&Hs&_r>X~bcV>F)4xccVWTfHqfA9EedZN=5Z9i)w)xox;oR?pwuc3dWN0p@n# z^x0ZnM{_%IX{}x-b6?<6;SN!+v$-#E&#i42bGvZIafhkb)!c5}dfX9QH=JU%2RBp; zN!QEj?Ztg&t~XA_eYg=6j#BPx_4eaNTD^W&?*ML$xdG-5;>KEA9n%=}9O9)R^Ky)` zj%jjV@$ymyx*^u~FvG9l1a6qQBMkfU9#p4epEj|hxaqjll*e1WW4NifGq{O320h1l zNzG@|^OPr9y%V^!)VqMw=O4}fNnAQ})2!_&TzYfUaf;t*Tn2Nqt=<`2W^;3J+V0Qd zvY4B1?i?jEiC8 zJ7)E+;Pi#VWqQZWUBv}AcLJvvT*EDA=C4vdW%a(sZRgsYy3^*q!R;`2#@uz>9^7}- zJ8SM+++K6%%zcMDYHiP(yMa4y^)8sZiPL`L2IISE?iOyUwY_BSd)z_l-J;%Qb3fo3 z!S}c;I4#?c48NfN16;FuKjE|;tNYsAZCroKKjOYIcL&$V>RmVYGfw-iJJkEu++EdU zeW?4++&x@lb2rT0$8|S%6Q}umfYUmEK>2%|*7-x6*16mpYx@YNbuOn92Ceg7a6O{F zyu2?%;56N*xc=s%S-oetf##y)v`c!98*k%FXl-BMCR)A3 z=JbA^X7!TV`1F3BZ7vy3?~m8Gs&;Jr*y_E(RWp~;oMy5P3;BdLsmuk#HNZW^r8XBF zmksv}m&RNOTwUCATv~G>af5N%7Sfpuh3k)diA!(pBU~EXD_jP1p>cU|uW=d8g~4UQ zy}@NN7Zz6-7mVe}Y%UybDlRxKi@ET)iMSBBtmY!%a^gbbvYCsBtBg~Z-CQJGWG=*n zqFxSjk#R?@UQTmSaL3H$G8Ywh!dz~1(Qqft*PUsEWg2*yXH!oOMts?u9Ufi zxKxZU63bEATq0aY>P5ztF_##(0v82W)?5-?0bEpEIde&IiE+_zpO{OA8_Btfy7D*% zJ;`|)W3HmrOMx42u9CTraTCmaYAz*ilDW#}QsH{z;xgST=2GLjR7#uxcQV*;p$nvOt=M< z)zzo3_jzXAB6B|U8T4e~Wwg1*^fisFxSO1#XJDWSPHnT{bU&Y5Gpm;!_Y+QCb8|Ux zx_3|YTA0g;(|vk!EzRY^JuuhGTyESWbFFbY#^=H5zB;vSZ}sxxHuJwMxDGhYUp`z2 zZR~UbRxdy9hDJiy(Od!COlg;%o zR}?qL#@EwaG2C)JYAiu1C~RrEsgw4Ki06x6|AZ9JB5z zgB!^5=3-!|xw5#Xx8xeB<7=0=&Th^uaG zwS8$`D&gvw8)NQMTqA2c)?8&=V{_xoRlzkeHy+2Jrz$UdSl+yhe4@E(xHq_bxXISG zIxaHTBJ<;PeO~iY0~Z~qPS@w0Zz*+HxI|4ry(zzmqIwbx8;0z(YzGK>Ag+Q z(+H<|ky~u8F;4R$x5Qi%oaRMtsX1Sq=0$Fqxu!VHi`;S?gPvx*XkLooR$9I0xI6r> z7;cr-Yk|9KZjIGziJL;4i&O7&bFFYw&8;=3bIxhz*5Tqao;JAY=8oa?-fxSmfh)oI zPU0B!wBx0wIqgIFm!~~$46Y;tXRKZa+*otxtezikoVoKjE;D)jaW~kmO40U_wGF^2 z2BmS2&2_|SeU!mHwefYrX?@5&GuIiX^&$7%To;_yhujNuU2$3;axcww!)blUy}~i* z>CTI$TNd}m>h-{Bx^nu?O}(BtO;;|Mxn4L;S1!1@-Z)KHE`+&0I89eBB#uE(UtR); zRXN;8R<9p!HLg4^w7LGcSj4XaE{wGufK&V`;=)zwCHw>rckc)z2Fz_>XT;{JbE}GRF&OdVF)I~Qp0++{J3~M_Q zm)Be@bE9xMm_}8`7suL;#%bB);+h+S)3V9MGdC8eWs{3LBiM+hl8-*^3)tiKSV=k%Hn~V!dTXo6JO~HjR_p!B|iu)1Nr8GB<;RjHI z>87%_(;5E7>ZP%IGZ_As>DHoNS{$2+XD04zhSg=Zdb4o)9IGyijc+zipE1>C!)f;C z;C?Wd)7s9(-NV&}T-J6T?ir}dWA)}U9E_3Fp0f zMB94QD`ajlPRDO`h0QHtSjT~e)GK0cDZ|>|$rUxXjA4Ba(r4vj=9c5OFpb8z;^tP! zF|4kHxs|vb=1Q7dg&U7+3Z=}g#!WC++T0r4Xlq*r$DrqPUdG^>K{>0p7B`6D=J1Kt zTZbELu7bJsIGvldz*oX)9c{pAU!bmvjc+4P@4wbi)!ZhWjwkA>ncIvjifaSa&27Qy zI&gbj4IG1>t-R=X(Gge6>TP4VOI*%%aJ8-8cATzfcg5AUdOOT@!__ml6Q}Pm2H

    (F3@F*7gvNQ3PI(8D#D&bBCxm*xX@rU*U$B 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
    w}8oAyjN0KKT&D<~>L{ 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∓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 diff --git a/client/package.json b/client/package.json index 96b402e747..d4cd010a0a 100644 --- a/client/package.json +++ b/client/package.json @@ -52,6 +52,7 @@ "@radix-ui/react-switch": "^1.0.3", "@radix-ui/react-tabs": "^1.0.3", "@radix-ui/react-toast": "^1.1.5", + "@react-spring/web": "^9.7.5", "@tanstack/react-query": "^4.28.0", "@tanstack/react-table": "^8.11.7", "class-variance-authority": "^0.6.0", @@ -141,8 +142,8 @@ "ts-jest": "^29.2.5", "typescript": "^5.3.3", "vite": "^6.1.0", - "vite-plugin-node-polyfills": "^0.17.0", "vite-plugin-compression": "^0.5.1", + "vite-plugin-node-polyfills": "^0.17.0", "vite-plugin-pwa": "^0.21.1" } } diff --git a/client/src/common/index.ts b/client/src/common/index.ts index 3452818fce..e1a3ab0a05 100644 --- a/client/src/common/index.ts +++ b/client/src/common/index.ts @@ -3,5 +3,6 @@ export * from './artifacts'; export * from './types'; export * from './menus'; export * from './tools'; +export * from './selector'; export * from './assistants-types'; export * from './agents-types'; diff --git a/client/src/common/selector.ts b/client/src/common/selector.ts new file mode 100644 index 0000000000..a6380552c7 --- /dev/null +++ b/client/src/common/selector.ts @@ -0,0 +1,24 @@ +import React from 'react'; +import { TModelSpec, TInterfaceConfig } from 'librechat-data-provider'; + +export interface Endpoint { + value: string; + label: string; + hasModels: boolean; + models?: string[]; + icon: React.ReactNode; + agentNames?: Record; + assistantNames?: Record; + modelIcons?: Record; +} + +export interface SelectedValues { + endpoint: string | null; + model: string | null; + modelSpec: string | null; +} + +export interface ModelSelectorProps { + interfaceConfig: TInterfaceConfig; + modelSpecs: TModelSpec[]; +} diff --git a/client/src/common/types.ts b/client/src/common/types.ts index 118cefce16..71e2e7a0c9 100644 --- a/client/src/common/types.ts +++ b/client/src/common/types.ts @@ -1,10 +1,10 @@ import { RefObject } from 'react'; -import { FileSources } from 'librechat-data-provider'; -import type * as InputNumberPrimitive from 'rc-input-number'; -import type { ColumnDef } from '@tanstack/react-table'; -import type { SetterOrUpdater } from 'recoil'; -import type * as t from 'librechat-data-provider'; +import { FileSources, EModelEndpoint } from 'librechat-data-provider'; import type { UseMutationResult } from '@tanstack/react-query'; +import type * as InputNumberPrimitive from 'rc-input-number'; +import type { SetterOrUpdater, RecoilState } from 'recoil'; +import type { ColumnDef } from '@tanstack/react-table'; +import type * as t from 'librechat-data-provider'; import type { LucideIcon } from 'lucide-react'; import type { TranslationKeys } from '~/hooks'; @@ -48,6 +48,14 @@ export type AudioChunk = { }; }; +export type BadgeItem = { + id: string; + icon: React.ComponentType; + label: string; + atom: RecoilState; + isAvailable: boolean; +}; + export type AssistantListItem = { id: string; name: string; @@ -488,6 +496,27 @@ export interface ExtendedFile { metadata?: t.TFile['metadata']; } +export interface ExtendedEndpoint { + value: EModelEndpoint; + label: string; + hasModels: boolean; + icon: JSX.Element | null; + models?: string[]; + agentNames?: Record; + assistantNames?: Record; + modelIcons?: Record; +} + +export interface ModelItemProps { + modelName: string; + endpoint: EModelEndpoint; + isSelected: boolean; + onSelect: () => void; + onNavigateBack: () => void; + icon?: JSX.Element; + className?: string; +} + export type ContextType = { navVisible: boolean; setNavVisible: (visible: boolean) => void }; export interface SwitcherProps { diff --git a/client/src/components/Chat/AddMultiConvo.tsx b/client/src/components/Chat/AddMultiConvo.tsx index 6cfeb04b9c..24c1d7cb16 100644 --- a/client/src/components/Chat/AddMultiConvo.tsx +++ b/client/src/components/Chat/AddMultiConvo.tsx @@ -12,7 +12,7 @@ function AddMultiConvo() { const localize = useLocalize(); const clickHandler = () => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { title: _t, ...convo } = conversation ?? ({} as TConversation); setAddedConvo({ ...convo, @@ -42,7 +42,7 @@ function AddMultiConvo() { role="button" onClick={clickHandler} data-testid="parameters-button" - className="inline-flex size-10 items-center justify-center rounded-lg border border-border-light bg-transparent text-text-primary transition-all ease-in-out hover:bg-surface-tertiary disabled:pointer-events-none disabled:opacity-50 radix-state-open:bg-surface-tertiary" + className="inline-flex size-10 flex-shrink-0 items-center justify-center rounded-lg border border-border-light bg-transparent text-text-primary transition-all ease-in-out hover:bg-surface-tertiary disabled:pointer-events-none disabled:opacity-50 radix-state-open:bg-surface-tertiary" > diff --git a/client/src/components/Chat/ChatView.tsx b/client/src/components/Chat/ChatView.tsx index dbf39ee845..1fbfdef736 100644 --- a/client/src/components/Chat/ChatView.tsx +++ b/client/src/components/Chat/ChatView.tsx @@ -7,6 +7,7 @@ import type { TMessage } from 'librechat-data-provider'; import type { ChatFormValues } from '~/common'; import { ChatContext, AddedChatContext, useFileMapContext, ChatFormProvider } from '~/Providers'; import { useChatHelpers, useAddedResponse, useSSE } from '~/hooks'; +import ConversationStarters from './Input/ConversationStarters'; import MessagesView from './Messages/MessagesView'; import { Spinner } from '~/components/svg'; import Presentation from './Presentation'; @@ -21,6 +22,7 @@ function ChatView({ index = 0 }: { index?: number }) { const { conversationId } = useParams(); const rootSubmission = useRecoilValue(store.submissionByIndex(index)); const addedSubmission = useRecoilValue(store.submissionByIndex(index + 1)); + const centerFormOnLanding = useRecoilValue(store.centerFormOnLanding); const fileMap = useFileMapContext(); @@ -46,16 +48,18 @@ function ChatView({ index = 0 }: { index?: number }) { }); let content: JSX.Element | null | undefined; + const isLandingPage = !messagesTree || messagesTree.length === 0; + if (isLoading && conversationId !== 'new') { content = (
    - +
    ); - } else if (messagesTree && messagesTree.length !== 0) { - content = } />; + } else if (!isLandingPage) { + content = ; } else { - content = } />; + content = ; } return ( @@ -63,10 +67,27 @@ function ChatView({ index = 0 }: { index?: number }) { - {content} -
    - -