{"record":{"id":"c61cfa0c0e27994e","repo":"jdx/mise","slug":"unsupported-aqua-package-type-t","errorCode":null,"errorMessage":"unsupported aqua package type: {t}","messagePattern":"unsupported aqua package type: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/backend/aqua.rs","lineNumber":2193,"sourceCode":"                if pkg.path.is_some() {\n                    Ok((\n                        self.github_content_url(pkg, v),\n                        Some(self.github_content_api_url(pkg, v)),\n                        false,\n                        None,\n                    ))\n                } else {\n                    bail!(\"github_content package requires `path`\")\n                }\n            }\n            AquaPackageType::GithubArchive => Ok((\n                self.github_archive_url(pkg, v),\n                Some(self.github_archive_api_url(pkg, v)),\n                false,\n                None,\n            )),\n            AquaPackageType::Http => pkg.url(v, os(), arch()).map(|url| (url, None, false, None)),\n            ref t => bail!(\"unsupported aqua package type: {t}\"),\n        }\n    }\n\n    async fn github_release_url(\n        &self,\n        pkg: &AquaPackage,\n        v: &str,\n    ) -> Result<(String, Option<String>, Option<String>)> {\n        let target = PlatformTarget::from_current();\n        let asset_strs = pkg.asset_strs(v, os(), arch())?;\n        self.github_release_asset_for_target(pkg, v, asset_strs, &target)\n            .await\n    }\n\n    /// Resolve a GitHub release asset to `(canonical_url, transport_url)`.\n    ///\n    /// `canonical_url` is the browser download URL (`github.com/.../releases/download/...`),\n    /// which carries the real asset filename — use it for filename derivation and for any","sourceCodeStart":2175,"sourceCodeEnd":2211,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/backend/aqua.rs#L2175-L2211","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before (mise.toml)\n[tools]\naqua:owner/repo = \"latest\"\n\n// after — use a backend that supports the package\n[tools]\ngithub:owner/repo = \"latest\"","handlingStrategy":"fallback","validationCode":"// before adding an aqua: tool, check its package type via the registry\nconst pkg = await fetchAquaRegistryEntry(pkgName);\nconst supported = [\"github_release\", \"github_archive\", \"http\"]; // types mise's aqua backend handles\nif (!supported.includes(pkg.package_type)) {\n  console.warn(`aqua package type '${pkg.package_type}' unsupported; use github:/cargo: backend instead`);\n}","typeGuard":null,"tryCatchPattern":"try {\n  await $`mise install`;\n} catch (e) {\n  if (String(e).includes(\"unsupported aqua package type\")) {\n    // fall back to an alternative backend for this tool\n    await $`mise use github:${ownerRepo}`;\n  } else throw e;\n}","preventionTips":["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"],"tags":["aqua","backend","package-type"],"backgroundTag":"unsupported-enum-value","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}