Skip to content

Commit 4c21a50

Browse files
fix(tui): use modelKey helper to avoid double/missing provider prefix in /model confirmation
1 parent d157b38 commit 4c21a50

2 files changed

Lines changed: 24 additions & 4 deletions

File tree

src/tui/tui-command-handlers.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1191,6 +1191,25 @@ describe("tui command handlers", () => {
11911191

11921192
expect(addSystem).toHaveBeenCalledWith("model set to openai/gpt-5.5");
11931193
});
1194+
it("preserves provider prefix for nested model ids in /model confirmation", async () => {
1195+
// Some providers route to nested model ids that themselves contain a slash
1196+
// (e.g. resolved.model: "moonshotai/kimi-k2.5" with modelProvider: "nvidia").
1197+
// The confirmation must still show the full nvidia/moonshotai/kimi-k2.5 ref
1198+
// to match the footer/status bar, not strip the provider just because the
1199+
// model id already contains a slash.
1200+
const patchSession = vi.fn().mockResolvedValue({
1201+
ok: true,
1202+
path: "/sessions/patch",
1203+
key: "agent:main:main",
1204+
entry: {},
1205+
resolved: { modelProvider: "nvidia", model: "moonshotai/kimi-k2.5" },
1206+
});
1207+
const { handleCommand, addSystem } = createHarness({ patchSession });
1208+
1209+
await handleCommand("/model nvidia/moonshotai/kimi-k2.5");
1210+
1211+
expect(addSystem).toHaveBeenCalledWith("model set to nvidia/moonshotai/kimi-k2.5");
1212+
});
11941213

11951214
it("renders model listing feedback before the backend list resolves", async () => {
11961215
let resolveModels: (

src/tui/tui-command-handlers.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -471,10 +471,11 @@ export function createCommandHandlers(context: CommandHandlerContext) {
471471
});
472472
const resolvedModel = result.resolved?.model;
473473
const resolvedProvider = result.resolved?.modelProvider;
474-
const resolvedModelRef =
475-
resolvedModel && resolvedProvider && !resolvedModel.includes("/")
476-
? `${resolvedProvider}/${resolvedModel}`
477-
: (resolvedModel ?? args);
474+
const resolvedModelRef = resolvedModel
475+
? resolvedProvider
476+
? modelKey(resolvedProvider, resolvedModel)
477+
: resolvedModel
478+
: args;
478479
chatLog.addSystem(`model set to ${resolvedModelRef}`);
479480
applySessionInfoFromPatch(result);
480481
await refreshSessionInfo();

0 commit comments

Comments
 (0)