Skip to content

Commit 4ca7f80

Browse files
improve error message
1 parent 78523b4 commit 4ca7f80

2 files changed

Lines changed: 24 additions & 9 deletions

File tree

src/askui/tools/askui/agent_os_server_manager.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,19 @@ def get(self, computer_id: str) -> AgentOsServer:
139139
"""
140140
return self._servers[self._index_of(computer_id)]
141141

142+
def get_by_session_guid(self, session_guid: str) -> AgentOsServer | None:
143+
"""
144+
Return the registered server with the given `session_guid`, or `None` if
145+
no such server is registered.
146+
147+
Intended for internal lookups (e.g. mapping a gRPC session GUID back to
148+
its server during teardown). For user-facing selection, prefer `get`.
149+
"""
150+
for server in self._servers:
151+
if server.session_guid == session_guid:
152+
return server
153+
return None
154+
142155
def switch(self, computer_id: str) -> AgentOsServer:
143156
"""
144157
Set the active server by its `computer_id`.
@@ -161,10 +174,7 @@ def active(self) -> AgentOsServer | None:
161174
"""The currently active server, or `None` if no servers are registered."""
162175
if self._active_session_guid is None:
163176
return None
164-
for server in self._servers:
165-
if server.session_guid == self._active_session_guid:
166-
return server
167-
return None
177+
return self.get_by_session_guid(self._active_session_guid)
168178

169179
def __len__(self) -> int:
170180
return len(self._servers)

src/askui/tools/askui/askui_controller.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -386,12 +386,20 @@ def _connect_server(self, server: AgentOsServer) -> None:
386386
stub.SetActiveDisplay(
387387
controller_v1_pbs.Request_SetActiveDisplay(displayID=server.display)
388388
)
389-
except Exception:
389+
except Exception as e:
390390
try:
391391
channel.close()
392392
finally:
393393
if started_process:
394394
server.stop()
395+
if hasattr(e, "add_note"):
396+
e.add_note(
397+
f"While connecting to Agent OS server {server.description!r} "
398+
f"(computer_id={server.computer_id!r}, "
399+
f"session_guid={server.session_guid}, "
400+
f"display={server.display}, "
401+
f"address={server.address})"
402+
)
395403
raise
396404
self._connections[server.session_guid] = _Connection(
397405
channel=channel,
@@ -484,10 +492,7 @@ def _disconnect_server(self, session_guid: str) -> None:
484492
except Exception: # noqa: BLE001
485493
logger.exception("Error closing channel for controller %s", session_guid)
486494
if conn.started_process:
487-
server = next(
488-
(s for s in self._manager.list() if s.session_guid == session_guid),
489-
None,
490-
)
495+
server = self._manager.get_by_session_guid(session_guid)
491496
if server is None:
492497
return
493498
try:

0 commit comments

Comments
 (0)