{"record":{"id":"985ce33ae66a6e02","repo":"jdx/mise","slug":"brew-cask-unsupported-artifact-type","errorCode":null,"errorMessage":"brew-cask:{}: unsupported artifact type {}","messagePattern":"brew-cask:(.+?): unsupported artifact type (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/system/packages/brew/cask.rs","lineNumber":4996,"sourceCode":"            continue;\n        }\n        if let Some(artifact) = parse_generic_artifact(artifact)? {\n            artifacts.generic.push(artifact);\n            continue;\n        }\n        if let Some(font) = parse_font_artifact(artifact) {\n            artifacts.fonts.push(font);\n            continue;\n        }\n        if let Some(completion) = parse_completion_artifact(artifact)? {\n            artifacts.completions.push(completion);\n            continue;\n        }\n        if let Some(generated) = parse_generated_completion_artifact(artifact)? {\n            artifacts.generated_completions.push(generated);\n            continue;\n        }\n        bail!(\n            \"brew-cask:{}: unsupported artifact type {}\",\n            cask.token,\n            artifact_type\n        );\n    }\n    if artifacts.apps.is_empty()\n        && artifacts.binaries.is_empty()\n        && artifacts.command_wrappers.is_empty()\n        && artifacts.pkgs.is_empty()\n        && artifacts.installers.is_empty()\n        && artifacts.generic.is_empty()\n        && artifacts.fonts.is_empty()\n        && artifacts.completions.is_empty()\n        && artifacts.generated_completions.is_empty()\n    {\n        bail!(\n            \"brew-cask:{}: no supported install artifact found\",\n            cask.token","sourceCodeStart":4978,"sourceCodeEnd":5014,"githubUrl":"https://github.com/jdx/mise/blob/6f52dcdf99e282ef7a7db68c81301fa4618d0f79/src/system/packages/brew/cask.rs#L4978-L5014","documentation":"While building the artifact inventory for a cask, mise runs each stanza through its parse_* helpers (app, binary, pkg, installer, generic, font, completion, generated completion, command_wrapper). If a stanza's artifact type matches none of them, mise explicitly rejects the cask as unsupported rather than silently skipping the stanza — the error names the cask token and the unknown artifact type string.","triggerScenarios":"Installing a brew-cask whose 'artifacts' include kinds mise does not implement: e.g. stage_only-only casks plus plugin types like audio_unit_plugin, vst_plugin, vst3_plugin, screen_saver, input_method, dictionary, mdimporter, colorpicker, suite, or a newly introduced Homebrew artifact key from a schema update.","commonSituations":"Audio plugins (VST/AU), screensavers, and input methods are the classic non-app artifact casks; Homebrew occasionally adds new artifact keys that mise has not caught up with; older mise versions fail on artifact types added in later Homebrew schema revisions.","solutions":["Check which artifact type is named in the message and confirm mise's currently supported set (apps, binaries, pkgs, installers, fonts, completions, command wrappers, generic artifacts).","Update mise — newer releases add artifact support over time; re-run the install after upgrading.","If the unsupported artifact is essential (a VST plugin must go to ~/Library/Audio/Plug-Ins), install that cask with real Homebrew instead of mise.","Choose an equivalent cask whose payload uses supported artifact types when one exists."],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":"# filter casks by supported artifact kinds before adding them\nSUPPORTED='{app,binary,pkg,installer,font,completion,generic}'\nUNSUPPORTED=$(jq -r '[.artifacts[] | keys[]] | unique | map(select(. as $k | [\"app\",\"binary\",\"pkg\",\"installer\",\"font\",\"completion\"] | index($k) | not)) | join(\", \")' cask.json)\n[ -z \"$UNSUPPORTED\" ] || echo \"skip: unsupported artifacts $UNSUPPORTED\"","typeGuard":"const SUPPORTED = new Set([\"app\",\"binary\",\"pkg\",\"installer\",\"font\",\"completion\",\"uninstall\",\"preflight\",\"postflight\"]);\nfunction hasSupportedArtifacts(cask) {\n  return (cask.artifacts ?? []).some(a => Object.keys(a).some(k => SUPPORTED.has(k)));\n}","tryCatchPattern":null,"preventionTips":["Pre-check a cask's artifact keys against mise's supported set before adding it to mise.toml.","Keep mise updated when Homebrew adds new artifact kinds.","Use real Homebrew for plugin-type casks (VST/AU/screensaver) by design."],"tags":["brew-cask","artifacts","unsupported-feature","mise"],"backgroundTag":"unsupported-artifact-type","analyzedSha":"6f52dcdf99e282ef7a7db68c81301fa4618d0f79","analyzedAt":"2026-08-22T10:14:23.840Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}