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 constants;
30pub mod context;
31pub mod core;
32pub mod debug;
33pub mod defaults;
34pub mod hooks;
35pub mod ide_context;
36pub mod loader;
37pub mod mcp;
38pub mod models;
39pub mod optimization;
40pub mod output_styles;
41pub mod root;
42#[cfg(feature = "schema")]
43pub mod schema;
44pub mod status_line;
45pub mod telemetry;
46pub mod timeouts;
47pub mod types;
48pub mod update;
49pub mod workspace_env;
50
51pub use acp::{
52    AgentClientProtocolConfig, AgentClientProtocolTransport, AgentClientProtocolZedConfig,
53    AgentClientProtocolZedToolsConfig, AgentClientProtocolZedWorkspaceTrustMode,
54    WorkspaceTrustLevel,
55};
56pub use api_keys::ApiKeySources;
57pub use context::{ContextFeaturesConfig, DynamicContextConfig, LedgerConfig};
58pub use core::{
59    AgentConfig, AgentOnboardingConfig, AuthConfig, AutomationConfig, CommandsConfig,
60    DockerSandboxConfig, EditorToolConfig, ExternalSandboxConfig, ExternalSandboxType,
61    FullAutoConfig, GatekeeperConfig, MicroVMSandboxConfig, ModelConfig,
62    NetworkAllowlistEntryConfig, NetworkConfig, OpenAIConfig, OpenAIServiceTier,
63    OpenResponsesConfig, OpenRouterAuthConfig, PluginRuntimeConfig, PluginTrustLevel,
64    PromptCachingConfig, ProviderPromptCachingConfig, ResourceLimitsConfig, ResourceLimitsPreset,
65    SandboxConfig, SandboxMode, SeccompConfig, SeccompProfilePreset, SecurityConfig,
66    SensitivePathsConfig, SkillsConfig, SkillsRenderMode, ToolPolicy, ToolsConfig, WebFetchConfig,
67};
68pub use debug::{DebugConfig, TraceLevel};
69pub use defaults::{
70    ConfigDefaultsProvider, ContextStoreDefaults, PerformanceDefaults, ScenarioDefaults,
71    SyntaxHighlightingDefaults, WorkspacePathsDefaults, current_config_defaults, get_config_dir,
72    get_data_dir, install_config_defaults_provider, reset_to_default_config_defaults,
73    with_config_defaults,
74};
75pub use hooks::{
76    HookCommandConfig, HookCommandKind, HookGroupConfig, HooksConfig, LifecycleHooksConfig,
77};
78pub use ide_context::{
79    IdeContextConfig, IdeContextProviderConfig, IdeContextProviderFamily, IdeContextProviderMode,
80    IdeContextProvidersConfig,
81};
82pub use loader::layers::{
83    ConfigLayerEntry, ConfigLayerLoadError, ConfigLayerMetadata, ConfigLayerSource,
84    ConfigLayerStack, LayerDisabledReason,
85};
86pub use loader::{
87    ConfigBuilder, ConfigManager, ConfigWatcher, SimpleConfigWatcher, SyntaxHighlightingConfig,
88    VTCodeConfig, fingerprint_str, fingerprint_toml_value, merge_toml_values,
89    merge_toml_values_with_origins,
90};
91pub use mcp::{
92    McpAllowListConfig, McpAllowListRules, McpClientConfig, McpHttpServerConfig, McpProviderConfig,
93    McpStdioServerConfig, McpTransportConfig, McpUiConfig, McpUiMode,
94};
95pub use models::{ModelId, OpenRouterMetadata};
96pub use optimization::{
97    AgentExecutionConfig, AsyncPipelineConfig, CommandCacheConfig, FileReadCacheConfig,
98    LLMClientConfig, MemoryPoolConfig, OptimizationConfig, ProfilingConfig, ToolRegistryConfig,
99};
100pub use output_styles::{OutputStyle, OutputStyleConfig, OutputStyleManager};
101pub use root::{
102    AskQuestionsConfig, ChatConfig, LayoutModeOverride, NotificationDeliveryMode, PtyConfig,
103    ReasoningDisplayMode, ToolOutputMode, UiConfig, UiDisplayMode, UiNotificationsConfig,
104};
105#[cfg(feature = "schema")]
106pub use schema::{vtcode_config_schema, vtcode_config_schema_json, vtcode_config_schema_pretty};
107pub use status_line::{StatusLineConfig, StatusLineMode};
108pub use telemetry::TelemetryConfig;
109pub use timeouts::{TimeoutsConfig, resolve_timeout};
110pub use types::{
111    EditingMode, ReasoningEffortLevel, SystemPromptMode, ToolDocumentationMode,
112    UiSurfacePreference, VerbosityLevel,
113};
114pub use workspace_env::{read_workspace_env_value, write_workspace_env_value};
115
116// Re-export auth module types
117pub use auth::{
118    AuthStatus, OpenRouterOAuthConfig, OpenRouterToken, PkceChallenge, clear_oauth_token,
119    generate_pkce_challenge, get_auth_status, get_auth_url, load_oauth_token, save_oauth_token,
120};