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

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
kind agent_id
agent a6ced819-b893-4213-b003-9e9dc79b9641
kind
user
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.jsonmcp.idea.timeout).

Emplacements (4 occurrences de 15000)

  1. crates/application/src/agent/lifecycle.rsopencode_config_json()
  2. crates/application/src/agent/lifecycle.rsopencode_provider_config_json()
  3. crates/infrastructure/src/assistant/mod.rsopencode_config_json() (duplicate)
  4. crates/infrastructure/src/assistant/mod.rsopencode_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).