# CleverAgents Plan Lifecycle: Complete Guide ## Overview The CleverAgents plan system follows a **stateful workflow** model where plans progress through distinct phases. The core workflow has **three primary phases** (TELL → BUILD → APPLY) with additional supporting operations. --- ## Plan Status States Plans transition through these states defined in `src/cleveragents/domain/models/core/plan.py:12-20`: | Status | Description | |--------|-------------| | `PENDING` | Plan created, awaiting build (initial state after TELL) | | `BUILDING` | AI is actively generating changes | | `BUILT` | Changes generated successfully, ready to apply | | `APPLIED` | Changes written to filesystem | | `ERROR` | An error occurred during processing | | `CANCELLED` | Plan was explicitly cancelled | --- ## Primary Workflow Phases ### 1. TELL Phase **Purpose:** Create a new plan with natural language instructions. **Command:** `agents tell ""` or `agents tell "" --name ` **Activities Performed:** 1. **Project Validation** - Retrieves current project from `ProjectService`; fails if no project is initialized 2. **Name Generation** - Auto-generates plan name from first 3 words of prompt (e.g., "add error handling" → `add_error_handling`), or uses custom name if provided 3. **Plan Creation** - Creates a `Plan` object with: - `status = PENDING` - `project_id` linking to current project - `prompt` storing user instructions - `created_at` and `updated_at` timestamps 4. **Database Persistence** - Saves plan via Unit of Work transaction pattern 5. **Current Plan Assignment** - Sets this plan as the current plan for the project **Code Location:** `src/cleveragents/application/services/plan_service.py:289-362` **Streaming Mode (`--stream`):** When using `--stream`, the TELL command also immediately triggers the BUILD phase with real-time progress display through these stages: - "Loading context files" - "Analyzing requirements" - "Generating plan" - "Validating plan" --- ### 2. BUILD Phase **Purpose:** Use AI to generate code changes based on plan instructions. **Command:** `agents build --actor ` (requires an actor or a default actor) **Activities Performed:** 1. **Plan Retrieval** - Gets current plan from database; validates it exists and has a valid ID 2. **Status Update** - Updates plan status to `BUILDING` 3. **Provider Resolution** - Resolves AI provider (supports runtime override via CLI flags): - Checks for mock provider in testing mode - Falls back to injected provider or registry-based lookup 4. **Context Loading** - Retrieves all context files associated with the plan from the database 5. **AI Generation** - Calls `ai_provider.generate_changes()` with: - Project metadata - Plan instructions (prompt) - Context files - Progress callback for UI updates 6. **Response Processing:** - Checks for errors in provider response - Extracts generated changes, model used, and token count 7. **Change Persistence** - Saves all generated `Change` objects to database 8. **Plan Update** - Updates plan with: - `status = BUILT` - `PlanBuild` object containing timestamps, model name, token count **Code Location:** `src/cleveragents/application/services/plan_service.py:377-477` **Internal LangGraph Workflow:** The BUILD phase internally uses a LangGraph workflow (`src/cleveragents/agents/graphs/plan_generation.py`) with these nodes: ``` ┌─────────────────┐ │ load_context │ ← Prepares context information, initializes retry_count=0 └────────┬────────┘ │ ▼ ┌─────────────────────────┐ │ analyze_requirements │ ← Uses LLM to extract structured requirements from prompt └────────┬────────────────┘ │ ▼ ┌─────────────────┐ │ generate_plan │ ← Uses LLM to generate code changes based on requirements └────────┬────────┘ │ ▼ ┌─────────────────┐ │ validate │ ← Uses LLM to validate generated code for quality/correctness └────────┬────────┘ │ ┌────┴────┐ │ PASS? │ └────┬────┘ FAIL │ PASS (retry` **Activities:** Creates a plan with placeholder prompt "New plan" and specified name. Useful when you want to add instructions incrementally. **Code Location:** `src/cleveragents/application/services/plan_service.py:364-375` --- ### CONTINUE **Purpose:** Add more instructions to an existing plan. **Command:** `agents continue ""` **Activities:** 1. Retrieves current plan 2. Appends new instructions to existing prompt (separated by double newline) 3. Resets status to `PENDING` (allows re-building) 4. Updates timestamp **Code Location:** `src/cleveragents/application/services/plan_service.py:815-852` --- ### CD (Switch) **Purpose:** Switch to a different plan. **Command:** `agents cd ` **Activities:** 1. Looks up plan by name in current project 2. Sets it as the current plan 3. Returns the switched-to plan **Code Location:** `src/cleveragents/application/services/plan_service.py:782-813` --- ### LIST **Purpose:** List all plans in the current project. **Command:** `agents list` **Activities:** Retrieves and displays all plans with their name, status, creation date, and current marker. --- ### CURRENT **Purpose:** View the current active plan. **Command:** `agents current` **Activities:** Retrieves and displays current plan details including name, status, creation time, and prompt preview. --- ### CLEAR (Context) **Purpose:** Clear all context files from the current plan. **Command:** `agents context clear` **Activities:** Removes all context file associations from the current plan. **Code Location:** `src/cleveragents/application/services/context_service.py:309+` --- ### ADD (Context) **Purpose:** Add files to the plan's context. **Command:** `agents context add ` (with optional `--recursive`) **Activities:** 1. Resolves file paths (supports directories with recursive option) 2. Reads file content 3. Creates `Context` objects with path, content, type classification 4. Associates contexts with current plan **Code Location:** `src/cleveragents/application/services/context_service.py:88-163` --- ## State Transitions Diagram ``` ┌─────────────┐ │ START │ └──────┬──────┘ │ agents new │ agents tell (empty plan) │ (with prompt) ┌──────────┴──────────┐ ▼ ▼ ┌─────────────┐ ┌─────────────┐ │ PENDING │◄───────│ PENDING │ └──────┬──────┘ └──────┬──────┘ │ │ │ agents continue │ │◄─────────────────────┤ │ │ │ agents build │ ├──────────────────────┘ ▼ ┌─────────────┐ │ BUILDING │ └──────┬──────┘ │ success │ error ┌─────┴─────┐ ▼ ▼ ┌─────────────┐ ┌─────────────┐ │ BUILT │ │ ERROR │ └──────┬──────┘ └─────────────┘ │ │ agents continue → back to PENDING │ │ agents apply ▼ ┌─────────────┐ │ APPLIED │ └─────────────┘ ``` --- ## Auto-Debug Feature When enabled, failed builds can automatically retry with debugging: **Code Location:** `src/cleveragents/application/services/plan_service.py:479-636` **Workflow:** 1. Build attempt fails 2. `AutoDebugAgent` analyzes the error 3. Agent generates a fix suggestion 4. Fix is appended to plan prompt 5. Build is retried (up to `auto_debug_tries` times) 6. Each attempt is logged as a `DebugAttempt` in the database --- ## Configuration Options Plans can be configured via `PlanConfig` (`src/cleveragents/domain/models/planconfig/plan_config.py`): | Option | Description | |--------|-------------| | `auto_mode` | Automation level (manual/auto/guided) | | `auto_continue` | Automatically continue after completion | | `auto_build` | Automatically build after tell | | `auto_apply` | Automatically apply after build | | `auto_commit` | Automatically git commit after apply | | `auto_debug` | Enable auto-debugging on failures | | `auto_debug_tries` | Max debug retry attempts | | `auto_revert_on_rewind` | Revert filesystem changes on rewind | | `smart_context` | Enable intelligent context selection | | `auto_context` | Automatically update context | --- ## Summary: Typical Workflow ```bash # 1. Initialize project (one-time) agents init # 2. Add relevant files to context agents context add src/myfile.py agents context add src/utils/ # 3. Create plan with instructions (TELL) agents tell "Add comprehensive error handling to the API endpoints" # 4. Generate code changes (BUILD) agents build # 5. Review and apply changes (APPLY) agents apply # Optional: Add more instructions and rebuild agents continue "Also add logging for errors" agents build agents apply ```