feat(webui): refine output timeline and model controls (#4108)

* feat(webui): refine output timeline and composer queue

* feat(webui): add provider model picker

* fix(webui): polish model settings and heartbeat checks

* chore: keep heartbeat changes out of webui pr

* refactor(webui): isolate settings routes

* fix(providers): align minimax anthropic test

* fix(providers): keep minimax anthropic base sdk-compatible

* fix(providers): normalize anthropic base urls
This commit is contained in:
Xubin Ren
2026-05-30 23:45:26 +08:00
committed by GitHub
parent b2e43955e3
commit 3dcf511c84
65 changed files with 4526 additions and 1428 deletions
@@ -736,7 +736,7 @@ describe("AgentActivityCluster", () => {
fireEvent.click(screen.getByRole("button", { name: /1 tool calls/i }));
expect(screen.getByText("Shell")).toBeInTheDocument();
expect(screen.getByText("Command")).toBeInTheDocument();
expect(screen.getByText(/cat << 'EOF' \| bash · script, 6 lines/)).toBeInTheDocument();
expect(screen.queryByText(/SECRET_TOKEN/)).not.toBeInTheDocument();
expect(screen.queryByText(/for id in/)).not.toBeInTheDocument();
@@ -936,4 +936,67 @@ describe("AgentActivityCluster", () => {
restoreMotion();
}
});
it("renders tool event embeds as inline activity evidence", () => {
render(
<AgentActivityCluster
messages={[{
id: "t-evidence",
role: "tool",
kind: "trace",
content: 'web_fetch({"url":"https://example.com"})',
traces: ['web_fetch({"url":"https://example.com"})'],
toolEvents: [{
phase: "end",
call_id: "call-fetch",
name: "web_fetch",
arguments: { url: "https://example.com" },
embeds: [{
url: "/api/media/signed/screenshot.png",
name: "Homepage screenshot",
type: "image/png",
}],
}],
createdAt: 1,
}]}
isTurnStreaming
hasBodyBelow={false}
/>,
);
expect(screen.getByText("Web")).toBeInTheDocument();
expect(screen.getByTestId("activity-evidence-preview")).toBeInTheDocument();
expect(screen.getByRole("img", { name: "Homepage screenshot" })).toHaveAttribute(
"src",
"/api/media/signed/screenshot.png",
);
});
it("shows missing evidence as a file-safe placeholder", () => {
render(
<AgentActivityCluster
messages={[{
id: "t-missing-evidence",
role: "tool",
kind: "trace",
content: 'screenshot({"path":"missing.png"})',
traces: ['screenshot({"path":"missing.png"})'],
toolEvents: [{
phase: "end",
call_id: "call-shot",
name: "screenshot",
arguments: { path: "missing.png" },
files: [{ name: "missing.png", type: "image/png" }],
}],
createdAt: 1,
}]}
isTurnStreaming
hasBodyBelow={false}
/>,
);
expect(screen.getByText("Vision")).toBeInTheDocument();
expect(screen.getByTestId("activity-evidence-preview")).toBeInTheDocument();
expect(screen.getByText("missing.png")).toBeInTheDocument();
});
});