mirror of
https://github.com/ItzCrazyKns/Perplexica.git
synced 2025-06-17 07:18:31 +00:00
105 lines
2.6 KiB
TypeScript
105 lines
2.6 KiB
TypeScript
import express from 'express';
|
|
import {
|
|
getAvailableChatModelProviders,
|
|
getAvailableEmbeddingModelProviders,
|
|
} from '../lib/providers';
|
|
import {
|
|
getGroqApiKey,
|
|
getOllamaApiEndpoint,
|
|
getAnthropicApiKey,
|
|
getOpenaiApiKey,
|
|
updateConfig,
|
|
getConfigPassword,
|
|
isLibraryEnabled,
|
|
isCopilotEnabled,
|
|
isDiscoverEnabled,
|
|
} from '../config';
|
|
|
|
const router = express.Router();
|
|
|
|
router.get('/', async (req, res) => {
|
|
const authHeader = req.headers['authorization']?.split(' ')[1];
|
|
const password = getConfigPassword();
|
|
|
|
if (authHeader !== password) {
|
|
res.status(401).json({ message: 'Unauthorized' });
|
|
return;
|
|
}
|
|
|
|
const config = {};
|
|
|
|
const [chatModelProviders, embeddingModelProviders] = await Promise.all([
|
|
getAvailableChatModelProviders(),
|
|
getAvailableEmbeddingModelProviders(),
|
|
]);
|
|
|
|
config['chatModelProviders'] = {};
|
|
config['embeddingModelProviders'] = {};
|
|
|
|
for (const provider in chatModelProviders) {
|
|
config['chatModelProviders'][provider] = Object.keys(
|
|
chatModelProviders[provider],
|
|
);
|
|
}
|
|
|
|
for (const provider in embeddingModelProviders) {
|
|
config['embeddingModelProviders'][provider] = Object.keys(
|
|
embeddingModelProviders[provider],
|
|
);
|
|
}
|
|
|
|
config['openaiApiKey'] = getOpenaiApiKey();
|
|
config['ollamaApiUrl'] = getOllamaApiEndpoint();
|
|
config['anthropicApiKey'] = getAnthropicApiKey();
|
|
config['groqApiKey'] = getGroqApiKey();
|
|
config['isLibraryEnabled'] = isLibraryEnabled();
|
|
config['isCopilotEnabled'] = isCopilotEnabled();
|
|
config['isDiscoverEnabled'] = isDiscoverEnabled();
|
|
|
|
res.status(200).json(config);
|
|
});
|
|
|
|
router.post('/', async (req, res) => {
|
|
const authHeader = req.headers['authorization']?.split(' ')[1];
|
|
const password = getConfigPassword();
|
|
|
|
if (authHeader !== password) {
|
|
res.status(401).json({ message: 'Unauthorized' });
|
|
return;
|
|
}
|
|
|
|
const config = req.body;
|
|
|
|
const updatedConfig = {
|
|
GENERAL: {
|
|
DISCOVER_ENABLED: config.isDiscoverEnabled,
|
|
LIBRARY_ENABLED: config.isLibraryEnabled,
|
|
COPILOT_ENABLED: config.isCopilotEnabled,
|
|
},
|
|
API_KEYS: {
|
|
OPENAI: config.openaiApiKey,
|
|
GROQ: config.groqApiKey,
|
|
ANTHROPIC: config.anthropicApiKey,
|
|
},
|
|
API_ENDPOINTS: {
|
|
OLLAMA: config.ollamaApiUrl,
|
|
},
|
|
};
|
|
|
|
updateConfig(updatedConfig);
|
|
|
|
res.status(200).json({ message: 'Config updated' });
|
|
});
|
|
|
|
router.get('/preferences', (_, res) => {
|
|
const preferences = {
|
|
isLibraryEnabled: isLibraryEnabled(),
|
|
isCopilotEnabled: isCopilotEnabled(),
|
|
isDiscoverEnabled: isDiscoverEnabled(),
|
|
};
|
|
|
|
res.status(200).json(preferences);
|
|
});
|
|
|
|
export default router;
|