# Workflow Architecture Visualization ## System Overview ``` ┌─────────────────────────────────────────────────────────────────┐ │ AutoMetabuilder │ │ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ Workflow Engine │ │ │ │ ┌────────────────────────────────────────────────────┐ │ │ │ │ │ Plugin Registry (78 plugins) │ │ │ │ │ │ ┌────────────────────────────────────────────┐ │ │ │ │ │ │ │ Backend Infrastructure (8) │ │ │ │ │ │ │ │ Logic & Comparison (9) │ │ │ │ │ │ │ │ List Operations (7) │ │ │ │ │ │ │ │ Dictionary Operations (6) │ │ │ │ │ │ │ │ String Manipulation (8) │ │ │ │ │ │ │ │ Math Operations (10) │ │ │ │ │ │ │ │ Type Conversions (7) │ │ │ │ │ │ │ │ Control Flow (1) │ │ │ │ │ │ │ │ State Management (4) │ │ │ │ │ │ │ │ Core AI & Tools (19 existing) │ │ │ │ │ │ │ └────────────────────────────────────────────┘ │ │ │ │ │ └────────────────────────────────────────────────────┘ │ │ │ │ │ │ │ │ ┌────────────────────────────────────────────────────┐ │ │ │ │ │ Workflow Packages │ │ │ │ │ │ • backend_bootstrap │ │ │ │ │ │ • data_processing_demo │ │ │ │ │ │ • conditional_logic_demo │ │ │ │ │ │ • single_pass, iterative_loop, etc. (existing) │ │ │ │ │ └────────────────────────────────────────────────────┘ │ │ │ │ │ │ │ │ ┌────────────────────────────────────────────────────┐ │ │ │ │ │ Workflow Runtime │ │ │ │ │ │ • Store (mutable state) │ │ │ │ │ │ • Context (immutable config) │ │ │ │ │ │ • Variable Binding ($var syntax) │ │ │ │ │ │ • Error Handling │ │ │ │ │ └────────────────────────────────────────────────────┘ │ │ │ └──────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ``` ## Plugin Execution Flow ``` ┌─────────────┐ │ Start │ │ Workflow │ └──────┬──────┘ │ ▼ ┌─────────────────────────────────────────────┐ │ Load Workflow Definition (JSON) │ │ • nodes: array of plugin instances │ │ • connections: node linkages │ └──────┬──────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────┐ │ Initialize Runtime │ │ • store = {} (empty state) │ │ • context = {config, clients, tools} │ └──────┬──────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────┐ │ Execute Node (example: logic.and) │ │ 1. Resolve inputs from store │ │ values = [$is_adult, $is_passing] │ │ 2. Call plugin: run(runtime, inputs) │ │ 3. Store outputs to runtime.store │ │ store["result"] = True/False │ └──────┬──────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────┐ │ Execute Next Connected Node │ │ (repeat until all nodes executed) │ └──────┬──────────────────────────────────────┘ │ ▼ ┌─────────────┐ │ Workflow │ │ Complete │ └─────────────┘ ``` ## Plugin Structure ```python # Generic plugin template def run(runtime, inputs): """ Args: runtime: WorkflowRuntime - runtime.store: dict (shared state) - runtime.context: dict (config) - runtime.logger: Logger inputs: dict - Parameters from workflow definition - Can reference store variables with $name Returns: dict: Output values stored in runtime.store - Keys become available as $key in later nodes - Optional "error" field for error handling """ # Example: math.add numbers = inputs.get("numbers", []) result = sum(numbers) return {"result": result} ``` ## Variable Binding Example ```json { "nodes": [ { "id": "node1", "type": "var.set", "parameters": { "key": "user_age", "value": 25 } }, { "id": "node2", "type": "logic.gte", "parameters": { "a": "$user_age", // References store["user_age"] "b": 18 } }, { "id": "node3", "type": "string.format", "parameters": { "template": "Age {age} is adult: {is_adult}", "variables": { "age": "$user_age", // From node1 "is_adult": "$result" // From node2 } } } ] } ``` ## Backend Bootstrap Workflow ``` ┌──────────────────┐ │ Load Messages │ → store["messages"] = {...} └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ Load Metadata │ → store["metadata"] = {...} └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ Load Prompt │ → store["prompt"] = {...} └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ Create GitHub │ → store["gh"] = GitHubIntegration(...) └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ Create OpenAI │ → store["client"] = OpenAI(...) └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ Load Tools │ → store["tools"] = [...] └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ Build Tool Map │ → store["tool_map"] = {...} └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ Load Plugins │ → Registers all plugins └──────────────────┘ ``` ## Data Processing Demo Workflow ``` ┌────────────────┐ │ Create Data │ numbers = [1,2,3,4,5,6,7,8,9,10] └───────┬────────┘ │ ▼ ┌────────────────┐ │ Filter Even │ filtered = [2,4,6,8,10] └───────┬────────┘ │ ▼ ┌────────────────┐ │ Square Values │ squared = [4,16,36,64,100] └───────┬────────┘ │ ▼ ┌────────────────┐ │ Sum Values │ sum = 220 └───────┬────────┘ │ ▼ ┌────────────────┐ │ Check > 50 │ is_greater = True └───────┬────────┘ │ ▼ ┌────────────────┐ │ Branch Result │ → output[0] if True └───┬────────┬───┘ → output[1] if False │ │ ▼ ▼ [True] [False] │ │ ▼ ▼ ┌─────────┐ ┌─────────┐ │Success │ │Failure │ │Message │ │Message │ └────┬────┘ └────┬────┘ └──────┬────┘ ▼ ┌──────────────┐ │ Store Result │ └──────────────┘ ``` ## Plugin Categories & Use Cases ### Backend Infrastructure **Purpose**: System initialization **Use Case**: Replace imperative setup code with declarative workflow ### Logic & Comparison **Purpose**: Boolean operations **Use Case**: Conditional branching, validation rules ### List Operations **Purpose**: Collection manipulation **Use Case**: Data filtering, searching, aggregation ### Dictionary Operations **Purpose**: Object/map manipulation **Use Case**: Configuration management, data extraction ### String Manipulation **Purpose**: Text processing **Use Case**: Formatting, parsing, report generation ### Math Operations **Purpose**: Arithmetic calculations **Use Case**: Score calculations, statistics, metrics ### Type Conversions **Purpose**: Data type transformations **Use Case**: API data normalization, serialization ### Control Flow **Purpose**: Execution branching **Use Case**: State machines, routing logic ### State Management **Purpose**: Variable storage/retrieval **Use Case**: Passing data between distant nodes ## Benefits of This Architecture ### 1. Declarative Programming - Logic expressed as data (JSON) - Visual representation possible - Version controllable ### 2. Composability - Small plugins combine into complex workflows - Reusable patterns as packages - No code duplication ### 3. Testability - Plugins testable in isolation - Workflows testable as units - Mock-free testing ### 4. Extensibility - New plugins easy to add - No changes to core engine - Backward compatible ### 5. Low-Code Capability - Non-programmers can build workflows - Drag-and-drop potential - Template-based development ## Performance Characteristics - **Plugin Loading**: O(1) - cached after first load - **Node Execution**: O(n) - linear in number of nodes - **Variable Resolution**: O(1) - dict lookup - **Memory Usage**: O(m) - proportional to store size - **Scalability**: Each workflow runs independently ## Future Extensions ### More Plugins - File I/O operations - HTTP/REST calls - Database queries - Date/time operations - Regular expressions - Crypto operations ### Advanced Features - Parallel execution - Async operations - Error recovery - Workflow versioning - Performance profiling ### Developer Tools - Visual workflow editor - Plugin scaffolding CLI - Workflow debugger - Performance analyzer - Template marketplace