mirror of
https://github.com/stackblitz-labs/bolt.diy
synced 2025-06-26 18:26:38 +00:00
- Move stores/utils/types to their relative directories (i.e chat stores in chat directory) - Move utility files to shared/utils - Move component files to shared/components - Move type definitions to shared/types - Move stores to shared/stores - Update import paths across the project
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import type { LoaderFunction } from '@remix-run/cloudflare';
|
|
import { LLMManager } from '~/shared/lib/providers/manager';
|
|
import { getApiKeysFromCookie } from '~/shared/lib/api/cookies';
|
|
|
|
export const loader: LoaderFunction = async ({ context, request }) => {
|
|
const url = new URL(request.url);
|
|
const provider = url.searchParams.get('provider');
|
|
|
|
if (!provider) {
|
|
return Response.json({ isSet: false });
|
|
}
|
|
|
|
const llmManager = LLMManager.getInstance(context?.cloudflare?.env as any);
|
|
const providerInstance = llmManager.getProvider(provider);
|
|
|
|
if (!providerInstance || !providerInstance.config.apiTokenKey) {
|
|
return Response.json({ isSet: false });
|
|
}
|
|
|
|
const envVarName = providerInstance.config.apiTokenKey;
|
|
|
|
// Get API keys from cookie
|
|
const cookieHeader = request.headers.get('Cookie');
|
|
const apiKeys = getApiKeysFromCookie(cookieHeader);
|
|
|
|
/*
|
|
* Check API key in order of precedence:
|
|
* 1. Client-side API keys (from cookies)
|
|
* 2. Server environment variables (from Cloudflare env)
|
|
* 3. Process environment variables (from .env.local)
|
|
* 4. LLMManager environment variables
|
|
*/
|
|
const isSet = !!(
|
|
apiKeys?.[provider] ||
|
|
(context?.cloudflare?.env as Record<string, any>)?.[envVarName] ||
|
|
process.env[envVarName] ||
|
|
llmManager.env[envVarName]
|
|
);
|
|
|
|
return Response.json({ isSet });
|
|
};
|