{"record":{"id":"c589c777e11b7b3e","repo":"LykosAI/StabilityMatrix","slug":"the-package-packagepair-basepackage-does-not-support","errorCode":null,"errorMessage":"The package {PackagePair?.BasePackage} does not support extensions.","messagePattern":"The package (.+?) does not support extensions\\.","errorType":"exception","errorClass":"NotSupportedException","httpStatus":null,"severity":"error","filePath":"StabilityMatrix.Avalonia/ViewModels/PackageManager/PackageExtensionBrowserViewModel.cs","lineNumber":788,"sourceCode":"\n        RefreshBackground();\n    }\n\n    public void RefreshBackground()\n    {\n        RefreshCore()\n            .SafeFireAndForget(ex =>\n            {\n                notificationService.ShowPersistent(\"Failed to refresh extensions\", ex.ToString());\n            });\n    }\n\n    private async Task RefreshCore()\n    {\n        using var _ = CodeTimer.StartDebug();\n\n        if (PackagePair?.BasePackage.ExtensionManager is not { } extensionManager)\n            throw new NotSupportedException(\n                $\"The package {PackagePair?.BasePackage} does not support extensions.\"\n            );\n\n        var availableExtensions = (\n            await extensionManager.GetManifestExtensionsAsync(\n                extensionManager.GetManifests(PackagePair.InstalledPackage)\n            )\n        ).ToArray();\n\n        var installedExtensions = (\n            await extensionManager.GetInstalledExtensionsAsync(PackagePair.InstalledPackage)\n        ).ToArray();\n\n        // Synchronize\n        SynchronizeExtensions(availableExtensions, installedExtensions);\n\n        await Task.Run(() =>\n        {","sourceCodeStart":770,"sourceCodeEnd":806,"githubUrl":"https://github.com/LykosAI/StabilityMatrix/blob/af93d6ef57c01cd890d7e0ad0a9ea8c9fcda3002/StabilityMatrix.Avalonia/ViewModels/PackageManager/PackageExtensionBrowserViewModel.cs#L770-L806","documentation":"RefreshCore in PackageExtensionBrowserViewModel requires the package's BasePackage to expose an ExtensionManager. If PackagePair?.BasePackage.ExtensionManager is null, it throws NotSupportedException stating the package does not support extensions. This is a capability check: only packages whose implementation provides an extension manager can browse or install extensions.","triggerScenarios":"Opening the extension browser (Refresh/RefreshBackground -> RefreshCore) for a package whose type does not implement an ExtensionManager, or when PackagePair/BasePackage is null so the extension manager lookup fails.","commonSituations":"Browsing extensions for a backend package (e.g. ComfyUI vs a package without extension support) that lacks extension integration; a partially initialized PackagePair where BasePackage hasn't been set; a package version whose extension support was added later.","solutions":["Use this view only with packages that support extensions (BasePackage.ExtensionManager != null).","Guard the caller with a capability check before opening the extension browser and disable the entry point otherwise.","Verify PackagePair is fully initialized (BasePackage and InstalledPackage set) before refreshing.","Update the package/base package definition to one that implements an ExtensionManager."],"exampleFix":"// before\nif (PackagePair?.BasePackage.ExtensionManager is not { } extensionManager)\n    throw new NotSupportedException($\"The package {PackagePair?.BasePackage} does not support extensions.\");\n// after\nif (PackagePair?.BasePackage.ExtensionManager is not { } extensionManager)\n{\n    Logger.LogWarning(\"Package {Package} does not support extensions; skipping refresh\", PackagePair?.BasePackage);\n    return;\n}","handlingStrategy":"try-catch","validationCode":"if (viewModel.PackagePair?.BasePackage?.ExtensionManager is null) {\n    // disable the extension browser entry point for this package\n    return;\n}","typeGuard":"bool SupportsExtensions(PackagePair? pair) => pair?.BasePackage?.ExtensionManager is not null;","tryCatchPattern":"try { await viewModel.Refresh(); }\ncatch (NotSupportedException ex) { Logger.LogWarning(ex, \"Extensions unsupported\"); Notify(\"This package does not support extensions.\"); }","preventionTips":["Only expose the extension browser UI for package types with an ExtensionManager.","Verify PackagePair and BasePackage are initialized before opening the view.","Document which packages support extensions so users know what to expect."],"tags":["not-supported","extensions","capability-check"],"backgroundTag":"operation-not-supported","analyzedSha":"af93d6ef57c01cd890d7e0ad0a9ea8c9fcda3002","analyzedAt":"2026-09-12T19:02:43.389Z","contentChangedAt":"2026-09-12T19:02:43.389Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}