fixing agent chat window

This commit is contained in:
Arnav Naval
2026-04-23 23:44:04 -05:00
parent 759a9baff3
commit 4374ea0194
5 changed files with 30 additions and 10 deletions
+4 -4
View File
@@ -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(
+1
View File
@@ -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
@@ -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)
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)
+16 -1
View File
@@ -1151,6 +1151,21 @@ const Settings: React.FC = () => {
const [activeTab, setActiveTab] = useState<'general' | 'models' | 'usage' | 'commands'>('general');
const [form, setForm] = useState<AppSettings>({ ...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 = () => {
</Box>
<FormControl size="small" sx={{ minWidth: 220 }}>
<Select
value={form.default_model}
value={effectiveDefaultModel}
onChange={(e) => setForm({ ...form, default_model: e.target.value })}
sx={{ fontSize: '0.85rem' }}
MenuProps={{ PaperProps: { sx: { bgcolor: c.bg.surface, color: c.text.primary } } }}
+2 -2
View File
@@ -158,7 +158,7 @@ export const discoverTools = createAsyncThunk(
);
export const fetchBuiltinPermissions = createAsyncThunk('tools/fetchBuiltinPermissions', async () => {
const res = await fetch(`${TOOLS_API}/builtin/permissions`);
const res = await fetch(`${TOOLS_API}/get_builtin_permissions`);
const data = await res.json();
return data.permissions as Record<string, string>;
});
@@ -166,7 +166,7 @@ export const fetchBuiltinPermissions = createAsyncThunk('tools/fetchBuiltinPermi
export const updateBuiltinPermissions = createAsyncThunk(
'tools/updateBuiltinPermissions',
async (permissions: Record<string, string>) => {
const res = await fetch(`${TOOLS_API}/builtin/permissions`, {
const res = await fetch(`${TOOLS_API}/update_builtin_permissions`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ permissions }),