Capitalise la mémoire projet produite pendant la campagne de tests fonctionnels MCP (rendez-vous inter-agents, backstop no-reply, réconciliation live-state au reboot) et synchronise l'état runtime `.ideai/` (agents, layouts, skills, index mémoire). Inclut la mise à jour du contexte de l'agent Git. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.4 KiB
2.4 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| conversation-viewer-ls7-frontend | Contrat figé du viewer de transcript paginé (frontend pur, lecture seule, surface humaine). |
|
LS7 — Viewer fil-par-paire (front pur)
Dernier lot fonctionnel du programme persistance. UI humaine qui rejoue le transcript par paire, consomme la commande LS6 read_conversation_page. Lecture seule, zéro impact backend/agent.
Gateway / adapter / mock (patron WorkStateGateway)
- Port
ConversationGateway.readPage(projectId, conversationId, {anchor?, direction?, limit?}) -> TurnPage. AjouterconversationàGateways. - Types domaine :
TurnView{id, atMs, role: prompt|response|toolActivity, source: {kind:human}|{kind:agent,agentId}, text COMPLET, textLen},TurnPage{turns, hasMore, nextAnchor}. - Adapter
TauriConversationGateway→ invoke("read_conversation_page",{projectId,conversationId,cursor:{anchor,direction},limit}) +conversationNormalization.ts(mapper source Human/Agent calqué sur workStateNormalization). Mock avec pagination réelle +_setTurnspour tests offline. - Frontière : composant → useGateways().conversation → adapter → invoke. Jamais d'invoke direct.
Modèle d'affichage
- Clé = conversationId. Entrée = drill-down depuis le Work panel (
ConversationWorkSummary.conversationIddéjà énuméré ; rendre les lignes cliquables via proponOpenConversation). Pas de nouvel appel « liste conversations ». - Rejeu chrono croissant ; distinction sobre User↔Agent vs Agent↔Agent (parties déduites des sources, noms résolus depuis l'inventaire agents) ; toolActivity atténué/replié.
- Pagination : ouverture backward/None = dernière page (bas du fil) ; scroll-up = backward ancré sur le tour le plus ANCIEN du buffer (préfixe, dédup par id, hasMore gate) ; refresh queue = forward ancré sur le plus récent (manuel ou sur domain events delegationReady/orchestratorRequestProcessed).
Intégration
- État local
viewerConversationIddans ProjectsView ; swap main-area (rend ConversationViewer à la place de LayoutGrid, PAS un nouveau kind backend) ; bouton retour ; reset au changement de projet. viewerConversationId=null ⇒ UI actuelle inchangée (non-régression terminal).
Frontière / backend
Lecture seule (read_conversation_page LS6, hors chemin chaud), jamais injecté dans un contexte agent. Aucune part backend : juste vérifier la signature de la commande exposée et aligner l'adapter si écart.