SideButton Marketing Website Knowledge Module
Portal — Queue — SideButton Marketing Website Knowledge Module
Dispatch Queue page -- a work queue for scheduling workflow jobs to be dispatched to agents. Items can be added manually via the "+ Add Item" form, by pasting batch Jira tickets in Chat, or automatic…
sidebutton install sidebutton.com What This Is
Dispatch Queue page -- a work queue for scheduling workflow jobs to be dispatched to agents. Items can be added manually via the "+ Add Item" form, by pasting batch Jira tickets in Chat, or automatically via Automations. Each queue item specifies a workflow, optional agent assignment, ticket URL/key, effort level, and optional hint. Items progress through states: Waiting (10s delay) -> Queued -> Dispatching -> Dispatched -> Completed, or Failed/Cancelled. The page has filter tabs, search, workflow/agent filter dropdowns, and an inline "Add to Queue" form panel.
URL Patterns
| Pattern | Description |
|---|---|
/portal/queue | Dispatch queue (all items) |
/portal/queue?status=waiting | Filtered to waiting items |
/portal/queue?status=queued | Filtered to queued items |
/portal/queue?status=dispatched | Filtered to dispatched items |
/portal/queue?status=failed | Filtered to failed items |
/portal/queue?status=cancelled | Filtered to cancelled items |
/portal/queue?agent={id} | Filtered to items for a specific agent |
/portal/queue?automation_id={id} | Filtered to items from a specific automation |
Page Structure
+--[Sidebar]--+--[Main Content]------------------------------------------+
| Chat | H1: "Dispatch Queue" [+ Add Item] [Cancel All]* |
| Agents | "N items" |
| Jobs | |
| Queue * | [Add to Queue form panel] (toggleable) |
| Automations| Ticket URL or Key [textbox] |
| Workflows | Hint (optional) [textarea] |
| Settings | Workflow [dropdown] |
| | Agent (optional) [dropdown] Effort [dropdown] |
| | "Item will wait 10s..." [Add to Queue] button |
| | |
| | [Filter: All | Waiting N | Queued N | Dispatched | Failed | Cancelled] |
| | [Search tickets...] [Workflow ▾] |
| | * Cancel All only visible when items exist |
| | |
| | ITEM AGENT STATUS |
| | [Queue items list with infinite scroll] |
| | OR "Queue is empty" / "No {status} items" empty state |
+-------------+-----------------------------------------------------------+
Key Elements
Header
| Element | Selector / Ref | Notes |
|---|---|---|
| Page heading | heading "Dispatch Queue" | H1 |
| Item count | Below heading | "N items" format |
| Add Item button | button "+ Add Item" | Blue outlined button, top-right, toggles form panel |
| Cancel All button | button "Cancel All" | Red text button, next to Add Item, cancels all queued/waiting items. Hidden when queue is empty — only renders when items exist |
Add to Queue Form (toggleable panel)
| Element | Selector / Ref | Notes |
|---|---|---|
| Add to Queue heading | heading "Add to Queue" | Form panel header |
| Close form button | Unnamed button (X icon) | Closes the form panel |
| Ticket URL input | textbox with placeholder "SCRUM-42 or https://...atlassian.net/browse/SCRUM-42" | Accepts Jira key or full URL |
| Hint textarea | textbox labeled "Hint (optional)" | Placeholder: "Extra instructions for the agent, e.g. focus on login module, skip tests..." |
| Workflow dropdown | combobox labeled "Workflow" | Default "— Select Workflow —", native <select>. Options show workflow description as display text (not short name) |
| Agent dropdown | combobox labeled "Agent (optional)" | Default "Auto-assign", native <select>. Shows agent status and roles |
| Effort dropdown | combobox labeled "Effort" | Native <select>. Defaults to account's Default Effort Level from Settings > General (e.g. "Medium (Sonnet)" or "High (Opus)") |
| Entry Path dropdown | combobox labeled "Entry Path" | Native <select>, conditionally hidden — only shown when workflow defines entry paths. Hidden by default with 0 options |
| 10s delay note | Below form | "Item will wait 10s before entering the dispatch queue" |
| Add to Queue submit | button "Add to Queue" | Cyan/blue button, submits form |
Filter & Search Bar
| Element | Selector / Ref | Notes |
|---|---|---|
| Filter: All | link "All" | Green pill (bg-emerald-500/20 text-emerald-400) when active |
| Filter: Waiting | link "Waiting" | Shows count in parentheses when items exist |
| Filter: Queued | link "Queued (N)" | Shows count of queued items in parentheses |
| Filter: Dispatched | link "Dispatched" | |
| Filter: Failed | link "Failed" | |
| Filter: Cancelled | link "Cancelled" | |
| Search tickets | textbox "Search tickets…" | Filters items by ticket reference |
| Workflow filter | combobox labeled "Workflow" (in list header) | "All workflows" default, native <select>. Shows all workflow types with descriptions as display text |
Queue Item Row
| Element | Selector / Ref | Notes |
|---|---|---|
| Ticket URL link | Clickable link text | Full Jira URL shown as clickable link (e.g. "https://aictpo.atlassian.net/browse/SCRUM-329") |
| Queue item ID | Grey text | e.g. "#1944" |
| Role badge | Colored pill | SE (blue), QA (purple), SD (slate), PM (slate), OPS (slate) |
| Workflow name | Text after role badge | e.g. "SE-Rca-Fix", "QA-Validate" |
| Effort badge | Colored pill | MAX (red), HIGH (orange), MEDIUM (slate) |
| Job link | Link text | "Job #N" — links to /portal/jobs/{id} when dispatched |
| Agent avatar | img | Green circle with agent avatar |
| Agent name link | link "agent-name" | Agent hostname, links to /portal/agents |
| Status badge | Colored text | Completed (emerald), Queued (sky), Dispatched (emerald), Cancelled (slate), Failed (red), Waiting (amber) |
| Pulsing dot | Animated circle | Shown on Waiting and Queued items |
| Relative time | Right side | "Nm ago", "Nh ago" |
| Cancel button | button "Cancel" | On waiting/queued items |
| Dispatch Now button | button "Dispatch Now" | On queued items, bypasses wait period |
| Retry button | button "Retry" | On failed items, retries same dispatch |
| Resend button | button "Resend" | On failed/cancelled/dispatched items, re-queues |
Queue Item Row Visual Structure
[pulsing dot] [ticket URL link]
#ID
[ROLE badge] Workflow-Name [EFFORT badge] Job #link
[agent avatar + name] [status badge] [time ago] [action btns]
Empty State
| Element | Notes |
|---|---|
| Empty state icon | Refresh/queue icon, grey |
| Empty state text | Context-sensitive: "Queue is empty" on All tab; "No {status} items" on filtered tabs (e.g. "No dispatched items", "No failed items") |
| Empty state hint | 'Click "+ Add Item" or paste batch Jira tickets in Chat' |
Data Model
Queue Item
| Field | Type | Description |
|---|---|---|
| id | number | Queue item ID |
| account_id | number | Account that owns this item |
| user_id | number | User who created this item |
| role | string | Workflow role: "se" / "qa" / "sd" / "pm" |
| workflow_id | string | Selected workflow identifier (e.g. "se-work", "qa-validate") |
| agent_id | number (nullable) | Assigned agent ID or null (auto-assign) |
| preferred_agent_id | number (nullable) | Preferred agent for dispatch |
| ticket_url | string | Jira ticket URL or key |
| ticket_key | string | Extracted Jira key (e.g. "SCRUM-329") |
| effort_level | string | "max" / "high" / "medium" |
| priority | number | Dispatch priority ordering |
| hint | string (nullable) | Optional extra instructions for the agent |
| entry_path | string (nullable) | Agent entry path override |
| status | string | "waiting" / "queued" / "dispatching" / "dispatched" / "completed" / "failed" / "cancelled" |
| error | string (nullable) | Error message on failed items |
| job_id | number (nullable) | Linked job ID once dispatched |
| eligible_at | string (datetime, nullable) | Hold-until timestamp for waiting items (countdown timer) |
| source | string | Origin: "portal" / "mcp" / "slack" / "chat" / "api" / "automation" |
| automation_id | number (nullable) | ID of automation that triggered this item (if source=automation) |
| created_at | string (datetime) | When item was added |
| dispatched_at | string (datetime, nullable) | When item was dispatched |
Workflow Options (Add Item form dropdown)
The Queue dropdown shows all available workflows. Display text is the workflow description (not a short name). The same options appear in both the form dropdown and the list filter dropdown.
| Display Text (description) | Value | Role |
|---|---|---|
| Drive a ticket to completion — plan, dispatch SE/QA, track PRs, merge, validate, close. Idempotent. | pm-drive | PM |
| Full sprint lifecycle — plan, manage, close. Phase-detecting and idempotent. | pm-sprint | PM |
| Git pull on all repos and reinstall skill packs | pull-repos | OPS |
| Re-review PR after developer addresses prior QA feedback — does NOT test live site | qa-followup | QA |
| Test the live site against ticket scope — no PR, tests production directly | qa-new-ticket | QA |
| Regression test affected modules on the live/deployed site after merge | qa-regression | QA |
| Review PR code against ticket acceptance criteria — does NOT test live site | qa-validate | QA |
| Find the lowest-coverage module, explore it in the browser, improve its skill files | sd-coverage | SD |
| Read review feedback, apply changes to existing PR, push updates | se-followup | SE |
| Investigate bug, trace root cause, report findings without fixing | se-rca | SE |
| Investigate bug, trace root cause, implement fix, create PR | se-rca-fix | SE |
| Read ticket, understand context, implement fix, create PR, report back | se-work | SE |
Agent Options (Add Item form dropdown)
| Display Name | Value | Notes |
|---|---|---|
| Auto-assign | "" (empty) | Default, system picks best available agent |
| {display_name} ({name}) ({status} — {roles}) | Agent ID number | e.g. "dev-agent-1 (online — se, qa, sd, pm)" value="6864" |
Effort Levels
| Value | Display | Model |
|---|---|---|
| max | Max (Opus) | Claude Opus |
| high | High (Opus) | Claude Opus |
| medium | Medium (Sonnet) | Claude Sonnet |
States & Variations
| State | Trigger | Visual Indicator | Actions Available |
|---|---|---|---|
| Empty queue (All) | No items, All tab | "Queue is empty" message with icon | — |
| Empty queue (filtered) | No items matching filter | "No {status} items" message with icon (e.g. "No dispatched items") | — |
| Cancel All hidden | No items in queue | Cancel All button not rendered | — |
| Form hidden | Default / click X | Only filter tabs and queue list visible | — |
| Form visible | Click "+ Add Item" | Form panel appears above filter tabs | — |
| Item waiting | Just added (10s hold via eligible_at) | "Waiting" amber badge, pulsing dot, countdown timer | Cancel |
| Item queued | Past eligible_at or no hold | "Queued" sky-blue badge, pulsing dot | Cancel, Dispatch Now |
| Item dispatching | Being sent to agent | "Dispatching" badge | — |
| Item dispatched | Agent picked it up | "Dispatched" emerald badge, green dot, linked to Job | Resend |
| Item completed | Job finished | "Completed" emerald badge | — |
| Item failed | Dispatch error | "Failed" red badge, red dot, inline error message | Retry, Resend |
| Item cancelled | User cancelled | "Cancelled" slate badge | Resend |
| Filtered view | Click filter tab or use dropdown | Item count updates, URL gains ?status= param | — |
| Search active | Type in search box | List filtered by ticket reference | — |
| Agent-filtered | ?agent={id} URL param | Only items for that agent shown | — |
| Automation-filtered | ?automation_id={id} URL param | Only items from that automation shown | — |
Visual Badge Colors
| Badge Type | Value | Color |
|---|---|---|
| Role: QA | qa | Purple (bg-purple-400/10 text-purple-400) |
| Role: SE | se | Blue (bg-blue-400/10 text-blue-400) |
| Role: SD | sd | Slate (bg-slate-400/10 text-slate-400) |
| Role: PM | pm | Slate (bg-slate-400/10 text-slate-400) |
| Role: OPS | ops | Slate (bg-slate-400/10 text-slate-400) |
| Effort: Max | max | Red (bg-red-400/10 text-red-400) |
| Effort: High | high | Orange (bg-orange-400/10 text-orange-400) |
| Effort: Medium | medium | Slate (bg-slate-400/10 text-slate-400) |
| Status: Completed | — | Emerald (bg-emerald-400/10 text-emerald-400) |
| Status: Queued | — | Sky (bg-sky-400/10 text-sky-400) |
| Status: Dispatched | — | Emerald (bg-emerald-400/10 text-emerald-400) |
| Status: Failed | — | Red |
| Status: Waiting | — | Amber |
| Status: Cancelled | — | Slate (bg-slate-500/10 text-slate-400) |
Common Tasks
1. Add item to queue
- Click "+ Add Item" button to open form panel
- Enter Ticket URL or Key (e.g. "SCRUM-42" or full Jira URL)
- Optionally add Hint text
- Select Workflow from dropdown (required — default is "— Select Workflow —")
- Optionally select Agent (defaults to Auto-assign)
- Select Effort level (defaults to account's Default Effort Level from Settings > General)
- Click "Add to Queue" (cyan button)
- Item appears in list with "Waiting" status, transitions to "Queued" after 10s
2. Filter queue items by status
- Click filter tab (All / Waiting / Queued / Dispatched / Failed / Cancelled)
- Active tab shows green/blue pill, URL updates with
?status=param
3. Search queue items
- Type ticket reference in "Search tickets..." textbox
- List filters to matching items
4. Filter by workflow
- Use Workflow dropdown in list header (shows workflow descriptions as display text)
- Combines with status filter tabs
5. Cancel a queued item
- Find item with "Queued" or "Waiting" status
- Click "Cancel" button on the item row
6. Force-dispatch a queued item
- Find item with "Queued" status
- Click "Dispatch Now" button to skip waiting and dispatch immediately
7. Retry a failed item
- Find item with "Failed" status
- Click "Retry" to retry the same dispatch, or "Resend" to re-queue as new
8. Resend a dispatched/cancelled item
- Find item with "Dispatched" or "Cancelled" status
- Click "Resend" to re-queue the item
9. Cancel all items
- Click "Cancel All" (red text button in header)
- All queued/waiting items are cancelled
10. Batch dispatch via Chat
- Go to Chat page
- Paste Jira ticket URLs/keys
- Items are automatically queued
Tips
- Items have a 10-second waiting period (via
eligible_attimestamp) before entering the dispatch queue - Auto-assign lets the system pick the best available agent
- Effort level maps to LLM model: Max/High use Opus, Medium uses Sonnet
- Default effort follows the account's Default Effort Level from Settings > General (not hardcoded)
- Batch Jira tickets can be pasted in Chat as an alternative to manual queue addition
- The Ticket URL field accepts both Jira keys (e.g. "SCRUM-42") and full URLs
- Queue items track their
source(portal, mcp, slack, chat, api, automation) for tracing - Items triggered by automations have an
automation_idlinking back to the automation - Ticket references appear as clickable full URLs in item rows (not just keys)
- Search and Workflow filter can be combined with status filter tabs
- Queue supports
?agent={id}and?automation_id={id}URL params for pre-filtering - List uses infinite scroll — scroll to bottom to load more items
Gotchas
- 10s delay: New items start in "Waiting" status for 10 seconds (via
eligible_at) before becoming "Queued" - Workflow dropdown values: The combobox values use short slugs (e.g.
se-work,qa-validate,pm-drive) but display full workflow descriptions as text - All workflow types available: The queue form now shows all workflows (SE, QA, PM, SD, OPS) — not limited to SE/QA
- Cancel All conditionally hidden: The "Cancel All" button is NOT rendered when the queue is empty — only appears when items exist
- Agent filter removed: The list header only has a Workflow filter dropdown — no Agent filter dropdown (unlike previously documented)
- Entry Path conditionally hidden: A hidden "Entry Path"
<select>exists in the form but only becomes visible when the selected workflow defines entry paths - Agent display in dropdown: Agents show display_name, hostname, status, and roles: e.g. "dev-agent-1 (online — se, qa, sd, pm)"
- Agent value is numeric ID: The agent dropdown value is a numeric ID, not the agent name
- Hint optional: The Hint field label says "(optional)"
- No edit: Once added, queue items cannot be edited — only cancelled or resent
- Effort default follows account setting: The Effort dropdown defaults to the account's Default Effort Level from Settings > General — not hardcoded to a specific value
- Two Workflow dropdowns: The form has a Workflow dropdown for adding items; the list header has a separate Workflow dropdown for filtering — both show description text and same workflow options
- All dropdowns are native
<select>: Useselect_optiontool, not click-based interaction - Retry vs Resend on failed items: Retry attempts the same dispatch again; Resend creates a new queue entry
- Error messages inline: Failed items show the error message text inline in the row
- Cancel All is destructive: Cancels all queued/waiting items at once — no confirmation dialog
- Dispatching status: There is a transient "dispatching" status between "queued" and "dispatched" — items in this state are being sent to the agent
- Source tracking: Queue items track their origin (portal/mcp/slack/chat/api/automation) — useful for debugging dispatch chains