Webhook adapter for external integrations
"""


class WebhookAdapter:
    """
    Adapter for webhook-based integrations
    Can receive webhooks and send responses
    """

    def __init__(self, brain):
        self.brain = brain
        self.webhook_endpoints = {}

    def register_webhook(self, name: str, endpoint_url: str, secret: str):
        """Register a webhook endpoint"""
        self.webhook_endpoints[name] = {
            "url": endpoint_url,
            "secret": secret
        }

    async def handle_incoming_webhook(self, source: str, payload: dict):
        """
        Handle incoming webhook

        Common sources: WhatsApp, Telegram, custom

        Expected payload format varies by source.
        """
        # Extract message based on source
        if source == "whatsapp":
            message = payload.get("message", {}).get("text", "")
            user_id = payload.get("from", "unknown")
        elif source == "telegram":
            message = payload.get("message", {}).get("text", "")
            user_id = str(payload.get("message", {}).get("from", {}).get("id", "unknown"))
        else:
            message = payload.get("message", "")
            user_id = payload.get("user_id", "unknown")

        if not message:
            return {"status": "ignored", "reason": "no message"}

        result = await self.brain.process(
            message=message,
            user_id=user_id,
            session_id=f"{source}_{user_id}"
        )

        # Send response back via webhook
        await self._send_response(source, user_id, result.response)

        return {
            "status": "processed",
            "message_id": payload.get("message_id"),
            "response_sent": True
        }

    async def _send_response(self, source: string, user_id: string, message: string):
        """Send response back through the webhook endpoint"""

        if source not in self.webhook_endpo