Public Access
134 lines
8.7 KiB
Markdown
134 lines
8.7 KiB
Markdown
# meeting-summary Specification
|
|
|
|
## Purpose
|
|
TBD - created by archiving change define-meeting-assistant-v1. Update Purpose after archive.
|
|
## Requirements
|
|
### Requirement: Meeting Assistant generates meeting outputs
|
|
The summary note SHALL keep frontmatter links to meeting artifacts and SHALL copy `title`, `start_time`, `end_time`, `attendees`, and `projects` from the meeting note when available. If the meeting note has no title, the summary agent SHALL be able to provide a title when writing the summary.
|
|
|
|
When the summary agent calls `write_summary` with a non-empty `title` parameter, Meeting Assistant SHALL update the current meeting note title and write that title to the summary note frontmatter.
|
|
|
|
When the summary agent calls `write_summary` without a `title` parameter or with a blank `title` parameter, Meeting Assistant SHALL keep the existing meeting note title and summary title behavior.
|
|
|
|
The summary instructions SHALL tell the summary agent to provide a concise `title` parameter to `write_summary` when the meeting note still has a generated default title and the meeting purpose is clear from context.
|
|
|
|
#### Scenario: Summary agent renames default-titled meeting
|
|
- **GIVEN** the current meeting note has a generated default title
|
|
- **AND** the meeting purpose is clear from transcript, user notes, or assistant context
|
|
- **WHEN** the summary agent writes the summary
|
|
- **THEN** the summary instructions tell the agent to provide a concise `title` parameter
|
|
- **AND** Meeting Assistant updates the meeting note title and summary note title to the provided title
|
|
|
|
#### Scenario: Summary title parameter is omitted
|
|
- **GIVEN** the current meeting note has an existing title
|
|
- **WHEN** the summary agent writes the summary without a title parameter
|
|
- **THEN** Meeting Assistant keeps the existing meeting note title
|
|
- **AND** writes the existing title to the summary note frontmatter
|
|
|
|
#### Scenario: Summary title parameter is blank
|
|
- **GIVEN** the current meeting note has an existing title
|
|
- **WHEN** the summary agent writes the summary with a blank title parameter
|
|
- **THEN** Meeting Assistant keeps the existing meeting note title
|
|
- **AND** writes the existing title to the summary note frontmatter
|
|
|
|
### Requirement: Meeting screenshots are captured into assistant context
|
|
Meeting Assistant SHALL expose a configurable screenshot hotkey.
|
|
|
|
When a meeting is active and the screenshot hotkey is pressed, Meeting Assistant SHALL capture the currently active window.
|
|
|
|
The screenshot image SHALL be saved into a configurable attachments folder for the assistant context note. By default, the folder SHALL be `Attachments` beside the assistant context note.
|
|
|
|
After the image is saved, Meeting Assistant SHALL append a markdown image link to the assistant context note with a meeting-relative timestamp that correlates to transcript timestamps.
|
|
|
|
Meeting Assistant SHALL allow optional screenshot OCR configuration with endpoint URL, API key or key environment variable, model, prompt, and timeout.
|
|
|
|
When screenshot OCR is configured, Meeting Assistant SHALL send the screenshot and prompt to the configured OpenAI-compatible Responses endpoint and append the model result after the screenshot link in the assistant context note.
|
|
|
|
The screenshot OCR prompt SHALL ask the model to return pixel crop coordinates when it can confidently isolate only the presentation, shared screen, or similarly relevant meeting content.
|
|
|
|
When OCR returns valid crop coordinates within the original image bounds, Meeting Assistant SHALL save a cropped PNG beside the original screenshot and SHALL link the cropped image before the OCR result in the assistant context note.
|
|
|
|
When OCR returns no crop coordinates or invalid crop coordinates, Meeting Assistant SHALL keep the original screenshot link and OCR result without writing a cropped image.
|
|
|
|
When screenshot OCR is not configured, Meeting Assistant SHALL skip OCR and keep the screenshot link.
|
|
|
|
The default OCR prompt SHALL explain that the image is from a meeting and ask the model to identify who is talking, who is presenting, what is presented, capture slide text in markdown, convert diagrams to Mermaid when possible, indicate whether visible people are clearly the exact meeting participants or only a partial result, return crop coordinates only for confidently isolated presentation/shared-screen content, and otherwise describe the scene.
|
|
|
|
#### Scenario: Screenshot is linked with meeting timestamp
|
|
- **GIVEN** a meeting started at `10:00:00`
|
|
- **WHEN** the user captures a screenshot at `10:03:05`
|
|
- **THEN** Meeting Assistant saves the screenshot under the configured attachments folder
|
|
- **AND** appends a markdown image link to assistant context with timestamp `[00:03:05]`
|
|
|
|
#### Scenario: OCR result is appended after screenshot
|
|
- **GIVEN** screenshot OCR is configured
|
|
- **WHEN** the user captures a screenshot
|
|
- **THEN** Meeting Assistant appends the screenshot link to assistant context
|
|
- **AND** appends the OCR result for that screenshot after the link when processing completes
|
|
|
|
#### Scenario: OCR crop is saved and linked before OCR text
|
|
- **GIVEN** screenshot OCR is configured
|
|
- **AND** OCR returns valid crop coordinates for a shared screen
|
|
- **WHEN** OCR processing completes
|
|
- **THEN** Meeting Assistant saves a cropped screenshot beside the original image
|
|
- **AND** links the cropped screenshot before the OCR text in assistant context
|
|
|
|
#### Scenario: OCR is skipped when not configured
|
|
- **GIVEN** screenshot OCR is not configured
|
|
- **WHEN** the user captures a screenshot
|
|
- **THEN** Meeting Assistant saves and links the screenshot without calling a model endpoint
|
|
|
|
#### Scenario: OCR reports whether visible people are complete or partial
|
|
- **WHEN** Meeting Assistant uses the built-in screenshot OCR prompt
|
|
- **THEN** the prompt asks the model to state whether the screenshot clearly shows exactly who is in the meeting or only a partial participant result
|
|
|
|
### Requirement: Summary agent instructions are configurable
|
|
Meeting Assistant SHALL allow the summary agent initial prompt to be configured through application settings.
|
|
|
|
When no configured initial prompt is supplied, Meeting Assistant SHALL use the built-in default prompt.
|
|
|
|
#### Scenario: Configured initial prompt is used
|
|
- **WHEN** `MeetingAssistant:Agent:InitialPrompt` is configured with non-empty content
|
|
- **THEN** the summary agent uses that configured prompt as its base instructions
|
|
|
|
#### Scenario: Empty initial prompt falls back to built-in default
|
|
- **WHEN** `MeetingAssistant:Agent:InitialPrompt` is missing or blank
|
|
- **THEN** the summary agent uses the built-in default instructions
|
|
|
|
### Requirement: Summary agent receives bound project instructions
|
|
Meeting Assistant SHALL append project instructions to the summary agent instructions for projects bound to the meeting note frontmatter.
|
|
|
|
For each bound project folder under the configured projects folder, when an `AGENTS.md` file exists directly in that project folder, Meeting Assistant SHALL append the project name and the `AGENTS.md` content under a project instructions section.
|
|
|
|
When no bound projects have `AGENTS.md`, Meeting Assistant SHALL not append the project instructions section.
|
|
|
|
#### Scenario: Project AGENTS files are appended
|
|
- **GIVEN** the meeting note frontmatter lists projects `Alpha` and `Beta`
|
|
- **AND** both configured project folders contain `AGENTS.md`
|
|
- **WHEN** the summary agent is created
|
|
- **THEN** its instructions include `---`, `projects:`, `# Alpha`, Alpha's `AGENTS.md`, `# Beta`, and Beta's `AGENTS.md`
|
|
|
|
#### Scenario: Projects without AGENTS files are skipped
|
|
- **GIVEN** the meeting note frontmatter lists project `Alpha`
|
|
- **AND** the configured project folder does not contain `AGENTS.md`
|
|
- **WHEN** the summary agent is created
|
|
- **THEN** no empty project instruction entry is appended for `Alpha`
|
|
|
|
### Requirement: Summary note includes a one-line blurb
|
|
The `write_summary` tool SHALL require a one-line summary parameter in addition to the markdown summary body.
|
|
|
|
Meeting Assistant SHALL reject `write_summary` calls when the one-line summary contains line breaks.
|
|
|
|
Meeting Assistant SHALL write the one-line summary into summary note frontmatter as `oneliner`.
|
|
|
|
The summary-agent instructions SHALL tell the agent to keep the one-line summary very short, blurb-like, and concise, with complete sentences not required.
|
|
|
|
#### Scenario: Summary one-liner is written to frontmatter
|
|
- **WHEN** the summary agent calls `write_summary` with markdown content and one-line summary `Architecture risks and next steps`
|
|
- **THEN** Meeting Assistant writes `oneliner: Architecture risks and next steps` to the summary note frontmatter
|
|
|
|
#### Scenario: Multiline one-liner is rejected
|
|
- **WHEN** the summary agent calls `write_summary` with a one-line summary containing a line break
|
|
- **THEN** Meeting Assistant refuses the write
|
|
- **AND** does not mark the summary as written
|