feat(macos): enable meeting integrations

This commit is contained in:
dh
2026-08-06 08:19:26 +02:00
parent 9542c05ea4
commit 2af7933a1b
27 changed files with 1999 additions and 227 deletions
+18 -8
View File
@@ -38,7 +38,7 @@ builder.Services.AddSingleton<IMeetingAudioSource>(services => new CompositeMeet
builder.Services.AddSingleton<IMeetingMetadataProvider, OutlookClassicMeetingMetadataProvider>();
#else
PortableMeetingAudioRegistration.Add(builder.Services);
builder.Services.AddSingleton<IMeetingMetadataProvider, NoopMeetingMetadataProvider>();
MacOsMeetingIntegrationRegistration.Add(builder.Services, OperatingSystem.IsMacOS());
builder.Services.AddHostedService<MacOsDesktopControlService>();
#endif
builder.Services.AddSingleton<ITranscriptStore, VaultTranscriptStore>();
@@ -69,14 +69,8 @@ builder.Services.AddSingleton<IMeetingStartPromptService>(services =>
services.GetRequiredService<WindowsMeetingStartPromptService>());
builder.Services.AddHostedService(services =>
services.GetRequiredService<WindowsMeetingStartPromptService>());
#else
builder.Services.AddSingleton<ICalendarMeetingProvider, NoopCalendarMeetingProvider>();
builder.Services.AddSingleton<IMeetingStartPromptService, NoopMeetingStartPromptService>();
#endif
#if WINDOWS
builder.Services.AddSingleton<IActiveWindowScreenshotCapture, ActiveWindowScreenshotCapture>();
#else
builder.Services.AddSingleton<IActiveWindowScreenshotCapture, UnavailableActiveWindowScreenshotCapture>();
builder.Services.AddSingleton<IScreenshotImageCropper, WindowsScreenshotImageCropper>();
#endif
builder.Services.AddSingleton<IScreenshotOcrClient, LiteLlmScreenshotOcrClient>();
builder.Services.AddSingleton<MeetingScreenshotService>();
@@ -150,6 +144,22 @@ app.MapGet("/health", () => Results.Ok(new
service = "meeting-assistant",
status = "ok"
}));
app.MapGet("/diagnostics/platform-capabilities", (
HostOperatingSystem host,
IOptions<MeetingAssistantOptions> options,
IMeetingMetadataProvider meetingMetadataProvider,
ICalendarMeetingProvider calendarMeetingProvider,
IMeetingStartPromptService meetingStartPromptProvider,
IActiveWindowScreenshotCapture screenshotProvider,
IWorkflowRulesEditorWindowService workflowEditorProvider) =>
Results.Ok(PlatformCapabilityReport.Create(
host,
options.Value,
meetingMetadataProvider,
calendarMeetingProvider,
meetingStartPromptProvider,
screenshotProvider,
workflowEditorProvider)));
app.MapGet("/recording/status", (MeetingRecordingCoordinator coordinator) => Results.Ok(coordinator.CurrentStatus));
app.MapGet("/profiles/{launchProfile}/recording/status", (