From cea78c5e278c3f1bd829cd97acc0f340540d8904 Mon Sep 17 00:00:00 2001 From: teknium1 Date: Tue, 10 Mar 2026 15:08:40 -0700 Subject: [PATCH] fix(gateway): add metadata param to _keep_typing and base send_typing _keep_typing() was called with metadata= for thread-aware typing indicators, but neither it nor the base send_typing() accepted that parameter. Most adapter overrides (Slack, Discord, Telegram, WhatsApp, HA) already accept metadata=None, but the base class and Signal adapter did not. - Add metadata=None to BasePlatformAdapter.send_typing() - Add metadata=None to BasePlatformAdapter._keep_typing(), pass through - Add metadata=None to SignalAdapter.send_typing() Fixes TypeError in _process_message_background for Signal. --- gateway/platforms/base.py | 7 ++++--- gateway/platforms/signal.py | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/gateway/platforms/base.py b/gateway/platforms/base.py index c12d417b3..1e7436188 100644 --- a/gateway/platforms/base.py +++ b/gateway/platforms/base.py @@ -413,11 +413,12 @@ class BasePlatformAdapter(ABC): """ return SendResult(success=False, error="Not supported") - async def send_typing(self, chat_id: str) -> None: + async def send_typing(self, chat_id: str, metadata=None) -> None: """ Send a typing indicator. Override in subclasses if the platform supports it. + metadata: optional dict with platform-specific context (e.g. thread_id for Slack). """ pass @@ -620,7 +621,7 @@ class BasePlatformAdapter(ABC): return media, cleaned - async def _keep_typing(self, chat_id: str, interval: float = 2.0) -> None: + async def _keep_typing(self, chat_id: str, interval: float = 2.0, metadata=None) -> None: """ Continuously send typing indicator until cancelled. @@ -629,7 +630,7 @@ class BasePlatformAdapter(ABC): """ try: while True: - await self.send_typing(chat_id) + await self.send_typing(chat_id, metadata=metadata) await asyncio.sleep(interval) except asyncio.CancelledError: pass # Normal cancellation when handler completes diff --git a/gateway/platforms/signal.py b/gateway/platforms/signal.py index 3404bbb94..d2212ae88 100644 --- a/gateway/platforms/signal.py +++ b/gateway/platforms/signal.py @@ -580,7 +580,7 @@ class SignalAdapter(BasePlatformAdapter): return SendResult(success=True) return SendResult(success=False, error="RPC send failed") - async def send_typing(self, chat_id: str) -> None: + async def send_typing(self, chat_id: str, metadata=None) -> None: """Send a typing indicator.""" params: Dict[str, Any] = { "account": self.account,