Files
temp/robot/actor_context_management.robot
freemo 48cff5cfe0 refactor(cli): rename plan lifecycle-list and lifecycle-apply to match specification
Renames `plan lifecycle-list` to `plan list` and `plan lifecycle-apply` to `plan apply` to align with the specification's canonical command names. Removes legacy V2 plan commands that occupied those names.

- Renamed CLI command registrations from lifecycle-list/lifecycle-apply to list/apply
- Removed legacy V2 apply and list commands (~200 lines)
- Updated apply shortcut in main.py to delegate to v3 lifecycle
- Added defensive null check for plan existence in apply command
- Updated 63+ test, doc, and benchmark files for consistency

Closes #881

Co-authored-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
Co-committed-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
2026-04-02 19:09:04 +00:00

195 lines
8.3 KiB
Plaintext

*** Settings ***
Documentation Actor-first context management tests for CleverAgents CLI
Library Process
Library OperatingSystem
Library String
Library DateTime
Resource ${CURDIR}/common.resource
Suite Setup Setup Test Environment
Suite Teardown Cleanup Test Environment
*** Variables ***
${TEST_PROJECT_DIR} ${TEMPDIR}/test_project_${EMPTY}
${UNIQUE_ID} ${EMPTY}
*** Test Cases ***
Test Context Commands With Actor
[Documentation] Verify context commands work with actor-first approach
# Initialize project first
Create Directory ${TEST_PROJECT_DIR}
${result} = Run Process ${PYTHON} -m cleveragents init test-project
... cwd=${TEST_PROJECT_DIR}
Log Init stdout: ${result.stdout}
Log Init stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
# Create test files
Create Directory ${TEST_PROJECT_DIR}/src
Create File ${TEST_PROJECT_DIR}/src/main.py print("Hello World")
# Load context with actor (simulating with environment variable)
Set Environment Variable CLEVERAGENTS_TESTING_USE_MOCK_AI true
Set Environment Variable CLEVERAGENTS_DEFAULT_ACTOR openai/gpt-4
${result} = Run Process ${PYTHON} -m cleveragents context-load src/
... cwd=${TEST_PROJECT_DIR}
Should Be Equal As Integers ${result.rc} 0
# List contexts
${result} = Run Process ${PYTHON} -m cleveragents context list
... cwd=${TEST_PROJECT_DIR}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} main.py
Test Plan Creation With Actor
[Documentation] Test plan creation using actor instead of provider/model
# Initialize project
Create Directory ${TEST_PROJECT_DIR}_plan
${result} = Run Process ${PYTHON} -m cleveragents init test-plan-project
... cwd=${TEST_PROJECT_DIR}_plan
Should Be Equal As Integers ${result.rc} 0
# Create plan with actor
Set Environment Variable CLEVERAGENTS_TESTING_USE_MOCK_AI true
Set Environment Variable CLEVERAGENTS_DEFAULT_ACTOR anthropic/claude-3
${result} = Run Process ${PYTHON} -m cleveragents tell Create a hello world function
... cwd=${TEST_PROJECT_DIR}_plan env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true
Log Tell stdout: ${result.stdout}
Log Tell stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} Plan
Test Actor-Based Workflow
[Documentation] Test complete workflow with actor configuration
# Initialize
${project_dir} = Set Variable ${TEST_PROJECT_DIR}_workflow
Create Directory ${project_dir}
${result} = Run Process ${PYTHON} -m cleveragents init workflow-project
... cwd=${project_dir}
Should Be Equal As Integers ${result.rc} 0
# Set up actor environment
Set Environment Variable CLEVERAGENTS_TESTING_USE_MOCK_AI true
Set Environment Variable CLEVERAGENTS_DEFAULT_ACTOR openai/gpt-4
# Add context
Create File ${project_dir}/test.py def hello():\n${SPACE*4}pass
${result} = Run Process ${PYTHON} -m cleveragents context-load test.py
... cwd=${project_dir}
Should Be Equal As Integers ${result.rc} 0
# Create plan
${result} = Run Process ${PYTHON} -m cleveragents tell Add docstring to hello function
... cwd=${project_dir} env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true
Should Be Equal As Integers ${result.rc} 0
# Build plan
${result} = Run Process ${PYTHON} -m cleveragents build
# Normal duration: ~10-15s. Timeout raised from 30s to 120s for pabot
# cold-start (16 parallel processes) + Alembic migration overhead.
... cwd=${project_dir} env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true timeout=120s on_timeout=kill
Should Be Equal As Integers ${result.rc} 0
# NOTE: Legacy 'apply' was removed. Verify v3 apply --help instead.
${result} = Run Process ${PYTHON} -m cleveragents apply --help
... cwd=${project_dir}
Should Be Equal As Integers ${result.rc} 0
Test Multiple Actors In Project
[Documentation] Test switching between actors in a project
${project_dir} = Set Variable ${TEST_PROJECT_DIR}_multi_actor
# Initialize
Create Directory ${project_dir}
${result} = Run Process ${PYTHON} -m cleveragents init multi-actor-project
... cwd=${project_dir}
Should Be Equal As Integers ${result.rc} 0
Set Environment Variable CLEVERAGENTS_TESTING_USE_MOCK_AI true
# Create plan with first actor
Set Environment Variable CLEVERAGENTS_DEFAULT_ACTOR openai/gpt-3.5-turbo
${result} = Run Process ${PYTHON} -m cleveragents tell Create function A --name plan1
... cwd=${project_dir} env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true
Should Be Equal As Integers ${result.rc} 0
# Create plan with second actor
Set Environment Variable CLEVERAGENTS_DEFAULT_ACTOR anthropic/claude-3
${result} = Run Process ${PYTHON} -m cleveragents tell Create function B --name plan2
... cwd=${project_dir} env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true
Should Be Equal As Integers ${result.rc} 0
# Verify plans were created (legacy plan commands are deprecated;
# the v3 'plan list' command lists lifecycle plans only)
Log Legacy plan creation verified via 'tell' commands above
Test Context Clear Command
[Documentation] Test clearing all contexts
${project_dir} = Set Variable ${TEST_PROJECT_DIR}_clear
# Initialize and add contexts
Create Directory ${project_dir}
${result} = Run Process ${PYTHON} -m cleveragents init clear-project
... cwd=${project_dir}
Should Be Equal As Integers ${result.rc} 0
Set Environment Variable CLEVERAGENTS_TESTING_USE_MOCK_AI true
# Create a plan first
${result} = Run Process ${PYTHON} -m cleveragents tell Test clearing contexts
... cwd=${project_dir} env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true
Should Be Equal As Integers ${result.rc} 0
Create File ${project_dir}/file1.py # test file 1
Create File ${project_dir}/file2.py # test file 2
${result} = Run Process ${PYTHON} -m cleveragents context-load file1.py file2.py
... cwd=${project_dir} env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true
Should Be Equal As Integers ${result.rc} 0
# Clear contexts
${result} = Run Process ${PYTHON} -m cleveragents context clear --yes
... cwd=${project_dir} env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true
Log Clear stdout: ${result.stdout}
Log Clear stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
# Verify contexts are cleared
${result} = Run Process ${PYTHON} -m cleveragents context list
... cwd=${project_dir}
Should Be Equal As Integers ${result.rc} 0
Should Not Contain ${result.stdout} file1.py
Should Not Contain ${result.stdout} file2.py
*** Keywords ***
Setup Test Environment
[Documentation] Create test environment
# First run the common setup
common.Setup Test Environment
${timestamp} = Get Current Date result_format=%Y%m%d%H%M%S
${random} = Generate Random String 6 [NUMBERS]
Set Suite Variable ${UNIQUE_ID} ${timestamp}_${random}
# Create temp directory
${temp} = Evaluate tempfile.mkdtemp() modules=tempfile
Set Suite Variable ${TEMP} ${temp}
Create Directory ${TEMP}
# Update TEST_PROJECT_DIR with unique ID
Set Suite Variable ${TEST_PROJECT_DIR} ${TEMP}/test_project_${UNIQUE_ID}
Log Test environment created with ID: ${UNIQUE_ID}
Cleanup Test Environment
[Documentation] Clean up test environment
Run Keyword If '${TEMP}' != '${EMPTY}' Remove Directory ${TEMP} recursive=True
Remove Environment Variable CLEVERAGENTS_TESTING_USE_MOCK_AI
Remove Environment Variable CLEVERAGENTS_DEFAULT_ACTOR