From a04c1fa9783cbbca88a778239ac20b83cc7ff326 Mon Sep 17 00:00:00 2001 From: Zamil Majdy Date: Fri, 30 Jan 2026 11:49:57 -0600 Subject: [PATCH] fix: simplify settings parsing and reset widget state on session change - Simplify _parse_settings to handle dict/str/None types only - Reset ClarificationQuestionsWidget answers and isSubmitted when sessionId changes --- .../backend/api/features/library/model.py | 18 +++++++++++++----- .../ClarificationQuestionsWidget.tsx | 13 +++++++++++-- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/autogpt_platform/backend/backend/api/features/library/model.py b/autogpt_platform/backend/backend/api/features/library/model.py index a29fe7e60f..037e07381a 100644 --- a/autogpt_platform/backend/backend/api/features/library/model.py +++ b/autogpt_platform/backend/backend/api/features/library/model.py @@ -52,6 +52,18 @@ class RecentExecution(pydantic.BaseModel): activity_summary: str | None = None +def _parse_settings(settings: dict | str | None) -> GraphSettings: + """Parse settings from database, handling both dict and string formats.""" + if settings is None: + return GraphSettings() + try: + if isinstance(settings, str): + settings = json_loads(settings) + return GraphSettings.model_validate(settings) + except Exception: + return GraphSettings() + + class LibraryAgent(pydantic.BaseModel): """ Represents an agent in the library, including metadata for display and @@ -245,11 +257,7 @@ class LibraryAgent(pydantic.BaseModel): is_latest_version=is_latest_version, is_favorite=agent.isFavorite, recommended_schedule_cron=agent.AgentGraph.recommendedScheduleCron, - settings=GraphSettings.model_validate( - json_loads(agent.settings) - if isinstance(agent.settings, str) - else agent.settings - ), + settings=_parse_settings(agent.settings), marketplace_listing=marketplace_listing_data, ) diff --git a/autogpt_platform/frontend/src/components/contextual/Chat/components/ClarificationQuestionsWidget/ClarificationQuestionsWidget.tsx b/autogpt_platform/frontend/src/components/contextual/Chat/components/ClarificationQuestionsWidget/ClarificationQuestionsWidget.tsx index fe8931fe0b..40da343bf7 100644 --- a/autogpt_platform/frontend/src/components/contextual/Chat/components/ClarificationQuestionsWidget/ClarificationQuestionsWidget.tsx +++ b/autogpt_platform/frontend/src/components/contextual/Chat/components/ClarificationQuestionsWidget/ClarificationQuestionsWidget.tsx @@ -41,16 +41,25 @@ export function ClarificationQuestionsWidget({ useEffect(() => { const storageKey = getStorageKey(sessionId); - if (!storageKey) return; + if (!storageKey) { + setAnswers({}); + setIsSubmitted(false); + return; + } try { const saved = localStorage.getItem(storageKey); if (saved) { const parsed = JSON.parse(saved) as Record; setAnswers(parsed); + setIsSubmitted(false); + } else { + setAnswers({}); + setIsSubmitted(false); } } catch { - // Ignore parse errors + setAnswers({}); + setIsSubmitted(false); } }, [sessionId]);