Skip to main content

vtcode_core/utils/
migration.rs

1use crate::config::VTCodeConfig;
2use serde_json::json;
3use vtcode_commons::VtCodePaths;
4
5/// Apply backward-compatible defaults for new config sections.
6pub fn apply_migration_defaults(config: &mut VTCodeConfig) {
7    if config.tools.plugins.manifests.is_empty() {
8        let plugin_root = VtCodePaths::resolve()
9            .map(|paths| paths.plugins_dir().display().to_string())
10            .unwrap_or_else(|_| String::from("data/vtcode/plugins"));
11        config.tools.plugins.manifests = vec![plugin_root];
12    }
13}
14
15/// Emit a structured migration summary for callers.
16pub fn migration_summary(config: &VTCodeConfig) -> serde_json::Value {
17    json!({
18        "plugins": {
19            "enabled": config.tools.plugins.enabled,
20            "manifests": config.tools.plugins.manifests,
21        },
22        "security": {
23            "zero_trust": config.security.zero_trust_mode,
24            "integrity_checks": config.security.integrity_checks,
25        }
26    })
27}
28
29#[cfg(test)]
30mod tests {
31    use super::*;
32
33    #[test]
34    fn fills_missing_defaults() {
35        let mut config = VTCodeConfig::default();
36        apply_migration_defaults(&mut config);
37        assert!(!config.tools.plugins.manifests.is_empty());
38    }
39}