mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-23 01:58:53 +01:00
add inlineChat.enableV2 setting (#245327)
This will control/enable the new version of inline chat
This commit is contained in:
@@ -12,7 +12,7 @@ import { Emitter, Event } from '../../../../base/common/event.js';
|
||||
import { Lazy } from '../../../../base/common/lazy.js';
|
||||
import { DisposableStore, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';
|
||||
import { MovingAverage } from '../../../../base/common/numbers.js';
|
||||
import { autorun, autorunWithStore, derived, IObservable, observableFromEvent, observableSignalFromEvent, observableValue, transaction, waitForState } from '../../../../base/common/observable.js';
|
||||
import { autorun, autorunWithStore, derived, IObservable, observableSignalFromEvent, observableValue, transaction, waitForState } from '../../../../base/common/observable.js';
|
||||
import { isEqual } from '../../../../base/common/resources.js';
|
||||
import { StopWatch } from '../../../../base/common/stopwatch.js';
|
||||
import { assertType } from '../../../../base/common/types.js';
|
||||
@@ -44,7 +44,7 @@ import { IChatWidgetLocationOptions } from '../../chat/browser/chatWidget.js';
|
||||
import { ChatModel, ChatRequestRemovalReason, IChatRequestModel, IChatTextEditGroup, IChatTextEditGroupState, IResponse } from '../../chat/common/chatModel.js';
|
||||
import { IChatService } from '../../chat/common/chatService.js';
|
||||
import { INotebookEditorService } from '../../notebook/browser/services/notebookEditorService.js';
|
||||
import { CTX_INLINE_CHAT_EDITING, CTX_INLINE_CHAT_HAS_AGENT2, CTX_INLINE_CHAT_REQUEST_IN_PROGRESS, CTX_INLINE_CHAT_RESPONSE_TYPE, CTX_INLINE_CHAT_VISIBLE, INLINE_CHAT_ID, InlineChatConfigKeys, InlineChatResponseType } from '../common/inlineChat.js';
|
||||
import { CTX_INLINE_CHAT_EDITING, CTX_INLINE_CHAT_REQUEST_IN_PROGRESS, CTX_INLINE_CHAT_RESPONSE_TYPE, CTX_INLINE_CHAT_VISIBLE, INLINE_CHAT_ID, InlineChatConfigKeys, InlineChatResponseType } from '../common/inlineChat.js';
|
||||
import { HunkInformation, Session, StashedSession } from './inlineChatSession.js';
|
||||
import { IInlineChatSession2, IInlineChatSessionService } from './inlineChatSessionService.js';
|
||||
import { InlineChatError } from './inlineChatSessionServiceImpl.js';
|
||||
@@ -54,6 +54,7 @@ import { InlineChatZoneWidget } from './inlineChatZoneWidget.js';
|
||||
import { ChatAgentLocation } from '../../chat/common/constants.js';
|
||||
import { ChatContextKeys } from '../../chat/common/chatContextKeys.js';
|
||||
import { IChatEditingService, ModifiedFileEntryState } from '../../chat/common/chatEditingService.js';
|
||||
import { observableConfigValue } from '../../../../platform/observable/common/platformObservableUtils.js';
|
||||
|
||||
export const enum State {
|
||||
CREATE_SESSION = 'CREATE_SESSION',
|
||||
@@ -111,10 +112,10 @@ export class InlineChatController implements IEditorContribution {
|
||||
|
||||
constructor(
|
||||
editor: ICodeEditor,
|
||||
@IContextKeyService contextKeyService: IContextKeyService,
|
||||
@IConfigurationService configurationService: IConfigurationService,
|
||||
) {
|
||||
|
||||
const inlineChat2 = observableFromEvent(this, Event.filter(contextKeyService.onDidChangeContext, e => e.affectsSome(new Set(CTX_INLINE_CHAT_HAS_AGENT2.keys()))), () => contextKeyService.contextMatchesRules(CTX_INLINE_CHAT_HAS_AGENT2));
|
||||
const inlineChat2 = observableConfigValue(InlineChatConfigKeys.EnableV2, false, configurationService);
|
||||
|
||||
this._delegate = derived(r => {
|
||||
if (inlineChat2.read(r)) {
|
||||
|
||||
@@ -7,7 +7,7 @@ import { Emitter, Event } from '../../../../base/common/event.js';
|
||||
import { DisposableStore, IDisposable, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';
|
||||
import { ResourceMap } from '../../../../base/common/map.js';
|
||||
import { Schemas } from '../../../../base/common/network.js';
|
||||
import { autorun } from '../../../../base/common/observable.js';
|
||||
import { autorun, observableFromEvent } from '../../../../base/common/observable.js';
|
||||
import { isEqual } from '../../../../base/common/resources.js';
|
||||
import { assertType } from '../../../../base/common/types.js';
|
||||
import { URI } from '../../../../base/common/uri.js';
|
||||
@@ -20,9 +20,11 @@ import { createTextBufferFactoryFromSnapshot } from '../../../../editor/common/m
|
||||
import { IEditorWorkerService } from '../../../../editor/common/services/editorWorker.js';
|
||||
import { IModelService } from '../../../../editor/common/services/model.js';
|
||||
import { ITextModelService } from '../../../../editor/common/services/resolverService.js';
|
||||
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
|
||||
import { IContextKey, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';
|
||||
import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
|
||||
import { ILogService } from '../../../../platform/log/common/log.js';
|
||||
import { observableConfigValue } from '../../../../platform/observable/common/platformObservableUtils.js';
|
||||
import { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';
|
||||
import { DEFAULT_EDITOR_ASSOCIATION } from '../../../common/editor.js';
|
||||
import { IEditorService } from '../../../services/editor/common/editorService.js';
|
||||
@@ -33,7 +35,7 @@ import { IChatAgentService } from '../../chat/common/chatAgents.js';
|
||||
import { ModifiedFileEntryState } from '../../chat/common/chatEditingService.js';
|
||||
import { IChatService } from '../../chat/common/chatService.js';
|
||||
import { ChatAgentLocation } from '../../chat/common/constants.js';
|
||||
import { CTX_INLINE_CHAT_HAS_AGENT, CTX_INLINE_CHAT_HAS_AGENT2, CTX_INLINE_CHAT_POSSIBLE } from '../common/inlineChat.js';
|
||||
import { CTX_INLINE_CHAT_HAS_AGENT, CTX_INLINE_CHAT_HAS_AGENT2, CTX_INLINE_CHAT_POSSIBLE, InlineChatConfigKeys } from '../common/inlineChat.js';
|
||||
import { HunkData, Session, SessionWholeRange, StashedSession, TelemetryData, TelemetryDataClassification } from './inlineChatSession.js';
|
||||
import { IInlineChatSession2, IInlineChatSessionEndEvent, IInlineChatSessionEvent, IInlineChatSessionService, ISessionKeyComputer } from './inlineChatSessionService.js';
|
||||
|
||||
@@ -414,27 +416,29 @@ export class InlineChatEnabler {
|
||||
@IContextKeyService contextKeyService: IContextKeyService,
|
||||
@IChatAgentService chatAgentService: IChatAgentService,
|
||||
@IEditorService editorService: IEditorService,
|
||||
@IConfigurationService configService: IConfigurationService,
|
||||
) {
|
||||
this._ctxHasProvider = CTX_INLINE_CHAT_HAS_AGENT.bindTo(contextKeyService);
|
||||
this._ctxHasProvider2 = CTX_INLINE_CHAT_HAS_AGENT2.bindTo(contextKeyService);
|
||||
this._ctxPossible = CTX_INLINE_CHAT_POSSIBLE.bindTo(contextKeyService);
|
||||
|
||||
const updateAgent = () => {
|
||||
const agent = chatAgentService.getDefaultAgent(ChatAgentLocation.Editor);
|
||||
if (agent?.id === 'github.copilot.editor' || agent?.id === 'setup.editor') {
|
||||
this._ctxHasProvider.set(true);
|
||||
const agentObs = observableFromEvent(this, chatAgentService.onDidChangeAgents, () => chatAgentService.getDefaultAgent(ChatAgentLocation.Editor));
|
||||
const inlineChat2Obs = observableConfigValue(InlineChatConfigKeys.EnableV2, false, configService);
|
||||
|
||||
this._store.add(autorun(r => {
|
||||
const v2 = inlineChat2Obs.read(r);
|
||||
const agent = agentObs.read(r);
|
||||
if (!agent) {
|
||||
this._ctxHasProvider.reset();
|
||||
this._ctxHasProvider2.reset();
|
||||
} else if (agent?.id === 'github.copilot.editingSessionEditor') {
|
||||
} else if (v2) {
|
||||
this._ctxHasProvider.reset();
|
||||
this._ctxHasProvider2.set(true);
|
||||
} else {
|
||||
this._ctxHasProvider.reset();
|
||||
this._ctxHasProvider.set(true);
|
||||
this._ctxHasProvider2.reset();
|
||||
}
|
||||
};
|
||||
|
||||
this._store.add(chatAgentService.onDidChangeAgents(updateAgent));
|
||||
updateAgent();
|
||||
}));
|
||||
|
||||
const updateEditor = () => {
|
||||
const ctrl = editorService.activeEditorPane?.getControl();
|
||||
|
||||
Reference in New Issue
Block a user