Skip to content

Workflow dashboard - #225

Merged
RyanTheRobothead merged 19 commits into
unstablefrom
workflow_dashboard
Feb 12, 2026
Merged

Workflow dashboard#225
RyanTheRobothead merged 19 commits into
unstablefrom
workflow_dashboard

Conversation

@AileenCleary

@AileenCleary AileenCleary commented Feb 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds workflow admin command support (cancel, pause/resume, and retry/reset) across the backend workcell manager and the dashboard UI, enabling operators to control running workflows and nodes in real time.

Backend (Workcell Manager)

  • Cancel: New /workflow/{workflow_id}/cancel endpoint and workcell-wide /admin/cancel — sets workflow status to cancelled and propagates the cancel command to the currently executing node
  • Pause/Resume: New /workflow/{workflow_id}/pause and /workflow/{workflow_id}/resume endpoints (plus workcell-wide and per-node variants) — pauses/resumes workflow execution and signals the active node
  • Retry: New /workflow/{workflow_id}/retry endpoint — restarts a terminal (completed/failed/cancelled) workflow from a specified step
  • Workflow engine (workcell_engine.py) updated to handle PAUSED and CANCELLED step statuses during finalization
  • Utility functions added in workflow_utils.py for pause_workflow() and cancel_workflow() state transitions

Dashboard UI

  • Three new Vue 3 admin button components: CancelButton, PauseResumeButton, and ResetButton
  • Integrated into WorkflowModal and NodeModal for per-workflow and per-node control
  • Buttons are context-aware: enabled/disabled based on current workflow/node status and capabilities

Example Lab & Testing

  • @interruptable decorator pattern added to the liquidhandler example module, demonstrating how nodes can support cancel/pause via threading events and checkpoints
  • stall action added to AdvancedExampleNode for testing timing-dependent scenarios
  • New admin_commands_test.workflow.yaml test workflow and test_admin_commands.py experiment application

Other

  • Removed stale generated files (default.node.yaml, example_app.info.yaml)
  • Minor fixes to event client, event server, and data server
  • Updated yarn.lock

Reference

S.O.C 2.11.26.pdf — review of current admin command behaviors

@RyanTheRobothead
RyanTheRobothead changed the base branch from main to unstable February 12, 2026 18:14
@github-actions

github-actions Bot commented Feb 12, 2026

Copy link
Copy Markdown

Coverage report

Click to see where and how coverage changed

FileStatementsMissingCoverageCoverage
(new stmts)
Lines missing
  src/madsci_client/madsci/client
  event_client.py
  src/madsci_data_manager/madsci/data_manager
  data_server.py
  src/madsci_event_manager/madsci/event_manager
  event_server.py 786
  src/madsci_workcell_manager/madsci/workcell_manager
  workcell_engine.py 507-514, 516-522, 524
  workcell_server.py 384-388, 406-411, 428-432, 448, 450
  workflow_utils.py 445, 461-463, 481-487, 497-499
Project Total  

This report was generated by python-coverage-comment-action

RyanTheRobothead and others added 2 commits February 12, 2026 13:26
- Fix cancel_active_workflows not persisting cancelled state to state handler
- Add missing PauseResumeButton import in WorkflowModal.vue
- Remove duplicate set_active_workflow calls in pause/cancel endpoints
- Add try/except for resume admin command to match pause/cancel pattern
- Remove console.log debug statements from CancelButton and PauseResumeButton
- Fix interruptable decorator: use daemon threads, re-raise exceptions instead
  of returning them, warn if action thread outlives interrupt
- Fix _wait to wake on both cancel and pause events
- Fix admin_commands_test workflow YAML: remove invalid args nesting for stall steps
- Remove package-lock.json (project uses yarn)
- Revert wait_time defaults from 10.0 back to 2.0
- Clean up commented-out code in Vue components
- Update just build command to build dashboard image after main image

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@RyanTheRobothead
RyanTheRobothead merged commit 72a888f into unstable Feb 12, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants