Skip to main content

vtcode_config/
lib.rs

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