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
Job execution history page -- lists all workflow jobs that have been dispatched to agents. Shows a filterable, searchable list of jobs with status badges, workflow names, ticket references, agent assignments, step counts, durations, and relative timestamps. Each job links to a detail page showing input parameters, step execution timeline with task progress, expandable step logs, and output/error cards. Jobs are created when workflows are dispatched to agents (via Run Workflow, Run Job, Queue dispatch, or Automation trigger). Supports cancel (running/waiting) and resend (failed/cancelled) actions.
URL Patterns
| Pattern | Description |
|---|---|
/portal/jobs | Job list (all) |
/portal/jobs?status=running | Filtered to running jobs |
/portal/jobs?status=waiting | Filtered to waiting jobs |
/portal/jobs?status=completed | Filtered to completed jobs |
/portal/jobs?status=failed | Filtered to failed jobs |
/portal/jobs?status=cancelled | Filtered to cancelled jobs |
/portal/jobs/{id} | Job detail view |
/portal/jobs/{id}?from_status={status} | Job detail with back-link context to filtered list |
Page Structure
Job List (/portal/jobs)
+--[Sidebar]--+--[Main Content]------------------------------------------+
| Chat | H1: "Jobs" |
| Agents | "1845 jobs" |
| Jobs * | |
| Queue | [Filter Tabs: All | Running N | Waiting | Completed | Failed | Cancelled] |
| Automations| |
| Workflows | [Search: "Search tickets..."] Workflow [▼] Agent [▼] |
| Settings | |
| | ITEM AGENT STATUS |
| | [dot] Workflow Name TICKET #ID |
| | [EFFORT] N step Nm Ns |
| | [avatar] agent-name |
| | [Status Badge] time ago |
| | [Cancel/Resend] |
| | ... |
| | Loading more... |
+-------------+-----------------------------------------------------------+
Job Detail (/portal/jobs/{id})
+--[Sidebar]--+--[Main Content]------------------------------------------+
| | < Back to jobs |
| Jobs * | |
| | H1: workflow-slug — ticket/source [Status Badge] |
| | [Cancel/Resend] |
| | Job #N [avatar] agent [EFFORT] Nm Ns |
| | Created date |
| | pipeline-id (green monospace) |
| | |
| | [INPUT card] |
| | trigger_ticket_url: https://... (automation jobs) |
| | trigger_project: MVP (automation jobs) |
| | trigger_assignee: account-id (automation jobs) |
| | trigger_status: To Do (automation jobs) |
| | trigger_issue_key: MVP-123 (automation jobs) |
| | trigger_issue_type: Bug (automation jobs) |
| | ticket_url: https://... |
| | hint: optional instructions |
| | |
| | [ERROR card] (failed jobs only) |
| | Step N (step-name) failed: error message |
| | |
| | [Temporal Timeline] OR [Temporal unreachable] |
| | Job: STATUS | N events | size KB | short_id |
| | Init Nms N activities |
| | Agent Setup Nms N activities |
| | Execution Nm Ns |
| | runAndMonitor Nm Ns |
| | workflow: agent_workflow agent: agent-name |
| | Teardown Nms N activities |
| | |
| | [OUTPUT card] (completed jobs only) |
| | "Workflow X completed on agent-name" |
+-------------+-----------------------------------------------------------+
Key Elements
Job List
| Element | Selector / Ref | Notes |
|---|---|---|
| Page heading | heading "Jobs" | H1 |
| Job count | Below heading | "N jobs" summary |
| Filter: All | link "All" | Green pill (bg-emerald-500/20 text-emerald-400) when active |
| Filter: Running | link "Running" | Shows count badge (e.g. "Running 3") when jobs are running |
| Filter: Waiting | link "Waiting" | |
| Filter: Completed | link "Completed" | |
| Filter: Failed | link "Failed" | Blue pill when active as selected filter |
| Filter: Cancelled | link "Cancelled" | 6th status filter tab |
| Search textbox | textbox "Search tickets…" | Searches by ticket reference (e.g. "SCRUM-329") |
| Workflow filter | combobox / label "Workflow" / #workflow-filter-select | Native <select>, default "All workflows". Options populate dynamically from job data |
| Agent filter | combobox / label "Agent" | Native <select>, default "All agents" |
| Column header: ITEM | Above job rows | Left column |
| Column header: AGENT | Above job rows | Middle column |
| Column header: STATUS | Above job rows | Right column |
| Job row | link (each job) | Clickable, navigates to /portal/jobs/{id} |
| Status dot (green) | Left of workflow name | Completed |
| Status dot (red) | Left of workflow name | Failed |
| Status dot (blue, pulsing) | Left of workflow name | Running |
| Status dot (grey) | Left of workflow name | Cancelled / Waiting |
| Workflow name | Bold text in row | Title case display name (e.g. "SE Rca Fix", "QA Validate", "Pull Repos") |
| Ticket reference | Orange/cyan text after name | e.g. "SCRUM-329" — only present when job has a linked ticket |
| Job ID | Grey text | e.g. "#3121" |
| Agent avatar | img inside agent link | Small green circle with agent avatar image |
| Agent name link | link "agent-name" | Links to /portal/agents, shows agent hostname |
| Effort badge | [MAX] / [HIGH] / [MEDIUM] | Green pill badge showing effort level |
| Step count | Grey text | "N step" (singular) |
| Duration | Grey text | "Nm Ns" format (e.g. "6m 31s", "5m 46s") or "Ns" for short durations |
| Completed badge | Status area | Green dot + "Completed" |
| Failed badge | Status area | Red dot + "Failed" |
| Running badge | Status area | Blue dot + "Running" |
| Cancelled badge | Status area | Grey dot + "Cancelled" |
| Waiting badge | Status area | Amber dot + "Waiting" |
| Relative time | Right side | "Nm ago", "Nh ago", "Nd ago" |
| Cancel button | button "Cancel" | On running/waiting jobs — cancels the job |
| Resend button | button "Resend" | On failed and cancelled jobs — re-dispatches the job |
| Resended button | button "Resended" | Shown after a job has already been resent — disabled/grey state |
| Loading more | Bottom of list | "Loading more..." text, infinite scroll trigger (50 items/page) |
Job Detail
| Element | Selector / Ref | Notes |
|---|---|---|
| Back link | link "Back to jobs" | Chevron left + text, returns to job list |
| Workflow heading | H1 text | Format: "workflow-slug — ticket-key" or "workflow-slug — queued" |
| Status badge | Next to heading | "Completed" / "Failed" / "Running" / "Cancelled" with colored dot |
| Cancel button | button "Cancel" | On running/waiting jobs only, top-right, blue outline |
| Resend button | button "Resend" | On failed/cancelled jobs, top-right, blue outline. Changes to "Resended" after use |
| Job number | Below heading | "Job #N" |
| Agent avatar link | link > img "agent-name" | Green circle avatar, links to /portal/agents |
| Agent name | Below heading | Agent hostname next to avatar |
| Effort badge | Below heading | "MAX" / "HIGH" / "MEDIUM" green pill |
| Duration | Below heading | "Nm Ns" format (ticks live on running jobs) |
| Created date | Below heading | Full date string, e.g. "Created 4/2/2026, 9:33:59 PM" |
| Pipeline ID | Below metadata | Green/teal monospace text, e.g. "pipeline-job-4227" |
| Temporal Workflow ID | span "Temporal Workflow ID" | Visible in accessibility tree, links to Temporal tracking |
| INPUT card | Dark card below metadata | "Input" header, key-value pairs of input parameters |
| INPUT trigger variables | Inside INPUT card | Automation-triggered jobs show: trigger_ticket_url, trigger_project, trigger_assignee, trigger_status, trigger_issue_key, trigger_issue_type |
| INPUT ticket URL | Inside INPUT card | Clickable cyan link when input contains a URL (e.g. Jira ticket) |
| INPUT hint | Inside INPUT card | "hint:" field showing dispatch instructions (e.g. "Jira webhook: jira:issue_updated") |
| ERROR card | Red background card | Shown on failed jobs only, "Error" header + "Step N (step-name) failed" + error message |
| Temporal Timeline | Below INPUT/ERROR | Full job execution timeline from Temporal orchestrator |
| Timeline summary | First line of timeline | "Job: STATUS | N events | size KB | short_id" |
| Timeline: Init phase | Timeline row | Duration (ms) + activity count (e.g. "3 activities") |
| Timeline: Agent Setup phase | Timeline row | Duration (ms) + activity count (e.g. "4 activities") |
| Timeline: Execution phase | Timeline row | Duration (Nm Ns) — main execution time |
| Timeline: runAndMonitor | Sub-row under Execution | Duration + "workflow: {workflow_id} agent: {agent-name}" |
| Timeline: Teardown phase | Timeline row | Duration (ms) + activity count (e.g. "5 activities") |
| Temporal unreachable | Replaces timeline | Shown when Temporal workflow history is unavailable (old jobs, cancelled jobs, service down) |
| OUTPUT card | Dark card at bottom | Shown on completed jobs, "Output" header + monospace green completion message (e.g. "Workflow agent_se_work completed on venmate-agent-10") |
Data Model
Job
| Field | Type | Description |
|---|---|---|
| id | number | Job ID (auto-increment) |
| pipeline_id | string | Pipeline tracking ID (e.g. "pipeline-job-3121") |
| name | string | Display name format: "{workflow_id} — {ticket_key|queued}" |
| status | string | "pending" / "running" / "waiting" / "completed" / "failed" / "cancelled" |
| effort_level | string | "max" / "high" / "medium" (optional — may be absent) |
| input | string (JSON) | Key-value map of input parameters (ticket_url, hint, etc.) |
| output | string | Completion message (on completed jobs) |
| error | string | Error message (on failed jobs) |
| ticket_url | string | Full Jira ticket URL (optional) |
| ticket_key | string | Jira ticket key e.g. "SCRUM-329" (optional) |
| current_step | number | Index of currently executing step |
| steps | string (JSON) | Array of pipeline step definitions |
| started_at | string (datetime) | When job started executing |
| completed_at | string (datetime) | When job finished |
| created_at | string (datetime) | Job creation timestamp |
| slack_channel_id | string | Slack channel for notifications (optional) |
| slack_thread_ts | string | Slack thread timestamp (optional) |
Temporal Timeline (Job Detail)
The job detail page fetches execution history from the Temporal orchestrator. When available, it renders a phase-based timeline. When unavailable, it shows "Temporal unreachable".
| Field | Type | Description |
|---|---|---|
| status | string | Temporal workflow status: "COMPLETED" / "FAILED" / "RUNNING" / "CANCELLED" |
| event_count | number | Total events in workflow history (e.g. "83 events") |
| data_size | string | History data size (e.g. "14.9 KB") |
| short_id | string | Short hex workflow run ID prefix (e.g. "019d500e") |
Timeline Phases
| Phase | Description |
|---|---|
| Init | Workflow initialization (~15-20ms, 3 activities) |
| Agent Setup | Agent environment preparation (~24-25ms, 4 activities) |
| Execution | Main workflow execution — contains runAndMonitor sub-entry showing workflow ID + agent name |
| Teardown | Cleanup and reporting (~38-48ms, 4-5 activities) |
Input Trigger Variables (Automation-triggered jobs)
Jobs triggered by Jira automations include trigger context in the INPUT card:
| Field | Type | Description |
|---|---|---|
| trigger_ticket_url | string | Full Jira ticket URL from trigger event |
| trigger_project | string | Jira project key (e.g. "MVP") |
| trigger_assignee | string | Jira account ID of assignee |
| trigger_status | string | Jira issue status at trigger time (e.g. "To Do", "In Review") |
| trigger_issue_key | string | Jira issue key (e.g. "MVP-1601") |
| trigger_issue_type | string | Jira issue type (e.g. "Bug", "Story") |
States & Variations
| State | Trigger | Visual Indicator |
|---|---|---|
| All filter active | Default / click "All" | "All" tab has green pill background |
| Running filter | ?status=running | Only running jobs shown, Running tab active with count badge |
| Completed filter | ?status=completed | Only completed jobs shown |
| Failed filter | ?status=failed | Only failed jobs shown, Failed tab has blue pill |
| Waiting filter | ?status=waiting | Only waiting jobs shown |
| Cancelled filter | ?status=cancelled | Only cancelled jobs shown |
| Running count badge | Running jobs exist | Running tab shows count badge (e.g. "Running 3") |
| Job completed | Finished successfully | Green dot + "Completed" badge |
| Job failed | Error occurred | Red dot + "Failed" badge |
| Job running | In progress | Blue pulsing dot + "Running" badge, live-ticking duration |
| Job waiting | Blocked at gate | Amber dot + "Waiting" badge |
| Job pending | Not yet started | "Pending" badge |
| Job cancelled | User cancelled | Grey dot + "Cancelled" badge |
| Effort: Max | effort_level = "max" | Green "MAX" pill badge |
| Effort: High | effort_level = "high" | Green "HIGH" pill badge |
| Effort: Medium | effort_level = "medium" | Green "MEDIUM" pill badge |
| Ticket reference present | Job linked to ticket | Orange/cyan ticket key text next to workflow name |
| Cancel available | Job is running or waiting | "Cancel" button shown in list row and detail top-right |
| Resend available | Job is failed or cancelled | "Resend" button shown in list row and detail top-right |
| Already resent | Resend was clicked | "Resended" button shown (disabled/past tense) |
| Detail: Temporal timeline | Temporal history available | Phase-based timeline: Init → Agent Setup → Execution → Teardown with durations and activity counts |
| Detail: Temporal unreachable | Temporal history unavailable | "Temporal unreachable" text replaces timeline (old jobs, cancelled jobs, service down) |
| Detail: Temporal status mismatch | Portal vs orchestrator differ | ERROR card may show "Status mismatch: portal says 'failed' but orchestrator says 'COMPLETED'" |
| Detail: ERROR card | Job has failure | Red "Error" card above timeline with "Step N (step-name) failed" + error detail |
| Detail: OUTPUT card | Job completed | Dark "Output" card below timeline with green completion message |
| Detail: trigger variables | Automation-triggered job | INPUT card shows trigger_ticket_url, trigger_project, trigger_assignee, trigger_status, trigger_issue_key, trigger_issue_type |
| Empty: All tab | No jobs dispatched, "All" active | Lightning bolt icon + "No jobs yet" heading + "Run a workflow from the agents page to create a job" hint |
| Empty: Running tab | No running jobs, "Running" active | Lightning bolt icon + "No running jobs" heading + same hint |
| Empty: Waiting tab | No waiting jobs, "Waiting" active | Lightning bolt icon + "No waiting jobs" heading + same hint |
| Empty: Completed tab | No completed jobs, "Completed" active | Lightning bolt icon + "No completed jobs" heading + same hint |
| Empty: Failed tab | No failed jobs, "Failed" active | Lightning bolt icon + "No failed jobs" heading + same hint |
| Empty: Cancelled tab | No cancelled jobs, "Cancelled" active | Lightning bolt icon + "No cancelled jobs" heading + same hint |
| Agent filter hidden | No agents registered or no jobs | Agent dropdown not rendered in filter bar; only Workflow filter shown |
| Workflow filter empty | No jobs exist | Workflow dropdown only shows "All workflows" — options populate dynamically from job data |
| Infinite scroll | Scroll to bottom | "Loading more..." appears, loads next 50 jobs |
Common Tasks
1. View job list
- Navigate to
/portal/jobs - See all jobs with status, workflow name, ticket ref, agent, step count, duration, time
2. Filter jobs by status
- Click filter tab (Running / Waiting / Completed / Failed / Cancelled)
- List filters to matching jobs, URL updates to
?status={status}
3. Search by ticket reference
- Click the "Search tickets..." textbox
- Type ticket reference (e.g. "SCRUM-329")
- List filters to matching jobs
4. Filter by workflow
- Click the "Workflow" dropdown (native
<select>) - Select a workflow name (e.g. "SE Rca Fix", "QA Validate")
- List filters to jobs for that workflow
5. Filter by agent
- Click the "Agent" dropdown (native
<select>) - Select an agent name
- List filters to jobs for that agent
6. View job detail
- Click any job row in the list
- See workflow name, ticket ref, status, input parameters, step execution timeline
7. View Temporal timeline
- On job detail page, see the timeline section below INPUT/ERROR
- Timeline shows 4 phases: Init, Agent Setup, Execution, Teardown with durations
- Execution phase shows runAndMonitor sub-entry with workflow ID and agent name
- If Temporal is unreachable, shows "Temporal unreachable" instead
8. Cancel a running or waiting job
- On a running/waiting job (list or detail), click the "Cancel" button
- Job transitions to "Cancelled" status
9. Resend a failed or cancelled job
- On a failed/cancelled job (list or detail), click the "Resend" button
- Job is re-dispatched — button changes to "Resended" (disabled)
Tips
- Jobs are created when workflows are dispatched via Run Workflow button, Run Job on agent, Queue dispatch, or Automation trigger
- The effort level maps to LLM model: Max/High = Opus, Medium = Sonnet
- Pipeline ID format is
pipeline-job-{id} - Job list shows relative timestamps ("Nm ago", "Nh ago"); detail page shows absolute timestamps
- The Temporal timeline shows 4 phases (Init, Agent Setup, Execution, Teardown) — Execution contains the actual workflow run with agent name
- Workflow names appear as Title Case in the list (e.g. "SE Rca Fix") but as slugs in detail headings (e.g. "se-rca-fix")
- Heading format on detail page: "workflow-slug — ticket-key" (when ticket linked) or "workflow-slug — queued" (from queue)
- Agent names link to
/portal/agentspage - Automation-triggered jobs show trigger context variables in INPUT (trigger_ticket_url, trigger_project, trigger_assignee, trigger_status, trigger_issue_key, trigger_issue_type)
- INPUT card may contain
hint:field showing extra dispatch instructions or automation trigger context (e.g. "Jira webhook: jira:issue_updated") - Queued jobs (non-automation) show only standard params (ticket_url, hint) without trigger_* variables
- Infinite scroll loads 50 items per page
- Job links from filtered views include
?from_status={status}for back-navigation context
Gotchas
- Cancel works on running AND waiting: Both running and waiting jobs can be cancelled
- Resend → Resended: After clicking Resend, the button changes to "Resended" (disabled) to prevent double-dispatch
- No delete: There is no UI to delete jobs from history
- Effort badge: The effort level controls LLM model, not priority. Both MAX and HIGH badges are green
- Status dots: Colored dots match status: green=completed, red=failed, blue=running (pulsing), amber=waiting, grey=cancelled
- Workflow/Agent dropdowns: Native
<select>elements — useselect_option()to interact - Search scope: "Search tickets..." searches by ticket reference only, not by workflow name or agent
- Temporal unreachable: Older jobs, cancelled jobs, and jobs during Temporal outages show "Temporal unreachable" instead of the phase timeline — OUTPUT/ERROR cards still display from portal DB
- Temporal status mismatch: A job's portal status and Temporal status can differ — e.g., portal shows "Failed" but Temporal shows "COMPLETED". The ERROR card shows the mismatch detail
- Cancelled jobs: Often show "Temporal unreachable" rather than a timeline — no step-level detail available
- Live duration: Running jobs show a ticking duration counter
- hint field: The INPUT card may show a
hint:field with automation context (e.g. "Jira webhook: jira:issue_updated") — this helps trace how the job was triggered - Empty state per filter: Each filter tab shows its own empty state heading — "No running jobs", "No completed jobs", etc. Only the All tab says "No jobs yet". The hint text is always the same
- Dynamic dropdown options: Workflow and Agent filter dropdowns populate dynamically from existing job data. An account with 0 jobs shows only "All workflows" and no Agent dropdown at all
- Workflow filter dual IDs: Historical jobs use legacy
agent_*prefixed IDs (e.g.agent_se_work); newer jobs use dash-separated IDs (e.g.se-work). Both appear in the Workflow filter dropdown since it populates from job data - Workflow filter select ID: The select element has
id="workflow-filter-select"— useful for targeted automation - Page title format: List page: "Jobs - SideButton Fleet". Detail page: "Job #{id} - SideButton Fleet"
- No Show details expandable: The old
<details>expandable with RESOLVED INPUT/OUTPUT is gone — replaced by Temporal timeline phases