mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-10-05 03:49:40 +00:00
Merge branch 'main' into chunk-data
This commit is contained in:
commit
9932b5870b
484 files changed
+45549
-2467
No files matched your search
@@ -1,12 +1,17 @@
|
||||
using AIStudio.Agents;
|
||||
using AIStudio.Agents.AssistantAudit;
|
||||
using AIStudio.Assistants.VisualBriefing;
|
||||
using AIStudio.Settings;
|
||||
using AIStudio.Tools.Databases;
|
||||
using AIStudio.Tools.AIJobs;
|
||||
using AIStudio.Tools.AssistantSessions;
|
||||
using AIStudio.Tools.Media;
|
||||
using AIStudio.Tools.PluginSystem;
|
||||
using AIStudio.Tools.PluginSystem.Assistants;
|
||||
using AIStudio.Tools.Rust;
|
||||
using AIStudio.Tools.Services;
|
||||
|
||||
using Microsoft.AspNetCore.DataProtection;
|
||||
using Microsoft.AspNetCore.Server.Kestrel.Core;
|
||||
using Microsoft.Extensions.Logging.Console;
|
||||
|
||||
@@ -87,6 +92,7 @@ internal sealed class Program
|
||||
return;
|
||||
}
|
||||
|
||||
var runtimeInfo = await rust.GetRuntimeInfo();
|
||||
var builder = WebApplication.CreateBuilder();
|
||||
builder.WebHost.ConfigureKestrel(kestrelServerOptions =>
|
||||
{
|
||||
@@ -108,6 +114,32 @@ internal sealed class Program
|
||||
options.FormatterName = TerminalLogger.FORMATTER_NAME;
|
||||
}).AddConsoleFormatter<TerminalLogger, ConsoleFormatterOptions>();
|
||||
|
||||
if(runtimeInfo.LinuxPackageType == "flatpak")
|
||||
{
|
||||
try
|
||||
{
|
||||
var tauriDataDirectory = await rust.GetDataDirectory();
|
||||
if(string.IsNullOrWhiteSpace(tauriDataDirectory))
|
||||
throw new InvalidOperationException("Rust returned an empty Tauri data directory.");
|
||||
|
||||
var dataProtectionKeysDirectory = Path.Combine(tauriDataDirectory, "data-protection-keys");
|
||||
Directory.CreateDirectory(dataProtectionKeysDirectory);
|
||||
var writeTestPath = Path.Combine(dataProtectionKeysDirectory, $".write-test-{Guid.NewGuid():N}");
|
||||
using (new FileStream(writeTestPath, FileMode.CreateNew, FileAccess.Write, FileShare.None, 1, FileOptions.DeleteOnClose))
|
||||
{
|
||||
}
|
||||
|
||||
builder.Services.AddDataProtection()
|
||||
.PersistKeysToFileSystem(new DirectoryInfo(dataProtectionKeysDirectory))
|
||||
.SetApplicationName("org.mindworkai.AIStudio");
|
||||
}
|
||||
catch(Exception exception)
|
||||
{
|
||||
Console.WriteLine($"Error: Failed to configure Flatpak data-protection keys in the Tauri data directory: {exception.Message}");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
builder.Services.AddMudExtensions();
|
||||
builder.Services.AddMudServices(config =>
|
||||
{
|
||||
@@ -126,11 +158,24 @@ internal sealed class Program
|
||||
builder.Services.AddSingleton(new MudTheme());
|
||||
builder.Services.AddSingleton(MessageBus.INSTANCE);
|
||||
builder.Services.AddSingleton(rust);
|
||||
builder.Services.AddSingleton(typeof(RuntimeInfoResponse), runtimeInfo);
|
||||
builder.Services.AddMudMarkdownClipboardService<MarkdownClipboardService>();
|
||||
builder.Services.AddSingleton<SettingsManager>();
|
||||
builder.Services.AddSingleton<ThreadSafeRandom>();
|
||||
builder.Services.AddSingleton<AIJobService>();
|
||||
builder.Services.AddSingleton<AssistantSessionService>();
|
||||
builder.Services.AddSingleton<VoiceRecordingAvailabilityService>();
|
||||
builder.Services.AddSingleton<GlobalShortcutService>();
|
||||
builder.Services.AddSingleton<MediaTranscriptionService>();
|
||||
builder.Services.AddSingleton<VisualBriefingArtifactService>();
|
||||
builder.Services.AddSingleton<VisualBriefingStore>();
|
||||
builder.Services.AddSingleton<VisualBriefingBuildProgressService>();
|
||||
builder.Services.AddSingleton<VisualBriefingBuildOrchestrator>();
|
||||
builder.Services.AddSingleton<VisualBriefingPreviewTokenService>();
|
||||
builder.Services.AddSingleton<IMediaTranscriptStorage, VisualBriefingTranscriptStorage>();
|
||||
builder.Services.AddSingleton<AssistantPluginInstallService>();
|
||||
builder.Services.AddSingleton<UpdatePolicy>();
|
||||
builder.Services.AddSingleton<AssistantPluginGenerationService>();
|
||||
builder.Services.AddSingleton<DataSourceService>();
|
||||
builder.Services.AddSingleton<DataSourceEmbeddingService>();
|
||||
builder.Services.AddSingleton<DataSourceLocalRetrievalService>();
|
||||
@@ -143,10 +188,11 @@ internal sealed class Program
|
||||
builder.Services.AddTransient<AssistantPluginAuditService>();
|
||||
builder.Services.AddHostedService<UpdateService>();
|
||||
builder.Services.AddHostedService<TemporaryChatService>();
|
||||
builder.Services.AddHostedService<TranscriptStagingCleanupService>();
|
||||
builder.Services.AddHostedService<EnterpriseEnvironmentService>();
|
||||
builder.Services.AddHostedService(sp => sp.GetRequiredService<DataSourceEmbeddingService>());
|
||||
builder.Services.AddSingleton<DatabaseClientProvider>();
|
||||
builder.Services.AddHostedService<GlobalShortcutService>();
|
||||
builder.Services.AddHostedService<GlobalShortcutService>(serviceProvider => serviceProvider.GetRequiredService<GlobalShortcutService>());
|
||||
builder.Services.AddHostedService<RustAvailabilityMonitorService>();
|
||||
|
||||
// ReSharper disable AccessToDisposedClosure
|
||||
@@ -154,12 +200,17 @@ internal sealed class Program
|
||||
// ReSharper restore AccessToDisposedClosure
|
||||
|
||||
builder.Services.AddRazorComponents()
|
||||
.AddInteractiveServerComponents()
|
||||
.AddInteractiveServerComponents(options =>
|
||||
{
|
||||
options.DisconnectedCircuitRetentionPeriod = TimeSpan.FromDays(30);
|
||||
options.DisconnectedCircuitMaxRetained = 2;
|
||||
})
|
||||
.AddHubOptions(options =>
|
||||
{
|
||||
options.MaximumReceiveMessageSize = null;
|
||||
options.ClientTimeoutInterval = TimeSpan.FromDays(14);
|
||||
options.ClientTimeoutInterval = TimeSpan.FromSeconds(120);
|
||||
options.HandshakeTimeout = TimeSpan.FromSeconds(30);
|
||||
options.KeepAliveInterval = TimeSpan.FromSeconds(30);
|
||||
});
|
||||
|
||||
builder.Services.AddSingleton(new HttpClient
|
||||
@@ -224,6 +275,10 @@ internal sealed class Program
|
||||
#endif
|
||||
|
||||
app.UseAntiforgery();
|
||||
|
||||
// Serves committed briefing revisions to the assistant's live preview iframe:
|
||||
app.MapVisualBriefingPreview();
|
||||
|
||||
app.MapRazorComponents<App>()
|
||||
.AddInteractiveServerRenderMode();
|
||||
|
||||
|
||||
Reference in new issue
Block a user