fix: normalize provider aliases in auth order
This commit is contained in:
@@ -120,6 +120,37 @@ describe("resolveAuthProfileOrder", () => {
|
||||
expect(order).toEqual(["zai:work", "zai:default"]);
|
||||
});
|
||||
|
||||
it("normalizes provider casing in auth.order keys", () => {
|
||||
const order = resolveAuthProfileOrder({
|
||||
cfg: {
|
||||
auth: {
|
||||
order: { OpenAI: ["openai:work", "openai:default"] },
|
||||
profiles: {
|
||||
"openai:default": { provider: "openai", mode: "api_key" },
|
||||
"openai:work": { provider: "openai", mode: "api_key" },
|
||||
},
|
||||
},
|
||||
},
|
||||
store: {
|
||||
version: 1,
|
||||
profiles: {
|
||||
"openai:default": {
|
||||
type: "api_key",
|
||||
provider: "openai",
|
||||
key: "sk-default",
|
||||
},
|
||||
"openai:work": {
|
||||
type: "api_key",
|
||||
provider: "openai",
|
||||
key: "sk-work",
|
||||
},
|
||||
},
|
||||
},
|
||||
provider: "openai",
|
||||
});
|
||||
expect(order).toEqual(["openai:work", "openai:default"]);
|
||||
});
|
||||
|
||||
it("normalizes z.ai aliases in auth.profiles", () => {
|
||||
const order = resolveAuthProfileOrder({
|
||||
cfg: {
|
||||
|
||||
@@ -542,12 +542,14 @@ export function resolveAuthProfileOrder(params: {
|
||||
}): string[] {
|
||||
const { cfg, store, provider, preferredProfile } = params;
|
||||
const providerKey = normalizeProviderId(provider);
|
||||
const configuredOrder =
|
||||
cfg?.auth?.order?.[providerKey] ??
|
||||
cfg?.auth?.order?.[provider] ??
|
||||
(providerKey === "zai"
|
||||
? (cfg?.auth?.order?.["z.ai"] ?? cfg?.auth?.order?.["z-ai"])
|
||||
: undefined);
|
||||
const configuredOrder = (() => {
|
||||
const order = cfg?.auth?.order;
|
||||
if (!order) return undefined;
|
||||
for (const [key, value] of Object.entries(order)) {
|
||||
if (normalizeProviderId(key) === providerKey) return value;
|
||||
}
|
||||
return undefined;
|
||||
})();
|
||||
const explicitProfiles = cfg?.auth?.profiles
|
||||
? Object.entries(cfg.auth.profiles)
|
||||
.filter(
|
||||
@@ -565,7 +567,7 @@ export function resolveAuthProfileOrder(params: {
|
||||
|
||||
const filtered = baseOrder.filter((profileId) => {
|
||||
const cred = store.profiles[profileId];
|
||||
return cred ? cred.provider === provider : true;
|
||||
return cred ? normalizeProviderId(cred.provider) === providerKey : true;
|
||||
});
|
||||
const deduped: string[] = [];
|
||||
for (const entry of filtered) {
|
||||
|
||||
Reference in New Issue
Block a user