Skip to content

Workflow run - #1024

Merged
erasta merged 26 commits into
masterfrom
workflow-run
Aug 7, 2026
Merged

Workflow run#1024
erasta merged 26 commits into
masterfrom
workflow-run

Conversation

@erasta

@erasta erasta commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

erasta added 26 commits August 6, 2026 16:55
  Add a templates icon-button under the "+" add-node button in the
  workflow editor. It opens a small menu offering safe starter
  workflows (currently "Hello World" — a single RunOsCommand node that
  echoes a message) plus Cancel. Picking a template replaces the
  current workflow block.
  Load starter templates from workflow/templates/*.json (Hello World,
  List Files, System Info, Two Steps). Fit the view after applying a
  template and cap fit zoom at 100% so a single node no longer fills
  the screen.
  Runs a saved workflow from the DB via executeWorkflowFromDB (local
  scheduler) through the /exec bridge. Disabled while there are unsaved
  edits. Shows a snackbar on completion.
  - AutoReloadToggle in the toolbar and next to the Settings slider;
    off stores null, on restores the default 5s
  - Remove the hide-sidebar toolbar button
  Expose an actionButtons node on WorkflowEditor/WorkflowGraph rendered in the
  canvas top-right; pass the run button through it while keeping the header one.
  Avoids hermes writing the workflow JSON to the process cwd (repo root under Docker) by giving new workflow documents a resource under filesDirectory.
  Temporarily prepend the toolkit's files directory to PYTHONPATH around
  executeWorkflowFromDB (restored after) so the Luigi subprocess can import the
  generated workflow module. Fixes ModuleNotFoundError on run.
  Use "Command list" (what the Hermes executer accepts) instead of "Commands list" in all workflow templates, so template-created workflows run.
  Capture the run's stdout+stderr at the fd level in buildRunWorkflowCode and
  return it; RunWorkflowButton shows it in a dialog after the run finishes.
  - ui/server/workflow_runner.py: new WorkflowRunner class; run() builds+executes a
    saved workflow, captures stdout/stderr at the fd level, temporarily extends
    PYTHONPATH, returns {dispatch_id, output}
  - ui/server/server.py: POST /run_workflow delegating to a single WorkflowRunner
    instance
  - ui/client/src/io/runWorkflow.ts: fetch helper for the endpoint
  - RunWorkflowButton.tsx: call the endpoint, show output dialog, running/error/info
    snackbars; drop the inline Python
  - delete buildRunWorkflowCode.ts; update runWorkflow.test.tsx to mock io/runWorkflow
  Classify each output line (DEBUG/INFO/WARNING/ERROR, Luigi summary
  block, task stdout), index it, and render color-coded in the run dialog.
  Client-only; server still returns the raw log.
  - per-kind show/hide buttons with line counts (LogToolbar)
  - distinguish Debug vs Info colors; share styles in logKindStyle
  - copy-all-to-clipboard button
  - persist per-kind visibility across runs (useLogFilterStore)
  - classify post-summary lines (loads/problems) as Technical
  - order filter buttons by severity; Summary/Technical on the right
  - treat CRITICAL as Error and WARN as Warning
@erasta
erasta merged commit e527e76 into master Aug 7, 2026
1 check passed
@erasta
erasta deleted the workflow-run branch August 7, 2026 16:39
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.

1 participant