
























@@ -492,6 +492,36 @@ function isTrustedSourceLinkedOfficialBridgeNpmInstall(params: {
492492return Boolean(officialPackageName && requestedPackageName === officialPackageName);
493493}
494494495+function isBridgeNpmInstall(params: {
496+bridge: ExternalizedBundledPluginBridge;
497+record: PluginInstallRecord;
498+}): boolean {
499+const npmSpec = getExternalizedBundledPluginNpmSpec(params.bridge);
500+if (!npmSpec || params.record.source !== "npm") {
501+return false;
502+}
503+const bridgePackageName = resolveNpmSpecPackageName(npmSpec);
504+const recordPackageName =
505+params.record.resolvedName ??
506+resolveNpmSpecPackageName(params.record.spec) ??
507+resolveNpmSpecPackageName(params.record.resolvedSpec);
508+return Boolean(bridgePackageName && recordPackageName === bridgePackageName);
509+}
510+511+function isBridgeClawHubInstall(params: {
512+bridge: ExternalizedBundledPluginBridge;
513+record: PluginInstallRecord;
514+}): boolean {
515+if (params.record.source !== "clawhub") {
516+return false;
517+}
518+const clawhubSpec = getExternalizedBundledPluginClawHubSpec(params.bridge);
519+const bridgeClawHubPackage = clawhubSpec ? parseClawHubPluginSpec(clawhubSpec)?.name : undefined;
520+const recordClawHubPackage =
521+params.record.clawhubPackage ?? parseClawHubPluginSpec(params.record.spec ?? "")?.name;
522+return Boolean(bridgeClawHubPackage && recordClawHubPackage === bridgeClawHubPackage);
523+}
524+495525function resolveNpmUpdateSpecs(params: {
496526record: PluginInstallRecord;
497527specOverride?: string;
@@ -576,28 +606,20 @@ function isBridgeAlreadyInstalledFromPreferredSource(params: {
576606bridge: ExternalizedBundledPluginBridge;
577607record: PluginInstallRecord;
578608}): boolean {
579-const npmSpec = getExternalizedBundledPluginNpmSpec(params.bridge);
580-if (npmSpec && params.record.source === "npm") {
581-const bridgePackageName = resolveNpmSpecPackageName(npmSpec);
582-const recordPackageName =
583-params.record.resolvedName ??
584-resolveNpmSpecPackageName(params.record.spec) ??
585-resolveNpmSpecPackageName(params.record.resolvedSpec);
586-if (bridgePackageName && recordPackageName === bridgePackageName) {
587-return true;
588-}
589-}
590-const clawhubSpec = getExternalizedBundledPluginClawHubSpec(params.bridge);
591-const bridgeClawHubPackage = clawhubSpec ? parseClawHubPluginSpec(clawhubSpec)?.name : undefined;
592-const recordClawHubPackage =
593-params.record.source === "clawhub"
594- ? (params.record.clawhubPackage ?? parseClawHubPluginSpec(params.record.spec ?? "")?.name)
595- : undefined;
596-return Boolean(
597-bridgeClawHubPackage &&
598-params.record.source === "clawhub" &&
599-recordClawHubPackage === bridgeClawHubPackage,
600-);
609+const preferredSource = getExternalizedBundledPluginPreferredSource(params.bridge);
610+return preferredSource === "clawhub"
611+ ? isBridgeClawHubInstall(params)
612+ : isBridgeNpmInstall(params);
613+}
614+615+function isBridgeInstalledFromFallbackSource(params: {
616+bridge: ExternalizedBundledPluginBridge;
617+record: PluginInstallRecord;
618+}): boolean {
619+const preferredSource = getExternalizedBundledPluginPreferredSource(params.bridge);
620+return preferredSource === "clawhub"
621+ ? isBridgeNpmInstall(params)
622+ : isBridgeClawHubInstall(params);
601623}
602624603625function replacePluginIdInList(
@@ -1448,6 +1470,10 @@ export async function syncPluginsForUpdateChannel(params: {
14481470 bridge,
14491471record: existing.record,
14501472 env,
1473+}) &&
1474+!isBridgeInstalledFromFallbackSource({
1475+ bridge,
1476+record: existing.record,
14511477})
14521478) {
14531479continue;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。