This repository serves as a template and reference implementation for creating ELITEA/Pylon integration plugins for Node.js and Python modules. It provides comprehensive examples and documentation for integrating external tools and libraries.
This repository includes comprehensive documentation for creating ELITEA/Pylon integration plugins:
- Step-by-Step Guide - π― START HERE - Complete walkthrough building an image processing plugin from scratch
- Quick Start Template - Minimal working template to get started quickly
- Integration Guide - Complete guide covering architecture, components, and implementation
- Integration Patterns - Common patterns for different types of tool integrations
- Template README - How to use this repository as a template for new plugins
- Template Setup Instructions - Creating the template repository structure
π Documentation Index: See docs/DOCUMENTATION_INDEX.md for complete navigation guide
This template demonstrates the standard ELITEA/Pylon plugin architecture:
graph TD
A[ELITEA Platform] -->|1. GET /descriptor| B[Plugin Descriptor]
B -->|2. Toolkit Registration| A
A -->|3. POST /tools/ExampleToolkit/process_data/invoke| C[Tool Invocation]
C -->|4. Processed Result| A
subgraph "Plugin Internal"
D[Runtime Setup] --> E[Tool Execution]
E --> F[Result Processing]
end
C --> D
This template includes:
- Runtime environment setup (Node.js, Python packages)
- Dependency management and installation
- Generic tool exposure that can be customized for any tool
- Registration with ELITEA platform via descriptor endpoint
integration_template/
βββ README.md # This file
βββ setup_template.py # Template customization script
βββ test_plugin.py # Plugin testing utility
βββ data/ # Schema and configuration files
β βββ epam_ai_run_spi.json
β βββ epam_ai_run.spi.schema.json
β βββ ExternalServiceProviderDescriptor.json
βββ docs/ # Comprehensive documentation
βββ DOCUMENTATION_INDEX.md # Navigation guide
βββ INTEGRATION_GUIDE.md # Complete reference
βββ INTEGRATION_PATTERNS.md # Common patterns
βββ QUICK_START_TEMPLATE.md # Minimal template
βββ STEP_BY_STEP_GUIDE.md # Detailed walkthrough
βββ TEMPLATE_README.md # Template usage guide
βββ TEMPLATE_SETUP_INSTRUCTIONS.md
Interactive plugin generation that:
- Prompts for plugin details and tool specifications
- Generates customized plugin files with proper structure
- Creates placeholder methods for your specific tools
- Sets up proper metadata and configuration
Comprehensive test suite for validating plugins:
- Health check verification
- Descriptor endpoint testing
- Tool invocation testing with sample data
- Status endpoint validation
Complete guides for different experience levels:
- Quick Start: Get running in 5 minutes
- Step-by-Step: Learn by building a complete example
- Patterns: Reference implementations for common tool types
- Reference: Complete API and architecture documentation
Shows how to integrate Python packages:
- Package installation and dependency management
- Direct Python library usage in tool methods
- Error handling and result formatting
Demonstrates Node.js tool integration:
- Runtime environment setup and management
- NPM package installation and execution
- Environment variable and PATH configuration
Examples for wrapping command-line tools:
- Binary download and installation
- Process execution with proper environment
- Input/output handling and error management
The template supports configuration for different integration types:
# Example config.yml for Python-based plugins
base_path: /tmp/plugin_workspace
python_packages:
- "Pillow>=9.0.0"
- "requests>=2.25.0"
service_location_url: http://127.0.0.1:8080# Example config.yml for Node.js-based plugins
base_path: /tmp/plugin_workspace
node_version: v20.0.0
npm_packages:
- "puppeteer"
- "express"
service_location_url: http://127.0.0.1:8080GET /descriptor
Returns toolkit registration information with available tools.
POST /tools/{ToolkitName}/{tool_name}/invoke
Content-Type: application/json
{
"parameters": {
"param1": "value1",
"param2": "value2"
}
}
GET /health
Returns plugin health status and uptime.
This template demonstrates several common integration patterns:
- Runtime Environment Management - Setting up Python/Node.js environments
- Package Installation - Installing Python packages and npm modules
- Environment Configuration - Managing PATH and environment variables
- Temporary Workspace - Creating and cleaning up work directories
- Error Handling - Proper error responses and cleanup
- Configuration Management - Flexible configuration with defaults
New to ELITEA/Pylon plugins? Choose your path:
- β‘ Use the Quick Start Template - Minimal working example
- π§ͺ Test with the setup script:
python setup_template.py
- π― Follow the Step-by-Step Guide - Build a complete image processing plugin from scratch
- π Study Integration Patterns - Find patterns for your specific tool type
- π¦ Use as Template Repository - Create new plugins from this template
- π Reference the Integration Guide - Comprehensive implementation details
- π Use this template implementation as a reference for complex setups
The template repository provides:
- π― Interactive Setup - Guided configuration with
python setup_template.py - π§ͺ Built-in Testing - Comprehensive test suite with
python test_plugin.py - π Complete Structure - All files with proper placeholders
- π Documentation - Links to guides and examples
The documentation covers patterns for:
- π Python libraries (PIL, pandas, scikit-learn)
- π οΈ CLI tools (FFmpeg, ImageMagick, Pandoc)
- π Node.js modules (Puppeteer, Express, etc.)
- π REST APIs (external services)
- ποΈ Databases (SQL processing)
- π€ Machine Learning models (TensorFlow, PyTorch)
Licensed under the Apache License, Version 2.0. See LICENSE for details.
Need help? Check the documentation files or study this implementation as a working example of ELITEA/Pylon plugin development.