@@ -162,6 +162,16 @@ function addModelSelectOption(params: {
162162 params . seen . add ( key ) ;
163163}
164164
165+ function matchesPreferredProvider ( entryProvider : string , preferredProvider : string ) : boolean {
166+ if ( preferredProvider === "volcengine" ) {
167+ return entryProvider === "volcengine" || entryProvider === "volcengine-plan" ;
168+ }
169+ if ( preferredProvider === "byteplus" ) {
170+ return entryProvider === "byteplus" || entryProvider === "byteplus-plan" ;
171+ }
172+ return entryProvider === preferredProvider ;
173+ }
174+
165175async function promptManualModel ( params : {
166176 prompter : WizardPrompter ;
167177 allowBlank : boolean ;
@@ -261,15 +271,7 @@ export async function promptDefaultModel(
261271 }
262272
263273 if ( hasPreferredProvider && preferredProvider ) {
264- models = models . filter ( ( entry ) => {
265- if ( preferredProvider === "volcengine" ) {
266- return entry . provider === "volcengine" || entry . provider === "volcengine-plan" ;
267- }
268- if ( preferredProvider === "byteplus" ) {
269- return entry . provider === "byteplus" || entry . provider === "byteplus-plan" ;
270- }
271- return entry . provider === preferredProvider ;
272- } ) ;
274+ models = models . filter ( ( entry ) => matchesPreferredProvider ( entry . provider , preferredProvider ) ) ;
273275 }
274276
275277 const agentDir = params . agentDir ;
@@ -429,11 +431,16 @@ export async function promptModelAllowlist(params: {
429431 agentDir ?: string ;
430432 allowedKeys ?: string [ ] ;
431433 initialSelections ?: string [ ] ;
434+ preferredProvider ?: string ;
432435} ) : Promise < PromptModelAllowlistResult > {
433436 const cfg = params . config ;
434437 const existingKeys = resolveConfiguredModelKeys ( cfg ) ;
435438 const allowedKeys = normalizeModelKeys ( params . allowedKeys ?? [ ] ) ;
436439 const allowedKeySet = allowedKeys . length > 0 ? new Set ( allowedKeys ) : null ;
440+ const preferredProviderRaw = params . preferredProvider ?. trim ( ) ;
441+ const preferredProvider = preferredProviderRaw
442+ ? normalizeProviderId ( preferredProviderRaw )
443+ : undefined ;
437444 const resolved = resolveConfiguredModelRef ( {
438445 cfg,
439446 defaultProvider : DEFAULT_PROVIDER ,
@@ -477,9 +484,16 @@ export async function promptModelAllowlist(params: {
477484 const options : WizardSelectOption [ ] = [ ] ;
478485 const seen = new Set < string > ( ) ;
479486
480- const filteredCatalog = allowedKeySet
487+ const allowedCatalog = allowedKeySet
481488 ? catalog . filter ( ( entry ) => allowedKeySet . has ( modelKey ( entry . provider , entry . id ) ) )
482489 : catalog ;
490+ const filteredCatalog =
491+ preferredProvider &&
492+ allowedCatalog . some ( ( entry ) => matchesPreferredProvider ( entry . provider , preferredProvider ) )
493+ ? allowedCatalog . filter ( ( entry ) =>
494+ matchesPreferredProvider ( entry . provider , preferredProvider ) ,
495+ )
496+ : allowedCatalog ;
483497
484498 for ( const entry of filteredCatalog ) {
485499 addModelSelectOption ( { entry, options, seen, aliasIndex, hasAuth } ) ;
0 commit comments