from __future__ import annotations from typing import Any def get_cli_commands() -> dict[str, dict[str, Any]]: return { "matrix": { "description": "Matrix channel management commands", "subcommands": { "account": { "description": "Manage Matrix accounts", "subcommands": { "add": { "description": "Add a new Matrix account", "args": ["", "", "[access_token]"], }, "list": { "description": "List configured Matrix accounts", "args": [], }, "remove": { "description": "Remove a Matrix account", "args": [""], }, "select": { "description": "Select default Matrix account", "args": [""], }, }, }, "status": { "description": "Show Matrix connection status", "args": [], }, "rooms": { "description": "List joined Matrix rooms", "args": [], }, "join": { "description": "Join a Matrix room", "args": [""], }, "leave": { "description": "Leave a Matrix room", "args": [""], }, "probe": { "description": "Probe Matrix homeserver health", "args": [], }, "doctor": { "description": "Run diagnostics and repair", "args": [], }, "wizard": { "description": "Start interactive setup wizard", "args": [], }, "sync-token": { "description": "Manage sync token", "subcommands": { "show": {"description": "Show current sync token", "args": []}, "clear": {"description": "Clear stored sync token", "args": []}, }, }, }, } } def format_cli_help() -> str: return """ Matrix CLI Commands: ===================== yuxi matrix account add [access_token] Add a new Matrix account yuxi matrix account list List all configured accounts yuxi matrix account remove Remove an account yuxi matrix account select Set default account yuxi matrix status Show connection status yuxi matrix rooms List joined rooms yuxi matrix join Join a room yuxi matrix leave Leave a room yuxi matrix probe Run health probe yuxi matrix doctor Run diagnostic checks yuxi matrix wizard Start setup wizard yuxi matrix sync-token show Show stored sync token yuxi matrix sync-token clear Clear stored sync token """.strip() class MatrixCLI: def __init__(self): self._commands = get_cli_commands() def dispatch(self, args: list[str]) -> dict[str, Any]: if not args: return {"status": "error", "message": "No command specified"} if args[0] != "matrix": return {"status": "error", "message": f"Unknown command: {args[0]}"} if len(args) < 2: return {"status": "ok", "help": format_cli_help()} subcommand = args[1] subcmds = self._commands["matrix"]["subcommands"] if subcommand not in subcmds: return {"status": "error", "message": f"Unknown matrix subcommand: {subcommand}"} return { "status": "ok", "command": f"matrix {subcommand}", "description": subcmds[subcommand]["description"], "args": args[2:] if len(args) > 2 else [], "expected_args": subcmds[subcommand].get("args", []), }