Skip to main content

vtcode_config/
lib.rs

1#![allow(clippy::unreachable, clippy::map_err_ignore)]
2//! Shared configuration loader utilities for VT Code and downstream integrations.
3//!
4//! This crate exposes [`VTCodeConfig`] and [`ConfigManager`] for reading and
5//! validating `vtcode.toml` files while allowing applications to customize the
6//! filesystem layout via [`ConfigDefaultsProvider`]. Consumers can opt into the
7//! [`bootstrap`](index.html#features) feature (enabled by default) to scaffold
8//! configuration directories with project-specific defaults.
9//! Disable default features when you only need parsing/validation to omit the
10//! filesystem bootstrap helpers and reduce dependencies.
11//!
12//! # Examples
13//! ```no_run
14//! use vtcode_config::ConfigManager;
15//!
16//! # fn main() -> anyhow::Result<()> {
17//! let manager = ConfigManager::load_from_workspace(".")?;
18//! println!("Active provider: {}", manager.config().agent.provider);
19//! # Ok(())
20//! # }
21//! ```
22//!
23//! Install a custom [`ConfigDefaultsProvider`] with
24//! [`install_config_defaults_provider`] when you need to override search paths
25//! or syntax highlighting defaults exposed by the loader.
26
27pub mod acp;
28pub mod api_keys;
29pub mod auth;
30pub mod codex;
31pub mod constants;
32pub mod context;
33pub mod core;
34pub mod debug;
35pub mod defaults;
36pub mod hooks;
37pub mod ide_context;
38pub mod loader;
39pub mod mcp;
40pub mod models;
41pub mod optimization;
42pub mod output_styles;
43pub mod root;
44#[cfg(feature = "schema")]
45pub mod schema;
46pub mod status_line;
47pub mod subagents;
48pub mod telemetry;
49pub mod terminal_title;
50pub mod timeouts;
51pub mod types;
52pub mod update;
53pub mod workspace_env;
54
55pub use acp::{
56    AgentClientProtocolConfig, AgentClientProtocolTransport, AgentClientProtocolZedConfig,
57    AgentClientProtocolZedToolsConfig, AgentClientProtocolZedWorkspaceTrustMode,
58    WorkspaceTrustLevel,
59};
60pub use api_keys::ApiKeySources;
61pub use context::{ContextFeaturesConfig, DynamicContextConfig, LedgerConfig};
62pub use core::{
63    AgentCodexAppServerConfig, AgentConfig, AgentOnboardingConfig, AgentPromptSuggestionsConfig,
64    AuthConfig, AutoModeConfig, AutoModeEnvironmentConfig, AutomationConfig, BundledSkillsConfig,
65    CommandsConfig, CopilotAuthConfig, CustomProviderCommandAuthConfig, DockerSandboxConfig,
66    EditorToolConfig, ExternalSandboxConfig, ExternalSandboxType, FullAutoConfig, GatekeeperConfig,
67    MemoriesConfig, MicroVMSandboxConfig, ModelConfig, NetworkAllowlistEntryConfig, NetworkConfig,
68    OpenAIAuthConfig, OpenAIConfig, OpenAIHostedShellConfig, OpenAIHostedShellDomainSecret,
69    OpenAIHostedShellEnvironment, OpenAIHostedShellNetworkPolicy,
70    OpenAIHostedShellNetworkPolicyType, OpenAIHostedSkill, OpenAIManualCompactionConfig,
71    OpenAIPreferredMethod, OpenAIServiceTier, OpenResponsesConfig, OpenRouterAuthConfig,
72    PermissionMode, PluginRuntimeConfig, PluginTrustLevel, PromptCachingConfig,
73    ProviderPromptCachingConfig, ResourceLimitsConfig, ResourceLimitsPreset, SandboxConfig,
74    SandboxMode, SeccompConfig, SeccompProfilePreset, SecurityConfig, SensitivePathsConfig,
75    SkillsConfig, SkillsRenderMode, ToolPolicy, ToolsConfig, WebFetchConfig,
76};
77pub use debug::{DebugConfig, TraceLevel};
78pub use defaults::{
79    ConfigDefaultsProvider, ContextStoreDefaults, PerformanceDefaults, ScenarioDefaults,
80    SyntaxHighlightingDefaults, WorkspacePathsDefaults, current_config_defaults, get_config_dir,
81    get_data_dir, install_config_defaults_provider, reset_to_default_config_defaults,
82    with_config_defaults,
83};
84pub use hooks::{
85    HookCommandConfig, HookCommandKind, HookGroupConfig, HooksConfig, LifecycleHooksConfig,
86};
87pub use ide_context::{
88    IdeContextConfig, IdeContextProviderConfig, IdeContextProviderFamily, IdeContextProviderMode,
89    IdeContextProvidersConfig,
90};
91pub use loader::layers::{
92    ConfigLayerEntry, ConfigLayerLoadError, ConfigLayerMetadata, ConfigLayerSource,
93    ConfigLayerStack, LayerDisabledReason,
94};
95pub use loader::{
96    ConfigBuilder, ConfigManager, ConfigWatcher, FeaturesConfig, SimpleConfigWatcher,
97    SyntaxHighlightingConfig, VTCodeConfig, fingerprint_str, fingerprint_toml_value,
98    merge_toml_values, merge_toml_values_with_origins,
99};
100pub use mcp::{
101    McpAllowListConfig, McpAllowListRules, McpClientConfig, McpHttpServerConfig,
102    McpLifecycleConfig, McpProviderConfig, McpStdioServerConfig, McpTransportConfig, McpUiConfig,
103    McpUiMode,
104};
105pub use models::{ModelId, OpenRouterMetadata};
106pub use optimization::{
107    AgentExecutionConfig, AsyncPipelineConfig, CommandCacheConfig, FileReadCacheConfig,
108    LLMClientConfig, MemoryPoolConfig, OptimizationConfig, ProfilingConfig, ToolRegistryConfig,
109};
110pub use output_styles::{OutputStyle, OutputStyleConfig, OutputStyleManager};
111pub use root::{
112    AskQuestionsConfig, ChatConfig, LayoutModeOverride, NotificationBackend,
113    NotificationDeliveryMode, PtyConfig, PtyEmulationBackend, ReasoningDisplayMode, ToolOutputMode,
114    UiConfig, UiDisplayMode, UiFullscreenConfig, UiNotificationsConfig,
115};
116#[cfg(feature = "schema")]
117pub use schema::{vtcode_config_schema, vtcode_config_schema_json, vtcode_config_schema_pretty};
118pub use status_line::{StatusLineConfig, StatusLineMode};
119pub use subagents::{
120    DiscoveredSubagents, SubagentDiscoveryInput, SubagentMcpServer, SubagentMemoryScope,
121    SubagentRuntimeLimits, SubagentSource, SubagentSpec, builtin_subagents, discover_subagents,
122    load_subagent_from_file,
123};
124pub use telemetry::TelemetryConfig;
125pub use terminal_title::{DEFAULT_TERMINAL_TITLE_ITEMS, TerminalTitleConfig};
126pub use timeouts::{TimeoutsConfig, resolve_timeout};
127pub use types::{
128    EditingMode, ReasoningEffortLevel, SystemPromptMode, ToolDocumentationMode,
129    UiSurfacePreference, VerbosityLevel,
130};
131pub use workspace_env::{read_workspace_env_value, write_workspace_env_value};
132
133// Re-export auth module types
134pub use auth::{
135    AuthStatus, CopilotAuthConfig as AuthCopilotConfig, McpOAuthConfig, McpOAuthService,
136    McpOAuthStatus, McpOAuthToken, OpenAIAccountAuthService, OpenAIChatGptAuthHandle,
137    OpenAIChatGptAuthStatus, OpenAIChatGptSession, OpenRouterOAuthConfig, OpenRouterToken,
138    PkceChallenge, clear_oauth_token, clear_openai_chatgpt_session, generate_pkce_challenge,
139    get_auth_status, get_auth_url, get_openai_chatgpt_auth_status, get_openai_chatgpt_auth_url,
140    load_oauth_token, load_openai_chatgpt_session, resolve_openai_auth, save_oauth_token,
141    save_openai_chatgpt_session,
142};
143pub use codex::{
144    FileOpener, HistoryConfig, HistoryPersistence, NotificationCondition,
145    TerminalNotificationMethod, TuiAlternateScreen, TuiConfig, TuiNotificationEvent,
146    TuiNotificationsConfig,
147};