Zephyr Agent (Internal)
Internal Package - The main internal package that provides the Zephyr agent for bundler plugins. This package contains the core functionality for deployment, asset management, and communication with Zephyr Cloud.
Note: This is an internal package used by other Zephyr plugins. It is not intended for direct use by end users.
Overview
The Zephyr Agent is the core engine that powers all Zephyr bundler plugins. It provides:
- Deployment Pipeline: Handles the complete deployment workflow to Zephyr Cloud
- Asset Management: Optimizes and manages build assets for edge distribution
- Authentication: Manages secure communication with Zephyr Cloud services
- Build Context: Provides build-time context and metadata for plugins
- Edge Communication: Handles communication with Zephyr's edge network
Architecture
The agent is structured into several key modules:
Authentication (lib/auth/
)
- Handles user authentication and authorization
- Manages API tokens and session management
- Provides WebSocket connections for real-time updates
Build Context (lib/build-context/
)
- Extracts build metadata and package information
- Provides Git integration and repository context
- Manages dependency resolution and parsing
Deployment (lib/deployment/
)
- Implements deployment strategies for different CDN providers
- Supports Cloudflare, Fastly, and Netlify deployment targets
- Handles asset uploads and build stats publication
Edge Actions (lib/edge-actions/
)
- Manages deployment operations on edge infrastructure
- Handles snapshot creation and environment enabling
- Coordinates asset uploads and build statistics
HTTP Layer (lib/http/
)
- Provides HTTP client functionality with retries
- Handles file uploads and API communication
- Manages request/response lifecycle
Usage by Plugins
Public Zephyr plugins interact with the agent through well-defined APIs:
import { ZephyrAgent } from 'zephyr-agent';
const agent = new ZephyrAgent({
buildContext: buildInfo,
assets: assetMap,
});
await agent.deploy();
Dependencies
The agent has minimal external dependencies:
- Core Dependencies: Node.js built-ins and essential utilities
- Network: HTTP client libraries for API communication
- File System: Asset management and build context extraction
- Crypto: Secure token management and validation
Configuration
The agent is configured through build context and environment variables:
interface ZephyrAgentConfig {
buildContext: BuildContext;
assets: AssetMap;
deploymentOptions?: DeploymentOptions;
authentication?: AuthConfig;
}
Git Repository Requirements
IMPORTANT: Zephyr requires a properly initialized Git repository with a remote origin for production deployments.
Git Information Handling
When Zephyr cannot find a Git repository with remote origin, it will:
Example Scenarios
git init
git remote add origin git@github.com:YOUR_ORG/YOUR_REPO.git
git add . && git commit -m "Initial commit"
npm run build
npm run build
Why Git is Required
Zephyr uses Git information to:
- Determine organization and project structure
- Track deployment versions and commits
- Enable collaboration features
- Provide proper deployment metadata
Without Git, Zephyr cannot guarantee proper functionality, especially for:
- Production deployments
- Team collaboration
- Version tracking
- Rollback capabilities
Package.json-Based Naming (Non-Git Environments)
When Git is not available (e.g., AI coding tools, quick prototypes), Zephyr automatically extracts naming information from your package.json
structure:
Automatic Organization Detection:
- Uses the authenticated user's name from your authentication token
- Requires valid authentication to determine organization
Project and App Naming Logic:
Internal APIs
Build Context API
const packageInfo = await readPackageJson(projectRoot);
const gitInfo = await getGitInfo();
const deps = parseZephyrDependencies(packageJson);
Deployment API
await uploadAssets(assets, uploadStrategy);
await enableSnapshotOnEdge(snapshotId);
await uploadBuildStats(buildStats);
Integration Points
The agent integrates with:
- Bundler Plugins: Receives build assets and metadata
- Zephyr Cloud: Deploys assets and manages deployments
- CDN Providers: Uploads assets to edge locations
- Git Providers: Extracts repository and commit information
Development
For plugin developers working on Zephyr integrations:
npm run build
npm run test
npm run dev
Security
The agent implements several security measures:
- Token Management: Secure storage and rotation of API tokens
- Encrypted Communication: All API communication uses HTTPS/WSS
- Input Validation: Validates all build inputs and configurations
- Access Control: Role-based access to deployment operations
Contributing
This is an internal package. Contributions should be made through the main Zephyr plugins repository. Please read our contributing guidelines for more information.
License
Licensed under the Apache-2.0 License. See LICENSE for more information.