Terminal¶
The terminal module manages Docker containers and tmux sessions that provide the sandboxed execution environment for agents.
Terminal¶
Terminal
¶
Terminal(client_container_name, client_image_name, docker_compose_path, docker_image_name_prefix=None, sessions_logs_path=None, agent_logs_path=None, agent_model_name=None, commands_path=None, no_rebuild=False, cleanup=False, livestream=False, disable_recording=False, history_limit=None)
Source code in fceval/terminal/terminal.py
create_session
¶
create_session(session_name, is_active_stream=False, as_configured_user=True, recording_filename=None)
Create a new tmux session with the given name.
Source code in fceval/terminal/terminal.py
get_session
¶
Get an existing tmux session by name.
close_session
¶
Stop and remove a tmux session if it exists.
Source code in fceval/terminal/terminal.py
start
¶
stop
¶
copy_to_container
¶
Source code in fceval/terminal/terminal.py
save_container_image
¶
Save the current container as a gzipped docker image tarball.
spin_up_terminal
¶
spin_up_terminal(client_container_name, client_image_name, docker_compose_path, docker_image_name_prefix=None, sessions_logs_path=None, agent_logs_path=None, agent_model_name=None, commands_path=None, no_rebuild=False, cleanup=False, livestream=False, disable_recording=False)
Source code in fceval/terminal/terminal.py
Tmux Session¶
TmuxSession
¶
TmuxSession(session_name, container, commands_path=None, disable_recording=False, user='', recording_filename=None, history_limit=None)
Source code in fceval/terminal/tmux_session.py
start
¶
Source code in fceval/terminal/tmux_session.py
stop
¶
Source code in fceval/terminal/tmux_session.py
send_keys
¶
Execute a command in the tmux session.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
keys
|
str
|
The keys to send to the tmux session. |
required |
block
|
bool
|
Whether to wait for the command to complete. |
False
|
min_timeout_sec
|
float
|
Minimum time in seconds to wait after executing. Defaults to 0. |
0.0
|
max_timeout_sec
|
float
|
Maximum time in seconds to wait for blocking commands. Defaults to 3 minutes. |
180.0
|
Source code in fceval/terminal/tmux_session.py
send_command
¶
Source code in fceval/terminal/tmux_session.py
get_asciinema_timestamp
¶
Source code in fceval/terminal/tmux_session.py
copy_to_container
¶
Source code in fceval/terminal/tmux_session.py
Terminal Command¶
TerminalCommand
¶
Bases: BaseModel
from_yaml_list
classmethod
¶
Load a list of terminal commands from a YAML file.
Docker Compose Manager¶
DockerComposeManager
¶
DockerComposeManager(client_container_name, client_image_name, docker_compose_path, docker_image_name_prefix=None, no_rebuild=False, cleanup=False, sessions_logs_path=None, agent_logs_path=None, agent_model_name=None)
Source code in fceval/terminal/docker_compose_manager.py
CONTAINER_SESSION_LOGS_PATH
class-attribute
instance-attribute
¶
CONTAINER_AGENT_LOGS_PATH
class-attribute
instance-attribute
¶
get_docker_compose_command
¶
Source code in fceval/terminal/docker_compose_manager.py
start
¶
Source code in fceval/terminal/docker_compose_manager.py
stop
¶
Stop and remove the docker compose services.
Source code in fceval/terminal/docker_compose_manager.py
build
¶
save_container_image
¶
Commit the running container and save it as a gzipped image tarball.
Source code in fceval/terminal/docker_compose_manager.py
copy_to_container
staticmethod
¶
Copy files or directories to a running docker container.
Source code in fceval/terminal/docker_compose_manager.py
copy_to_client_container
¶
Copy files or directories to the client container.