import { registerRequiredSecret } from "@agent-native/core/secrets"; registerRequiredSecret({ key: "GEMINI_API_KEY", label: "Gemini API Key", description: "Required for video generation and optional as a manual image-generation fallback when Builder-managed generation is not connected.", docsUrl: "https://aistudio.google.com/apikey", scope: "user", kind: "api-key", required: false, validator: async (value) => { if (!value || value.length < 20) { return { ok: false, error: "Key looks too short." }; } try { const res = await fetch( `https://generativelanguage.googleapis.com/v1beta/models?key=${value}`, ); if (res.ok) return true; return { ok: false, error: `Gemini returned ${res.status}.` }; } catch (err: any) { return { ok: false, error: `Could not reach Gemini: ${err?.message ?? err}`, }; } }, }); registerRequiredSecret({ key: "OPENAI_API_KEY", label: "OpenAI API Key", description: "Optional manual image-generation fallback when Builder-managed generation is not connected.", docsUrl: "https://platform.openai.com/api-keys", scope: "user", kind: "api-key", required: false, validator: async (value) => { if (!value) return true; if (typeof value !== "string" || value.length < 20) { return { ok: false, error: "Key looks too short." }; } try { const res = await fetch("https://api.openai.com/v1/models", { headers: { Authorization: `Bearer ${value}` }, }); if (res.ok) return true; if (res.status === 401) { return { ok: false, error: "OpenAI rejected this key." }; } return { ok: false, error: `OpenAI returned ${res.status}.` }; } catch (err: any) { return { ok: false, error: `Could not reach OpenAI: ${err?.message ?? err}`, }; } }, });