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