mirror of
https://github.com/czl9707/build-your-own-openclaw.git
synced 2026-08-14 00:47:59 +00:00
81 lines
1.9 KiB
Python
81 lines
1.9 KiB
Python
"""CLI interface for my-bot using Typer."""
|
|
|
|
from pathlib import Path
|
|
from typing import Annotated
|
|
|
|
import typer
|
|
from rich.console import Console
|
|
|
|
from mybot.cli.chat import chat_command
|
|
from mybot.cli.server import server_command
|
|
from mybot.utils.config import Config
|
|
|
|
app = typer.Typer(
|
|
name="my-bot",
|
|
help="my-bot: Personal AI Assistant",
|
|
no_args_is_help=True,
|
|
add_completion=True,
|
|
)
|
|
|
|
console = Console()
|
|
|
|
|
|
def workspace_callback(ctx: typer.Context, workspace: str) -> Path:
|
|
"""Store workspace path in context for later use."""
|
|
ctx.ensure_object(dict)
|
|
ctx.obj["workspace"] = Path(workspace)
|
|
return Path(workspace)
|
|
|
|
|
|
@app.callback()
|
|
def main(
|
|
ctx: typer.Context,
|
|
workspace: str = typer.Option(
|
|
"../default_workspace",
|
|
"--workspace",
|
|
"-w",
|
|
help="Path to workspace directory",
|
|
callback=workspace_callback,
|
|
),
|
|
) -> None:
|
|
"""Configuration is loaded from workspace/config.user.yaml by default."""
|
|
workspace_path = ctx.obj["workspace"]
|
|
config_file = workspace_path / "config.user.yaml"
|
|
|
|
if not config_file.exists():
|
|
console.print(f"[yellow]No configuration found at {config_file}[/yellow]")
|
|
raise typer.Exit(1)
|
|
|
|
try:
|
|
cfg = Config.load(workspace_path)
|
|
ctx.obj["config"] = cfg
|
|
except Exception as e:
|
|
console.print(f"[red]Error loading config: {e}[/red]")
|
|
raise typer.Exit(1)
|
|
|
|
|
|
@app.command("chat")
|
|
def chat(
|
|
ctx: typer.Context,
|
|
agent: Annotated[
|
|
str | None,
|
|
typer.Option(
|
|
"--agent",
|
|
"-a",
|
|
help="Agent ID to use (overrides default_agent from config)",
|
|
),
|
|
] = None,
|
|
) -> None:
|
|
"""Start interactive chat session."""
|
|
chat_command(ctx, agent_id=agent)
|
|
|
|
|
|
@app.command("server")
|
|
def server(ctx: typer.Context) -> None:
|
|
"""Start the 24/7 server for cron and messagebus execution."""
|
|
server_command(ctx)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app()
|