From 61e33519c492af39190292699dc24579bb4fb899 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Wed, 8 Apr 2026 14:07:22 -0500 Subject: [PATCH 1/2] fix(ui): display 'anthropic-api' in model selector to distinguish from claude-code Helps users understand that 'anthropic-api' makes direct API calls (requires API key / extra usage) while 'claude-code' routes through the local CLI (uses subscription). --- .../modes/interactive/components/model-selector.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts b/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts index c86347b6f..078f6eb86 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts @@ -15,6 +15,15 @@ import { theme } from "../theme/theme.js"; import { DynamicBorder } from "./dynamic-border.js"; import { keyHint } from "./keybinding-hints.js"; +/** Display names for providers in the model selector UI. */ +const PROVIDER_DISPLAY_NAMES: Record = { + anthropic: "anthropic-api", +}; + +function providerDisplayName(provider: string): string { + return PROVIDER_DISPLAY_NAMES[provider] ?? provider; +} + function formatTokenCount(count: number): string { if (count >= 1_000_000) { const millions = count / 1_000_000; @@ -391,7 +400,7 @@ export class ModelSelectorComponent extends Container implements Focusable { const ctx = formatTokenCount(item.model.contextWindow); const ctxBadge = theme.fg("muted", `${ctx}`); - const providerBadge = theme.fg("muted", `[${item.provider}]`); + const providerBadge = theme.fg("muted", `[${providerDisplayName(item.provider)}]`); const checkmark = isCurrent ? theme.fg("success", " ✓") : ""; let line: string; @@ -447,7 +456,7 @@ export class ModelSelectorComponent extends Container implements Focusable { if (row.kind === "header") { // Provider group header — always unselectable - const providerLabel = theme.fg("borderAccent", row.provider); + const providerLabel = theme.fg("borderAccent", providerDisplayName(row.provider)); const count = theme.fg("muted", ` (${row.count})`); // Add blank line before header if not the very first visible row if (i > startIndex) { From ce28d00c504e1be0e960707e87a7f4dc413573de Mon Sep 17 00:00:00 2001 From: Jeremy Date: Wed, 8 Apr 2026 14:15:34 -0500 Subject: [PATCH 2/2] test(ui): add provider display name tests to satisfy CI requirement --- .../__tests__/provider-display-name.test.ts | 16 ++++++++++++++++ .../interactive/components/model-selector.ts | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 packages/pi-coding-agent/src/modes/interactive/components/__tests__/provider-display-name.test.ts diff --git a/packages/pi-coding-agent/src/modes/interactive/components/__tests__/provider-display-name.test.ts b/packages/pi-coding-agent/src/modes/interactive/components/__tests__/provider-display-name.test.ts new file mode 100644 index 000000000..221356e90 --- /dev/null +++ b/packages/pi-coding-agent/src/modes/interactive/components/__tests__/provider-display-name.test.ts @@ -0,0 +1,16 @@ +// GSD-2 — Provider display name mapping tests +import { test, describe } from "node:test"; +import assert from "node:assert/strict"; +import { providerDisplayName } from "../model-selector.js"; + +describe("providerDisplayName", () => { + test("renames 'anthropic' to 'anthropic-api'", () => { + assert.equal(providerDisplayName("anthropic"), "anthropic-api"); + }); + + test("passes through unmapped providers unchanged", () => { + assert.equal(providerDisplayName("claude-code"), "claude-code"); + assert.equal(providerDisplayName("openai"), "openai"); + assert.equal(providerDisplayName("bedrock"), "bedrock"); + }); +}); diff --git a/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts b/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts index 078f6eb86..9f978ffdf 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts @@ -20,7 +20,7 @@ const PROVIDER_DISPLAY_NAMES: Record = { anthropic: "anthropic-api", }; -function providerDisplayName(provider: string): string { +export function providerDisplayName(provider: string): string { return PROVIDER_DISPLAY_NAMES[provider] ?? provider; }