Structure webber into three independent subprojects: - webber-api/: FastAPI backend server with all agent code - webber-cli/: Standalone CLI client (renamed from cli/ to webber_cli/) - webber-sandbox/: Test project for functional testing Key changes: - Each subproject has its own .venv (Python 3.12+) - Added sandbox.sh for managing test project templates - Created sandbox-templates/ with calculator-cli and empty starter - Updated CI/CD for prefixed tags (api/v*, cli/v*) - Added comprehensive AGENTS.md with operational instructions - Added gitignore filtering to glob and grep tools - Created pyproject.toml for each subproject Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
65 lines
1.4 KiB
Python
65 lines
1.4 KiB
Python
"""
|
|
Webber CLI main entry point.
|
|
|
|
Usage:
|
|
webber --help
|
|
webber --version
|
|
webber chat [OPTIONS]
|
|
webber explore QUERY [OPTIONS]
|
|
"""
|
|
import typer
|
|
from rich.console import Console
|
|
|
|
from src.shared.config import get_settings
|
|
|
|
# Create Typer app
|
|
app = typer.Typer(
|
|
name="webber",
|
|
help="Multi-Agent AI Development System",
|
|
no_args_is_help=True,
|
|
add_completion=False,
|
|
)
|
|
|
|
console = Console()
|
|
|
|
|
|
def version_callback(value: bool) -> None:
|
|
"""Display version and exit."""
|
|
if value:
|
|
settings = get_settings()
|
|
console.print(f"[bold blue]{settings.app_name}[/] version [green]{settings.app_version}[/]")
|
|
console.print(f"[dim]{settings.app_description}[/]")
|
|
raise typer.Exit()
|
|
|
|
|
|
@app.callback()
|
|
def main(
|
|
version: bool = typer.Option(
|
|
False,
|
|
"--version",
|
|
"-v",
|
|
callback=version_callback,
|
|
is_eager=True,
|
|
help="Show version and exit",
|
|
),
|
|
) -> None:
|
|
"""
|
|
Webber - Multi-Agent AI Development System.
|
|
|
|
A CLI tool for codebase exploration and development assistance
|
|
powered by local LLMs via Ollama.
|
|
"""
|
|
pass
|
|
|
|
|
|
# Import and register commands
|
|
from src.cli.commands import chat, explore, version # noqa: E402, F401
|
|
|
|
# Register subcommands
|
|
app.command(name="chat")(chat.chat_command)
|
|
app.command(name="explore")(explore.explore_command)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app()
|