Skip to content

Commit 4a9f94d

Browse files
authored
Adding timing to chat sessions (#7658)
* Adding typing to chat sessions * Adding timestamp details
1 parent 6fd3ee2 commit 4a9f94d

2 files changed

Lines changed: 22 additions & 3 deletions

File tree

src/@types/vscode.proposed.chatSessionsProvider.d.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,20 @@ declare module 'vscode' {
9494
* The tooltip text when you hover over this item.
9595
*/
9696
tooltip?: string | MarkdownString;
97+
98+
/**
99+
* The times at which session started and ended
100+
*/
101+
timing?: {
102+
/**
103+
* Session start timestamp in milliseconds elapsed since January 1, 1970 00:00:00 UTC.
104+
*/
105+
startTime: number;
106+
/**
107+
* Session end timestamp in milliseconds elapsed since January 1, 1970 00:00:00 UTC.
108+
*/
109+
endTime?: number;
110+
};
97111
}
98112

99113
export interface ChatSession {

src/github/copilotRemoteAgent.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import { GitHubRemote } from '../common/remote';
1717
import { CODING_AGENT, CODING_AGENT_AUTO_COMMIT_AND_PUSH } from '../common/settingKeys';
1818
import { ITelemetry } from '../common/telemetry';
1919
import { toOpenPullRequestWebviewUri } from '../common/uri';
20-
import { dateFromNow } from '../common/utils';
2120
import { copilotEventToSessionStatus, copilotPRStatusToSessionStatus, IAPISessionLogs, ICopilotRemoteAgentCommandArgs, ICopilotRemoteAgentCommandResponse, OctokitCommon, RemoteAgentResult, RepoInfo } from './common';
2221
import { ChatSessionWithPR, CopilotApi, getCopilotApi, RemoteAgentJobPayload, SessionInfo, SessionSetupStep } from './copilotApi';
2322
import { CopilotPRWatcher, CopilotStateModel } from './copilotPrWatcher';
@@ -750,14 +749,17 @@ export class CopilotRemoteAgentManager extends Disposable {
750749
const timeline = await session.getCopilotTimelineEvents(session);
751750
const status = copilotEventToSessionStatus(mostRecentCopilotEvent(timeline));
752751
const tooltip = await issueMarkdown(session, this.context, this.repositoriesManager);
752+
const timestampNumber = new Date(session.createdAt).getTime();
753753
return {
754754
id: `${session.number}`,
755755
label: session.title || `Session ${session.number}`,
756756
iconPath: this.getIconForSession(status),
757-
description: `${dateFromNow(session.createdAt)}`,
758757
pullRequest: session,
759758
tooltip,
760759
status,
760+
timing: {
761+
startTime: timestampNumber
762+
}
761763
};
762764
}
763765

@@ -777,17 +779,20 @@ export class CopilotRemoteAgentManager extends Disposable {
777779

778780
const codingAgentPRs = this._stateModel.all;
779781
return await Promise.all(codingAgentPRs.map(async prAndStatus => {
782+
const timestampNumber = new Date(prAndStatus.item.createdAt).getTime();
780783
const status = copilotPRStatusToSessionStatus(prAndStatus.status);
781784
const pullRequest = prAndStatus.item;
782785
const tooltip = await issueMarkdown(pullRequest, this.context, this.repositoriesManager);
783786
return {
784787
id: `${pullRequest.number}`,
785788
label: pullRequest.title || `Session ${pullRequest.number}`,
786789
iconPath: this.getIconForSession(status),
787-
description: `${dateFromNow(pullRequest.createdAt)}`,
788790
pullRequest: pullRequest,
789791
tooltip,
790792
status,
793+
timing: {
794+
startTime: timestampNumber
795+
}
791796
};
792797
}));
793798
} catch (error) {

0 commit comments

Comments
 (0)