Files
IdeA/.ideai/tickets/95/carnet.md

2.0 KiB

issueRef, version, updatedBy, updatedAt
issueRef version updatedBy updatedAt
#95 6
kind
user
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)

  1. application/src/agent/lifecycle.rs:2728opencode_config_json()
  2. application/src/agent/lifecycle.rs:2811opencode_provider_config_json()
  3. infrastructure/src/assistant/mod.rs:410opencode_config_json() (duplicate)
  4. infrastructure/src/assistant/mod.rs:495opencode_provider_config_json() (duplicate)

Fix appliqué (feature/ticket95-opencode-mcp-timeout)

  • Constante DEFAULT_OPENCODE_MCP_TIMEOUT_MS = 4h (14_400_000 ms), alignée sur DEFAULT_RENDEZVOUS_CEILING — le client MCP ne expire jamais avant le watchdog serveur.
  • Fonction resolve_opencode_mcp_timeout_ms() — overridable via IDEA_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::agent pour réutilisation par infrastructure.
  • 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.