Commit Graph
16 Commits
Author SHA1 Message Date
Kristian Bendiksen ec59629930 #15094 Workflows: Add vertical graph layout option
Add a per-workflow Vertical Layout toggle to the workflow editor toolbar
and canvas context menu. In vertical mode ranks are stacked top to bottom,
task inputs sit on the top edge and outputs on the bottom edge, config
boxes are placed above their task and control edges run between the sides.
2026-11-04 17:26:39 +01:00
Kristian Bendiksen add80526fa #14869 Workflow UI: Open nested workflows in tabs
Double-click a nested workflow task (or use Open Nested Workflow) to show
the inner workflow read-only in a tab of its own. The inner workflow is
described by the new taskmaestro_helper describe-nested command, for YAML
workflow entries and installed workflows. Workflows with workflow entries
now load.
2026-11-04 15:17:05 +01:00
Kristian Bendiksen 12bcd5b857 #15044 Workflows: Add option to collapse tasks to their title
Collapse a task with the chevron in its title, a double-click on the title, or
the context menus. A collapsed task shows its title, state and issue count, and
its connections meet in one dot on each side. Ports and config values are shown
in the tooltip. The collapsed set is stored per workflow.
2026-11-04 15:17:05 +01:00
Kristian Bendiksen b2b0e8e6f4 #14869 Workflows: Add option to hide tasks in the graph
Hidden tasks are removed from the canvas and the ports they feed are marked
with the hidden task name. Hidden tasks are shown again while they have failed
or have validation errors. The hidden set is stored per workflow.
2026-11-04 15:17:05 +01:00
Kristian Bendiksen d6143ccca3 #14869 Workflows: Add option to inline config values into task boxes
Adds a per-workflow 'Inline Config Values' toggle (canvas context menu,
on by default, stored in the project file). When enabled, the separate
config boxes are hidden and each config value is shown on the task's
input port as 'type = value'.
2026-11-04 15:17:05 +01:00
Kristian Bendiksen 8baad6f878 Workflow UI: Support collect flattening
Allow list and dict outputs, including mapped task outputs, to be
collected into list inputs, and dicts to be merged into dict inputs,
matching taskmaestro's collect flattening. Label flattened members in
the graph and document the rules.
2026-10-30 16:17:03 +01:00
Kristian Bendiksen bb0acbed56 Workflow UI: Support conditional branches
Support taskmaestro conditional branches in the workflow editor:
- Read and write `when` guards and `first_of` alternatives in workflow definitions
- Validate guards, switch branch coverage and alternative types
- Draw switch tasks as diamonds, guards as control edges and skipped tasks greyed out
- Edit guards with Run When..., add alternatives when dropping on a connected input
- Report skipped tasks from the run helper
2026-10-30 16:17:03 +01:00
Kristian Bendiksen e6dc62a160 Workflows: Add interactive editor for taskmaestro workflows
Build, copy and edit taskmaestro workflows in ResInsight and save them as
standard workflow.yaml + input.yaml.

- Python helper: catalog, load, save and export-registered subcommands,
  and run --registered for installed workflows
- C++ definition model with pure edit operations, port type checks,
  config field derivation, static validation and undo/redo
- Installed folder listing registered workflows (read-only, runnable,
  can be duplicated)
- Graph editor dock with task palette, drag-to-connect, context menus,
  automatic layout and debounced live validation
- New/Duplicate/Save/Save As/Rescan commands; unsaved edits run from a
  temporary folder and prompt before being discarded
- Update the design document and the user README
2026-10-23 20:23:54 +02:00
Magne Sjaastad 064ac45da0 ResInsight: Migrate project data model to attribute map 2026-10-17 13:23:22 +02:00
Kristian Bendiksen f8b20a3f44 Add missing function headers in cpp files 2026-10-05 19:56:36 +02:00
Kristian Bendiksen d53419bd5c Remove obsolete SOURCE_GROUP_HEADER_FILES everywhere. 2026-10-05 19:56:36 +02:00
Magne Sjaastad 9bfd91df90 Workflows: Add RimWorkflowVec3Binding for Vec3-typed config fields
Recognizes Vec3-shaped object schemas ({x, y, z} number properties)
structurally in RimWorkflowDescribeTools and dispatches them to a new
RimWorkflowVec3Binding in RimWorkflowTaskInput::createBinding(). Stores
the value as a cvf::Vec3d field, parses JSON object defaults, and emits
a YAML flow-mapping ({x: .., y: .., z: ..}) matching the taskmaestro
Vec3 pydantic model shape.
2026-10-05 19:56:36 +02:00
Kristian Bendiksen 65942d455d Workflows: Read workflow schemas with the taskmaestro CLI
Replace the rips.taskmaestro_helper introspect subcommand with
`python -m taskmaestro workflow describe --json`. RimWorkflowDescribeTools
converts the describe output (JSON schemas, depends_on, config_values)
into the workflow graph used by the Workflow UI. This also adds support
for collect dependencies and maps rips.Reservoir to EclipseCase pickers.
2026-10-05 19:56:36 +02:00
Kristian Bendiksen d63bde00e4 #14789 Workflow: Visualize taskmaestro DAG in native Qt view 2026-10-05 19:56:36 +02:00
Kristian Bendiksen 5112df4ee0 Workflows: Gate the Workflows UI behind an experimental feature flag
Register a 'workflows' experimental feature and gate the taskmaestro Workflows
UI behind it, following the registry pattern from #14081. The Workflows tree
collection is only added in RimProject::defineUiTreeOrdering when the feature is
enabled, and RimWorkflowCollection::rescanWorkflows() skips the eager discovery
scan (and its per-workflow Python introspection) when disabled.
2026-10-05 19:56:36 +02:00
Kristian Bendiksen 3a7b8f6be8 Workflows: Add UI for taskmaestro workflows
Discover taskmaestro workflows under ~/.taskmaestro/workflows/ and surface
them as a "Workflows" collection in the project tree alongside Scripts.
Each workflow's task input schema is auto-generated by introspecting the
Pydantic models via a Python helper (rips.taskmaestro_helper) and rendered
as PDM field bindings - scalars for str/int/float/bool, and PdmPtrField
pickers for fields typed as rips.Case / rips.WellPath / rips.View.

The Run button on a RimWorkflow writes input.yaml from current bindings
(rips object references serialized as __resinsight_ref__ maps), spawns
the helper's run subcommand, and streams output to a modeless log dialog.
The helper resolves __resinsight_ref__ markers back to live rips objects
via the running ResInsight's gRPC server before driving taskmaestro.
2026-10-05 19:56:36 +02:00