hermes-bsd/gateway
teknium1 a706a349b5 refactor(gateway): extract authorization cluster into GatewayAuthorizationMixin (god-file Phase 3)
Lift the 4 inbound-message authorization methods out of GatewayRunner into
gateway/authz_mixin.py:GatewayAuthorizationMixin. Behavior-neutral; gateway/run.py
16200 -> 15812 LOC.

Methods moved (~389 LOC): _is_user_authorized, _get_unauthorized_dm_behavior,
_adapter_dm_policy, _adapter_enforces_own_access_policy. The two adapter-policy
helpers are private to _is_user_authorized, so the cluster is fully self-contained
(zero outside-cluster self.method calls after the lift). All self.* calls resolve
unchanged via the MRO (GatewayRunner(GatewayAuthorizationMixin, ...)).

Import split: 6 neutral deps (os, Optional, Platform, SessionSource, the two
whatsapp_identity helpers) at the mixin module top; the module-level logger is
imported lazily inside _is_user_authorized (from gateway.run import logger) so
the mixin never imports gateway.run at module scope -> no cycle. The lazy import
preserves the exact logger name (gateway.run) so log records are unchanged.
2026-06-08 09:42:02 -07:00
..
assets
builtin_hooks
platforms fix(session): follow compression continuations for transcript reads 2026-06-07 23:57:20 -07:00
__init__.py
authz_mixin.py refactor(gateway): extract authorization cluster into GatewayAuthorizationMixin (god-file Phase 3) 2026-06-08 09:42:02 -07:00
channel_directory.py
config.py fix(gateway): bridge shared-key loop to nested platform config blocks 2026-06-04 05:31:47 -07:00
delivery.py fix(gateway): drop outbound silence-narration messages pre-send 2026-05-29 19:06:05 -07:00
display_config.py
hooks.py feat(hooks): expose thread_id and chat_type in agent:start/end context (#41672) 2026-06-07 19:16:36 -07:00
kanban_watchers.py refactor(gateway): extract kanban watcher loops into GatewayKanbanWatchersMixin (god-file Phase 3) 2026-06-07 23:14:18 -07:00
memory_monitor.py
mirror.py
pairing.py
platform_registry.py
restart.py
run.py refactor(gateway): extract authorization cluster into GatewayAuthorizationMixin (god-file Phase 3) 2026-06-08 09:42:02 -07:00
runtime_footer.py
session.py fix(gateway): isolate DM sessions on user_id when chat_id is absent (#41764) 2026-06-07 22:07:07 -07:00
session_context.py fix(desktop): stabilize project folder sessions (#37586) 2026-06-02 20:23:09 +00:00
shutdown_forensics.py
slash_access.py
slash_commands.py refactor(gateway): extract 42 slash-command handlers into GatewaySlashCommandsMixin (god-file Phase 3b) 2026-06-08 01:25:35 -07:00
status.py fix(gateway): tolerate non-UTF-8 status/pid files in gateway status reads 2026-06-04 22:05:23 -07:00
sticker_cache.py
stream_consumer.py fix(telegram): finalize sealed overflow chunk so split streamed replies render formatting 2026-06-04 17:11:12 -07:00
stream_dispatch.py feat(gateway): structured stream-event protocol + Telegram draft formatting parity (#37250) 2026-06-02 00:33:50 -07:00
stream_events.py feat(gateway): structured stream-event protocol + Telegram draft formatting parity (#37250) 2026-06-02 00:33:50 -07:00
whatsapp_identity.py