| import type { SessionEntry } from "../config/sessions.js"; | |
| import { toAgentRequestSessionKey } from "../routing/session-key.js"; | |
| export function resolvePreferredSessionKeyForSessionIdMatches( | |
| matches: Array<[string, SessionEntry]>, | |
| sessionId: string, | |
| ): string | undefined { | |
| if (matches.length === 0) { | |
| return undefined; | |
| } | |
| if (matches.length === 1) { | |
| return matches[0][0]; | |
| } | |
| const loweredSessionId = sessionId.trim().toLowerCase(); | |
| const structuralMatches = matches.filter(([storeKey]) => { | |
| const requestKey = toAgentRequestSessionKey(storeKey)?.toLowerCase(); | |
| return ( | |
| storeKey.toLowerCase().endsWith(`:${loweredSessionId}`) || | |
| requestKey === loweredSessionId || | |
| requestKey?.endsWith(`:${loweredSessionId}`) === true | |
| ); | |
| }); | |
| if (structuralMatches.length === 1) { | |
| return structuralMatches[0][0]; | |
| } | |
| const sortedMatches = [...matches].toSorted( | |
| (a, b) => (b[1]?.updatedAt ?? 0) - (a[1]?.updatedAt ?? 0), | |
| ); | |
| const [freshest, secondFreshest] = sortedMatches; | |
| if ((freshest?.[1]?.updatedAt ?? 0) > (secondFreshest?.[1]?.updatedAt ?? 0)) { | |
| return freshest?.[0]; | |
| } | |
| return undefined; | |
| } | |