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 = { ...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)?.[envVarName] || process.env[envVarName] || llmManager.env[envVarName]; if (envValue) { apiKeys[provider.name] = envValue; } } return Response.json(apiKeys); };