@@ -8,7 +8,7 @@ import { filterMap } from '../../../util/common/arrays';
88import * as errors from '../../../util/common/errors' ;
99import { createTracer } from '../../../util/common/tracing' ;
1010import { pushMany } from '../../../util/vs/base/common/arrays' ;
11- import { softAssert } from '../../../util/vs/base/common/assert' ;
11+ import { assertNever , softAssert } from '../../../util/vs/base/common/assert' ;
1212import { Event } from '../../../util/vs/base/common/event' ;
1313import { Disposable } from '../../../util/vs/base/common/lifecycle' ;
1414import { derived , IObservable , observableFromEvent } from '../../../util/vs/base/common/observable' ;
@@ -282,6 +282,31 @@ export class InlineEditsModelService extends Disposable implements IInlineEditsM
282282 return this . determineDefaultModel ( this . _copilotTokenObs . get ( ) , this . _defaultModelConfigObs . get ( ) ) ;
283283 }
284284
285+ public defaultModelConfiguration ( ) : ModelConfiguration {
286+ const models = this . _modelsObs . get ( ) ;
287+ if ( models && models . length > 0 ) {
288+ const defaultModels = models . filter ( m => ! this . isConfiguredModel ( m ) ) ;
289+ if ( defaultModels . length > 0 ) {
290+ return defaultModels [ 0 ] ;
291+ }
292+ }
293+ return this . determineDefaultModel ( this . _copilotTokenObs . get ( ) , this . _defaultModelConfigObs . get ( ) ) ;
294+ }
295+
296+ private isConfiguredModel ( model : Model ) : boolean {
297+ switch ( model . source ) {
298+ case ModelSource . LocalConfig :
299+ case ModelSource . ExpConfig :
300+ case ModelSource . ExpDefaultConfig :
301+ return true ;
302+ case ModelSource . Fetched :
303+ case ModelSource . HardCodedDefault :
304+ return false ;
305+ default :
306+ assertNever ( model . source ) ;
307+ }
308+ }
309+
285310 private determineDefaultModel ( copilotToken : CopilotToken | undefined , defaultModelConfigString : string | undefined ) : Model {
286311 // if a default model config string is specified, use that
287312 if ( defaultModelConfigString ) {
0 commit comments