From b677f2eedd5b45cf2966c3d6e7cb4ad5b20a3bc8 Mon Sep 17 00:00:00 2001 From: Brooklyn Nicholson Date: Mon, 27 Apr 2026 20:08:19 -0500 Subject: [PATCH] fix(docker): dedupe React in vendored Ink package --- Dockerfile | 3 ++- tests/tools/test_dockerfile_pid1_reaping.py | 9 +++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index ad45a8fd2d1..d988ea6407a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ ENV PLAYWRIGHT_BROWSERS_PATH=/opt/hermes/.playwright # that would otherwise accumulate when hermes runs as PID 1. See #15012. RUN apt-get update && \ apt-get install -y --no-install-recommends \ - build-essential nodejs npm python3 ripgrep ffmpeg gcc python3-dev libffi-dev procps git openssh-client docker-cli tini && \ + build-essential nodejs npm python3 ripgrep ffmpeg gcc python3-dev libffi-dev procps git openssh-client docker-cli tini && \ rm -rf /var/lib/apt/lists/* # Non-root user for runtime; UID can be overridden via HERMES_UID at runtime @@ -50,6 +50,7 @@ RUN cd web && npm run build && \ rm -rf packages/hermes-ink/node_modules && \ cp -R packages/hermes-ink node_modules/@hermes/ink && \ npm install --omit=dev --prefer-offline --no-audit --prefix node_modules/@hermes/ink && \ + rm -rf node_modules/@hermes/ink/node_modules/react && \ node --input-type=module -e "await import('@hermes/ink')" # ---------- Permissions ---------- diff --git a/tests/tools/test_dockerfile_pid1_reaping.py b/tests/tools/test_dockerfile_pid1_reaping.py index 5dd0ffdf697..52532a78dd2 100644 --- a/tests/tools/test_dockerfile_pid1_reaping.py +++ b/tests/tools/test_dockerfile_pid1_reaping.py @@ -109,18 +109,14 @@ def test_dockerfile_installs_tui_dependencies(dockerfile_text): assert "ui-tui/package.json" in dockerfile_text assert "ui-tui/packages/hermes-ink/package-lock.json" in dockerfile_text assert any( - "ui-tui" in step - and "npm" in step - and (" install" in step or " ci" in step) + "ui-tui" in step and "npm" in step and (" install" in step or " ci" in step) for step in _run_steps(dockerfile_text) ) def test_dockerfile_builds_tui_assets(dockerfile_text): assert any( - "ui-tui" in step - and "npm" in step - and "run build" in step + "ui-tui" in step and "npm" in step and "run build" in step for step in _run_steps(dockerfile_text) ) @@ -133,6 +129,7 @@ def test_dockerfile_materializes_local_tui_ink_package(dockerfile_text): and "rm -rf packages/hermes-ink/node_modules" in step and "npm install --omit=dev" in step and "--prefix node_modules/@hermes/ink" in step + and "rm -rf node_modules/@hermes/ink/node_modules/react" in step and "await import('@hermes/ink')" in step for step in _run_steps(dockerfile_text) )