1use super::PlatformEnvironment;
4
5#[derive(Debug, Clone, Default, PartialEq, Eq)]
7pub struct PathEnvOverrides {
8 pub home: Option<std::path::PathBuf>,
9 pub config_dir: Option<std::path::PathBuf>,
10 pub data_dir: Option<std::path::PathBuf>,
11 pub state_dir: Option<std::path::PathBuf>,
12 pub cache_dir: Option<std::path::PathBuf>,
13 pub log_dir: Option<std::path::PathBuf>,
14 pub temp_dir: Option<std::path::PathBuf>,
15 pub runtime_dir: Option<std::path::PathBuf>,
16 pub service_dir: Option<std::path::PathBuf>,
17}
18
19#[derive(Debug, Clone, Default, PartialEq, Eq)]
21pub struct NetworkEnvOverrides {
22 pub http_bind: Option<String>,
23 pub http_request_timeout_ms: Option<u64>,
24 pub http_shutdown_timeout_ms: Option<u64>,
25 pub http_max_body_bytes: Option<u64>,
26 pub proxy: Option<String>,
27 pub no_proxy: Option<String>,
28 pub ssl_verify: Option<bool>,
29 pub qos_max_connections: Option<usize>,
30 pub qos_max_in_flight_requests: Option<usize>,
31 pub qos_max_queue_depth: Option<usize>,
32}
33
34#[derive(Debug, Clone, Default, PartialEq, Eq)]
36pub struct RemoteCliEnvOverrides {
37 pub base_url: Option<String>,
38}
39
40#[derive(Debug, Clone, Default, PartialEq, Eq)]
42pub struct AgentEnvOverrides {
43 pub mcp_streamable_http_enabled: Option<bool>,
44 pub mcp_endpoint: Option<String>,
45 pub mcp_allowed_origins: Option<String>,
46 pub mcp_allowed_scopes: Option<String>,
47 pub mcp_allow_unspecified_scope: Option<bool>,
48 pub mcp_max_limit: Option<usize>,
49 pub mcp_max_context_bytes: Option<usize>,
50 pub mcp_allow_remote_clients: Option<bool>,
51 pub audit_sink_enabled: Option<bool>,
52 pub audit_queue_depth: Option<usize>,
53}
54
55#[derive(Debug, Clone, Default, PartialEq, Eq)]
57pub struct RetrievalEnvOverrides {
58 pub semantic_backend: Option<String>,
59 pub vector_backend: Option<String>,
60 pub llm_provider: Option<String>,
61 pub embedding_base_url: Option<String>,
62 pub embedding_api_key: Option<String>,
63 pub text_embedding_model: Option<String>,
64 pub image_embedding_model: Option<String>,
65 pub embedding_dimension: Option<usize>,
66 pub embedding_batch_size: Option<usize>,
67 pub embedding_timeout_ms: Option<u64>,
68 pub embedding_max_concurrency: Option<usize>,
69 pub rerank_backend: Option<String>,
70 pub rerank_model: Option<String>,
71 pub rerank_timeout_ms: Option<u64>,
72 pub rerank_candidate_multiplier: Option<usize>,
73 pub rerank_max_candidates: Option<usize>,
74}
75
76#[derive(Debug, Clone, Default, PartialEq, Eq)]
78pub struct WorkerEnvOverrides {
79 pub embedding_endpoint: Option<String>,
80 pub ocr_endpoint: Option<String>,
81 pub vision_endpoint: Option<String>,
82 pub extractor_endpoint: Option<String>,
83 pub max_in_flight: Option<usize>,
84 pub code_index_max_in_flight: Option<usize>,
85 pub silent_updates_enabled: Option<bool>,
86}
87
88#[derive(Debug, Clone, Default, PartialEq, Eq)]
90pub struct FileIndexEnvOverrides {
91 pub enabled: Option<bool>,
92 pub roots: Option<String>,
93 pub excludes: Option<String>,
94 pub max_depth: Option<usize>,
95 pub max_file_bytes: Option<u64>,
96 pub scan_interval_ms: Option<u64>,
97 pub scan_timeout_ms: Option<u64>,
98 pub max_files_per_root: Option<usize>,
99 pub query_timeout_ms: Option<u64>,
100}
101
102#[derive(Debug, Clone, Default, PartialEq, Eq)]
104pub struct UpdateEnvOverrides {
105 pub enabled: Option<bool>,
106 pub sources: Option<String>,
107 pub check_interval_ms: Option<u64>,
108 pub github_repo: Option<String>,
109}
110
111#[derive(Debug, Clone, Default, PartialEq, Eq)]
113pub struct TelemetryEnvOverrides {
114 pub otel_endpoint: Option<String>,
115 pub otel_traces: Option<bool>,
116 pub otel_metrics: Option<bool>,
117 pub export_timeout_ms: Option<u64>,
118 pub service_environment: Option<String>,
119}
120
121#[derive(Debug, Clone, Default, PartialEq, Eq)]
123pub struct WatcherEnvOverrides {
124 pub enabled: Option<bool>,
125 pub debounce_ms: Option<u64>,
126 pub max_watch_dirs: Option<usize>,
127 pub hash_cache_capacity: Option<usize>,
128}
129
130#[derive(Debug, Clone, PartialEq, Eq)]
132pub struct EnvironmentConfig {
133 pub platform: PlatformEnvironment,
134 pub paths: PathEnvOverrides,
135 pub network: NetworkEnvOverrides,
136 pub remote_cli: RemoteCliEnvOverrides,
137 pub agent: AgentEnvOverrides,
138 pub retrieval: RetrievalEnvOverrides,
139 pub workers: WorkerEnvOverrides,
140 pub file_index: FileIndexEnvOverrides,
141 pub updates: UpdateEnvOverrides,
142 pub telemetry: TelemetryEnvOverrides,
143 pub watcher: WatcherEnvOverrides,
144 pub storage_topology: Option<String>,
145}
146
147#[derive(Debug, Clone, PartialEq, Eq)]
149pub struct RemoteCliEnvironmentConfig {
150 pub network: NetworkEnvOverrides,
151 pub remote_cli: RemoteCliEnvOverrides,
152}