/dashboard/bots lists every bot as a card grid. The page is src/pages/BotList.tsx; each card is src/components/BotCard.tsx.

What the Page Does

SurfaceComponent / FileBehavior
Bot gridpages/BotList.tsxFetches GET /api/v1/bots on mount
Search boxui/TextInputClient-side filter on bot name (case-insensitive)
Create buttonpages/BotList.tsxNavigates to /dashboard/bots/create
Loading stateui/Skeleton (card)Six placeholder cards while loading
Empty stateui/EmptyState”No bots yet” with a create action, or “No bots match your search”
Bot cardcomponents/BotCard.tsxOne card per bot
The list request returns a BotSummary[] with bot_id, name, is_active, and the stt/llm/tts provider sub-objects used for the stack chips.

The Bot Card

BotCard (components/BotCard.tsx) renders:
  • Name and status dot — active when is_active !== false, shown as a green “Active” / muted “Inactive” label.
  • Short bot ID — first 8 chars of bot_id, with a copy button that writes the full ID to the clipboard (brief “Copied” state).
  • Clone button — appears when an onClone handler is passed; disabled while that card is cloning.
  • Stack chips — one chip each for the STT, LLM, and TTS provider, when present.
Clicking anywhere on the card (outside the action buttons) navigates to /dashboard/bots/:botId. The copy and clone buttons call stopPropagation() so they do not trigger navigation.

Clone Flow

Clone lives on the list page in handleClone:
  1. Confirms via a browser confirm() dialog.
  2. Sets the cloning bot’s ID so its card button disables.
  3. POST /api/v1/bots/:botId/clone.
  4. On success, toasts “Bot cloned” and navigates to the new bot’s detail page using the returned bot_id.
Clone is also available from the bot detail header. There the confirm dialog warns that calls, campaigns, and DID mappings are not copied.

Status Semantics

There is no explicit activate/deactivate control on the list. The status dot is derived purely from the bot’s is_active flag, which is edited through the bot’s configuration (detail/edit), not from the grid.

Create Bot Wizard

The step model behind Create Bot.

Bot Detail & Integration

View/edit, test calls, and the Integration tab.

Design System

EmptyState, Skeleton, and TextInput primitives.