mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-03-12 19:12:36 +01:00
🔃 refactor: Decouple Effects from AppService, move to data-schemas (#9974)
* chore: linting for `loadCustomConfig` * refactor: decouple CDN init and variable/health checks from AppService * refactor: move AppService to packages/data-schemas * chore: update AppConfig import path to use data-schemas * chore: update JsonSchemaType import path to use data-schemas * refactor: update UserController to import webSearchKeys and redefine FunctionTool typedef * chore: remove AppService.js * refactor: update AppConfig interface to use Partial<TCustomConfig> and make paths and fileStrategies optional * refactor: update checkConfig function to accept Partial<TCustomConfig> * chore: fix types * refactor: move handleRateLimits to startup checks as is an effect * test: remove outdated rate limit tests from AppService.spec and add new handleRateLimits tests in checks.spec
This commit is contained in:
parent
9ff608e6af
commit
838fb53208
73 changed files with 1383 additions and 1326 deletions
|
|
@ -155,8 +155,10 @@ export type TAzureGroupMap = Record<
|
|||
|
||||
export type TValidatedAzureConfig = {
|
||||
modelNames: string[];
|
||||
modelGroupMap: TAzureModelGroupMap;
|
||||
groupMap: TAzureGroupMap;
|
||||
assistantModels?: string[];
|
||||
assistantGroups?: string[];
|
||||
modelGroupMap: TAzureModelGroupMap;
|
||||
};
|
||||
|
||||
export type TAzureConfigValidationResult = TValidatedAzureConfig & {
|
||||
|
|
@ -752,7 +754,7 @@ export const webSearchSchema = z.object({
|
|||
.optional(),
|
||||
});
|
||||
|
||||
export type TWebSearchConfig = z.infer<typeof webSearchSchema>;
|
||||
export type TWebSearchConfig = DeepPartial<z.infer<typeof webSearchSchema>>;
|
||||
|
||||
export const ocrSchema = z.object({
|
||||
mistralModel: z.string().optional(),
|
||||
|
|
@ -799,7 +801,7 @@ export const memorySchema = z.object({
|
|||
.optional(),
|
||||
});
|
||||
|
||||
export type TMemoryConfig = z.infer<typeof memorySchema>;
|
||||
export type TMemoryConfig = DeepPartial<z.infer<typeof memorySchema>>;
|
||||
|
||||
const customEndpointsSchema = z.array(endpointSchema.partial()).optional();
|
||||
|
||||
|
|
@ -862,9 +864,27 @@ export const configSchema = z.object({
|
|||
.optional(),
|
||||
});
|
||||
|
||||
export const getConfigDefaults = () => getSchemaDefaults(configSchema);
|
||||
/**
|
||||
* Recursively makes all properties of T optional, including nested objects.
|
||||
* Handles arrays, primitives, functions, and Date objects correctly.
|
||||
*/
|
||||
export type DeepPartial<T> = T extends (infer U)[]
|
||||
? DeepPartial<U>[]
|
||||
: T extends ReadonlyArray<infer U>
|
||||
? ReadonlyArray<DeepPartial<U>>
|
||||
: // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
||||
T extends Function
|
||||
? T
|
||||
: T extends Date
|
||||
? T
|
||||
: T extends object
|
||||
? {
|
||||
[P in keyof T]?: DeepPartial<T[P]>;
|
||||
}
|
||||
: T;
|
||||
|
||||
export type TCustomConfig = z.infer<typeof configSchema>;
|
||||
export const getConfigDefaults = () => getSchemaDefaults(configSchema);
|
||||
export type TCustomConfig = DeepPartial<z.infer<typeof configSchema>>;
|
||||
export type TCustomEndpoints = z.infer<typeof customEndpointsSchema>;
|
||||
|
||||
export type TProviderSchema =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue