























@@ -21,6 +21,7 @@ import {
2121resolveMemoryDreamingConfig,
2222resolveMemoryDreamingPluginConfig,
2323} from "../memory-host-sdk/dreaming.js";
24+import { toSafeImportPath } from "../shared/import-specifier.js";
2425import {
2526clearDetachedTaskLifecycleRuntimeRegistration,
2627getDetachedTaskLifecycleRuntimeRegistration,
@@ -66,7 +67,6 @@ import {
6667} from "./embedding-providers.js";
6768import { shouldRejectHardlinkedPluginFiles } from "./hardlink-policy.js";
6869import { initializeGlobalHookRunner } from "./hook-runner-global.js";
69-import { toSafeImportPath } from "../shared/import-specifier.js";
7070import { collectPluginManifestCompatCodes } from "./installed-plugin-index-record-builder.js";
7171import { loadInstalledPluginIndexInstallRecordsSync } from "./installed-plugin-index-records.js";
7272import {
@@ -1770,6 +1770,28 @@ function pushDiagnostics(diagnostics: PluginDiagnostic[], append: PluginDiagnost
17701770diagnostics.push(...append);
17711771}
177217721773+function pushPluginValidationError(params: {
1774+registry: PluginRegistry;
1775+seenIds: Map<string, PluginRecord["origin"]>;
1776+pluginId: string;
1777+origin: PluginRecord["origin"];
1778+record: PluginRecord;
1779+message: string;
1780+}) {
1781+params.record.status = "error";
1782+params.record.error = params.message;
1783+params.record.failedAt = new Date();
1784+params.record.failurePhase = "validation";
1785+params.registry.plugins.push(params.record);
1786+params.seenIds.set(params.pluginId, params.origin);
1787+params.registry.diagnostics.push({
1788+level: "error",
1789+pluginId: params.record.id,
1790+source: params.record.source,
1791+message: params.record.error,
1792+});
1793+}
1794+17731795function maybeThrowOnPluginLoadError(
17741796registry: PluginRegistry,
17751797throwOnLoadError: boolean | undefined,
@@ -2193,20 +2215,15 @@ export function loadOpenClawPlugins(options: PluginLoadOptions = {}): PluginRegi
21932215manifestRecord.channels.length > 0 &&
21942216candidate.origin !== "bundled" &&
21952217!trustedLocalScopedChannelSetupImport;
2196-const pushPluginLoadError = (message: string) => {
2197-record.status = "error";
2198-record.error = message;
2199-record.failedAt = new Date();
2200-record.failurePhase = "validation";
2201-registry.plugins.push(record);
2202-seenIds.set(pluginId, candidate.origin);
2203-registry.diagnostics.push({
2204-level: "error",
2205-pluginId: record.id,
2206-source: record.source,
2207-message: record.error,
2218+const pushPluginLoadError = (message: string) =>
2219+pushPluginValidationError({
2220+ registry,
2221+ seenIds,
2222+ pluginId,
2223+origin: candidate.origin,
2224+ record,
2225+ message,
22082226});
2209-};
22102227if (blockUntrustedLocalScopedChannelSetupImport) {
22112228record.status = "disabled";
22122229record.error =
@@ -3160,20 +3177,15 @@ export async function loadOpenClawPluginCliRegistry(
31603177record.kind = manifestRecord.kind;
31613178record.configUiHints = manifestRecord.configUiHints;
31623179record.configJsonSchema = manifestRecord.configSchema;
3163-const pushPluginLoadError = (message: string) => {
3164-record.status = "error";
3165-record.error = message;
3166-record.failedAt = new Date();
3167-record.failurePhase = "validation";
3168-registry.plugins.push(record);
3169-seenIds.set(pluginId, candidate.origin);
3170-registry.diagnostics.push({
3171-level: "error",
3172-pluginId: record.id,
3173-source: record.source,
3174-message: record.error,
3180+const pushPluginLoadError = (message: string) =>
3181+pushPluginValidationError({
3182+ registry,
3183+ seenIds,
3184+ pluginId,
3185+origin: candidate.origin,
3186+ record,
3187+ message,
31753188});
3176-};
3177318931783190if (!enableState.enabled) {
31793191record.status = "disabled";
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。