c21e4e7f7b
Deploy Research Workbench / deploy (push) Failing after 10m12s
- Dockerfile: Install Google Chrome stable instead of Playwright npm package (playwright-cli defaults to /opt/google/chrome/chrome path). Removed unused Playwright npm package, kept Playwright Python for page automation. - bundle/bundle.md: Fix orchestrator config override with correct key path (session.orchestrator.config.extended_thinking: false) to properly override foundation's extended_thinking: true default, which was causing empty AI text responses. - bundle/agents/researcher.md: Add strong pre-installed environment guardrail telling agent NOT to install packages. Add explicit bash() tool call examples showing correct playwright-cli syntax. Fix snapshot command (removed non-existent -ic flag), change 'type' to 'fill' for form field syntax. - bundle/context/researcher-instructions.md: Enrich from thin pointer to concrete examples with correct bash() wrapping and actual playwright-cli commands. Add 'do NOT install' guardrail. Validated: Agent now opens Chrome browser during research queries, noVNC panel shows live browser activity, AI generates text responses properly. Generated with Amplifier Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
90 lines
4.0 KiB
Docker
90 lines
4.0 KiB
Docker
FROM python:3.13-slim
|
|
|
|
# ── System dependencies ────────────────────────────────────────────────────────
|
|
# Includes Xvfb/VNC stack, git (needed for pip's git+https installs),
|
|
# and Chromium runtime libs (for the playwright-managed Chromium binary).
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
xvfb \
|
|
x11vnc \
|
|
websockify \
|
|
novnc \
|
|
curl \
|
|
git \
|
|
libnss3 \
|
|
libatk1.0-0 \
|
|
libatk-bridge2.0-0 \
|
|
libcups2 \
|
|
libdrm2 \
|
|
libxkbcommon0 \
|
|
libxcomposite1 \
|
|
libxdamage1 \
|
|
libxrandr2 \
|
|
libgbm1 \
|
|
libpango-1.0-0 \
|
|
libcairo2 \
|
|
libasound2 \
|
|
libxshmfence1 \
|
|
libgtk-3-0 \
|
|
fonts-liberation \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# ── Node.js 22.x ──────────────────────────────────────────────────────────────
|
|
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
|
|
&& apt-get install -y --no-install-recommends nodejs \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# ── npm global tools: @playwright/cli + Chrome ────────────────────────────────
|
|
# @playwright/cli — token-efficient browser CLI used by research agents
|
|
# (playwright-cli -s=research open/snapshot/click/type …)
|
|
# playwright-cli defaults to Chrome at /opt/google/chrome/chrome. Install it directly.
|
|
RUN npm install -g @playwright/cli \
|
|
&& curl -fsSL https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -o /tmp/chrome.deb \
|
|
&& apt-get update && apt-get install -y /tmp/chrome.deb \
|
|
&& rm -f /tmp/chrome.deb && rm -rf /var/lib/apt/lists/*
|
|
|
|
# ── Python tooling ────────────────────────────────────────────────────────────
|
|
RUN pip install uv
|
|
# overlayfs inside Docker doesn't support reflinks → use copy mode to avoid EAGAIN
|
|
ENV UV_LINK_MODE=copy
|
|
|
|
# ── amplifierd: Amplifier session daemon ──────────────────────────────────────
|
|
# Not on PyPI — source is github.com/microsoft/amplifierd.
|
|
# uv pip --system installs to /usr/local/bin/amplifierd (on PATH by default).
|
|
#
|
|
# amplifier-foundation is also not on PyPI (it's a pure git package that
|
|
# amplifierd depends on), so we install it explicitly in the same step.
|
|
# amplifier-core IS on PyPI and will be resolved automatically.
|
|
RUN uv pip install --system \
|
|
"amplifierd @ git+https://github.com/microsoft/amplifierd" \
|
|
"amplifier-module-provider-anthropic @ git+https://github.com/microsoft/amplifier-module-provider-anthropic"
|
|
|
|
# ── Frontend: install deps and build ──────────────────────────────────────────
|
|
# Copy package manifests first so npm ci is cached independently of source changes.
|
|
COPY frontend/package.json frontend/package-lock.json /app/frontend/
|
|
WORKDIR /app/frontend
|
|
RUN npm ci
|
|
COPY frontend/ /app/frontend/
|
|
RUN npm run build
|
|
|
|
# ── Backend: install Python deps ──────────────────────────────────────────────
|
|
COPY backend/pyproject.toml backend/uv.lock /app/backend/
|
|
WORKDIR /app/backend
|
|
RUN uv sync --frozen
|
|
|
|
# ── Application files ─────────────────────────────────────────────────────────
|
|
COPY backend/*.py /app/backend/
|
|
COPY bundle/ /app/bundle/
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
RUN mkdir -p /app/artifacts
|
|
|
|
WORKDIR /app
|
|
EXPOSE 8080 6080
|
|
|
|
ENV DISPLAY=:99
|
|
ENV AMPLIFIERD_URL=http://localhost:8410
|
|
ENV BUNDLE_NAME=research-workbench
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|