mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-11-10 21:47:21 +00:00
Moved all extension methods into extension blocks (#1155)
This commit is contained in:
1 parent
acc7d09fa2
commit
c0a75f39ac
138 files changed
+5884
-4954
No files matched your search
@@ -5,160 +5,184 @@ namespace AIStudio.Settings;
|
||||
|
||||
public static class DataSourceSecurityTrustExtensions
|
||||
{
|
||||
public static bool IsTrustedForDataSourceSecurityChecks(this Provider provider, SettingsManager settingsManager)
|
||||
extension(Provider provider)
|
||||
{
|
||||
if (provider == Provider.NONE)
|
||||
return false;
|
||||
|
||||
return provider.IsSelfHosted || provider.IsTrustedByConfiguration(settingsManager);
|
||||
}
|
||||
|
||||
public static bool IsTrustedForDataSourceSecurityChecks(this EmbeddingProvider provider, SettingsManager settingsManager)
|
||||
{
|
||||
if (provider == EmbeddingProvider.NONE)
|
||||
return false;
|
||||
|
||||
return provider.IsSelfHosted || provider.IsTrustedByConfiguration(settingsManager);
|
||||
}
|
||||
|
||||
public static bool IsTrustedForDataSourceSecurityChecks(this TranscriptionProvider provider, SettingsManager settingsManager)
|
||||
{
|
||||
if (provider == TranscriptionProvider.NONE)
|
||||
return false;
|
||||
|
||||
return provider.IsSelfHosted || provider.IsTrustedByConfiguration(settingsManager);
|
||||
}
|
||||
|
||||
public static bool IsTrustedForDataSourceSecurityChecks(this IProvider provider, SettingsManager settingsManager)
|
||||
{
|
||||
if (provider is NoProvider)
|
||||
return false;
|
||||
|
||||
return provider.Provider is LLMProviders.SELF_HOSTED || IsTrustedProviderId(provider.ConfiguredProviderId, settingsManager);
|
||||
}
|
||||
|
||||
public static ConfidenceLevel GetConfidenceLevel(this Provider provider, SettingsManager settingsManager)
|
||||
{
|
||||
if (provider == Provider.NONE)
|
||||
return ConfidenceLevel.NONE;
|
||||
|
||||
return provider.UsedLLMProvider.GetConfidence(settingsManager).Level;
|
||||
}
|
||||
|
||||
public static ConfidenceLevel GetConfidenceLevel(this EmbeddingProvider provider, SettingsManager settingsManager)
|
||||
{
|
||||
if (provider == EmbeddingProvider.NONE)
|
||||
return ConfidenceLevel.NONE;
|
||||
|
||||
return provider.UsedLLMProvider.GetConfidence(settingsManager).Level;
|
||||
}
|
||||
|
||||
public static ConfidenceLevel GetConfidenceLevel(this TranscriptionProvider provider, SettingsManager settingsManager)
|
||||
{
|
||||
if (provider == TranscriptionProvider.NONE)
|
||||
return ConfidenceLevel.NONE;
|
||||
|
||||
return provider.UsedLLMProvider.GetConfidence(settingsManager).Level;
|
||||
}
|
||||
|
||||
public static ConfidenceLevel GetConfidenceLevel(this IProvider provider, SettingsManager settingsManager)
|
||||
{
|
||||
if (provider is NoProvider)
|
||||
return ConfidenceLevel.NONE;
|
||||
|
||||
return provider.Provider.GetConfidence(settingsManager).Level;
|
||||
}
|
||||
|
||||
public static bool AllowsDataSourceAccess(this Provider provider, SettingsManager settingsManager, DataSourceSecurity dataSourceSecurity, ConfidenceLevel requiredConfidenceLevel)
|
||||
{
|
||||
return provider.AllowsDataSourceSecurity(dataSourceSecurity, settingsManager)
|
||||
&& provider.GetConfidenceLevel(settingsManager).AllowsDataSourceConfidenceLevel(requiredConfidenceLevel);
|
||||
}
|
||||
|
||||
public static bool AllowsDataSourceAccess(this IProvider provider, SettingsManager settingsManager, DataSourceSecurity dataSourceSecurity, ConfidenceLevel requiredConfidenceLevel)
|
||||
{
|
||||
return provider.AllowsDataSourceSecurity(dataSourceSecurity, settingsManager)
|
||||
&& provider.GetConfidenceLevel(settingsManager).AllowsDataSourceConfidenceLevel(requiredConfidenceLevel);
|
||||
}
|
||||
|
||||
public static bool AllowsDataSourceSecurity(this Provider provider, DataSourceSecurity dataSourceSecurity, SettingsManager settingsManager)
|
||||
=> provider.IsTrustedForDataSourceSecurityChecks(settingsManager).AllowsDataSourceSecurity(dataSourceSecurity);
|
||||
|
||||
public static bool AllowsDataSourceSecurity(this IProvider provider, DataSourceSecurity dataSourceSecurity, SettingsManager settingsManager)
|
||||
=> provider.IsTrustedForDataSourceSecurityChecks(settingsManager).AllowsDataSourceSecurity(dataSourceSecurity);
|
||||
|
||||
public static bool AllowsDataSourceSecurity(this bool usingTrustedProvider, DataSourceSecurity dataSourceSecurity) => dataSourceSecurity switch
|
||||
{
|
||||
DataSourceSecurity.ALLOW_ANY => true,
|
||||
DataSourceSecurity.SELF_HOSTED => usingTrustedProvider,
|
||||
_ => false,
|
||||
};
|
||||
|
||||
public static bool AllowsDataSourceConfidenceLevel(this ConfidenceLevel providerConfidenceLevel, ConfidenceLevel requiredConfidenceLevel)
|
||||
{
|
||||
if (requiredConfidenceLevel is ConfidenceLevel.NONE)
|
||||
return true;
|
||||
|
||||
return providerConfidenceLevel >= requiredConfidenceLevel;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Whether a mailbox may require this provider confidence level.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Only the levels from very low to high qualify. NONE lets every provider through, cf.
|
||||
/// AllowsDataSourceConfidenceLevel, and UNTRUSTED and UNKNOWN do almost the same: both lie at or
|
||||
/// below the level of a provider nobody rated, so even such a provider would meet them.
|
||||
/// </remarks>
|
||||
public static bool IsAllowedMailboxConfidence(this ConfidenceLevel confidenceLevel) => confidenceLevel is ConfidenceLevel.VERY_LOW or ConfidenceLevel.LOW or ConfidenceLevel.MODERATE or ConfidenceLevel.MEDIUM or ConfidenceLevel.HIGH;
|
||||
|
||||
/// <summary>
|
||||
/// Whether a provider of this confidence level may see the content of a mailbox.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Unlike AllowsDataSourceConfidenceLevel, this closes a mailbox without an allowed level to every
|
||||
/// provider, whether it was never chosen or edited by hand in the settings file. Every provider
|
||||
/// which sees mail content has to pass it: the chat provider, the embedding provider, and the
|
||||
/// provider of every agent reading mails.
|
||||
/// </remarks>
|
||||
public static bool AllowsMailboxConfidenceLevel(this ConfidenceLevel providerConfidenceLevel, ConfidenceLevel mailboxConfidenceLevel)
|
||||
{
|
||||
if (!mailboxConfidenceLevel.IsAllowedMailboxConfidence())
|
||||
return false;
|
||||
|
||||
return providerConfidenceLevel >= mailboxConfidenceLevel;
|
||||
}
|
||||
|
||||
public static ConfidenceLevel GetRequiredConfidenceLevel(this IEnumerable<IDataSource> dataSources)
|
||||
{
|
||||
var requiredConfidenceLevel = ConfidenceLevel.NONE;
|
||||
foreach (var dataSource in dataSources.OfType<IInternalDataSource>())
|
||||
if (dataSource.ConfidenceLevel > requiredConfidenceLevel)
|
||||
requiredConfidenceLevel = dataSource.ConfidenceLevel;
|
||||
|
||||
return requiredConfidenceLevel;
|
||||
}
|
||||
|
||||
public static DataSourceSecurity GetRequiredSecurityPolicy(this IEnumerable<IDataSource> dataSources)
|
||||
{
|
||||
var requiredSecurityPolicy = DataSourceSecurity.ALLOW_ANY;
|
||||
foreach (var dataSource in dataSources.OfType<IExternalDataSource>())
|
||||
public bool IsTrustedForDataSourceSecurityChecks(SettingsManager settingsManager)
|
||||
{
|
||||
if (dataSource.SecurityPolicy is DataSourceSecurity.NOT_SPECIFIED)
|
||||
return DataSourceSecurity.NOT_SPECIFIED;
|
||||
if (provider == Provider.NONE)
|
||||
return false;
|
||||
|
||||
if (dataSource.SecurityPolicy is DataSourceSecurity.SELF_HOSTED)
|
||||
requiredSecurityPolicy = DataSourceSecurity.SELF_HOSTED;
|
||||
return provider.IsSelfHosted || provider.IsTrustedByConfiguration(settingsManager);
|
||||
}
|
||||
|
||||
return requiredSecurityPolicy;
|
||||
public ConfidenceLevel GetConfidenceLevel(SettingsManager settingsManager)
|
||||
{
|
||||
if (provider == Provider.NONE)
|
||||
return ConfidenceLevel.NONE;
|
||||
|
||||
return provider.UsedLLMProvider.GetConfidence(settingsManager).Level;
|
||||
}
|
||||
|
||||
public bool AllowsDataSourceAccess(SettingsManager settingsManager, DataSourceSecurity dataSourceSecurity, ConfidenceLevel requiredConfidenceLevel)
|
||||
{
|
||||
return provider.AllowsDataSourceSecurity(dataSourceSecurity, settingsManager)
|
||||
&& provider.GetConfidenceLevel(settingsManager).AllowsDataSourceConfidenceLevel(requiredConfidenceLevel);
|
||||
}
|
||||
|
||||
public bool AllowsDataSourceSecurity(DataSourceSecurity dataSourceSecurity, SettingsManager settingsManager)
|
||||
=> provider.IsTrustedForDataSourceSecurityChecks(settingsManager).AllowsDataSourceSecurity(dataSourceSecurity);
|
||||
|
||||
public bool IsTrustedByConfiguration(SettingsManager settingsManager) => IsTrustedProviderId(provider.Id, settingsManager);
|
||||
}
|
||||
|
||||
public static bool IsTrustedByConfiguration(this Provider provider, SettingsManager settingsManager) => IsTrustedProviderId(provider.Id, settingsManager);
|
||||
extension(EmbeddingProvider provider)
|
||||
{
|
||||
public bool IsTrustedForDataSourceSecurityChecks(SettingsManager settingsManager)
|
||||
{
|
||||
if (provider == EmbeddingProvider.NONE)
|
||||
return false;
|
||||
|
||||
public static bool IsTrustedByConfiguration(this EmbeddingProvider provider, SettingsManager settingsManager) => IsTrustedProviderId(provider.Id, settingsManager);
|
||||
return provider.IsSelfHosted || provider.IsTrustedByConfiguration(settingsManager);
|
||||
}
|
||||
|
||||
public static bool IsTrustedByConfiguration(this TranscriptionProvider provider, SettingsManager settingsManager) => IsTrustedProviderId(provider.Id, settingsManager);
|
||||
public ConfidenceLevel GetConfidenceLevel(SettingsManager settingsManager)
|
||||
{
|
||||
if (provider == EmbeddingProvider.NONE)
|
||||
return ConfidenceLevel.NONE;
|
||||
|
||||
return provider.UsedLLMProvider.GetConfidence(settingsManager).Level;
|
||||
}
|
||||
|
||||
public bool IsTrustedByConfiguration(SettingsManager settingsManager) => IsTrustedProviderId(provider.Id, settingsManager);
|
||||
}
|
||||
|
||||
extension(TranscriptionProvider provider)
|
||||
{
|
||||
public bool IsTrustedForDataSourceSecurityChecks(SettingsManager settingsManager)
|
||||
{
|
||||
if (provider == TranscriptionProvider.NONE)
|
||||
return false;
|
||||
|
||||
return provider.IsSelfHosted || provider.IsTrustedByConfiguration(settingsManager);
|
||||
}
|
||||
|
||||
public ConfidenceLevel GetConfidenceLevel(SettingsManager settingsManager)
|
||||
{
|
||||
if (provider == TranscriptionProvider.NONE)
|
||||
return ConfidenceLevel.NONE;
|
||||
|
||||
return provider.UsedLLMProvider.GetConfidence(settingsManager).Level;
|
||||
}
|
||||
|
||||
public bool IsTrustedByConfiguration(SettingsManager settingsManager) => IsTrustedProviderId(provider.Id, settingsManager);
|
||||
}
|
||||
|
||||
extension(IProvider provider)
|
||||
{
|
||||
public bool IsTrustedForDataSourceSecurityChecks(SettingsManager settingsManager)
|
||||
{
|
||||
if (provider is NoProvider)
|
||||
return false;
|
||||
|
||||
return provider.Provider is LLMProviders.SELF_HOSTED || IsTrustedProviderId(provider.ConfiguredProviderId, settingsManager);
|
||||
}
|
||||
|
||||
public ConfidenceLevel GetConfidenceLevel(SettingsManager settingsManager)
|
||||
{
|
||||
if (provider is NoProvider)
|
||||
return ConfidenceLevel.NONE;
|
||||
|
||||
return provider.Provider.GetConfidence(settingsManager).Level;
|
||||
}
|
||||
|
||||
public bool AllowsDataSourceAccess(SettingsManager settingsManager, DataSourceSecurity dataSourceSecurity, ConfidenceLevel requiredConfidenceLevel)
|
||||
{
|
||||
return provider.AllowsDataSourceSecurity(dataSourceSecurity, settingsManager)
|
||||
&& provider.GetConfidenceLevel(settingsManager).AllowsDataSourceConfidenceLevel(requiredConfidenceLevel);
|
||||
}
|
||||
|
||||
public bool AllowsDataSourceSecurity(DataSourceSecurity dataSourceSecurity, SettingsManager settingsManager)
|
||||
=> provider.IsTrustedForDataSourceSecurityChecks(settingsManager).AllowsDataSourceSecurity(dataSourceSecurity);
|
||||
}
|
||||
|
||||
extension(bool usingTrustedProvider)
|
||||
{
|
||||
public bool AllowsDataSourceSecurity(DataSourceSecurity dataSourceSecurity) => dataSourceSecurity switch
|
||||
{
|
||||
DataSourceSecurity.ALLOW_ANY => true,
|
||||
DataSourceSecurity.SELF_HOSTED => usingTrustedProvider,
|
||||
_ => false,
|
||||
};
|
||||
}
|
||||
|
||||
extension(ConfidenceLevel providerConfidenceLevel)
|
||||
{
|
||||
public bool AllowsDataSourceConfidenceLevel(ConfidenceLevel requiredConfidenceLevel)
|
||||
{
|
||||
if (requiredConfidenceLevel is ConfidenceLevel.NONE)
|
||||
return true;
|
||||
|
||||
return providerConfidenceLevel >= requiredConfidenceLevel;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Whether a provider of this confidence level may see the content of a mailbox.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Unlike AllowsDataSourceConfidenceLevel, this closes a mailbox without an allowed level to every
|
||||
/// provider, whether it was never chosen or edited by hand in the settings file. Every provider
|
||||
/// which sees mail content has to pass it: the chat provider, the embedding provider, and the
|
||||
/// provider of every agent reading mails.
|
||||
/// </remarks>
|
||||
public bool AllowsMailboxConfidenceLevel(ConfidenceLevel mailboxConfidenceLevel)
|
||||
{
|
||||
if (!mailboxConfidenceLevel.IsAllowedMailboxConfidence())
|
||||
return false;
|
||||
|
||||
return providerConfidenceLevel >= mailboxConfidenceLevel;
|
||||
}
|
||||
}
|
||||
|
||||
extension(ConfidenceLevel confidenceLevel)
|
||||
{
|
||||
/// <summary>
|
||||
/// Whether a mailbox may require this provider confidence level.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Only the levels from very low to high qualify. NONE lets every provider through, cf.
|
||||
/// AllowsDataSourceConfidenceLevel, and UNTRUSTED and UNKNOWN do almost the same: both lie at or
|
||||
/// below the level of a provider nobody rated, so even such a provider would meet them.
|
||||
/// </remarks>
|
||||
public bool IsAllowedMailboxConfidence() => confidenceLevel is ConfidenceLevel.VERY_LOW or ConfidenceLevel.LOW or ConfidenceLevel.MODERATE or ConfidenceLevel.MEDIUM or ConfidenceLevel.HIGH;
|
||||
}
|
||||
|
||||
extension(IEnumerable<IDataSource> dataSources)
|
||||
{
|
||||
public ConfidenceLevel GetRequiredConfidenceLevel()
|
||||
{
|
||||
var requiredConfidenceLevel = ConfidenceLevel.NONE;
|
||||
foreach (var dataSource in dataSources.OfType<IInternalDataSource>())
|
||||
if (dataSource.ConfidenceLevel > requiredConfidenceLevel)
|
||||
requiredConfidenceLevel = dataSource.ConfidenceLevel;
|
||||
|
||||
return requiredConfidenceLevel;
|
||||
}
|
||||
|
||||
public DataSourceSecurity GetRequiredSecurityPolicy()
|
||||
{
|
||||
var requiredSecurityPolicy = DataSourceSecurity.ALLOW_ANY;
|
||||
foreach (var dataSource in dataSources.OfType<IExternalDataSource>())
|
||||
{
|
||||
if (dataSource.SecurityPolicy is DataSourceSecurity.NOT_SPECIFIED)
|
||||
return DataSourceSecurity.NOT_SPECIFIED;
|
||||
|
||||
if (dataSource.SecurityPolicy is DataSourceSecurity.SELF_HOSTED)
|
||||
requiredSecurityPolicy = DataSourceSecurity.SELF_HOSTED;
|
||||
}
|
||||
|
||||
return requiredSecurityPolicy;
|
||||
}
|
||||
}
|
||||
|
||||
private static bool IsTrustedProviderId(string providerId, SettingsManager settingsManager)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user