region:us
### Structure of PlanWriterFlow

```
               goal
                |
                v
        +---------------+
        |  Controller   | --------<<<<-----------+
        +---------------+                        |
                |                                |
                | (command, command args)        |
                |                                |
                v                                |
        +------------------+                     |
        |   Executor       |  Each branch is an  |
        | (Tree Structure) |  executor           |
        +------------------+                     |
                |                                ^
                | (summary)                      |
                |                                |
                v                                |             
                |                                |
                +-> goes back to the Controller>-+

```

Structure of the Executors:
```
         +-------------------+
         |   Branching       |
         |    Executor       |
         +-------------------+
        /                    \
       /                      \
      /                        \
     /                          \
write_plan                    ask_user

```

About the branches:
- [ask_user](https://huggingface.co/Tachi67/PlanWriterFlowModule/blob/main/PlanWriterAskUserFlow.py): Ask user for info / confirmation, etc.
- [write_plan](https://huggingface.co/Tachi67/InteractivePlanGenFlowModule): Generates plan (user edit is allowed) and fetches user feedback.

How it works:
Controller calls write_plan until user is satisfied in the feedback, finish.


# Table of Contents

* [run\_planwriter](#run_planwriter)
* [PlanWriterAskUserFlow](#PlanWriterAskUserFlow)
  * [PlanWriterAskUserFlow](#PlanWriterAskUserFlow.PlanWriterAskUserFlow)
* [PlanWriterFlow](#PlanWriterFlow)
  * [PlanWriterFlow](#PlanWriterFlow.PlanWriterFlow)
* [\_\_init\_\_](#__init__)
* [PlanWriterCtrlFlow](#PlanWriterCtrlFlow)
  * [PlanWriterCtrlFlow](#PlanWriterCtrlFlow.PlanWriterCtrlFlow)

<a id="run_planwriter"></a>

# run\_planwriter

<a id="PlanWriterAskUserFlow"></a>

# PlanWriterAskUserFlow

<a id="PlanWriterAskUserFlow.PlanWriterAskUserFlow"></a>

## PlanWriterAskUserFlow Objects

```python
class PlanWriterAskUserFlow(HumanStandardInputFlow)
```

Refer to: https://huggingface.co/Tachi67/ExtendLibraryFlowModule/blob/main/ExtLibAskUserFlow.py

<a id="PlanWriterFlow"></a>

# PlanWriterFlow

<a id="PlanWriterFlow.PlanWriterFlow"></a>

## PlanWriterFlow Objects

```python
class PlanWriterFlow(ContentWriterFlow)
```

This flow inherits from ContentWriterFlow.
In the subflow of the executor, we specify the InteractivePlanGneFlow (https://huggingface.co/Tachi67/InteractivePlanGenFlowModule)

*Input Interface*:
- `goal`

*Output Interface*:
- `plan`
- `result`
- `summary`
- `status`

<a id="__init__"></a>

# \_\_init\_\_

<a id="PlanWriterCtrlFlow"></a>

# PlanWriterCtrlFlow

<a id="PlanWriterCtrlFlow.PlanWriterCtrlFlow"></a>

## PlanWriterCtrlFlow Objects

```python
class PlanWriterCtrlFlow(ChatAtomicFlow)
```

Refer to: https://huggingface.co/Tachi67/JarvisFlowModule/blob/main/Controller_JarvisFlow.py

