Use Drupal tokens to insert process variables in the message body

Resolves #3607018.

Adds Drupal token replacement to the message interaction body so an author can insert process values.

  • New orchestra token type (OOP #[Hook]): [orchestra:var:NAME] resolves a process variable as the current branch sees it (branch-local value shadows instance-wide, following the engine getVariables() view so __-internal variables stay hidden), plus [orchestra:instance-id] and [orchestra:token-id].
  • MessageInteraction::respond() runs the body through the core token service, scoped to the parked instance and branch, bubbling cache metadata. Replacement values are escaped as data, then the existing admin-HTML filter is applied on output.
  • Global tokens ([site:name], [current-date:*], ...) resolve too, because the core token service is used. The message field documents the tokens, and an optional token-tree picker appears when the contrib token module is enabled.

Tests: MessageInteractionTokenTest (kernel) covers variable / identity / global resolution, branch-vs-instance shadowing, internal-and-unknown clearing, and the rendered + escaped output. Full orchestra_interaction kernel suite green (41 tests, 321 assertions). phpcs, phpstan (level 1) and cspell clean.

Merge request reports

Loading