Feature: Automation Profile CLI commands
  As a developer
  I want to manage automation profiles via CLI commands
  So that I can control plan execution autonomy levels

  Background:
    Given an automation profile CLI runner with mocks

  # Add command tests
  Scenario: Add profile via config file
    Given a valid automation profile config YAML file
    When I run automation-profile add with --config pointing to the YAML file
    Then the automation-profile add should succeed
    And the automation-profile output should contain "acme/strict"

  @tdd_issue @tdd_issue_6345
  Scenario: Add profile JSON output uses flat schema
    Given a valid automation profile config YAML file
    When I run automation-profile add with --config pointing to the YAML file and --format json
    Then the automation-profile add should succeed
    And the automation-profile add json output matches the flat schema

  @tdd_issue @tdd_issue_6345
  Scenario: Add profile YAML output uses flat schema
    Given a valid automation profile config YAML file
    When I run automation-profile add with --config pointing to the YAML file and --format yaml
    Then the automation-profile add should succeed
    And the automation-profile add yaml output matches the flat schema

  @tdd_issue @tdd_issue_6345
  Scenario: Add profile plain output includes created timestamp
    Given a valid automation profile config YAML file
    When I run automation-profile add with --config pointing to the YAML file and --format plain
    Then the automation-profile add should succeed
    And the automation-profile output should contain "Profile Registered"
    And the automation-profile output should contain "Created:"
    And the automation-profile output should contain "require_checkpoints: true"

  Scenario: Add profile with --update for existing custom profile
    Given a valid automation profile config YAML file
    And the custom profile "acme/strict" already exists
    When I run automation-profile add with --config and --update
    Then the automation-profile add should succeed
    And the automation-profile output should contain "Updated"

  Scenario: Add profile with --update when profile does not exist warns and creates
    Given a valid automation profile config YAML file
    When I run automation-profile add with --config and --update
    Then the automation-profile add should succeed
    And the automation-profile output should contain "Warning"
    And the automation-profile output should contain "Profile Added"

  Scenario: Add profile conflict without --update
    Given a valid automation profile config YAML file
    And the custom profile "acme/strict" already exists
    When I run automation-profile add with --config without --update
    Then the automation-profile command should abort
    And the automation-profile output should contain "Conflict"

  Scenario: Add profile with missing config file fails
    When I run automation-profile add with --config pointing to a missing file
    Then the automation-profile command should abort

  Scenario: Add profile with invalid YAML fails
    Given an invalid YAML automation profile config file
    When I run automation-profile add with --config pointing to the invalid YAML file
    Then the automation-profile command should abort

  Scenario: Add profile with invalid name fails
    Given an automation profile config YAML file with invalid name
    When I run automation-profile add with --config pointing to the invalid name YAML file
    Then the automation-profile command should abort

  Scenario: Add profile with invalid threshold fails
    Given an automation profile config YAML file with invalid threshold
    When I run automation-profile add with --config pointing to the invalid threshold YAML file
    Then the automation-profile command should abort

  Scenario: Add profile with legacy threshold keys fails
    Given an automation profile config YAML file with legacy threshold keys
    When I run automation-profile add with --config pointing to the legacy threshold YAML file
    Then the automation-profile command should abort
    And the automation-profile output should contain "auto_strategize"

  Scenario: Add profile cannot overwrite built-in
    Given an automation profile config YAML file with built-in name "manual"
    When I run automation-profile add with --config pointing to the built-in name YAML file
    Then the automation-profile command should abort
    And the automation-profile output should contain "built-in"

  Scenario: Add profile with unsupported schema version
    Given an automation profile config YAML file with schema_version "2.0"
    When I run automation-profile add with --config pointing to the unsupported schema YAML file
    Then the automation-profile command should abort
    And the automation-profile output should contain "schema_version"

  # List command tests
  Scenario: List profiles shows built-in profiles
    When I run automation-profile list
    Then the automation-profile list should succeed
    And the automation-profile output should contain "manual"
    And the automation-profile output should contain "auto"

  Scenario: List profiles with namespace filter
    Given a custom profile "acme/strict" has been added
    When I run automation-profile list with namespace filter "acme"
    Then the automation-profile list should succeed
    And the automation-profile output should contain "acme/strict"

  Scenario: List profiles with regex filter
    When I run automation-profile list with regex "caut.*"
    Then the automation-profile list should succeed
    And the automation-profile output should contain "cautious"

  Scenario: List profiles with invalid regex
    When I run automation-profile list with regex "[invalid"
    Then the automation-profile command should abort

  Scenario: List profiles with --format json output snapshot
    When I run automation-profile list with --format json
    Then the automation-profile list should succeed
    And the automation-profile json output should contain "profiles"
    And the automation-profile json output should contain "summary"
    And the automation-profile json output should contain "built_in"
    And the automation-profile json output should contain "select_tool"

  @tdd_issue @tdd_issue_4235 @tdd_expected_fail
  Scenario: List profiles JSON output has spec-required profiles wrapper with summary
    When I run automation-profile list with --format json
    Then the automation-profile list should succeed
    And the automation-profile list json output has profiles wrapper with summary

  Scenario: List profiles YAML output has spec-required profiles wrapper
    When I run automation-profile list with --format yaml
    Then the automation-profile list should succeed
    And the automation-profile yaml output should contain "profiles:"
    And the automation-profile yaml output should contain "summary:"
    And the automation-profile yaml output should contain "built_in:"
    And the automation-profile yaml output should contain "select_tool:"

  Scenario: List profiles rich output has Auto-Apply column header
    When I run automation-profile list
    Then the automation-profile list should succeed
    And the automation-profile output should contain "Auto-Ap"

  Scenario: List profiles rich output has Summary panel
    When I run automation-profile list
    Then the automation-profile list should succeed
    And the automation-profile output should contain "Summary"
    And the automation-profile output should contain "Built-in:"

  Scenario: List profiles with no matches
    When I run automation-profile list with namespace filter "nonexistent"
    Then the automation-profile output should contain "No profiles found"

  # Show command tests
  Scenario: Show built-in profile details
    When I run automation-profile show "manual"
    Then the automation-profile show should succeed
    And the automation-profile output should contain "manual"
    And the automation-profile output should contain "1.0"

  Scenario: Show profile not found
    When I run automation-profile show "nonexistent/profile"
    Then the automation-profile command should abort
    And the automation-profile output should contain "not found"

  Scenario: Show profile with --format yaml output snapshot
    When I run automation-profile show "manual" with --format yaml
    Then the automation-profile show should succeed
    And the automation-profile yaml output should contain "name: manual"
    And the automation-profile yaml output should contain "decompose_task"

  Scenario: Show profile with --format json
    When I run automation-profile show "manual" with --format json
    Then the automation-profile show should succeed
    And the automation-profile json output should contain "name"

  Scenario: Show profile with --format plain
    When I run automation-profile show "manual" with --format plain
    Then the automation-profile show should succeed
    And the automation-profile output should contain "name: manual"

  Scenario: Show profile with --format table
    When I run automation-profile show "manual" with --format table
    Then the automation-profile show should succeed

  # Remove command tests
  Scenario: Remove custom profile with confirmation
    Given a custom profile "acme/strict" has been added
    When I run automation-profile remove "acme/strict" with --yes
    Then the automation-profile remove should succeed
    And the automation-profile output should contain "Profile Removed"
    And the automation-profile output should contain "Name:"
    And the automation-profile output should contain "OK"

  Scenario: Remove custom profile shows Profile Removed panel
    Given a custom profile "acme/panel-test" has been added
    When I run automation-profile remove "acme/panel-test" with --yes
    Then the automation-profile remove should succeed
    And the automation-profile output should contain "Profile Removed"
    And the automation-profile output should contain "acme/panel-test"
    And the automation-profile output should contain "OK"

  Scenario: Remove built-in profile fails
    When I run automation-profile remove "manual" with --yes
    Then the automation-profile command should abort
    And the automation-profile output should contain "built-in"

  Scenario: Remove nonexistent profile fails
    When I run automation-profile remove "nonexistent/profile" with --yes
    Then the automation-profile command should abort
    And the automation-profile output should contain "not found"

  Scenario: Remove profile with --format json
    Given a custom profile "acme/toremove" has been added
    When I run automation-profile remove "acme/toremove" with --yes and --format json
    Then the automation-profile remove should succeed
    And the automation-profile json output should contain "removed"

  # Legacy flag removal tests
  Scenario: Legacy --automation-level flag is rejected on plan use
    When I invoke plan use with --automation-level "manual"
    Then the plan output should contain "--automation-level"
