mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-01-14 17:47:57 -05:00
feat/execution-data
7183 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
ae6ef8c0c2 |
refactor(frontend): improve LaunchDarkly provider initialization (#10422)
### Changes ️
The previous implementation of the `LaunchDarklyProvider` had a race
condition where it would only initialize after the user's authentication
state was fully resolved. This caused two primary issues:
1. A delay in evaluating any feature flags, leading to a "flash of
un-styled/un-flagged content" until the user session was loaded.
2. An unreliable transition from an un-flagged state to a flagged state,
which could cause UI flicker or incorrect flag evaluations upon login.
This pull request refactors the provider to follow a more robust,
industry-standard pattern. It now initializes immediately with an
`anonymous` context, ensuring flags are available from the very start of
the application lifecycle. When the user logs in and their session
becomes available, the provider seamlessly transitions to an
authenticated context, guaranteeing that the correct flags are evaluated
consistently.
### 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:
**Test Plan:**
- [x] **Anonymous User:** Load the application in an incognito window
without logging in. Verify that feature flags are evaluated correctly
for an anonymous user. Check the browser console for the
`[LaunchDarklyProvider] Using anonymous context` message.
- [x] **Login Flow:** While on the site, log in. Verify that the UI
updates with the correct feature flags for the authenticated user. Check
the console for the `[LaunchDarklyProvider] Using authenticated context`
message and confirm the LaunchDarkly client re-initializes.
- [x] **Authenticated User (Page Refresh):** As a logged-in user,
refresh the page. Verify that the application loads directly with the
authenticated user's flags, leveraging the cached session and
bootstrapped flags from `localStorage`.
- [x] **Logout Flow:** While logged in, log out. Verify that the UI
reverts to the anonymous user's state and flags. The provider `key`
should change back to "anonymous", triggering another re-mount.
<details><summary>Summary of Code Changes</summary>
- Refactored `LaunchDarklyProvider` to handle user authentication state
changes gracefully.
- The provider now initializes immediately with an `anonymous` user
context while the Supabase user session is loading.
- Once the user is authenticated, the provider's context is updated to
reflect the logged-in user's details.
- Added a `key` prop to the `<LDProvider>` component, using the user's
ID (or "anonymous"). This forces React to re-mount the provider when the
user's identity changes, ensuring a clean re-initialization of the
LaunchDarkly SDK.
- Enabled `localStorage` bootstrapping (`options={{ bootstrap:
"localStorage" }}`) to cache flags and improve performance on subsequent
page loads.
- Added `console.debug` statements for improved observability into the
provider's state (anonymous vs. authenticated).
</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>Configuration Changes</summary>
- No configuration changes were made. This PR relies on existing
environment variables (`NEXT_PUBLIC_LAUNCHDARKLY_CLIENT_ID` and
`NEXT_PUBLIC_LAUNCHDARKLY_ENABLED`).
</details>
---------
Co-authored-by: Lluis Agusti <hi@llu.lu>
|
||
|
|
f4a179e5d6 |
feat(backend): Add thread safety to NodeExecutionProgress output handling (#10415)
## Summary - Add thread safety to NodeExecutionProgress class to prevent race conditions between graph executor and node executor threads - Fixes potential data corruption and lost outputs during concurrent access to shared output lists - Uses single global lock per node for minimal performance impact - Instead of blocking the node evaluation before adding another node evaluation, we move on to the next node, in case another node completes it. ## Changes - Added `threading.Lock` to NodeExecutionProgress class - Protected `add_output()` calls from node executor thread with lock - Protected `pop_output()` calls from graph executor thread with lock - Protected `_pop_done_task()` output checks with lock ## Problem Solved The `NodeExecutionProgress.output` dictionary was being accessed concurrently: - `add_output()` called from node executor thread (asyncio thread) - `pop_output()` called from graph executor thread (main thread) - Python lists are not thread-safe for concurrent append/pop operations - This could cause data corruption, index errors, and lost outputs ## Test Plan - [x] Existing executor tests pass - [x] No performance regression (operations are microsecond-level) - [x] Thread safety verified through code analysis ## Technical Details - Single `threading.Lock()` per NodeExecutionProgress instance (~64 bytes) - Lock acquisition time (~100-200ns) is minimal compared to list operations - Maintains order guarantees for same node_execution_id processing - No GIL contention issues as operations are very brief 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
6d25e8f195 |
feat(platform): Move NotificationManager service from rest-api pod to scheduler pod (#10425)
Rest-Api service is a vital service where we should minimize the amount of external resources impacting it. And the NotificationManager service is running as a singleton in nature (similar to the scheduler service), so it makes sense to put it in a single pod. ### Changes 🏗️ Move the NotificationManager service from rest-api pod to the scheduler pod ### 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] Manual test |
||
|
|
3b963e59cc |
feat(platform): Move NotificationManager service from rest-api pod to scheduler pod (#10425)
Rest-Api service is a vital service where we should minimize the amount of external resources impacting it. And the NotificationManager service is running as a singleton in nature (similar to the scheduler service), so it makes sense to put it in a single pod. ### Changes 🏗️ Move the NotificationManager service from rest-api pod to the scheduler pod ### 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] Manual test |
||
|
|
61d0892686 |
fix(frontend): init LD on the client (#10414)
## Changes 🏗️ Launch Darkly is not being initialised in production, despite on paper all env variables being well set 🧐 I tried doing production builds locally, and I noticed this provider needs to be initialised on the client because Launch Darkly flags are designed to work on the client side, where they can access user context and browser environment. ## 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] Did production build locally and run it - [x] See LD initialised on the console after the `use client` directive was added ### For configuration changes: None |
||
|
|
0c9b7334c1 |
feat(backend): Register agent subgraphs as library entries during agent import (#10409)
Currently, we only create a library entry of the top-most graph when importing the graph from an exported file. This can cause some complications, as there is no way to remove the library entry of it. ### Changes 🏗️ Create the library entry for all the subgraphs during the import 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: <!-- Put your test plan here: --> - [x] Export an agent with subgraphs and import it back. |
||
|
|
e28eec6ff9 |
feat(backend): Add ReverseListOrderBlock for reversing list element order (#10352)
### Changes 🏗️ This PR adds a new utility block to the basic blocks collection. This block provides a simple way to reverse the order of elements in any list. **New Features:** - Added class in - Block accepts any list as input and returns the same list with elements in reversed order - Preserves the original list (creates a copy before reversing) - Works with lists containing any type of elements **Technical Details:** - Block ID: - Category: - Input: - The list to reverse (accepts ) - Output: - The list with elements in reversed order - Includes test input/output for validation ### 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 an agent with the ReverseListOrderBlock - [x] Tested with various list types (numbers, strings, mixed types) - [x] Verified the block preserves the original list - [x] Confirmed the block correctly reverses the order of elements - [x] Tested with empty lists and single-element lists - [x] Verified the block integrates properly with other blocks in a workflow #### For configuration changes: - [x] is updated or already compatible with my changes - [x] 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 pure code addition that uses the existing block framework. Co-authored-by: Abhimanyu Yadav <122007096+Abhi1992002@users.noreply.github.com> |
||
|
|
bf73b42890 |
fix(platform): Fix service health check mechanism on app service (#10401)
## Summary - Introduced correct health check API for AppService - Fixed service health check mechanism to properly handle health status monitoring ## Changes Made - Updated health check implementation in AppService. - Make rest service health check checks the health of DatabaseManager too. ## Test plan - [x] Verify health check endpoint responds correctly - [x] Test health check mechanism under various service states - [x] Validate monitoring and alerting integration 🤖 Generated with [Claude Code](https://claude.ai/code) |
||
|
|
f81d7e6a56 |
feat(backend): Add Missing FK indexes and remove unused & redundant indexes (#10412)
### Changes 🏗️ This PR optimizes database performance by adding missing foreign key indexes, removing unused/redundant indexes, cleaning up all legacy untracked indexes, and adding performance indexes for materialized views to achieve 100% optimized database indexing. **Foreign Key Indexes Added:** - `AgentGraph`: `[forkedFromId, forkedFromVersion]` - For fork relationship queries - `AgentGraphExecution`: `[agentPresetId]` - For preset-based execution filtering - `AgentNodeExecution`: `[agentNodeId]` - For node execution lookups - `AgentNodeExecutionInputOutput`: `[agentPresetId]` - For preset input/output queries - `AgentPreset`: `[agentGraphId, agentGraphVersion]` & `[webhookId]` - For graph and webhook lookups - `LibraryAgent`: `[agentGraphId, agentGraphVersion]` & `[creatorId]` - For agent and creator queries - `StoreListing`: `[agentGraphId, agentGraphVersion]` - For marketplace agent lookups - `StoreListingReview`: `[reviewByUserId]` - For user review queries **Unused/Redundant Indexes Removed:** - `User.email` - Unused index identified by linter - `AnalyticsMetrics.userId` - Unused index causing write overhead - `AnalyticsDetails.type` - Redundant (covered by composite `[userId, type]`) - `APIKey.key`, `APIKey.status` - Unused indexes - Named index `"analyticsDetails"` - Converted to standard composite index **All Legacy Untracked Indexes Removed:** - `idx_store_listing_version_status` - Redundant with Prisma composite index - `idx_slv_agent` - Redundant with Prisma-managed `[agentGraphId, agentGraphVersion]` - `idx_store_listing_version_approved_listing` - Redundant with unique constraint - `StoreListing_agentId_owningUserId_idx` - Legacy index superseded by current strategy - `StoreListing_isDeleted_isApproved_idx` - Replaced by optimized composite index - `StoreListing_isDeleted_idx` - Redundant with composite index - `StoreListingVersion_agentId_agentVersion_isDeleted_idx` - Legacy index replaced - `idx_store_listing_approved` - Redundant with existing `[owningUserId, slug]` unique constraint and `[isDeleted, hasApprovedVersion]` index - `idx_slv_categories_gin` - Specialized array search index removed (can be re-added if category filtering is implemented) - `idx_profile_user` - Duplicate of Prisma-managed `Profile_userId_idx` **Materialized View Performance Indexes Added:** - `idx_mv_review_stats_rating` on `mv_review_stats(avg_rating DESC)` - Optimizes sorting agents by rating - `idx_mv_review_stats_count` on `mv_review_stats(review_count DESC)` - Optimizes sorting agents by review count **Result: 100% Optimized Database Indexing** - All database indexes are now defined and managed through Prisma schema - No more untracked indexes requiring manual SQL maintenance - Added performance indexes for materialized views used by marketplace views - Improved query performance for agent sorting and filtering - Enhanced maintainability and consistency across environments **Schema Comments Updated:** - Removed all references to dropped untracked indexes - Simplified documentation to reflect Prisma-only approach for regular tables - Added comprehensive documentation for materialized view indexes and their purposes - Maintained documentation for materialized view refresh strategy ### 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] Schema changes compile successfully with Prisma - [x] Migration adds required FK indexes and materialized view performance indexes - [x] Migration drops all legacy indexes and redundant untracked indexes - [x] All pre-commit hooks pass (linting, formatting, type checking) - [x] No breaking changes to existing foreign key relationships - [x] Verified existing Prisma indexes cover all query patterns - [x] Schema comments comprehensively document all indexing strategy - [x] Materialized view performance indexes optimize marketplace sorting 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Swifty <craigswift13@gmail.com> Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
6dba6ec3e6 |
feat(backend): Add database index for improved query performance (#10411)
This PR adds a database index to improve query performance based on Supabase query performance insights and index recommendations. These indexes target frequently queried columns and relationships to reduce query execution time. ### Changes 🏗️ - Added index on `AgentNodeExecutionInputOutput.agentPresetId` ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Verified schema changes are valid Prisma syntax - [x] Confirmed indexes target frequently queried columns based on Supabase recommendations - [x] Ensured no duplicate indexes are created #### 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**) |
||
|
|
e9b682cc7a |
fix(frontend): launch darkly initialisation (#10408)
## Changes 🏗️ Only initialise Launch Darkly if we have a user and the config is set. ### 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] Once merged login into app and see if Launch Darkly initialises ### For configuration changes: No |
||
|
|
b6d6b865de |
feat(backend): avoid using DatabaseManager when direct query is possible from the API layer (#10403)
This PR reduces the dependency of the API layer on the database manager service by avoiding using DatabaseManager for credentials fetch when a direct query is possible from the API layer ### Changes 🏗️ * If Prisma is available, use the direct query. * Otherwise, utilize the database manager. ### 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 blocks with credentials like AiTextGeneratorBlock |
||
|
|
cf2ca63d52 | fix(backend): use admin route for store downloads (#10406) | ||
|
|
926fd8df22 |
fix(frontend): unhide catpcha (#10407)
<!-- Clearly explain the need for these changes: --> ### Changes 🏗️ <img width="563" height="400" alt="Screenshot 2025-07-19 at 00 50 25" src="https://github.com/user-attachments/assets/ce9b2fe3-a244-40ed-a7a9-27b983ec90f2" /> Introduced an error on my previous PR: https://github.com/Significant-Gravitas/AutoGPT/pull/10397 ( `shouldRender` should be taken in account... ) ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Login / logout as normal completing challenge #### For configuration changes: None |
||
|
|
87f9af606e |
feat(frontend): hide captcha if verified (#10397)
## Changes 🏗️ Do not render the Cloudflare CAPTCHA if the user has already passed verification. ## 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] Try with Cloudflare enabled - [x] Shows the CAPTCHA when not verified - [x] CAPTCHA is hidden when verified ### For configuration changes None |
||
|
|
574f851143 |
feat(frontend): beta blocks via launchdarkly + E2E improvements (#10398)
## Changes 🏗️ https://github.com/user-attachments/assets/dd635fa1-d8ea-4e5b-b719-2c7df8e57832 Using [LaunchDarkly](https://launchdarkly.com/), introduce the concept of "beta" blocks, which are blocks that will be disabled in production unless enabled via a feature flag. This allows us to safely hide and test certain blocks in production safely. ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Checkout and run FE locally - [x] With the `beta-blocks` flag `disabled` in LD - [x] Go to the builder and see **you can't** add the blocks specified on the flag - [x] With the `beta-blocks` flag `enabled` in LD - [x] Go to the builder and see **you can** add the blocks specified on the flag ### For configuration changes: - [x] `.env.example` is updated or already compatible with my changes 🚧 We need to add the `NEXT_PUBLIC_LAUNCHDARKLY_CLIENT_ID` to the dev and prod environments. |
||
|
|
c78143e517 |
fix(platform): Fix service health check mechanism on app service (#10401)
## Summary - Introduced correct health check API for AppService - Fixed service health check mechanism to properly handle health status monitoring ## Changes Made - Updated health check implementation in AppService. - Make rest service health check checks the health of DatabaseManager too. ## Test plan - [x] Verify health check endpoint responds correctly - [x] Test health check mechanism under various service states - [x] Validate monitoring and alerting integration 🤖 Generated with [Claude Code](https://claude.ai/code) |
||
|
|
6641a77c70 |
feat(blocks): add Replicate model blocks (#10337)
This PR adds two new blocks for running Replicate models in AutoGPT:
ReplicateModelBlock: Synchronous execution of any Replicate model with
custom inputs
Key Features:
Support for any public Replicate model via model name (e.g.,
"stability-ai/stable-diffusion")
Custom input parameters via dictionary (e.g., {"prompt": "a beautiful
landscape"})
Optional model version specification for reproducible results
Proper credentials handling using ProviderName.REPLICATE
Comprehensive test suite with 12 test cases covering success, error, and
edge cases
Type-safe implementation with full pyright compliance
Mock methods for testing and development
# 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:
- Unit tests for ReplicateModelBlock (6 test cases)
- Test block initialization and configuration
- Test mock methods for development
- Test error handling and edge cases
- Verify type safety with pyright (0 errors)
- Verify code formatting with Black and isort
- Verify linting with Ruff (0 errors)
- Test credentials handling with ProviderName.REPLICATE
- Test model version specification functionality
- Test both synchronous and asynchronous execution paths
---------
Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co>
|
||
|
|
d33459ddb5 |
feat(backend): Integrate GCS file storage with automatic expiration for Agent File Input (#10340)
## Summary
This PR introduces a complete cloud storage infrastructure and file
upload system that agents can use instead of passing base64 data
directly in inputs, while maintaining backward compatibility for the
builder's node inputs.
### Problem Statement
Currently, when agents need to process files, they pass base64-encoded
data directly in the input, which has several limitations:
1. **Size limitations**: Base64 encoding increases file size by ~33%,
making large files impractical
2. **Memory usage**: Large base64 strings consume significant memory
during processing
3. **Network overhead**: Base64 data is sent repeatedly in API requests
4. **Performance impact**: Encoding/decoding base64 adds processing
overhead
### Solution
This PR introduces a complete cloud storage infrastructure and new file
upload workflow:
1. **New cloud storage system**: Complete `CloudStorageHandler` with
async GCS operations
2. **New upload endpoint**: Agents upload files via `/files/upload` and
receive a `file_uri`
3. **GCS storage**: Files are stored in Google Cloud Storage with
user-scoped paths
4. **URI references**: Agents pass the `file_uri` instead of base64 data
5. **Block processing**: File blocks can retrieve actual file content
using the URI
### Changes Made
#### New Files Introduced:
- **`backend/util/cloud_storage.py`** - Complete cloud storage
infrastructure (545 lines)
- **`backend/util/cloud_storage_test.py`** - Comprehensive test suite
(471 lines)
#### Backend Changes:
- **New cloud storage infrastructure** in
`backend/util/cloud_storage.py`:
- Complete `CloudStorageHandler` class with async GCS operations
- Support for multiple cloud providers (GCS implemented, S3/Azure
prepared)
- User-scoped and execution-scoped file storage with proper
authorization
- Automatic file expiration with metadata-based cleanup
- Path traversal protection and comprehensive security validation
- Async file operations with proper error handling and logging
- **New `UploadFileResponse` model** in `backend/server/model.py`:
- Returns `file_uri` (GCS path like
`gcs://bucket/users/{user_id}/file.txt`)
- Includes `file_name`, `size`, `content_type`, `expires_in_hours`
- Proper Pydantic schema instead of dictionary response
- **New `upload_file` endpoint** in `backend/server/routers/v1.py`:
- Complete new endpoint for file upload with cloud storage integration
- Returns GCS path URI directly as `file_uri`
- Supports user-scoped file storage for proper isolation
- Maintains fallback to base64 data URI when GCS not configured
- File size validation, virus scanning, and comprehensive error handling
#### Frontend Changes:
- **Updated API client** in
`frontend/src/lib/autogpt-server-api/client.ts`:
- Modified return type to expect `file_uri` instead of `signed_url`
- Supports the new upload workflow
- **Enhanced file input component** in
`frontend/src/components/type-based-input.tsx`:
- **Builder nodes**: Still use base64 for immediate data retention
without expiration
- **Agent inputs**: Use the new upload endpoint and pass `file_uri`
references
- Maintains backward compatibility for existing workflows
#### Test Updates:
- **New comprehensive test suite** in
`backend/util/cloud_storage_test.py`:
- 27 test cases covering all cloud storage functionality
- Tests for file storage, retrieval, authorization, and cleanup
- Tests for path validation, security, and error handling
- Coverage for user-scoped, execution-scoped, and system storage
- **New upload endpoint tests** in `backend/server/routers/v1_test.py`:
- Tests for GCS path URI format (`gcs://bucket/path`)
- Tests for base64 fallback when GCS not configured
- Validates file upload, virus scanning, and size limits
- Tests user-scoped file storage and access control
### Benefits
1. **New Infrastructure**: Complete cloud storage system with
enterprise-grade features
2. **Scalability**: Supports larger files without base64 size penalties
3. **Performance**: Reduces memory usage and network overhead with async
operations
4. **Security**: User-scoped file storage with comprehensive access
control and path validation
5. **Flexibility**: Maintains base64 support for builder nodes while
providing URI-based approach for agents
6. **Extensibility**: Designed for multiple cloud providers (GCS, S3,
Azure)
7. **Reliability**: Automatic file expiration, cleanup, and robust error
handling
8. **Backward compatibility**: Existing builder workflows continue to
work unchanged
### Usage
**For Agent Inputs:**
```typescript
// 1. Upload file
const response = await api.uploadFile(file);
// 2. Pass file_uri to agent
const agentInput = { file_input: response.file_uri };
```
**For Builder Nodes (unchanged):**
```typescript
// Still uses base64 for immediate data retention
const nodeInput = { file_input: "data:image/jpeg;base64,..." };
```
### 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] All new cloud storage tests pass (27/27)
- [x] All upload file tests pass (7/7)
- [x] Full v1 router test suite passes (21/21)
- [x] All server tests pass (126/126)
- [x] Backend formatting and linting pass
- [x] Frontend TypeScript compilation succeeds
- [x] Verified GCS path URI format (`gcs://bucket/path`)
- [x] Tested fallback to base64 data URI when GCS not configured
- [x] Confirmed file upload functionality works in UI
- [x] Validated response schema matches Pydantic model
- [x] Tested agent workflow with file_uri references
- [x] Verified builder nodes still work with base64 data
- [x] Tested user-scoped file access control
- [x] Verified file expiration and cleanup functionality
- [x] Tested security validation and path traversal protection
#### For configuration changes:
- [x] No new configuration changes required
- [x] `.env.example` remains compatible
- [x] `docker-compose.yml` remains compatible
- [x] Uses existing GCS configuration from media storage
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude AI <claude@anthropic.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co>
|
||
|
|
c451337cb5 |
fix(docs): missing tags from code that are referenced in docs (#10400)
<!-- Clearly explain the need for these changes: --> The docs have an issue with not building due to changes made in the process of updating the e2e testing to remove the monitor page. ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> fixes the missing start and end tags that prevent docs from building. ### 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 the build and check for no errors indicating missing tags - [x] deploy to netlify |
||
|
|
e50366726c |
feat(blocks/gmail): add Gmail thread blocks (#9965)
This PR adds two new Gmail integration blocks—**Gmail Get Thread** and **Gmail Reply**—to the platform, enhancing threaded email workflows. Key changes include: - **GmailGetThreadBlock**: - New block that retrieves an entire Gmail thread by `threadId`, with an option to include or exclude messages from Spam and Trash. - Supports use cases like fetching all messages in a conversation to check for responses. - **GmailReplyBlock**: - New block that sends a reply within an existing Gmail thread, maintaining the thread context. - Accepts detailed input fields including recipients, CC, BCC, subject, body, and attachments. - Ensures replies are properly associated with their parent message and thread. - **Enhancements to existing Gmail blocks**: - The `Email` model and related outputs now include a `threadId` field. - Updated test data and mock data to support threaded operations. - Expanded OAuth scopes for actions requiring thread metadata. - **Documentation updates**: - Added documentation for the new Gmail blocks in both the general block listing and the detailed Gmail block docs. - Clarified that the `Email` output now includes the `threadId`. These updates enable more advanced and context-aware Gmail automations, such as fetching full conversations and replying inline, supporting richer communication workflows with Gmail. ## 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] Try all the gmail blocks - [x] Send an email reply based on a thread from the get thread block --------- Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
725440ff38 |
chore(backend/deps): Bump youtube-transcript-api from 0.6.3 to 1.1.1 in /autogpt_platform/backend (#10375)
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
08b05621c1 |
feat(block;backend): Truncate execution update payload on large data & Improve ReadSpreadsheetBlock performance (#10395)
### Changes 🏗️ This PR introduces several key improvements to message handling, block functionality, and execution reliability: - **Renamed CSV block to Spreadsheet block** with enhanced CSV/Excel processing capabilities - **Added message size limiting and truncation** for Redis communication to prevent connection issues - **Optimized FileReadBlock** to yield content chunks instead of duplicated outputs for better performance - **Improved execution termination handling** with better timeout management and event publishing - **Enhanced continuous retry decorator** with async function support - **Implemented payload truncation** to prevent Redis connection issues from oversized messages ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Verified backend starts without errors - [x] Confirmed message truncation works for large payloads - [x] Tested spreadsheet block functionality with CSV and Excel files - [x] Validated execution termination improvements - [x] Checked FileReadBlock chunk processing #### 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**) 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
e720f92123 |
feat(tests): Add E2E test data creator script for comprehensive testing (#10368)
### Changes
- Introduced a new script to generate test data for end-to-end (E2E)
tests using API functions, ensuring compatibility with future model
changes.
- The script creates test users, agent blocks, graphs, profiles, library
agents, presets, API keys, and store submissions.
- Utilizes external services for image and video URLs, and includes
error handling for data creation processes.
- Provides a summary of created data upon completion, enhancing the
testing framework for the AutoGPT platform.
### 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 scripts are working perfectly and not breaking anything. Data
is also correctly visible in the database.
|
||
|
|
b6a51fdc19 |
fix(frontend): navbar missing (#10396)
## Changes 🏗️ <img width="1843" height="321" alt="Screenshot 2025-07-17 at 15 48 01" src="https://github.com/user-attachments/assets/63f528f7-1dc3-4587-a5af-d02b2c858191" /> In this recent PR https://github.com/Significant-Gravitas/AutoGPT/pull/10394/ the navigation bar disappeared when logged out. A change was introduced where the navigation bar does not show up if we don't have profile data ( _which we won't have when logged out_ ). This solves it + adds tests covering the navigation bar in the logged out state. ## 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 this locally - [x] See the navbar appearing - [x] E2E tests pass on the CI ### For configuration changes: None |
||
|
|
d3bfad2a10 |
refactor(frontend): e2e tests setup + speed + readability (#10388)
## Changes 🏗️ ### User creation tests Now, all tests use the users created via the platform signup in `global-setup.ts`. Their login details are on a `.auth/user-pool.json` file. I have the delete the logic that created tests users via Supabase directly. ### Build tests speed I have refactored the builder tests, so that, instead of adding 100s of blocks under a given test user session, a new test user logins and adds block for each letter: ``` Test user 1 - logins and adds blocks starting with "a" Test user 2 - logins and adds blocks starting with "b" ``` Given that we know the builder becomes slow once we have 30 or more blocks, in this way a test user never adds more than 10 blocks on a given test ( _without losing coverage_ ), so we don't need time-outs or artificially waiting due to the UI being slow. ### Readability test changes Refactor existing tests, using short-hand utilities, to be: - easier to write - clearer to read - easier to debug ```ts // Selectors getId("id") // --> page.getByTestId("id") getText("foo") // --> page.getByText("id") getButton("Run") // --> page.getByRole("button", {name: "Run"} ... // Assetions const btn = getButton("Save") isVisible(btn) // --> expect(btn).toBeVisible() ``` These utilities live under `selectors.ts` and `assertions.ts`. Their usage is optional but encouraged. ## 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] Refactored tests code looks good - [x] E2E tests are 🟢 on the CI ### For configuration changes: No config changes |
||
|
|
5e4dd43dcb |
chore(backend/deps): Bump websockets from 14.2 to 15.0.1 in /autogpt_platform/backend (#10384)
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
69c420e574 |
chore(libs/deps): Bump the production-dependencies group across 1 directory with 7 updates (#10371)
Bumps the production-dependencies group with 7 updates in the /autogpt_platform/autogpt_libs directory: | Package | From | To | | --- | --- | --- | | [pydantic](https://github.com/pydantic/pydantic) | `2.11.4` | `2.11.7` | | [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.9.1` | `2.10.1` | | [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.14.1` | | [supabase](https://github.com/supabase/supabase-py) | `2.15.1` | `2.16.0` | | [launchdarkly-server-sdk](https://github.com/launchdarkly/python-server-sdk) | `9.11.1` | `9.12.0` | | [fastapi](https://github.com/fastapi/fastapi) | `0.115.12` | `0.116.1` | | [uvicorn](https://github.com/encode/uvicorn) | `0.34.3` | `0.35.0` | Updates `pydantic` from 2.11.4 to 2.11.7 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pydantic/pydantic/releases">pydantic's releases</a>.</em></p> <blockquote> <h2>v2.11.7 2025-06-14</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <h3>Fixes</h3> <ul> <li>Copy <code>FieldInfo</code> instance if necessary during <code>FieldInfo</code> build by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11980">pydantic/pydantic#11980</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/pydantic/pydantic/compare/v2.11.6...v2.11.7">https://github.com/pydantic/pydantic/compare/v2.11.6...v2.11.7</a></p> <h2>v2.11.6 2025-06-13</h2> <h2>v2.11.6 (2025-06-13)</h2> <h3>What's Changed</h3> <h4>Fixes</h4> <ul> <li>Rebuild dataclass fields before schema generation by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11949">#11949</a></li> <li>Always store the original field assignment on <code>FieldInfo</code> by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11946">#11946</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/pydantic/pydantic/compare/v2.11.5...v2.11.6">https://github.com/pydantic/pydantic/compare/v2.11.5...v2.11.6</a></p> <h2>v2.11.5 2025-05-22</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <h3>Fixes</h3> <ul> <li>Check if <code>FieldInfo</code> is complete after applying type variable map by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11855">#11855</a></li> <li>Do not delete mock validator/serializer in <code>model_rebuild()</code> by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11890">#11890</a></li> <li>Do not duplicate metadata on model rebuild by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11902">#11902</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/pydantic/pydantic/compare/v2.11.4...v2.11.5">https://github.com/pydantic/pydantic/compare/v2.11.4...v2.11.5</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pydantic/pydantic/blob/main/HISTORY.md">pydantic's changelog</a>.</em></p> <blockquote> <h2>v2.11.7 (2025-06-14)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.11.7">GitHub release</a></p> <h3>What's Changed</h3> <h4>Fixes</h4> <ul> <li>Copy <code>FieldInfo</code> instance if necessary during <code>FieldInfo</code> build by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11898">#11898</a></li> </ul> <h2>v2.11.6 (2025-06-13)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.11.6">GitHub release</a></p> <h3>What's Changed</h3> <h4>Fixes</h4> <ul> <li>Rebuild dataclass fields before schema generation by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11949">#11949</a></li> <li>Always store the original field assignment on <code>FieldInfo</code> by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11946">#11946</a></li> </ul> <h2>v2.11.5 (2025-05-22)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.11.5">GitHub release</a></p> <h3>What's Changed</h3> <h4>Fixes</h4> <ul> <li>Check if <code>FieldInfo</code> is complete after applying type variable map by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11855">#11855</a></li> <li>Do not delete mock validator/serializer in <code>model_rebuild()</code> by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11890">#11890</a></li> <li>Do not duplicate metadata on model rebuild by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11902">#11902</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
2682ed7439 |
chore(backend/deps-dev): Bump faker from 33.3.1 to 37.4.0 in /autogpt_platform/backend (#10386)
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
1502f28481 |
chore(libs/deps): Bump pytest-asyncio from 0.26.0 to 1.0.0 in /autogpt_platform/autogpt_libs (#10175)
Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 0.26.0 to 1.0.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-asyncio/releases">pytest-asyncio's releases</a>.</em></p> <blockquote> <h2>pytest-asyncio 1.0.0</h2> <h1><a href="https://github.com/pytest-dev/pytest-asyncio/tree/1.0.0">1.0.0</a> - 2025-05-26</h1> <h2>Removed</h2> <ul> <li>The deprecated <em>event_loop</em> fixture. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1106">#1106</a>)</li> </ul> <h2>Added</h2> <ul> <li>Prelimiary support for Python 3.14 (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1025">#1025</a>)</li> </ul> <h2>Changed</h2> <ul> <li>Scoped event loops (e.g. module-scoped loops) are created once rather than per scope (e.g. per module). This reduces the number of fixtures and speeds up collection time, especially for large test suites. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1107">#1107</a>)</li> <li>The <em>loop_scope</em> argument to <code>pytest.mark.asyncio</code> no longer forces that a pytest Collector exists at the level of the specified scope. For example, a test function marked with <code>pytest.mark.asyncio(loop_scope="class")</code> no longer requires a class surrounding the test. This is consistent with the behavior of the <em>scope</em> argument to <code>pytest_asyncio.fixture</code>. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1112">#1112</a>)</li> </ul> <h2>Fixed</h2> <ul> <li>An error caused when using pytest's [--setup-plan]{.title-ref} option. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/630">#630</a>)</li> <li>Unsuppressed import errors with pytest option <code>--doctest-ignore-import-errors</code> (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/797">#797</a>)</li> <li>A "fixture not found" error in connection with package-scoped loops (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1052">#1052</a>)</li> </ul> <h2>Notes for Downstream Packagers</h2> <ul> <li>Removed a test that had an ordering dependency on other tests. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1114">#1114</a>)</li> </ul> <h2>pytest-asyncio 1.0.0a1</h2> <h1><a href="https://github.com/pytest-dev/pytest-asyncio/tree/1.0.0a1">1.0.0a1</a> - 2025-05-09</h1> <h2>Removed</h2> <ul> <li>The deprecated <em>event_loop</em> fixture. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1106">#1106</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
08f0d94640 |
chore(frontend/deps): Bump dotenv from 16.5.0 to 17.2.0 in /autogpt_platform/frontend (#10377)
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
c0eae266d8 |
chore(backend/deps-dev): Bump the development-dependencies group in /autogpt_platform/backend with 2 updates (#10373)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
f02bb292b5 |
chore(libs/deps-dev): Bump ruff from 0.12.2 to 0.12.3 in /autogpt_platform/autogpt_libs in the development-dependencies group (#10376)
Bumps the development-dependencies group in /autogpt_platform/autogpt_libs with 1 update: [ruff](https://github.com/astral-sh/ruff). Updates `ruff` from 0.12.2 to 0.12.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.12.3</h2> <h2>Release Notes</h2> <h3>Preview features</h3> <ul> <li>[<code>flake8-bugbear</code>] Support non-context-manager calls in <code>B017</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/19063">#19063</a>)</li> <li>[<code>flake8-use-pathlib</code>] Add autofixes for <code>PTH100</code>, <code>PTH106</code>, <code>PTH107</code>, <code>PTH108</code>, <code>PTH110</code>, <code>PTH111</code>, <code>PTH112</code>, <code>PTH113</code>, <code>PTH114</code>, <code>PTH115</code>, <code>PTH117</code>, <code>PTH119</code>, <code>PTH120</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/19213">#19213</a>)</li> <li>[<code>flake8-use-pathlib</code>] Add autofixes for <code>PTH203</code>, <code>PTH204</code>, <code>PTH205</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18922">#18922</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-return</code>] Fix false-positive for variables used inside nested functions in <code>RET504</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18433">#18433</a>)</li> <li>Treat form feed as valid whitespace before a line continuation (<a href="https://redirect.github.com/astral-sh/ruff/pull/19220">#19220</a>)</li> <li>[<code>flake8-type-checking</code>] Fix syntax error introduced by fix (<code>TC008</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19150">#19150</a>)</li> <li>[<code>pyupgrade</code>] Keyword arguments in <code>super</code> should suppress the <code>UP008</code> fix (<a href="https://redirect.github.com/astral-sh/ruff/pull/19131">#19131</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>[<code>flake8-pyi</code>] Make example error out-of-the-box (<code>PYI007</code>, <code>PYI008</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19103">#19103</a>)</li> <li>[<code>flake8-simplify</code>] Make example error out-of-the-box (<code>SIM116</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19111">#19111</a>)</li> <li>[<code>flake8-type-checking</code>] Make example error out-of-the-box (<code>TC001</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19151">#19151</a>)</li> <li>[<code>flake8-use-pathlib</code>] Make example error out-of-the-box (<code>PTH210</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19189">#19189</a>)</li> <li>[<code>pycodestyle</code>] Make example error out-of-the-box (<code>E272</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19191">#19191</a>)</li> <li>[<code>pycodestyle</code>] Make example not raise unnecessary <code>SyntaxError</code> (<code>E114</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19190">#19190</a>)</li> <li>[<code>pydoclint</code>] Make example error out-of-the-box (<code>DOC501</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19218">#19218</a>)</li> <li>[<code>pylint</code>, <code>pyupgrade</code>] Fix syntax errors in examples (<code>PLW1501</code>, <code>UP028</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19127">#19127</a>)</li> <li>[<code>pylint</code>] Update <code>missing-maxsplit-arg</code> docs and error to suggest proper usage (<code>PLC0207</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18949">#18949</a>)</li> <li>[<code>flake8-bandit</code>] Make example error out-of-the-box (<code>S412</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19241">#19241</a>)</li> </ul> <h2>Contributors</h2> <ul> <li><a href="https://github.com/AlexWaygood"><code>@AlexWaygood</code></a></li> <li><a href="https://github.com/BurntSushi"><code>@BurntSushi</code></a></li> <li><a href="https://github.com/Gankra"><code>@Gankra</code></a></li> <li><a href="https://github.com/InSyncWithFoo"><code>@InSyncWithFoo</code></a></li> <li><a href="https://github.com/LaBatata101"><code>@LaBatata101</code></a></li> <li><a href="https://github.com/MatthewMckee4"><code>@MatthewMckee4</code></a></li> <li><a href="https://github.com/MeGaGiGaGon"><code>@MeGaGiGaGon</code></a></li> <li><a href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li> <li><a href="https://github.com/NamelessGO"><code>@NamelessGO</code></a></li> <li><a href="https://github.com/UnboundVariable"><code>@UnboundVariable</code></a></li> <li><a href="https://github.com/abhijeetbodas2001"><code>@abhijeetbodas2001</code></a></li> <li><a href="https://github.com/carljm"><code>@carljm</code></a></li> <li><a href="https://github.com/charliermarsh"><code>@charliermarsh</code></a></li> <li><a href="https://github.com/chirizxc"><code>@chirizxc</code></a></li> <li><a href="https://github.com/danparizher"><code>@danparizher</code></a></li> <li><a href="https://github.com/dhruvmanila"><code>@dhruvmanila</code></a></li> <li><a href="https://github.com/fdosani"><code>@fdosani</code></a></li> <li><a href="https://github.com/github-actions"><code>@github-actions</code></a></li> <li><a href="https://github.com/ibraheemdev"><code>@ibraheemdev</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.12.3</h2> <h3>Preview features</h3> <ul> <li>[<code>flake8-bugbear</code>] Support non-context-manager calls in <code>B017</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/19063">#19063</a>)</li> <li>[<code>flake8-use-pathlib</code>] Add autofixes for <code>PTH100</code>, <code>PTH106</code>, <code>PTH107</code>, <code>PTH108</code>, <code>PTH110</code>, <code>PTH111</code>, <code>PTH112</code>, <code>PTH113</code>, <code>PTH114</code>, <code>PTH115</code>, <code>PTH117</code>, <code>PTH119</code>, <code>PTH120</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/19213">#19213</a>)</li> <li>[<code>flake8-use-pathlib</code>] Add autofixes for <code>PTH203</code>, <code>PTH204</code>, <code>PTH205</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18922">#18922</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-return</code>] Fix false-positive for variables used inside nested functions in <code>RET504</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18433">#18433</a>)</li> <li>Treat form feed as valid whitespace before a line continuation (<a href="https://redirect.github.com/astral-sh/ruff/pull/19220">#19220</a>)</li> <li>[<code>flake8-type-checking</code>] Fix syntax error introduced by fix (<code>TC008</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19150">#19150</a>)</li> <li>[<code>pyupgrade</code>] Keyword arguments in <code>super</code> should suppress the <code>UP008</code> fix (<a href="https://redirect.github.com/astral-sh/ruff/pull/19131">#19131</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>[<code>flake8-pyi</code>] Make example error out-of-the-box (<code>PYI007</code>, <code>PYI008</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19103">#19103</a>)</li> <li>[<code>flake8-simplify</code>] Make example error out-of-the-box (<code>SIM116</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19111">#19111</a>)</li> <li>[<code>flake8-type-checking</code>] Make example error out-of-the-box (<code>TC001</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19151">#19151</a>)</li> <li>[<code>flake8-use-pathlib</code>] Make example error out-of-the-box (<code>PTH210</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19189">#19189</a>)</li> <li>[<code>pycodestyle</code>] Make example error out-of-the-box (<code>E272</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19191">#19191</a>)</li> <li>[<code>pycodestyle</code>] Make example not raise unnecessary <code>SyntaxError</code> (<code>E114</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19190">#19190</a>)</li> <li>[<code>pydoclint</code>] Make example error out-of-the-box (<code>DOC501</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19218">#19218</a>)</li> <li>[<code>pylint</code>, <code>pyupgrade</code>] Fix syntax errors in examples (<code>PLW1501</code>, <code>UP028</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19127">#19127</a>)</li> <li>[<code>pylint</code>] Update <code>missing-maxsplit-arg</code> docs and error to suggest proper usage (<code>PLC0207</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18949">#18949</a>)</li> <li>[<code>flake8-bandit</code>] Make example error out-of-the-box (<code>S412</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19241">#19241</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
11cb94ba78 |
chore(frontend/deps-dev): Bump @types/node from 22.15.30 to 24.0.13 in /autogpt_platform/frontend (#10379)
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
a15bb16ce2 |
chore(backend/deps): Bump the production-dependencies group across 1 directory with 4 updates (#10389)
Bumps the production-dependencies group with 4 updates in the /autogpt_platform/backend directory: [groq](https://github.com/groq/groq-python), [launchdarkly-server-sdk](https://github.com/launchdarkly/python-server-sdk), [openai](https://github.com/openai/openai-python) and [sentry-sdk](https://github.com/getsentry/sentry-python). Updates `groq` from 0.29.0 to 0.30.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/groq/groq-python/releases">groq's releases</a>.</em></p> <blockquote> <h2>v0.30.0</h2> <h2>0.30.0 (2025-07-11)</h2> <p>Full Changelog: <a href="https://github.com/groq/groq-python/compare/v0.29.0...v0.30.0">v0.29.0...v0.30.0</a></p> <h3>Features</h3> <ul> <li><strong>api:</strong> api update (<a href=" |
||
|
|
ff7157fbbe |
chore(backend/deps): Bump pinecone from 5.4.2 to 7.3.0 in /autogpt_platform/backend (#10378)
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
f2a26b547b |
feat(frontend): add prefetch queries for various endpoints and enhance API configurations (#10394)
This update enhances the performance and user experience by allowing
data to be prefetched, reducing loading times on the frontend.
### Changes
- Introduced `usePrefetch` in Orval configuration to support
prefetching.
- Added prefetch queries for user profiles, admin listings history,
notification preferences, and execution schedules.
- Updated OpenAPI specifications to include descriptions for provider
names and adjusted required fields in request models.
- Enhanced the Navbar component to utilize the new prefetch
functionality for user profile data.
- Improved type definitions for various models to ensure better
integration with the API.
### Checklist 📋
#### For code changes:
- [x] I have clearly listed my changes in the PR description
- [x] I have made a test plan
- [x] I have tested my changes according to the test plan:
- [x] I’ve checked everything manually, and everything is working fine.
|
||
|
|
423b22214a |
feat(blocks): Add Excel support to ReadSpreadsheetBlock and introduced FileReadBlock (#10393)
This PR adds Excel file support to CSV processing and enhances text file reading capabilities. ### Changes 🏗️ **ReadSpreadsheetBlock (formerly ReadCsvBlock):** - Renamed `ReadCsvBlock` to `ReadSpreadsheetBlock` for better clarity - Added Excel file support (.xlsx, .xls) with automatic conversion to CSV using pandas - Enhanced parameter `file_in` to `file_input` for consistency - Excel files are automatically detected by extension and converted to CSV format - Maintains all existing CSV processing functionality (delimiters, headers, etc.) - Graceful error handling when pandas library is not available **FileReadBlock:** - Enhanced text file reading with advanced chunking capabilities - Added parameters: `skip_size`, `skip_rows`, `row_limit`, `size_limit`, `delimiter` - Supports both character-based and row-based processing - Chunked output for large files based on size limits - Proper file handling with UTF-8 and latin-1 encoding fallbacks - Uses `store_media_file` for secure file processing (URLs, data URIs, local paths) - Fixed test input to use data URI instead of non-existent file **General Improvements:** - Consistent parameter naming across blocks (`file_input`) - Enhanced error handling and validation - Comprehensive test coverage - All existing functionality preserved ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Both ReadSpreadsheetBlock and FileReadBlock instantiate correctly - [x] ReadSpreadsheetBlock processes CSV data with existing functionality - [x] FileReadBlock reads text files with data URI input - [x] All block tests pass (457 passed, 83 skipped) - [x] No linting errors in modified files - [x] Excel support gracefully handles missing pandas dependency #### For configuration changes: - [ ] `.env.example` is updated or already compatible with my changes - [ ] `docker-compose.yml` is updated or already compatible with my changes - [ ] I have included a list of my configuration changes in the PR description (under **Changes**) *Note: No configuration changes required for this PR.* |
||
|
|
ee44f3b4a9 |
fix(frontend): navbar profile query not working (#10392)
## Changes 🏗️ <img width="800" height="265" alt="Screenshot 2025-07-16 at 13 10 57" src="https://github.com/user-attachments/assets/01164bde-0523-4284-bf74-d1a735b77d5c" /> When redoing the navigation bar, I moved the profile query to be executed on the server using the new [react-query](https://tanstack.com/query/latest) generated hooks. The README [states the new hooks can be called on the server](https://github.com/Significant-Gravitas/AutoGPT/blob/master/autogpt_platform/frontend/README.md#server-side-prefetching), but when looking deeply into the implementation of [`custom-mutator.ts`](https://github.com/Significant-Gravitas/AutoGPT/blob/master/autogpt_platform/frontend/src/app/api/mutators/custom-mutator.ts), it turns out they can not ( yet ) as `custom-mutator` calls the proxy API ( _which can't be called from a RSC_ 😅 ). ### Solution For now, I changed the call to be made through the old `BackendAPI`, which can be called client and server side ✅ ( _I did that as part of the server 🍪 migration_ ) and added an E2E test to catch this ever disappears again. Next, I will open a separate PR refactoring `custom-mutator` so that it can be called on the server. ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Run the app - [x] Login - [x] You see your account name and email when opening the account menu |
||
|
|
a07b0c7a7a | Merge branch 'master' into dev autogpt-platform-beta-v0.6.16 | ||
|
|
db1f034544 |
Fix Gmail body parsing for multipart messages (#9863) (#10071)
<!-- Clearly explain the need for these changes: --> The `GmailReadBlock._get_email_body()` method was only inspecting the top-level payload and a single `text/plain` part, causing it to return the fallback string "This email does not contain a text body." for most Gmail messages. This occurred because Gmail messages are typically wrapped in `multipart/alternative` or other multipart containers, which the original implementation couldn't handle. This critical issue made the Gmail integration unusable for reading email body content, as virtually every real Gmail message uses multipart MIME structures. <!-- Concisely describe all of the changes made in this pull request: --> ### Changes #### Core Implementation: - **Replaced simple `_get_email_body()` with recursive multipart parser** that can walk through nested MIME structures - **Added `_walk_for_body()` method** for recursive traversal of email parts with depth limiting (max 10 levels) - **Implemented safe base64 decoding** with automatic padding correction in `_decode_base64()` - **Added attachment body support** via `_download_attachment_body()` for emails where body content is stored as attachments #### Email Format Support: - **HTML to text conversion** using `html2text` library for HTML-only emails - **Multipart/alternative handling** with preference for `text/plain` over `text/html` - **Nested multipart structure support** (e.g., `multipart/mixed` containing `multipart/alternative`) - **Single-part email support** (maintains backward compatibility) #### Dependencies & Testing: - **Added `html2text = "^2024.2.26"`** to `pyproject.toml` for HTML conversion - **Created comprehensive unit tests** in `test/blocks/test_gmail.py` covering all email types and edge cases - **Added error handling and graceful fallbacks** for malformed data and missing dependencies #### Security & Performance: - **Recursion depth limiting** prevents infinite loops on malformed email structures - **Exception handling** ensures graceful degradation when API calls fail - **Efficient tree traversal** with early returns for better performance ### Checklist #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: <details> <summary>Test Plan</summary> - **Single-part text/plain emails** - Verified correct extraction of plain text content - **Multipart/alternative emails** - Tested preference for plain text over HTML when both available - **HTML-only emails** - Confirmed HTML to text conversion works correctly - **Nested multipart structures** - Tested deeply nested `multipart/mixed` containing `multipart/alternative` - **Attachment-based body content** - Verified downloading and decoding of body stored as attachments - **Base64 padding edge cases** - Tested malformed base64 data with missing padding - **Recursion depth limits** - Confirmed protection against infinite recursion - **Error handling scenarios** - Tested graceful fallbacks for API failures and missing dependencies - **Backward compatibility** - Ensured existing functionality remains unchanged for edge cases - **Integration testing** - Ran standalone verification script with 100% test pass rate </details> #### For configuration changes: - [x] `.env.example` is updated or already compatible with my changes - [x] `docker-compose.yml` is updated or already compatible with my changes - [x] I have included a list of my configuration changes in the PR description (under **Changes**) <details> <summary>Configuration Changes</summary> - Added `html2text` dependency to `pyproject.toml` - no environment or infrastructure changes required - No changes to ports, services, secrets, or databases - Fully backward compatible with existing Gmail API configuration </details> --------- Co-authored-by: Toran Bruce Richards <toran.richards@gmail.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
f45bf53681 |
feat(docs): Add info about auto setup script to docs + readme (#10347)
Updates to the readme + docs to add info about the newly added auto setup script. Changes to ``new_blocks.md`` and ``installer.md`` are to make netlify CI happy and pass --------- Co-authored-by: Reinier van der Leer <pwuts@agpt.co> |
||
|
|
0deaaf9e8f |
chore(frontend/deps-dev): Bump the development-dependencies group in /autogpt_platform/frontend with 4 updates (#10382)
Bumps the development-dependencies group in /autogpt_platform/frontend with 4 updates: [@playwright/test](https://github.com/microsoft/playwright), [@tanstack/react-query-devtools](https://github.com/TanStack/query/tree/HEAD/packages/react-query-devtools), [msw](https://github.com/mswjs/msw) and [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss). Updates `@playwright/test` from 1.53.2 to 1.54.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/microsoft/playwright/releases"><code>@playwright/test</code>'s releases</a>.</em></p> <blockquote> <h2>v1.54.1</h2> <h3>Highlights</h3> <p><a href="https://redirect.github.com/microsoft/playwright/issues/36650">microsoft/playwright#36650</a> - [Regression]: 1.54.0 breaks downloading browsers when an HTTP(S) proxy is used</p> <h2>Browser Versions</h2> <ul> <li>Chromium 139.0.7258.5</li> <li>Mozilla Firefox 140.0.2</li> <li>WebKit 26.0</li> </ul> <p>This version was also tested against the following stable channels:</p> <ul> <li>Google Chrome 140</li> <li>Microsoft Edge 140</li> </ul> <h2>v1.54.0</h2> <h2>Highlights</h2> <ul> <li> <p>New cookie property <code>partitionKey</code> in <a href="https://playwright.dev/docs/api/class-browsercontext#browser-context-cookies">browserContext.cookies()</a> and <a href="https://playwright.dev/docs/api/class-browsercontext#browser-context-add-cookies">browserContext.addCookies()</a>. This property allows to save and restore partitioned cookies. See <a href="https://developer.mozilla.org/en-US/docs/Web/Privacy/Guides/Privacy_sandbox/Partitioned_cookies">CHIPS MDN article</a> for more information. Note that browsers have different support and defaults for cookie partitioning.</p> </li> <li> <p>New option <code>noSnippets</code> to disable code snippets in the html report.</p> <pre lang="js"><code>import { defineConfig } from '@playwright/test'; <p>export default defineConfig({ reporter: [['html', { noSnippets: true }]] }); </code></pre></p> </li> <li> <p>New property <code>location</code> in test annotations, for example in <a href="https://playwright.dev/docs/api/class-testresult#test-result-annotations">testResult.annotations</a> and <a href="https://playwright.dev/docs/api/class-testinfo#test-info-annotations">testInfo.annotations</a>. It shows where the annotation like <code>test.skip</code> or <code>test.fixme</code> was added.</p> </li> </ul> <h2>Command Line</h2> <ul> <li> <p>New option <code>--user-data-dir</code> in multiple commands. You can specify the same user data dir to reuse browsing state, like authentication, between sessions.</p> <pre lang="bash"><code>npx playwright codegen --user-data-dir=./user-data </code></pre> </li> <li> <p>Option <code>-gv</code> has been removed from the <code>npx playwright test</code> command. Use <code>--grep-invert</code> instead.</p> </li> <li> <p><code>npx playwright open</code> does not open the test recorder anymore. Use <code>npx playwright codegen</code> instead.</p> </li> </ul> <h2>Miscellaneous</h2> <ul> <li>Support for Node.js 16 has been removed.</li> <li>Support for Node.js 18 has been deprecated, and will be removed in the future.</li> </ul> <h2>Browser Versions</h2> <ul> <li>Chromium 139.0.7258.5</li> <li>Mozilla Firefox 140.0.2</li> <li>WebKit 26.0</li> </ul> <p>This version was also tested against the following stable channels:</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
9be4b1f4cc |
chore(frontend/deps-dev): Bump chromatic from 11.25.2 to 13.1.2 in /autogpt_platform/frontend (#10385)
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
fde3533943 |
fix(frontend): logout pages design adjustments (#10342)
## Changes 🏗️ - Put `Continue with Google` button below the other button on the forms ( _to confirm with design_ ) - Ensure some vertical spacing so the forms don't end touching the header on small screens - Apply style adjustments asked by design on navbar links ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Check the above ### For configuration changes: None |
||
|
|
a789f87734 |
fix(frontend): disable Cloudflare on Vercel previews (#10354)
## Changes 🏗️ Disable the Cloudflare check: <img width="600" height="861" alt="Screenshot 2025-07-11 at 18 51 46" src="https://github.com/user-attachments/assets/792ecca0-967e-4cef-a562-789125452d2f" /> On Vercel previews, so we can use previews for testing Front-end only changes. Vercel previews have dynamically generated URLs: ``` https://{branch}-{commit}-significant-gravitas.vercel.app/login ``` So if Cloudflare does not support URL wildcards we will neeed to do this 🙇🏽 ( _as an experiment_ ) ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] You can login on the preview ### For configuration changes: None |
||
|
|
0b6e46d363 |
fix(frontend): fix my agent count in the library (#10357)
Currently, my agents count is showing the initial agent count loads on the library and then adding more agents after pagination. ### Changes 🏗️ - I’ve used `total_items` inside the pagination response and shown the correct result. ### Demo https://github.com/user-attachments/assets/b9a2cf18-c9fc-42f8-b0d4-3f8a7ad3cbc5 ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Manually test everything, and it works fine. |
||
|
|
6ffe57c3df |
fix(docs): Updated Discord Badge in README for Better Visibility (#10360)
### Motivation 💡 The previous Discord badge in the README used `dcbadge.vercel.app`, which often fails to render correctly and displays an invalid or broken badge. ### Changes 🛠️ - Replaced the broken badge with a `shields.io` Discord badge that is visually consistent with the Twitter badge - Ensures clearer visual guidance and a more professional appearance ### Notes ✏️ This PR only updates the `README.md` no frontend, backend, or configuration files are touched. This change improves the aesthetics and onboarding experience for new contributors. Screenshot of the issue: <img width="405" height="47" alt="Screenshot 2025-07-12 175316" src="https://github.com/user-attachments/assets/41f7355c-f795-4163-855f-3d01f2478dd7" /> --------- Co-authored-by: Ubbe <hi@ubbe.dev> Co-authored-by: Bently <Github@bentlybro.com> Co-authored-by: Bently <tomnoon9@gmail.com> |
||
|
|
3ca0d04ea0 |
fix(readme): Removes MIT icon from readme (#10366)
This PR simply removes the MIT Icon from the main README.md |
||
|
|
c2eea593c0 |
fix(backend): Include node execution steps and cost of sub-graph execution (#10328)
## Summary This PR enhances the node execution stats tracking system to properly handle nested graph executions and additional cost/step metrics: - **Add extra_cost and extra_steps fields** to `NodeExecutionStats` model for tracking additional metrics from sub-graphs - **Update AgentExecutorBlock** to merge nested execution stats from sub-graphs into the parent execution - **Fix stats update mechanism** in `execute_node` to use in-place updates instead of `model_copy` for better performance - **Add proper tracking** of extra costs and steps in graph execution stats aggregation ## Changes Made - Modified `backend/backend/data/model.py` to add `extra_cost` and `extra_steps` fields - Updated `backend/backend/blocks/agent.py` to merge stats from nested graph executions - Fixed `backend/backend/executor/manager.py` to properly update execution stats and aggregate extra metrics ## Test Plan - [x] Verify that nested graph executions properly propagate their stats to parent graphs - [x] Test that extra costs and steps are correctly tracked and aggregated - [x] Ensure debug logging provides useful information for monitoring - [x] Run existing tests to ensure no regressions - [x] Test with multi-level nested agent graphs 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com> |