# Fable Agent — Docker image for 24/7 cloud deployment
# Build: docker build -t fable-agent .
# Run:   docker run -d --name fable-agent \
#         -v ~/.fable-agent:/root/.fable-agent \
#         -e EXA_API_KEY=... \
#         fable-agent daemon start

FROM node:22-alpine AS builder
WORKDIR /app
COPY package.json tsconfig.json ./
RUN npm install
COPY . .
RUN npx tsc

FROM node:22-alpine AS runner
WORKDIR /app
RUN addgroup --system --gid 1001 fable && \
    adduser --system --uid 1001 fable
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./
COPY --from=builder /app/CONFIG.md ./
COPY --from=builder /app/AGENT.md ./
COPY --from=builder /app/STATE.md ./
COPY --from=builder /app/PHASES ./PHASES
COPY --from=builder /app/SKILLS ./SKILLS
RUN mkdir -p /data && chown fable:fable /data
USER fable
ENV NODE_ENV=production
ENV FABLE_DATA_DIR=/data
VOLUME /data
ENTRYPOINT ["node", "dist/index.js"]
CMD ["daemon", "start"]
