4027
/** Returns the parsed plugins currently enabled for this session, awaiting any pending sync. */
4028
public async getAppliedPlugins(): Promise<readonly ICopilotPluginInfo[]> {
4030
>
const [host] = await Promise.all([
4031
>
this._parent.hostSync().catch(err => {
4032
this._logService.warn('[Copilot:SessionPluginController] Host customization update failed', err);
4033
return this._parent.hostCustomizations();
4035
>
...[...this._clients.values()].map(client => client.sync.catch(err => {
4036
this._logService.warn('[Copilot:SessionPluginController] Client customization sync failed', err);
4037
return client.customizations;
4039
>
entry?.whenSettled(),
4040
>
]);
4041
>
4042
>
const discovered = entry?.currentCustomizations() ?? [];
4043
>
const sessionPlugin = discovered.some(customization => this._isEnabled(customization)) ? mapToParsedPlugin(discovered) : undefined;
4044
>
const sessionPlugins: IParsedPlugin[] = sessionPlugin ? [sessionPlugin] : [];
4045
>
4046
>
return [
4047
>
...host.filter(item => !!item.plugin && this._isEnabled(item.customization))
4048
>
.map(item => ({ ...item.plugin!, pluginDir: item.pluginDir })),
4049
>
...this._flattenClientCustomizations().filter(item => !!item.plugin && this._isEnabled(item.customization))
4050
>
.map(item => ({ ...item.plugin!, pluginDir: item.pluginDir })),
4051
>
...sessionPlugins,
4052
>
];
4053
>
}
4054
4055
/**