aurask/api/aurask/cli.py

66 lines
2.4 KiB
Python

"""Command line entrypoint."""
from __future__ import annotations
import argparse
import json
from pathlib import Path
from aurask.api import run_server
from aurask.app import create_app
DEFAULT_DATA_PATH = Path(".aurask/state.json")
def main() -> None:
parser = argparse.ArgumentParser(prog="aurask", description="Aurask MVP gateway and workflow backend")
parser.set_defaults(data=str(DEFAULT_DATA_PATH), reset=False)
subparsers = parser.add_subparsers(dest="command")
serve_parser = subparsers.add_parser("serve", help="Run the Aurask HTTP gateway")
serve_parser.add_argument("--data", default=str(DEFAULT_DATA_PATH), help="JSON state file for MVP persistence")
serve_parser.add_argument("--host", default="127.0.0.1")
serve_parser.add_argument("--port", type=int, default=8080)
serve_parser.add_argument("--reset", action="store_true", help="Reset local MVP state before serving")
demo_parser = subparsers.add_parser("demo", help="Bootstrap a tenant and run a safe template workflow")
demo_parser.add_argument("--data", default=str(DEFAULT_DATA_PATH), help="JSON state file for MVP persistence")
demo_parser.add_argument("--reset", action="store_true", help="Reset local MVP state before running demo")
args = parser.parse_args()
command = args.command or "demo"
if command == "serve":
app = create_app(args.data, reset=args.reset)
run_server(app, host=args.host, port=args.port)
return
if command == "demo":
app = create_app(args.data, reset=args.reset)
bootstrap = app.bootstrap_demo()
run = app.orchestrator.run_template(
bootstrap["tenant"]["id"],
bootstrap["user"]["id"],
"tpl_knowledge_qa",
workspace_id=bootstrap["workspace"]["id"],
inputs={"question": "How can Aurask help my support team?"},
)
print(
json.dumps(
{
"message": "Aurask MVP demo completed",
"api_key": bootstrap["api_key"],
"tenant_id": bootstrap["tenant"]["id"],
"workspace_id": bootstrap["workspace"]["id"],
"workflow_run": run,
"quota": app.quota.get_account(bootstrap["tenant"]["id"]),
},
ensure_ascii=False,
indent=2,
)
)
return
parser.error(f"unknown command: {command}")