Skip to content

Commit 26adb44

Browse files
committed
nes: /models: looking up default xtab model uses ModelService AND respects slash models if present
1 parent 3ec5507 commit 26adb44

File tree

3 files changed

+31
-2
lines changed

3 files changed

+31
-2
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: 26 additions & 1 deletion
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';
@@ -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

Comments
 (0)