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>
This commit is contained in:
27
.ideai/tickets/54/carnet.md
Normal file
27
.ideai/tickets/54/carnet.md
Normal file
@ -0,0 +1,27 @@
|
||||
---
|
||||
issueRef: "#54"
|
||||
version: 5
|
||||
updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
|
||||
updatedAt: 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.
|
||||
Reference in New Issue
Block a user