mermaid_cli/
constants.rs

1/// Constants module to avoid magic numbers in the codebase
2// Network Configuration
3pub const DEFAULT_LITELLM_PROXY_PORT: u16 = 4000;
4pub const DEFAULT_LITELLM_PROXY_URL: &str = "http://localhost:4000";
5pub const DEFAULT_OLLAMA_PORT: u16 = 11434;
6pub const DEFAULT_SEARXNG_PORT: u16 = 8888;
7
8// Timeouts
9pub const COMMAND_TIMEOUT_SECS: u64 = 30;
10pub const HTTP_REQUEST_TIMEOUT_SECS: u64 = 600; // 10 minutes for large model requests
11pub const PROXY_STARTUP_WAIT_SECS: u64 = 3;
12pub const PROXY_CHECK_INTERVAL_SECS: u64 = 1;
13pub const PROXY_POLL_INTERVAL_MS: u64 = 100; // Fast polling for proxy startup
14pub const PROXY_MAX_STARTUP_ATTEMPTS: usize = 10;
15
16// UI Configuration
17pub const UI_REFRESH_INTERVAL_MS: u64 = 50;
18pub const UI_SCROLL_LINES: u16 = 3;
19pub const UI_DEFAULT_VIEWPORT_HEIGHT: u16 = 20;
20pub const UI_STATUS_MESSAGE_THRESHOLD: u16 = 3; // For auto-scroll detection
21pub const UI_ERROR_LOG_MAX_SIZE: usize = 50; // Maximum number of errors to keep in log
22
23// Model Token Limits
24pub const GPT4_32K_CONTEXT: usize = 32768;
25pub const GPT4_TURBO_CONTEXT: usize = 128000;
26pub const GPT35_CONTEXT: usize = 16384;
27pub const CLAUDE_3_OPUS_CONTEXT: usize = 200000;
28pub const CLAUDE_3_SONNET_CONTEXT: usize = 200000;
29pub const CLAUDE_3_HAIKU_CONTEXT: usize = 200000;
30pub const CLAUDE_25_CONTEXT: usize = 100000;
31pub const OLLAMA_DEFAULT_CONTEXT: usize = 32768;
32pub const GROQ_LLAMA_CONTEXT: usize = 32768;
33pub const GROQ_MIXTRAL_CONTEXT: usize = 32768;
34pub const GROQ_DEFAULT_CONTEXT: usize = 8192;
35pub const GEMINI_15_PRO_CONTEXT: usize = 1048576; // 1M tokens
36
37// Default Model Configuration
38pub const DEFAULT_TEMPERATURE: f32 = 0.7;
39pub const DEFAULT_MAX_TOKENS: usize = 4096;
40pub const DEFAULT_TOP_P: f32 = 1.0;
41
42// File Patterns
43pub const DEFAULT_EXCLUDE_PATTERNS: &[&str] = &[
44    "*.log",
45    "*.tmp",
46    ".git/*",
47    ".env",
48    "target/*",
49    "node_modules/*",
50    "__pycache__/*",
51    ".venv/*",
52    "venv/*",
53    "*.pyc",
54    "*.pyo",
55    ".DS_Store",
56    "Thumbs.db",
57    "*.swp",
58    "*.swo",
59    "*~",
60    ".idea/*",
61    ".vscode/*",
62    "*.iml",
63    ".pytest_cache/*",
64    ".mypy_cache/*",
65    ".ruff_cache/*",
66    "dist/*",
67    "build/*",
68    "*.egg-info/*",
69];
70
71// Dangerous Commands (for safety checks)
72pub const DANGEROUS_COMMANDS: &[&str] = &[
73    "rm -rf /",
74    "rm -rf /*",
75    "rm -rf ~",
76    "rm -rf ~/",
77    "format c:",
78    "del /f /s /q c:",
79    ":(){ :|:& };:", // Fork bomb
80    "mkfs",
81    "dd if=/dev/zero",
82    "chmod -R 777 /",
83    "chmod -R 000 /",
84    "chown -R",
85    "> /dev/sda",
86    "wget -O - | sh",
87    "curl -s | bash",
88];
89
90// SSH Key Patterns (for security)
91pub const SSH_KEY_FILES: &[&str] = &[
92    "id_rsa",
93    "id_dsa",
94    "id_ecdsa",
95    "id_ed25519",
96    ".pem",
97    ".key",
98    ".pfx",
99];