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 any

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Update mise to the latest version so the embedded aqua registry and AquaPackageType handling are current
  2. 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
  3. Pin an older version of the tool whose package entry uses a supported package type
  4. 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

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


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/c61cfa0c0e27994e. Report an issue: GitHub.