generated from coulomb/repo-seed
http service with health, extension listing, profile validation, run planning, async run jobs, job inspection, and report retrieval
This commit is contained in:
@@ -20,6 +20,7 @@ from guide_board.planning import (
|
||||
)
|
||||
from guide_board.retention import build_trend_summary, list_retained_runs
|
||||
from guide_board.schema import assert_valid
|
||||
from guide_board.service import build_server
|
||||
|
||||
|
||||
def main(argv: list[str] | None = None) -> int:
|
||||
@@ -82,6 +83,11 @@ def build_parser() -> argparse.ArgumentParser:
|
||||
run.add_argument("--output-dir", type=Path)
|
||||
run.set_defaults(func=cmd_run)
|
||||
|
||||
serve = subcommands.add_parser("serve", help="serve the local HTTP API")
|
||||
serve.add_argument("--host", default="127.0.0.1")
|
||||
serve.add_argument("--port", type=int, default=8080)
|
||||
serve.set_defaults(func=cmd_serve)
|
||||
|
||||
runs = subcommands.add_parser("runs", help="run history operations")
|
||||
runs_commands = runs.add_subparsers(required=True)
|
||||
list_runs = runs_commands.add_parser("list", help="list retained run summaries")
|
||||
@@ -160,6 +166,19 @@ def cmd_run(args: argparse.Namespace) -> dict[str, Any]:
|
||||
)
|
||||
|
||||
|
||||
def cmd_serve(args: argparse.Namespace) -> None:
|
||||
server = build_server(args.root, args.extension_dir, args.host, args.port)
|
||||
host, port = server.server_address
|
||||
print(f"guide-board: serving local API on http://{host}:{port}", file=sys.stderr)
|
||||
try:
|
||||
server.serve_forever()
|
||||
except KeyboardInterrupt:
|
||||
print("guide-board: stopping local API", file=sys.stderr)
|
||||
finally:
|
||||
server.server_close()
|
||||
return None
|
||||
|
||||
|
||||
def cmd_runs_list(args: argparse.Namespace) -> dict[str, Any]:
|
||||
runs_dir = args.runs_dir or args.root / "runs"
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user