feat(frontend): viewer humain fil-par-paire en lecture seule (LS7)
Frontend pur, lecture seule, consomme read_conversation_page (LS6) ; aucun changement backend. - adapters : conversation.ts (gateway) + conversationNormalization.ts. - features/conversations : useConversationThread, ConversationViewer, index. - domain (types LS7), ports (port + Gateways.conversation), adapters/index, mock (+ clé inventaire). - features/workstate : ProjectWorkStatePanel prop onOpenConversation. - features/projects : ProjectsView swap viewer. - tests (QA, verts) : conversationNormalization, mock/conversationGateway, useConversationThread, ConversationViewer, ProjectsView.ls7. tsc 0, vitest 443/443 (+36). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -213,6 +213,36 @@ export interface ProjectWorkState {
|
||||
conversations: ConversationWorkSummary[];
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Conversation transcript (LS7 — human thread-per-pair viewer, mirror of LS6 DTO)
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** Nature of a transcript turn (mirror of the backend `TurnRole`). */
|
||||
export type TurnRole = "prompt" | "response" | "toolActivity";
|
||||
|
||||
/** Origin of a transcript turn (mirror of the backend `TurnSource`). */
|
||||
export type TurnSource = { kind: "human" } | { kind: "agent"; agentId: string };
|
||||
|
||||
/** One turn of the human transcript — full text, never truncated. */
|
||||
export interface TurnView {
|
||||
id: string;
|
||||
atMs: number;
|
||||
role: TurnRole;
|
||||
source: TurnSource;
|
||||
text: string;
|
||||
textLen: number;
|
||||
}
|
||||
|
||||
/** Pagination travel direction (`"backward"` = towards older turns). */
|
||||
export type PageDirection = "forward" | "backward";
|
||||
|
||||
/** A page of the human transcript, oldest-to-newest. */
|
||||
export interface TurnPage {
|
||||
turns: TurnView[];
|
||||
hasMore: boolean;
|
||||
nextAnchor?: string;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Permissions (LP1)
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user