/**
 * Quality gate profile types
 *
 * Profiles define predefined sets of quality gates for different scenarios:
 * - strict: All gates enabled (for critical code, reviewer agents)
 * - standard: Core gates (typecheck, lint, tests, coverage) (for worker agents)
 * - minimal: Tests only (for tester agents, documentation)
 * - custom: User-defined gate selection
 */
export type GateProfileType = "strict" | "standard" | "minimal" | "custom";

/**
 * Coverage configuration for a task
 */
export interface CoverageConfig {
  enabled: boolean;
  threshold?: number; // Default: 85
}

/**
 * Quality gates that can be enabled/disabled
 */
export interface GateSelection {
  typecheck?: boolean;
  lint?: boolean;
  tests?: boolean;
  coverage?: CoverageConfig;
  build?: boolean;
  integration?: boolean;
  aiReview?: boolean;
}

/**
 * Complete gate profile configuration
 */
export interface GateProfile {
  name: GateProfileType;
  gates: GateSelection;
}

/**
 * Task-specific gate configuration
 *
 * Used to store which gates should run for a specific task.
 * Attached to task metadata when task is created.
 */
export interface TaskGateConfig {
  taskId: string;
  agentType: "worker" | "reviewer" | "tester";
  profile: GateProfile;
}

/**
 * Request to get gate requirements for quality check
 *
 * Sent to coordinator to specify which gates to run.
 */
export interface GateRequirements {
  gates: GateSelection;
  metadata?: {
    profile: GateProfileType;
    agentType: string;
  };
}
