use std::path::{Path, PathBuf};
use skilllite_core::skill::dependency_resolver;
use skilllite_core::skill::metadata;
use skilllite_core::EnvSpec;
use skilllite_sandbox::env::builder as env_builder;
pub(super) fn ensure_skill_deps_and_env(skill_dir: &Path) -> Option<PathBuf> {
let mut meta = metadata::parse_skill_metadata(skill_dir).ok()?;
if meta.resolved_packages.is_none()
&& meta
.compatibility
.as_ref()
.is_some_and(|c| !c.trim().is_empty())
{
let lang = metadata::detect_language(skill_dir, &meta);
if let Ok(resolved) = dependency_resolver::resolve_packages_sync(
skill_dir,
meta.compatibility.as_deref(),
&lang,
true,
) {
if !resolved.packages.is_empty() {
meta.resolved_packages = Some(resolved.packages);
}
}
}
let env_spec = EnvSpec::from_metadata(skill_dir, &meta);
env_builder::ensure_environment(skill_dir, &env_spec, None, None, None).ok()
}