fix(chat): le bouton Stop de la CLI custom arrête l'agent en cascade (#187)
Le Stop du CustomAgentChatView n'annulait que le tour courant sans libérer la session ni toucher aux tâches enfants ou appels MCP en cours. Il appelle désormais stop_live_agent sur l'agent vivant, qui: - ajoute le port StopAgentExecutionCascade (best-effort, idempotent), implémenté par OrchestratorService pour annuler les idea_run_in_background rattachés au rendez-vous actif (via BackgroundTaskRunner.cancel); - cascade l'arrêt aux wait-dépendances (stop_turn_watch + preempt) pour interrompre les appels MCP et les attentes inter-agents; - libère et supprime la session structurée. UI: nouvel état "Arrêt en cours..." (bouton disabled + loading) pendant l'arrêt, libération du sessionId, label expliquant la cascade demandée. La Tauri command cancel_agent_chat est alignée sur stop_live_agent + stop_turn_watch agent et dépendances. Tests: SpyBackgroundRunner (cascade n'annule que les tâches rattachées), workstate_actions cascade best-effort, CustomAgentChatView stop+cascade feedback et fallback NOT_FOUND.
This commit is contained in:
@ -2907,6 +2907,7 @@ impl BackendCore {
|
||||
Arc::clone(&background_tasks_port),
|
||||
Arc::clone(&clock) as Arc<dyn Clock>,
|
||||
)
|
||||
.with_background_task_runner(Arc::clone(&background_runner_port))
|
||||
// Limites de session sur le chemin délégué headless : quand le drain
|
||||
// structuré retourne `RateLimited`, l'orchestrateur arme la reprise pour
|
||||
// la cible limitée via le même service que les chemins directs.
|
||||
@ -2929,7 +2930,9 @@ impl BackendCore {
|
||||
.with_cascade(
|
||||
Arc::clone(&input_mediator),
|
||||
Arc::clone(&orchestrator_service),
|
||||
),
|
||||
)
|
||||
.with_execution_cascade(Arc::clone(&orchestrator_service)
|
||||
as Arc<dyn application::StopAgentExecutionCascade>),
|
||||
);
|
||||
|
||||
// --- Windows (L10) ---
|
||||
|
||||
Reference in New Issue
Block a user