fix(runtime): cancel de background task immédiat et fiable depuis le workstate (#199, QA verte)
Transforme l'annulation d'une background task en contrat immédiat, observable et non-best-effort: - domain/background_task: états Cancelling/Cancelled/CancelFailed et transitions idempotentes; un kill PTY qui échoue est surfacé en CancelFailed plutôt qu'en succès silencieux. - infrastructure/runner + store: cancel effectif de la task ciblée, reconcile marque Cancelling même sans live handle, et départage CancelFailed des tâches pending au boot. - application/background + workstate + orchestrator/wake: chemin de cancel initié depuis le workstate, projection synchronisée de l'état (pas d'attente d'un cycle ambigu). - frontend: projection workstate de l'état cancelled/cancelling/cancelFailed (cancellingRow/cancelFailedRow/cancelButtons), normalization et services. Tests QA verts: background_task_cancel, background_task_runner cancel_wins_even_if_output_is_still_available, background_task_store reconcile_marks_cancelling_without_live_handle_cancel_failed_and_pending, workstate.test.tsx.
This commit is contained in:
@ -507,17 +507,23 @@ function AgentLiveRow({
|
||||
|
||||
const TASK_STATUS_LABEL: Record<BackgroundCompletion["status"], string> = {
|
||||
running: "Running",
|
||||
cancelling: "Cancelling",
|
||||
completed: "Completed",
|
||||
failed: "Failed",
|
||||
cancelFailed: "Cancel failed",
|
||||
cancelled: "Cancelled",
|
||||
pending: "Pending",
|
||||
delivered: "Delivered",
|
||||
};
|
||||
|
||||
function taskStatusClass(status: BackgroundCompletion["status"]): string {
|
||||
if (status === "running" || status === "pending") return "bg-warning/15 text-warning";
|
||||
if (status === "running" || status === "pending" || status === "cancelling") {
|
||||
return "bg-warning/15 text-warning";
|
||||
}
|
||||
if (status === "completed" || status === "delivered") return "bg-success/10 text-success";
|
||||
if (status === "failed" || status === "cancelled") return "bg-danger/10 text-danger";
|
||||
if (status === "failed" || status === "cancelFailed" || status === "cancelled") {
|
||||
return "bg-danger/10 text-danger";
|
||||
}
|
||||
return "bg-raised text-muted";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user