File size: 1,158 Bytes
06357e7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | from __future__ import annotations
import argparse
import json
from dataclasses import asdict, is_dataclass
from typing import Any
def _jsonable(value: Any) -> Any:
if is_dataclass(value):
return {key: _jsonable(item) for key, item in asdict(value).items()}
if isinstance(value, dict):
return {str(key): _jsonable(item) for key, item in value.items()}
if isinstance(value, (list, tuple)):
return [_jsonable(item) for item in value]
return value
def main() -> None:
parser = argparse.ArgumentParser(prog="agent-process-dashboard")
parser.add_argument("--snapshot", action="store_true", help="Print a read-only JSON snapshot.")
parser.add_argument("--dry-run", action="store_true", help="Print cleanup candidates only.")
args = parser.parse_args()
if args.snapshot or args.dry_run:
from .snapshot import build_snapshot
snapshot = build_snapshot()
payload = snapshot.dry_run if args.dry_run else snapshot
print(json.dumps(_jsonable(payload), indent=2, sort_keys=True))
return
from .app import run
run()
if __name__ == "__main__":
main()
|