Skip to content

Show tool-call failures and drill-down detail in Studio's tool-activity view #631

Description

@jtenniswood

Is your feature request related to a problem? Please describe.

When the agent uses tools to produce a response, Studio shows a one-line
"Activity: N tools" summary (toggled via Show Tools in the chat's ···
menu) that expands inline to a short per-call list. It's a good start, but
as a user I can't tell at a glance whether anything failed, and I can't
dig into a single call's full input/output — the inline expansion only
shows truncated previews, and there's no way to open a call's full detail.

Describe the solution you'd like

  1. Show failures in the summary, not just tool names.
    The collapsed line should read something like Activity: 3 tools · 1 failed whenever a call failed, and each row (once expanded) should
    carry a clear success/running/failed indicator per call.

  2. Let me drill into a call's full detail in the right-hand panel.
    Studio already has a right-hand panel used for the markdown canvas and
    file preview. Tool activity should open into that same panel — full,
    untruncated input/output per call, with the existing maximize/resize
    chrome — instead of only the inline truncated preview. The collapsed
    one-line summary in the message bubble stays as-is; only the detail view
    moves to the panel.

  3. Make the show/hide preference durable.
    Today toggling "Show Tools" only affects the chat currently open in
    memory — it doesn't survive a reload or switching to another chat. I'd
    like my preference to stick (either per-chat or globally, whichever is
    simpler) so I'm not re-toggling it constantly.

Describe alternatives you've considered

  • Leaving the detail truncated inline instead of using the side panel —
    rejected because it can't show full input/output for a call with a large
    payload, and it doesn't match how the app already treats "look at this
    thing more closely" (markdown canvas, file preview) elsewhere.
  • Making the toggle default to "on" instead of persisting the user's choice —
    doesn't solve the problem for users who want it off most of the time and
    on for one investigation.

Additional context

Most of the groundwork for this already exists in the still-open
#618 (Studio web UI):

  • ToolCallList already renders the summary + inline expand
    (studio/src/app/workspace/chat/_components/tool-call-list.tsx), toggled
    via a DropdownMenuItem in the chat's ··· menu
    (studio/src/app/workspace/chat/_components/chat-view.tsx:500-503), with
    toggle state kept in local useState(false)
    (chat-view.tsx:399) — which is why it doesn't currently survive a
    reload or session switch.
  • The per-call failure data already exists and is simply unused today:
    ToolCallInfo carries isError?: boolean and status: "running" | "completed" | "failed" (studio/src/features/agent/types.ts:86-92),
    populated from the daemon's tool_result stream event
    (studio/src/features/agent/hooks/use-agent-chat.ts:217-243).
  • A reusable right-hand panel already exists for exactly this "expand for
    detail" pattern — SidePanel
    (studio/src/app/workspace/chat/_components/side-panel.tsx) plus the
    ActivePanel discriminated union (artifact | attachment | thread,
    chat-view.tsx:55-58) used today for the markdown canvas and file
    preview. Adding a tool-activity arm to that union is the natural way to
    route a call's detail there.

Non-goal for this request: per-tool-call duration isn't tracked on the
backend for ordinary calls today (only the Subagent/Parallel delegation
families carry a DurationMs, engine/session/event.go:665,799). Showing
"took Xms" per call would need a new backend field and daemon event —
worth a separate issue if wanted, not required for the above.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    WebUIApplies to the WebUI interfaceenhancementNew feature or requestux

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions