diff --git a/src/renderer/src/components/right-sidebar/ai-vault-session-resume.ts b/src/renderer/src/components/right-sidebar/ai-vault-session-resume.ts index a166adf011c..9465144b705 100644 --- a/src/renderer/src/components/right-sidebar/ai-vault-session-resume.ts +++ b/src/renderer/src/components/right-sidebar/ai-vault-session-resume.ts @@ -9,6 +9,7 @@ import { type AiVaultSession } from '../../../../shared/ai-vault-types' import type { AppState } from '@/store/types' +import { getIndexedWorktreeMap } from '@/store/worktree-repo-index' import { translate } from '@/i18n/i18n' import { parseWorkspaceKey } from '../../../../shared/workspace-scope' import { @@ -145,9 +146,7 @@ export function isKnownAiVaultResumeWorkspaceTarget( } const worktreeId = workspaceKey?.type === 'worktree' ? workspaceKey.worktreeId : workspaceId - return Object.values(state.worktreesByRepo).some((worktrees) => - worktrees.some((worktree) => worktree.id === worktreeId) - ) + return getIndexedWorktreeMap(state.worktreesByRepo).has(worktreeId) } function resolveSupportedResumeWorktreeId(args: { diff --git a/src/renderer/src/lib/ai-vault-resume-target.ts b/src/renderer/src/lib/ai-vault-resume-target.ts index f52e26c62e8..3c9206ae372 100644 --- a/src/renderer/src/lib/ai-vault-resume-target.ts +++ b/src/renderer/src/lib/ai-vault-resume-target.ts @@ -11,6 +11,7 @@ import { getRepoIdFromWorktreeId } from '../../../shared/worktree-id' import { parseWorkspaceKey } from '../../../shared/workspace-scope' import { isWslUncPath } from '../../../shared/wsl-paths' import type { AppState } from '@/store/types' +import { getIndexedWorktreeMap } from '@/store/worktree-repo-index' import { getFolderWorkspaceCandidateRepos } from './folder-workspace-connection' export type AiVaultResumeTargetStatus = 'local' | 'ssh' | 'runtime' | 'unknown' @@ -132,9 +133,7 @@ export function getAiVaultResumeWorkspaceExecutionHostId( } const worktreeId = workspaceKey?.type === 'worktree' ? workspaceKey.worktreeId : workspaceId - const worktree = Object.values(state.worktreesByRepo ?? {}) - .flat() - .find((candidate) => candidate.id === worktreeId) + const worktree = getIndexedWorktreeMap(state.worktreesByRepo ?? {}).get(worktreeId) const worktreeHostId = normalizeExecutionHostId(worktree?.hostId) if (worktreeHostId) { return worktreeHostId @@ -158,9 +157,7 @@ export function getAiVaultResumeWorkspaceTargetStatus( } const worktreeId = workspaceKey?.type === 'worktree' ? workspaceKey.worktreeId : workspaceId - const worktree = Object.values(state.worktreesByRepo ?? {}) - .flat() - .find((candidate) => candidate.id === worktreeId) + const worktree = getIndexedWorktreeMap(state.worktreesByRepo ?? {}).get(worktreeId) const worktreeHost = getAiVaultResumeExecutionHostTargetStatus(worktree?.hostId) if (worktreeHost !== 'unknown') { return worktreeHost