# =============================================================================
# Claude Code Agent Monitor - Default Helm Values
# =============================================================================
# Override these values per environment using values-dev.yaml, values-staging.yaml,
# or values-production.yaml.

# -- Number of pod replicas
replicaCount: 2

# -- Container image configuration
image:
  registry: ghcr.io
  repository: smartgift/claude-code-monitor
  tag: "" # Defaults to .Chart.AppVersion if empty
  pullPolicy: IfNotPresent

# -- Image pull secrets for private registries
imagePullSecrets: []

# -- Override the release name
nameOverride: ""
# -- Override the full release name
fullnameOverride: ""

# =============================================================================
# Service Account
# =============================================================================
serviceAccount:
  # -- Whether to create a ServiceAccount
  create: true
  # -- Annotations to add to the ServiceAccount
  annotations: {}
  # -- The name of the ServiceAccount (auto-generated if empty)
  name: ""
  # -- Automount API credentials
  automountServiceAccountToken: false

# =============================================================================
# Pod Configuration
# =============================================================================

# -- Annotations to add to pods
podAnnotations: {}

# -- Labels to add to pods
podLabels: {}

# -- Pod-level security context
podSecurityContext:
  runAsNonRoot: true
  runAsUser: 1000
  runAsGroup: 1000
  fsGroup: 1000
  fsGroupChangePolicy: OnRootMismatch
  seccompProfile:
    type: RuntimeDefault

# -- Container-level security context
securityContext:
  runAsNonRoot: true
  readOnlyRootFilesystem: true
  allowPrivilegeEscalation: false
  capabilities:
    drop:
      - ALL

# =============================================================================
# Deployment Strategy
# =============================================================================
deployment:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0

# =============================================================================
# Service
# =============================================================================
service:
  # -- Service type (ClusterIP, NodePort, LoadBalancer)
  type: ClusterIP
  # -- Service port (external)
  port: 80
  # -- Container port the application listens on
  targetPort: 4820
  # -- Node port (only used when type is NodePort)
  nodePort: ""
  # -- Additional service annotations
  annotations: {}

# =============================================================================
# Ingress
# =============================================================================
ingress:
  # -- Enable ingress resource
  enabled: false
  # -- Ingress class name (e.g. nginx, traefik, alb)
  className: ""
  # -- Ingress annotations
  annotations: {}
    # nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
    # nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
    # nginx.ingress.kubernetes.io/proxy-http-version: "1.1"
    # nginx.ingress.kubernetes.io/proxy-set-headers: "Upgrade=$http_upgrade,Connection=upgrade"
  # -- Ingress host definitions
  hosts:
    - host: agent-monitor.local
      paths:
        - path: /
          pathType: Prefix
  # -- TLS configuration
  tls: []
  #  - secretName: agent-monitor-tls
  #    hosts:
  #      - agent-monitor.local

# =============================================================================
# Resource Limits
# =============================================================================
resources:
  requests:
    cpu: 100m
    memory: 128Mi
  limits:
    cpu: 500m
    memory: 512Mi

# =============================================================================
# Autoscaling (HPA)
# =============================================================================
autoscaling:
  # -- Enable Horizontal Pod Autoscaler
  enabled: true
  # -- Minimum number of replicas
  minReplicas: 2
  # -- Maximum number of replicas
  maxReplicas: 10
  # -- Target CPU utilization percentage
  targetCPUUtilizationPercentage: 70
  # -- Target memory utilization percentage
  targetMemoryUtilizationPercentage: 80
  # -- Scale-down stabilization window (seconds)
  scaleDownStabilizationWindowSeconds: 300

# =============================================================================
# Persistence (SQLite database)
# =============================================================================
persistence:
  # -- Enable persistent storage for SQLite data
  enabled: true
  # -- Storage class name (empty string uses default)
  storageClass: ""
  # -- Access modes for the PVC
  accessModes:
    - ReadWriteOnce
  # -- Size of the persistent volume
  size: 10Gi
  # -- Annotations for the PVC
  annotations: {}
  # -- Use an existing PVC instead of creating one
  existingClaim: ""

