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 hooks;
38pub mod ide_context;
39pub mod loader;
40pub mod mcp;
41pub mod models;
42pub mod optimization;
43pub mod output_styles;
44pub mod root;
45#[cfg(feature = "schema")]
46pub mod schema;
47pub mod status_line;
48pub mod subagents;
49pub mod telemetry;
50pub mod terminal_title;
51pub mod timeouts;
52pub mod types;
53pub mod update;
54pub mod workspace_env;
55
56pub use acp::{
57    AgentClientProtocolConfig, AgentClientProtocolTransport, AgentClientProtocolZedConfig,
58    AgentClientProtocolZedToolsConfig, AgentClientProtocolZedWorkspaceTrustMode,
59    WorkspaceTrustLevel,
60};
61pub use api_keys::ApiKeySources;
62pub use context::{ContextFeaturesConfig, DynamicContextConfig, LedgerConfig};
63pub use core::{
64    AgentCodexAppServerConfig, AgentConfig, AgentOnboardingConfig, AgentPromptSuggestionsConfig,
65    AuthConfig, AutoModeConfig, AutoModeEnvironmentConfig, AutomationConfig, BundledSkillsConfig,
66    CommandsConfig, CopilotAuthConfig, CustomProviderCommandAuthConfig, DockerSandboxConfig,
67    EditorToolConfig, ExternalSandboxConfig, ExternalSandboxType, FullAutoConfig, GatekeeperConfig,
68    MemoriesConfig, MicroVMSandboxConfig, ModelConfig, NetworkAllowlistEntryConfig, NetworkConfig,
69    OpenAIAuthConfig, OpenAIConfig, OpenAIHostedShellConfig, OpenAIHostedShellDomainSecret,
70    OpenAIHostedShellEnvironment, OpenAIHostedShellNetworkPolicy,
71    OpenAIHostedShellNetworkPolicyType, OpenAIHostedSkill, OpenAIManualCompactionConfig,
72    OpenAIPreferredMethod, OpenAIServiceTier, OpenResponsesConfig, OpenRouterAuthConfig,
73    PermissionMode, PluginRuntimeConfig, PluginTrustLevel, PromptCachingConfig,
74    ProviderPromptCachingConfig, ResourceLimitsConfig, ResourceLimitsPreset, SandboxConfig,
75    SandboxMode, SeccompConfig, SeccompProfilePreset, SecurityConfig, SensitivePathsConfig,
76    SkillsConfig, SkillsRenderMode, ToolPolicy, ToolsConfig, WebFetchConfig,
77};
78pub use debug::{DebugConfig, TraceLevel};
79pub use defaults::{
80    ConfigDefaultsProvider, ContextStoreDefaults, PerformanceDefaults, ScenarioDefaults,
81    SyntaxHighlightingDefaults, WorkspacePathsDefaults, current_config_defaults, get_config_dir,
82    get_data_dir, install_config_defaults_provider, reset_to_default_config_defaults,
83    with_config_defaults,
84};
85pub use hooks::{
86    HookCommandConfig, HookCommandKind, HookGroupConfig, HooksConfig, LifecycleHooksConfig,
87};
88pub use ide_context::{
89    IdeContextConfig, IdeContextProviderConfig, IdeContextProviderFamily, IdeContextProviderMode,
90    IdeContextProvidersConfig,
91};
92pub use loader::layers::{
93    ConfigLayerEntry, ConfigLayerLoadError, ConfigLayerMetadata, ConfigLayerSource,
94    ConfigLayerStack, LayerDisabledReason,
95};
96pub use loader::{
97    ConfigBuilder, ConfigManager, ConfigWatcher, FeaturesConfig, SimpleConfigWatcher,
98    SyntaxHighlightingConfig, VTCodeConfig, fingerprint_str, fingerprint_toml_value,
99    merge_toml_values, merge_toml_values_with_origins,
100};
101pub use mcp::{
102    McpAllowListConfig, McpAllowListRules, McpClientConfig, McpHttpServerConfig,
103    McpLifecycleConfig, McpProviderConfig, McpStdioServerConfig, McpTransportConfig, McpUiConfig,
104    McpUiMode,
105};
106pub use models::{ModelId, OpenRouterMetadata};
107pub use optimization::{
108    AgentExecutionConfig, AsyncPipelineConfig, CommandCacheConfig, FileReadCacheConfig,
109    LLMClientConfig, MemoryPoolConfig, OptimizationConfig, ProfilingConfig, ToolRegistryConfig,
110};
111pub use output_styles::{OutputStyle, OutputStyleConfig, OutputStyleManager};
112pub use root::{
113    AskQuestionsConfig, ChatConfig, LayoutModeOverride, NotificationBackend,
114    NotificationDeliveryMode, PtyConfig, PtyEmulationBackend, ReasoningDisplayMode, ToolOutputMode,
115    UiConfig, UiDisplayMode, UiFullscreenConfig, UiNotificationsConfig,
116};
117#[cfg(feature = "schema")]
118pub use schema::{vtcode_config_schema, vtcode_config_schema_json, vtcode_config_schema_pretty};
119pub use status_line::{StatusLineConfig, StatusLineMode};
120pub use subagents::{
121    DiscoveredSubagents, SubagentDiscoveryInput, SubagentMcpServer, SubagentMemoryScope,
122    SubagentRuntimeLimits, SubagentSource, SubagentSpec, builtin_subagents, discover_subagents,
123    load_subagent_from_file,
124};
125pub use telemetry::TelemetryConfig;
126pub use terminal_title::{DEFAULT_TERMINAL_TITLE_ITEMS, TerminalTitleConfig};
127pub use timeouts::{TimeoutsConfig, resolve_timeout};
128pub use types::{
129    EditingMode, ReasoningEffortLevel, SystemPromptMode, ToolDocumentationMode,
130    UiSurfacePreference, VerbosityLevel,
131};
132pub use workspace_env::{read_workspace_env_value, write_workspace_env_value};
133
134// Re-export auth module types
135pub use auth::{
136    AuthStatus, CopilotAuthConfig as AuthCopilotConfig, McpOAuthConfig, McpOAuthService,
137    McpOAuthStatus, McpOAuthToken, OpenAIAccountAuthService, OpenAIChatGptAuthHandle,
138    OpenAIChatGptAuthStatus, OpenAIChatGptSession, OpenRouterOAuthConfig, OpenRouterToken,
139    PkceChallenge, clear_oauth_token, clear_openai_chatgpt_session, generate_pkce_challenge,
140    get_auth_status, get_auth_url, get_openai_chatgpt_auth_status, get_openai_chatgpt_auth_url,
141    load_oauth_token, load_openai_chatgpt_session, resolve_openai_auth, save_oauth_token,
142    save_openai_chatgpt_session,
143};
144pub use codex::{
145    FileOpener, HistoryConfig, HistoryPersistence, NotificationCondition,
146    TerminalNotificationMethod, TuiAlternateScreen, TuiConfig, TuiNotificationEvent,
147    TuiNotificationsConfig,
148};