diff --git a/workspace/builtin_tools/a2a_tools.py b/workspace/builtin_tools/a2a_tools.py index df4f9d78..e72b4ccc 100644 --- a/workspace/builtin_tools/a2a_tools.py +++ b/workspace/builtin_tools/a2a_tools.py @@ -66,8 +66,19 @@ async def delegate_task(workspace_id: str, task: str) -> str: ) data = a2a_resp.json() if "result" in data: - parts = data["result"].get("parts", []) - return parts[0].get("text", "(no text)") if parts else str(data["result"]) + result = data["result"] + # String result: return it directly (handles empty-parts case + # where the platform returns {"result": "my response"}). + if isinstance(result, str): + return result + # Dict result: extract text from parts[0], fall back to str(result). + if isinstance(result, dict): + parts = result.get("parts", []) + if parts and isinstance(parts[0], dict): + return parts[0].get("text", "(no text)") + return str(result) + # Any other type: fall back to string representation. + return str(result) elif "error" in data: return f"Error: {data['error'].get('message', str(data['error']))}" return str(data)