"""CLI entry for Beaver."""

try:
    import typer
except ModuleNotFoundError:  # pragma: no cover - fallback for skeleton-only environments
    class _FallbackTyper:
        def __init__(self, *_args, **_kwargs) -> None:
            pass

        def command(self):
            def decorator(func):
                return func

            return decorator

        def __call__(self) -> None:
            raise RuntimeError("typer is not installed")

        @staticmethod
        def echo(message: str) -> None:
            print(message)

        @staticmethod
        def Option(default=None, *_args, **_kwargs):
            return default

    typer = _FallbackTyper()  # type: ignore[assignment]

from beaver.services.agent_service import AgentService

app = typer.Typer(help="Beaver backend CLI") if hasattr(typer, "Typer") else typer


@app.command()
def run(
    message: str | None = typer.Option(None, "--message", "-m", help="Run one direct Beaver request."),
    workspace: str | None = typer.Option(None, "--workspace", help="Workspace root for this run."),
    config: str | None = typer.Option(None, "--config", help="Backend config path for this run."),
) -> None:
    """Thin CLI wrapper around AgentService.

    CLI 现在不再自己维护执行逻辑，只负责：
    1. 解析命令行参数
    2. 调 AgentService
    3. 打印结果
    """

    service = AgentService(workspace=workspace, config_path=config)
    if not message:
        service.create_loop()
        typer.echo("Beaver engine booted.")
        return

    result = service.run_direct(message, source="cli")
    typer.echo(result.output_text)


def main() -> None:
    """Project script entrypoint."""
    app()
