/** * Application constants * Centralized configuration values to avoid magic numbers */ // ============================================================================ // UI Constants // ============================================================================ export const UI = { /** Height reserved for header, filter bar, status bar, and padding */ LAYOUT_OVERHEAD: 6, /** Minimum terminal height for proper display */ MIN_TERMINAL_HEIGHT: 24, /** Default terminal height if detection fails */ DEFAULT_TERMINAL_HEIGHT: 24, /** Maximum length for command output before truncation */ OUTPUT_TRUNCATION_LENGTH: 50, } as const; // ============================================================================ // Scanner Constants // ============================================================================ export const SCANNER = { /** Default maximum directory depth for scanning */ DEFAULT_MAX_DEPTH: 2, /** Default concurrency for scanning operations */ DEFAULT_CONCURRENCY: 5, /** Length of generated project IDs (MD5 hash truncation) */ PROJECT_ID_LENGTH: 12, /** Default cache TTL in seconds */ DEFAULT_CACHE_TTL_SECONDS: 300, } as const; // ============================================================================ // Git Constants // ============================================================================ export const GIT = { /** Default remote name */ DEFAULT_REMOTE: "origin", /** Default branch name */ DEFAULT_BRANCH: "main", /** Default concurrency for git operations */ DEFAULT_CONCURRENCY: 5, /** Higher concurrency for status refresh (read-only) */ STATUS_REFRESH_CONCURRENCY: 10, } as const; export const GIT_TIMEOUTS = { CLONE: 120000, // 2 minutes for clone PULL: 60000, // 1 minute for pull PUSH: 60000, // 1 minute for push FETCH: 60000, // 1 minute for fetch STATUS: 10000, // 10 seconds for status } as const; // ============================================================================ // GitHub API Constants // ============================================================================ export const GITHUB_API = { /** Base URL for GitHub API */ BASE_URL: "https://api.github.com", /** API version header */ API_VERSION: "2022-11-28", /** Default page size for pagination */ PAGE_SIZE: 100, /** Maximum retry attempts */ MAX_RETRIES: 3, /** Initial retry delay in milliseconds */ INITIAL_RETRY_DELAY: 1000, /** Maximum retry delay in milliseconds */ MAX_RETRY_DELAY: 30000, /** Backoff multiplier for retries */ RETRY_BACKOFF_FACTOR: 2, } as const; // ============================================================================ // Background Fetch Constants // ============================================================================ export const BACKGROUND_FETCH = { /** Interval between background fetches in milliseconds (5 minutes) */ INTERVAL_MS: 5 * 60 * 1000, } as const; // ============================================================================ // Type Exports // ============================================================================ export type UIConstants = typeof UI; export type ScannerConstants = typeof SCANNER; export type GitConstants = typeof GIT; export type GitTimeouts = typeof GIT_TIMEOUTS; export type GitHubAPIConstants = typeof GITHUB_API; export type BackgroundFetchConstants = typeof BACKGROUND_FETCH;