@@ -644,6 +644,32 @@ function getRuntimeCatalogLaunchModels(
644644 return models . length > 0 ? models : null ;
645645}
646646
647+ function isOpenCodeSummaryOnlyModelList (
648+ models : readonly string [ ] ,
649+ providerStatus ?: RuntimeAwareProviderStatus | null
650+ ) : boolean {
651+ if ( providerStatus ?. modelCatalog ?. providerId !== 'opencode' ) {
652+ return false ;
653+ }
654+
655+ const trimmedModels = models . map ( ( model ) => model . trim ( ) ) . filter ( Boolean ) ;
656+ if ( trimmedModels . length !== 1 ) {
657+ return false ;
658+ }
659+
660+ const summaryModel = trimmedModels [ 0 ] . toLowerCase ( ) ;
661+ const catalogDefaultIds = [
662+ providerStatus . modelCatalog . defaultLaunchModel ,
663+ providerStatus . modelCatalog . defaultModelId ,
664+ providerStatus . modelCatalog . models . find ( ( model ) => model . isDefault ) ?. launchModel ,
665+ providerStatus . modelCatalog . models . find ( ( model ) => model . isDefault ) ?. id ,
666+ ]
667+ . map ( ( model ) => model ?. trim ( ) . toLowerCase ( ) )
668+ . filter ( ( model ) : model is string => Boolean ( model ) ) ;
669+
670+ return summaryModel === 'opencode/big-pickle' || catalogDefaultIds . includes ( summaryModel ) ;
671+ }
672+
647673function mergeModelLists ( primary : readonly string [ ] , supplemental : readonly string [ ] ) : string [ ] {
648674 const merged = new Map < string , string > ( ) ;
649675 for ( const model of [ ...primary , ...supplemental ] ) {
@@ -689,7 +715,9 @@ export function getVisibleTeamProviderModels(
689715 const catalogModels =
690716 providerId === 'opencode' ? getRuntimeCatalogLaunchModels ( providerId , providerStatus ) : null ;
691717 const sourceModels =
692- providerId === 'opencode' && catalogModels && ! hasExplicitModels
718+ providerId === 'opencode' &&
719+ catalogModels &&
720+ ( ! hasExplicitModels || isOpenCodeSummaryOnlyModelList ( models , providerStatus ) )
693721 ? mergeModelLists ( catalogModels , models )
694722 : models ;
695723
0 commit comments