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:
@@ -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]:
|
||||
|
||||
Reference in New Issue
Block a user