























@@ -198,6 +198,52 @@ describe("promptAuthConfig", () => {
198198});
199199});
200200201+it("resolves fallback aliases before scoped allowlist pruning", async () => {
202+vi.clearAllMocks();
203+mocks.promptAuthChoiceGrouped.mockResolvedValue("token");
204+mocks.applyAuthChoice.mockResolvedValue({
205+config: {
206+agents: {
207+defaults: {
208+model: {
209+primary: "openai/gpt-5.5",
210+fallbacks: ["mini"],
211+},
212+models: {
213+"openai/gpt-5.5": { alias: "GPT" },
214+"openai/gpt-5.4-mini": { alias: "mini" },
215+"anthropic/claude-sonnet-4-6": { alias: "Sonnet" },
216+},
217+},
218+},
219+},
220+});
221+mocks.promptModelAllowlist.mockResolvedValue({
222+models: ["openai/gpt-5.5"],
223+scopeKeys: ["openai/gpt-5.5", "openai/gpt-5.4-mini"],
224+});
225+mocks.resolveProviderPluginChoice.mockReturnValue({
226+provider: { id: "openai", label: "OpenAI", auth: [] },
227+method: { id: "setup-token", label: "setup-token", kind: "token" },
228+wizard: {
229+modelAllowlist: {
230+allowedKeys: ["openai/gpt-5.5", "openai/gpt-5.4-mini"],
231+initialSelections: ["openai/gpt-5.5"],
232+},
233+},
234+});
235+236+const result = await promptAuthConfig({}, makeRuntime(), noopPrompter);
237+238+expect(result.agents?.defaults?.model).toEqual({
239+primary: "openai/gpt-5.5",
240+});
241+expect(result.agents?.defaults?.models).toEqual({
242+"openai/gpt-5.5": { alias: "GPT" },
243+"anthropic/claude-sonnet-4-6": { alias: "Sonnet" },
244+});
245+});
246+201247it("scopes the allowlist picker to the selected provider when available", async () => {
202248mocks.promptAuthChoiceGrouped.mockResolvedValue("openai-api-key");
203249mocks.resolvePreferredProviderForAuthChoice.mockResolvedValue("openai");
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。