mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-02-09 14:25:25 -05:00
dd2ccd31d3ed3adfdde1d656d307d7ea6375d90e
7872 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
d7cdf751a8 |
fix(backend): allow more than one arg on the tuple (#9535)
<!-- Clearly explain the need for these changes: --> We allow tuples to be returned from exceptions, but pydantic restricts their size to 1 b/c the typehint. This fixes that ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - Adds `, ...` to the tuple type hint ### 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] Extracted from other pr where it was tested as part of an exception |
||
|
|
58f6491496 |
feat(backend): Propagate error arguments on RPC exceptions (#9533)
<!-- Clearly explain the need for these changes: --> ### Changes 🏗️ Exception can contain more than message, so we propagate the whole args as long as it is serializable. ### Checklist 📋 #### For code changes: - [ ] I have clearly listed my changes in the PR description - [ ] I have made a test plan - [ ] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [ ] ... <details> <summary>Example test plan</summary> - [ ] Create from scratch and execute an agent with at least 3 blocks - [ ] Import an agent from file upload, and confirm it executes correctly - [ ] Upload agent to marketplace - [ ] Import an agent from marketplace and confirm it executes correctly - [ ] Edit an agent from monitor, and confirm it executes correctly </details> #### 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**) <details> <summary>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details> |
||
|
|
1011b70d41 |
fix(platform): Add Block Costs for SDM Block (#9531)
The Smart Decision Maker block needs to have costs associated with it.
### Changes 🏗️
- Added config for SDM Block Costs
|
||
|
|
538ad06547 |
fix(backend): Fix exception response on RPC error & Missing Graph Running Status (#9529)
HttpResponse error introduced by RPC is buggy since we are returning the exception as is instead of the string version of it. Also `RUNNING` status on the graph execution is missing. ### Changes 🏗️ * Refactored & fixed the exception return handling on RPC failure. * Add `RUNNING` status update during the graph execution. ### Checklist 📋 #### For code changes: - [ ] I have clearly listed my changes in the PR description - [ ] I have made a test plan - [ ] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [ ] ... <details> <summary>Example test plan</summary> - [ ] Create from scratch and execute an agent with at least 3 blocks - [ ] Import an agent from file upload, and confirm it executes correctly - [ ] Upload agent to marketplace - [ ] Import an agent from marketplace and confirm it executes correctly - [ ] Edit an agent from monitor, and confirm it executes correctly </details> #### 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**) <details> <summary>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details> |
||
|
|
5f5d30a17a |
fix(backend): Use Pyro for RPC by default (#9528)
- Follow-up to #9508 HTTP-based RPC has not been fully tested and should be disabled by default. ### Changes 🏗️ - Disable HTTP-based RPC and use Pyro by default |
||
|
|
af8ea93260 |
feat(backend): handle bounced emails from postmark (#9506)
<!-- Clearly explain the need for these changes: --> If we bounce too many emails from Postmark, they will be really upset with us, which is not so good. We need a way to react when we bounce emails, so we set it up so they notify us via webhooks. We also need to build authentication into those webhooks to prevent random people from sending us fake webhooks. All this together means we need a new route for the inbound webhook. To do this, we need a way to track if the email address is valid. So, after chatting with @itsababseh, we are adding a validated email field that defaults to `True` because all the users are already validated in prod. In dev, we may suffer. ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - Adds special API Key auth handler to the libs so that we can easily test stuff on the /docs endpoint and re-use it if needed - Adds New Secret for this API key from postmark - Adds a validatedEmail boolean to the`User` table - Adds a postmark endpoint to the routers list for handling the inbound webhook from Postmark - "Handle" all the various things this endpoint could send us (most of them we do nothing about) ### 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] Sign up with john@example.com email (the one postmark uses in webhooks) - [x] Set email validation to true - [x] Send the bounce webhook notice - [x] Check it gets set to false #### 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**) |
||
|
|
108b0aaa4c |
feat(blocks): Enabled block Usage for Smart Decision Maker Block (#9514)
Originally we did not allow Blocks to be used as tools due to the limitations of communicating the correct tool function signatures. It has however, been decided to allow them to be used knowing that there are limitations with them. ### Changes 🏗️ - Added ability to execute blocks as tools ### Checklist 📋 <img width="613" alt="Screenshot 2025-02-25 at 12 49 26" src="https://github.com/user-attachments/assets/e614f56d-2bdc-46c9-8c2c-e56f80343bde" /> - create an agent with an SDM block and a block as a tool - run agent and make sure the block can be called as a tool #### 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: --------- Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co> |
||
|
|
e752f0f342 |
feat(platform/library): Agent Library v2 (#9407)
- Resolves #8774 - Resolves #8775 - Includes back-end work for #9168 - Partially implements #8776 - Partially implements #8777 ### Changes 🏗️ - Add `/library` page - Change target of "Library" navigation link from `/monitoring` to `/library` - Move `/agents/[id]` page to `/library/agents/[id]` - Set application background color to `bg-neutral-50` - Redirect to new library agent's "runs" page (`/library/agents/[id]`) after adding from marketplace Further (technical) frontend changes: - Add types and client methods for all library API endpoints - Added `primary` variant to `agptui/Button` component Backend changes: - Add functionality to library backend - Aggregate agent status - Image generation for use in library view - Add `LibraryAgent.imageUrl` column to DB schema - Sorting & pagination - Explicit relation between library agents and their graph's creator - Refactor & update API endpoints for DX - Other minor refactoring - Add missing but required `MEDIA_GCS_BUCKET_NAME` to `.env.example` ### 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: - `/library` - [x] Create agent from scratch -> should show up on `/library` - [x] Add agent to library from marketplace -> should show up on `/library` - [x] Click on agent in `/library` -> should go to `/library/agents/[id]` - [x] Test sorting & pagination functionality - `/library/agents/[id]` - [x] Fill out inputs and click "Run" -> should run like normally - [x] Select completed agent run -> should show all inputs & outputs - [x] Click "run again" on a completed agent run -> should run successfully with same input - [x] `/monitoring` should still work the same as before --------- Co-authored-by: abhi1992002 <abhimanyu1992002@gmail.com> Co-authored-by: Reinier van der Leer <pwuts@agpt.co> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
b603ed2d2a |
feature(platform) Smart Decision Maker Block (#9490)
## Task The SmartDecisionMakerBlock is a specialized block in a graph-based system that leverages a language model (LLM) to make intelligent decisions about which tools or functions to invoke based on a user-provided prompt. It is designed to process input data, interact with a language model, and dynamically determine the appropriate tools to call from a set of available options, making it a powerful component for AI-driven workflows. ## How It Works in Practice - **Scenario:** Imagine a workflow where a user inputs, "Send an email to John about the meeting." The SmartDecisionMakerBlock is connected to tools like send_email, schedule_meeting, and search_contacts. - **Execution:** 1. The block receives the prompt and system instructions (e.g., "Choose a function to call"). 2.It identifies the available tools from the graph and constructs their signatures (e.g., send_email(recipient, subject, body)). 3. The LLM analyzes the prompt and decides to call send_email with arguments like recipient: "John", subject: "Meeting", body: "Let’s discuss...". 4. The block yields these tool-specific outputs, which can be picked up by downstream nodes to execute the email-sending action. ## Changes 🏗️ - Add the Smart Decision Maker (SDM) block. - Break circular imports in integration code.  ## Work in Progress ⚠️ **Important note this is a temporary UX for the system - UX will be addressed in a future PR** ⚠️ ### Current Status I’m currently focused on the smart decision logic. The main additions in the ongoing PR include: - Defining function signatures for OpenAI function-calling schemas based on node links and the linked blocks. - Adding tests for function signature generation. - Force all tool calls to be made via an agent. (Need to uncomment) - Restrict each tool call entry to a single node. - simplify the output emission process, to emit each parameter one at a time. - Change test to use agents and hardcode output how I think it should work to test it does actually work - Hook up openai, in a simplified way, to test the function calling (mock for testing) - Once all the above is working, use credentials system and build of llm.py ### What’s Next - Review Process ### Reviewers Phase 1 This PR is now ready for review, during the first phase of reviews I'm looking for comments on approach and logic. Out of scope: code style and organization at this stage ### Reviewers Phase 2 Once we are all happy with the approach and logic. We can open the review process to general code quality and nits, to be considered. --------- Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co> |
||
|
|
f1fa9009b3 | fix(backend): Fix api host for FastAPI RPC Server | ||
|
|
d0d3cc07a3 |
fix(frontend): Minor UI changes; Align badges & buttons on LibraryV1 (#9512)
<!-- Clearly explain the need for these changes: --> ### Changes 🏗️ While V2 Library is coming, this has been my pet peeve <img width="1428" alt="image" src="https://github.com/user-attachments/assets/39c0b84e-4dfe-44e1-b455-cd0330ae7222" /> to <img width="1428" alt="image" src="https://github.com/user-attachments/assets/ab41973b-8ce8-4772-a4ab-e0dcd8b75464" /> ### Checklist 📋 #### For code changes: - [ ] I have clearly listed my changes in the PR description - [ ] I have made a test plan - [ ] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [ ] ... <details> <summary>Example test plan</summary> - [ ] Create from scratch and execute an agent with at least 3 blocks - [ ] Import an agent from file upload, and confirm it executes correctly - [ ] Upload agent to marketplace - [ ] Import an agent from marketplace and confirm it executes correctly - [ ] Edit an agent from monitor, and confirm it executes correctly </details> #### 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**) <details> <summary>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details> |
||
|
|
1d59fc869d |
feat(backend): Pyro to FastAPI migration for micro service (#9508)
Due to legacy reasons, we've been using Pyro for our inter-process communication channel. While it fulfilled our initial needs, there were a few limitations that have been encountered: * Each connection will reserve 1 thread, when the thread is running out there will be no connection being accepted by the service. * Lack of asynchronous execution mode, we are locked in the sync execution which ended up wasting the I/O bound workload. Moving away from this will unlock async execution support for agent blocks. * Low throughput, while the database is still the main bottleneck, we've started seeing instances where the service is being denied due to the high traffic of the Pyro service. ### Changes 🏗️ Replace the usage of Pyro with the FastAPI Rest HTTP server and make the code work. Introduced the new config: `use_http_based_rpc`: Whether to use HTTP-based RPC for communication between services. If it's enabled FastAPI will be used, if it's disabled existing Pyro will be used. ### 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] Create from scratch and execute an agent with at least 3 blocks with cost (AI blocks). - [x] Import an agent from file upload, and confirm it executes correctly <details> <summary>Example test plan</summary> - [ ] Create from scratch and execute an agent with at least 3 blocks - [ ] Import an agent from file upload, and confirm it executes correctly - [ ] Upload agent to marketplace - [ ] Import an agent from marketplace and confirm it executes correctly - [ ] Edit an agent from monitor, and confirm it executes correctly </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>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details> |
||
|
|
a694cf1e9d |
chore(libs/deps-dev): bump ruff from 0.9.3 to 0.9.6 in /autogpt_platform/autogpt_libs in the development-dependencies group across 1 directory (#9454)
Bumps the development-dependencies group with 1 update in the /autogpt_platform/autogpt_libs directory: [ruff](https://github.com/astral-sh/ruff). Updates `ruff` from 0.9.3 to 0.9.6 <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.9.6</h2> <h2>Release Notes</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Add <code>external_task.{ExternalTaskMarker, ExternalTaskSensor}</code> for <code>AIR302</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16014">#16014</a>)</li> <li>[<code>flake8-builtins</code>] Make strict module name comparison optional (<code>A005</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15951">#15951</a>)</li> <li>[<code>flake8-pyi</code>] Extend fix to Python <= 3.9 for <code>redundant-none-literal</code> (<code>PYI061</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16044">#16044</a>)</li> <li>[<code>pylint</code>] Also report when the object isn't a literal (<code>PLE1310</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15985">#15985</a>)</li> <li>[<code>ruff</code>] Implement <code>indented-form-feed</code> (<code>RUF054</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16049">#16049</a>)</li> <li>[<code>ruff</code>] Skip type definitions for <code>missing-f-string-syntax</code> (<code>RUF027</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16054">#16054</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-annotations</code>] Correct syntax for <code>typing.Union</code> in suggested return type fixes for <code>ANN20x</code> rules (<a href="https://redirect.github.com/astral-sh/ruff/pull/16025">#16025</a>)</li> <li>[<code>flake8-builtins</code>] Match upstream module name comparison (<code>A005</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16006">#16006</a>)</li> <li>[<code>flake8-comprehensions</code>] Detect overshadowed <code>list</code>/<code>set</code>/<code>dict</code>, ignore variadics and named expressions (<code>C417</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15955">#15955</a>)</li> <li>[<code>flake8-pie</code>] Remove following comma correctly when the unpacked dictionary is empty (<code>PIE800</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16008">#16008</a>)</li> <li>[<code>flake8-simplify</code>] Only trigger <code>SIM401</code> on known dictionaries (<a href="https://redirect.github.com/astral-sh/ruff/pull/15995">#15995</a>)</li> <li>[<code>pylint</code>] Do not report calls when object type and argument type mismatch, remove custom escape handling logic (<code>PLE1310</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15984">#15984</a>)</li> <li>[<code>pyupgrade</code>] Comments within parenthesized value ranges should not affect applicability (<code>UP040</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16027">#16027</a>)</li> <li>[<code>pyupgrade</code>] Don't introduce invalid syntax when upgrading old-style type aliases with parenthesized multiline values (<code>UP040</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16026">#16026</a>)</li> <li>[<code>pyupgrade</code>] Ensure we do not rename two type parameters to the same name (<code>UP049</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16038">#16038</a>)</li> <li>[<code>pyupgrade</code>] [<code>ruff</code>] Don't apply renamings if the new name is shadowed in a scope of one of the references to the binding (<code>UP049</code>, <code>RUF052</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16032">#16032</a>)</li> <li>[<code>ruff</code>] Update <code>RUF009</code> to behave similar to <code>B008</code> and ignore attributes with immutable types (<a href="https://redirect.github.com/astral-sh/ruff/pull/16048">#16048</a>)</li> </ul> <h3>Server</h3> <ul> <li>Root exclusions in the server to project root (<a href="https://redirect.github.com/astral-sh/ruff/pull/16043">#16043</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-datetime</code>] Ignore <code>.replace()</code> calls while looking for <code>.astimezone</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16050">#16050</a>)</li> <li>[<code>flake8-type-checking</code>] Avoid <code>TC004</code> false positive where the runtime definition is provided by <code>__getattr__</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16052">#16052</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Improve <code>ruff-lsp</code> migration document (<a href="https://redirect.github.com/astral-sh/ruff/pull/16072">#16072</a>)</li> <li>Undeprecate <code>ruff.nativeServer</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16039">#16039</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/Daverball"><code>@Daverball</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/MichaReiser"><code>@MichaReiser</code></a></li> <li><a href="https://github.com/carlosgmartin"><code>@carlosgmartin</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/junhsonjb"><code>@junhsonjb</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.9.6</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Add <code>external_task.{ExternalTaskMarker, ExternalTaskSensor}</code> for <code>AIR302</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16014">#16014</a>)</li> <li>[<code>flake8-builtins</code>] Make strict module name comparison optional (<code>A005</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15951">#15951</a>)</li> <li>[<code>flake8-pyi</code>] Extend fix to Python <= 3.9 for <code>redundant-none-literal</code> (<code>PYI061</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16044">#16044</a>)</li> <li>[<code>pylint</code>] Also report when the object isn't a literal (<code>PLE1310</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15985">#15985</a>)</li> <li>[<code>ruff</code>] Implement <code>indented-form-feed</code> (<code>RUF054</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16049">#16049</a>)</li> <li>[<code>ruff</code>] Skip type definitions for <code>missing-f-string-syntax</code> (<code>RUF027</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16054">#16054</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-annotations</code>] Correct syntax for <code>typing.Union</code> in suggested return type fixes for <code>ANN20x</code> rules (<a href="https://redirect.github.com/astral-sh/ruff/pull/16025">#16025</a>)</li> <li>[<code>flake8-builtins</code>] Match upstream module name comparison (<code>A005</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16006">#16006</a>)</li> <li>[<code>flake8-comprehensions</code>] Detect overshadowed <code>list</code>/<code>set</code>/<code>dict</code>, ignore variadics and named expressions (<code>C417</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15955">#15955</a>)</li> <li>[<code>flake8-pie</code>] Remove following comma correctly when the unpacked dictionary is empty (<code>PIE800</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16008">#16008</a>)</li> <li>[<code>flake8-simplify</code>] Only trigger <code>SIM401</code> on known dictionaries (<a href="https://redirect.github.com/astral-sh/ruff/pull/15995">#15995</a>)</li> <li>[<code>pylint</code>] Do not report calls when object type and argument type mismatch, remove custom escape handling logic (<code>PLE1310</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15984">#15984</a>)</li> <li>[<code>pyupgrade</code>] Comments within parenthesized value ranges should not affect applicability (<code>UP040</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16027">#16027</a>)</li> <li>[<code>pyupgrade</code>] Don't introduce invalid syntax when upgrading old-style type aliases with parenthesized multiline values (<code>UP040</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16026">#16026</a>)</li> <li>[<code>pyupgrade</code>] Ensure we do not rename two type parameters to the same name (<code>UP049</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16038">#16038</a>)</li> <li>[<code>pyupgrade</code>] [<code>ruff</code>] Don't apply renamings if the new name is shadowed in a scope of one of the references to the binding (<code>UP049</code>, <code>RUF052</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16032">#16032</a>)</li> <li>[<code>ruff</code>] Update <code>RUF009</code> to behave similar to <code>B008</code> and ignore attributes with immutable types (<a href="https://redirect.github.com/astral-sh/ruff/pull/16048">#16048</a>)</li> </ul> <h3>Server</h3> <ul> <li>Root exclusions in the server to project root (<a href="https://redirect.github.com/astral-sh/ruff/pull/16043">#16043</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-datetime</code>] Ignore <code>.replace()</code> calls while looking for <code>.astimezone</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16050">#16050</a>)</li> <li>[<code>flake8-type-checking</code>] Avoid <code>TC004</code> false positive where the runtime definition is provided by <code>__getattr__</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16052">#16052</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Improve <code>ruff-lsp</code> migration document (<a href="https://redirect.github.com/astral-sh/ruff/pull/16072">#16072</a>)</li> <li>Undeprecate <code>ruff.nativeServer</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16039">#16039</a>)</li> </ul> <h2>0.9.5</h2> <h3>Preview features</h3> <ul> <li>Recognize all symbols named <code>TYPE_CHECKING</code> for <code>in_type_checking_block</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/15719">#15719</a>)</li> <li>[<code>flake8-comprehensions</code>] Handle builtins at top of file correctly for <code>unnecessary-dict-comprehension-for-iterable</code> (<code>C420</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15837">#15837</a>)</li> <li>[<code>flake8-logging</code>] <code>.exception()</code> and <code>exc_info=</code> outside exception handlers (<code>LOG004</code>, <code>LOG014</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15799">#15799</a>)</li> <li>[<code>flake8-pyi</code>] Fix incorrect behaviour of <code>custom-typevar-return-type</code> preview-mode autofix if <code>typing</code> was already imported (<code>PYI019</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15853">#15853</a>)</li> <li>[<code>flake8-pyi</code>] Fix more complex cases (<code>PYI019</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15821">#15821</a>)</li> <li>[<code>flake8-pyi</code>] Make <code>PYI019</code> autofixable for <code>.py</code> files in preview mode as well as stubs (<a href="https://redirect.github.com/astral-sh/ruff/pull/15889">#15889</a>)</li> <li>[<code>flake8-pyi</code>] Remove type parameter correctly when it is the last (<code>PYI019</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15854">#15854</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
cca99c850d |
fix(frontend): Minor UI tweak, fix non-accessible button on phone screen (#9504)
### Changes 🏗️ Fix these buttons:  <img width="337" alt="image" src="https://github.com/user-attachments/assets/702bf3e1-7168-4372-8dcf-71abdea0bc19" /> <img width="337" alt="image" src="https://github.com/user-attachments/assets/362a5e44-3bd4-4849-ba92-8b21cfcfe767" /> ### Checklist 📋 #### For code changes: - [ ] I have clearly listed my changes in the PR description - [ ] I have made a test plan - [ ] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [ ] ... <details> <summary>Example test plan</summary> - [ ] Create from scratch and execute an agent with at least 3 blocks - [ ] Import an agent from file upload, and confirm it executes correctly - [ ] Upload agent to marketplace - [ ] Import an agent from marketplace and confirm it executes correctly - [ ] Edit an agent from monitor, and confirm it executes correctly </details> #### 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**) <details> <summary>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details> --------- Co-authored-by: Abhimanyu Yadav <122007096+Abhi1992002@users.noreply.github.com> |
||
|
|
bfcc0c93b3 |
feat: add Codecov test analytics for flaky and failed tests (#9420)
Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
d310943f34 |
chore(backend/deps): bump websockets from 13.1 to 14.2 in /autogpt_platform/backend (#9398)
Bumps [websockets](https://github.com/python-websockets/websockets) from 13.1 to 14.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/python-websockets/websockets/releases">websockets's releases</a>.</em></p> <blockquote> <h2>14.2</h2> <p>See <a href="https://websockets.readthedocs.io/en/stable/project/changelog.html">https://websockets.readthedocs.io/en/stable/project/changelog.html</a> for details.</p> <h2>14.1</h2> <p>See <a href="https://websockets.readthedocs.io/en/stable/project/changelog.html">https://websockets.readthedocs.io/en/stable/project/changelog.html</a> for details.</p> <h2>14.0</h2> <p>See <a href="https://websockets.readthedocs.io/en/stable/project/changelog.html">https://websockets.readthedocs.io/en/stable/project/changelog.html</a> for details.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
0b992223df |
feat(frontend): Onboarding flow UI (#9485)
### Changes 🏗️ This PR adds interactive UI for the onboarding flow, without any connection to the backend. Visit `/onboarding` to see it! - Add Onboarding pages to `app/onboarding/` - Add Onboarding components to `components/onboarding` Note: - Backend isn't connected, so the agents won't run and state isn't preserved - Onboarding state is lost on refresh ### Checklist 📋 #### For code changes: - [ ] I have clearly listed my changes in the PR description - [ ] I have made a test plan - [ ] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [ ] ... |
||
|
|
70d095ba98 |
fix(frontend): Fix Run/Stop button on Builder page refresh (#9503)
When opened graph is running and Builder page is refreshed the bottom says `Run` but should show `Stop` instead. ### Changes 🏗️ - Fix state on refresh, so that the bottom button is `Stop` if graph is currently running ### 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] Refresh still retrieves past and ongoing execution updates - [x] Bottom Builder button says `Stop` when page is refreshed and graph is running - [x] `Stop` button works and terminates execution |
||
|
|
a692eedb1c |
feat(backend): Notification Integration for credits system (#9488)
<!-- Clearly explain the need for these changes: --> ### Changes 🏗️ Add email notifications on refund events. ### Checklist 📋 #### For code changes: - [ ] I have clearly listed my changes in the PR description - [ ] I have made a test plan - [ ] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [ ] ... <details> <summary>Example test plan</summary> - [ ] Create from scratch and execute an agent with at least 3 blocks - [ ] Import an agent from file upload, and confirm it executes correctly - [ ] Upload agent to marketplace - [ ] Import an agent from marketplace and confirm it executes correctly - [ ] Edit an agent from monitor, and confirm it executes correctly </details> #### 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**) <details> <summary>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details>autogpt-platform-beta-v0.4.11 |
||
|
|
4ae016606b |
feat(backend): move failed messages into a dead letter queue (#9501)
<!-- Clearly explain the need for these changes: --> When we fail to process something, we don't want to keep retrying forever. We should store those and process them later ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - Fix the type of the failed exchange from Direct to Topic to allow filtering based on name (allows us later to do more advanced handling of queue types) - abstract processing the messages in a queue a bit to reduce repeated code - abstract how we check if a user wants a notification so that its a bit easier to process - Handle errors better - Abstract model parsing ### Checklist 📋 #### For code changes: - [ ] I have clearly listed my changes in the PR description - [ ] I have made a test plan - [ ] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [ ] ... <details> <summary>Example test plan</summary> - [ ] Create from scratch and execute an agent with at least 3 blocks - [ ] Import an agent from file upload, and confirm it executes correctly - [ ] Upload agent to marketplace - [ ] Import an agent from marketplace and confirm it executes correctly - [ ] Edit an agent from monitor, and confirm it executes correctly </details> --------- Co-authored-by: Bently <tomnoon9@gmail.com> |
||
|
|
63005631f0 |
fix(frontend): Remove invalid font class names (#9499)
There are many occurrences in the UI code that we are defining the font through class but it refers to the invalid font-family names. This causes the component to end up rendering the text using Times New Roman. ### Changes 🏗️ Remove manual font definition through string font-family name. ### Checklist 📋 #### For code changes: - [ ] I have clearly listed my changes in the PR description - [ ] I have made a test plan - [ ] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [ ] ... <details> <summary>Example test plan</summary> - [ ] Create from scratch and execute an agent with at least 3 blocks - [ ] Import an agent from file upload, and confirm it executes correctly - [ ] Upload agent to marketplace - [ ] Import an agent from marketplace and confirm it executes correctly - [ ] Edit an agent from monitor, and confirm it executes correctly </details> #### 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**) <details> <summary>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details> |
||
|
|
296eee0b4f |
feat(platform/library): Library v2 > Agent Runs page (#9051)
- Resolves #8780 - Part of #8774 ### Changes 🏗️ - Add new UI components - Add `/agents/[id]` page, with sub-components: - `AgentRunsSelectorList` - `AgentRunSummaryCard` - `AgentRunStatusChip` - `AgentRunDetailsView` - `AgentRunDraftView` - `AgentScheduleDetailsView` Backend improvements: - Improve output of execution-related API endpoints: return `GraphExecution` instead of `NodeExecutionResult[]` - Reduce log spam from Prisma in tests General frontend improvements: - Hide nav link names on smaller screens to prevent navbar overflow - Clean up styling and fix sizing of `agptui/Button` Technical frontend improvements: - Fix tailwind config size increments - Rename `font-poppin` -> `font-poppins` - Clean up component implementations and usages - Yeet all occurrences of `variant="default"` - Remove `default` button variant as duplicate of `outline`; make `outline` the default - Fix minor typing issues DX: - Add front end type-check step to `pre-commit` config - Fix logging setup in conftest.py ### 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: - `/agents/[id]` (new) - Go to page -> list of runs loads - Create new run -> runs; all I/O is visible - Click "Run again" -> runs again with same input - `/monitoring` (existing) - Go to page -> everything loads - Selecting agents and agent runs works --------- Co-authored-by: Nicholas Tindle <nicktindle@outlook.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> Co-authored-by: Swifty <craigswift13@gmail.com> Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co> |
||
|
|
f722c70c50 |
feat(blocks): add base for smartlead, apollo, and zerobounce blocks (#9387)
<!-- Clearly explain the need for these changes: --> We want to support some more advanced search specific actions. These are the base API layers and sample blocks for some of the services we need. ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - support pydantic models as an output format - add apollo - add smartlead - add zerobounce ### 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] Built agents to test --------- Co-authored-by: Krzysztof Czerwinski <34861343+kcze@users.noreply.github.com> Co-authored-by: Bently <tomnoon9@gmail.com> |
||
|
|
a0be165835 |
feat(settings): Rework user settings page with Form, loading skeleton… (#9476)
Implemented a fully functional user settings page allowing changes to account details and notification preferences. This change uses a server first approach and adds much needed form validation to this page. This PR has added loading skeletons for better UX during data fetching. Refactored related components to support these changes and finally implemented server actions to streamline data ingestion. ## Note to developers: At the moment the notification switches set back to default upon save. We will want to pass in this information after the api is implemented. ## Changes 🏗️ Rebuilt / Refactored `SettingsFormInput` to `SettingsForm`: - Implemented Form Validation - Implemented a form schema with Zod to validate user input - Added toast messaging to properly inform the user if the form has been successfully completed or if there is an error in thrown from the server action. Added `loading.tsx` - Using `Skeletons` we can deliver a better loading UI for our users causing less screen shifting. Added `actions.ts` - Added a server action for the settings page. This server action will handle the updating of user's settings for this page. It handles the interaction between the application and supabase. After this server action is ran we revalidate the path for our settings page ensuring proper data passed to our components. There is an additional TODO for @ntindle for the api endpoint getting created. This endpoint will cover the newly added notification switches and it's toggles. ## Screenshots 📷 ### Before Changes: <img width="1083" alt="image" src="https://github.com/user-attachments/assets/f5283fd5-705b-47cf-a7fa-4ca4d7f03444" /> ### After Changes: <img width="762" alt="image" src="https://github.com/user-attachments/assets/20f96f01-b138-4eb7-8867-ce62a2d603d4" /> <img width="1083" alt="image" src="https://github.com/user-attachments/assets/0ae363f5-068f-48e5-8b0f-c079a08f9242" /> <img width="1083" alt="image" src="https://github.com/user-attachments/assets/8cb045ef-f322-4992-881e-fb92281c55cb" /> #### Form Validation <img width="1083" alt="image" src="https://github.com/user-attachments/assets/b78cfef6-94da-49f1-9c93-56cdb9ea4c96" /> <img width="1083" alt="image" src="https://github.com/user-attachments/assets/ade5dce9-8c4b-40eb-aa0f-ff6d31bc3c3c" /> <img width="245" alt="image" src="https://github.com/user-attachments/assets/88866bbf-4e33-43d9-b04a-b53ac848852d" /> ### 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> - [ ] Goto the route of `profile/settings` - [ ] Add an invalid email and notice the new validation messaging - [ ] Add invalid passwords that do not match and or is under 8 characters notice the new validation messaging - [ ] Select the cancel button and notice that the form has been set back to the default values - [ ] With the form untouched notice the `Save changes` button is disabled. Toggle a switch and notice the `Save changes` button is now enabled. - [ ] Enter in a valid pair of new passwords in the `New Password` and `Confirm New Password` input fields and select `Save changes` - [ ] Enter in the same passwords again and notice that we will now be shown an Error. This error is bubbling up from supabase in our backend and is stating `New password should be different from the old password` </details> --------- Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> Co-authored-by: Nicholas Tindle <nicktindle@outlook.com> Co-authored-by: Reinier van der Leer <pwuts@agpt.co> |
||
|
|
d1832ce10b |
fix(frontend): Fix return type and usage of api.listLibraryAgents() (#9498)
- Follow-up to #9258 The front end is fetching `/library/agents` -> `LibraryAgent[]` but using the result as `GraphMeta[]`. This breaks a bunch of things. ### Changes 🏗️ Frontend: - Add `LibraryAgent` type for `api.listLibraryAgents()` - Amend all broken usages of `LibraryAgent` objects - Introduce branded typing for `LibraryAgent.id` and `GraphMeta.id` to disallow mixing them. This prevents incorrect use in the future, and reduces the chance of this frontend issue accumulating interest on existing open PRs. Backend: - Add a migration to create `LibraryAgent` objects for all existing `AgentGraphs` ### 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] Check that all existing agents are listed in the agents list on `/monitoring` (check against DB or `GET /api/graphs`) - [x] Check that all views of `/monitoring` work - [x] Try to run an agent and check its status |
||
|
|
dcbbe11c53 |
fix(backend): correctly check if email service is set up (#9497)
<!-- Clearly explain the need for these changes: --> I made a mistake in how we check if postmark exists ### Changes 🏗️ - adds a more explicit setting of postmark to none and extra checking to prevent its use if it isn’t set <!-- 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] I have no plan, it’s a simple logic bug so if it passes CI it’s good |
||
|
|
43460b8553 |
feat(platform): Add Dispute & Refund resolution process (#9466)
### Changes 🏗️ Added the dispute & refund handling on the system. https://github.com/user-attachments/assets/2d9c7b48-2ee1-401d-be65-5e9787c8130e ### Checklist 📋 #### For code changes: - [ ] I have clearly listed my changes in the PR description - [ ] I have made a test plan - [ ] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [ ] ... <details> <summary>Example test plan</summary> - [ ] Create from scratch and execute an agent with at least 3 blocks - [ ] Import an agent from file upload, and confirm it executes correctly - [ ] Upload agent to marketplace - [ ] Import an agent from marketplace and confirm it executes correctly - [ ] Edit an agent from monitor, and confirm it executes correctly </details> #### 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**) <details> <summary>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details> |
||
|
|
0117006373 |
fix(backend): Fix failing poetry.lock validation on CI (#9489)
### Changes 🏗️ Poetry.lock is using the old version that the CI is not using. Set the Poetry version to ^2.1.1. ### Checklist 📋 #### For code changes: - [ ] I have clearly listed my changes in the PR description - [ ] I have made a test plan - [ ] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [ ] ... <details> <summary>Example test plan</summary> - [ ] Create from scratch and execute an agent with at least 3 blocks - [ ] Import an agent from file upload, and confirm it executes correctly - [ ] Upload agent to marketplace - [ ] Import an agent from marketplace and confirm it executes correctly - [ ] Edit an agent from monitor, and confirm it executes correctly </details> #### 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**) <details> <summary>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details> |
||
|
|
e550846737 |
feat(backend): add ability to send emails to notification service (#9469)
<!-- Clearly explain the need for these changes: --> We need a way to send emails for the email service to function. We will depend on Postmark to do that. This PR adds a simple email-sending service with the required settings to make it work. It also builds on the previous agent run by sending the emails that are in the immediate queue. Keep in mind that the email template leaves a bit to be desired. ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - Add `email.py` with the minimum required to send an email (plus type handling) - Add settings configs for the token and the send address to the `settings.py` and `.env.example` - Add a db call to get user email by ID since the `metadata` field of `prisma.models.User` isn't serializable over our message bus tool `Pyro` that the `DatabaseManager` uses - Add a horrible `AgentRun` email template using `jinja2` - Add `postmarker` to `pyproject.toml` ### 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] Build and run an agent and make sure it emails me (must be signed into same domain as receiving address for now) #### For configuration changes: - [x] `.env.example` is updated or already compatible with my changes - [ ] `docker-compose.yml` is updated or already compatible with my changes - [x] I have added a check that disables email if config is not set correctly - [x] I have included a list of my configuration changes in the PR description (under **Changes**) --------- Co-authored-by: Reinier van der Leer <pwuts@agpt.co> |
||
|
|
15275e2ce1 |
feat(backend): spawn the notifications service + basic test (#9464)
We want to send emails on a schedule, in response to events, and be expandable without being overbearing on the amount of effort to implement. We also want this to use rabbitmq and be easy for other services to send messages into. This PR adds the first use of the service to simply show a log message ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - Adds a new backend service for notifications - Adds first notification into the service -> Agent Execution - Adds spawning the notification service Also - Adds RabbitMQ to CI so we can test stuff - Adds a minor fix for one of the migrations that I thought was causing failures, but isn't but the change is still useful ### 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] Built and ran an agent and ensured the following log line appeared which shows the event would have sent an email ``` 2025-02-10 15:52:02,232 INFO Processing notification: user_id='96b8d2f5-a036-437f-bd8e-ba8856028553' type=<NotificationType.AGENT_RUN: 'AGENT_RUN'> data=AgentRunData(agent_name='CalculatorBlock', credits_used=0.0, execution_time=0.0, graph_id='30e5f332-a092-4795-892a-b063a8c7bdd9', node_count=1) created_at=datetime.datetime(2025, 2, 10, 15, 52, 2, 162865) ``` #### 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**) None of the other ports are configurable via .env.example listing so left as is <details> <summary>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details> --------- Co-authored-by: Reinier van der Leer <pwuts@agpt.co> |
||
|
|
ce1d63c517 |
feat(backend): Library v2 Agents and Presets (#9258)
- Blocked by #9267 This re-introduces changes from the following PRs with fixes: - #9218 - #9211 ### Changes 🏗️ - See #9218 - See #9211 Fixes: - Fix Prisma query statements in `v2.library.db` - Fix creation of (library) agents - Fix test cleanup of (library) agents - Fix handling and passing of `node_input` parameters ### 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] Create & run a new agent - [x] Update & run an existing agent |
||
|
|
b5b9a008bf |
feat(backend): Migrate json encoded string columns into a native json column (#9475)
### Changes 🏗️ Due to the legacy of SQLite usage, some of the JSON columns are actually a string column string a stringified JSON column. The scope of this PR is migrating those columns into an actual JSON column. ### Checklist 📋 #### For code changes: - [ ] I have clearly listed my changes in the PR description - [ ] I have made a test plan - [ ] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [ ] ... <details> <summary>Example test plan</summary> - [ ] Create from scratch and execute an agent with at least 3 blocks - [ ] Import an agent from file upload, and confirm it executes correctly - [ ] Upload agent to marketplace - [ ] Import an agent from marketplace and confirm it executes correctly - [ ] Edit an agent from monitor, and confirm it executes correctly </details> #### 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**) <details> <summary>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details> |
||
|
|
7e04fbd25f |
feat(backend): schema updates, migration, queries for Email Notification Service (#9445)
<!-- Clearly explain the need for these changes: --> The email service has requirements to - Email users when some activity has happened on their account on some scheduled basis -> We need a way to get active users and the executions that happened while they were active - Allow users to configure what emails they get -> Need a user preference - Get User email by Id so that we can email them -> Pretty self-explanatory We need to add a few new backend queries + db models for the notification to start handling these details. This is the first set of those changes based on experience building the app service ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - Adds a new DB Model, `UserNotificationPreferences,` with related migration - Adds a new DB Model `NotificationEvent` with related migration to track what notifications we've sent and how many and such (how much we add here is open to change depending on what limits on data we want) - Adds a new DB Model `UserNotificationBatch` with related migration to handle batching of like models - Adds queries to get users and executions by `datetime` ranges as `ISO` strings - Adds new queries to the `DatabaseManager` and exposes them to the other `AppService`s - Exposes all new queries plus an existing one `get_user_by_id` ### 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] I extracted these changes from a working implementation of the service, and tested they don't bring down the service by being uncalled by running the standard agent tests we do on release --------- Co-authored-by: Reinier van der Leer <pwuts@agpt.co> |
||
|
|
016ec0ff6b |
fix(frontend) update PublishAgentAwaitingReview router push path (#9471)
Updates the PublishAgentAwaitingReview router.push path, it was going to
``/marketplace/dashboard`` it should be ``/profile/dashboard``
### Changes 🏗️
autogpt-platform-beta-v0.4.10
|
||
|
|
3b8cde6d11 |
feat(block): Add batch matched result and its count on ExtractTextInformationBlock (#9470)
### Changes 🏗️ Introduced `matched_result` & `matched_count` as a batch matched result list and its count for the block execution of ExtractTextInformationBlock. ### Checklist 📋 #### For code changes: - [ ] I have clearly listed my changes in the PR description - [ ] I have made a test plan - [ ] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [ ] ... <details> <summary>Example test plan</summary> - [ ] Create from scratch and execute an agent with at least 3 blocks - [ ] Import an agent from file upload, and confirm it executes correctly - [ ] Upload agent to marketplace - [ ] Import an agent from marketplace and confirm it executes correctly - [ ] Edit an agent from monitor, and confirm it executes correctly </details> #### 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**) <details> <summary>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details> |
||
|
|
d050a3f77c |
docs: Provide feedback when cloning submodules (#9448)
<!-- Clearly explain the need for these changes: --> ### Changes 🏗️ Added `--progress` to the submodule update, so that cloning progress can be tracked and does not appear to hang. <!-- Concisely describe all of the changes made in this pull request: --> ### Checklist 📋 #### For code changes: - [x] No code change, just docs. <details> <summary>Example test plan</summary> - [ ] Create from scratch and execute an agent with at least 3 blocks - [ ] Import an agent from file upload, and confirm it executes correctly - [ ] Upload agent to marketplace - [ ] Import an agent from marketplace and confirm it executes correctly - [ ] Edit an agent from monitor, and confirm it executes correctly </details> #### For configuration changes: - [x] No configuration change, just docs. <details> <summary> Provide feedback when cloning submodules </summary> - now updating submodules shows the cloning repo's progress </details> Co-authored-by: Your Name <you@example.com> |
||
|
|
1626bf9e16 |
fix(backend): Support Python 3.10 (#9468)
- Resolves #9467 ### Changes 🏗️ - Loosen Python version requirement to include v3.10 Also, fixed a few issues in pyproject.toml: - Re-sort dependency list - Update `autogpt-platform-backend` package version to match latest release |
||
|
|
40613fe23e |
fix(frontend): Update user profile from marketplace to appropriate profile route (#9465)
### Background Resolves: #9313 The application is incorrectly nesting the user's profile settings within the route of `/marketplace` instead of the appropriate route of `/profile` This pr will modify the existing code to handle the relocation of the (user) directory from the /marketplace to /profile. ### Changes 🏗️ 1. Refactored directory of `(user)`: - Moved the directory of (user) from `/marketplace/(user)` to `profile/(user)` 2. Update Sidebar and Navbar components: - Updating the existing code from the routing of market to profile by modifying the existing routes. ### 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> - [ ] Navigate to the route of `profile/` and observe the moved page. - [ ] Navigate to the route of `profile/integrations` and observe the moved page. - [ ] Navigate to the route of `profile/api_keys` and observe the moved page. - [ ] Navigate to the route of `profile/profile` and observe the moved page. - [ ] Navigate to the route of `profile/settings` and observe the moved page. - [ ] Navigate to the route of `profile/credits` and observe the moved page. </details> |
||
|
|
6eee9206f7 |
fix(market): Market featured agent card (#9463)
### Background Resolves: #9313 The marketplace featured agent's section has a bug where if you hover over a featured agent's card we are getting an incorrect background color applied to the description. ### Changes 🏗️ 1. Refactored `FeaturedStoreCard` to `FeaturedAgentCard`: - Condensed props and leverage StoreAgent type from api - Removed onClick handler from props as this is not json serializable and is not inline with NextJS best practices - Used built in Card Components from ShadCN to minimize custom styling. - Optimize images with implementation of the Image component from NextJS 2. Enhanced `FeaturedCardSection` components: - Removing extensive prop passing and leverage the agent itself with the StoreAgent type. - Implemented Link from NextJS to better handler routing and remove the `useRouter` implementation - Removed unnecessary handleCardClick method. ### 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 Plan <details> <summary></summary> - [ ] Goto the landing page of the application or /marketplace - [ ] Scroll to the featured agents section - [ ] Move mouse over each of the cards and observe the image disappearing and text being shown - [ ] Observe the background color of the text that replaced the image matches that of the card </details> |
||
|
|
64050faef6 |
feature(block): Add XML Parser Block (#9450)
-Updated pyproject.toml for new dependency gravitasml -Updated poetry.lock <!-- Clearly explain the need for these changes: --> - Issue no #9317 stated that, the addition of an XMLParserBlock is required. - It was suggested that the use of gravitasml as external package to be used for parsing. - Changes incorporated and tested as per requirements. ### Changes 🏗️ - Added xml_parser.py - updated pyproject.toml - updated poetry.lock for dependency changes <!-- 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: --> - [ ] ... <details> <summary>Example test plan</summary> - [ ] Create from scratch and execute an agent with at least 3 blocks - [ ] Import an agent from file upload, and confirm it executes correctly - [ ] Upload agent to marketplace - [ ] Import an agent from marketplace and confirm it executes correctly - [ ] Edit an agent from monitor, and confirm it executes correctly </details> #### For configuration changes: - [ ] `.env.example` is updated or already compatible with my changes - [ ] `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>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details> --------- Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
00c312d02c |
feat(platform): Schedule specific agent version (#9444)
Scheduling always takes the newest version of an agent. ### Changes 🏗️ This PR allows to schedule any graph version by adding number input to schedule popup. Number is automatically set to the newest version when agent is chosen. <img width="533" alt="Screenshot 2025-02-07 at 5 05 56 PM" src="https://github.com/user-attachments/assets/357b8810-6f02-4066-b7a3-824d9bfd62af" /> - Update API, so it accepts graph version - Update schedule pop up, so it lets user input version number - Open and schedule correct agent - Add `Version` column to the schedules table ### 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] Can schedule version between 1 and max version - [x] Reject incorrect version - [x] Table shows proper version - [x] Removing schedule works |
||
|
|
610be988c4 |
feat(backend): attach rabbitmq to the AppService (#9438)
### Changes 🏗️ For Emailing, we need to make a new App Service (NotificationManager) that will require us to have rabbitmq as a dependency. This is the backing data library to make that happen + registering it with the app service base class and connecting when we spawn up a service <!-- Concisely describe all of the changes made in this pull request: --> - Adds a rabbitmq library following the existing standard for redis - Adds rabbitmq to the service - Adds rabbitmq mgmt library (pika) so that we can connect to rabbitmq ### 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] I tested by adding the following to the executor `@expose add_execution` and verifying via the UI that the messages show up in the queue as expected + the agent executes and behaves as normal!  ```diff diff --git a/autogpt_platform/backend/backend/executor/manager.py b/autogpt_platform/backend/backend/executor/manager.py index 1d965e012..4cd5b403c 100644 --- a/autogpt_platform/backend/backend/executor/manager.py +++ b/autogpt_platform/backend/backend/executor/manager.py @@ -18,7 +18,7 @@ if TYPE_CHECKING: from autogpt_libs.utils.cache import thread_cached from backend.blocks.agent import AgentExecutorBlock -from backend.data import redis +from backend.data import rabbitmq, redis from backend.data.block import ( Block, BlockData, @@ -750,6 +750,19 @@ class ExecutionManager(AppService): def __init__(self): super().__init__() self.use_redis = True + self.use_rabbitmq = rabbitmq.RabbitMQConfig( + exchanges=[ + rabbitmq.Exchange(name="execution", type=rabbitmq.ExchangeType.FANOUT), + ], + queues=[ + rabbitmq.Queue( + name="execution", + exchange=rabbitmq.Exchange( + name="execution", type=rabbitmq.ExchangeType.FANOUT + ), + ), + ], + ) self.use_supabase = True self.pool_size = settings.config.num_graph_workers self.queue = ExecutionQueue[GraphExecutionEntry]() @@ -876,6 +889,12 @@ class ExecutionManager(AppService): ) self.queue.add(graph_exec) + # test rabbitmq + self.rabbit.publish_message( + exchange=self.rabbit_config.exchanges[0], + routing_key=self.rabbit_config.exchanges[0].name, + message=graph_exec_id, + ) return graph_exec @expose ``` |
||
|
|
1a4ba533ca |
feat(infra): add rabbitmq to docker compose (#9437)
<!-- Clearly explain the need for these changes: --> We want to use RabbitMQ for email (and executor in the future) to ensure message delivery -- something we currently lack with Redis. This PR is adding RabbitMQ to the docker-compose and setup details with defaults so that when we start bringing services up, they have the backing to do so. ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - Adds rabbitmq container (with exposed API and mgmt ports) - Adds .env.example config for the backend - Adds dockercompose config for the backend, and passes the variables around as needed ### 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] Start the container using docker compose deps subset #### 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**) |
||
|
|
56a307d048 |
fix(frontend): Fix beads when output is array (#9439)
Array output, e.g. `Item` in Step Through Items block doesn't output correct number of beads, this PR fixes this issue. |
||
|
|
a5ad90f09b |
fix(frontend): Fix issue when pasting blocks (#9443)
When block is pasted the original block's inputs behave as disconnected: the input is shown despite there being connection. This PR fixes this issue. |
||
|
|
a315b3fc41 |
fix(frontend): Prevent exception when Stripe env var is missing (#9441)
Prevent exception when `NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY` is missing and update state management in `useCredits`. |
||
|
|
1a1fe7c0b7 |
feat(platform): Support opening graphs with version and execution id (#9332)
Currently it's only possible to open latest graph from monitor and see the node execution results only when manually running. This PR adds ability to open running and finished graphs in builder. ### Changes 🏗️ Builder now handles graph version and execution ID in addition to graph ID when opening a graph. When an execution ID is provided, node execution results are fetched and subscribed to in real time. This makes it possible to open a graph that is already executing and see both existing node execution data and real-time updates (if it's still running). - Use graph version and execution id on the builder page and in `useAgentGraph` - Use graph version on the `execute_graph` endpoint - Use graph version on the websockets to distinguish between versions - Move `formatEdgeID` to utils; it's used in `useAgentGraph.ts` and in `Flow.tsx` ### 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] Opening finished execution restores node results - [x] Opening running execution restores results and continues to run properly - [x] Results are separate for each graph across multiple tabs #### 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**) <details> <summary>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details> --------- Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co> |
||
|
|
c693875951 |
platform(fix): Improve performance of builder (#9435)
1. Remove isHovered / onMouseEnter / onMouseLeave state updates 2. Wrap Custom Node in React.memo 3. Avoid re-renders for context menus |
||
|
|
797916cf14 |
feat(frontend): Show toast on low credit balance, rename Credits page to Billing (#9428)
<!-- Clearly explain the need for these changes: --> ### Changes 🏗️ - If a node fails to execute and error contains `Insufficient balance` show toast with link to Billing page - Rename `Credits` page to `Billing` <img width="398" alt="Screenshot 2025-02-05 at 2 27 36 PM" src="https://github.com/user-attachments/assets/6a5b4db0-a579-4607-a6bd-d5cf9229092f" /> ### Checklist 📋 #### For code changes: - [ ] I have clearly listed my changes in the PR description - [ ] I have made a test plan - [ ] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [ ] ... <details> <summary>Example test plan</summary> - [ ] Create from scratch and execute an agent with at least 3 blocks - [ ] Import an agent from file upload, and confirm it executes correctly - [ ] Upload agent to marketplace - [ ] Import an agent from marketplace and confirm it executes correctly - [ ] Edit an agent from monitor, and confirm it executes correctly </details> #### 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**) <details> <summary>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details> --------- Co-authored-by: Aarushi <50577581+aarushik93@users.noreply.github.com> |
||
|
|
5d8fe1e184 |
chore(backend/deps): bump google-cloud-storage from 2.19.0 to 3.0.0 in /autogpt_platform/backend (#9399)
Bumps [google-cloud-storage](https://github.com/googleapis/python-storage) from 2.19.0 to 3.0.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/googleapis/python-storage/releases">google-cloud-storage's releases</a>.</em></p> <blockquote> <h2>v3.0.0</h2> <h2><a href="https://github.com/googleapis/python-storage/compare/v2.19.0...v3.0.0">3.0.0</a> (2025-01-28)</h2> <h3>⚠ BREAKING CHANGES</h3> <p>Please consult the README for details on this major version release.</p> <ul> <li>The default checksum strategy for uploads has changed from None to "auto" (<a href="https://redirect.github.com/googleapis/python-storage/issues/1383">#1383</a>)</li> <li>The default checksum strategy for downloads has changed from "md5" to "auto" (<a href="https://redirect.github.com/googleapis/python-storage/issues/1383">#1383</a>)</li> <li>Deprecated positional argument "num_retries" has been removed (<a href="https://redirect.github.com/googleapis/python-storage/issues/1377">#1377</a>)</li> <li>Deprecated argument "text_mode" has been removed (<a href="https://redirect.github.com/googleapis/python-storage/issues/1379">#1379</a>)</li> <li>Blob.download_to_filename() now deletes the empty destination file on a 404 (<a href="https://redirect.github.com/googleapis/python-storage/pull/1394">#1394</a>)</li> <li>Media operations now use the same retry backoff, timeout and custom predicate system as non-media operations, which may slightly impact default retry behavior (<a href="https://redirect.github.com/googleapis/python-storage/issues/1385">#1385</a>)</li> <li>Retries are now enabled by default for uploads, blob deletes and blob metadata updates (<a href="https://redirect.github.com/googleapis/python-storage/issues/1400">#1400</a>)</li> </ul> <h3>Features</h3> <ul> <li>Add "auto" checksum option and make default (<a href="https://redirect.github.com/googleapis/python-storage/issues/1383">#1383</a>) (<a href=" |