chore(tickets): synchro du store local — cycle cross-project #260–#265 (cadrage/architecture/backend/UI/QA), carnets #117/#155/#185/#196/#243/#259, contextes agents, index/counter
This commit is contained in:
@ -94,9 +94,10 @@ tu le dis.
|
||||
|
||||
## 4. Conventions
|
||||
|
||||
- **Messages de commit** : en **français**, style Conventional Commits cohérent avec
|
||||
- **Messages de commit** : en **anglais**, style Conventional Commits cohérent avec
|
||||
l'historique : `feat(scope): …`, `fix(scope): …`, `chore(scope): …`, `docs(scope): …`,
|
||||
`refactor(scope): …`. Corps multi-ligne expliquant le **pourquoi** quand utile.
|
||||
`refactor(scope): …`. Le ou les tickets sur lesquels portent le commit.
|
||||
Corps multi-ligne expliquant le **pourquoi** quand utile.
|
||||
- **Atomicité** : un commit = une intention cohérente. Tu sépares le code de feature de
|
||||
l'état runtime (`.ideai/` conversations, layouts, manifestes) et des docs.
|
||||
- **Co-author** : termine les messages de commit par
|
||||
|
||||
@ -104,9 +104,4 @@ Si une réflexion est récurrente et aboutit toujours à la même solution, cré
|
||||
Si aucun ticket n'existe pour la demande de l'utilisateur, créé le. S'il existe, réouvre le.
|
||||
Mets à jour le status des tickets que tu traites: in progress, closed, QA.
|
||||
Mets a jour le carnet des tickets que tu traites en cas de futur reprise de ce ticket pour éviter
|
||||
de boucler plusieurs fois sur les memes soucis.
|
||||
|
||||
A chaque build de l'appimage, j'aimerais que tu demandes à Git d'incrémenter la version, par le tag,
|
||||
du commit sur lequel à été faite l'appimage sous cette forme: vx.y.z (donc par exemple v1.0.0).
|
||||
Incrémente x pour chaque build faite sur la branche main,y pour chaque build faite sur la branche develop
|
||||
et z pour chaque build faite sur une autre branche.
|
||||
de boucler plusieurs fois sur les memes soucis.
|
||||
@ -101,5 +101,3 @@ Ta place dans le cycle dépend de l'enjeu :
|
||||
- Avec **Architect** : dis explicitement ce que la surface exige de la donnée. Si sa
|
||||
contrainte technique borne ta conception, propose une alternative plutôt que de
|
||||
concéder en silence.
|
||||
- En fonction des modifications à apporter, tu soulignes la necessité de répliquer les modifications
|
||||
UI sur les interfaces Web PC et Web téléphone
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
---
|
||||
issueRef: "#117"
|
||||
version: 12
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1787336067149
|
||||
version: 13
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1788789622644
|
||||
---
|
||||
2026-08-21 Main
|
||||
- Ticket rouvert pour livraison effective sur la branche backend dédiée `feature/117-ask-agent-sync-background-tasks` depuis `develop` @ `c1d7f6d`.
|
||||
|
||||
@ -2,17 +2,17 @@
|
||||
id: "66e80f94-780b-4856-806d-ba4b96673630"
|
||||
number: 117
|
||||
title: "Garantir la synchronie métier de idea_ask_agent malgré les background tasks"
|
||||
status: "inProgress"
|
||||
status: "closed"
|
||||
priority: "critical"
|
||||
sprint: null
|
||||
links: []
|
||||
agentRefs: [{"agentId":"a6ced819-b893-4213-b003-9e9dc79b9641","role":"assigned"}]
|
||||
attachments: []
|
||||
createdBy: {"kind":"user"}
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"user"}
|
||||
createdAt: 1785500280516
|
||||
updatedAt: 1787336067149
|
||||
version: 12
|
||||
updatedAt: 1788789622644
|
||||
version: 13
|
||||
---
|
||||
Constat : quand un agent `A` délègue une demande à un agent `B` via `idea_ask_agent`, `B` peut lancer une background task puis terminer son tour avant que cette tâche ne finisse. Dans ce cas, `A` peut recevoir une pseudo-réponse terminale trop tôt, alors que le travail réel n'est pas terminé.
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
---
|
||||
issueRef: "#155"
|
||||
version: 13
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1786346556578
|
||||
version: 14
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1788789622554
|
||||
---
|
||||
## 2026-08-06 — Reopened from user validation on AppImage
|
||||
- User reports that clipboard paste in the custom CLI chat still does not work in practice.
|
||||
|
||||
@ -2,16 +2,16 @@
|
||||
id: "620bc08f-835c-483c-a9f1-59690ebf8ab5"
|
||||
number: 155
|
||||
title: "Custom chat: paste image/fichier depuis le clipboard dans le composer"
|
||||
status: "inProgress"
|
||||
status: "closed"
|
||||
priority: "medium"
|
||||
sprint: null
|
||||
links: [{"target":"#154","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"8f7da528-58df-4315-97e9-0562230ecc19","role":"assigned"},{"agentId":"fe887179-933f-47d4-960f-c3b06827f86c","role":"assigned"}]
|
||||
attachments: []
|
||||
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"user"}
|
||||
createdAt: 1785964740363
|
||||
updatedAt: 1786346556578
|
||||
version: 13
|
||||
updatedAt: 1788789622554
|
||||
version: 14
|
||||
---
|
||||
Demande utilisateur requalifiée le 2026-08-06: la custom CLI ne permet toujours pas de coller un fichier dans la barre de chat, comme dans une TUI native Claude Code ou Codex. Le scope ne doit pas rester limité au seul collage d'image: il faut couvrir au minimum les fichiers/images exposés par le clipboard et les convertir en attachments utilisables dans le composer custom, via le pipeline d'attachments existant.
|
||||
@ -1,8 +1,8 @@
|
||||
---
|
||||
issueRef: "#185"
|
||||
version: 13
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1786709806993
|
||||
version: 14
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1788789622659
|
||||
---
|
||||
2026-08-13
|
||||
- Constaté depuis Main que `.ideai/permissions.json` est déjà en `allow` global sur read/write/delete/executeBash.
|
||||
|
||||
@ -2,16 +2,16 @@
|
||||
id: "3eea8ad2-e8c5-4a1a-881e-dbf129aa60b0"
|
||||
number: 185
|
||||
title: "Codex structured sandbox: rétablir l'écriture du project root pour les agents Dev sans perdre l'accès à .git"
|
||||
status: "inProgress"
|
||||
status: "closed"
|
||||
priority: "critical"
|
||||
sprint: null
|
||||
links: []
|
||||
agentRefs: [{"agentId":"b4730d7f-c54d-4736-8a04-c6203aa2fd49","role":"assigned"},{"agentId":"fe887179-933f-47d4-960f-c3b06827f86c","role":"assigned"}]
|
||||
attachments: []
|
||||
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"user"}
|
||||
createdAt: 1786606428812
|
||||
updatedAt: 1786709806993
|
||||
version: 13
|
||||
updatedAt: 1788789622659
|
||||
version: 14
|
||||
---
|
||||
L'UI expose une policy Allow/Write globale, mais les sessions structurées Codex semblent recevoir un runtime dont les writable_roots sont limités aux racines Git enrichies. Les tests backend actuels verrouillent même que le project root ne soit pas ajouté comme writable root. Impact: Main et potentiellement DevBackend/DevFrontend ne peuvent plus modifier le code applicatif malgré une UI permissive. Objectif: réaligner la projection structured Codex et/ou le plan OS sandbox avec la policy UI voulue, en conservant l'accès Git ajouté récemment.
|
||||
@ -1,8 +1,8 @@
|
||||
---
|
||||
issueRef: "#196"
|
||||
version: 6
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1786709807009
|
||||
version: 7
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1788789622674
|
||||
---
|
||||
2026-08-14
|
||||
- Bug utilisateur: les grants accordes dans la page Permissions ne donnent toujours pas l'ecriture au root du projet dans la nouvelle AppImage.
|
||||
|
||||
@ -2,16 +2,16 @@
|
||||
id: "c8ee4aa6-e301-4002-af26-7ca4e537d77a"
|
||||
number: 196
|
||||
title: "Permissions page grants do not allow agent write access to project root"
|
||||
status: "inProgress"
|
||||
status: "closed"
|
||||
priority: "high"
|
||||
sprint: null
|
||||
links: [{"target":"#185","kind":"relatesTo"}]
|
||||
agentRefs: []
|
||||
attachments: []
|
||||
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"user"}
|
||||
createdAt: 1786704189602
|
||||
updatedAt: 1786709807009
|
||||
version: 6
|
||||
updatedAt: 1788789622674
|
||||
version: 7
|
||||
---
|
||||
Malgre le fix precedent et une nouvelle AppImage, accorder les permissions dans la page Permissions ne donne toujours pas aux agents l'acces en ecriture au root du projet. Attendu: quand les permissions correspondantes sont accordees dans la page Permissions, les agents doivent pouvoir ecrire dans le root du projet et ses chemins pertinents selon le grant.
|
||||
@ -1,8 +1,8 @@
|
||||
---
|
||||
issueRef: "#243"
|
||||
version: 3
|
||||
version: 7
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1787476334103
|
||||
updatedAt: 1788439323308
|
||||
---
|
||||
2026-08-23
|
||||
- Rebuild AppImage demandé par l’utilisateur.
|
||||
@ -11,4 +11,14 @@ updatedAt: 1787476334103
|
||||
- Bundle Tauri AppImage OK depuis `crates/app-tauri` avec `CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimage`.
|
||||
- Artefact produit: `/home/anthony/Documents/Projects/IdeA/target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage` (114M constatés à 11:10 le 2026-08-23).
|
||||
- Git a décidé puis posé le tag local `v0.27.0` sur le commit `24c237b` de `develop` après build réussi, conformément à la règle de bump mineur sur `develop`.
|
||||
- Point d’attention Git: après le build/tag, deux commits `chore` sans impact code sur l’AppImage buildée ont été ajoutés sur `develop`; le tag reste volontairement sur le commit buildé `24c237b`.
|
||||
- Point d’attention Git: après le build/tag, deux commits `chore` sans impact code sur l’AppImage buildée ont été ajoutés sur `develop`; le tag reste volontairement sur le commit buildé `24c237b`.
|
||||
|
||||
2026-09-03
|
||||
- Rebuild AppImage redemandé par l’utilisateur.
|
||||
- Skill `build-appimage` relu avant exécution.
|
||||
- Git a inspecté `develop` HEAD `d7b24ad` et préparé le prochain tag local `v0.39.0` à poser sur ce commit si le build réussit.
|
||||
- Build relancé avec shell propre (pollution AppImage évitée via unset `PYTHONHOME`/`PYTHONPATH`).
|
||||
- Frontend build OK: `env -u PYTHONHOME -u PYTHONPATH npm --prefix frontend run build`.
|
||||
- Bundle Tauri AppImage OK: `env -u PYTHONHOME -u PYTHONPATH bash -lc 'mkdir -p /tmp/idea-cargo-home && cd 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'`.
|
||||
- Artefact produit: `/home/anthony/Documents/Projects/IdeA/target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage` (114M constatés à 14:41 le 2026-09-03).
|
||||
- Git a posé le tag local annoté `v0.39.0` sur `d7b24ad`; `git tag --points-at d7b24ad` retourne `v0.39.0`. Rien poussé.
|
||||
|
||||
@ -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: 1787475935659
|
||||
updatedAt: 1787476334103
|
||||
version: 3
|
||||
updatedAt: 1788439323308
|
||||
version: 7
|
||||
---
|
||||
Reconstruction demandée de l’AppImage Linux IdeA à partir de l’état courant du dépôt, en suivant le workflow validé projet. Le tag Git local de version du commit buildé doit être incrémenté selon la règle projet: x sur main, y sur develop, z sur toute autre branche.
|
||||
@ -1,13 +1,15 @@
|
||||
---
|
||||
issueRef: "#259"
|
||||
version: 3
|
||||
version: 5
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1788438656514
|
||||
updatedAt: 1788438757480
|
||||
---
|
||||
2026-09-03 Main
|
||||
- Bug reproduit/qualifié: les permissions MCP d’un template semblent perdues après save puis réouverture.
|
||||
- UX: pas de redesign requis; l’éditeur doit refléter l’état réellement sauvegardé.
|
||||
- Architect: pas de changement de contrat large; vérifier le mapping wire alias/DTO.
|
||||
- Git: a prescrit `fix/259-template-permissions-reopen` depuis `develop`, mais DevFrontend n’a pas pu créer la branche ici (`.git/index.lock: Read-only file system`). Modifs laissées localement, non pushées/non commit.
|
||||
- DevFrontend: cause réelle = désalignement de normalisation frontend sur les réponses template (`defaultMcpToolPermissions`/`defaultSystemPermissions` backend non remappés vers `mcpToolPermissions`/`systemPermissions` consommés par l’UI à la réouverture). Correctif local livré avec test de régression adapter + vérifications ciblées vertes.
|
||||
- En attente: verdict QA réel sur l’état local actuel, puis Git pour commit/merge si vert.
|
||||
- Git: a d’abord prescrit `fix/259-template-permissions-reopen` depuis `develop`. DevFrontend n’a pas pu créer la branche dans son sandbox (`.git/index.lock: Read-only file system`), mais Git a ensuite exécuté la topologie git locale depuis sa propre session.
|
||||
- DevFrontend: cause réelle = désalignement de normalisation frontend sur les réponses template (`defaultMcpToolPermissions`/`defaultSystemPermissions` backend non remappés vers `mcpToolPermissions`/`systemPermissions` consommés par l’UI à la réouverture). Correctif livré avec test de régression adapter.
|
||||
- QA: vert sur l’état local actuel avec `npm test -- --run src/adapters/http/httpInvoker.test.ts src/features/templates/templates.test.tsx` et `npm run typecheck`.
|
||||
- Git: a créé `fix/259-template-permissions-reopen`, commit de fix `4d34ade`, merge local `cd8bca9` dans `develop`, puis commit séparé du store tickets `d7b24ad`. Rien poussé.
|
||||
- Résultat: ticket corrigé, validé QA, mergé localement dans `develop`.
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
id: "0c7d8e1b-bf25-4620-9eaa-36e545388056"
|
||||
number: 259
|
||||
title: "Template permissions do not persist after save"
|
||||
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: 1788438150527
|
||||
updatedAt: 1788438656514
|
||||
version: 3
|
||||
updatedAt: 1788438757480
|
||||
version: 5
|
||||
---
|
||||
Dans l’éditeur de template, les permissions ajoutées semblent disparaître après sauvegarde : en revenant sur le template, les cases sont vides. Corriger la persistance/relance de l’état des permissions des templates.
|
||||
17
.ideai/tickets/260/carnet.md
Normal file
17
.ideai/tickets/260/carnet.md
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
issueRef: "#260"
|
||||
version: 8
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1788791628015
|
||||
---
|
||||
# Carnet #260
|
||||
|
||||
- Ticket principal cree pour la feature agents cross-project.
|
||||
- Sous-tickets: #261 UX closed, #262 Architecture closed, #263 Backend QA, #264 Frontend QA, #265 QA/AppImage inProgress.
|
||||
- UX #261 rendu: checkbox `Contactable depuis d’autres projets` dans Permissions agent et template, defaut decoche, texte d'aide distinct agent/template, erreur sauvegarde `La permission n’a pas pu être enregistrée. Réessayez.`
|
||||
- Architect #262 rendu: identite canonique `projectId + agentId`, DTO MCP `idea_project_list`, `idea_project_read_context`, `idea_project_list_agents`, `idea_project_ask_agent`, `idea_project_cancel_agent`; runtime minimal projet ferme; reconciliation ouverture projet; queue/busy/cancel indexes par `RuntimeAgentKey(projectId, agentId)`; routage par correlationId requester/target project-scoped.
|
||||
- Git: branche root `feature/260-cross-project-agents`; worktrees devs realignes; commits de lot faits puis merges locaux root sans conflit.
|
||||
- Backend: commit `9895498` sur `feature/260-backend`, merge root `530ce01`; tests Main verts: `cargo fmt --check`, `cargo check -p application -p infrastructure -p backend -p app-tauri --lib`, `cargo test -p application cross_project --test orchestrator_service`, `cargo test -p infrastructure --test mcp_server`, `cargo test -p application --test template_usecases`, `cargo test -p infrastructure --test template_store`.
|
||||
- Frontend: commit `8496507` sur `feature/260-frontend`, merge root `b0f8fe4`; DevFrontend annonce verts: `npm run typecheck`, `npm test -- src/features/permissions/permissions.test.tsx src/features/templates/templates.test.tsx src/adapters/http/httpInvoker.test.ts`, 48 passed.
|
||||
- Git verification root apres merge: `npm run typecheck` vert + `cargo +stable check -p application -p infrastructure -p backend -p app-tauri --lib` vert.
|
||||
- Etat actuel: pret pour QA complete sur branche integree; aucun push, aucun merge develop/main. Dirty restant attendu: store `.ideai/`/tickets/scripts non lies au code produit.
|
||||
17
.ideai/tickets/260/issue.md
Normal file
17
.ideai/tickets/260/issue.md
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
id: "1f6e430c-d7ca-49cb-8eac-dc885aa593ce"
|
||||
number: 260
|
||||
title: "Agents cross-project: MCP discovery, permissions et contact inter-projets"
|
||||
status: "inProgress"
|
||||
priority: "critical"
|
||||
sprint: null
|
||||
links: []
|
||||
agentRefs: [{"agentId":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d","role":"assigned"}]
|
||||
attachments: []
|
||||
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
createdAt: 1788773711834
|
||||
updatedAt: 1788791628015
|
||||
version: 8
|
||||
---
|
||||
Feature demandée: permettre à un agent IdeA de découvrir les projets IdeA, lire leur contexte, lister les agents explicitement contactables d’un projet avec leur contexte, puis contacter un agent d’un autre projet via MCP avec routage fiable de la réponse vers le bon agent et le bon projet. Contraintes clés: lancer un agent même si son projet n’est pas ouvert; si le projet est ouvert ensuite, l’agent doit être considéré comme déjà lancé; gérer busy/cancel/rendez-vous comme idea_ask_agent; désambiguïser les agents homonymes par projectId + agentId; exposer une permission par agent persistée aussi dans les templates.
|
||||
6
.ideai/tickets/261/carnet.md
Normal file
6
.ideai/tickets/261/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#261"
|
||||
version: 2
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1788774465904
|
||||
---
|
||||
17
.ideai/tickets/261/issue.md
Normal file
17
.ideai/tickets/261/issue.md
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
id: "5bbf6483-1dfa-4150-90c9-49f8e03f16e8"
|
||||
number: 261
|
||||
title: "Cross-project agents: cadrage UX permission agent/template"
|
||||
status: "closed"
|
||||
priority: "high"
|
||||
sprint: null
|
||||
links: [{"target":"#260","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"757430bb-014a-40fa-b82b-f2429dab9766","role":"assigned"}]
|
||||
attachments: []
|
||||
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
createdAt: 1788773730333
|
||||
updatedAt: 1788774465904
|
||||
version: 2
|
||||
---
|
||||
Définir la surface UI pour rendre un agent contactable depuis d’autres projets IdeA. Probable ajout d’une checkbox dans les permissions d’agent, avec libellés, comportement dans les templates, indication dans les listes d’agents contactables si nécessaire. Doit rester cohérent avec les permissions existantes et persister dans les templates.
|
||||
6
.ideai/tickets/262/carnet.md
Normal file
6
.ideai/tickets/262/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#262"
|
||||
version: 2
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1788774465928
|
||||
---
|
||||
17
.ideai/tickets/262/issue.md
Normal file
17
.ideai/tickets/262/issue.md
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
id: "94c6e01a-4efc-479a-9b92-d75153160390"
|
||||
number: 262
|
||||
title: "Cross-project agents: architecture MCP, registry projets et rendez-vous"
|
||||
status: "closed"
|
||||
priority: "critical"
|
||||
sprint: null
|
||||
links: [{"target":"#260","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"b4730d7f-c54d-4736-8a04-c6203aa2fd49","role":"assigned"}]
|
||||
attachments: []
|
||||
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
createdAt: 1788773730351
|
||||
updatedAt: 1788774465928
|
||||
version: 2
|
||||
---
|
||||
Cadrer les contrats backend et runtime pour: lister les projets IdeA avec contexte; lister les agents contactables d’un projet avec contexte; contacter un agent via projectId + agentId + message; lancer/reattacher un agent dans un projet fermé; réconcilier l’état lorsque le projet est ouvert ensuite; gérer busy/cancel/rendez-vous et routage de réponse vers le bon demandeur; éviter toute ambiguïté d’agents homonymes.
|
||||
29
.ideai/tickets/263/carnet.md
Normal file
29
.ideai/tickets/263/carnet.md
Normal file
@ -0,0 +1,29 @@
|
||||
---
|
||||
issueRef: "#263"
|
||||
version: 14
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1788792738864
|
||||
---
|
||||
# Carnet #263
|
||||
|
||||
Contexte implementation backend issu de #262:
|
||||
- Identite canonique cross-project: `CrossProjectAgentRef { projectId, agentId }`; ne jamais router par nom.
|
||||
- Tools MCP additifs: `idea_project_list`, `idea_project_read_context`, `idea_project_list_agents`, `idea_project_ask_agent`, `idea_project_cancel_agent`.
|
||||
- Runtime target et busy/cancel indexes par `RuntimeAgentKey(projectId, agentId)`.
|
||||
- Permissions: agent contactable cross-project par projet, templates avec default materialise a la creation d'agent.
|
||||
|
||||
Git:
|
||||
- Lot initial committe par Git: `9895498` sur `feature/260-backend`, merge root `530ce01` dans `feature/260-cross-project-agents`.
|
||||
|
||||
Corrections QA:
|
||||
- Homonymes ask/cancel: `crates/application/src/orchestrator/service.rs` route via l'Agent resolu par `agentId`, sans repasser par nom; `idea_project_cancel_agent` stoppe via `agentId`.
|
||||
- App-tauri fixture: `crates/app-tauri/src/templates.rs` corrige `with_metadata(...)` avec `default_contactable`.
|
||||
- Provider template update: `crates/domain/src/template.rs` serialise toujours `default_contactable`, y compris `false`, pour renvoyer `defaultContactable: false` au lieu de Null.
|
||||
|
||||
Tests verts connus:
|
||||
- `cargo test -p application cross_project_ --test orchestrator_service -- --nocapture` (5 passed)
|
||||
- `cargo test -p app-tauri --test dto_templates -- --nocapture` (22 passed)
|
||||
- `cargo test -p app-tauri template_provider_crud_round_trips_and_update_publishes_event -- --nocapture` (1 passed)
|
||||
- `cargo fmt --check`
|
||||
- `cargo check -p application -p infrastructure -p backend -p app-tauri --lib`
|
||||
- `cargo check -p domain -p app-tauri --lib`
|
||||
17
.ideai/tickets/263/issue.md
Normal file
17
.ideai/tickets/263/issue.md
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
id: "b31676b7-ca52-4273-b00d-c0c46cb6c8ba"
|
||||
number: 263
|
||||
title: "Cross-project agents: implémentation backend MCP et runtime"
|
||||
status: "closed"
|
||||
priority: "critical"
|
||||
sprint: null
|
||||
links: [{"target":"#260","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"fe887179-933f-47d4-960f-c3b06827f86c","role":"assigned"}]
|
||||
attachments: []
|
||||
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
createdAt: 1788773730400
|
||||
updatedAt: 1788792738864
|
||||
version: 14
|
||||
---
|
||||
Implémenter les tools MCP cross-project et la mécanique runtime validée par Architect: discovery projets/contextes, discovery agents contactables/contextes, contact agent cross-project, permission persistée, launch projet fermé, reconciliation à l’ouverture, routage project-scopé, busy/cancel. Inclure tests backend ciblés.
|
||||
25
.ideai/tickets/264/carnet.md
Normal file
25
.ideai/tickets/264/carnet.md
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
issueRef: "#264"
|
||||
version: 8
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1788792738961
|
||||
---
|
||||
# Carnet #264
|
||||
|
||||
Contexte UI issu de #261:
|
||||
|
||||
- Ajouter dans section `Permissions` agent une checkbox `Contactable depuis d’autres projets`.
|
||||
- Texte aide agent: `Autorise les agents d’autres projets IdeA à solliciter cet agent via l’orchestration inter-projets. L’agent reste soumis à ses permissions et à son contexte.`
|
||||
- Dans editeur de template agent, meme checkbox; texte aide template: `Les agents créés avec ce template reprendront cette permission.`
|
||||
- Defaut decoche pour valeurs absentes/anciens templates/nouveaux agents.
|
||||
- Creation depuis template: copier la valeur du template; modifier un template ne change pas retroactivement les agents existants.
|
||||
- Erreur sauvegarde: `La permission n’a pas pu être enregistrée. Réessayez.`
|
||||
- Lecture impossible: permission decochee visuellement desactivee avec `Permission indisponible pour le moment.`
|
||||
|
||||
Git:
|
||||
- Worktree frontend dedie: `/home/anthony/Documents/Projects/IdeA/.ideai/run/8f7da528-58df-4315-97e9-0562230ecc19/worktree` sur branche `feature/260-frontend`, propre apres stash Git `pre-260 leftovers frontend`.
|
||||
|
||||
Blocage:
|
||||
- Les tours DevFrontend echouent avant generation avec erreur Codex 400: `gpt-5.6` non supporte.
|
||||
- Cause source: profil global `e9c0b04e-6506-498e-8a4a-f3713b87583d` dans `/home/anthony/.local/share/app.idea.ide/profiles.json` reste `model: gpt-5.6`.
|
||||
- Pas de diff frontend produit pour #264.
|
||||
17
.ideai/tickets/264/issue.md
Normal file
17
.ideai/tickets/264/issue.md
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
id: "f9559bb0-47d4-43ef-99ce-1d81b9b8f5de"
|
||||
number: 264
|
||||
title: "Cross-project agents: UI permissions agents et templates"
|
||||
status: "closed"
|
||||
priority: "high"
|
||||
sprint: null
|
||||
links: [{"target":"#260","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"8f7da528-58df-4315-97e9-0562230ecc19","role":"assigned"}]
|
||||
attachments: []
|
||||
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
createdAt: 1788773730439
|
||||
updatedAt: 1788792738961
|
||||
version: 8
|
||||
---
|
||||
Implémenter la surface frontend validée par UX et les contrats fournis par Architect/DevBackend pour la permission contactable depuis d’autres projets, sur agents et templates. Inclure tests frontend ciblés.
|
||||
28
.ideai/tickets/265/carnet.md
Normal file
28
.ideai/tickets/265/carnet.md
Normal file
@ -0,0 +1,28 @@
|
||||
---
|
||||
issueRef: "#265"
|
||||
version: 5
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1788792738991
|
||||
---
|
||||
# Carnet #265
|
||||
|
||||
QA finale sur `feature/260-cross-project-agents`: VERT.
|
||||
|
||||
Commandes QA vertes:
|
||||
- `cargo test -p application cross_project_ --test orchestrator_service -- --nocapture`: 5 passed, incluant homonymes ask/cancel et filtre contactable.
|
||||
- `cargo test -p app-tauri --test dto_templates -- --nocapture`: 22 passed.
|
||||
- `cargo test -p app-tauri template_provider_crud_round_trips_and_update_publishes_event -- --nocapture`: 1 passed.
|
||||
- `cargo test -p infrastructure project_tool -- --nocapture`: 4 passed.
|
||||
- `cargo test -p infrastructure --test mcp_server tools_list_advertises_the_idea_tools_with_schemas -- --nocapture`: 1 passed.
|
||||
- `npm run typecheck`: vert.
|
||||
- `npm test -- src/features/permissions/permissions.test.tsx src/features/templates/templates.test.tsx src/features/workstate/workstate.test.tsx src/adapters/http/httpInvoker.test.ts`: 4 files passed, 71 tests passed.
|
||||
- `cargo fmt --check`: exit 0.
|
||||
|
||||
Rouges corriges:
|
||||
- Homonymes `idea_project_ask_agent` / `idea_project_cancel_agent` ne reroutent plus par nom apres resolution UUID.
|
||||
- `dto_templates` app-tauri adapte a `default_contactable`.
|
||||
- `idea_template_update` provider retourne `defaultContactable: false` au lieu de Null.
|
||||
|
||||
Gap/risque accepte: pas de test reel multi-process/projet ferme/reconciliation; validation par tests Rust cibles, fakes applicatifs, catalogue MCP, DTO/provider template et UI frontend.
|
||||
|
||||
Etape suivante: Git commit/merge local puis build AppImage.
|
||||
17
.ideai/tickets/265/issue.md
Normal file
17
.ideai/tickets/265/issue.md
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
id: "e7e283b0-e774-415f-8260-ac649dc38a32"
|
||||
number: 265
|
||||
title: "Cross-project agents: validation QA complète et AppImage"
|
||||
status: "inProgress"
|
||||
priority: "critical"
|
||||
sprint: null
|
||||
links: [{"target":"#260","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"ab328d90-c307-4771-a3b6-6c56089c8506","role":"assigned"}]
|
||||
attachments: []
|
||||
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
createdAt: 1788773730479
|
||||
updatedAt: 1788792738991
|
||||
version: 5
|
||||
---
|
||||
Valider la feature cross-project de bout en bout: tools MCP de discovery, agents contactables, contact cross-project avec projets fermés/ouverts, homonymes, busy/cancel/routage réponse, persistence permissions agents/templates, réconciliation à l’ouverture d’un projet. Puis valider le build AppImage produit.
|
||||
@ -1,3 +1,3 @@
|
||||
{
|
||||
"nextNumber": 260
|
||||
"nextNumber": 266
|
||||
}
|
||||
@ -1487,7 +1487,7 @@
|
||||
"issueRef": "#117",
|
||||
"path": "117",
|
||||
"title": "Garantir la synchronie métier de idea_ask_agent malgré les background tasks",
|
||||
"status": "inProgress",
|
||||
"status": "closed",
|
||||
"priority": "critical",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
@ -1496,7 +1496,7 @@
|
||||
"createdBy": {
|
||||
"kind": "user"
|
||||
},
|
||||
"updatedAt": 1787336067149
|
||||
"updatedAt": 1788789622644
|
||||
},
|
||||
{
|
||||
"issueRef": "#119",
|
||||
@ -2025,7 +2025,7 @@
|
||||
"issueRef": "#155",
|
||||
"path": "155",
|
||||
"title": "Custom chat: paste image/fichier depuis le clipboard dans le composer",
|
||||
"status": "inProgress",
|
||||
"status": "closed",
|
||||
"priority": "medium",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
@ -2036,7 +2036,7 @@
|
||||
"kind": "agent",
|
||||
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
||||
},
|
||||
"updatedAt": 1786346556578
|
||||
"updatedAt": 1788789622554
|
||||
},
|
||||
{
|
||||
"issueRef": "#156",
|
||||
@ -2483,7 +2483,7 @@
|
||||
"issueRef": "#185",
|
||||
"path": "185",
|
||||
"title": "Codex structured sandbox: rétablir l'écriture du project root pour les agents Dev sans perdre l'accès à .git",
|
||||
"status": "inProgress",
|
||||
"status": "closed",
|
||||
"priority": "critical",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
@ -2494,7 +2494,7 @@
|
||||
"kind": "agent",
|
||||
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
||||
},
|
||||
"updatedAt": 1786709806993
|
||||
"updatedAt": 1788789622659
|
||||
},
|
||||
{
|
||||
"issueRef": "#186",
|
||||
@ -2632,7 +2632,7 @@
|
||||
"issueRef": "#196",
|
||||
"path": "196",
|
||||
"title": "Permissions page grants do not allow agent write access to project root",
|
||||
"status": "inProgress",
|
||||
"status": "closed",
|
||||
"priority": "high",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [],
|
||||
@ -2640,7 +2640,7 @@
|
||||
"kind": "agent",
|
||||
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
||||
},
|
||||
"updatedAt": 1786709807009
|
||||
"updatedAt": 1788789622674
|
||||
},
|
||||
{
|
||||
"issueRef": "#197",
|
||||
@ -3279,7 +3279,7 @@
|
||||
"kind": "agent",
|
||||
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
||||
},
|
||||
"updatedAt": 1787476334103
|
||||
"updatedAt": 1788439323308
|
||||
},
|
||||
{
|
||||
"issueRef": "#244",
|
||||
@ -3497,7 +3497,7 @@
|
||||
"issueRef": "#259",
|
||||
"path": "259",
|
||||
"title": "Template permissions do not persist after save",
|
||||
"status": "qa",
|
||||
"status": "closed",
|
||||
"priority": "high",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [],
|
||||
@ -3505,7 +3505,103 @@
|
||||
"kind": "agent",
|
||||
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
||||
},
|
||||
"updatedAt": 1788438656514
|
||||
"updatedAt": 1788438757480
|
||||
},
|
||||
{
|
||||
"issueRef": "#260",
|
||||
"path": "260",
|
||||
"title": "Agents cross-project: MCP discovery, permissions et contact inter-projets",
|
||||
"status": "inProgress",
|
||||
"priority": "critical",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
||||
],
|
||||
"createdBy": {
|
||||
"kind": "agent",
|
||||
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
||||
},
|
||||
"updatedAt": 1788791628015
|
||||
},
|
||||
{
|
||||
"issueRef": "#261",
|
||||
"path": "261",
|
||||
"title": "Cross-project agents: cadrage UX permission agent/template",
|
||||
"status": "closed",
|
||||
"priority": "high",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"757430bb-014a-40fa-b82b-f2429dab9766"
|
||||
],
|
||||
"createdBy": {
|
||||
"kind": "agent",
|
||||
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
||||
},
|
||||
"updatedAt": 1788774465904
|
||||
},
|
||||
{
|
||||
"issueRef": "#262",
|
||||
"path": "262",
|
||||
"title": "Cross-project agents: architecture MCP, registry projets et rendez-vous",
|
||||
"status": "closed",
|
||||
"priority": "critical",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"b4730d7f-c54d-4736-8a04-c6203aa2fd49"
|
||||
],
|
||||
"createdBy": {
|
||||
"kind": "agent",
|
||||
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
||||
},
|
||||
"updatedAt": 1788774465928
|
||||
},
|
||||
{
|
||||
"issueRef": "#263",
|
||||
"path": "263",
|
||||
"title": "Cross-project agents: implémentation backend MCP et runtime",
|
||||
"status": "closed",
|
||||
"priority": "critical",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"fe887179-933f-47d4-960f-c3b06827f86c"
|
||||
],
|
||||
"createdBy": {
|
||||
"kind": "agent",
|
||||
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
||||
},
|
||||
"updatedAt": 1788792738864
|
||||
},
|
||||
{
|
||||
"issueRef": "#264",
|
||||
"path": "264",
|
||||
"title": "Cross-project agents: UI permissions agents et templates",
|
||||
"status": "closed",
|
||||
"priority": "high",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"8f7da528-58df-4315-97e9-0562230ecc19"
|
||||
],
|
||||
"createdBy": {
|
||||
"kind": "agent",
|
||||
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
||||
},
|
||||
"updatedAt": 1788792738961
|
||||
},
|
||||
{
|
||||
"issueRef": "#265",
|
||||
"path": "265",
|
||||
"title": "Cross-project agents: validation QA complète et AppImage",
|
||||
"status": "inProgress",
|
||||
"priority": "critical",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"ab328d90-c307-4771-a3b6-6c56089c8506"
|
||||
],
|
||||
"createdBy": {
|
||||
"kind": "agent",
|
||||
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
||||
},
|
||||
"updatedAt": 1788792738991
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user