Files
meeting-assistant/MeetingAssistant/MacOs/DesktopCommunicationEndpoints.cs
T
dh 728e66dd72
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
ci: consolidate platform pipelines and test prerequisites on macOS support
2026-10-06 09:02:19 +02:00

44 lines
2.2 KiB
C#

using MeetingAssistant.Notifications;
namespace MeetingAssistant.MacOs;
public static class DesktopCommunicationEndpoints
{
public static void MapDesktopCommunication(this WebApplication app)
{
app.MapGet("/desktop/requests", (DesktopUserRequestStore requests) => Results.Ok(requests.List()));
app.MapPost("/desktop/requests/{id}/respond", async (
string id, DesktopUserRequestResponse response, DesktopUserRequestStore requests) =>
{
if (string.IsNullOrEmpty(response.Action)) return Results.BadRequest();
return await requests.RespondAsync(id, response.Action) switch
{
DesktopUserRequestRespondResult.Accepted => Results.Ok(new { status = "accepted" }),
DesktopUserRequestRespondResult.InvalidAction => Results.BadRequest(new { status = "invalid-action" }),
DesktopUserRequestRespondResult.NoLongerPending => Results.StatusCode(StatusCodes.Status410Gone),
_ => Results.Problem("The user action could not be completed.")
};
});
app.MapGet("/desktop/agent-windows", (MacOsWorkflowRulesEditorSessions sessions) =>
Results.Ok(sessions.GetAgentWindows()));
app.MapGet("/diagnostics/settings-and-logs", () =>
Results.Content(MacOsWorkflowRulesEditorPage.Html, "text/html"));
app.MapGet("/diagnostics/settings-and-logs/chat", IResult (
string? session, MacOsWorkflowRulesEditorSessions sessions) =>
{
return sessions.TryGetSession(session, out var chat)
? Results.Ok(chat.GetSnapshot())
: Results.NotFound();
});
app.MapPost("/diagnostics/settings-and-logs/chat", async Task<IResult> (
string? session, MacOsWorkflowRulesEditorChatRequest request,
MacOsWorkflowRulesEditorSessions sessions, CancellationToken cancellationToken) =>
{
if (!sessions.TryGetSession(session, out var chat)) return Results.NotFound();
return Results.Ok(await chat.SendAsync(request.Message, cancellationToken));
});
}
}
public sealed record DesktopUserRequestResponse(string? Action);