🗄️ feat: Allow Skipping Transactions When Balance is Disabled (#9419)

* Disable transaction creation when balance is disabled

* Add configuration to disable transactions creation

* chore: remove comments

---------

Co-authored-by: Danny Avila <danacordially@gmail.com>
This commit is contained in:
Sebastien Bruel 2025-09-06 00:21:02 +09:00 committed by GitHub
parent 0ecafcd38e
commit e95e0052da
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 544 additions and 7 deletions

View file

@ -1,7 +1,8 @@
import { EModelEndpoint, removeNullishValues } from 'librechat-data-provider';
import type { TCustomConfig, TEndpoint } from 'librechat-data-provider';
import type { TCustomConfig, TEndpoint, TTransactionsConfig } from 'librechat-data-provider';
import type { AppConfig } from '~/types';
import { isEnabled, normalizeEndpointName } from '~/utils';
import { logger } from '@librechat/data-schemas';
/**
* Retrieves the balance configuration object
@ -20,6 +21,32 @@ export function getBalanceConfig(appConfig?: AppConfig): Partial<TCustomConfig['
return { ...config, ...(appConfig?.['balance'] ?? {}) };
}
/**
* Retrieves the transactions configuration object
* */
export function getTransactionsConfig(appConfig?: AppConfig): TTransactionsConfig {
const defaultConfig: TTransactionsConfig = { enabled: true };
if (!appConfig) {
return defaultConfig;
}
const transactionsConfig = appConfig?.['transactions'] ?? defaultConfig;
const balanceConfig = getBalanceConfig(appConfig);
// If balance is enabled but transactions are disabled, force transactions to be enabled
// and log a warning
if (balanceConfig?.enabled && !transactionsConfig.enabled) {
logger.warn(
'Configuration warning: transactions.enabled=false is incompatible with balance.enabled=true. ' +
'Transactions will be enabled to ensure balance tracking works correctly.',
);
return { ...transactionsConfig, enabled: true };
}
return transactionsConfig;
}
export const getCustomEndpointConfig = ({
endpoint,
appConfig,