diff --git a/packages/app/src/components/create-agent-modal.tsx b/packages/app/src/components/create-agent-modal.tsx index 94769dcc6..67e08f337 100644 --- a/packages/app/src/components/create-agent-modal.tsx +++ b/packages/app/src/components/create-agent-modal.tsx @@ -250,7 +250,7 @@ function AgentFlowModal({ const isImportFlow = flow === "import"; const isCreateFlow = !isImportFlow; - const { recentPaths, addRecentPath } = useRecentPaths(); + const { addRecentPath } = useRecentPaths(); const { connectionStates } = useDaemonConnections(); const daemonEntries = useMemo(() => Array.from(connectionStates.values()), [connectionStates]); const initialServerId = useMemo(() => { @@ -351,6 +351,18 @@ function AgentFlowModal({ const agents = session?.agents; const providerModels = session?.providerModels; const requestProviderModels = session?.requestProviderModels; + const agentWorkingDirSuggestions = useMemo(() => { + if (!selectedServerId || !agents) { + return []; + } + const uniquePaths = new Set(); + agents.forEach((agent) => { + if (agent.cwd) { + uniquePaths.add(agent.cwd); + } + }); + return Array.from(uniquePaths); + }, [agents, selectedServerId]); const gitRepoInfoRequest = useDaemonRequest< { cwd: string }, RepoInfoState, @@ -2167,7 +2179,7 @@ function AgentFlowModal({ onOpen={() => openDropdownSheet("workingDir")} onClose={closeDropdown} disabled={isLoading} - recentPaths={recentPaths} + suggestedPaths={agentWorkingDirSuggestions} onSelectPath={handleUserWorkingDirChange} /> @@ -2755,7 +2767,7 @@ interface WorkingDirectoryDropdownProps { onOpen: () => void; onClose: () => void; disabled: boolean; - recentPaths: string[]; + suggestedPaths: string[]; onSelectPath: (value: string) => void; } @@ -2766,7 +2778,7 @@ function WorkingDirectoryDropdown({ onOpen, onClose, disabled, - recentPaths, + suggestedPaths, onSelectPath, }: WorkingDirectoryDropdownProps): ReactElement { const inputRef = useRef(null); @@ -2782,14 +2794,14 @@ function WorkingDirectoryDropdown({ const normalizedSearch = searchQuery.trim().toLowerCase(); const filteredPaths = useMemo(() => { if (!normalizedSearch) { - return recentPaths; + return suggestedPaths; } - return recentPaths.filter((path) => + return suggestedPaths.filter((path) => path.toLowerCase().includes(normalizedSearch) ); - }, [recentPaths, normalizedSearch]); + }, [suggestedPaths, normalizedSearch]); - const hasRecentPaths = recentPaths.length > 0; + const hasSuggestedPaths = suggestedPaths.length > 0; const hasMatches = filteredPaths.length > 0; const sanitizedSearchValue = searchQuery.trim(); const showCustomOption = sanitizedSearchValue.length > 0; @@ -2812,9 +2824,9 @@ function WorkingDirectoryDropdown({ disabled={disabled} errorMessage={errorMessage || undefined} helperText={ - hasRecentPaths - ? "Search saved directories or paste a new path." - : "No saved directories yet - search to add one." + hasSuggestedPaths + ? "Search directories from existing agents or paste a new path." + : "No agent directories yet - search to add one." } /> @@ -2828,9 +2840,9 @@ function WorkingDirectoryDropdown({ autoCapitalize="none" autoCorrect={false} /> - {!hasRecentPaths && !showCustomOption ? ( + {!hasSuggestedPaths && !showCustomOption ? ( - We will remember the directories you use most often. + We'll suggest directories from agents on this host once they exist. ) : null} {showCustomOption ? ( @@ -2869,9 +2881,9 @@ function WorkingDirectoryDropdown({ ); })} - ) : hasRecentPaths ? ( + ) : hasSuggestedPaths ? ( - No recent paths match your search. + No agent directories match your search. ) : null}