Fix MCP server None/null crashes in list/ready/stats (bd-172, fixes #79)

Add null safety checks in bd_daemon_client.py:
- list_issues(): Return empty array if issues_data is None
- ready(): Return empty array if issues_data is None
- stats(): Use empty dict if stats_data is None

This prevents TypeError crashes when daemon returns None/empty responses.

Amp-Thread-ID: https://ampcode.com/threads/T-072304c3-3a03-4091-92a9-9e16b4538227
Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
Steve Yegge
2025-10-19 23:23:33 -07:00
parent 24cd163afb
commit 095ebc70e6
2 changed files with 8 additions and 2 deletions

View File

@@ -340,6 +340,8 @@ class BdDaemonClient(BdClientBase):
data = await self._send_request("list", args)
issues_data = json.loads(data) if isinstance(data, str) else data
if issues_data is None:
return []
return [Issue(**issue) for issue in issues_data]
async def show(self, params: ShowIssueParams) -> Issue:
@@ -375,6 +377,8 @@ class BdDaemonClient(BdClientBase):
data = await self._send_request("ready", args)
issues_data = json.loads(data) if isinstance(data, str) else data
if issues_data is None:
return []
return [Issue(**issue) for issue in issues_data]
async def stats(self) -> Stats:
@@ -385,6 +389,8 @@ class BdDaemonClient(BdClientBase):
"""
data = await self._send_request("stats", {})
stats_data = json.loads(data) if isinstance(data, str) else data
if stats_data is None:
stats_data = {}
return Stats(**stats_data)
async def blocked(self) -> List[BlockedIssue]: