mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-01-09 07:08:09 -05:00
3c62ca23df4c4a9f54f28ce59582fcb9999dcbe9
7002 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
c0eae266d8 |
chore(backend/deps-dev): Bump the development-dependencies group in /autogpt_platform/backend with 2 updates (#10373)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
f02bb292b5 |
chore(libs/deps-dev): Bump ruff from 0.12.2 to 0.12.3 in /autogpt_platform/autogpt_libs in the development-dependencies group (#10376)
Bumps the development-dependencies group in /autogpt_platform/autogpt_libs with 1 update: [ruff](https://github.com/astral-sh/ruff). Updates `ruff` from 0.12.2 to 0.12.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.12.3</h2> <h2>Release Notes</h2> <h3>Preview features</h3> <ul> <li>[<code>flake8-bugbear</code>] Support non-context-manager calls in <code>B017</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/19063">#19063</a>)</li> <li>[<code>flake8-use-pathlib</code>] Add autofixes for <code>PTH100</code>, <code>PTH106</code>, <code>PTH107</code>, <code>PTH108</code>, <code>PTH110</code>, <code>PTH111</code>, <code>PTH112</code>, <code>PTH113</code>, <code>PTH114</code>, <code>PTH115</code>, <code>PTH117</code>, <code>PTH119</code>, <code>PTH120</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/19213">#19213</a>)</li> <li>[<code>flake8-use-pathlib</code>] Add autofixes for <code>PTH203</code>, <code>PTH204</code>, <code>PTH205</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18922">#18922</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-return</code>] Fix false-positive for variables used inside nested functions in <code>RET504</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18433">#18433</a>)</li> <li>Treat form feed as valid whitespace before a line continuation (<a href="https://redirect.github.com/astral-sh/ruff/pull/19220">#19220</a>)</li> <li>[<code>flake8-type-checking</code>] Fix syntax error introduced by fix (<code>TC008</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19150">#19150</a>)</li> <li>[<code>pyupgrade</code>] Keyword arguments in <code>super</code> should suppress the <code>UP008</code> fix (<a href="https://redirect.github.com/astral-sh/ruff/pull/19131">#19131</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>[<code>flake8-pyi</code>] Make example error out-of-the-box (<code>PYI007</code>, <code>PYI008</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19103">#19103</a>)</li> <li>[<code>flake8-simplify</code>] Make example error out-of-the-box (<code>SIM116</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19111">#19111</a>)</li> <li>[<code>flake8-type-checking</code>] Make example error out-of-the-box (<code>TC001</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19151">#19151</a>)</li> <li>[<code>flake8-use-pathlib</code>] Make example error out-of-the-box (<code>PTH210</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19189">#19189</a>)</li> <li>[<code>pycodestyle</code>] Make example error out-of-the-box (<code>E272</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19191">#19191</a>)</li> <li>[<code>pycodestyle</code>] Make example not raise unnecessary <code>SyntaxError</code> (<code>E114</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19190">#19190</a>)</li> <li>[<code>pydoclint</code>] Make example error out-of-the-box (<code>DOC501</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19218">#19218</a>)</li> <li>[<code>pylint</code>, <code>pyupgrade</code>] Fix syntax errors in examples (<code>PLW1501</code>, <code>UP028</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19127">#19127</a>)</li> <li>[<code>pylint</code>] Update <code>missing-maxsplit-arg</code> docs and error to suggest proper usage (<code>PLC0207</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18949">#18949</a>)</li> <li>[<code>flake8-bandit</code>] Make example error out-of-the-box (<code>S412</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19241">#19241</a>)</li> </ul> <h2>Contributors</h2> <ul> <li><a href="https://github.com/AlexWaygood"><code>@AlexWaygood</code></a></li> <li><a href="https://github.com/BurntSushi"><code>@BurntSushi</code></a></li> <li><a href="https://github.com/Gankra"><code>@Gankra</code></a></li> <li><a href="https://github.com/InSyncWithFoo"><code>@InSyncWithFoo</code></a></li> <li><a href="https://github.com/LaBatata101"><code>@LaBatata101</code></a></li> <li><a href="https://github.com/MatthewMckee4"><code>@MatthewMckee4</code></a></li> <li><a href="https://github.com/MeGaGiGaGon"><code>@MeGaGiGaGon</code></a></li> <li><a href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li> <li><a href="https://github.com/NamelessGO"><code>@NamelessGO</code></a></li> <li><a href="https://github.com/UnboundVariable"><code>@UnboundVariable</code></a></li> <li><a href="https://github.com/abhijeetbodas2001"><code>@abhijeetbodas2001</code></a></li> <li><a href="https://github.com/carljm"><code>@carljm</code></a></li> <li><a href="https://github.com/charliermarsh"><code>@charliermarsh</code></a></li> <li><a href="https://github.com/chirizxc"><code>@chirizxc</code></a></li> <li><a href="https://github.com/danparizher"><code>@danparizher</code></a></li> <li><a href="https://github.com/dhruvmanila"><code>@dhruvmanila</code></a></li> <li><a href="https://github.com/fdosani"><code>@fdosani</code></a></li> <li><a href="https://github.com/github-actions"><code>@github-actions</code></a></li> <li><a href="https://github.com/ibraheemdev"><code>@ibraheemdev</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.12.3</h2> <h3>Preview features</h3> <ul> <li>[<code>flake8-bugbear</code>] Support non-context-manager calls in <code>B017</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/19063">#19063</a>)</li> <li>[<code>flake8-use-pathlib</code>] Add autofixes for <code>PTH100</code>, <code>PTH106</code>, <code>PTH107</code>, <code>PTH108</code>, <code>PTH110</code>, <code>PTH111</code>, <code>PTH112</code>, <code>PTH113</code>, <code>PTH114</code>, <code>PTH115</code>, <code>PTH117</code>, <code>PTH119</code>, <code>PTH120</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/19213">#19213</a>)</li> <li>[<code>flake8-use-pathlib</code>] Add autofixes for <code>PTH203</code>, <code>PTH204</code>, <code>PTH205</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18922">#18922</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-return</code>] Fix false-positive for variables used inside nested functions in <code>RET504</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18433">#18433</a>)</li> <li>Treat form feed as valid whitespace before a line continuation (<a href="https://redirect.github.com/astral-sh/ruff/pull/19220">#19220</a>)</li> <li>[<code>flake8-type-checking</code>] Fix syntax error introduced by fix (<code>TC008</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19150">#19150</a>)</li> <li>[<code>pyupgrade</code>] Keyword arguments in <code>super</code> should suppress the <code>UP008</code> fix (<a href="https://redirect.github.com/astral-sh/ruff/pull/19131">#19131</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>[<code>flake8-pyi</code>] Make example error out-of-the-box (<code>PYI007</code>, <code>PYI008</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19103">#19103</a>)</li> <li>[<code>flake8-simplify</code>] Make example error out-of-the-box (<code>SIM116</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19111">#19111</a>)</li> <li>[<code>flake8-type-checking</code>] Make example error out-of-the-box (<code>TC001</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19151">#19151</a>)</li> <li>[<code>flake8-use-pathlib</code>] Make example error out-of-the-box (<code>PTH210</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19189">#19189</a>)</li> <li>[<code>pycodestyle</code>] Make example error out-of-the-box (<code>E272</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19191">#19191</a>)</li> <li>[<code>pycodestyle</code>] Make example not raise unnecessary <code>SyntaxError</code> (<code>E114</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19190">#19190</a>)</li> <li>[<code>pydoclint</code>] Make example error out-of-the-box (<code>DOC501</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19218">#19218</a>)</li> <li>[<code>pylint</code>, <code>pyupgrade</code>] Fix syntax errors in examples (<code>PLW1501</code>, <code>UP028</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19127">#19127</a>)</li> <li>[<code>pylint</code>] Update <code>missing-maxsplit-arg</code> docs and error to suggest proper usage (<code>PLC0207</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18949">#18949</a>)</li> <li>[<code>flake8-bandit</code>] Make example error out-of-the-box (<code>S412</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19241">#19241</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
11cb94ba78 |
chore(frontend/deps-dev): Bump @types/node from 22.15.30 to 24.0.13 in /autogpt_platform/frontend (#10379)
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
a15bb16ce2 |
chore(backend/deps): Bump the production-dependencies group across 1 directory with 4 updates (#10389)
Bumps the production-dependencies group with 4 updates in the /autogpt_platform/backend directory: [groq](https://github.com/groq/groq-python), [launchdarkly-server-sdk](https://github.com/launchdarkly/python-server-sdk), [openai](https://github.com/openai/openai-python) and [sentry-sdk](https://github.com/getsentry/sentry-python). Updates `groq` from 0.29.0 to 0.30.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/groq/groq-python/releases">groq's releases</a>.</em></p> <blockquote> <h2>v0.30.0</h2> <h2>0.30.0 (2025-07-11)</h2> <p>Full Changelog: <a href="https://github.com/groq/groq-python/compare/v0.29.0...v0.30.0">v0.29.0...v0.30.0</a></p> <h3>Features</h3> <ul> <li><strong>api:</strong> api update (<a href=" |
||
|
|
ff7157fbbe |
chore(backend/deps): Bump pinecone from 5.4.2 to 7.3.0 in /autogpt_platform/backend (#10378)
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
f2a26b547b |
feat(frontend): add prefetch queries for various endpoints and enhance API configurations (#10394)
This update enhances the performance and user experience by allowing
data to be prefetched, reducing loading times on the frontend.
### Changes
- Introduced `usePrefetch` in Orval configuration to support
prefetching.
- Added prefetch queries for user profiles, admin listings history,
notification preferences, and execution schedules.
- Updated OpenAPI specifications to include descriptions for provider
names and adjusted required fields in request models.
- Enhanced the Navbar component to utilize the new prefetch
functionality for user profile data.
- Improved type definitions for various models to ensure better
integration with the API.
### Checklist 📋
#### For code changes:
- [x] I have clearly listed my changes in the PR description
- [x] I have made a test plan
- [x] I have tested my changes according to the test plan:
- [x] I’ve checked everything manually, and everything is working fine.
|
||
|
|
423b22214a |
feat(blocks): Add Excel support to ReadSpreadsheetBlock and introduced FileReadBlock (#10393)
This PR adds Excel file support to CSV processing and enhances text file reading capabilities. ### Changes 🏗️ **ReadSpreadsheetBlock (formerly ReadCsvBlock):** - Renamed `ReadCsvBlock` to `ReadSpreadsheetBlock` for better clarity - Added Excel file support (.xlsx, .xls) with automatic conversion to CSV using pandas - Enhanced parameter `file_in` to `file_input` for consistency - Excel files are automatically detected by extension and converted to CSV format - Maintains all existing CSV processing functionality (delimiters, headers, etc.) - Graceful error handling when pandas library is not available **FileReadBlock:** - Enhanced text file reading with advanced chunking capabilities - Added parameters: `skip_size`, `skip_rows`, `row_limit`, `size_limit`, `delimiter` - Supports both character-based and row-based processing - Chunked output for large files based on size limits - Proper file handling with UTF-8 and latin-1 encoding fallbacks - Uses `store_media_file` for secure file processing (URLs, data URIs, local paths) - Fixed test input to use data URI instead of non-existent file **General Improvements:** - Consistent parameter naming across blocks (`file_input`) - Enhanced error handling and validation - Comprehensive test coverage - All existing functionality preserved ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Both ReadSpreadsheetBlock and FileReadBlock instantiate correctly - [x] ReadSpreadsheetBlock processes CSV data with existing functionality - [x] FileReadBlock reads text files with data URI input - [x] All block tests pass (457 passed, 83 skipped) - [x] No linting errors in modified files - [x] Excel support gracefully handles missing pandas dependency #### For configuration changes: - [ ] `.env.example` is updated or already compatible with my changes - [ ] `docker-compose.yml` is updated or already compatible with my changes - [ ] I have included a list of my configuration changes in the PR description (under **Changes**) *Note: No configuration changes required for this PR.* |
||
|
|
ee44f3b4a9 |
fix(frontend): navbar profile query not working (#10392)
## Changes 🏗️ <img width="800" height="265" alt="Screenshot 2025-07-16 at 13 10 57" src="https://github.com/user-attachments/assets/01164bde-0523-4284-bf74-d1a735b77d5c" /> When redoing the navigation bar, I moved the profile query to be executed on the server using the new [react-query](https://tanstack.com/query/latest) generated hooks. The README [states the new hooks can be called on the server](https://github.com/Significant-Gravitas/AutoGPT/blob/master/autogpt_platform/frontend/README.md#server-side-prefetching), but when looking deeply into the implementation of [`custom-mutator.ts`](https://github.com/Significant-Gravitas/AutoGPT/blob/master/autogpt_platform/frontend/src/app/api/mutators/custom-mutator.ts), it turns out they can not ( yet ) as `custom-mutator` calls the proxy API ( _which can't be called from a RSC_ 😅 ). ### Solution For now, I changed the call to be made through the old `BackendAPI`, which can be called client and server side ✅ ( _I did that as part of the server 🍪 migration_ ) and added an E2E test to catch this ever disappears again. Next, I will open a separate PR refactoring `custom-mutator` so that it can be called on the server. ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Run the app - [x] Login - [x] You see your account name and email when opening the account menu |
||
|
|
a07b0c7a7a | Merge branch 'master' into dev autogpt-platform-beta-v0.6.16 | ||
|
|
db1f034544 |
Fix Gmail body parsing for multipart messages (#9863) (#10071)
<!-- Clearly explain the need for these changes: --> The `GmailReadBlock._get_email_body()` method was only inspecting the top-level payload and a single `text/plain` part, causing it to return the fallback string "This email does not contain a text body." for most Gmail messages. This occurred because Gmail messages are typically wrapped in `multipart/alternative` or other multipart containers, which the original implementation couldn't handle. This critical issue made the Gmail integration unusable for reading email body content, as virtually every real Gmail message uses multipart MIME structures. <!-- Concisely describe all of the changes made in this pull request: --> ### Changes #### Core Implementation: - **Replaced simple `_get_email_body()` with recursive multipart parser** that can walk through nested MIME structures - **Added `_walk_for_body()` method** for recursive traversal of email parts with depth limiting (max 10 levels) - **Implemented safe base64 decoding** with automatic padding correction in `_decode_base64()` - **Added attachment body support** via `_download_attachment_body()` for emails where body content is stored as attachments #### Email Format Support: - **HTML to text conversion** using `html2text` library for HTML-only emails - **Multipart/alternative handling** with preference for `text/plain` over `text/html` - **Nested multipart structure support** (e.g., `multipart/mixed` containing `multipart/alternative`) - **Single-part email support** (maintains backward compatibility) #### Dependencies & Testing: - **Added `html2text = "^2024.2.26"`** to `pyproject.toml` for HTML conversion - **Created comprehensive unit tests** in `test/blocks/test_gmail.py` covering all email types and edge cases - **Added error handling and graceful fallbacks** for malformed data and missing dependencies #### Security & Performance: - **Recursion depth limiting** prevents infinite loops on malformed email structures - **Exception handling** ensures graceful degradation when API calls fail - **Efficient tree traversal** with early returns for better performance ### Checklist #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: <details> <summary>Test Plan</summary> - **Single-part text/plain emails** - Verified correct extraction of plain text content - **Multipart/alternative emails** - Tested preference for plain text over HTML when both available - **HTML-only emails** - Confirmed HTML to text conversion works correctly - **Nested multipart structures** - Tested deeply nested `multipart/mixed` containing `multipart/alternative` - **Attachment-based body content** - Verified downloading and decoding of body stored as attachments - **Base64 padding edge cases** - Tested malformed base64 data with missing padding - **Recursion depth limits** - Confirmed protection against infinite recursion - **Error handling scenarios** - Tested graceful fallbacks for API failures and missing dependencies - **Backward compatibility** - Ensured existing functionality remains unchanged for edge cases - **Integration testing** - Ran standalone verification script with 100% test pass rate </details> #### For configuration changes: - [x] `.env.example` is updated or already compatible with my changes - [x] `docker-compose.yml` is updated or already compatible with my changes - [x] I have included a list of my configuration changes in the PR description (under **Changes**) <details> <summary>Configuration Changes</summary> - Added `html2text` dependency to `pyproject.toml` - no environment or infrastructure changes required - No changes to ports, services, secrets, or databases - Fully backward compatible with existing Gmail API configuration </details> --------- Co-authored-by: Toran Bruce Richards <toran.richards@gmail.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
f45bf53681 |
feat(docs): Add info about auto setup script to docs + readme (#10347)
Updates to the readme + docs to add info about the newly added auto setup script. Changes to ``new_blocks.md`` and ``installer.md`` are to make netlify CI happy and pass --------- Co-authored-by: Reinier van der Leer <pwuts@agpt.co> |
||
|
|
0deaaf9e8f |
chore(frontend/deps-dev): Bump the development-dependencies group in /autogpt_platform/frontend with 4 updates (#10382)
Bumps the development-dependencies group in /autogpt_platform/frontend with 4 updates: [@playwright/test](https://github.com/microsoft/playwright), [@tanstack/react-query-devtools](https://github.com/TanStack/query/tree/HEAD/packages/react-query-devtools), [msw](https://github.com/mswjs/msw) and [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss). Updates `@playwright/test` from 1.53.2 to 1.54.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/microsoft/playwright/releases"><code>@playwright/test</code>'s releases</a>.</em></p> <blockquote> <h2>v1.54.1</h2> <h3>Highlights</h3> <p><a href="https://redirect.github.com/microsoft/playwright/issues/36650">microsoft/playwright#36650</a> - [Regression]: 1.54.0 breaks downloading browsers when an HTTP(S) proxy is used</p> <h2>Browser Versions</h2> <ul> <li>Chromium 139.0.7258.5</li> <li>Mozilla Firefox 140.0.2</li> <li>WebKit 26.0</li> </ul> <p>This version was also tested against the following stable channels:</p> <ul> <li>Google Chrome 140</li> <li>Microsoft Edge 140</li> </ul> <h2>v1.54.0</h2> <h2>Highlights</h2> <ul> <li> <p>New cookie property <code>partitionKey</code> in <a href="https://playwright.dev/docs/api/class-browsercontext#browser-context-cookies">browserContext.cookies()</a> and <a href="https://playwright.dev/docs/api/class-browsercontext#browser-context-add-cookies">browserContext.addCookies()</a>. This property allows to save and restore partitioned cookies. See <a href="https://developer.mozilla.org/en-US/docs/Web/Privacy/Guides/Privacy_sandbox/Partitioned_cookies">CHIPS MDN article</a> for more information. Note that browsers have different support and defaults for cookie partitioning.</p> </li> <li> <p>New option <code>noSnippets</code> to disable code snippets in the html report.</p> <pre lang="js"><code>import { defineConfig } from '@playwright/test'; <p>export default defineConfig({ reporter: [['html', { noSnippets: true }]] }); </code></pre></p> </li> <li> <p>New property <code>location</code> in test annotations, for example in <a href="https://playwright.dev/docs/api/class-testresult#test-result-annotations">testResult.annotations</a> and <a href="https://playwright.dev/docs/api/class-testinfo#test-info-annotations">testInfo.annotations</a>. It shows where the annotation like <code>test.skip</code> or <code>test.fixme</code> was added.</p> </li> </ul> <h2>Command Line</h2> <ul> <li> <p>New option <code>--user-data-dir</code> in multiple commands. You can specify the same user data dir to reuse browsing state, like authentication, between sessions.</p> <pre lang="bash"><code>npx playwright codegen --user-data-dir=./user-data </code></pre> </li> <li> <p>Option <code>-gv</code> has been removed from the <code>npx playwright test</code> command. Use <code>--grep-invert</code> instead.</p> </li> <li> <p><code>npx playwright open</code> does not open the test recorder anymore. Use <code>npx playwright codegen</code> instead.</p> </li> </ul> <h2>Miscellaneous</h2> <ul> <li>Support for Node.js 16 has been removed.</li> <li>Support for Node.js 18 has been deprecated, and will be removed in the future.</li> </ul> <h2>Browser Versions</h2> <ul> <li>Chromium 139.0.7258.5</li> <li>Mozilla Firefox 140.0.2</li> <li>WebKit 26.0</li> </ul> <p>This version was also tested against the following stable channels:</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
9be4b1f4cc |
chore(frontend/deps-dev): Bump chromatic from 11.25.2 to 13.1.2 in /autogpt_platform/frontend (#10385)
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
fde3533943 |
fix(frontend): logout pages design adjustments (#10342)
## Changes 🏗️ - Put `Continue with Google` button below the other button on the forms ( _to confirm with design_ ) - Ensure some vertical spacing so the forms don't end touching the header on small screens - Apply style adjustments asked by design on navbar links ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Check the above ### For configuration changes: None |
||
|
|
a789f87734 |
fix(frontend): disable Cloudflare on Vercel previews (#10354)
## Changes 🏗️ Disable the Cloudflare check: <img width="600" height="861" alt="Screenshot 2025-07-11 at 18 51 46" src="https://github.com/user-attachments/assets/792ecca0-967e-4cef-a562-789125452d2f" /> On Vercel previews, so we can use previews for testing Front-end only changes. Vercel previews have dynamically generated URLs: ``` https://{branch}-{commit}-significant-gravitas.vercel.app/login ``` So if Cloudflare does not support URL wildcards we will neeed to do this 🙇🏽 ( _as an experiment_ ) ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] You can login on the preview ### For configuration changes: None |
||
|
|
0b6e46d363 |
fix(frontend): fix my agent count in the library (#10357)
Currently, my agents count is showing the initial agent count loads on the library and then adding more agents after pagination. ### Changes 🏗️ - I’ve used `total_items` inside the pagination response and shown the correct result. ### Demo https://github.com/user-attachments/assets/b9a2cf18-c9fc-42f8-b0d4-3f8a7ad3cbc5 ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Manually test everything, and it works fine. |
||
|
|
6ffe57c3df |
fix(docs): Updated Discord Badge in README for Better Visibility (#10360)
### Motivation 💡 The previous Discord badge in the README used `dcbadge.vercel.app`, which often fails to render correctly and displays an invalid or broken badge. ### Changes 🛠️ - Replaced the broken badge with a `shields.io` Discord badge that is visually consistent with the Twitter badge - Ensures clearer visual guidance and a more professional appearance ### Notes ✏️ This PR only updates the `README.md` no frontend, backend, or configuration files are touched. This change improves the aesthetics and onboarding experience for new contributors. Screenshot of the issue: <img width="405" height="47" alt="Screenshot 2025-07-12 175316" src="https://github.com/user-attachments/assets/41f7355c-f795-4163-855f-3d01f2478dd7" /> --------- Co-authored-by: Ubbe <hi@ubbe.dev> Co-authored-by: Bently <Github@bentlybro.com> Co-authored-by: Bently <tomnoon9@gmail.com> |
||
|
|
3ca0d04ea0 |
fix(readme): Removes MIT icon from readme (#10366)
This PR simply removes the MIT Icon from the main README.md |
||
|
|
c2eea593c0 |
fix(backend): Include node execution steps and cost of sub-graph execution (#10328)
## Summary This PR enhances the node execution stats tracking system to properly handle nested graph executions and additional cost/step metrics: - **Add extra_cost and extra_steps fields** to `NodeExecutionStats` model for tracking additional metrics from sub-graphs - **Update AgentExecutorBlock** to merge nested execution stats from sub-graphs into the parent execution - **Fix stats update mechanism** in `execute_node` to use in-place updates instead of `model_copy` for better performance - **Add proper tracking** of extra costs and steps in graph execution stats aggregation ## Changes Made - Modified `backend/backend/data/model.py` to add `extra_cost` and `extra_steps` fields - Updated `backend/backend/blocks/agent.py` to merge stats from nested graph executions - Fixed `backend/backend/executor/manager.py` to properly update execution stats and aggregate extra metrics ## Test Plan - [x] Verify that nested graph executions properly propagate their stats to parent graphs - [x] Test that extra costs and steps are correctly tracked and aggregated - [x] Ensure debug logging provides useful information for monitoring - [x] Run existing tests to ensure no regressions - [x] Test with multi-level nested agent graphs 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
36f5f24333 |
feat(platform/builder): Builder credentials support + UX improvements (#10323)
- Resolves #10313 - Resolves #10333 Before: https://github.com/user-attachments/assets/a105b2b0-a90b-4bc6-89da-bef3f5a5fa1f - No credentials input - Stuttery experience when panning or zooming the viewport After: https://github.com/user-attachments/assets/f58d7864-055f-4e1c-a221-57154467c3aa - Pretty much the same UX as in the Library, with fully-fledged credentials input support - Much smoother when moving around the canvas ### Changes 🏗️ Frontend: - Add credentials input support to Run UX in Builder - Pass run inputs instead of storing them on the input nodes - Re-implement `RunnerInputUI` using `AgentRunDetailsView`; rename to `RunnerInputDialog` - Make `AgentRunDraftView` more flexible - Remove `RunnerInputList`, `RunnerInputBlock` - Make moving around in the Builder *smooooth* by reducing unnecessary re-renders - Clean up and partially re-write bead management logic - Replace `request*` fire-and-forget methods in `useAgentGraph` with direct action async callbacks - Clean up run input UI components - Simplify `RunnerUIWrapper` - Add `isEmpty` utility function in `@/lib/utils` (expanding on `_.isEmpty`) - Fix default value handling in `TypeBasedInput` (**Note:** after all the changes I've made I'm not sure this is still necessary) - Improve & clean up Builder test implementations Backend + API: - Fix front-end `Node`, `GraphMeta`, and `Block` types - Small refactor of `Graph` to match naming of some `LibraryAgent` attributes - Fix typing of `list_graphs`, `get_graph_meta_by_store_listing_version_id` endpoints - Add `GraphMeta` model and `GraphModel.meta()` shortcut - Move `POST /library/agents/{library_agent_id}/setup-trigger` to `POST /library/presets/setup-trigger` ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - Test the new functionality in the Builder: - [x] Running an agent with (credentials) inputs from the builder - [x] Beads behave correctly - [x] Running an agent without any inputs from the builder - [x] Scheduling an agent from the builder - [x] Adding and searching blocks in the block menu - [x] Test that all existing `AgentRunDraftView` functionality in the Library still works the same - [x] Run an agent - [x] Schedule an agent - [x] View past runs - [x] Run an agent with inputs, then edit the agent's inputs and view the agent in the Library (should be fine) |
||
|
|
309114a727 | Merge commit from fork | ||
|
|
4ffb99bfb0 |
feat(backend): Add block error rate monitoring and Discord alerts (#10332)
## Summary This PR adds a simple block error rate monitoring system that runs every 24 hours (configurable) and sends Discord alerts when blocks exceed the error rate threshold. ## Changes Made **Modified Files:** - `backend/executor/scheduler.py` - Added `report_block_error_rates` function and scheduled job - `backend/util/settings.py` - Added configuration options - `backend/.env.example` - Added environment variable examples - Refactor scheduled job logics in scheduler.py into seperate files ## Configuration ```bash # Block Error Rate Monitoring BLOCK_ERROR_RATE_THRESHOLD=0.5 # 50% error rate threshold BLOCK_ERROR_RATE_CHECK_INTERVAL_SECS=86400 # 24 hours ``` ## How It Works 1. **Scheduled Job**: Runs every 24 hours (configurable via `BLOCK_ERROR_RATE_CHECK_INTERVAL_SECS`) 2. **Error Rate Calculation**: Queries last 24 hours of node executions and calculates error rates per block 3. **Threshold Check**: Alerts on blocks with ≥50% error rate (configurable via `BLOCK_ERROR_RATE_THRESHOLD`) 4. **Discord Alert**: Sends alert to Discord using existing `discord_system_alert` function 5. **Manual Execution**: Available via `execute_report_block_error_rates()` scheduler client method ## Alert Format ``` Block Error Rate Alert: 🚨 Block 'DeprecatedGPT3Block' has 75.0% error rate (75/100) in the last 24 hours 🚨 Block 'BrokenImageBlock' has 60.0% error rate (30/50) in the last 24 hours ``` ## Testing Can be tested manually via: ```python from backend.executor.scheduler import SchedulerClient client = SchedulerClient() result = client.execute_report_block_error_rates() ``` ## Implementation Notes - Follows the same pattern as `report_late_executions` function - Only checks blocks with ≥10 executions to avoid noise - Uses existing Discord notification infrastructure - Configurable threshold and check interval - Proper error handling and logging ## Test plan - [x] Verify configuration loads correctly - [x] Test error rate calculation with existing database - [x] Confirm Discord integration works - [x] Test manual execution via scheduler client - [x] Verify scheduled job runs correctly 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude AI <claude@anthropic.com> Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
5741331250 |
feat(frontend): logged out pages UI updates (#10314)
## Changes 🏗️ <img width="800" alt="Screenshot 2025-07-07 at 13 16 44" src="https://github.com/user-attachments/assets/0d404958-d4c9-454d-b71a-9dd677fe0fdc" /> <img width="800" alt="Screenshot 2025-07-07 at 13 17 08" src="https://github.com/user-attachments/assets/1142f6d5-a6af-485d-b42e-98afd26de3ed" /> Update the UI of the logged-out pages ( _login, signup, reset-password..._ ) using the new Design System components, so the app starts to look a bit more cohesive 💆🏽 Some notes: - I refactored the `<AuthCard />` components a bit to be easier to use - I split the render from hook login on login/signup - I added a couple of modals to improve the UX when logging in with Google or using non-whitelisted emails - _see below my comments for more context_ - When there are API errors, they are shown in a toast to prevent the layout of the form from jumping - When using the components in the UI, an issue with border-radius, see comments for an explanation ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Logout on the platform - [x] Check the updated Login/Signup/Reset password pages - [x] The UI looks good and is consistent - [x] The forms work as expected |
||
|
|
2fda8dfd32 |
feat(frontend): new navbar design (#10341)
## Changes 🏗️ <img width="900" height="327" alt="Screenshot 2025-07-10 at 20 12 38" src="https://github.com/user-attachments/assets/044f00ed-7e05-46b7-a821-ce1cb0ee9298" /> <br /><br /> Navbar updated to look pretty from the new designs: - the logo is now centred instead of on the left - menu items have been updated to a smaller font-size and less radius - icons have been updated I also generated the API files ( _sorry for the noise_ ). I had to do some border-radius and button updates on the atoms/tokens for it to look good. ## Checklist 📋 ## For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Login/logout - [x] The new navbar looks good across screens ## For configuration changes No config changes |
||
|
|
22c76eab61 |
feat(toast): update styles (#10339)
## Changes 🏗️ Style refinements on Toasts. ## Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Check Storybook toast stories - [x] They match Figma #### For configuration changes: None |
||
|
|
7688a9701e |
perf(backend/db): Optimize StoreAgent and Creator views with database indexes and materialized views (#10084)
### Summary Performance optimization for the platform's store and creator functionality by adding targeted database indexes and implementing materialized views to reduce query execution time. ### Changes 🏗️ **Database Performance Optimizations:** - Added strategic database indexes for `StoreListing`, `StoreListingVersion`, `StoreListingReview`, `AgentGraphExecution`, and `Profile` tables - Implemented materialized views (`mv_agent_run_counts`, `mv_review_stats`) to cache expensive aggregation queries - Optimized `StoreAgent` and `Creator` views to use materialized views and improved query patterns - Added automated refresh function with 15-minute scheduling for materialized views (when pg_cron extension is available) **Key Performance Improvements:** - Filtered indexes on approved store listings to speed up marketplace queries - GIN index on categories for faster category-based searches - Composite indexes for common query patterns (e.g., listing + version lookups) - Pre-computed agent run counts and review statistics to eliminate expensive aggregations ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Verified migration runs successfully without errors - [x] Confirmed materialized views are created and populated correctly - [x] Tested StoreAgent and Creator view queries return expected results - [x] Validated automatic refresh function works properly - [x] Confirmed rollback migration successfully removes all changes #### For configuration changes: - [x] `.env.example` is updated or already compatible with my changes - [x] `docker-compose.yml` is updated or already compatible with my changes - [x] I have included a list of my configuration changes in the PR description (under **Changes**) **Note:** No configuration changes were required as this is purely a database schema optimization. |
||
|
|
243400e128 |
feat(platform): Add Block Development SDK with auto-registration system (#10074)
## Block Development SDK - Simplifying Block Creation ### Problem Currently, creating a new block requires manual updates to **5+ files** scattered across the codebase: - `backend/data/block_cost_config.py` - Manually add block costs - `backend/integrations/credentials_store.py` - Add default credentials - `backend/integrations/providers.py` - Register new providers - `backend/integrations/oauth/__init__.py` - Register OAuth handlers - `backend/integrations/webhooks/__init__.py` - Register webhook managers This creates significant friction for developers, increases the chance of configuration errors, and makes the platform difficult to scale. ### Solution This PR introduces a **Block Development SDK** that provides: - Single import for all block development needs: `from backend.sdk import *` - Automatic registration of all block configurations - Zero external file modifications required - Provider-based configuration with inheritance ### Changes 🏗️ #### 1. **New SDK Module** (`backend/sdk/`) - **`__init__.py`**: Unified exports of 68+ block development components - **`registry.py`**: Central auto-registration system for all block configurations - **`builder.py`**: `ProviderBuilder` class for fluent provider configuration - **`provider.py`**: Provider configuration management - **`cost_integration.py`**: Automatic cost application system #### 2. **Provider Builder Pattern** ```python # Configure once, use everywhere my_provider = ( ProviderBuilder("my-service") .with_api_key("MY_SERVICE_API_KEY", "My Service API Key") .with_base_cost(5, BlockCostType.RUN) .build() ) ``` #### 3. **Automatic Cost System** - Provider base costs automatically applied to all blocks using that provider - Override with `@cost` decorator for block-specific pricing - Tiered pricing support with cost filters #### 4. **Dynamic Provider Support** - Modified `ProviderName` enum to accept any string via `_missing_` method - No more manual enum updates for new providers #### 5. **Application Integration** - Added `sync_all_provider_costs()` to `initialize_blocks()` for automatic cost registration - Maintains full backward compatibility with existing blocks #### 6. **Comprehensive Examples** (`backend/blocks/examples/`) - `simple_example_block.py` - Basic block structure - `example_sdk_block.py` - Provider with credentials - `cost_example_block.py` - Various cost patterns - `advanced_provider_example.py` - Custom API clients - `example_webhook_sdk_block.py` - Webhook configuration #### 7. **Extensive Testing** - 6 new test modules with 30+ test cases - Integration tests for all SDK features - Cost calculation verification - Provider registration tests ### Before vs After **Before SDK:** ```python # 1. Multiple complex imports from backend.data.block import Block, BlockCategory, BlockOutput from backend.data.model import SchemaField, CredentialsField # ... many more imports # 2. Update block_cost_config.py BLOCK_COSTS[MyBlock] = [BlockCost(...)] # 3. Update credentials_store.py DEFAULT_CREDENTIALS.append(...) # 4. Update providers.py enum # 5. Update oauth/__init__.py # 6. Update webhooks/__init__.py ``` **After SDK:** ```python from backend.sdk import * # Everything configured in one place my_provider = ( ProviderBuilder("my-service") .with_api_key("MY_API_KEY", "My API Key") .with_base_cost(10, BlockCostType.RUN) .build() ) class MyBlock(Block): class Input(BlockSchema): credentials: CredentialsMetaInput = my_provider.credentials_field() data: String = SchemaField(description="Input data") class Output(BlockSchema): result: String = SchemaField(description="Result") # That's it\! No external files to modify ``` ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Created new blocks using SDK pattern with provider configuration - [x] Verified automatic cost registration for provider-based blocks - [x] Tested cost override with @cost decorator - [x] Confirmed custom providers work without enum modifications - [x] Verified all example blocks execute correctly - [x] Tested backward compatibility with existing blocks - [x] Ran all SDK tests (30+ tests, all passing) - [x] Created blocks with credentials and verified authentication - [x] Tested webhook block configuration - [x] Verified application startup with auto-registration #### For configuration changes: - [x] `.env.example` is updated or already compatible with my changes (no changes needed) - [x] `docker-compose.yml` is updated or already compatible with my changes (no changes needed) - [x] I have included a list of my configuration changes in the PR description (under **Changes**) ### Impact - **Developer Experience**: Block creation time reduced from hours to minutes - **Maintainability**: All block configuration in one place - **Scalability**: Support hundreds of blocks without enum updates - **Type Safety**: Full IDE support with proper type hints - **Testing**: Easier to test blocks in isolation --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Abhimanyu Yadav <122007096+Abhi1992002@users.noreply.github.com> |
||
|
|
c77cb1fcfb |
fix(backend/library): Fix sub_graphs check in LibraryAgent.from_db(..) (#10316)
- Follow-up fix for #10301 The condition that determines whether `LibraryAgent.credentials_input_schema` is set incorrectly handles empty lists of sub-graphs. ### Changes 🏗️ - Check if `sub_graphs is not None` rather than using the boolean interpretation of `sub_graphs` ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - Trivial change, no test needed. |
||
|
|
b3b5eefe2c |
feat(frontend): change to use Sonner toast (#10334)
## Changes 🏗️ Makes changes to use [Sonner for Toasts](https://sonner.emilkowal.ski/) rather than the [Radix UI primitive](https://www.radix-ui.com/primitives/docs/components/toast). <img width="431" alt="Screenshot 2025-07-09 at 15 49 47" src="https://github.com/user-attachments/assets/c09c3c1e-fd80-44d2-9336-c955c2d4f288" /> <img width="444" alt="Screenshot 2025-07-09 at 15 51 05" src="https://github.com/user-attachments/assets/cc2a3491-7b76-44e2-8bec-3ad0ac917148" /> <img width="450" alt="Screenshot 2025-07-09 at 15 51 50" src="https://github.com/user-attachments/assets/e8ede05d-3488-43f4-aa43-7d3cba92a050" /> https://github.com/user-attachments/assets/deb4ce1c-13bb-4f69-890e-9b8680c848e7 <img width="500" alt="Screenshot 2025-07-09 at 15 59 09" src="https://github.com/user-attachments/assets/5636969d-4c9a-41e6-acd1-afa49b8e70c6" /> Sonner is [the one used in shadcn](https://ui.shadcn.com/docs/components/toast) nowadays, because it brings great UX on touch devices: - allows to swipe to dismiss - they can stack nicely if multiple toasts appear ( see video 📹 ) - when stack, hovering over them reveals them all nicely ( see video 📹 ) I kept the existing `useToast()` API used on the pages, so I had to only refactor the hook not the calls 🏁 ## Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Login - [x] Click around the app and trigger toasts - [x] Toasts look good ### For configuration changes Nope |
||
|
|
fe36ba55dd |
chore(frontend/deps): Bump the production-dependencies group across 1 directory with 12 updates (#10321)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
45c1ca1ca1 |
chore(libs/deps-dev): Bump ruff from 0.11.10 to 0.11.13 in /autogpt_platform/autogpt_libs in the development-dependencies group (#10178)
Bumps the development-dependencies group in /autogpt_platform/autogpt_libs with 1 update: [ruff](https://github.com/astral-sh/ruff). Updates `ruff` from 0.11.10 to 0.11.13 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.11.13</h2> <h2>Release Notes</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Add unsafe fix for module moved cases (<code>AIR301</code>,<code>AIR311</code>,<code>AIR312</code>,<code>AIR302</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18367">#18367</a>,<a href="https://redirect.github.com/astral-sh/ruff/pull/18366">#18366</a>,<a href="https://redirect.github.com/astral-sh/ruff/pull/18363">#18363</a>,<a href="https://redirect.github.com/astral-sh/ruff/pull/18093">#18093</a>)</li> <li>[<code>refurb</code>] Add coverage of <code>set</code> and <code>frozenset</code> calls (<code>FURB171</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18035">#18035</a>)</li> <li>[<code>refurb</code>] Mark <code>FURB180</code> fix unsafe when class has bases (<a href="https://redirect.github.com/astral-sh/ruff/pull/18149">#18149</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>perflint</code>] Fix missing parentheses for lambda and ternary conditions (<code>PERF401</code>, <code>PERF403</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18412">#18412</a>)</li> <li>[<code>pyupgrade</code>] Apply <code>UP035</code> only on py313+ for <code>get_type_hints()</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18476">#18476</a>)</li> <li>[<code>pyupgrade</code>] Make fix unsafe if it deletes comments (<code>UP004</code>,<code>UP050</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18393">#18393</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/18390">#18390</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>fastapi</code>] Avoid false positive for class dependencies (<code>FAST003</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18271">#18271</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Update editor setup docs for Neovim and Vim (<a href="https://redirect.github.com/astral-sh/ruff/pull/18324">#18324</a>)</li> </ul> <h3>Other changes</h3> <ul> <li>Support Python 3.14 template strings (t-strings) in formatter and parser (<a href="https://redirect.github.com/astral-sh/ruff/pull/17851">#17851</a>)</li> </ul> <h2>Contributors</h2> <ul> <li><a href="https://github.com/AlexWaygood"><code>@AlexWaygood</code></a></li> <li><a href="https://github.com/BurntSushi"><code>@BurntSushi</code></a></li> <li><a href="https://github.com/InSyncWithFoo"><code>@InSyncWithFoo</code></a></li> <li><a href="https://github.com/Lee-W"><code>@Lee-W</code></a></li> <li><a href="https://github.com/MatthewMckee4"><code>@MatthewMckee4</code></a></li> <li><a href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li> <li><a href="https://github.com/Viicos"><code>@Viicos</code></a></li> <li><a href="https://github.com/abhijeetbodas2001"><code>@abhijeetbodas2001</code></a></li> <li><a href="https://github.com/carljm"><code>@carljm</code></a></li> <li><a href="https://github.com/chirizxc"><code>@chirizxc</code></a></li> <li><a href="https://github.com/dcreager"><code>@dcreager</code></a></li> <li><a href="https://github.com/dhruvmanila"><code>@dhruvmanila</code></a></li> <li><a href="https://github.com/dylwil3"><code>@dylwil3</code></a></li> <li><a href="https://github.com/github-actions"><code>@github-actions</code></a></li> <li><a href="https://github.com/ibraheemdev"><code>@ibraheemdev</code></a></li> <li><a href="https://github.com/lipefree"><code>@lipefree</code></a></li> <li><a href="https://github.com/mtshiba"><code>@mtshiba</code></a></li> <li><a href="https://github.com/naslundx"><code>@naslundx</code></a></li> <li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li> <li><a href="https://github.com/otakutyrant"><code>@otakutyrant</code></a></li> <li><a href="https://github.com/renovate"><code>@renovate</code></a></li> <li><a href="https://github.com/robsdedude"><code>@robsdedude</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.11.13</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Add unsafe fix for module moved cases (<code>AIR301</code>,<code>AIR311</code>,<code>AIR312</code>,<code>AIR302</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18367">#18367</a>,<a href="https://redirect.github.com/astral-sh/ruff/pull/18366">#18366</a>,<a href="https://redirect.github.com/astral-sh/ruff/pull/18363">#18363</a>,<a href="https://redirect.github.com/astral-sh/ruff/pull/18093">#18093</a>)</li> <li>[<code>refurb</code>] Add coverage of <code>set</code> and <code>frozenset</code> calls (<code>FURB171</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18035">#18035</a>)</li> <li>[<code>refurb</code>] Mark <code>FURB180</code> fix unsafe when class has bases (<a href="https://redirect.github.com/astral-sh/ruff/pull/18149">#18149</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>perflint</code>] Fix missing parentheses for lambda and ternary conditions (<code>PERF401</code>, <code>PERF403</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18412">#18412</a>)</li> <li>[<code>pyupgrade</code>] Apply <code>UP035</code> only on py313+ for <code>get_type_hints()</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18476">#18476</a>)</li> <li>[<code>pyupgrade</code>] Make fix unsafe if it deletes comments (<code>UP004</code>,<code>UP050</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18393">#18393</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/18390">#18390</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>fastapi</code>] Avoid false positive for class dependencies (<code>FAST003</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18271">#18271</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Update editor setup docs for Neovim and Vim (<a href="https://redirect.github.com/astral-sh/ruff/pull/18324">#18324</a>)</li> </ul> <h3>Other changes</h3> <ul> <li>Support Python 3.14 template strings (t-strings) in formatter and parser (<a href="https://redirect.github.com/astral-sh/ruff/pull/17851">#17851</a>)</li> </ul> <h2>0.11.12</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Revise fix titles (<code>AIR3</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18215">#18215</a>)</li> <li>[<code>pylint</code>] Implement <code>missing-maxsplit-arg</code> (<code>PLC0207</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/17454">#17454</a>)</li> <li>[<code>pyupgrade</code>] New rule <code>UP050</code> (<code>useless-class-metaclass-type</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18334">#18334</a>)</li> <li>[<code>flake8-use-pathlib</code>] Replace <code>os.symlink</code> with <code>Path.symlink_to</code> (<code>PTH211</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18337">#18337</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-bugbear</code>] Ignore <code>__debug__</code> attribute in <code>B010</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18357">#18357</a>)</li> <li>[<code>flake8-async</code>] Fix <code>anyio.sleep</code> argument name (<code>ASYNC115</code>, <code>ASYNC116</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18262">#18262</a>)</li> <li>[<code>refurb</code>] Fix <code>FURB129</code> autofix generating invalid syntax (<a href="https://redirect.github.com/astral-sh/ruff/pull/18235">#18235</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-implicit-str-concat</code>] Add autofix for <code>ISC003</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18256">#18256</a>)</li> <li>[<code>pycodestyle</code>] Improve the diagnostic message for <code>E712</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18328">#18328</a>)</li> <li>[<code>flake8-2020</code>] Fix diagnostic message for <code>!=</code> comparisons (<code>YTT201</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18293">#18293</a>)</li> <li>[<code>pyupgrade</code>] Make fix unsafe if it deletes comments (<code>UP010</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18291">#18291</a>)</li> </ul> <h3>Documentation</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
b12507fb21 |
chore(frontend/deps-dev): Bump the development-dependencies group in /autogpt_platform/frontend with 11 updates (#10322)
Bumps the development-dependencies group in /autogpt_platform/frontend with 11 updates: | Package | From | To | | --- | --- | --- | | [@playwright/test](https://github.com/microsoft/playwright) | `1.53.1` | `1.53.2` | | [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `9.0.14` | `9.0.15` | | [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/docs) | `9.0.14` | `9.0.15` | | [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/links) | `9.0.14` | `9.0.15` | | [@storybook/addon-onboarding](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/onboarding) | `9.0.14` | `9.0.15` | | [@storybook/nextjs](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/nextjs) | `9.0.14` | `9.0.15` | | [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) | `4.17.19` | `4.17.20` | | [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) | `15.3.4` | `15.3.5` | | [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) | `9.0.14` | `9.0.15` | | [msw](https://github.com/mswjs/msw) | `2.10.2` | `2.10.3` | | [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/core) | `9.0.14` | `9.0.15` | Updates `@playwright/test` from 1.53.1 to 1.53.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/microsoft/playwright/releases"><code>@playwright/test</code>'s releases</a>.</em></p> <blockquote> <h2>v1.53.2</h2> <h3>Highlights</h3> <p><a href="https://redirect.github.com/microsoft/playwright/issues/36317">microsoft/playwright#36317</a> - [Regression]: Merging pre-1.53 blob reports loses attachments <a href="https://redirect.github.com/microsoft/playwright/pull/36357">microsoft/playwright#36357</a> - [Regression (Chromium)]: CDP missing trailing slash <a href="https://redirect.github.com/microsoft/playwright/issues/36292">microsoft/playwright#36292</a> - [Bug (MSEdge)]: Edge fails to launch when using <code>msRelaunchNoCompatLayer</code></p> <h2>Browser Versions</h2> <ul> <li>Chromium 138.0.7204.23</li> <li>Mozilla Firefox 139.0</li> <li>WebKit 18.5</li> </ul> <p>This version was also tested against the following stable channels:</p> <ul> <li>Google Chrome 137</li> <li>Microsoft Edge 137</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
ab4eb10c3d |
chore(backend/deps-dev): Bump the development-dependencies group across 1 directory with 4 updates (#10173)
Bumps the development-dependencies group with 4 updates in the /autogpt_platform/backend directory: [poethepoet](https://github.com/nat-n/poethepoet), [pyright](https://github.com/RobertCraigie/pyright-python), [requests](https://github.com/psf/requests) and [ruff](https://github.com/astral-sh/ruff). Updates `poethepoet` from 0.34.0 to 0.35.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/nat-n/poethepoet/releases">poethepoet's releases</a>.</em></p> <blockquote> <h2>0.35.0</h2> <h2>Enhancements</h2> <ul> <li>Support script tasks that run packages with a <code>__main__</code> module by <a href="https://github.com/nat-n"><code>@nat-n</code></a> in <a href="https://redirect.github.com/nat-n/poethepoet/pull/300">nat-n/poethepoet#300</a></li> <li>Allow virtualenv location to reference special git related env vars by <a href="https://github.com/nat-n"><code>@nat-n</code></a> in <a href="https://redirect.github.com/nat-n/poethepoet/pull/302">nat-n/poethepoet#302</a></li> <li>Simplify CLI help page header by <a href="https://github.com/nat-n"><code>@nat-n</code></a> in <a href="https://redirect.github.com/nat-n/poethepoet/pull/291">nat-n/poethepoet#291</a></li> </ul> <h2>Fixes</h2> <ul> <li>Don't register hidden tasks with poetry plugin by <a href="https://github.com/nat-n"><code>@nat-n</code></a> in <a href="https://redirect.github.com/nat-n/poethepoet/pull/292">nat-n/poethepoet#292</a></li> <li>Don't resolve symlinks to poetry in PoetryExecutor by <a href="https://github.com/nat-n"><code>@nat-n</code></a> in <a href="https://redirect.github.com/nat-n/poethepoet/pull/293">nat-n/poethepoet#293</a></li> <li>Crash with invalid help option on task by <a href="https://github.com/nat-n"><code>@nat-n</code></a> in <a href="https://redirect.github.com/nat-n/poethepoet/pull/294">nat-n/poethepoet#294</a></li> <li>Always validate task args when loading config by <a href="https://github.com/nat-n"><code>@nat-n</code></a> in <a href="https://redirect.github.com/nat-n/poethepoet/pull/295">nat-n/poethepoet#295</a></li> <li>Coerce switch case values to string to avoid errors by <a href="https://github.com/nat-n"><code>@nat-n</code></a> in <a href="https://redirect.github.com/nat-n/poethepoet/pull/296">nat-n/poethepoet#296</a></li> <li>Always print help when no arguments provided by <a href="https://github.com/nat-n"><code>@nat-n</code></a> in <a href="https://redirect.github.com/nat-n/poethepoet/pull/299">nat-n/poethepoet#299</a></li> <li>Suppress useless global options in the poetry plugin cli by <a href="https://github.com/nat-n"><code>@nat-n</code></a> in <a href="https://redirect.github.com/nat-n/poethepoet/pull/301">nat-n/poethepoet#301</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/nat-n/poethepoet/compare/v0.34.0...v0.35.0">https://github.com/nat-n/poethepoet/compare/v0.34.0...v0.35.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/nat-n/poethepoet/compare/v0.34.0...v0.35.0">compare view</a></li> </ul> </details> <br /> Updates `pyright` from 1.1.401 to 1.1.402 <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
fbae861379 |
fix(frontend): profile photo form upload (#10331)
## Changes 🏗️ ### The Issue - Backend returns: `"https://storage.googleapis.com/..."` (valid JSON string) - Frontend was calling `response.text()` which gave: `"\"https://storage.googleapis.com/...\""` - This resulted in a URL with extra quotes that couldn't be loaded ### The Fix I changed both file upload methods to use `response.json()` instead of `response.text()`: 1. **Client-side uploads** (`_makeClientFileUpload`): Changed `return await response.text();` to `return await response.json();` 2. **Server-side uploads** (`makeAuthenticatedFileUpload`): Changed `return await response.text();` to `return await response.json();` Now when the backend returns a JSON string like `"https://example.com/file.png"`, the frontend will properly parse it as JSON and extract just the URL without the quotes. ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Login - [x] Upload an image on your profile - [x] It works ### For configuration changes: No configuration changes |
||
|
|
42e141012f |
chore(backend/deps): Bump the production-dependencies group across 1 directory with 20 updates (#10242)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
b7f9dcf419 |
fix(backend): add back perplexity_llama (#10327)
<!-- Clearly explain the need for these changes: --> We flew too close to the sun ### Changes 🏗️ adds back perplexity due to the need to remove it after it has already been migrated not before or the system will automatically migrate it to a different model so that it is one that exists <!-- Concisely describe all of the changes made in this pull request: --> ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [x] tested locally; no impact since we are simply re-enabling itautogpt-platform-beta-v0.6.15 |
||
|
|
a4ff8402f1 |
feat(backend): add Perplexity Sonar models (#10326)
<!-- Clearly explain the need for these changes: --> Adds the latest Perplexity Sonar models from OpenRouter and removes the decommissioned Sonar Large model. ### Changes 🏗️ - Added constants for `perplexity/sonar`, `perplexity/sonar-pro`, and `perplexity/sonar-deep-research` in the `LlmModel` enum - Included metadata entries for the new models - Mapped the new models in the cost configuration with their respective pricing tiers - Removed the outdated Sonar Large model ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] `poetry run format` - [x] `poetry run test` #### For configuration changes: - [ ] `.env.example` is updated or already compatible with my changes - [ ] `docker-compose.yml` is updated or already compatible with my changes - [ ] I have included a list of my configuration changes in the PR description (under **Changes**) |
||
|
|
2183c94c58 |
feat(frontend): update data fetching strategy and restructure dashboard page (#10265)
This plugin helps users organise library pages and use React Query for
data fetching on these pages.
### Changes
- Restructure the component position.
- Divide the component into two parts: one for rendering and the other
for hooks.
- Change data fetching from the normal fetch to an autogenerated React
query.
- Everything is shifted to the client side.
### Important Notes
- I haven’t changed any UI in this. I’ve divided it into sub-parts
because my main focus is on data fetching.
- Edit is not working, so I need to fix it in the follow-up PR. I
haven’t broken it; it broke already.
- I need to fix prop drilling in further PRs.
- I need to fix loading states.
> I haven’t changed the credit page or integration because I’m getting
errors while setting up Stripe for testing. My card is constantly
declined, and the integration page is attached to the builder page. I’ll
add changes to it when I’m working with the builder.
### Checklist 📋
- [x] I have clearly listed my changes in the PR description
- [x] I have made a test plan
- [x] I have tested my changes according to the test plan:
- [x] Tested manually and everything is working perfectly
- [x] Verified agent listing loads correctly
- [x] Confirmed delete functionality works
|
||
|
|
5ff6d2ca56 | fix(backend): Fix stop graph response on already stopped graph | ||
|
|
02d3b42745 |
fix(backend;frontend): Add auto-type convertion support for optional types (#10325)
Auto type conversion doesn't work on optional type. To reproduce: <img width="981" alt="image" src="https://github.com/user-attachments/assets/92198d32-bce9-44fd-a9b0-b7b431aec3ba" /> Use the AgentNumberInput block and try to pass a string value to the sub-agent that uses it. ### Changes 🏗️ Added optional type auto conversation support. ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [x] Try to convert string to optional[int] |
||
|
|
4bf73f63f4 |
fix(frontend): vulnerability dep (#10319)
## Changes 🏗️ `pbkdf2` should be on `3.1.3` to address [this alert](https://github.com/Significant-Gravitas/AutoGPT/security/dependabot/343). ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] pnpm installs work ### For configuration changes: None |
||
|
|
189c353c59 |
fix(frontend): make reading input_schema way more defensive (#10318)
## Changes 🏗️
<img width="800" alt="Screenshot 2025-07-07 at 22 24 07"
src="https://github.com/user-attachments/assets/72551f58-e41d-4a67-839b-98f63c6aad6b"
/>
Looking at the generated types, it looks like `input_schema` for the
agent can be anything:
-
[libraryAgent](https://github.com/Significant-Gravitas/AutoGPT/blob/dev/autogpt_platform/frontend/src/app/api/__generated__/models/libraryAgent.ts#L18-L38)
-
[libraryAgentInputSchema](https://github.com/Significant-Gravitas/AutoGPT/blob/dev/autogpt_platform/frontend/src/app/api/__generated__/models/libraryAgentInputSchema.ts#L9)
But the Front-end is reading it optimistically through the hardcoded
types on Backend API:
-
[GraphIOSchema](
|
||
|
|
07461a88cf |
fix(frontend): better proxy error logging (#10305)
## Changes 🏗️ If the proxied API call fails with an error that is not JSON-like, expose it still to the client so it can be shown. ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Login - [x] Try to top up credits - [x] You see a better failure on the error toast when redirected back to the app --------- Co-authored-by: Abhimanyu Yadav <122007096+Abhi1992002@users.noreply.github.com> |
||
|
|
daf05cb7bf |
fix(frontend): fix agent run details view (#10311)
## Changes 🏗️ Fixes the layout getting very wide if the output of an agent is very long: https://github.com/user-attachments/assets/e032f425-ed9a-4a13-925f-1bb444f84ef1 It also makes the library agent code a bit more defensive, I get full page errors on certain agents in the library: <img width="800" alt="Screenshot 2025-07-04 at 17 35 46" src="https://github.com/user-attachments/assets/ff8ae461-3792-4e94-941e-9fdd2ead1c87" /> ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Login and go to agent in library - [x] It loads without errors - [x] When the execution output is long, it doesn't make the page wider |
||
|
|
29bdbf3650 |
fix(frontend): auth e2e tests (#10312)
This pull request introduces extensive updates to the frontend testing
infrastructure, focusing on Playwright-based testing for user
authentication flows. Key changes include the addition of a global setup
for creating test users, new utilities for managing test user pools, and
expanded test coverage for signup and authentication scenarios.
### Testing Infrastructure Enhancements:
* **Global Setup for Tests**:
- Added `globalSetup` in `playwright.config.ts` to create test users
before all tests run. This ensures consistent test data across test
suites. (`autogpt_platform/frontend/playwright.config.ts`,
[autogpt_platform/frontend/playwright.config.tsR16-R17](diffhunk://#diff-27484f7f20f2eb1aeb289730a440f3a126fa825a7b3fae1f9ed19e217c4f2e40R16-R17))
- Implemented `global-setup.ts` to handle test user creation and save
user pools to the file system. Includes fallback for reusing existing
user pools if available.
(`autogpt_platform/frontend/src/tests/global-setup.ts`,
[autogpt_platform/frontend/src/tests/global-setup.tsR1-R43](diffhunk://#diff-3a8141beba2a6117e0eb721c35b39acc168a8f913ee625ce056c6fab5ac3b192R1-R43))
* **Test User Management Utilities**:
- Added functions in `auth.ts` to create, save, load, and clean up test
users. Supports batch creation and file-based persistence for user
pools. (`autogpt_platform/frontend/src/tests/utils/auth.ts`,
[autogpt_platform/frontend/src/tests/utils/auth.tsR1-R190](diffhunk://#diff-198b5d07aa72d50c153a70ecdfdc4bacc408c2d638c90d858f40d0183549973bR1-R190))
- Enhanced `user-generator.ts` to generate individual or multiple test
users with customizable options.
(`autogpt_platform/frontend/src/tests/utils/user-generator.ts`,
[autogpt_platform/frontend/src/tests/utils/user-generator.tsR2-R41](diffhunk://#diff-a7cb4f403a4cf3605ed1046b0263412205e56e51b16052a9da1e8db9bf34b940R2-R41))
### Expanded Test Coverage:
* **Signup Flow Tests**:
- Added comprehensive tests for signup functionality, including
successful signup, form validation, custom credentials, and duplicate
email handling. (`autogpt_platform/frontend/src/tests/signup.spec.ts`,
[autogpt_platform/frontend/src/tests/signup.spec.tsR1-R113](diffhunk://#diff-d1baa54deff7f3b1eedefd6cec5619ae8edd872d361ef57b6c32998ed22d6661R1-R113))
- Developed `signup.ts` utility functions to automate signup processes
and validate form behavior.
(`autogpt_platform/frontend/src/tests/utils/signup.ts`,
[autogpt_platform/frontend/src/tests/utils/signup.tsR1-R184](diffhunk://#diff-cb05d73a6bd7a129759b0b3382825e90cde561a42fc85b6a25777f6bd2f84511R1-R184))
* **Authentication Utilities**:
- Introduced `SigninUtils` in `signin.ts` for login, logout, and
authentication cycle testing. Provides reusable methods for verifying
user states. (`autogpt_platform/frontend/src/tests/utils/signin.ts`,
[autogpt_platform/frontend/src/tests/utils/signin.tsR1-R94](diffhunk://#diff-7cfec955c159d69f51ba9fcca7d979be090acd6fe246b125551d60192d697d98R1-R94))
### Minor Updates:
* Added environment variable `BROWSER_TYPE` to CI workflow for
browser-specific Playwright tests.
(`.github/workflows/platform-frontend-ci.yml`,
[.github/workflows/platform-frontend-ci.ymlR215-R216](diffhunk://#diff-29396f5dccefac146b71bed295fdbb790b17fda6a5ce2e9f4f8abe80eb14a527R215-R216))
These changes collectively improve the robustness and maintainability of
the frontend testing framework, enabling more reliable and scalable
testing of user authentication features.
### Checklist 📋
- [x] I have clearly listed my changes in the PR description
- [x] I have made a test plan
- [x] I have tested my changes according to the test plan:
- [x] Validated all authentication tests, and they are working
|
||
|
|
171deea806 | feat(block): Added best-effort support of multiple/parallel tool calls for SmartDecisionMaker Block | ||
|
|
149bbd910a | feat(block): Introduce GoogleSheetsFindBlock | ||
|
|
c6741e7c14 | fix(block): Fix Broken SmartDecisionManager block using Anthropic | ||
|
|
6de1e470d9 |
fix(frontend/library): Support number values in empty input check (#10308)
- Resolves #10307 - Follow-up fix to #10167 ### Changes 🏗️ - Update check for empty/missing inputs in `AgentRunDraftView` to correctly handle number values ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] In the library, run an agent that requires a number input |
||
|
|
67eefdd35c |
fix(frontend): handle JSON requests without payload (#10310)
## Changes 🏗️ We created a proxy route ( `/api/proxy/...` ) to handle API calls made in the browser from the legacy `BackendAPI`, ensuring security and compatibility with server cookies 💆🏽 🍪 However, the code on the proxy was written optimistically, expecting the payload to be present in the JSON requests... even though many requests, such as `POST` or `PATCH`, can sometimes be fired without a body. This fixed the issue we saw when stopping a running agent wasn't working, because to stop it, fires a `PATCH` without a payload. ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Checkout and run this locally - [x] Login - [x] Go to Library - [x] Run agent - [x] Stop it - [x] It works without errors |