





























@@ -382,8 +382,8 @@ function assertExternalPluginInstall(records, pluginId, packageName) {
382382const record = records[pluginId];
383383assert(record, `configured external ${pluginId} plugin install record missing`);
384384assert(
385-record.source === "clawhub" || record.source === "npm",
386-`configured external ${pluginId} plugin installed from unexpected source: ${record.source}`,
385+record.source === "npm",
386+`configured external ${pluginId} plugin must be installed from npm, got: ${record.source}`,
387387);
388388const installPath = resolveHomePath(record.installPath);
389389assert(
@@ -398,32 +398,20 @@ function assertExternalPluginInstall(records, pluginId, packageName) {
398398fs.existsSync(path.join(installPath, "package.json")),
399399`configured external ${pluginId} plugin package.json missing: ${installPath}`,
400400);
401-if (record.source === "clawhub") {
402-assert(
403-String(record.spec ?? "").startsWith(`clawhub:${packageName}`),
404-`configured external ${pluginId} plugin ClawHub spec changed`,
405-);
406-} else {
407-const npmRoot = path.join(requireEnv("OPENCLAW_STATE_DIR"), "npm", "node_modules");
408-assert(
409-isPathInside(npmRoot, installPath),
410-`configured external ${pluginId} npm install path outside managed npm root: ${installPath}`,
411-);
412-assert(
413-String(record.spec ?? record.resolvedSpec ?? "").startsWith(packageName),
414-`configured external ${pluginId} plugin npm spec changed`,
415-);
416-}
417-}
418-419-function assertConfiguredPluginAvailable(index, pluginId, packageName) {
420-const records = index.installRecords ?? {};
421-const bundled = (index.plugins ?? []).find((plugin) => plugin?.pluginId === pluginId);
422-if (bundled) {
423-assert(bundled.enabled !== false, `configured bundled ${pluginId} plugin is disabled`);
424-return;
425-}
426-assertExternalPluginInstall(records, pluginId, packageName);
401+const packageJson = readJson(path.join(installPath, "package.json"));
402+assert(
403+packageJson.name === packageName,
404+`configured external ${pluginId} package name changed: ${packageJson.name}`,
405+);
406+const npmRoot = path.join(requireEnv("OPENCLAW_STATE_DIR"), "npm", "node_modules");
407+assert(
408+isPathInside(npmRoot, installPath),
409+`configured external ${pluginId} npm install path outside managed npm root: ${installPath}`,
410+);
411+assert(
412+String(record.spec ?? record.resolvedSpec ?? "").startsWith(packageName),
413+`configured external ${pluginId} plugin npm spec changed`,
414+);
427415}
428416429417function assertConfiguredPluginInstalls() {
@@ -442,7 +430,10 @@ function assertConfiguredPluginInstalls() {
442430assert(!matrix, "internal matrix plugin should not be installed externally");
443431assert(bundledMatrix, "configured bundled matrix plugin is missing from the plugin index");
444432assert(bundledMatrix.enabled !== false, "configured bundled matrix plugin is disabled");
445-assertConfiguredPluginAvailable(index, "brave", "@openclaw/brave-plugin");
433+const brave = (index.plugins ?? []).find((plugin) => plugin?.pluginId === "brave");
434+assert(brave, "configured external brave plugin is missing from the plugin index");
435+assert(brave.enabled !== false, "configured external brave plugin is disabled");
436+assertExternalPluginInstall(records, "brave", "@openclaw/brave-plugin");
446437assert(!records.telegram, "internal telegram plugin should not be installed externally");
447438}
448439此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。