ci: consolidate platform pipelines and test prerequisites on macOS support
PR and Push Build/Test / windows-build-and-test (push) Failing after 38m25s
PR and Push Build/Test / portable-build-and-test (push) Successful in 8m9s
PR and Push Build/Test / macos-native-full (push) Skipped

This commit is contained in:
dh committed 2026-10-06 09:02:19 +02:00
1 parent 1b19b08f2e
commit 728e66dd72
76 files changed
+7477 -239

No files matched your search

+27 -14
View File
@@ -44,11 +44,20 @@ builder.Services.AddSingleton<IMeetingAudioSource>(services => new CompositeMeet
services.GetRequiredService<ILogger<CompositeMeetingAudioSource>>()));
builder.Services.AddSingleton<IMeetingMetadataProvider, OutlookClassicMeetingMetadataProvider>();
#else
builder.Services.AddSingleton(TimeProvider.System);
builder.Services.AddSingleton<DesktopUserRequestStore>();
PortableMeetingAudioRegistration.Add(builder.Services);
MacOsMeetingIntegrationRegistration.Add(builder.Services, OperatingSystem.IsMacOS());
builder.Services.AddHostedService<MacOsDesktopControlService>();
builder.Services.AddSingleton<IMicrophoneSwitchPromptService, NoopMicrophoneSwitchPromptService>();
builder.Services.AddSingleton<IAgentApprovalPromptService, NoopAgentApprovalPromptService>();
if (OperatingSystem.IsMacOS())
{
builder.Services.AddSingleton<IAgentApprovalPromptService, MacOsAgentApprovalPromptService>();
}
else
{
builder.Services.AddSingleton<IAgentApprovalPromptService, NoopAgentApprovalPromptService>();
}
#endif
builder.Services.AddSingleton<ITranscriptStore, VaultTranscriptStore>();
builder.Services.AddSingleton<IMeetingNoteStore, MarkdownMeetingNoteStore>();
@@ -66,7 +75,14 @@ builder.Services.AddSingleton<IMeetingInactivityPromptService>(services =>
builder.Services.AddHostedService(services =>
services.GetRequiredService<WindowsMeetingInactivityPromptService>());
#else
builder.Services.AddSingleton<IMeetingInactivityPromptService, NoopMeetingInactivityPromptService>();
if (OperatingSystem.IsMacOS())
{
builder.Services.AddSingleton<IMeetingInactivityPromptService, MacOsMeetingInactivityPromptService>();
}
else
{
builder.Services.AddSingleton<IMeetingInactivityPromptService, NoopMeetingInactivityPromptService>();
}
#endif
builder.Services.AddSingleton<IRecordingDictationWordProvider, RecordingDictationWordProvider>();
builder.Services.AddSingleton<ICalendarPromptClock, SystemCalendarPromptClock>();
@@ -147,8 +163,11 @@ builder.Services.AddSingleton(services => WorkflowRulesEditorMarkdownLinkResolve
services.GetRequiredService<IOptions<MeetingAssistantOptions>>().Value));
builder.Services.AddSingleton<IWorkflowRulesEditorWindowService, WpfWorkflowRulesEditorWindowService>();
#else
builder.Services.AddSingleton<MacOsWorkflowRulesEditorSession>();
builder.Services.AddSingleton<IWorkflowRulesEditorWindowService, MacOsWorkflowRulesEditorWindowService>();
builder.Services.AddSingleton<MacOsWorkflowRulesEditorSessions>();
builder.Services.AddSingleton<IWorkflowRulesEditorWindowService>(services =>
new MacOsWorkflowRulesEditorWindowService(
services.GetRequiredService<IOptions<MeetingAssistantOptions>>(),
() => services.GetRequiredService<MacOsWorkflowRulesEditorSessions>()));
#endif
builder.Services.AddSingleton<AgentApprovalService>();
builder.Services.AddSingleton<WorkflowChangeRequestService>();
@@ -205,6 +224,10 @@ app.MapGet("/diagnostics/platform-capabilities", (
screenshotProvider,
workflowEditorProvider)));
#if !WINDOWS
app.MapDesktopCommunication();
#endif
app.MapGet("/recording/status", (MeetingRecordingCoordinator coordinator) => Results.Ok(coordinator.CurrentStatus));
app.MapGet("/profiles/{launchProfile}/recording/status", (
string launchProfile,
@@ -343,16 +366,6 @@ app.MapPost("/diagnostics/settings-and-logs/show", (
rulesEditorWindow.Show();
return Results.Accepted();
});
#if !WINDOWS
app.MapGet("/diagnostics/settings-and-logs", () =>
Results.Content(MacOsWorkflowRulesEditorPage.Html, "text/html"));
app.MapPost("/diagnostics/settings-and-logs/chat", async (
MacOsWorkflowRulesEditorChatRequest request,
MacOsWorkflowRulesEditorSession session,
CancellationToken cancellationToken) =>
Results.Ok(await session.SendAsync(request.Message, cancellationToken)));
#endif
static WorkflowConfigurationReloadResponse ReloadWorkflowConfiguration(IConfiguration configuration)
{
if (configuration is not IConfigurationRoot root)