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