mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-02-09 06:15:41 -05:00
261deee048dd16adb2c4e136ccca3834e5205f1e
652 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
261deee048 | Merge branch 'master' into copilot/fix-054c8899-480d-4128-84c2-8f58a02f059b | ||
|
|
353756019c |
Add Lighthouse documentation and finalize setup
Co-authored-by: ntindle <8845353+ntindle@users.noreply.github.com> |
||
|
|
6d52e89466 |
Add Google Lighthouse CI configuration and integration
Co-authored-by: ntindle <8845353+ntindle@users.noreply.github.com> |
||
|
|
ebeefc96e8 |
feat(backend): implement caching layer for store API endpoints (Part 1) (#10975)
## Summary
This PR introduces comprehensive caching for the Store API endpoints to
improve performance and reduce database load. This is **Part 1** in a
series of PRs to add comprehensive caching across our entire API.
### Key improvements:
- Implements caching layer using the existing `@cached` decorator from
`autogpt_libs.utils.cache`
- Reduces database queries by 80-90% for frequently accessed public data
- Built-in thundering herd protection prevents database overload during
cache expiry
- Selective cache invalidation ensures data freshness when mutations
occur
## Details
### Cached endpoints with TTLs:
- **Public data (5-10 min TTL):**
- `/agents` - Store agents list (2 min)
- `/agents/{username}/{agent_name}` - Agent details (5 min)
- `/graph/{store_listing_version_id}` - Agent graphs (10 min)
- `/agents/{store_listing_version_id}` - Agent by version (10 min)
- `/creators` - Creators list (5 min)
- `/creator/{username}` - Creator details (5 min)
- **User-specific data (1 min TTL):**
- `/profile` - User profiles (5 min)
- `/myagents` - User's own agents (1 min)
- `/submissions` - User's submissions (1 min)
### Cache invalidation strategy:
- Profile updates → clear user's profile cache
- New reviews → clear specific agent cache + agents list
- New submissions → clear agents list + user's caches
- Submission edits → clear related version caches
### Cache management endpoints:
- `GET /cache/info` - Monitor cache statistics
- `POST /cache/clear` - Clear all caches
- `POST /cache/clear/{cache_name}` - Clear specific cache
## Changes
<!-- REQUIRED: Bullet point summary of changes -->
- Added caching decorators to all suitable GET endpoints in store routes
- Implemented cache invalidation on data mutations (POST/PUT/DELETE)
- Added cache management endpoints for monitoring and manual clearing
- Created comprehensive test suite for cache_delete functionality
- Verified thundering herd protection works correctly
## Testing
<!-- How to test your changes -->
- ✅ Created comprehensive test suite (`test_cache_delete.py`)
validating:
- Selective cache deletion works correctly
- Cache entries are properly invalidated on mutations
- Other cache entries remain unaffected
- cache_info() accurately reflects state
- ✅ Tested thundering herd protection with concurrent requests
- ✅ Verified all endpoints return correct data with and without cache
## Checklist
<!-- REQUIRED: Be sure to check these off before marking the PR ready
for review. -->
- [x] I have self-reviewed this PR's diff, line by line
- [x] I have updated and tested the software architecture documentation
(if applicable)
- [x] I have run the agent to verify that it still works (if applicable)
---------
Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co>
Co-authored-by: Reinier van der Leer <pwuts@agpt.co>
|
||
|
|
0c363a1cea |
fix(frontend): force dynamic rendering on marketplace (#10957)
## Changes 🏗️ When building on Vercel: ``` at Object.start (.next/server/chunks/2744.js:1:312830) { description: "Route /marketplace couldn't be rendered statically because it used `cookies`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error", digest: 'DYNAMIC_SERVER_USAGE' } Failed to get server auth token: Error: Dynamic server usage: Route /marketplace couldn't be rendered statically because it used `cookies`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error at r (.next/server/chunks/8450.js:22:7298) at n (.next/server/chunks/4735.js:1:37020) at g (.next/server/chunks/555.js:1:31925) at m (.next/server/chunks/555.js:1:87056) at h (.next/server/chunks/555.js:1:932) at k (.next/server/chunks/555.js:1:25195) at queryFn (.next/server/chunks/555.js:1:25590) at Object.f [as fn] (.next/server/chunks/2744.js:1:316625) at q (.next/server/chunks/2744.js:1:312288) at Object.start (.next/server/chunks/2744.js:1:312830) { description: "Route /marketplace couldn't be rendered statically because it used `cookies`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error", digest: 'DYNAMIC_SERVER_USAGE' } ``` That's because the `/marketplace` page prefetches the store agents data on the server, and that query uses `cookies` for Auth. In theory, those endpoints can be called without auth, but I think if you are logged that affects the results. The simpler for now is to tell Next.js to not try to statically render it and render on the fly with caching. According to AI we shouldn't see much difference performance wise: > Short answer: Usually no noticeable slowdown. You’ll trade a small TTFB increase (server renders per request) for correct behavior with cookies. Overall interactivity stays the same since we still dehydrate React Query data. Why it’s fine: Server already had to fetch marketplace data; doing it at request-time vs build-time is roughly the same cost for users. Hydration uses the prefetched data, avoiding extra client round-trips. If you want extra speed: If those endpoints don’t need auth, we can skip reading cookies during server prefetch and enable ISR (e.g., revalidate=60) for partial caching. Or move the cookie-dependent parts to the client and keep the page static. ## 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] Page load marketplace is fine and not slow - [x] No build cookies errors ### For configuration changes: None |
||
|
|
e5d870a348 |
refactor(frontend): move old components to __legacy__ (#10953)
## Changes 🏗️ Moving non-design-system components ( old ) to a `components/__legacy__` folder 📁 so like this is more obvious for developers that they should not import them or use them on new features. What is now top-level in `/components` is what it is actively maintained. Document some existing components like `<Alert />`. More on this coming on follow-up PRs. ## 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 and types pass on the CI - [x] Run app locally, click around, looks good ### For configuration changes: None |
||
|
|
3f19cba28f |
fix(frontend/builder): Fix moved blocks disappearing on save (#10951)
- Resolves #10926 - Fixes a bug introduced in #10779 ### Changes 🏗️ - Fix `.metadata.position` in graph save payload - Make node reconciliation after graph save more robust ### 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] Moved nodes don't disappear on graph save |
||
|
|
f283e6c514 |
refactor(frontend): cleanup of components folder (2/3) (#10942)
## Changes 🏗️ Following up my initial PR to tidy up the `components` folder https://github.com/Significant-Gravitas/AutoGPT/pull/10940. This is mostly moving files around and renaming some + documenting them on the design system as needed. Should be pretty safe as long as types on the CI pass. ## 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 - [x] Click around, looks ok - [x] Test and types pass on the CI ### For configuration changes: None |
||
|
|
9fc2101e7e |
refactor(frontend): tidy up on components folder (#10940)
## Changes 🏗️ Re-organise the `components` folder, moving things which are not re-used across screens or part of the design system out of 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] Run the app locally - [x] It works and test/types pass CI wise ### For configuration changes: None |
||
|
|
634f826d82 | Merge branch 'master' into dev | ||
|
|
6d6bf308fc |
fix(frontend): marketplace page load and caching (#10934)
## Changes 🏗️ ### **Server-Side:** - ✅ **ISR Cache**: Page cached for 60 seconds, served instantly - ✅ **Prefetch**: All API calls made on server, not client - ✅ **Static Generation**: HTML pre-rendered with data - ✅ **Streaming**: Loading states show immediately ### **Client-Side:** - ✅ **No API Calls**: Data hydrated from server cache - ✅ **Fast Hydration**: React Query uses prefetched data - ✅ **Smart Caching**: 60s stale time prevents unnecessary requests - ✅ **Progressive Loading**: Suspense boundaries for better UX ### **🔄 Caching Strategy:** 1. **Server**: ISR cache (60s) → API calls → Static HTML 2. **CDN**: Cached HTML served instantly 3. **Client**: Hydrated data from server → No additional API calls 4. **Background**: ISR regenerates stale pages automatically ### **🎯 Result:** - **First Visit**: Instant HTML + hydrated data (no client API calls) - **Subsequent Visits**: Instant cached page - **Background Updates**: Automatic revalidation every 60s - **Optimal Performance**: Server-side rendering + client-side caching ## 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 - [x] Marketplace page loads are faster ### For configuration changes: None |
||
|
|
dd84fb5c66 |
feat(platform): Add public share links for agent run results (#10938)
<!-- Clearly explain the need for these changes: --> This PR adds the ability for users to share their agent run results publicly via shareable links. Users can generate a public link that allows anyone to view the outputs of a specific agent execution without requiring authentication. This feature enables users to share their agent results with clients, colleagues, or the community. https://github.com/user-attachments/assets/5508f430-07d0-4cd3-87bc-301b0b005cce ### Changes 🏗️ #### Backend Changes - **Database Schema**: Added share tracking fields to `AgentGraphExecution` model in Prisma schema: - `isShared`: Boolean flag to track if execution is shared - `shareToken`: Unique token for the share URL - `sharedAt`: Timestamp when sharing was enabled - **API Endpoints**: Added three new REST endpoints in `/backend/backend/server/routers/v1.py`: - `POST /graphs/{graph_id}/executions/{graph_exec_id}/share`: Enable sharing for an execution - `DELETE /graphs/{graph_id}/executions/{graph_exec_id}/share`: Disable sharing - `GET /share/{share_token}`: Retrieve shared execution data (public endpoint) - **Data Models**: - Created `SharedExecutionResponse` model for public-safe execution data - Added `ShareRequest` and `ShareResponse` Pydantic models for type-safe API responses - Updated `GraphExecutionMeta` to include share status fields - **Security**: - All share management endpoints verify user ownership before allowing changes - Public endpoint only exposes OUTPUT block data, no intermediate execution details - Share tokens are UUIDs for security #### Frontend Changes - **ShareButton Component** (`/frontend/src/components/ShareButton.tsx`): - Modal dialog for managing share settings - Copy-to-clipboard functionality for share links - Clear warnings about public accessibility - Uses Orval-generated API hooks for enable/disable operations - **Share Page** (`/frontend/src/app/(no-navbar)/share/[token]/page.tsx`): - Clean, navigation-free page for viewing shared executions - Reuses existing `RunOutputs` component for consistent output rendering - Proper error handling for invalid/disabled share links - Loading states during data fetch - **API Integration**: - Fixed custom mutator to properly set Content-Type headers for POST requests with empty bodies - Generated TypeScript types via Orval for type-safe API calls ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: <!-- Test plan: --> - [x] Enable sharing for an agent execution and verify share link is generated - [x] Copy share link and verify it copies to clipboard - [x] Open share link in incognito/private browser and verify outputs are displayed - [x] Disable sharing and verify share link returns 404 - [x] Try to enable/disable sharing for another user's execution (should fail with 404) - [x] Verify share page shows proper loading and error states - [x] Test that only OUTPUT blocks are shown in shared view, no intermediate data = |
||
|
|
33679f3ffe |
feat(platform): Add instructions field to agent submissions (#10931)
## Summary Added an optional "Instructions" field for agent submissions to help users understand how to run agents and what to expect. <img width="1000" alt="image" src="https://github.com/user-attachments/assets/015c4f0b-4bdd-48df-af30-9e52ad283e8b" /> <img width="1000" alt="image" src="https://github.com/user-attachments/assets/3242cee8-a4ad-4536-bc12-64b491a8ef68" /> <img width="1000" alt="image" src="https://github.com/user-attachments/assets/a9b63e1c-94c0-41a4-a44f-b9f98e446793" /> ### Changes Made **Backend:** - Added `instructions` field to `AgentGraph` and `StoreListingVersion` database models - Updated `StoreSubmission`, `LibraryAgent`, and related Pydantic models - Modified store submission API routes to handle instructions parameter - Updated all database functions to properly save/retrieve instructions field - Added graceful handling for cases where database doesn't yet have the field **Frontend:** - Added instructions field to agent submission flow (PublishAgentModal) - Positioned below "Recommended Schedule" section as specified - Added instructions display in library/run flow (RunAgentModal) - Positioned above credentials section with informative blue styling - Added proper form validation with 2000 character limit - Updated all TypeScript types and API client interfaces ### Key Features - ✅ Optional field - fully backward compatible - ✅ Proper positioning in both submission and run flows - ✅ Character limit validation (2000 chars) - ✅ User-friendly display with "How to use this agent" styling - ✅ Only shows when instructions are provided ### Testing - Verified Pydantic model validation works correctly - Confirmed schema validation enforces character limits - Tested graceful handling of missing database fields - Code formatting and linting completed ## Test plan - [ ] Test agent submission with instructions field - [ ] Test agent submission without instructions (backward compatibility) - [ ] Verify instructions display correctly in run modal - [ ] Test character limit validation - [ ] Verify database migrations work properly 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
7d2ab61546 |
feat(platform): Disable Trigger Setup through Builder (#10418)
We want users to set up triggers through the Library rather than the Builder. - Resolves #10413 https://github.com/user-attachments/assets/515ed80d-6569-4e26-862f-2a663115218c ### Changes 🏗️ - Update node UI to push users to Library for trigger set-up and management - Add note redirecting to Library for trigger set-up - Remove webhook status indicator and webhook URL section - Add `libraryAgent: LibraryAgent` to `BuilderContext` for access inside `CustomNode` - Move library agent loader from `FlowEditor` to `useAgentGraph` - Implement `migrate_legacy_triggered_graphs` migrator function - Remove `on_node_activate` hook (which previously handled webhook setup) - Propagate `created_at` from DB to `GraphModel` and `LibraryAgentPreset` models ### 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] Existing node triggers are converted to triggered presets (visible in the Library) - [x] Converted triggered presets work - [x] Trigger node inputs are disabled and handles are hidden - [x] Trigger node message links to the correct Library Agent when saved |
||
|
|
f82adeb959 |
feat(library): Add agent favoriting functionality (#10828)
### Need 💡 This PR introduces the ability for users to "favorite" agents in the library view, enhancing agent discoverability and organization. Favorited agents will be visually marked with a heart icon and prioritized in the library list, appearing at the top. This feature is distinct from pinning specific agent runs. ### Changes 🏗️ * **Backend:** * Updated `LibraryAgent` model in `backend/server/v2/library/model.py` to include the `is_favorite` field when fetching from the database. * **Frontend:** * Updated `LibraryAgent` TypeScript type in `autogpt-server-api/types.ts` to include `is_favorite`. * Modified `LibraryAgentCard.tsx` to display a clickable heart icon, indicating the favorite status. * Implemented a click handler on the heart icon to toggle the `is_favorite` status via an API call, including loading states and toast notifications. * Updated `useLibraryAgentList.ts` to implement client-side sorting, ensuring favorited agents appear at the top of the list. * Updated `openapi.json` to include `is_favorite` in the `LibraryAgent` schema and regenerated frontend API types. * Installed `@orval/core` for API generation. ### 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 that the heart icon is displayed correctly on `LibraryAgentCard` for both favorited (filled red) and unfavorited (outlined gray) agents. - [x] Click the heart icon on an unfavorited agent: - [x] Confirm the icon changes to filled red. - [x] Verify a "Added to favorites" toast notification appears. - [x] Confirm the agent moves to the top of the library list. - [x] Check that the agent card does not navigate to the agent details page. - [x] Click the heart icon on a favorited agent: - [x] Confirm the icon changes to outlined gray. - [x] Verify a "Removed from favorites" toast notification appears. - [x] Confirm the agent's position adjusts in the list (no longer at the very top unless other sorting criteria apply). - [x] Check that the agent card does not navigate to the agent details page. - [x] Test the loading state: rapidly click the heart icon and observe the `opacity-50 cursor-not-allowed` styling. - [x] Verify that the sorting correctly places all favorited agents at the top, maintaining their original relative order within the favorited group, and the same for unfavorited agents. #### For configuration changes: - [ ] `.env.default` is updated or already compatible with my changes - [ ] `docker-compose.yml` is updated or already compatible with my changes - [x] I have included a list of my configuration changes in the PR description (under **Changes**) --- <a href="https://cursor.com/background-agent?bcId=bc-43e8f98c-e4ea-4149-afc8-5eea3d1ab439"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-cursor-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-cursor-light.svg"> <img alt="Open in Cursor" src="https://cursor.com/open-in-cursor.svg"> </picture> </a> <a href="https://cursor.com/agents?id=bc-43e8f98c-e4ea-4149-afc8-5eea3d1ab439"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-web-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-web-light.svg"> <img alt="Open in Web" src="https://cursor.com/open-in-web.svg"> </picture> </a> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Nicholas Tindle <ntindle@users.noreply.github.com> Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Reinier van der Leer <pwuts@agpt.co> |
||
|
|
6f08a1cca7 | fix: the api key credentials weren't registering correctly (#10936) | ||
|
|
1ddf92eed4 |
fix(frontend): new agent run page design refinements (#10924)
## Changes 🏗️ Implements all the following changes... 1. The margins between the runs, on the left hand side.. reduced them around `6px` ? 2. Make agent inputs full width 3. Make "Schedule setup" section displayed in a second modal 4. When an agent is running, we should not show the "Delete agent" button 5. Copy changes around the actions for agent/runs 6. Large button height should be `52px` 7. Fix margins between + New Run button and the runs & scheduled menu 8. Make border white on cards Also... - improve the naming of some components to reflect better their context/usage - show on the inputs section when an agent is using already API keys or credentials - fix runs/schedules not auto-selecting once created ## 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 with the new agent runs page enabled - [x] Test the above ### For configuration changes: None |
||
|
|
381558342a |
fix(frontend/builder): Fix moved blocks disappearing on no-op save (#10927)
- Resolves #10926 ### Changes 🏗️ - Fix save no-op if graph has no changes ### 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 a graph after only moving nodes doesn't make those nodes disappear |
||
|
|
f262bb9307 |
fix(platform): add timezone awareness to scheduler (#10921)
### Changes 🏗️ This PR restores and improves timezone awareness in the scheduler service to correctly handle daylight savings time (DST) transitions. The changes ensure that scheduled agents run at the correct local time even when crossing DST boundaries. #### Backend Changes: - **Scheduler Service (`scheduler.py`):** - Added `user_timezone` parameter to `add_graph_execution_schedule()` method - CronTrigger now uses the user's timezone instead of hardcoded UTC - Added timezone field to `GraphExecutionJobInfo` for visibility - Falls back to UTC with a warning if no timezone is provided - Extracts and includes timezone information from job triggers - **API Router (`v1.py`):** - Added optional `timezone` field to `ScheduleCreationRequest` - Fetches user's saved timezone from profile if not provided in request - Passes timezone to scheduler client when creating schedules - Converts `next_run_time` back to user timezone for display #### Frontend Changes: - **Schedule Creation Modal:** - Now sends user's timezone with schedule creation requests - Uses browser's local timezone if user hasn't set one in their profile - **Schedule Display Components:** - Updated to show timezone information in schedule details - Improved formatting of schedule information in monitoring views - Fixed schedule table display to properly show timezone-aware times - **Cron Expression Utils:** - Removed UTC conversion logic from `formatTime()` function - Cron expressions are now stored in the schedule's timezone - Simplified humanization logic since no conversion is needed - **API Types & OpenAPI:** - Added `timezone` field to schedule-related types - Updated OpenAPI schema to include timezone parameter ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [ ] I have tested my changes according to the test plan: ### Test Plan 🧪 #### 1. Schedule Creation Tests - [ ] Create a new schedule and verify the timezone is correctly saved - [ ] Create a schedule without specifying timezone - should use user's profile timezone - [ ] Create a schedule when user has no profile timezone - should default to UTC with warning #### 2. Daylight Savings Time Tests - [ ] Create a schedule for a daily task at 2:00 PM in a DST timezone (e.g., America/New_York) - [ ] Verify the schedule runs at 2:00 PM local time before DST transition - [ ] Verify the schedule still runs at 2:00 PM local time after DST transition - [ ] Check that the next_run_time adjusts correctly across DST boundaries #### 3. Display and UI Tests - [ ] Verify timezone is displayed in schedule details view - [ ] Verify schedule times are shown in user's local timezone in monitoring page - [ ] Verify cron expression humanization shows correct local times - [ ] Check that schedule table shows timezone information #### 4. API Tests - [ ] Test schedule creation API with timezone parameter - [ ] Test schedule creation API without timezone parameter - [ ] Verify GET schedules endpoint returns timezone information - [ ] Verify next_run_time is converted to user timezone in responses #### 5. Edge Cases - [ ] Test with various timezones (UTC, EST, PST, Europe/London, Asia/Tokyo) - [ ] Test with invalid timezone strings - should handle gracefully - [ ] Test scheduling at DST transition times (2:00 AM during spring forward) - [ ] Verify existing schedules without timezone info default to UTC #### 6. Regression Tests - [ ] Verify existing schedules continue to work - [ ] Verify schedule deletion still works - [ ] Verify schedule listing endpoints work correctly - [ ] Check that scheduled graph executions trigger as expected --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
5a6978b07d |
feat(frontend): Add expandable view for block output (#10773)
### Need for these changes 💥 https://github.com/user-attachments/assets/5b9007a1-0c49-44c6-9e8b-52bf23eec72c Users currently cannot view the full output result from a block when inspecting the Output Data History panel or node previews, as the content is clipped. This makes debugging and analysis of complex outputs difficult, forcing users to copy data to external editors. This feature improves developer efficiency and user experience, especially for blocks with large or nested responses, and reintroduces a highly requested functionality that existed previously. ### Changes 🏗️ * **New `ExpandableOutputDialog` component:** Introduced a reusable modal dialog (`ExpandableOutputDialog.tsx`) designed to display complete, untruncated output data. * **`DataTable.tsx` enhancement:** Added an "Expand" button (Maximize2 icon) to each data entry in the Output Data History panel. This button appears on hover and opens the `ExpandableOutputDialog` for a full view of the data. * **`NodeOutputs.tsx` enhancement:** Integrated the "Expand" button into node output previews, allowing users to view full output data directly from the node details. * The `ExpandableOutputDialog` provides a large, scrollable content area, displaying individual items in organized cards, with options to copy individual items or all data, along with execution ID and pin name metadata. ### 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 an agent session with executed blocks. - [x] Open the Output Data History panel. - [x] Hover over a data entry to reveal the "Expand" button. - [x] Click the "Expand" button and verify the `ExpandableOutputDialog` opens, displaying the full, untruncated content. - [x] Verify scrolling works for large outputs within the dialog. - [x] Test "Copy Item" and "Copy All" buttons within the dialog. - [x] Navigate to a custom node in the graph. - [x] Inspect a node's output (if applicable). - [x] Hover over the output data to reveal the "Expand" button. - [x] Click the "Expand" button and verify the `ExpandableOutputDialog` opens, displaying the full content. --- Linear Issue: [OPEN-2593](https://linear.app/autogpt/issue/OPEN-2593/add-expandable-view-for-full-block-output-preview) <a href="https://cursor.com/background-agent?bcId=bc-27badeb8-2b49-4286-aa16-8245dfd33bfc"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-cursor-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-cursor-light.svg"> <img alt="Open in Cursor" src="https://cursor.com/open-in-cursor.svg"> </picture> </a> <a href="https://cursor.com/agents?id=bc-27badeb8-2b49-4286-aa16-8245dfd33bfc"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-web-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-web-light.svg"> <img alt="Open in Web" src="https://cursor.com/open-in-web.svg"> </picture> </a> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Nicholas Tindle <ntindle@users.noreply.github.com> |
||
|
|
339ec733cb |
fix(platform): add timezone awareness to scheduler (#10921)
### Changes 🏗️ This PR restores and improves timezone awareness in the scheduler service to correctly handle daylight savings time (DST) transitions. The changes ensure that scheduled agents run at the correct local time even when crossing DST boundaries. #### Backend Changes: - **Scheduler Service (`scheduler.py`):** - Added `user_timezone` parameter to `add_graph_execution_schedule()` method - CronTrigger now uses the user's timezone instead of hardcoded UTC - Added timezone field to `GraphExecutionJobInfo` for visibility - Falls back to UTC with a warning if no timezone is provided - Extracts and includes timezone information from job triggers - **API Router (`v1.py`):** - Added optional `timezone` field to `ScheduleCreationRequest` - Fetches user's saved timezone from profile if not provided in request - Passes timezone to scheduler client when creating schedules - Converts `next_run_time` back to user timezone for display #### Frontend Changes: - **Schedule Creation Modal:** - Now sends user's timezone with schedule creation requests - Uses browser's local timezone if user hasn't set one in their profile - **Schedule Display Components:** - Updated to show timezone information in schedule details - Improved formatting of schedule information in monitoring views - Fixed schedule table display to properly show timezone-aware times - **Cron Expression Utils:** - Removed UTC conversion logic from `formatTime()` function - Cron expressions are now stored in the schedule's timezone - Simplified humanization logic since no conversion is needed - **API Types & OpenAPI:** - Added `timezone` field to schedule-related types - Updated OpenAPI schema to include timezone parameter ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [ ] I have tested my changes according to the test plan: ### Test Plan 🧪 #### 1. Schedule Creation Tests - [ ] Create a new schedule and verify the timezone is correctly saved - [ ] Create a schedule without specifying timezone - should use user's profile timezone - [ ] Create a schedule when user has no profile timezone - should default to UTC with warning #### 2. Daylight Savings Time Tests - [ ] Create a schedule for a daily task at 2:00 PM in a DST timezone (e.g., America/New_York) - [ ] Verify the schedule runs at 2:00 PM local time before DST transition - [ ] Verify the schedule still runs at 2:00 PM local time after DST transition - [ ] Check that the next_run_time adjusts correctly across DST boundaries #### 3. Display and UI Tests - [ ] Verify timezone is displayed in schedule details view - [ ] Verify schedule times are shown in user's local timezone in monitoring page - [ ] Verify cron expression humanization shows correct local times - [ ] Check that schedule table shows timezone information #### 4. API Tests - [ ] Test schedule creation API with timezone parameter - [ ] Test schedule creation API without timezone parameter - [ ] Verify GET schedules endpoint returns timezone information - [ ] Verify next_run_time is converted to user timezone in responses #### 5. Edge Cases - [ ] Test with various timezones (UTC, EST, PST, Europe/London, Asia/Tokyo) - [ ] Test with invalid timezone strings - should handle gracefully - [ ] Test scheduling at DST transition times (2:00 AM during spring forward) - [ ] Verify existing schedules without timezone info default to UTC #### 6. Regression Tests - [ ] Verify existing schedules continue to work - [ ] Verify schedule deletion still works - [ ] Verify schedule listing endpoints work correctly - [ ] Check that scheduled graph executions trigger as expected --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
6575b655f0 |
fix(frontend): improve agent runs page loading state (#10914)
## Changes 🏗️ https://github.com/user-attachments/assets/356e5364-45be-4f6e-bd1c-cc8e42bf294d And also tidy up the some of the logic around hooks. I also added a `okData` helper to avoid having to type case ( `as` ) so much with the generated types ( given the `response` is a union depending on `status: 200 | 400 | 401` ... ) ## 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 PR locally with the `new-agent-runs` flag enabled - [x] Check the nice loading state ### For configuration changes: None |
||
|
|
7c2df24d7c |
fix(frontend): delete actions behind dialogs in agent runs view (#10915)
## Changes 🏗️ <img width="800" height="630" alt="Screenshot 2025-09-12 at 17 38 34" src="https://github.com/user-attachments/assets/103d7e10-e924-4831-b0e7-b7df608a205f" /> <img width="800" height="524" alt="Screenshot 2025-09-12 at 17 38 30" src="https://github.com/user-attachments/assets/aeec2ac7-4bea-4ec9-be0c-4491104733cb" /> <img width="800" height="750" alt="Screenshot 2025-09-12 at 17 38 26" src="https://github.com/user-attachments/assets/e0b28097-8352-4431-ae4a-9dc3e3bcf9eb" /> - All the `Delete` actions on the new Agent Library Runs page should be behind confirmation dialogs - Re-arrange the file structure a bit 💆🏽 - Make the buttons min-width a bit more generous ## 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 - [x] Test the above #### For configuration changes: None |
||
|
|
6a2d7e0fb0 |
fix(frontend): handle avatar missing images better (#10903)
## Changes 🏗️ I think this helps `next/image` being more tolerant when optimising images from certain origins according to Claude. ## 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] Deploy preview to dev - [x] Verify avatar images load better ### For configuration changes: None |
||
|
|
f490b01abb |
feat(frontend): Add Vercel Analytics and Speed Insights (#10904)
## Summary - Added Vercel Analytics for tracking page views and user interactions - Added Vercel Speed Insights for monitoring Web Vitals and performance metrics - Fixed incorrect placement of SpeedInsights component (was between html and head tags) ## Changes - Import Analytics and SpeedInsights components from Vercel packages - Place both components correctly within the body tag - Ensure proper HTML structure and Next.js best practices ## Test plan - [x] Verify components are imported correctly - [x] Confirm no HTML validation errors - [x] Test that analytics work when deployed to Vercel - [x] Verify Speed Insights metrics are being collected |
||
|
|
e70c970ab6 |
feat(frontend): new <Avatar /> component using next/image (#10897)
## Changes 🏗️ <img width="800" height="648" alt="Screenshot 2025-09-10 at 22 00 01" src="https://github.com/user-attachments/assets/eb396d62-01f2-45e5-9150-4e01dfcb71d0" /><br /> Adds a new `<Avatar />` component and uses that across the app. Is a copy of [shadcn/avatar](https://duckduckgo.com/?q=shadcn+avatar&t=brave&ia=web) with the following modifications: - renders images with [`next/image`](https://duckduckgo.com/?q=next+image&t=brave&ia=web) by default - this ensures avatars rendered on the app are optimised and resized ✔️ - it will work as long as all the domains are white-listed in `nextjs.config.mjs` - allows to bypass and use a normal `<img />` tag via an `as` prop if needed - sometimes we might need to render images from a dynamic cdn 🤷🏽♂️ ## 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] ... ### For configuration changes: None |
||
|
|
3bbce71678 |
feat(builder): Block menu redesign - part 3 (#10864)
### Changes 🏗️ #### Block Menu Redesign - Part 3 This PR continues the block menu redesign effort, implementing the new content sections and improving the overall user experience. The changes focus on better organization, pagination, error handling, and visual consistency. #### Key Features Implemented: **1. New Content Organization** - **All Blocks Content**: Complete listing of all available blocks with category-based organization and infinite scroll support (`AllBlocksContent/`) - **My Agents Content**: Display and manage user's own agents with pagination (`MyAgentsContent/`) - **Marketplace Agents Content**: Browse and add marketplace agents with improved loading states (`MarketplaceAgentsContent/`) - **Integration Blocks**: Dedicated view for integration-specific blocks with better filtering (`IntegrationBlocks/`) - **Suggestion Content**: Smart suggestions based on user context and search history (`SuggestionContent/`) - **Integrations Content**: Browse available integrations in a dedicated view (`IntegrationsContent/`) **2. Enhanced UI Components** - **Paginated Lists**: New pagination components for blocks and integrations (`PaginatedBlocksContent/`, `PaginatedIntegrationList/`) - **Block List**: Reusable block list component with consistent styling (`BlockList/`) - **Improved Error Handling**: Comprehensive error states with retry functionality across all content types - **Loading States**: Skeleton loaders for better perceived performance **3. Infrastructure Improvements** - **Centralized Styles**: New `style.ts` file for consistent styling across components - **Better State Management**: Enhanced context provider with improved menu state handling - **Mock Flag Support**: Added feature flags for testing new block features - **Default State Enum**: Refactored to use enums for menu default states **4. Visual Assets** - Added 50+ new integration icons/logos for better visual representation - Updated existing integration images for consistency **5. Code Quality** - Improved error handling with proper error cards and retry mechanisms - Consistent formatting and import organization - Enhanced TypeScript types and interfaces - Better separation of concerns with dedicated hooks for each content type #### Technical Details: - **Files Changed**: 96 files - **Additions**: 1,380 lines - **Deletions**: 162 lines - **New Components**: 10+ new React components with dedicated hooks - **Integration Icons**: 50+ new PNG images for various integrations #### Breaking Changes: None - All changes are backwards compatible --- ### Test Plan 📋 - [x] Create a new agent and verify all blocks are accessible - [x] Test infinite scroll in "All Blocks" view - [x] Verify pagination works correctly in marketplace agents view - [x] Test error states by simulating network failures - [x] Check that all new integration icons display correctly - [x] Test adding agents from marketplace view - [x] Ensure skeleton loaders appear during data fetching > Generated by claude |
||
|
|
34fbf4377f |
fix(frontend): allow lazy loading of images (#10895)
The `next/image` component has inbuilt lazy loading enabled, but in some
components, we are bypassing it using a priority flag. So, I have
reverted this in this PR.
### 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] Lazy loading is working perfectly locally.
|
||
|
|
f682ef885a |
chore(frontend/deps-dev): Bump 16 dev dependencies to newer minor versions (#10837)
Bumps the development-dependencies group with 16 updates in the /autogpt_platform/frontend directory: | Package | From | To | | --- | --- | --- | | [@chromatic-com/storybook](https://github.com/chromaui/addon-visual-tests) | `4.1.0` | `4.1.1` | | [@playwright/test](https://github.com/microsoft/playwright) | `1.54.2` | `1.55.0` | | [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `9.1.2` | `9.1.4` | | [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/docs) | `9.1.2` | `9.1.4` | | [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/links) | `9.1.2` | `9.1.4` | | [@storybook/addon-onboarding](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/onboarding) | `9.1.2` | `9.1.4` | | [@storybook/nextjs](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/nextjs) | `9.1.2` | `9.1.4` | | [@tanstack/eslint-plugin-query](https://github.com/TanStack/query/tree/HEAD/packages/eslint-plugin-query) | `5.83.1` | `5.86.0` | | [@tanstack/react-query-devtools](https://github.com/TanStack/query/tree/HEAD/packages/react-query-devtools) | `5.84.2` | `5.86.0` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `24.2.1` | `24.3.0` | | [chromatic](https://github.com/chromaui/chromatic-cli) | `13.1.3` | `13.1.4` | | [concurrently](https://github.com/open-cli-tools/concurrently) | `9.2.0` | `9.2.1` | | [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) | `15.4.6` | `15.5.2` | | [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) | `9.1.2` | `9.1.4` | | [msw](https://github.com/mswjs/msw) | `2.10.4` | `2.11.1` | | [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/core) | `9.1.2` | `9.1.4` | Updates `@chromatic-com/storybook` from 4.1.0 to 4.1.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/chromaui/addon-visual-tests/releases"><code>@chromatic-com/storybook</code>'s releases</a>.</em></p> <blockquote> <h2>v4.1.1</h2> <h4>🐛 Bug Fix</h4> <ul> <li>Broaden version-range for storybook peerDependency <a href="https://redirect.github.com/chromaui/addon-visual-tests/pull/389">#389</a> (<a href="https://github.com/ndelangen"><code>@ndelangen</code></a>)</li> </ul> <h4>Authors: 1</h4> <ul> <li>Norbert de Langen (<a href="https://github.com/ndelangen"><code>@ndelangen</code></a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/chromaui/addon-visual-tests/blob/v4.1.1/CHANGELOG.md"><code>@chromatic-com/storybook</code>'s changelog</a>.</em></p> <blockquote> <h1>v4.1.1 (Wed Aug 20 2025)</h1> <h4>🐛 Bug Fix</h4> <ul> <li>Broaden version-range for storybook peerDependency <a href="https://redirect.github.com/chromaui/addon-visual-tests/pull/389">#389</a> (<a href="https://github.com/ndelangen"><code>@ndelangen</code></a>)</li> </ul> <h4>Authors: 1</h4> <ul> <li>Norbert de Langen (<a href="https://github.com/ndelangen"><code>@ndelangen</code></a>)</li> </ul> <hr /> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
2ffd249aac |
fix(backend/external-api): Improve security & reliability of API key storage (#10796)
Our API key generation, storage, and verification system has a couple of issues that need to be ironed out before full-scale deployment. ### Changes 🏗️ - Move from unsalted SHA256 to salted Scrypt hashing for API keys - Avoid false-negative API key validation due to prefix collision - Refactor API key management code for clarity - [refactor(backend): Clean up API key DB & API code (#10797)](https://github.com/Significant-Gravitas/AutoGPT/pull/10797) - Rename models and properties in `backend.data.api_key` for clarity - Eliminate redundant/custom/boilerplate error handling/wrapping in API key endpoint call stack - Remove redundant/inaccurate `response_model` declarations from API key endpoints Dependencies for `autogpt_libs`: - Add `cryptography` as a dependency - Add `pyright` as a dev dependency ### 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: - Performing these actions through the UI (still) works: - [x] Creating an API key - [x] Listing owned API keys - [x] Deleting an owned API key - [x] Newly created API key can be used in Swagger UI - [x] Existing API key can be used in Swagger UI - [x] Existing API key is re-encrypted with salt on use |
||
|
|
986245ec43 |
feat(frontend): run agent page improvements (#10879)
## Changes 🏗️ - Add all the cron scheduling options ( _yearly, monthly, weekly, custom, etc..._ ) using the new Design System components - Add missing agent/run actions: export agent + delete agent ## 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 with `new-agent-runs` enabled - [x] Test the above ### For configuration changes: None |
||
|
|
925f249ce1 |
feat(frontend): use new output renderers on new run page (#10876)
## Changes 🏗️ Integrating the great work @ntindle did on the rich agent output renderers into the new Agent run page in the library 💜 - Implemented enhanced output rendering in `<RunDetails />` using the shared output-renderers - Added `<RunOutputs />` sub-component at `RunDetails/components/RunOutputs.tsx` that: - [x] builds items from `run.outputs`, extracts metadata, picks a renderer via `globalRegistry`, and falls back to `TextRenderer` - [x] renders `<OutputActions />` for copy/download and a list of `<OutputItems />`. ## 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 an agent on the view which outputs rich content - [x] See the output use the new renderers, for example code is higlighted ### For configuration changes: None |
||
|
|
e8cf3edbf4 |
feat(frontend): add timezone to new library agent page (#10874)
## Changes 🏗️ <img width="800" height="756" alt="Screenshot 2025-09-09 at 14 03 24" src="https://github.com/user-attachments/assets/65f3e3a8-1ce0-491c-824a-601a494d3a36" /> <img width="600" height="493" alt="Screenshot 2025-09-09 at 14 03 28" src="https://github.com/user-attachments/assets/457b37a3-6b3b-49b8-912c-c72cf06e8e58" /> Following the nice changes @ntindle did regarding timezones, bring them into the new page: - display the timezone when scheduling an agent on the new modal - display the timezone for a schedule on the new schedule details view ## 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 with `agent-new-runs` flag ON - [x] Open an agent on the new page - [x] On the new modal, create a schedule, it display the timezone alert - [x] Once created, on the schedule view, it displays the timezone ### For configuration changes: None |
||
|
|
dbee580d80 |
build(frontend): Increase build process memory limit to 4 GiB (#10861)
Increase memory limit of frontend build process to 4GiB to fix out-of-memory build failures |
||
|
|
0325ec0a2c |
fix(frontend): Fix environment variable handling in Docker builds for dev/prod deployments (#10859)
<!-- Clearly explain the need for these changes: --> Sentry was not being enabled in dev/prod deployments because environment variables were being incorrectly overwritten during the Docker build process. ### Changes 🏗️ - Fixed Dockerfile environment variable merging logic to prevent `.env.default` from overwriting `.env.production` values - Added `NODE_ENV=production` to build stage to ensure Next.js looks for production env files - Updated env file merging to only run when not in CI/CD (when `.env.production` doesn't exist) - When `.env.production` exists (CI/CD), now merges defaults with production values properly ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [ ] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [ ] Verify local Docker builds still work with `docker compose up` - [ ] Verify dev deployment has `NEXT_PUBLIC_APP_ENV=dev` in built JavaScript - [ ] Verify prod deployment has `NEXT_PUBLIC_APP_ENV=prod` in built JavaScript - [ ] Verify Sentry is enabled in dev/prod deployments (`isProdOrDev=true`) #### 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**) ### Technical Details **Root Cause:** 1. CI/CD workflow creates `.env.production` with correct values (e.g., `NEXT_PUBLIC_APP_ENV=dev`) 2. Dockerfile's env merging logic always created `.env` from `.env.default` 3. Next.js loads `.env.production` first, then `.env` second 4. Since `.env` is loaded after `.env.production`, it overwrites the values 5. `.env.default` has `NEXT_PUBLIC_APP_ENV=local`, causing `getAppEnv()` to return "local" instead of "dev"/"prod" 6. This made `isProdOrDev` evaluate to `false`, disabling Sentry **Solution:** The Dockerfile now checks if `.env.production` exists: - If yes (CI/CD): Merges `.env.default` + `.env.production` → `.env.production` (production values take precedence) - If no (local): Merges `.env.default` + `.env` → `.env` (user values take precedence) This ensures production deployments get the correct environment variables while preserving local development workflow. 🤖 Description generated + Investigation assisted with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Reinier van der Leer <pwuts@agpt.co> |
||
|
|
3952a1a226 |
feat(frontend): smol improvements on new run view (#10854)
## Changes 🏗️ <img width="800" height="790" alt="Screenshot 2025-09-05 at 17 22 36" src="https://github.com/user-attachments/assets/8b22424c-1968-4c4f-9eed-3d5d5185751d" /> - Make a nicer empty state and display it when there are no runs/schedules - Rename search param to `executionId` to mirror what was on the old page - Reduce polling when execution is happening to 1.5s ( 3.s is too slow maybe... ) - Make sure the run details page also updates when a run is happening ## 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] Tested the above ### For configuration changes: None <details> <summary>Examples of configuration changes</summary> - Changing ports - Adding new services that need to communicate with each other - Secrets or environment variable changes - New or infrastructure changes such as databases </details> |
||
|
|
cfc975d39b |
feat(backend): Type for API block data response (#10763)
Moving to auto-generated frontend types caused returned blocks data to no longer have proper typing. ### Changes 🏗️ - Add `BlockInfo` model and `get_info` function that returns it to the `Block` class, including costs - Move `BlockCost` and `BlockCostType` to `block.py` to prevent circular imports ### 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] Endpoints using the new type work correctly Co-authored-by: Abhimanyu Yadav <122007096+Abhi1992002@users.noreply.github.com> |
||
|
|
46e0f6cc45 |
feat(platform): Add recommended run schedule for agent execution (#10827)
## Summary <img width="1000" alt="Screenshot 2025-09-02 at 9 46 49 PM" src="https://github.com/user-attachments/assets/d78100c7-7974-4d37-a788-757764d8b6b7" /> <img width="1000" alt="Screenshot 2025-09-02 at 9 20 24 PM" src="https://github.com/user-attachments/assets/cd092963-8e26-4198-b65a-4416b2307a50" /> <img width="1000" alt="Screenshot 2025-09-02 at 9 22 30 PM" src="https://github.com/user-attachments/assets/e16b3bdb-c48c-4dec-9281-b2a35b3e21d0" /> <img width="1000" alt="Screenshot 2025-09-02 at 9 20 38 PM" src="https://github.com/user-attachments/assets/11d74a39-f4b4-4fce-8d30-0e6a925f3a9b" /> • Added recommended schedule cron expression as an optional input throughout the platform • Implemented complete data flow from builder → store submission → agent library → run page • Fixed UI layout issues including button text overflow and ensured proper component reusability ## Changes ### Backend - Added `recommended_schedule_cron` field to `AgentGraph` schema and database migration - Updated API models (`LibraryAgent`, `MyAgent`, `StoreSubmissionRequest`) to include the new field - Enhanced store submission approval flow to persist recommended schedule to database ### Frontend - Added recommended schedule input to builder page (SaveControl component) with overflow-safe styling - Updated store submission modal (PublishAgentModal) with schedule configuration - Enhanced agent run page with schedule tip display and pre-filled schedule dialog - Refactored `CronSchedulerDialog` with discriminated union types for better reusability - Fixed layout issues including button text truncation and popover width constraints - Implemented robust cron expression parsing with 100% reversibility between UI and cron format 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
c03af5c196 |
feat(frontend): allow sentry disable in dev (#10858)
<!-- Clearly explain the need for these changes: --> ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> Vercel is logging things it shouldnt ### 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] Manually verified in vercel |
||
|
|
00cbfb8f80 |
feat(frontend): re-enable sentry in dev (#10857)
<!-- Clearly explain the need for these changes: --> ### Changes 🏗️ - We want sentry to actually work so we can do testing <!-- 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] we're just re-enabling. it wroks in prod |
||
|
|
3beafae955 |
feat(frontend): new agent library run page (#10835)
## Changes 🏗️ This is the new **Agent Library Run** page. Sorry in advance for the massive PR 🙏🏽 . I got carried away and it has been tricky to split it ( _maybe I abused the agent too much_ 🤔 ) <img width="800" height="1085" alt="Screenshot 2025-09-04 at 13 58 33" src="https://github.com/user-attachments/assets/b709edb9-d2b5-48ad-a04d-dddf10c89af3" /> <img width="800" height="338" alt="Screenshot 2025-09-04 at 13 54 51" src="https://github.com/user-attachments/assets/efa28be2-d2dd-477f-af13-33ddd1d639dd" /> <img width="800" height="598" alt="Screenshot 2025-09-04 at 13 54 18" src="https://github.com/user-attachments/assets/806ab620-3492-4c5b-b4e2-f17b89756dd8" /> - Schedules are now on the sidebar tabbed along with runs - The whole UI has been updated to match the new designs and design system - There is no more "run draft" view as the modal is in charge of new runs now 💪🏽 - The page is responsive and mobile friendly 📱 Uploading mobile.mov… https://github.com/user-attachments/assets/0e483062-0e50-4fa6-aaad-a1f6766df931 ### Safety I understand this is a lot of changes. However is all behind a feature flag, `new-agent-runs`, when OFF it will display the old library agent view. The old library agent view can still be accessed under: `/library/legacy/{id}` for reference 👍🏽 ### Testing I haven't any tests for now... 💆🏽 I want to get this enabled on dev so we can start running our agents there through the new page and modal and start catching edge-cases. Tests will come later in the form of E2E for the happy paths, and probably I will introduce [Vitest](https://vitest.dev/) + [Testing Library](https://testing-library.com/) for the finer details... ## 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 the above ### For configuration changes: None, the feature flag is already configured 🙏🏽 --------- Co-authored-by: Abhimanyu Yadav <122007096+Abhi1992002@users.noreply.github.com> |
||
|
|
2e38f132e7 |
feat(backend/store): implement sub-agent approval support (#10842)
## Summary Implement comprehensive sub-agent approval flow following the business requirements from the flow diagram. <img width="1956" height="1448" alt="image" src="https://github.com/user-attachments/assets/8de35e5b-9d3e-4dc2-bff0-47b49dbebc83" /> ### Key Features - ✅ **Auto-approve sub-agents** when main agent is approved - ✅ **Handle all scenarios**: new listings, existing versions, missing versions - ✅ **Transaction safety** with atomic operations via database transactions - ✅ **Parallel processing** using asyncio.gather for performance optimization - ✅ **Hidden from store** with isAvailable=false for all sub-agents ### Implementation Details - **Replaced** `_get_missing_sub_store_listing` with comprehensive `_handle_sub_agent_approvals` - **Added** `_approve_sub_agent` function with early returns for clean, readable code flow - **Used** `transaction()` context manager to ensure data consistency across operations - **Process sub-agents in parallel** while maintaining transaction integrity ### Business Logic Flow 1. **Check if sub-agent is already listed** in store 2. **If not listed**: create new store listing with `isAvailable=false` 3. **If listed but not approved**: approve the correct version 4. **If correct version not listed**: create store listing version and approve it 5. **If already approved**: no action needed (early return) All sub-agents remain **hidden from public store** while being internally approved for system use. ## Files Changed - `backend/server/v2/store/db.py` - Core implementation of sub-agent approval logic ## Test Plan - [ ] Verify main agent approval triggers sub-agent approvals - [ ] Test all sub-agent scenarios: new, existing unapproved, existing approved - [ ] Confirm sub-agents remain hidden (`isAvailable=false`) - [ ] Validate transaction rollback on failures - [ ] Check parallel processing works correctly 🤖 Generated with [Claude Code](https://claude.ai/code) |
||
|
|
7ea17df9ed |
chore(frontend/deps): Bump recharts from 2.15.3 to 3.1.2 in /autogpt_platform/frontend (#10807)
Bumps [recharts](https://github.com/recharts/recharts) from 2.15.3 to 3.1.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/recharts/recharts/releases">recharts's releases</a>.</em></p> <blockquote> <h2>v3.1.2</h2> <h2>What's Changed</h2> <h3>Fix</h3> <ul> <li><code>Label/Polar Charts</code>: <code>Label</code> viewbox should now be present in polar charts and address <a href="https://redirect.github.com/recharts/recharts/issues/6030">recharts/recharts#6030</a> by <a href="https://github.com/PavelVanecek"><code>@PavelVanecek</code></a> in <a href="https://redirect.github.com/recharts/recharts/pull/6180">recharts/recharts#6180</a></li> <li>Add LRU cache for string size measurements (<a href="https://redirect.github.com/recharts/recharts/issues/3955">#3955</a>) by <a href="https://github.com/shreedharbhat98"><code>@shreedharbhat98</code></a> in <a href="https://redirect.github.com/recharts/recharts/pull/6176">recharts/recharts#6176</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/recharts/recharts/compare/v3.1.1...v3.1.2">https://github.com/recharts/recharts/compare/v3.1.1...v3.1.2</a></p> <h2>v3.1.1</h2> <h2>What's Changed</h2> <h3>Fix</h3> <ul> <li><code>General</code>: Don't apply duplicate IDs in the DOM by <a href="https://github.com/PavelVanecek"><code>@PavelVanecek</code></a> in <a href="https://redirect.github.com/recharts/recharts/pull/6111">recharts/recharts#6111</a></li> <li><code>Stacked Area/Bar</code>: give all graphical items their own unique identifier and use that to select stacked data. Fixes issue where stacked charts could not be created from the graphical item <code>data</code> prop <a href="https://redirect.github.com/recharts/recharts/issues/6073">recharts/recharts#6073</a> by <a href="https://github.com/PavelVanecek"><code>@PavelVanecek</code></a></li> <li><code>Stacked Area/Bar</code>: exclude stacked axis domain when not relevant for axis by <a href="https://github.com/rinkstiekema"><code>@rinkstiekema</code></a> in <a href="https://redirect.github.com/recharts/recharts/pull/6162">recharts/recharts#6162</a> fixes issue where numeric stacked charts would not render correctly</li> <li><code>Area Chart</code>: ranged area chart - show active dot on both points instead of just the top one by <a href="https://github.com/sroy8091"><code>@sroy8091</code></a> in <a href="https://redirect.github.com/recharts/recharts/pull/6116">recharts/recharts#6116</a> fixes <a href="https://redirect.github.com/recharts/recharts/issues/6080">#6080</a></li> <li><code>Polar Charts/Label</code>: fix <code>Label</code> in polar charts by <a href="https://github.com/PavelVanecek"><code>@PavelVanecek</code></a> in <a href="https://redirect.github.com/recharts/recharts/pull/6126">recharts/recharts#6126</a></li> <li><code>Scatter/ErrorBar</code>: choose implicit Scatter ErrorBar direction based on chart layout (to be the same as 2.x) by <a href="https://github.com/PavelVanecek"><code>@PavelVanecek</code></a> in <a href="https://redirect.github.com/recharts/recharts/pull/6159">recharts/recharts#6159</a></li> <li><code>X/YAxis/Reference Components</code>: allow axis values and reference items to render when there is no data but there is a domain/explicit ticks set by <a href="https://github.com/ethphan"><code>@ethphan</code></a> in <a href="https://redirect.github.com/recharts/recharts/pull/6161">recharts/recharts#6161</a></li> <li><code>X/YAxis</code>: pass axis padding info to custom tick components by <a href="https://github.com/shreedharbhat98"><code>@shreedharbhat98</code></a> in <a href="https://redirect.github.com/recharts/recharts/pull/6163">recharts/recharts#6163</a></li> </ul> <h3>Chore / Testing</h3> <ul> <li>good progress on our journey to enable <code>strictNullChecks</code></li> <li>addition of playwright visual regression tests to CI</li> <li>split <code>Animate</code> into <code>JavascriptAnimate</code> and <code>CSSTransitionAnimate</code> by <a href="https://github.com/PavelVanecek"><code>@PavelVanecek</code></a> in <a href="https://redirect.github.com/recharts/recharts/pull/6175">recharts/recharts#6175</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/sroy8091"><code>@sroy8091</code></a> made their first contribution in <a href="https://redirect.github.com/recharts/recharts/pull/6116">recharts/recharts#6116</a></li> <li><a href="https://github.com/ethphan"><code>@ethphan</code></a> made their first contribution in <a href="https://redirect.github.com/recharts/recharts/pull/6161">recharts/recharts#6161</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/recharts/recharts/compare/v3.1.0...v3.1.1">https://github.com/recharts/recharts/compare/v3.1.0...v3.1.1</a></p> <h2>v3.1.0</h2> <h2>What's Changed</h2> <p>Bug fixes (old and new) and a few new hooks post 3.0 launch!</p> <h3>Feat</h3> <p>More hooks!</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
22e692bdda |
fix(frontend): Update in-view run with real-time updates (#10839)
- Resolves #10838 ### Changes 🏗️ - Update `selectedRun` with received graph execution update if applicable ### 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] Agent outputs appear in real-time |
||
|
|
901e9eba5d |
feat(frontend): Enhanced output rendering system for agent runs (#10819)
## Summary Introduces a modular, extensible output renderer system supporting multiple content types (text, code, images, videos, JSON, markdown) for agent run outputs. The system includes smart clipboard operations, concatenated downloads, and rich markdown rendering with LaTeX math and video embedding support. ## Changes 🏗️ ### Core Output Rendering System - **Added extensible renderer architecture** (`output-renderers/types.ts`) - Plugin-based system with priority ordering - Registry pattern for automatic renderer selection - Support for custom metadata and MIME types ### Output Renderers - **TextRenderer**: Plain text with proper formatting and line breaks - **CodeRenderer**: Syntax-highlighted code blocks with language detection - **JSONRenderer**: Collapsible, formatted JSON with syntax highlighting - **ImageRenderer**: Image display with support for URLs, data URIs, and file uploads - **VideoRenderer**: Embedded video player for YouTube, Vimeo, and direct video files - **MarkdownRenderer**: Rich markdown with: - GitHub Flavored Markdown (tables, task lists, strikethrough) - LaTeX math rendering via KaTeX (inline `$...$` and display `$$...$$`) - Syntax highlighting via highlight.js - Video embedding (YouTube/Vimeo URLs auto-convert to embeds) - Clickable heading anchors - Dark mode support ### User Interface Components - **OutputItem**: Individual output display with renderer selection - **OutputActions**: Hover-based action buttons for: - Copy to clipboard with smart MIME type detection - Download with intelligent concatenation (text files merge, binaries separate) - Share functionality (placeholder for future implementation) - **AgentRunOutputView**: Main output view component with feature flag integration ### Clipboard & Download Features - Smart clipboard operations using native ClipboardItem API - MIME type detection and browser capability checking - Fallback strategies for unsupported content types - Concatenated downloads for text-based outputs - Individual downloads for binary content ### Feature Flag Integration - Added `ENABLE_ENHANCED_OUTPUT_HANDLING` flag to LaunchDarkly - Backwards compatible with existing output display - Graceful fallback for disabled feature flag ### Styling & UX - Max width constraints (950px card, 660px content) - Hover-based action buttons for clean interface - Dark mode support across all renderers - Responsive design for various content types - Loading states and error handling ## Test Plan 📋 ### 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 Scenarios: - [x] **Basic Output Rendering** - [x] Execute agent with text output - verify proper formatting - [x] Execute agent with JSON output - verify collapsible tree view - [x] Execute agent with code output - verify syntax highlighting - [x] **Rich Content** - [x] Test markdown rendering with headers, lists, tables - [x] Test LaTeX math expressions (inline and display) - [x] Test code blocks within markdown - [x] Test task lists and strikethrough - [x] **Media Handling** - [x] Upload and display PNG/JPEG images - [x] Test video URL embedding (YouTube/Vimeo) - [x] Test direct video file playback - [x] **Clipboard Operations** - [x] Copy plain text output - [x] Copy formatted code - [x] Copy JSON data - [x] Copy markdown content - [x] Verify fallback for unsupported MIME types - [x] **Download Functionality** - [x] Download single text output - [x] Download multiple text outputs (verify concatenation) - [x] Download mixed content (verify separate files) - [x] Download images and binary content - [x] **Feature Flag** - [x] Enable flag - verify enhanced rendering - [x] Disable flag - verify fallback to original view - [x] Check backwards compatibility - [x] **Edge Cases** - [x] Large JSON objects (performance) - [x] Very long text outputs - [x] Mixed content types in single run - [x] Malformed markdown - [x] Invalid video URLs ## Dependencies Added - `react-markdown` (9.0.3) - Already present - `remark-gfm` (4.0.1) - GitHub Flavored Markdown - `remark-math` (6.0.0) - LaTeX math support - `rehype-katex` (7.0.1) - Math rendering - `katex` (0.16.22) - Math typesetting - `rehype-highlight` (7.0.2) - Syntax highlighting - `highlight.js` (11.11.1) - Highlighting library - `rehype-slug` (6.0.0) - Heading anchors - `rehype-autolink-headings` (7.1.0) - Clickable headings ## Notes - Mermaid diagram support was attempted but removed due to compatibility issues - Share functionality is stubbed out for future implementation - PNG file upload rendering issue has logging in place for debugging - All components follow existing UI patterns and use Tailwind CSS ## Screenshots <img width="1656" height="1250" alt="image" src="https://github.com/user-attachments/assets/af7542fe-db89-4521-aaf5-19e33d48a409" /> ## Related Issues - Implements SECRT-1209 --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Nicholas Tindle <ntindle@users.noreply.github.com> |
||
|
|
7cbdc1ad1a |
security(frontend): Upgrade next from 15.4.6 to 15.4.7 (#10820)
 ### Snyk has created this PR to fix 1 vulnerabilities in the yarn dependencies of this project. #### Snyk changed the following file(s): - `autogpt_platform/frontend/package.json` #### Note for [zero-installs](https://yarnpkg.com/features/zero-installs) users If you are using the Yarn feature [zero-installs](https://yarnpkg.com/features/zero-installs) that was introduced in Yarn V2, note that this PR does not update the `.yarn/cache/` directory meaning this code cannot be pulled and immediately developed on as one would expect for a zero-install project - you will need to run `yarn` to update the contents of the `./yarn/cache` directory. If you are not using zero-install you can ignore this as your flow should likely be unchanged. <details> <summary>⚠️ <b>Warning</b></summary> ``` Failed to update the yarn.lock, please update manually before merging. ``` </details> #### Vulnerabilities that will be fixed with an upgrade: | | Issue | :-------------------------:|:-------------------------  | Server-side Request Forgery (SSRF) <br/>[SNYK-JS-NEXT-12299318](https://snyk.io/vuln/SNYK-JS-NEXT-12299318) --- > [!IMPORTANT] > > - Check the changes in this PR to ensure they won't cause issues with your project. > - Max score is 1000. Note that the real score may have changed since the PR was raised. > - This PR was automatically created by Snyk using the credentials of a real user. --- **Note:** _You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs._ For more information: <img src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJjM2E3MTAxZi1mNTI2LTQxMGUtYjVkOS0wMDhmYzMxNjk0MmQiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImMzYTcxMDFmLWY1MjYtNDEwZS1iNWQ5LTAwOGZjMzE2OTQyZCJ9fQ==" width="0" height="0"/> 🧐 [View latest project report](https://app.snyk.io/org/significant-gravitas/project/3d924968-0cf3-4767-9609-501fa4962856?utm_source=github&utm_medium=referral&page=fix-pr) 📜 [Customise PR templates](https://docs.snyk.io/scan-using-snyk/pull-requests/snyk-fix-pull-or-merge-requests/customize-pr-templates?utm_source=github&utm_content=fix-pr-template) 🛠 [Adjust project settings](https://app.snyk.io/org/significant-gravitas/project/3d924968-0cf3-4767-9609-501fa4962856?utm_source=github&utm_medium=referral&page=fix-pr/settings) 📚 [Read about Snyk's upgrade logic](https://docs.snyk.io/scan-with-snyk/snyk-open-source/manage-vulnerabilities/upgrade-package-versions-to-fix-vulnerabilities?utm_source=github&utm_content=fix-pr-template) --- **Learn how to fix vulnerabilities with free interactive lessons:** 🦉 [Server-side Request Forgery (SSRF)](https://learn.snyk.io/lesson/ssrf-server-side-request-forgery/?loc=fix-pr) [//]: # 'snyk:metadata:{"customTemplate":{"variablesUsed":[],"fieldsUsed":[]},"dependencies":[{"name":"next","from":"15.4.6","to":"15.4.7"}],"env":"prod","issuesToFix":["SNYK-JS-NEXT-12299318"],"prId":"c3a7101f-f526-410e-b5d9-008fc316942d","prPublicId":"c3a7101f-f526-410e-b5d9-008fc316942d","packageManager":"yarn","priorityScoreList":[null],"projectPublicId":"3d924968-0cf3-4767-9609-501fa4962856","projectUrl":"https://app.snyk.io/org/significant-gravitas/project/3d924968-0cf3-4767-9609-501fa4962856?utm_source=github&utm_medium=referral&page=fix-pr","prType":"fix","templateFieldSources":{"branchName":"default","commitMessage":"default","description":"default","title":"default"},"templateVariants":["updated-fix-title","pr-warning-shown"],"type":"auto","upgrade":["SNYK-JS-NEXT-12299318"],"vulns":["SNYK-JS-NEXT-12299318"],"patch":[],"isBreakingChange":false,"remediationStrategy":"vuln"}' --------- Co-authored-by: snyk-bot <snyk-bot@snyk.io> Co-authored-by: Reinier van der Leer <pwuts@agpt.co> |
||
|
|
2a19aa0ed3 |
fix(frontend/library): Show total runs count above runs list (#10832)
- Resolves #10831 ### Changes 🏗️ - Show number of total runs instead of currently loaded runs - Show loading spinner instead of zero while loading ### 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] Counter shows number of total runs, even if it exceeds number of currently loaded items |
||
|
|
6d39dfe382 |
feat(frontend): Add admin button to user profile dropdown (#10774)
<!-- Clearly explain the need for these changes: --> ### Need 💡 This PR addresses Linear issue [OPEN-2232](https://linear.app/autogpt/issue/OPEN-2232/add-admin-pages-in-dropdown) by adding an "Admin" button to the user account dropdown menu. This button is only visible to users with an "admin" role and provides direct navigation to the admin marketplace management page, making existing admin functionalities accessible from the new UI. ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - **Added Admin Icon**: Integrated `IconSliders` into the `IconType` enum and `getAccountMenuOptionIcon` function. - **Dynamic Menu Generation**: Introduced `getAccountMenuItems(userRole?: string)` to dynamically construct the account menu. This function conditionally adds an "Admin" menu item (linking to `/admin/marketplace`) if the `userRole` is "admin". - **Navbar Integration**: Updated `NavbarView.tsx` to utilize the `useSupabase` hook to retrieve the current user's role and then render the account menu using the new dynamic `getAccountMenuItems` function for both desktop and mobile views. ### 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] Log in as an admin user and verify the "Admin" button appears in the account dropdown. - [x] Click the "Admin" button and confirm navigation to `/admin/marketplace`. - [x] Log in as a non-admin user and verify the "Admin" button does not appear in the account dropdown. - [x] Verify all other existing menu items (e.g., "Edit profile", "Log out") function correctly for both admin and non-admin users. - [x] Test the above scenarios on both desktop and mobile views. --- Linear Issue: [OPEN-2232](https://linear.app/autogpt/issue/OPEN-2232/add-admin-pages-in-dropdown) <a href="https://cursor.com/background-agent?bcId=bc-2dceda38-31b4-4e8e-8277-fb87c8858abf"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-cursor-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-cursor-light.svg"> <img alt="Open in Cursor" src="https://cursor.com/open-in-cursor.svg"> </picture> </a> <a href="https://cursor.com/agents?id=bc-2dceda38-31b4-4e8e-8277-fb87c8858abf"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-web-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-web-light.svg"> <img alt="Open in Web" src="https://cursor.com/open-in-web.svg"> </picture> </a> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> |
||
|
|
57ecc10535 |
fix(frontend): typed inputs in new run modal (#10799)
## Changes 🏗️ ### Make the **Credentials Inputs** show up on the new Run Agent Modal <img width="450" height="784" alt="Screenshot 2025-09-02 at 00 54 19" src="https://github.com/user-attachments/assets/26ad8242-a1bc-45f6-9149-a3d207683679" /> ### Fixes on other modals... <img width="450" height="579" alt="Screenshot 2025-09-02 at 00 04 40" src="https://github.com/user-attachments/assets/fa2f9ed9-207b-4599-9e60-3e37c4be6ea9" /> <img width="450" height="579" alt="Screenshot 2025-09-02 at 00 04 44" src="https://github.com/user-attachments/assets/92e062a7-f161-423e-b6c9-f998fbdef102" /> <img width="450" height="634" alt="Screenshot 2025-09-02 at 00 47 06" src="https://github.com/user-attachments/assets/93009809-0df0-44c5-b2d2-a9aa0f501312" /> - always use buttons/inputs in small size ( _due to the tight space_ ) - use from the design system - always use pretty scrollbars - Configure [`tailwind-scrollbars`](https://github.com/adoxography/tailwind-scrollbar) for pretty scrollbars - prevent content in dialog to overflow when scrollable ### 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 with the new agent run modal flag enabled - [x] Check the above #### For configuration changes: None |
||
|
|
4928ce3f90 |
feat(library): Create presets from runs (#10823)
- Resolves #9307 ### Changes 🏗️ - feat(library): Create presets from runs - Prevent creating preset from run with unknown credentials - Fix running presets with credentials - Add `credential_inputs` parameter to `execute_preset` endpoint API: - Return `GraphExecutionMeta` from `*/execute` endpoints ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - Go to `/library/agents/[id]` for an agent that *does not* require credentials - Click the menu on any run and select "Pin as a preset"; fill out the dialog and submit - [x] -> UI works - [x] -> Operation succeeds and dialog closes - [x] -> New preset is shown at the top of the runs list - Go to `/library/agents/[id]` for an agent that *does* require credentials - Click the menu on any run and select "Pin as a preset"; fill out the dialog and submit - [x] -> UI works - [x] -> Error toast appears with descriptive message - Initiate a new run; once finished, click "Create preset from run"; fill out the dialog and submit - [x] -> UI works - [x] -> Operation succeeds and dialog closes - [x] -> New preset is shown at the top of the runs list |