/**
 * LiteLLM proxy connection status tracker.
 */

import { serverConfig } from "./config";

export interface LlmStatus {
  proxyReachable: boolean;
  proxyUrl: string;
  model: string;
}

export const llmStatus: LlmStatus = {
  proxyReachable: false,
  proxyUrl: serverConfig.llmProxyUrl,
  model: serverConfig.llmModel,
};

export async function checkLlmReachable(): Promise<boolean> {
  const url = llmStatus.proxyUrl;
  try {
    const controller = new AbortController();
    const timeout = setTimeout(
      () => controller.abort(),
      serverConfig.llmHealthcheckTimeoutMs,
    );
    const res = await fetch(`${url}/v1/models`, {
      signal: controller.signal,
    });
    clearTimeout(timeout);
    const reachable = res.ok;
    llmStatus.proxyReachable = reachable;
    return reachable;
  } catch {
    llmStatus.proxyReachable = false;
    return false;
  }
}
