hermes-agent/tests/gateway/relay
Ben Barclay bb5fc723b6
feat(relay): consume channel context from the connector (#64649)
Phase 3 of relay-channel-context (gateway/agent side, single PR). The
connector (gateway-gateway #122/#123/#124) now attaches read-only
surrounding channel/group context to an addressed relay turn; this wires
the gateway to consume it.

- descriptor.py: additive optional supports_context (default False) on
  CapabilityDescriptor. from_json already filters unknown keys, so this is
  back-compat both directions within contract_version 1.
- ws_transport.py: _event_from_wire maps the connector's read-only
  context[] array into the EXISTING MessageEvent.channel_context field via
  a new _render_relay_context() helper — reusing the same read-only
  injection path history-backfill uses (run.py prepends channel_context
  ahead of the trigger message). Never raises; absent/empty/malformed ->
  channel_context unset (byte-identical to today).
- docs/relay-connector-contract.md: document supports_context in the §2
  descriptor table (fixes the contract-doc conformance test) + the
  context/context_error inbound fields in §3.
- tests: descriptor default/round-trip/forward-compat; _render_relay_context
  rendering + malformed-safe; _event_from_wire context->channel_context
  mapping + the read-only invariant (trigger text untouched).

RELAY-ONLY: only gateway/relay/* + the shared MessageEvent consumption via
its existing channel_context field. No native adapter touched.
2026-07-15 09:31:34 +10:00
..
__init__.py
…
stub_connector.py
…
test_auth.py
…
test_channel_context_consume.py
…
test_contract_doc_conformance.py
…
test_descriptor.py
…
test_descriptor_from_entry.py
…
test_identity_token_resolver.py
…
test_no_stub_leak.py
…
test_relay_adapter.py
…
test_relay_follow_up.py
…
test_relay_going_idle.py
…
test_relay_interrupt.py
…
test_relay_multiplatform.py
…
test_relay_passthrough.py
…
test_relay_policy_send.py
…
test_relay_registration.py
…
test_relay_roundtrip.py
…
test_relay_roundtrip_telegram.py
…
test_relay_sheds_crypto.py
…
test_self_provision.py
…
test_ws_transport.py
…