125 lines
3.8 KiB
Markdown
125 lines
3.8 KiB
Markdown
# uni-comfyui-sdk
|
|
|
|
A Rust SDK for ComfyUI Workflow Service & Management API.
|
|
|
|
## Features
|
|
|
|
- **Status Management**: Get metrics, server status, and file listings
|
|
- **Workflow Management**: Create, retrieve, and delete workflows
|
|
- **Workflow Execution**: Run workflows and monitor their status
|
|
- **Server Management**: Register, unregister, and manage ComfyUI servers
|
|
- **Monitoring**: Health checks, system stats, and task monitoring
|
|
- **Type Safety**: Strongly typed API with comprehensive error handling
|
|
|
|
## Installation
|
|
|
|
Add this to your `Cargo.toml`:
|
|
|
|
```toml
|
|
[dependencies]
|
|
uni-comfyui-sdk = "0.1.0"
|
|
```
|
|
|
|
## Quick Start
|
|
|
|
```rust
|
|
use uni_comfyui_sdk::{UniComfyUIClient, Result};
|
|
use std::collections::HashMap;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<()> {
|
|
// Create a client
|
|
let client = UniComfyUIClient::new("http://localhost:8000")?;
|
|
|
|
// Get system metrics
|
|
let metrics = client.get_metrics().await?;
|
|
println!("Metrics: {:#?}", metrics);
|
|
|
|
// Get all workflows
|
|
let workflows = client.get_all_workflows().await?;
|
|
println!("Found {} workflows", workflows.len());
|
|
|
|
// Run a workflow
|
|
let mut data = HashMap::new();
|
|
data.insert("input".to_string(), serde_json::json!("test input"));
|
|
let result = client.run_workflow("my_workflow", None, data).await?;
|
|
println!("Workflow result: {:#?}", result);
|
|
|
|
Ok(())
|
|
}
|
|
```
|
|
|
|
## API Coverage
|
|
|
|
### Status Endpoints
|
|
- `get_metrics()` - Get queue status overview
|
|
- `get_servers_status()` - Get all configured ComfyUI servers status
|
|
- `list_server_files(server_index)` - List files in server input/output folders
|
|
|
|
### Workflow Endpoints
|
|
- `get_all_workflows()` - Get all workflows
|
|
- `publish_workflow(data)` - Publish a new workflow
|
|
- `delete_workflow(workflow_name)` - Delete a workflow
|
|
- `get_one_workflow(base_name, version)` - Get workflow specification
|
|
|
|
### Run Endpoints
|
|
- `run_workflow(name, version, data)` - Execute workflow asynchronously
|
|
- `get_run_status(workflow_run_id)` - Get workflow execution status
|
|
|
|
### RunX Endpoints
|
|
- `model_with_multi_dress(version, data)` - Model with multiple dresses workflow
|
|
- `model_with_multi_dress_json_schema()` - Get workflow definition
|
|
|
|
### Monitor Endpoints
|
|
- `monitor_dashboard()` - Get monitoring dashboard HTML
|
|
- `get_system_stats()` - Get system statistics
|
|
- `get_task_stats()` - Get task statistics
|
|
- `get_monitor_server_status()` - Get server status information
|
|
- `get_recent_tasks(limit)` - Get recent tasks list
|
|
- `health_check()` - Health check endpoint
|
|
|
|
### ComfyUI Server Management Endpoints
|
|
- `register_server(request)` - Register ComfyUI server
|
|
- `update_heartbeat(request)` - Update server heartbeat
|
|
- `unregister_server(request)` - Unregister ComfyUI server
|
|
- `get_server_status(server_name)` - Get specific server status
|
|
- `list_all_servers()` - Get all servers list
|
|
- `get_system_health()` - Get system overall health status
|
|
- `force_health_check()` - Force health check execution
|
|
|
|
## Error Handling
|
|
|
|
The SDK provides comprehensive error handling through the `ComfyUIError` enum:
|
|
|
|
```rust
|
|
use uni_comfyui_sdk::{UniComfyUIClient, ComfyUIError};
|
|
|
|
match client.get_metrics().await {
|
|
Ok(metrics) => println!("Success: {:#?}", metrics),
|
|
Err(ComfyUIError::Http(e)) => println!("HTTP error: {}", e),
|
|
Err(ComfyUIError::Api { status, message }) => {
|
|
println!("API error {}: {}", status, message)
|
|
}
|
|
Err(e) => println!("Other error: {}", e),
|
|
}
|
|
```
|
|
|
|
## Data Models
|
|
|
|
The SDK includes strongly typed models for all API requests and responses:
|
|
|
|
- `ServerRegistrationRequest` - Server registration data
|
|
- `ServerHeartbeatRequest` - Server heartbeat data
|
|
- `ServerStatusResponse` - Server status information
|
|
- `ServerFiles` - Server file listings
|
|
- `FileDetails` - Individual file information
|
|
- And more...
|
|
|
|
## Examples
|
|
|
|
See the `examples/` directory for more usage examples.
|
|
|
|
## License
|
|
|
|
MIT
|