Resolved conflicts by:
- Using storage provider approach from staging in cleanup-export-file.ts
- Keeping Opus fallback model from our env var work in sonnet-4.ts
- Merging dependencies in data-source package.json (kept @buster/secrets, added new deps from staging)
- Regenerated pnpm-lock.yaml after resolving package.json conflicts
- Accept deletion of env.d.ts and validate-env.ts (replaced by centralized secrets)
- Remove SLACK_INTEGRATION_ENABLED (now always enabled per staging changes)
- Update Slack OAuth service to use @buster/secrets instead of process.env
- Add BUSTER_URL to server keys
- Fix Snowflake test timeout issues
- Added routes for creating, retrieving, and deleting S3 integrations in the API.
- Introduced handlers for S3 integration operations, including validation of user permissions and storage credentials.
- Updated database schema to support S3 integrations, including a new table and associated queries.
- Integrated storage provider logic to handle S3, R2, and GCS configurations.
- Enhanced error handling and response structures for integration operations.
This commit lays the groundwork for managing storage integrations within the application, allowing users to connect and manage their S3 storage solutions.
- Update all LLM model files to use getSecretSync with AI_KEYS constants
- Migrate OpenAI GPT models (gpt-5, gpt-5-mini, gpt-5-nano) to use secrets system
- Migrate Anthropic models (sonnet-4, haiku-3-5) to use secrets for both Anthropic API and Vertex AI credentials
- Update provider files (openai.ts, anthropic.ts, vertex.ts) to use getSecretSync
- Migrate evaluation workflow to use BRAINTRUST_KEY from secrets
- Implement proper error handling for missing credentials with try-catch blocks
- Test files will be migrated in a separate update
All non-test source files now use centralized secrets management instead of direct process.env access.
- Added checks to ensure toolCallId exists and is a valid string before processing tool results.
- Preserves the original part if toolCallId is missing or invalid, improving robustness in message conversion.
- Updated logic to prioritize cache as the source of truth during streaming, with asynchronous database updates for persistence.
- Improved error handling for background database updates, ensuring cache validity even if DB update fails.
- Cleaned up mergeResponseMessages and mergeReasoningMessages functions by removing redundant code.
- Introduced lru-cache version 11.1.0 in package.json and pnpm-lock.yaml.
- Refactored updateMessageEntries to utilize TypeScript-based merge logic with write-through caching.
- Improved error handling for fetching existing message entries and updated database logic to merge new entries with existing ones.
- Updated GET reports endpoint to use `getReportsWithPermissions` for improved access control.
- Added support for filtering reports based on `shared_with_me` and `only_my_reports` flags.
- Introduced `getReportsWithPermissions` function to handle complex permission logic in the database layer.
- Enhanced report metadata retrieval to ensure proper access validation before fetching report details.
- Simplified the `GeneratingContent` component to display a static loading message.
- Updated `ReportPageController` to determine if a report is being generated based on the current message context.
- Adjusted report status handling in the delta creation process to maintain 'loading' status during streaming.
- Enhanced logic in the modify reports helper to ensure file status reflects loading during streaming and only updates to completed or failed when all edits are finalized.
- Modified database query to preserve input order for new messages during updates.
- Added '@buster/data-source' dependency to the server and pnpm lock files.
- Enhanced the getMetricDataHandler function to support versioning and data source integration.
- Updated the metric data query schema to include an optional version number parameter.
- Modified the API endpoint to accommodate the new versioning feature for metric data retrieval.
- Changed the wording of elapsed time in reasoning messages from "min" to "minutes" for better readability.
- Updated the final reasoning message format to specify "Reasoned for" instead of "Total workflow time," enhancing user understanding of the output.
These changes contribute to a more user-friendly experience and maintain consistency in messaging across different tools.