From 4931fcf42488d2d7c3b742cda280830f3805e59c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Troed=20S=C3=A5ngberg?= Date: Tue, 16 Jun 2026 13:36:59 +0200 Subject: [PATCH] add debug logging to extractProviderUrls and pollMetrics --- tui.tsx | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tui.tsx b/tui.tsx index bda7c6f..0490893 100644 --- a/tui.tsx +++ b/tui.tsx @@ -123,23 +123,32 @@ function stripBaseUrlPath(baseURL: string): string { } function extractProviderUrls(config: unknown): string[] { - if (!config || typeof config !== "object") return [] + if (!config || typeof config !== "object") { debug("extractProviderUrls: config is null/undefined or not object"); return [] } const obj = config as Record const provider = obj.provider - if (!provider || typeof provider !== "object") return [] + if (!provider || typeof provider !== "object") { debug("extractProviderUrls: no provider in config"); return [] } const urls: string[] = [] + let total = 0 + let matched = 0 for (const [key, val] of Object.entries(provider as Record)) { + total++ if (val && typeof val === "object") { const opts = (val as Record).options if (opts && typeof opts === "object") { const baseURL = (opts as Record).baseURL || (opts as Record).base_url + debug(`extractProviderUrls: provider="${key}" baseURL=${baseURL}`) if (typeof baseURL === "string" && key.toLowerCase().includes("llama") && !key.toLowerCase().includes("ollama")) { urls.push(stripBaseUrlPath(baseURL)) + matched++ + debug(`extractProviderUrls: MATCH provider="${key}" -> ${urls[urls.length-1]}`) + } else { + debug(`extractProviderUrls: SKIP provider="${key}" (llama=${key.toLowerCase().includes("llama")} ollama=${key.toLowerCase().includes("ollama")})`) } } } } + debug(`extractProviderUrls: total=${total} matched=${matched} urls=${JSON.stringify(urls)}`) return urls } @@ -304,9 +313,13 @@ const tui: TuiPlugin = async (api) => { const prevProcessingSlotIds = new Set(Object.keys(tracker.prevNdBySlot).map(Number)) const currProcessingSlotIds = new Set() + debug(`pollMetrics: urls=${JSON.stringify(llamaServerUrls)} model=${model}`) for (const baseUrl of llamaServerUrls) { + debug(`pollMetrics: polling ${baseUrl}`) const slots = await fetchSlots(baseUrl, model) + debug(`pollMetrics: ${baseUrl} response=${JSON.stringify(slots)?.slice(0, 500)}`) const slotList = Array.isArray(slots) ? slots : slots ? Object.values(slots) : [] + debug(`pollMetrics: ${baseUrl} slotList.length=${slotList.length}`) if (slotList.length === 0) { tracker.failure = "n/a" bump() @@ -509,11 +522,13 @@ const tui: TuiPlugin = async (api) => { try { const configUrls = await loadConfigUrls(api) + debug(`init: configUrls=${JSON.stringify(configUrls)} fallback=${JSON.stringify(["http://localhost:8080"])}`) llamaServerUrls = configUrls.length > 0 ? configUrls : ["http://localhost:8080"] } catch (e) { console.error("[oc-ls-stats] loadConfigUrls error:", e) llamaServerUrls = ["http://localhost:8080"] } + debug(`init: final llamaServerUrls=${JSON.stringify(llamaServerUrls)}`) api.slots.register({ slots: {