Serialize the interactive-element list for a step. prevElements (the prior
step's list) drives the * "new element" marker; omit it on the first step.
Output is capped at maxChars — once the budget is hit, remaining elements
are dropped and a truncation note is appended (never a silent cap).
Serialize the interactive-element list for a step.
prevElements(the prior step's list) drives the*"new element" marker; omit it on the first step. Output is capped atmaxChars— once the budget is hit, remaining elements are dropped and a truncation note is appended (never a silent cap).