Skip to content

Commit f045f49

Browse files
authored
nes: fix looking up default model (#2434)
1 parent cccf27d commit f045f49

File tree

3 files changed

+32
-3
lines changed

3 files changed

+32
-3
lines changed

src/extension/xtab/node/xtabProvider.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -976,10 +976,12 @@ export class XtabProvider implements IStatelessNextEditProvider {
976976

977977
private determineModelConfiguration(activeDocument: StatelessNextEditDocument): ModelConfig {
978978
if (this.forceUseDefaultModel) {
979-
return {
979+
const defaultOptions = {
980980
modelName: undefined,
981981
...xtabPromptOptions.DEFAULT_OPTIONS,
982982
};
983+
const defaultModelConfig = this.modelService.defaultModelConfiguration();
984+
return XtabProvider.overrideModelConfig(defaultOptions, defaultModelConfig);
983985
}
984986

985987
const sourcedModelConfig = {

src/platform/inlineEdits/common/inlineEditsModelService.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ export interface IInlineEditsModelService {
1818
setCurrentModelId(modelId: string): Promise<void>;
1919

2020
selectedModelConfiguration(): ModelConfiguration;
21+
22+
defaultModelConfiguration(): ModelConfiguration;
2123
}
2224

2325
export const IInlineEditsModelService = createServiceIdentifier<IInlineEditsModelService>('IInlineEditsModelService');

src/platform/inlineEdits/node/inlineEditsModelService.ts

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { filterMap } from '../../../util/common/arrays';
88
import * as errors from '../../../util/common/errors';
99
import { createTracer } from '../../../util/common/tracing';
1010
import { 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';
1212
import { Event } from '../../../util/vs/base/common/event';
1313
import { Disposable } from '../../../util/vs/base/common/lifecycle';
1414
import { derived, IObservable, observableFromEvent } from '../../../util/vs/base/common/observable';
@@ -279,7 +279,32 @@ export class InlineEditsModelService extends Disposable implements IInlineEditsM
279279
};
280280
}
281281
tracer.trace('No selected model found, using default model.');
282-
return this.determineDefaultModel(undefined, undefined);
282+
return this.determineDefaultModel(this._copilotTokenObs.get(), this._defaultModelConfigObs.get());
283+
}
284+
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+
}
283308
}
284309

285310
private determineDefaultModel(copilotToken: CopilotToken | undefined, defaultModelConfigString: string | undefined): Model {

0 commit comments

Comments
 (0)