using MeetingAssistant.Calendar; using MeetingAssistant.MeetingNotes; using MeetingAssistant.Screenshots; using MeetingAssistant.Workflow; namespace MeetingAssistant; public sealed record PlatformCapabilityReport( string Host, string MeetingMetadataProvider, string CalendarMeetingProvider, string MeetingStartPromptProvider, string ScreenshotProvider, string WorkflowEditorProvider, bool WorkflowEditorAvailable, bool CalendarRecordingPromptsEnabled, bool SpeakerIdentificationEnabled, bool ScreenshotOcrEnabled, bool FunAsrBackendEnabled, bool FunAsrDiarizationEnabled, bool WhisperLocalDiarizationEnabled) { public static PlatformCapabilityReport Create( HostOperatingSystem host, MeetingAssistantOptions options, IMeetingMetadataProvider meetingMetadataProvider, ICalendarMeetingProvider calendarMeetingProvider, IMeetingStartPromptService meetingStartPromptProvider, IActiveWindowScreenshotCapture screenshotProvider, IWorkflowRulesEditorWindowService workflowEditorProvider) { return new PlatformCapabilityReport( host.Kind switch { HostOperatingSystemKind.Windows => "Windows", HostOperatingSystemKind.MacOS => "macOS", _ => "Unsupported" }, meetingMetadataProvider.GetType().Name, calendarMeetingProvider.GetType().Name, meetingStartPromptProvider.GetType().Name, screenshotProvider.GetType().Name, workflowEditorProvider.GetType().Name, workflowEditorProvider is not NoopWorkflowRulesEditorWindowService, options.CalendarRecordingPrompts.Enabled, options.SpeakerIdentification.Enabled, options.Screenshots.Ocr.Enabled, options.FunAsr.Backend.Enabled, options.FunAsr.Diarization.Enabled, options.WhisperLocal.Diarization.Enabled); } }