/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
| Surface | Component / File | Behavior |
|---|---|---|
| Bot grid | pages/BotList.tsx | Fetches GET /api/v1/bots on mount |
| Search box | ui/TextInput | Client-side filter on bot name (case-insensitive) |
| Create button | pages/BotList.tsx | Navigates to /dashboard/bots/create |
| Loading state | ui/Skeleton (card) | Six placeholder cards while loading |
| Empty state | ui/EmptyState | ”No bots yet” with a create action, or “No bots match your search” |
| Bot card | components/BotCard.tsx | One card per bot |
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
onClonehandler is passed; disabled while that card is cloning. - Stack chips — one chip each for the STT, LLM, and TTS provider, when present.
/dashboard/bots/:botId. The copy and clone buttons call stopPropagation() so they do not trigger navigation.
Clone Flow
Clone lives on the list page inhandleClone:
- Confirms via a browser
confirm()dialog. - Sets the cloning bot’s ID so its card button disables.
POST /api/v1/bots/:botId/clone.- 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’sis_active flag, which is edited through the bot’s configuration (detail/edit), not from the grid.
Related Docs
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.