/**
 * Queue name constants for BullMQ
 *
 * These queue names follow the mosaic:jobs:* convention
 * and align with the Mosaic Component Architecture (agent profiles).
 */

export const QUEUE_NAMES = {
  /**
   * Main job queue - general purpose jobs
   */
  MAIN: "mosaic-jobs",

  /**
   * Runner profile jobs - read-only operations
   * - Fetches information
   * - Gathers context
   * - Reads repositories
   */
  RUNNER: "mosaic-jobs-runner",

  /**
   * Weaver profile jobs - write operations
   * - Implements code changes
   * - Writes files
   * - Scoped to worktree
   */
  WEAVER: "mosaic-jobs-weaver",

  /**
   * Inspector profile jobs - validation operations
   * - Runs quality gates (build, lint, test)
   * - No modifications allowed
   */
  INSPECTOR: "mosaic-jobs-inspector",
} as const;

export type QueueName = (typeof QUEUE_NAMES)[keyof typeof QUEUE_NAMES];
