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"