mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-02-15 17:25:04 -05:00
1704812f50442f04007f8bf208a0a2d8a8c10708
76 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
d09f1532a4 |
feat(frontend): replace legacy builder with new flow editor
(#12081) ### Changes 🏗️ This PR completes the migration from the legacy builder to the new Flow editor by removing all legacy code and feature flags. **Removed:** - Old builder view toggle functionality (`BuilderViewTabs.tsx`) - Legacy debug panel (`RightSidebar.tsx`) - Feature flags: `NEW_FLOW_EDITOR` and `BUILDER_VIEW_SWITCH` - `useBuilderView` hook and related view-switching logic **Updated:** - Simplified `build/page.tsx` to always render the new Flow editor - Added CSS styling (`flow.css`) to properly render Phosphor icons in React Flow handles **Tests:** - Skipped e2e test suite in `build.spec.ts` (legacy builder tests) - Follow-up PR (#12082) will add new e2e tests for the Flow editor ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Create a new flow and verify it loads correctly - [x] Add nodes and connections to verify basic functionality works - [x] Verify that node handles render correctly with the new CSS - [x] Check that the UI is clean without the old debug panel or view toggles #### For configuration changes: - [x] `.env.default` is updated or already compatible with my changes - [x] `docker-compose.yml` is updated or already compatible with my changes |
||
|
|
7d4c020a9b |
feat(chat): implement AI SDK integration with custom streaming response handling (#11901)
### Changes 🏗️ - Added AI SDK integration for chat streaming with proper message handling - Implemented custom to_sse method in StreamToolOutputAvailable to exclude non-spec fields - Modified stream_chat_completion to reuse message IDs for tool call continuations - Created new Copilot 2.0 UI with AI SDK React components - Added streamdown and related packages for markdown rendering - Built reusable conversation and message components for the chat interface - Added support for tool output display in the chat UI ### 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] Start a new chat session and verify streaming works correctly - [x] Test tool calls and verify they display properly in the UI - [x] Verify message continuations don't create duplicate messages - [x] Test markdown rendering with code blocks and other formatting - [x] Verify the UI is responsive and scrolls correctly #### For configuration changes: - [x] `.env.default` is updated or already compatible with my changes - [x] `docker-compose.yml` is updated or already compatible with my changes - [x] I have included a list of my configuration changes in the PR description (under **Changes**) --------- Co-authored-by: Lluis Agusti <hi@llu.lu> Co-authored-by: Ubbe <hi@ubbe.dev> |
||
|
|
582c6cad36 |
fix(e2e): Make E2E test data deterministic and fix flaky tests (#11890)
## Summary Fixes flaky E2E marketplace and library tests that were causing PRs to be removed from the merge queue. ## Root Cause 1. **Test data was probabilistic** - `e2e_test_data.py` used random chances (40% approve, then 20-50% feature), which could result in 0 featured agents 2. **Library pagination threshold wrong** - Checked `>= 10`, but page size is 20 3. **Fixed timeouts** - Used `waitForTimeout(2000)` / `waitForTimeout(10000)` instead of proper waits ## Changes ### Backend (`e2e_test_data.py`) - Add guaranteed minimums: 8 featured agents, 5 featured creators, 10 top agents - First N submissions are deterministically approved and featured - Increase agents per user from 15 → 25 (for pagination with page_size=20) - Fix library agent creation to use constants instead of hardcoded `10` ### Frontend Tests - `library.spec.ts`: Fix pagination threshold to `PAGE_SIZE` (20) - `library.page.ts`: Replace 2s timeout with `networkidle` + `waitForFunction` - `marketplace.page.ts`: Add `networkidle` wait, 30s waits in `getFirst*` methods - `marketplace.spec.ts`: Replace 10s timeout with `waitForFunction` - `marketplace-creator.spec.ts`: Add `networkidle` + element waits ## Related - Closes SECRT-1848, SECRT-1849 - Should unblock #11841 and other PRs in merge queue --------- Co-authored-by: Ubbe <hi@ubbe.dev> |
||
|
|
0953983944 |
feat(platform): disable onboarding redirects and add $5 signup bonus (#11862)
Disable automatic onboarding redirects on signup/login while keeping the
checklist/wallet functional. Users now receive $5 (500 credits) on their
first visit to /copilot.
### Changes 🏗️
- **Frontend**: `shouldShowOnboarding()` now returns `false`, disabling
auto-redirects to `/onboarding`
- **Backend**: Added `VISIT_COPILOT` onboarding step with 500 credit
($5) reward
- **Frontend**: Copilot page automatically completes `VISIT_COPILOT`
step on mount
- **Database**: Migration to add `VISIT_COPILOT` to `OnboardingStep`
enum
NOTE: /onboarding/1-welcome -> /library now as shouldShowOnboardin is
always false
Users land directly on `/copilot` after signup/login and receive $5
invisibly (not shown in checklist UI).
### 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] New user signup (email/password) → lands on `/copilot`, wallet
shows 500 credits
- [x] Verified credits are only granted once (idempotent via onboarding
reward mechanism)
- [x] Existing user login (already granted flag set) → lands on
`/copilot`, no duplicate credits
- [x] Checklist/wallet remains functional
#### For configuration changes:
- [x] `.env.default` is updated or already compatible with my changes
- [x] `docker-compose.yml` is updated or already compatible with my
changes
- [x] I have included a list of my configuration changes in the PR
description (under **Changes**)
No configuration changes required.
---
OPEN-2967
🤖 Generated with [Claude Code](https://claude.ai/code)
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Introduces a new onboarding step and adjusts onboarding flow.
>
> - Adds `VISIT_COPILOT` onboarding step (+500 credits) with DB enum
migration and API/type updates
> - Copilot page auto-completes `VISIT_COPILOT` on mount to grant the
welcome bonus
> - Changes `/onboarding/enabled` to require user context and return
`false` when `CHAT` feature is enabled (skips legacy onboarding)
> - Wallet now refreshes credits on any onboarding `step_completed`
notification; confetti limited to visible tasks
> - Test flows updated to accept redirects to `copilot`/`library` and
verify authenticated state
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
|
||
|
|
b0953654d9 |
feat(frontend): add integration testing setup with Vitest, MSW, and RTL (#11813)
### Changes 🏗️ - Added Vitest and React Testing Library for frontend unit testing - Configured MSW (Mock Service Worker) for API mocking in tests - Created test utilities and setup files for integration tests - Added comprehensive testing documentation in `AGENTS.md` - Updated Orval configuration to generate MSW mock handlers - Added mock server and browser implementations for development testing ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Run `pnpm test:unit` to verify tests pass - [x] Verify MSW mock handlers are generated correctly - [x] Check that test utilities work with sample component tests #### For configuration changes: - [x] `.env.default` is updated or already compatible with my changes - [x] `docker-compose.yml` is updated or already compatible with my changes - [x] I have included a list of my configuration changes in the PR description (under **Changes**) |
||
|
|
c5069ca48f |
fix(frontend): chat UX improvements (#11804)
### Changes 🏗️ <img width="1920" height="998" alt="Screenshot 2026-01-19 at 22 14 51" src="https://github.com/user-attachments/assets/ecd1c241-6f77-4702-9774-5e58806b0b64" /> This PR lays the groundwork for the new UX of AutoGPT Copilot. - moves the Copilot to its own route `/copilot` - Makes the Copilot the homepage when enabled - Updates the labelling of the homepage icons - Makes the Library the homepage when Copilot is disabled - Improves Copilot's: - session handling - styles and UX - message parsing ### Other improvements - Improve the log out UX by adding a new `/logout` page and using a re-direct ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Run locally and test the above <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Launches the new Copilot experience and aligns API behavior with the UI. > > - **Routing/Home**: Add `/copilot` with `CopilotShell` (desktop sidebar + mobile drawer), make homepage route flag-driven; update login/signup/error redirects and root page to use `getHomepageRoute`. > - **Chat UX**: Replace legacy chat with `components/contextual/Chat/*` (new message list, bubbles, tool call/response formatting, stop button, initial-prompt handling, refined streaming/error handling); remove old platform chat components. > - **Sessions**: Add paginated session list (infinite load), auto-select/create logic, mobile/desktop navigation, and improved session fetching/claiming guards. > - **Auth/Logout**: New `/logout` flow with delayed redirect; gate various queries on auth state and logout-in-progress. > - **Backend**: `GET /api/chat/sessions/{id}` returns `null` instead of 404; service saves assistant message on `StreamFinish` to avoid loss and prevents duplicate saves; OpenAPI updated accordingly. > - **Misc**: Minor UI polish in library modals, loader styling, docs (CONTRIBUTING) additions, and small formatting fixes in block docs generator. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 1b4776dcf52ccd6987830ada3a58a87a160ce36c. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> |
||
|
|
5d0cd88d98 |
fix(backend): Use unqualified vector type for pgvector queries (#11818)
## Summary
- Remove explicit schema qualification (`{schema}.vector` and
`OPERATOR({schema}.<=>)`) from pgvector queries in `embeddings.py` and
`hybrid_search.py`
- Use unqualified `::vector` type cast and `<=>` operator which work
because pgvector is in the search_path on all environments
## Problem
The previous approach tried to explicitly qualify the vector type with
schema names, but this failed because:
- **CI environment**: pgvector is in `public` schema → `platform.vector`
doesn't exist
- **Dev (Supabase)**: pgvector is in `platform` schema → `public.vector`
doesn't exist
## Solution
Use unqualified `::vector` and `<=>` operator. PostgreSQL resolves these
via `search_path`, which includes the schema where pgvector is installed
on all environments.
Tested on both local and dev environments with a test script that
verified:
- ✅ Unqualified `::vector` type cast
- ✅ Unqualified `<=>` operator in ORDER BY
- ✅ Unqualified `<=>` in SELECT (similarity calculation)
- ✅ Combined query patterns matching actual usage
## Test plan
- [ ] CI tests pass
- [ ] Marketplace approval works on dev after deployment
Fixes: AUTOGPT-SERVER-763, AUTOGPT-SERVER-764, AUTOGPT-SERVER-76B
|
||
|
|
088b9998dc |
fix(frontend): Fix flaky agent-activity tests by targeting correct agent (#11790)
This PR fixes flaky agent-activity Playwright tests that were failing intermittently in CI. Closes #11789 ### Changes 🏗️ - **Navigate to specific agent by name**: Replace `LibraryPage.clickFirstAgent(page)` with `LibraryPage.navigateToAgentByName(page, "Test Agent")` to ensure we're testing the correct agent rather than relying on the first agent in the list - **Add retry mechanism for async data loading**: Replace direct visibility check with `expect(...).toPass({ timeout: 15000 })` pattern to properly handle asynchronous agent data fetching - **Increase timeout**: Extended timeout from 8000ms to 15000ms to accommodate slower CI environments ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Verified the test file syntax is correct - [x] Changes target the correct file (`autogpt_platform/frontend/src/tests/agent-activity.spec.ts`) - [x] The retry mechanism follows Playwright best practices using `toPass()` #### For configuration changes: - [x] `.env.default` is updated or already compatible with my changes (N/A - no config changes) - [x] `docker-compose.yml` is updated or already compatible with my changes (N/A - no config changes) - [x] I have included a list of my configuration changes in the PR description (under **Changes**) (N/A - no config changes) --------- Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Nicholas Tindle <ntindle@users.noreply.github.com> |
||
|
|
375d33cca9 |
fix(frontend): agent credentials improvements (#11763)
## Changes 🏗️ ### System credentials in Run Modal We had the issue that "system" credentials were mixed with "user" credentials in the run agent modal: #### Before <img width="400" height="466" alt="Screenshot 2026-01-14 at 19 05 56" src="https://github.com/user-attachments/assets/9d1ee766-5004-491f-ae14-a0cf89a9118e" /> This created confusion among the users. This "system" credentials are supplied by AutoGPT ( _most of the time_ ) and a user running an agent should not bother with them ( _unless they want to change them_ ). For example in this case, the credential that matters is the **Google** one 🙇🏽 ### After <img width="400" height="350" alt="Screenshot 2026-01-14 at 19 04 12" src="https://github.com/user-attachments/assets/e2bbc015-ce4c-496c-a76f-293c01a11c6f" /> <img width="400" height="672" alt="Screenshot 2026-01-14 at 19 04 19" src="https://github.com/user-attachments/assets/d704dae2-ecb2-4306-bd04-3d812fed4401" /> "System" credentials are collapsed by default, reducing noise in the Task Credentials section. The user can still see and change them by expanding the accordion. <img width="400" height="190" alt="Screenshot 2026-01-14 at 19 04 27" src="https://github.com/user-attachments/assets/edc69612-4588-48e4-981a-f59c26cfa390" /> If some "system" credentials are missing, there is a red label indicating so, it wasn't that obvious with the previous implementation, <img width="400" height="309" alt="Screenshot 2026-01-14 at 19 04 30" src="https://github.com/user-attachments/assets/f27081c7-40ad-4757-97b3-f29636616fc2" /> ### New endpoint There is a new REST endpoint, `GET /providers/system`, to list system credential providers so it is easy to access in the Front-end to group them together vs user ones. ### Other improvements #### `<CredentialsInput />` refinements <img width="715" height="200" alt="Screenshot 2026-01-14 at 19 09 31" src="https://github.com/user-attachments/assets/01b39b16-25f3-428d-a6c8-da608038a38b" /> Use a normal browser `<select>` for the Credentials Dropdown ( _when you have more than 1 for a provider_ ). This simplifies the UI shennagians a lot and provides a better UX in 📱 ( _eventually we should move all our selects to the native ones as they are much better for mobile and touch screens and less code to maintain our end_ ). I also renamed some files for clarity and tidied up some of the existing logic. #### Other - Fix **Open telemetry** warnings on the server console by making the packages external - Fix `require-in-the-middle` console warnings - Prettier tidy ups ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Run the app locally and test the above |
||
|
|
36fb1ea004 |
fix(platform): store submission validation and marketplace improvements (#11706)
## Summary Major improvements to AutoGPT Platform store submission deletion, creator detection, and marketplace functionality. This PR addresses critical issues with submission management and significantly improves performance. ### 🔧 **Store Submission Deletion Issues Fixed** **Problems Solved**: - ❌ **Wrong deletion granularity**: Deleting entire `StoreListing` (all versions) when users expected to delete individual submissions - ❌ **"Graph not found" errors**: Cascade deletion removing AgentGraphs that were still referenced - ❌ **Multiple submissions deleted**: When removing one submission, all submissions for that agent were removed - ❌ **Deletion of approved content**: Users could accidentally remove live store content **Solutions Implemented**: - ✅ **Granular deletion**: Now deletes individual `StoreListingVersion` records instead of entire listings - ✅ **Protected approved content**: Prevents deletion of approved submissions to keep store content safe - ✅ **Automatic cleanup**: Empty listings are automatically removed when last version is deleted - ✅ **Simplified logic**: Reduced deletion function from 85 lines to 32 lines for better maintainability ### 🔧 **Creator Detection Performance Issues Fixed** **Problems Solved**: - ❌ **Inefficient API calls**: Fetching ALL user submissions just to check if they own one specific agent - ❌ **Complex logic**: Convoluted creator detection requiring multiple database queries - ❌ **Performance impact**: Especially bad for non-creators who would never need this data **Solutions Implemented**: - ✅ **Added `owner_user_id` field**: Direct ownership reference in `LibraryAgent` model - ✅ **Simple ownership check**: `owner_user_id === user.id` instead of complex submission fetching - ✅ **90%+ performance improvement**: Massive reduction in unnecessary API calls for non-creators - ✅ **Optimized data fetching**: Only fetch submissions when user is creator AND has marketplace listing ### 🔧 **Original Store Submission Validation Issues (BUILDER-59F)** Fixes "Agent not found for this user. User ID: ..., Agent ID: , Version: 0" errors: - **Backend validation**: Added Pydantic validation for `agent_id` (min_length=1) and `agent_version` (>0) - **Frontend validation**: Pre-submission validation with user-friendly error messages - **Agent selection flow**: Fixed `agentId` not being set from `selectedAgentId` - **State management**: Prevented state reset conflicts clearing selected agent ### 🔧 **Marketplace Display Improvements** Enhanced version history and changelog display: - Updated title from "Changelog" to "Version history" - Added "Last updated X ago" with proper relative time formatting - Display version numbers as "Version X.0" format - Replaced all hardcoded values with dynamic API data - Improved text sizes and layout structure ### 📁 **Files Changed** **Backend Changes**: - `backend/api/features/store/db.py` - Simplified deletion logic, added approval protection - `backend/api/features/store/model.py` - Added `listing_id` field, Pydantic validation - `backend/api/features/library/model.py` - Added `owner_user_id` field for efficient creator detection - All test files - Updated with new required fields **Frontend Changes**: - `useMarketplaceUpdate.ts` - Optimized creator detection logic - `MainDashboardPage.tsx` - Added `listing_id` mapping for proper type safety - `useAgentTableRow.ts` - Updated deletion logic to use `store_listing_version_id` - `usePublishAgentModal.ts` - Fixed state reset conflicts - Marketplace components - Enhanced version history display ### ✅ **Benefits** **Performance**: - 🚀 **90%+ reduction** in unnecessary API calls for creator detection - 🚀 **Instant ownership checks** (no database queries needed) - 🚀 **Optimized submissions fetching** (only when needed) **User Experience**: - ✅ **Granular submission control** (delete individual versions, not entire listings) - ✅ **Protected approved content** (prevents accidental store content removal) - ✅ **Better error prevention** (no more "Graph not found" errors) - ✅ **Clear validation messages** (user-friendly error feedback) **Code Quality**: - ✅ **Simplified deletion logic** (85 lines → 32 lines) - ✅ **Better type safety** (proper `listing_id` field usage) - ✅ **Cleaner creator detection** (explicit ownership vs inferred) - ✅ **Automatic cleanup** (empty listings removed automatically) ### 🧪 **Testing** - [x] Backend validation rejects empty agent_id and zero agent_version - [x] Frontend TypeScript compilation passes - [x] Store submission works from both creator dashboard and "become a creator" flows - [x] Granular submission deletion works correctly - [x] Approved submissions are protected from deletion - [x] Creator detection is fast and accurate - [x] Marketplace displays version history correctly **Breaking Changes**: None - All changes are additive and backwards compatible. Fixes critical submission deletion issues, improves performance significantly, and enhances user experience across the platform. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Agent ownership is now tracked and exposed across the platform. * Store submissions and versions now include a required listing_id to preserve listing linkage. * **Bug Fixes** * Prevent deletion of APPROVED submissions; remove empty listings after deletions. * Edits restricted to PENDING submissions with clearer invalid-operation messages. * **Improvements** * Stronger publish validation and UX guards; deduplicated images and modal open/reset refinements. * Version history shows relative "Last updated" times and version badges. * **Tests** * E2E tests updated to target pending-submission flows for edit/delete. <sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub> <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
fc25e008b3 |
feat(frontend): update library agent cards to use DS (#11720)
## Changes 🏗️ <img width="700" height="838" alt="Screenshot 2026-01-07 at 16 11 04" src="https://github.com/user-attachments/assets/0b38d2e1-d4a8-4036-862c-b35c82c496c2" /> - Update the agent library cards to new designs - Update page to use Design System components - Allow to edit/delete/duplicate agents on the library list page - Add missing actions on library agent detail page ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Run locally and test the above <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Marketplace info shown on agent cards and improved favoriting with optimistic UI and feedback. * Delete agent and delete schedule flows with confirmation dialogs. * **Refactor** * New composable form system, modernized upload dialog, streamlined search bar, and multiple library components converted to named exports with layout tweaks. * New agent card menu and favorite button UI. * **Chores** * Removed notification UI and dropped a drag-drop dependency. * **Tests** * Increased timeouts and stabilized upload/pagination flows. <sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub> <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
3dbc03e488 |
feat(platform): OAuth API & Single Sign-On (#11617)
We want to provide Single Sign-On for multiple AutoGPT apps that use the Platform as their backend. ### Changes 🏗️ Backend: - DB + logic + API for OAuth flow (w/ tests) - DB schema additions for OAuth apps, codes, and tokens - Token creation/validation/management logic - OAuth flow endpoints (app info, authorize, token exchange, introspect, revoke) - E2E OAuth API integration tests - Other OAuth-related endpoints (upload app logo, list owned apps, external `/me` endpoint) - App logo asset management - Adjust external API middleware to support auth with access token - Expired token clean-up job - Add `OAUTH_TOKEN_CLEANUP_INTERVAL_HOURS` setting (optional) - `poetry run oauth-tool`: dev tool to test the OAuth flows and register new OAuth apps - `poetry run export-api-schema`: dev tool to quickly export the OpenAPI schema (much quicker than spinning up the backend) Frontend: - Frontend UI for app authorization (`/auth/authorize`) - Re-redirect after login/signup - Frontend flow to batch-auth integrations on request of the client app (`/auth/integrations/setup-wizard`) - Debug `CredentialInputs` component - Add `/profile/oauth-apps` management page - Add `isOurProblem` flag to `ErrorCard` to hide action buttons when the error isn't our fault - Add `showTitle` flag to `CredentialsInput` to hide built-in title for layout reasons DX: - Add [API guide](https://github.com/Significant-Gravitas/AutoGPT/blob/pwuts/sso/docs/content/platform/integrating/api-guide.md) and [OAuth guide](https://github.com/Significant-Gravitas/AutoGPT/blob/pwuts/sso/docs/content/platform/integrating/oauth-guide.md) ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Manually verify test coverage of OAuth API tests - Test `/auth/authorize` using `poetry run oauth-tool test-server` - [x] Works - [x] Looks okay - Test `/auth/integrations/setup-wizard` using `poetry run oauth-tool test-server` - [x] Works - [x] Looks okay - Test `/profile/oauth-apps` page - [x] All owned OAuth apps show up - [x] Enabling/disabling apps works - [ ] ~~Uploading logos works~~ can only test this once deployed to dev #### For configuration changes: - [x] `.env.default` is updated or already compatible with my changes - [x] `docker-compose.yml` is updated or already compatible with my changes - [x] I have included a list of my configuration changes in the PR description (under **Changes**) |
||
|
|
979d7c3b74 |
feat(blocks): Add 4 new GitHub webhook trigger blocks (#11588)
I want to be able to automate some actions on social media or our sevrver in response to actions from discord <!-- Clearly explain the need for these changes: --> ### Changes 🏗️ Add trigger blocks for common GitHub events to enable OSS automation: - GithubReleaseTriggerBlock: Trigger on release events (published, etc.) - GithubStarTriggerBlock: Trigger on star events for milestone celebrations - GithubIssuesTriggerBlock: Trigger on issue events for triage/notifications - GithubDiscussionTriggerBlock: Trigger on discussion events for Q&A sync <!-- 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 Stars - [x] Test Discussions - [x] Test Issues - [x] Test Release 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> |
||
|
|
1ab66eaed4 |
fix(frontend): login/signup pages away redirects (#11430)
## Changes 🏗️ When the user is logged in and tries to navigate to `/login` or `/signup` manually, redirect them away to `/marketplace`. ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Login - [x] Go to `/login` or `/signup` - [x] You are redirected back into `/marketplace` |
||
|
|
be01a1316a |
fix(tests/frontend): resolve flaky test due to duplicate heading elements on marketplace page (#11369)
This PR fixes a flaky test issue in the signup flow where Playwright's
strict mode was failing due to duplicate heading elements on the
marketplace page.
### Problem
The test was failing intermittently with the following error:
```
Error: strict mode violation: getByText('Bringing you AI agents designed by thinkers from around the world') resolved to 2 elements
```
This occurred because the marketplace page contains two identical `<h3>`
elements with the same text, causing Playwright's strict mode to throw
an error when trying to select a single element.
### Checklist 📋
#### For code changes:
- [x] I have clearly listed my changes in the PR description
- [x] I have made a test plan
- [x] I have tested my changes according to the test plan:
- [x] Run E2E tests locally multiple times to ensure no flakiness
- [x] Check CI pipeline runs successfully
|
||
|
|
8e83586d13 |
feat(frontend): Cookie consent banner and settings (#11306)
Implements a cookie consent banner and settings modal for GDPR compliance, allowing users to manage preferences for analytics and monitoring cookies. Integrates consent checks with Sentry, Vercel Analytics, and Google Analytics, ensuring tracking is only enabled with user permission. Refactors dialog components for improved layout and adds consent management utilities and hooks. #### For code changes: - [x] Banner appears at bottom of page on first visit with rounded corners and proper spacing (40px margins) - [x] Banner shows three buttons: "Reject All", "Settings", and "Accept All" - [x] Clicking "Accept All" hides banner and enables analytics/monitoring - [x] Clicking "Reject All" hides banner and keeps analytics/monitoring disabled - [x] Banner does not reappear after consent is given (check localStorage: `autogpt_cookie_consent`) **Cookie Settings Modal:** - [x] Clicking "Settings" button opens the Cookie Settings modal - [x] Modal displays three categories: Essential Cookies (always active), Analytics & Performance (toggle), Error Monitoring & Session Replay (toggle) - [x] Clicking "Save Preferences" saves custom settings and closes modal - [x] Clicking "Accept All" enables all cookies and closes modal - [x] Clicking "Reject All" disables optional cookies and closes modal - [x] Modal can be closed with X button or clicking outside **Consent Persistence:** - [x] Refresh page after giving consent - banner should not reappear - [x] Clear localStorage and refresh - banner should reappear - [x] Consent choices persist across browser sessions <img width="1123" height="126" alt="image" src="https://github.com/user-attachments/assets/7425efab-b5cc-4449-802d-0e12bd65053b" /> <img width="1124" height="372" alt="image" src="https://github.com/user-attachments/assets/2f28919a-97e8-44f5-9021-70d3836bb996" /> |
||
|
|
37b3e4e82e |
feat(blocks)!: Update Exa search block to match latest API specification (#11185)
BREAKING CHANGE: Removed deprecated use_auto_prompt field from Input
schema. Existing workflows using this field will need to be updated to
use the type field set to "auto" instead.
## Summary of Changes 📝
This PR comprehensively updates all Exa search blocks to match the
latest Exa API specification and adds significant new functionality
through the Websets API integration.
### Core API Updates 🔄
- **Migration to Exa SDK**: Replaced manual API calls with the official
`exa_py` AsyncExa SDK across all blocks for better reliability and
maintainability
- **Removed deprecated fields**: Eliminated
`use_auto_prompt`/`useAutoprompt` field (breaking change)
- **Fixed incomplete field definitions**: Corrected `user_location`
field definition
- **Added new input fields**: Added `moderation` and `context` fields
for enhanced content filtering
### Enhanced Content Settings 🛠️
- **Text field improvements**: Support both boolean and advanced object
configurations
- **New content options**:
- Added `livecrawl` settings (never, fallback, always, preferred)
- Added `subpages` support for deeper content retrieval
- Added `extras` settings for links and images
- Added `context` settings for additional contextual information
- **Updated settings**: Enhanced `highlight` and `summary`
configurations with new query and schema options
### Comprehensive Cost Tracking 💰
- Added detailed cost tracking models:
- `CostDollars` for monetary costs
- `CostCredits` for API credit tracking
- `CostDuration` for time-based costs
- New output fields: `request_id`, `resolved_search_type`,
`cost_dollars`
- Improved response handling to conditionally yield fields based on
availability
### New Websets API Integration 🚀
Added eight new specialized blocks for Exa's Websets API:
- **`websets.py`**: Core webset management (create, get, list, delete)
- **`websets_search.py`**: Search operations within websets
- **`websets_items.py`**: Individual item management (add, get, update,
delete)
- **`websets_enrichment.py`**: Data enrichment operations
- **`websets_import_export.py`**: Bulk import/export functionality
- **`websets_monitor.py`**: Monitor and track webset changes
- **`websets_polling.py`**: Poll for updates and changes
### New Special-Purpose Blocks 🎯
- **`code_context.py`**: Code search capabilities for finding relevant
code snippets from open source repositories, documentation, and Stack
Overflow
- **`research.py`**: Asynchronous research capabilities that explore the
web, gather sources, synthesize findings, and return structured results
with citations
### Code Organization Improvements 📁
- **Removed legacy code**: Deleted `model.py` file containing deprecated
API models
- **Centralized helpers**: Consolidated shared models and utilities in
`helpers.py`
- **Improved modularity**: Each webset operation is now in its own
dedicated file
### Other Changes 🔧
- Updated `.gitignore` for better development workflow
- Updated `CLAUDE.md` with project-specific instructions
- Updated documentation in `docs/content/platform/new_blocks.md` with
error handling, data models, and file input guidelines
- Improved webhook block implementations with SDK integration
### Files Changed 📂
- **Modified (11 files)**:
- `.gitignore`
- `autogpt_platform/CLAUDE.md`
- `autogpt_platform/backend/backend/blocks/exa/answers.py`
- `autogpt_platform/backend/backend/blocks/exa/contents.py`
- `autogpt_platform/backend/backend/blocks/exa/helpers.py`
- `autogpt_platform/backend/backend/blocks/exa/search.py`
- `autogpt_platform/backend/backend/blocks/exa/similar.py`
- `autogpt_platform/backend/backend/blocks/exa/webhook_blocks.py`
- `autogpt_platform/backend/backend/blocks/exa/websets.py`
- `docs/content/platform/new_blocks.md`
- **Added (8 files)**:
- `autogpt_platform/backend/backend/blocks/exa/code_context.py`
- `autogpt_platform/backend/backend/blocks/exa/research.py`
- `autogpt_platform/backend/backend/blocks/exa/websets_enrichment.py`
- `autogpt_platform/backend/backend/blocks/exa/websets_import_export.py`
- `autogpt_platform/backend/backend/blocks/exa/websets_items.py`
- `autogpt_platform/backend/backend/blocks/exa/websets_monitor.py`
- `autogpt_platform/backend/backend/blocks/exa/websets_polling.py`
- `autogpt_platform/backend/backend/blocks/exa/websets_search.py`
- **Deleted (1 file)**:
- `autogpt_platform/backend/backend/blocks/exa/model.py`
### Migration Guide 🚦
For users with existing workflows using the deprecated `use_auto_prompt`
field:
1. Remove the `use_auto_prompt` field from your input configuration
2. Set the `type` field to `ExaSearchTypes.AUTO` (or "auto" in JSON) to
achieve the same behavior
3. Review any custom content settings as the structure has been enhanced
### Testing Recommendations ✅
- Test existing workflows to ensure they handle the breaking change
- Verify cost tracking fields are properly returned
- Test new content settings options (livecrawl, subpages, extras,
context)
- Validate websets functionality if using the new Websets API blocks
🤖 Generated with [Claude Code](https://claude.com/claude-code)
### 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] made + ran a test agent for the blocks and flows between them
[Exa
Tests_v44.json](https://github.com/user-attachments/files/23226143/Exa.Tests_v44.json)
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Migrates Exa blocks to AsyncExa SDK, adds comprehensive
Websets/research/code-context blocks, updates existing
search/content/answers/similar, deletes legacy models, adjusts
tests/docs; breaking: remove `use_auto_prompt` in favor of
`type="auto"`.
>
> - **Backend — Exa integration (SDK migration & BREAKING)**:
> - Replace manual HTTP calls with `exa_py.AsyncExa` across `search`,
`similar`, `contents`, `answers`, and webhooks; richer outputs
(citations, context, costs, resolved search type).
> - BREAKING: remove `Input.use_auto_prompt`; use `type = "auto"`.
> - Centralize models/utilities in `exa/helpers.py` (content settings,
cost models, result mappers).
> - **New Blocks**:
> - **Websets**: management (`websets.py`), searches, items,
enrichments, imports/exports, monitors, polling (new files under
`exa/websets_*`).
> - **Research**: async research task create/get/wait/list
(`exa/research.py`).
> - **Code Context**: code snippet/context retrieval
(`exa/code_context.py`).
> - **Removals**:
> - Delete deprecated `exa/model.py`.
> - **Docs & DX**:
> - Update `docs/new_blocks.md` (error handling, models, file input) and
`CLAUDE.md`; ignore backend logs in `.gitignore`.
> - **Frontend Tests**:
> - Split/extend “e” block tests and improve block add robustness in
Playwright (`build.spec.ts`, `build.page.ts`).
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
|
||
|
|
2f8cdf62ba |
feat(backend): Standardize error handling with BlockSchemaInput & BlockSchemaOutput base class (#11257)
<!-- Clearly explain the need for these changes: --> This PR addresses the need for consistent error handling across all blocks in the AutoGPT platform. Previously, each block had to manually define an `error` field in their output schema, leading to code duplication and potential inconsistencies. Some blocks might forget to include the error field, making error handling unpredictable. ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - **Created `BlockSchemaOutput` base class**: New base class that extends `BlockSchema` with a standardized `error` field - **Created `BlockSchemaInput` base class**: Added for consistency and future extensibility - **Updated 140+ block implementations**: Changed all block `Output` classes from `class Output(BlockSchema):` to `class Output(BlockSchemaOutput):` - **Removed manual error field definitions**: Eliminated hundreds of duplicate `error: str = SchemaField(...)` definitions - **Updated type annotations**: Changed `Block[BlockSchema, BlockSchema]` to `Block[BlockSchemaInput, BlockSchemaOutput]` throughout the codebase - **Fixed imports**: Added `BlockSchemaInput` and `BlockSchemaOutput` imports to all relevant files - **Maintained backward compatibility**: Updated `EmptySchema` to inherit from `BlockSchemaOutput` **Key Benefits:** - Consistent error handling across all blocks - Reduced code duplication (removed ~200 lines of repetitive error field definitions) - Type safety improvements with distinct input/output schema types - Blocks can still override error field with more specific descriptions when needed ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [x] Verified `poetry run format` passes (all linting, formatting, and type checking) - [x] Tested block instantiation works correctly (MediaDurationBlock, UnrealTextToSpeechBlock) - [x] Confirmed error fields are automatically present in all updated blocks - [x] Verified block loading system works (successfully loads 353+ blocks) - [x] Tested backward compatibility with EmptySchema - [x] Confirmed blocks can still override error field with custom descriptions - [x] Validated core schema inheritance chain works correctly #### For configuration changes: - [x] `.env.default` is updated or already compatible with my changes - [x] `docker-compose.yml` is updated or already compatible with my changes - [x] I have included a list of my configuration changes in the PR description (under **Changes**) *Note: No configuration changes were needed for this refactoring.* 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Lluis Agusti <hi@llu.lu> Co-authored-by: Ubbe <hi@ubbe.dev> |
||
|
|
cbe0cee0fc |
fix(frontend): Credentials disabling onboarding Run button (#11244)
## Changes 🏗️ The onboarding `Run` button is disabled sometimes when an agent requiring credentials is selected. We think this can be because the credentials load _async_ by a sub-component ( `<CredentialsInputs />` ), and there wasn't a way for the parent component to know whether they loaded or not. - Refactored **Step 5** of onboarding to adhere to our code conventions - split concerns and colocated state - used generated API hooks - the UI will only render once API calls succeed - Created a system where ``<CredentialsInputs />` notify the parent component when they load - Did minor adjustments here and there ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] I will know once I find an agent with credentials that I can run.... <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added visual agent selection card displaying agent details during onboarding * Introduced credentials input management for agent configuration * Added onboarding guidance for initiating agent runs * **Improvements** * Enhanced onboarding flow with improved state management * Refined login state handling * Adjusted spacing in agent rating display <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
8b995c2394 |
feat(frontend): add saving ability in new builder (#11148)
This PR introduces saving functionality to the new builder interface, allowing users to save and update agent flows. The implementation includes both UI components and backend integration for persistent storage of agent configurations. https://github.com/user-attachments/assets/95ee46de-2373-4484-9f34-5f09aa071c5e ### Key Features Added: #### 1. **Save Control Component** (`NewSaveControl`) - Added a new save control popover in the control panel with form inputs for agent name, description, and version display - Integrated with the new control panel as a primary action button with a floppy disk icon - Supports keyboard shortcuts (Ctrl+S / Cmd+S) for quick saving #### 2. **Graph Persistence Logic** - Implemented `useNewSaveControl` hook to handle: - Creating new graphs via `usePostV1CreateNewGraph` - Updating existing graphs via `usePutV1UpdateGraphVersion` - Intelligent comparison to prevent unnecessary saves when no changes are made - URL parameter management for flowID and flowVersion tracking #### 3. **Loading State Management** - Added `GraphLoadingBox` component to display a loading indicator while graphs are being fetched - Enhanced `useFlow` hook with loading state tracking (`isFlowContentLoading`) - Improved UX with clear visual feedback during graph operations #### 4. **Component Reorganization** - Refactored components from `NewBlockMenu` to `NewControlPanel` directory structure for better organization: - Moved all block menu related components under `NewControlPanel/NewBlockMenu/` - Separated save control into its own module (`NewControlPanel/NewSaveControl/`) - Improved modularity and separation of concerns #### 5. **State Management Enhancements** - Added `controlPanelStore` for managing control panel states (e.g., save popover visibility) - Enhanced `nodeStore` with `getBackendNodes()` method for retrieving nodes in backend format - Added `getBackendLinks()` to `edgeStore` for consistent link formatting ### Technical Improvements: - **Graph Comparison Logic**: Implemented `graphsEquivalent()` helper to deeply compare saved and current graph states, preventing redundant saves - **Form Validation**: Used Zod schema validation for save form inputs with proper constraints - **Error Handling**: Comprehensive error handling with user-friendly toast notifications - **Query Invalidation**: Proper cache invalidation after successful saves to ensure data consistency ### UI/UX Enhancements: - Clean, modern save dialog with clear labeling and placeholder text - Real-time version display showing the current graph version - Disabled state for save button during operations to prevent double submissions - Toast notifications for success and error states - Higher z-index for GraphLoadingBox to ensure visibility over other elements ### 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] Saving is working perfectly. All nodes, links, their positions, and hardcoded data are saved correctly. - [x] If there are no changes, the user cannot save the graph. |
||
|
|
41260a7b4a |
fix(frontend): fix publish agent behavior when user is logged out (#11159)
When a user clicks the “Become a Creator” button on the marketplace page, we send an unauthorised request to the server to get a list of agents. In this PR, I’ve fixed this by checking if the user is logged in. If they’re not, I’ll show them a UI to log in or create an account. <img width="967" height="605" alt="Screenshot 2025-10-14 at 12 04 52 PM" src="https://github.com/user-attachments/assets/95079d9c-e6ef-4d75-9422-ce4fb138e584" /> ### Changes - Modify the publish agent test to detect the correct text even when the user is logged out. - Use Supabase helpers to check if the user is logged in. If not, display the appropriate UI. ### 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] The login UI is correctly displayed when the user is logged out. - [x] The login UI is also correctly displayed when the user is logged in. - [x] The login and signup buttons are working perfectly. |
||
|
|
a7306970b8 |
refactor(frontend): simplify marketplace search page and update data fetching (#11061)
This PR refactors the marketplace search page to improve code maintainability, readability, and follows modern React patterns by extracting complex logic into a custom hook and creating dedicated components. ### 🔄 Changes #### **Architecture Improvements** - **Component Extraction**: Replaced the monolithic `SearchResults` component with a cleaner `MainSearchResultPage` component that focuses solely on presentation - **Custom Hook Pattern**: Extracted all business logic and state management into `useMainSearchResultPage` hook for better separation of concerns - **Loading State Component**: Added dedicated `MainSearchResultPageLoading` component for consistent loading UI #### **Code Simplification** - **Reduced search page to 19 lines** (from 175 lines) by removing inline logic and state management - **Centralized data fetching** using auto-generated API endpoints (`useGetV2ListStoreAgents`, `useGetV2ListStoreCreators`) - **Improved error handling** with dedicated error states and loading states #### **Feature Updates** - **Sort Options**: Commented out "Most Recent" and "Highest Rated" sort options due to backend limitations (no date/rating data available) - **Client-side Sorting**: Implemented client-side sorting for "runs" and "rating" as a temporary solution - **Search Filters**: Maintained filter functionality for agents/creators with improved state management ### 📊 Impact - **Better Developer Experience**: Code is now more modular and easier to understand - **Improved Maintainability**: Business logic separated from presentation layer - **Future-Ready**: Structure prepared for backend improvements when date/rating data becomes available - **Type Safety**: Leveraging TypeScript with auto-generated API types ### 🧪 Testing Checklist - [x] Search functionality works correctly with various search terms - [x] Filter chips correctly toggle between "All", "Agents", and "Creators" - [x] Sort dropdown displays only "Most Runs" option - [x] Client-side sorting correctly sorts agents and creators by runs - [x] Loading state displays while fetching data - [x] Error state displays when API calls fail - [x] "No results found" message appears for empty searches - [x] Search bar in results page is functional - [x] Results display correctly with proper layout and styling |
||
|
|
4a1cb6d64b |
fix(frontend): performance and layout issues (#11036)
## Changes 🏗️ ### Performance (Onboarding) 🐎 - Moved non-UI logic into `providers/onboarding/helpers.ts` to reduce provider complexity. - Memoized provider value and narrowed state updates to cut unnecessary re-renders. - Deferred non-critical effects until after mount to lower initial JS work. **Result:** faster initial render and smoother onboarding flows under load. ### Layout and overflow fixes 📐 - Replaced `w-screen` with `w-full` in platform/admin/profile layouts and marketplace wrappers to avoid 100vw scrollbar overflow. - Adjusted mobile navbar position (`right-0` instead of `-right-4`) to prevent off-viewport elements. **Result:** removed horizontal scrolling on Marketplace, Library, and Settings pages; Build remains unaffected. ### New Generic Error pages - Standardized global error handling in `app/global-error.tsx` for consistent display and user feedback. - Added platform-scoped error page(s) under `app/(platform)/error` for route-level failures with a consistent layout. - Improved retry affordances using existing `ErrorCard`. ## 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] Verify onboarding flows render faster and re-render less (DevTools flamegraph) - [x] Confirm no horizontal scrolling on Marketplace, Library, Settings at common widths - [x] Validate mobile navbar stays within viewport - [x] Trigger errors to confirm global and platform error pages render consistently ### For configuration changes: None |
||
|
|
e68b873bcf |
chore(frontend/deps): Bump @faker-js/faker from 9.9.0 to 10.0.0 in /autogpt_platform/frontend (#10806)
Bumps [@faker-js/faker](https://github.com/faker-js/faker) from 9.9.0 to 10.0.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/faker-js/faker/releases"><code>@faker-js/faker</code>'s releases</a>.</em></p> <blockquote> <h2>v10.0.0</h2> <h2>New & Noteworthy</h2> <ul> <li>esm only (for cjs support look into migration guide, we got you covered 😉)</li> <li>remove v9 deprecations</li> <li>change default error strategy to 'fail' in word module</li> <li>remove invalid credit card issuer patterns</li> <li>see our <a href="https://v10.fakerjs.dev/guide/upgrading.html">migration guide</a></li> </ul> <h2>What's Changed</h2> <ul> <li>ci: use node 24 by <a href="https://github.com/Shinigami92"><code>@Shinigami92</code></a> in <a href="https://redirect.github.com/faker-js/faker/pull/3543">faker-js/faker#3543</a></li> <li>infra: stop using node 18 by <a href="https://github.com/Shinigami92"><code>@Shinigami92</code></a> in <a href="https://redirect.github.com/faker-js/faker/pull/3536">faker-js/faker#3536</a></li> <li>infra: use import.meta.dirname by <a href="https://github.com/Shinigami92"><code>@Shinigami92</code></a> in <a href="https://redirect.github.com/faker-js/faker/pull/3542">faker-js/faker#3542</a></li> <li>chore(deps): update devdependencies (major) by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3512">faker-js/faker#3512</a></li> <li>chore(deps): update eslint by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3555">faker-js/faker#3555</a></li> <li>chore(deps): update dependency <code>@vitest/eslint-plugin</code> to v1.3.4 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3554">faker-js/faker#3554</a></li> <li>chore(deps): update devdependencies by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3556">faker-js/faker#3556</a></li> <li>chore(deps): lock file maintenance by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3557">faker-js/faker#3557</a></li> <li>feat!: esm only by <a href="https://github.com/Shinigami92"><code>@Shinigami92</code></a> in <a href="https://redirect.github.com/faker-js/faker/pull/3540">faker-js/faker#3540</a></li> <li>refactor!: remove deprecations by <a href="https://github.com/Shinigami92"><code>@Shinigami92</code></a> in <a href="https://redirect.github.com/faker-js/faker/pull/3553">faker-js/faker#3553</a></li> <li>docs: migration guide for v10 by <a href="https://github.com/matthewmayer"><code>@matthewmayer</code></a> in <a href="https://redirect.github.com/faker-js/faker/pull/3559">faker-js/faker#3559</a></li> <li>infra: more precise engines field by <a href="https://github.com/matthewmayer"><code>@matthewmayer</code></a> in <a href="https://redirect.github.com/faker-js/faker/pull/3561">faker-js/faker#3561</a></li> <li>refactor(word)!: change default error strategy to 'fail' by <a href="https://github.com/xDivisionByZerox"><code>@xDivisionByZerox</code></a> in <a href="https://redirect.github.com/faker-js/faker/pull/3560">faker-js/faker#3560</a></li> <li>chore(release): 10.0.0-beta.0 by <a href="https://github.com/fakerjs-bot"><code>@fakerjs-bot</code></a> in <a href="https://redirect.github.com/faker-js/faker/pull/3565">faker-js/faker#3565</a></li> <li>docs: Minor improvements to migration guide by <a href="https://github.com/matthewmayer"><code>@matthewmayer</code></a> in <a href="https://redirect.github.com/faker-js/faker/pull/3569">faker-js/faker#3569</a></li> <li>chore(deps): update pnpm to v10.13.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3570">faker-js/faker#3570</a></li> <li>chore(deps): update devdependencies by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3571">faker-js/faker#3571</a></li> <li>chore(deps): update eslint by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3572">faker-js/faker#3572</a></li> <li>chore(deps): lock file maintenance by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3562">faker-js/faker#3562</a></li> <li>chore(deps): update dependency typescript to v5.9.2 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3576">faker-js/faker#3576</a></li> <li>chore(deps): update pnpm to v10.14.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3579">faker-js/faker#3579</a></li> <li>chore(deps): update mcr.microsoft.com/devcontainers/typescript-node:22 docker digest to 2baa40a by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3575">faker-js/faker#3575</a></li> <li>chore(deps): update devdependencies by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3577">faker-js/faker#3577</a></li> <li>chore(deps): update eslint (major) by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3580">faker-js/faker#3580</a></li> <li>chore(deps): update eslint by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3578">faker-js/faker#3578</a></li> <li>feat(locale): extended list of colors in Polish by <a href="https://github.com/pkuczynski"><code>@pkuczynski</code></a> in <a href="https://redirect.github.com/faker-js/faker/pull/3586">faker-js/faker#3586</a></li> <li>refactor(locale): remove invalid credit card issuer patterns by <a href="https://github.com/xDivisionByZerox"><code>@xDivisionByZerox</code></a> in <a href="https://redirect.github.com/faker-js/faker/pull/3568">faker-js/faker#3568</a></li> <li>docs: update migration guide with findings from playground update by <a href="https://github.com/xDivisionByZerox"><code>@xDivisionByZerox</code></a> in <a href="https://redirect.github.com/faker-js/faker/pull/3587">faker-js/faker#3587</a></li> <li>chore: fix typo in test by <a href="https://github.com/noritaka1166"><code>@noritaka1166</code></a> in <a href="https://redirect.github.com/faker-js/faker/pull/3591">faker-js/faker#3591</a></li> <li>chore(deps): update all non-major dependencies by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3596">faker-js/faker#3596</a></li> <li>chore(deps): update amannn/action-semantic-pull-request action to v6 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3598">faker-js/faker#3598</a></li> <li>chore(deps): update devdependencies by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3599">faker-js/faker#3599</a></li> <li>chore(deps): update actions/checkout action to v5 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3597">faker-js/faker#3597</a></li> <li>chore(deps): update dependency cypress to v15 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3603">faker-js/faker#3603</a></li> <li>chore(deps): update dependency vitepress to v1.6.4 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3601">faker-js/faker#3601</a></li> <li>chore(deps): pin dependency node to 24.6.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3600">faker-js/faker#3600</a></li> <li>chore(deps): update dependency typescript-eslint to v8.40.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3602">faker-js/faker#3602</a></li> <li>chore(deps): update dependency eslint-plugin-jsdoc to v54 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3604">faker-js/faker#3604</a></li> <li>chore(deps): lock file maintenance by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/faker-js/faker/pull/3584">faker-js/faker#3584</a></li> <li>chore(release): 10.0.0 by <a href="https://github.com/fakerjs-bot"><code>@fakerjs-bot</code></a> in <a href="https://redirect.github.com/faker-js/faker/pull/3605">faker-js/faker#3605</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/faker-js/faker/blob/next/CHANGELOG.md"><code>@faker-js/faker</code>'s changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/faker-js/faker/compare/v10.0.0-beta.0...v10.0.0">10.0.0</a> (2025-08-21)</h2> <h3>New Locales</h3> <ul> <li><strong>locale:</strong> extended list of colors in Polish (<a href="https://redirect.github.com/faker-js/faker/issues/3586">#3586</a>) (<a href=" |
||
|
|
b23cb14e49 |
test(frontend): fix library flaky e2e test (#10764)
A test in one of my pr is failing something like… <img width="1044" height="452" alt="Screenshot 2025-08-28 at 9 39 07 AM" src="https://github.com/user-attachments/assets/9c8b8996-50a2-44c6-8a2c-c3904f07ced5" /> That’s why I fixed it. ### 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 E2E tests are now working correctly. |
||
|
|
2610c4579f |
feat(platform/dashboard): Enable editing for agent submissions (#10545)
- resolves - https://github.com/Significant-Gravitas/AutoGPT/issues/10511 In this PR, I’ve added backend endpoints and a frontend UI for edit functionality on the Agent Dashboard. Now, users can update their store submission, if status is `PENDING` or `APPROVED`, but not for `REJECTED` and `DRAFT`. When users make changes to a pending status submission, the changes are made to the same version. However, when users make changes to an approved status submission, a new store listing version is created. Backend works something like this: <img width="866" height="832" alt="Screenshot 2025-08-15 at 9 39 02 AM" src="https://github.com/user-attachments/assets/209c60ac-8350-43c1-ba4c-7378d95ecba7" /> ### Changes - I’ve updated the `StoreSubmission` view to include `video_url` and `categories`. - I’ve added a new frontend UI for editing submissions. - I’ve created an endpoint for editing submissions. - I’ve added more end-to-end tests to ensure the edit submission functionality works as expected. ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] I have checked manually, everything is working perfectly. - [x] All e2e tests are also passing. --------- Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co> Co-authored-by: neo <neo.dowithless@gmail.com> Co-authored-by: Reinier van der Leer <pwuts@agpt.co> Co-authored-by: Swifty <craigswift13@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Ubbe <hi@ubbe.dev> Co-authored-by: Lluis Agusti <hi@llu.lu> |
||
|
|
1105e6c0d2 |
tests(frontend): e2e tests for api key page (#10683)
I’ve added three tests for the API keys page: - The test checks if the user is redirected to the login page when they’re not authenticated. - The test verifies that a new API key is created successfully. - The test ensures that an existing API key can be revoked. <img width="470" height="143" alt="Screenshot 2025-08-19 at 10 56 19 AM" src="https://github.com/user-attachments/assets/d27bf736-61ec-435b-a6c4-820e4f3a5e2f" /> I’ve also removed the feature flag from the `delete_api_key` endpoint, so we can use it on CI and in the local environment. ### Checklist 📋 - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] tests are working perfectly locally. --------- Co-authored-by: Ubbe <hi@ubbe.dev> |
||
|
|
4abe37396c |
fix(frontend): flaky e2e tests (#10689)
## Changes 🏗️ We had 2 flaky end-to-end tests: - Build page → user can add two blocks and connect them - this was failing sometimes because the `Run` button on the builder does not work well, sometimes you need to click it twice for it to work... - Agent dashboard → edit actions - some flaky tests asserting agent submissions not being there, pulled the fixes from Abhi here on this PR https://github.com/Significant-Gravitas/AutoGPT/pull/10545 ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] E2E pass on the CI - [x] Changes make sense ### For configuration changes: None |
||
|
|
4bfeddc03d |
feat(platform/docker): add frontend service to docker-compose with env config improvements (#10615)
## Summary This PR adds the frontend service to the Docker Compose configuration, enabling `docker compose up` to run the complete stack, including the frontend. It also implements comprehensive environment variable improvements, unified .env file support, and fixes Docker networking issues. ## Key Changes ### 🐳 Docker Compose Improvements - **Added frontend service** to `docker-compose.yml` and `docker-compose.platform.yml` - **Production build**: Uses `pnpm build + serve` instead of dev server for better stability and lower memory usage - **Service dependencies**: Frontend now waits for backend services (`rest_server`, `websocket_server`) to be ready - **YAML anchors**: Implemented DRY configuration to avoid duplicating environment values ### 📁 Unified .env File Support - **Frontend .env loading**: Automatically loads `.env` file during Docker build and runtime - **Backend .env loading**: Optional `.env` file support with fallback to sensible defaults in `settings.py` - **Single source of truth**: All `NEXT_PUBLIC_*` and API keys can be defined in respective `.env` files - **Docker integration**: Updated `.dockerignore` to include `.env` files in build context - **Git tracking**: Frontend and backend `.env` files are now trackable (removed from gitignore) ### 🔧 Environment Variable Architecture - **Dual environment strategy**: - Server-side code uses Docker service names (`http://rest_server:8006/api`) - Client-side code uses localhost URLs (`http://localhost:8006/api`) - **Comprehensive config**: Added build args and runtime environment variables - **Network compatibility**: Fixes connection issues between frontend and backend containers - **Shared backend variables**: Common environment variables (service hosts, auth settings) centralized using YAML anchors ### 🛠️ Code Improvements - **Centralized env-config helper** (`/frontend/src/lib/env-config.ts`) with server-side priority - **Updated all frontend code** to use shared environment helpers instead of direct `process.env` access - **Consistent API**: All environment variable access now goes through helper functions - **Settings.py improvements**: Better defaults for CORS origins and optional .env file loading ### 🔗 Files Changed - `docker-compose.yml` & `docker-compose.platform.yml` - Added frontend service and shared backend env vars - `frontend/Dockerfile` - Simplified build process to use .env files directly - `backend/settings.py` - Optional .env loading and better defaults - `frontend/src/lib/env-config.ts` - New centralized environment configuration - `.dockerignore` - Allow .env files in build context - `.gitignore` - Updated to allow frontend/backend .env files - Multiple frontend files - Updated to use env helpers - Updates to both auto installer scripts to work with the latest setup! ## Benefits - ✅ **Single command deployment**: `docker compose up` now runs everything - ✅ **Better reliability**: Production build reduces memory usage and crashes - ✅ **Network compatibility**: Proper container-to-container communication - ✅ **Maintainable config**: Centralized environment variable management with .env files - ✅ **Development friendly**: Works in both Docker and local development - ✅ **API key management**: Easy configuration through .env files for all services - ✅ **No more manual env vars**: Frontend and backend automatically load their respective .env files ## Testing - ✅ Verified Docker service communication works correctly - ✅ Frontend responds and serves content properly - ✅ Environment variables are correctly resolved in both server and client contexts - ✅ No connection errors after implementing service dependencies - ✅ .env file loading works correctly in both build and runtime phases - ✅ Backend services work with and without .env files present ### Checklist 📋 #### For configuration changes: - [x] `.env.default` is updated or already compatible with my changes - [x] `docker-compose.yml` is updated or already compatible with my changes - [x] I have included a list of my configuration changes in the PR description (under **Changes**) 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Lluis Agusti <hi@llu.lu> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> Co-authored-by: Claude <claude@users.noreply.github.com> Co-authored-by: Bentlybro <Github@bentlybro.com> |
||
|
|
a135f09336 |
feat(frontend): update settings form (#10628)
## Changes 🏗️ <img width="800" height="687" alt="Screenshot 2025-08-12 at 15 52 41" src="https://github.com/user-attachments/assets/0d2d70b8-e727-428b-915e-d4c108ab7245" /> <img width="800" height="772" alt="Screenshot 2025-08-12 at 15 52 53" src="https://github.com/user-attachments/assets/b9790616-3754-455e-b8f6-58cd7f6b5a18" /> Update the Account Settings ( `profile/settings` ) form so that: - it uses the new Design System components - it is split into 2 forms ( update email & notifications ) - the change password inputs have been removed instead we link to the `/reset-password` page - uses a normal API route and client query to update the email This might fix as well an error we are seeing when updating email preferences on dev. My guess is it is failing because previously it was using a server action + supabase and it didn't have access to the cookies auth 🍪 ## 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] Navigate to `/profile/settings` - [x] Can update the email - [x] Can change notification preferences - [x] New E2E tests pass on the CI and make sense ### For configuration changes: None |
||
|
|
e13e0d4376 |
test(frontend): add e2e test for profile form page (#10596)
This PR has added end-to-end tests for the profile form page. These tests include: - Redirects to the login page when the user is not authenticated. - Can save profile changes successfully. - Can cancel profile changes (skipped because we need to fix the form for this test). ### Changes 🏗️ - Added test-id's inside the ProfileInfoForm. - Created a page object for the profile form page. - Added a test for this page in `profile-form.spec.ts`. ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] All test are working perfectly locally |
||
|
|
4f208d262e |
test(frontend): add e2e tests for agent dashboard page (#10572)
I have added e2e tests for agent dashboard page It includes, tests like - dashboard page loads successfully - submit agent button works correctly - agent table displays data correctly - agent table actions work correctly I’ve also updated the e2e test script to include some static agent submissions, so I can test if it loads on the frontend. #### 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 tests are working perfectly locally <img width="469" height="177" alt="Screenshot 2025-08-08 at 12 13 42 PM" src="https://github.com/user-attachments/assets/5e37afc3-c151-476a-84de-0a06f44a0722" /> |
||
|
|
3c52b75278 |
fix(frontend): marketplace top agents section (#10571)
Currently, we’re only seeing the top 20 agents, but we need to display all of them until we see more call-to-action buttons. #### 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 tests are working perfectly - [x] It's working manually as well |
||
|
|
9848266474 |
test(frontend): e2e tests for library page (#10355)
In this PR, I’ve added library page tests. ### Changes I’ve added 9 tests: 8 for normal flows and 1 for checking edge cases. Test names are something like: - Library navigation is accessible from the navbar. - The library page loads successfully. - Agents are visible, and cards work correctly. - Pagination works correctly. - Sorting works correctly. - Searching works correctly. - Pagination while searching works correctly. - Uploading an agent works correctly. - Edge case: Search edge cases and error handling behave correctly. Other than that, I’ve added a new utility that uses the build page to help us create users at the start, which we could use to test the library page. - All tests are passing locally <img width="514" height="465" alt="Screenshot 2025-07-12 at 11 13 41 AM" src="https://github.com/user-attachments/assets/7a46c437-7db5-458b-b99a-4fa0d479866f" /> ### 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 library tests are working locally and on CI perfectly. |
||
|
|
5dbc3a7d39 |
feat(frontend): Add marketplace agent page tests (#10434)
- Resolves - https://github.com/Significant-Gravitas/AutoGPT/issues/10433 - Depends on - https://github.com/Significant-Gravitas/AutoGPT/pull/10427 - Need to review this pr, once this issue is fixed - https://github.com/Significant-Gravitas/AutoGPT/issues/10404 I’ve created additional tests for the agents marketplace page Tests that I have added - Add to library button works and agent appears in library. - Download button functionality works. - Agent page details are visible. - User can access agent page when logged in. - User can access agent page when logged out #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] I have done all the tests and they are working perfectly --------- Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> Co-authored-by: Lluis Agusti <hi@llu.lu> Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co> Co-authored-by: Ubbe <hi@ubbe.dev> |
||
|
|
326c4a9e0c |
feat(frontend): Add marketplace creator page tests (#10429)
- Resolves - https://github.com/Significant-Gravitas/AutoGPT/issues/10428 - Depends on - https://github.com/Significant-Gravitas/AutoGPT/pull/10427 - Need to review this pr, once this issue is fixed - https://github.com/Significant-Gravitas/AutoGPT/issues/10404 I’ve created additional tests for the creators marketplace page Tests that I have added - User can access creator's page when logged out. - User can access creator's page when logged in. - Creator page details are visible. - Agents in agent by sections navigation works. #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] I have done all the tests and they are working perfectly |
||
|
|
e371ef853a |
feat(frontend): Add main marketplace page tests and page object structure (#10427)
- Resolves - https://github.com/Significant-Gravitas/AutoGPT/issues/10426 - Need to review this pr, once this issue is fixed - https://github.com/Significant-Gravitas/AutoGPT/issues/10404 I’ve created additional tests for the main page, divided into two parts: one for basic functionality and the other for edge cases. **Basic functionality:** - Users can access the marketplace page when logged out. - Users can access the marketplace page when logged in. - Featured agents, top agents, and featured creators are visible. - Users can navigate and interact with marketplace elements. - The complete search flow works correctly. **Edge cases:** - Searching for a non-existent item shows no results. ### Changes - Introduced a new test suite for the marketplace, covering basic functionality and edge cases. - Implemented the MarketplacePage class to encapsulate interactions with the marketplace page. - Added utility functions for assertions, including visibility checks and URL matching. - Enhanced the LoginPage class with a goto method for navigation. - Established a comprehensive search flow test to validate search functionality. #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] I have done all the tests and they are working perfectly --------- Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> Co-authored-by: Lluis Agusti <hi@llu.lu> Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co> Co-authored-by: Ubbe <hi@ubbe.dev> |
||
|
|
f542995a15 |
fix(frontend): publish agent modal refactor + improvements (#10479)
## Changes 🏗️ ### Why these changes We have a high-priority bug where the publish agent modal wouldn't open when clicking `Edit` on the Dashboard Creator page table. The create form was also buggy. When looking into the code, I noticed it was pretty messy. I went ahead and refactored it: - [x] separation of concerns ( _split render / hook logic_ ) - [x] split into sub-components ( `PublishAgentModal/components` ) - [x] colocated state ( moved state to the modal steps rather than having everything top-level ) - [x] used the new Design System components Overall, we end up with a cleaner and stable experience ✨ ### E2E tests I also added E2E tests 🤖 to make sure we catch regressions in the future in this modal. For now, it tests the first 2 steps. It does not do image upload and publish as that wasn't working locally ( _might iterate on that later_ ) ### Step 1 – Select Agent <img width="1161" height="859" alt="Screenshot 2025-07-29 at 16 12 46" src="https://github.com/user-attachments/assets/a4949fb0-1a44-4926-a374-51eefadef063" /> ### Step 2 – Agent Info Form <img width="1061" height="804" alt="Screenshot 2025-07-29 at 16 03 11" src="https://github.com/user-attachments/assets/b9a45bda-18ea-4844-b52c-db499f45193e" /> ### Step 3 – Agent Review <img width="1480" height="867" alt="Screenshot 2025-07-29 at 16 11 07" src="https://github.com/user-attachments/assets/248bdf58-886d-43f3-a37a-35fd1a83e566" /> ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] open the modal through the Account menu → ( `Publish Agent` ) - [x] complete the form and check validation errors - [x] add images and generate image - [x] publish the agent - [x] the agent shows up on the table - [x] Open an agent under review in the table ( _click `Edit` on the actions_ ) - [x] it opens the modal on the 3rd step ( _review step_ ) ### For configuration changes: None --------- Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Abhimanyu Yadav <122007096+Abhi1992002@users.noreply.github.com> |
||
|
|
29d4b4f347 |
fix(frontend): socket logout handling (#10445)
## Changes 🏗️ - Close websocket connections gracefully during logout ( _whether from another tab or not_ ) - Also fixed an error on `HeroSection` that shows when the onboarding is disabled locally ( `null` ) - Uncomment legit tests about connecting/saving agents - Centralise local storage usage through a single service with typed keys ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Login in 3 tabs ( 1 builder, 1 marketplace, 1 agent run view ) - [x] Logout from the marketplace tab - [x] The other tabs show logout state gracefully without toasts or errors - [x] Websocket connections are closed ( _devtools console shows that_ ) ### For configuration changes: None |
||
|
|
e7f8602945 |
fix(frontend): handle websocket connection on logout (#10440)
## Changes 🏗️ Fixed WebSocket connection errors during multi-tab logout 💆🏽 <img width="1193" height="273" alt="Screenshot 2025-07-23 at 22 23 35" src="https://github.com/user-attachments/assets/bf6f964d-bcb0-4a2a-adff-1194defe1e61" /> Previously, when users logged out in one browser tab, WebSocket connections in other open tabs would continue trying to reconnect with invalid authentication tokens, causing console errors and potential runtime errors. ### What was fixed - WebSocket connections are now properly disconnected when logout occurs in any tab - cross-tab logout mechanism now includes WebSocket cleanup to prevent reconnection errors - added logic to prevent automatic reconnection after intentional disconnection - added E2E tests to cover this case ## 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 testing: Login in multiple tabs, navigate to builder (establishes WebSocket), logout from one tab, verify no console errors - [x] E2E test: Added automated test covering multi-tab logout with WebSocket cleanup verification - [x] Verified cross-tab logout still works correctly - [x] Confirmed WebSocket connections reconnect properly after fresh login ### For configuration changes: None |
||
|
|
41363b1cbe |
feat(frontend): agent activity dropdown (#10416)
## Changes 🏗️ https://github.com/user-attachments/assets/42e1c896-5f3b-447c-aee9-4f5963c217d9 There is now a 🔔 icon on the Navigation bar that shows previous agent runs and displays real-time agent running status. If you run an agent, the bell will show on a badge how many agents are running. If you hover over it, a hint appears. If you click on it, it opens a dropdown and displays the executions with their status ( _which should match what we have in library functionality, not design-wise_ ). I leveraged the existing APIs for this purpose. Most of the run logic is [encapsulated on this hook](https://github.com/Significant-Gravitas/AutoGPT/compare/dev...feat/agent-notifications?expand=1#diff-a9e7f2904d6283b094aca19b64c7168e8c66be1d5e0bb454be8978cb98526617) and is also an independent `<AgentActivityDropdown />` component. Clicking on an agent run opens that run in the library page. This new functionality is covered by E2E tests 💆🏽 ✔️ ## 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] The navigation bar layout looks good when logged out - [x] The navigation bar layout looks good when logged in - [x] Open an agent in the library and click `Run` - [x] See the real-time activity of the agent running on the navigation bar bell icon ### For configuration changes: _No configuration changes needed._ |
||
|
|
61d0892686 |
fix(frontend): init LD on the client (#10414)
## Changes 🏗️ Launch Darkly is not being initialised in production, despite on paper all env variables being well set 🧐 I tried doing production builds locally, and I noticed this provider needs to be initialised on the client because Launch Darkly flags are designed to work on the client side, where they can access user context and browser environment. ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Did production build locally and run it - [x] See LD initialised on the console after the `use client` directive was added ### For configuration changes: None |
||
|
|
574f851143 |
feat(frontend): beta blocks via launchdarkly + E2E improvements (#10398)
## Changes 🏗️ https://github.com/user-attachments/assets/dd635fa1-d8ea-4e5b-b719-2c7df8e57832 Using [LaunchDarkly](https://launchdarkly.com/), introduce the concept of "beta" blocks, which are blocks that will be disabled in production unless enabled via a feature flag. This allows us to safely hide and test certain blocks in production safely. ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Checkout and run FE locally - [x] With the `beta-blocks` flag `disabled` in LD - [x] Go to the builder and see **you can't** add the blocks specified on the flag - [x] With the `beta-blocks` flag `enabled` in LD - [x] Go to the builder and see **you can** add the blocks specified on the flag ### For configuration changes: - [x] `.env.example` is updated or already compatible with my changes 🚧 We need to add the `NEXT_PUBLIC_LAUNCHDARKLY_CLIENT_ID` to the dev and prod environments. |
||
|
|
c451337cb5 |
fix(docs): missing tags from code that are referenced in docs (#10400)
<!-- Clearly explain the need for these changes: --> The docs have an issue with not building due to changes made in the process of updating the e2e testing to remove the monitor page. ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> fixes the missing start and end tags that prevent docs from building. ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [x] run the build and check for no errors indicating missing tags - [x] deploy to netlify |
||
|
|
e720f92123 |
feat(tests): Add E2E test data creator script for comprehensive testing (#10368)
### Changes
- Introduced a new script to generate test data for end-to-end (E2E)
tests using API functions, ensuring compatibility with future model
changes.
- The script creates test users, agent blocks, graphs, profiles, library
agents, presets, API keys, and store submissions.
- Utilizes external services for image and video URLs, and includes
error handling for data creation processes.
- Provides a summary of created data upon completion, enhancing the
testing framework for the AutoGPT platform.
### Checklist 📋
#### For code changes:
- [x] I have clearly listed my changes in the PR description
- [x] I have made a test plan
- [x] I have tested my changes according to the test plan:
- [x] Test scripts are working perfectly and not breaking anything. Data
is also correctly visible in the database.
|
||
|
|
b6a51fdc19 |
fix(frontend): navbar missing (#10396)
## Changes 🏗️ <img width="1843" height="321" alt="Screenshot 2025-07-17 at 15 48 01" src="https://github.com/user-attachments/assets/63f528f7-1dc3-4587-a5af-d02b2c858191" /> In this recent PR https://github.com/Significant-Gravitas/AutoGPT/pull/10394/ the navigation bar disappeared when logged out. A change was introduced where the navigation bar does not show up if we don't have profile data ( _which we won't have when logged out_ ). This solves it + adds tests covering the navigation bar in the logged out state. ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Run this locally - [x] See the navbar appearing - [x] E2E tests pass on the CI ### For configuration changes: None |
||
|
|
d3bfad2a10 |
refactor(frontend): e2e tests setup + speed + readability (#10388)
## Changes 🏗️ ### User creation tests Now, all tests use the users created via the platform signup in `global-setup.ts`. Their login details are on a `.auth/user-pool.json` file. I have the delete the logic that created tests users via Supabase directly. ### Build tests speed I have refactored the builder tests, so that, instead of adding 100s of blocks under a given test user session, a new test user logins and adds block for each letter: ``` Test user 1 - logins and adds blocks starting with "a" Test user 2 - logins and adds blocks starting with "b" ``` Given that we know the builder becomes slow once we have 30 or more blocks, in this way a test user never adds more than 10 blocks on a given test ( _without losing coverage_ ), so we don't need time-outs or artificially waiting due to the UI being slow. ### Readability test changes Refactor existing tests, using short-hand utilities, to be: - easier to write - clearer to read - easier to debug ```ts // Selectors getId("id") // --> page.getByTestId("id") getText("foo") // --> page.getByText("id") getButton("Run") // --> page.getByRole("button", {name: "Run"} ... // Assetions const btn = getButton("Save") isVisible(btn) // --> expect(btn).toBeVisible() ``` These utilities live under `selectors.ts` and `assertions.ts`. Their usage is optional but encouraged. ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Refactored tests code looks good - [x] E2E tests are 🟢 on the CI ### For configuration changes: No config changes |
||
|
|
ee44f3b4a9 |
fix(frontend): navbar profile query not working (#10392)
## Changes 🏗️ <img width="800" height="265" alt="Screenshot 2025-07-16 at 13 10 57" src="https://github.com/user-attachments/assets/01164bde-0523-4284-bf74-d1a735b77d5c" /> When redoing the navigation bar, I moved the profile query to be executed on the server using the new [react-query](https://tanstack.com/query/latest) generated hooks. The README [states the new hooks can be called on the server](https://github.com/Significant-Gravitas/AutoGPT/blob/master/autogpt_platform/frontend/README.md#server-side-prefetching), but when looking deeply into the implementation of [`custom-mutator.ts`](https://github.com/Significant-Gravitas/AutoGPT/blob/master/autogpt_platform/frontend/src/app/api/mutators/custom-mutator.ts), it turns out they can not ( yet ) as `custom-mutator` calls the proxy API ( _which can't be called from a RSC_ 😅 ). ### Solution For now, I changed the call to be made through the old `BackendAPI`, which can be called client and server side ✅ ( _I did that as part of the server 🍪 migration_ ) and added an E2E test to catch this ever disappears again. Next, I will open a separate PR refactoring `custom-mutator` so that it can be called on the server. ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Run the app - [x] Login - [x] You see your account name and email when opening the account menu |
||
|
|
36f5f24333 |
feat(platform/builder): Builder credentials support + UX improvements (#10323)
- Resolves #10313 - Resolves #10333 Before: https://github.com/user-attachments/assets/a105b2b0-a90b-4bc6-89da-bef3f5a5fa1f - No credentials input - Stuttery experience when panning or zooming the viewport After: https://github.com/user-attachments/assets/f58d7864-055f-4e1c-a221-57154467c3aa - Pretty much the same UX as in the Library, with fully-fledged credentials input support - Much smoother when moving around the canvas ### Changes 🏗️ Frontend: - Add credentials input support to Run UX in Builder - Pass run inputs instead of storing them on the input nodes - Re-implement `RunnerInputUI` using `AgentRunDetailsView`; rename to `RunnerInputDialog` - Make `AgentRunDraftView` more flexible - Remove `RunnerInputList`, `RunnerInputBlock` - Make moving around in the Builder *smooooth* by reducing unnecessary re-renders - Clean up and partially re-write bead management logic - Replace `request*` fire-and-forget methods in `useAgentGraph` with direct action async callbacks - Clean up run input UI components - Simplify `RunnerUIWrapper` - Add `isEmpty` utility function in `@/lib/utils` (expanding on `_.isEmpty`) - Fix default value handling in `TypeBasedInput` (**Note:** after all the changes I've made I'm not sure this is still necessary) - Improve & clean up Builder test implementations Backend + API: - Fix front-end `Node`, `GraphMeta`, and `Block` types - Small refactor of `Graph` to match naming of some `LibraryAgent` attributes - Fix typing of `list_graphs`, `get_graph_meta_by_store_listing_version_id` endpoints - Add `GraphMeta` model and `GraphModel.meta()` shortcut - Move `POST /library/agents/{library_agent_id}/setup-trigger` to `POST /library/presets/setup-trigger` ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - Test the new functionality in the Builder: - [x] Running an agent with (credentials) inputs from the builder - [x] Beads behave correctly - [x] Running an agent without any inputs from the builder - [x] Scheduling an agent from the builder - [x] Adding and searching blocks in the block menu - [x] Test that all existing `AgentRunDraftView` functionality in the Library still works the same - [x] Run an agent - [x] Schedule an agent - [x] View past runs - [x] Run an agent with inputs, then edit the agent's inputs and view the agent in the Library (should be fine) |
||
|
|
5741331250 |
feat(frontend): logged out pages UI updates (#10314)
## Changes 🏗️ <img width="800" alt="Screenshot 2025-07-07 at 13 16 44" src="https://github.com/user-attachments/assets/0d404958-d4c9-454d-b71a-9dd677fe0fdc" /> <img width="800" alt="Screenshot 2025-07-07 at 13 17 08" src="https://github.com/user-attachments/assets/1142f6d5-a6af-485d-b42e-98afd26de3ed" /> Update the UI of the logged-out pages ( _login, signup, reset-password..._ ) using the new Design System components, so the app starts to look a bit more cohesive 💆🏽 Some notes: - I refactored the `<AuthCard />` components a bit to be easier to use - I split the render from hook login on login/signup - I added a couple of modals to improve the UX when logging in with Google or using non-whitelisted emails - _see below my comments for more context_ - When there are API errors, they are shown in a toast to prevent the layout of the form from jumping - When using the components in the UI, an issue with border-radius, see comments for an explanation ## Checklist 📋 ### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Logout on the platform - [x] Check the updated Login/Signup/Reset password pages - [x] The UI looks good and is consistent - [x] The forms work as expected |