diff --git a/src/api/huggingface-models.ts b/src/api/huggingface-models.ts deleted file mode 100644 index 1ee6369d4bc..00000000000 --- a/src/api/huggingface-models.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { - getHuggingFaceModels as fetchModels, - getCachedRawHuggingFaceModels, - type HuggingFaceModel, -} from "./providers/fetchers/huggingface" -import axios from "axios" -import { HUGGINGFACE_API_URL } from "@roo-code/types" - -export interface HuggingFaceModelsResponse { - models: HuggingFaceModel[] - cached: boolean - timestamp: number -} - -export async function getHuggingFaceModels(): Promise { - try { - // First, trigger the fetch to populate cache - await fetchModels() - - // Get the raw models from cache - const cachedRawModels = getCachedRawHuggingFaceModels() - - if (cachedRawModels) { - return { - models: cachedRawModels, - cached: true, - timestamp: Date.now(), - } - } - - // If no cached raw models, fetch directly from API - const response = await axios.get(HUGGINGFACE_API_URL, { - headers: { - "Upgrade-Insecure-Requests": "1", - "Sec-Fetch-Dest": "document", - "Sec-Fetch-Mode": "navigate", - "Sec-Fetch-Site": "none", - "Sec-Fetch-User": "?1", - Priority: "u=0, i", - Pragma: "no-cache", - "Cache-Control": "no-cache", - }, - timeout: 10000, - }) - - const models = response.data?.data || [] - - return { - models, - cached: false, - timestamp: Date.now(), - } - } catch (error) { - console.error("Failed to get HuggingFace models:", error) - return { - models: [], - cached: false, - timestamp: Date.now(), - } - } -} diff --git a/src/api/providers/fetchers/huggingface.ts b/src/api/providers/fetchers/huggingface.ts index 16c33b9e047..7a45c74535d 100644 --- a/src/api/providers/fetchers/huggingface.ts +++ b/src/api/providers/fetchers/huggingface.ts @@ -227,3 +227,64 @@ export function getCachedRawHuggingFaceModels(): HuggingFaceModel[] | null { export function clearHuggingFaceCache(): void { cache = null } + +/** + * HuggingFace Models Response Interface + */ +export interface HuggingFaceModelsResponse { + models: HuggingFaceModel[] + cached: boolean + timestamp: number +} + +/** + * Get HuggingFace models with response metadata + * This function provides a higher-level API that includes cache status and timestamp + */ +export async function getHuggingFaceModelsWithMetadata(): Promise { + try { + // First, trigger the fetch to populate cache + await getHuggingFaceModels() + + // Get the raw models from cache + const cachedRawModels = getCachedRawHuggingFaceModels() + + if (cachedRawModels) { + return { + models: cachedRawModels, + cached: true, + timestamp: Date.now(), + } + } + + // If no cached raw models, fetch directly from API + const response = await axios.get(HUGGINGFACE_API_URL, { + headers: { + "Upgrade-Insecure-Requests": "1", + "Sec-Fetch-Dest": "document", + "Sec-Fetch-Mode": "navigate", + "Sec-Fetch-Site": "none", + "Sec-Fetch-User": "?1", + Priority: "u=0, i", + Pragma: "no-cache", + "Cache-Control": "no-cache", + }, + timeout: 10000, + }) + + const models = response.data?.data || [] + + return { + models, + cached: false, + timestamp: Date.now(), + } + } catch (error) { + console.error("Failed to get HuggingFace models:", error) + return { + models: [], + cached: false, + timestamp: Date.now(), + } + } +} diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index c739c2ade8d..0f8b07bc852 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -676,8 +676,8 @@ export const webviewMessageHandler = async ( break case "requestHuggingFaceModels": try { - const { getHuggingFaceModels } = await import("../../api/huggingface-models") - const huggingFaceModelsResponse = await getHuggingFaceModels() + const { getHuggingFaceModelsWithMetadata } = await import("../../api/providers/fetchers/huggingface") + const huggingFaceModelsResponse = await getHuggingFaceModelsWithMetadata() provider.postMessageToWebview({ type: "huggingFaceModels", huggingFaceModels: huggingFaceModelsResponse.models,