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:
@@ -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();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user