This PR refactors the HTTP Request action from a hardcoded system action into a proper plugin (plugins/native/), making it extensible and consistent with the plugin architecture. Other related changes have also been made.
New Plugin: Native
Created plugins/native/ with:
index.ts: Plugin definition with HTTP Request actionicon.tsx: Globe icon for the Native categorysteps/http-request.ts: Step function with execution logiccodegen/http-request.ts: Code generation template
New Components
ObjectBuilder
Added components/workflow/config/object-builder.tsx - a reusable component for building key-value pairs (similar to SchemaBuilder). Used for HTTP headers configuration.
IntegrationSelectField Added integration selector component that displays HTTP-enabled integrations grouped by type. Allows selecting an existing integration to auto-inject authentication headers.
New Config Field Types
Added to plugins/registry.ts and action-config-renderer.tsx:
object-builder: Key-value pair builder with validation supportintegration-select: Dropdown for selecting HTTP-enabled integrationsjson-editor: Monaco-based JSON editor with real-time validation
Integration-Based HTTP Requests
Plugins can now define httpConfig for HTTP integration support:
- New
PluginHttpConfigtype withbaseUrl,authHeader,authPrefix,authCredentialKey - Added
httpConfigto Resend, Slack, Firecrawl, and Linear plugins - HTTP Request step auto-injects auth headers from selected integration
- Endpoint field shows baseUrl prefix when integration is selected
Plugin System Enhancements
- Added
requiresIntegrationflag to hide plugins that don't need credentials from setup dialog - Added
requiresIntegration()helper function to centralize integration checks
Header Validation
- Added
validateKey/validateValuefunctions to ActionConfigField - Plugin-defined validation (validation logic lives in plugin, not renderer)
- HTTP headers validated to alphanumeric + hyphen/underscore only
- Content-Type header blocked (auto-set to application/json)
Integration Loading Optimization
- Cached integrations in Jotai store for faster loading when switching actions
- Prefetch integrations when workflow loads
Migration & Backward Compatibility
- Added
HTTP Request->native/http-requestlegacy mapping - Updated codegen files to support both legacy and new action IDs
- Existing workflows using "HTTP Request" will continue to work
UI Improvements
- TemplateBadgeInput supports optional prefix prop (for adding the plugin's API base to the endpoint field)
- Extracted PropertyRow component to reduce ObjectBuilder complexity
- Horizontal scroll instead of wrap for long input values (useful for long header names or values)
Bug Fixes
- Fixed required field validation to respect
defaultValue- fields with defaults (like HTTP Method) are no longer incorrectly flagged as missing
Cleanup
Removed HTTP Request from system actions:
- Deleted
lib/steps/http-request.ts - Deleted
lib/codegen-templates/http-request.ts - Removed from
lib/workflow-executor.workflow.ts,lib/steps/index.ts, and UI components
@bensabic is attempting to deploy a commit to the Vercel Labs Team on Vercel.
A member of the Team first needs to authorize it.