Workspace Modes

Chat

The conversational surface — talk to any agent, with file attachments, model selection, and real-time streaming.

Chat is where you talk to agents. The mode has two views: a new conversation page and a conversation page, both rendered on the canvas.

New conversation — "Cards & Context"

A two-column layout (VariationC_Cards.jsx):

  • Left — a wired chat input:
    • Model selector populated from the org's active provider keys
    • Agent selector lets you pick any Assistant or Agent
    • Paperclip / drag-drop / clipboard paste for file attachments
    • Enter to submit — creates a conversation row in Supabase and navigates to its conversation page
    • Real recent conversations from the conversations store below the input
  • Right — capability cards (Web Search, Code, Create, Analyze, Research, Brainstorm) that pre-fill the input

On submit, the card animates: header / recents / capability cards fade out while the input card scales up, then the URL changes to /:orgSlug/:wsSlug/home/:conversationId.

Conversation page

A floating card layout (ConvoA_Card.jsx):

  • Top — expand/minimize button, agent and model selectors.
  • Body — message thread with:
    • MarkdownRenderer for full Markdown + GFM (tables, code, lists, blockquotes, strikethrough, links)
    • ToolCallsDisplay — collapsible blocks per tool call, with name, args, and result
    • AttachmentDisplay — image grid with lightbox; file download cards
  • Input bar at the bottom — same selectors, paperclip, send.
  • History card floats on the left (HistoryCard.jsx) with search and inline delete; clicking a conversation loads it.

Streaming

Messages stream via SSE from the chat-proxy Edge Function:

  • Typing cursor while content streams.
  • "Thinking..." spinner during tool-call rounds.
  • Error banner with dismiss on any failure.

Provider routing

The model selector lists every provider you have an active key for:

  • OpenAI, Anthropic, Google, Mistral, Groq, Together, DeepSeek

The proxy fetches the right key from Vault server-side and routes the request — your browser never sees the plaintext.

Where to go next

On this page