Skip to content

Migrate GraphExecutor onto the OpenRegister flow engine #35

Description

@rubenvdlinde

hermiq shipped its own graph engine (lib/Service/Graph/GraphExecutor.php, #30). It is the sixth system in this fleet called "flow", and exactly what ADR-022 exists to prevent — the OpenRegister flow-engine proposal names five others and we added one more.

It should become a consumer.

What changes

  • GraphExecutor is replaced by OCA\OpenRegister\Service\Flow\FlowEngine.
  • hermiq contributes a FlowStepDispatcher handling the step types it owns:
    • agent-step — run an agent turn (the thing only hermiq can do)
    • Its condition / router / object-write steps are dropped in favour of the engine's own If/Switch and object steps (openregister#2067).
  • The canvas (GraphBuilder.vue / GraphSidebar.vue) moves to the shared flow builder, keeping CnGraphCanvas underneath.
  • Saved agentflow objects migrate to the flow document shape. The engine already accepts the {source, target} dialect CnGraphCanvas emits, so the edge format needs no translation.

What hermiq keeps

The agent step, and only the agent step. That is the genuinely hermiq-specific capability; graph walking, branching, item handling and run tooling are not.

Watch for

  • The item-list contract (openregister#2064): an agent step becomes items-in/items-out, so an agent step naturally runs once per item. GraphExecutor's single flat state has no equivalent and its {{key}} placeholders become JSONLogic expressions (openregister#2069).
  • agentId vs agent — both are honoured in the current executor; the migration is the moment to settle on one.
  • The trace shape shipped in feat: Vue 3 migration + visual flow builder for agent graphs #30 (produced / passed per step) is close to what the engine's run log needs, and should inform openregister#2070 rather than being re-invented.

Depends on openregister#2064.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions