*** Settings ***
Documentation     Test !next command with fresh context (writing_stage: null)
Library           Process
Library           OperatingSystem
Library           String
Resource    ${CURDIR}/v2_paths.resource
Suite Setup       Setup Test Environment
Suite Teardown    Cleanup Test Environment

*** Variables ***
${PYTHON}              python
${CONFIG_FILE}        ${CURDIR}/../examples/scientific_paper_writer.yaml
${CONTEXT_DIR}        ${TEMPDIR}/initial_next_test_contexts
${TEST_ID}           ${EMPTY}


*** Test Cases ***
Test Next Command With Null Writing Stage
    [Documentation]    Test that !next works when writing_stage is null (fresh context)
    [Tags]    integration    bugfix    commands    slow
    [Timeout]    1 minute

    ${ctx}=    Set Variable    initial_next_${TEST_ID}

    # Run !next as the very first command with a fresh context
    # This should advance from null (default intro) to discovery stage
    Log    Running !next command with fresh context...
    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    actor    run
    ...    -c    ${CONFIG_FILE}
    ...    --context    ${ctx}
    ...    --context-dir    ${CONTEXT_DIR}
    ...    --unsafe
    ...    --allow-rxpy-in-run-mode
    ...    test-actor    !next discovery
    ...    stderr=STDOUT
    ...    timeout=120s    on_timeout=kill

    # Should not produce an error
    Should Not Contain    ${result.stdout}    Error: Current stage 'None' is invalid
    Should Be Equal As Integers    ${result.rc}    0

    # Verify stage was updated in the context by checking !stage command
    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    actor    run
    ...    -c    ${CONFIG_FILE}
    ...    --context    ${ctx}
    ...    --context-dir    ${CONTEXT_DIR}
    ...    --unsafe
    ...    --allow-rxpy-in-run-mode
    ...    test-actor    !stage
    ...    stderr=STDOUT
    ...    timeout=120s    on_timeout=kill

    Should Contain    ${result.stdout}    discovery

    Log    Test completed successfully

*** Keywords ***
Setup Test Environment
    ${timestamp}=    Get Time    epoch
    Set Suite Variable    ${TEST_ID}    ${timestamp}
    Create Directory    ${CONTEXT_DIR}
    Log    Test environment setup complete with ID: ${TEST_ID}

Cleanup Test Environment
    Run Keyword And Ignore Error    Remove Directory    ${CONTEXT_DIR}    recursive=True
    Log    Test environment cleaned up

Should Contain Any
    [Arguments]    ${text}    @{patterns}
    [Documentation]    Check if text contains at least one of the patterns
    FOR    ${pattern}    IN    @{patterns}
        ${status}=    Run Keyword And Return Status    Should Contain    ${text}    ${pattern}    ignore_case=True
        IF    ${status}    RETURN
    END
    Fail    Text does not contain any of: @{patterns}
