From 9af2957ca0c83c717d2dd5e580f0b5480f81044c Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Sat, 24 Jan 2026 21:43:51 +0700 Subject: [PATCH] Update files --- .../app/src/hooks/use-agent-form-state.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/app/src/hooks/use-agent-form-state.ts b/packages/app/src/hooks/use-agent-form-state.ts index a18f37b15..337baefd1 100644 --- a/packages/app/src/hooks/use-agent-form-state.ts +++ b/packages/app/src/hooks/use-agent-form-state.ts @@ -9,6 +9,7 @@ import type { AgentProvider, } from "@server/server/agent/agent-sdk-types"; import { useSessionStore } from "@/stores/session-store"; +import { useDaemonRegistry } from "@/contexts/daemon-registry-context"; import { useFormPreferences, type FormPreferences } from "./use-form-preferences"; // Explicit overrides from URL params or "New Agent" button @@ -104,7 +105,8 @@ function resolveFormState( preferences: FormPreferences | null, availableModels: AgentModelDefinition[] | null, userModified: UserModifiedFields, - currentState: FormState + currentState: FormState, + validServerIds: Set ): FormState { // Start with current state - we only update non-user-modified fields const result = { ...currentState }; @@ -177,10 +179,11 @@ function resolveFormState( } // 4. Resolve serverId (independent) + // Only use stored serverId if the host still exists in the registry if (!userModified.serverId) { if (initialValues?.serverId !== undefined) { result.serverId = initialValues.serverId; - } else if (preferences?.serverId) { + } else if (preferences?.serverId && validServerIds.has(preferences.serverId)) { result.serverId = preferences.serverId; } // else keep current @@ -240,6 +243,14 @@ export function useAgentFormState( updateProviderPreferences, } = useFormPreferences(); + const { daemons } = useDaemonRegistry(); + + // Build a set of valid server IDs for preference validation + const validServerIds = useMemo( + () => new Set(daemons.map((d) => d.id)), + [daemons] + ); + // Track which fields the user has explicitly modified const [userModified, setUserModified] = useState(INITIAL_USER_MODIFIED); @@ -303,7 +314,8 @@ export function useAgentFormState( preferences, availableModels, userModified, - formStateRef.current + formStateRef.current, + validServerIds ); // Only update if something changed @@ -326,6 +338,7 @@ export function useAgentFormState( preferences, availableModels, userModified, + validServerIds, ]); // Persist inferred serverId so reloads keep the selection (e.g. URL serverId or first-time load).