mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-09-11 20:27:44 +02:00
fixing agent chat window
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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)
|
||||
@@ -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 } } }}
|
||||
|
||||
@@ -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 }),
|
||||
|
||||
Reference in New Issue
Block a user