personal memory agent
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add callosum connected client count to supervisor status

Files changed: think/callosum.py, think/supervisor.py, think/health_cli.py, tests/test_health_cli.py

+12
+2
tests/test_health_cli.py
··· 31 31 "tasks": [{"name": "dream", "duration_seconds": 12}], 32 32 "queues": {"indexer": 3, "planner": 0}, 33 33 "stale_heartbeats": [], 34 + "callosum_clients": 5, 34 35 } 35 36 36 37 print_status(status) ··· 46 47 assert "dream" in output 47 48 assert "queued indexer" in output 48 49 assert "Heartbeat: ok" in output 50 + assert "Callosum: 5 clients" in output 49 51 50 52 51 53 def test_health_check_timeout(tmp_path, monkeypatch, capsys):
+5
think/callosum.py
··· 43 43 self.broadcast_queue: queue.Queue = queue.Queue(maxsize=10000) 44 44 self.writer_thread: threading.Thread | None = None 45 45 46 + def client_count(self) -> int: 47 + """Return the number of currently connected clients.""" 48 + with self.lock: 49 + return len(self.clients) 50 + 46 51 def start(self) -> None: 47 52 """Start the broadcast server.""" 48 53 # Ensure health directory exists
+2
think/health_cli.py
··· 88 88 print(f"Heartbeat: STALE ({', '.join(stale)})") 89 89 else: 90 90 print("Heartbeat: ok") 91 + callosum_clients = status.get("callosum_clients", 0) 92 + print(f"Callosum: {callosum_clients} clients") 91 93 92 94 93 95 def health_check() -> int:
+3
think/supervisor.py
··· 779 779 780 780 # Scheduled tasks 781 781 schedules = scheduler.collect_status() 782 + # Connected callosum clients 783 + callosum_clients = _callosum_server.client_count() if _callosum_server else 0 782 784 783 785 return { 784 786 "services": services, ··· 787 789 "queues": queues, 788 790 "stale_heartbeats": stale, 789 791 "schedules": schedules, 792 + "callosum_clients": callosum_clients, 790 793 } 791 794 792 795