fix(runtime): cancel en cascade des tasks filles — stop agent / cancel parent (#200, QA verte)
Cancel transitif, idempotent et ownership-aware sur le graphe parent→enfants des background tasks: - domain/background_task + ports: modèle parent/enfant (parent_task_id, rejet du self-parent), index children_by_parent, traversal des descendants en largeur. - application/background + infrastructure/store: cascade cancel (annule les descendants running/open, laisse les terminaux), idempotente face aux double-cancel et ordres de terminaison non déterministes; respect de l'ownership (parent_task_link). - orchestrator/service: stop agent → cascade cancel des tasks lancées par cet agent (relatesTo #196); cancel task parent → cascade de ses sous-tasks (dependsOn #199). Refactor unifiant le chemin de cancel, sans sémantique #196/#199 regreffée (tests hérités verts). - frontend: projection parentTaskId (workstate normalization/domain/services). Tests QA verts: domain background_task, application background_task_cancel (cascades_background_task_subtree, cascades_to_running_child, cascades_to_open_descendants_and_leaves_terminal_child, parent_task_link_roundtrips_and_rejects_self_parent), orchestrator_service, workstate_actions, workstate.test.tsx.
This commit is contained in:
@ -558,6 +558,8 @@ pub struct BackgroundTaskSpec {
|
||||
pub owner_agent_id: AgentId,
|
||||
/// Kind-specific task payload.
|
||||
pub kind: BackgroundTaskKind,
|
||||
/// Optional parent background task.
|
||||
pub parent_task_id: Option<TaskId>,
|
||||
/// Completion wake policy.
|
||||
pub wake_policy: BackgroundTaskWakePolicy,
|
||||
/// Optional command invocation for command-backed tasks.
|
||||
@ -2597,6 +2599,15 @@ pub trait BackgroundTaskStore: Send + Sync {
|
||||
agent_id: AgentId,
|
||||
) -> Result<Vec<BackgroundTask>, BackgroundTaskPortError>;
|
||||
|
||||
/// Lists tasks owned by a parent background task.
|
||||
///
|
||||
/// # Errors
|
||||
/// [`BackgroundTaskPortError`] on store failure.
|
||||
async fn list_children(
|
||||
&self,
|
||||
parent_task_id: TaskId,
|
||||
) -> Result<Vec<BackgroundTask>, BackgroundTaskPortError>;
|
||||
|
||||
/// Lists terminal tasks whose completion has not been delivered yet.
|
||||
///
|
||||
/// # Errors
|
||||
|
||||
Reference in New Issue
Block a user