mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2025-08-21 04:52:56 +00:00
Refactored startup code of the plugin factory & handle config plugins as well
This commit is contained in:
parent
00778752c6
commit
83d7ab6917
@ -22,17 +22,14 @@ public static partial class PluginFactory
|
|||||||
var baseLanguagePluginId = InternalPlugin.LANGUAGE_EN_US.MetaData().Id;
|
var baseLanguagePluginId = InternalPlugin.LANGUAGE_EN_US.MetaData().Id;
|
||||||
var baseLanguagePluginMetaData = AVAILABLE_PLUGINS.FirstOrDefault(p => p.Id == baseLanguagePluginId);
|
var baseLanguagePluginMetaData = AVAILABLE_PLUGINS.FirstOrDefault(p => p.Id == baseLanguagePluginId);
|
||||||
if (baseLanguagePluginMetaData is null)
|
if (baseLanguagePluginMetaData is null)
|
||||||
{
|
|
||||||
LOG.LogError($"Was not able to find the base language plugin: Id='{baseLanguagePluginId}'. Please check your installation.");
|
LOG.LogError($"Was not able to find the base language plugin: Id='{baseLanguagePluginId}'. Please check your installation.");
|
||||||
return;
|
else
|
||||||
}
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
var startedBasePlugin = await Start(baseLanguagePluginMetaData, cancellationToken);
|
var startedBasePlugin = await Start(baseLanguagePluginMetaData, cancellationToken);
|
||||||
if (startedBasePlugin is NoPlugin noPlugin)
|
if (startedBasePlugin is NoPlugin noPlugin)
|
||||||
{
|
|
||||||
LOG.LogError($"Was not able to start the base language plugin: Id='{baseLanguagePluginId}'. Reason: {noPlugin.Issues.First()}");
|
LOG.LogError($"Was not able to start the base language plugin: Id='{baseLanguagePluginId}'. Reason: {noPlugin.Issues.First()}");
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (startedBasePlugin is PluginLanguage languagePlugin)
|
if (startedBasePlugin is PluginLanguage languagePlugin)
|
||||||
{
|
{
|
||||||
@ -41,9 +38,13 @@ public static partial class PluginFactory
|
|||||||
LOG.LogInformation($"Successfully started the base language plugin: Id='{languagePlugin.Id}', Type='{languagePlugin.Type}', Name='{languagePlugin.Name}', Version='{languagePlugin.Version}'");
|
LOG.LogInformation($"Successfully started the base language plugin: Id='{languagePlugin.Id}', Type='{languagePlugin.Type}', Name='{languagePlugin.Name}', Version='{languagePlugin.Version}'");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
LOG.LogError($"Was not able to start the base language plugin: Id='{baseLanguagePluginId}'. Reason: {string.Join("; ", startedBasePlugin.Issues)}");
|
LOG.LogError($"Was not able to start the base language plugin: Id='{baseLanguagePluginId}'. Reason: {string.Join("; ", startedBasePlugin.Issues)}");
|
||||||
return;
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOG.LogError(e, $"An error occurred while starting the base language plugin: Id='{baseLanguagePluginId}'.");
|
||||||
|
BASE_LANGUAGE_PLUGIN = NoPluginLanguage.INSTANCE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -52,19 +53,29 @@ public static partial class PluginFactory
|
|||||||
foreach (var availablePlugin in AVAILABLE_PLUGINS)
|
foreach (var availablePlugin in AVAILABLE_PLUGINS)
|
||||||
{
|
{
|
||||||
if(cancellationToken.IsCancellationRequested)
|
if(cancellationToken.IsCancellationRequested)
|
||||||
|
{
|
||||||
|
LOG.LogWarning("Cancellation requested while starting plugins. Stopping the plugin startup process. Probably due to a timeout.");
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (availablePlugin.Id == baseLanguagePluginId)
|
if (availablePlugin.Id == baseLanguagePluginId)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (availablePlugin.IsInternal || SETTINGS_MANAGER.IsPluginEnabled(availablePlugin))
|
try
|
||||||
|
{
|
||||||
|
if (availablePlugin.IsInternal || SETTINGS_MANAGER.IsPluginEnabled(availablePlugin) || availablePlugin.Type == PluginType.CONFIGURATION)
|
||||||
if(await Start(availablePlugin, cancellationToken) is { IsValid: true } plugin)
|
if(await Start(availablePlugin, cancellationToken) is { IsValid: true } plugin)
|
||||||
RUNNING_PLUGINS.Add(plugin);
|
RUNNING_PLUGINS.Add(plugin);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOG.LogError(e, $"An error occurred while starting the plugin: Id='{availablePlugin.Id}', Type='{availablePlugin.Type}', Name='{availablePlugin.Name}', Version='{availablePlugin.Version}'.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Inform all components that the plugins have been reloaded or started:
|
// Inform all components that the plugins have been reloaded or started:
|
||||||
await MessageBus.INSTANCE.SendMessage<bool>(null, Event.PLUGINS_RELOADED);
|
await MessageBus.INSTANCE.SendMessage<bool>(null, Event.PLUGINS_RELOADED);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private static async Task<PluginBase> Start(IAvailablePlugin meta, CancellationToken cancellationToken = default)
|
private static async Task<PluginBase> Start(IAvailablePlugin meta, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
@ -91,6 +102,9 @@ public static partial class PluginFactory
|
|||||||
if (plugin is PluginLanguage languagePlugin && BASE_LANGUAGE_PLUGIN != NoPluginLanguage.INSTANCE)
|
if (plugin is PluginLanguage languagePlugin && BASE_LANGUAGE_PLUGIN != NoPluginLanguage.INSTANCE)
|
||||||
languagePlugin.SetBaseLanguage(BASE_LANGUAGE_PLUGIN);
|
languagePlugin.SetBaseLanguage(BASE_LANGUAGE_PLUGIN);
|
||||||
|
|
||||||
|
if(plugin is PluginConfiguration configPlugin)
|
||||||
|
await configPlugin.InitializeAsync();
|
||||||
|
|
||||||
LOG.LogInformation($"Successfully started plugin: Id='{plugin.Id}', Type='{plugin.Type}', Name='{plugin.Name}', Version='{plugin.Version}'");
|
LOG.LogInformation($"Successfully started plugin: Id='{plugin.Id}', Type='{plugin.Type}', Name='{plugin.Name}', Version='{plugin.Version}'");
|
||||||
return plugin;
|
return plugin;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user