@mock_only
Feature: Plan Commands Coverage
  As a developer
  I want to test all plan command paths
  So that plan.py has >90% test coverage

  Scenario: Tell command creates a new plan with prompt
    Given I have a temporary test directory
    And I have a plan test project initialized
    When I execute plan tell with prompt "Create a REST API"
    Then the plan tell should execute successfully
    And the plan should be created with name and prompt

  Scenario: Tell command creates a plan with custom name
    Given I have a temporary test directory
    And I have a plan test project initialized
    When I execute plan tell with prompt "Create a REST API" and name "api-plan"
    Then the plan tell should execute successfully
    And the plan should be created with custom name "api-plan"

  Scenario: Tell command handles validation errors
    Given I have a temporary test directory
    And I have a plan test project initialized
    When I execute plan tell with invalid prompt causing validation error
    Then the plan tell should abort with validation error

  Scenario: Tell command handles plan errors
    Given I have a temporary test directory
    And I have a plan test project initialized
    When I execute plan tell causing plan error
    Then the plan tell should abort with plan error

  Scenario: Tell command handles general errors
    Given I have a temporary test directory
    And I have a plan test project initialized
    When I execute plan tell causing general error
    Then the plan tell should abort with general error

  Scenario: Tell command streaming mode invokes async runner
    Given I have a temporary test directory
    And I have a plan test project initialized
    When I execute plan tell streaming with prompt "Stream coverage details"
    Then the plan tell streaming path should execute successfully

  Scenario: Build command builds current plan successfully
    Given I have a temporary test directory
    And I have an initialized project with current plan
    When I execute plan build
    Then the plan build should execute successfully
    And plan changes should be generated

  Scenario: Build command with verbose flag
    Given I have a temporary test directory
    And I have an initialized project with current plan
    When I execute plan build with verbose flag
    Then the plan build should execute successfully with verbose output

  Scenario: Build command with no changes generated
    Given I have a temporary test directory
    And I have an initialized project with empty plan
    When I execute plan build generating no changes
    Then the build should complete with no changes message

  Scenario: Build command handles plan errors
    Given I have a temporary test directory
    And I have an initialized project
    When I execute plan build causing plan error
    Then the plan build should abort with plan error

  Scenario: Build command handles general errors
    Given I have a temporary test directory
    And I have an initialized project
    When I execute plan build causing general error
    Then the plan build should abort with general error

  Scenario: New command creates empty plan
    Given I have a temporary test directory
    And I have an initialized project
    When I execute plan new with name "feature-plan"
    Then the plan new should execute successfully
    And empty plan "feature-plan" should be created

  Scenario: New command handles validation errors
    Given I have a temporary test directory
    And I have an initialized project
    When I execute plan new with invalid name
    Then the plan new should abort with validation error

  Scenario: New command handles general errors
    Given I have a temporary test directory
    And I have an initialized project
    When I execute plan new causing general error
    Then the plan new should abort with general error

  Scenario: New command aborts when no project exists
    Given I have a temporary test directory
    When I execute plan new without an initialized project
    Then the plan new should abort due to missing project

  Scenario: Current command shows active plan
    Given I have a temporary test directory
    And I have an initialized project with current plan
    When I execute plan current
    Then the plan current should execute successfully
    And current plan details should be displayed

  Scenario: Current command with no active plan
    Given I have a temporary test directory
    And I have an initialized project with no plans
    When I execute plan current
    Then the current should exit with no plan message

  Scenario: Current command handles errors
    Given I have a temporary test directory
    And I have an initialized project
    When I execute plan current causing error
    Then the plan current should abort with error

  Scenario: CD command switches to different plan
    Given I have a temporary test directory
    And I have an initialized project with multiple plans
    When I execute plan cd to "other-plan"
    Then the plan cd should execute successfully
    And current plan should be "other-plan"

  Scenario: CD command handles plan not found
    Given I have a temporary test directory
    And I have an initialized project
    When I execute plan cd to non-existent plan
    Then the plan cd should abort with validation error

  Scenario: CD command handles general errors
    Given I have a temporary test directory
    And I have an initialized project
    When I execute plan cd causing error
    Then the plan cd should abort with error

  Scenario: Continue command adds to current plan
    Given I have a temporary test directory
    And I have an initialized project with current plan
    When I execute plan continue with prompt "Add more features"
    Then the plan continue should execute successfully
    And instructions should be added to plan

  Scenario: Continue command without prompt
    Given I have a temporary test directory
    And I have an initialized project with current plan
    When I execute plan continue without prompt
    Then the plan continue should execute successfully
    And continue message should be displayed

  Scenario: Continue command with no current plan
    Given I have a temporary test directory
    And I have an initialized project with no plans
    When I execute plan continue without prompt
    Then the continue should abort with no plan error

  Scenario: Continue command handles errors
    Given I have a temporary test directory
    And I have an initialized project
    When I execute plan continue causing error
    Then the plan continue should abort with error

  Scenario: Programmatic tell command fails without an initialized project
    Given I have a temporary test directory
    When I call plan tell_command without a project
    Then a CleverAgentsError should be raised with message "No project found. Run 'agents init' first."

  Scenario: Programmatic build command fails without an initialized project
    Given I have a temporary test directory
    When I call plan build_command without a project
    Then a CleverAgentsError should be raised with message "No project found. Run 'agents init' first."

  Scenario: Programmatic apply command returns applied change count
    Given I have a temporary test directory
    When I call plan apply_command successfully
    Then the programmatic plan apply_command should report 3 applied changes

  Scenario: Programmatic apply command fails without an initialized project
    Given I have a temporary test directory
    When I call plan apply_command without a project
    Then a CleverAgentsError should be raised with message "No project found. Run 'agents init' first."

  Scenario: Programmatic new command fails without an initialized project
    Given I have a temporary test directory
    When I call plan new_command without a project
    Then a CleverAgentsError should be raised with message "No project found. Run 'agents init' first."

  Scenario: Programmatic current command returns active plan instance
    Given I have a temporary test directory
    When I call plan current_command successfully
    Then the programmatic current_command should return the mock plan

  Scenario: Programmatic current command fails without an initialized project
    Given I have a temporary test directory
    When I call plan current_command without a project
    Then a CleverAgentsError should be raised with message "No project found. Run 'agents init' first."

  Scenario: Programmatic list command returns empty list when no plans exist
    Given I have a temporary test directory
    When I call plan list_command with no stored plans
    Then the programmatic list command should return an empty list

  Scenario: Programmatic list command fails without an initialized project
    Given I have a temporary test directory
    When I call plan list_command without a project
    Then a CleverAgentsError should be raised with message "No project found. Run 'agents init' first."

  Scenario: Programmatic cd command fails without an initialized project
    Given I have a temporary test directory
    When I call plan cd_command without a project
    Then a CleverAgentsError should be raised with message "No project found. Run 'agents init' first."

  Scenario: Programmatic cd command switches to requested plan
    Given I have a temporary test directory
    When I call plan cd_command successfully to "feature-stream"
    Then the programmatic cd command should switch to plan "feature-stream"

  Scenario: Programmatic continue command with prompt forwards instructions
    Given I have a temporary test directory
    When I call plan continue_command with prompt "Ship it"
    Then the programmatic continue command should forward prompt "Ship it"

  Scenario: Programmatic continue command without prompt uses the current plan
    Given I have a temporary test directory
    When I call plan continue_command without prompt and an active plan
    Then the programmatic continue command should keep the current plan active

  Scenario: Programmatic continue command without prompt fails when no plan exists
    Given I have a temporary test directory
    When I call plan continue_command without prompt and no current plan
    Then a CleverAgentsError should be raised with message "No current plan to continue."

  Scenario: Programmatic continue command fails without project context
    Given I have a temporary test directory
    When I call plan continue_command without an initialized project
    Then a CleverAgentsError should be raised with message "No project found. Run 'agents init' first."

  Scenario: Programmatic helper get_current_project aborts without initialized project
    Given I have a temporary test directory
    When I call the plan helper to fetch current project without initialization
    Then a typer Abort should be raised for missing project
