librechat-data-provider 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +1 -1
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react-query/index.es.js +1 -1
- package/dist/react-query/index.es.js.map +1 -1
- package/package.json +2 -2
- package/specs/azure.spec.ts +567 -0
- package/specs/parsers.spec.ts +48 -0
- package/src/azure.ts +211 -0
- package/src/config.ts +84 -2
- package/src/index.ts +1 -0
- package/src/parsers.ts +97 -1
- package/src/react-query/react-query-service.ts +3 -3
- package/src/schemas.ts +0 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../src/schemas.ts","../../src/file-config.ts","../../src/types/files.ts","../../src/config.ts","../../src/api-endpoints.ts","../../src/request.ts","../../src/headers-helpers.ts","../../src/data-service.ts","../../src/keys.ts","../../src/react-query/react-query-service.ts"],"sourcesContent":["import { z } from 'zod';\nimport type { TMessageContentParts } from './types/assistants';\nimport type { TFile } from './types/files';\n\nexport const isUUID = z.string().uuid();\n\nexport enum EModelEndpoint {\n azureOpenAI = 'azureOpenAI',\n openAI = 'openAI',\n bingAI = 'bingAI',\n chatGPTBrowser = 'chatGPTBrowser',\n google = 'google',\n gptPlugins = 'gptPlugins',\n anthropic = 'anthropic',\n assistants = 'assistants',\n custom = 'custom',\n}\n\nexport const defaultAssistantFormValues = {\n assistant: '',\n id: '',\n name: '',\n description: '',\n instructions: '',\n model: 'gpt-3.5-turbo-1106',\n functions: [],\n code_interpreter: false,\n retrieval: false,\n};\n\nexport const endpointSettings = {\n [EModelEndpoint.google]: {\n model: {\n default: 'chat-bison',\n },\n maxOutputTokens: {\n min: 1,\n max: 2048,\n step: 1,\n default: 1024,\n maxGeminiPro: 8192,\n defaultGeminiPro: 8192,\n },\n temperature: {\n min: 0,\n max: 1,\n step: 0.01,\n default: 0.2,\n },\n topP: {\n min: 0,\n max: 1,\n step: 0.01,\n default: 0.8,\n },\n topK: {\n min: 1,\n max: 40,\n step: 0.01,\n default: 40,\n },\n },\n};\n\nconst google = endpointSettings[EModelEndpoint.google];\n\nexport const eModelEndpointSchema = z.nativeEnum(EModelEndpoint);\n\nexport const extendedModelEndpointSchema = z.union([eModelEndpointSchema, z.string()]);\n\nexport enum ImageDetail {\n low = 'low',\n auto = 'auto',\n high = 'high',\n}\n\nexport const imageDetailNumeric = {\n [ImageDetail.low]: 0,\n [ImageDetail.auto]: 1,\n [ImageDetail.high]: 2,\n};\n\nexport const imageDetailValue = {\n 0: ImageDetail.low,\n 1: ImageDetail.auto,\n 2: ImageDetail.high,\n};\n\nexport const eImageDetailSchema = z.nativeEnum(ImageDetail);\n\nexport const tPluginAuthConfigSchema = z.object({\n authField: z.string(),\n label: z.string(),\n description: z.string(),\n});\n\nexport type TPluginAuthConfig = z.infer<typeof tPluginAuthConfigSchema>;\n\nexport const tPluginSchema = z.object({\n name: z.string(),\n pluginKey: z.string(),\n description: z.string(),\n icon: z.string(),\n authConfig: z.array(tPluginAuthConfigSchema),\n authenticated: z.boolean().optional(),\n isButton: z.boolean().optional(),\n});\n\nexport type TPlugin = z.infer<typeof tPluginSchema>;\n\nexport type TInput = {\n inputStr: string;\n};\n\nexport type TResPlugin = {\n plugin: string;\n input: string;\n thought: string;\n loading?: boolean;\n outputs?: string;\n latest?: string;\n inputs?: TInput[];\n};\n\nexport const tExampleSchema = z.object({\n input: z.object({\n content: z.string(),\n }),\n output: z.object({\n content: z.string(),\n }),\n});\n\nexport type TExample = z.infer<typeof tExampleSchema>;\n\nexport const tAgentOptionsSchema = z.object({\n agent: z.string(),\n skipCompletion: z.boolean(),\n model: z.string(),\n temperature: z.number(),\n});\n\nexport const tMessageSchema = z.object({\n messageId: z.string(),\n endpoint: z.string().optional(),\n clientId: z.string().nullable().optional(),\n conversationId: z.string().nullable(),\n parentMessageId: z.string().nullable(),\n responseMessageId: z.string().nullable().optional(),\n overrideParentMessageId: z.string().nullable().optional(),\n bg: z.string().nullable().optional(),\n model: z.string().nullable().optional(),\n title: z.string().nullable().or(z.literal('New Chat')).default('New Chat'),\n sender: z.string(),\n text: z.string(),\n generation: z.string().nullable().optional(),\n isEdited: z.boolean().optional(),\n isCreatedByUser: z.boolean(),\n error: z.boolean(),\n createdAt: z\n .string()\n .optional()\n .default(() => new Date().toISOString()),\n updatedAt: z\n .string()\n .optional()\n .default(() => new Date().toISOString()),\n current: z.boolean().optional(),\n unfinished: z.boolean().optional(),\n searchResult: z.boolean().optional(),\n finish_reason: z.string().optional(),\n /* assistant */\n thread_id: z.string().optional(),\n});\n\nexport type TMessage = z.input<typeof tMessageSchema> & {\n children?: TMessage[];\n plugin?: TResPlugin | null;\n plugins?: TResPlugin[];\n content?: TMessageContentParts[];\n files?: Partial<TFile>[];\n};\n\nexport const tConversationSchema = z.object({\n conversationId: z.string().nullable(),\n title: z.string().nullable().or(z.literal('New Chat')).default('New Chat'),\n user: z.string().optional(),\n endpoint: eModelEndpointSchema.nullable(),\n endpointType: eModelEndpointSchema.optional(),\n suggestions: z.array(z.string()).optional(),\n messages: z.array(z.string()).optional(),\n tools: z.array(tPluginSchema).optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n systemMessage: z.string().nullable().optional(),\n modelLabel: z.string().nullable().optional(),\n examples: z.array(tExampleSchema).optional(),\n chatGptLabel: z.string().nullable().optional(),\n userLabel: z.string().optional(),\n model: z.string().nullable().optional(),\n promptPrefix: z.string().nullable().optional(),\n temperature: z.number().optional(),\n topP: z.number().optional(),\n topK: z.number().optional(),\n context: z.string().nullable().optional(),\n top_p: z.number().optional(),\n frequency_penalty: z.number().optional(),\n presence_penalty: z.number().optional(),\n jailbreak: z.boolean().optional(),\n jailbreakConversationId: z.string().nullable().optional(),\n conversationSignature: z.string().nullable().optional(),\n parentMessageId: z.string().optional(),\n clientId: z.string().nullable().optional(),\n invocationId: z.number().nullable().optional(),\n toneStyle: z.string().nullable().optional(),\n maxOutputTokens: z.number().optional(),\n agentOptions: tAgentOptionsSchema.nullable().optional(),\n file_ids: z.array(z.string()).optional(),\n /* vision */\n resendImages: z.boolean().optional(),\n imageDetail: eImageDetailSchema.optional(),\n /* assistant */\n assistant_id: z.string().optional(),\n instructions: z.string().optional(),\n /** Used to overwrite active conversation settings when saving a Preset */\n presetOverride: z.record(z.unknown()).optional(),\n});\n\nexport const tPresetSchema = tConversationSchema\n .omit({\n conversationId: true,\n createdAt: true,\n updatedAt: true,\n title: true,\n })\n .merge(\n z.object({\n conversationId: z.string().nullable().optional(),\n presetId: z.string().nullable().optional(),\n title: z.string().nullable().optional(),\n defaultPreset: z.boolean().optional(),\n order: z.number().optional(),\n endpoint: extendedModelEndpointSchema.nullable(),\n }),\n );\n\nexport const tConvoUpdateSchema = tConversationSchema.merge(\n z.object({\n endpoint: extendedModelEndpointSchema.nullable(),\n }),\n);\n\nexport const tPresetUpdateSchema = tConversationSchema.merge(\n z.object({\n endpoint: extendedModelEndpointSchema.nullable(),\n }),\n);\n\nexport type TPreset = z.infer<typeof tPresetSchema>;\n\nexport type TConversation = z.infer<typeof tConversationSchema> & {\n presetOverride?: Partial<TPreset>;\n};\n\n// type DefaultSchemaValues = Partial<typeof google>;\n\nexport const openAISchema = tConversationSchema\n .pick({\n model: true,\n chatGptLabel: true,\n promptPrefix: true,\n temperature: true,\n top_p: true,\n presence_penalty: true,\n frequency_penalty: true,\n resendImages: true,\n imageDetail: true,\n })\n .transform((obj) => ({\n ...obj,\n model: obj.model ?? 'gpt-3.5-turbo',\n chatGptLabel: obj.chatGptLabel ?? null,\n promptPrefix: obj.promptPrefix ?? null,\n temperature: obj.temperature ?? 1,\n top_p: obj.top_p ?? 1,\n presence_penalty: obj.presence_penalty ?? 0,\n frequency_penalty: obj.frequency_penalty ?? 0,\n resendImages: obj.resendImages ?? false,\n imageDetail: obj.imageDetail ?? ImageDetail.auto,\n }))\n .catch(() => ({\n model: 'gpt-3.5-turbo',\n chatGptLabel: null,\n promptPrefix: null,\n temperature: 1,\n top_p: 1,\n presence_penalty: 0,\n frequency_penalty: 0,\n resendImages: false,\n imageDetail: ImageDetail.auto,\n }));\n\nexport const googleSchema = tConversationSchema\n .pick({\n model: true,\n modelLabel: true,\n promptPrefix: true,\n examples: true,\n temperature: true,\n maxOutputTokens: true,\n topP: true,\n topK: true,\n })\n .transform((obj) => {\n const isGeminiPro = obj?.model?.toLowerCase()?.includes('gemini-pro');\n\n const maxOutputTokensMax = isGeminiPro\n ? google.maxOutputTokens.maxGeminiPro\n : google.maxOutputTokens.max;\n const maxOutputTokensDefault = isGeminiPro\n ? google.maxOutputTokens.defaultGeminiPro\n : google.maxOutputTokens.default;\n\n let maxOutputTokens = obj.maxOutputTokens ?? maxOutputTokensDefault;\n maxOutputTokens = Math.min(maxOutputTokens, maxOutputTokensMax);\n\n return {\n ...obj,\n model: obj.model ?? google.model.default,\n modelLabel: obj.modelLabel ?? null,\n promptPrefix: obj.promptPrefix ?? null,\n examples: obj.examples ?? [{ input: { content: '' }, output: { content: '' } }],\n temperature: obj.temperature ?? google.temperature.default,\n maxOutputTokens,\n topP: obj.topP ?? google.topP.default,\n topK: obj.topK ?? google.topK.default,\n };\n })\n .catch(() => ({\n model: google.model.default,\n modelLabel: null,\n promptPrefix: null,\n examples: [{ input: { content: '' }, output: { content: '' } }],\n temperature: google.temperature.default,\n maxOutputTokens: google.maxOutputTokens.default,\n topP: google.topP.default,\n topK: google.topK.default,\n }));\n\nexport const bingAISchema = tConversationSchema\n .pick({\n jailbreak: true,\n systemMessage: true,\n context: true,\n toneStyle: true,\n jailbreakConversationId: true,\n conversationSignature: true,\n clientId: true,\n invocationId: true,\n })\n .transform((obj) => ({\n ...obj,\n model: '',\n jailbreak: obj.jailbreak ?? false,\n systemMessage: obj.systemMessage ?? null,\n context: obj.context ?? null,\n toneStyle: obj.toneStyle ?? 'creative',\n jailbreakConversationId: obj.jailbreakConversationId ?? null,\n conversationSignature: obj.conversationSignature ?? null,\n clientId: obj.clientId ?? null,\n invocationId: obj.invocationId ?? 1,\n }))\n .catch(() => ({\n model: '',\n jailbreak: false,\n systemMessage: null,\n context: null,\n toneStyle: 'creative',\n jailbreakConversationId: null,\n conversationSignature: null,\n clientId: null,\n invocationId: 1,\n }));\n\nexport const anthropicSchema = tConversationSchema\n .pick({\n model: true,\n modelLabel: true,\n promptPrefix: true,\n temperature: true,\n maxOutputTokens: true,\n topP: true,\n topK: true,\n })\n .transform((obj) => ({\n ...obj,\n model: obj.model ?? 'claude-1',\n modelLabel: obj.modelLabel ?? null,\n promptPrefix: obj.promptPrefix ?? null,\n temperature: obj.temperature ?? 1,\n maxOutputTokens: obj.maxOutputTokens ?? 4000,\n topP: obj.topP ?? 0.7,\n topK: obj.topK ?? 5,\n }))\n .catch(() => ({\n model: 'claude-1',\n modelLabel: null,\n promptPrefix: null,\n temperature: 1,\n maxOutputTokens: 4000,\n topP: 0.7,\n topK: 5,\n }));\n\nexport const chatGPTBrowserSchema = tConversationSchema\n .pick({\n model: true,\n })\n .transform((obj) => ({\n ...obj,\n model: obj.model ?? 'text-davinci-002-render-sha',\n }))\n .catch(() => ({\n model: 'text-davinci-002-render-sha',\n }));\n\nexport const gptPluginsSchema = tConversationSchema\n .pick({\n model: true,\n chatGptLabel: true,\n promptPrefix: true,\n temperature: true,\n top_p: true,\n presence_penalty: true,\n frequency_penalty: true,\n tools: true,\n agentOptions: true,\n })\n .transform((obj) => ({\n ...obj,\n model: obj.model ?? 'gpt-3.5-turbo',\n chatGptLabel: obj.chatGptLabel ?? null,\n promptPrefix: obj.promptPrefix ?? null,\n temperature: obj.temperature ?? 0.8,\n top_p: obj.top_p ?? 1,\n presence_penalty: obj.presence_penalty ?? 0,\n frequency_penalty: obj.frequency_penalty ?? 0,\n tools: obj.tools ?? [],\n agentOptions: obj.agentOptions ?? {\n agent: 'functions',\n skipCompletion: true,\n model: 'gpt-3.5-turbo',\n temperature: 0,\n },\n }))\n .catch(() => ({\n model: 'gpt-3.5-turbo',\n chatGptLabel: null,\n promptPrefix: null,\n temperature: 0.8,\n top_p: 1,\n presence_penalty: 0,\n frequency_penalty: 0,\n tools: [],\n agentOptions: {\n agent: 'functions',\n skipCompletion: true,\n model: 'gpt-3.5-turbo',\n temperature: 0,\n },\n }));\n\nexport function removeNullishValues<T extends object>(obj: T): T {\n const newObj: Partial<T> = { ...obj };\n\n (Object.keys(newObj) as Array<keyof T>).forEach((key) => {\n if (newObj[key] === undefined || newObj[key] === null || newObj[key] === '') {\n delete newObj[key];\n }\n });\n\n return newObj as T;\n}\n\nexport const assistantSchema = tConversationSchema\n .pick({\n model: true,\n assistant_id: true,\n instructions: true,\n promptPrefix: true,\n })\n .transform(removeNullishValues)\n .catch(() => ({}));\n\nexport const compactOpenAISchema = tConversationSchema\n .pick({\n model: true,\n chatGptLabel: true,\n promptPrefix: true,\n temperature: true,\n top_p: true,\n presence_penalty: true,\n frequency_penalty: true,\n resendImages: true,\n imageDetail: true,\n })\n .transform((obj: Partial<TConversation>) => {\n const newObj: Partial<TConversation> = { ...obj };\n if (newObj.model === 'gpt-3.5-turbo') {\n delete newObj.model;\n }\n if (newObj.temperature === 1) {\n delete newObj.temperature;\n }\n if (newObj.top_p === 1) {\n delete newObj.top_p;\n }\n if (newObj.presence_penalty === 0) {\n delete newObj.presence_penalty;\n }\n if (newObj.frequency_penalty === 0) {\n delete newObj.frequency_penalty;\n }\n if (newObj.resendImages !== true) {\n delete newObj.resendImages;\n }\n if (newObj.imageDetail === ImageDetail.auto) {\n delete newObj.imageDetail;\n }\n\n return removeNullishValues(newObj);\n })\n .catch(() => ({}));\n\nexport const compactGoogleSchema = tConversationSchema\n .pick({\n model: true,\n modelLabel: true,\n promptPrefix: true,\n examples: true,\n temperature: true,\n maxOutputTokens: true,\n topP: true,\n topK: true,\n })\n .transform((obj) => {\n const newObj: Partial<TConversation> = { ...obj };\n if (newObj.model === google.model.default) {\n delete newObj.model;\n }\n if (newObj.temperature === google.temperature.default) {\n delete newObj.temperature;\n }\n if (newObj.maxOutputTokens === google.maxOutputTokens.default) {\n delete newObj.maxOutputTokens;\n }\n if (newObj.topP === google.topP.default) {\n delete newObj.topP;\n }\n if (newObj.topK === google.topK.default) {\n delete newObj.topK;\n }\n\n return removeNullishValues(newObj);\n })\n .catch(() => ({}));\n\nexport const compactAnthropicSchema = tConversationSchema\n .pick({\n model: true,\n modelLabel: true,\n promptPrefix: true,\n temperature: true,\n maxOutputTokens: true,\n topP: true,\n topK: true,\n })\n .transform((obj) => {\n const newObj: Partial<TConversation> = { ...obj };\n if (newObj.model === 'claude-1') {\n delete newObj.model;\n }\n if (newObj.temperature === 1) {\n delete newObj.temperature;\n }\n if (newObj.maxOutputTokens === 4000) {\n delete newObj.maxOutputTokens;\n }\n if (newObj.topP === 0.7) {\n delete newObj.topP;\n }\n if (newObj.topK === 5) {\n delete newObj.topK;\n }\n\n return removeNullishValues(newObj);\n })\n .catch(() => ({}));\n\nexport const compactChatGPTSchema = tConversationSchema\n .pick({\n model: true,\n })\n .transform((obj) => {\n const newObj: Partial<TConversation> = { ...obj };\n // model: obj.model ?? 'text-davinci-002-render-sha',\n if (newObj.model === 'text-davinci-002-render-sha') {\n delete newObj.model;\n }\n\n return removeNullishValues(newObj);\n })\n .catch(() => ({}));\n\nexport const compactPluginsSchema = tConversationSchema\n .pick({\n model: true,\n chatGptLabel: true,\n promptPrefix: true,\n temperature: true,\n top_p: true,\n presence_penalty: true,\n frequency_penalty: true,\n tools: true,\n agentOptions: true,\n })\n .transform((obj) => {\n const newObj: Partial<TConversation> = { ...obj };\n if (newObj.model === 'gpt-3.5-turbo') {\n delete newObj.model;\n }\n if (newObj.chatGptLabel === null) {\n delete newObj.chatGptLabel;\n }\n if (newObj.promptPrefix === null) {\n delete newObj.promptPrefix;\n }\n if (newObj.temperature === 0.8) {\n delete newObj.temperature;\n }\n if (newObj.top_p === 1) {\n delete newObj.top_p;\n }\n if (newObj.presence_penalty === 0) {\n delete newObj.presence_penalty;\n }\n if (newObj.frequency_penalty === 0) {\n delete newObj.frequency_penalty;\n }\n if (newObj.tools?.length === 0) {\n delete newObj.tools;\n }\n\n if (\n newObj.agentOptions &&\n newObj.agentOptions.agent === 'functions' &&\n newObj.agentOptions.skipCompletion === true &&\n newObj.agentOptions.model === 'gpt-3.5-turbo' &&\n newObj.agentOptions.temperature === 0\n ) {\n delete newObj.agentOptions;\n }\n\n return removeNullishValues(newObj);\n })\n .catch(() => ({}));\n\n// const createGoogleSchema = (customGoogle: DefaultSchemaValues) => {\n// const defaults = { ...google, ...customGoogle };\n// return tConversationSchema\n// .pick({\n// model: true,\n// modelLabel: true,\n// promptPrefix: true,\n// examples: true,\n// temperature: true,\n// maxOutputTokens: true,\n// topP: true,\n// topK: true,\n// })\n// .transform((obj) => {\n// const isGeminiPro = obj?.model?.toLowerCase()?.includes('gemini-pro');\n\n// const maxOutputTokensMax = isGeminiPro\n// ? defaults.maxOutputTokens.maxGeminiPro\n// : defaults.maxOutputTokens.max;\n// const maxOutputTokensDefault = isGeminiPro\n// ? defaults.maxOutputTokens.defaultGeminiPro\n// : defaults.maxOutputTokens.default;\n\n// let maxOutputTokens = obj.maxOutputTokens ?? maxOutputTokensDefault;\n// maxOutputTokens = Math.min(maxOutputTokens, maxOutputTokensMax);\n\n// return {\n// ...obj,\n// model: obj.model ?? defaults.model.default,\n// modelLabel: obj.modelLabel ?? null,\n// promptPrefix: obj.promptPrefix ?? null,\n// examples: obj.examples ?? [{ input: { content: '' }, output: { content: '' } }],\n// temperature: obj.temperature ?? defaults.temperature.default,\n// maxOutputTokens,\n// topP: obj.topP ?? defaults.topP.default,\n// topK: obj.topK ?? defaults.topK.default,\n// };\n// })\n// .catch(() => ({\n// model: defaults.model.default,\n// modelLabel: null,\n// promptPrefix: null,\n// examples: [{ input: { content: '' }, output: { content: '' } }],\n// temperature: defaults.temperature.default,\n// maxOutputTokens: defaults.maxOutputTokens.default,\n// topP: defaults.topP.default,\n// topK: defaults.topK.default,\n// }));\n// };\n","/* eslint-disable max-len */\nimport { z } from 'zod';\nimport { EModelEndpoint } from './schemas';\nimport type { FileConfig, EndpointFileConfig } from './types/files';\n\nexport const supportsFiles = {\n [EModelEndpoint.openAI]: true,\n [EModelEndpoint.google]: true,\n [EModelEndpoint.assistants]: true,\n [EModelEndpoint.azureOpenAI]: true,\n [EModelEndpoint.custom]: true,\n};\n\nexport const excelFileTypes = [\n 'application/vnd.ms-excel',\n 'application/msexcel',\n 'application/x-msexcel',\n 'application/x-ms-excel',\n 'application/x-excel',\n 'application/x-dos_ms_excel',\n 'application/xls',\n 'application/x-xls',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n];\n\nexport const fullMimeTypesList = [\n 'text/x-c',\n 'text/x-c++',\n 'application/csv',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'text/html',\n 'text/x-java',\n 'application/json',\n 'text/markdown',\n 'application/pdf',\n 'text/x-php',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'text/x-python',\n 'text/x-script.python',\n 'text/x-ruby',\n 'text/x-tex',\n 'text/plain',\n 'text/css',\n 'image/jpeg',\n 'text/javascript',\n 'image/gif',\n 'image/png',\n 'application/x-tar',\n 'application/typescript',\n 'application/xml',\n 'application/zip',\n ...excelFileTypes,\n];\n\nexport const codeInterpreterMimeTypesList = [\n 'text/x-c',\n 'text/x-c++',\n 'application/csv',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'text/html',\n 'text/x-java',\n 'application/json',\n 'text/markdown',\n 'application/pdf',\n 'text/x-php',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'text/x-python',\n 'text/x-script.python',\n 'text/x-ruby',\n 'text/x-tex',\n 'text/plain',\n 'text/css',\n 'image/jpeg',\n 'text/javascript',\n 'image/gif',\n 'image/png',\n 'application/x-tar',\n 'application/typescript',\n 'application/xml',\n 'application/zip',\n ...excelFileTypes,\n];\n\nexport const retrievalMimeTypesList = [\n 'text/x-c',\n 'text/x-c++',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'text/html',\n 'text/x-java',\n 'application/json',\n 'text/markdown',\n 'application/pdf',\n 'text/x-php',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'text/x-python',\n 'text/x-script.python',\n 'text/x-ruby',\n 'text/x-tex',\n 'text/plain',\n];\n\nexport const imageExtRegex = /\\.(jpg|jpeg|png|gif|webp)$/i;\n\nexport const excelMimeTypes =\n /^application\\/(vnd\\.ms-excel|msexcel|x-msexcel|x-ms-excel|x-excel|x-dos_ms_excel|xls|x-xls|vnd\\.openxmlformats-officedocument\\.spreadsheetml\\.sheet)$/;\n\nexport const textMimeTypes =\n /^(text\\/(x-c|x-c\\+\\+|x-java|html|markdown|x-php|x-python|x-script\\.python|x-ruby|x-tex|plain|css|javascript|csv))$/;\n\nexport const applicationMimeTypes =\n /^(application\\/(csv|json|pdf|x-tar|typescript|vnd\\.openxmlformats-officedocument\\.(wordprocessingml\\.document|presentationml\\.presentation|spreadsheetml\\.sheet)|xml|zip))$/;\n\nexport const imageMimeTypes = /^image\\/(jpeg|gif|png|webp)$/;\n\nexport const supportedMimeTypes = [\n textMimeTypes,\n excelMimeTypes,\n applicationMimeTypes,\n imageMimeTypes,\n];\n\nexport const codeInterpreterMimeTypes = [\n textMimeTypes,\n excelMimeTypes,\n applicationMimeTypes,\n imageMimeTypes,\n];\n\nexport const retrievalMimeTypes = [\n /^(text\\/(x-c|x-c\\+\\+|html|x-java|markdown|x-php|x-python|x-script\\.python|x-ruby|x-tex|plain))$/,\n /^(application\\/(json|pdf|vnd\\.openxmlformats-officedocument\\.(wordprocessingml\\.document|presentationml\\.presentation)))$/,\n];\n\nexport const megabyte = 1024 * 1024;\n/** Helper function to get megabytes value */\nexport const mbToBytes = (mb: number): number => mb * megabyte;\n\nexport const fileConfig = {\n endpoints: {\n [EModelEndpoint.assistants]: {\n fileLimit: 10,\n fileSizeLimit: mbToBytes(512),\n totalSizeLimit: mbToBytes(512),\n supportedMimeTypes,\n disabled: false,\n },\n default: {\n fileLimit: 10,\n fileSizeLimit: mbToBytes(20),\n totalSizeLimit: mbToBytes(25),\n supportedMimeTypes: [imageMimeTypes],\n disabled: false,\n },\n },\n serverFileSizeLimit: mbToBytes(512),\n avatarSizeLimit: mbToBytes(2),\n checkType: function (fileType: string, supportedTypes: RegExp[] = supportedMimeTypes) {\n return supportedTypes.some((regex) => regex.test(fileType));\n },\n};\n\nconst supportedMimeTypesSchema = z\n .array(z.any())\n .optional()\n .refine(\n (mimeTypes) => {\n if (!mimeTypes) {\n return true;\n }\n return mimeTypes.every(\n (mimeType) => mimeType instanceof RegExp || typeof mimeType === 'string',\n );\n },\n {\n message: 'Each mimeType must be a string or a RegExp object.',\n },\n );\n\nexport const endpointFileConfigSchema = z.object({\n disabled: z.boolean().optional(),\n fileLimit: z.number().min(0).optional(),\n fileSizeLimit: z.number().min(0).optional(),\n totalSizeLimit: z.number().min(0).optional(),\n supportedMimeTypes: supportedMimeTypesSchema.optional(),\n});\n\nexport const fileConfigSchema = z.object({\n endpoints: z.record(endpointFileConfigSchema).optional(),\n serverFileSizeLimit: z.number().min(0).optional(),\n avatarSizeLimit: z.number().min(0).optional(),\n});\n\n/** Helper function to safely convert string patterns to RegExp objects */\nexport const convertStringsToRegex = (patterns: string[]): RegExp[] =>\n patterns.reduce((acc: RegExp[], pattern) => {\n try {\n const regex = new RegExp(pattern);\n acc.push(regex);\n } catch (error) {\n console.error(`Invalid regex pattern \"${pattern}\" skipped.`);\n }\n return acc;\n }, []);\n\nexport function mergeFileConfig(dynamic: z.infer<typeof fileConfigSchema> | undefined): FileConfig {\n const mergedConfig = fileConfig as FileConfig;\n if (!dynamic) {\n return mergedConfig;\n }\n\n if (dynamic.serverFileSizeLimit !== undefined) {\n mergedConfig.serverFileSizeLimit = mbToBytes(dynamic.serverFileSizeLimit);\n }\n\n if (dynamic.avatarSizeLimit !== undefined) {\n mergedConfig.avatarSizeLimit = mbToBytes(dynamic.avatarSizeLimit);\n }\n\n if (!dynamic.endpoints) {\n return mergedConfig;\n }\n\n for (const key in dynamic.endpoints) {\n const dynamicEndpoint = (dynamic.endpoints as Record<string, EndpointFileConfig>)[key];\n\n if (!mergedConfig.endpoints[key]) {\n mergedConfig.endpoints[key] = {};\n }\n\n const mergedEndpoint = mergedConfig.endpoints[key];\n\n if (dynamicEndpoint.disabled === true) {\n mergedEndpoint.disabled = true;\n mergedEndpoint.fileLimit = 0;\n mergedEndpoint.fileSizeLimit = 0;\n mergedEndpoint.totalSizeLimit = 0;\n mergedEndpoint.supportedMimeTypes = [];\n continue;\n }\n\n if (dynamicEndpoint.fileSizeLimit !== undefined) {\n mergedEndpoint.fileSizeLimit = mbToBytes(dynamicEndpoint.fileSizeLimit);\n }\n\n if (dynamicEndpoint.totalSizeLimit !== undefined) {\n mergedEndpoint.totalSizeLimit = mbToBytes(dynamicEndpoint.totalSizeLimit);\n }\n\n const configKeys = ['fileLimit'] as const;\n configKeys.forEach((field) => {\n if (dynamicEndpoint[field] !== undefined) {\n mergedEndpoint[field] = dynamicEndpoint[field];\n }\n });\n\n if (dynamicEndpoint.supportedMimeTypes) {\n mergedEndpoint.supportedMimeTypes = convertStringsToRegex(\n dynamicEndpoint.supportedMimeTypes as unknown as string[],\n );\n }\n }\n\n return mergedConfig;\n}\n","export enum FileSources {\n local = 'local',\n firebase = 'firebase',\n openai = 'openai',\n s3 = 's3',\n}\n\nexport enum FileContext {\n avatar = 'avatar',\n unknown = 'unknown',\n assistants = 'assistants',\n image_generation = 'image_generation',\n assistants_output = 'assistants_output',\n message_attachment = 'message_attachment',\n}\n\nexport type EndpointFileConfig = {\n disabled?: boolean;\n fileLimit?: number;\n fileSizeLimit?: number;\n totalSizeLimit?: number;\n supportedMimeTypes?: RegExp[];\n};\n\nexport type FileConfig = {\n endpoints: {\n [key: string]: EndpointFileConfig;\n };\n serverFileSizeLimit?: number;\n avatarSizeLimit?: number;\n checkType?: (fileType: string, supportedTypes: RegExp[]) => boolean;\n};\n\nexport type TFile = {\n _id?: string;\n __v?: number;\n user: string;\n conversationId?: string;\n message?: string;\n file_id: string;\n temp_file_id?: string;\n bytes: number;\n filename: string;\n filepath: string;\n object: 'file';\n type: string;\n usage: number;\n context?: FileContext;\n source?: FileSources;\n width?: number;\n height?: number;\n expiresAt?: string | Date;\n preview?: string;\n createdAt?: string | Date;\n updatedAt?: string | Date;\n};\n\nexport type TFileUpload = TFile & {\n temp_file_id: string;\n};\n\nexport type AvatarUploadResponse = {\n url: string;\n};\n\nexport type UploadMutationOptions = {\n onSuccess?: (data: TFileUpload, variables: FormData, context?: unknown) => void;\n onMutate?: (variables: FormData) => void | Promise<unknown>;\n onError?: (error: unknown, variables: FormData, context?: unknown) => void;\n};\n\nexport type UploadAvatarOptions = {\n onSuccess?: (data: AvatarUploadResponse, variables: FormData, context?: unknown) => void;\n onMutate?: (variables: FormData) => void | Promise<unknown>;\n onError?: (error: unknown, variables: FormData, context?: unknown) => void;\n};\n\nexport type DeleteFilesResponse = {\n message: string;\n result: Record<string, unknown>;\n};\n\nexport type BatchFile = {\n file_id: string;\n filepath: string;\n source: FileSources;\n};\n\nexport type DeleteFilesBody = {\n files: BatchFile[];\n assistant_id?: string;\n};\n\nexport type DeleteMutationOptions = {\n onSuccess?: (data: DeleteFilesResponse, variables: DeleteFilesBody, context?: unknown) => void;\n onMutate?: (variables: DeleteFilesBody) => void | Promise<unknown>;\n onError?: (error: unknown, variables: DeleteFilesBody, context?: unknown) => void;\n};\n","/* eslint-disable max-len */\nimport { z } from 'zod';\nimport { EModelEndpoint, eModelEndpointSchema } from './schemas';\nimport { fileConfigSchema } from './file-config';\nimport { FileSources } from './types/files';\n\nexport const defaultSocialLogins = ['google', 'facebook', 'openid', 'github', 'discord'];\n\nexport const fileSourceSchema = z.nativeEnum(FileSources);\n\nexport const assistantEndpointSchema = z.object({\n /* assistants specific */\n disableBuilder: z.boolean().optional(),\n pollIntervalMs: z.number().optional(),\n timeoutMs: z.number().optional(),\n supportedIds: z.array(z.string()).min(1).optional(),\n excludedIds: z.array(z.string()).min(1).optional(),\n /* general */\n apiKey: z.string().optional(),\n baseURL: z.string().optional(),\n models: z\n .object({\n default: z.array(z.string()).min(1),\n fetch: z.boolean().optional(),\n userIdQuery: z.boolean().optional(),\n })\n .optional(),\n titleConvo: z.boolean().optional(),\n titleMethod: z.union([z.literal('completion'), z.literal('functions')]).optional(),\n titleModel: z.string().optional(),\n headers: z.record(z.any()).optional(),\n});\n\nexport type TAssistantEndpoint = z.infer<typeof assistantEndpointSchema>;\n\nexport const endpointSchema = z.object({\n name: z.string().refine((value) => !eModelEndpointSchema.safeParse(value).success, {\n message: `Value cannot be one of the default endpoint (EModelEndpoint) values: ${Object.values(\n EModelEndpoint,\n ).join(', ')}`,\n }),\n apiKey: z.string(),\n baseURL: z.string(),\n models: z.object({\n default: z.array(z.string()).min(1),\n fetch: z.boolean().optional(),\n userIdQuery: z.boolean().optional(),\n }),\n titleConvo: z.boolean().optional(),\n titleMethod: z.union([z.literal('completion'), z.literal('functions')]).optional(),\n titleModel: z.string().optional(),\n summarize: z.boolean().optional(),\n summaryModel: z.string().optional(),\n forcePrompt: z.boolean().optional(),\n modelDisplayLabel: z.string().optional(),\n headers: z.record(z.any()).optional(),\n addParams: z.record(z.any()).optional(),\n dropParams: z.array(z.string()).optional(),\n});\n\nexport const rateLimitSchema = z.object({\n fileUploads: z\n .object({\n ipMax: z.number().optional(),\n ipWindowInMinutes: z.number().optional(),\n userMax: z.number().optional(),\n userWindowInMinutes: z.number().optional(),\n })\n .optional(),\n});\n\nexport const configSchema = z.object({\n version: z.string(),\n cache: z.boolean(),\n fileStrategy: fileSourceSchema.optional(),\n registration: z\n .object({\n socialLogins: z.array(z.string()).optional(),\n allowedDomains: z.array(z.string()).optional(),\n })\n .optional(),\n rateLimits: rateLimitSchema.optional(),\n fileConfig: fileConfigSchema.optional(),\n endpoints: z\n .object({\n [EModelEndpoint.assistants]: assistantEndpointSchema.optional(),\n custom: z.array(endpointSchema.partial()).optional(),\n })\n .strict()\n .refine((data) => Object.keys(data).length > 0, {\n message: 'At least one `endpoints` field must be provided.',\n })\n .optional(),\n});\n\nexport type TCustomConfig = z.infer<typeof configSchema>;\n\nexport enum KnownEndpoints {\n mistral = 'mistral',\n openrouter = 'openrouter',\n}\n\nexport const defaultEndpoints: EModelEndpoint[] = [\n EModelEndpoint.openAI,\n EModelEndpoint.assistants,\n EModelEndpoint.azureOpenAI,\n EModelEndpoint.bingAI,\n EModelEndpoint.chatGPTBrowser,\n EModelEndpoint.gptPlugins,\n EModelEndpoint.google,\n EModelEndpoint.anthropic,\n EModelEndpoint.custom,\n];\n\nexport const alternateName = {\n [EModelEndpoint.openAI]: 'OpenAI',\n [EModelEndpoint.assistants]: 'Assistants',\n [EModelEndpoint.azureOpenAI]: 'Azure OpenAI',\n [EModelEndpoint.bingAI]: 'Bing',\n [EModelEndpoint.chatGPTBrowser]: 'ChatGPT',\n [EModelEndpoint.gptPlugins]: 'Plugins',\n [EModelEndpoint.google]: 'Google',\n [EModelEndpoint.anthropic]: 'Anthropic',\n [EModelEndpoint.custom]: 'Custom',\n};\n\nexport const defaultModels = {\n [EModelEndpoint.assistants]: [\n 'gpt-3.5-turbo-0125',\n 'gpt-4-0125-preview',\n 'gpt-4-turbo-preview',\n 'gpt-4-1106-preview',\n 'gpt-3.5-turbo-1106',\n 'gpt-3.5-turbo-16k-0613',\n 'gpt-3.5-turbo-16k',\n 'gpt-3.5-turbo',\n 'gpt-4',\n 'gpt-4-0314',\n 'gpt-4-32k-0314',\n 'gpt-4-0613',\n 'gpt-3.5-turbo-0613',\n ],\n [EModelEndpoint.google]: [\n 'gemini-pro',\n 'gemini-pro-vision',\n 'chat-bison',\n 'chat-bison-32k',\n 'codechat-bison',\n 'codechat-bison-32k',\n 'text-bison',\n 'text-bison-32k',\n 'text-unicorn',\n 'code-gecko',\n 'code-bison',\n 'code-bison-32k',\n ],\n [EModelEndpoint.anthropic]: [\n 'claude-2.1',\n 'claude-2',\n 'claude-1.2',\n 'claude-1',\n 'claude-1-100k',\n 'claude-instant-1',\n 'claude-instant-1-100k',\n ],\n [EModelEndpoint.openAI]: [\n 'gpt-3.5-turbo-0125',\n 'gpt-3.5-turbo-16k-0613',\n 'gpt-3.5-turbo-16k',\n 'gpt-4-turbo-preview',\n 'gpt-4-0125-preview',\n 'gpt-4-1106-preview',\n 'gpt-3.5-turbo',\n 'gpt-3.5-turbo-1106',\n 'gpt-4-vision-preview',\n 'gpt-4',\n 'gpt-3.5-turbo-instruct-0914',\n 'gpt-3.5-turbo-0613',\n 'gpt-3.5-turbo-0301',\n 'gpt-3.5-turbo-instruct',\n 'gpt-4-0613',\n 'text-davinci-003',\n 'gpt-4-0314',\n ],\n};\n\nexport const supportsRetrieval = new Set([\n 'gpt-3.5-turbo-0125',\n 'gpt-4-0125-preview',\n 'gpt-4-turbo-preview',\n 'gpt-4-1106-preview',\n 'gpt-3.5-turbo-1106',\n]);\n\nexport const EndpointURLs: { [key in EModelEndpoint]: string } = {\n [EModelEndpoint.openAI]: `/api/ask/${EModelEndpoint.openAI}`,\n [EModelEndpoint.bingAI]: `/api/ask/${EModelEndpoint.bingAI}`,\n [EModelEndpoint.google]: `/api/ask/${EModelEndpoint.google}`,\n [EModelEndpoint.custom]: `/api/ask/${EModelEndpoint.custom}`,\n [EModelEndpoint.anthropic]: `/api/ask/${EModelEndpoint.anthropic}`,\n [EModelEndpoint.gptPlugins]: `/api/ask/${EModelEndpoint.gptPlugins}`,\n [EModelEndpoint.azureOpenAI]: `/api/ask/${EModelEndpoint.azureOpenAI}`,\n [EModelEndpoint.chatGPTBrowser]: `/api/ask/${EModelEndpoint.chatGPTBrowser}`,\n [EModelEndpoint.assistants]: '/api/assistants/chat',\n};\n\nexport const modularEndpoints = new Set<EModelEndpoint | string>([\n EModelEndpoint.gptPlugins,\n EModelEndpoint.anthropic,\n EModelEndpoint.google,\n EModelEndpoint.openAI,\n EModelEndpoint.azureOpenAI,\n EModelEndpoint.custom,\n]);\n\nexport const supportsBalanceCheck = {\n [EModelEndpoint.openAI]: true,\n [EModelEndpoint.azureOpenAI]: true,\n [EModelEndpoint.gptPlugins]: true,\n [EModelEndpoint.custom]: true,\n};\n\nexport const visionModels = ['gpt-4-vision', 'llava-13b', 'gemini-pro-vision'];\n\nexport function validateVisionModel(\n model: string | undefined,\n additionalModels: string[] | undefined = [],\n) {\n if (!model) {\n return false;\n }\n\n return visionModels.concat(additionalModels).some((visionModel) => model.includes(visionModel));\n}\n\nexport const imageGenTools = new Set(['dalle', 'dall-e', 'stable-diffusion']);\n\n/**\n * Enum for cache keys.\n */\nexport enum CacheKeys {\n /**\n * Key for the config store namespace.\n */\n CONFIG_STORE = 'configStore',\n /**\n * Key for the plugins cache.\n */\n PLUGINS = 'plugins',\n /**\n * Key for the title generation cache.\n */\n GEN_TITLE = 'genTitle',\n /**\n /**\n * Key for the tools cache.\n */\n TOOLS = 'tools',\n /**\n * Key for the model config cache.\n */\n MODELS_CONFIG = 'modelsConfig',\n /**\n * Key for the model queries cache.\n */\n MODEL_QUERIES = 'modelQueries',\n /**\n * Key for the default endpoint config cache.\n */\n ENDPOINT_CONFIG = 'endpointsConfig',\n /**\n * Key for accessing the model token config cache.\n */\n TOKEN_CONFIG = 'tokenConfig',\n /**\n * Key for the custom config cache.\n */\n CUSTOM_CONFIG = 'customConfig',\n /**\n * Key for accessing Abort Keys\n */\n ABORT_KEYS = 'abortKeys',\n /**\n * Key for the override config cache.\n */\n OVERRIDE_CONFIG = 'overrideConfig',\n /**\n * Key for accessing File Upload Violations (exceeding limit).\n */\n FILE_UPLOAD_LIMIT = 'file_upload_limit',\n}\n\n/**\n * Enum for authentication keys.\n */\nexport enum AuthKeys {\n /**\n * Key for the Service Account to use Vertex AI.\n */\n GOOGLE_SERVICE_KEY = 'GOOGLE_SERVICE_KEY',\n /**\n * API key to use Google Generative AI.\n */\n GOOGLE_API_KEY = 'GOOGLE_API_KEY',\n}\n\n/**\n * Enum for Image Detail Cost.\n *\n * **Low Res Fixed Cost:** `85`\n *\n * **High Res Calculation:**\n *\n * Number of `512px` Tiles * `170` + `85` (Additional Cost)\n */\nexport enum ImageDetailCost {\n /**\n * Low resolution is a fixed value.\n */\n LOW = 85,\n /**\n * High resolution Cost Per Tile\n */\n HIGH = 170,\n /**\n * Additional Cost added to High Resolution Total Cost\n */\n ADDITIONAL = 85,\n}\n\n/**\n * Tab values for Settings Dialog\n */\nexport enum SettingsTabValues {\n /**\n * Tab for General Settings\n */\n GENERAL = 'general',\n /**\n * Tab for Beta Features\n */\n BETA = 'beta',\n /**\n * Tab for Data Controls\n */\n DATA = 'data',\n /**\n * Tab for Account Settings\n */\n ACCOUNT = 'account',\n}\n\n/**\n * Enum for app-wide constants\n */\nexport enum Constants {\n /**\n * Key for the app's version.\n */\n VERSION = 'v0.6.10',\n /**\n * Key for the Custom Config's version (librechat.yaml).\n */\n CONFIG_VERSION = '1.0.3',\n /**\n * Standard value for the first message's `parentMessageId` value, to indicate no parent exists.\n */\n NO_PARENT = '00000000-0000-0000-0000-000000000000',\n}\n\nexport const defaultOrderQuery: {\n order: 'asc';\n} = {\n order: 'asc',\n};\n","export const user = () => '/api/user';\n\nexport const balance = () => '/api/balance';\n\nexport const userPlugins = () => '/api/user/plugins';\n\nexport const messages = (conversationId: string, messageId?: string) =>\n `/api/messages/${conversationId}${messageId ? `/${messageId}` : ''}`;\n\nconst keysEndpoint = '/api/keys';\n\nexport const keys = () => keysEndpoint;\n\nexport const userKeyQuery = (name: string) => `${keysEndpoint}?name=${name}`;\n\nexport const revokeUserKey = (name: string) => `${keysEndpoint}/${name}`;\n\nexport const revokeAllUserKeys = () => `${keysEndpoint}?all=true`;\n\nexport const abortRequest = (endpoint: string) => `/api/ask/${endpoint}/abort`;\n\nexport const conversations = (pageNumber: string) => `/api/convos?pageNumber=${pageNumber}`;\n\nexport const conversationById = (id: string) => `/api/convos/${id}`;\n\nexport const genTitle = () => '/api/convos/gen_title';\n\nexport const updateConversation = () => '/api/convos/update';\n\nexport const deleteConversation = () => '/api/convos/clear';\n\nexport const search = (q: string, pageNumber: string) =>\n `/api/search?q=${q}&pageNumber=${pageNumber}`;\n\nexport const searchEnabled = () => '/api/search/enable';\n\nexport const presets = () => '/api/presets';\n\nexport const deletePreset = () => '/api/presets/delete';\n\nexport const aiEndpoints = () => '/api/endpoints';\n\nexport const endpointsConfigOverride = () => '/api/endpoints/config/override';\n\nexport const models = () => '/api/models';\n\nexport const tokenizer = () => '/api/tokenizer';\n\nexport const login = () => '/api/auth/login';\n\nexport const logout = () => '/api/auth/logout';\n\nexport const register = () => '/api/auth/register';\n\nexport const loginFacebook = () => '/api/auth/facebook';\n\nexport const loginGoogle = () => '/api/auth/google';\n\nexport const refreshToken = (retry?: boolean) => `/api/auth/refresh${retry ? '?retry=true' : ''}`;\n\nexport const requestPasswordReset = () => '/api/auth/requestPasswordReset';\n\nexport const resetPassword = () => '/api/auth/resetPassword';\n\nexport const plugins = () => '/api/plugins';\n\nexport const config = () => '/api/config';\n\nexport const assistants = (id?: string) => `/api/assistants${id ? `/${id}` : ''}`;\n\nexport const files = () => '/api/files';\n\nexport const images = () => `${files()}/images`;\n\nexport const avatar = () => `${images()}/avatar`;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios, { AxiosRequestConfig, AxiosError } from 'axios';\nimport { setTokenHeader } from './headers-helpers';\nimport * as endpoints from './api-endpoints';\n\nasync function _get<T>(url: string, options?: AxiosRequestConfig): Promise<T> {\n const response = await axios.get(url, { ...options });\n return response.data;\n}\n\nasync function _post(url: string, data?: any) {\n const response = await axios.post(url, JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n });\n return response.data;\n}\n\nasync function _postMultiPart(url: string, formData: FormData, options?: AxiosRequestConfig) {\n const response = await axios.post(url, formData, {\n ...options,\n headers: { 'Content-Type': 'multipart/form-data' },\n });\n return response.data;\n}\n\nasync function _put(url: string, data?: any) {\n const response = await axios.put(url, JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n });\n return response.data;\n}\n\nasync function _delete<T>(url: string): Promise<T> {\n const response = await axios.delete(url);\n return response.data;\n}\n\nasync function _deleteWithOptions<T>(url: string, options?: AxiosRequestConfig): Promise<T> {\n const response = await axios.delete(url, { ...options });\n return response.data;\n}\n\nasync function _patch(url: string, data?: any) {\n const response = await axios.patch(url, JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n });\n return response.data;\n}\n\nlet isRefreshing = false;\nlet failedQueue: { resolve: (value?: any) => void; reject: (reason?: any) => void }[] = [];\n\nconst refreshToken = (retry?: boolean) => _post(endpoints.refreshToken(retry));\n\nconst processQueue = (error: AxiosError | null, token: string | null = null) => {\n failedQueue.forEach((prom) => {\n if (error) {\n prom.reject(error);\n } else {\n prom.resolve(token);\n }\n });\n failedQueue = [];\n};\n\naxios.interceptors.response.use(\n (response) => response,\n async (error) => {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n if (isRefreshing) {\n try {\n const token = await new Promise((resolve, reject) => {\n failedQueue.push({ resolve, reject });\n });\n originalRequest.headers['Authorization'] = 'Bearer ' + token;\n return await axios(originalRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n }\n\n isRefreshing = true;\n\n try {\n const { token } = await refreshToken(\n // Handle edge case where we get a blank screen if the initial 401 error is from a refresh token request\n originalRequest.url?.includes('api/auth/refresh') ? true : false,\n );\n\n if (token) {\n originalRequest.headers['Authorization'] = 'Bearer ' + token;\n setTokenHeader(token);\n window.dispatchEvent(new CustomEvent('tokenUpdated', { detail: token }));\n processQueue(null, token);\n return await axios(originalRequest);\n } else {\n window.location.href = '/login';\n }\n } catch (err) {\n processQueue(err as AxiosError, null);\n return Promise.reject(err);\n } finally {\n isRefreshing = false;\n }\n }\n\n return Promise.reject(error);\n },\n);\n\nexport default {\n get: _get,\n post: _post,\n postMultiPart: _postMultiPart,\n put: _put,\n delete: _delete,\n deleteWithOptions: _deleteWithOptions,\n patch: _patch,\n refreshToken,\n};\n","import axios from 'axios';\n\nexport function setAcceptLanguageHeader(value: string): void {\n axios.defaults.headers.common['Accept-Language'] = value;\n}\n\nexport function setTokenHeader(token: string) {\n axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;\n}\n","import * as f from './types/files';\nimport * as q from './types/queries';\nimport * as m from './types/mutations';\nimport * as a from './types/assistants';\nimport * as t from './types';\nimport * as s from './schemas';\nimport request from './request';\nimport * as endpoints from './api-endpoints';\n\nexport function getConversations(pageNumber: string): Promise<t.TGetConversationsResponse> {\n return request.get(endpoints.conversations(pageNumber));\n}\n\nexport function abortRequestWithMessage(\n endpoint: string,\n abortKey: string,\n message: string,\n): Promise<void> {\n return request.post(endpoints.abortRequest(endpoint), { arg: { abortKey, message } });\n}\n\nexport function deleteConversation(payload: t.TDeleteConversationRequest) {\n //todo: this should be a DELETE request\n return request.post(endpoints.deleteConversation(), { arg: payload });\n}\n\nexport function clearAllConversations(): Promise<unknown> {\n return request.post(endpoints.deleteConversation(), { arg: {} });\n}\n\nexport function revokeUserKey(name: string): Promise<unknown> {\n return request.delete(endpoints.revokeUserKey(name));\n}\n\nexport function revokeAllUserKeys(): Promise<unknown> {\n return request.delete(endpoints.revokeAllUserKeys());\n}\n\nexport function getMessagesByConvoId(conversationId: string): Promise<s.TMessage[]> {\n if (conversationId === 'new') {\n return Promise.resolve([]);\n }\n return request.get(endpoints.messages(conversationId));\n}\n\nexport function getConversationById(id: string): Promise<s.TConversation> {\n return request.get(endpoints.conversationById(id));\n}\n\nexport function updateConversation(\n payload: t.TUpdateConversationRequest,\n): Promise<t.TUpdateConversationResponse> {\n return request.post(endpoints.updateConversation(), { arg: payload });\n}\n\nexport function genTitle(payload: m.TGenTitleRequest): Promise<m.TGenTitleResponse> {\n return request.post(endpoints.genTitle(), payload);\n}\n\nexport function updateMessage(payload: t.TUpdateMessageRequest): Promise<unknown> {\n const { conversationId, messageId, text } = payload;\n if (!conversationId) {\n throw new Error('conversationId is required');\n }\n\n return request.put(endpoints.messages(conversationId, messageId), { text });\n}\n\nexport function updateUserKey(payload: t.TUpdateUserKeyRequest) {\n const { value } = payload;\n if (!value) {\n throw new Error('value is required');\n }\n\n return request.put(endpoints.keys(), payload);\n}\n\nexport function getPresets(): Promise<s.TPreset[]> {\n return request.get(endpoints.presets());\n}\n\nexport function createPreset(payload: s.TPreset): Promise<s.TPreset> {\n return request.post(endpoints.presets(), payload);\n}\n\nexport function updatePreset(payload: s.TPreset): Promise<s.TPreset> {\n return request.post(endpoints.presets(), payload);\n}\n\nexport function deletePreset(arg: s.TPreset | undefined): Promise<m.PresetDeleteResponse> {\n return request.post(endpoints.deletePreset(), arg);\n}\n\nexport function getSearchEnabled(): Promise<boolean> {\n return request.get(endpoints.searchEnabled());\n}\n\nexport function getUser(): Promise<t.TUser> {\n return request.get(endpoints.user());\n}\n\nexport function getUserBalance(): Promise<string> {\n return request.get(endpoints.balance());\n}\n\nexport const searchConversations = async (\n q: string,\n pageNumber: string,\n): Promise<t.TSearchResults> => {\n return request.get(endpoints.search(q, pageNumber));\n};\n\nexport const updateTokenCount = (text: string) => {\n return request.post(endpoints.tokenizer(), { arg: text });\n};\n\nexport const login = (payload: t.TLoginUser) => {\n return request.post(endpoints.login(), payload);\n};\n\nexport const logout = () => {\n return request.post(endpoints.logout());\n};\n\nexport const register = (payload: t.TRegisterUser) => {\n return request.post(endpoints.register(), payload);\n};\n\nexport const userKeyQuery = (name: string): Promise<t.TCheckUserKeyResponse> =>\n request.get(endpoints.userKeyQuery(name));\n\nexport const getLoginGoogle = () => {\n return request.get(endpoints.loginGoogle());\n};\n\nexport const requestPasswordReset = (\n payload: t.TRequestPasswordReset,\n): Promise<t.TRequestPasswordResetResponse> => {\n return request.post(endpoints.requestPasswordReset(), payload);\n};\n\nexport const resetPassword = (payload: t.TResetPassword) => {\n return request.post(endpoints.resetPassword(), payload);\n};\n\nexport const getAvailablePlugins = (): Promise<s.TPlugin[]> => {\n return request.get(endpoints.plugins());\n};\n\nexport const updateUserPlugins = (payload: t.TUpdateUserPlugins) => {\n return request.post(endpoints.userPlugins(), payload);\n};\n\n/* Config */\n\nexport const getStartupConfig = (): Promise<t.TStartupConfig> => {\n return request.get(endpoints.config());\n};\n\nexport const getAIEndpoints = (): Promise<t.TEndpointsConfig> => {\n return request.get(endpoints.aiEndpoints());\n};\n\nexport const getModels = async (): Promise<t.TModelsConfig> => {\n return request.get(endpoints.models());\n};\n\nexport const getEndpointsConfigOverride = (): Promise<unknown | boolean> => {\n return request.get(endpoints.endpointsConfigOverride());\n};\n\n/* Assistants */\n\nexport const createAssistant = (data: a.AssistantCreateParams): Promise<a.Assistant> => {\n return request.post(endpoints.assistants(), data);\n};\n\nexport const getAssistantById = (assistant_id: string): Promise<a.Assistant> => {\n return request.get(endpoints.assistants(assistant_id));\n};\n\nexport const updateAssistant = (\n assistant_id: string,\n data: a.AssistantUpdateParams,\n): Promise<a.Assistant> => {\n return request.patch(endpoints.assistants(assistant_id), data);\n};\n\nexport const deleteAssistant = (assistant_id: string): Promise<void> => {\n return request.delete(endpoints.assistants(assistant_id));\n};\n\nexport const listAssistants = (\n params?: a.AssistantListParams,\n): Promise<a.AssistantListResponse> => {\n return request.get(endpoints.assistants(), { params });\n};\n\n/* Tools */\n\nexport const getAvailableTools = (): Promise<s.TPlugin[]> => {\n return request.get(`${endpoints.assistants()}/tools`);\n};\n\n/* Files */\n\nexport const getFiles = (): Promise<f.TFile[]> => {\n return request.get(endpoints.files());\n};\n\nexport const getFileConfig = (): Promise<f.FileConfig> => {\n return request.get(`${endpoints.files()}/config`);\n};\n\nexport const uploadImage = (data: FormData): Promise<f.TFileUpload> => {\n return request.postMultiPart(endpoints.images(), data);\n};\n\nexport const uploadFile = (data: FormData): Promise<f.TFileUpload> => {\n return request.postMultiPart(endpoints.files(), data);\n};\n\nexport const uploadAvatar = (data: FormData): Promise<f.AvatarUploadResponse> => {\n return request.postMultiPart(endpoints.avatar(), data);\n};\n\nexport const uploadAssistantAvatar = (data: m.AssistantAvatarVariables): Promise<a.Assistant> => {\n return request.postMultiPart(endpoints.assistants(`avatar/${data.assistant_id}`), data.formData);\n};\n\nexport const updateAction = (data: m.UpdateActionVariables): Promise<m.UpdateActionResponse> => {\n const { assistant_id, ...body } = data;\n return request.post(endpoints.assistants(`actions/${assistant_id}`), body);\n};\n\nexport function getActions(): Promise<a.Action[]> {\n return request.get(endpoints.assistants('actions'));\n}\n\nexport function getAssistantDocs(): Promise<a.AssistantDocument[]> {\n return request.get(endpoints.assistants('documents'));\n}\n\nexport const deleteFiles = async (\n files: f.BatchFile[],\n assistant_id?: string,\n): Promise<f.DeleteFilesResponse> =>\n request.deleteWithOptions(endpoints.files(), {\n data: { files, assistant_id },\n });\n\n/* conversations */\n\nexport const listConversations = (\n params?: q.ConversationListParams,\n): Promise<q.ConversationListResponse> => {\n // Assuming params has a pageNumber property\n const pageNumber = params?.pageNumber || '1'; // Default to page 1 if not provided\n return request.get(endpoints.conversations(pageNumber));\n};\n\nexport const listConversationsByQuery = (\n params?: q.ConversationListParams & { searchQuery?: string },\n): Promise<q.ConversationListResponse> => {\n const pageNumber = params?.pageNumber || '1'; // Default to page 1 if not provided\n const searchQuery = params?.searchQuery || ''; // If no search query is provided, default to an empty string\n // Update the endpoint to handle a search query\n if (searchQuery !== '') {\n return request.get(endpoints.search(searchQuery, pageNumber));\n } else {\n return request.get(endpoints.conversations(pageNumber));\n }\n};\n\nexport const deleteAction = async (assistant_id: string, action_id: string): Promise<void> =>\n request.delete(endpoints.assistants(`actions/${assistant_id}/${action_id}`));\n","export enum QueryKeys {\n messages = 'messages',\n allConversations = 'allConversations',\n searchConversations = 'searchConversations',\n conversation = 'conversation',\n searchEnabled = 'searchEnabled',\n user = 'user',\n name = 'name', // user key name\n models = 'models',\n balance = 'balance',\n endpoints = 'endpoints',\n presets = 'presets',\n searchResults = 'searchResults',\n tokenCount = 'tokenCount',\n availablePlugins = 'availablePlugins',\n startupConfig = 'startupConfig',\n assistants = 'assistants',\n assistant = 'assistant',\n endpointsConfigOverride = 'endpointsConfigOverride',\n files = 'files',\n fileConfig = 'fileConfig',\n tools = 'tools',\n actions = 'actions',\n assistantDocs = 'assistantDocs',\n}\n\nexport enum MutationKeys {\n fileUpload = 'fileUpload',\n fileDelete = 'fileDelete',\n updatePreset = 'updatePreset',\n deletePreset = 'deletePreset',\n logoutUser = 'logoutUser',\n avatarUpload = 'avatarUpload',\n assistantAvatarUpload = 'assistantAvatarUpload',\n updateAction = 'updateAction',\n deleteAction = 'deleteAction',\n}\n","import {\n UseQueryOptions,\n useQuery,\n useMutation,\n useQueryClient,\n UseMutationResult,\n QueryObserverResult,\n} from '@tanstack/react-query';\nimport * as t from '../types';\nimport * as s from '../schemas';\nimport * as m from '../types/mutations';\nimport { defaultOrderQuery } from '../config';\nimport * as dataService from '../data-service';\nimport request from '../request';\nimport { QueryKeys } from '../keys';\n\nexport const useAbortRequestWithMessage = (): UseMutationResult<\n void,\n Error,\n { endpoint: string; abortKey: string; message: string }\n> => {\n const queryClient = useQueryClient();\n return useMutation(\n ({ endpoint, abortKey, message }) =>\n dataService.abortRequestWithMessage(endpoint, abortKey, message),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.balance]);\n },\n },\n );\n};\n\nexport const useGetUserQuery = (\n config?: UseQueryOptions<t.TUser>,\n): QueryObserverResult<t.TUser> => {\n return useQuery<t.TUser>([QueryKeys.user], () => dataService.getUser(), {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: false,\n ...config,\n });\n};\n\nexport const useGetMessagesByConvoId = <TData = s.TMessage[]>(\n id: string,\n config?: UseQueryOptions<s.TMessage[], unknown, TData>,\n): QueryObserverResult<TData> => {\n return useQuery<s.TMessage[], unknown, TData>(\n [QueryKeys.messages, id],\n () => dataService.getMessagesByConvoId(id),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\nexport const useGetUserBalance = (\n config?: UseQueryOptions<string>,\n): QueryObserverResult<string> => {\n return useQuery<string>([QueryKeys.balance], () => dataService.getUserBalance(), {\n refetchOnWindowFocus: true,\n refetchOnReconnect: true,\n refetchOnMount: true,\n ...config,\n });\n};\n\nexport const useGetConversationByIdQuery = (\n id: string,\n config?: UseQueryOptions<s.TConversation>,\n): QueryObserverResult<s.TConversation> => {\n return useQuery<s.TConversation>(\n [QueryKeys.conversation, id],\n () => dataService.getConversationById(id),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\n//This isn't ideal because its just a query and we're using mutation, but it was the only way\n//to make it work with how the Chat component is structured\nexport const useGetConversationByIdMutation = (id: string): UseMutationResult<s.TConversation> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.getConversationById(id), {\n // onSuccess: (res: s.TConversation) => {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.conversation, id]);\n },\n });\n};\n\nexport const useUpdateMessageMutation = (\n id: string,\n): UseMutationResult<unknown, unknown, t.TUpdateMessageRequest, unknown> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TUpdateMessageRequest) => dataService.updateMessage(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.messages, id]);\n },\n });\n};\n\nexport const useUpdateUserKeysMutation = (): UseMutationResult<\n t.TUser,\n unknown,\n t.TUpdateUserKeyRequest,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TUpdateUserKeyRequest) => dataService.updateUserKey(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.name]);\n },\n });\n};\n\nexport const useClearConversationsMutation = (): UseMutationResult<unknown> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.clearAllConversations(), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.allConversations]);\n },\n });\n};\n\nexport const useRevokeUserKeyMutation = (name: string): UseMutationResult<unknown> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.revokeUserKey(name), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.name]);\n if (name === s.EModelEndpoint.assistants) {\n queryClient.invalidateQueries([QueryKeys.assistants, defaultOrderQuery]);\n queryClient.invalidateQueries([QueryKeys.assistantDocs]);\n queryClient.invalidateQueries([QueryKeys.assistants]);\n queryClient.invalidateQueries([QueryKeys.assistant]);\n queryClient.invalidateQueries([QueryKeys.actions]);\n queryClient.invalidateQueries([QueryKeys.tools]);\n }\n },\n });\n};\n\nexport const useRevokeAllUserKeysMutation = (): UseMutationResult<unknown> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.revokeAllUserKeys(), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.name]);\n queryClient.invalidateQueries([QueryKeys.assistants, defaultOrderQuery]);\n queryClient.invalidateQueries([QueryKeys.assistantDocs]);\n queryClient.invalidateQueries([QueryKeys.assistants]);\n queryClient.invalidateQueries([QueryKeys.assistant]);\n queryClient.invalidateQueries([QueryKeys.actions]);\n queryClient.invalidateQueries([QueryKeys.tools]);\n },\n });\n};\n\nexport const useGetConversationsQuery = (\n pageNumber: string,\n config?: UseQueryOptions<t.TGetConversationsResponse>,\n): QueryObserverResult<t.TGetConversationsResponse> => {\n return useQuery<t.TGetConversationsResponse>(\n [QueryKeys.allConversations],\n () => dataService.getConversations(pageNumber),\n {\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: 1,\n ...config,\n },\n );\n};\n\nexport const useGetSearchEnabledQuery = (\n config?: UseQueryOptions<boolean>,\n): QueryObserverResult<boolean> => {\n return useQuery<boolean>([QueryKeys.searchEnabled], () => dataService.getSearchEnabled(), {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n });\n};\n\nexport const useGetEndpointsQuery = <TData = t.TEndpointsConfig>(\n config?: UseQueryOptions<t.TEndpointsConfig, unknown, TData>,\n): QueryObserverResult<TData> => {\n return useQuery<t.TEndpointsConfig, unknown, TData>(\n [QueryKeys.endpoints],\n () => dataService.getAIEndpoints(),\n {\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\nexport const useGetModelsQuery = (\n config?: UseQueryOptions<t.TModelsConfig>,\n): QueryObserverResult<t.TModelsConfig> => {\n return useQuery<t.TModelsConfig>([QueryKeys.models], () => dataService.getModels(), {\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n });\n};\n\nexport const useCreatePresetMutation = (): UseMutationResult<\n s.TPreset,\n unknown,\n s.TPreset,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: s.TPreset) => dataService.createPreset(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.presets]);\n },\n });\n};\n\nexport const useDeletePresetMutation = (): UseMutationResult<\n m.PresetDeleteResponse,\n unknown,\n s.TPreset | undefined,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: s.TPreset | undefined) => dataService.deletePreset(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.presets]);\n },\n });\n};\n\nexport const useSearchQuery = (\n searchQuery: string,\n pageNumber: string,\n config?: UseQueryOptions<t.TSearchResults>,\n): QueryObserverResult<t.TSearchResults> => {\n return useQuery<t.TSearchResults>(\n [QueryKeys.searchResults, pageNumber, searchQuery],\n () => dataService.searchConversations(searchQuery, pageNumber),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\nexport const useUpdateTokenCountMutation = (): UseMutationResult<\n t.TUpdateTokenCountResponse,\n unknown,\n { text: string },\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation(({ text }: { text: string }) => dataService.updateTokenCount(text), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.tokenCount]);\n },\n });\n};\n\nexport const useLoginUserMutation = (): UseMutationResult<\n t.TLoginResponse,\n unknown,\n t.TLoginUser,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TLoginUser) => dataService.login(payload), {\n onMutate: () => {\n queryClient.removeQueries();\n localStorage.removeItem('lastConversationSetup');\n localStorage.removeItem('lastSelectedModel');\n localStorage.removeItem('lastSelectedTools');\n localStorage.removeItem('filesToDelete');\n // localStorage.removeItem('lastAssistant');\n },\n });\n};\n\nexport const useRegisterUserMutation = (): UseMutationResult<\n unknown,\n unknown,\n t.TRegisterUser,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TRegisterUser) => dataService.register(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.user]);\n },\n });\n};\n\nexport const useRefreshTokenMutation = (): UseMutationResult<\n t.TRefreshTokenResponse,\n unknown,\n unknown,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation(() => request.refreshToken(), {\n onMutate: () => {\n queryClient.removeQueries();\n },\n });\n};\n\nexport const useUserKeyQuery = (\n name: string,\n config?: UseQueryOptions<t.TCheckUserKeyResponse>,\n): QueryObserverResult<t.TCheckUserKeyResponse> => {\n return useQuery<t.TCheckUserKeyResponse>(\n [QueryKeys.name, name],\n () => {\n if (!name) {\n return Promise.resolve({ expiresAt: '' });\n }\n return dataService.userKeyQuery(name);\n },\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: false,\n ...config,\n },\n );\n};\n\nexport const useRequestPasswordResetMutation = (): UseMutationResult<\n t.TRequestPasswordResetResponse,\n unknown,\n t.TRequestPasswordReset,\n unknown\n> => {\n return useMutation((payload: t.TRequestPasswordReset) =>\n dataService.requestPasswordReset(payload),\n );\n};\n\nexport const useResetPasswordMutation = (): UseMutationResult<\n unknown,\n unknown,\n t.TResetPassword,\n unknown\n> => {\n return useMutation((payload: t.TResetPassword) => dataService.resetPassword(payload));\n};\n\nexport const useAvailablePluginsQuery = (): QueryObserverResult<s.TPlugin[]> => {\n return useQuery<s.TPlugin[]>(\n [QueryKeys.availablePlugins],\n () => dataService.getAvailablePlugins(),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n },\n );\n};\n\nexport const useUpdateUserPluginsMutation = (): UseMutationResult<\n t.TUser,\n unknown,\n t.TUpdateUserPlugins,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TUpdateUserPlugins) => dataService.updateUserPlugins(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.user]);\n },\n });\n};\n\nexport const useGetStartupConfig = (): QueryObserverResult<t.TStartupConfig> => {\n return useQuery<t.TStartupConfig>(\n [QueryKeys.startupConfig],\n () => dataService.getStartupConfig(),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n },\n );\n};\n"],"names":["EModelEndpoint","z","string","uuid","ImageDetail","google","_a","model","default","maxOutputTokens","min","max","step","maxGeminiPro","defaultGeminiPro","temperature","topP","topK","eModelEndpointSchema","nativeEnum","extendedModelEndpointSchema","union","_b","low","auto","high","eImageDetailSchema","tPluginAuthConfigSchema","object","authField","label","description","tPluginSchema","name","pluginKey","icon","authConfig","array","authenticated","boolean","optional","isButton","tExampleSchema","input","content","output","tAgentOptionsSchema","agent","skipCompletion","number","messageId","endpoint","clientId","nullable","conversationId","parentMessageId","responseMessageId","overrideParentMessageId","bg","title","or","literal","sender","text","generation","isEdited","isCreatedByUser","error","createdAt","Date","toISOString","updatedAt","current","unfinished","searchResult","finish_reason","thread_id","tConversationSchema","user","endpointType","suggestions","messages","tools","systemMessage","modelLabel","examples","chatGptLabel","userLabel","promptPrefix","context","top_p","frequency_penalty","presence_penalty","jailbreak","jailbreakConversationId","conversationSignature","invocationId","toneStyle","agentOptions","file_ids","resendImages","imageDetail","assistant_id","instructions","presetOverride","record","unknown","removeNullishValues","obj","newObj","__assign","Object","keys","forEach","key","undefined","omit","merge","presetId","defaultPreset","order","pick","transform","_c","_d","_e","_f","_g","_h","_j","catch","isGeminiPro","toLowerCase","includes","maxOutputTokensMax","maxOutputTokensDefault","Math","_k","length","openAI","assistants","azureOpenAI","custom","excelFileTypes","__spreadArray","imageMimeTypes","supportedMimeTypes","mbToBytes","mb","fileLimit","fileSizeLimit","totalSizeLimit","disabled","FileSources","FileContext","supportedMimeTypesSchema","any","refine","mimeTypes","every","mimeType","RegExp","message","endpointFileConfigSchema","fileConfigSchema","endpoints","serverFileSizeLimit","avatarSizeLimit","KnownEndpoints","CacheKeys","AuthKeys","ImageDetailCost","SettingsTabValues","Constants","fileSourceSchema","assistantEndpointSchema","disableBuilder","pollIntervalMs","timeoutMs","supportedIds","excludedIds","apiKey","baseURL","models","fetch","userIdQuery","titleConvo","titleMethod","titleModel","headers","endpointSchema","value","safeParse","success","concat","values","join","summarize","summaryModel","forcePrompt","modelDisplayLabel","addParams","dropParams","rateLimitSchema","fileUploads","ipMax","ipWindowInMinutes","userMax","userWindowInMinutes","version","cache","fileStrategy","registration","socialLogins","allowedDomains","rateLimits","fileConfig","partial","strict","data","bingAI","chatGPTBrowser","gptPlugins","anthropic","Set","defaultOrderQuery","keysEndpoint","search","q","pageNumber","_post","url","axios","post","JSON","stringify","sent","isRefreshing","failedQueue","refreshToken","retry","endpoints.refreshToken","processQueue","token","prom","reject","resolve","interceptors","response","use","__awaiter","originalRequest","config","status","_retry","Promise","push","err_1","defaults","common","setTokenHeader","window","dispatchEvent","CustomEvent","detail","location","href","err_2","request","get","options","postMultiPart","formData","put","delete","deleteWithOptions","patch","revokeUserKey","endpoints.revokeUserKey","revokeAllUserKeys","getConversationById","id","endpoints.conversationById","updateUserKey","payload","Error","QueryKeys","MutationKeys","userKeyQuery","endpoints.userKeyQuery","useAbortRequestWithMessage","queryClient","useQueryClient","useMutation","abortKey","endpoints.abortRequest","arg","dataService.abortRequestWithMessage","onSuccess","invalidateQueries","balance","useGetUserQuery","useQuery","refetchOnWindowFocus","refetchOnReconnect","refetchOnMount","useGetMessagesByConvoId","endpoints.messages","useGetUserBalance","useGetConversationByIdQuery","conversation","dataService.getConversationById","useGetConversationByIdMutation","useUpdateMessageMutation","dataService.updateMessage","useUpdateUserKeysMutation","dataService.updateUserKey","useClearConversationsMutation","allConversations","useRevokeUserKeyMutation","dataService.revokeUserKey","s.EModelEndpoint","assistantDocs","assistant","actions","useRevokeAllUserKeysMutation","dataService.revokeAllUserKeys","useGetConversationsQuery","endpoints.conversations","dataService.getConversations","useGetSearchEnabledQuery","searchEnabled","useGetEndpointsQuery","staleTime","Infinity","useGetModelsQuery","useCreatePresetMutation","dataService.createPreset","presets","useDeletePresetMutation","useSearchQuery","searchQuery","searchResults","endpoints.search","dataService.searchConversations","useUpdateTokenCountMutation","dataService.updateTokenCount","tokenCount","useLoginUserMutation","dataService.login","onMutate","removeQueries","localStorage","removeItem","useRegisterUserMutation","dataService.register","useRefreshTokenMutation","useUserKeyQuery","dataService.userKeyQuery","expiresAt","useRequestPasswordResetMutation","dataService.requestPasswordReset","useResetPasswordMutation","dataService.resetPassword","useAvailablePluginsQuery","availablePlugins","useUpdateUserPluginsMutation","dataService.updateUserPlugins","useGetStartupConfig","startupConfig"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/schemas.ts","../../src/file-config.ts","../../src/types/files.ts","../../src/config.ts","../../src/api-endpoints.ts","../../src/request.ts","../../src/headers-helpers.ts","../../src/data-service.ts","../../src/keys.ts","../../src/react-query/react-query-service.ts"],"sourcesContent":["import { z } from 'zod';\nimport type { TMessageContentParts } from './types/assistants';\nimport type { TFile } from './types/files';\n\nexport const isUUID = z.string().uuid();\n\nexport enum EModelEndpoint {\n azureOpenAI = 'azureOpenAI',\n openAI = 'openAI',\n bingAI = 'bingAI',\n chatGPTBrowser = 'chatGPTBrowser',\n google = 'google',\n gptPlugins = 'gptPlugins',\n anthropic = 'anthropic',\n assistants = 'assistants',\n custom = 'custom',\n}\n\nexport const defaultAssistantFormValues = {\n assistant: '',\n id: '',\n name: '',\n description: '',\n instructions: '',\n model: 'gpt-3.5-turbo-1106',\n functions: [],\n code_interpreter: false,\n retrieval: false,\n};\n\nexport const endpointSettings = {\n [EModelEndpoint.google]: {\n model: {\n default: 'chat-bison',\n },\n maxOutputTokens: {\n min: 1,\n max: 2048,\n step: 1,\n default: 1024,\n maxGeminiPro: 8192,\n defaultGeminiPro: 8192,\n },\n temperature: {\n min: 0,\n max: 1,\n step: 0.01,\n default: 0.2,\n },\n topP: {\n min: 0,\n max: 1,\n step: 0.01,\n default: 0.8,\n },\n topK: {\n min: 1,\n max: 40,\n step: 0.01,\n default: 40,\n },\n },\n};\n\nconst google = endpointSettings[EModelEndpoint.google];\n\nexport const eModelEndpointSchema = z.nativeEnum(EModelEndpoint);\n\nexport const extendedModelEndpointSchema = z.union([eModelEndpointSchema, z.string()]);\n\nexport enum ImageDetail {\n low = 'low',\n auto = 'auto',\n high = 'high',\n}\n\nexport const imageDetailNumeric = {\n [ImageDetail.low]: 0,\n [ImageDetail.auto]: 1,\n [ImageDetail.high]: 2,\n};\n\nexport const imageDetailValue = {\n 0: ImageDetail.low,\n 1: ImageDetail.auto,\n 2: ImageDetail.high,\n};\n\nexport const eImageDetailSchema = z.nativeEnum(ImageDetail);\n\nexport const tPluginAuthConfigSchema = z.object({\n authField: z.string(),\n label: z.string(),\n description: z.string(),\n});\n\nexport type TPluginAuthConfig = z.infer<typeof tPluginAuthConfigSchema>;\n\nexport const tPluginSchema = z.object({\n name: z.string(),\n pluginKey: z.string(),\n description: z.string(),\n icon: z.string(),\n authConfig: z.array(tPluginAuthConfigSchema),\n authenticated: z.boolean().optional(),\n isButton: z.boolean().optional(),\n});\n\nexport type TPlugin = z.infer<typeof tPluginSchema>;\n\nexport type TInput = {\n inputStr: string;\n};\n\nexport type TResPlugin = {\n plugin: string;\n input: string;\n thought: string;\n loading?: boolean;\n outputs?: string;\n latest?: string;\n inputs?: TInput[];\n};\n\nexport const tExampleSchema = z.object({\n input: z.object({\n content: z.string(),\n }),\n output: z.object({\n content: z.string(),\n }),\n});\n\nexport type TExample = z.infer<typeof tExampleSchema>;\n\nexport const tAgentOptionsSchema = z.object({\n agent: z.string(),\n skipCompletion: z.boolean(),\n model: z.string(),\n temperature: z.number(),\n});\n\nexport const tMessageSchema = z.object({\n messageId: z.string(),\n endpoint: z.string().optional(),\n clientId: z.string().nullable().optional(),\n conversationId: z.string().nullable(),\n parentMessageId: z.string().nullable(),\n responseMessageId: z.string().nullable().optional(),\n overrideParentMessageId: z.string().nullable().optional(),\n bg: z.string().nullable().optional(),\n model: z.string().nullable().optional(),\n title: z.string().nullable().or(z.literal('New Chat')).default('New Chat'),\n sender: z.string(),\n text: z.string(),\n generation: z.string().nullable().optional(),\n isEdited: z.boolean().optional(),\n isCreatedByUser: z.boolean(),\n error: z.boolean(),\n createdAt: z\n .string()\n .optional()\n .default(() => new Date().toISOString()),\n updatedAt: z\n .string()\n .optional()\n .default(() => new Date().toISOString()),\n current: z.boolean().optional(),\n unfinished: z.boolean().optional(),\n searchResult: z.boolean().optional(),\n finish_reason: z.string().optional(),\n /* assistant */\n thread_id: z.string().optional(),\n});\n\nexport type TMessage = z.input<typeof tMessageSchema> & {\n children?: TMessage[];\n plugin?: TResPlugin | null;\n plugins?: TResPlugin[];\n content?: TMessageContentParts[];\n files?: Partial<TFile>[];\n};\n\nexport const tConversationSchema = z.object({\n conversationId: z.string().nullable(),\n title: z.string().nullable().or(z.literal('New Chat')).default('New Chat'),\n user: z.string().optional(),\n endpoint: eModelEndpointSchema.nullable(),\n endpointType: eModelEndpointSchema.optional(),\n suggestions: z.array(z.string()).optional(),\n messages: z.array(z.string()).optional(),\n tools: z.array(tPluginSchema).optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n systemMessage: z.string().nullable().optional(),\n modelLabel: z.string().nullable().optional(),\n examples: z.array(tExampleSchema).optional(),\n chatGptLabel: z.string().nullable().optional(),\n userLabel: z.string().optional(),\n model: z.string().nullable().optional(),\n promptPrefix: z.string().nullable().optional(),\n temperature: z.number().optional(),\n topP: z.number().optional(),\n topK: z.number().optional(),\n context: z.string().nullable().optional(),\n top_p: z.number().optional(),\n frequency_penalty: z.number().optional(),\n presence_penalty: z.number().optional(),\n jailbreak: z.boolean().optional(),\n jailbreakConversationId: z.string().nullable().optional(),\n conversationSignature: z.string().nullable().optional(),\n parentMessageId: z.string().optional(),\n clientId: z.string().nullable().optional(),\n invocationId: z.number().nullable().optional(),\n toneStyle: z.string().nullable().optional(),\n maxOutputTokens: z.number().optional(),\n agentOptions: tAgentOptionsSchema.nullable().optional(),\n file_ids: z.array(z.string()).optional(),\n /* vision */\n resendImages: z.boolean().optional(),\n imageDetail: eImageDetailSchema.optional(),\n /* assistant */\n assistant_id: z.string().optional(),\n instructions: z.string().optional(),\n /** Used to overwrite active conversation settings when saving a Preset */\n presetOverride: z.record(z.unknown()).optional(),\n});\n\nexport const tPresetSchema = tConversationSchema\n .omit({\n conversationId: true,\n createdAt: true,\n updatedAt: true,\n title: true,\n })\n .merge(\n z.object({\n conversationId: z.string().nullable().optional(),\n presetId: z.string().nullable().optional(),\n title: z.string().nullable().optional(),\n defaultPreset: z.boolean().optional(),\n order: z.number().optional(),\n endpoint: extendedModelEndpointSchema.nullable(),\n }),\n );\n\nexport const tConvoUpdateSchema = tConversationSchema.merge(\n z.object({\n endpoint: extendedModelEndpointSchema.nullable(),\n }),\n);\n\nexport const tPresetUpdateSchema = tConversationSchema.merge(\n z.object({\n endpoint: extendedModelEndpointSchema.nullable(),\n }),\n);\n\nexport type TPreset = z.infer<typeof tPresetSchema>;\n\nexport type TConversation = z.infer<typeof tConversationSchema> & {\n presetOverride?: Partial<TPreset>;\n};\n\n// type DefaultSchemaValues = Partial<typeof google>;\n\nexport const openAISchema = tConversationSchema\n .pick({\n model: true,\n chatGptLabel: true,\n promptPrefix: true,\n temperature: true,\n top_p: true,\n presence_penalty: true,\n frequency_penalty: true,\n resendImages: true,\n imageDetail: true,\n })\n .transform((obj) => ({\n ...obj,\n model: obj.model ?? 'gpt-3.5-turbo',\n chatGptLabel: obj.chatGptLabel ?? null,\n promptPrefix: obj.promptPrefix ?? null,\n temperature: obj.temperature ?? 1,\n top_p: obj.top_p ?? 1,\n presence_penalty: obj.presence_penalty ?? 0,\n frequency_penalty: obj.frequency_penalty ?? 0,\n resendImages: obj.resendImages ?? false,\n imageDetail: obj.imageDetail ?? ImageDetail.auto,\n }))\n .catch(() => ({\n model: 'gpt-3.5-turbo',\n chatGptLabel: null,\n promptPrefix: null,\n temperature: 1,\n top_p: 1,\n presence_penalty: 0,\n frequency_penalty: 0,\n resendImages: false,\n imageDetail: ImageDetail.auto,\n }));\n\nexport const googleSchema = tConversationSchema\n .pick({\n model: true,\n modelLabel: true,\n promptPrefix: true,\n examples: true,\n temperature: true,\n maxOutputTokens: true,\n topP: true,\n topK: true,\n })\n .transform((obj) => {\n const isGeminiPro = obj?.model?.toLowerCase()?.includes('gemini-pro');\n\n const maxOutputTokensMax = isGeminiPro\n ? google.maxOutputTokens.maxGeminiPro\n : google.maxOutputTokens.max;\n const maxOutputTokensDefault = isGeminiPro\n ? google.maxOutputTokens.defaultGeminiPro\n : google.maxOutputTokens.default;\n\n let maxOutputTokens = obj.maxOutputTokens ?? maxOutputTokensDefault;\n maxOutputTokens = Math.min(maxOutputTokens, maxOutputTokensMax);\n\n return {\n ...obj,\n model: obj.model ?? google.model.default,\n modelLabel: obj.modelLabel ?? null,\n promptPrefix: obj.promptPrefix ?? null,\n examples: obj.examples ?? [{ input: { content: '' }, output: { content: '' } }],\n temperature: obj.temperature ?? google.temperature.default,\n maxOutputTokens,\n topP: obj.topP ?? google.topP.default,\n topK: obj.topK ?? google.topK.default,\n };\n })\n .catch(() => ({\n model: google.model.default,\n modelLabel: null,\n promptPrefix: null,\n examples: [{ input: { content: '' }, output: { content: '' } }],\n temperature: google.temperature.default,\n maxOutputTokens: google.maxOutputTokens.default,\n topP: google.topP.default,\n topK: google.topK.default,\n }));\n\nexport const bingAISchema = tConversationSchema\n .pick({\n jailbreak: true,\n systemMessage: true,\n context: true,\n toneStyle: true,\n jailbreakConversationId: true,\n conversationSignature: true,\n clientId: true,\n invocationId: true,\n })\n .transform((obj) => ({\n ...obj,\n model: '',\n jailbreak: obj.jailbreak ?? false,\n systemMessage: obj.systemMessage ?? null,\n context: obj.context ?? null,\n toneStyle: obj.toneStyle ?? 'creative',\n jailbreakConversationId: obj.jailbreakConversationId ?? null,\n conversationSignature: obj.conversationSignature ?? null,\n clientId: obj.clientId ?? null,\n invocationId: obj.invocationId ?? 1,\n }))\n .catch(() => ({\n model: '',\n jailbreak: false,\n systemMessage: null,\n context: null,\n toneStyle: 'creative',\n jailbreakConversationId: null,\n conversationSignature: null,\n clientId: null,\n invocationId: 1,\n }));\n\nexport const anthropicSchema = tConversationSchema\n .pick({\n model: true,\n modelLabel: true,\n promptPrefix: true,\n temperature: true,\n maxOutputTokens: true,\n topP: true,\n topK: true,\n })\n .transform((obj) => ({\n ...obj,\n model: obj.model ?? 'claude-1',\n modelLabel: obj.modelLabel ?? null,\n promptPrefix: obj.promptPrefix ?? null,\n temperature: obj.temperature ?? 1,\n maxOutputTokens: obj.maxOutputTokens ?? 4000,\n topP: obj.topP ?? 0.7,\n topK: obj.topK ?? 5,\n }))\n .catch(() => ({\n model: 'claude-1',\n modelLabel: null,\n promptPrefix: null,\n temperature: 1,\n maxOutputTokens: 4000,\n topP: 0.7,\n topK: 5,\n }));\n\nexport const chatGPTBrowserSchema = tConversationSchema\n .pick({\n model: true,\n })\n .transform((obj) => ({\n ...obj,\n model: obj.model ?? 'text-davinci-002-render-sha',\n }))\n .catch(() => ({\n model: 'text-davinci-002-render-sha',\n }));\n\nexport const gptPluginsSchema = tConversationSchema\n .pick({\n model: true,\n chatGptLabel: true,\n promptPrefix: true,\n temperature: true,\n top_p: true,\n presence_penalty: true,\n frequency_penalty: true,\n tools: true,\n agentOptions: true,\n })\n .transform((obj) => ({\n ...obj,\n model: obj.model ?? 'gpt-3.5-turbo',\n chatGptLabel: obj.chatGptLabel ?? null,\n promptPrefix: obj.promptPrefix ?? null,\n temperature: obj.temperature ?? 0.8,\n top_p: obj.top_p ?? 1,\n presence_penalty: obj.presence_penalty ?? 0,\n frequency_penalty: obj.frequency_penalty ?? 0,\n tools: obj.tools ?? [],\n agentOptions: obj.agentOptions ?? {\n agent: 'functions',\n skipCompletion: true,\n model: 'gpt-3.5-turbo',\n temperature: 0,\n },\n }))\n .catch(() => ({\n model: 'gpt-3.5-turbo',\n chatGptLabel: null,\n promptPrefix: null,\n temperature: 0.8,\n top_p: 1,\n presence_penalty: 0,\n frequency_penalty: 0,\n tools: [],\n agentOptions: {\n agent: 'functions',\n skipCompletion: true,\n model: 'gpt-3.5-turbo',\n temperature: 0,\n },\n }));\n\nexport function removeNullishValues<T extends object>(obj: T): T {\n const newObj: Partial<T> = { ...obj };\n\n (Object.keys(newObj) as Array<keyof T>).forEach((key) => {\n if (newObj[key] === undefined || newObj[key] === null || newObj[key] === '') {\n delete newObj[key];\n }\n });\n\n return newObj as T;\n}\n\nexport const assistantSchema = tConversationSchema\n .pick({\n model: true,\n assistant_id: true,\n instructions: true,\n promptPrefix: true,\n })\n .transform(removeNullishValues)\n .catch(() => ({}));\n\nexport const compactOpenAISchema = tConversationSchema\n .pick({\n model: true,\n chatGptLabel: true,\n promptPrefix: true,\n temperature: true,\n top_p: true,\n presence_penalty: true,\n frequency_penalty: true,\n resendImages: true,\n imageDetail: true,\n })\n .transform((obj: Partial<TConversation>) => {\n const newObj: Partial<TConversation> = { ...obj };\n if (newObj.temperature === 1) {\n delete newObj.temperature;\n }\n if (newObj.top_p === 1) {\n delete newObj.top_p;\n }\n if (newObj.presence_penalty === 0) {\n delete newObj.presence_penalty;\n }\n if (newObj.frequency_penalty === 0) {\n delete newObj.frequency_penalty;\n }\n if (newObj.resendImages !== true) {\n delete newObj.resendImages;\n }\n if (newObj.imageDetail === ImageDetail.auto) {\n delete newObj.imageDetail;\n }\n\n return removeNullishValues(newObj);\n })\n .catch(() => ({}));\n\nexport const compactGoogleSchema = tConversationSchema\n .pick({\n model: true,\n modelLabel: true,\n promptPrefix: true,\n examples: true,\n temperature: true,\n maxOutputTokens: true,\n topP: true,\n topK: true,\n })\n .transform((obj) => {\n const newObj: Partial<TConversation> = { ...obj };\n if (newObj.temperature === google.temperature.default) {\n delete newObj.temperature;\n }\n if (newObj.maxOutputTokens === google.maxOutputTokens.default) {\n delete newObj.maxOutputTokens;\n }\n if (newObj.topP === google.topP.default) {\n delete newObj.topP;\n }\n if (newObj.topK === google.topK.default) {\n delete newObj.topK;\n }\n\n return removeNullishValues(newObj);\n })\n .catch(() => ({}));\n\nexport const compactAnthropicSchema = tConversationSchema\n .pick({\n model: true,\n modelLabel: true,\n promptPrefix: true,\n temperature: true,\n maxOutputTokens: true,\n topP: true,\n topK: true,\n })\n .transform((obj) => {\n const newObj: Partial<TConversation> = { ...obj };\n if (newObj.temperature === 1) {\n delete newObj.temperature;\n }\n if (newObj.maxOutputTokens === 4000) {\n delete newObj.maxOutputTokens;\n }\n if (newObj.topP === 0.7) {\n delete newObj.topP;\n }\n if (newObj.topK === 5) {\n delete newObj.topK;\n }\n\n return removeNullishValues(newObj);\n })\n .catch(() => ({}));\n\nexport const compactChatGPTSchema = tConversationSchema\n .pick({\n model: true,\n })\n .transform((obj) => {\n const newObj: Partial<TConversation> = { ...obj };\n return removeNullishValues(newObj);\n })\n .catch(() => ({}));\n\nexport const compactPluginsSchema = tConversationSchema\n .pick({\n model: true,\n chatGptLabel: true,\n promptPrefix: true,\n temperature: true,\n top_p: true,\n presence_penalty: true,\n frequency_penalty: true,\n tools: true,\n agentOptions: true,\n })\n .transform((obj) => {\n const newObj: Partial<TConversation> = { ...obj };\n if (newObj.chatGptLabel === null) {\n delete newObj.chatGptLabel;\n }\n if (newObj.promptPrefix === null) {\n delete newObj.promptPrefix;\n }\n if (newObj.temperature === 0.8) {\n delete newObj.temperature;\n }\n if (newObj.top_p === 1) {\n delete newObj.top_p;\n }\n if (newObj.presence_penalty === 0) {\n delete newObj.presence_penalty;\n }\n if (newObj.frequency_penalty === 0) {\n delete newObj.frequency_penalty;\n }\n if (newObj.tools?.length === 0) {\n delete newObj.tools;\n }\n\n if (\n newObj.agentOptions &&\n newObj.agentOptions.agent === 'functions' &&\n newObj.agentOptions.skipCompletion === true &&\n newObj.agentOptions.model === 'gpt-3.5-turbo' &&\n newObj.agentOptions.temperature === 0\n ) {\n delete newObj.agentOptions;\n }\n\n return removeNullishValues(newObj);\n })\n .catch(() => ({}));\n\n// const createGoogleSchema = (customGoogle: DefaultSchemaValues) => {\n// const defaults = { ...google, ...customGoogle };\n// return tConversationSchema\n// .pick({\n// model: true,\n// modelLabel: true,\n// promptPrefix: true,\n// examples: true,\n// temperature: true,\n// maxOutputTokens: true,\n// topP: true,\n// topK: true,\n// })\n// .transform((obj) => {\n// const isGeminiPro = obj?.model?.toLowerCase()?.includes('gemini-pro');\n\n// const maxOutputTokensMax = isGeminiPro\n// ? defaults.maxOutputTokens.maxGeminiPro\n// : defaults.maxOutputTokens.max;\n// const maxOutputTokensDefault = isGeminiPro\n// ? defaults.maxOutputTokens.defaultGeminiPro\n// : defaults.maxOutputTokens.default;\n\n// let maxOutputTokens = obj.maxOutputTokens ?? maxOutputTokensDefault;\n// maxOutputTokens = Math.min(maxOutputTokens, maxOutputTokensMax);\n\n// return {\n// ...obj,\n// model: obj.model ?? defaults.model.default,\n// modelLabel: obj.modelLabel ?? null,\n// promptPrefix: obj.promptPrefix ?? null,\n// examples: obj.examples ?? [{ input: { content: '' }, output: { content: '' } }],\n// temperature: obj.temperature ?? defaults.temperature.default,\n// maxOutputTokens,\n// topP: obj.topP ?? defaults.topP.default,\n// topK: obj.topK ?? defaults.topK.default,\n// };\n// })\n// .catch(() => ({\n// model: defaults.model.default,\n// modelLabel: null,\n// promptPrefix: null,\n// examples: [{ input: { content: '' }, output: { content: '' } }],\n// temperature: defaults.temperature.default,\n// maxOutputTokens: defaults.maxOutputTokens.default,\n// topP: defaults.topP.default,\n// topK: defaults.topK.default,\n// }));\n// };\n","/* eslint-disable max-len */\nimport { z } from 'zod';\nimport { EModelEndpoint } from './schemas';\nimport type { FileConfig, EndpointFileConfig } from './types/files';\n\nexport const supportsFiles = {\n [EModelEndpoint.openAI]: true,\n [EModelEndpoint.google]: true,\n [EModelEndpoint.assistants]: true,\n [EModelEndpoint.azureOpenAI]: true,\n [EModelEndpoint.custom]: true,\n};\n\nexport const excelFileTypes = [\n 'application/vnd.ms-excel',\n 'application/msexcel',\n 'application/x-msexcel',\n 'application/x-ms-excel',\n 'application/x-excel',\n 'application/x-dos_ms_excel',\n 'application/xls',\n 'application/x-xls',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n];\n\nexport const fullMimeTypesList = [\n 'text/x-c',\n 'text/x-c++',\n 'application/csv',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'text/html',\n 'text/x-java',\n 'application/json',\n 'text/markdown',\n 'application/pdf',\n 'text/x-php',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'text/x-python',\n 'text/x-script.python',\n 'text/x-ruby',\n 'text/x-tex',\n 'text/plain',\n 'text/css',\n 'image/jpeg',\n 'text/javascript',\n 'image/gif',\n 'image/png',\n 'application/x-tar',\n 'application/typescript',\n 'application/xml',\n 'application/zip',\n ...excelFileTypes,\n];\n\nexport const codeInterpreterMimeTypesList = [\n 'text/x-c',\n 'text/x-c++',\n 'application/csv',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'text/html',\n 'text/x-java',\n 'application/json',\n 'text/markdown',\n 'application/pdf',\n 'text/x-php',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'text/x-python',\n 'text/x-script.python',\n 'text/x-ruby',\n 'text/x-tex',\n 'text/plain',\n 'text/css',\n 'image/jpeg',\n 'text/javascript',\n 'image/gif',\n 'image/png',\n 'application/x-tar',\n 'application/typescript',\n 'application/xml',\n 'application/zip',\n ...excelFileTypes,\n];\n\nexport const retrievalMimeTypesList = [\n 'text/x-c',\n 'text/x-c++',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'text/html',\n 'text/x-java',\n 'application/json',\n 'text/markdown',\n 'application/pdf',\n 'text/x-php',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'text/x-python',\n 'text/x-script.python',\n 'text/x-ruby',\n 'text/x-tex',\n 'text/plain',\n];\n\nexport const imageExtRegex = /\\.(jpg|jpeg|png|gif|webp)$/i;\n\nexport const excelMimeTypes =\n /^application\\/(vnd\\.ms-excel|msexcel|x-msexcel|x-ms-excel|x-excel|x-dos_ms_excel|xls|x-xls|vnd\\.openxmlformats-officedocument\\.spreadsheetml\\.sheet)$/;\n\nexport const textMimeTypes =\n /^(text\\/(x-c|x-c\\+\\+|x-java|html|markdown|x-php|x-python|x-script\\.python|x-ruby|x-tex|plain|css|javascript|csv))$/;\n\nexport const applicationMimeTypes =\n /^(application\\/(csv|json|pdf|x-tar|typescript|vnd\\.openxmlformats-officedocument\\.(wordprocessingml\\.document|presentationml\\.presentation|spreadsheetml\\.sheet)|xml|zip))$/;\n\nexport const imageMimeTypes = /^image\\/(jpeg|gif|png|webp)$/;\n\nexport const supportedMimeTypes = [\n textMimeTypes,\n excelMimeTypes,\n applicationMimeTypes,\n imageMimeTypes,\n];\n\nexport const codeInterpreterMimeTypes = [\n textMimeTypes,\n excelMimeTypes,\n applicationMimeTypes,\n imageMimeTypes,\n];\n\nexport const retrievalMimeTypes = [\n /^(text\\/(x-c|x-c\\+\\+|html|x-java|markdown|x-php|x-python|x-script\\.python|x-ruby|x-tex|plain))$/,\n /^(application\\/(json|pdf|vnd\\.openxmlformats-officedocument\\.(wordprocessingml\\.document|presentationml\\.presentation)))$/,\n];\n\nexport const megabyte = 1024 * 1024;\n/** Helper function to get megabytes value */\nexport const mbToBytes = (mb: number): number => mb * megabyte;\n\nexport const fileConfig = {\n endpoints: {\n [EModelEndpoint.assistants]: {\n fileLimit: 10,\n fileSizeLimit: mbToBytes(512),\n totalSizeLimit: mbToBytes(512),\n supportedMimeTypes,\n disabled: false,\n },\n default: {\n fileLimit: 10,\n fileSizeLimit: mbToBytes(20),\n totalSizeLimit: mbToBytes(25),\n supportedMimeTypes: [imageMimeTypes],\n disabled: false,\n },\n },\n serverFileSizeLimit: mbToBytes(512),\n avatarSizeLimit: mbToBytes(2),\n checkType: function (fileType: string, supportedTypes: RegExp[] = supportedMimeTypes) {\n return supportedTypes.some((regex) => regex.test(fileType));\n },\n};\n\nconst supportedMimeTypesSchema = z\n .array(z.any())\n .optional()\n .refine(\n (mimeTypes) => {\n if (!mimeTypes) {\n return true;\n }\n return mimeTypes.every(\n (mimeType) => mimeType instanceof RegExp || typeof mimeType === 'string',\n );\n },\n {\n message: 'Each mimeType must be a string or a RegExp object.',\n },\n );\n\nexport const endpointFileConfigSchema = z.object({\n disabled: z.boolean().optional(),\n fileLimit: z.number().min(0).optional(),\n fileSizeLimit: z.number().min(0).optional(),\n totalSizeLimit: z.number().min(0).optional(),\n supportedMimeTypes: supportedMimeTypesSchema.optional(),\n});\n\nexport const fileConfigSchema = z.object({\n endpoints: z.record(endpointFileConfigSchema).optional(),\n serverFileSizeLimit: z.number().min(0).optional(),\n avatarSizeLimit: z.number().min(0).optional(),\n});\n\n/** Helper function to safely convert string patterns to RegExp objects */\nexport const convertStringsToRegex = (patterns: string[]): RegExp[] =>\n patterns.reduce((acc: RegExp[], pattern) => {\n try {\n const regex = new RegExp(pattern);\n acc.push(regex);\n } catch (error) {\n console.error(`Invalid regex pattern \"${pattern}\" skipped.`);\n }\n return acc;\n }, []);\n\nexport function mergeFileConfig(dynamic: z.infer<typeof fileConfigSchema> | undefined): FileConfig {\n const mergedConfig = fileConfig as FileConfig;\n if (!dynamic) {\n return mergedConfig;\n }\n\n if (dynamic.serverFileSizeLimit !== undefined) {\n mergedConfig.serverFileSizeLimit = mbToBytes(dynamic.serverFileSizeLimit);\n }\n\n if (dynamic.avatarSizeLimit !== undefined) {\n mergedConfig.avatarSizeLimit = mbToBytes(dynamic.avatarSizeLimit);\n }\n\n if (!dynamic.endpoints) {\n return mergedConfig;\n }\n\n for (const key in dynamic.endpoints) {\n const dynamicEndpoint = (dynamic.endpoints as Record<string, EndpointFileConfig>)[key];\n\n if (!mergedConfig.endpoints[key]) {\n mergedConfig.endpoints[key] = {};\n }\n\n const mergedEndpoint = mergedConfig.endpoints[key];\n\n if (dynamicEndpoint.disabled === true) {\n mergedEndpoint.disabled = true;\n mergedEndpoint.fileLimit = 0;\n mergedEndpoint.fileSizeLimit = 0;\n mergedEndpoint.totalSizeLimit = 0;\n mergedEndpoint.supportedMimeTypes = [];\n continue;\n }\n\n if (dynamicEndpoint.fileSizeLimit !== undefined) {\n mergedEndpoint.fileSizeLimit = mbToBytes(dynamicEndpoint.fileSizeLimit);\n }\n\n if (dynamicEndpoint.totalSizeLimit !== undefined) {\n mergedEndpoint.totalSizeLimit = mbToBytes(dynamicEndpoint.totalSizeLimit);\n }\n\n const configKeys = ['fileLimit'] as const;\n configKeys.forEach((field) => {\n if (dynamicEndpoint[field] !== undefined) {\n mergedEndpoint[field] = dynamicEndpoint[field];\n }\n });\n\n if (dynamicEndpoint.supportedMimeTypes) {\n mergedEndpoint.supportedMimeTypes = convertStringsToRegex(\n dynamicEndpoint.supportedMimeTypes as unknown as string[],\n );\n }\n }\n\n return mergedConfig;\n}\n","export enum FileSources {\n local = 'local',\n firebase = 'firebase',\n openai = 'openai',\n s3 = 's3',\n}\n\nexport enum FileContext {\n avatar = 'avatar',\n unknown = 'unknown',\n assistants = 'assistants',\n image_generation = 'image_generation',\n assistants_output = 'assistants_output',\n message_attachment = 'message_attachment',\n}\n\nexport type EndpointFileConfig = {\n disabled?: boolean;\n fileLimit?: number;\n fileSizeLimit?: number;\n totalSizeLimit?: number;\n supportedMimeTypes?: RegExp[];\n};\n\nexport type FileConfig = {\n endpoints: {\n [key: string]: EndpointFileConfig;\n };\n serverFileSizeLimit?: number;\n avatarSizeLimit?: number;\n checkType?: (fileType: string, supportedTypes: RegExp[]) => boolean;\n};\n\nexport type TFile = {\n _id?: string;\n __v?: number;\n user: string;\n conversationId?: string;\n message?: string;\n file_id: string;\n temp_file_id?: string;\n bytes: number;\n filename: string;\n filepath: string;\n object: 'file';\n type: string;\n usage: number;\n context?: FileContext;\n source?: FileSources;\n width?: number;\n height?: number;\n expiresAt?: string | Date;\n preview?: string;\n createdAt?: string | Date;\n updatedAt?: string | Date;\n};\n\nexport type TFileUpload = TFile & {\n temp_file_id: string;\n};\n\nexport type AvatarUploadResponse = {\n url: string;\n};\n\nexport type UploadMutationOptions = {\n onSuccess?: (data: TFileUpload, variables: FormData, context?: unknown) => void;\n onMutate?: (variables: FormData) => void | Promise<unknown>;\n onError?: (error: unknown, variables: FormData, context?: unknown) => void;\n};\n\nexport type UploadAvatarOptions = {\n onSuccess?: (data: AvatarUploadResponse, variables: FormData, context?: unknown) => void;\n onMutate?: (variables: FormData) => void | Promise<unknown>;\n onError?: (error: unknown, variables: FormData, context?: unknown) => void;\n};\n\nexport type DeleteFilesResponse = {\n message: string;\n result: Record<string, unknown>;\n};\n\nexport type BatchFile = {\n file_id: string;\n filepath: string;\n source: FileSources;\n};\n\nexport type DeleteFilesBody = {\n files: BatchFile[];\n assistant_id?: string;\n};\n\nexport type DeleteMutationOptions = {\n onSuccess?: (data: DeleteFilesResponse, variables: DeleteFilesBody, context?: unknown) => void;\n onMutate?: (variables: DeleteFilesBody) => void | Promise<unknown>;\n onError?: (error: unknown, variables: DeleteFilesBody, context?: unknown) => void;\n};\n","/* eslint-disable max-len */\nimport { z } from 'zod';\nimport { EModelEndpoint, eModelEndpointSchema } from './schemas';\nimport { fileConfigSchema } from './file-config';\nimport { FileSources } from './types/files';\n\nexport const defaultSocialLogins = ['google', 'facebook', 'openid', 'github', 'discord'];\n\nexport const fileSourceSchema = z.nativeEnum(FileSources);\n\nexport const modelConfigSchema = z\n .object({\n deploymentName: z.string().optional(),\n version: z.string().optional(),\n })\n .or(z.boolean());\n\nexport type TAzureModelConfig = z.infer<typeof modelConfigSchema>;\n\nexport const azureBaseSchema = z.object({\n apiKey: z.string(),\n instanceName: z.string(),\n deploymentName: z.string().optional(),\n version: z.string().optional(),\n baseURL: z.string().optional(),\n additionalHeaders: z.record(z.any()).optional(),\n});\n\nexport type TAzureBaseSchema = z.infer<typeof azureBaseSchema>;\n\nexport const azureGroupSchema = z\n .object({\n group: z.string(),\n models: z.record(z.string(), modelConfigSchema),\n })\n .required()\n .and(azureBaseSchema);\n\nexport const azureGroupConfigsSchema = z.array(azureGroupSchema).min(1);\nexport type TAzureGroups = z.infer<typeof azureGroupConfigsSchema>;\n\nexport type TAzureModelMapSchema = {\n // deploymentName?: string;\n // version?: string;\n group: string;\n};\n\nexport type TAzureModelGroupMap = Record<string, TAzureModelMapSchema>;\nexport type TAzureGroupMap = Record<\n string,\n TAzureBaseSchema & { models: Record<string, TAzureModelConfig> }\n>;\n\nexport type TValidatedAzureConfig = {\n modelNames: string[];\n modelGroupMap: TAzureModelGroupMap;\n groupMap: TAzureGroupMap;\n};\n\nexport const assistantEndpointSchema = z.object({\n /* assistants specific */\n disableBuilder: z.boolean().optional(),\n pollIntervalMs: z.number().optional(),\n timeoutMs: z.number().optional(),\n supportedIds: z.array(z.string()).min(1).optional(),\n excludedIds: z.array(z.string()).min(1).optional(),\n /* general */\n apiKey: z.string().optional(),\n baseURL: z.string().optional(),\n models: z\n .object({\n default: z.array(z.string()).min(1),\n fetch: z.boolean().optional(),\n userIdQuery: z.boolean().optional(),\n })\n .optional(),\n titleConvo: z.boolean().optional(),\n titleMethod: z.union([z.literal('completion'), z.literal('functions')]).optional(),\n titleModel: z.string().optional(),\n headers: z.record(z.any()).optional(),\n});\n\nexport type TAssistantEndpoint = z.infer<typeof assistantEndpointSchema>;\n\nexport const endpointSchema = z.object({\n name: z.string().refine((value) => !eModelEndpointSchema.safeParse(value).success, {\n message: `Value cannot be one of the default endpoint (EModelEndpoint) values: ${Object.values(\n EModelEndpoint,\n ).join(', ')}`,\n }),\n apiKey: z.string(),\n baseURL: z.string(),\n models: z.object({\n default: z.array(z.string()).min(1),\n fetch: z.boolean().optional(),\n userIdQuery: z.boolean().optional(),\n }),\n titleConvo: z.boolean().optional(),\n titleMethod: z.union([z.literal('completion'), z.literal('functions')]).optional(),\n titleModel: z.string().optional(),\n summarize: z.boolean().optional(),\n summaryModel: z.string().optional(),\n forcePrompt: z.boolean().optional(),\n modelDisplayLabel: z.string().optional(),\n headers: z.record(z.any()).optional(),\n addParams: z.record(z.any()).optional(),\n dropParams: z.array(z.string()).optional(),\n customOrder: z.number().optional(),\n});\n\nexport const azureEndpointSchema = z\n .object({\n groups: azureGroupConfigsSchema,\n plugins: z.boolean().optional(),\n })\n .and(\n endpointSchema\n .pick({\n titleConvo: true,\n titleMethod: true,\n titleModel: true,\n summarize: true,\n summaryModel: true,\n customOrder: true,\n })\n .partial(),\n );\n\nexport type TAzureConfig = Omit<z.infer<typeof azureEndpointSchema>, 'groups'> &\n TValidatedAzureConfig;\n\nexport const rateLimitSchema = z.object({\n fileUploads: z\n .object({\n ipMax: z.number().optional(),\n ipWindowInMinutes: z.number().optional(),\n userMax: z.number().optional(),\n userWindowInMinutes: z.number().optional(),\n })\n .optional(),\n});\n\nexport const configSchema = z.object({\n version: z.string(),\n cache: z.boolean(),\n fileStrategy: fileSourceSchema.optional(),\n registration: z\n .object({\n socialLogins: z.array(z.string()).optional(),\n allowedDomains: z.array(z.string()).optional(),\n })\n .optional(),\n rateLimits: rateLimitSchema.optional(),\n fileConfig: fileConfigSchema.optional(),\n endpoints: z\n .object({\n [EModelEndpoint.azureOpenAI]: azureEndpointSchema.optional(),\n [EModelEndpoint.assistants]: assistantEndpointSchema.optional(),\n custom: z.array(endpointSchema.partial()).optional(),\n })\n .strict()\n .refine((data) => Object.keys(data).length > 0, {\n message: 'At least one `endpoints` field must be provided.',\n })\n .optional(),\n});\n\nexport type TCustomConfig = z.infer<typeof configSchema>;\n\nexport enum KnownEndpoints {\n mistral = 'mistral',\n openrouter = 'openrouter',\n}\n\nexport const defaultEndpoints: EModelEndpoint[] = [\n EModelEndpoint.openAI,\n EModelEndpoint.assistants,\n EModelEndpoint.azureOpenAI,\n EModelEndpoint.bingAI,\n EModelEndpoint.chatGPTBrowser,\n EModelEndpoint.gptPlugins,\n EModelEndpoint.google,\n EModelEndpoint.anthropic,\n EModelEndpoint.custom,\n];\n\nexport const alternateName = {\n [EModelEndpoint.openAI]: 'OpenAI',\n [EModelEndpoint.assistants]: 'Assistants',\n [EModelEndpoint.azureOpenAI]: 'Azure OpenAI',\n [EModelEndpoint.bingAI]: 'Bing',\n [EModelEndpoint.chatGPTBrowser]: 'ChatGPT',\n [EModelEndpoint.gptPlugins]: 'Plugins',\n [EModelEndpoint.google]: 'Google',\n [EModelEndpoint.anthropic]: 'Anthropic',\n [EModelEndpoint.custom]: 'Custom',\n};\n\nexport const defaultModels = {\n [EModelEndpoint.assistants]: [\n 'gpt-3.5-turbo-0125',\n 'gpt-4-0125-preview',\n 'gpt-4-turbo-preview',\n 'gpt-4-1106-preview',\n 'gpt-3.5-turbo-1106',\n 'gpt-3.5-turbo-16k-0613',\n 'gpt-3.5-turbo-16k',\n 'gpt-3.5-turbo',\n 'gpt-4',\n 'gpt-4-0314',\n 'gpt-4-32k-0314',\n 'gpt-4-0613',\n 'gpt-3.5-turbo-0613',\n ],\n [EModelEndpoint.google]: [\n 'gemini-pro',\n 'gemini-pro-vision',\n 'chat-bison',\n 'chat-bison-32k',\n 'codechat-bison',\n 'codechat-bison-32k',\n 'text-bison',\n 'text-bison-32k',\n 'text-unicorn',\n 'code-gecko',\n 'code-bison',\n 'code-bison-32k',\n ],\n [EModelEndpoint.anthropic]: [\n 'claude-2.1',\n 'claude-2',\n 'claude-1.2',\n 'claude-1',\n 'claude-1-100k',\n 'claude-instant-1',\n 'claude-instant-1-100k',\n ],\n [EModelEndpoint.openAI]: [\n 'gpt-3.5-turbo-0125',\n 'gpt-3.5-turbo-16k-0613',\n 'gpt-3.5-turbo-16k',\n 'gpt-4-turbo-preview',\n 'gpt-4-0125-preview',\n 'gpt-4-1106-preview',\n 'gpt-3.5-turbo',\n 'gpt-3.5-turbo-1106',\n 'gpt-4-vision-preview',\n 'gpt-4',\n 'gpt-3.5-turbo-instruct-0914',\n 'gpt-3.5-turbo-0613',\n 'gpt-3.5-turbo-0301',\n 'gpt-3.5-turbo-instruct',\n 'gpt-4-0613',\n 'text-davinci-003',\n 'gpt-4-0314',\n ],\n};\n\nexport const supportsRetrieval = new Set([\n 'gpt-3.5-turbo-0125',\n 'gpt-4-0125-preview',\n 'gpt-4-turbo-preview',\n 'gpt-4-1106-preview',\n 'gpt-3.5-turbo-1106',\n]);\n\nexport const EndpointURLs: { [key in EModelEndpoint]: string } = {\n [EModelEndpoint.openAI]: `/api/ask/${EModelEndpoint.openAI}`,\n [EModelEndpoint.bingAI]: `/api/ask/${EModelEndpoint.bingAI}`,\n [EModelEndpoint.google]: `/api/ask/${EModelEndpoint.google}`,\n [EModelEndpoint.custom]: `/api/ask/${EModelEndpoint.custom}`,\n [EModelEndpoint.anthropic]: `/api/ask/${EModelEndpoint.anthropic}`,\n [EModelEndpoint.gptPlugins]: `/api/ask/${EModelEndpoint.gptPlugins}`,\n [EModelEndpoint.azureOpenAI]: `/api/ask/${EModelEndpoint.azureOpenAI}`,\n [EModelEndpoint.chatGPTBrowser]: `/api/ask/${EModelEndpoint.chatGPTBrowser}`,\n [EModelEndpoint.assistants]: '/api/assistants/chat',\n};\n\nexport const modularEndpoints = new Set<EModelEndpoint | string>([\n EModelEndpoint.gptPlugins,\n EModelEndpoint.anthropic,\n EModelEndpoint.google,\n EModelEndpoint.openAI,\n EModelEndpoint.azureOpenAI,\n EModelEndpoint.custom,\n]);\n\nexport const supportsBalanceCheck = {\n [EModelEndpoint.openAI]: true,\n [EModelEndpoint.azureOpenAI]: true,\n [EModelEndpoint.gptPlugins]: true,\n [EModelEndpoint.custom]: true,\n};\n\nexport const visionModels = ['gpt-4-vision', 'llava-13b', 'gemini-pro-vision'];\n\nexport function validateVisionModel(\n model: string | undefined,\n additionalModels: string[] | undefined = [],\n) {\n if (!model) {\n return false;\n }\n\n return visionModels.concat(additionalModels).some((visionModel) => model.includes(visionModel));\n}\n\nexport const imageGenTools = new Set(['dalle', 'dall-e', 'stable-diffusion']);\n\n/**\n * Enum for cache keys.\n */\nexport enum CacheKeys {\n /**\n * Key for the config store namespace.\n */\n CONFIG_STORE = 'configStore',\n /**\n * Key for the plugins cache.\n */\n PLUGINS = 'plugins',\n /**\n * Key for the title generation cache.\n */\n GEN_TITLE = 'genTitle',\n /**\n /**\n * Key for the tools cache.\n */\n TOOLS = 'tools',\n /**\n * Key for the model config cache.\n */\n MODELS_CONFIG = 'modelsConfig',\n /**\n * Key for the model queries cache.\n */\n MODEL_QUERIES = 'modelQueries',\n /**\n * Key for the default endpoint config cache.\n */\n ENDPOINT_CONFIG = 'endpointsConfig',\n /**\n * Key for accessing the model token config cache.\n */\n TOKEN_CONFIG = 'tokenConfig',\n /**\n * Key for the custom config cache.\n */\n CUSTOM_CONFIG = 'customConfig',\n /**\n * Key for accessing Abort Keys\n */\n ABORT_KEYS = 'abortKeys',\n /**\n * Key for the override config cache.\n */\n OVERRIDE_CONFIG = 'overrideConfig',\n}\n\n/**\n * Enum for violation types, used to identify, log, and cache violations.\n */\nexport enum ViolationTypes {\n /**\n * File Upload Violations (exceeding limit).\n */\n FILE_UPLOAD_LIMIT = 'file_upload_limit',\n /**\n * Illegal Model Request (not available).\n */\n ILLEGAL_MODEL_REQUEST = 'illegal_model_request',\n}\n\n/**\n * Enum for authentication keys.\n */\nexport enum AuthKeys {\n /**\n * Key for the Service Account to use Vertex AI.\n */\n GOOGLE_SERVICE_KEY = 'GOOGLE_SERVICE_KEY',\n /**\n * API key to use Google Generative AI.\n */\n GOOGLE_API_KEY = 'GOOGLE_API_KEY',\n}\n\n/**\n * Enum for Image Detail Cost.\n *\n * **Low Res Fixed Cost:** `85`\n *\n * **High Res Calculation:**\n *\n * Number of `512px` Tiles * `170` + `85` (Additional Cost)\n */\nexport enum ImageDetailCost {\n /**\n * Low resolution is a fixed value.\n */\n LOW = 85,\n /**\n * High resolution Cost Per Tile\n */\n HIGH = 170,\n /**\n * Additional Cost added to High Resolution Total Cost\n */\n ADDITIONAL = 85,\n}\n\n/**\n * Tab values for Settings Dialog\n */\nexport enum SettingsTabValues {\n /**\n * Tab for General Settings\n */\n GENERAL = 'general',\n /**\n * Tab for Beta Features\n */\n BETA = 'beta',\n /**\n * Tab for Data Controls\n */\n DATA = 'data',\n /**\n * Tab for Account Settings\n */\n ACCOUNT = 'account',\n}\n\n/**\n * Enum for app-wide constants\n */\nexport enum Constants {\n /**\n * Key for the app's version.\n */\n VERSION = 'v0.6.10',\n /**\n * Key for the Custom Config's version (librechat.yaml).\n */\n CONFIG_VERSION = '1.0.4',\n /**\n * Standard value for the first message's `parentMessageId` value, to indicate no parent exists.\n */\n NO_PARENT = '00000000-0000-0000-0000-000000000000',\n}\n\nexport const defaultOrderQuery: {\n order: 'asc';\n} = {\n order: 'asc',\n};\n","export const user = () => '/api/user';\n\nexport const balance = () => '/api/balance';\n\nexport const userPlugins = () => '/api/user/plugins';\n\nexport const messages = (conversationId: string, messageId?: string) =>\n `/api/messages/${conversationId}${messageId ? `/${messageId}` : ''}`;\n\nconst keysEndpoint = '/api/keys';\n\nexport const keys = () => keysEndpoint;\n\nexport const userKeyQuery = (name: string) => `${keysEndpoint}?name=${name}`;\n\nexport const revokeUserKey = (name: string) => `${keysEndpoint}/${name}`;\n\nexport const revokeAllUserKeys = () => `${keysEndpoint}?all=true`;\n\nexport const abortRequest = (endpoint: string) => `/api/ask/${endpoint}/abort`;\n\nexport const conversations = (pageNumber: string) => `/api/convos?pageNumber=${pageNumber}`;\n\nexport const conversationById = (id: string) => `/api/convos/${id}`;\n\nexport const genTitle = () => '/api/convos/gen_title';\n\nexport const updateConversation = () => '/api/convos/update';\n\nexport const deleteConversation = () => '/api/convos/clear';\n\nexport const search = (q: string, pageNumber: string) =>\n `/api/search?q=${q}&pageNumber=${pageNumber}`;\n\nexport const searchEnabled = () => '/api/search/enable';\n\nexport const presets = () => '/api/presets';\n\nexport const deletePreset = () => '/api/presets/delete';\n\nexport const aiEndpoints = () => '/api/endpoints';\n\nexport const endpointsConfigOverride = () => '/api/endpoints/config/override';\n\nexport const models = () => '/api/models';\n\nexport const tokenizer = () => '/api/tokenizer';\n\nexport const login = () => '/api/auth/login';\n\nexport const logout = () => '/api/auth/logout';\n\nexport const register = () => '/api/auth/register';\n\nexport const loginFacebook = () => '/api/auth/facebook';\n\nexport const loginGoogle = () => '/api/auth/google';\n\nexport const refreshToken = (retry?: boolean) => `/api/auth/refresh${retry ? '?retry=true' : ''}`;\n\nexport const requestPasswordReset = () => '/api/auth/requestPasswordReset';\n\nexport const resetPassword = () => '/api/auth/resetPassword';\n\nexport const plugins = () => '/api/plugins';\n\nexport const config = () => '/api/config';\n\nexport const assistants = (id?: string) => `/api/assistants${id ? `/${id}` : ''}`;\n\nexport const files = () => '/api/files';\n\nexport const images = () => `${files()}/images`;\n\nexport const avatar = () => `${images()}/avatar`;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios, { AxiosRequestConfig, AxiosError } from 'axios';\nimport { setTokenHeader } from './headers-helpers';\nimport * as endpoints from './api-endpoints';\n\nasync function _get<T>(url: string, options?: AxiosRequestConfig): Promise<T> {\n const response = await axios.get(url, { ...options });\n return response.data;\n}\n\nasync function _post(url: string, data?: any) {\n const response = await axios.post(url, JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n });\n return response.data;\n}\n\nasync function _postMultiPart(url: string, formData: FormData, options?: AxiosRequestConfig) {\n const response = await axios.post(url, formData, {\n ...options,\n headers: { 'Content-Type': 'multipart/form-data' },\n });\n return response.data;\n}\n\nasync function _put(url: string, data?: any) {\n const response = await axios.put(url, JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n });\n return response.data;\n}\n\nasync function _delete<T>(url: string): Promise<T> {\n const response = await axios.delete(url);\n return response.data;\n}\n\nasync function _deleteWithOptions<T>(url: string, options?: AxiosRequestConfig): Promise<T> {\n const response = await axios.delete(url, { ...options });\n return response.data;\n}\n\nasync function _patch(url: string, data?: any) {\n const response = await axios.patch(url, JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n });\n return response.data;\n}\n\nlet isRefreshing = false;\nlet failedQueue: { resolve: (value?: any) => void; reject: (reason?: any) => void }[] = [];\n\nconst refreshToken = (retry?: boolean) => _post(endpoints.refreshToken(retry));\n\nconst processQueue = (error: AxiosError | null, token: string | null = null) => {\n failedQueue.forEach((prom) => {\n if (error) {\n prom.reject(error);\n } else {\n prom.resolve(token);\n }\n });\n failedQueue = [];\n};\n\naxios.interceptors.response.use(\n (response) => response,\n async (error) => {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n if (isRefreshing) {\n try {\n const token = await new Promise((resolve, reject) => {\n failedQueue.push({ resolve, reject });\n });\n originalRequest.headers['Authorization'] = 'Bearer ' + token;\n return await axios(originalRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n }\n\n isRefreshing = true;\n\n try {\n const { token } = await refreshToken(\n // Handle edge case where we get a blank screen if the initial 401 error is from a refresh token request\n originalRequest.url?.includes('api/auth/refresh') ? true : false,\n );\n\n if (token) {\n originalRequest.headers['Authorization'] = 'Bearer ' + token;\n setTokenHeader(token);\n window.dispatchEvent(new CustomEvent('tokenUpdated', { detail: token }));\n processQueue(null, token);\n return await axios(originalRequest);\n } else {\n window.location.href = '/login';\n }\n } catch (err) {\n processQueue(err as AxiosError, null);\n return Promise.reject(err);\n } finally {\n isRefreshing = false;\n }\n }\n\n return Promise.reject(error);\n },\n);\n\nexport default {\n get: _get,\n post: _post,\n postMultiPart: _postMultiPart,\n put: _put,\n delete: _delete,\n deleteWithOptions: _deleteWithOptions,\n patch: _patch,\n refreshToken,\n};\n","import axios from 'axios';\n\nexport function setAcceptLanguageHeader(value: string): void {\n axios.defaults.headers.common['Accept-Language'] = value;\n}\n\nexport function setTokenHeader(token: string) {\n axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;\n}\n","import * as f from './types/files';\nimport * as q from './types/queries';\nimport * as m from './types/mutations';\nimport * as a from './types/assistants';\nimport * as t from './types';\nimport * as s from './schemas';\nimport request from './request';\nimport * as endpoints from './api-endpoints';\n\nexport function getConversations(pageNumber: string): Promise<t.TGetConversationsResponse> {\n return request.get(endpoints.conversations(pageNumber));\n}\n\nexport function abortRequestWithMessage(\n endpoint: string,\n abortKey: string,\n message: string,\n): Promise<void> {\n return request.post(endpoints.abortRequest(endpoint), { arg: { abortKey, message } });\n}\n\nexport function deleteConversation(payload: t.TDeleteConversationRequest) {\n //todo: this should be a DELETE request\n return request.post(endpoints.deleteConversation(), { arg: payload });\n}\n\nexport function clearAllConversations(): Promise<unknown> {\n return request.post(endpoints.deleteConversation(), { arg: {} });\n}\n\nexport function revokeUserKey(name: string): Promise<unknown> {\n return request.delete(endpoints.revokeUserKey(name));\n}\n\nexport function revokeAllUserKeys(): Promise<unknown> {\n return request.delete(endpoints.revokeAllUserKeys());\n}\n\nexport function getMessagesByConvoId(conversationId: string): Promise<s.TMessage[]> {\n if (conversationId === 'new') {\n return Promise.resolve([]);\n }\n return request.get(endpoints.messages(conversationId));\n}\n\nexport function getConversationById(id: string): Promise<s.TConversation> {\n return request.get(endpoints.conversationById(id));\n}\n\nexport function updateConversation(\n payload: t.TUpdateConversationRequest,\n): Promise<t.TUpdateConversationResponse> {\n return request.post(endpoints.updateConversation(), { arg: payload });\n}\n\nexport function genTitle(payload: m.TGenTitleRequest): Promise<m.TGenTitleResponse> {\n return request.post(endpoints.genTitle(), payload);\n}\n\nexport function updateMessage(payload: t.TUpdateMessageRequest): Promise<unknown> {\n const { conversationId, messageId, text } = payload;\n if (!conversationId) {\n throw new Error('conversationId is required');\n }\n\n return request.put(endpoints.messages(conversationId, messageId), { text });\n}\n\nexport function updateUserKey(payload: t.TUpdateUserKeyRequest) {\n const { value } = payload;\n if (!value) {\n throw new Error('value is required');\n }\n\n return request.put(endpoints.keys(), payload);\n}\n\nexport function getPresets(): Promise<s.TPreset[]> {\n return request.get(endpoints.presets());\n}\n\nexport function createPreset(payload: s.TPreset): Promise<s.TPreset> {\n return request.post(endpoints.presets(), payload);\n}\n\nexport function updatePreset(payload: s.TPreset): Promise<s.TPreset> {\n return request.post(endpoints.presets(), payload);\n}\n\nexport function deletePreset(arg: s.TPreset | undefined): Promise<m.PresetDeleteResponse> {\n return request.post(endpoints.deletePreset(), arg);\n}\n\nexport function getSearchEnabled(): Promise<boolean> {\n return request.get(endpoints.searchEnabled());\n}\n\nexport function getUser(): Promise<t.TUser> {\n return request.get(endpoints.user());\n}\n\nexport function getUserBalance(): Promise<string> {\n return request.get(endpoints.balance());\n}\n\nexport const searchConversations = async (\n q: string,\n pageNumber: string,\n): Promise<t.TSearchResults> => {\n return request.get(endpoints.search(q, pageNumber));\n};\n\nexport const updateTokenCount = (text: string) => {\n return request.post(endpoints.tokenizer(), { arg: text });\n};\n\nexport const login = (payload: t.TLoginUser) => {\n return request.post(endpoints.login(), payload);\n};\n\nexport const logout = () => {\n return request.post(endpoints.logout());\n};\n\nexport const register = (payload: t.TRegisterUser) => {\n return request.post(endpoints.register(), payload);\n};\n\nexport const userKeyQuery = (name: string): Promise<t.TCheckUserKeyResponse> =>\n request.get(endpoints.userKeyQuery(name));\n\nexport const getLoginGoogle = () => {\n return request.get(endpoints.loginGoogle());\n};\n\nexport const requestPasswordReset = (\n payload: t.TRequestPasswordReset,\n): Promise<t.TRequestPasswordResetResponse> => {\n return request.post(endpoints.requestPasswordReset(), payload);\n};\n\nexport const resetPassword = (payload: t.TResetPassword) => {\n return request.post(endpoints.resetPassword(), payload);\n};\n\nexport const getAvailablePlugins = (): Promise<s.TPlugin[]> => {\n return request.get(endpoints.plugins());\n};\n\nexport const updateUserPlugins = (payload: t.TUpdateUserPlugins) => {\n return request.post(endpoints.userPlugins(), payload);\n};\n\n/* Config */\n\nexport const getStartupConfig = (): Promise<t.TStartupConfig> => {\n return request.get(endpoints.config());\n};\n\nexport const getAIEndpoints = (): Promise<t.TEndpointsConfig> => {\n return request.get(endpoints.aiEndpoints());\n};\n\nexport const getModels = async (): Promise<t.TModelsConfig> => {\n return request.get(endpoints.models());\n};\n\nexport const getEndpointsConfigOverride = (): Promise<unknown | boolean> => {\n return request.get(endpoints.endpointsConfigOverride());\n};\n\n/* Assistants */\n\nexport const createAssistant = (data: a.AssistantCreateParams): Promise<a.Assistant> => {\n return request.post(endpoints.assistants(), data);\n};\n\nexport const getAssistantById = (assistant_id: string): Promise<a.Assistant> => {\n return request.get(endpoints.assistants(assistant_id));\n};\n\nexport const updateAssistant = (\n assistant_id: string,\n data: a.AssistantUpdateParams,\n): Promise<a.Assistant> => {\n return request.patch(endpoints.assistants(assistant_id), data);\n};\n\nexport const deleteAssistant = (assistant_id: string): Promise<void> => {\n return request.delete(endpoints.assistants(assistant_id));\n};\n\nexport const listAssistants = (\n params?: a.AssistantListParams,\n): Promise<a.AssistantListResponse> => {\n return request.get(endpoints.assistants(), { params });\n};\n\n/* Tools */\n\nexport const getAvailableTools = (): Promise<s.TPlugin[]> => {\n return request.get(`${endpoints.assistants()}/tools`);\n};\n\n/* Files */\n\nexport const getFiles = (): Promise<f.TFile[]> => {\n return request.get(endpoints.files());\n};\n\nexport const getFileConfig = (): Promise<f.FileConfig> => {\n return request.get(`${endpoints.files()}/config`);\n};\n\nexport const uploadImage = (data: FormData): Promise<f.TFileUpload> => {\n return request.postMultiPart(endpoints.images(), data);\n};\n\nexport const uploadFile = (data: FormData): Promise<f.TFileUpload> => {\n return request.postMultiPart(endpoints.files(), data);\n};\n\nexport const uploadAvatar = (data: FormData): Promise<f.AvatarUploadResponse> => {\n return request.postMultiPart(endpoints.avatar(), data);\n};\n\nexport const uploadAssistantAvatar = (data: m.AssistantAvatarVariables): Promise<a.Assistant> => {\n return request.postMultiPart(endpoints.assistants(`avatar/${data.assistant_id}`), data.formData);\n};\n\nexport const updateAction = (data: m.UpdateActionVariables): Promise<m.UpdateActionResponse> => {\n const { assistant_id, ...body } = data;\n return request.post(endpoints.assistants(`actions/${assistant_id}`), body);\n};\n\nexport function getActions(): Promise<a.Action[]> {\n return request.get(endpoints.assistants('actions'));\n}\n\nexport function getAssistantDocs(): Promise<a.AssistantDocument[]> {\n return request.get(endpoints.assistants('documents'));\n}\n\nexport const deleteFiles = async (\n files: f.BatchFile[],\n assistant_id?: string,\n): Promise<f.DeleteFilesResponse> =>\n request.deleteWithOptions(endpoints.files(), {\n data: { files, assistant_id },\n });\n\n/* conversations */\n\nexport const listConversations = (\n params?: q.ConversationListParams,\n): Promise<q.ConversationListResponse> => {\n // Assuming params has a pageNumber property\n const pageNumber = params?.pageNumber || '1'; // Default to page 1 if not provided\n return request.get(endpoints.conversations(pageNumber));\n};\n\nexport const listConversationsByQuery = (\n params?: q.ConversationListParams & { searchQuery?: string },\n): Promise<q.ConversationListResponse> => {\n const pageNumber = params?.pageNumber || '1'; // Default to page 1 if not provided\n const searchQuery = params?.searchQuery || ''; // If no search query is provided, default to an empty string\n // Update the endpoint to handle a search query\n if (searchQuery !== '') {\n return request.get(endpoints.search(searchQuery, pageNumber));\n } else {\n return request.get(endpoints.conversations(pageNumber));\n }\n};\n\nexport const deleteAction = async (assistant_id: string, action_id: string): Promise<void> =>\n request.delete(endpoints.assistants(`actions/${assistant_id}/${action_id}`));\n","export enum QueryKeys {\n messages = 'messages',\n allConversations = 'allConversations',\n searchConversations = 'searchConversations',\n conversation = 'conversation',\n searchEnabled = 'searchEnabled',\n user = 'user',\n name = 'name', // user key name\n models = 'models',\n balance = 'balance',\n endpoints = 'endpoints',\n presets = 'presets',\n searchResults = 'searchResults',\n tokenCount = 'tokenCount',\n availablePlugins = 'availablePlugins',\n startupConfig = 'startupConfig',\n assistants = 'assistants',\n assistant = 'assistant',\n endpointsConfigOverride = 'endpointsConfigOverride',\n files = 'files',\n fileConfig = 'fileConfig',\n tools = 'tools',\n actions = 'actions',\n assistantDocs = 'assistantDocs',\n}\n\nexport enum MutationKeys {\n fileUpload = 'fileUpload',\n fileDelete = 'fileDelete',\n updatePreset = 'updatePreset',\n deletePreset = 'deletePreset',\n logoutUser = 'logoutUser',\n avatarUpload = 'avatarUpload',\n assistantAvatarUpload = 'assistantAvatarUpload',\n updateAction = 'updateAction',\n deleteAction = 'deleteAction',\n}\n","import {\n UseQueryOptions,\n useQuery,\n useMutation,\n useQueryClient,\n UseMutationResult,\n QueryObserverResult,\n} from '@tanstack/react-query';\nimport * as t from '../types';\nimport * as s from '../schemas';\nimport * as m from '../types/mutations';\nimport { defaultOrderQuery } from '../config';\nimport * as dataService from '../data-service';\nimport request from '../request';\nimport { QueryKeys } from '../keys';\n\nexport const useAbortRequestWithMessage = (): UseMutationResult<\n void,\n Error,\n { endpoint: string; abortKey: string; message: string }\n> => {\n const queryClient = useQueryClient();\n return useMutation(\n ({ endpoint, abortKey, message }) =>\n dataService.abortRequestWithMessage(endpoint, abortKey, message),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.balance]);\n },\n },\n );\n};\n\nexport const useGetUserQuery = (\n config?: UseQueryOptions<t.TUser>,\n): QueryObserverResult<t.TUser> => {\n return useQuery<t.TUser>([QueryKeys.user], () => dataService.getUser(), {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: false,\n ...config,\n });\n};\n\nexport const useGetMessagesByConvoId = <TData = s.TMessage[]>(\n id: string,\n config?: UseQueryOptions<s.TMessage[], unknown, TData>,\n): QueryObserverResult<TData> => {\n return useQuery<s.TMessage[], unknown, TData>(\n [QueryKeys.messages, id],\n () => dataService.getMessagesByConvoId(id),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\nexport const useGetUserBalance = (\n config?: UseQueryOptions<string>,\n): QueryObserverResult<string> => {\n return useQuery<string>([QueryKeys.balance], () => dataService.getUserBalance(), {\n refetchOnWindowFocus: true,\n refetchOnReconnect: true,\n refetchOnMount: true,\n ...config,\n });\n};\n\nexport const useGetConversationByIdQuery = (\n id: string,\n config?: UseQueryOptions<s.TConversation>,\n): QueryObserverResult<s.TConversation> => {\n return useQuery<s.TConversation>(\n [QueryKeys.conversation, id],\n () => dataService.getConversationById(id),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\n//This isn't ideal because its just a query and we're using mutation, but it was the only way\n//to make it work with how the Chat component is structured\nexport const useGetConversationByIdMutation = (id: string): UseMutationResult<s.TConversation> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.getConversationById(id), {\n // onSuccess: (res: s.TConversation) => {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.conversation, id]);\n },\n });\n};\n\nexport const useUpdateMessageMutation = (\n id: string,\n): UseMutationResult<unknown, unknown, t.TUpdateMessageRequest, unknown> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TUpdateMessageRequest) => dataService.updateMessage(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.messages, id]);\n },\n });\n};\n\nexport const useUpdateUserKeysMutation = (): UseMutationResult<\n t.TUser,\n unknown,\n t.TUpdateUserKeyRequest,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TUpdateUserKeyRequest) => dataService.updateUserKey(payload), {\n onSuccess: (data, variables) => {\n queryClient.invalidateQueries([QueryKeys.name, variables.name]);\n },\n });\n};\n\nexport const useClearConversationsMutation = (): UseMutationResult<unknown> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.clearAllConversations(), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.allConversations]);\n },\n });\n};\n\nexport const useRevokeUserKeyMutation = (name: string): UseMutationResult<unknown> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.revokeUserKey(name), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.name, name]);\n if (name === s.EModelEndpoint.assistants) {\n queryClient.invalidateQueries([QueryKeys.assistants, defaultOrderQuery]);\n queryClient.invalidateQueries([QueryKeys.assistantDocs]);\n queryClient.invalidateQueries([QueryKeys.assistants]);\n queryClient.invalidateQueries([QueryKeys.assistant]);\n queryClient.invalidateQueries([QueryKeys.actions]);\n queryClient.invalidateQueries([QueryKeys.tools]);\n }\n },\n });\n};\n\nexport const useRevokeAllUserKeysMutation = (): UseMutationResult<unknown> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.revokeAllUserKeys(), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.name]);\n queryClient.invalidateQueries([QueryKeys.assistants, defaultOrderQuery]);\n queryClient.invalidateQueries([QueryKeys.assistantDocs]);\n queryClient.invalidateQueries([QueryKeys.assistants]);\n queryClient.invalidateQueries([QueryKeys.assistant]);\n queryClient.invalidateQueries([QueryKeys.actions]);\n queryClient.invalidateQueries([QueryKeys.tools]);\n },\n });\n};\n\nexport const useGetConversationsQuery = (\n pageNumber: string,\n config?: UseQueryOptions<t.TGetConversationsResponse>,\n): QueryObserverResult<t.TGetConversationsResponse> => {\n return useQuery<t.TGetConversationsResponse>(\n [QueryKeys.allConversations],\n () => dataService.getConversations(pageNumber),\n {\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: 1,\n ...config,\n },\n );\n};\n\nexport const useGetSearchEnabledQuery = (\n config?: UseQueryOptions<boolean>,\n): QueryObserverResult<boolean> => {\n return useQuery<boolean>([QueryKeys.searchEnabled], () => dataService.getSearchEnabled(), {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n });\n};\n\nexport const useGetEndpointsQuery = <TData = t.TEndpointsConfig>(\n config?: UseQueryOptions<t.TEndpointsConfig, unknown, TData>,\n): QueryObserverResult<TData> => {\n return useQuery<t.TEndpointsConfig, unknown, TData>(\n [QueryKeys.endpoints],\n () => dataService.getAIEndpoints(),\n {\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\nexport const useGetModelsQuery = (\n config?: UseQueryOptions<t.TModelsConfig>,\n): QueryObserverResult<t.TModelsConfig> => {\n return useQuery<t.TModelsConfig>([QueryKeys.models], () => dataService.getModels(), {\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n });\n};\n\nexport const useCreatePresetMutation = (): UseMutationResult<\n s.TPreset,\n unknown,\n s.TPreset,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: s.TPreset) => dataService.createPreset(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.presets]);\n },\n });\n};\n\nexport const useDeletePresetMutation = (): UseMutationResult<\n m.PresetDeleteResponse,\n unknown,\n s.TPreset | undefined,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: s.TPreset | undefined) => dataService.deletePreset(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.presets]);\n },\n });\n};\n\nexport const useSearchQuery = (\n searchQuery: string,\n pageNumber: string,\n config?: UseQueryOptions<t.TSearchResults>,\n): QueryObserverResult<t.TSearchResults> => {\n return useQuery<t.TSearchResults>(\n [QueryKeys.searchResults, pageNumber, searchQuery],\n () => dataService.searchConversations(searchQuery, pageNumber),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\nexport const useUpdateTokenCountMutation = (): UseMutationResult<\n t.TUpdateTokenCountResponse,\n unknown,\n { text: string },\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation(({ text }: { text: string }) => dataService.updateTokenCount(text), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.tokenCount]);\n },\n });\n};\n\nexport const useLoginUserMutation = (): UseMutationResult<\n t.TLoginResponse,\n unknown,\n t.TLoginUser,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TLoginUser) => dataService.login(payload), {\n onMutate: () => {\n queryClient.removeQueries();\n localStorage.removeItem('lastConversationSetup');\n localStorage.removeItem('lastSelectedModel');\n localStorage.removeItem('lastSelectedTools');\n localStorage.removeItem('filesToDelete');\n // localStorage.removeItem('lastAssistant');\n },\n });\n};\n\nexport const useRegisterUserMutation = (): UseMutationResult<\n unknown,\n unknown,\n t.TRegisterUser,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TRegisterUser) => dataService.register(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.user]);\n },\n });\n};\n\nexport const useRefreshTokenMutation = (): UseMutationResult<\n t.TRefreshTokenResponse,\n unknown,\n unknown,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation(() => request.refreshToken(), {\n onMutate: () => {\n queryClient.removeQueries();\n },\n });\n};\n\nexport const useUserKeyQuery = (\n name: string,\n config?: UseQueryOptions<t.TCheckUserKeyResponse>,\n): QueryObserverResult<t.TCheckUserKeyResponse> => {\n return useQuery<t.TCheckUserKeyResponse>(\n [QueryKeys.name, name],\n () => {\n if (!name) {\n return Promise.resolve({ expiresAt: '' });\n }\n return dataService.userKeyQuery(name);\n },\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: false,\n ...config,\n },\n );\n};\n\nexport const useRequestPasswordResetMutation = (): UseMutationResult<\n t.TRequestPasswordResetResponse,\n unknown,\n t.TRequestPasswordReset,\n unknown\n> => {\n return useMutation((payload: t.TRequestPasswordReset) =>\n dataService.requestPasswordReset(payload),\n );\n};\n\nexport const useResetPasswordMutation = (): UseMutationResult<\n unknown,\n unknown,\n t.TResetPassword,\n unknown\n> => {\n return useMutation((payload: t.TResetPassword) => dataService.resetPassword(payload));\n};\n\nexport const useAvailablePluginsQuery = (): QueryObserverResult<s.TPlugin[]> => {\n return useQuery<s.TPlugin[]>(\n [QueryKeys.availablePlugins],\n () => dataService.getAvailablePlugins(),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n },\n );\n};\n\nexport const useUpdateUserPluginsMutation = (): UseMutationResult<\n t.TUser,\n unknown,\n t.TUpdateUserPlugins,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TUpdateUserPlugins) => dataService.updateUserPlugins(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.user]);\n },\n });\n};\n\nexport const useGetStartupConfig = (): QueryObserverResult<t.TStartupConfig> => {\n return useQuery<t.TStartupConfig>(\n [QueryKeys.startupConfig],\n () => dataService.getStartupConfig(),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n },\n );\n};\n"],"names":["EModelEndpoint","z","string","uuid","ImageDetail","google","_a","model","default","maxOutputTokens","min","max","step","maxGeminiPro","defaultGeminiPro","temperature","topP","topK","eModelEndpointSchema","nativeEnum","extendedModelEndpointSchema","union","_b","low","auto","high","eImageDetailSchema","tPluginAuthConfigSchema","object","authField","label","description","tPluginSchema","name","pluginKey","icon","authConfig","array","authenticated","boolean","optional","isButton","tExampleSchema","input","content","output","tAgentOptionsSchema","agent","skipCompletion","number","messageId","endpoint","clientId","nullable","conversationId","parentMessageId","responseMessageId","overrideParentMessageId","bg","title","or","literal","sender","text","generation","isEdited","isCreatedByUser","error","createdAt","Date","toISOString","updatedAt","current","unfinished","searchResult","finish_reason","thread_id","tConversationSchema","user","endpointType","suggestions","messages","tools","systemMessage","modelLabel","examples","chatGptLabel","userLabel","promptPrefix","context","top_p","frequency_penalty","presence_penalty","jailbreak","jailbreakConversationId","conversationSignature","invocationId","toneStyle","agentOptions","file_ids","resendImages","imageDetail","assistant_id","instructions","presetOverride","record","unknown","removeNullishValues","obj","newObj","__assign","Object","keys","forEach","key","undefined","omit","merge","presetId","defaultPreset","order","pick","transform","_c","_d","_e","_f","_g","_h","_j","catch","isGeminiPro","toLowerCase","includes","maxOutputTokensMax","maxOutputTokensDefault","Math","_k","length","openAI","assistants","azureOpenAI","custom","excelFileTypes","__spreadArray","imageMimeTypes","supportedMimeTypes","mbToBytes","mb","fileLimit","fileSizeLimit","totalSizeLimit","disabled","FileSources","FileContext","supportedMimeTypesSchema","any","refine","mimeTypes","every","mimeType","RegExp","message","endpointFileConfigSchema","fileConfigSchema","endpoints","serverFileSizeLimit","avatarSizeLimit","KnownEndpoints","CacheKeys","ViolationTypes","AuthKeys","ImageDetailCost","SettingsTabValues","Constants","fileSourceSchema","modelConfigSchema","deploymentName","version","azureBaseSchema","apiKey","instanceName","baseURL","additionalHeaders","azureGroupSchema","group","models","required","and","azureGroupConfigsSchema","assistantEndpointSchema","disableBuilder","pollIntervalMs","timeoutMs","supportedIds","excludedIds","fetch","userIdQuery","titleConvo","titleMethod","titleModel","headers","endpointSchema","value","safeParse","success","concat","values","join","summarize","summaryModel","forcePrompt","modelDisplayLabel","addParams","dropParams","customOrder","azureEndpointSchema","groups","plugins","partial","rateLimitSchema","fileUploads","ipMax","ipWindowInMinutes","userMax","userWindowInMinutes","cache","fileStrategy","registration","socialLogins","allowedDomains","rateLimits","fileConfig","strict","data","bingAI","chatGPTBrowser","gptPlugins","anthropic","Set","defaultOrderQuery","keysEndpoint","search","q","pageNumber","_post","url","axios","post","JSON","stringify","sent","isRefreshing","failedQueue","refreshToken","retry","endpoints.refreshToken","processQueue","token","prom","reject","resolve","interceptors","response","use","__awaiter","originalRequest","config","status","_retry","Promise","push","err_1","defaults","common","setTokenHeader","window","dispatchEvent","CustomEvent","detail","location","href","err_2","request","get","options","postMultiPart","formData","put","delete","deleteWithOptions","patch","revokeUserKey","endpoints.revokeUserKey","revokeAllUserKeys","getConversationById","id","endpoints.conversationById","updateUserKey","payload","Error","QueryKeys","MutationKeys","userKeyQuery","endpoints.userKeyQuery","useAbortRequestWithMessage","queryClient","useQueryClient","useMutation","abortKey","endpoints.abortRequest","arg","dataService.abortRequestWithMessage","onSuccess","invalidateQueries","balance","useGetUserQuery","useQuery","refetchOnWindowFocus","refetchOnReconnect","refetchOnMount","useGetMessagesByConvoId","endpoints.messages","useGetUserBalance","useGetConversationByIdQuery","conversation","dataService.getConversationById","useGetConversationByIdMutation","useUpdateMessageMutation","dataService.updateMessage","useUpdateUserKeysMutation","dataService.updateUserKey","variables","useClearConversationsMutation","allConversations","useRevokeUserKeyMutation","dataService.revokeUserKey","s.EModelEndpoint","assistantDocs","assistant","actions","useRevokeAllUserKeysMutation","dataService.revokeAllUserKeys","useGetConversationsQuery","endpoints.conversations","dataService.getConversations","useGetSearchEnabledQuery","searchEnabled","useGetEndpointsQuery","staleTime","Infinity","useGetModelsQuery","useCreatePresetMutation","dataService.createPreset","presets","useDeletePresetMutation","useSearchQuery","searchQuery","searchResults","endpoints.search","dataService.searchConversations","useUpdateTokenCountMutation","dataService.updateTokenCount","tokenCount","useLoginUserMutation","dataService.login","onMutate","removeQueries","localStorage","removeItem","useRegisterUserMutation","dataService.register","useRefreshTokenMutation","useUserKeyQuery","dataService.userKeyQuery","expiresAt","useRequestPasswordResetMutation","dataService.requestPasswordReset","useResetPasswordMutation","dataService.resetPassword","useAvailablePluginsQuery","availablePlugins","useUpdateUserPluginsMutation","dataService.updateUserPlugins","useGetStartupConfig","startupConfig"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "librechat-data-provider",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
4
4
|
"description": "data services for librechat apps",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.es.js",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"bugs": {
|
|
38
38
|
"url": "https://github.com/danny-avila/LibreChat/issues"
|
|
39
39
|
},
|
|
40
|
-
"homepage": "https://
|
|
40
|
+
"homepage": "https://librechat.ai",
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@types/js-yaml": "^4.0.9",
|
|
43
43
|
"axios": "^1.3.4",
|