hepToolLivenessFrame function
Builds tool_liveness (gh-1054): a liveness heartbeat for a
long-outstanding tool call (action: "heartbeat") or a stuck-call
follow-up transition (cancel_retry/background_convert/escalate/
advisory). Additive v1 frame — supervisors read it to distinguish
alive-busy from dead without waiting out their own watchdogs.
Implementation
String hepToolLivenessFrame({
required int turnId,
required String id,
required String name,
required String action,
required int elapsedMs,
int? outputBytes,
String detail = '',
}) => jsonEncode({
'type': 'tool_liveness',
'turn_id': turnId,
'id': id,
'name': name,
'action': action,
'elapsed_ms': elapsedMs,
'output_bytes': ?outputBytes,
if (detail.isNotEmpty) 'detail': detail,
});