Files
T
codex 250d3b7a1e
PR and Push Build/Test / build-and-test (push) Successful in 16m43s
Generalize settings and logs assistant
2026-05-30 12:57:51 +02:00

135 lines
9.0 KiB
Markdown

## MODIFIED Requirements
### Requirement: Workflow rules and speaker identities can be edited through a tray-launched assistant
Meeting Assistant SHALL expose a `Settings and logs` item from the tray icon menu.
The tray icon SHALL be implemented through the Uno notification icon stack.
The tray icon menu SHALL show every configured launch profile when recording can be started and SHALL include each profile's configured toggle hotkey in the corresponding start or switch menu item.
When the user selects `Settings and logs`, Meeting Assistant SHALL open a basic MewUI chat window for editing the configured workflow rules file, managing speaker identities, inspecting configuration, and reading logs.
The chat window SHALL be titled `Settings and logs`, SHALL display user and assistant messages as visually distinct cards, SHALL display basic markdown emphasis, inline code, fenced code blocks, pipe tables rendered as grid views, and line breaks in agent responses, SHALL display a plain `Thinking...` line while the agent is working, SHALL provide a multiline text input at the bottom with placeholder text `ask me what I can do for you`, SHALL send on Enter, SHALL insert a newline on Shift+Enter, and SHALL provide an explicit Send button.
When a new chat message or thinking state is appended, the chat window SHALL scroll to the bottom of the newly rendered content if the conversation was already near the bottom or did not need scrolling before the append.
The Windows executable and settings/logs editor window SHALL use the Meeting Assistant application icon so the editor has a taskbar icon.
The settings/logs agent SHALL be configured from the summarizer agent settings by default, while allowing workflow-rules-editor-specific endpoint, key, model, reasoning, reconnection, output, and compaction settings to override those defaults.
The settings/logs agent SHALL include the workflow engine documentation in its system prompt and SHALL receive read, write, and search tools scoped to the configured workflow rules file.
The rules editor `write_rules` tool SHALL append to the configured workflow rules file by default and SHALL validate the complete resulting YAML document before writing it.
The rules editor `write_rules` tool SHALL replace the whole configured workflow rules file only when `replace_file` is true.
The rules editor `write_rules` tool SHALL refuse invalid YAML without changing the configured workflow rules file.
The settings/logs agent SHALL receive speaker identity tools to search/list, read, create, update, delete, and merge identities in the local speaker identity database.
The settings/logs agent SHALL receive speaker sample tools to list, read, delete, and queue playback of samples linked to identities.
The settings/logs agent SHALL receive tools to read the local appsettings configuration file, write a complete valid JSON replacement for that file, read Meeting Assistant configuration documentation, read current or rotated application log files by tail or 1-based line range, search current or rotated application log files, search copied OpenSpec specification files, and read copied OpenSpec specification files by relative path and optional 1-based line range.
Meeting Assistant SHALL copy specification markdown files from `openspec/specs` into build and publish output through a recursive include so future spec folders are included automatically.
The first model request caused by each user-submitted chat turn SHALL send the `X-Initiator: user` header, while follow-up model requests within that same turn, such as tool-call continuations, SHALL send `X-Initiator: agent`.
Meeting Assistant SHALL provide a diagnostic endpoint that opens the settings/logs editor through the same window service used by the tray menu.
#### Scenario: Tray menu opens the editor
- **WHEN** the user opens the tray icon menu
- **THEN** the menu includes `Settings and logs`
- **WHEN** the user selects `Settings and logs`
- **THEN** Meeting Assistant opens the settings/logs editor chat window
#### Scenario: Tray menu shows configured profile hotkeys
- **GIVEN** the `default` launch profile uses `Ctrl+Alt+M`
- **AND** the `english` launch profile uses `Ctrl+Alt+E`
- **WHEN** the user opens the tray icon menu while Meeting Assistant is idle
- **THEN** the menu includes a start item for `default` showing `Ctrl+Alt+M`
- **AND** the menu includes a start item for `english` showing `Ctrl+Alt+E`
#### Scenario: Settings and logs editor can be opened diagnostically
- **WHEN** a diagnostic caller requests the settings/logs editor to open
- **THEN** Meeting Assistant invokes the settings/logs editor window service
#### Scenario: Rules editor is scoped to the configured rules file
- **GIVEN** a configured workflow rules file
- **WHEN** the settings/logs agent runs
- **THEN** its read, write, and search tools can access only that configured workflow rules file
- **AND** its system prompt includes the workflow engine documentation
#### Scenario: Settings and logs assistant reads and writes configuration
- **GIVEN** a local appsettings JSON file
- **WHEN** the settings/logs agent reads configuration
- **THEN** it receives the file content or requested clamped line range
- **WHEN** it writes a valid JSON replacement
- **THEN** Meeting Assistant replaces the configuration file
- **WHEN** it writes invalid JSON
- **THEN** Meeting Assistant refuses the write and preserves the existing file
#### Scenario: Settings and logs assistant reads configuration docs
- **WHEN** the settings/logs agent requests configuration documentation
- **THEN** Meeting Assistant returns the dedicated configuration documentation markdown
#### Scenario: Settings and logs assistant reads and searches logs
- **GIVEN** Meeting Assistant has written application-owned logs under the temp log folder
- **WHEN** the settings/logs agent reads logs with a tail count or line range
- **THEN** it receives matching log lines from the selected log file
- **WHEN** the settings/logs agent searches logs
- **THEN** it receives matching `filename:line text` entries from current and rotated log files
#### Scenario: Settings and logs assistant reads and searches copied specs
- **GIVEN** OpenSpec specification markdown files are copied into the application output
- **WHEN** the settings/logs agent searches specs
- **THEN** it receives matching `relative/spec.md:line text` entries scoped to `openspec/specs`
- **WHEN** the settings/logs agent reads a spec file by relative path
- **THEN** it receives the requested file content or clamped 1-based line range
- **AND** paths outside the copied specs tree are refused
#### Scenario: New spec folders are included in output
- **WHEN** a new markdown spec file is added under `openspec/specs`
- **THEN** the application build includes it in the output under `openspec/specs`
- **AND** publish includes it in the published output under `openspec/specs`
#### Scenario: Application keeps its own rotating log files
- **WHEN** Meeting Assistant starts
- **THEN** it writes application logs to the configured temp log folder independently from stdout and stderr redirection
- **AND** it preserves at most four older rotated log files
#### Scenario: Rules editor appends by default
- **GIVEN** a configured workflow rules file with existing valid rules
- **WHEN** the rules editor writes an additional valid rule without `replace_file`
- **THEN** Meeting Assistant appends the new rule
- **AND** preserves the existing rules
#### Scenario: Rules editor replaces only when requested
- **GIVEN** a configured workflow rules file with existing rules
- **WHEN** the rules editor writes valid YAML with `replace_file` set to true
- **THEN** Meeting Assistant replaces the complete rules file with the supplied YAML
#### Scenario: Rules editor refuses invalid YAML
- **GIVEN** a configured workflow rules file with valid existing rules
- **WHEN** the rules editor writes YAML that would make the file invalid
- **THEN** Meeting Assistant refuses the write
- **AND** keeps the existing rules file unchanged
#### Scenario: Rules editor can manage speaker identities
- **GIVEN** the speaker identity database contains speaker identities and samples
- **WHEN** the rules editor agent runs
- **THEN** it can search, read, create, update, delete, and merge speaker identities
- **AND** it can list, read, delete, and queue playback of identity samples
#### Scenario: User sends a rules-editing chat turn
- **GIVEN** the settings/logs editor chat window is open
- **WHEN** the user types a prompt and presses Enter
- **THEN** the user message appears in the conversation
- **AND** a plain `Thinking...` line appears while the agent is running
- **AND** the first model request for that turn is marked as user-initiated
- **AND** the final assistant response replaces the thinking line
#### Scenario: Chat auto-scrolls after appended content
- **GIVEN** the rules editor chat window content fits without scrolling or is already near the bottom
- **WHEN** a new user or assistant message is appended
- **THEN** the conversation scrolls to the bottom of the newly rendered message content