Files
IdeA/.ideai/tickets/54/carnet.md
Blomios ad1f2257e6 chore(ideai): état d'orchestration du sprint #54 (progression téléchargement)
Métadonnée runtime IdeA : tickets, sprints, mémoire et background-tasks
mis à jour au fil du sprint de progression fine du téléchargement (#54).
Séparé du code de feature (last-writer-wins, état non applicatif).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 10:37:23 +02:00

2.5 KiB
Raw Blame History

issueRef, version, updatedBy, updatedAt
issueRef version updatedBy updatedAt
#54 5
kind agent_id
agent a6ced819-b893-4213-b003-9e9dc79b9641
1783976286882

Cadrage Architect (2026-07-13)

Seam actuel du timeout : EnsureLocalModelServer dans crates/application/src/model_server.rs — boucle de readiness HTTP ReadinessPolicy par défaut 20 × 250ms (~5s), puis Failed{code:"timeout"} + kill du process (model_server.rs:336/359). Démarrage déclenché depuis lifecycle.rs:1665 (ensure_local_model_server_for_opencode). Adapter concret LocalManagedProcess (crates/infrastructure/src/model_server/mod.rs) : spawn sans capture stdout/stderr ; LlamaCppRuntime construit -hf <repo> ou --model <path> (mod.rs:101). Le probe HTTP /v1/models ne distingue que prêt/pas-joignable — pas de source « téléchargement » fiable aujourd'hui.

Frontend : event modelServerStatusChanged existe déjà (domain/index.ts), replié par serverId dans useAgents.ts:313, affiché surtout dans AgentsPanel — pas en overlay cellule. Overlay à brancher dans LeafView/LayoutGrid.tsx:883 (même niveau que les overlays plein-cellule existants), en corrélant agentId → profileId → opencode.localModelServerId → statut serveur.

Contrat DTO (réutilise le stream existant, pas de nouveau) — étendre ModelServerLifecycleStatus :

Downloading { downloaded_bytes: Option<u64>, total_bytes: Option<u64>, percent: Option<f32>, source: Option<String> }
Ready { reused: bool }
Failed { code, message }

Miroir TS : { state: "downloading"; downloadedBytes?; totalBytes?; percent?; source? } | ...

Découpage

  • B1 (backend MVP) : étendre le DTO status ; pour source HF auto-start, ne PAS traiter 5s de process vivant comme erreur → publier Downloading/Preparing, continuer à sonder tant que le process vit, échouer seulement si exit/probe terminal/port collision/deadline longue configurable.
  • F1 (frontend MVP) : étendre ModelServerStatus TS ; overlay plein-cellule dans LeafView pour cellules dont l'agent référence le serveur en downloading/starting/probing (« Téléchargement du modèle… » / « Chargement du serveur… »).
  • B2 (stretch) : progression fine réelle — court terme PTY + parse progress llama.cpp ; long terme port ModelArtifactDownloader (pré-DL HF avec callbacks, puis spawn --model <path>).
  • F2 (stretch) : barre/%, bytes, source.

Ordre : B1 → F1 → QA (MVP). Stretch B2/F2 séparable et décidé après.