actions/heartbeat.ts view source
Action<BaseHandlerContext> Protocol-action tuple — spread into the server's actions array for
dispatch (or via protocol_actions from actions/protocol.ts) so the
dispatcher resolves the heartbeat handler. The frontend-side spread
happens via protocol_action_specs — the client doesn't run the echo
handler, but the spec must be in ActionRegistry so create_rpc_client
types app.api.heartbeat() against the shared spec.