from __future__ import annotations import typer from . import utils as _utils from .utils import console, log def register(app: typer.Typer) -> None: @app.command(name="webhook") def webhook_cmd( daemon: bool = typer.Option( False, "--daemon", "-d", help="Detach to background as a daemon process" ), ) -> None: """Run the webhook dispatcher — bus consumer → external HTTP egress.""" import asyncio from decnet.web.dependencies import repo from decnet.webhook import webhook_worker if daemon: log.info("webhook daemonizing") _utils._daemonize() log.info("webhook starting") console.print("[bold cyan]Webhook dispatcher starting[/]") async def _run() -> None: await repo.initialize() await webhook_worker(repo) try: asyncio.run(_run()) except KeyboardInterrupt: console.print("\n[yellow]Webhook worker stopped.[/]")