77import { Buffer } from 'buffer' ;
88import * as vscode from 'vscode' ;
99import { COPILOT_ACCOUNTS } from '../common/comment' ;
10- import { COPILOT_SWE_AGENT } from '../common/copilot' ;
10+ import { COPILOT_REVIEWER , COPILOT_REVIEWER_ID , COPILOT_SWE_AGENT } from '../common/copilot' ;
1111import { emojify , ensureEmojis } from '../common/emoji' ;
1212import Logger from '../common/logger' ;
1313import { DataUri } from '../common/uri' ;
@@ -152,7 +152,6 @@ function userThemeIcon(user: IAccount | ITeam) {
152152async function getReviewersQuickPickItems ( folderRepositoryManager : FolderRepositoryManager , remoteName : string , isInOrganization : boolean , author : IAccount , existingReviewers : ReviewState [ ] ,
153153 suggestedReviewers : ISuggestedReviewer [ ] | undefined , refreshKind : TeamReviewerRefreshKind ,
154154) : Promise < ( vscode . QuickPickItem & { user ?: IAccount | ITeam } ) [ ] > {
155- existingReviewers = existingReviewers . filter ( reviewer => isITeam ( reviewer . reviewer ) || ( reviewer . reviewer . accountType !== AccountType . Bot ) ) ;
156155 if ( ! suggestedReviewers ) {
157156 return [ ] ;
158157 }
@@ -162,8 +161,17 @@ async function getReviewersQuickPickItems(folderRepositoryManager: FolderReposit
162161 const teamReviewers : ITeam [ ] = allTeamReviewers [ remoteName ] ?? [ ] ;
163162 const assignableUsers : ( IAccount | ITeam ) [ ] = [ ...teamReviewers ] ;
164163
165- // Remove the swe agent as it can't do reviews
166- const assignableUsersForRemote = allAssignableUsers [ remoteName ] . filter ( user => user . login !== COPILOT_SWE_AGENT ) ;
164+ // Remove the swe agent as it can't do reviews, but add the reviewer instead
165+ const originalAssignableUsers = allAssignableUsers [ remoteName ] ?? [ ] ;
166+ let hasCopilotSweAgent : boolean = false ;
167+ const assignableUsersForRemote = originalAssignableUsers . filter ( user => {
168+ if ( user . login === COPILOT_SWE_AGENT ) {
169+ hasCopilotSweAgent = true ;
170+ return false ;
171+ }
172+ return true ;
173+ } ) ;
174+
167175 if ( assignableUsersForRemote ) {
168176 assignableUsers . push ( ...assignableUsersForRemote ) ;
169177 }
@@ -181,6 +189,19 @@ async function getReviewersQuickPickItems(folderRepositoryManager: FolderReposit
181189 reviewersPromises . push ( getItems < IAccount | ITeam > ( folderRepositoryManager . context , skipList , existingReviewers . map ( reviewer => reviewer . reviewer ) , true ) ) ;
182190 }
183191
192+ // If we removed the coding agent, add the Copilot reviewer instead
193+ if ( hasCopilotSweAgent && ! existingReviewers . find ( user => ( user . reviewer as IAccount ) . login === COPILOT_REVIEWER ) ) {
194+ const copilotReviewer : IAccount = {
195+ login : COPILOT_REVIEWER ,
196+ id : COPILOT_REVIEWER_ID ,
197+ url : '' ,
198+ avatarUrl : '' ,
199+ name : COPILOT_ACCOUNTS [ COPILOT_REVIEWER ] ?. name ?? 'Copilot' ,
200+ accountType : AccountType . Bot
201+ } ;
202+ assignableUsers . push ( copilotReviewer ) ;
203+ }
204+
184205 // Suggested reviewers
185206 reviewersPromises . push ( getItems < ISuggestedReviewer > ( folderRepositoryManager . context , skipList , suggestedReviewers , false ) ) ;
186207
0 commit comments