{"record":{"id":"70ba076b694c1a11","repo":"Devolutions/UniGetUI","slug":"no-ready-package-manager-matching-managername","errorCode":null,"errorMessage":"No ready package manager matching \"{managerName}\" is available.","messagePattern":"No ready package manager matching \"(.+?)\" is available\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":400,"severity":"error","filePath":"src/UniGetUI.Interface.IpcApi/IpcPackageApi.cs","lineNumber":758,"sourceCode":"\n        return loader.Packages.Where(package => MatchesManager(package.Manager, managerName)).ToArray();\n    }\n\n    private static IReadOnlyList<IPackageManager> GetManagers(string? managerName)\n    {\n        var managers = PEInterface.Managers\n            .Where(manager => manager.IsEnabled() && manager.IsReady())\n            .Where(manager => MatchesManager(manager, managerName))\n            .ToArray();\n\n        if (managers.Length == 0)\n        {\n            if (string.IsNullOrWhiteSpace(managerName))\n            {\n                throw new InvalidOperationException(\"No ready package managers are available.\");\n            }\n\n            throw new InvalidOperationException(\n                $\"No ready package manager matching \\\"{managerName}\\\" is available.\"\n            );\n        }\n\n        return managers;\n    }\n\n    private static bool MatchesManager(IPackageManager manager, string? requestedManager)\n    {\n        return IpcManagerSettingsApi.MatchesManagerId(manager, requestedManager);\n    }\n\n    private static bool MatchesIdentity(IPackage package, IpcPackageActionRequest request)\n    {\n        if (!package.Id.Equals(request.PackageId, StringComparison.OrdinalIgnoreCase))\n        {\n            return false;\n        }","sourceCodeStart":740,"sourceCodeEnd":776,"githubUrl":"https://github.com/Devolutions/UniGetUI/blob/9b1d7d0eab91620fc15c86b36676532095936ae3/src/UniGetUI.Interface.IpcApi/IpcPackageApi.cs#L740-L776","documentation":"GetManagers throws 'No ready package manager matching \"X\"' when ready managers exist but none match the requested managerName (matched by public manager id via IpcManagerSettingsApi.MatchesManagerId).","triggerScenarios":"Passing a managerName that is a typo, a display name, or refers to a disabled/not-ready manager.","commonSituations":"Client uses the human display name instead of the public id; that manager is disabled; casing/format mismatch.","solutions":["Use the public manager id returned by the get-managers/list endpoint","Drop managerName to let the API match any ready manager when the specific one is optional","Verify the named manager is enabled and ready first"],"exampleFix":"// before\nawait IpcPackageApi.InstallPackageAsync(\n    new IpcPackageActionRequest { ManagerName = \"Winget\", PackageId = \"git\" });\n// after\nvar id = (await GetManagersAsync()).First(m => m.Name == \"Winget\").Id; // \"winget\"\nawait IpcPackageApi.InstallPackageAsync(\n    new IpcPackageActionRequest { ManagerName = id, PackageId = \"git\" });","handlingStrategy":"validation","validationCode":"var validIds = PEInterface.Managers\n    .Where(m => m.IsEnabled() && m.IsReady())\n    .Select(IpcManagerSettingsApi.GetPublicManagerId)\n    .ToHashSet(StringComparer.OrdinalIgnoreCase);\nif (!validIds.Contains(managerName))\n    throw new ArgumentException($\"Unknown manager: {managerName}\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always use the public manager id, not the display name","Re-fetch the manager list when a name lookup fails"],"tags":["ipc","manager","lookup"],"backgroundTag":null,"analyzedSha":"9b1d7d0eab91620fc15c86b36676532095936ae3","analyzedAt":"2026-08-13T12:19:18.278Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}