# syntax=docker/dockerfile:1
#
# Agent-Image für die isolierte, pro-Benutzer-Jobsuche.
#
# Anders als das App-Image (Dockerfile im Repo-Root) enthält dieses Image KEINE
# Anwendung, sondern ausschließlich die Werkzeuge, die der headless Such-Agent
# braucht: Claude Code, curl/python3/jq für die Skill-Skripte (Arbeitsagentur-API,
# bt.sh) sowie git. Der eigentliche Suchlauf wird vom Host-Runner pro Lauf als
# `docker run --rm` gestartet, mit dem jeweiligen Benutzer-Home als Volume —
# dadurch landen Memories und Session-Contexte getrennt pro Benutzer.

FROM node:20-bookworm-slim

ENV DEBIAN_FRONTEND=noninteractive

# Werkzeuge für die Skill-Skripte: arbeitsagentur.sh = curl+python3, bt.sh =
# curl+jq, plus git/flock/bash/coreutils für die Skripte selbst.
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        ca-certificates curl git python3 jq util-linux bash coreutils \
    && rm -rf /var/lib/apt/lists/*

# Claude Code auf einem systemweiten Pfad, damit es unabhängig vom zur Laufzeit
# gemounteten HOME gefunden wird. Version an den Host-CLI (2.1.209) angeglichen;
# DISABLE_AUTOUPDATER verhindert, dass jeder Benutzer sein eigenes Update zieht.
RUN npm install -g @anthropic-ai/claude-code@2.1.209
ENV DISABLE_AUTOUPDATER=1

# Nicht-Root-Benutzer, als der der Such-Agent läuft. Das node:20-Image bringt
# bereits uid/gid 1000 (»node«) mit — wir verwenden es unverändert, damit der
# Container dieselbe uid hat wie das vom Host-Runner gechownte pro-Benutzer-Home.
# COPY/Zielordner müssen für uid 1000 schreibbar sein.

# Geteilte Skills (Shared-Code, lesbar für alle); der Entrypoint verlinkt sie
# pro Benutzer nach ~/.claude/skills.
COPY skills /opt/skills

COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

# Schreibbarer Arbeitsordner (cwd während des Suchlaufs); Projekt-Key von Claude
# Code wird -work, also liegen Memory/Contexte unter ~/.claude/projects/-work.
# /home/agent wird im Image angelegt (uid 1000), damit der Entrypoint auch ohne
# gemountetes Volume (z. B. `docker run … claude --version`) läuft; im echten
# Lauf legt der Host-Runner das pro-Benutzer-Volume genau dortüber.
RUN mkdir -p /work /home/agent && chown -R 1000:1000 /work /home/agent

ENV HOME=/home/agent

WORKDIR /work
USER 1000:1000

ENTRYPOINT ["/entrypoint.sh"]
CMD ["claude", "--version"]