Feature: Plan CLI streaming and helper function coverage As a developer I want to test uncovered paths in plan.py So that _print_lifecycle_plan, _get_current_project, and programmatic wrappers reach full coverage Scenario: _print_lifecycle_plan with non-lifecycle plan falls back Given I have a temporary test directory When I call print_lifecycle_plan with a non-lifecycle plan object Then the fallback display path should be used for non-lifecycle plan Scenario: _print_lifecycle_plan with error_message shows error Given I have a temporary test directory When I call print_lifecycle_plan with a lifecycle plan that has an error_message Then the lifecycle plan error_message should appear in the output Scenario: _print_lifecycle_plan with long description truncates Given I have a temporary test directory When I call print_lifecycle_plan with a description longer than 200 characters Then the lifecycle plan description should be truncated with ellipsis Scenario: _print_lifecycle_plan with empty project_names Given I have a temporary test directory When I call print_lifecycle_plan with a lifecycle plan with no project links Then the lifecycle plan output should show projects as none Scenario: _get_current_project returns project successfully Given I have a temporary test directory When I call the get_current_project helper with a valid project Then the get_current_project helper should return the mock project Scenario: _get_current_project with no project aborts Given I have a temporary test directory When I call the get_current_project helper with no project available Then the get_current_project helper should raise typer Abort Scenario: tell_command programmatic wrapper calls services Given I have a temporary test directory When I invoke the plan tell_command programmatic wrapper with valid project and prompt Then the plan tell_command programmatic wrapper should call create_plan Scenario: tell_command programmatic wrapper with no project raises Given I have a temporary test directory When I invoke the plan tell_command programmatic wrapper with no project Then the plan tell_command programmatic wrapper should raise CleverAgentsError Scenario: build_command programmatic wrapper returns changes Given I have a temporary test directory When I invoke the plan build_command programmatic wrapper with valid project Then the plan build_command programmatic wrapper should return the changes list Scenario: build_command programmatic wrapper with no project raises Given I have a temporary test directory When I invoke the plan build_command programmatic wrapper with no project Then the plan build_command programmatic wrapper should raise CleverAgentsError Scenario: apply_command programmatic wrapper applies changes Given I have a temporary test directory When I invoke the plan apply_command programmatic wrapper with valid project Then the plan apply_command programmatic wrapper should return applied count Scenario: new_command programmatic wrapper creates plan Given I have a temporary test directory When I invoke the plan new_command programmatic wrapper with valid project Then the plan new_command programmatic wrapper should call new_plan Scenario: current_command programmatic wrapper returns plan Given I have a temporary test directory When I invoke the plan current_command programmatic wrapper with valid project Then the plan current_command programmatic wrapper should return the plan Scenario: list_command programmatic wrapper returns plans Given I have a temporary test directory When I invoke the plan list_command programmatic wrapper with valid project Then the plan list_command programmatic wrapper should return the plans list Scenario: cd_command programmatic wrapper switches plan Given I have a temporary test directory When I invoke the plan cd_command programmatic wrapper with valid project Then the plan cd_command programmatic wrapper should call switch_to_plan Scenario: continue_command programmatic wrapper with prompt Given I have a temporary test directory When I invoke the plan continue_command programmatic wrapper with prompt and valid project Then the plan continue_command programmatic wrapper should call continue_plan Scenario: continue_command programmatic wrapper without prompt and no plan Given I have a temporary test directory When I invoke the plan continue_command programmatic wrapper without prompt and no current plan Then the plan continue_command programmatic wrapper should raise CleverAgentsError for no plan