|
import { TEXTGEN_TYPES, OPENROUTER_HEADERS, FEATHERLESS_HEADERS } from './constants.js'; |
|
import { SECRET_KEYS, readSecret } from './endpoints/secrets.js'; |
|
import { getConfigValue } from './util.js'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
function getMancerHeaders(directories) { |
|
const apiKey = readSecret(directories, SECRET_KEYS.MANCER); |
|
|
|
return apiKey ? ({ |
|
'X-API-KEY': apiKey, |
|
'Authorization': `Bearer ${apiKey}`, |
|
}) : {}; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
function getTogetherAIHeaders(directories) { |
|
const apiKey = readSecret(directories, SECRET_KEYS.TOGETHERAI); |
|
|
|
return apiKey ? ({ |
|
'Authorization': `Bearer ${apiKey}`, |
|
}) : {}; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
function getInfermaticAIHeaders(directories) { |
|
const apiKey = readSecret(directories, SECRET_KEYS.INFERMATICAI); |
|
|
|
return apiKey ? ({ |
|
'Authorization': `Bearer ${apiKey}`, |
|
}) : {}; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
function getDreamGenHeaders(directories) { |
|
const apiKey = readSecret(directories, SECRET_KEYS.DREAMGEN); |
|
|
|
return apiKey ? ({ |
|
'Authorization': `Bearer ${apiKey}`, |
|
}) : {}; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
function getOpenRouterHeaders(directories) { |
|
const apiKey = readSecret(directories, SECRET_KEYS.OPENROUTER); |
|
const baseHeaders = { ...OPENROUTER_HEADERS }; |
|
|
|
return apiKey ? Object.assign(baseHeaders, { 'Authorization': `Bearer ${apiKey}` }) : baseHeaders; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
function getVllmHeaders(directories) { |
|
const apiKey = readSecret(directories, SECRET_KEYS.VLLM); |
|
|
|
return apiKey ? ({ |
|
'Authorization': `Bearer ${apiKey}`, |
|
}) : {}; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
function getAphroditeHeaders(directories) { |
|
const apiKey = readSecret(directories, SECRET_KEYS.APHRODITE); |
|
|
|
return apiKey ? ({ |
|
'X-API-KEY': apiKey, |
|
'Authorization': `Bearer ${apiKey}`, |
|
}) : {}; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
function getTabbyHeaders(directories) { |
|
const apiKey = readSecret(directories, SECRET_KEYS.TABBY); |
|
|
|
return apiKey ? ({ |
|
'x-api-key': apiKey, |
|
'Authorization': `Bearer ${apiKey}`, |
|
}) : {}; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
function getLlamaCppHeaders(directories) { |
|
const apiKey = readSecret(directories, SECRET_KEYS.LLAMACPP); |
|
|
|
return apiKey ? ({ |
|
'Authorization': `Bearer ${apiKey}`, |
|
}) : {}; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
function getOobaHeaders(directories) { |
|
const apiKey = readSecret(directories, SECRET_KEYS.OOBA); |
|
|
|
return apiKey ? ({ |
|
'Authorization': `Bearer ${apiKey}`, |
|
}) : {}; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
function getKoboldCppHeaders(directories) { |
|
const apiKey = readSecret(directories, SECRET_KEYS.KOBOLDCPP); |
|
|
|
return apiKey ? ({ |
|
'Authorization': `Bearer ${apiKey}`, |
|
}) : {}; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
function getFeatherlessHeaders(directories) { |
|
const apiKey = readSecret(directories, SECRET_KEYS.FEATHERLESS); |
|
const baseHeaders = { ...FEATHERLESS_HEADERS }; |
|
|
|
return apiKey ? Object.assign(baseHeaders, { 'Authorization': `Bearer ${apiKey}` }) : baseHeaders; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
function getHuggingFaceHeaders(directories) { |
|
const apiKey = readSecret(directories, SECRET_KEYS.HUGGINGFACE); |
|
|
|
return apiKey ? ({ |
|
'Authorization': `Bearer ${apiKey}`, |
|
}) : {}; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
function getGenericHeaders(directories) { |
|
const apiKey = readSecret(directories, SECRET_KEYS.GENERIC); |
|
|
|
return apiKey ? ({ |
|
'Authorization': `Bearer ${apiKey}`, |
|
}) : {}; |
|
} |
|
|
|
export function getOverrideHeaders(urlHost) { |
|
const requestOverrides = getConfigValue('requestOverrides', []); |
|
const overrideHeaders = requestOverrides?.find((e) => e.hosts?.includes(urlHost))?.headers; |
|
if (overrideHeaders && urlHost) { |
|
return overrideHeaders; |
|
} else { |
|
return {}; |
|
} |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export function setAdditionalHeaders(request, args, server) { |
|
setAdditionalHeadersByType(args.headers, request.body.api_type, server, request.user.directories); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export function setAdditionalHeadersByType(requestHeaders, type, server, directories) { |
|
const headerGetters = { |
|
[TEXTGEN_TYPES.MANCER]: getMancerHeaders, |
|
[TEXTGEN_TYPES.VLLM]: getVllmHeaders, |
|
[TEXTGEN_TYPES.APHRODITE]: getAphroditeHeaders, |
|
[TEXTGEN_TYPES.TABBY]: getTabbyHeaders, |
|
[TEXTGEN_TYPES.TOGETHERAI]: getTogetherAIHeaders, |
|
[TEXTGEN_TYPES.OOBA]: getOobaHeaders, |
|
[TEXTGEN_TYPES.INFERMATICAI]: getInfermaticAIHeaders, |
|
[TEXTGEN_TYPES.DREAMGEN]: getDreamGenHeaders, |
|
[TEXTGEN_TYPES.OPENROUTER]: getOpenRouterHeaders, |
|
[TEXTGEN_TYPES.KOBOLDCPP]: getKoboldCppHeaders, |
|
[TEXTGEN_TYPES.LLAMACPP]: getLlamaCppHeaders, |
|
[TEXTGEN_TYPES.FEATHERLESS]: getFeatherlessHeaders, |
|
[TEXTGEN_TYPES.HUGGINGFACE]: getHuggingFaceHeaders, |
|
[TEXTGEN_TYPES.GENERIC]: getGenericHeaders, |
|
}; |
|
|
|
const getHeaders = headerGetters[type]; |
|
const headers = getHeaders ? getHeaders(directories) : {}; |
|
|
|
if (typeof server === 'string' && server.length > 0) { |
|
try { |
|
const url = new URL(server); |
|
const overrideHeaders = getOverrideHeaders(url.host); |
|
|
|
if (overrideHeaders && Object.keys(overrideHeaders).length > 0) { |
|
Object.assign(headers, overrideHeaders); |
|
} |
|
} catch { |
|
|
|
} |
|
} |
|
|
|
Object.assign(requestHeaders, headers); |
|
} |
|
|