# AutoJanet Agent Container
#
# Single image used for all 19 agent roles.
# Role is determined at runtime via AGENT_ROLE env var.
#
# Build:
#   docker build -t registry.ctz.fyi/autojanet/agent:latest .
#
# The image bundles:
#   - opencode CLI (Node.js)
#   - Python entrypoint + dependencies
#   - All 19 agent .md files
#   - Common tools: git, curl, kubectl, helm

FROM node:22-bookworm-slim AS opencode-builder

# Install opencode globally
RUN npm install -g opencode-ai@latest

# ── Final image ───────────────────────────────────────────────────────────────
FROM debian:bookworm-slim

ARG KUBECTL_VERSION=v1.31.0
ARG HELM_VERSION=v3.16.0

# System deps
RUN apt-get update && apt-get install -y --no-install-recommends \
    ca-certificates \
    curl \
    git \
    python3 \
    python3-pip \
    python3-venv \
    jq \
    && rm -rf /var/lib/apt/lists/*

# kubectl
RUN curl -fsSL "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl" \
    -o /usr/local/bin/kubectl && chmod +x /usr/local/bin/kubectl

# helm
RUN curl -fsSL "https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz" \
    | tar -xz -C /usr/local/bin --strip-components=1 linux-amd64/helm

# Copy opencode from builder
COPY --from=opencode-builder /usr/local/lib/node_modules /usr/local/lib/node_modules
COPY --from=opencode-builder /usr/local/bin/node /usr/local/bin/node
RUN ln -sf /usr/local/lib/node_modules/opencode-ai/cli.js /usr/local/bin/opencode && \
    chmod +x /usr/local/bin/opencode

# Create agent user
RUN useradd -m -u 1000 -s /bin/bash agent

WORKDIR /app

# Python deps
COPY container/requirements.txt /app/requirements.txt
RUN python3 -m venv /app/venv && \
    /app/venv/bin/pip install --no-cache-dir -r /app/requirements.txt

# Agent entrypoint
COPY container/entrypoint.py /app/entrypoint.py

# All agent definition files
COPY agents/ /app/agents/

# Skills (read-only reference)
COPY skills/ /app/skills/

USER agent

ENV PATH="/app/venv/bin:$PATH"
ENV HOME="/home/agent"

ENTRYPOINT ["python3", "/app/entrypoint.py"]
