mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-02-09 22:35:54 -05:00
476bfc6c84aa7f2cf1767786a0407ae0dec01708
81 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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> |
||
|
|
af7d56612d |
fix(logging): remove uvicorn log config to prevent startup deadlock (#10638)
## Problem After applying the CloudLoggingHandler fix to use BackgroundThreadTransport (#10634), scheduler pods entered a new deadlock during startup when uvicorn reconfigures logging. ## Root Cause When uvicorn starts with a log_config parameter, it calls `logging.config.dictConfig()` which: 1. Calls `_clearExistingHandlers()` 2. Which calls `logging.shutdown()` 3. Which tries to `flush()` all handlers including CloudLoggingHandler 4. CloudLoggingHandler with BackgroundThreadTransport tries to flush its queue 5. The background worker thread tries to acquire the logging module lock to check log levels 6. **Deadlock**: shutdown holds lock waiting for flush to complete, worker thread needs lock to continue ## Thread Dump Evidence From py-spy analysis of the stuck pod: - **Thread 21 (FastAPI)**: Stuck in `flush()` waiting for background thread to drain queue - **Thread 13 (google.cloud.logging.Worker)**: Waiting for logging lock in `isEnabledFor()` - **Thread 1 (MainThread)**: Waiting for logging lock in `getLogger()` during SQLAlchemy import - **Threads 30, 31 (Sentry)**: Also waiting for logging lock ## Solution Set `log_config=None` for all uvicorn servers. This prevents uvicorn from calling `dictConfig()` and avoids the deadlock entirely. **Trade-off**: Uvicorn will use its default logging configuration which may produce duplicate log entries (one from uvicorn, one from the app), but the application will start successfully without deadlocks. ## Changes - Set `log_config=None` in all uvicorn.Config() calls - Remove unused `generate_uvicorn_config` imports ## Testing - [x] Verified scheduler pods can start and become healthy - [x] Health checks respond properly - [x] No deadlocks during startup - [x] Application logs still appear (though may be duplicated) ## Related Issues - Fixes the startup deadlock introduced after #10634 |
||
|
|
34dd218a91 |
fix(backend): resolve CloudLoggingHandler deadlock causing scheduler hangs (#10634)
## 🚨 Critical Deadlock Fix: Scheduler Pod Stuck for 3+ Hours This PR resolves a critical production deadlock where scheduler pods become completely unresponsive due to a CloudLoggingHandler locking issue. ## 📋 Incident Summary **Affected Pod**: `autogpt-scheduler-server-6d7b89c4f9-mqp59` - **Duration**: Stuck for 3+ hours (still ongoing) - **Symptoms**: Health checks failing, appears completely dead - **Impact**: No new job executions, system appears down - **Root Cause**: CloudLoggingHandler deadlock with gRPC timeout failure ## 🔍 Detailed Incident Analysis ### The Deadlock Chain 1. **Thread 58 (APScheduler Worker)**: - Completed job successfully - Called `logger.info("Job executed successfully")` - CloudLoggingHandler acquired lock at `logging/__init__.py:976` - Made gRPC call to Google Cloud Logging - **Got stuck in TCP black hole for 3+ hours** 2. **Thread 26 (FastAPI Health Check)**: - Tried to log health check response - **Blocked at `logging/__init__.py:927` waiting for same lock** - Health check never completes → Kubernetes thinks pod is dead 3. **All Other Threads**: Similarly blocked on any logging attempt ### Why gRPC Timeout Failed The gRPC call had a 60-second timeout but has been stuck for 10,775+ seconds because: - **TCP Black Hole**: Network packets silently dropped (firewall/load balancer timeout) - **No Socket Timeout**: Python default is `None` (infinite wait) - **TCP Keepalive Disabled**: Dead connections hang forever - **Kernel-Level Block**: gRPC timeout can't interrupt `socket.recv()` syscall ### Evidence from Thread Dump ```python Thread 58: "ThreadPoolExecutor-0_1" _blocking (grpc/_channel.py:1162) timeout: 60 # ← Should have timed out deadline: 1755061203 # ← Expired 3 hours ago\! emit (logging_v2/handlers/handlers.py:225) # ← HOLDING LOCK handle (logging/__init__.py:978) # ← After acquire() Thread 26: "Thread-4 (__start_fastapi)" acquire (logging/__init__.py:927) # ← BLOCKED waiting for lock self: <CloudLoggingHandler at 0x7a657280d550> # ← Same instance\! ``` ## 🔧 The Fix ### Primary Solution Replace **blocking** `SyncTransport` with **non-blocking** `BackgroundThreadTransport`: ```python # BEFORE (Dangerous - blocks while holding lock) transport=SyncTransport, # AFTER (Safe - queues and returns immediately) transport=BackgroundThreadTransport, ``` ### Why BackgroundThreadTransport Solves It 1. **Non-blocking**: `emit()` returns immediately after queuing 2. **Lock Released**: No network I/O while holding the logging lock 3. **Isolated Failures**: Background thread hangs don't affect main app 4. **Better Performance**: Built-in batching and retry logic ### Additional Hardening - **Socket Timeout**: 30-second global timeout prevents infinite hangs - **gRPC Keepalive**: Detects and closes dead connections faster - **Comprehensive Logging**: Comments explain the deadlock prevention ## 🧪 Technical Validation ### Before (SyncTransport) ``` log.info("message") ↓ acquire_lock() ✅ ↓ gRPC_call() ❌ HANGS FOR HOURS ↓ [DEADLOCK - lock never released] ``` ### After (BackgroundThreadTransport) ``` log.info("message") ↓ acquire_lock() ✅ ↓ queue_message() ✅ Instant ↓ release_lock() ✅ Immediate ↓ [Background thread handles gRPC separately] ``` ## 🚀 Impact & Benefits **Immediate Impact**: - ✅ Prevents CloudLoggingHandler deadlocks - ✅ Health checks respond normally - ✅ System remains observable during network issues - ✅ Scheduler can continue processing jobs **Long-term Benefits**: - 📈 Better logging performance (batching + async) - 🛡️ Resilient to network partitions and timeouts - 🔍 Maintained observability during failures - ⚡ No blocking I/O on critical application threads ## 📊 Files Changed - `autogpt_libs/autogpt_libs/logging/config.py`: Transport change + socket hardening ## 🧪 Test Plan - [x] Validate BackgroundThreadTransport import works - [x] Confirm socket timeout configuration applies - [x] Verify gRPC keepalive environment variables set - [ ] Deploy to staging and verify no deadlocks under load - [ ] Monitor Cloud Logging delivery remains reliable ## 🔍 Monitoring After Deploy - Watch for any logging delivery delays (expected: minimal) - Confirm health checks respond consistently - Verify no more scheduler "hanging" incidents - Monitor gRPC connection patterns in Cloud Logging metrics ## 🎯 Risk Assessment - **Risk**: Very Low - BackgroundThreadTransport is the recommended approach - **Rollback**: Simple revert if any issues observed - **Testing**: Extensively used in production Google Cloud services --- **This fixes a critical production stability issue affecting scheduler reliability and system observability.** 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
a2059c6023 |
refactor(backend): consolidate LaunchDarkly feature flag management (#10632)
This PR consolidates LaunchDarkly feature flag management by moving it from autogpt_libs to backend and fixing several issues with boolean handling and configuration management. ### Changes 🏗️ **Code Structure:** - Move LaunchDarkly client from `autogpt_libs/feature_flag` to `backend/util/feature_flag.py` - Delete redundant `config.py` file and merge LaunchDarkly settings into `backend/util/settings.py` - Update all imports throughout the codebase to use `backend.util.feature_flag` - Move test file to `backend/util/feature_flag_test.py` **Bug Fixes:** - Fix `is_feature_enabled` function to properly return boolean values instead of arbitrary objects that were always evaluating to `True` - Add proper async/await handling for all `is_feature_enabled` calls - Add better error handling when LaunchDarkly client is not initialized **Performance & Architecture:** - Load Settings at module level instead of creating new instances inside functions - Remove unnecessary `sdk_key` parameter from `initialize_launchdarkly()` function - Simplify initialization by using centralized settings management **Configuration:** - Add `launch_darkly_sdk_key` field to `Secrets` class in settings.py with proper validation alias - Remove environment variable fallback in favor of centralized settings ### 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 existing feature flag tests pass (6/6 tests passing) - [x] LaunchDarkly initialization works correctly with settings - [x] Boolean feature flags return correct values instead of objects - [x] Non-boolean flag values are properly handled with warnings - [x] Async/await calls work correctly in AutoMod and activity status generator - [x] Code formatting and imports are correct #### 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**) **Configuration Changes:** - LaunchDarkly SDK key is now managed through the centralized Settings system instead of a separate config file - Uses existing `LAUNCH_DARKLY_SDK_KEY` environment variable (no changes needed to env files) 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
89eb5d1189 |
feat(feature-flag): add LaunchDarkly user context and metadata support (#10595)
## Summary Enable LaunchDarkly feature flags to use rich user context and metadata for advanced targeting, including user segments, account age, email domains, and custom attributes. This unlocks LaunchDarkly's powerful targeting capabilities beyond simple user ID checks. ## Problem LaunchDarkly feature flags were only receiving basic user IDs, preventing the use of: - **Segment-based targeting** (e.g., "employees", "beta users", "new accounts") - **Contextual rules** (e.g., account age, email domain, custom metadata) - **Advanced LaunchDarkly features** like percentage rollouts by user attributes This limited feature flag flexibility and required manual user ID management for targeting. ## Solution ### 🎯 **LaunchDarkly Context Enhancement** - **Rich user context**: Send user metadata, segments, account age, email domain to LaunchDarkly - **Automatic segmentation**: Users automatically categorized as "employee", "new_user", "established_user" etc. - **Custom metadata support**: Any user metadata becomes available for LaunchDarkly targeting - **24-hour caching**: Efficient user context retrieval with TTL cache to reduce database calls ### 📊 **User Context Data** ```python # Before: Only user ID context = Context.builder("user-123").build() # After: Full context with targeting data context = { "email": "user@agpt.co", "created_at": "2023-01-15T10:00:00Z", "segments": ["employee", "established_user"], "email_domain": "agpt.co", "account_age_days": 365, "custom_role": "admin" } ``` ### 🏗️ **Required Infrastructure Changes** To support proper LaunchDarkly serialization, we needed to implement clean application models: #### **Application-Layer User Model** - Created snake_case User model (`created_at`, `email_verified`) for proper JSON serialization - LaunchDarkly expects consistent field naming - camelCase Prisma objects caused validation errors - Added `User.from_db()` converter to safely transform database objects #### **HTTP Client Reliability** - Fixed HTTP 4xx retry issue that was causing unnecessary load - Added layer validation to prevent database objects leaking to external services #### **Type Safety** - Eliminated `Any` types and defensive coding patterns - Proper typing enables better IDE support and catches errors early ## Technical Implementation ### **Core LaunchDarkly Enhancement** ```python # autogpt_libs/feature_flag/client.py @async_ttl_cache(maxsize=1000, ttl_seconds=86400) # 24h cache async def _fetch_user_context_data(user_id: str) -> dict[str, Any]: user = await get_user_by_id(user_id) return _build_launchdarkly_context(user) def _build_launchdarkly_context(user: User) -> dict[str, Any]: return { "email": user.email, "created_at": user.created_at.isoformat(), # snake_case for serialization "segments": determine_user_segments(user), "account_age_days": calculate_account_age(user), # ... more context data } ``` ### **User Segmentation Logic** - **Role-based**: `admin`, `user`, `system` segments - **Domain-based**: `employee` for @agpt.co emails - **Account age**: `new_user` (<7 days), `recent_user` (7-30 days), `established_user` (>30 days) - **Custom metadata**: Any user metadata becomes available for targeting ### **Infrastructure Updates** - `backend/data/model.py`: Application User model with proper serialization - `backend/util/service.py`: HTTP client improvements and layer validation - Multiple files: Migration to use application models for consistency ## LaunchDarkly Usage Examples With this enhancement, you can now create LaunchDarkly rules like: ```yaml # Target employees only - variation: true targets: - values: ["employee"] contextKind: "user" attribute: "segments" # Target new users for gradual rollout - variation: true rollout: variations: - variation: true weight: 25000 # 25% of new users contextKind: "user" bucketBy: "segments" filters: - attribute: "segments" op: "contains" values: ["new_user"] ``` ## Performance & Caching - **24-hour TTL cache**: Dramatically reduces database calls for user context - **Graceful fallbacks**: Simple user ID context if database unavailable - **Efficient caching**: 1000 entry LRU cache with automatic TTL expiration ## Testing - [x] LaunchDarkly context includes all expected user attributes - [x] Segmentation logic correctly categorizes users - [x] 24-hour cache reduces database load - [x] Fallback to simple context works when database unavailable - [x] All existing feature flag functionality preserved - [x] HTTP retry improvements work correctly ## Breaking Changes ✅ **No external API changes** - all existing feature flag usage continues to work ⚠️ **Internal changes only**: - `get_user_by_id()` returns application User model instead of Prisma model - Test utilities need to import User from `backend.data.model` ## Impact 🎯 **Product Impact**: - **Advanced targeting**: Product teams can now use sophisticated LaunchDarkly rules - **Better user experience**: Gradual rollouts, A/B testing, and segment-based features - **Operational efficiency**: Reduced need for manual user ID management 🚀 **Performance Impact**: - **Reduced database load**: 24-hour caching minimizes repeated user context queries - **Improved reliability**: Fixed HTTP retry inefficiencies - **Better monitoring**: Cleaner logs without 4xx retry noise --- **Primary goal**: Enable rich LaunchDarkly targeting with user context and segments **Infrastructure changes**: Required for proper serialization and reliability 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
e60deba05f |
refactor(backend): separate notification service from scheduler (#10579)
## Summary - Create dedicated notification service entry point (backend.notification:main) - Remove NotificationManager from scheduler service for better separation of concerns - Update docker-compose to run notification service on dedicated port 8007 - Configure all services to communicate with separate notification service This refactoring separates the notification service from the scheduler service, allowing them to run as independent microservices instead of two processes in the same pod. ## Changes Made - **New notification service entry point**: Created `backend/backend/notification.py` with dedicated main function - **Updated pyproject.toml**: Added notification service entry point registration - **Modified scheduler service**: Removed NotificationManager from `backend/backend/scheduler.py` - **Docker Compose updates**: Added notification_server service on port 8007, updated NOTIFICATIONMANAGER_HOST references ## Test plan - [x] Verify notification service starts correctly with new entry point - [x] Confirm scheduler service runs without notification manager - [x] Test docker-compose configuration with separate services - [x] Validate service discovery between microservices - [x] Run linting and type checking 🤖 Generated with [Claude Code](https://claude.ai/code) |
||
|
|
e632549175 |
feat(backend): Add AI-generated activity status for agent executions (#10487)
## Summary - Adds AI-generated activity status summaries for agent execution results - Provides users with conversational, non-technical summaries of what their agents accomplished - Includes comprehensive execution data analysis with honest failure reporting ## Changes Made - **Backend**: Added `ActivityStatusGenerator` module with async LLM integration - **Database**: Extended `GraphExecutionStats` and `Stats` models with `activity_status` field - **Frontend**: Added "Smart Agent Execution Summary" display with disclaimer tooltip - **Settings**: Added `execution_enable_ai_activity_status` toggle (disabled by default) - **Testing**: Comprehensive test suite with 12 test cases covering all scenarios ## Key Features - Collects execution data including graph structure, node relations, errors, and I/O samples - Generates user-friendly summaries from first-person perspective - Honest reporting of failures and invalid inputs (no sugar-coating) - Payload optimization for LLM context limits - Full async implementation with proper error handling ## Test Plan - [x] All existing tests pass - [x] New comprehensive test suite covers success/failure scenarios - [x] Feature toggle testing (enabled/disabled states) - [x] Frontend integration displays correctly - [x] Error handling and edge cases covered 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
b9c7642cfc |
feat(backend): Introduce http client refresh on repeated error (#10481)
HTTP requests can fail when the DNS is messed up. Sometimes this kind of issue requires a client reset. ### Changes 🏗️ Introduce HTTP client refresh on repeated error ### 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 run, added tests |
||
|
|
03cf392f05 |
chore(backend/deps, libs/deps): Bump redis from 5.2.x to 6.2.0 (#10177)
Bumps [redis](https://github.com/redis/redis-py) from 5.2.1 to 6.2.0, for both `autogpt_libs` and `backend`. Also, additional fixes in `autogpt_libs/pyproject.toml`: - Move `redis` from dev dependencies to prod dependencies - Fix author info - Sort dependencies > [!NOTE] > Of course dependabot wouldn't do this on its own; this PR has been taken over and augmented by @Pwuts <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/redis/redis-py/releases">redis's releases</a>.</em></p> <blockquote> <h2>6.2.0</h2> <h1>Changes</h1> <h2>🚀 New Features</h2> <ul> <li>Add <code>dynamic_startup_nodes</code> parameter to async RedisCluster (<a href="https://redirect.github.com/redis/redis-py/issues/3646">#3646</a>)</li> <li>Support RESP3 with <code>hiredis-py</code> parser (<a href="https://redirect.github.com/redis/redis-py/issues/3648">#3648</a>)</li> <li>[Async] Support for transactions in async <code>RedisCluster</code> client (<a href="https://redirect.github.com/redis/redis-py/issues/3649">#3649</a>)</li> </ul> <h2>🐛 Bug Fixes</h2> <ul> <li>Revert wrongly changed default value for <code>check_hostname</code> when instantiating <code>RedisSSLContext</code> (<a href="https://redirect.github.com/redis/redis-py/issues/3655">#3655</a>)</li> <li>Fixed potential deadlock from unexpected <code>__del__</code> call (<a href="https://redirect.github.com/redis/redis-py/issues/3654">#3654</a>)</li> </ul> <h2>🧰 Maintenance</h2> <ul> <li>Update <code>search_json_examples.ipynb</code>: Fix the old import <code>indexDefinition</code> -> <code>index_definition</code> (<a href="https://redirect.github.com/redis/redis-py/issues/3652">#3652</a>)</li> <li>Remove mandatory update of the CHANGES file for new PRs. Changes file will be kept for history for versions < 4.0.0 (<a href="https://redirect.github.com/redis/redis-py/issues/3645">#3645</a>)</li> <li>Dropping <code>Python 3.8</code> support as it has reached end of life (<a href="https://redirect.github.com/redis/redis-py/issues/3657">#3657</a>)</li> <li>fix(doc): update Python print output in json doctests (<a href="https://redirect.github.com/redis/redis-py/issues/3658">#3658</a>)</li> <li>Update redis-entraid dependency (<a href="https://redirect.github.com/redis/redis-py/issues/3661">#3661</a>)</li> </ul> <h2></h2> <p>We'd like to thank all the contributors who worked on this release! <a href="https://github.com/JCornat"><code>@JCornat</code></a> <a href="https://github.com/ShubhamKaudewar"><code>@ShubhamKaudewar</code></a> <a href="https://github.com/uglide"><code>@uglide</code></a> <a href="https://github.com/petyaslavova"><code>@petyaslavova</code></a> <a href="https://github.com/vladvildanov"><code>@vladvildanov</code></a></p> <h2>v6.1.1</h2> <h1>Changes</h1> <h2>🐛 Bug Fixes</h2> <ul> <li>Revert wrongly changed default value for <code>check_hostname</code> when instantiating <code>RedisSSLContext</code> (<a href="https://redirect.github.com/redis/redis-py/issues/3655">#3655</a>)</li> <li>Fixed potential deadlock from unexpected <code>__del__</code> call (<a href="https://redirect.github.com/redis/redis-py/issues/3654">#3654</a>)</li> </ul> <h2></h2> <p>We'd like to thank all the contributors who worked on this release! <a href="https://github.com/vladvildanov"><code>@vladvildanov</code></a> <a href="https://github.com/petyaslavova"><code>@petyaslavova</code></a></p> <h2>6.1.0</h2> <h1>Changes</h1> <h2>🚀 New Features</h2> <ul> <li>Support for transactions in <code>RedisCluster</code> client (<a href="https://redirect.github.com/redis/redis-py/issues/3611">#3611</a>)</li> <li>Add equality and hashability to <code>Retry</code> and backoff classes (<a href="https://redirect.github.com/redis/redis-py/issues/3628">#3628</a>)</li> </ul> <h2>🐛 Bug Fixes</h2> <ul> <li>Fix RedisCluster <code>ssl_check_hostname</code> not set to connections. For SSL verification with <code>ssl_cert_reqs="none"</code>, check_hostname is set to <code>False</code> (<a href="https://redirect.github.com/redis/redis-py/issues/3637">#3637</a>) <strong>Important</strong>: The default value for the <code>check_hostname</code> field of <code>RedisSSLContext</code> has been changed as part of this PR - this is a breaking change and should not be introduced in minor versions - unfortunately, it is part of the current release. The breaking change is reverted in the next release to fix the behavior --> 6.2.0</li> <li>Prevent RuntimeError while reinitializing clusters - sync and async (<a href="https://redirect.github.com/redis/redis-py/issues/3633">#3633</a>)</li> <li>Add equality and hashability to <code>Retry</code> and backoff classes (<a href="https://redirect.github.com/redis/redis-py/issues/3628">#3628</a>) - fixes integration with Django RQ</li> <li>Fix <code>AttributeError</code> on <code>ClusterPipeline</code> (<a href="https://redirect.github.com/redis/redis-py/issues/3634">#3634</a>)</li> </ul> <h2>🧰 Maintenance</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
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>
|
||
|
|
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=" |
||
|
|
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=" |
||
|
|
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=" |
||
|
|
45c1ca1ca1 |
chore(libs/deps-dev): Bump ruff from 0.11.10 to 0.11.13 in /autogpt_platform/autogpt_libs in the development-dependencies group (#10178)
Bumps the development-dependencies group in /autogpt_platform/autogpt_libs with 1 update: [ruff](https://github.com/astral-sh/ruff). Updates `ruff` from 0.11.10 to 0.11.13 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.11.13</h2> <h2>Release Notes</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Add unsafe fix for module moved cases (<code>AIR301</code>,<code>AIR311</code>,<code>AIR312</code>,<code>AIR302</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18367">#18367</a>,<a href="https://redirect.github.com/astral-sh/ruff/pull/18366">#18366</a>,<a href="https://redirect.github.com/astral-sh/ruff/pull/18363">#18363</a>,<a href="https://redirect.github.com/astral-sh/ruff/pull/18093">#18093</a>)</li> <li>[<code>refurb</code>] Add coverage of <code>set</code> and <code>frozenset</code> calls (<code>FURB171</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18035">#18035</a>)</li> <li>[<code>refurb</code>] Mark <code>FURB180</code> fix unsafe when class has bases (<a href="https://redirect.github.com/astral-sh/ruff/pull/18149">#18149</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>perflint</code>] Fix missing parentheses for lambda and ternary conditions (<code>PERF401</code>, <code>PERF403</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18412">#18412</a>)</li> <li>[<code>pyupgrade</code>] Apply <code>UP035</code> only on py313+ for <code>get_type_hints()</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18476">#18476</a>)</li> <li>[<code>pyupgrade</code>] Make fix unsafe if it deletes comments (<code>UP004</code>,<code>UP050</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18393">#18393</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/18390">#18390</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>fastapi</code>] Avoid false positive for class dependencies (<code>FAST003</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18271">#18271</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Update editor setup docs for Neovim and Vim (<a href="https://redirect.github.com/astral-sh/ruff/pull/18324">#18324</a>)</li> </ul> <h3>Other changes</h3> <ul> <li>Support Python 3.14 template strings (t-strings) in formatter and parser (<a href="https://redirect.github.com/astral-sh/ruff/pull/17851">#17851</a>)</li> </ul> <h2>Contributors</h2> <ul> <li><a href="https://github.com/AlexWaygood"><code>@AlexWaygood</code></a></li> <li><a href="https://github.com/BurntSushi"><code>@BurntSushi</code></a></li> <li><a href="https://github.com/InSyncWithFoo"><code>@InSyncWithFoo</code></a></li> <li><a href="https://github.com/Lee-W"><code>@Lee-W</code></a></li> <li><a href="https://github.com/MatthewMckee4"><code>@MatthewMckee4</code></a></li> <li><a href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li> <li><a href="https://github.com/Viicos"><code>@Viicos</code></a></li> <li><a href="https://github.com/abhijeetbodas2001"><code>@abhijeetbodas2001</code></a></li> <li><a href="https://github.com/carljm"><code>@carljm</code></a></li> <li><a href="https://github.com/chirizxc"><code>@chirizxc</code></a></li> <li><a href="https://github.com/dcreager"><code>@dcreager</code></a></li> <li><a href="https://github.com/dhruvmanila"><code>@dhruvmanila</code></a></li> <li><a href="https://github.com/dylwil3"><code>@dylwil3</code></a></li> <li><a href="https://github.com/github-actions"><code>@github-actions</code></a></li> <li><a href="https://github.com/ibraheemdev"><code>@ibraheemdev</code></a></li> <li><a href="https://github.com/lipefree"><code>@lipefree</code></a></li> <li><a href="https://github.com/mtshiba"><code>@mtshiba</code></a></li> <li><a href="https://github.com/naslundx"><code>@naslundx</code></a></li> <li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li> <li><a href="https://github.com/otakutyrant"><code>@otakutyrant</code></a></li> <li><a href="https://github.com/renovate"><code>@renovate</code></a></li> <li><a href="https://github.com/robsdedude"><code>@robsdedude</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.11.13</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Add unsafe fix for module moved cases (<code>AIR301</code>,<code>AIR311</code>,<code>AIR312</code>,<code>AIR302</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18367">#18367</a>,<a href="https://redirect.github.com/astral-sh/ruff/pull/18366">#18366</a>,<a href="https://redirect.github.com/astral-sh/ruff/pull/18363">#18363</a>,<a href="https://redirect.github.com/astral-sh/ruff/pull/18093">#18093</a>)</li> <li>[<code>refurb</code>] Add coverage of <code>set</code> and <code>frozenset</code> calls (<code>FURB171</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18035">#18035</a>)</li> <li>[<code>refurb</code>] Mark <code>FURB180</code> fix unsafe when class has bases (<a href="https://redirect.github.com/astral-sh/ruff/pull/18149">#18149</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>perflint</code>] Fix missing parentheses for lambda and ternary conditions (<code>PERF401</code>, <code>PERF403</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18412">#18412</a>)</li> <li>[<code>pyupgrade</code>] Apply <code>UP035</code> only on py313+ for <code>get_type_hints()</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18476">#18476</a>)</li> <li>[<code>pyupgrade</code>] Make fix unsafe if it deletes comments (<code>UP004</code>,<code>UP050</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18393">#18393</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/18390">#18390</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>fastapi</code>] Avoid false positive for class dependencies (<code>FAST003</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18271">#18271</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Update editor setup docs for Neovim and Vim (<a href="https://redirect.github.com/astral-sh/ruff/pull/18324">#18324</a>)</li> </ul> <h3>Other changes</h3> <ul> <li>Support Python 3.14 template strings (t-strings) in formatter and parser (<a href="https://redirect.github.com/astral-sh/ruff/pull/17851">#17851</a>)</li> </ul> <h2>0.11.12</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Revise fix titles (<code>AIR3</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18215">#18215</a>)</li> <li>[<code>pylint</code>] Implement <code>missing-maxsplit-arg</code> (<code>PLC0207</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/17454">#17454</a>)</li> <li>[<code>pyupgrade</code>] New rule <code>UP050</code> (<code>useless-class-metaclass-type</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18334">#18334</a>)</li> <li>[<code>flake8-use-pathlib</code>] Replace <code>os.symlink</code> with <code>Path.symlink_to</code> (<code>PTH211</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18337">#18337</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-bugbear</code>] Ignore <code>__debug__</code> attribute in <code>B010</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18357">#18357</a>)</li> <li>[<code>flake8-async</code>] Fix <code>anyio.sleep</code> argument name (<code>ASYNC115</code>, <code>ASYNC116</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18262">#18262</a>)</li> <li>[<code>refurb</code>] Fix <code>FURB129</code> autofix generating invalid syntax (<a href="https://redirect.github.com/astral-sh/ruff/pull/18235">#18235</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-implicit-str-concat</code>] Add autofix for <code>ISC003</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18256">#18256</a>)</li> <li>[<code>pycodestyle</code>] Improve the diagnostic message for <code>E712</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/18328">#18328</a>)</li> <li>[<code>flake8-2020</code>] Fix diagnostic message for <code>!=</code> comparisons (<code>YTT201</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18293">#18293</a>)</li> <li>[<code>pyupgrade</code>] Make fix unsafe if it deletes comments (<code>UP010</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/18291">#18291</a>)</li> </ul> <h3>Documentation</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
97e72cb485 |
feat(backend): Make execution engine async-first (#10138)
This change introduced async execution for blocks and the execution engine. Paralellism will be achieved through a single process asynchronous execution instead of process concurrency. ### Changes 🏗️ * Support async execution for the graph executor * Removed process creation for node execution * Update all blocks to support async executions ### 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 graph executions, tested many of the impacted blocks. |
||
|
|
81d3eb7c34 |
feat(backend, frontend): make changes to use our security modules more effectively (#10123)
<!-- Clearly explain the need for these changes: --> Doing the CASA Audit and this is something to check ### Changes 🏗️ - limits APIs to use their specific endpoints - use expected trusted sources for each block and requests call - Use cryptographically valid string comparisons - Don't log secrets <!-- 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] Testing in dev branch once merged --------- Co-authored-by: Swifty <craigswift13@gmail.com> |
||
|
|
45578136e3 |
feat(frontend): Page-specific titles (#9995)
- Resolves #8656 Instead of "NextGen AutoGPT", make page titles like "My Test Agent - Library - AutoGPT Platform", "Settings - AutoGPT Platform", "Builder - AutoGPT Platform". ### Changes 🏗️ - Add specific page titles to `/library`, `/library/agents/[id]`, `/build`, `/profile`, `/profile/api_keys` - Fix page titles on `/marketplace`, `/profile/settings` ### 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] Go to `/marketplace` and check the page title - [x] Go to `/library` and check the page title - [x] Go to `/library/agents/[id]` and check the page title - [x] Go to `/build` and check the page title - [x] Go to `/profile` and check the page title - [x] Go to `/profile/settings` and check the page title - [x] Go to `/profile/api_keys` and check the page title - [ ] ~~Go to `/profile/dashboard` and check the page title~~ - [ ] ~~Go to `/profile/integrations` and check the page title~~ - [ ] ~~Go to `/profile/credits` and check the page title~~ |
||
|
|
d754c2349c |
chore(libs/deps-dev): Update ruff from 0.11.2 to 0.11.10 (#9775)
Bumps the development-dependencies group in /autogpt_platform/autogpt_libs with 1 update: [ruff](https://github.com/astral-sh/ruff). Updates `ruff` from 0.11.2 to 0.11.10 [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) You can trigger a rebase of this PR 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> > **Note** > Automatic rebases have been disabled on this pull request as it has been open for over 30 days. Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
ba91c9f736 |
chore(libs/deps): Update 4 dependencies (#9908)
Bumps the production-dependencies group with 4 updates in the /autogpt_platform/autogpt_libs directory: [google-cloud-logging](https://github.com/googleapis/python-logging), [pydantic](https://github.com/pydantic/pydantic), [pydantic-settings](https://github.com/pydantic/pydantic-settings) and [supabase](https://github.com/supabase/supabase-py). Updates `google-cloud-logging` from 3.11.4 to 3.12.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/googleapis/python-logging/releases">google-cloud-logging's releases</a>.</em></p> <blockquote> <h2>v3.12.1</h2> <h2><a href="https://github.com/googleapis/python-logging/compare/v3.12.0...v3.12.1">3.12.1</a> (2025-04-21)</h2> <h3>Bug Fixes</h3> <ul> <li>Make logging handler close conditional to having the transport opened (<a href="https://redirect.github.com/googleapis/python-logging/issues/990">#990</a>) (<a href=" |
||
|
|
e5368f3857 |
fix: Resolve logger.warn(..) deprecration warnings (#9938)
This small PR resolves the deprecation warnings of the `logger` library: ``` DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead ``` |
||
|
|
ef022720d5 |
fix(backend): Avoid releasing lock that is no longer owned by the current thread (#9878)
There are instances of node executions that were failed and end up stuck in the RUNNING status due to the execution failed to release the lock: ``` 2025-04-24 20:53:31,573 INFO [ExecutionManager|uid:25eba2d1-e9c1-44bc-88c7-43e0f4fbad5a|gid:01f8c315-c163-4dd1-a8a0-d396477c5a9f|nid:f8bf84ae-b1f0-4434-8f04-80f43852bc30]|geid:2e1b35c6-0d2f-4e97-adea-f6fe0d9965d0|neid:590b29ea-63ee-4e24-a429-de5a3e191e72|-] Failed node execution 590b29ea-63ee-4e24-a429-de5a3e191e72: Cannot release a lock that's no longer owned ``` ### Changes 🏗️ Check the ownership of the lock before releasing. ### 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] Existing CI tests. |
||
|
|
9052ee7b95 | fix(backend): Clear RabbitMQ connection cache on execution-manager retry | ||
|
|
e3846c22bd |
fix(backend): Avoid multithreaded pika access (#9832)
### Changes 🏗️ Avoid other threads accessing the channel within the same 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] Manual agent runs |
||
|
|
71cdc18674 |
fix(backend): Fix cancel_execution can only work once (#9825)
### Changes 🏗️ The recent change to the execution cancelation fix turns out to only work on the first request. This PR change fixes it by reworking how the thread_cached work on async functions. ### 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] Cancel agent executions multiple times |
||
|
|
3771a0924c |
fix(backend): Update deprecated code caused by upgrades (#9758)
This series of upgrades: https://github.com/significant-gravitas/autogpt/pull/9727 https://github.com/Significant-Gravitas/AutoGPT/pull/9728 https://github.com/Significant-Gravitas/AutoGPT/pull/9560 Caused some code in the repo being deprecated, this PR addresses those. ### Changes 🏗️ Fix pydantic config, usage of field, usage of proper prisma `CreateInput` type, pytest loop-scope. ### 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, manual test on running some agents. --------- Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> |
||
|
|
7179f9cea0 |
feat(backend, libs): Tell uvicorn to use our logger + always log to stdout+stderr (#9742)
<!-- Clearly explain the need for these changes: --> Uvicorn and our logs were ending up in different places, this pr enures uvicorn using our logging config, not their own. ### Changes 🏗️ - Clears uvicorn's loggers for rest, ws - always log to stdout,stderr and additionally log to gcp is appropriate <!-- 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 all possible variants of the log cloud vs not and ensure that uvicorn logs show up in the same place that rest of the system logs do for all --------- Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co> |
||
|
|
05af4a24ce |
chore(libs/deps): bump the production-dependencies group across 1 directory with 4 updates (#9727)
Bumps the production-dependencies group with 4 updates in the /autogpt_platform/autogpt_libs directory: [pydantic](https://github.com/pydantic/pydantic), [pydantic-settings](https://github.com/pydantic/pydantic-settings), [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) and [supabase](https://github.com/supabase/supabase-py). Updates `pydantic` from 2.10.6 to 2.11.1 <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.1 2025-03-28</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <h3>Fixes</h3> <ul> <li>Do not override <code>'definitions-ref'</code> schemas containing serialization schemas or metadata by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11644">pydantic/pydantic#11644</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/pydantic/pydantic/compare/v2.11.0...v2.11.1">https://github.com/pydantic/pydantic/compare/v2.11.0...v2.11.1</a></p> <h2>v2.11.0 2025-03-27</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <h3>Packaging</h3> <ul> <li>Re-enable memray related tests on Python 3.12+ by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11191">pydantic/pydantic#11191</a></li> <li>Bump astral-sh/setup-uv from 4 to 5 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11205">pydantic/pydantic#11205</a></li> <li>Add a <code>check_pydantic_core_version()</code> function by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11324">pydantic/pydantic#11324</a></li> <li>Remove <code>greenlet</code> development dependency by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11351">pydantic/pydantic#11351</a></li> <li>Bump ruff from 0.9.2 to 0.9.5 by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11407">pydantic/pydantic#11407</a></li> <li>Improve release automation process by <a href="https://github.com/austinyu"><code>@austinyu</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11427">pydantic/pydantic#11427</a></li> <li>Bump dawidd6/action-download-artifact from 8 to 9 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11513">pydantic/pydantic#11513</a></li> <li>Bump <code>pydantic-core</code> to v2.32.0 by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11567">pydantic/pydantic#11567</a></li> </ul> <h3>New Features</h3> <ul> <li>Support unsubstituted type variables with both a default and a bound or constraints by <a href="https://github.com/FyZzyss"><code>@FyZzyss</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10789">pydantic/pydantic#10789</a></li> <li>Add a <code>default_factory_takes_validated_data</code> property to <code>FieldInfo</code> by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11034">pydantic/pydantic#11034</a></li> <li>Raise a better error when a generic alias is used inside <code>type[]</code> by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11088">pydantic/pydantic#11088</a></li> <li>Properly support PEP 695 generics syntax by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11189">pydantic/pydantic#11189</a></li> <li>Properly support type variable defaults by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11332">pydantic/pydantic#11332</a></li> <li>Add support for validating v6, v7, v8 UUIDs by <a href="https://github.com/astei"><code>@astei</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11436">pydantic/pydantic#11436</a></li> <li>Improve alias configuration APIs by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11468">pydantic/pydantic#11468</a></li> <li>Add experimental support for free threading by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11516">pydantic/pydantic#11516</a></li> <li>Add <code>encoded_string()</code> method to the URL types by <a href="https://github.com/YassinNouh21"><code>@YassinNouh21</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11580">pydantic/pydantic#11580</a></li> <li>Add support for <code>defer_build</code> with <code>@validate_call</code> decorator by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11584">pydantic/pydantic#11584</a></li> <li>Allow <code>@with_config</code> decorator to be used with keyword arguments by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11608">pydantic/pydantic#11608</a></li> <li>Simplify customization of default value inclusion in JSON Schema generation by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11634">pydantic/pydantic#11634</a></li> <li>Add <code>generate_arguments_schema()</code> function by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11572">pydantic/pydantic#11572</a></li> </ul> <h3>Changes</h3> <ul> <li>Rework <code>create_model</code> field definitions format by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11032">pydantic/pydantic#11032</a></li> <li>Raise a deprecation warning when a field is annotated as final with a default value by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11168">pydantic/pydantic#11168</a></li> <li>Deprecate accessing <code>model_fields</code> and <code>model_computed_fields</code> on instances by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11169">pydantic/pydantic#11169</a></li> <li>Move core schema generation logic for path types inside the <code>GenerateSchema</code> class by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10846">pydantic/pydantic#10846</a></li> <li>Move <code>Mapping</code> schema gen to <code>GenerateSchema</code> to complete removal of <code>prepare_annotations_for_known_type</code> workaround by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11247">pydantic/pydantic#11247</a></li> <li>Remove Python 3.8 Support by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11258">pydantic/pydantic#11258</a></li> <li>Optimize calls to <code>get_type_ref</code> by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10863">pydantic/pydantic#10863</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </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.1 (2025-03-28)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.11.1">GitHub release</a></p> <h3>What's Changed</h3> <h4>Fixes</h4> <ul> <li>Do not override <code>'definitions-ref'</code> schemas containing serialization schemas or metadata by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11644">#11644</a></li> </ul> <h2>v2.11.0 (2025-03-27)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.11.0">GitHub release</a></p> <h3>What's Changed</h3> <p>Pydantic v2.11 is a version strongly focused on build time performance of Pydantic models (and core schema generation in general). See the <a href="https://pydantic.dev/articles/pydantic-v2-11-release">blog post</a> for more details.</p> <h4>Packaging</h4> <ul> <li>Bump <code>pydantic-core</code> to v2.33.0 by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11631">#11631</a></li> </ul> <h4>New Features</h4> <ul> <li>Add <code>encoded_string()</code> method to the URL types by <a href="https://github.com/YassinNouh21"><code>@YassinNouh21</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11580">#11580</a></li> <li>Add support for <code>defer_build</code> with <code>@validate_call</code> decorator by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11584">#11584</a></li> <li>Allow <code>@with_config</code> decorator to be used with keyword arguments by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11608">#11608</a></li> <li>Simplify customization of default value inclusion in JSON Schema generation by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11634">#11634</a></li> <li>Add <code>generate_arguments_schema()</code> function by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11572">#11572</a></li> </ul> <h4>Fixes</h4> <ul> <li>Allow generic typed dictionaries to be used for unpacked variadic keyword parameters by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11571">#11571</a></li> <li>Fix runtime error when computing model string representation involving cached properties and self-referenced models by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11579">#11579</a></li> <li>Preserve other steps when using the ellipsis in the pipeline API by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11626">#11626</a></li> <li>Fix deferred discriminator application logic by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11591">#11591</a></li> </ul> <h3>New Contributors</h3> <ul> <li><a href="https://github.com/cmenon12"><code>@cmenon12</code></a> made their first contribution in <a href="https://redirect.github.com/pydantic/pydantic/pull/11562">#11562</a></li> <li><a href="https://github.com/Jeukoh"><code>@Jeukoh</code></a> made their first contribution in <a href="https://redirect.github.com/pydantic/pydantic/pull/11611">#11611</a></li> </ul> <h2>v2.11.0b2 (2025-03-17)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.11.0b2">GitHub release</a></p> <h3>What's Changed</h3> <h4>Packaging</h4> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
babcb41f43 |
refactor(libs): Remove print statements (#9718)
Remove the debug print statements in the logging module. Every time an app process is started, it prints: ``` Console logging enabled ``` or similar, depending on the logging config. |
||
|
|
abcacacc06 | fix(ci): Update lockfiles | ||
|
|
1162ec1474 |
refactor(backend): Reorganize & clean up execution update system (#9663)
- Prep work for #8782 - Prep work for #8779 ### Changes 🏗️ - refactor(platform): Differentiate graph/node execution events - fix(platform): Subscribe to execution updates by `graph_exec_id` instead of `graph_id`+`graph_version` - refactor(backend): Move all execution related models and functions from `.data.graph` to `.data.execution` - refactor(backend): Reorganize & refactor `.data.execution` - fix(libs): Remove `load_dotenv` in `.auth.config` to fix test config issues - dx: Bump version of `black` in pre-commit config to v24.10.0 to match poetry.lock - Other minor refactoring in both frontend and backend ### 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: - Run an agent in the builder - [x] -> works normally, node I/O is updated in real time - Run an agent in the library - [x] -> works normally --------- Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co> |
||
|
|
e0300f3d13 |
chore(libs/deps-dev): bump ruff from 0.9.6 to 0.9.9 in /autogpt_platform/autogpt_libs in the development-dependencies group (#9559)
Bumps the development-dependencies group in /autogpt_platform/autogpt_libs with 1 update: [ruff](https://github.com/astral-sh/ruff). Updates `ruff` from 0.9.6 to 0.9.9 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.9.9</h2> <h2>Release Notes</h2> <h3>Preview features</h3> <ul> <li>Fix caching of unsupported-syntax errors (<a href="https://redirect.github.com/astral-sh/ruff/pull/16425">#16425</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>Only show unsupported-syntax errors in editors when preview mode is enabled (<a href="https://redirect.github.com/astral-sh/ruff/pull/16429">#16429</a>)</li> </ul> <h2>Contributors</h2> <ul> <li><a href="https://github.com/InSyncWithFoo"><code>@InSyncWithFoo</code></a></li> <li><a href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li> <li><a href="https://github.com/dhruvmanila"><code>@dhruvmanila</code></a></li> <li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li> </ul> <h2>Install ruff 0.9.9</h2> <h3>Install prebuilt binaries via shell script</h3> <pre lang="sh"><code>curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-installer.sh | sh </code></pre> <h3>Install prebuilt binaries via powershell script</h3> <pre lang="sh"><code>powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-installer.ps1 | iex" </code></pre> <h2>Download ruff 0.9.9</h2> <table> <thead> <tr> <th>File</th> <th>Platform</th> <th>Checksum</th> </tr> </thead> <tbody> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-aarch64-apple-darwin.tar.gz">ruff-aarch64-apple-darwin.tar.gz</a></td> <td>Apple Silicon macOS</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-aarch64-apple-darwin.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-x86_64-apple-darwin.tar.gz">ruff-x86_64-apple-darwin.tar.gz</a></td> <td>Intel macOS</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-x86_64-apple-darwin.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-aarch64-pc-windows-msvc.zip">ruff-aarch64-pc-windows-msvc.zip</a></td> <td>ARM64 Windows</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-aarch64-pc-windows-msvc.zip.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-i686-pc-windows-msvc.zip">ruff-i686-pc-windows-msvc.zip</a></td> <td>x86 Windows</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-i686-pc-windows-msvc.zip.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-x86_64-pc-windows-msvc.zip">ruff-x86_64-pc-windows-msvc.zip</a></td> <td>x64 Windows</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-x86_64-pc-windows-msvc.zip.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-aarch64-unknown-linux-gnu.tar.gz">ruff-aarch64-unknown-linux-gnu.tar.gz</a></td> <td>ARM64 Linux</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-aarch64-unknown-linux-gnu.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-i686-unknown-linux-gnu.tar.gz">ruff-i686-unknown-linux-gnu.tar.gz</a></td> <td>x86 Linux</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-i686-unknown-linux-gnu.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-powerpc64-unknown-linux-gnu.tar.gz">ruff-powerpc64-unknown-linux-gnu.tar.gz</a></td> <td>PPC64 Linux</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-powerpc64-unknown-linux-gnu.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-powerpc64le-unknown-linux-gnu.tar.gz">ruff-powerpc64le-unknown-linux-gnu.tar.gz</a></td> <td>PPC64LE Linux</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-powerpc64le-unknown-linux-gnu.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-s390x-unknown-linux-gnu.tar.gz">ruff-s390x-unknown-linux-gnu.tar.gz</a></td> <td>S390x Linux</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-s390x-unknown-linux-gnu.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-x86_64-unknown-linux-gnu.tar.gz">ruff-x86_64-unknown-linux-gnu.tar.gz</a></td> <td>x64 Linux</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-x86_64-unknown-linux-gnu.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-armv7-unknown-linux-gnueabihf.tar.gz">ruff-armv7-unknown-linux-gnueabihf.tar.gz</a></td> <td>ARMv7 Linux</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-armv7-unknown-linux-gnueabihf.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-aarch64-unknown-linux-musl.tar.gz">ruff-aarch64-unknown-linux-musl.tar.gz</a></td> <td>ARM64 MUSL Linux</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.9.9/ruff-aarch64-unknown-linux-musl.tar.gz.sha256">checksum</a></td> </tr> </tbody> </table> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.9.9</h2> <h3>Preview features</h3> <ul> <li>Fix caching of unsupported-syntax errors (<a href="https://redirect.github.com/astral-sh/ruff/pull/16425">#16425</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>Only show unsupported-syntax errors in editors when preview mode is enabled (<a href="https://redirect.github.com/astral-sh/ruff/pull/16429">#16429</a>)</li> </ul> <h2>0.9.8</h2> <h3>Preview features</h3> <ul> <li>Start detecting version-related syntax errors in the parser (<a href="https://redirect.github.com/astral-sh/ruff/pull/16090">#16090</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>pylint</code>] Mark fix unsafe (<code>PLW1507</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16343">#16343</a>)</li> <li>[<code>pylint</code>] Catch <code>case np.nan</code>/<code>case math.nan</code> in <code>match</code> statements (<code>PLW0177</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16378">#16378</a>)</li> <li>[<code>ruff</code>] Add more Pydantic models variants to the list of default copy semantics (<code>RUF012</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16291">#16291</a>)</li> </ul> <h3>Server</h3> <ul> <li>Avoid indexing the project if <code>configurationPreference</code> is <code>editorOnly</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16381">#16381</a>)</li> <li>Avoid unnecessary info at non-trace server log level (<a href="https://redirect.github.com/astral-sh/ruff/pull/16389">#16389</a>)</li> <li>Expand <code>ruff.configuration</code> to allow inline config (<a href="https://redirect.github.com/astral-sh/ruff/pull/16296">#16296</a>)</li> <li>Notify users for invalid client settings (<a href="https://redirect.github.com/astral-sh/ruff/pull/16361">#16361</a>)</li> </ul> <h3>Configuration</h3> <ul> <li>Add <code>per-file-target-version</code> option (<a href="https://redirect.github.com/astral-sh/ruff/pull/16257">#16257</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>refurb</code>] Do not consider docstring(s) (<code>FURB156</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16391">#16391</a>)</li> <li>[<code>flake8-self</code>] Ignore attribute accesses on instance-like variables (<code>SLF001</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16149">#16149</a>)</li> <li>[<code>pylint</code>] Fix false positives, add missing methods, and support positional-only parameters (<code>PLE0302</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16263">#16263</a>)</li> <li>[<code>flake8-pyi</code>] Mark <code>PYI030</code> fix unsafe when comments are deleted (<a href="https://redirect.github.com/astral-sh/ruff/pull/16322">#16322</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Fix example for <code>S611</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16316">#16316</a>)</li> <li>Normalize inconsistent markdown headings in docstrings (<a href="https://redirect.github.com/astral-sh/ruff/pull/16364">#16364</a>)</li> <li>Document MSRV policy (<a href="https://redirect.github.com/astral-sh/ruff/pull/16384">#16384</a>)</li> </ul> <h2>0.9.7</h2> <h3>Preview features</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
af8ea93260 |
feat(backend): handle bounced emails from postmark (#9506)
<!-- Clearly explain the need for these changes: --> If we bounce too many emails from Postmark, they will be really upset with us, which is not so good. We need a way to react when we bounce emails, so we set it up so they notify us via webhooks. We also need to build authentication into those webhooks to prevent random people from sending us fake webhooks. All this together means we need a new route for the inbound webhook. To do this, we need a way to track if the email address is valid. So, after chatting with @itsababseh, we are adding a validated email field that defaults to `True` because all the users are already validated in prod. In dev, we may suffer. ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - Adds special API Key auth handler to the libs so that we can easily test stuff on the /docs endpoint and re-use it if needed - Adds New Secret for this API key from postmark - Adds a validatedEmail boolean to the`User` table - Adds a postmark endpoint to the routers list for handling the inbound webhook from Postmark - "Handle" all the various things this endpoint could send us (most of them we do nothing about) ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [x] Sign up with john@example.com email (the one postmark uses in webhooks) - [x] Set email validation to true - [x] Send the bounce webhook notice - [x] Check it gets set to false #### For configuration changes: - [x] `.env.example` is updated or already compatible with my changes - [x] `docker-compose.yml` is updated or already compatible with my changes - [x] I have included a list of my configuration changes in the PR description (under **Changes**) |
||
|
|
a694cf1e9d |
chore(libs/deps-dev): bump ruff from 0.9.3 to 0.9.6 in /autogpt_platform/autogpt_libs in the development-dependencies group across 1 directory (#9454)
Bumps the development-dependencies group with 1 update in the /autogpt_platform/autogpt_libs directory: [ruff](https://github.com/astral-sh/ruff). Updates `ruff` from 0.9.3 to 0.9.6 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.9.6</h2> <h2>Release Notes</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Add <code>external_task.{ExternalTaskMarker, ExternalTaskSensor}</code> for <code>AIR302</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16014">#16014</a>)</li> <li>[<code>flake8-builtins</code>] Make strict module name comparison optional (<code>A005</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15951">#15951</a>)</li> <li>[<code>flake8-pyi</code>] Extend fix to Python <= 3.9 for <code>redundant-none-literal</code> (<code>PYI061</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16044">#16044</a>)</li> <li>[<code>pylint</code>] Also report when the object isn't a literal (<code>PLE1310</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15985">#15985</a>)</li> <li>[<code>ruff</code>] Implement <code>indented-form-feed</code> (<code>RUF054</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16049">#16049</a>)</li> <li>[<code>ruff</code>] Skip type definitions for <code>missing-f-string-syntax</code> (<code>RUF027</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16054">#16054</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-annotations</code>] Correct syntax for <code>typing.Union</code> in suggested return type fixes for <code>ANN20x</code> rules (<a href="https://redirect.github.com/astral-sh/ruff/pull/16025">#16025</a>)</li> <li>[<code>flake8-builtins</code>] Match upstream module name comparison (<code>A005</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16006">#16006</a>)</li> <li>[<code>flake8-comprehensions</code>] Detect overshadowed <code>list</code>/<code>set</code>/<code>dict</code>, ignore variadics and named expressions (<code>C417</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15955">#15955</a>)</li> <li>[<code>flake8-pie</code>] Remove following comma correctly when the unpacked dictionary is empty (<code>PIE800</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16008">#16008</a>)</li> <li>[<code>flake8-simplify</code>] Only trigger <code>SIM401</code> on known dictionaries (<a href="https://redirect.github.com/astral-sh/ruff/pull/15995">#15995</a>)</li> <li>[<code>pylint</code>] Do not report calls when object type and argument type mismatch, remove custom escape handling logic (<code>PLE1310</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15984">#15984</a>)</li> <li>[<code>pyupgrade</code>] Comments within parenthesized value ranges should not affect applicability (<code>UP040</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16027">#16027</a>)</li> <li>[<code>pyupgrade</code>] Don't introduce invalid syntax when upgrading old-style type aliases with parenthesized multiline values (<code>UP040</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16026">#16026</a>)</li> <li>[<code>pyupgrade</code>] Ensure we do not rename two type parameters to the same name (<code>UP049</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16038">#16038</a>)</li> <li>[<code>pyupgrade</code>] [<code>ruff</code>] Don't apply renamings if the new name is shadowed in a scope of one of the references to the binding (<code>UP049</code>, <code>RUF052</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16032">#16032</a>)</li> <li>[<code>ruff</code>] Update <code>RUF009</code> to behave similar to <code>B008</code> and ignore attributes with immutable types (<a href="https://redirect.github.com/astral-sh/ruff/pull/16048">#16048</a>)</li> </ul> <h3>Server</h3> <ul> <li>Root exclusions in the server to project root (<a href="https://redirect.github.com/astral-sh/ruff/pull/16043">#16043</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-datetime</code>] Ignore <code>.replace()</code> calls while looking for <code>.astimezone</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16050">#16050</a>)</li> <li>[<code>flake8-type-checking</code>] Avoid <code>TC004</code> false positive where the runtime definition is provided by <code>__getattr__</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16052">#16052</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Improve <code>ruff-lsp</code> migration document (<a href="https://redirect.github.com/astral-sh/ruff/pull/16072">#16072</a>)</li> <li>Undeprecate <code>ruff.nativeServer</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16039">#16039</a>)</li> </ul> <h2>Contributors</h2> <ul> <li><a href="https://github.com/AlexWaygood"><code>@AlexWaygood</code></a></li> <li><a href="https://github.com/Daverball"><code>@Daverball</code></a></li> <li><a href="https://github.com/InSyncWithFoo"><code>@InSyncWithFoo</code></a></li> <li><a href="https://github.com/Lee-W"><code>@Lee-W</code></a></li> <li><a href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li> <li><a href="https://github.com/carlosgmartin"><code>@carlosgmartin</code></a></li> <li><a href="https://github.com/dhruvmanila"><code>@dhruvmanila</code></a></li> <li><a href="https://github.com/dylwil3"><code>@dylwil3</code></a></li> <li><a href="https://github.com/junhsonjb"><code>@junhsonjb</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.9.6</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Add <code>external_task.{ExternalTaskMarker, ExternalTaskSensor}</code> for <code>AIR302</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16014">#16014</a>)</li> <li>[<code>flake8-builtins</code>] Make strict module name comparison optional (<code>A005</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15951">#15951</a>)</li> <li>[<code>flake8-pyi</code>] Extend fix to Python <= 3.9 for <code>redundant-none-literal</code> (<code>PYI061</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16044">#16044</a>)</li> <li>[<code>pylint</code>] Also report when the object isn't a literal (<code>PLE1310</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15985">#15985</a>)</li> <li>[<code>ruff</code>] Implement <code>indented-form-feed</code> (<code>RUF054</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16049">#16049</a>)</li> <li>[<code>ruff</code>] Skip type definitions for <code>missing-f-string-syntax</code> (<code>RUF027</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16054">#16054</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-annotations</code>] Correct syntax for <code>typing.Union</code> in suggested return type fixes for <code>ANN20x</code> rules (<a href="https://redirect.github.com/astral-sh/ruff/pull/16025">#16025</a>)</li> <li>[<code>flake8-builtins</code>] Match upstream module name comparison (<code>A005</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16006">#16006</a>)</li> <li>[<code>flake8-comprehensions</code>] Detect overshadowed <code>list</code>/<code>set</code>/<code>dict</code>, ignore variadics and named expressions (<code>C417</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15955">#15955</a>)</li> <li>[<code>flake8-pie</code>] Remove following comma correctly when the unpacked dictionary is empty (<code>PIE800</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16008">#16008</a>)</li> <li>[<code>flake8-simplify</code>] Only trigger <code>SIM401</code> on known dictionaries (<a href="https://redirect.github.com/astral-sh/ruff/pull/15995">#15995</a>)</li> <li>[<code>pylint</code>] Do not report calls when object type and argument type mismatch, remove custom escape handling logic (<code>PLE1310</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15984">#15984</a>)</li> <li>[<code>pyupgrade</code>] Comments within parenthesized value ranges should not affect applicability (<code>UP040</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16027">#16027</a>)</li> <li>[<code>pyupgrade</code>] Don't introduce invalid syntax when upgrading old-style type aliases with parenthesized multiline values (<code>UP040</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16026">#16026</a>)</li> <li>[<code>pyupgrade</code>] Ensure we do not rename two type parameters to the same name (<code>UP049</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16038">#16038</a>)</li> <li>[<code>pyupgrade</code>] [<code>ruff</code>] Don't apply renamings if the new name is shadowed in a scope of one of the references to the binding (<code>UP049</code>, <code>RUF052</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16032">#16032</a>)</li> <li>[<code>ruff</code>] Update <code>RUF009</code> to behave similar to <code>B008</code> and ignore attributes with immutable types (<a href="https://redirect.github.com/astral-sh/ruff/pull/16048">#16048</a>)</li> </ul> <h3>Server</h3> <ul> <li>Root exclusions in the server to project root (<a href="https://redirect.github.com/astral-sh/ruff/pull/16043">#16043</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-datetime</code>] Ignore <code>.replace()</code> calls while looking for <code>.astimezone</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16050">#16050</a>)</li> <li>[<code>flake8-type-checking</code>] Avoid <code>TC004</code> false positive where the runtime definition is provided by <code>__getattr__</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16052">#16052</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Improve <code>ruff-lsp</code> migration document (<a href="https://redirect.github.com/astral-sh/ruff/pull/16072">#16072</a>)</li> <li>Undeprecate <code>ruff.nativeServer</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/16039">#16039</a>)</li> </ul> <h2>0.9.5</h2> <h3>Preview features</h3> <ul> <li>Recognize all symbols named <code>TYPE_CHECKING</code> for <code>in_type_checking_block</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/15719">#15719</a>)</li> <li>[<code>flake8-comprehensions</code>] Handle builtins at top of file correctly for <code>unnecessary-dict-comprehension-for-iterable</code> (<code>C420</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15837">#15837</a>)</li> <li>[<code>flake8-logging</code>] <code>.exception()</code> and <code>exc_info=</code> outside exception handlers (<code>LOG004</code>, <code>LOG014</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15799">#15799</a>)</li> <li>[<code>flake8-pyi</code>] Fix incorrect behaviour of <code>custom-typevar-return-type</code> preview-mode autofix if <code>typing</code> was already imported (<code>PYI019</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15853">#15853</a>)</li> <li>[<code>flake8-pyi</code>] Fix more complex cases (<code>PYI019</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15821">#15821</a>)</li> <li>[<code>flake8-pyi</code>] Make <code>PYI019</code> autofixable for <code>.py</code> files in preview mode as well as stubs (<a href="https://redirect.github.com/astral-sh/ruff/pull/15889">#15889</a>)</li> <li>[<code>flake8-pyi</code>] Remove type parameter correctly when it is the last (<code>PYI019</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15854">#15854</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
296eee0b4f |
feat(platform/library): Library v2 > Agent Runs page (#9051)
- Resolves #8780 - Part of #8774 ### Changes 🏗️ - Add new UI components - Add `/agents/[id]` page, with sub-components: - `AgentRunsSelectorList` - `AgentRunSummaryCard` - `AgentRunStatusChip` - `AgentRunDetailsView` - `AgentRunDraftView` - `AgentScheduleDetailsView` Backend improvements: - Improve output of execution-related API endpoints: return `GraphExecution` instead of `NodeExecutionResult[]` - Reduce log spam from Prisma in tests General frontend improvements: - Hide nav link names on smaller screens to prevent navbar overflow - Clean up styling and fix sizing of `agptui/Button` Technical frontend improvements: - Fix tailwind config size increments - Rename `font-poppin` -> `font-poppins` - Clean up component implementations and usages - Yeet all occurrences of `variant="default"` - Remove `default` button variant as duplicate of `outline`; make `outline` the default - Fix minor typing issues DX: - Add front end type-check step to `pre-commit` config - Fix logging setup in conftest.py ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - `/agents/[id]` (new) - Go to page -> list of runs loads - Create new run -> runs; all I/O is visible - Click "Run again" -> runs again with same input - `/monitoring` (existing) - Go to page -> everything loads - Selecting agents and agent runs works --------- Co-authored-by: Nicholas Tindle <nicktindle@outlook.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> Co-authored-by: Swifty <craigswift13@gmail.com> Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co> |
||
|
|
4b76aae1c9 |
chore(libs/deps): bump the production-dependencies group across 1 directory with 4 updates (#9432)
Bumps the production-dependencies group with 4 updates in the /autogpt_platform/autogpt_libs directory: [google-cloud-logging](https://github.com/googleapis/python-logging), [pydantic](https://github.com/pydantic/pydantic), [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) and [supabase](https://github.com/supabase/supabase-py). Updates `google-cloud-logging` from 3.11.3 to 3.11.4 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/googleapis/python-logging/releases">google-cloud-logging's releases</a>.</em></p> <blockquote> <h2>v3.11.4</h2> <h2><a href="https://github.com/googleapis/python-logging/compare/v3.11.3...v3.11.4">3.11.4</a> (2025-01-22)</h2> <h3>Bug Fixes</h3> <ul> <li>Made <code>write_entries</code> raise <code>ValueError</code> on <code>ParseError</code>s (<a href="https://redirect.github.com/googleapis/python-logging/issues/958">#958</a>) (<a href=" |
||
|
|
ef118eff34 |
chore(libs/deps-dev): bump ruff from 0.9.2 to 0.9.3 in /autogpt_platform/autogpt_libs in the development-dependencies group (#9343)
Bumps the development-dependencies group in /autogpt_platform/autogpt_libs with 1 update: [ruff](https://github.com/astral-sh/ruff). Updates `ruff` from 0.9.2 to 0.9.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.9.3</h2> <h2>Release Notes</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Argument <code>fail_stop</code> in DAG has been renamed as <code>fail_fast</code> (<code>AIR302</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15633">#15633</a>)</li> <li>[<code>airflow</code>] Extend <code>AIR303</code> with more symbols (<a href="https://redirect.github.com/astral-sh/ruff/pull/15611">#15611</a>)</li> <li>[<code>flake8-bandit</code>] Report all references to suspicious functions (<code>S3</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15541">#15541</a>)</li> <li>[<code>flake8-pytest-style</code>] Do not emit diagnostics for empty <code>for</code> loops (<code>PT012</code>, <code>PT031</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15542">#15542</a>)</li> <li>[<code>flake8-simplify</code>] Avoid double negations (<code>SIM103</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15562">#15562</a>)</li> <li>[<code>pyflakes</code>] Fix infinite loop with unused local import in <code>__init__.py</code> (<code>F401</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15517">#15517</a>)</li> <li>[<code>pylint</code>] Do not report methods with only one <code>EM101</code>-compatible <code>raise</code> (<code>PLR6301</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15507">#15507</a>)</li> <li>[<code>pylint</code>] Implement <code>redefined-slots-in-subclass</code> (<code>W0244</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/9640">#9640</a>)</li> <li>[<code>pyupgrade</code>] Add rules to use PEP 695 generics in classes and functions (<code>UP046</code>, <code>UP047</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15565">#15565</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/15659">#15659</a>)</li> <li>[<code>refurb</code>] Implement <code>for-loop-writes</code> (<code>FURB122</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/10630">#10630</a>)</li> <li>[<code>ruff</code>] Implement <code>needless-else</code> clause (<code>RUF047</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15051">#15051</a>)</li> <li>[<code>ruff</code>] Implement <code>starmap-zip</code> (<code>RUF058</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15483">#15483</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-bugbear</code>] Do not raise error if keyword argument is present and target-python version is less or equals than 3.9 (<code>B903</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15549">#15549</a>)</li> <li>[<code>flake8-comprehensions</code>] strip parentheses around generators in <code>unnecessary-generator-set</code> (<code>C401</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15553">#15553</a>)</li> <li>[<code>flake8-pytest-style</code>] Rewrite references to <code>.exception</code> (<code>PT027</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15680">#15680</a>)</li> <li>[<code>flake8-simplify</code>] Mark fixes as unsafe (<code>SIM201</code>, <code>SIM202</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15626">#15626</a>)</li> <li>[<code>flake8-type-checking</code>] Fix some safe fixes being labeled unsafe (<code>TC006</code>,<code>TC008</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15638">#15638</a>)</li> <li>[<code>isort</code>] Omit trailing whitespace in <code>unsorted-imports</code> (<code>I001</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15518">#15518</a>)</li> <li>[<code>pydoclint</code>] Allow ignoring one line docstrings for <code>DOC</code> rules (<a href="https://redirect.github.com/astral-sh/ruff/pull/13302">#13302</a>)</li> <li>[<code>pyflakes</code>] Apply redefinition fixes by source code order (<code>F811</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15575">#15575</a>)</li> <li>[<code>pyflakes</code>] Avoid removing too many imports in <code>redefined-while-unused</code> (<code>F811</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15585">#15585</a>)</li> <li>[<code>pyflakes</code>] Group redefinition fixes by source statement (<code>F811</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15574">#15574</a>)</li> <li>[<code>pylint</code>] Include name of base class in message for <code>redefined-slots-in-subclass</code> (<code>W0244</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15559">#15559</a>)</li> <li>[<code>ruff</code>] Update fix for <code>RUF055</code> to use <code>var == value</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/15605">#15605</a>)</li> </ul> <h3>Formatter</h3> <ul> <li>Fix bracket spacing for single-element tuples in f-string expressions (<a href="https://redirect.github.com/astral-sh/ruff/pull/15537">#15537</a>)</li> <li>Fix unstable f-string formatting for expressions containing a trailing comma (<a href="https://redirect.github.com/astral-sh/ruff/pull/15545">#15545</a>)</li> </ul> <h3>Performance</h3> <ul> <li>Avoid quadratic membership check in import fixes (<a href="https://redirect.github.com/astral-sh/ruff/pull/15576">#15576</a>)</li> </ul> <h3>Server</h3> <ul> <li>Allow <code>unsafe-fixes</code> settings for code actions (<a href="https://redirect.github.com/astral-sh/ruff/pull/15666">#15666</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-bandit</code>] Add missing single-line/dotall regex flag (<code>S608</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15654">#15654</a>)</li> <li>[<code>flake8-import-conventions</code>] Fix infinite loop between <code>ICN001</code> and <code>I002</code> (<code>ICN001</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15480">#15480</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.9.3</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Argument <code>fail_stop</code> in DAG has been renamed as <code>fail_fast</code> (<code>AIR302</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15633">#15633</a>)</li> <li>[<code>airflow</code>] Extend <code>AIR303</code> with more symbols (<a href="https://redirect.github.com/astral-sh/ruff/pull/15611">#15611</a>)</li> <li>[<code>flake8-bandit</code>] Report all references to suspicious functions (<code>S3</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15541">#15541</a>)</li> <li>[<code>flake8-pytest-style</code>] Do not emit diagnostics for empty <code>for</code> loops (<code>PT012</code>, <code>PT031</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15542">#15542</a>)</li> <li>[<code>flake8-simplify</code>] Avoid double negations (<code>SIM103</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15562">#15562</a>)</li> <li>[<code>pyflakes</code>] Fix infinite loop with unused local import in <code>__init__.py</code> (<code>F401</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15517">#15517</a>)</li> <li>[<code>pylint</code>] Do not report methods with only one <code>EM101</code>-compatible <code>raise</code> (<code>PLR6301</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15507">#15507</a>)</li> <li>[<code>pylint</code>] Implement <code>redefined-slots-in-subclass</code> (<code>W0244</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/9640">#9640</a>)</li> <li>[<code>pyupgrade</code>] Add rules to use PEP 695 generics in classes and functions (<code>UP046</code>, <code>UP047</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15565">#15565</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/15659">#15659</a>)</li> <li>[<code>refurb</code>] Implement <code>for-loop-writes</code> (<code>FURB122</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/10630">#10630</a>)</li> <li>[<code>ruff</code>] Implement <code>needless-else</code> clause (<code>RUF047</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15051">#15051</a>)</li> <li>[<code>ruff</code>] Implement <code>starmap-zip</code> (<code>RUF058</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15483">#15483</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-bugbear</code>] Do not raise error if keyword argument is present and target-python version is less or equals than 3.9 (<code>B903</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15549">#15549</a>)</li> <li>[<code>flake8-comprehensions</code>] strip parentheses around generators in <code>unnecessary-generator-set</code> (<code>C401</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15553">#15553</a>)</li> <li>[<code>flake8-pytest-style</code>] Rewrite references to <code>.exception</code> (<code>PT027</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15680">#15680</a>)</li> <li>[<code>flake8-simplify</code>] Mark fixes as unsafe (<code>SIM201</code>, <code>SIM202</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15626">#15626</a>)</li> <li>[<code>flake8-type-checking</code>] Fix some safe fixes being labeled unsafe (<code>TC006</code>,<code>TC008</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15638">#15638</a>)</li> <li>[<code>isort</code>] Omit trailing whitespace in <code>unsorted-imports</code> (<code>I001</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15518">#15518</a>)</li> <li>[<code>pydoclint</code>] Allow ignoring one line docstrings for <code>DOC</code> rules (<a href="https://redirect.github.com/astral-sh/ruff/pull/13302">#13302</a>)</li> <li>[<code>pyflakes</code>] Apply redefinition fixes by source code order (<code>F811</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15575">#15575</a>)</li> <li>[<code>pyflakes</code>] Avoid removing too many imports in <code>redefined-while-unused</code> (<code>F811</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15585">#15585</a>)</li> <li>[<code>pyflakes</code>] Group redefinition fixes by source statement (<code>F811</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15574">#15574</a>)</li> <li>[<code>pylint</code>] Include name of base class in message for <code>redefined-slots-in-subclass</code> (<code>W0244</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15559">#15559</a>)</li> <li>[<code>ruff</code>] Update fix for <code>RUF055</code> to use <code>var == value</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/15605">#15605</a>)</li> </ul> <h3>Formatter</h3> <ul> <li>Fix bracket spacing for single-element tuples in f-string expressions (<a href="https://redirect.github.com/astral-sh/ruff/pull/15537">#15537</a>)</li> <li>Fix unstable f-string formatting for expressions containing a trailing comma (<a href="https://redirect.github.com/astral-sh/ruff/pull/15545">#15545</a>)</li> </ul> <h3>Performance</h3> <ul> <li>Avoid quadratic membership check in import fixes (<a href="https://redirect.github.com/astral-sh/ruff/pull/15576">#15576</a>)</li> </ul> <h3>Server</h3> <ul> <li>Allow <code>unsafe-fixes</code> settings for code actions (<a href="https://redirect.github.com/astral-sh/ruff/pull/15666">#15666</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-bandit</code>] Add missing single-line/dotall regex flag (<code>S608</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15654">#15654</a>)</li> <li>[<code>flake8-import-conventions</code>] Fix infinite loop between <code>ICN001</code> and <code>I002</code> (<code>ICN001</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15480">#15480</a>)</li> <li>[<code>flake8-simplify</code>] Do not emit diagnostics for expressions inside string type annotations (<code>SIM222</code>, <code>SIM223</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15405">#15405</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
21337e6bc4 |
chore(libs/deps): bump the production-dependencies group across 1 directory with 4 updates (#9237)
Bumps the production-dependencies group with 4 updates in the /autogpt_platform/autogpt_libs directory: [pydantic](https://github.com/pydantic/pydantic), [pydantic-settings](https://github.com/pydantic/pydantic-settings), [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) and [supabase](https://github.com/supabase/supabase-py). Updates `pydantic` from 2.10.3 to 2.10.5 <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.10.4 2024-12-18</h2> <h2>What's Changed</h2> <h3>Packaging</h3> <ul> <li>Bump <code>pydantic-core</code> to v2.27.2 by <a href="https://github.com/davidhewitt"><code>@davidhewitt</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11138">#11138</a></li> </ul> <h3>Fixes</h3> <ul> <li>Fix for comparison of <code>AnyUrl</code> objects by <a href="https://github.com/alexprabhat99"><code>@alexprabhat99</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11082">#11082</a></li> <li>Properly fetch PEP 695 type params for functions, do not fetch annotations from signature by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11093">#11093</a></li> <li>Include JSON Schema input core schema in function schemas by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11085">#11085</a></li> <li>Add <code>len</code> to <code>_BaseUrl</code> to avoid TypeError by <a href="https://github.com/Kharianne"><code>@Kharianne</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11111">#11111</a></li> <li>Make sure the type reference is removed from the seen references by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11143">#11143</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/alexprabhat99"><code>@alexprabhat99</code></a> made their first contribution in <a href="https://redirect.github.com/pydantic/pydantic/pull/11082">#11082</a></li> <li><a href="https://github.com/Kharianne"><code>@Kharianne</code></a> made their first contribution in <a href="https://redirect.github.com/pydantic/pydantic/pull/11111">#11111</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/pydantic/pydantic/compare/v2.10.3...v2.10.4">https://github.com/pydantic/pydantic/compare/v2.10.3...v2.10.4</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.10.5 (2025-01-08)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.10.5">GitHub release</a></p> <h3>What's Changed</h3> <ul> <li>Remove custom MRO implementation of Pydantic models by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11184">#11184</a></li> <li>Fix URL serialization for unions by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11233">#11233</a></li> </ul> <h2>v2.10.4 (2024-12-18)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.10.4">GitHub release</a></p> <h3>What's Changed</h3> <h4>Packaging</h4> <ul> <li>Bump <code>pydantic-core</code> to v2.27.2 by <a href="https://github.com/davidhewitt"><code>@davidhewitt</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11138">#11138</a></li> </ul> <h4>Fixes</h4> <ul> <li>Fix for comparison of <code>AnyUrl</code> objects by <a href="https://github.com/alexprabhat99"><code>@alexprabhat99</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11082">#11082</a></li> <li>Properly fetch PEP 695 type params for functions, do not fetch annotations from signature by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11093">#11093</a></li> <li>Include JSON Schema input core schema in function schemas by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11085">#11085</a></li> <li>Add <code>len</code> to <code>_BaseUrl</code> to avoid TypeError by <a href="https://github.com/Kharianne"><code>@Kharianne</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11111">#11111</a></li> <li>Make sure the type reference is removed from the seen references by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11143">#11143</a></li> </ul> <h3>New Contributors</h3> <ul> <li><a href="https://github.com/FyZzyss"><code>@FyZzyss</code></a> made their first contribution in <a href="https://redirect.github.com/pydantic/pydantic/pull/10789">#10789</a></li> <li><a href="https://github.com/tamird"><code>@tamird</code></a> made their first contribution in <a href="https://redirect.github.com/pydantic/pydantic/pull/10948">#10948</a></li> <li><a href="https://github.com/felixxm"><code>@felixxm</code></a> made their first contribution in <a href="https://redirect.github.com/pydantic/pydantic/pull/11077">#11077</a></li> <li><a href="https://github.com/alexprabhat99"><code>@alexprabhat99</code></a> made their first contribution in <a href="https://redirect.github.com/pydantic/pydantic/pull/11082">#11082</a></li> <li><a href="https://github.com/Kharianne"><code>@Kharianne</code></a> made their first contribution in <a href="https://redirect.github.com/pydantic/pydantic/pull/11111">#11111</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
56330b1dd3 |
chore(backend/deps-dev): bump the development-dependencies group across 1 directory with 5 updates (#9300)
Bumps the development-dependencies group with 5 updates in the /autogpt_platform/backend directory: | Package | From | To | | --- | --- | --- | | [poethepoet](https://github.com/nat-n/poethepoet) | `0.31.0` | `0.32.1` | | [ruff](https://github.com/astral-sh/ruff) | `0.8.3` | `0.9.2` | | [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.389` | `1.1.392.post0` | | [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.4.3` | `2.4.4` | | [faker](https://github.com/joke2k/faker) | `33.1.0` | `33.3.1` | Updates `poethepoet` from 0.31.0 to 0.32.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/nat-n/poethepoet/releases">poethepoet's releases</a>.</em></p> <blockquote> <h2>v0.32.1</h2> <h2>Enhancements</h2> <ul> <li>feat: Upgrade poetry dependency to make the poetry plugin work with poetry 2.0 by <a href="https://github.com/nat-n"><code>@nat-n</code></a> in <a href="https://redirect.github.com/nat-n/poethepoet/pull/269">nat-n/poethepoet#269</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/nat-n/poethepoet/compare/v0.32.0...v0.32.1">https://github.com/nat-n/poethepoet/compare/v0.32.0...v0.32.1</a></p> <h2>0.32.0</h2> <h2>Enhancements</h2> <ul> <li> <p>Make command parsing support <em>default value</em> and <em>alternate value</em> operations on param expansions by <a href="https://github.com/nat-n"><code>@nat-n</code></a> in <a href="https://redirect.github.com/nat-n/poethepoet/pull/266">nat-n/poethepoet#266</a></p> <ul> <li>See feature <a href="https://poethepoet.natn.io/tasks/task_types/cmd.html#parameter-expansion-operators">📖 documentation</a> for more details</li> </ul> </li> <li> <p>Explicitly disallow <code>capture_stdout</code> option on sequence tasks by <a href="https://github.com/nat-n"><code>@nat-n</code></a> in <a href="https://redirect.github.com/nat-n/poethepoet/pull/265">nat-n/poethepoet#265</a></p> </li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/nat-n/poethepoet/compare/v0.31.1...v0.32.0">https://github.com/nat-n/poethepoet/compare/v0.31.1...v0.32.0</a></p> <h2>0.31.1</h2> <h2>Fixes</h2> <ul> <li>fix: Explicitly disallow capture_stdout option on sequence tasks by <a href="https://github.com/nat-n"><code>@nat-n</code></a> in <a href="https://redirect.github.com/nat-n/poethepoet/pull/261">nat-n/poethepoet#261</a></li> <li>fix: Allow env var defaults in included task files by <a href="https://github.com/nat-n"><code>@nat-n</code></a> in <a href="https://redirect.github.com/nat-n/poethepoet/pull/263">nat-n/poethepoet#263</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/nat-n/poethepoet/compare/v0.31.0...v0.31.1">https://github.com/nat-n/poethepoet/compare/v0.31.0...v0.31.1</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
5383e8ba27 |
chore(libs/deps-dev): bump ruff from 0.8.6 to 0.9.2 in /autogpt_platform/autogpt_libs in the development-dependencies group across 1 directory (#9299)
Bumps the development-dependencies group with 1 update in the /autogpt_platform/autogpt_libs directory: [ruff](https://github.com/astral-sh/ruff). Updates `ruff` from 0.8.6 to 0.9.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.9.2</h2> <h2>Release Notes</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Fix typo "security_managr" to "security_manager" (<code>AIR303</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15463">#15463</a>)</li> <li>[<code>airflow</code>] extend and fix AIR302 rules (<a href="https://redirect.github.com/astral-sh/ruff/pull/15525">#15525</a>)</li> <li>[<code>fastapi</code>] Handle parameters with <code>Depends</code> correctly (<code>FAST003</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15364">#15364</a>)</li> <li>[<code>flake8-pytest-style</code>] Implement pytest.warns diagnostics (<code>PT029</code>, <code>PT030</code>, <code>PT031</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15444">#15444</a>)</li> <li>[<code>flake8-pytest-style</code>] Test function parameters with default arguments (<code>PT028</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15449">#15449</a>)</li> <li>[<code>flake8-type-checking</code>] Avoid false positives for <code>|</code> in <code>TC008</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/15201">#15201</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-todos</code>] Allow VSCode GitHub PR extension style links in <code>missing-todo-link</code> (<code>TD003</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15519">#15519</a>)</li> <li>[<code>pyflakes</code>] Show syntax error message for <code>F722</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/15523">#15523</a>)</li> </ul> <h3>Formatter</h3> <ul> <li>Fix curly bracket spacing around f-string expressions containing curly braces (<a href="https://redirect.github.com/astral-sh/ruff/pull/15471">#15471</a>)</li> <li>Fix joining of f-strings with different quotes when using quote style <code>Preserve</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/15524">#15524</a>)</li> </ul> <h3>Server</h3> <ul> <li>Avoid indexing the same workspace multiple times (<a href="https://redirect.github.com/astral-sh/ruff/pull/15495">#15495</a>)</li> <li>Display context for <code>ruff.configuration</code> errors (<a href="https://redirect.github.com/astral-sh/ruff/pull/15452">#15452</a>)</li> </ul> <h3>Configuration</h3> <ul> <li>Remove <code>flatten</code> to improve deserialization error messages (<a href="https://redirect.github.com/astral-sh/ruff/pull/15414">#15414</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>Parse triple-quoted string annotations as if parenthesized (<a href="https://redirect.github.com/astral-sh/ruff/pull/15387">#15387</a>)</li> <li>[<code>fastapi</code>] Update <code>Annotated</code> fixes (<code>FAST002</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15462">#15462</a>)</li> <li>[<code>flake8-bandit</code>] Check for <code>builtins</code> instead of <code>builtin</code> (<code>S102</code>, <code>PTH123</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15443">#15443</a>)</li> <li>[<code>flake8-pathlib</code>] Fix <code>--select</code> for <code>os-path-dirname</code> (<code>PTH120</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15446">#15446</a>)</li> <li>[<code>ruff</code>] Fix false positive on global keyword (<code>RUF052</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15235">#15235</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/Daverball"><code>@Daverball</code></a></li> <li><a href="https://github.com/Garrett-R"><code>@Garrett-R</code></a></li> <li><a href="https://github.com/Glyphack"><code>@Glyphack</code></a></li> <li><a href="https://github.com/InSyncWithFoo"><code>@InSyncWithFoo</code></a></li> <li><a href="https://github.com/Lee-W"><code>@Lee-W</code></a></li> <li><a href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li> <li><a href="https://github.com/cake-monotone"><code>@cake-monotone</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.9.2</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Fix typo "security_managr" to "security_manager" (<code>AIR303</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15463">#15463</a>)</li> <li>[<code>airflow</code>] extend and fix AIR302 rules (<a href="https://redirect.github.com/astral-sh/ruff/pull/15525">#15525</a>)</li> <li>[<code>fastapi</code>] Handle parameters with <code>Depends</code> correctly (<code>FAST003</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15364">#15364</a>)</li> <li>[<code>flake8-pytest-style</code>] Implement pytest.warns diagnostics (<code>PT029</code>, <code>PT030</code>, <code>PT031</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15444">#15444</a>)</li> <li>[<code>flake8-pytest-style</code>] Test function parameters with default arguments (<code>PT028</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15449">#15449</a>)</li> <li>[<code>flake8-type-checking</code>] Avoid false positives for <code>|</code> in <code>TC008</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/15201">#15201</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-todos</code>] Allow VSCode GitHub PR extension style links in <code>missing-todo-link</code> (<code>TD003</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15519">#15519</a>)</li> <li>[<code>pyflakes</code>] Show syntax error message for <code>F722</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/15523">#15523</a>)</li> </ul> <h3>Formatter</h3> <ul> <li>Fix curly bracket spacing around f-string expressions containing curly braces (<a href="https://redirect.github.com/astral-sh/ruff/pull/15471">#15471</a>)</li> <li>Fix joining of f-strings with different quotes when using quote style <code>Preserve</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/15524">#15524</a>)</li> </ul> <h3>Server</h3> <ul> <li>Avoid indexing the same workspace multiple times (<a href="https://redirect.github.com/astral-sh/ruff/pull/15495">#15495</a>)</li> <li>Display context for <code>ruff.configuration</code> errors (<a href="https://redirect.github.com/astral-sh/ruff/pull/15452">#15452</a>)</li> </ul> <h3>Configuration</h3> <ul> <li>Remove <code>flatten</code> to improve deserialization error messages (<a href="https://redirect.github.com/astral-sh/ruff/pull/15414">#15414</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>Parse triple-quoted string annotations as if parenthesized (<a href="https://redirect.github.com/astral-sh/ruff/pull/15387">#15387</a>)</li> <li>[<code>fastapi</code>] Update <code>Annotated</code> fixes (<code>FAST002</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15462">#15462</a>)</li> <li>[<code>flake8-bandit</code>] Check for <code>builtins</code> instead of <code>builtin</code> (<code>S102</code>, <code>PTH123</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15443">#15443</a>)</li> <li>[<code>flake8-pathlib</code>] Fix <code>--select</code> for <code>os-path-dirname</code> (<code>PTH120</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15446">#15446</a>)</li> <li>[<code>ruff</code>] Fix false positive on global keyword (<code>RUF052</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15235">#15235</a>)</li> </ul> <h2>0.9.1</h2> <h3>Preview features</h3> <ul> <li>[<code>pycodestyle</code>] Run <code>too-many-newlines-at-end-of-file</code> on each cell in notebooks (<code>W391</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15308">#15308</a>)</li> <li>[<code>ruff</code>] Omit diagnostic for shadowed private function parameters in <code>used-dummy-variable</code> (<code>RUF052</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15376">#15376</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-bugbear</code>] Improve <code>assert-raises-exception</code> message (<code>B017</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15389">#15389</a>)</li> </ul> <h3>Formatter</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
b4a0100c22 |
feat(platform): Add Twitter integration (#8754)
- Resolves #8326 Create a Twitter integration with some small frontend changes. ### Changes 1. Add Twitter OAuth 2.0 with PKCE support for authentication. 2. Add a way to multi-select from a list of enums by creating a multi-select on the frontend. 3. Add blocks for Twitter integration. 4. `_types.py` for repetitive enums and input types. 5. `_builders.py` for creating parameters without repeating the same logic. 6. `_serializer.py` to serialize the Tweepy enums into dictionaries so they can travel easily from Pyro5. 7. `_mappers.py` to map the frontend values to the correct request values. > I have added a new multi-select feature because my list contains many items, and selecting all of them makes the block cluttered. This new block displays only the first two items and then show something like "2 more" . It works only for list of enums. ### Blocks Block Name | What It Does | Error Reason | Manual Testing -- | -- | -- | -- `TwitterBookmarkTweetBlock` | Bookmark a tweet on Twitter | No error | ✅ `TwitterGetBookmarkedTweetsBlock` | Get all your bookmarked tweets from Twitter | No error | ✅ `TwitterRemoveBookmarkTweetBlock` | Remove a bookmark for a tweet on Twitter | No error | ✅ `TwitterHideReplyBlock` | Hides a reply of one of your tweets | No error | ✅ `TwitterUnhideReplyBlock` | Unhides a reply to a tweet | No error | ✅ `TwitterLikeTweetBlock` | Likes a tweet | No error | ✅ `TwitterGetLikingUsersBlock` | Gets information about users who liked one of your tweets | No error | ✅ `TwitterGetLikedTweetsBlock` | Gets information about tweets liked by you | No error | ✅ `TwitterUnlikeTweetBlock` | Unlikes a tweet that was previously liked | No error | ✅ `TwitterPostTweetBlock` | Create a tweet on Twitter with the option to include one additional element such as media, quote, or deep link. | No error | ✅ `TwitterDeleteTweetBlock` | Deletes a tweet on Twitter using Twitter ID | No error | ✅ `TwitterSearchRecentTweetsBlock` | Searches all public Tweets in Twitter history | No error | ✅ `TwitterGetQuoteTweetsBlock` | Gets quote tweets for a specified tweet ID | No error | ✅ `TwitterRetweetBlock` | Retweets a tweet on Twitter | No error | ✅ `TwitterRemoveRetweetBlock` | Removes a retweet on Twitter | No error | ✅ `TwitterGetRetweetersBlock` | Gets information about who has retweeted a tweet | No error | ✅ `TwitterGetUserMentionsBlock` | Returns Tweets where a single user is mentioned, just put that user ID | No error | ✅ `TwitterGetHomeTimelineBlock` | Returns a collection of the most recent Tweets and Retweets posted by you and users you follow | No error | ✅ `TwitterGetUserTweetsBlock` | Returns Tweets composed by a single user, specified by the requested user ID | No error | ✅ `TwitterGetTweetBlock` | Returns information about a single Tweet specified by the requested ID | No error | ✅ `TwitterGetTweetsBlock` | Returns information about multiple Tweets specified by the requested IDs | No error | ✅ `TwitterUnblockUserBlock` | Unblock a specific user on Twitter | No error | ✅ `TwitterGetBlockedUsersBlock` | Get a list of users who are blocked by the authenticating user | No error | ✅ `TwitterBlockUserBlock` | Block a specific user on Twitter | No error | ✅ `TwitterUnfollowUserBlock` | Allows a user to unfollow another user specified by target user ID | No error | ✅ `TwitterFollowUserBlock` | Allows a user to follow another user specified by target user ID | No error | ✅ `TwitterGetFollowersBlock` | Retrieves a list of followers for a specified Twitter user ID | Need Enterprise level access | ❌ `TwitterGetFollowingBlock` | Retrieves a list of users that a specified Twitter user ID is following | Need Enterprise level access | ❌ `TwitterUnmuteUserBlock` | Allows a user to unmute another user specified by target user ID | No error | ✅ `TwitterGetMutedUsersBlock` | Returns a list of users who are muted by the authenticating user | No error | ✅ `TwitterMuteUserBlock` | Allows a user to mute another user specified by target user ID | No error | ✅ `TwitterGetUserBlock` | Gets information about a single Twitter user specified by ID or username | No error | ✅ `TwitterGetUsersBlock` | Gets information about multiple Twitter users specified by IDs or usernames | No error | ✅ `TwitterSearchSpacesBlock` | Returns live or scheduled Spaces matching specified search terms [for a week only] | No error | ✅ `TwitterGetSpacesBlock` | Gets information about multiple Twitter Spaces specified by Space IDs or creator user IDs | No error | ✅ `TwitterGetSpaceByIdBlock` | Gets information about a single Twitter Space specified by Space ID | No error | ✅ `TwitterGetSpaceBuyersBlock` | Gets list of users who purchased a ticket to the requested Space | I do not have a monetized account for this | ✅ `TwitterGetSpaceTweetsBlock` | Gets list of Tweets shared in the requested Space | No error | ✅ `TwitterUnfollowListBlock` | Unfollows a Twitter list for the authenticated user | No error | ✅ `TwitterFollowListBlock` | Follows a Twitter list for the authenticated user | No error | ✅ `TwitterListGetFollowersBlock` | Gets followers of a specified Twitter list | Enterprise level access | ❌ `TwitterGetFollowedListsBlock` | Gets lists followed by a specified Twitter user | Enterprise level access | ❌ `TwitterGetListBlock` | Gets information about a Twitter List specified by ID | No error | ✅ `TwitterGetOwnedListsBlock` | Gets all Lists owned by the specified user | No error | ✅ `TwitterRemoveListMemberBlock` | Removes a member from a Twitter List that the authenticated user owns | No error | ✅ `TwitterAddListMemberBlock` | Adds a member to a Twitter List that the authenticated user owns | No error | ✅ `TwitterGetListMembersBlock` | Gets the members of a specified Twitter List | No error | ✅ `TwitterGetListMembershipsBlock` | Gets all Lists that a specified user is a member of | No error | ✅ `TwitterGetListTweetsBlock` | Gets tweets from a specified Twitter list | No error | ✅ `TwitterDeleteListBlock` | Deletes a Twitter List owned by the authenticated user | No error | ✅ `TwitterUpdateListBlock` | Updates a Twitter List owned by the authenticated user | No error | ✅ `TwitterCreateListBlock` | Creates a Twitter List owned by the authenticated user | No error | ✅ `TwitterUnpinListBlock` | Enables the authenticated user to unpin a List. | No error | ✅ `TwitterPinListBlock` | Enables the authenticated user to pin a List. | No error | ✅ `TwitterGetPinnedListsBlock` | Returns the Lists pinned by the authenticated user. | No error | ✅ `TwitterGetDMEventsBlock` | Gets a list of Direct Message events for the authenticated user | Need Enterprise level access | ❌ `TwitterSendDirectMessageBlock` | Sends a direct message to a Twitter user | Need Enterprise level access | ❌ `TwitterCreateDMConversationBlock` | Creates a new group direct message | Need Enterprise level access | ❌ ### Need to add more stuff 1. A normal input to select date and time. 2. Some more enterprise-level blocks, especially webhook triggers. Supported triggers Event Name | Description -- | -- Posts (by user) | User creates a new post. Post deletes (by user) | User deletes an existing post. @mentions (of user) | User is mentioned in a post. Replies (to or from user) | User replies to a post or receives a reply from another user. Retweets (by user or of user) | User retweets a post or someone retweets the user's post. Quote Tweets (by user or of user) | User quote tweets a post or someone quote tweets the user's post. Retweets of Quoted Tweets (by user or of user) | Retweets of quote tweets by the user or of the user. Likes (by user or of user) | User likes a post or someone likes the user's post. Follows (by user or of user) | User follows another user or another user follows the user. Unfollows (by user) | User unfollows another user. Blocks (by user) | User blocks another user. Unblocks (by user) | User unblocks a previously blocked user. Mutes (by user) | User mutes another user. Unmutes (by user) | User unmutes a previously muted user. Direct Messages sent (by user) | User sends direct messages to other users. Direct Messages received (by user) | User receives direct messages from other users. Typing indicators (to user) | Indicators showing when someone is typing a message to the user. Read receipts (to user) | Indicators showing when the user has read a message. Subscription revokes (by user) | User revokes a subscription to a service or content. --------- Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> Co-authored-by: Nicholas Tindle <nicktindle@outlook.com> |
||
|
|
7e80401083 |
chore(libs/deps-dev): bump ruff from 0.8.3 to 0.8.6 in /autogpt_platform/autogpt_libs in the development-dependencies group across 1 directory (#9202)
Bumps the development-dependencies group with 1 update in the /autogpt_platform/autogpt_libs directory: [ruff](https://github.com/astral-sh/ruff). Updates `ruff` from 0.8.3 to 0.8.6 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.8.6</h2> <h2>Release Notes</h2> <h3>Preview features</h3> <ul> <li>[<code>format</code>]: Preserve multiline implicit concatenated strings in docstring positions (<a href="https://redirect.github.com/astral-sh/ruff/pull/15126">#15126</a>)</li> <li>[<code>ruff</code>] Add rule to detect empty literal in deque call (<code>RUF025</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15104">#15104</a>)</li> <li>[<code>ruff</code>] Avoid reporting when <code>ndigits</code> is possibly negative (<code>RUF057</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15234">#15234</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-todos</code>] remove issue code length restriction (<code>TD003</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15175">#15175</a>)</li> <li>[<code>pyflakes</code>] Ignore errors in <code>@no_type_check</code> string annotations (<code>F722</code>, <code>F821</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15215">#15215</a>)</li> </ul> <h3>CLI</h3> <ul> <li>Show errors for attempted fixes only when passed <code>--verbose</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/15237">#15237</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>ruff</code>] Avoid syntax error when removing int over multiple lines (<code>RUF046</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15230">#15230</a>)</li> <li>[<code>pyupgrade</code>] Revert "Add all PEP-585 names to <code>UP006</code> rule" (<a href="https://redirect.github.com/astral-sh/ruff/pull/15250">#15250</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/InSyncWithFoo"><code>@InSyncWithFoo</code></a></li> <li><a href="https://github.com/Lee-W"><code>@Lee-W</code></a></li> <li><a href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li> <li><a href="https://github.com/augustelalande"><code>@augustelalande</code></a></li> <li><a href="https://github.com/charliermarsh"><code>@charliermarsh</code></a></li> <li><a href="https://github.com/dcreager"><code>@dcreager</code></a></li> <li><a href="https://github.com/dylwil3"><code>@dylwil3</code></a></li> <li><a href="https://github.com/mdbernard"><code>@mdbernard</code></a></li> <li><a href="https://github.com/sharkdp"><code>@sharkdp</code></a></li> <li><a href="https://github.com/w0nder1ng"><code>@w0nder1ng</code></a></li> </ul> <h2>Install ruff 0.8.6</h2> <h3>Install prebuilt binaries via shell script</h3> <pre lang="sh"><code>curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.8.6/ruff-installer.sh | sh </code></pre> <h3>Install prebuilt binaries via powershell script</h3> <pre lang="sh"><code>powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/ruff/releases/download/0.8.6/ruff-installer.ps1 | iex" </code></pre> <!-- 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.8.6</h2> <h3>Preview features</h3> <ul> <li>[<code>format</code>]: Preserve multiline implicit concatenated strings in docstring positions (<a href="https://redirect.github.com/astral-sh/ruff/pull/15126">#15126</a>)</li> <li>[<code>ruff</code>] Add rule to detect empty literal in deque call (<code>RUF025</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15104">#15104</a>)</li> <li>[<code>ruff</code>] Avoid reporting when <code>ndigits</code> is possibly negative (<code>RUF057</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15234">#15234</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-todos</code>] remove issue code length restriction (<code>TD003</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15175">#15175</a>)</li> <li>[<code>pyflakes</code>] Ignore errors in <code>@no_type_check</code> string annotations (<code>F722</code>, <code>F821</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15215">#15215</a>)</li> </ul> <h3>CLI</h3> <ul> <li>Show errors for attempted fixes only when passed <code>--verbose</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/15237">#15237</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>ruff</code>] Avoid syntax error when removing int over multiple lines (<code>RUF046</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15230">#15230</a>)</li> <li>[<code>pyupgrade</code>] Revert "Add all PEP-585 names to <code>UP006</code> rule" (<a href="https://redirect.github.com/astral-sh/ruff/pull/15250">#15250</a>)</li> </ul> <h2>0.8.5</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Extend names moved from core to provider (<code>AIR303</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15145">#15145</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/15159">#15159</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/15196">#15196</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/15216">#15216</a>)</li> <li>[<code>airflow</code>] Extend rule to check class attributes, methods, arguments (<code>AIR302</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15054">#15054</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/15083">#15083</a>)</li> <li>[<code>fastapi</code>] Update <code>FAST002</code> to check keyword-only arguments (<a href="https://redirect.github.com/astral-sh/ruff/pull/15119">#15119</a>)</li> <li>[<code>flake8-type-checking</code>] Disable <code>TC006</code> and <code>TC007</code> in stub files (<a href="https://redirect.github.com/astral-sh/ruff/pull/15179">#15179</a>)</li> <li>[<code>pylint</code>] Detect nested methods correctly (<code>PLW1641</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15032">#15032</a>)</li> <li>[<code>ruff</code>] Detect more strict-integer expressions (<code>RUF046</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14833">#14833</a>)</li> <li>[<code>ruff</code>] Implement <code>falsy-dict-get-fallback</code> (<code>RUF056</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15160">#15160</a>)</li> <li>[<code>ruff</code>] Implement <code>unnecessary-round</code> (<code>RUF057</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14828">#14828</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>Visit PEP 764 inline <code>TypedDict</code> keys as non-type-expressions (<a href="https://redirect.github.com/astral-sh/ruff/pull/15073">#15073</a>)</li> <li>[<code>flake8-comprehensions</code>] Skip <code>C416</code> if comprehension contains unpacking (<a href="https://redirect.github.com/astral-sh/ruff/pull/14909">#14909</a>)</li> <li>[<code>flake8-pie</code>] Allow <code>cast(SomeType, ...)</code> (<code>PIE796</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15141">#15141</a>)</li> <li>[<code>flake8-simplify</code>] More precise inference for dictionaries (<code>SIM300</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15164">#15164</a>)</li> <li>[<code>flake8-use-pathlib</code>] Catch redundant joins in <code>PTH201</code> and avoid syntax errors (<a href="https://redirect.github.com/astral-sh/ruff/pull/15177">#15177</a>)</li> <li>[<code>pycodestyle</code>] Preserve original value format (<code>E731</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15097">#15097</a>)</li> <li>[<code>pydocstyle</code>] Split on first whitespace character (<code>D403</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15082">#15082</a>)</li> <li>[<code>pyupgrade</code>] Add all PEP-585 names to <code>UP006</code> rule (<a href="https://redirect.github.com/astral-sh/ruff/pull/5454">#5454</a>)</li> </ul> <h3>Configuration</h3> <ul> <li>[<code>flake8-type-checking</code>] Improve flexibility of <code>runtime-evaluated-decorators</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/15204">#15204</a>)</li> <li>[<code>pydocstyle</code>] Add setting to ignore missing documentation for <code>*args</code> and <code>**kwargs</code> parameters (<code>D417</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/15210">#15210</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
d638c1f484 |
Fix Poetry v2.0.0 compatibility (#9197)
Make all changes necessary to make everything work with Poetry v2.0.0. - Resolves #9196 ## Changes - Removed `--no-update` flag from `poetry lock` command in codebase - Removed extra path arguments from `poetry -C [path] run [command]` occurrences - Regenerated all lock files in hierarchical order - Added workaround for Poetry bug where `packages.[i].format` is now suddenly required Additionally: - Fixed up .dockerignore - Fixes .venv being erroneously copied over from local - Fixes build context bloat (300MB -> 2.5MB) - Fixed warnings about entrypoint script not being installed in docker builds ### Relevant (breaking) changes in v2.0.0 - `--no-update` flag no longer exists for `poetry lock` as it has become default behavior - The `-C` option now actually changes the directory, so any path arguments in `poetry run` commands can/must be removed - Poetry v2.0.0 uses the new v2.1 lock file spec, so all lock files have to be regenerated to avoid false-positive lock file updates and checks on future PRs - **BUG:** when specifying `poetry.tool.packages`, `format` is required now - python-poetry/poetry#9961 Full Poetry v2.0.0 release notes and change log: https://python-poetry.org/blog/announcing-poetry-2.0.0 |
||
|
|
a646e60d2f |
fix(backend): Added locking status check before releasing to avoid releasing timing out lock (#9135)
Exception:
```
nid:ce829f66-14b0-4bd3-b748-791e46666cb6|-] Failed node execution ce829f66-14b0-4bd3-b748-791e46666cb6: Cannot release an unlocked lock {}\u001b[0m",
Traceback (most recent call last):\n File \"/app/autogpt_platform/backend/backend/integrations/creds_manager.py\", line 145, in _locked\n yield\n File \"/app/autogpt_platform/backend/backend/integrations/creds_manager.py\", line 115, in acquire\n lock = self._acquire_lock(user_id, credentials_id)",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^",
File \"/app/autogpt_platform/backend/backend/integrations/creds_manager.py\", line 139, in _acquire_lock",
return self._locks.acquire(key)",
^^^^^^^^^^^^^^^^^^^^^^^^",
File \"/app/autogpt_platform/autogpt_libs/autogpt_libs/utils/synchronize.py\", line 44, in acquire",
lock.acquire()",
File \"/usr/local/lib/python3.11/site-packages/redis/lock.py\", line 218, in acquire",
mod_time.sleep(sleep)",
File \"/app/autogpt_platform/backend/backend/executor/manager.py\", line 471, in <lambda>",
signal.SIGTERM, lambda _, __: cls.on_node_executor_sigterm()",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^",
File \"/app/autogpt_platform/backend/backend/executor/manager.py\", line 498, in on_node_executor_sigterm",
sys.exit(0)",
SystemExit: 0",
During handling of the above exception, another exception occurred:",
Traceback (most recent call last):\n File \"/app/autogpt_platform/backend/backend/executor/manager.py\", line 539, in _on_node_execution\n for execution in execute_node(\n File \"/app/autogpt_platform/backend/backend/executor/manager.py\", line 175, in execute_node\n credentials, creds_lock = creds_manager.acquire(user_id, credentials_meta.id)",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^",
File \"/app/autogpt_platform/backend/backend/integrations/creds_manager.py\", line 114, in acquire",
with self._locked(user_id, credentials_id, \"!time_sensitive\"):",
File \"/usr/local/lib/python3.11/contextlib.py\", line 158, in __exit__",
self.gen.throw(typ, value, traceback)",
File \"/app/autogpt_platform/backend/backend/integrations/creds_manager.py\", line 147, in _locked",
lock.release()",
File \"/usr/local/lib/python3.11/site-packages/redis/lock.py\", line 254, in release",
raise LockError(\"Cannot release an unlocked lock\", lock_name=self.name)",
redis.exceptions.LockError: Cannot release an unlocked lock",
```
### Changes 🏗️
```
try:
lock.acquire()
...
finally:
lock.release()
```
pattern can cause an error where the lock is already released due to
timeout.
The scope of the change is to manually check the lock status before
releasing.
### 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>
|
||
|
|
41be88f0bf | Update dependencies | ||
|
|
59f52fb656 |
build(deps-dev): bump ruff from 0.8.2 to 0.8.3 in /autogpt_platform/autogpt_libs in the development-dependencies group (#9008)
Bumps the development-dependencies group in /autogpt_platform/autogpt_libs with 1 update: [ruff](https://github.com/astral-sh/ruff). Updates `ruff` from 0.8.2 to 0.8.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.8.3</h2> <h2>Release Notes</h2> <h3>Preview features</h3> <ul> <li>Fix fstring formatting removing overlong implicit concatenated string in expression part (<a href="https://redirect.github.com/astral-sh/ruff/pull/14811">#14811</a>)</li> <li>[<code>airflow</code>] Add fix to remove deprecated keyword arguments (<code>AIR302</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14887">#14887</a>)</li> <li>[<code>airflow</code>]: Extend rule to include deprecated names for Airflow 3.0 (<code>AIR302</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14765">#14765</a> and <a href="https://redirect.github.com/astral-sh/ruff/pull/14804">#14804</a>)</li> <li>[<code>flake8-bugbear</code>] Improve error messages for <code>except*</code> (<code>B025</code>, <code>B029</code>, <code>B030</code>, <code>B904</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14815">#14815</a>)</li> <li>[<code>flake8-bugbear</code>] <code>itertools.batched()</code> without explicit <code>strict</code> (<code>B911</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14408">#14408</a>)</li> <li>[<code>flake8-use-pathlib</code>] Dotless suffix passed to <code>Path.with_suffix()</code> (<code>PTH210</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14779">#14779</a>)</li> <li>[<code>pylint</code>] Include parentheses and multiple comparators in check for <code>boolean-chained-comparison</code> (<code>PLR1716</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14781">#14781</a>)</li> <li>[<code>ruff</code>] Do not simplify <code>round()</code> calls (<code>RUF046</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14832">#14832</a>)</li> <li>[<code>ruff</code>] Don't emit <code>used-dummy-variable</code> on function parameters (<code>RUF052</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14818">#14818</a>)</li> <li>[<code>ruff</code>] Implement <code>if-key-in-dict-del</code> (<code>RUF051</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14553">#14553</a>)</li> <li>[<code>ruff</code>] Mark autofix for <code>RUF052</code> as always unsafe (<a href="https://redirect.github.com/astral-sh/ruff/pull/14824">#14824</a>)</li> <li>[<code>ruff</code>] Teach autofix for <code>used-dummy-variable</code> about TypeVars etc. (<code>RUF052</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14819">#14819</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-bugbear</code>] Offer unsafe autofix for <code>no-explicit-stacklevel</code> (<code>B028</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14829">#14829</a>)</li> <li>[<code>flake8-pyi</code>] Skip all type definitions in <code>string-or-bytes-too-long</code> (<code>PYI053</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14797">#14797</a>)</li> <li>[<code>pyupgrade</code>] Do not report when a UTF-8 comment is followed by a non-UTF-8 one (<code>UP009</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14728">#14728</a>)</li> <li>[<code>pyupgrade</code>] Mark fixes for <code>convert-typed-dict-functional-to-class</code> and <code>convert-named-tuple-functional-to-class</code> as unsafe if they will remove comments (<code>UP013</code>, <code>UP014</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14842">#14842</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>Raise syntax error for mixing <code>except</code> and <code>except*</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/14895">#14895</a>)</li> <li>[<code>flake8-bugbear</code>] Fix <code>B028</code> to allow <code>stacklevel</code> to be explicitly assigned as a positional argument (<a href="https://redirect.github.com/astral-sh/ruff/pull/14868">#14868</a>)</li> <li>[<code>flake8-bugbear</code>] Skip <code>B028</code> if <code>warnings.warn</code> is called with <code>*args</code> or <code>**kwargs</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/14870">#14870</a>)</li> <li>[<code>flake8-comprehensions</code>] Skip iterables with named expressions in <code>unnecessary-map</code> (<code>C417</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14827">#14827</a>)</li> <li>[<code>flake8-pyi</code>] Also remove <code>self</code> and <code>cls</code>'s annotation (<code>PYI034</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14801">#14801</a>)</li> <li>[<code>flake8-pytest-style</code>] Fix <code>pytest-parametrize-names-wrong-type</code> (<code>PT006</code>) to edit both <code>argnames</code> and <code>argvalues</code> if both of them are single-element tuples/lists (<a href="https://redirect.github.com/astral-sh/ruff/pull/14699">#14699</a>)</li> <li>[<code>perflint</code>] Improve autofix for <code>PERF401</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/14369">#14369</a>)</li> <li>[<code>pylint</code>] Fix <code>PLW1508</code> false positive for default string created via a mult operation (<a href="https://redirect.github.com/astral-sh/ruff/pull/14841">#14841</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/DimitriPapadopoulos"><code>@DimitriPapadopoulos</code></a></li> <li><a href="https://github.com/Glyphack"><code>@Glyphack</code></a></li> <li><a href="https://github.com/InSyncWithFoo"><code>@InSyncWithFoo</code></a></li> <li><a href="https://github.com/Lee-W"><code>@Lee-W</code></a></li> <li><a href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li> <li><a href="https://github.com/UnknownPlatypus"><code>@UnknownPlatypus</code></a></li> <li><a href="https://github.com/carljm"><code>@carljm</code></a></li> <li><a href="https://github.com/cclauss"><code>@cclauss</code></a></li> <li><a href="https://github.com/dcreager"><code>@dcreager</code></a></li> <li><a href="https://github.com/dhruvmanila"><code>@dhruvmanila</code></a></li> <li><a href="https://github.com/dylwil3"><code>@dylwil3</code></a></li> </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.8.3</h2> <h3>Preview features</h3> <ul> <li>Fix fstring formatting removing overlong implicit concatenated string in expression part (<a href="https://redirect.github.com/astral-sh/ruff/pull/14811">#14811</a>)</li> <li>[<code>airflow</code>] Add fix to remove deprecated keyword arguments (<code>AIR302</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14887">#14887</a>)</li> <li>[<code>airflow</code>]: Extend rule to include deprecated names for Airflow 3.0 (<code>AIR302</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14765">#14765</a> and <a href="https://redirect.github.com/astral-sh/ruff/pull/14804">#14804</a>)</li> <li>[<code>flake8-bugbear</code>] Improve error messages for <code>except*</code> (<code>B025</code>, <code>B029</code>, <code>B030</code>, <code>B904</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14815">#14815</a>)</li> <li>[<code>flake8-bugbear</code>] <code>itertools.batched()</code> without explicit <code>strict</code> (<code>B911</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14408">#14408</a>)</li> <li>[<code>flake8-use-pathlib</code>] Dotless suffix passed to <code>Path.with_suffix()</code> (<code>PTH210</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14779">#14779</a>)</li> <li>[<code>pylint</code>] Include parentheses and multiple comparators in check for <code>boolean-chained-comparison</code> (<code>PLR1716</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14781">#14781</a>)</li> <li>[<code>ruff</code>] Do not simplify <code>round()</code> calls (<code>RUF046</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14832">#14832</a>)</li> <li>[<code>ruff</code>] Don't emit <code>used-dummy-variable</code> on function parameters (<code>RUF052</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14818">#14818</a>)</li> <li>[<code>ruff</code>] Implement <code>if-key-in-dict-del</code> (<code>RUF051</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14553">#14553</a>)</li> <li>[<code>ruff</code>] Mark autofix for <code>RUF052</code> as always unsafe (<a href="https://redirect.github.com/astral-sh/ruff/pull/14824">#14824</a>)</li> <li>[<code>ruff</code>] Teach autofix for <code>used-dummy-variable</code> about TypeVars etc. (<code>RUF052</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14819">#14819</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-bugbear</code>] Offer unsafe autofix for <code>no-explicit-stacklevel</code> (<code>B028</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14829">#14829</a>)</li> <li>[<code>flake8-pyi</code>] Skip all type definitions in <code>string-or-bytes-too-long</code> (<code>PYI053</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14797">#14797</a>)</li> <li>[<code>pyupgrade</code>] Do not report when a UTF-8 comment is followed by a non-UTF-8 one (<code>UP009</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14728">#14728</a>)</li> <li>[<code>pyupgrade</code>] Mark fixes for <code>convert-typed-dict-functional-to-class</code> and <code>convert-named-tuple-functional-to-class</code> as unsafe if they will remove comments (<code>UP013</code>, <code>UP014</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14842">#14842</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>Raise syntax error for mixing <code>except</code> and <code>except*</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/14895">#14895</a>)</li> <li>[<code>flake8-bugbear</code>] Fix <code>B028</code> to allow <code>stacklevel</code> to be explicitly assigned as a positional argument (<a href="https://redirect.github.com/astral-sh/ruff/pull/14868">#14868</a>)</li> <li>[<code>flake8-bugbear</code>] Skip <code>B028</code> if <code>warnings.warn</code> is called with <code>*args</code> or <code>**kwargs</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/14870">#14870</a>)</li> <li>[<code>flake8-comprehensions</code>] Skip iterables with named expressions in <code>unnecessary-map</code> (<code>C417</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14827">#14827</a>)</li> <li>[<code>flake8-pyi</code>] Also remove <code>self</code> and <code>cls</code>'s annotation (<code>PYI034</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14801">#14801</a>)</li> <li>[<code>flake8-pytest-style</code>] Fix <code>pytest-parametrize-names-wrong-type</code> (<code>PT006</code>) to edit both <code>argnames</code> and <code>argvalues</code> if both of them are single-element tuples/lists (<a href="https://redirect.github.com/astral-sh/ruff/pull/14699">#14699</a>)</li> <li>[<code>perflint</code>] Improve autofix for <code>PERF401</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/14369">#14369</a>)</li> <li>[<code>pylint</code>] Fix <code>PLW1508</code> false positive for default string created via a mult operation (<a href="https://redirect.github.com/astral-sh/ruff/pull/14841">#14841</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
2de5e3dd83 |
feat(platform): Agent Store V2 (#8874)
# 🌎 Overview AutoGPT Store Version 2 expands on the Pre-Store by enhancing agent discovery, providing richer content presentation, and introducing new user engagement features. The focus is on creating a visually appealing and interactive marketplace that allows users to explore and evaluate agents through images, videos, and detailed descriptions. ### Vision To create a visually compelling and interactive open-source marketplace for autonomous AI agents, where users can easily discover, evaluate, and interact with agents through media-rich listings, ratings, and version history. ### Objectives 📊 Incorporate visuals (icons, images, videos) into agent listings. ⭐ Introduce a rating system and agent run count. 🔄 Provide version history and update logs from creators. 🔍 Improve user experience with advanced search and filtering features. ### 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: Bently <tomnoon9@gmail.com> Co-authored-by: Aarushi <aarushik93@gmail.com> |
||
|
|
e6d728b081 |
build(deps-dev): bump the development-dependencies group in /autogpt_platform/autogpt_libs with 2 updates (#8924)
Bumps the development-dependencies group in /autogpt_platform/autogpt_libs with 2 updates: [redis](https://github.com/redis/redis-py) and [ruff](https://github.com/astral-sh/ruff). Updates `redis` from 5.2.0 to 5.2.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/redis/redis-py/releases">redis's releases</a>.</em></p> <blockquote> <h2>5.2.1</h2> <h1>Changes</h1> <h2>🐛 Bug Fixes</h2> <ul> <li>Fixed unsecured tempfile.mktemp() command usage (<a href="https://redirect.github.com/redis/redis-py/issues/3446">#3446</a>)</li> <li>Fixed bug with SLOWLOG GET response parsing on Redis Software (<a href="https://redirect.github.com/redis/redis-py/issues/3441">#3441</a>)</li> <li>Fixed issue with invoking _close() on closed event loop (<a href="https://redirect.github.com/redis/redis-py/issues/3438">#3438</a>)</li> </ul> <h2>🧰 Maintenance</h2> <ul> <li>Migrate test infrastructure to new custom docker images (<a href="https://redirect.github.com/redis/redis-py/issues/3415">#3415</a>)</li> <li>Fixed flacky test with HEXPIREAT command (<a href="https://redirect.github.com/redis/redis-py/issues/3437">#3437</a>)</li> </ul> <h2>Contributors</h2> <p>We'd like to thank all the contributors who worked on this release!</p> <p><a href="https://github.com/IlianIliev"><code>@IlianIliev</code></a> <a href="https://github.com/uglide"><code>@uglide</code></a> <a href="https://github.com/vladvildanov"><code>@vladvildanov</code></a> <a href="https://github.com/teodorfn"><code>@teodorfn</code></a> <a href="https://github.com/akx"><code>@akx</code></a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
0272d87af3 |
ci(backend): Add poetry.lock check (#8885)
- Resolves #8884 We need to prevent breaking updates to dependency version requirements of `autogpt_libs`. `autogpt_libs/pytroject.toml` and `backend/poetry.lock` are loosely coupled, and to ensure they stay in sync we need an extra check. For now I'm also reverting the breaking update of #8787, otherwise this added CI check will immediately fail. ### Changes - ci(backend): Add `poetry.lock` check - Revert "build(deps): bump pydantic from 2.9.2 to 2.10.2 in /autogpt_platform/autogpt_libs in the production-dependencies group across 1 directory (#8787)" |
||
|
|
0a604a5746 |
build(deps-dev): bump ruff from 0.8.0 to 0.8.1 in /autogpt_platform/autogpt_libs in the development-dependencies group (#8864)
Bumps the development-dependencies group in /autogpt_platform/autogpt_libs with 1 update: [ruff](https://github.com/astral-sh/ruff). Updates `ruff` from 0.8.0 to 0.8.1 <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.8.1</h2> <h2>Release Notes</h2> <h3>Preview features</h3> <ul> <li>Formatter: Avoid invalid syntax for format-spec with quotes for all Python versions (<a href="https://redirect.github.com/astral-sh/ruff/pull/14625">#14625</a>)</li> <li>Formatter: Consider quotes inside format-specs when choosing the quotes for an f-string (<a href="https://redirect.github.com/astral-sh/ruff/pull/14493">#14493</a>)</li> <li>Formatter: Do not consider f-strings with escaped newlines as multiline (<a href="https://redirect.github.com/astral-sh/ruff/pull/14624">#14624</a>)</li> <li>Formatter: Fix f-string formatting in assignment statement (<a href="https://redirect.github.com/astral-sh/ruff/pull/14454">#14454</a>)</li> <li>Formatter: Fix unnecessary space around power operator (<code>**</code>) in overlong f-string expressions (<a href="https://redirect.github.com/astral-sh/ruff/pull/14489">#14489</a>)</li> <li>[<code>airflow</code>] Avoid implicit <code>schedule</code> argument to <code>DAG</code> and <code>@dag</code> (<code>AIR301</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14581">#14581</a>)</li> <li>[<code>flake8-builtins</code>] Exempt private built-in modules (<code>A005</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14505">#14505</a>)</li> <li>[<code>flake8-pytest-style</code>] Fix <code>pytest.mark.parametrize</code> rules to check calls instead of decorators (<a href="https://redirect.github.com/astral-sh/ruff/pull/14515">#14515</a>)</li> <li>[<code>flake8-type-checking</code>] Implement <code>runtime-cast-value</code> (<code>TC006</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14511">#14511</a>)</li> <li>[<code>flake8-type-checking</code>] Implement <code>unquoted-type-alias</code> (<code>TC007</code>) and <code>quoted-type-alias</code> (<code>TC008</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/12927">#12927</a>)</li> <li>[<code>flake8-use-pathlib</code>] Recommend <code>Path.iterdir()</code> over <code>os.listdir()</code> (<code>PTH208</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14509">#14509</a>)</li> <li>[<code>pylint</code>] Extend <code>invalid-envvar-default</code> to detect <code>os.environ.get</code> (<code>PLW1508</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14512">#14512</a>)</li> <li>[<code>pylint</code>] Implement <code>len-test</code> (<code>PLC1802</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14309">#14309</a>)</li> <li>[<code>refurb</code>] Fix bug where methods defined using lambdas were flagged by <code>FURB118</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/14639">#14639</a>)</li> <li>[<code>ruff</code>] Auto-add <code>r</code> prefix when string has no backslashes for <code>unraw-re-pattern</code> (<code>RUF039</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14536">#14536</a>)</li> <li>[<code>ruff</code>] Implement <code>invalid-assert-message-literal-argument</code> (<code>RUF040</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14488">#14488</a>)</li> <li>[<code>ruff</code>] Implement <code>unnecessary-nested-literal</code> (<code>RUF041</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14323">#14323</a>)</li> <li>[<code>ruff</code>] Implement <code>unnecessary-regular-expression</code> (<code>RUF055</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14659">#14659</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>Ignore more rules for stub files (<a href="https://redirect.github.com/astral-sh/ruff/pull/14541">#14541</a>)</li> <li>[<code>pep8-naming</code>] Eliminate false positives for single-letter names (<code>N811</code>, <code>N814</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14584">#14584</a>)</li> <li>[<code>pyflakes</code>] Avoid false positives in <code>@no_type_check</code> contexts (<code>F821</code>, <code>F722</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14615">#14615</a>)</li> <li>[<code>ruff</code>] Detect redirected-noqa in file-level comments (<code>RUF101</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14635">#14635</a>)</li> <li>[<code>ruff</code>] Mark fixes for <code>unsorted-dunder-all</code> and <code>unsorted-dunder-slots</code> as unsafe when there are complex comments in the sequence (<code>RUF022</code>, <code>RUF023</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14560">#14560</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>Avoid fixing code to <code>None | None</code> for <code>redundant-none-literal</code> (<code>PYI061</code>) and <code>never-union</code> (<code>RUF020</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14583">#14583</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/14589">#14589</a>)</li> <li>[<code>flake8-bugbear</code>] Fix <code>mutable-contextvar-default</code> to resolve annotated function calls properly (<code>B039</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14532">#14532</a>)</li> <li>[<code>flake8-pyi</code>, <code>ruff</code>] Fix traversal of nested literals and unions (<code>PYI016</code>, <code>PYI051</code>, <code>PYI055</code>, <code>PYI062</code>, <code>RUF041</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14641">#14641</a>)</li> <li>[<code>flake8-pyi</code>] Avoid rewriting invalid type expressions in <code>unnecessary-type-union</code> (<code>PYI055</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14660">#14660</a>)</li> <li>[<code>flake8-type-checking</code>] Avoid syntax errors and type checking problem for quoted annotations autofix (<code>TC003</code>, <code>TC006</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14634">#14634</a>)</li> <li>[<code>pylint</code>] Do not wrap function calls in parentheses in the fix for unnecessary-dunder-call (<code>PLC2801</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14601">#14601</a>)</li> <li>[<code>ruff</code>] Handle <code>attrs</code>'s <code>auto_attribs</code> correctly (<code>RUF009</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14520">#14520</a>)</li> </ul> <h2>Contributors</h2> <ul> <li><a href="https://github.com/AlexWaygood"><code>@AlexWaygood</code></a></li> <li><a href="https://github.com/Daverball"><code>@Daverball</code></a></li> <li><a href="https://github.com/Glyphack"><code>@Glyphack</code></a></li> <li><a href="https://github.com/InSyncWithFoo"><code>@InSyncWithFoo</code></a></li> <li><a href="https://github.com/Lokejoke"><code>@Lokejoke</code></a></li> <li><a href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li> <li><a href="https://github.com/cake-monotone"><code>@cake-monotone</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.8.1</h2> <h3>Preview features</h3> <ul> <li>Formatter: Avoid invalid syntax for format-spec with quotes for all Python versions (<a href="https://redirect.github.com/astral-sh/ruff/pull/14625">#14625</a>)</li> <li>Formatter: Consider quotes inside format-specs when choosing the quotes for an f-string (<a href="https://redirect.github.com/astral-sh/ruff/pull/14493">#14493</a>)</li> <li>Formatter: Do not consider f-strings with escaped newlines as multiline (<a href="https://redirect.github.com/astral-sh/ruff/pull/14624">#14624</a>)</li> <li>Formatter: Fix f-string formatting in assignment statement (<a href="https://redirect.github.com/astral-sh/ruff/pull/14454">#14454</a>)</li> <li>Formatter: Fix unnecessary space around power operator (<code>**</code>) in overlong f-string expressions (<a href="https://redirect.github.com/astral-sh/ruff/pull/14489">#14489</a>)</li> <li>[<code>airflow</code>] Avoid implicit <code>schedule</code> argument to <code>DAG</code> and <code>@dag</code> (<code>AIR301</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14581">#14581</a>)</li> <li>[<code>flake8-builtins</code>] Exempt private built-in modules (<code>A005</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14505">#14505</a>)</li> <li>[<code>flake8-pytest-style</code>] Fix <code>pytest.mark.parametrize</code> rules to check calls instead of decorators (<a href="https://redirect.github.com/astral-sh/ruff/pull/14515">#14515</a>)</li> <li>[<code>flake8-type-checking</code>] Implement <code>runtime-cast-value</code> (<code>TC006</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14511">#14511</a>)</li> <li>[<code>flake8-type-checking</code>] Implement <code>unquoted-type-alias</code> (<code>TC007</code>) and <code>quoted-type-alias</code> (<code>TC008</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/12927">#12927</a>)</li> <li>[<code>flake8-use-pathlib</code>] Recommend <code>Path.iterdir()</code> over <code>os.listdir()</code> (<code>PTH208</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14509">#14509</a>)</li> <li>[<code>pylint</code>] Extend <code>invalid-envvar-default</code> to detect <code>os.environ.get</code> (<code>PLW1508</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14512">#14512</a>)</li> <li>[<code>pylint</code>] Implement <code>len-test</code> (<code>PLC1802</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14309">#14309</a>)</li> <li>[<code>refurb</code>] Fix bug where methods defined using lambdas were flagged by <code>FURB118</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/14639">#14639</a>)</li> <li>[<code>ruff</code>] Auto-add <code>r</code> prefix when string has no backslashes for <code>unraw-re-pattern</code> (<code>RUF039</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14536">#14536</a>)</li> <li>[<code>ruff</code>] Implement <code>invalid-assert-message-literal-argument</code> (<code>RUF040</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14488">#14488</a>)</li> <li>[<code>ruff</code>] Implement <code>unnecessary-nested-literal</code> (<code>RUF041</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14323">#14323</a>)</li> <li>[<code>ruff</code>] Implement <code>unnecessary-regular-expression</code> (<code>RUF055</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14659">#14659</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>Ignore more rules for stub files (<a href="https://redirect.github.com/astral-sh/ruff/pull/14541">#14541</a>)</li> <li>[<code>pep8-naming</code>] Eliminate false positives for single-letter names (<code>N811</code>, <code>N814</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14584">#14584</a>)</li> <li>[<code>pyflakes</code>] Avoid false positives in <code>@no_type_check</code> contexts (<code>F821</code>, <code>F722</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14615">#14615</a>)</li> <li>[<code>ruff</code>] Detect redirected-noqa in file-level comments (<code>RUF101</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14635">#14635</a>)</li> <li>[<code>ruff</code>] Mark fixes for <code>unsorted-dunder-all</code> and <code>unsorted-dunder-slots</code> as unsafe when there are complex comments in the sequence (<code>RUF022</code>, <code>RUF023</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14560">#14560</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>Avoid fixing code to <code>None | None</code> for <code>redundant-none-literal</code> (<code>PYI061</code>) and <code>never-union</code> (<code>RUF020</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14583">#14583</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/14589">#14589</a>)</li> <li>[<code>flake8-bugbear</code>] Fix <code>mutable-contextvar-default</code> to resolve annotated function calls properly (<code>B039</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14532">#14532</a>)</li> <li>[<code>flake8-pyi</code>, <code>ruff</code>] Fix traversal of nested literals and unions (<code>PYI016</code>, <code>PYI051</code>, <code>PYI055</code>, <code>PYI062</code>, <code>RUF041</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14641">#14641</a>)</li> <li>[<code>flake8-pyi</code>] Avoid rewriting invalid type expressions in <code>unnecessary-type-union</code> (<code>PYI055</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14660">#14660</a>)</li> <li>[<code>flake8-type-checking</code>] Avoid syntax errors and type checking problem for quoted annotations autofix (<code>TC003</code>, <code>TC006</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14634">#14634</a>)</li> <li>[<code>pylint</code>] Do not wrap function calls in parentheses in the fix for unnecessary-dunder-call (<code>PLC2801</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14601">#14601</a>)</li> <li>[<code>ruff</code>] Handle <code>attrs</code>'s <code>auto_attribs</code> correctly (<code>RUF009</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/14520">#14520</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
de1cd6c295 |
chore(blocks/fal): Use dict instead of Dict (#8855)
Replace Dict with dict ### Changes 🏗️ Replace Dict with dict ### 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> |