mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-12 23:01:21 +00:00
Track cloud synced messages (#9518)
This commit is contained in:
parent
98b06d84be
commit
1558df65b5
1 changed files with 19 additions and 1 deletions
|
|
@ -314,6 +314,9 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
|
|||
private tokenUsageSnapshot?: TokenUsage
|
||||
private tokenUsageSnapshotAt?: number
|
||||
|
||||
// Cloud Sync Tracking
|
||||
private cloudSyncedMessageTimestamps: Set<number> = new Set()
|
||||
|
||||
constructor({
|
||||
provider,
|
||||
apiConfiguration,
|
||||
|
|
@ -797,6 +800,8 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
|
|||
event: TelemetryEventName.TASK_MESSAGE,
|
||||
properties: { taskId: this.taskId, message },
|
||||
})
|
||||
// Track that this message has been synced to cloud
|
||||
this.cloudSyncedMessageTimestamps.add(message.ts)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -804,6 +809,15 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
|
|||
this.clineMessages = newMessages
|
||||
restoreTodoListForTask(this)
|
||||
await this.saveClineMessages()
|
||||
|
||||
// When overwriting messages (e.g., during task resume), repopulate the cloud sync tracking Set
|
||||
// with timestamps from all non-partial messages to prevent re-syncing previously synced messages
|
||||
this.cloudSyncedMessageTimestamps.clear()
|
||||
for (const msg of newMessages) {
|
||||
if (msg.partial !== true) {
|
||||
this.cloudSyncedMessageTimestamps.add(msg.ts)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async updateClineMessage(message: ClineMessage) {
|
||||
|
|
@ -811,13 +825,17 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
|
|||
await provider?.postMessageToWebview({ type: "messageUpdated", clineMessage: message })
|
||||
this.emit(RooCodeEventName.Message, { action: "updated", message })
|
||||
|
||||
// Check if we should sync to cloud and haven't already synced this message
|
||||
const shouldCaptureMessage = message.partial !== true && CloudService.isEnabled()
|
||||
const hasNotBeenSynced = !this.cloudSyncedMessageTimestamps.has(message.ts)
|
||||
|
||||
if (shouldCaptureMessage) {
|
||||
if (shouldCaptureMessage && hasNotBeenSynced) {
|
||||
CloudService.instance.captureEvent({
|
||||
event: TelemetryEventName.TASK_MESSAGE,
|
||||
properties: { taskId: this.taskId, message },
|
||||
})
|
||||
// Track that this message has been synced to cloud
|
||||
this.cloudSyncedMessageTimestamps.add(message.ts)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue