diff --git a/desktop/src-tauri/src/commands/agent_models.rs b/desktop/src-tauri/src/commands/agent_models.rs index d4c0df06b5..8d9456f95d 100644 --- a/desktop/src-tauri/src/commands/agent_models.rs +++ b/desktop/src-tauri/src/commands/agent_models.rs @@ -940,7 +940,7 @@ pub async fn update_managed_agent( let conn = crate::managed_agents::retention::open_retention_db( &scope.db_path, )?; - if !crate::managed_agents::retention::mark_managed_agent_aggregate_synced( + if !crate::managed_agents::retention::retire_managed_agent_aggregate( &conn, &pending.owner_pubkey, &pending.agent_pubkey, diff --git a/desktop/src-tauri/src/managed_agents/retention.rs b/desktop/src-tauri/src/managed_agents/retention.rs index 5d25b7f953..1fcf7b1f4b 100644 --- a/desktop/src-tauri/src/managed_agents/retention.rs +++ b/desktop/src-tauri/src/managed_agents/retention.rs @@ -131,6 +131,24 @@ pub struct RetainedManagedAgentAggregate { pub local_authority_applied: bool, } +pub fn retire_managed_agent_aggregate( + conn: &Connection, + owner_pubkey: &str, + agent_pubkey: &str, + generation: u64, + private_event_id: &str, +) -> Result { + let changed = conn + .execute( + "DELETE FROM managed_agent_aggregates + WHERE owner_pubkey = ?1 AND agent_pubkey = ?2 + AND generation = ?3 AND private_event_id = ?4 AND pending_sync = 1", + params![owner_pubkey, agent_pubkey, generation as i64, private_event_id], + ) + .map_err(|error| format!("failed to retire managed-agent aggregate: {error}"))?; + Ok(changed == 1) +} + pub fn seed_confirmed_managed_agent_aggregate( conn: &Connection, aggregate: &RetainedManagedAgentAggregate,