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
orchestratoken type (OOP#[Hook]):[orchestra:var:NAME]resolves a process variable as the current branch sees it (branch-local value shadows instance-wide, following the enginegetVariables()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.