NoConfig { path: String } | no versionx.toml found at \{path\} (hint: run versionx init first) | The user tried to run a mutating command without a config present and without opting into zero-config detection. |
ConfigAlreadyExists { path: String } | versionx.toml already exists at \{path\} (pass --force to overwrite) | A versionx.toml already exists and --force was not passed. |
NoEcosystemsDetected { path: String } | no ecosystems detected at \{path\}. Create a package.json, Cargo.toml, pyproject.toml, or .tool-versions file first, or run versionx init --template <kind>. | No ecosystem signals detected — nothing to synthesize. |
UnknownRuntime (String) | no installer for runtime {0}(trynode, python, rust) | User asked for a runtime we don't have an installer for. |
RuntimeNotPinned { tool: String } | no pinned version for {tool}— set[runtimes] {tool} = "..." in versionx.toml | User didn't pin a runtime this command needs. |
Config (versionx_config :: ConfigError) | <delegated> | Underlying config load/parse failure. |
Installer (versionx_runtime_trait :: InstallerError) | <delegated> | Underlying runtime install failure. |
Adapter (versionx_adapter_trait :: AdapterError) | <delegated> | Underlying adapter failure. |
State (versionx_state :: StateError) | <delegated> | State DB failure. |
Lockfile (versionx_lockfile :: LockfileError) | <delegated> | Lockfile failure. |
Paths (crate :: paths :: PathDetectionError) | <delegated> | Path resolution failure. |
Io { path: String, source: std :: io :: Error } | i/o error at \{path\}: \{source\} | I/O failure with path context. |
Serialize (String) | failed to serialize versionx.toml: \{0\} | Serialization failure writing back the config (toml_edit). |