Archive meeting workflow and screenshot changes

This commit is contained in:
2026-05-27 12:55:19 +02:00
parent 2422236ef7
commit 12832dde84
48 changed files with 3041 additions and 43 deletions
@@ -18,6 +18,8 @@ public sealed class MeetingAssistantOptions
public AutomationOptions Automation { get; set; } = new();
public ScreenshotOptions Screenshots { get; set; } = new();
public AgentOptions Agent { get; set; } = new();
public ApiOptions Api { get; set; } = new();
@@ -28,9 +30,60 @@ public sealed class AutomationOptions
public string? RulesPath { get; set; } = "meeting-rules.local.yaml";
}
public sealed class ScreenshotOptions
{
public string Hotkey { get; set; } = "Ctrl+Alt+S";
public string AttachmentsFolder { get; set; } = "Attachments";
public ScreenshotOcrOptions Ocr { get; set; } = new();
}
public sealed class ScreenshotOcrOptions
{
public const string DefaultPrompt = """
This screenshot was captured during a meeting. Extract information that is useful for meeting notes.
Identify who appears to be talking, who appears to be presenting, and what is being presented when visible.
If the screenshot contains slides, capture the visible text in clean markdown.
If the screenshot contains a diagram, convert it to Mermaid when possible and preserve labels accurately.
If it contains another kind of shared screen or scene, describe the scene and the relevant visible information.
If you can isolate the actual presentation, shared screen, or similarly relevant meeting content, return crop coordinates for only that content.
Crop coordinates must be pixel coordinates relative to the original screenshot: x, y, width, height.
Do not return crop coordinates for a person, webcam tile, whole app chrome, or content you cannot isolate confidently.
End your response with exactly one fenced json block containing meeting-assistant metadata, for example:
```json
{ "crop": { "x": 0, "y": 0, "width": 1920, "height": 1080 } }
```
Use `{ "crop": null }` when no confident presentation/shared-screen crop exists.
Do not invent information that is not visible in the screenshot.
""";
public bool Enabled { get; set; }
public string? Endpoint { get; set; }
public string? Key { get; set; }
public string KeyEnv { get; set; } = "LITELLM_API_KEY";
public string? Model { get; set; }
public string Prompt { get; set; } = DefaultPrompt;
public TimeSpan Timeout { get; set; } = TimeSpan.FromMinutes(2);
public TimeSpan GetEffectiveTimeout()
{
return Timeout > TimeSpan.Zero ? Timeout : TimeSpan.FromMinutes(2);
}
}
public sealed class HotkeyOptions
{
public string Toggle { get; set; } = "Ctrl+Alt+M";
public string Abort { get; set; } = "Ctrl+Alt+D";
}
public sealed class VaultOptions
@@ -64,6 +117,8 @@ public sealed class RecordingOptions
public TimeSpan BackgroundMetadataLookupTimeout { get; set; } = TimeSpan.FromMinutes(1);
public int MaxMetadataAttendeeImportCount { get; set; } = 30;
public TimeSpan OpenMeetingNoteDelay { get; set; } = TimeSpan.FromSeconds(1);
public string TemporaryRecordingsFolder { get; set; } = @"%LOCALAPPDATA%\MeetingAssistant\Recordings";