From 4374ea0194e0a25f01c2696974b9f5faef82a7e3 Mon Sep 17 00:00:00 2001 From: Arnav Naval Date: Thu, 23 Apr 2026 23:44:04 -0500 Subject: [PATCH] fixing agent chat window --- backend/apps/agents/agents.py | 8 ++++---- backend/apps/settings/AppSettings.py | 1 + .../core/shared_structs/agent/AgentSnapshot.py | 10 +++++++--- frontend/src/app/pages/Settings/Settings.tsx | 17 ++++++++++++++++- frontend/src/shared/state/toolsSlice.ts | 4 ++-- 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/backend/apps/agents/agents.py b/backend/apps/agents/agents.py index 6b90ec12..67fbbcaf 100644 --- a/backend/apps/agents/agents.py +++ b/backend/apps/agents/agents.py @@ -144,10 +144,10 @@ async def get_session(session_id: str) -> dict: @agents.router.post("/launch_agent") async def launch_agent( - model: str = Body(), - mode: str = Body(), - system_prompt: str = Body(), - max_turns: int = Body(), + model: str = Body(default="sonnet"), + mode: str = Body(default="agent"), + system_prompt: str = Body(default=""), + max_turns: int = Body(default=100), dashboard_id: Optional[str] = Body(default=None), ) -> dict: agent: Agent = Agent( diff --git a/backend/apps/settings/AppSettings.py b/backend/apps/settings/AppSettings.py index 382332e3..15fbc33c 100644 --- a/backend/apps/settings/AppSettings.py +++ b/backend/apps/settings/AppSettings.py @@ -9,6 +9,7 @@ class AppSettings(BaseModel): default_model: str = "sonnet" default_mode: str = "agent" default_max_turns: Optional[int] = None + default_thinking_level: str = "auto" anthropic_api_key: Optional[str] = None # Dashboard / UI preferences diff --git a/backend/core/shared_structs/agent/AgentSnapshot.py b/backend/core/shared_structs/agent/AgentSnapshot.py index 0557464b..28927532 100644 --- a/backend/core/shared_structs/agent/AgentSnapshot.py +++ b/backend/core/shared_structs/agent/AgentSnapshot.py @@ -1,11 +1,11 @@ from pydantic import BaseModel, Field -from typing import Optional, List +from typing import Any, Optional, List from backend.core.shared_structs.agent.MessageLog import MessageLog from backend.core.shared_structs.agent.ApprovalRequest import ApprovalRequest class AgentSnapshot(BaseModel): """Wire-format representation of an Agent — no runtime fields (task, lock, on_event).""" - session_id: str + session_id: str = Field(..., serialization_alias="id") model: str mode: str status: str @@ -15,4 +15,8 @@ class AgentSnapshot(BaseModel): messages: MessageLog = Field(default_factory=MessageLog) pending_approvals: List[ApprovalRequest] = Field(default_factory=list) sub_agents: list = Field(default_factory=list) - sub_branches: list = Field(default_factory=list) \ No newline at end of file + sub_branches: list = Field(default_factory=list) + + def model_dump(self, **kwargs: Any) -> dict[str, Any]: + kwargs.setdefault("by_alias", True) + return super().model_dump(**kwargs) \ No newline at end of file diff --git a/frontend/src/app/pages/Settings/Settings.tsx b/frontend/src/app/pages/Settings/Settings.tsx index 4e843414..73ae46f7 100644 --- a/frontend/src/app/pages/Settings/Settings.tsx +++ b/frontend/src/app/pages/Settings/Settings.tsx @@ -1151,6 +1151,21 @@ const Settings: React.FC = () => { const [activeTab, setActiveTab] = useState<'general' | 'models' | 'usage' | 'commands'>('general'); const [form, setForm] = useState({ ...settings }); + const effectiveDefaultModel = useMemo(() => { + if (modelOptions.flat.some((m) => m.value === form.default_model)) { + return form.default_model; + } + return modelOptions.flat[0]?.value ?? form.default_model; + }, [modelOptions.flat, form.default_model]); + + // Sync form.default_model to effectiveDefaultModel when the saved model + // is no longer available (e.g., subscription disconnected, models changed). + useEffect(() => { + if (effectiveDefaultModel !== form.default_model) { + setForm((prev) => ({ ...prev, default_model: effectiveDefaultModel })); + } + }, [effectiveDefaultModel, form.default_model]); + // When the modal opens with a requested tab (e.g., from the warning // banner's "Configure models" link), switch to it. useEffect(() => { @@ -1469,7 +1484,7 @@ const Settings: React.FC = () => {