Skip to main content

vtcode_config/
lib.rs

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