mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-02-11 23:35:25 -05:00
e596ea87cbae55eedba3bc58f144702e9e310504
7867 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
76090f0ba2 |
feat(backend,frontend): Send applicant email on review response (#10718)
### Changes 🏗️ This PR implements email notifications for agent creators when their agent submissions are approved or rejected by an admin in the marketplace. Specifically, the changes include: - Added `AGENT_APPROVED` and `AGENT_REJECTED` notification types to `schema.prisma`. - Created `AgentApprovalData` and `AgentRejectionData` Pydantic models for notification data. - Configured the notification system to use immediate queues and new Jinja2 templates for these types. - Designed two new email templates: `agent_approved.html.jinja2` and `agent_rejected.html.jinja2`, with dynamic content for agent details, reviewer feedback, and relevant action links. - Modified the `review_store_submission` function to: - Include `User` and `Reviewer` data in the database query. - Construct and queue the appropriate email notification based on the approval/rejection status. - Ensure email sending failures do not block the agent review process. ### 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] Approve an agent via the admin dashboard. - [x] Verify the agent creator receives an "Agent Approved" email with correct details and a link to the store. - [x] Reject an agent via the admin dashboard (providing a reason). - [x] Verify the agent creator receives an "Agent Rejected" email with correct details, the rejection reason, and a link to resubmit. - [x] Verify that if email sending fails (e.g., misconfigured SMTP), the agent approval/rejection process still completes successfully without error. <img width="664" height="975" alt="image" src="https://github.com/user-attachments/assets/d397f2dc-56eb-45ab-877e-b17f1fc234d1" /> <img width="664" height="975" alt="image" src="https://github.com/user-attachments/assets/25597752-f68c-46fe-8888-6c32f5dada01" /> --- Linear Issue: [SECRT-1168](https://linear.app/autogpt/issue/SECRT-1168) <a href="https://cursor.com/background-agent?bcId=bc-7394906c-0341-4bd0-8842-6d9d6f83c56c"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-cursor-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-cursor-light.svg"> <img alt="Open in Cursor" src="https://cursor.com/open-in-cursor.svg"> </picture> </a> <a href="https://cursor.com/agents?id=bc-7394906c-0341-4bd0-8842-6d9d6f83c56c"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-web-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-web-light.svg"> <img alt="Open in Web" src="https://cursor.com/open-in-web.svg"> </picture> </a> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> |
||
|
|
5b12e02c4e |
feat(AutoMod): add `moderation id` to moderation message (#10728)
AutoModManager now captures and propagates the content_id from the moderation API for both input and output moderation. AutoModResponse and ModerationError are updated to include content_id, allowing better traceability of moderation actions and error reporting, with this the error message will now show ``Failed due to content moderation (Moderation ID: uuid-here)`` This is good for if a user is having a issue with automod and its falsely flagging there runs we can use the moderation ID to look at automod to see whats going on <!-- Clearly explain the need for these changes: --> ### Changes 🏗️ Just some updates to receive the content_id from AutoMod and then show it in the "Failed due to content moderation" message ### 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] Run autogpt with AM and trigger it and it will show the content_id in the error message |
||
|
|
e0520f5e0a |
fix(frontend): Validate and sanitize cron expressions for scheduler API (#10719)
<!-- Clearly explain the need for these changes: --> ### Need for these changes 💥 This PR resolves Linear issue `SECRT-1290`, addressing a critical bug where the scheduler API fails with a "Wrong number of fields" error when empty or invalid cron expressions are submitted from the frontend. This was causing production errors and a poor user experience. It was an off by one error ### Changes 🏗️ Fix off by one error + add additional logging / error messaging when someone makes an invalid cron https://github.com/user-attachments/assets/775881a9-707b-4c4f-b23a-bd7118a358ee ### 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] Attempt to schedule an agent with an empty cron expression from the UI and confirm a frontend toast error. - [x] Attempt to schedule an agent with an incomplete yearly cron (no months selected) from the UI and confirm a frontend toast error and UI warning. - [x] Attempt to schedule an agent with an incomplete monthly cron (no days selected) from the UI and confirm a frontend toast error and UI warning. - [x] Attempt to schedule an agent with an incomplete weekly cron (no days selected) from the UI and confirm a frontend toast error and UI warning. - [x] Verify that valid cron expressions can still be scheduled successfully. - [x] Run backend unit tests for scheduler cron validation. - [x] Run frontend unit tests for cron expression utility. --- Linear Issue: [SECRT-1290](https://linear.app/autogpt/issue/SECRT-1290) <a href="https://cursor.com/background-agent?bcId=bc-8bc10502-9498-4dbd-afa2-93e15990fa8c"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-cursor-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-cursor-light.svg"> <img alt="Open in Cursor" src="https://cursor.com/open-in-cursor.svg"> </picture> </a> <a href="https://cursor.com/agents?id=bc-8bc10502-9498-4dbd-afa2-93e15990fa8c"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-web-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-web-light.svg"> <img alt="Open in Web" src="https://cursor.com/open-in-web.svg"> </picture> </a> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Swifty <craigswift13@gmail.com> |
||
|
|
a9530b7304 |
fix(frontend): Remove old experience alert (#10730)
At the bottom of the library page is an alert directing people to the old monitoring page. This PR removes this link, as the old monitoring page no longer works. ### Changes 🏗️ Remove Alert directing users to the old monitoring page. ### 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 alert no longer shows on the library page |
||
|
|
8a9c165faf |
feat(frontend): new run modal components (#10729)
## Changes 🏗️ Add components needed for the new **Agent Run Modal** ( _splitting PRs in this way the modal PR will be smaller_ 💆🏽 ). [Design reference](https://www.figma.com/design/14jjs3hH3Hmkq4hGqxZWco/agent-runs-unification?node-id=188-15511&t=6fVja182TuoluMwc-1). ### `<Breadcrumbs />` <img width="248" height="72" alt="Screenshot 2025-08-25 at 17 52 36" src="https://github.com/user-attachments/assets/6191aa03-bb6b-47fe-af8c-20dbdb1b9d06" /> Before the project was using Breadcrumbs from Shadcn directly, it now uses new ones styled following the AutoGPT Design System. ### `<MultiToggle />` <img width="350" height="148" alt="Screenshot 2025-08-25 at 17 52 07" src="https://github.com/user-attachments/assets/e1bbb735-62e5-4c73-929a-52ec0109f274" /> ### `<Collapisble />` <img width="350" height="135" alt="Screenshot 2025-08-25 at 17 52 50" src="https://github.com/user-attachments/assets/e4ee4026-8bd5-4d08-8875-3ecb573bd6bb" /> ### `<ShowMoreText />` <img width="500" height="60" alt="Screenshot 2025-08-25 at 17 52 17" src="https://github.com/user-attachments/assets/2e85a192-b7ab-4f5f-b35d-5ed9d3ef6132" /> This is very similar to `<Collapsible />`, the difference is designed to work specifically with text. The `more/less` trigger is displayed next to the text in a simple way. `<Collapsible />` might used with other elements, for example like FAQ or hiding/expanding forms. ### `<LLMItem />` <img width="300" height="78" alt="Screenshot 2025-08-25 at 17 52 26" src="https://github.com/user-attachments/assets/7b904e15-75d3-4f11-9863-2d0db072e884" /> ### 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 Storybook - [x] Stories look good and make sense #### For configuration changes: None |
||
|
|
476bfc6c84 |
feat(backend): add store meta blocks (#10633)
<!-- Clearly explain the need for these changes: --> This PR implements blocks that enable users to interact with the AutoGPT store and library programmatically. This addresses the need for agents to be able to add other agents from the store to their library and manage agent collections automatically, as requested in Linear issue OPEN-2602. These are locked behind LaunchDarkly for now. https://github.com/user-attachments/assets/b8518961-abbf-4e9d-a31e-2f3d13fa6b0d ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - **Added new store operations blocks** (`backend/blocks/system/store_operations.py`): - `GetStoreAgentDetailsBlock`: Retrieves detailed information about an agent from the store - `SearchStoreAgentsBlock`: Searches for agents in the store with various filters - **Added new library operations blocks** (`backend/blocks/system/library_operations.py`): - `ListLibraryAgentsBlock`: Lists all agents in the user's library - `AddToLibraryFromStoreBlock`: Adds an agent from the store to user's library - **Updated block exports** in `backend/blocks/system/__init__.py` to include new blocks - **Added comprehensive tests** for store operations in `backend/blocks/test/test_store_operations.py` - **Enhanced executor database utilities** in `backend/executor/database.py` with new helper methods for agent management - **Updated frontend marketplace page** to properly handle the new store operations ### 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] Created unit tests for all new store operation blocks - [x] Tested GetStoreAgentDetailsBlock retrieves correct agent information - [x] Tested SearchStoreAgentsBlock filters and returns agents correctly - [x] Tested AddToLibraryFromStoreBlock successfully adds agents to library - [x] Tested error handling for non-existent agents and invalid inputs - [x] Verified all blocks integrate properly with the database manager - [x] Confirmed blocks appear in the block registry and are accessible --------- Co-authored-by: Lluis Agusti <hi@llu.lu> Co-authored-by: Swifty <craigswift13@gmail.com> |
||
|
|
61f17e5b97 |
feat(scheduler): Remove Schedule "Every Minute" Option (#10706)
This simply removes the schedule "every minute" option from the schedule
tasks UI, Its still possible to set a every minute schedule via the
custom option
### 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 the Schedule Tasks UI to see there is no more "Every Minute"
option
- [x] Check you can still set a schedule a agent to run every minute
using the custom option
|
||
|
|
a54bed6d68 |
fix(frontend): filter credentials to ones that are supported (#10725)
<!-- Clearly explain the need for these changes: --> We're showing invalid credential types on the selections across the app ### Changes 🏗️ We go from (incorrect) <img width="2551" height="1202" alt="image" src="https://github.com/user-attachments/assets/e566ed6c-b6c9-4047-80fd-0f2c8cef0bf9" /> to this with the fix <img width="2551" height="1202" alt="image" src="https://github.com/user-attachments/assets/c720a3d4-9c03-48c5-82a3-d30752bce13c" /> <!-- 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] test the broken agent and upload images proving its no longer broken |
||
|
|
5502256bea |
feat(backend): DiscordGetCurrentUserBlock to fetch authenticated user details via OAuth2 (#10723)
<!-- Clearly explain the need for these changes: --> We want a way to get the user's id from discord without them having to enable dev mode so this is a way -- oauth login <img width="2551" height="1202" alt="image" src="https://github.com/user-attachments/assets/71be07a9-fd37-4ea7-91a1-ced8972fda29" /> ### Changes 🏗️ - Created DiscordOAuthHandler for managing OAuth2 flow, including login URL generation, token exchange, and revocation. - Implemented support for PKCE in the OAuth2 flow. - Enhanced error handling for user info retrieval and token management. - Add discord block for getting the logged in user - Add new client secret field to .env.default <!-- 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] add the blocks and test they all work #### For configuration changes: - [x] `.env.default` 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**) |
||
|
|
bd97727763 |
feat(platform): add ability to reject approved agents in admin dashboard (#10671)
<!-- Clearly explain the need for these changes: --> We need the ability to reject or remove already approved agents from the marketplace via the Admin Dashboard. Previously, once an agent was approved, there was no easy way to remove it from the marketplace without direct database intervention. This addresses several use cases: - Removing agents that require credentials (short-term solution discussed with Reinier) - Handling broken agents mistakenly approved - Managing outdated or problematic agents - Quick response to issues without engineering support ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - **Backend**: Modified `review_store_submission` function in `/backend/server/v2/store/db.py` to handle rejecting already approved agents - Added logic to detect when rejecting an approved agent - Updates StoreListing to remove agent from marketplace when rejected - Handles multiple approved versions correctly - **Frontend**: Updated admin marketplace UI components - `expandable-row.tsx`: Show action buttons for both PENDING and APPROVED agents - `approve-reject-buttons.tsx`: - Show only "Revoke" button for approved agents (hide Approve button) - Update button text from "Reject" to "Revoke" for approved agents - Update dialog titles and descriptions appropriately ### 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] Navigate to Admin Dashboard > Marketplace Management - [x] Find a PENDING agent and verify both Approve and Reject buttons appear - [x] Find an APPROVED agent and verify only "Revoke" button appears - [x] Click Revoke on an approved agent and verify dialog shows "Revoke Approved Agent" title - [x] Submit revocation with comments and verify agent status changes to REJECTED - [x] Verify the agent is removed from the public marketplace - [x] Test with an agent that has multiple approved versions - verify it switches to another approved version - [x] Test with an agent that has only one approved version - verify hasApprovedVersion is 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**) No configuration changes required - this uses existing admin authentication and database schema. Fixes SECRT-1218 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Abhimanyu Yadav <122007096+Abhi1992002@users.noreply.github.com> |
||
|
|
aa256f21cd |
feat(platform/library): Infinite scroll in Agent Runs list (#10709)
- Resolves #10645 ### Changes 🏗️ - Implement infinite scroll in the Agent Runs list (on `/library/agents/[id]`) - Add horizontal scroll support to `ScrollArea` and `InfiniteScroll` components - Fix `InfiniteScroll` triggering twice - Fix date handling by React Queries - Add response mutator to parse dates coming out of API - Make legacy `GraphExecutionMeta` compatible with generated type ### 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: - Open `/library/agents/[id]` - [x] Agent runs list loads - Scroll agent runs list to the end - [x] More runs are loaded and appear in the list |
||
|
|
2848e62f8a |
feat(backend): Add BaaS integration blocks (#10350)
### Changes 🏗️ This PR adds Meeting BaaS (Bot-as-a-Service) integration to the AutoGPT platform, enabling automated meeting recording and transcription capabilities. <img width="1157" height="633" alt="Screenshot 2025-08-22 at 15 06 15" src="https://github.com/user-attachments/assets/53b88bc8-5580-4287-b6ed-3ae249aed69f" /> [BAAS Test_v12.json](https://github.com/user-attachments/files/21938290/BAAS.Test_v12.json) **New Features:** - **Meeting Recording Bot Management:** - Deploy bots to join and record meetings automatically - Support for multiple meeting platforms via meeting URL - Scheduled bot deployment with Unix timestamp support - Custom bot avatars and entry messages - Webhook support for real-time event notifications - **Meeting Data Operations:** - Retrieve MP4 recordings and transcripts from completed meetings - Delete recording data for privacy/storage management - Force bots to leave ongoing meetings **Technical Implementation:** - Added 4 new files under `backend/blocks/baas/`: - `__init__.py`: Package initialization - `_api.py`: Meeting BaaS API client with comprehensive endpoints - `_config.py`: Provider configuration using SDK pattern - `bots.py`: 4 bot management blocks (Join, Leave, Fetch Data, Delete Recording) **Key Capabilities:** - Join meetings with customizable bot names and avatars - Automatic transcription with configurable speech-to-text providers - Time-limited MP4 download URLs for recordings - Reserved bot slots for joining 4 minutes before meetings - Automatic leave timeouts configuration - Custom metadata support for tracking ### 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 and executed an agent with Meeting BaaS bot deployment blocks - [x] Tested bot joining meetings with various configurations - [x] Verified recording retrieval and transcript functionality - [x] Tested bot removal from ongoing meetings - [x] Confirmed data deletion operations work correctly - [x] Verified error handling for invalid API keys and bot IDs - [x] Tested webhook URL configuration --------- Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
fa5ff9ca3c |
feat(docs): Update Ollama setup docs with new methods (#10693)
### Changes 🏗️
Expanded the Ollama setup instructions to include desktop app, Docker,
and legacy CLI methods. Added new screenshots for network exposure and
model selection. Clarified steps for starting the AutoGPT platform,
configuring models, and troubleshooting. Included instructions for
adding custom models and improved overall documentation structure.
#### 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] Look at the new ollama doc to make sure it makes sense and is easy
to follow
|
||
|
|
7c908c10b8 |
feat(blocks): Add DataForSEO keyword research blocks (#10711)
<!-- Clearly explain the need for these changes: --> This PR adds two new DataForSEO blocks for keyword research functionality, enabling users to get keyword suggestions and related keywords using the DataForSEO Labs API. https://github.com/user-attachments/assets/55b3f64b-20b2-4c6d-b307-01327d476fe2 [DataForSeo Poc_v3.json](https://github.com/user-attachments/files/21916605/DataForSeo.Poc_v3.json) ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - Added `DataForSeoKeywordSuggestionsBlock` for getting keyword suggestions from DataForSEO Labs - Added `DataForSeoRelatedKeywordsBlock` for getting related keywords from DataForSEO Labs - Implemented proper Pydantic models (`KeywordSuggestion` and `RelatedKeyword`) for type-safe outputs - Added mockable private methods (`_fetch_keyword_suggestions` and `_fetch_related_keywords`) for better testability - Included comprehensive test mocks to allow testing without actual API credentials - Both blocks support optional SERP info and clickstream data - Added DataForSEO provider configuration using the SDK's ProviderBuilder pattern ### 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] Run block tests for DataForSeoKeywordSuggestionsBlock - [x] Run block tests for DataForSeoRelatedKeywordsBlock - [x] Verify mocks work correctly without API credentials - [x] Confirm proper Pydantic model serialization - [x] Run poetry format and fix any linting issues |
||
|
|
68cd1cb398 |
feat(platform): Enhance GitHub Copilot agent setup with CI-aligned environment and comprehensive platform documentation integration (#10708)
This PR transforms GitHub Copilot from a general coding assistant into a platform-specific expert by providing comprehensive onboarding and a fully configured development environment that mirrors the AutoGPT platform's CI/CD pipeline. ## Key Features ### CI-Aligned Development Environment - **Production-Grade Setup**: The `copilot-setup-steps.yml` workflow now mirrors the platform's CI workflows, providing Copilot with the same environment used for testing and deployment - **Essential Services**: Automatically starts Docker services (PostgreSQL, Redis, RabbitMQ, ClamAV) required for platform development - **Database Readiness**: Includes Prisma migrations and client generation to ensure the database is immediately usable - **Environment Configuration**: Copies default environment files and validates service health, eliminating manual setup steps ### Comprehensive Platform Knowledge - **Unified Documentation**: The `copilot-instructions.md` file integrates knowledge from multiple sources (installer.md, advanced_setup.md, CLAUDE.md, AGENTS.md) into a single comprehensive guide - **Development Patterns**: Includes advanced patterns for block development, API creation, frontend work, and security implementation - **Architecture Insights**: Provides deep understanding of the agent block system, database schema, middleware, and CI/CD workflows - **Troubleshooting Guide**: Comprehensive error handling and validation steps based on production experience ### Enhanced Development Workflow ```bash # Before: Trial-and-error dependency installation # After: Fully configured environment ready immediately # Copilot now understands: poetry run serve # Backend server (port 8000) pnpm dev # Frontend server (port 3000) docker compose up -d # Essential services poetry run pytest backend/blocks/test/test_block.py -xvs # Block validation ``` ## Benefits This configuration provides Copilot with: - **Immediate Productivity**: No time wasted on environment setup or dependency discovery - **Platform Expertise**: Deep understanding of AutoGPT's architecture, security patterns, and development workflows - **CI Consistency**: Local development environment matches production testing environment - **Comprehensive Context**: Access to all platform documentation and development patterns in a single source The setup eliminates the slow trial-and-error process typical of LLM-based development tools and ensures Copilot works efficiently from the first interaction. ## References - [GitHub Copilot Agent Environment Setup](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/customize-the-agent-environment#preinstalling-tools-or-dependencies-in-copilots-environment) - [AutoGPT Platform CI Workflows](.github/workflows/) - [Platform Development Guide](autogpt_platform/CLAUDE.md) <!-- START COPILOT CODING AGENT TIPS --> --- 💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: ntindle <8845353+ntindle@users.noreply.github.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Nicholas Tindle <nicktindle@outlook.com> Co-authored-by: Reinier van der Leer <pwuts@agpt.co> |
||
|
|
f4538d6f5a |
build(backend): Change base image to debian:13-slim w/ Python 3.13 (#10654)
- Resolves #10653 The objective is to move to a base image with fewer active vulnerabilities. Hence the choice for `debian:13-slim` (0 high, 1 medium, 21 low severity), a huge improvement compared to our current base image `python:3.11.10-slim-bookworm` (4 high, 11 medium, 15 low severity). ### Changes 🏗️ - Change backend base image to `debian:13-slim` - Use Python 3.13 - Fix now-deprecated use of class property in `AppProcess` and `BaseAppService` - Expand backend CI matrix to run with Python 3.11 through 3.13 - Update Python version constraint in `pyproject.toml` to include Python 3.13 Also, unrelated: - Update `autogpt-platform-backend` package version to `v0.6.22`, the latest release ### 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] CI passes - [x] No new errors in deployment logs - [x] Everything seems to work normally in deployment |
||
|
|
4589b15450 |
chore(libs/deps-dev): Bump ruff from 0.12.3 to 0.12.4 in /autogpt_platform/autogpt_libs in the development-dependencies group (#10421)
[](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 <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: Swifty <craigswift13@gmail.com> |
||
|
|
ccc4d0dc6c |
fix(frontend): clear agent name and description on agent file removal (#10703)
With this PR, when a user removes the agent file, the agent name and
description will also be removed if they haven’t been changed. However,
if the user has modified either of them, they will remain.
### 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] Everything works perfectly on local, and the tests are also
passing.
|
||
|
|
c4483fa6c7 | Merge branch 'dev' autogpt-platform-beta-v0.6.23 autogpt-platform-beta-v0.6.24 | ||
|
|
c2af8c1a6a |
Reapply "Merge branch 'master' of https://github.com/Significant-Gravitas/AutoGPT into ntindle/secrt-1218-add-ability-to-reject-approved-agents-in-admin-dashboard"
This reverts commit
|
||
|
|
2610c4579f |
feat(platform/dashboard): Enable editing for agent submissions (#10545)
- resolves - https://github.com/Significant-Gravitas/AutoGPT/issues/10511 In this PR, I’ve added backend endpoints and a frontend UI for edit functionality on the Agent Dashboard. Now, users can update their store submission, if status is `PENDING` or `APPROVED`, but not for `REJECTED` and `DRAFT`. When users make changes to a pending status submission, the changes are made to the same version. However, when users make changes to an approved status submission, a new store listing version is created. Backend works something like this: <img width="866" height="832" alt="Screenshot 2025-08-15 at 9 39 02 AM" src="https://github.com/user-attachments/assets/209c60ac-8350-43c1-ba4c-7378d95ecba7" /> ### Changes - I’ve updated the `StoreSubmission` view to include `video_url` and `categories`. - I’ve added a new frontend UI for editing submissions. - I’ve created an endpoint for editing submissions. - I’ve added more end-to-end tests to ensure the edit submission functionality works as expected. ### 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 have checked manually, everything is working perfectly. - [x] All e2e tests are also passing. --------- Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co> Co-authored-by: neo <neo.dowithless@gmail.com> Co-authored-by: Reinier van der Leer <pwuts@agpt.co> Co-authored-by: Swifty <craigswift13@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Ubbe <hi@ubbe.dev> Co-authored-by: Lluis Agusti <hi@llu.lu> |
||
|
|
0c09b0c459 |
chore(api): remove launch darkly feature flags from api key endpoints (#10694)
Some API key endpoints have the Launch Darkly feature flag enabled,
while others don’t. To ensure consistency and remove the API key flag
from the Launch Darkly dashboard, I’m also removing it from the left
endpoints.
### 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] Everything is working fine locally
|
||
|
|
1105e6c0d2 |
tests(frontend): e2e tests for api key page (#10683)
I’ve added three tests for the API keys page: - The test checks if the user is redirected to the login page when they’re not authenticated. - The test verifies that a new API key is created successfully. - The test ensures that an existing API key can be revoked. <img width="470" height="143" alt="Screenshot 2025-08-19 at 10 56 19 AM" src="https://github.com/user-attachments/assets/d27bf736-61ec-435b-a6c4-820e4f3a5e2f" /> I’ve also removed the feature flag from the `delete_api_key` endpoint, so we can use it on CI and in the local environment. ### 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] tests are working perfectly locally. --------- Co-authored-by: Ubbe <hi@ubbe.dev> |
||
|
|
c6247f265e |
feat(frontend): new library agent view setup (#10652)
## Changes 🏗️ Setup for the new Agent Runs page: <img width="900" height="521" alt="Screenshot 2025-08-15 at 14 36 34" src="https://github.com/user-attachments/assets/460d6611-4b15-4878-92d3-b477dc4453a9" /> It is behind a feature flag in Launch Darkly, `new-agent-runs`, so we can progressively enable in staging and later on production. ### Other improvements <img width="350" height="291" alt="Screenshot_2025-08-15_at_14 28 08" src="https://github.com/user-attachments/assets/972d2a1a-a4cd-4e92-b6d7-2dcf7f57c2db" /> - Added a new `<ErrorCard />` component to paint gracefully API errors when fetching data - Moved some sub-components of the old library page to a nested `/components` folder 📁 Behind a feature flag ## 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] Tested with the feature flag ON and OFF ### For configuration changes: None --------- Co-authored-by: Abhimanyu Yadav <122007096+Abhi1992002@users.noreply.github.com> |
||
|
|
38610d1e7a |
feat(frontend): add reusable component for new block menu (#10687)
In this project, I’ve added all the reusable, non-reactive components
that will be used in the new block menu. I’ve also included a new
library called `react-timeago` that helps us find related times.
### 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] Everything works perfectly locally
|
||
|
|
ebfbf31c73 |
ci(frontend): query generation on dev and ci check (#10417)
## Changes 🏗️ - Run the API query generation as part of the `dev` command - update the `README` to reflect so - Add CI job to generate queries and type-check to make sure we are not out of sync - the job is run both in Front-end and Back-end changes - Generate the files via script to load the BE URL dynamically from the env - Remove generated files from Git - rename the `type-check` command to `types` ## 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] CI passes - [x] `README` updates make sense #### For configuration changes: None --------- Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co> |
||
|
|
4abe37396c |
fix(frontend): flaky e2e tests (#10689)
## Changes 🏗️ We had 2 flaky end-to-end tests: - Build page → user can add two blocks and connect them - this was failing sometimes because the `Run` button on the builder does not work well, sometimes you need to click it twice for it to work... - Agent dashboard → edit actions - some flaky tests asserting agent submissions not being there, pulled the fixes from Abhi here on this PR https://github.com/Significant-Gravitas/AutoGPT/pull/10545 ## 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] E2E pass on the CI - [x] Changes make sense ### For configuration changes: None |
||
|
|
fa14bf461b |
feat(frontend): add Line Tabs component (#10674)
## Changes 🏗️ <img width="800" height="644" alt="Screenshot 2025-08-18 at 23 11 46" src="https://github.com/user-attachments/assets/8c9e1257-5b33-4e4d-937d-e8924b18d7dd" /> https://github.com/user-attachments/assets/4a83ed59-068e-46e0-8e76-4f34ed9dd976 - Needed for the new Agent Runs views ( [designs](https://www.figma.com/design/14jjs3hH3Hmkq4hGqxZWco/agent-runs-unification?node-id=187-8653&t=3BV5fF6NDXN7BlI8-1) ) - Took **shadcn** tabs as a base and applied styles on top ## 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 storybook locally - [x] Play with the new tabs component ### For configuration changes None |
||
|
|
e2c33e3d2a |
fix(frontend): agent activity cap (#10675)
## Changes 🏗️ Add the following caps to the **Agent Activity Dropdown**: - display activity only from the last 72h - display up to 1000 items ## 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] Open the agent activity with a big amount of times locally - [x] It displays up to a 1000 and with 72h cap ### For configuration changes None Co-authored-by: Abhimanyu Yadav <122007096+Abhi1992002@users.noreply.github.com> |
||
|
|
650be0d1f7 |
fix(integration): FirecrawlExtractBlock returns 400 Invalid JSON schema when output_schema is passed as a string (#10669)
When the FirecrawlExtractBlock receives an output_schema, we currently declare the field as a str. Pydantic therefore serialises the JSON‐looking value into a string and the Firecrawl API rejects the request with: `400 Bad Request – Invalid JSON schema. path: ['schema']` Direct curl requests work because the same structure is sent as a proper JSON object. ### Changes 🏗️ - Changed the output_schema to dict instead of str ### 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] Test firebase.extract(..., schema) works with dict rather than str --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> |
||
|
|
483c399812 |
Revert "feat(platform): add ability to reject approved agents in admin dashboard"
This reverts commit
|
||
|
|
260dd526c9 |
Revert "Merge branch 'master' of https://github.com/Significant-Gravitas/AutoGPT into ntindle/secrt-1218-add-ability-to-reject-approved-agents-in-admin-dashboard"
This reverts commit |
||
|
|
75a159db01 |
Revert "style(frontend): format code and improve dialog titles in approve-reject buttons"
This reverts commit
|
||
|
|
62032e6584 | style(frontend): format code and improve dialog titles in approve-reject buttons | ||
|
|
105d5dc7e9 | Merge branch 'master' of https://github.com/Significant-Gravitas/AutoGPT into ntindle/secrt-1218-add-ability-to-reject-approved-agents-in-admin-dashboard | ||
|
|
35bd7f7f7a |
fix(frontend/builder): Prevent unnecessary saves before run (#10670)
- Resolves #10444 Sometimes, the order of nodes and/or links isn't consistent between frontend and backend, which currently can result in unnecessary re-saving of the graph when the user tries to run it. Also, `sub_graphs` was not included in the frontend `Graph` type, which can cause unchecked code issues when the object is propragated using spread operators. ### Changes 🏗️ - fix(frontend/builder): Make `graphsEquivalent` insensitive to link and node order - dx(frontend): Fix typing of `Graph.sub_graphs` (and its variants) ### 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: - Import an agent and open it in the builder - Run it without making any changes to the graph itself - [x] -> graph shouldn't re-save |
||
|
|
312cb0227f |
fix(backend/credit): prevent double-application of transactions due to race condition (#10672)
<!-- Clearly explain the need for these changes: --> ## 🚨 CRITICAL: Double Transaction Bug **Critical Issue:** Top-up transactions were being applied TWICE to user balances, causing severe accounting errors. **Example:** - User with $160 balance tops up $50 - Expected: $210 balance - Actual: $260 balance (extra $50 incorrectly credited) This compromises the financial integrity of our credit system and requires immediate fix. ### Changes 🏗️ 1. **Added double-checked locking pattern in `_enable_transaction`** (backend/data/credit.py) - Added transaction re-check INSIDE the locked transaction block (lines 294-298) - Prevents race condition when concurrent requests try to activate the same transaction - Ensures transaction can only be activated once, even with webhook retries 2. **Enhanced error messages in Stripe webhook handler** (backend/server/routers/v1.py) - Added detailed error messages for better debugging of webhook failures - Helps identify issues with payload validation or signature verification ### Root Cause Analysis 🔍 **TOCTOU (Time-of-Check to Time-of-Use) Race Condition:** The original code checked `transaction.isActive` outside the database lock. Between this check and acquiring the lock, another concurrent request (webhook retry or duplicate) could enter, causing both to proceed with activation. **Sequence:** 1. Request A: Checks `isActive=False` ✅ 2. Request B: Checks `isActive=False` ✅ (webhook retry) 3. Request A: Acquires lock, activates transaction, adds $50 4. Request B: Waits for lock, then ALSO adds $50 ❌ **Contributing Factors:** - Stripe webhook retry mechanism - `@func_retry` decorator (up to 5 attempts) - No database-level unique constraint on active transactions - Missing atomicity between check and update ### 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] Verified the double-check prevents duplicate transaction activation - [x] Tested concurrent webhook calls - only one succeeds in activating transaction - [x] Confirmed balance is only incremented once per transaction - [x] Verified idempotency - multiple calls with same transaction_key are safe - [x] All existing credit system tests pass - [x] Tested webhook error handling with invalid payloads/signatures #### 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 required - this is a code-only fix* |
||
|
|
a8feb3c8d0 |
feat(platform/builder): implement launchdarkly feature flag for block menu redesign (#10667)
I’ve added a new launch darkly flag to toggle between the new and old block menu in the builder. ### Changes 🏗️ - A new flag name `NEW_BLOCK_MENU` has been added. - A new block menu block has been created, which is a normal component. It will be expanded with more components in the future. Currently, it’s just a one-line component. - A new control panel has been created, which improves state localisation and has a new design according to the design files. <img width="1512" height="981" alt="Screenshot 2025-08-18 at 2 49 54 PM" src="https://github.com/user-attachments/assets/3deeefe3-9e42-4178-9cf9-77773ed7e172" /> ### 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] Everything works perfectly on local. |
||
|
|
92515b3683 |
feat(platform): add ability to reject approved agents in admin dashboard
- Modified backend review_store_submission to handle rejecting approved agents - Added logic to update StoreListing when rejecting approved agents - Updated UI to show "Revoke" button for approved agents - Only shows approve button for pending agents - Updates dialog text appropriately for revoking vs rejecting Fixes SECRT-1218 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|
|
5da5c2ecd6 | Merge branch 'master' into dev | ||
|
|
ba65fee862 |
hotfix(backend/executor): Fix propagation of passed-in credentials to sub-agents (#10668)
This should fix sub-agent execution issues with passed-in credentials after a crucial data path was removed in #10568. Additionally, some of the changes are to ensure the `credentials_input_schema` gets refreshed correctly when saving a new version of a graph in the builder. ### Changes 🏗️ - Include `graph_credentials_inputs` in `nodes_input_masks` passed into sub-agent execution - Fix credentials input schema in `update_graph` and `get_library_agent_by_graph_id` return - Improve error message on sub-graph validation failure ### 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] Import agent with sub-agent(s) with required credentials inputs & run it -> should work |
||
|
|
908dcd7b4b |
doc(readme): add links to translated README versions (#10659)
Added language selection links to the README for easier access to translated versions: German, Spanish, French, Japanese, Korean, Portuguese, Russian, and Chinese. <!-- Clearly explain the need for these changes: --> ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> ### 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: Zamil Majdy <zamil.majdy@agpt.co> |
||
|
|
542f951dd8 | Merge branch 'master' of https://github.com/Significant-Gravitas/AutoGPT into dev | ||
|
|
72938590f2 |
hotfix: reduce scheduler max_workers to match database pool size (#10665)
## Summary - Fixes scheduler pod crashes during peak scheduling periods (e.g., 03:00:00) - Reduces APScheduler ThreadPoolExecutor max_workers from 10 to 3 (matching scheduler_db_pool_size) - Prevents event loop saturation that blocks health checks and causes pod restarts ## Root Cause Analysis During peak scheduling periods, multiple jobs execute simultaneously and compete for the shared event loop through `run_async()`. This creates a resource bottleneck where: 1. **ThreadPoolExecutor** runs up to 10 jobs concurrently 2. Each job calls `run_async()` which submits to the **same event loop** that FastAPI health check needs 3. **Health check blocks** waiting for event loop availability 4. **Liveness probe fails** after 5 consecutive timeouts (50s) 5. **Pod gets killed** with SIGKILL (exit code 137) 6. **Executions orphaned** - created in DB but never published to RabbitMQ ## Solution Match `max_workers` to `scheduler_db_pool_size` (3) to prevent more concurrent jobs than the system can handle without blocking critical health checks. ## Evidence - Pod restart at exactly 03:05:48 when executions e47cd564-ed87-4a52-999b-40804c41537a and eae69811-4c7c-4cd5-b084-41872293185b were created - 7 scheduled jobs triggered simultaneously at 03:00:00 - Health check normally responds in 0.007s but times out during high concurrency - Exit code 137 indicates SIGKILL from liveness probe failure ## Test Plan - [ ] Monitor scheduler pod stability during peak scheduling periods - [ ] Verify no executions remain QUEUED without being published to RabbitMQ - [ ] Confirm health checks remain responsive under load - [ ] Check that job execution still works correctly with reduced concurrency 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
5d364e13f6 |
chore(frontend): Regenerate API client for orval v7.11.2 (#10663)
### Changes 🏗️ - Generate API client for orval v7.11.2 - Fix type error in `useAgentSelectStep.ts` ### 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] Platform works - [x] Updated codepath in `useAgentSelectStep.ts` works |
||
|
|
32513b26ab | Merge branch 'master' of github.com:Significant-Gravitas/AutoGPT into dev | ||
|
|
bf92e7dbc8 |
hotfix(backend/executor): Fix RabbitMQ channel retry logic in executor (#10661)
## Summary **HOTFIX for production** - Fixes executor being stuck in infinite retry loop when RabbitMQ channels are closed - Ensures proper reconnection by checking channel state before attempting to consume messages - Prevents accumulation of thousands of retry attempts (was seeing 7000+ retries) ## Changes The executor was stuck repeatedly failing with "Channel is closed" errors because the `continuous_retry` decorator was attempting to reuse closed channels instead of creating new ones. Added channel state checks (`is_ready`) before connecting in both: - `_consume_execution_run()` - `_consume_execution_cancel()` When a channel is not ready (closed), the code now: 1. Disconnects the client (safe operation, checks if already disconnected) 2. Establishes a fresh connection with new channel 3. Proceeds with message consumption ## Test plan - [x] Verified the disconnect() method is safe to call on already disconnected clients - [x] Confirmed is_ready property checks both connection and channel state - [ ] Deploy to environment and verify executors reconnect properly after channel failures - [ ] Monitor logs to ensure no more "Channel is closed" retry loops ## Related Issues Fixes critical production issue where: - Executor pods show repeated "Channel is closed" errors - 757 messages stuck in `graph_execution_queue` - 102,286 messages in `failed_notifications` queue - RabbitMQ logs show connections being closed due to missed heartbeats 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
6fce3a09ea |
fix(platform): fix admin dashboard credit tool search, pagination, and modal feedback issues (#10644)
## Summary Fixes three critical issues in the admin dashboard spending page (SECRT-1438): - Fixed user search not working (P1) - query parameters weren't being passed to backend - Fixed broken pagination (P1) - server-side GET requests missing query parameters - Added visual feedback for credit updates (P3) - toast notifications, loading states, auto-dismiss modal ## Root Cause Server-side API requests weren't appending query parameters for GET/DELETE requests in the `makeAuthenticatedRequest` function in `helpers.ts`. ## Changes - Added missing `transaction_filter` parameter to API client's `getUsersHistory` method - Fixed server-side GET request query parameter handling by updating `makeAuthenticatedRequest` to use `buildUrlWithQuery` - Added Suspense key to force re-render on URL parameter changes - Added toast notifications for success/error states when adding credits - Modal now closes automatically after successful submission - Added loading state with disabled buttons during credit submission - Page refreshes automatically to show updated balances - Added debug logging to help diagnose parameter passing issues ## Test Plan - [x] Search for users by email in admin spending dashboard - [x] Navigate through pagination (Next/Previous buttons) - [x] Filter by transaction type (Grant, Usage, etc.) - [x] Add credits to a user account - [x] Verify toast notification appears - [x] Verify modal closes after successful submission - [x] Verify balance updates without manual refresh ## Linear Issue Closes [SECRT-1438](https://linear.app/autogpt/issue/SECRT-1438) 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
9158d4b6a2 |
docs(frontend): update README with Docker instructions (#10648)
## Changes 🏗️
Update the Front-end `README` to clarify how to run the Front-end and
Back-end separately or together via Docker.
You can [preview the README
here](
|
||
|
|
2403931c2e |
chore(frontend/deps): bump the production-dependencies group across 1 directory with 25 updates (#10651)
Bumps the production-dependencies group with 25 updates in the /autogpt_platform/frontend directory: | Package | From | To | | --- | --- | --- | | [@hookform/resolvers](https://github.com/react-hook-form/resolvers) | `5.2.0` | `5.2.1` | | [@next/third-parties](https://github.com/vercel/next.js/tree/HEAD/packages/third-parties) | `15.4.4` | `15.4.6` | | [@radix-ui/react-alert-dialog](https://github.com/radix-ui/primitives) | `1.1.14` | `1.1.15` | | [@radix-ui/react-checkbox](https://github.com/radix-ui/primitives) | `1.3.2` | `1.3.3` | | [@radix-ui/react-collapsible](https://github.com/radix-ui/primitives) | `1.1.11` | `1.1.12` | | [@radix-ui/react-context-menu](https://github.com/radix-ui/primitives) | `2.2.15` | `2.2.16` | | [@radix-ui/react-dialog](https://github.com/radix-ui/primitives) | `1.1.14` | `1.1.15` | | [@radix-ui/react-dropdown-menu](https://github.com/radix-ui/primitives) | `2.1.15` | `2.1.16` | | [@radix-ui/react-popover](https://github.com/radix-ui/primitives) | `1.1.14` | `1.1.15` | | [@radix-ui/react-radio-group](https://github.com/radix-ui/primitives) | `1.3.7` | `1.3.8` | | [@radix-ui/react-scroll-area](https://github.com/radix-ui/primitives) | `1.2.9` | `1.2.10` | | [@radix-ui/react-select](https://github.com/radix-ui/primitives) | `2.2.5` | `2.2.6` | | [@radix-ui/react-switch](https://github.com/radix-ui/primitives) | `1.2.5` | `1.2.6` | | [@radix-ui/react-tabs](https://github.com/radix-ui/primitives) | `1.1.12` | `1.1.13` | | [@radix-ui/react-toast](https://github.com/radix-ui/primitives) | `1.2.14` | `1.2.15` | | [@radix-ui/react-tooltip](https://github.com/radix-ui/primitives) | `1.2.7` | `1.2.8` | | [@supabase/supabase-js](https://github.com/supabase/supabase-js) | `2.52.1` | `2.55.0` | | [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) | `5.83.0` | `5.85.3` | | [@xyflow/react](https://github.com/xyflow/xyflow/tree/HEAD/packages/react) | `12.8.2` | `12.8.3` | | [framer-motion](https://github.com/motiondivision/motion) | `12.23.9` | `12.23.12` | | [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) | `0.525.0` | `0.539.0` | | [next](https://github.com/vercel/next.js) | `15.4.4` | `15.4.6` | | [react-day-picker](https://github.com/gpbl/react-day-picker) | `9.8.0` | `9.8.1` | | [react-hook-form](https://github.com/react-hook-form/react-hook-form) | `7.61.1` | `7.62.0` | | [sonner](https://github.com/emilkowalski/sonner) | `2.0.6` | `2.0.7` | Updates `@hookform/resolvers` from 5.2.0 to 5.2.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/react-hook-form/resolvers/releases"><code>@hookform/resolvers</code>'s releases</a>.</em></p> <blockquote> <h2>v5.2.1</h2> <h2><a href="https://github.com/react-hook-form/resolvers/compare/v5.2.0...v5.2.1">5.2.1</a> (2025-07-29)</h2> <h3>Bug Fixes</h3> <ul> <li>discriminated union for zod v4 mini (<a href="https://redirect.github.com/react-hook-form/resolvers/issues/784">#784</a>) (<a href=" |