Feature: CLI Plan and Context Commands - Complete Coverage
  As a developer
  I want to verify plan and context workflows work properly
  So that CleverAgents provides complete functionality
  
  Background:
    Given I have a clean test environment
    And I have set up the test configuration
  
  # Essential Commands (5)
  
  Scenario: Initialize a new CleverAgents project
    Given I am in an empty directory
    When I run "cleveragents init test-project"
    Then the command should succeed
    And a .cleveragents directory should be created
    And the database should be initialized in current directory
    And the project should be named "test-project"
  
  Scenario: Add files to context with context-load
    Given I have an initialized project
    And I have a file "test.py" with content "print('hello')"
    When I run "cleveragents context-load test.py"
    Then the command should succeed
    And the file should be added to context
    When I run "cleveragents context list"
    Then I should see "test.py" in the output
  
  Scenario: Create a plan with tell command
    Given I have an initialized project
    When I run 'cleveragents tell "Add error handling to the main function"'
    Then the command should succeed
    And a new plan should be created
    And the plan should contain the instruction "Add error handling to the main function"
  
  Scenario: Build a plan to generate changes
    Given I have an initialized project with a plan
    And the plan has an instruction "Add error handling"
    When I run "cleveragents build"
    Then the command should succeed
    And the plan should have generated changes
    And the changes should be stored in the database
 
  Scenario: Build command honors actor selection
    Given I have an initialized project with a plan
    And the plan has an instruction "Add error handling"
    When I run "cleveragents build --actor openai/gpt-cli-test"
    Then the command should succeed
 
  # Supporting Commands (9)
  
  Scenario: Create a new empty plan
    Given I have an initialized project
    When I run "cleveragents plan new feature-plan"
    Then the command should succeed
    And a plan named "feature-plan" should be created
    And "feature-plan" should be the current plan
  
  Scenario: Show the current plan name
    Given I have an initialized project
    And I have a plan named "main"
    And "main" is the current plan
    When I run "cleveragents plan current"
    Then the command should succeed
    And the output should contain "main"
  
  Scenario: Switch to a different plan
    Given I have an initialized project
    And I have plans named "main" and "feature-1"
    And "main" is the current plan
    When I run "cleveragents plan cd feature-1"
    Then the command should succeed
    And "feature-1" should be the current plan
  
  Scenario: Continue working on current plan
    Given I have an initialized project with a plan
    And the plan has previous conversation history
    When I run 'cleveragents plan continue "Also add logging"'
    Then the command should succeed
    And the plan should have the additional instruction
  
  Scenario: Show context files
    Given I have an initialized project
    And I have added files "main.py", "utils.py" to context
    When I run "cleveragents context list"
    Then the command should succeed
    And the output should contain "main.py"
    And the output should contain "utils.py"
  
  Scenario: Display full context content
    Given I have an initialized project
    And I have a file "test.py" with content "def hello(): pass"
    And I have added "test.py" to context
    When I run "cleveragents context show"
    Then the command should succeed
    And the output should contain "def hello(): pass"
  
  Scenario: Remove file from context
    Given I have an initialized project
    And I have added files "main.py", "utils.py" to context
    When I run "cleveragents actor context remove main.py"
    Then the command should succeed
    And "main.py" should not be in context
    And "utils.py" should still be in context
  
  Scenario: Clear all context files
    Given I have an initialized project
    And I have added files "main.py", "utils.py", "test.py" to context
    When I run "cleveragents context clear -y"
    Then the command should succeed
    And the context should be empty
  
  Scenario: Remove a file filter from a project
    Given I have an initialized project
    And I run "cleveragents project file-filter add --exclude '**/__pycache__'"
    When I run "cleveragents project file-filter remove --exclude '**/__pycache__'"
    Then the command should succeed
    And the output should not contain "__pycache__"

  # Error Handling Scenarios
  
  Scenario: Cannot initialize project in non-empty directory with existing project
    Given I have an initialized project
    When I run "cleveragents init another-project"
    Then the command should fail
    And the error message should mention "already initialized"
  
  Scenario: Cannot use commands without initialized project
    Given I am in an empty directory
    When I run "cleveragents plan tell 'test'"
    Then the command should fail
    And the error message should mention "no project found"
  
  Scenario: Cannot switch to non-existent plan
    Given I have an initialized project
    When I run "cleveragents plan cd non-existent"
    Then the command should fail
    And the error message should mention "plan not found"
  
  Scenario: Cannot remove non-existent context file
    Given I have an initialized project
    When I run "cleveragents actor context remove non-existent.py"
    Then the command should fail
    And the error message should mention "not in context"
  
  # Command Aliases and Shortcuts
  
  Scenario: Context-load is an alias for context add
    Given I have an initialized project
    And I have a file "test.py"
    When I run "cleveragents context-load test.py"
    Then the command should succeed
    When I run "cleveragents context-add test.py"
    Then the command should succeed
    And the output should mention "already in context"
  
  Scenario: Top-level shortcuts work
    Given I have an initialized project
    When I run 'cleveragents tell "test instruction"'
    Then the command should succeed
    And it should be equivalent to "cleveragents plan tell"
    When I run "cleveragents build"
    Then the command should succeed
    And it should be equivalent to "cleveragents plan build"
    When I run "cleveragents apply --help"
    Then the command should succeed