diff --git a/desktop/src/features/agents/ui/AgentSessionTranscriptList.tsx b/desktop/src/features/agents/ui/AgentSessionTranscriptList.tsx
index d04decc4e..83735810c 100644
--- a/desktop/src/features/agents/ui/AgentSessionTranscriptList.tsx
+++ b/desktop/src/features/agents/ui/AgentSessionTranscriptList.tsx
@@ -1,15 +1,12 @@
import * as React from "react";
import {
AlertCircle,
- Bot,
Brain,
CheckCheck,
ChevronDown,
CircleDot,
- Loader2,
Radio,
TerminalSquare,
- Wrench,
} from "lucide-react";
import {
@@ -20,7 +17,6 @@ import { cn } from "@/shared/lib/cn";
import { normalizePubkey } from "@/shared/lib/pubkey";
import { Badge } from "@/shared/ui/badge";
import { Markdown } from "@/shared/ui/markdown";
-import { Shimmer } from "@/shared/ui/Shimmer";
import { Toggle } from "@/shared/ui/toggle";
import { UserAvatar } from "@/shared/ui/UserAvatar";
import type { PromptSection, TranscriptItem } from "./agentSessionTypes";
@@ -55,14 +51,12 @@ export function AgentSessionTranscriptList({
isWorking = false,
items,
profiles,
- showInterventionHint = false,
}: AgentTranscriptIdentityProps & {
compact?: boolean;
emptyDescription: string;
isWorking?: boolean;
items: TranscriptItem[];
profiles?: UserProfileLookup;
- showInterventionHint?: boolean;
}) {
const presentation = React.useMemo(
() => buildTranscriptPresentation(items, isWorking),
@@ -90,13 +84,6 @@ export function AgentSessionTranscriptList({
return (
-
;
- showInterventionHint: boolean;
-}) {
- const { counts, hasError, headline, lastUpdatedAt, state } = presentation;
- const showSummary = isWorking || hasError || itemsHaveActivity(counts);
-
- if (!showSummary) {
- return null;
- }
-
- const StateIcon = getStateIcon(state, isWorking);
- const statusLabel = getStateLabel(state, isWorking);
- const lastUpdated = lastUpdatedAt
- ? formatTranscriptTime(lastUpdatedAt)
- : null;
-
- return (
-
-
-
-
-
-
-
-
- Now
-
-
·
-
{agentName}
- {lastUpdated ? (
- <>
-
·
-
- {lastUpdated}
-
- >
- ) : null}
-
-
- {isWorking && state !== "idle" && state !== "error" ? (
- {headline}
- ) : (
- headline
- )}
-
-
-
- {statusLabel}
-
- {counts.tools > 0 ? (
-
0 ? "error" : "default"}
- />
- ) : null}
- {counts.thoughts > 0 ? (
-
- ) : null}
- {counts.messages > 0 ? (
-
- ) : null}
-
- {showInterventionHint && isWorking ? (
-
- Use Stop{" "}
- above to interrupt this turn without stopping the agent process.
-
- ) : null}
-
-
-
- );
-}
-
-function ActivityCountBadge({
- count,
- label,
- tone = "default",
-}: {
- count: number;
- label: string;
- tone?: "default" | "error";
-}) {
- return (
-
- {count} {label}
- {count === 1 ? "" : "s"}
-
- );
-}
-
-function itemsHaveActivity(
- counts: ReturnType
["counts"],
-) {
- return (
- counts.tools > 0 ||
- counts.thoughts > 0 ||
- counts.messages > 0 ||
- counts.lifecycle > 0
- );
-}
-
-function getStateIcon(
- state: ReturnType["state"],
- isWorking: boolean,
-) {
- if (state === "error") {
- return AlertCircle;
- }
- if (!isWorking) {
- return CircleDot;
- }
- switch (state) {
- case "tool_running":
- return Wrench;
- case "thinking":
- return Brain;
- case "responding":
- return Bot;
- default:
- return Loader2;
- }
-}
-
-function getStateLabel(
- state: ReturnType["state"],
- isWorking: boolean,
-) {
- if (state === "error") {
- return "Error";
- }
- if (!isWorking) {
- return "Idle";
- }
- switch (state) {
- case "tool_running":
- return "Running tool";
- case "thinking":
- return "Thinking";
- case "responding":
- return "Responding";
- default:
- return "Working";
- }
-}
-
function getDisplayBlockKey(block: TranscriptDisplayBlock) {
if (block.kind === "single") {
return block.item.id;
diff --git a/desktop/src/features/agents/ui/ManagedAgentSessionPanel.tsx b/desktop/src/features/agents/ui/ManagedAgentSessionPanel.tsx
index 001b5ca3f..feef26d3c 100644
--- a/desktop/src/features/agents/ui/ManagedAgentSessionPanel.tsx
+++ b/desktop/src/features/agents/ui/ManagedAgentSessionPanel.tsx
@@ -35,7 +35,6 @@ type ManagedAgentSessionPanelProps = {
isWorking?: boolean;
rawLayout?: "responsive" | "exclusive";
showHeader?: boolean;
- showInterventionHint?: boolean;
showRaw?: boolean;
profiles?: UserProfileLookup;
};
@@ -49,7 +48,6 @@ export function ManagedAgentSessionPanel({
isWorking = false,
rawLayout = "responsive",
showHeader = true,
- showInterventionHint = false,
showRaw = true,
profiles,
}: ManagedAgentSessionPanelProps) {
@@ -115,7 +113,6 @@ export function ManagedAgentSessionPanel({
isWorking={isWorking}
profiles={profiles}
rawLayout={rawLayout}
- showInterventionHint={showInterventionHint}
showRaw={showRaw}
transcript={scopedTranscript}
/>
@@ -171,7 +168,6 @@ function SessionBody({
isWorking,
profiles,
rawLayout,
- showInterventionHint,
showRaw,
transcript,
}: {
@@ -187,7 +183,6 @@ function SessionBody({
isWorking: boolean;
profiles?: UserProfileLookup;
rawLayout: "responsive" | "exclusive";
- showInterventionHint: boolean;
showRaw: boolean;
transcript: TranscriptItem[];
}) {
@@ -229,7 +224,6 @@ function SessionBody({
isWorking={isWorking}
items={transcript}
profiles={profiles}
- showInterventionHint={showInterventionHint}
/>
{showRaw && rawLayout === "responsive" ? (
diff --git a/desktop/src/features/channels/ui/AgentSessionThreadPanel.tsx b/desktop/src/features/channels/ui/AgentSessionThreadPanel.tsx
index 98837376c..cb34a2fe6 100644
--- a/desktop/src/features/channels/ui/AgentSessionThreadPanel.tsx
+++ b/desktop/src/features/channels/ui/AgentSessionThreadPanel.tsx
@@ -206,7 +206,6 @@ export function AgentSessionThreadPanel({
profiles={profiles}
rawLayout="exclusive"
showHeader={false}
- showInterventionHint={canInterruptTurn}
showRaw={showRawFeed}
/>
diff --git a/desktop/tests/e2e/channels.spec.ts b/desktop/tests/e2e/channels.spec.ts
index cb77d8a42..905756859 100644
--- a/desktop/tests/e2e/channels.spec.ts
+++ b/desktop/tests/e2e/channels.spec.ts
@@ -773,10 +773,7 @@ test("shows and clears activity indicators for active channel agents", async ({
await expect(page.getByTestId("agent-session-thread-panel")).toContainText(
"alice",
);
- await expect(page.getByTestId("agent-transcript-now-summary")).toBeVisible();
- await expect(page.getByTestId("agent-transcript-now-summary")).toContainText(
- "Working",
- );
+ await expect(page.getByTestId("agent-transcript-now-summary")).toHaveCount(0);
await expect(page.getByTestId("agent-session-stop-turn")).toBeVisible();
await expect(page.getByTestId("agent-session-stop-turn")).toBeDisabled();
await expect(page.getByTestId("agent-session-thread-panel")).toContainText(