From 826ab6ad2aaf0c425ca743330a8e99c19de1f1eb Mon Sep 17 00:00:00 2001 From: Zamil Majdy Date: Wed, 18 Feb 2026 21:17:25 +0530 Subject: [PATCH] fix(platform/copilot): address PR review comments - Extract reason from decomposition_result in vague_goal path instead of hardcoding - Change goal_type field to Literal["vague", "unachievable"] for stronger typing - Add reason prop to SuggestedGoalCard and display it - Pass reason to SuggestedGoalCard in CreateAgent - Add enum constraint to goal_type in openapi.json schema --- .../backend/backend/copilot/tools/create_agent.py | 5 ++++- autogpt_platform/backend/backend/copilot/tools/models.py | 4 ++-- .../app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx | 1 + .../tools/CreateAgent/components/SuggestedGoalCard.tsx | 4 +++- autogpt_platform/frontend/src/app/api/openapi.json | 1 + 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/autogpt_platform/backend/backend/copilot/tools/create_agent.py b/autogpt_platform/backend/backend/copilot/tools/create_agent.py index 4f447d3dc3..efb7faa99e 100644 --- a/autogpt_platform/backend/backend/copilot/tools/create_agent.py +++ b/autogpt_platform/backend/backend/copilot/tools/create_agent.py @@ -200,10 +200,13 @@ class CreateAgentTool(BaseTool): if decomposition_result.get("type") == "vague_goal": suggested = decomposition_result.get("suggested_goal", "") + reason = decomposition_result.get( + "reason", "The goal needs more specific details" + ) return SuggestedGoalResponse( message="The goal is too vague to create a specific workflow.", suggested_goal=suggested, - reason="The goal needs more specific details", + reason=reason, original_goal=description, goal_type="vague", session_id=session_id, diff --git a/autogpt_platform/backend/backend/copilot/tools/models.py b/autogpt_platform/backend/backend/copilot/tools/models.py index bd6716daa4..f1a350dd23 100644 --- a/autogpt_platform/backend/backend/copilot/tools/models.py +++ b/autogpt_platform/backend/backend/copilot/tools/models.py @@ -2,7 +2,7 @@ from datetime import datetime from enum import Enum -from typing import Any +from typing import Any, Literal from pydantic import BaseModel, Field @@ -309,7 +309,7 @@ class SuggestedGoalResponse(ToolResponseBase): original_goal: str = Field( default="", description="The user's original goal for context" ) - goal_type: str = Field( + goal_type: Literal["vague", "unachievable"] = Field( default="vague", description="Type: 'vague' or 'unachievable'" ) diff --git a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx index 6215f8796c..7741647f70 100644 --- a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx +++ b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx @@ -263,6 +263,7 @@ export function CreateAgentTool({ part }: Props) { diff --git a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/SuggestedGoalCard.tsx b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/SuggestedGoalCard.tsx index 6e1400c301..9de4240881 100644 --- a/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/SuggestedGoalCard.tsx +++ b/autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/SuggestedGoalCard.tsx @@ -7,6 +7,7 @@ import { ArrowRightIcon, LightbulbIcon } from "@phosphor-icons/react"; interface Props { message: string; suggestedGoal: string; + reason?: string; goalType: string; onUseSuggestedGoal: (goal: string) => void; } @@ -14,6 +15,7 @@ interface Props { export function SuggestedGoalCard({ message, suggestedGoal, + reason, goalType, onUseSuggestedGoal, }: Props) { @@ -33,7 +35,7 @@ export function SuggestedGoalCard({ : "Goal needs more detail"} - {message} + {reason || message} diff --git a/autogpt_platform/frontend/src/app/api/openapi.json b/autogpt_platform/frontend/src/app/api/openapi.json index 359a38addc..5315f416ca 100644 --- a/autogpt_platform/frontend/src/app/api/openapi.json +++ b/autogpt_platform/frontend/src/app/api/openapi.json @@ -11709,6 +11709,7 @@ }, "goal_type": { "type": "string", + "enum": ["vague", "unachievable"], "title": "Goal Type", "description": "Type: 'vague' or 'unachievable'", "default": "vague"