- Added functions to check if a user has access to metrics and dashboards through associated chats.
- Updated permission handling in `get_metric_data_handler`, `get_metric_for_dashboard_handler`, and `get_metric_handler` to include chat access checks.
- Enhanced error handling for cases where users lack access to both dashboards and chats.
- Updated `asset_access_checks` to include new chat access functions and modified the public interface in `lib.rs` accordingly.
- Add convertMarkdownToSlack utility function that converts standard markdown to Slack-compatible mrkdwn format
- Handle headers (converted to section blocks), bold/italic text, code blocks, and ordered/unordered lists
- Integrate converter into messaging service for all outgoing messages (sendMessage, replyToMessage, updateMessage)
- Add comprehensive tests covering all conversion scenarios including nested formatting
- Use placeholder approach to avoid conflicts between bold and italic regex patterns
- Leave unsupported markdown unchanged as required
Fixes BUS-1413
Co-Authored-By: Dallin Bentley <dallinbentley98@gmail.com>
- Add subqueries to count user messages (non-null request_message) and total messages per chat
- Filter out chats with zero user messages AND only one total message
- This excludes auto-generated asset import chats that users never interacted with
- Applied same filtering logic to both list_chats_handler.rs and list_logs_handler.rs
Fixes BUS-1415
Co-Authored-By: Dallin Bentley <dallinbentley98@gmail.com>
- Return 412 PRECONDITION_FAILED for permission/workspace access errors
- Return 404 NOT_FOUND for chat not found errors
- Keep 500 INTERNAL_SERVER_ERROR as fallback for other errors
- Addresses BUS-1423
Co-Authored-By: Dallin Bentley <dallinbentley98@gmail.com>
- Updated maxDuration to 600 seconds to align with analyst agent task.
- Added logic to handle cases where no messages are found, sending a direct response to Slack and updating message reactions accordingly.
- Improved type safety in SlackSharingPermissions component by defining a specific type for sharing permissions.