dashboard: adopt ToolUIPart state enum on SSE wire (input-streaming → output-{available,error,denied}) #959
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Blocks
Depends on
Reference
charles/claude-hooks#959
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
User story
As a frontend engineer, I want every tool-related SSE event to carry a canonical
statefield matching the Vercel AI SDKToolUIPartenum, so the dashboard can render every tool call through one state-driven<ToolCard>component without provider/SDK conditioning.Context
The Vercel AI SDK has consolidated tool-rendering vocabulary:
input-streaming → input-available → approval-requested → output-available | output-error | output-denied. AI Elements + assistant-ui + AG-UI/A2UI all use this enum. Without it on our wire, every widget downstream conditions on heuristics ("did we see atool_call_started? atool_call_completed? doesresulthave an error?"). Setting the enum on the server side is the cheapest possible foundation for the whole widget roadmap.Acceptance criteria
ToolCallStateto@claude-hooks/shared:"input-streaming" | "input-available" | "approval-requested" | "output-available" | "output-error" | "output-denied".stateon every tool-related event:tool_call_started(input-streamingwhile args still arriving,input-availableonce full),tool_call_progress(input-streaming),tool_call_completed(output-availableoroutput-error).output-deniedrather thanoutput-error.approval-requested(placeholder until that issue lands; document the contract now so frontends can be written once).docs/api.mdSSE section.Out of scope
<ToolCard>widget itself (separate ticket).Dependencies
staterides alongsidekind.References
Toolstate enum: https://elements.ai-sdk.dev/components/tool🤖 Auto-assigned to dev (heuristic: area:dashboard + body 2024 bytes (≤ 2 KB) — code role). Reply
/unassignto reroute.