# Minimal, disposable environment for the tests that cannot safely or
# meaningfully run against a real machine: anything that installs the
# plexer hook into a real ~/.bashrc, or needs a real tmux session to test
# TmuxPlexerController against. Built fresh per run (see tests/container.py);
# nothing here is meant to persist, which is the entire point -- these tests
# get to do things no test should ever do to the machine actually running
# Claude Code.
FROM python:3.11-slim

# bash: the thing being wrapped. tmux: TmuxPlexerController's real backend.
# procps: `ps`, used by tests/plexer.py and tests/bashrc.py to prove a
# process is actually gone, not just assumed gone. git: sysinfo/create_skill
# paths touch it; harmless to have for a "simulate everything" image.
RUN apt-get update \
    && apt-get install -y --no-install-recommends bash tmux procps git ca-certificates \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY . /app

# Safety marker, not a feature flag: tests/bashrc.py refuses to install a
# real hook into $HOME/.bashrc unless this is set, so a copy-paste of this
# test file running directly on a developer's machine fails loud instead of
# quietly rewriting their actual shell startup.
ENV TAI_CONTAINER_TEST=1

# No ENTRYPOINT/CMD here on purpose -- tests/container.py always passes an
# explicit command (python3 tests/container.py --inside ...), so this image
# has one job and docker-compose.yml's `command:` is the single source of
# truth for what that job is, not two places that can drift apart.
