Public Access
Archive meeting workflow and screenshot changes
This commit is contained in:
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user