diff --git a/app/MindWork AI Studio/Pages/Information.razor b/app/MindWork AI Studio/Pages/Information.razor
index cbed29c4..67ac1bdb 100644
--- a/app/MindWork AI Studio/Pages/Information.razor
+++ b/app/MindWork AI Studio/Pages/Information.razor
@@ -158,6 +158,31 @@
break;
}
+ @*
+ A staged test configuration speaks for the organization without anybody
+ having deployed it. We report it without the details having to be expanded:
+ *@
+ @if (this.testConfigPlugins.Count > 0)
+ {
+
+ @T("A test configuration is active. It acts like a configuration of your organization and may, for example, approve assistant plugins. AI Studio removes it the next time you start the app.")
+
+ @foreach (var testConfigPlugin in this.testConfigPlugins)
+ {
+
+ }
+ }
+ else if (PluginFactory.RemovedTestConfigurationsAtStartup > 0)
+ {
+
+ @string.Format(T("AI Studio removed {0} test configuration(s) while starting. A test configuration is valid for one session: place it again while AI Studio is running."), PluginFactory.RemovedTestConfigurationsAtStartup)
+
+ }
+
@if (this.HasEnterpriseConfigurationDetails)
{
configPlugins = PluginFactory.AvailablePlugins
- .Where(x => x.Type is PluginType.CONFIGURATION)
- .OfType()
- .ToList();
+ private List configPlugins = [];
+
+ ///
+ /// The configuration plugins an administrator staged for a test.
+ ///
+ ///
+ /// They are kept apart from the other configuration plugins: nobody deployed them, yet they act
+ /// on behalf of the organization while they are loaded. That deserves its own note.
+ ///
+ private List testConfigPlugins = [];
private List enterpriseEnvironments = EnterpriseEnvironmentService.CURRENT_ENVIRONMENTS.ToList();
@@ -201,11 +207,14 @@ public partial class Information : MSGComponentBase
private void RefreshEnterpriseConfigurationState()
{
- this.configPlugins = PluginFactory.AvailablePlugins
+ var availableConfigPlugins = PluginFactory.AvailablePlugins
.Where(x => x.Type is PluginType.CONFIGURATION)
.OfType()
.ToList();
+ this.testConfigPlugins = availableConfigPlugins.Where(plugin => PluginFactory.IsEnterpriseTestConfigurationPath(plugin.LocalPath)).ToList();
+ this.configPlugins = availableConfigPlugins.Except(this.testConfigPlugins).ToList();
+
this.enterpriseEnvironments = EnterpriseEnvironmentService.CURRENT_ENVIRONMENTS.ToList();
this.mandatoryInfoPanels = PluginFactory.GetMandatoryInfos()
.Select(info =>
@@ -404,6 +413,27 @@ public partial class Information : MSGComponentBase
return plugin.ManagedConfigurationId == configurationId && plugin.Id != configurationId;
}
+ ///
+ /// Collects what a user needs to find and judge a staged test configuration.
+ ///
+ ///
+ /// There is no enterprise environment behind it, so we show what identifies it instead: the plugin
+ /// ID it claims and the directory it was staged in.
+ ///
+ private IReadOnlyList BuildTestConfigurationItems(IAvailablePlugin plugin) =>
+ [
+ new(Icons.Material.Filled.ArrowRightAlt,
+ $"{T("Configuration plugin ID:")} {plugin.Id}",
+ plugin.Id.ToString(),
+ T("Copies the configuration plugin ID to the clipboard")),
+
+ new(Icons.Material.Filled.ArrowRightAlt,
+ $"{T("Plugin directory:")} {plugin.LocalPath}",
+ plugin.LocalPath,
+ T("Copies the plugin directory to the clipboard"),
+ "margin-top: 4px;"),
+ ];
+
private string ExternalHttpCustomRootCertificateWarningText
{
get
diff --git a/documentation/Enterprise IT.md b/documentation/Enterprise IT.md
index 5a2eb6c5..2375632c 100644
--- a/documentation/Enterprise IT.md
+++ b/documentation/Enterprise IT.md
@@ -439,6 +439,8 @@ Place the files **while AI Studio is running**: the test directory is emptied wh
3. Place the assistant plugin you want to test in `/plugins/assistants//`.
4. AI Studio watches the plugin directory and picks both up without a restart. The security card of the assistant then states that your organization approved it, exactly as it will after the rollout.
+While a test configuration is loaded, the Information page reports it, including the directory it was staged in. After a restart, that same page tells you that a test configuration was removed, so nobody has to wonder where the directory went.
+
What behaves like the later rollout:
- The approvals for assistant plugins are honored.