- Add .architect/ directory structure (10 template files) as project brain for agent orientation - Add architect-indexer agent that scans codebase and generates structured architecture docs - Add Docker containerization: Dockerfile.architect-indexer, docker-compose.architect.yml - Add TypeScript project-mapper module with staleness detection and context injection - Add /index-project command, architect-first-contact rule, project-mapping skill - Integrate orchestrator first-contact check: triggers indexing before any task delegation - Add npm arch:* scripts for Docker-based indexing workflow - Register agent in capability-index.yaml and AGENTS.md
63 lines
2.1 KiB
Docker
63 lines
2.1 KiB
Docker
# Architect Indexer Dockerfile
|
|
# Scans target project codebase and generates .architect/ directory
|
|
#
|
|
# Usage:
|
|
# docker compose -f docker/docker-compose.architect.yml build
|
|
# docker compose -f docker/docker-compose.architect.yml run --rm architect-indexer
|
|
# docker compose -f docker/docker-compose.architect.yml run --rm architect-indexer --mode incremental
|
|
|
|
# ── Build stage ────────────────────────────────────────────────────
|
|
FROM oven/bun:1-alpine AS builder
|
|
|
|
WORKDIR /build
|
|
|
|
# Copy dependency files first (cache layer)
|
|
COPY package.json ./
|
|
# bun.lock might not exist; handle gracefully
|
|
COPY bun.lock* ./
|
|
|
|
# Install dependencies
|
|
RUN bun install 2>/dev/null || npm install 2>/dev/null || true
|
|
|
|
# Copy source for build
|
|
COPY tsconfig.json ./
|
|
COPY src/ ./src/
|
|
|
|
# Build TypeScript
|
|
RUN bun run build 2>/dev/null || npx tsc 2>/dev/null || true
|
|
|
|
# ── Production stage ────────────────────────────────────────────────
|
|
FROM node:20-alpine AS production
|
|
|
|
WORKDIR /app
|
|
|
|
# Security: non-root user
|
|
RUN addgroup -S apaw && adduser -S apaw -G apaw
|
|
|
|
# Copy built artifacts
|
|
COPY --from=builder /build/dist/ ./dist/
|
|
COPY --from=builder /build/node_modules/ ./node_modules/
|
|
COPY --from=builder /build/package.json ./
|
|
|
|
# Copy .kilo configs for agent context
|
|
COPY .kilo/agents/architect-indexer.md ./agents/architect-indexer.md
|
|
COPY .kilo/skills/project-mapping/ ./skills/project-mapping/
|
|
COPY .kilo/rules/ ./rules/
|
|
|
|
# Ensure .architect template directory exists
|
|
COPY .architect/ /template/.architect/
|
|
|
|
# Default project mount point
|
|
ENV PROJECT_ROOT=/project
|
|
ENV NODE_ENV=production
|
|
ENV TZ=UTC
|
|
|
|
# Healthcheck: verify .architect/ was generated
|
|
HEALTHCHECK --interval=60s --timeout=15s --start-period=10s --retries=2 \
|
|
CMD test -d /project/.architect || exit 1
|
|
|
|
USER apaw
|
|
|
|
# Run the indexer script (compiled from TypeScript)
|
|
ENTRYPOINT ["node", "dist/kilocode/scripts/run-architect-indexer.js"]
|
|
CMD ["--target", "/project"] |