Knowledge Pack Files
SideButton Marketing Website Knowledge Pack Files
Browse the source files that power the SideButton Marketing Website MCP server knowledge pack.
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