feat(cli): repense la timeline de conversation (tools MCP centrés, progress à droite, tours compacts) — #174 (QA verte)
- ToolProgressCard: tools/MCP/délégations centrés, extrait succinct de la demande inter-agent - ProgressBubble: progress non-outil alignés à droite, clamp 4 lignes (fourLineClamp) - TurnMarker: marqueurs turn.started/turn.completed compacts et centrés - Délégations explicites (« Demande à <target> », « Appel inter-agent ») + libellés FR (Terminé)
This commit is contained in:
@ -252,6 +252,17 @@ describe("CustomAgentChatView", () => {
|
||||
scrollback: [],
|
||||
})),
|
||||
sendAgentChat: vi.fn(async (_sessionId: string, _prompt: string, onChunk) => {
|
||||
onChunk({
|
||||
kind: "progress",
|
||||
progress: {
|
||||
source: "providerNative",
|
||||
kind: "turn",
|
||||
stage: "started",
|
||||
label: "turn.started",
|
||||
provider: "codex",
|
||||
nativeEvent: "turn.started",
|
||||
},
|
||||
});
|
||||
onChunk({
|
||||
kind: "progress",
|
||||
progress: {
|
||||
@ -285,6 +296,17 @@ describe("CustomAgentChatView", () => {
|
||||
toolName: "idea_ask_agent",
|
||||
},
|
||||
});
|
||||
onChunk({
|
||||
kind: "progress",
|
||||
progress: {
|
||||
source: "providerNative",
|
||||
kind: "turn",
|
||||
stage: "completed",
|
||||
label: "turn.completed",
|
||||
provider: "codex",
|
||||
nativeEvent: "turn.completed",
|
||||
},
|
||||
});
|
||||
onChunk({ kind: "final", content: "done" });
|
||||
}),
|
||||
cancelAgentChat: vi.fn(async () => {}),
|
||||
@ -326,13 +348,19 @@ describe("CustomAgentChatView", () => {
|
||||
fireEvent.click(screen.getByRole("button", { name: "Envoyer" }));
|
||||
|
||||
await screen.findByText("Progress");
|
||||
expect(screen.getAllByTestId("chat-turn-marker")).toHaveLength(2);
|
||||
expect(screen.getByText("turn.started")).toBeTruthy();
|
||||
expect(screen.getByText("turn.completed")).toBeTruthy();
|
||||
expect(screen.getByText("Progress").closest("[data-testid='chat-progress-status']")).toBeTruthy();
|
||||
expect(screen.getByText("Analyse")).toBeTruthy();
|
||||
expect(screen.getByText("Lecture du contexte disponible.")).toBeTruthy();
|
||||
expect(screen.getByText("MCP")).toBeTruthy();
|
||||
expect(screen.getByText("MCP").closest("[data-testid='chat-tool-progress']")).toBeTruthy();
|
||||
expect(screen.getByText("idea_ticket_read")).toBeTruthy();
|
||||
expect(screen.getByText("Délégation")).toBeTruthy();
|
||||
expect(screen.getByText("target=QA task=Valider le rendu progress")).toBeTruthy();
|
||||
await screen.findByText("done");
|
||||
expect(screen.getByText("Demande à QA")).toBeTruthy();
|
||||
expect(screen.getByText("Demande à QA").closest("[data-testid='chat-tool-progress']")).toBeTruthy();
|
||||
expect(screen.getByText("Valider le rendu progress")).toBeTruthy();
|
||||
expect((await screen.findAllByText("done")).length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
it("renders available pre-MCP progress before the first MCP card", async () => {
|
||||
@ -529,8 +557,9 @@ describe("CustomAgentChatView", () => {
|
||||
});
|
||||
|
||||
await screen.findByText("done");
|
||||
expect(screen.getAllByText("Délégation")).toHaveLength(2);
|
||||
expect(screen.getByText("target=QA task=validate")).toBeTruthy();
|
||||
expect(screen.getByText("Demande à QA")).toBeTruthy();
|
||||
expect(screen.getByText("validate")).toBeTruthy();
|
||||
expect(screen.getByText("Appel inter-agent")).toBeTruthy();
|
||||
expect(screen.getByText("reply delivered")).toBeTruthy();
|
||||
expect(screen.queryByText("Tool")).toBeNull();
|
||||
await waitFor(() =>
|
||||
|
||||
Reference in New Issue
Block a user