43 lines
2.8 KiB
Markdown
43 lines
2.8 KiB
Markdown
---
|
||
issueRef: "#257"
|
||
version: 8
|
||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||
updatedAt: 1787950677814
|
||
---
|
||
2026-08-28 Main
|
||
|
||
Contexte initial
|
||
- Le bouton stop de la custom CLI ne fonctionne pas et doit annuler le travail courant sans fermer la session.
|
||
- L’annulation doit cascader sur tous les agents délégués par ce travail courant, transitivement.
|
||
- Les tools/processus/travaux en cours doivent aussi être interrompus.
|
||
|
||
Cadrage UX
|
||
- `Stop` signifie uniquement `Arrêter la demande en cours`.
|
||
- La session et le contexte doivent être conservés.
|
||
- Etat attendu: `Stopping...` pendant la propagation, puis `Stopped`/`Request stopped` quand tout le sous-arbre courant est effectivement annulé.
|
||
- Ne jamais afficher un état stoppé si un tool ou un sous-agent du même tour tourne encore.
|
||
|
||
Cadrage Architect
|
||
- Le bug vient du fait que la UI/commande stoppe la session structurée au lieu d’annuler l’exécution courante.
|
||
- Cible: source de vérité du travail courant = task racine persistée; chaque délégation/tool long du tour courant est chaîné via `parent_task_id`.
|
||
- Le cancel doit suivre l’arbre de tâches, avec séparation claire entre `annuler le travail` et `fermer la session`.
|
||
- Port recommandé côté app/infra pour annuler la ressource runtime associée à un task/execution; état `Cancelling` puis terminal cohérent.
|
||
|
||
Etat implémentation observé
|
||
- Backend modifié dans `crates/application`, `crates/domain`, `crates/infrastructure/session` et `orchestrator/mcp/tools`.
|
||
- Frontend modifié dans `CustomAgentChatView.tsx` + tests associés.
|
||
- Backend: sessions structurées conservées, `cancel_current_turn()` introduit, cascade sur dépendances actives + préemption runtime, autorisation requester/sous-arbre sur `idea_stop_agent`, `TurnCancel` pour couper le process du tour courant.
|
||
- Frontend: bouton `Stop` rebranché sur l’annulation de chat courante, état `Stopping...`, anti double-clic, session réutilisable.
|
||
|
||
Verdict QA final
|
||
- `cargo test -p application --test workstate_actions stop_structured -- --nocapture` => vert.
|
||
- `cargo test -p application --test orchestrator_service stop_agent -- --nocapture` => vert.
|
||
- `cargo test -p infrastructure --test mcp_server stop_agent -- --nocapture` => vert.
|
||
- `npm --prefix frontend test -- --run src/features/agents/CustomAgentChatView.test.tsx -t "cancels only the current request and keeps the structured session usable|treats NOT_FOUND during request cancel as an already-stopped request"` => vert.
|
||
- `cargo test -p app-tauri --test dto_agents -- --nocapture` => vert.
|
||
|
||
Risque résiduel
|
||
- Pas de scénario live end-to-end multi-agents + vrais tools externes exécuté par QA; couverture transitive validée surtout via tests backend ciblés.
|
||
|
||
Prochaine étape
|
||
- Git décide/pose le commit local du ticket #257. |