2126
2127
getOrCreateActiveClient(session: URI, client: { readonly clientId: string; readonly displayName?: string }): IActiveClient {
2129
>
const key = `${sessionId}\u0000${client.clientId}`;
2130
>
let handle = this._activeClientHandles.get(key);
2131
>
if (!handle) {
2132
>
handle = new ClaudeActiveClientHandle(
2133
>
client.clientId,
2134
>
client.displayName,
2135
>
() => this._findAnySession(sessionId)?.getClientTools(client.clientId) ?? [],
2136
>
tools => {
2137
>
this._logService.info(`[Claude:${sessionId}] active client ${client.clientId} tools=[${tools.map(t => t.name).join(', ') || '(none)'}]`);
2138
>
this._findAnySession(sessionId)?.setClientTools(client.clientId, tools);
2139
>
},
2140
>
customizations => { void this.syncClientCustomizations(session, client.clientId, [...customizations]); },
2141
>
);
2142
>
this._activeClientHandles.set(key, handle);
2143
>
}
2144
>
return handle;
2145
>
}
2146
2147
removeActiveClient(session: URI, clientId: string): void {