@deployfoundation/foundation-deploy 0.2.10 → 0.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,6 +16,10 @@
16
16
  # packages/agent/package.json, and the frozen lockfile pins the version itself)
17
17
  # - Python 3.10+ for the omp `eval` tool (the bun base is trixie: 3.13)
18
18
  # - gh 2.97.0, built from source with Go (see the gh-build stage)
19
+ # - open-slide toolchain for the `slides` skill: @open-slide/core 2.0.1 and
20
+ # playwright-core 1.63.0 (exact pins + frozen lockfile in
21
+ # packages/infra/agent-image/open-slide/), whose Chrome Headless Shell
22
+ # build is pinned by the playwright-core version
19
23
  #
20
24
  # Secrets bootstrap: the container receives ONE pointer env var,
21
25
  # RUNTIME_SECRET_ID. At start, server.ts fetches that JSON secret from Secrets
@@ -102,6 +106,25 @@ RUN export DEBIAN_FRONTEND=noninteractive \
102
106
  && /tmp/aws/install --install-dir /opt/aws-cli --bin-dir /opt/aws-cli/bin \
103
107
  && rm -rf /tmp/aws /tmp/awscliv2.zip /var/lib/apt/lists/*
104
108
 
109
+ # --- open-slide toolchain (skills/slides) -----------------------------------
110
+ # Slide decks are React pages built and exported by open-slide. Its PDF/PPTX
111
+ # export runs in a browser, so `export_deck` drives it in Chrome Headless
112
+ # Shell. Everything is installed HERE, once, so a deck never npm-installs per
113
+ # turn: the deck is copied into a throwaway workspace whose node_modules is a
114
+ # symlink to /opt/open-slide/node_modules. The headless shell is the build
115
+ # playwright-core 1.63.0 names (downloaded from Playwright's CDN), so the
116
+ # browser moves only when that pin does. Own stage: bun's install cache and
117
+ # the download zip never reach the runtime layer.
118
+ FROM ${BUN_IMAGE} AS open-slide-build
119
+ ENV PLAYWRIGHT_BROWSERS_PATH=/opt/open-slide/browsers
120
+ WORKDIR /opt/open-slide
121
+ COPY packages/infra/agent-image/open-slide/package.json \
122
+ packages/infra/agent-image/open-slide/bun.lock ./
123
+ RUN bun install --frozen-lockfile --production \
124
+ && bun node_modules/playwright-core/cli.js install chromium-headless-shell \
125
+ && rm -rf /root/.bun/install/cache
126
+ COPY skills/slides/export_deck.mjs skills/slides/starter.tsx ./
127
+
105
128
  # Resolve whichever of the two GH_IMAGE names. `COPY --from=gh-provider`
106
129
  # below is what makes the choice load-bearing.
107
130
  FROM ${GH_IMAGE} AS gh-provider
@@ -153,6 +176,11 @@ RUN export DEBIAN_FRONTEND=noninteractive \
153
176
  && apt-get install -y --no-install-recommends \
154
177
  python3 python3-venv python3-pip ca-certificates git curl \
155
178
  poppler-utils \
179
+ libasound2t64 libatk-bridge2.0-0t64 libatk1.0-0t64 libatspi2.0-0t64 \
180
+ libcairo2 libcups2t64 libdbus-1-3 libdrm2 libgbm1 libglib2.0-0t64 \
181
+ libnspr4 libnss3 libpango-1.0-0 libx11-6 libxcb1 libxcomposite1 \
182
+ libxdamage1 libxext6 libxfixes3 libxkbcommon0 libxrandr2 \
183
+ fontconfig fonts-inter fonts-liberation fonts-noto-color-emoji \
156
184
  && ln -sf /usr/bin/python3 /usr/local/bin/python \
157
185
  && rm -rf /var/lib/apt/lists/*
158
186
 
@@ -186,6 +214,16 @@ RUN ln -s /opt/aws-cli/v2/current/bin/aws /opt/sky/bin/aws-real \
186
214
  && /opt/sky/bin/aws-real --version \
187
215
  && mkdir -p /opt/sky/aws
188
216
 
217
+ # --- Slides (skills/slides) -------------------------------------------------
218
+ # The pinned open-slide toolchain and headless browser from the
219
+ # open-slide-build stage, plus `export_deck` on PATH. Root-owned and read-only
220
+ # at runtime: builds happen in a temp workspace, never under /opt.
221
+ COPY --from=open-slide-build /opt/open-slide /opt/open-slide
222
+ COPY packages/infra/agent-image/bin/export_deck /opt/sky/bin/export_deck
223
+ RUN chmod 0755 /opt/sky/bin/export_deck
224
+ ENV OPEN_SLIDE_HOME=/opt/open-slide \
225
+ PLAYWRIGHT_BROWSERS_PATH=/opt/open-slide/browsers
226
+
189
227
  # /opt/sky/bin FIRST so `gh` and `aws` resolve to the wrappers, never the real
190
228
  # binaries.
191
229
  ENV PATH="/opt/sky/bin:${PATH}"
@@ -0,0 +1,5 @@
1
+ #!/bin/sh
2
+ # export_deck: build an open-slide deck and export PDF, PPTX and per-slide PNGs
3
+ # headlessly (skills/slides). The script and its pinned toolchain live in
4
+ # $OPEN_SLIDE_HOME (the agent image bakes /opt/open-slide). `export_deck --help`.
5
+ exec bun "${OPEN_SLIDE_HOME:-/opt/open-slide}/export_deck.mjs" "$@"