AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.
feat(blocks)!: Update Exa search block to match latest API specification (#11185)
BREAKING CHANGE: Removed deprecated use_auto_prompt field from Input schema. Existing workflows using this field will need to be updated to use the type field set to "auto" instead. ## Summary of Changes š This PR comprehensively updates all Exa search blocks to match the latest Exa API specification and adds significant new functionality through the Websets API integration. ### Core API Updates š - **Migration to Exa SDK**: Replaced manual API calls with the official `exa_py` AsyncExa SDK across all blocks for better reliability and maintainability - **Removed deprecated fields**: Eliminated `use_auto_prompt`/`useAutoprompt` field (breaking change) - **Fixed incomplete field definitions**: Corrected `user_location` field definition - **Added new input fields**: Added `moderation` and `context` fields for enhanced content filtering ### Enhanced Content Settings š ļø - **Text field improvements**: Support both boolean and advanced object configurations - **New content options**: - Added `livecrawl` settings (never, fallback, always, preferred) - Added `subpages` support for deeper content retrieval - Added `extras` settings for links and images - Added `context` settings for additional contextual information - **Updated settings**: Enhanced `highlight` and `summary` configurations with new query and schema options ### Comprehensive Cost Tracking š° - Added detailed cost tracking models: - `CostDollars` for monetary costs - `CostCredits` for API credit tracking - `CostDuration` for time-based costs - New output fields: `request_id`, `resolved_search_type`, `cost_dollars` - Improved response handling to conditionally yield fields based on availability ### New Websets API Integration š Added eight new specialized blocks for Exa's Websets API: - **`websets.py`**: Core webset management (create, get, list, delete) - **`websets_search.py`**: Search operations within websets - **`websets_items.py`**: Individual item management (add, get, update, delete) - **`websets_enrichment.py`**: Data enrichment operations - **`websets_import_export.py`**: Bulk import/export functionality - **`websets_monitor.py`**: Monitor and track webset changes - **`websets_polling.py`**: Poll for updates and changes ### New Special-Purpose Blocks šÆ - **`code_context.py`**: Code search capabilities for finding relevant code snippets from open source repositories, documentation, and Stack Overflow - **`research.py`**: Asynchronous research capabilities that explore the web, gather sources, synthesize findings, and return structured results with citations ### Code Organization Improvements š - **Removed legacy code**: Deleted `model.py` file containing deprecated API models - **Centralized helpers**: Consolidated shared models and utilities in `helpers.py` - **Improved modularity**: Each webset operation is now in its own dedicated file ### Other Changes š§ - Updated `.gitignore` for better development workflow - Updated `CLAUDE.md` with project-specific instructions - Updated documentation in `docs/content/platform/new_blocks.md` with error handling, data models, and file input guidelines - Improved webhook block implementations with SDK integration ### Files Changed š - **Modified (11 files)**: - `.gitignore` - `autogpt_platform/CLAUDE.md` - `autogpt_platform/backend/backend/blocks/exa/answers.py` - `autogpt_platform/backend/backend/blocks/exa/contents.py` - `autogpt_platform/backend/backend/blocks/exa/helpers.py` - `autogpt_platform/backend/backend/blocks/exa/search.py` - `autogpt_platform/backend/backend/blocks/exa/similar.py` - `autogpt_platform/backend/backend/blocks/exa/webhook_blocks.py` - `autogpt_platform/backend/backend/blocks/exa/websets.py` - `docs/content/platform/new_blocks.md` - **Added (8 files)**: - `autogpt_platform/backend/backend/blocks/exa/code_context.py` - `autogpt_platform/backend/backend/blocks/exa/research.py` - `autogpt_platform/backend/backend/blocks/exa/websets_enrichment.py` - `autogpt_platform/backend/backend/blocks/exa/websets_import_export.py` - `autogpt_platform/backend/backend/blocks/exa/websets_items.py` - `autogpt_platform/backend/backend/blocks/exa/websets_monitor.py` - `autogpt_platform/backend/backend/blocks/exa/websets_polling.py` - `autogpt_platform/backend/backend/blocks/exa/websets_search.py` - **Deleted (1 file)**: - `autogpt_platform/backend/backend/blocks/exa/model.py` ### Migration Guide š¦ For users with existing workflows using the deprecated `use_auto_prompt` field: 1. Remove the `use_auto_prompt` field from your input configuration 2. Set the `type` field to `ExaSearchTypes.AUTO` (or "auto" in JSON) to achieve the same behavior 3. Review any custom content settings as the structure has been enhanced ### Testing Recommendations ā - Test existing workflows to ensure they handle the breaking change - Verify cost tracking fields are properly returned - Test new content settings options (livecrawl, subpages, extras, context) - Validate websets functionality if using the new Websets API blocks š¤ Generated with [Claude Code](https://claude.com/claude-code) ### Checklist š #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] made + ran a test agent for the blocks and flows between them [Exa Tests_v44.json](https://github.com/user-attachments/files/23226143/Exa.Tests_v44.json) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Migrates Exa blocks to AsyncExa SDK, adds comprehensive Websets/research/code-context blocks, updates existing search/content/answers/similar, deletes legacy models, adjusts tests/docs; breaking: remove `use_auto_prompt` in favor of `type="auto"`. > > - **Backend ā Exa integration (SDK migration & BREAKING)**: > - Replace manual HTTP calls with `exa_py.AsyncExa` across `search`, `similar`, `contents`, `answers`, and webhooks; richer outputs (citations, context, costs, resolved search type). > - BREAKING: remove `Input.use_auto_prompt`; use `type = "auto"`. > - Centralize models/utilities in `exa/helpers.py` (content settings, cost models, result mappers). > - **New Blocks**: > - **Websets**: management (`websets.py`), searches, items, enrichments, imports/exports, monitors, polling (new files under `exa/websets_*`). > - **Research**: async research task create/get/wait/list (`exa/research.py`). > - **Code Context**: code snippet/context retrieval (`exa/code_context.py`). > - **Removals**: > - Delete deprecated `exa/model.py`. > - **Docs & DX**: > - Update `docs/new_blocks.md` (error handling, models, file input) and `CLAUDE.md`; ignore backend logs in `.gitignore`. > - **Frontend Tests**: > - Split/extend āeā block tests and improve block add robustness in Playwright (`build.spec.ts`, `build.page.ts`). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 6e5e5723229227e1d51b57723a3718f58e6748df. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added multiple Exa research and webset management blocks for task creation, monitoring, and completion tracking. * Introduced new search capabilities including code context retrieval, content search, and enhanced filtering options. * Added webset enrichment, import/export, and item management functionality. * Expanded search with location-based and category filters. * **Documentation** * Updated guidance on error handling, data models, and file input handling. * **Refactor** * Modernized backend API integration with improved response structure and error reporting. * Simplified configuration options for search operations. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude <[email protected]>
N
Nicholas Tindle committed
37b3e4e82ed37f3315e8130572693a524a6106fc
Parent: de7c5b5
Committed by GitHub <[email protected]>
on 11/5/2025, 7:52:48 PM