2024-02-25 22:47:07 +02:00
|
|
|
const { TEXTGEN_TYPES, OPENROUTER_HEADERS } = require('./constants');
|
2023-12-09 19:35:49 -05:00
|
|
|
const { SECRET_KEYS, readSecret } = require('./endpoints/secrets');
|
|
|
|
const { getConfigValue } = require('./util');
|
|
|
|
|
|
|
|
function getMancerHeaders() {
|
|
|
|
const apiKey = readSecret(SECRET_KEYS.MANCER);
|
|
|
|
|
|
|
|
return apiKey ? ({
|
|
|
|
'X-API-KEY': apiKey,
|
|
|
|
'Authorization': `Bearer ${apiKey}`,
|
|
|
|
}) : {};
|
|
|
|
}
|
|
|
|
|
2023-12-17 23:38:03 +02:00
|
|
|
function getTogetherAIHeaders() {
|
|
|
|
const apiKey = readSecret(SECRET_KEYS.TOGETHERAI);
|
|
|
|
|
|
|
|
return apiKey ? ({
|
|
|
|
'Authorization': `Bearer ${apiKey}`,
|
|
|
|
}) : {};
|
|
|
|
}
|
|
|
|
|
2024-01-24 06:59:27 -06:00
|
|
|
function getInfermaticAIHeaders() {
|
|
|
|
const apiKey = readSecret(SECRET_KEYS.INFERMATICAI);
|
|
|
|
|
|
|
|
return apiKey ? ({
|
|
|
|
'Authorization': `Bearer ${apiKey}`,
|
|
|
|
}) : {};
|
|
|
|
}
|
|
|
|
|
2024-03-07 10:55:08 +01:00
|
|
|
function getDreamGenHeaders() {
|
|
|
|
const apiKey = readSecret(SECRET_KEYS.DREAMGEN);
|
|
|
|
|
|
|
|
return apiKey ? ({
|
|
|
|
'Authorization': `Bearer ${apiKey}`,
|
|
|
|
}) : {};
|
|
|
|
}
|
|
|
|
|
2024-02-25 22:47:07 +02:00
|
|
|
function getOpenRouterHeaders() {
|
|
|
|
const apiKey = readSecret(SECRET_KEYS.OPENROUTER);
|
|
|
|
const baseHeaders = { ...OPENROUTER_HEADERS };
|
|
|
|
|
|
|
|
return apiKey ? Object.assign(baseHeaders, { 'Authorization': `Bearer ${apiKey}` }) : baseHeaders;
|
|
|
|
}
|
|
|
|
|
2023-12-09 19:35:49 -05:00
|
|
|
function getAphroditeHeaders() {
|
|
|
|
const apiKey = readSecret(SECRET_KEYS.APHRODITE);
|
|
|
|
|
|
|
|
return apiKey ? ({
|
|
|
|
'X-API-KEY': apiKey,
|
|
|
|
'Authorization': `Bearer ${apiKey}`,
|
|
|
|
}) : {};
|
|
|
|
}
|
|
|
|
|
|
|
|
function getTabbyHeaders() {
|
|
|
|
const apiKey = readSecret(SECRET_KEYS.TABBY);
|
|
|
|
|
|
|
|
return apiKey ? ({
|
|
|
|
'x-api-key': apiKey,
|
|
|
|
'Authorization': `Bearer ${apiKey}`,
|
|
|
|
}) : {};
|
|
|
|
}
|
|
|
|
|
2024-02-06 20:00:16 -08:00
|
|
|
function getOobaHeaders() {
|
|
|
|
const apiKey = readSecret(SECRET_KEYS.OOBA);
|
|
|
|
|
|
|
|
return apiKey ? ({
|
|
|
|
'Authorization': `Bearer ${apiKey}`,
|
|
|
|
}) : {};
|
|
|
|
}
|
|
|
|
|
2024-03-14 00:34:09 +02:00
|
|
|
function getKoboldCppHeaders() {
|
|
|
|
const apiKey = readSecret(SECRET_KEYS.KOBOLDCPP);
|
|
|
|
|
|
|
|
return apiKey ? ({
|
|
|
|
'Authorization': `Bearer ${apiKey}`,
|
|
|
|
}) : {};
|
|
|
|
}
|
|
|
|
|
2023-12-09 19:35:49 -05:00
|
|
|
function getOverrideHeaders(urlHost) {
|
|
|
|
const requestOverrides = getConfigValue('requestOverrides', []);
|
|
|
|
const overrideHeaders = requestOverrides?.find((e) => e.hosts?.includes(urlHost))?.headers;
|
|
|
|
if (overrideHeaders && urlHost) {
|
|
|
|
return overrideHeaders;
|
|
|
|
} else {
|
|
|
|
return {};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets additional headers for the request.
|
|
|
|
* @param {object} request Original request body
|
|
|
|
* @param {object} args New request arguments
|
|
|
|
* @param {string|null} server API server for new request
|
|
|
|
*/
|
|
|
|
function setAdditionalHeaders(request, args, server) {
|
|
|
|
let headers;
|
|
|
|
|
|
|
|
switch (request.body.api_type) {
|
|
|
|
case TEXTGEN_TYPES.MANCER:
|
|
|
|
headers = getMancerHeaders();
|
|
|
|
break;
|
|
|
|
case TEXTGEN_TYPES.APHRODITE:
|
|
|
|
headers = getAphroditeHeaders();
|
|
|
|
break;
|
|
|
|
case TEXTGEN_TYPES.TABBY:
|
|
|
|
headers = getTabbyHeaders();
|
|
|
|
break;
|
2023-12-17 23:38:03 +02:00
|
|
|
case TEXTGEN_TYPES.TOGETHERAI:
|
|
|
|
headers = getTogetherAIHeaders();
|
|
|
|
break;
|
2024-02-06 20:00:16 -08:00
|
|
|
case TEXTGEN_TYPES.OOBA:
|
|
|
|
headers = getOobaHeaders();
|
|
|
|
break;
|
2024-01-24 06:59:27 -06:00
|
|
|
case TEXTGEN_TYPES.INFERMATICAI:
|
|
|
|
headers = getInfermaticAIHeaders();
|
|
|
|
break;
|
2024-03-07 10:55:08 +01:00
|
|
|
case TEXTGEN_TYPES.DREAMGEN:
|
|
|
|
headers = getDreamGenHeaders();
|
|
|
|
break;
|
2024-02-25 22:47:07 +02:00
|
|
|
case TEXTGEN_TYPES.OPENROUTER:
|
|
|
|
headers = getOpenRouterHeaders();
|
|
|
|
break;
|
2024-03-14 00:34:09 +02:00
|
|
|
case TEXTGEN_TYPES.KOBOLDCPP:
|
|
|
|
headers = getKoboldCppHeaders();
|
|
|
|
break;
|
2023-12-09 19:35:49 -05:00
|
|
|
default:
|
2024-03-14 00:48:08 +02:00
|
|
|
headers = {};
|
2023-12-09 19:35:49 -05:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2024-03-14 00:48:08 +02:00
|
|
|
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 {
|
|
|
|
// Do nothing
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-12-09 19:35:49 -05:00
|
|
|
Object.assign(args.headers, headers);
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
getOverrideHeaders,
|
|
|
|
setAdditionalHeaders,
|
|
|
|
};
|