* feat(mirrors): add selective snapshot sync to mirror repositories
Allow users to sync missing snapshots from the source repository to a
mirror. A new sync button per mirror opens a dialog showing which
snapshots are missing, with checkboxes to select which ones to copy.
- Add GET /:shortId/mirrors/:mirrorShortId/status endpoint to compare
snapshots between source and mirror repositories
- Add POST /:shortId/mirrors/:mirrorShortId/sync endpoint accepting
selected snapshotIds in the request body
- Extend restic copy command to accept multiple snapshotIds
- Add sync preview dialog with snapshot selection to the frontend
* refactor: stylistic changes
---------
Co-authored-by: Nicolas Meienberger <github@thisprops.com>
* feat(agent): add standalone agent runtime
* fix(agent): add Bun and DOM types to agent tsconfig
* refactor: wrap backup error in a tagged effect error
* feat(controller): add agent manager and session handling
* feat(backups): execute backups through the agent
* fix(agent): harden disconnect and send-failure handling
* fix: rebase conflicts
* test: simplify mocks
* refactor: split agent runtime state
* fix(backup): keep old path when agent is disabled
* fix: pr feedbacks