From 588914c83ebf9b578372b0f9fcf2adf7b966109d Mon Sep 17 00:00:00 2001 From: Blomios Date: Fri, 28 Aug 2026 22:57:32 +0200 Subject: [PATCH] =?UTF-8?q?chore(tickets):=20synchro=20du=20store=20local?= =?UTF-8?q?=20=E2=80=94=20cr=C3=A9ation=20#256=20(Rebuild=20AppImage)=20+?= =?UTF-8?q?=20#257=20(stop=20custom=20CLI),=20cl=C3=B4ture=20#255=20;=20d?= =?UTF-8?q?=C3=A9rive=20r=C3=A9siduelle=20#254?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .ideai/tickets/254/carnet.md | 4 ++-- .ideai/tickets/254/issue.md | 6 +++--- .ideai/tickets/255/carnet.md | 25 ++++++++++++++++++++++-- .ideai/tickets/255/issue.md | 6 +++--- .ideai/tickets/256/carnet.md | 24 +++++++++++++++++++++++ .ideai/tickets/256/issue.md | 17 ++++++++++++++++ .ideai/tickets/257/carnet.md | 38 ++++++++++++++++++++++++++++++++++++ .ideai/tickets/257/issue.md | 17 ++++++++++++++++ .ideai/tickets/counter.json | 2 +- .ideai/tickets/index.json | 30 +++++++++++++++++++++++++++- 10 files changed, 157 insertions(+), 12 deletions(-) create mode 100644 .ideai/tickets/256/carnet.md create mode 100644 .ideai/tickets/256/issue.md create mode 100644 .ideai/tickets/257/carnet.md create mode 100644 .ideai/tickets/257/issue.md diff --git a/.ideai/tickets/254/carnet.md b/.ideai/tickets/254/carnet.md index 2e81af60..c5c4689d 100644 --- a/.ideai/tickets/254/carnet.md +++ b/.ideai/tickets/254/carnet.md @@ -1,8 +1,8 @@ --- issueRef: "#254" -version: 2 +version: 3 updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} -updatedAt: 1787566369625 +updatedAt: 1787566909446 --- 2026-08-24 - Reprise du ticket par cycle complet. diff --git a/.ideai/tickets/254/issue.md b/.ideai/tickets/254/issue.md index c90177e7..a5b5d1bb 100644 --- a/.ideai/tickets/254/issue.md +++ b/.ideai/tickets/254/issue.md @@ -2,7 +2,7 @@ id: "c77c66e2-5a81-4998-bcf5-c939be68b006" number: 254 title: "Stabiliser les rendez-vous inter-agents OpenCode/GLM et éliminer les faux NoReply/perms sur projets externes" -status: "inProgress" +status: "qa" priority: "high" sprint: null links: [] @@ -11,7 +11,7 @@ attachments: [] createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} createdAt: 1787565563009 -updatedAt: 1787566369625 -version: 2 +updatedAt: 1787566909446 +version: 3 --- Enquête à partir du projet ReadaBook: des délégations Main -> Git/Architect/QA via profils OpenCode/GLM échouent encore sporadiquement avec `NoReply: agent ... finished without a structured Final response`, alors que les mêmes agents réussissent sur d'autres prompts. Les logs montrent aussi un vieux mélange de contexte où des agents Git/QA répondaient depuis le projet IdeA au lieu de ReadaBook et accusaient à tort des refus de permissions sur `/home/anthony/Documents/Projects/ReadaBook`. Il faut distinguer et corriger: 1) les vrais rendez-vous headless qui finissent sans Final capturée; 2) les cas de mauvais contexte/projet qui produisent de faux diagnostics de permissions. Périmètre probable: orchestration rendezvous/final-capture + projection d'état/live-state + messages d'erreur/réessai. \ No newline at end of file diff --git a/.ideai/tickets/255/carnet.md b/.ideai/tickets/255/carnet.md index 5b722fbf..8abe87b6 100644 --- a/.ideai/tickets/255/carnet.md +++ b/.ideai/tickets/255/carnet.md @@ -1,6 +1,27 @@ --- issueRef: "#255" -version: 3 +version: 5 updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} -updatedAt: 1787569806822 +updatedAt: 1787569961595 --- +Cause racine confirmée côté chemin headless OpenCode de `idea_ask_agent`. + +Constat: +- Le run headless OpenCode était lancé depuis le run dir isolé sans `--dir ` ; une délégation pouvait donc s’exécuter hors du project root attendu. +- En reprise `--session`, OpenCode peut aussi sortir sans final JSON/textuel exploitable ; cela se manifestait côté Main par `finished without a structured Final response`. +- Le symptôme ne concernait pas la cellule visible de l’agent, ce qui isolait le bug au chemin de délégation headless. + +Fix livré: +- `crates/infrastructure/src/session/factory.rs` passe désormais `ctx.project_root` à `OpenCodeSession`. +- `crates/infrastructure/src/session/opencode.rs` ajoute `--dir ` à chaque `opencode run`. +- En cas de reprise `--session` sans final exploitable, un retry unique est tenté en session fraîche, borné au même project root. +- Tests ajoutés: `send_passes_project_root_as_opencode_dir_without_changing_process_cwd` et `resumed_session_without_final_retries_once_as_fresh_project_scoped_run`. + +Validation: +- QA verte le 2026-08-24 sur `cargo test -p infrastructure session::opencode -- --test-threads=1` (25 tests OK). +- Limite restante: pas d’e2e live OpenCode inter-projets exécutée contre un binaire/provider externe durant ce cycle. + +Git: +- Branche de travail: `fix/255-opencode-cross-project-reattach-final`. +- Commits/merge locaux annoncés par Git: `8bea678` (fix), `6294ceb` (chore tickets), merge `9505a33` dans `develop`. +- Des changements hors sujet sont restés hors commit (`.ideai/tickets/254/*`, `scripts/`). \ No newline at end of file diff --git a/.ideai/tickets/255/issue.md b/.ideai/tickets/255/issue.md index bcfe9094..79295c8a 100644 --- a/.ideai/tickets/255/issue.md +++ b/.ideai/tickets/255/issue.md @@ -2,7 +2,7 @@ id: "bfcee119-765e-4622-b132-8fd5667d98d9" number: 255 title: "Bug OpenCode: idea_ask_agent peut reattacher un agent d'un autre projet ou perdre le Final" -status: "qa" +status: "closed" priority: "high" sprint: null links: [] @@ -11,7 +11,7 @@ attachments: [] createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} createdAt: 1787569298214 -updatedAt: 1787569806822 -version: 3 +updatedAt: 1787569961595 +version: 5 --- Symptome utilisateur: dans un autre projet, une delegation Main -> Git via idea_ask_agent renvoie soit une reponse sur un autre depot, soit 'finished without a structured Final response'. La meme demande executee directement dans la cellule Git fonctionne. Suspicion forte: bug specifique au chemin OpenCode headless (reattache/session/cwd/contexte projet) et/ou a la capture de Final OpenCode. Objectif: verifier si le bug est bien specifique a OpenCode, identifier la cause, corriger, puis valider par test. \ No newline at end of file diff --git a/.ideai/tickets/256/carnet.md b/.ideai/tickets/256/carnet.md new file mode 100644 index 00000000..e4b7a8b9 --- /dev/null +++ b/.ideai/tickets/256/carnet.md @@ -0,0 +1,24 @@ +--- +issueRef: "#256" +version: 4 +updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} +updatedAt: 1787572238319 +--- +Build AppImage exécuté le 2026-08-24 selon le workflow `build-appimage`. + +Étapes exécutées: +- `npm --prefix frontend run build` vert. +- Depuis `crates/app-tauri/`: `CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimage` vert. + +Résultat: +- Artefact produit: `target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage`. +- Vérification fichier: présent sur disque, taille observée ~114M. + +Version/tag: +- Branche courante: `develop`. +- Git a appliqué la règle projet d’incrément sur `develop` et a posé le tag local annoté `v0.37.0` sur le commit `9505a33` après build vert. +- Aucun push effectué. + +Point restant manuel: +- Le remplacement de l’AppImage installée et la relance d’IdeA ne sont pas automatisés ici, car relancer IdeA coupe l’orchestrateur/session en cours. +- Si activation immédiate souhaitée: remplacer manuellement l’AppImage installée par l’artefact produit, idéalement en gardant un backup de l’ancienne AppImage, puis relancer IdeA. \ No newline at end of file diff --git a/.ideai/tickets/256/issue.md b/.ideai/tickets/256/issue.md new file mode 100644 index 00000000..68c26a17 --- /dev/null +++ b/.ideai/tickets/256/issue.md @@ -0,0 +1,17 @@ +--- +id: "61fa7bad-35fc-4684-948e-7411d54bc9c7" +number: 256 +title: "Rebuild AppImage IdeA" +status: "closed" +priority: "medium" +sprint: null +links: [] +agentRefs: [] +attachments: [] +createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} +updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} +createdAt: 1787571941112 +updatedAt: 1787572238319 +version: 4 +--- +Reconstruction de l'AppImage Linux IdeA selon le workflow valide build-appimage. Inclut la gestion du tag de version local par l'agent Git selon la branche courante et la politique projet (x sur main, y sur develop, z sur autre branche). \ No newline at end of file diff --git a/.ideai/tickets/257/carnet.md b/.ideai/tickets/257/carnet.md new file mode 100644 index 00000000..01cd9cd0 --- /dev/null +++ b/.ideai/tickets/257/carnet.md @@ -0,0 +1,38 @@ +--- +issueRef: "#257" +version: 6 +updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} +updatedAt: 1787950467916 +--- +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 1 +- Ciblé backend/frontend vert. +- Blocage global: `app-tauri` ne compile plus ses tests DTO après l’ajout de `runtime_state` et `node_id`. +- Erreurs repérées dans `crates/app-tauri/tests/dto_agents.rs` lignes ~282, ~325, ~694. + +Prochaine étape +- DevBackend corrige les fixtures/tests DTO Tauri puis QA relance. \ No newline at end of file diff --git a/.ideai/tickets/257/issue.md b/.ideai/tickets/257/issue.md new file mode 100644 index 00000000..ff745773 --- /dev/null +++ b/.ideai/tickets/257/issue.md @@ -0,0 +1,17 @@ +--- +id: "ed89dba0-05ae-4dc4-91b2-d90514c8ac70" +number: 257 +title: "Le bouton stop de la custom CLI n’annule pas le travail courant ni les délivations en cascade" +status: "qa" +priority: "high" +sprint: null +links: [] +agentRefs: [] +attachments: [] +createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} +updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} +createdAt: 1787949060568 +updatedAt: 1787950467916 +version: 6 +--- +Le bouton stop de la custom CLI ne fonctionne pas. Il faut annuler le travail courant de l’agent ciblé sans fermer sa session, conserver son contexte, interrompre aussi les tools/travaux en cours, et propager l’annulation en chaîne à tous les agents appelés par cet agent pour le travail courant. La cascade doit fonctionner autant depuis un stop utilisateur que depuis un agent qui annule un agent qu’il a lancé. \ No newline at end of file diff --git a/.ideai/tickets/counter.json b/.ideai/tickets/counter.json index 6797258c..37527409 100644 --- a/.ideai/tickets/counter.json +++ b/.ideai/tickets/counter.json @@ -1,3 +1,3 @@ { - "nextNumber": 256 + "nextNumber": 258 } \ No newline at end of file diff --git a/.ideai/tickets/index.json b/.ideai/tickets/index.json index a1c1468f..67e5c121 100644 --- a/.ideai/tickets/index.json +++ b/.ideai/tickets/index.json @@ -3439,6 +3439,34 @@ "issueRef": "#255", "path": "255", "title": "Bug OpenCode: idea_ask_agent peut reattacher un agent d'un autre projet ou perdre le Final", + "status": "closed", + "priority": "high", + "sprint": null, + "assignedAgentIds": [], + "createdBy": { + "kind": "agent", + "agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d" + }, + "updatedAt": 1787569961595 + }, + { + "issueRef": "#256", + "path": "256", + "title": "Rebuild AppImage IdeA", + "status": "closed", + "priority": "medium", + "sprint": null, + "assignedAgentIds": [], + "createdBy": { + "kind": "agent", + "agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d" + }, + "updatedAt": 1787572238319 + }, + { + "issueRef": "#257", + "path": "257", + "title": "Le bouton stop de la custom CLI n’annule pas le travail courant ni les délivations en cascade", "status": "qa", "priority": "high", "sprint": null, @@ -3447,7 +3475,7 @@ "kind": "agent", "agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d" }, - "updatedAt": 1787569806822 + "updatedAt": 1787950467916 } ] } \ No newline at end of file