Skip to content

Commit 06ee95d

Browse files
fix(models): respect auth order in picker label
1 parent 26ce5a8 commit 06ee95d

2 files changed

Lines changed: 31 additions & 1 deletion

File tree

src/auto-reply/reply/commands-models.test.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,25 @@ describe("handleModelsCommand", () => {
682682
const [[authLabelParams]] = modelAuthLabelMocks.resolveModelAuthLabel.mock
683683
.calls as unknown as Array<[{ provider?: string; acceptedProviderIds?: string[] }]>;
684684
expect(authLabelParams.provider).toBe("openai");
685-
expect(authLabelParams.acceptedProviderIds).toEqual(["openai-codex", "openai"]);
685+
expect(authLabelParams.acceptedProviderIds).toEqual(["openai-codex"]);
686+
});
687+
688+
it("labels OpenAI model lists through the dispatch harness auth providers", async () => {
689+
modelAuthLabelMocks.resolveModelAuthLabel.mockImplementation((params: unknown) => {
690+
const acceptedProviderIds = (params as { acceptedProviderIds?: string[] })
691+
.acceptedProviderIds;
692+
return acceptedProviderIds?.length === 1 && acceptedProviderIds[0] === "openai-codex"
693+
? "oauth (codex-runtime)"
694+
: "api-key (env: OPENAI_API_KEY)";
695+
});
696+
697+
const result = await handleModelsCommand(buildParams("/models openai"), true);
698+
699+
expect(result?.reply?.text).toContain("Models (openai · 🔑 oauth (codex-runtime))");
700+
const [[authLabelParams]] = modelAuthLabelMocks.resolveModelAuthLabel.mock
701+
.calls as unknown as Array<[{ provider?: string; acceptedProviderIds?: string[] }]>;
702+
expect(authLabelParams.provider).toBe("openai");
703+
expect(authLabelParams.acceptedProviderIds).toEqual(["openai-codex"]);
686704
});
687705

688706
it("uses spawned workspace for direct /models provider visibility", async () => {

src/auto-reply/reply/commands-models.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,14 +388,21 @@ function parseModelsArgs(raw: string): ParsedModelsCommand {
388388
function resolveProviderLabel(params: {
389389
provider: string;
390390
cfg: OpenClawConfig;
391+
agentId?: string;
391392
agentDir?: string;
392393
workspaceDir?: string;
393394
sessionEntry?: ModelsCommandSessionEntry;
394395
}): string {
396+
const harnessPolicy = resolveAgentHarnessPolicy({
397+
config: params.cfg,
398+
provider: params.provider,
399+
agentId: params.agentId,
400+
});
395401
const authLabel = resolveModelAuthLabel({
396402
provider: params.provider,
397403
acceptedProviderIds: listOpenAIAuthProfileProvidersForAgentRuntime({
398404
provider: params.provider,
405+
harnessRuntime: harnessPolicy.runtime,
399406
config: params.cfg,
400407
}),
401408
cfg: params.cfg,
@@ -413,13 +420,15 @@ export function formatModelsAvailableHeader(params: {
413420
provider: string;
414421
total: number;
415422
cfg: OpenClawConfig;
423+
agentId?: string;
416424
agentDir?: string;
417425
workspaceDir?: string;
418426
sessionEntry?: ModelsCommandSessionEntry;
419427
}): string {
420428
const providerLabel = resolveProviderLabel({
421429
provider: params.provider,
422430
cfg: params.cfg,
431+
agentId: params.agentId,
423432
agentDir: params.agentDir,
424433
workspaceDir: params.workspaceDir,
425434
sessionEntry: params.sessionEntry,
@@ -544,6 +553,7 @@ export async function resolveModelsCommandReply(params: {
544553
const emptyProviderLabel = resolveProviderLabel({
545554
provider,
546555
cfg: params.cfg,
556+
agentId: params.agentId,
547557
agentDir: params.agentDir,
548558
workspaceDir: params.workspaceDir,
549559
sessionEntry: params.sessionEntry,
@@ -576,6 +586,7 @@ export async function resolveModelsCommandReply(params: {
576586
provider,
577587
total,
578588
cfg: params.cfg,
589+
agentId: params.agentId,
579590
agentDir: params.agentDir,
580591
workspaceDir: params.workspaceDir,
581592
sessionEntry: params.sessionEntry,
@@ -605,6 +616,7 @@ export async function resolveModelsCommandReply(params: {
605616
const providerLabel = resolveProviderLabel({
606617
provider,
607618
cfg: params.cfg,
619+
agentId: params.agentId,
608620
agentDir: params.agentDir,
609621
workspaceDir: params.workspaceDir,
610622
sessionEntry: params.sessionEntry,

0 commit comments

Comments
 (0)