@@ -99,6 +99,35 @@ function isGlobalSessionKey(value: string | null | undefined): boolean {
9999 return ( value ?? "" ) . trim ( ) . toLowerCase ( ) === "global" ;
100100}
101101
102+ function resolveSelectedGlobalAliasAgentId (
103+ state : SessionsState ,
104+ key : string | null | undefined ,
105+ ) : string | null {
106+ const parsed = parseAgentSessionKey ( key ) ;
107+ if ( ! parsed ?. agentId ) {
108+ return null ;
109+ }
110+ const rest = parsed . rest . toLowerCase ( ) ;
111+ if ( rest === "global" ) {
112+ return normalizeAgentId ( parsed . agentId ) ;
113+ }
114+ if ( rest !== "main" ) {
115+ return null ;
116+ }
117+ const row = state . sessionsResult ?. sessions . find ( ( session ) => session . key === key ) ;
118+ return row ?. kind === "global" ? normalizeAgentId ( parsed . agentId ) : null ;
119+ }
120+
121+ function resolveSelectedSessionMessageSubscriptionAgentId (
122+ state : SessionsState ,
123+ key : string ,
124+ ) : string | null {
125+ if ( isGlobalSessionKey ( key ) ) {
126+ return resolveSelectedGlobalAgentId ( state ) ;
127+ }
128+ return resolveSelectedGlobalAliasAgentId ( state , key ) ;
129+ }
130+
102131function resolveSelectedGlobalAgentId ( state : SessionsState ) : string {
103132 const parsed = parseAgentSessionKey ( state . sessionKey ) ;
104133 if ( parsed ?. agentId ) {
@@ -158,16 +187,18 @@ function sessionsChangedGlobalAgentMatches(
158187}
159188
160189function buildSelectedSessionMessageSubscriptionParams ( state : SessionsState , key : string ) {
190+ const agentId = resolveSelectedSessionMessageSubscriptionAgentId ( state , key ) ;
161191 return {
162192 key,
163- ...( isGlobalSessionKey ( key ) ? { agentId : resolveSelectedGlobalAgentId ( state ) } : { } ) ,
193+ ...( agentId ? { agentId } : { } ) ,
164194 } ;
165195}
166196
167197function buildSelectedSessionRequestParams ( state : SessionsState , key : string ) {
198+ const agentId = resolveSelectedSessionMessageSubscriptionAgentId ( state , key ) ;
168199 return {
169200 key,
170- ...( isGlobalSessionKey ( key ) ? { agentId : resolveSelectedGlobalAgentId ( state ) } : { } ) ,
201+ ...( agentId ? { agentId } : { } ) ,
171202 } ;
172203}
173204
@@ -192,8 +223,8 @@ function isCurrentSelectedSessionMessageSubscriptionSync(
192223 state . client === params . client &&
193224 state . connected &&
194225 state . sessionKey . trim ( ) === params . requestedKey &&
195- ( ! isGlobalSessionKey ( params . requestedKey ) ||
196- resolveSelectedGlobalAgentId ( state ) === ( params . requestedAgentId ?? null ) )
226+ resolveSelectedSessionMessageSubscriptionAgentId ( state , params . requestedKey ) ===
227+ ( params . requestedAgentId ?? null )
197228 ) ;
198229}
199230
@@ -677,11 +708,9 @@ export async function syncSelectedSessionMessageSubscription(
677708 ) ;
678709 const previousCanonicalKey = normalizeSubscriptionKey ( state . chatSessionMessageSubscriptionKey ) ;
679710 const previousSelectedKey = previousRequestedKey ?? previousCanonicalKey ;
680- const nextSubscriptionAgentId = isGlobalSessionKey ( nextKey )
681- ? resolveSelectedGlobalAgentId ( state )
682- : null ;
711+ const nextSubscriptionAgentId = resolveSelectedSessionMessageSubscriptionAgentId ( state , nextKey ) ;
683712 const selectedAgentChanged =
684- isGlobalSessionKey ( nextKey ) &&
713+ nextSubscriptionAgentId !== null &&
685714 previousSelectedKey === nextKey &&
686715 ( state . chatSessionMessageSubscriptionAgentId ?? null ) !== nextSubscriptionAgentId ;
687716 const selectedKeyChanged = previousSelectedKey !== null && previousSelectedKey !== nextKey ;
0 commit comments