import { useCallback, useEffect, useState } from 'react'; import { apiData } from './api'; /** BYOK awareness: does the logged-in user have a text / vision model * configured this session? Gates the LLM-backed actions (enrich, auto-fill, * vision journeys, graph Q&A) so the UI can prompt to configure when not. */ export interface LlmConfigState { textConfigured: boolean; visionConfigured: boolean; loggedIn: boolean; refresh: () => void; } export function useLlmConfig(): LlmConfigState { const [state, setState] = useState({ textConfigured: false, visionConfigured: false, loggedIn: true }); const refresh = useCallback(() => { apiData('/api/account/llm-config') .then((cfg: any) => setState({ textConfigured: Boolean(cfg?.text?.api_key_set), visionConfigured: Boolean(cfg?.vision?.api_key_set), loggedIn: true }), ) .catch((err: any) => { // 401 = not logged in (keys are login-gated). if (err?.status === 401) setState({ textConfigured: false, visionConfigured: false, loggedIn: false }); }); }, []); useEffect(() => { refresh(); }, [refresh]); return { ...state, refresh }; }