smlflg's picture
Initial public upload from Projekte/agent-process-dashboard
06357e7 verified
Raw History Blame Contribute Delete
1.16 kB
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()