2.7 KiB
id, number, title, status, priority, sprint, links, agentRefs, createdBy, updatedBy, createdAt, updatedAt, version
| id | number | title | status | priority | sprint | links | agentRefs | createdBy | updatedBy | createdAt | updatedAt | version | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 611077a6-f703-44b9-935b-64f8301085bb | 95 | Rendez-vous idea_ask_agent : timeout MCP OpenCode trop court (15s), le demandeur OpenCode ne reçoit jamais la réponse | closed | high | null |
|
|
1784822537740 | 1784934174326 | 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)
crates/application/src/agent/lifecycle.rs—opencode_config_json()crates/application/src/agent/lifecycle.rs—opencode_provider_config_json()crates/infrastructure/src/assistant/mod.rs—opencode_config_json()(duplicate)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 surDEFAULT_RENDEZVOUS_CEILING. - Fonction
resolve_opencode_mcp_timeout_ms()— overridable viaIDEA_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).