From f8f319713f954f2efb85c4ce0ed8e34863e6a651 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 16 Jan 2026 01:13:14 +0000 Subject: [PATCH] fix: show provider/model labels in TUI --- CHANGELOG.md | 1 + .../server.sessions.gateway-server-sessions-a.test.ts | 3 +++ src/gateway/session-utils.ts | 1 + src/gateway/session-utils.types.ts | 1 + src/tui/gateway-chat.ts | 2 +- src/tui/tui-session-actions.ts | 2 +- src/tui/tui-status-summary.ts | 5 ++++- 7 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a6244a9d..ae0ee14aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - Heartbeat: tighten prompt guidance + suppress duplicate alerts for 24h. (#980) — thanks @voidserf. - Plugins: add provider auth registry + `clawdbot models auth login` for plugin-driven OAuth/API key flows. - Onboarding: prompt to modify/disable/delete when reconfiguring existing channel accounts and keep channel selection looping until Finished. +- TUI: show provider/model labels for the active session and default model. - Fix: list model picker entries as provider/model pairs for explicit selection. (#970) — thanks @mcinteerj. - Fix: persist `gateway.mode=local` after selecting Local run mode in `clawdbot configure`, even if no other sections are chosen. - Daemon: fix profile-aware service label resolution (env-driven) and add coverage for launchd/systemd/schtasks. (#969) — thanks @bjesuiter. diff --git a/src/gateway/server.sessions.gateway-server-sessions-a.test.ts b/src/gateway/server.sessions.gateway-server-sessions-a.test.ts index cf6d2d21b..b18108d94 100644 --- a/src/gateway/server.sessions.gateway-server-sessions-a.test.ts +++ b/src/gateway/server.sessions.gateway-server-sessions-a.test.ts @@ -11,6 +11,7 @@ import { startServerWithClient, testState, } from "./test-helpers.js"; +import { DEFAULT_PROVIDER } from "../agents/defaults.js"; installGatewayTestHooks(); @@ -90,6 +91,7 @@ describe("gateway server sessions", () => { const list1 = await rpcReq<{ path: string; + defaults?: { model?: string | null; modelProvider?: string | null }; sessions: Array<{ key: string; totalTokens?: number; @@ -102,6 +104,7 @@ describe("gateway server sessions", () => { expect(list1.ok).toBe(true); expect(list1.payload?.path).toBe(storePath); expect(list1.payload?.sessions.some((s) => s.key === "global")).toBe(false); + expect(list1.payload?.defaults?.modelProvider).toBe(DEFAULT_PROVIDER); const main = list1.payload?.sessions.find((s) => s.key === "agent:main:main"); expect(main?.totalTokens).toBe(30); expect(main?.thinkingLevel).toBe("low"); diff --git a/src/gateway/session-utils.ts b/src/gateway/session-utils.ts index 704351bb6..2a53c0876 100644 --- a/src/gateway/session-utils.ts +++ b/src/gateway/session-utils.ts @@ -311,6 +311,7 @@ export function getSessionDefaults(cfg: ClawdbotConfig): GatewaySessionsDefaults lookupContextTokens(resolved.model) ?? DEFAULT_CONTEXT_TOKENS; return { + modelProvider: resolved.provider ?? null, model: resolved.model ?? null, contextTokens: contextTokens ?? null, }; diff --git a/src/gateway/session-utils.types.ts b/src/gateway/session-utils.types.ts index 8641849bb..1cb4c96a4 100644 --- a/src/gateway/session-utils.types.ts +++ b/src/gateway/session-utils.types.ts @@ -1,6 +1,7 @@ import type { SessionEntry } from "../config/sessions.js"; export type GatewaySessionsDefaults = { + modelProvider: string | null; model: string | null; contextTokens: number | null; }; diff --git a/src/tui/gateway-chat.ts b/src/tui/gateway-chat.ts index 30b3729e9..83b839b94 100644 --- a/src/tui/gateway-chat.ts +++ b/src/tui/gateway-chat.ts @@ -34,7 +34,7 @@ export type GatewaySessionList = { ts: number; path: string; count: number; - defaults?: { model?: string | null; contextTokens?: number | null }; + defaults?: { model?: string | null; modelProvider?: string | null; contextTokens?: number | null }; sessions: Array<{ key: string; sessionId?: string; diff --git a/src/tui/tui-session-actions.ts b/src/tui/tui-session-actions.ts index 1c68788a1..f394c522c 100644 --- a/src/tui/tui-session-actions.ts +++ b/src/tui/tui-session-actions.ts @@ -117,7 +117,7 @@ export function createSessionActions(context: SessionActionContext) { verboseLevel: entry?.verboseLevel, reasoningLevel: entry?.reasoningLevel, model: entry?.model ?? result.defaults?.model ?? undefined, - modelProvider: entry?.modelProvider, + modelProvider: entry?.modelProvider ?? result.defaults?.modelProvider ?? undefined, contextTokens: entry?.contextTokens ?? result.defaults?.contextTokens, inputTokens: entry?.inputTokens ?? null, outputTokens: entry?.outputTokens ?? null, diff --git a/src/tui/tui-status-summary.ts b/src/tui/tui-status-summary.ts index 0882b5085..c5385c0dd 100644 --- a/src/tui/tui-status-summary.ts +++ b/src/tui/tui-status-summary.ts @@ -37,7 +37,10 @@ export function formatStatusSummary(summary: GatewayStatusSummary) { if (sessionPath) lines.push(`Session store: ${sessionPath}`); const defaults = summary.sessions?.defaults; - const defaultModel = defaults?.model ?? "unknown"; + const defaultModel = + defaults?.model && defaults?.modelProvider + ? `${defaults.modelProvider}/${defaults.model}` + : defaults?.model ?? "unknown"; const defaultCtx = typeof defaults?.contextTokens === "number" ? ` (${formatTokenCount(defaults.contextTokens)} ctx)`