bolt.new / app /routes /api.export-api-keys.ts
GamerC0der
Add application file
bf8b26e
import type { LoaderFunction } from '@remix-run/cloudflare';
import { LLMManager } from '~/lib/modules/llm/manager';
import { getApiKeysFromCookie } from '~/lib/api/cookies';
export const loader: LoaderFunction = async ({ context, request }) => {
// Get API keys from cookie
const cookieHeader = request.headers.get('Cookie');
const apiKeysFromCookie = getApiKeysFromCookie(cookieHeader);
// Initialize the LLM manager to access environment variables
const llmManager = LLMManager.getInstance(context?.cloudflare?.env as any);
// Get all provider instances to find their API token keys
const providers = llmManager.getAllProviders();
// Create a comprehensive API keys object
const apiKeys: Record<string, string> = { ...apiKeysFromCookie };
// For each provider, check all possible sources for API keys
for (const provider of providers) {
if (!provider.config.apiTokenKey) {
continue;
}
const envVarName = provider.config.apiTokenKey;
// Skip if we already have this provider's key from cookies
if (apiKeys[provider.name]) {
continue;
}
// Check environment variables in order of precedence
const envValue =
(context?.cloudflare?.env as Record<string, any>)?.[envVarName] ||
process.env[envVarName] ||
llmManager.env[envVarName];
if (envValue) {
apiKeys[provider.name] = envValue;
}
}
return Response.json(apiKeys);
};