Refactor chat input and session actions to use ISCMService for repository checks

This commit is contained in:
Osvaldo Ortega
2026-03-27 17:02:23 -07:00
parent eb8922169d
commit 0dcd3596be
2 changed files with 9 additions and 12 deletions

View File

@@ -39,9 +39,8 @@ import { ChatSendResult, IChatService } from '../../common/chatService/chatServi
import { ResolvedChatSessionsExtensionPoint, IChatSessionsService } from '../../common/chatSessionsService.js';
import { ChatAgentLocation } from '../../common/constants.js';
import { PROMPT_LANGUAGE_ID } from '../../common/promptSyntax/promptTypes.js';
import { Iterable } from '../../../../../base/common/iterator.js';
import { AgentSessionProviders, getAgentSessionProvider, getAgentSessionProviderIcon, getAgentSessionProviderName } from '../agentSessions/agentSessions.js';
import { IGitService } from '../../../git/common/gitService.js';
import { ISCMService } from '../../../scm/common/scm.js';
import { IAgentSessionsService } from '../agentSessions/agentSessionsService.js';
import { IChatWidget, IChatWidgetService, isIChatViewViewContext } from '../chat.js';
import { ctxHasEditorModification } from '../chatEditing/chatEditingEditorContextKeys.js';
@@ -166,11 +165,10 @@ export class ChatContinueInSessionActionItem extends ActionWidgetDropdownActionV
@IInstantiationService instantiationService: IInstantiationService,
@IOpenerService openerService: IOpenerService,
@ITelemetryService telemetryService: ITelemetryService,
@IGitService gitService: IGitService,
@IChatWidgetService chatWidgetService: IChatWidgetService,
@ISCMService scmService: ISCMService,
) {
super(action, {
actionProvider: ChatContinueInSessionActionItem.actionProvider(chatSessionsService, instantiationService, gitService, chatWidgetService, location),
actionProvider: ChatContinueInSessionActionItem.actionProvider(chatSessionsService, instantiationService, scmService, location),
actionBarActions: ChatContinueInSessionActionItem.getActionBarActions(openerService),
reporter: { id: 'ChatContinueInSession', name: 'ChatContinueInSession', includeOptions: true },
}, actionWidgetService, keybindingService, contextKeyService, telemetryService);
@@ -190,15 +188,12 @@ export class ChatContinueInSessionActionItem extends ActionWidgetDropdownActionV
}];
}
private static actionProvider(chatSessionsService: IChatSessionsService, instantiationService: IInstantiationService, gitService: IGitService, chatWidgetService: IChatWidgetService, location: ActionLocation): IActionWidgetDropdownActionProvider {
private static actionProvider(chatSessionsService: IChatSessionsService, instantiationService: IInstantiationService, scmService: ISCMService, location: ActionLocation): IActionWidgetDropdownActionProvider {
return {
getActions: () => {
const actions: IActionWidgetDropdownAction[] = [];
const contributions = chatSessionsService.getAllChatSessionContributions();
const widget = chatWidgetService.lastFocusedWidget;
const hasGitRepo = widget?.viewModel?.model.repoData
? true
: !Iterable.isEmpty(gitService.repositories);
const hasGitRepo = scmService.repositoryCount > 0;
// Continue in Background
const backgroundContrib = contributions.find(contrib => contrib.type === AgentSessionProviders.Background);

View File

@@ -69,6 +69,7 @@ import { IStorageService, StorageScope, StorageTarget } from '../../../../../../
import { IThemeService } from '../../../../../../platform/theme/common/themeService.js';
import { ISharedWebContentExtractorService } from '../../../../../../platform/webContentExtractor/common/webContentExtractor.js';
import { IWorkspaceContextService, WorkbenchState } from '../../../../../../platform/workspace/common/workspace.js';
import { ISCMService } from '../../../../scm/common/scm.js';
import { IWorkbenchLayoutService, Position } from '../../../../../services/layout/browser/layoutService.js';
import { IViewDescriptorService, ViewContainerLocation } from '../../../../../common/views.js';
import { ResourceLabels } from '../../../../../browser/labels.js';
@@ -545,6 +546,7 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge
@IChatContextService private readonly chatContextService: IChatContextService,
@IAgentSessionsService private readonly agentSessionsService: IAgentSessionsService,
@IWorkspaceContextService private readonly workspaceContextService: IWorkspaceContextService,
@ISCMService private readonly scmService: ISCMService,
@IWorkbenchLayoutService private readonly layoutService: IWorkbenchLayoutService,
@IViewDescriptorService private readonly viewDescriptorService: IViewDescriptorService,
@IChatAttachmentWidgetRegistry private readonly _chatAttachmentWidgetRegistry: IChatAttachmentWidgetRegistry,
@@ -2289,7 +2291,7 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge
this.refreshChatSessionPickers();
},
hasGitRepository: () => {
return !!this._widget?.viewModel?.model.repoData;
return this.scmService.repositoryCount > 0;
},
};
const isWelcomeViewMode = !!this.options.sessionTypePickerDelegate?.setActiveSessionProvider;
@@ -2391,7 +2393,7 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge
this.refreshChatSessionPickers();
},
hasGitRepository: () => {
return !!this._widget?.viewModel?.model.repoData;
return this.scmService.repositoryCount > 0;
},
};
const isWelcomeViewMode = !!this.options.sessionTypePickerDelegate?.setActiveSessionProvider;