UNPKG

@volter-ai-dev/flow-editor

Version:

AI Flow Editor - A visual node-based editor for AI workflows with ReactFlow, Subscribe.dev and Replicate API integration

349 lines (267 loc) 10.1 kB
# AI Flow Editor A visual node-based editor for creating AI workflows with ReactFlow and Subscribe.dev integration. ## Quick Start ```bash # Install dependencies bun install # Start development server bun run dev ``` Then open `http://localhost:8000/index.html` in your browser to see the main AI Flow Editor application. ## Features - **Visual Workflow Editor** - Drag-and-drop interface for creating AI workflows - **Multiple AI Models** - Support for image generation, video generation, and text models - **Node-based Connections** - Visual connections between inputs, models, and outputs - **User Authentication** - Integrated Subscribe.dev authentication and billing - **Real-time Execution** - Execute workflows with live progress tracking - **Generation History** - Track all previous AI generations with persistent history - **Professional UI** - Clean interface with Phosphor icons and proper aspect ratios - **UMD Format** - Works in any JavaScript environment with no external dependencies - **Programmatic Initialization** - Load predefined workflows via window.FLOW ## Installation ```bash npm install @volter-ai-dev/flow-editor ``` ## Prerequisites Before using the Flow Editor, make sure you have the following dependencies loaded: ```html <!-- Process polyfill --> <script> window.process = { env: { NODE_ENV: 'development' } }; </script> <!-- React --> <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script> <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script> <!-- Babel for JSX transformation --> <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script> <!-- ReactFlow --> <script src="https://unpkg.com/reactflow@11.11.4/dist/umd/index.js"></script> <script> // Load ReactFlow CSS dynamically fetch('https://unpkg.com/reactflow@11.11.4/dist/style.css') .then(response => response.text()) .then(css => { const style = document.createElement('style'); style.textContent = css; document.head.appendChild(style); }); </script> <!-- Subscribe.dev --> <script src="https://unpkg.com/@subscribe.dev/react@0.0.161/index.umd.js"></script> <!-- Tailwind CSS (for styling) --> <script src="https://cdn.tailwindcss.com"></script> ``` **Note:** The Flow Editor includes all necessary icons internally - no external icon libraries are required. ## Usage ### ES Modules / React App ```tsx // Note: This package is primarily designed for UMD usage // ES module support may be limited in the current version import FlowEditor from '@volter-ai-dev/flow-editor'; function App() { return ( <FlowEditor projectToken="your-subscribe-dev-project-token" /> ); } export default App; ``` ### UMD / Script Tag ```html <!DOCTYPE html> <html> <head> <!-- Prerequisites (see above) --> <!-- Flow Editor --> <script src="https://unpkg.com/@volter-ai-dev/flow-editor@latest/dist/flow-editor.umd.js"></script> </head> <body> <div id="flow-editor-container"></div> <script type="text/babel"> // FlowEditor is available as window.FlowEditor const { ReactFlowProvider } = window.ReactFlow; const { SubscribeDevProvider } = window.SubscribeDevReact; // Get FlowEditor from compiled UMD const FlowEditor = window.FlowEditor.default; // Auth wrapper with providers const AuthWrapper = () => { return ( <ReactFlowProvider> <FlowEditor /> </ReactFlowProvider> ); }; // Main App with SubscribeDevProvider const App = () => { return ( <SubscribeDevProvider baseUrl="https://api.subscribe-dev.com"> <AuthWrapper /> </SubscribeDevProvider> ); }; const root = ReactDOM.createRoot(document.getElementById('flow-editor-container')); root.render(<App />); </script> </body> </html> ``` ### Programmatic Initialization You can initialize the Flow Editor with predefined nodes and edges by setting `window.FLOW` before the component mounts: ```html <script> window.FLOW = { nodes: [ { id: '1', type: 'textInput', position: { x: 100, y: 250 }, data: { prompt: 'A beautiful sunset over mountains', label: 'Text Input' } }, { id: '2', type: 'model', position: { x: 500, y: 100 }, data: { model: 'black-forest-labs/flux-schnell', width: 1024, height: 1024, outputCount: 2, label: 'Model' } } ], edges: [ { id: 'e1-2', source: '1', target: '2', sourceHandle: 'prompt', targetHandle: 'prompt' } ] }; </script> ``` ## API Reference ### FlowEditor Props | Prop | Type | Required | Default | Description | |------|------|----------|---------|-------------| | `projectToken` | `string` | No | - | Your Subscribe.dev project token (can be set via SubscribeDevProvider) | **Note:** The FlowEditor is typically wrapped with `SubscribeDevProvider` which handles authentication and API configuration. ## Supported AI Models The Flow Editor supports various AI models through Subscribe.dev: ### Image Generation - **Flux Schnell** (`black-forest-labs/flux-schnell`) - Fast image generation - **Flux Kontext** (`black-forest-labs/flux-kontext-max`) - Image generation with image input - **Flux Dev** (`black-forest-labs/flux-dev`) - Higher quality image generation - **Google Nano Banana** (`google/nano-banana`) - Supports 0-2 image inputs ### Video Generation - **WAN Video** (`wan-video/wan-2.2-5b-fast`) - Video generation from text/image - **Seedance Lite** (`bytedance/seedance-1-lite`) - High quality video generation - **Seedance Pro** (`bytedance/seedance-1-pro`) - Premium video generation ### Text Generation - Models available through Subscribe.dev's text completion API ## Workflow Components ### Input Nodes - **Text Input** - For text prompts and instructions - **Image Input** - For image uploads and references ### Model Nodes - **AI Models** - Execute AI generation with configurable parameters - Support for multiple outputs (1-8 per model) - Real-time progress tracking - Parameter controls (width, height, aspect ratio, etc.) ### Connections - Visual connections between compatible node types - Automatic type validation - Support for multiple outputs connecting to multiple inputs ## Key Features ### Generation History - Track all previous AI generations automatically - Persistent history across sessions - Modal view with generation details - One-click access to previous results ### Authentication & Billing - Integrated Subscribe.dev authentication - Credit usage tracking - Subscription management - Sign in/out functionality ### Workflow Execution - Topological sorting for correct execution order - Parallel output generation - Real-time status updates - Error handling and retry logic ### User Interface - Dark theme optimized for AI workflows - Professional Phosphor icon set - Proper aspect ratios for media previews - Keyboard shortcuts (Delete/Backspace to remove nodes/edges) - Hover controls for node management - Minimap and zoom controls - Clickable media outputs with copy functionality ## Development To work on this package locally: ```bash # Clone the repository git clone https://github.com/volter-ai/flow-editor.git # Install dependencies bun install # Start development server (builds and serves with file watching) bun run dev ``` This will: 1. Build the flow-editor UMD bundle 2. Start webpack in watch mode (rebuilds on file changes) 3. Start a local server on `http://localhost:8000` ### Running the Main App Once the development server is running, open your browser to: **`http://localhost:8000/index.html`** This is the main AI Flow Editor application with a pre-configured workflow demonstrating: - Text input nodes - AI model nodes (Flux Schnell for image generation) - Visual node connections - Real-time workflow execution - Multiple output generation ### Other Available Commands ```bash # Build once (without serving) bun run build # Serve existing build (without rebuilding) bun run serve # Build once and serve (no file watching) bun run dev:serve # Build for production NODE_ENV=production bun run build ``` ### Additional Example Files The local server also hosts other example implementations: - `http://localhost:8000/editor_simple.html` - Simple Subscribe.dev integration demo - `http://localhost:8000/test-umd.html` - UMD package functionality test - `http://localhost:8000/code_editor.html` - Advanced multi-model editor - `http://localhost:8000/flowgraph.html` - Flow graph visualization - `http://localhost:8000/sheet.html` - Sheet-based interface - `http://localhost:8000/perms_experiment.html` - Authentication experiments **Note:** All examples require the UMD bundle to be built first. The `bun run dev` command handles this automatically. ## Example Files This repository contains several example HTML files demonstrating different aspects of the flow editor: - **`index.html`** - Main example showcasing the full flow editor with predefined workflow - **`editor_simple.html`** - Simple Subscribe.dev integration demo - **`test-umd.html`** - Basic UMD package functionality test - **`code_editor.html`** - Advanced multi-model editor with flow management - **`flowgraph.html`** - Flow graph visualization and editing - **`sheet.html`** - Alternative sheet-based interface - **`perms_experiment.html`** - Permissions and authentication experiments Each file demonstrates different features and can be used as starting points for your own implementations. ## Subscribe.dev Integration This package requires a Subscribe.dev account and project token. Get started at [subscribe.dev](https://subscribe.dev): 1. Sign up for a Subscribe.dev account 2. Create a new project 3. Copy your project token 4. Use it in the `projectToken` prop ## License MIT ## Support For issues and feature requests, please use the [GitHub Issues](https://github.com/volter-ai/flow-editor/issues) page.