1use std::collections::HashMap;
2
3#[allow(clippy::wildcard_imports)]
4use super::*;
5pub fn default_bm25_max_cache_mb() -> u64 {
7 serde_defaults::default_bm25_max_cache_mb()
8}
9
10pub const DEFAULT_BM25_PERSIST_MB: u64 = 512;
20
21const _: () = assert!(DEFAULT_BM25_PERSIST_MB >= 512);
24
25pub const EDIT_TOOL_NAMES: &[&str] = &["ctx_edit", "ctx_patch"];
34
35pub(crate) fn default_shell_write_allow_paths() -> Vec<String> {
40 #[allow(unused_mut)]
41 let mut paths = vec![std::env::temp_dir().to_string_lossy().into_owned()];
42 #[cfg(unix)]
43 for path in ["/tmp", "/private/tmp", "/var/tmp"] {
44 if !paths.iter().any(|existing| existing == path) {
45 paths.push(path.to_string());
46 }
47 }
48 paths
49}
50impl Default for Config {
51 fn default() -> Self {
52 Self {
53 ultra_compact: false,
54 tee_mode: TeeMode::default(),
55 recovery_hints: RecoveryHints::default(),
56 output_density: OutputDensity::default(),
57 checkpoint_interval: 15,
58 excluded_commands: Vec::new(),
59 passthrough_urls: Vec::new(),
60 custom_aliases: Vec::new(),
61 preserve_compact_formats: serde_defaults::default_preserve_compact_formats(),
62 crush_verbatim_json: false,
63 slow_command_threshold_ms: 5000,
64 theme: serde_defaults::default_theme(),
65 telemetry: TelemetryConfig::default(),
66 cloud: CloudConfig::default(),
67 gain: GainConfig::default(),
68 cost: CostConfig::default(),
69 code_health: CodeHealthConfig::default(),
70 autonomy: AutonomyConfig::default(),
71 providers: ProvidersConfig::default(),
72 proxy: ProxyConfig::default(),
73 conversation: ConversationConfig::default(),
74 response_shaping: ResponseShapingConfig::default(),
75 ocla: OclaConfig::default(),
76 cache: CacheConfig::default(),
77 agents: AgentsConfig::default(),
78 proxy_enabled: None,
79 proxy_port: None,
80 proxy_timeout_ms: None,
81 proxy_require_token: false,
82 proxy_loopback_open: false,
83 proxy_bind_host: None,
84 proxy_allowed_hosts: Vec::new(),
85 proxy_max_rps: None,
86 dashboard_auth: true,
87 dashboard_cache_hit_rate: None,
88 buddy_enabled: serde_defaults::default_buddy_enabled(),
89 enable_wakeup_ctx: true,
90 redirect_exclude: Vec::new(),
91 disabled_tools: Vec::new(),
92 prefer_native_editor: false,
93 default_tool_categories: Vec::new(),
94 no_degrade: false,
95 delta_explicit: false,
96 profile: None,
97 config_profile: None,
98 profiles: std::collections::BTreeMap::new(),
99 tool_profile: None,
100 tools_enabled: Vec::new(),
101 persona: None,
102 loop_detection: LoopDetectionConfig::default(),
103 rules_scope: None,
104 rules_injection: None,
105 permission_inheritance: None,
106 extra_ignore_patterns: Vec::new(),
107 terse_agent: TerseAgent::default(),
108 compression_level: CompressionLevel::default(),
109 cognitive_mode: CognitiveMode::default(),
110 compression_aggressiveness: None,
111 archive: ArchiveConfig::default(),
112 memory: MemoryPolicy::default(),
113 allow_paths: Vec::new(),
114 allow_ide_config_dirs: None,
115 extra_roots: Vec::new(),
116 read_only_roots: Vec::new(),
117 allow_symlink_roots: Vec::new(),
118 content_defined_chunking: false,
119 minimal_overhead: true,
120 symbol_map_auto: false,
121 structure_first: true,
122 progressive_disclosure: true,
123 progressive_threshold_lines: serde_defaults::default_progressive_threshold_lines(),
124 progressive_signatures_max: serde_defaults::default_progressive_signatures_max(),
125 auto_mode_learning: false,
126 team_url: None,
127 team_token: None,
128 team_auto_push: false,
129 journal_enabled: true,
130 auto_capture: true,
131 search: crate::core::hybrid_search::HybridConfig::default(),
132 graph: GraphConfig::default(),
133 index: IndexConfig::default(),
134 skillify: SkillifyConfig::default(),
135 summaries: SummariesConfig::default(),
136 llm: crate::core::llm_enhance::LlmConfig::default(),
137 embedding: EmbeddingConfig::default(),
138 shell_hook_disabled: false,
139 shadow_mode: true,
140 hook_mode: None,
141 tool_surface: None,
142 debug_log: false,
143 shell_activation: ShellActivation::default(),
144 skip_agent_aliases: false,
145 read_redirect: ReadRedirect::default(),
146 read_dedup: ReadDedup::default(),
147 update_check_disabled: false,
148 updates: UpdatesConfig::default(),
149 context: ContextConfig::default(),
150 graph_index_max_files: serde_defaults::default_graph_index_max_files(),
151 bm25_max_cache_mb: serde_defaults::default_bm25_max_cache_mb(),
152 memory_profile: MemoryProfile::default(),
153 memory_cleanup: MemoryCleanup::default(),
154 max_ram_percent: serde_defaults::default_max_ram_percent(),
155 max_disk_mb: 0,
156 max_staleness_days: 0,
157 max_index_threads: 0,
158 savings_footer: SavingsFooter::default(),
159 compression_annotation: CompressionAnnotation::default(),
160 annotation_threshold_pct: serde_defaults::default_annotation_threshold_pct(),
161 turn_fresh_limit: serde_defaults::default_turn_fresh_limit(),
162 session_token_limit: serde_defaults::default_session_token_limit(),
163 project_root: None,
164 lsp: std::collections::HashMap::new(),
165 ide_paths: HashMap::new(),
166 model_context_windows: HashMap::new(),
167 response_verbosity: ResponseVerbosity::default(),
168 bypass_hints: None,
169 cache_policy: None,
170 cache_max_tokens: 0,
171 boundary_policy: crate::core::memory_boundary::BoundaryPolicy::default(),
172 secret_detection: SecretDetectionConfig::default(),
173 sensitivity: crate::core::sensitivity::SensitivityConfig::default(),
174 gateway: crate::core::mcp_catalog::GatewayConfig::default(),
175 gateway_server: GatewayServerConfig::default(),
176 enterprise: EnterpriseConfig::default(),
177 addons: crate::core::addons::AddonsConfig::default(),
178 allow_auto_reroot: false,
179 hook_binary: None,
180 path_jail: None,
181 sandbox_level: 0,
182 reference_results: false,
183 agent_token_budget: 0,
184 shell_allowlist: default_shell_allowlist(),
185 shell_allowlist_extra: Vec::new(),
186 shell_strict_mode: false,
187 shell_security: None,
188 shell_timeout_secs: None,
189 shell_heavy_timeout_secs: None,
190 shell_heavy_prefixes: Vec::new(),
191 shell_allow_writes: false,
192 write_allow_paths: Vec::new(),
193 shell_allow_inline_scripts: false,
194 setup: SetupConfig::default(),
195 }
196 }
197}