From db652a5998ec3f0ca424c90dbdc2fc59dc363906 Mon Sep 17 00:00:00 2001 From: Dillon DuPont Date: Thu, 28 Aug 2025 13:59:44 -0400 Subject: [PATCH] Added error output --- .../computer-server/computer_server/main.py | 38 +++++++++++-------- libs/typescript/agent/src/types.ts | 3 +- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/libs/python/computer-server/computer_server/main.py b/libs/python/computer-server/computer_server/main.py index 78a8fbcc..1cfd30d8 100644 --- a/libs/python/computer-server/computer_server/main.py +++ b/libs/python/computer-server/computer_server/main.py @@ -632,6 +632,8 @@ async def agent_response_endpoint( # return out # messages = inline_image_urls(messages) + error = None + with _EnvOverride(env_overrides): # Prepare tools: if caller did not pass tools, inject our DirectComputer tools = agent_kwargs.get("tools") @@ -645,26 +647,32 @@ async def agent_response_endpoint( total_usage: Dict[str, Any] = {} turns = 0 - async for result in agent.run(messages): - total_output += result["output"] - # Try to collect usage if present - if isinstance(result, dict) and "usage" in result and isinstance(result["usage"], dict): - # Merge usage counters - for k, v in result["usage"].items(): - if isinstance(v, (int, float)): - total_usage[k] = total_usage.get(k, 0) + v - else: - total_usage[k] = v - turns += 1 - if turns > 2: - break - + try: + async for result in agent.run(messages): + total_output += result["output"] + # Try to collect usage if present + if isinstance(result, dict) and "usage" in result and isinstance(result["usage"], dict): + # Merge usage counters + for k, v in result["usage"].items(): + if isinstance(v, (int, float)): + total_usage[k] = total_usage.get(k, 0) + v + else: + total_usage[k] = v + turns += 1 + if turns > 2: + break + except Exception as e: + logger.error(f"Error running agent: {str(e)}") + logger.error(traceback.format_exc()) + error = str(e) + # Build response payload payload = { - "success": True, "model": model, + "error": error, "output": total_output, "usage": total_usage, + "status": "completed" if not error else "failed" } # CORS: allow any origin diff --git a/libs/typescript/agent/src/types.ts b/libs/typescript/agent/src/types.ts index 85ea7d96..30e7340a 100644 --- a/libs/typescript/agent/src/types.ts +++ b/libs/typescript/agent/src/types.ts @@ -29,12 +29,13 @@ export interface AgentRequest { // #endregion - // #region Response // Response types export interface AgentResponse { output: AgentMessage[]; usage: Usage; + status: 'completed' | 'failed'; + error?: string; } // Usage information export interface Usage {