feat(copilot): add AI-generated branch names (#308441)

This commit is contained in:
Don Jayamanne
2026-04-09 04:32:05 +10:00
committed by GitHub
parent fc67f14caa
commit fc30bdf444
5 changed files with 16 additions and 3 deletions
+8
View File
@@ -4554,6 +4554,14 @@
"advanced"
]
},
"github.copilot.chat.cli.aiGenerateBranchNames.enabled": {
"type": "boolean",
"default": false,
"markdownDescription": "%github.copilot.config.cli.aiGenerateBranchNames.enabled%",
"tags": [
"advanced"
]
},
"github.copilot.chat.cli.forkSessions.enabled": {
"type": "boolean",
"default": false,
+1
View File
@@ -406,6 +406,7 @@
"github.copilot.config.cli.branchSupport.enabled": "Enable branch support for Copilot CLI.",
"github.copilot.config.cli.forkSessions.enabled": "Enable forking sessions in Copilot CLI.",
"github.copilot.config.cli.planExitMode.enabled": "Enable Plan Mode exit handling in Copilot CLI.",
"github.copilot.config.cli.aiGenerateBranchNames.enabled": "Enable AI-generated branch names in Copilot CLI.",
"github.copilot.config.cli.isolationOption.enabled": "Enable the isolation mode option for Copilot CLI. When enabled, users can choose between Worktree and Workspace modes.",
"github.copilot.config.cli.autoCommit.enabled": "Enable automatic commit for Copilot CLI. When enabled, changes made by Copilot CLI will be automatically committed to the repository at the end of each turn.",
"github.copilot.config.cli.sessionController.enabled": "Enable the new session controller API for Copilot CLI. Requires VS Code reload.",
@@ -198,7 +198,10 @@ export class ChatSessionsContrib extends Disposable implements IExtensionContrib
const gitService = copilotcliAgentInstaService.invokeFunction(accessor => accessor.get(IGitService));
const sessionTracker = copilotcliAgentInstaService.invokeFunction(accessor => accessor.get(ICopilotCLISessionTracker));
const terminalIntegration = copilotcliAgentInstaService.invokeFunction(accessor => accessor.get(ICopilotCLITerminalIntegration));
const branchNameGenerator = copilotcliAgentInstaService.createInstance(GitBranchNameGenerator);
const aiGeneratedBranchNames = instantiationService.invokeFunction(accessor =>
accessor.get(IConfigurationService).getConfig(ConfigKey.Advanced.CLIAIGenerateBranchNames)
);
const branchNameGenerator = aiGeneratedBranchNames ? copilotcliAgentInstaService.createInstance(GitBranchNameGenerator) : undefined;
const copilotcliChatSessionParticipant = this._register(copilotcliAgentInstaService.createInstance(
CopilotCLIChatSessionParticipant,
@@ -522,7 +522,7 @@ export class CopilotCLIChatSessionParticipant extends Disposable {
private readonly sessionItemProvider: ICopilotCLIChatSessionItemProvider,
private readonly promptResolver: CopilotCLIPromptResolver,
private readonly cloudSessionProvider: CopilotCloudSessionsProvider | undefined,
private readonly branchNameGenerator: GitBranchNameGenerator,
private readonly branchNameGenerator: GitBranchNameGenerator | undefined,
@IGitService private readonly gitService: IGitService,
@ICopilotCLISessionService private readonly sessionService: ICopilotCLISessionService,
@IChatSessionWorktreeService private readonly copilotCLIWorktreeManagerService: IChatSessionWorktreeService,
@@ -694,7 +694,7 @@ export class CopilotCLIChatSessionParticipant extends Disposable {
history: [requestTurn],
yieldRequested: false,
};
const branchNamePromise = isNewSession && request.prompt ? this.branchNameGenerator.generateBranchName(fakeContext, token) : Promise.resolve(undefined);
const branchNamePromise = (isNewSession && request.prompt && this.branchNameGenerator) ? this.branchNameGenerator.generateBranchName(fakeContext, token) : Promise.resolve(undefined);
const sessionResult = await this.getOrCreateSession(request, chatSessionContext, stream, { branchName: branchNamePromise }, disposables, token);
({ session } = sessionResult);
@@ -611,6 +611,7 @@ export namespace ConfigKey {
export const UseResponsesApiTruncation = defineAndMigrateSetting<boolean | undefined>('chat.advanced.useResponsesApiTruncation', 'chat.useResponsesApiTruncation', false);
export const OmitBaseAgentInstructions = defineAndMigrateSetting<boolean>('chat.advanced.omitBaseAgentInstructions', 'chat.omitBaseAgentInstructions', false);
export const CLIPlanExitModeEnabled = defineSetting<boolean>('chat.cli.planExitMode.enabled', ConfigType.Simple, false);
export const CLIAIGenerateBranchNames = defineSetting<boolean>('chat.cli.aiGenerateBranchNames.enabled', ConfigType.Simple, false);
export const CLIForkSessionsEnabled = defineSetting<boolean>('chat.cli.forkSessions.enabled', ConfigType.Simple, false);
export const CLIMCPServerEnabled = defineAndMigrateSetting<boolean | undefined>('chat.advanced.cli.mcp.enabled', 'chat.cli.mcp.enabled', true);
export const CLIBranchSupport = defineSetting<boolean>('chat.cli.branchSupport.enabled', ConfigType.Simple, false);