Skip to content

Add EvalOps memory export and wipe controls#51

Merged
haasonsaas merged 1 commit intomainfrom
codex/evalops-memory-export-wipe
Apr 21, 2026
Merged

Add EvalOps memory export and wipe controls#51
haasonsaas merged 1 commit intomainfrom
codex/evalops-memory-export-wipe

Conversation

@haasonsaas
Copy link
Copy Markdown
Collaborator

Summary

  • Expose Memory List/Delete through the Kestrel EvalOps consumer SDK.
  • Add Settings actions to export Kestrel-owned EvalOps Memory records to JSON.
  • Add a confirmed wipe action that deletes Kestrel cloud memory records and clears the local retry queue so stale pending syncs do not repopulate the cloud copy.

Refs #15.

Validation

  • npm run build
  • git diff --check

Validation caveat

  • I did not rerun full npm test on this branch because the previous run in the same fresh clone failed in audio-data-size.test.mjs: the local WAV duration reported 0.0s despite mic buffers and a 158 KB mic file. The TypeScript/Electron build for this change is clean.

@cursor
Copy link
Copy Markdown

cursor Bot commented Apr 21, 2026

PR Summary

Medium Risk
Introduces destructive deletion of remote memory records and new file export paths; mistakes in filtering/paging or error handling could delete unintended records or produce incomplete exports.

Overview
Adds support for listing and deleting EvalOps Memory records end-to-end: the consumer SDK MemoryClient gains list/deleteMemory, new request/response types are introduced, and main-process services/IPC handlers expose evalops:memory:list and evalops:memory:delete.

Extends the memory sync subsystem with cloud-copy maintenance tools: a settings UI action to export all Kestrel-owned synced memory (paged by type) to a JSON file, and a confirmed wipe action that deletes those remote memories and clears the local retry queue to prevent re-population.

Reviewed by Cursor Bugbot for commit f24a831. Bugbot is set up for automated code reviews on this repo. Configure here.

@haasonsaas haasonsaas merged commit 44cc7c0 into main Apr 21, 2026
5 checks passed
@haasonsaas haasonsaas deleted the codex/evalops-memory-export-wipe branch April 21, 2026 10:55
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is ON, but it could not run because the branch was deleted or merged before autofix could start.

Reviewed by Cursor Bugbot for commit f24a831. Configure here.

throw new Error('evalops_memory_offline')
}
memories.push(...response.memories)
if (!response.hasMore && response.memories.length < limit) break
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pagination loop break condition may cause infinite loop

High Severity

The break condition in listKestrelSyncedMemories uses && instead of ||. The expression !response.hasMore && response.memories.length < limit only breaks when both conditions are true. If the server returns hasMore: true with an empty memories array (or any count below limit), !response.hasMore is false, so the && short-circuits to false and the loop never terminates. This is an infinite loop that would hang both the export and wipe operations. The operator needs to be || so that either signal — no more pages or a short page — is sufficient to stop.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit f24a831. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant