fix(marketplace): preserve release sync semantics
This commit is contained in:
@@ -46,6 +46,7 @@ export type PluginUnavailableReasonCode =
|
||||
| 'client_incompatible'
|
||||
| 'project_disabled'
|
||||
| 'skill_unassigned'
|
||||
| 'skill_owner_conflict'
|
||||
| 'runtime_suspended'
|
||||
| 'policy_unavailable'
|
||||
| 'policy_unsupported'
|
||||
@@ -301,7 +302,14 @@ export class EffectivePluginResolver {
|
||||
}
|
||||
|
||||
for (const { definition, installed, unavailableReason } of definitions) {
|
||||
if (blockedMarketplacePlugins.has(definition.id)) continue;
|
||||
if (blockedMarketplacePlugins.has(definition.id)) {
|
||||
unavailableReasons.push(unavailable(
|
||||
definition.id,
|
||||
'skill_owner_conflict',
|
||||
'Plugin Skill ID conflicts with an existing owner',
|
||||
));
|
||||
continue;
|
||||
}
|
||||
const selectedSkills = definition.skills.filter(({ id }) => assigned.includes(id));
|
||||
if (selectedSkills.length === 0) {
|
||||
unavailableReasons.push(unavailable(definition.id, 'skill_unassigned', 'Plugin Skill is not assigned'));
|
||||
@@ -331,7 +339,7 @@ export class EffectivePluginResolver {
|
||||
unavailableReasons.push(unavailable(definition.id, 'account_required', 'Marketplace account is required'));
|
||||
continue;
|
||||
}
|
||||
if (!library || library.stale) {
|
||||
if (!library || (library.stale && definition.runtimeKind !== 'skill_only')) {
|
||||
unavailableReasons.push(unavailable(definition.id, 'library_unavailable', 'Marketplace Library is unavailable'));
|
||||
continue;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user