jdx/mise · error
unsupported aqua package type: {t}
Error message
unsupported aqua package type: {t} What it means
The aqua backend resolves a package's download URL by matching its registry-declared package type against the supported variants (github_archive, http, etc.). If the AquaPackage has a package type the backend has no URL-resolution path for, it bails with 'unsupported aqua package type'. This guards against silently mis-downloading packages whose type mise cannot handle.
Source
Thrown at src/backend/aqua.rs:2193
if pkg.path.is_some() {
Ok((
self.github_content_url(pkg, v),
Some(self.github_content_api_url(pkg, v)),
false,
None,
))
} else {
bail!("github_content package requires `path`")
}
}
AquaPackageType::GithubArchive => Ok((
self.github_archive_url(pkg, v),
Some(self.github_archive_api_url(pkg, v)),
false,
None,
)),
AquaPackageType::Http => pkg.url(v, os(), arch()).map(|url| (url, None, false, None)),
ref t => bail!("unsupported aqua package type: {t}"),
}
}
async fn github_release_url(
&self,
pkg: &AquaPackage,
v: &str,
) -> Result<(String, Option<String>, Option<String>)> {
let target = PlatformTarget::from_current();
let asset_strs = pkg.asset_strs(v, os(), arch())?;
self.github_release_asset_for_target(pkg, v, asset_strs, &target)
.await
}
/// Resolve a GitHub release asset to `(canonical_url, transport_url)`.
///
/// `canonical_url` is the browser download URL (`github.com/.../releases/download/...`),
/// which carries the real asset filename — use it for filename derivation and for anyView on GitHub (pinned to afd2eddd3a)
Solutions
- Update mise to the latest version so the embedded aqua registry and AquaPackageType handling are current
- Check the tool's aqua registry entry for its package type; if a non-aqua backend exists (github, cargo, etc.), install via that backend instead
- Pin an older version of the tool whose package entry uses a supported package type
- File/track an issue to add support for the new AquaPackageType variant in src/backend/aqua.rs
Example fix
// before (mise.toml) [tools] aqua:owner/repo = "latest" // after — use a backend that supports the package [tools] github:owner/repo = "latest"
Defensive patterns
Strategy: fallback
Validate before calling
// before adding an aqua: tool, check its package type via the registry
const pkg = await fetchAquaRegistryEntry(pkgName);
const supported = ["github_release", "github_archive", "http"]; // types mise's aqua backend handles
if (!supported.includes(pkg.package_type)) {
console.warn(`aqua package type '${pkg.package_type}' unsupported; use github:/cargo: backend instead`);
} Try / catch
try {
await $`mise install`;
} catch (e) {
if (String(e).includes("unsupported aqua package type")) {
// fall back to an alternative backend for this tool
await $`mise use github:${ownerRepo}`;
} else throw e;
} Prevention
- Prefer explicit backends (github:, cargo:) over aqua: shorthand for tools with unusual packaging
- Keep mise updated so embedded aqua registry and package-type handling stay current
- Test new tool additions in a scratch mise.toml before committing them
When it happens
Trigger: Installing a tool from the aqua registry whose package entry has a package_type that maps to an unhandled AquaPackageType variant, at the point where install_asset_url (src/backend/aqua.rs:2193) computes the (url, api_url, ...) tuple for the resolved version.
Common situations: The aqua upstream registry adds or uses a new package type (e.g. newer release-artifact packaging modes) before mise's embedded registry/codegen supports it; a hand-written or pinned aqua package YAML uses a rare type; the embedded aqua registry in the mise build is older than packages it references.
Related errors
- package type `cargo` is not supported in the aqua backend. U
- package type `go_install` is not supported in the aqua backe
- package type `{}` is not supported in the aqua backend. Use
- unexpected character: {}
- expected closing parenthesis
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/c61cfa0c0e27994e.
Report an issue: GitHub.