Sauvegarde de l'arbre de travail en cours (persistance P8, conversations C-series, write-portal frontend, médiation d'entrée) avant d'attaquer le support de la délégation inter-agents pour les profils Codex. Le round-trip inter-agent question/réponse est couvert sans tokens par les tests loopback existants (state::mcp_e2e_loopback_tests). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.2 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| mcp-bridge-and-delegation-runtime-notes | Pieges runtime du pont MCP et de la delegation inter-agents IdeA, et la regle de rebuild de l'AppImage. |
|
Pont MCP & delegation : pieges runtime
Deux bugs trouves le 2026-06-13 en testant la conversation inter-agents (idea_ask_agent vers TestConversation), tous deux corriges. Notes utiles pour ne pas reperdre du temps :
Le binaire qui tourne = AppImage installee, pas les sources
L'IdeA en cours d'utilisation est /home/anthony/Documents/IdeA_0.1.0_amd64.AppImage. Ce meme binaire sert a la fois de serveur orchestrateur (il tient OrchestratorService/InputMediator et compose les evenements) ET de binaire-pont (<exe> mcp-server … declare dans chaque .ideai/run/<id>/.mcp.json). Donc tout correctif cote serveur ou cote pont n'est actif dans l'app que apres rebuild + reinstall de l'AppImage et relance d'IdeA. Un binaire target/debug fraichement compile ne valide que le pont (qui parle au serveur via le socket) ; il ne valide pas la composition cote serveur.
Comment appliquer : apres une correction backend, rebuild AppImage (npm --prefix frontend run build puis frontend/node_modules/.bin/tauri build --bundles appimage), remplacer l'AppImage, relancer IdeA, puis retester.
Env AppImage pollue le shell
La session shell herite des variables de l'AppImage montee (APPDIR, LD_LIBRARY_PATH, PYTHONHOME -> /tmp/.mount_IdeA_*). Consequences : python3 casse (No module named 'encodings') et lancer un binaire app-tauri fraichement compile tente de booter WebKit et crash. Workaround : lancer avec un env propre (env -i PATH=/usr/bin:/bin HOME=$HOME XDG_RUNTIME_DIR=/run/user/1000 ...), utiliser jq plutot que python.
Bug 1 — pont MCP en lockstep (corrige)
mcp_bridge.rs::relay lisait 1 ligne client -> attendait 1 reponse loopback, en boucle. MCP n'est pas 1:1 : notifications/initialized n'a pas de reponse => deadlock juste apres initialize, et tools/list n'etait jamais relaye => les outils idea_* ne se chargeaient jamais (claude mcp list affichait quand meme "Connected" car initialize repond). Corrige en relay full-duplex (deux pompes concurrentes) + drain borne (DRAIN_GRACE) a la fermeture stdin. Symptome cote utilisateur : 3 jours de "outils MCP pas charges".
Bug 2 — prefixe de delegation perdu (corrige)
Le signal [IdeA · tâche de <demandeur> · ticket <id>] qui dit a l'agent cible "reponds via idea_reply, jamais en texte" n'etait plus compose nulle part : supprime du backend (service.rs C3 §5.1) lors du passage de l'ecriture PTY au frontend, mais le frontend (useWritePortal.ts) ecrit head.text verbatim et ne l'ajoutait pas. La cible recevait la tache brute, repondait en texte => idea_ask_agent timeout. Corrige en composant le prefixe dans infrastructure/src/input/mod.rs (delegation_preamble) a l'emission de DomainEvent::DelegationReady ; la tache brute reste dans le Ticket/historique. Rappel : la correlation idea_reply marche par ticket OU par tete de FIFO (fallback), donc le ticket echo est recommande mais pas strictement requis.
See also remaining-work-idea-agent-control-ide, agent-context-memory-and-profile-handoff.