-
Notifications
You must be signed in to change notification settings - Fork 0
update before install #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
update before install #1
Conversation
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
28 similar comments
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
|
This PR exceeds the recommended size of 500 lines. Please make sure you are NOT addressing multiple issues with one PR. |
## Changes ποΈ <img width="800" height="767" alt="Screenshot 2025-12-04 at 17 40 10" src="https://github.com/user-attachments/assets/37036246-bcdb-46eb-832c-f91fddfd9014" /> <img width="800" height="492" alt="Screenshot 2025-12-04 at 17 40 16" src="https://github.com/user-attachments/assets/ba547e54-016a-403c-9ab6-99465d01af6b" /> On the new Agent Library page: - Implement the new actions sidebar ( main change... ) - Refactor the layout/components to accommodate that - Implement the missing "Summary" functionality - Update icon buttons in Design system with new designs ## 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 it
β¦defined (#11549) - Added conditional rendering in `NodeArrayInput` component to only render `NodeHandle` when `schema.items` is defined - This prevents the error when array schemas don't have an `items` property defined - The input field rendering logic already had proper null checks, so only the handle rendering needed to be fixed ### 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 legacy builder and create a new agent - [x] Add a Smart Decision block to the agent - [x] Verify that the `conversation_history` field renders without errors - [x] Verify that array fields with defined `items` still render correctly (e.g., test with other blocks that use arrays) - [x] Verify that connecting/disconnecting handles to the conversation_history field works correctly - [x] Verify that the field can accept input values when not connected
## Changes ποΈ - Make it less verbose and adapt the summary card to the new design ## 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 see summary displaying well
β¦11536)  ### 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 | :-------------------------:|:-------------------------  | Arbitrary Code Injection <br/>[SNYK-JS-NEXT-14173355](https://snyk.io/vuln/SNYK-JS-NEXT-14173355) --- > [!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=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJhNDQzN2JlZC0wMjYxLTRhZmMtYmQxOS1hMTUwY2RhMDE3ZDciLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImE0NDM3YmVkLTAyNjEtNGFmYy1iZDE5LWExNTBjZGEwMTdkNyJ9fQ==" 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:** π¦ [Arbitrary Code Injection](https://learn.snyk.io/lesson/insecure-deserialization/?loc=fix-pr) [//]: # 'snyk:metadata:{"breakingChangeRiskLevel":null,"FF_showPullRequestBreakingChanges":false,"FF_showPullRequestBreakingChangesWebSearch":false,"customTemplate":{"variablesUsed":[],"fieldsUsed":[]},"dependencies":[{"name":"next","from":"15.4.7","to":"15.4.8"}],"env":"prod","issuesToFix":["SNYK-JS-NEXT-14173355"],"prId":"a4437bed-0261-4afc-bd19-a150cda017d7","prPublicId":"a4437bed-0261-4afc-bd19-a150cda017d7","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-14173355"],"vulns":["SNYK-JS-NEXT-14173355"],"patch":[],"isBreakingChange":false,"remediationStrategy":"vuln"}' <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Upgrades Next.js from 15.4.7 to 15.4.8 in the frontend and updates lockfile/transitive references accordingly. > > - **Dependencies**: > - Bump `next` to `15.4.8` in `autogpt_platform/frontend/package.json`. > - Update lockfile to align, including `@next/*` SWC binaries and packages that peer-depend on `next` (e.g., `@sentry/nextjs`, `@storybook/nextjs`, `@vercel/*`, `geist`, `nuqs`, `@next/third-parties`). > - Minor transitive tweak: `sharp` dependency `semver` updated to `7.7.3`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit e7741cb. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: snyk-bot <snyk-bot@snyk.io> Co-authored-by: Bentlybro <Github@bentlybro.com> Co-authored-by: Abhimanyu Yadav <122007096+Abhi1992002@users.noreply.github.com>
Make onboarding task completion backend-authoritative which prevents cheating (previously users could mark all tasks as completed instantly and get rewards) and makes task completion more reliable. Completion of tasks is moved backend with exception of introductory onboarding tasks and visit-page type tasks. ### Changes ποΈ - Move incrementing run counter backend and make webhook-triggered and scheduled task execution count as well - Use user timezone for calculating run streak - Frontend task completion is moved from update onboarding state to separate endpoint and guarded so only frontend tasks can be completed - Graph creation, execution and add marketplace agent to library accept `source`, so appropriate tasks can be completed - Replace `client.ts` api calls with orval generated and remove no longer used functions from `client.ts` - Add `resolveResponse` helper function that unwraps orval generated call result to 2xx response Small changes&bug fixes: - Make Redis notification bus serialize all payload fields - Fix confetti when group is finished - Collapse finished group when opening Wallet - Play confetti only for tasks that are listed in the Wallet 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] Onboarding can be finished - [x] All tasks can be finished and work properly - [x] Confetti works properly
- Replace print() with logger.info() in reddit.py for login message - Replace print() with logger.debug() in airtable/_api.py for API params - Replace print() with logger.debug() in _manual_base.py for webhook URL - Add logging imports and logger initialization where missing - Update FIXME to TODO with GitHub issue reference #8537 <!-- Clearly explain the need for these changes: --> ### Changes ποΈ <!-- 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 it still works <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Switch `print()` to `logger.info/debug()` across Airtable, Reddit, and manual webhook modules; add logger initialization and clarify TODO with issue reference. > > - **Backend**: > - **Airtable (`backend/blocks/airtable/_api.py`)**: > - Replace `print(params)` with `logger.debug` in `create_base`. > - **Reddit (`backend/blocks/reddit.py`)**: > - Add `logging` import and `logger` initialization. > - Replace login `print` with `logger.info` in `get_praw`. > - **Webhooks (`backend/integrations/webhooks/_manual_base.py`)**: > - Replace `print` with `logger.debug` in `_register_webhook` and add `logger`. > - Update `FIXME` to `TODO` with GitHub issue reference `#8537`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 3add9b0. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co>
### Changes ποΈ Mark ValueError as known block errors ### 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:
β¦API (#11544) ### Changes ποΈ This PR improves the `/integrations/providers` endpoint to dynamically determine supported authentication types from the SDK registry instead of using hardcoded values. **What changed:** - The `list_providers` function now looks up each provider in the `AutoRegistry` to get its `supported_auth_types` - If a provider has defined auth types in the SDK registry, those are used to set `supports_api_key`, `supports_user_password`, and `supports_host_scoped` flags - Falls back to legacy hardcoded behavior for providers not registered in the SDK (maintains backwards compatibility) **Why:** - Providers can now correctly declare their supported authentication methods via the SDK - Removes brittle hardcoded checks like `name in ("smtp",)` for specific providers - Makes the credential type system more extensible and maintainable ### 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 providers with SDK-defined auth types return correct flags - [x] Verified legacy providers still work with fallback behavior - [x] Tested the `/integrations/providers` endpoint returns expected data #### 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 for this PR.
β¦ form (#11538) ## Summary - Add Agent Output Demo field to marketplace agent submission form, positioned below the Description field - Store agent output demo URLs in database for future CoPilot integration - Implement proper video/image ordering on marketplace pages - Add shared YouTube URL validation utility to eliminate code duplication ## Changes Made ### Frontend - **Agent submission form**: Added Agent Output Demo field with YouTube URL validation - **Edit agent form**: Added Agent Output Demo field for existing submissions - **Marketplace display**: Implemented proper video/image ordering: 1. YouTube/Overview video (if exists) 2. First image (hero) 3. Agent Output Demo (if exists) 4. Additional images - **Shared utilities**: Created `validateYouTubeUrl` function in `src/lib/utils.ts` ### Backend - **Database schema**: Added `agentOutputDemoUrl` field to `StoreListingVersion` model - **Database views**: Updated `StoreAgent` view to include `agent_output_demo` field - **API models**: Added `agent_output_demo_url` to submission requests and `agent_output_demo` to responses - **Database migration**: Added migration to create new column and update view - **Test files**: Updated all test files to include the new required field ## Test Plan - [x] Frontend form validation works correctly for YouTube URLs - [x] Database migration applies successfully - [x] Backend API accepts and returns the new field - [x] Marketplace displays videos in correct order - [x] Both frontend and backend formatting/linting pass - [x] All test files include required field to prevent failures π€ Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com>
β¦11552) This PR adds a collection of pre-built store agents that can be loaded into test databases for development and testing purposes. ### Changes ποΈ - Add 17 exported agent JSON files in `backend/agents/` directory - Add `StoreAgent_rows.csv` containing store listing metadata (titles, descriptions, categories, images) - Add `load_store_agents.py` script to load agents into the test database - Add `load-store-agents` Makefile target for easy execution **Included Agents:** - Flux AI Image Generator - YouTube Transcription Scraper - Decision Maker Lead Finder - Smart Meeting Prep - Automated Support Agent - Unspirational Poster Maker - AI Video Generator - Automated SEO Blog Writer - Lead Finder (Local Businesses) - LinkedIn Post Generator - YouTube to LinkedIn Post Converter - Personal Newsletter - Email Scout - Contact Finder Assistant - YouTube Video to SEO Blog Writer - AI Webpage Copy Improver - Domain Name Finder - AI Function ### 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 `make load-store-agents` and verify agents are loaded into the database - [x] Verify store listings appear correctly with metadata from CSV - [x] Confirm no sensitive information (API keys, secrets) is included in the exported agents #### 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 - this only adds test data and a loading script.
β¦11536)  ### 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 | :-------------------------:|:-------------------------  | Arbitrary Code Injection <br/>[SNYK-JS-NEXT-14173355](https://snyk.io/vuln/SNYK-JS-NEXT-14173355) --- > [!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=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJhNDQzN2JlZC0wMjYxLTRhZmMtYmQxOS1hMTUwY2RhMDE3ZDciLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImE0NDM3YmVkLTAyNjEtNGFmYy1iZDE5LWExNTBjZGEwMTdkNyJ9fQ==" 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:** π¦ [Arbitrary Code Injection](https://learn.snyk.io/lesson/insecure-deserialization/?loc=fix-pr) [//]: # 'snyk:metadata:{"breakingChangeRiskLevel":null,"FF_showPullRequestBreakingChanges":false,"FF_showPullRequestBreakingChangesWebSearch":false,"customTemplate":{"variablesUsed":[],"fieldsUsed":[]},"dependencies":[{"name":"next","from":"15.4.7","to":"15.4.8"}],"env":"prod","issuesToFix":["SNYK-JS-NEXT-14173355"],"prId":"a4437bed-0261-4afc-bd19-a150cda017d7","prPublicId":"a4437bed-0261-4afc-bd19-a150cda017d7","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-14173355"],"vulns":["SNYK-JS-NEXT-14173355"],"patch":[],"isBreakingChange":false,"remediationStrategy":"vuln"}' <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Upgrades Next.js from 15.4.7 to 15.4.8 in the frontend and updates lockfile/transitive references accordingly. > > - **Dependencies**: > - Bump `next` to `15.4.8` in `autogpt_platform/frontend/package.json`. > - Update lockfile to align, including `@next/*` SWC binaries and packages that peer-depend on `next` (e.g., `@sentry/nextjs`, `@storybook/nextjs`, `@vercel/*`, `geist`, `nuqs`, `@next/third-parties`). > - Minor transitive tweak: `sharp` dependency `semver` updated to `7.7.3`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit e7741cb. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: snyk-bot <snyk-bot@snyk.io> Co-authored-by: Bentlybro <Github@bentlybro.com> Co-authored-by: Abhimanyu Yadav <122007096+Abhi1992002@users.noreply.github.com>
β¦credentials (#11520) Simplifies and improves the Google Sheets/Drive integration by merging credentials with the file picker and using narrower OAuth scopes. ### Changes ποΈ - Merge Google credentials and file picker into a single unified input field for better UX - Create spreadsheets using Drive API instead of Sheets API for proper scope support - Simplify Google Drive OAuth scope to only use `drive.file` (narrowest permission needed) - Clean up unused imports (NormalizedPickedFile) ### 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 creating a new Google Spreadsheet with GoogleSheetsCreateSpreadsheetBlock - [x] Test reading from existing spreadsheets with GoogleSheetsReadBlock - [x] Test writing to spreadsheets with GoogleSheetsWriteBlock - [x] Verify OAuth flow works with simplified scopes - [x] Verify file picker works with merged credentials field #### 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.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Unifies Google Drive picker and credentials with auto-credentials across backend and frontend, updates all Sheets blocks and execution to use it, and adds Drive-based spreadsheet creation plus supporting tests and UI fixes. > > - **Backend**: > - **Google Drive model/field**: Introduce `GoogleDriveFile` (with `_credentials_id`) and `GoogleDriveFileField()` for unified auth+picker (`backend/blocks/google/_drive.py`). > - **Sheets blocks**: Replace `GoogleDrivePickerField` and explicit credentials with `GoogleDriveFileField` across all Sheets blocks; preserve and emit credentials for chaining; add Drive service; create spreadsheets via Drive API then manage via Sheets API. > - **IO block**: Add `AgentGoogleDriveFileInputBlock` providing a Drive picker input. > - **Execution**: Support auto-generated credentials via `BlockSchema.get_auto_credentials_fields()`; acquire/release multiple credential locks; pass creds by `credentials_kwarg` (`executor/manager.py`, `data/block.py`, `util/test.py`). > - **Tests**: Add validation tests for duplicate/unique `auto_credentials.kwarg_name` and defaults. > - **Frontend**: > - **Picker**: Enhance Google Drive picker to require/use saved platform credentials, pass `_credentials_id`, validate scopes, and manage dialog z-index/interaction; expose `requirePlatformCredentials`. > - **UI**: Update dialogs/CSS to keep Google picker on top and prevent overlay interactions. > - **Types**: Extend `GoogleDrivePickerConfig` with `auto_credentials` and related typings. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 7d25534. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
## Changes ποΈ <img width="795" height="275" alt="Screenshot 2025-12-04 at 21 05 55" src="https://github.com/user-attachments/assets/e7572635-3976-4822-89ea-3e5e26196ab8" /> Allow to close toasts π ## Checklist π #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Run Storybook locally - [x] Toast have a close button top-right --------- Co-authored-by: Abhimanyu Yadav <122007096+Abhi1992002@users.noreply.github.com>
## Changes ποΈ <img width="500" height="927" alt="Screenshot 2025-12-08 at 16 30 04" src="https://github.com/user-attachments/assets/97170302-50ae-4750-99e1-275861ee9e08" /> <img width="500" height="897" alt="Screenshot 2025-12-08 at 16 30 10" src="https://github.com/user-attachments/assets/0a7ac828-ebea-40de-a19e-fbf77b0c2eb7" /> Update the new **Run Agent Modal** as a new view. From now on, sections ( inputs, credentials, etc... ) are enclosed. Refactor all the existing code to be more readable and [adhere to code conventions](https://github.com/Significant-Gravitas/AutoGPT/blob/master/autogpt_platform/frontend/CONTRIBUTING.md). ### Other improvements - Refactor `<CredentialInputs />`: - to adhere to code conventions - to show all existing credentials for a given provider - to allow deletion of a given credential - to allow to select/switch credentials for a given task - Run Graph Errors: - when the run fails, show the errors nicely on the toast and link to the builder for further debugging - Design System: - secondary button colour has been updated - labels size for form fields has been updated ## 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 updates running agents from the new library page
## Summary <img width="1263" height="883" alt="image" src="https://github.com/user-attachments/assets/98d4f449-1897-4019-a599-846c27df4191" /> <img width="398" height="190" alt="image" src="https://github.com/user-attachments/assets/0138ac02-420d-4f96-b980-74eb41e3c968" /> - Add execution accuracy monitoring with moving averages and Discord alerts - Dashboard visualization for accuracy trends and alert detection - Hourly monitoring for marketplace agents (β₯10 executions in 30 days) - Generated API client integration with type-safe models ## Features - **Moving Average Analysis**: 3-day vs 7-day comparison with configurable thresholds - **Discord Notifications**: Hourly alerts for accuracy drops β₯10% - **Dashboard UI**: Real-time trends visualization with alert status - **Type Safety**: Generated API hooks and models throughout - **Error Handling**: Graceful OpenAI configuration handling - **PostgreSQL Optimization**: Window functions for efficient trend queries ## Test plan - [x] Backend accuracy monitoring logic tested with sample data - [x] Frontend components using generated API hooks (no manual fetch) - [x] Discord notification integration working - [x] Admin authentication and authorization working - [x] All formatting and linting checks passing - [x] Error handling for missing OpenAI configuration - [x] Test data available with `test-accuracy-agent-001` π€ Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com>
## Changes ποΈ Add Templates to the new Agent Library page: <img width="800" height="889" alt="Screenshot 2025-12-09 at 14 10 01" src="https://github.com/user-attachments/assets/85f0d478-f3f9-4ccf-81df-b9a7f4ae8849" /> - You can create a template from a run ( new action button ) - Templates are listed and can be selected on the sidebar - When viewing a template, you can edit it, create a task or delete it Add Triggers to the new Agent Library page: <img width="800" height="836" alt="Screenshot 2025-12-09 at 14 10 43" src="https://github.com/user-attachments/assets/c722f807-c72f-4a4d-8778-e36bea203f6e" /> - When an agent contains a trigger block, on the modal it will create a trigger - When there are triggers, they are listed on the sidebar - A trigger can be viewed and edited ## 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 new page locally
β¦pboard (#11578) ### Changes ποΈ This PR migrates the copy/paste functionality for graph nodes and edges from local storage to the Clipboard API. This change addresses storage limitations and enables cross-tab copying. https://github.com/user-attachments/assets/6ef55713-ca5b-4562-bb54-4c12db241d30 **Key changes:** - Replaced `localStorage` with `navigator.clipboard` API for copy/paste operations - Added `CLIPBOARD_PREFIX` constant (`"autogpt-flow-data:"`) to identify our clipboard data and prevent conflicts with other clipboard content - Added toast notifications to provide user feedback when copying nodes - Added error handling for clipboard read/write operations with console error logging - Removed dependency on `@/services/storage/local-storage` for copied flow data - Updated `useCopyPaste` hook to use async clipboard operations with proper promise handling **Benefits:** - β Removes local storage size limitations (5-10MB) - β Enables copying nodes between browser tabs/windows - β Provides better user feedback through toast notifications - β More standard approach using native browser Clipboard API ### Checklist π #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Select one or more nodes in the flow editor - [x] Press `Ctrl+C` (or `Cmd+C` on Mac) to copy nodes - [x] Verify toast notification appears showing "Copied successfully" with node count - [x] Press `Ctrl+V` (or `Cmd+V` on Mac) to paste nodes - [x] Verify nodes are pasted at viewport center with new unique IDs - [x] Verify edges between copied nodes are also pasted correctly - [x] Test copying nodes in one browser tab and pasting in another tab (should work) - [x] Test copying non-flow data (e.g., text) and verify paste doesn't interfere with flow editor
β¦t is long (#11577) <!-- Clearly explain the need for these changes: --> When the content inside the credential select dropdown becomes too long, the adjacent link buttons lose their rounded shape and appear squarish. This happens when the text stretches the container or affects the layout of the buttons. The issue occurs because the button's width can shrink below its intended size when the flex container is stretched by long credential names. By adding an explicit minimum width constraint with `!min-w-8`, we ensure the button maintains its proper dimensions and rounded appearance regardless of the select dropdown's content length. ### Changes ποΈ <!-- Concisely describe all of the changes made in this pull request: --> - Added `!min-w-8` to the external link button's className in `SelectCredential` component to enforce a minimum width of 2rem (8 * 0.25rem) - This ensures the button maintains its rounded shape even when the adjacent select dropdown contains long credential names ### Checklist π #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Tested credential select with short credential names - button should maintain rounded shape - [x] Tested credential select with very long credential names (e.g., long provider names, usernames, and hosts) - button should maintain rounded shape
β¦ssion (#11576) <!-- Clearly explain the need for these changes: --> In the File Widget, the upload button was incorrectly behaving like a submit button. When users clicked it, the rjsf library immediately triggered form validation and displayed validation errors, even though the user was only trying to upload a file. This happened because HTML buttons inside a form default to `type="submit"`, which triggers form submission on click. By explicitly setting `type="button"` on all file-related buttons, we prevent them from submitting the form while still allowing them to trigger the file input dialog. ### Changes ποΈ <!-- Concisely describe all of the changes made in this pull request: --> - Added `type="button"` attribute to the clear button in the compact variant - Added `type="button"` attribute to the upload button in the compact variant - Added `type="button"` attribute to the "Browse File" button in the default variant This ensures that clicking any of these buttons only triggers the intended file selection/upload action without causing unwanted form validation or submission. ### Checklist π #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Tested clicking the upload button in a form with File Widget - form should not submit or show validation errors - [x] Tested clicking the clear button - should clear the file without triggering form validation - [x] Tested clicking the "Browse File" button - should open file dialog without triggering form validation - [x] Verified file upload functionality still works correctly after selecting a file
## Changes ποΈ ### Adjust layout and styles on mobile π± <img width="448" height="843" alt="Screenshot 2025-12-09 at 22 53 14" src="https://github.com/user-attachments/assets/159bdf4f-e6b2-42f5-8fdf-25f8a62c62d1" /> ### Make the sidebar cards have contextual actions <img width="486" height="243" alt="Screenshot 2025-12-09 at 22 53 27" src="https://github.com/user-attachments/assets/2f530168-3217-47c4-b08d-feccbb9e9152" /> Depending on the card type, different type of actions are shown... ### Make buttons in "About agent" card do something <img width="344" height="346" alt="Screenshot 2025-12-09 at 22 54 01" src="https://github.com/user-attachments/assets/47181f80-1f68-4ef1-aecc-bbadc7cc9c44" /> ### Other - Hide `Schedule` button for agents with trigger run type - Adjust secondary button background colour... - Make drawer content scrollable on mobile ## 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 Co-authored-by: Abhimanyu Yadav <122007096+Abhi1992002@users.noreply.github.com>
#11585) <!-- Clearly explain the need for these changes: --> When opening a graph from the Library, the `flowVersion` query parameter was not being set in the URL. This caused issues when the graph data didn't contain an internal `graphVersion`, resulting in the builder failing and graphs breaking when running. The `useGetV1GetSpecificGraph` hook relies on the `flowVersion` query parameter to fetch the correct graph version. Without it being properly set in the URL, the graph loading logic fails when the version information is missing from the graph data itself. ### Changes ποΈ - Added `setQueryStates` to the `useQueryStates` hook return value in `useFlow.ts` - Added logic to sync `flowVersion` to the URL query parameters when a graph is loaded - When `graph.version` is available, it now updates the `flowVersion` query parameter in the URL (defaults to `1` if version is undefined) This ensures the URL stays in sync with the loaded graph's version, preventing builder failures and execution issues. ### 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 a graph from the Library that doesn't have a version in the URL - [x] Verify that `flowVersion` is automatically added to the URL query parameters - [x] Verify that the graph loads correctly and can be executed - [x] Verify that graphs with existing `flowVersion` in URL continue to work correctly - [x] Verify that graphs opened from Library with version information sync correctly
<!-- Clearly explain the need for these changes: --> We have lots we want to do with google sheets and we don't want a lack of blocks to be a limiter so I pre-ddi a lot of blocks! ### Changes ποΈ Adds 24 new blocks for google sheets (tested and working) ``` |-----|-------------------------------------------|----------------------------------------| | 1 | GoogleSheetsFilterRowsBlock | Filter rows based on column conditions | β | | 2 | GoogleSheetsLookupRowBlock | VLOOKUP-style row lookup | β | | 3 | GoogleSheetsDeleteRowsBlock | Delete rows from a sheet | β | | 4 | GoogleSheetsGetColumnBlock | Get data from a specific column | β | | 5 | GoogleSheetsSortBlock | Sort sheet data | β | | 6 | GoogleSheetsGetUniqueValuesBlock | Get unique values from a column | β | | 7 | GoogleSheetsInsertRowBlock | Insert rows into a sheet | β | | 8 | GoogleSheetsAddColumnBlock | Add a new column | β | | 9 | GoogleSheetsGetRowCountBlock | Get the number of rows | β | | 10 | GoogleSheetsRemoveDuplicatesBlock | Remove duplicate rows | β | | 11 | GoogleSheetsUpdateRowBlock | Update an existing row | β | | 12 | GoogleSheetsGetRowBlock | Get a specific row by index | β | | 13 | GoogleSheetsDeleteColumnBlock | Delete a column | β | | 14 | GoogleSheetsCreateNamedRangeBlock | Create a named range | β | | 15 | GoogleSheetsListNamedRangesBlock | List all named ranges | β | | 16 | GoogleSheetsAddDropdownBlock | Add dropdown validation to cells | β | | 17 | GoogleSheetsCopyToSpreadsheetBlock | Copy sheet to another spreadsheet | β | | 18 | GoogleSheetsProtectRangeBlock | Protect a range from editing | β | | 19 | GoogleSheetsExportCsvBlock | Export sheet as CSV | β | | 20 | GoogleSheetsImportCsvBlock | Import CSV data | β | | 21 | GoogleSheetsAddNoteBlock | Add notes to cells | β | | 22 | GoogleSheetsGetNotesBlock | Get notes from cells | β | | 23 | GoogleSheetsShareSpreadsheetBlock | Share spreadsheet with users | β | | 24 | GoogleSheetsSetPublicAccessBlock | Set public access permissions | β | ``` <!-- 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] Tested using the attached agent [super test for spreadsheets_v9.json](https://github.com/user-attachments/files/24041582/super.test.for.spreadsheets_v9.json) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Introduces a large suite of Google Sheets blocks for row/column ops, filtering/sorting/lookup, CSV import/export, notes, named ranges, protections, sheet copy, and sharing/public access, plus refactors append to a simpler single-row append. > > - **Google Sheets blocks (new)**: > - **Data ops**: `GoogleSheetsFilterRowsBlock`, `GoogleSheetsLookupRowBlock`, `GoogleSheetsDeleteRowsBlock`, `GoogleSheetsGetColumnBlock`, `GoogleSheetsSortBlock`, `GoogleSheetsGetUniqueValuesBlock`, `GoogleSheetsInsertRowBlock`, `GoogleSheetsAddColumnBlock`, `GoogleSheetsGetRowCountBlock`, `GoogleSheetsRemoveDuplicatesBlock`, `GoogleSheetsUpdateRowBlock`, `GoogleSheetsGetRowBlock`, `GoogleSheetsDeleteColumnBlock`. > - **Named ranges & validation**: `GoogleSheetsCreateNamedRangeBlock`, `GoogleSheetsListNamedRangesBlock`, `GoogleSheetsAddDropdownBlock`. > - **Sheet/admin**: `GoogleSheetsCopyToSpreadsheetBlock`, `GoogleSheetsProtectRangeBlock`. > - **CSV & notes**: `GoogleSheetsExportCsvBlock`, `GoogleSheetsImportCsvBlock`, `GoogleSheetsAddNoteBlock`, `GoogleSheetsGetNotesBlock`. > - **Sharing**: `GoogleSheetsShareSpreadsheetBlock`, `GoogleSheetsSetPublicAccessBlock`. > - **Refactor**: > - Rename and simplify append: `GoogleSheetsAppendRowBlock` (replaces multi-row/dict input with single `row`), fixed insert option to `INSERT_ROWS` and streamlined response. > - **Utilities/Enums**: > - Add helpers (`_column_letter_to_index`, `_index_to_column_letter`, `_apply_filter`) and enums (`FilterOperator`, `SortOrder`, `ShareRole`, `PublicAccessRole`). > - Drive/Sheets service builders and file validation reused across new blocks. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 6e9e2f4. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Cursor Agent <cursoragent@cursor.com>
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>
- Resolves #11586 - Follow-up to #11580 ### Changes ποΈ - Fix logic to include manual triggers as a possibility - Fix input render logic to use trigger setup schema if applicable - Fix rendering payload input for externally triggered runs - Amend `RunAgentModal` to load preset inputs+credentials if selected - Amend `SelectedTemplateView` to use modified input for run (if applicable) - Hide non-applicable buttons in `SelectedRunView` for externally triggered runs - Implement auto-navigation to `SelectedTriggerView` on trigger setup ### 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] Can set up manual triggers - [x] Navigates to trigger view after setup - [x] Can set up automatic triggers - [x] Can create templates from runs - [x] Can run templates - [x] Can run templates with modified input
#11598) Single dollar signs ($10, $variable) are commonly used in content and were being incorrectly interpreted as inline LaTeX math delimiters. This change disables that behavior while keeping double dollar sign ($$...$$) math blocks working. ## Changes ποΈ β’ Configure remarkMath plugin with singleDollarTextMath: false in MarkdownRenderer.tsx β’ Double dollar sign display math ($$...$$) continues to work as expected β’ Single dollar signs are no longer interpreted as inline math delimiters ## 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 content with dollar amounts (e.g., β$100β) renders as plain text -[x] Verify double dollar sign math blocks ($$x^2$$) still render as LaTeX -[x] Verify other markdown features (code blocks, tables, links) still work correctly Co-authored-by: Claude <noreply@anthropic.com>
Preserve user searches in the new builder and cache search results for more efficiency. Search is saved, so the user can see their previous searches. ### Changes ποΈ - Add `BuilderSearch` column&migration to save user search (with all filters) - Builder `db.py` now caches all search results using `@cached` and returns paginated results, so following pages are returned much quicker - Score and sort results - Update models&routes - Update frontend, so it works properly with modified endpoints - Frontend: store `serachId` and use it for subsequent searches, so we don't save partial searches (e.g. "b", "bl", ..., "block"). Search id is reset when user clears the search field. - Add clickable chips to the Suggestions builder tab - Add `HorizontalScroll` component (chips use 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] Search works and is cached - [x] Search sorts results - [x] Searches are preserved properly --------- Co-authored-by: Reinier van der Leer <pwuts@agpt.co>
β¦11600) - Resolves #11599 ### Changes ποΈ - Manually update item counts when initiating a task from `EmptyTasks` view - Other improvements made while debugging ### 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] `NewAgentLibraryView` transitions to full layout when a first task is created - [x] `NewAgentLibraryView` transitions to full layout when a first trigger is set up
Update next to `15.4.10`
### Changes ποΈ Chat should be disabled by default; otherwise, it flashes, and if Launch Darkly fails to fail, it is dangerous. ### 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 with Launch Darkly disabled and test the above
Background
Changes ποΈ
PR Quality Scorecard β¨
+2 pts+5 pts+5 pts+5 pts-4 pts+4 pts+5 pts-5 ptsagbenchmarkto verify that these changes do not regress performance? β+10 pts