feat(app-tauri): événements des tâches de fond exposés au front (B1-B6)
Câblage des événements de complétion/mailbox/réveil vers la couche app-tauri pour consommation par le frontend (lots F1-F4 à venir). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -96,6 +96,41 @@ pub enum DomainEventDto {
|
|||||||
/// New liveness, as a lowercase string (`"alive"` / `"stalled"`).
|
/// New liveness, as a lowercase string (`"alive"` / `"stalled"`).
|
||||||
liveness: AgentLivenessDto,
|
liveness: AgentLivenessDto,
|
||||||
},
|
},
|
||||||
|
/// A background task lifecycle/delivery event occurred.
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
BackgroundTaskChanged {
|
||||||
|
/// Project id.
|
||||||
|
project_id: String,
|
||||||
|
/// Task id.
|
||||||
|
task_id: String,
|
||||||
|
/// Owner agent id.
|
||||||
|
agent_id: String,
|
||||||
|
/// Lightweight event/state label.
|
||||||
|
state: String,
|
||||||
|
},
|
||||||
|
/// An agent inbox queue depth changed.
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
AgentInboxChanged {
|
||||||
|
/// Agent id.
|
||||||
|
agent_id: String,
|
||||||
|
/// Queue depth after the operation.
|
||||||
|
depth: usize,
|
||||||
|
/// Queue operation label.
|
||||||
|
action: String,
|
||||||
|
},
|
||||||
|
/// An owner wake event occurred.
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
AgentWakeChanged {
|
||||||
|
/// Project id.
|
||||||
|
project_id: String,
|
||||||
|
/// Agent id.
|
||||||
|
agent_id: String,
|
||||||
|
/// Wake operation label.
|
||||||
|
action: String,
|
||||||
|
/// Failure reason, when any.
|
||||||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
reason: Option<String>,
|
||||||
|
},
|
||||||
/// An agent's runtime profile was changed (hot-swap of the AI engine).
|
/// An agent's runtime profile was changed (hot-swap of the AI engine).
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
AgentProfileChanged {
|
AgentProfileChanged {
|
||||||
@ -359,6 +394,115 @@ impl From<&DomainEvent> for DomainEventDto {
|
|||||||
liveness: (*liveness).into(),
|
liveness: (*liveness).into(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DomainEvent::BackgroundTaskStarted {
|
||||||
|
project_id,
|
||||||
|
task_id,
|
||||||
|
owner_agent_id,
|
||||||
|
} => Self::BackgroundTaskChanged {
|
||||||
|
project_id: project_id.to_string(),
|
||||||
|
task_id: task_id.to_string(),
|
||||||
|
agent_id: owner_agent_id.to_string(),
|
||||||
|
state: "started".to_owned(),
|
||||||
|
},
|
||||||
|
DomainEvent::BackgroundTaskStateChanged {
|
||||||
|
project_id,
|
||||||
|
task_id,
|
||||||
|
owner_agent_id,
|
||||||
|
state,
|
||||||
|
} => Self::BackgroundTaskChanged {
|
||||||
|
project_id: project_id.to_string(),
|
||||||
|
task_id: task_id.to_string(),
|
||||||
|
agent_id: owner_agent_id.to_string(),
|
||||||
|
state: format!("{state:?}"),
|
||||||
|
},
|
||||||
|
DomainEvent::BackgroundTaskCompleted {
|
||||||
|
project_id,
|
||||||
|
task_id,
|
||||||
|
owner_agent_id,
|
||||||
|
} => Self::BackgroundTaskChanged {
|
||||||
|
project_id: project_id.to_string(),
|
||||||
|
task_id: task_id.to_string(),
|
||||||
|
agent_id: owner_agent_id.to_string(),
|
||||||
|
state: "completed".to_owned(),
|
||||||
|
},
|
||||||
|
DomainEvent::BackgroundTaskFailed {
|
||||||
|
project_id,
|
||||||
|
task_id,
|
||||||
|
owner_agent_id,
|
||||||
|
} => Self::BackgroundTaskChanged {
|
||||||
|
project_id: project_id.to_string(),
|
||||||
|
task_id: task_id.to_string(),
|
||||||
|
agent_id: owner_agent_id.to_string(),
|
||||||
|
state: "failed".to_owned(),
|
||||||
|
},
|
||||||
|
DomainEvent::BackgroundTaskCancelled {
|
||||||
|
project_id,
|
||||||
|
task_id,
|
||||||
|
owner_agent_id,
|
||||||
|
} => Self::BackgroundTaskChanged {
|
||||||
|
project_id: project_id.to_string(),
|
||||||
|
task_id: task_id.to_string(),
|
||||||
|
agent_id: owner_agent_id.to_string(),
|
||||||
|
state: "cancelled".to_owned(),
|
||||||
|
},
|
||||||
|
DomainEvent::BackgroundTaskCompletionDeliveryPending {
|
||||||
|
project_id,
|
||||||
|
task_id,
|
||||||
|
owner_agent_id,
|
||||||
|
} => Self::BackgroundTaskChanged {
|
||||||
|
project_id: project_id.to_string(),
|
||||||
|
task_id: task_id.to_string(),
|
||||||
|
agent_id: owner_agent_id.to_string(),
|
||||||
|
state: "deliveryPending".to_owned(),
|
||||||
|
},
|
||||||
|
DomainEvent::BackgroundTaskCompletionDelivered {
|
||||||
|
project_id,
|
||||||
|
task_id,
|
||||||
|
owner_agent_id,
|
||||||
|
} => Self::BackgroundTaskChanged {
|
||||||
|
project_id: project_id.to_string(),
|
||||||
|
task_id: task_id.to_string(),
|
||||||
|
agent_id: owner_agent_id.to_string(),
|
||||||
|
state: "delivered".to_owned(),
|
||||||
|
},
|
||||||
|
DomainEvent::AgentInboxQueued { agent_id, depth } => Self::AgentInboxChanged {
|
||||||
|
agent_id: agent_id.to_string(),
|
||||||
|
depth: *depth,
|
||||||
|
action: "queued".to_owned(),
|
||||||
|
},
|
||||||
|
DomainEvent::AgentInboxDrained { agent_id, depth } => Self::AgentInboxChanged {
|
||||||
|
agent_id: agent_id.to_string(),
|
||||||
|
depth: *depth,
|
||||||
|
action: "drained".to_owned(),
|
||||||
|
},
|
||||||
|
DomainEvent::AgentWakeScheduled {
|
||||||
|
project_id,
|
||||||
|
agent_id,
|
||||||
|
} => Self::AgentWakeChanged {
|
||||||
|
project_id: project_id.to_string(),
|
||||||
|
agent_id: agent_id.to_string(),
|
||||||
|
action: "scheduled".to_owned(),
|
||||||
|
reason: None,
|
||||||
|
},
|
||||||
|
DomainEvent::AgentWakeStarted {
|
||||||
|
project_id,
|
||||||
|
agent_id,
|
||||||
|
} => Self::AgentWakeChanged {
|
||||||
|
project_id: project_id.to_string(),
|
||||||
|
agent_id: agent_id.to_string(),
|
||||||
|
action: "started".to_owned(),
|
||||||
|
reason: None,
|
||||||
|
},
|
||||||
|
DomainEvent::AgentWakeFailed {
|
||||||
|
project_id,
|
||||||
|
agent_id,
|
||||||
|
reason,
|
||||||
|
} => Self::AgentWakeChanged {
|
||||||
|
project_id: project_id.to_string(),
|
||||||
|
agent_id: agent_id.to_string(),
|
||||||
|
action: "failed".to_owned(),
|
||||||
|
reason: Some(reason.clone()),
|
||||||
|
},
|
||||||
DomainEvent::AgentProfileChanged {
|
DomainEvent::AgentProfileChanged {
|
||||||
agent_id,
|
agent_id,
|
||||||
profile_id,
|
profile_id,
|
||||||
|
|||||||
Reference in New Issue
Block a user