feat(web): show last agent text outside collapsed group during active turn
Intermediate narration was hidden inside the collapsed tool group while the agent was still working. The last AgentText/AgentThought now stays visible as current status, absorbed only when the turn ends or newer text replaces it. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
3c10a3a08a
commit
10c9db6d87
@@ -446,6 +446,40 @@ describe("structured connection: data flow", () => {
|
||||
conn.dispose();
|
||||
});
|
||||
|
||||
it("keeps last intermediate text outside group while turn is active", () => {
|
||||
const ws = new FakeSocket();
|
||||
const conn = mount({ sockets: [ws] });
|
||||
ws.open();
|
||||
const respondingState: ReducedState = {
|
||||
turn: { responding: true, thinking: false, active_tool_calls: [] },
|
||||
};
|
||||
ws.emit({
|
||||
type: "transcript_snapshot",
|
||||
snapshot: {
|
||||
cursor: 6,
|
||||
rows: [
|
||||
row("user:1", "user", { content: { type: "text", text: "do it" } }),
|
||||
toolRow("tool:1", "one"),
|
||||
row("agent:1", "agent_text", { content: { type: "text", text: "Now fixing" } }),
|
||||
toolRow("tool:2", "two"),
|
||||
row("agent:2", "agent_text", { content: { type: "text", text: "Found more" } }),
|
||||
toolRow("tool:3", "three"),
|
||||
],
|
||||
},
|
||||
});
|
||||
ws.emit({ type: "reduced_state", state: respondingState });
|
||||
// While the turn is active, the last intermediate text (agent:2) stays
|
||||
// outside the collapsed group so it's visible as current narration.
|
||||
expect(conn.el.querySelector('[data-row-id="agent:2"]')?.closest(".st-tool-group")).toBeNull();
|
||||
// Earlier intermediate text (agent:1) is still inside the group.
|
||||
expect(conn.el.querySelector('[data-row-id="agent:1"]')?.closest(".st-tool-group")).not.toBeNull();
|
||||
// When the turn ends, all intermediate text is absorbed.
|
||||
ws.emit({ type: "reduced_state", state: idleState });
|
||||
expect(conn.el.querySelector('[data-row-id="agent:2"]')?.closest(".st-tool-group")).not.toBeNull();
|
||||
expect(conn.el.querySelector('[data-row-id="agent:1"]')?.closest(".st-tool-group")).not.toBeNull();
|
||||
conn.dispose();
|
||||
});
|
||||
|
||||
it("keeps an expanded running tool open without emitting a click when patched", () => {
|
||||
const ws = new FakeSocket();
|
||||
const conn = mount({ sockets: [ws] });
|
||||
|
||||
Reference in New Issue
Block a user