# Stage 1: Rust build
FROM rust:1.86-bookworm AS rust-builder

WORKDIR /build
COPY rust/ .
RUN cargo build --release --bin claw-telegram

# Stage 2: Bun dependency install
FROM oven/bun:1.3 AS bun-builder

WORKDIR /app
COPY package.json bun.lock* ./
RUN bun install --frozen-lockfile || bun install

# Stage 3: Runtime
FROM debian:bookworm-slim

RUN apt-get update && apt-get install -y --no-install-recommends \
    ca-certificates \
    curl \
    git \
    && rm -rf /var/lib/apt/lists/*

# Bun runtime
COPY --from=oven/bun:1.3 /usr/local/bin/bun /usr/local/bin/bun

# Rust gateway binary
COPY --from=rust-builder /build/target/release/claw-telegram /usr/local/bin/claw-telegram

# Bun dependencies and TS worker source
COPY --from=bun-builder /app/node_modules /app/node_modules
COPY package.json /app/package.json
COPY ts-worker/ /app/ts-worker/

RUN mkdir -p /state/claude-home /state/claw /workspace /data

ENV CLAW_WORKER_BIND_ADDR=0.0.0.0:8080
ENV CLAW_WORKER_STATE_ROOT=/state
ENV CLAW_WORKER_DEFAULT_CWD=/workspace
ENV CLAW_WORKER_MODEL=claude-sonnet-4-6
ENV CLAW_WORKER_PERMISSION_MODE=default
ENV CLAUDE_CONFIG_DIR=/state/claude-home

WORKDIR /app

# Default: worker mode. Gateway overrides via --entrypoint claw-telegram.
CMD ["bun", "run", "ts-worker/main.ts"]
