"""Agent-specific paths, caches, and constants for Claude/Codex discovery.""" from pathlib import Path # Claude Code conversation directory CLAUDE_PROJECTS_DIR = Path.home() / ".claude" / "projects" # Codex conversation directory CODEX_SESSIONS_DIR = Path.home() / ".codex" / "sessions" # Only discover recently-active Codex sessions (10 minutes) CODEX_ACTIVE_WINDOW = 600 # Cache for Codex pane info (avoid running pgrep/ps/lsof on every request) _codex_pane_cache = {"pid_info": {}, "cwd_map": {}, "expires": 0} # Cache for parsed context usage by transcript file path + mtime/size _context_usage_cache = {} _CONTEXT_CACHE_MAX = 100 # Cache mapping Codex session IDs to transcript paths (or None when missing) _codex_transcript_cache = {} _CODEX_CACHE_MAX = 200 # Codex sessions dismissed during this server lifetime (prevents re-discovery) # Uses dict (not set) for O(1) lookup + FIFO eviction via insertion order (Python 3.7+) _dismissed_codex_ids = {} _DISMISSED_MAX = 500