Documentation Index
Fetch the complete documentation index at: https://veryfront.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
SSE streams provide live output. Durable events provide replay, resume, and recovery. WebSocket notifications tell Studio when related state changed.
Live transport
veryfront-agent returns text/event-stream for AG-UI execution. Project-agent runtimes also return text/event-stream from the control-plane stream route. Studio renders text, tool calls, tool results, reasoning, and terminal state from these SSE streams while the run is active.
Durable event log
The durable mirror converts stream chunks into persisted run events. The run SSE stream, snapshot endpoint, and event endpoint read the event log later.
Veryfront uses the AG-UI events specification for streamed agent output.
AG-UI event reference
The run stream recognizes these AG-UI event types. The public SSE profile forwards the events marked Yes.
| Event | Family | Public SSE | Purpose |
|---|
RUN_STARTED | Lifecycle | Yes | Run began |
RUN_FINISHED | Lifecycle | Yes | Run completed successfully |
RUN_ERROR | Lifecycle | Yes | Run failed or was cancelled |
TEXT_MESSAGE_START | Text | Yes | Assistant message began |
TEXT_MESSAGE_CONTENT | Text | Yes | Assistant text delta |
TEXT_MESSAGE_END | Text | Yes | Assistant message ended |
TOOL_CALL_START | Tool | Yes | Tool call began |
TOOL_CALL_ARGS | Tool | Yes | Tool argument delta |
TOOL_CALL_CHUNK | Tool | Yes | Tool-call chunk from compatible runtimes |
TOOL_CALL_END | Tool | Yes | Tool call arguments ended |
TOOL_CALL_RESULT | Tool | Yes | Tool result or tool error |
STATE_SNAPSHOT | State | Yes | Full runtime state snapshot |
STATE_DELTA | State | Yes | Incremental runtime state update |
MESSAGES_SNAPSHOT | State | Yes | Full message snapshot |
STEP_STARTED | Lifecycle | No | Internal step began |
STEP_FINISHED | Lifecycle | No | Internal step finished |
REASONING_START | Reasoning | No | Internal reasoning stream began |
REASONING_MESSAGE_START | Reasoning | Yes | Public reasoning message began |
REASONING_MESSAGE_CONTENT | Reasoning | Yes | Public reasoning message delta |
REASONING_MESSAGE_END | Reasoning | Yes | Public reasoning message ended |
REASONING_CONTENT | Reasoning | No | Internal reasoning delta |
REASONING_END | Reasoning | No | Internal reasoning stream ended |
ACTIVITY_SNAPSHOT | Activity | No | Full activity state snapshot |
ACTIVITY_DELTA | Activity | No | Incremental activity update |
CUSTOM | Custom | Yes | Named Veryfront extension event |
Custom event names
CUSTOM events use a constrained public name set.
| Name | Purpose |
|---|
message-metadata | Message metadata attached to streamed output |
source-url | URL citation or source reference |
source-document | Document citation or source reference |
file | File reference emitted by a run |
tool-call-status | Tool execution status update |
stream-heartbeat | Run stream heartbeat emitted during SSE follow |
WebSocket notification events
WebSocket notifications are lightweight invalidation events. They do not carry AG-UI token deltas.
| Event | Purpose |
|---|
message.created | Conversation message created |
message.updated | Conversation message changed |
message.status_changed | Message status changed |
message.deleted | Conversation message deleted |
agent_run.created | Conversation-owned agent run created |
agent_run.updated | Conversation-owned agent run changed |
participant.joined | Participant joined a conversation |
participant.left | Participant left a conversation |
conversation.updated | Conversation metadata changed |
typing.start | Participant started typing |
typing.stop | Participant stopped typing |
SSE run stream
The durable run stream is GET /conversations/{conversation_id}/runs/{run_id}/stream. It returns text/event-stream, starts from the persisted event log, accepts Last-Event-ID, emits heartbeats, and closes after a terminal run event.
WebSocket notifications
WebSocket notifications are not the token stream. Studio uses the project event WebSocket to invalidate child-run and message queries when events such as agent_run.created, agent_run.updated, message.created, or message.status_changed arrive.
The API exposes project event WebSocket subscriptions at /ws/{project_id}/events. Studio reaches that channel through its /api/ws/{project_id}/events?appId=studio proxy path. The API also has a direct conversation subscription path, /ws/conversations/{conversation_id}/events, for clients that subscribe to one conversation.