Files
IdeaSDK/.ideai/tickets/95/issue.md
Blomios e1b1c1e103 restore .ideai/tickets/ store versionnέ + corrige .gitignore
- Restaure .ideai/tickets/ depuis 851f1f8^ (167 tickets + index.json + counter.json)
- Enlève les ignore rules .ideai/tickets/ dans .gitignore (ligne 51 et 75)
- Permet le suivi durable du store tickets futur
- Ne touche pas sdk/ (reste untracked)
2026-07-28 20:18:00 +02:00

54 lines
2.7 KiB
Markdown

---
id: "611077a6-f703-44b9-935b-64f8301085bb"
number: 95
title: "Rendez-vous idea_ask_agent : timeout MCP OpenCode trop court (15s), le demandeur OpenCode ne reçoit jamais la réponse"
status: "closed"
priority: "high"
sprint: null
links: []
agentRefs: []
createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
updatedBy: {"kind":"user"}
createdAt: 1784822537740
updatedAt: 1784934174326
version: 6
---
## Bug
Une délégation `idea_ask_agent` depuis un agent sous profil **OpenCode** (le **demandeur**) échoue systématiquement en `timeout` (-32001 « Request timed out »), peu importe la cible (Claude, Codex, ou OpenCode). Les agents cibles terminent bien leurs tâches (visible dans le workstate = done), mais leurs réponses ne sont jamais livrées au demandeur OpenCode.
Claude et Codex ne sont **pas** affectés, qu'ils soient demandeur ou cible.
## Cause racine (vérifiée dans les sources)
Le `"timeout": 15000` (15 secondes) **hardcoded** dans le bloc `mcp.idea` de l'`opencode.json` généré par IdeA. OpenCode applique ce timeout **par appel `tools/call`** à ses serveurs MCP. `idea_ask_agent` bloque pendant que l'agent cible travaille (potentiellement des minutes) → OpenCode tue la requête à 15s.
**Pourquoi Claude/Codex ne sont pas affectés** : leur config MCP (`.mcp.json` / `config.toml`) n'a **pas** de champ `timeout`. Ce champ est spécifique à la config OpenCode (`opencode.json``mcp.idea.timeout`).
### Emplacements (4 occurrences de `15000`)
1. `crates/application/src/agent/lifecycle.rs``opencode_config_json()`
2. `crates/application/src/agent/lifecycle.rs``opencode_provider_config_json()`
3. `crates/infrastructure/src/assistant/mod.rs``opencode_config_json()` (duplicate)
4. `crates/infrastructure/src/assistant/mod.rs``opencode_provider_config_json()` (duplicate)
## Ce qui n'est PAS la cause
- Ce n'est pas un problème de sonde de vivacité du rendez-vous (la description originale pointait la sonde Claude-only côté cible — mauvaise piste).
- Ce n'est pas un problème de permissions, de sandbox, ou de taille de payload.
- Ce n'est pas lié au modèle : tout profil `structuredAdapter: "openCode"` est touché en tant que demandeur.
## Fix appliqué (feature/ticket95-opencode-mcp-timeout)
- Constante `DEFAULT_OPENCODE_MCP_TIMEOUT_MS` = 4h (14_400_000 ms), alignée sur `DEFAULT_RENDEZVOUS_CEILING`.
- Fonction `resolve_opencode_mcp_timeout_ms()` — overridable via `IDEA_OPENCODE_MCP_TIMEOUT_MS`, fallback sûr.
- Les 4 occurrences remplacées.
- **Claude/Codex non touchés**.
## Tests
Application : 115 passed. Infrastructure : 313 passed. 0 failed.
## Déploiement
Nécessite rebuild AppImage (l'`opencode.json` est régénéré à chaque lancement d'agent).