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()