- Add generate_block_docs.py script that introspects block code to
generate markdown
- Support manual content preservation via <!-- MANUAL: --> markers
- Add migrate_block_docs.py to preserve existing manual content from git
HEAD
- Add CI workflow (docs-block-sync.yml) to fail if docs drift from code
- Add Claude PR review workflow (docs-claude-review.yml) for doc changes
- Add manual LLM enhancement workflow (docs-enhance.yml)
- Add GitBook configuration (.gitbook.yaml, SUMMARY.md)
- Fix non-deterministic category ordering (categories is a set)
- Add comprehensive test suite (32 tests)
- Generate docs for 444 blocks with 66 preserved manual sections
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
<!-- 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] Extensively test code generation for the docs pages
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Introduces an automated documentation pipeline for blocks and
integrates it into CI.
>
> - Adds `scripts/generate_block_docs.py` (+ tests) to introspect blocks
and generate `docs/integrations/**`, preserving `<!-- MANUAL: -->`
sections
> - New CI workflows: **docs-block-sync** (fails if docs drift),
**docs-claude-review** (AI review for block/docs PRs), and
**docs-enhance** (optional LLM improvements)
> - Updates existing Claude workflows to use `CLAUDE_CODE_OAUTH_TOKEN`
instead of `ANTHROPIC_API_KEY`
> - Improves numerous block descriptions/typos and links across backend
blocks to standardize docs output
> - Commits initial generated docs including
`docs/integrations/README.md` and many provider/category pages
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
631e53e0f6. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
5.7 KiB
Exa Websets Polling
Blocks for polling and waiting on Exa webset operations to complete.
Exa Wait For Enrichment
What it is
Wait for a webset enrichment to complete with progress tracking
How it works
This block polls an enrichment operation until it completes or times out. It checks status at configurable intervals and can include sample results when done.
Use this to block workflow execution until enrichments finish, enabling sequential operations that depend on enrichment data being available.
Inputs
| Input | Description | Type | Required |
|---|---|---|---|
| webset_id | The ID or external ID of the Webset | str | Yes |
| enrichment_id | The ID of the enrichment to monitor | str | Yes |
| timeout | Maximum time to wait in seconds | int | No |
| check_interval | Initial interval between status checks in seconds | int | No |
| sample_results | Include sample enrichment results in output | bool | No |
Outputs
| Output | Description | Type |
|---|---|---|
| error | Error message if the operation failed | str |
| enrichment_id | The enrichment ID that was monitored | str |
| final_status | The final status of the enrichment | str |
| items_enriched | Number of items successfully enriched | int |
| enrichment_title | Title/description of the enrichment | str |
| elapsed_time | Total time elapsed in seconds | float |
| sample_data | Sample of enriched data (if requested) | List[SampleEnrichmentModel] |
| timed_out | Whether the operation timed out | bool |
Possible use case
Sequential Processing: Wait for enrichments to complete before proceeding to export or analysis.
Data Validation: Ensure enrichments finish and review samples before continuing workflow.
Synchronous Workflows: Convert async enrichment operations to blocking calls for simpler logic.
Exa Wait For Search
What it is
Wait for a specific webset search to complete with progress tracking
How it works
This block polls a webset search operation until it completes or times out. It provides progress information including items found, items analyzed, and completion percentage.
Use this when you need search results before proceeding with downstream operations like enrichments or exports.
Inputs
| Input | Description | Type | Required |
|---|---|---|---|
| webset_id | The ID or external ID of the Webset | str | Yes |
| search_id | The ID of the search to monitor | str | Yes |
| timeout | Maximum time to wait in seconds | int | No |
| check_interval | Initial interval between status checks in seconds | int | No |
Outputs
| Output | Description | Type |
|---|---|---|
| error | Error message if the operation failed | str |
| search_id | The search ID that was monitored | str |
| final_status | The final status of the search | str |
| items_found | Number of items found by the search | int |
| items_analyzed | Number of items analyzed | int |
| completion_percentage | Completion percentage (0-100) | int |
| elapsed_time | Total time elapsed in seconds | float |
| recall_info | Information about expected results and confidence | Dict[str, Any] |
| timed_out | Whether the operation timed out | bool |
Possible use case
Search Completion: Wait for initial webset population before accessing items.
Progress Monitoring: Track search progress in long-running operations.
Sequential Workflows: Ensure searches complete before starting enrichments.
Exa Wait For Webset
What it is
Wait for a webset to reach a specific status with progress tracking
How it works
This block polls a webset until it reaches a target status (idle, completed, or running). It uses exponential backoff for efficient polling and provides detailed progress information.
Use this for general-purpose waiting on webset operations when you don't need to track a specific search or enrichment.
Inputs
| Input | Description | Type | Required |
|---|---|---|---|
| webset_id | The ID or external ID of the Webset to monitor | str | Yes |
| target_status | Status to wait for (idle=all operations complete, completed=search done, running=actively processing) | "idle" | "completed" | "running" | "paused" | "any_complete" | No |
| timeout | Maximum time to wait in seconds | int | No |
| check_interval | Initial interval between status checks in seconds | int | No |
| max_interval | Maximum interval between checks (for exponential backoff) | int | No |
| include_progress | Include detailed progress information in output | bool | No |
Outputs
| Output | Description | Type |
|---|---|---|
| error | Error message if the operation failed | str |
| webset_id | The webset ID that was monitored | str |
| final_status | The final status of the webset | str |
| elapsed_time | Total time elapsed in seconds | float |
| item_count | Number of items found | int |
| search_progress | Detailed search progress information | Dict[str, Any] |
| enrichment_progress | Detailed enrichment progress information | Dict[str, Any] |
| timed_out | Whether the operation timed out | bool |
Possible use case
Workflow Orchestration: Wait for all webset operations to complete before next workflow steps.
Idle State Detection: Ensure webset is fully idle before making configuration changes.
Completion Gates: Block workflow until webset reaches a specific readiness state.