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,