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 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 for path in ["/tmp", "/private/tmp", "/var/tmp"] {
45 if !paths.iter().any(|existing| existing == path) {
46 paths.push(path.to_string());
47 }
48 }
49 paths
50}
51impl Default for Config {
52 fn default() -> Self {
53 Self {
54 ultra_compact: false,
55 tee_mode: TeeMode::default(),
56 recovery_hints: RecoveryHints::default(),
57 output_density: OutputDensity::default(),
58 checkpoint_interval: 15,
59 excluded_commands: Vec::new(),
60 passthrough_urls: Vec::new(),
61 custom_aliases: Vec::new(),
62 preserve_compact_formats: serde_defaults::default_preserve_compact_formats(),
63 crush_verbatim_json: false,
64 slow_command_threshold_ms: 5000,
65 theme: serde_defaults::default_theme(),
66 telemetry: TelemetryConfig::default(),
67 cloud: LegacyCloudConfig::default(),
68 hive: crate::core::config::hive::HiveConfig::default(),
69 cost: CostConfig::default(),
70 decision_loop: DecisionLoopConfig::default(),
71 protection: ProtectionConfig::default(),
72 code_health: CodeHealthConfig::default(),
73 decisions: DecisionsConfig::default(),
74 autonomy: AutonomyConfig::default(),
75 providers: ProvidersConfig::default(),
76 knowledge_routing: KnowledgeRoutingConfig::default(),
77 proxy: ProxyConfig::default(),
78 conversation: ConversationConfig::default(),
79 response_shaping: ResponseShapingConfig::default(),
80 ocla: OclaConfig::default(),
81 intelligence_runtime: IntelligenceRuntimeConfig::default(),
82 shadow: ShadowConfig::default(),
83 value_display: ValueDisplayConfig::default(),
84 cache: CacheConfig::default(),
85 agents: AgentsConfig::default(),
86 proxy_enabled: None,
87 proxy_port: None,
88 proxy_timeout_ms: None,
89 proxy_require_token: false,
90 proxy_loopback_open: false,
91 proxy_bind_host: None,
92 proxy_allowed_hosts: Vec::new(),
93 proxy_max_rps: None,
94 dashboard_auth: true,
95 dashboard_cache_hit_rate: None,
96 buddy_enabled: serde_defaults::default_buddy_enabled(),
97 enable_wakeup_ctx: true,
98 redirect_exclude: Vec::new(),
99 disabled_tools: Vec::new(),
100 prefer_native_editor: false,
101 default_tool_categories: Vec::new(),
102 no_degrade: false,
103 delta_explicit: false,
104 profile: None,
105 config_profile: None,
106 profiles: std::collections::BTreeMap::new(),
107 tool_profile: None,
108 tools_enabled: Vec::new(),
109 persona: None,
110 loop_detection: LoopDetectionConfig::default(),
111 rules_scope: None,
112 rules_injection: None,
113 permission_inheritance: Some("on".to_string()),
114 extra_ignore_patterns: Vec::new(),
115 terse_agent: TerseAgent::default(),
116 compression_level: CompressionLevel::default(),
117 compression_aggressiveness: None,
118 archive: ArchiveConfig::default(),
119 memory: MemoryPolicy::default(),
120 allow_paths: Vec::new(),
121 allow_ide_config_dirs: None,
122 extra_roots: Vec::new(),
123 read_only_roots: Vec::new(),
124 allow_symlink_roots: Vec::new(),
125 content_defined_chunking: false,
126 minimal_overhead: true,
127 symbol_map_auto: false,
128 structure_first: false,
132 progressive_disclosure: true,
133 progressive_threshold_lines: serde_defaults::default_progressive_threshold_lines(),
134 progressive_signatures_max: serde_defaults::default_progressive_signatures_max(),
135 auto_mode_learning: false,
136 team_share_content: true,
137 journal_enabled: false,
138 auto_capture: false,
139 search: crate::core::hybrid_search::HybridConfig::default(),
140 index: IndexConfig::default(),
141 skillify: SkillifyConfig::default(),
142 summaries: SummariesConfig::default(),
143 llm: LlmConfig::default(),
144 embedding: EmbeddingConfig::default(),
145 shell_hook_disabled: false,
146 shadow_mode: true,
147 shell_hook_mode: None,
148 prompt_reinject: None,
149 hook_mode: None,
150 tool_surface: None,
151 debug_log: false,
152 shell_activation: ShellActivation::default(),
153 skip_agent_aliases: false,
154 read_redirect: ReadRedirect::default(),
155 read_dedup: ReadDedup::default(),
156 shell_approval: ShellApproval::default(),
157 execute_allowed_languages: Vec::new(),
158 update_check_disabled: false,
159 updates: UpdatesConfig::default(),
160 context: ContextConfig::default(),
161 graph_index_max_files: serde_defaults::default_graph_index_max_files(),
162 bm25_max_files: serde_defaults::default_bm25_max_files(),
163 bm25_max_cache_mb: serde_defaults::default_bm25_max_cache_mb(),
164 memory_profile: MemoryProfile::default(),
165 memory_cleanup: MemoryCleanup::default(),
166 semantic_mode: SemanticMode::default(),
167 max_ram_percent: serde_defaults::default_max_ram_percent(),
168 mcp_max_rss_mb: serde_defaults::default_mcp_max_rss_mb(),
169 daemon_max_rss_mb: serde_defaults::default_daemon_max_rss_mb(),
170 mcp_idle_exit_minutes: 0,
171 max_disk_mb: 0,
172 max_staleness_days: 0,
173 session_retention_days: serde_defaults::default_session_retention_days(),
174 max_index_threads: 0,
175 savings_footer: SavingsFooter::default(),
176 compression_annotation: CompressionAnnotation::default(),
177 annotation_threshold_pct: serde_defaults::default_annotation_threshold_pct(),
178 behavior_nudges: serde_defaults::default_behavior_nudges(),
179 turn_fresh_limit: serde_defaults::default_turn_fresh_limit(),
180 turn_fresh_limit_verbatim: serde_defaults::default_turn_fresh_limit_verbatim(),
181 project_root: None,
182 lsp: std::collections::HashMap::new(),
183 ide_paths: HashMap::new(),
184 model_context_windows: HashMap::new(),
185 response_verbosity: ResponseVerbosity::default(),
186 active_kit: None,
187 bypass_hints: None,
188 cache_policy: None,
189 cache_max_tokens: 0,
190 boundary_policy: crate::core::memory_boundary::BoundaryPolicy::default(),
191 secret_detection: SecretDetectionConfig::default(),
192 sensitivity: crate::core::sensitivity::SensitivityConfig::default(),
193 context_gateway: crate::core::context_admission::ContextGatewayConfig::default(),
194 load_failure: None,
195 a2a_accept_untrusted_signers: false,
196 mcp_import_allow_unverified: false,
197 gateway: crate::core::mcp_catalog::GatewayConfig::default(),
198 gateway_server: GatewayServerConfig::default(),
199 enterprise: EnterpriseConfig::default(),
200 hook_binary: None,
201 path_jail: None,
202 path_jail_scope: None,
203 sandbox_level: 0,
204 reference_results: false,
205 agent_token_budget: 0,
206 shell_allowlist: default_shell_allowlist(),
207 shell_allowlist_extra: Vec::new(),
208 shell_strict_mode: false,
209 shell_allowlist_subcommand_scoping: true,
210 shell_security: None,
211 shell_timeout_secs: None,
212 shell_heavy_timeout_secs: None,
213 shell_heavy_prefixes: Vec::new(),
214 shell_allow_writes: false,
215 write_allow_paths: Vec::new(),
216 shell_allow_inline_scripts: false,
217 setup: SetupConfig::default(),
218 solution: super::solution::SolutionConfig::default(),
219 governor: super::governor::GovernorConfig::default(),
220 provenance: super::provenance::ProvenanceConfig::default(),
221 cross_agent: super::provenance::CrossAgentConfig::default(),
222 }
223 }
224}