Feature: Core CLI Commands for Project, Context and Plan Management
  As a developer
  I want to use CleverAgents core CLI commands
  So that I can manage projects, context, and plans through the command line

  Background:
    Given I have a minimal test environment

  Scenario: CLI shows help with all command groups
    When I run "cleveragents --help"
    Then the exit code should be 0
    And the output should contain "AI-powered development assistant"
    And the output should contain "project"
    And the output should contain "context"
    And the output should contain "plan"
    And the output should contain "init"
    And the output should contain "tell"
    And the output should contain "build"
    And the output should contain "apply"

  Scenario: Initialize a new project
    Given I am in a temporary directory
    When I run "cleveragents init test-project"
    Then the exit code should be 0
    And the output should contain "Project 'test-project' initialized successfully"
    And the directory ".cleveragents" should exist
    And the test file ".cleveragents/db.sqlite" should exist
    And the test file ".cleveragents/config.yaml" should exist
    And the test file ".cleveragents/current" should exist
    And the file ".cleveragents/current" should contain "main"

  Scenario: Cannot initialize project twice without force
    Given I am in a temporary directory
    And I have initialized a project "test-project"
    When I run "cleveragents init another-project"
    Then the exit code should be 1
    And the output should contain "Project already initialized"
    And the output should contain "--force"

  Scenario: Force reinitialize a project
    Given I am in a temporary directory
    And I have initialized a project "test-project"
    When I run "cleveragents init another-project --force"
    Then the exit code should be 0
    And the output should contain "Project 'another-project' initialized successfully"

  Scenario: Project status command works
    Given I am in a temporary directory
    And I have initialized a project "test-project"
    When I run "cleveragents project status"
    Then the exit code should be 0
    And the output should contain "Project: test-project"
    And the output should contain "Plans: 1"
    And the output should contain "Context Files: 0"

  Scenario: Project status fails without project
    Given I am in a temporary directory
    When I run "cleveragents project status"
    Then the exit code should be 1
    And the output should contain "No project found"

  Scenario: Context add command works with files
    Given I am in a temporary directory
    And I have initialized a project "test-project"
    And I have created a plan with "Test plan"
    And I have created a file "test.py" with content "print('hello')"
    When I run "cleveragents context add test.py"
    Then the exit code should be 0
    And the output should contain "Added 1 file(s) to context"
    And the output should contain "test.py"

  Scenario: Context list shows added files
    Given I am in a temporary directory
    And I have initialized a project "test-project"
    And I have created a plan with "Test plan"
    And I have created a file "test.py" with content "print('hello')"
    And I have added path "test.py" to context
    When I run "cleveragents context list"
    Then the exit code should be 0
    And the output should contain "test.py"
    And the output should contain "bytes"

  Scenario: Context clear removes all files
    Given I am in a temporary directory
    And I have initialized a project "test-project"
    And I have created a plan with "Test plan"
    And I have created a file "test.py" with content "print('hello')"
    And I have added path "test.py" to context
    When I run "cleveragents context clear --yes"
    Then the exit code should be 0
    And the output should contain "Cleared all files from context"

  Scenario: Plan tell creates a new plan
    Given I am in a temporary directory
    And I have initialized a project "test-project"
    When I run "cleveragents tell 'Add error handling to the main function'"
    Then the exit code should be 0
    And the output should contain "Plan created"
    And the output should contain "Add error handling"

  Scenario: Plan build generates changes
    Given I am in a temporary directory
    And I have initialized a project "test-project"
    And I have created a plan with "Add error handling"
    When I run "cleveragents build"
    Then the exit code should be 0
    And the output should contain "Plan built successfully"
    And the output should contain "Generated"
    And the output should contain "change(s)"

  Scenario: Plan current shows active plan
    Given I am in a temporary directory
    And I have initialized a project "test-project"
    And I have created a plan with "Test plan"
    When I run "cleveragents plan current"
    Then the exit code should be 0
    And the output should contain "Current Plan"
    And the output should contain "Test plan"

  Scenario: Shortcuts work for common commands
    Given I am in a temporary directory
    And I have initialized a project "test-project"
    And I have created a plan with "Test plan"
    And I have created a file "test.py" with content "print('hello')"
    When I run "cleveragents context-load test.py"
    Then the exit code should be 0
    And the output should contain "Added 1 file(s) to context"