@@ -14,7 +14,8 @@ import { GitHubRemote } from '../common/remote';
14
14
import { CODING_AGENT , CODING_AGENT_AUTO_COMMIT_AND_PUSH , CODING_AGENT_ENABLED } from '../common/settingKeys' ;
15
15
import { ITelemetry } from '../common/telemetry' ;
16
16
import { CommentEvent , CopilotFinishedEvent , CopilotStartedEvent , EventType , ReviewEvent , TimelineEvent } from '../common/timelineEvent' ;
17
- import { toOpenPullRequestWebviewUri } from '../common/uri' ;
17
+ import { DataUri , toOpenPullRequestWebviewUri } from '../common/uri' ;
18
+ import { getIconForeground , getListErrorForeground , getListWarningForeground , getNotebookStatusSuccessIconForeground } from '../view/theme' ;
18
19
import { OctokitCommon } from './common' ;
19
20
import { ChatSessionWithPR , CopilotApi , getCopilotApi , RemoteAgentJobPayload , SessionInfo , SessionSetupStep } from './copilotApi' ;
20
21
import { CopilotPRWatcher , CopilotStateModel } from './copilotPrWatcher' ;
@@ -781,7 +782,7 @@ export class CopilotRemoteAgentManager extends Disposable {
781
782
}
782
783
return [ ] ;
783
784
}
784
-
785
+
785
786
private extractPromptFromEvent ( event : TimelineEvent ) : string {
786
787
let body = '' ;
787
788
if ( event . event === EventType . Commented ) {
@@ -1407,14 +1408,42 @@ export class CopilotRemoteAgentManager extends Disposable {
1407
1408
return undefined ;
1408
1409
}
1409
1410
1410
- private getIconForSession ( status : CopilotPRStatus ) : ThemeIcon {
1411
+ private getIconForSession ( status : CopilotPRStatus ) : vscode . Uri | vscode . ThemeIcon {
1412
+ // Use the same icons as webview components for consistency
1413
+ const themeData = this . repositoriesManager . folderManagers [ 0 ] ?. themeWatcher ?. themeData ;
1414
+ if ( ! themeData ) {
1415
+ // Fallback to theme icons if no theme data available
1416
+ switch ( status ) {
1417
+ case CopilotPRStatus . Completed :
1418
+ return new vscode . ThemeIcon ( 'pass-filled' , new vscode . ThemeColor ( 'testing.iconPassed' ) ) ;
1419
+ case CopilotPRStatus . Failed :
1420
+ return new vscode . ThemeIcon ( 'close' , new vscode . ThemeColor ( 'testing.iconFailed' ) ) ;
1421
+ default :
1422
+ return new vscode . ThemeIcon ( 'circle-filled' , new vscode . ThemeColor ( 'list.warningForeground' ) ) ;
1423
+ }
1424
+ }
1425
+
1426
+ // Use the same SVG icons as webview components with theme-appropriate colors
1427
+ const isDark = vscode . window . activeColorTheme . kind === vscode . ColorThemeKind . Dark ||
1428
+ vscode . window . activeColorTheme . kind === vscode . ColorThemeKind . HighContrast ;
1429
+ const themeKind = isDark ? 'dark' : 'light' ;
1430
+
1411
1431
switch ( status ) {
1412
1432
case CopilotPRStatus . Completed :
1413
- return new ThemeIcon ( 'pass-filled' , new vscode . ThemeColor ( 'testing.iconPassed' ) ) ;
1433
+ return DataUri . copilotSuccessAsImageDataURI (
1434
+ getIconForeground ( themeData , themeKind ) ,
1435
+ getNotebookStatusSuccessIconForeground ( themeData , themeKind )
1436
+ ) ;
1414
1437
case CopilotPRStatus . Failed :
1415
- return new ThemeIcon ( 'close' , new vscode . ThemeColor ( 'testing.iconFailed' ) ) ;
1438
+ return DataUri . copilotErrorAsImageDataURI (
1439
+ getIconForeground ( themeData , themeKind ) ,
1440
+ getListErrorForeground ( themeData , themeKind )
1441
+ ) ;
1416
1442
default :
1417
- return new ThemeIcon ( 'circle-filled' , new vscode . ThemeColor ( 'list.warningForeground' ) ) ;
1443
+ return DataUri . copilotInProgressAsImageDataURI (
1444
+ getIconForeground ( themeData , themeKind ) ,
1445
+ getListWarningForeground ( themeData , themeKind )
1446
+ ) ;
1418
1447
}
1419
1448
}
1420
1449
0 commit comments