# Modules

FlowDrop is composed of focused, loosely-coupled Drupal modules. Each module handles a distinct responsibility — from defining workflow structures to executing them, managing interactive sessions, and integrating with external platforms.

This section provides per-module documentation covering configuration, practical tips, and developer API reference.

## Which Modules Do I Need?

Use this table to decide which optional modules to enable based on what you want to do. The core modules (`flowdrop`, `flowdrop_workflow`, `flowdrop_node_processor`, `flowdrop_runtime`) are always required.

| I want to... | Enable these modules | Install command |
|-------------|---------------------|-----------------|
| Run workflows on entity create/update/delete | `flowdrop_trigger` | `drush en flowdrop_trigger` |
| Run workflows on a cron schedule | `flowdrop_trigger` | `drush en flowdrop_trigger` |
| Pause workflows for user confirmation or input | `flowdrop_interrupt`, `flowdrop_stategraph` | `drush en flowdrop_interrupt flowdrop_stategraph` |
| Build workflows with loops | `flowdrop_stategraph` | `drush en flowdrop_stategraph` |
| Test workflows interactively (chat UI) | `flowdrop_playground` | `drush en flowdrop_playground` |
| Call one workflow from another | `flowdrop_workflow_executor` | `drush en flowdrop_workflow_executor` |
| Expose workflows to external platforms | `flowdrop_orchestration_connector` | `drush en flowdrop_orchestration_connector` |
| Use AI-powered nodes | `ai`, `flowdrop_ai_provider` | See [Installation](../getting-started/installation.md#ai-integration-optional) |

!!! tip
    Dependencies are handled automatically — enabling `flowdrop_playground` will also enable `flowdrop_stategraph` and its dependencies.

## Module Overview

| Module | Description | Status |
|--------|-------------|--------|
| [flowdrop](flowdrop.md) | Core module providing the NodeProcessor plugin system, entity serializer, and admin dashboard | Stable |
| [flowdrop_node_category](flowdrop_node_category.md) | Config entity for organizing workflow nodes into categories | Stable |
| [flowdrop_node_type](flowdrop_node_type.md) | Configurable node type definitions with plugin integration | Stable |
| [flowdrop_node_processor](flowdrop_node_processor.md) | Node processor implementations, data mapping, and JSON schema validation | Stable |
| [flowdrop_workflow](flowdrop_workflow.md) | Workflow entity management and visual editor integration | Stable |
| [flowdrop_job](flowdrop_job.md) | Content entity for individual workflow node execution records | Stable |
| [flowdrop_pipeline](flowdrop_pipeline.md) | Execution pipeline orchestration and job generation | Stable |
| [flowdrop_orchestration](flowdrop_orchestration.md) | Orchestrator plugin system and contracts | Stable |
| [flowdrop_runtime](flowdrop_runtime.md) | Execution engine with sync/async modes, real-time monitoring, and snapshots | Stable |
| [flowdrop_stategraph](flowdrop_stategraph.md) | Stateful graph execution with checkpointing, reducers, and loops | Stable |
| [flowdrop_session](flowdrop_session.md) | Session and message management for interactive workflow execution | Stable |
| [flowdrop_interrupt](flowdrop_interrupt.md) | Human-in-loop interrupt system for workflow pauses and user input | Stable |
| [flowdrop_playground](flowdrop_playground.md) | Interactive chat-based playground for testing workflows | Stable |
| [flowdrop_trigger](flowdrop_trigger.md) | Event-driven workflow triggering (entity CRUD, user events, cron) | Stable |
| [flowdrop_orchestration_connector](flowdrop_orchestration_connector.md) | Exposes workflows to external automation platforms | Stable |
| [flowdrop_workflow_executor](flowdrop_workflow_executor.md) | Execute workflows from within other workflows | Stable |
| [flowdrop_ui_components](flowdrop_ui_components.md) | Reusable Single Directory Components for the FlowDrop admin UI | Stable |

## Dependency Graph

The arrows indicate dependency direction: `A --> B` means "B depends on A". Only direct dependencies are shown.

```mermaid
graph TD

    %% Base modules (no flowdrop dependencies)
    FD_UI_COMP[flowdrop_ui_components]
    FD_JOB[flowdrop_job]

    %% Main module
    FD_UI_COMP --> FD[flowdrop]

    %% Core modules
    FD --> FD_ORCH[flowdrop_orchestration]
    FD --> FD_NODE_CAT[flowdrop_node_category]
    FD_NODE_CAT --> FD_NODE_TYPE[flowdrop_node_type]

    %% Entity modules
    FD_NODE_TYPE --> FD_WORKFLOW[flowdrop_workflow]

    %% Pipeline module
    FD_JOB --> FD_PIPELINE[flowdrop_pipeline]
    FD_NODE_TYPE --> FD_PIPELINE
    FD_WORKFLOW --> FD_PIPELINE

    %% Execution foundation
    FD_ORCH --> FD_SESSION[flowdrop_session]
    FD_PIPELINE --> FD_SESSION
    FD_ORCH --> FD_RUNTIME[flowdrop_runtime]
    FD_PIPELINE --> FD_RUNTIME

    %% Execution layer
    FD_SESSION --> FD_INTERRUPT[flowdrop_interrupt]
    FD_RUNTIME --> FD_INTERRUPT

    %% Feature modules
    FD_ORCH --> FD_TRIGGER[flowdrop_trigger]
    FD_RUNTIME --> FD_TRIGGER

    FD_ORCH --> FD_STATEGRAPH[flowdrop_stategraph]
    FD_RUNTIME --> FD_STATEGRAPH

    FD_STATEGRAPH --> FD_PLAYGROUND[flowdrop_playground]

    FD_SESSION --> FD_WF_EXEC[flowdrop_workflow_executor]

    %% Integration modules
    FD_ORCH --> FD_ORCH_CONN[flowdrop_orchestration_connector]
    FD_TRIGGER --> FD_ORCH_CONN

    %% Styling
    classDef baseModule fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
    classDef coreModule fill:#e1f5fe,stroke:#01579b,stroke-width:2px
    classDef uiModule fill:#e8f577,stroke:#1b5e20,stroke-width:2px
    classDef executionModule fill:#fff3e0,stroke:#e65100,stroke-width:2px
    classDef featureModule fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
    classDef integrationModule fill:#efefef,stroke:#2e2e2e,stroke-width:2px
    class FD,FD_NODE_CAT,FD_WORKFLOW baseModule
    class FD_NODE_TYPE,FD_ORCH coreModule
    class FD_UI_COMP uiModule
    class FD_PIPELINE,FD_JOB,FD_RUNTIME,FD_INTERRUPT,FD_SESSION executionModule
    class FD_ORCH_CONN integrationModule
    class FD_TRIGGER,FD_STATEGRAPH,FD_PLAYGROUND,FD_WF_EXEC featureModule
```

### Legend

| Color | Category | Description |
|-------|----------|-------------|
| Green | Base | Foundation modules with minimal dependencies |
| Light blue | Core | Central modules defining key abstractions |
| Yellow-green | UI | User interface modules |
| Orange | Execution | Workflow execution and runtime modules |
| Gray | Integration | External platform connectors |
| Blue | Feature | Optional feature modules |
