@icecoins/plugin-cryptotrade
Version:
Plugin-cryptotrade plugin for ElizaOS
214 lines (151 loc) • 4.84 kB
Markdown
# ElizaOS Plugin
This is an ElizaOS plugin built with the official plugin starter template.
## Development
```bash
# Start development with hot-reloading
npm run dev
# Build the plugin
npm run build
# Test the plugin
npm run test
```
## Testing
ElizaOS provides a comprehensive testing structure for plugins:
### Test Structure
- **Component Tests** (`__tests__/` directory):
- **Unit Tests**: Test individual functions/classes in isolation
- **Integration Tests**: Test how components work together
- Run with: `npm run test:component`
- **End-to-End Tests** (`e2e/` directory):
- Test the plugin within a full ElizaOS runtime
- Run with: `npm run test:e2e`
- **Running All Tests**:
- `npm run test` runs both component and e2e tests
### Writing Tests
Component tests use Vitest:
```typescript
// Unit test example (__tests__/plugin.test.ts)
describe('Plugin Configuration', () => {
it('should have correct plugin metadata', () => {
expect(starterPlugin.name).toBe('plugin-exam');
});
});
// Integration test example (__tests__/integration.test.ts)
describe('Integration: HelloWorld Action with StarterService', () => {
it('should handle HelloWorld action with StarterService', async () => {
// Test interactions between components
});
});
```
E2E tests use ElizaOS test interface:
```typescript
// E2E test example (e2e/starter-plugin.test.ts)
export class StarterPluginTestSuite implements TestSuite {
name = 'plugin_starter_test_suite';
tests = [
{
name: 'example_test',
fn: async (runtime) => {
// Test plugin in a real runtime
},
},
];
}
export default new StarterPluginTestSuite();
```
The test utilities in `__tests__/test-utils.ts` provide mock objects and setup functions to simplify writing tests.
## Publishing & Continuous Development
### Initial Setup
Before publishing your plugin, ensure you meet these requirements:
1. **npm Authentication**
```bash
npm login
```
2. **GitHub Repository**
- Create a public GitHub repository for this plugin
- Add the 'elizaos-plugins' topic to the repository
- Use 'main' as the default branch
3. **Required Assets**
- Add images to the `images/` directory:
- `logo.jpg` (400x400px square, <500KB)
- `banner.jpg` (1280x640px, <1MB)
### Initial Publishing
```bash
# Test your plugin meets all requirements
elizaos publish --test
# Publish to npm + GitHub + registry (recommended)
elizaos publish
```
This command will:
- Publish your plugin to npm for easy installation
- Create/update your GitHub repository
- Submit your plugin to the ElizaOS registry for discoverability
### Continuous Development & Updates
**Important**: After your initial publish with `elizaos publish`, all future updates should be done using standard npm and git workflows, not the ElizaOS CLI.
#### Standard Update Workflow
1. **Make Changes**
```bash
# Edit your plugin code
npm run dev # Test locally with hot-reload
```
2. **Test Your Changes**
```bash
# Run all tests
elizaos test
# Run specific test types if needed
elizaos test component # Component tests only
elizaos test e2e # E2E tests only
```
3. **Update Version**
```bash
# Patch version (bug fixes): 1.0.0 → 1.0.1
npm version patch
# Minor version (new features): 1.0.1 → 1.1.0
npm version minor
# Major version (breaking changes): 1.1.0 → 2.0.0
npm version major
```
4. **Publish to npm**
```bash
npm publish
```
5. **Push to GitHub**
```bash
git push origin main
git push --tags # Push version tags
```
#### Why Use Standard Workflows?
- **npm publish**: Directly updates your package on npm registry
- **git push**: Updates your GitHub repository with latest code
- **Automatic registry updates**: The ElizaOS registry automatically syncs with npm, so no manual registry updates needed
- **Standard tooling**: Uses familiar npm/git commands that work with all development tools
### Alternative Publishing Options (Initial Only)
```bash
# Publish to npm only (skip GitHub and registry)
elizaos publish --npm
# Publish but skip registry submission
elizaos publish --skip-registry
# Generate registry files locally without publishing
elizaos publish --dry-run
```
## Configuration
The `agentConfig` section in `package.json` defines the parameters your plugin requires:
```json
"agentConfig": {
"pluginType": "elizaos:plugin:1.0.0",
"pluginParameters": {
"API_KEY": {
"type": "string",
"description": "API key for the service"
}
}
}
```
Customize this section to match your plugin's requirements.
## Documentation
Provide clear documentation about:
- What your plugin does
- How to use it
- Required API keys or credentials
- Example usage
- Version history and changelog