http service with health, extension listing, profile validation, run planning, async run jobs, job inspection, and report retrieval

This commit is contained in:
2026-05-07 22:19:10 +02:00
parent 3ae6fd4140
commit a3ea11139c
12 changed files with 1028 additions and 13 deletions

View File

@@ -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 {