*** Settings ***
Documentation    REPL command smoke tests for CleverAgents
Resource         ${CURDIR}/common.resource
Library          Process
Library          OperatingSystem
Library          String
Library          Collections
Library          ${CURDIR}/helper_repl_smoke.py
Suite Setup      Setup Test Environment
Suite Teardown   Cleanup Test Environment

*** Variables ***
${PYTHON}         python

*** Test Cases ***
REPL Help Flag Displays Usage
    [Documentation]    ``agents repl --help`` shows the REPL help text
    ${result}=    Run Process    ${PYTHON}    -m    cleveragents    repl    --help    timeout=120s    on_timeout=kill
    Should Be Equal As Integers    ${result.rc}    0
    Should Contain    ${result.stdout}    interactive REPL session

REPL Module Is Importable
    [Documentation]    The repl module can be imported without errors
    ${result}=    Run Process    ${PYTHON}    -c    from cleveragents.cli.commands.repl import run_repl, dispatch_command    timeout=120s    on_timeout=kill
    Should Be Equal As Integers    ${result.rc}    0

REPL Prompt Context Without Env Vars
    [Documentation]    Default prompt context is ``agents> ``
    ${prompt}=    Get Default Prompt
    Should Be Equal    ${prompt}    agents>${{' '}}

REPL Prompt Context With Project
    [Documentation]    Prompt contains the project name from env var
    ${prompt}=    Get Prompt With Project    myproj
    Should Contain    ${prompt}    myproj

REPL Prompt Context With Project And Plan
    [Documentation]    Prompt contains project/plan from env vars
    ${prompt}=    Get Prompt With Project And Plan    myproj    myplan
    Should Contain    ${prompt}    myproj
    Should Contain    ${prompt}    myplan

REPL Dispatch Version Command
    [Documentation]    dispatch_command(["--version"]) returns 0
    ${rc}=    Dispatch Argv    --version
    Should Be Equal As Integers    ${rc}    0

REPL Run With Immediate EOF Exits Cleanly
    [Documentation]    REPL with no input (immediate EOF) exits with code 0
    ${rc}=    Run Repl With Eof
    Should Be Equal As Integers    ${rc}    0

REPL Help Builtin Shows Commands
    [Documentation]    ``:help`` built-in prints available commands
    ${output}=    Run Repl With Help
    Should Contain    ${output}    Built-in commands
    Should Contain    ${output}    :exit

REPL No Previous Command Warning
    [Documentation]    ``!!`` with no prior command shows a warning
    ${output}=    Run Repl With Bang Bang
    Should Contain    ${output}    No previous command

REPL Completer Is Installed
    [Documentation]    Tab completer recognises known REPL commands
    ${ok}=    Verify Completer
    Should Be True    ${ok}
