apiVersion: apps/v1
kind: Deployment
metadata:
  name: llama-stack-ui
  labels:
    app.kubernetes.io/name: llama-stack
    app.kubernetes.io/component: ui
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: llama-stack
      app.kubernetes.io/component: ui
  template:
    metadata:
      labels:
        app.kubernetes.io/name: llama-stack
        app.kubernetes.io/component: ui
    spec:
      containers:
      - name: llama-stack-ui
        image: node:18-alpine
        command: ["/bin/sh"]
        env:
        - name: LLAMA_STACK_BACKEND_URL
          value: "http://llama-stack-service:8321"
        - name: LLAMA_STACK_UI_PORT
          value: "8322"
        - name: GITHUB_CLIENT_ID
          value: "${GITHUB_CLIENT_ID}"
        - name: GITHUB_CLIENT_SECRET
          value: "${GITHUB_CLIENT_SECRET}"
        - name: NEXTAUTH_URL
          value: "${LLAMA_STACK_UI_URL}:8322"
        args:
          - -c
          - |
            # Install git (not included in alpine by default)
            apk add --no-cache git

            # Clone the repository
            echo "Cloning repository..."
            git clone https://github.com/meta-llama/llama-stack.git /app

            # Navigate to the UI directory
            echo "Navigating to UI directory..."
            cd /app/llama_stack/ui

            # Check if package.json exists
            if [ ! -f "package.json" ]; then
              echo "ERROR: package.json not found in $(pwd)"
              ls -la
              exit 1
            fi

            # Install dependencies with verbose output
            echo "Installing dependencies..."
            npm install --verbose

            # Verify next is installed
            echo "Checking if next is installed..."
            npx next --version || echo "Next.js not found, checking node_modules..."
            ls -la node_modules/.bin/ | grep next || echo "No next binary found"

            npm run dev
        ports:
        - containerPort: 8322
        workingDir: /app
