63bb0cf933
GEM host-side counterpart to the existing equipment server: wraps an HSMS Connection (Active mode), installs an inbound dispatch table that auto-acks the messages a host is expected to passively accept, and exposes the GEM workflow primitives. Inbound dispatch: S5F1 Alarm Report observe (alarm handler) + S5F2 Accept S6F11 Event Report observe (event handler) + S6F12 Accept S6F25 Spool Data Ready S6F26 Accept (host policy: pull on demand) S10F1 Terminal Display observe + S10F2 Accepted S9F* Equipment errors observe (s9 handler); no ack (one-way) Workflow shortcuts: establish_communication() S1F13 -> S1F14 go_remote() S1F17 -> S1F18 go_offline() S1F15 -> S1F16 Plus a low-level send_request() escape hatch so the senders coming in B2/B3 don't have to friend the connection internals. Drive-by: event_reports.hpp was missing `<optional>` (worked transitively through the equipment-side include chain but not when included from the host-side standalone). secsgem-py has `gem/hosthandler.py`; this mirrors its surface for the inbound-ack and lifecycle parts. Outbound senders land in B2/B3. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>