Public Access
Archive completed meeting assistant changes
PR and Push Build/Test / build-and-test (push) Successful in 9m19s
PR and Push Build/Test / build-and-test (push) Successful in 9m19s
This commit is contained in:
+133
-1
@@ -19,6 +19,8 @@ builder.Logging.AddProvider(new MeetingAssistantFileLoggerProvider());
|
||||
builder.Services.Configure<MeetingAssistantOptions>(builder.Configuration.GetSection("MeetingAssistant"));
|
||||
builder.Services.AddSingleton<ILaunchProfileOptionsProvider, ConfigurationLaunchProfileOptionsProvider>();
|
||||
#if WINDOWS
|
||||
builder.Services.AddSingleton<MicrophoneDeviceSelection>();
|
||||
builder.Services.AddSingleton<IMicrophoneDeviceProvider, WindowsMicrophoneDeviceProvider>();
|
||||
builder.Services.AddSingleton<MicrophoneAudioSource>();
|
||||
builder.Services.AddSingleton<SystemAudioSource>();
|
||||
builder.Services.AddSingleton<IAcousticEchoCancellerFactory, AdaptiveFilterAcousticEchoCancellerFactory>();
|
||||
@@ -70,7 +72,10 @@ builder.Services.AddSingleton<IActiveWindowScreenshotCapture, ActiveWindowScreen
|
||||
builder.Services.AddSingleton<IActiveWindowScreenshotCapture, UnavailableActiveWindowScreenshotCapture>();
|
||||
#endif
|
||||
builder.Services.AddSingleton<IScreenshotOcrClient, LiteLlmScreenshotOcrClient>();
|
||||
builder.Services.AddSingleton<IMeetingScreenshotService, MeetingScreenshotService>();
|
||||
builder.Services.AddSingleton<MeetingScreenshotService>();
|
||||
builder.Services.AddSingleton<IMeetingScreenshotService>(sp => sp.GetRequiredService<MeetingScreenshotService>());
|
||||
builder.Services.AddSingleton<IScreenshotOcrRetryRunner>(sp => sp.GetRequiredService<MeetingScreenshotService>());
|
||||
builder.Services.AddSingleton<IMeetingNoteImageOcrService>(sp => sp.GetRequiredService<MeetingScreenshotService>());
|
||||
builder.Services.AddDbContextFactory<SpeakerIdentityDbContext>((services, dbOptions) =>
|
||||
{
|
||||
var appOptions = services.GetRequiredService<IOptions<MeetingAssistantOptions>>().Value;
|
||||
@@ -410,6 +415,81 @@ app.MapGet("/profiles/{launchProfile}/meetings/summary/retry", async (
|
||||
launchProfiles,
|
||||
cancellationToken));
|
||||
|
||||
app.MapPost("/meetings/screenshot-ocr/retry", async (
|
||||
ScreenshotOcrRetryRequest request,
|
||||
IScreenshotOcrRetryRunner screenshotOcrRetryRunner,
|
||||
IOptions<MeetingAssistantOptions> options,
|
||||
CancellationToken cancellationToken) =>
|
||||
await RetryScreenshotOcrAsync(
|
||||
null,
|
||||
request,
|
||||
screenshotOcrRetryRunner,
|
||||
options.Value,
|
||||
null,
|
||||
cancellationToken));
|
||||
app.MapPost("/profiles/{launchProfile}/meetings/screenshot-ocr/retry", async (
|
||||
string launchProfile,
|
||||
ScreenshotOcrRetryRequest request,
|
||||
IScreenshotOcrRetryRunner screenshotOcrRetryRunner,
|
||||
IOptions<MeetingAssistantOptions> options,
|
||||
ILaunchProfileOptionsProvider launchProfiles,
|
||||
CancellationToken cancellationToken) =>
|
||||
await RetryScreenshotOcrAsync(
|
||||
launchProfile,
|
||||
request,
|
||||
screenshotOcrRetryRunner,
|
||||
options.Value,
|
||||
launchProfiles,
|
||||
cancellationToken));
|
||||
app.MapGet("/meetings/screenshot-ocr/retry", async (
|
||||
string meetingNotePath,
|
||||
string transcriptPath,
|
||||
string assistantContextPath,
|
||||
string summaryPath,
|
||||
string screenshotPath,
|
||||
string screenshotId,
|
||||
IScreenshotOcrRetryRunner screenshotOcrRetryRunner,
|
||||
IOptions<MeetingAssistantOptions> options,
|
||||
CancellationToken cancellationToken) =>
|
||||
await RetryScreenshotOcrAsync(
|
||||
null,
|
||||
new ScreenshotOcrRetryRequest(
|
||||
meetingNotePath,
|
||||
transcriptPath,
|
||||
assistantContextPath,
|
||||
summaryPath,
|
||||
screenshotPath,
|
||||
screenshotId),
|
||||
screenshotOcrRetryRunner,
|
||||
options.Value,
|
||||
null,
|
||||
cancellationToken));
|
||||
app.MapGet("/profiles/{launchProfile}/meetings/screenshot-ocr/retry", async (
|
||||
string launchProfile,
|
||||
string meetingNotePath,
|
||||
string transcriptPath,
|
||||
string assistantContextPath,
|
||||
string summaryPath,
|
||||
string screenshotPath,
|
||||
string screenshotId,
|
||||
IScreenshotOcrRetryRunner screenshotOcrRetryRunner,
|
||||
IOptions<MeetingAssistantOptions> options,
|
||||
ILaunchProfileOptionsProvider launchProfiles,
|
||||
CancellationToken cancellationToken) =>
|
||||
await RetryScreenshotOcrAsync(
|
||||
launchProfile,
|
||||
new ScreenshotOcrRetryRequest(
|
||||
meetingNotePath,
|
||||
transcriptPath,
|
||||
assistantContextPath,
|
||||
summaryPath,
|
||||
screenshotPath,
|
||||
screenshotId),
|
||||
screenshotOcrRetryRunner,
|
||||
options.Value,
|
||||
launchProfiles,
|
||||
cancellationToken));
|
||||
|
||||
static async Task<IResult> RetrySummaryAsync(
|
||||
string? launchProfile,
|
||||
string? summaryPath,
|
||||
@@ -438,6 +518,50 @@ static async Task<IResult> RetrySummaryAsync(
|
||||
});
|
||||
}
|
||||
|
||||
static async Task<IResult> RetryScreenshotOcrAsync(
|
||||
string? launchProfile,
|
||||
ScreenshotOcrRetryRequest request,
|
||||
IScreenshotOcrRetryRunner screenshotOcrRetryRunner,
|
||||
MeetingAssistantOptions defaultOptions,
|
||||
ILaunchProfileOptionsProvider? launchProfiles,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(request.MeetingNotePath) ||
|
||||
string.IsNullOrWhiteSpace(request.TranscriptPath) ||
|
||||
string.IsNullOrWhiteSpace(request.AssistantContextPath) ||
|
||||
string.IsNullOrWhiteSpace(request.SummaryPath) ||
|
||||
string.IsNullOrWhiteSpace(request.ScreenshotPath) ||
|
||||
string.IsNullOrWhiteSpace(request.ScreenshotId))
|
||||
{
|
||||
return Results.BadRequest(new { error = "Meeting artifact paths, screenshot path, and screenshot id are required." });
|
||||
}
|
||||
|
||||
var profileOptions = ResolveProfileOptions(launchProfile, defaultOptions, launchProfiles);
|
||||
var artifacts = new MeetingSessionArtifacts(
|
||||
request.MeetingNotePath,
|
||||
request.TranscriptPath,
|
||||
request.AssistantContextPath,
|
||||
request.SummaryPath);
|
||||
var trigger = await screenshotOcrRetryRunner.TriggerOcrRetryAsync(
|
||||
artifacts,
|
||||
request.ScreenshotPath,
|
||||
request.ScreenshotId,
|
||||
profileOptions,
|
||||
cancellationToken);
|
||||
if (trigger is null)
|
||||
{
|
||||
return Results.NotFound(new { error = "No retryable screenshot OCR block was found for the requested screenshot." });
|
||||
}
|
||||
|
||||
return Results.Accepted(value: new
|
||||
{
|
||||
assistantContextPath = trigger.AssistantContextPath,
|
||||
screenshotPath = trigger.ScreenshotPath,
|
||||
screenshotId = trigger.ScreenshotId,
|
||||
state = "ocr retrying"
|
||||
});
|
||||
}
|
||||
|
||||
app.MapPost("/asr/transcribe-file", async (
|
||||
AsrDiagnosticRequest request,
|
||||
AsrDiagnosticService diagnostics,
|
||||
@@ -544,6 +668,14 @@ public sealed record AsrDiagnosticRequest(string Path, int? NumSpeakers = null);
|
||||
|
||||
public sealed record SummaryRetryRequest(string SummaryPath);
|
||||
|
||||
public sealed record ScreenshotOcrRetryRequest(
|
||||
string MeetingNotePath,
|
||||
string TranscriptPath,
|
||||
string AssistantContextPath,
|
||||
string SummaryPath,
|
||||
string ScreenshotPath,
|
||||
string ScreenshotId);
|
||||
|
||||
public sealed record SpeakerIdentityMergeDiagnosticRequest(double? RecentDays = null);
|
||||
|
||||
public sealed record WorkflowConfigurationReloadResponse(string? RulesPath);
|
||||
|
||||
Reference in New Issue
Block a user