# =============================================================================
# Scheduling
# =============================================================================

# -- Node selector for pod placement
nodeSelector: {}

# -- Tolerations for pod placement
tolerations: []

# -- Affinity rules for pod placement
affinity: {}

# -- Topology spread constraints
topologySpreadConstraints: []

# =============================================================================
# Environment Variables
# =============================================================================
env:
  # -- Node.js environment
  NODE_ENV: production
  # -- Port the dashboard server listens on (must match service.targetPort)
  DASHBOARD_PORT: "4820"
  # -- Log level (debug, info, warn, error)
  LOG_LEVEL: info

# -- Additional environment variables as key-value pairs
extraEnv: {}
  # MY_CUSTOM_VAR: my-value

# -- Extra environment variables from secrets or configmaps
extraEnvFrom: []
  # - secretRef:
  #     name: my-secret
  # - configMapRef:
  #     name: my-configmap

# =============================================================================
# Health Probes
# =============================================================================
livenessProbe:
  httpGet:
    path: /api/health
    port: http
  initialDelaySeconds: 30
  periodSeconds: 15
  timeoutSeconds: 5
  failureThreshold: 3
  successThreshold: 1

readinessProbe:
  httpGet:
    path: /api/health
    port: http
  initialDelaySeconds: 5
  periodSeconds: 10
  timeoutSeconds: 3
  failureThreshold: 3
  successThreshold: 1

startupProbe:
  httpGet:
    path: /api/health
    port: http
  initialDelaySeconds: 5
  periodSeconds: 5
  timeoutSeconds: 3
  failureThreshold: 30
  successThreshold: 1

# =============================================================================
# Pod Disruption Budget
# =============================================================================
podDisruptionBudget:
  # -- Enable PodDisruptionBudget
  enabled: true
  # -- Minimum available pods during voluntary disruptions
  minAvailable: 1
  # -- Maximum unavailable pods (alternative to minAvailable)
  # maxUnavailable: 1

# =============================================================================
# Network Policy
# =============================================================================
networkPolicy:
  # -- Enable NetworkPolicy
  enabled: true
  # -- Additional ingress rules
  additionalIngressRules: []
  # -- Additional egress rules
  additionalEgressRules: []

# =============================================================================
# MCP Sidecar (Model Context Protocol server)
# =============================================================================
mcp:
  # -- Enable MCP sidecar container
  enabled: false
  image:
    registry: ghcr.io
    repository: smartgift/claude-code-monitor-mcp
    tag: "" # Defaults to .Chart.AppVersion if empty
    pullPolicy: IfNotPresent
  # -- MCP HTTP transport port
  port: 8819
  # -- Resource limits for MCP sidecar
  resources:
    requests:
      cpu: 50m
      memory: 64Mi
    limits:
      cpu: 200m
      memory: 256Mi
  # -- MCP environment variables
  env:
    MCP_TRANSPORT: http
    MCP_PORT: "8819"
    DASHBOARD_URL: "http://localhost:4820"
  # -- Container security context for MCP
  securityContext:
    runAsNonRoot: true
    readOnlyRootFilesystem: true
    allowPrivilegeEscalation: false
    capabilities:
      drop:
        - ALL

# =============================================================================
# Monitoring
# =============================================================================
monitoring:
  # -- Enable Prometheus monitoring
  enabled: false
  serviceMonitor:
    # -- Enable ServiceMonitor resource (requires Prometheus Operator)
    enabled: false
    # -- Namespace for the ServiceMonitor (defaults to release namespace)
    namespace: ""
    # -- Additional labels for the ServiceMonitor
    labels: {}
    # -- Scrape interval
    interval: 30s
    # -- Scrape timeout
    scrapeTimeout: 10s
    # -- Metric path
    path: /api/metrics
    # -- Honor labels from the target
    honorLabels: false
