mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-24 12:20:14 +01:00
* feat: add filterFilesByEndpointConfig to filter disabled file processing by provider * chore: explicit define of endpointFileConfig for better debugging * refactor: move `normalizeEndpointName` to data-provider as used app-wide * chore: remove overrideEndpoint from useFileHandling * refactor: improve endpoint file config selection * refactor: update filterFilesByEndpointConfig to accept structured parameters and improve endpoint file config handling * refactor: replace defaultFileConfig with getEndpointFileConfig for improved file configuration handling across components * test: add comprehensive unit tests for getEndpointFileConfig to validate endpoint configuration handling * refactor: streamline agent endpoint assignment and improve file filtering logic * feat: add error handling for disabled file uploads in endpoint configuration * refactor: update encodeAndFormat functions to accept structured parameters for provider and endpoint * refactor: streamline requestFiles handling in initializeAgent function * fix: getEndpointFileConfig partial config merging scenarios * refactor: enhance mergeWithDefault function to support document-supported providers with comprehensive MIME types * refactor: user-configured default file config in getEndpointFileConfig * fix: prevent file handling when endpoint is disabled and file is dragged to chat * refactor: move `getEndpointField` to `data-provider` and update usage across components and hooks * fix: prioritize endpointType based on agent.endpoint in file filtering logic * fix: prioritize agent.endpoint in file filtering logic and remove unnecessary endpointType defaulting
62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
export const envVarRegex = /^\${(.+)}$/;
|
|
|
|
/** Extracts the environment variable name from a template literal string */
|
|
export function extractVariableName(value: string): string | null {
|
|
if (!value) {
|
|
return null;
|
|
}
|
|
|
|
const match = value.trim().match(envVarRegex);
|
|
return match ? match[1] : null;
|
|
}
|
|
|
|
/** Extracts the value of an environment variable from a string. */
|
|
export function extractEnvVariable(value: string) {
|
|
if (!value) {
|
|
return value;
|
|
}
|
|
|
|
// Trim the input
|
|
const trimmed = value.trim();
|
|
|
|
// Special case: if it's just a single environment variable
|
|
const singleMatch = trimmed.match(envVarRegex);
|
|
if (singleMatch) {
|
|
const varName = singleMatch[1];
|
|
return process.env[varName] || trimmed;
|
|
}
|
|
|
|
// For multiple variables, process them using a regex loop
|
|
const regex = /\${([^}]+)}/g;
|
|
let result = trimmed;
|
|
|
|
// First collect all matches and their positions
|
|
const matches = [];
|
|
let match;
|
|
while ((match = regex.exec(trimmed)) !== null) {
|
|
matches.push({
|
|
fullMatch: match[0],
|
|
varName: match[1],
|
|
index: match.index,
|
|
});
|
|
}
|
|
|
|
// Process matches in reverse order to avoid position shifts
|
|
for (let i = matches.length - 1; i >= 0; i--) {
|
|
const { fullMatch, varName, index } = matches[i];
|
|
const envValue = process.env[varName] || fullMatch;
|
|
|
|
// Replace at exact position
|
|
result = result.substring(0, index) + envValue + result.substring(index + fullMatch.length);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Normalize the endpoint name to system-expected value.
|
|
* @param name
|
|
*/
|
|
export function normalizeEndpointName(name = ''): string {
|
|
return name.toLowerCase() === 'ollama' ? 'ollama' : name;
|
|
}
|