/**
 * Auto-Assignment Type Definitions
 *
 * Types for the automatic task assignment system.
 *
 * @module types/auto-assign.types
 */
// ======================
// Constants
// ======================
/**
 * Auto-assignment related constants
 */
export const AUTO_ASSIGN_CONSTANTS = {
    /** Default configuration values */
    DEFAULTS: {
        MAX_CONCURRENT_TASKS: 1,
        MAX_ASSIGNMENTS_PER_DAY: 50,
        COOLDOWN_BETWEEN_TASKS: 60, // seconds
        IDLE_THRESHOLD_MINUTES: 5,
    },
    /** Task type categories */
    TASK_TYPES: {
        DEVELOPMENT: ['feature', 'fix', 'refactor', 'implement'],
        TESTING: ['test', 'verify', 'qa'],
        FRONTEND: ['ui', 'component', 'style', 'frontend'],
        BACKEND: ['api', 'service', 'database', 'backend'],
        MANAGEMENT: ['planning', 'review', 'coordination', 'documentation'],
    },
    /** Priority levels */
    PRIORITY: {
        CRITICAL: 1,
        HIGH: 2,
        MEDIUM: 5,
        LOW: 10,
        BACKLOG: 20,
    },
    /** Configuration file paths */
    PATHS: {
        CONFIG_FILE: 'auto-assign.yaml',
        CONFIG_DIR: '.crewly/config',
    },
};
/**
 * Default role matching rules
 */
export const DEFAULT_ROLE_MATCHING = [
    {
        role: 'developer',
        taskTypes: ['feature', 'fix', 'refactor', 'test', 'implement'],
        priority: 1,
    },
    {
        role: 'frontend-developer',
        taskTypes: ['feature', 'fix', 'ui', 'component', 'style', 'frontend'],
        priority: 1,
    },
    {
        role: 'backend-developer',
        taskTypes: ['feature', 'fix', 'api', 'service', 'database', 'backend'],
        priority: 1,
    },
    {
        role: 'qa',
        taskTypes: ['test', 'review', 'verify', 'qa'],
        priority: 1,
        exclusive: true,
    },
    {
        role: 'tester',
        taskTypes: ['test', 'review', 'verify'],
        priority: 2,
    },
    {
        role: 'pm',
        taskTypes: ['planning', 'review', 'coordination', 'documentation'],
        priority: 1,
    },
    {
        role: 'tpm',
        taskTypes: ['planning', 'coordination', 'tracking'],
        priority: 1,
    },
    {
        role: 'pgm',
        taskTypes: ['planning', 'management', 'coordination'],
        priority: 1,
    },
    {
        role: 'designer',
        taskTypes: ['design', 'ui', 'ux', 'mockup'],
        priority: 1,
        exclusive: true,
    },
];
/**
 * Default assignment strategy
 */
export const DEFAULT_ASSIGNMENT_STRATEGY = {
    prioritization: 'priority',
    roleMatching: DEFAULT_ROLE_MATCHING,
    loadBalancing: {
        enabled: true,
        maxConcurrentTasks: AUTO_ASSIGN_CONSTANTS.DEFAULTS.MAX_CONCURRENT_TASKS,
        preferIdleAgents: true,
    },
    dependencies: {
        respectBlocking: true,
        waitForDependencies: true,
    },
};
/**
 * Default notification configuration
 */
export const DEFAULT_NOTIFICATION_CONFIG = {
    notifyOnIdle: true,
    idleThresholdMinutes: AUTO_ASSIGN_CONSTANTS.DEFAULTS.IDLE_THRESHOLD_MINUTES,
    notifyOnNoTasks: true,
};
/**
 * Default assignment limits
 */
export const DEFAULT_ASSIGNMENT_LIMITS = {
    maxAssignmentsPerDay: AUTO_ASSIGN_CONSTANTS.DEFAULTS.MAX_ASSIGNMENTS_PER_DAY,
    cooldownBetweenTasks: AUTO_ASSIGN_CONSTANTS.DEFAULTS.COOLDOWN_BETWEEN_TASKS,
};
/**
 * Default complete auto-assignment configuration
 */
export const DEFAULT_AUTO_ASSIGN_CONFIG = {
    enabled: true,
    strategy: DEFAULT_ASSIGNMENT_STRATEGY,
    notifications: DEFAULT_NOTIFICATION_CONFIG,
    limits: DEFAULT_ASSIGNMENT_LIMITS,
};
//# sourceMappingURL=auto-assign.types.js.map