2.0 KiB
2.0 KiB
issueRef, version, updatedBy, updatedAt
| issueRef | version | updatedBy | updatedAt | ||
|---|---|---|---|---|---|
| #95 | 6 |
|
1784934174326 |
Cause racine RÉELLE (2026-07-24, après investigation code)
Ce qui se passe
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 avec l'erreur -32001: Request timed out.
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.
Emplacements du hardcoded 15000 (4 occurrences)
application/src/agent/lifecycle.rs:2728—opencode_config_json()application/src/agent/lifecycle.rs:2811—opencode_provider_config_json()infrastructure/src/assistant/mod.rs:410—opencode_config_json()(duplicate)infrastructure/src/assistant/mod.rs:495—opencode_provider_config_json()(duplicate)
Fix appliqué (feature/ticket95-opencode-mcp-timeout)
- Constante
DEFAULT_OPENCODE_MCP_TIMEOUT_MS= 4h (14_400_000 ms), alignée surDEFAULT_RENDEZVOUS_CEILING— le client MCP ne expire jamais avant le watchdog serveur. - Fonction
resolve_opencode_mcp_timeout_ms()— overridable viaIDEA_OPENCODE_MCP_TIMEOUT_MS, fallback sûr sur 0/parse-error. - Les 4 occurrences remplacées par
resolve_opencode_mcp_timeout_ms(). - Exporté depuis
application::agentpour réutilisation parinfrastructure. - Claude/Codex non touchés : aucune modification de leur config MCP.
Tests
- Application : 115 passed, 0 failed
- Infrastructure : 313 passed, 0 failed
- Compilation : OK, aucun nouveau warning
Note déploiement
Le opencode.json est régénéré à chaque lancement d'agent par le code lifecycle. Nécessite rebuild AppImage pour que le binaire qui tourne génère la nouvelle config.