






















@@ -7,6 +7,7 @@ import {
77setCurrentPluginMetadataSnapshot,
88} from "../plugins/current-plugin-metadata-snapshot.js";
99import { resolveInstalledPluginIndexPolicyHash } from "../plugins/installed-plugin-index-policy.js";
10+import type { InstalledPluginIndexRecord } from "../plugins/installed-plugin-index.js";
1011import type { PluginManifestRecord } from "../plugins/manifest-registry.js";
1112import type { PluginMetadataSnapshot } from "../plugins/plugin-metadata-snapshot.types.js";
1213import type { AuthProfileStore } from "./auth-profiles/types.js";
@@ -56,6 +57,39 @@ function createPlugin(params: {
5657};
5758}
585960+function createInstalledPluginRecord(
61+plugin: PluginManifestRecord,
62+enabledPluginIds: string[],
63+): InstalledPluginIndexRecord {
64+const enabled = plugin.origin === "bundled" || enabledPluginIds.includes(plugin.id);
65+return {
66+pluginId: plugin.id,
67+manifestPath: plugin.manifestPath,
68+manifestHash: `test-${plugin.id}`,
69+source: plugin.source,
70+rootDir: plugin.rootDir,
71+origin: plugin.origin,
72+ enabled,
73+startup: {
74+sidecar: false,
75+memory: false,
76+deferConfiguredChannelFullLoadUntilAfterListen: false,
77+agentHarnesses: [],
78+},
79+compat: [],
80+};
81+}
82+83+function legacyModelProviderConfig(provider: Record<string, unknown>): OpenClawConfig {
84+return {
85+models: {
86+providers: {
87+comfy: provider as never,
88+},
89+},
90+};
91+}
92+5993function installSnapshot(
6094config: OpenClawConfig,
6195plugins: PluginManifestRecord[],
@@ -68,11 +102,15 @@ function installSnapshot(
68102policyHash: resolveInstalledPluginIndexPolicyHash(config),
69103 ...(workspaceDir ? { workspaceDir } : {}),
70104index: {
71-plugins: plugins.map((plugin) => ({
72-pluginId: plugin.id,
73-origin: plugin.origin,
74-enabled: plugin.origin === "bundled" || enabledPluginIds.includes(plugin.id),
75-})),
105+version: 1,
106+hostContractVersion: "test",
107+compatRegistryVersion: "test",
108+migrationVersion: 1,
109+policyHash: "test",
110+generatedAtMs: 0,
111+installRecords: {},
112+plugins: plugins.map((plugin) => createInstalledPluginRecord(plugin, enabledPluginIds)),
113+diagnostics: [],
76114},
77115registryDiagnostics: [],
78116manifestRegistry: { plugins, diagnostics: [] },
@@ -530,16 +568,10 @@ describe("optional media tool factory planning", () => {
530568it.each([
531569{
532570name: "legacy local provider config",
533-config: {
534-models: {
535-providers: {
536-comfy: {
537-workflow: { "1": { inputs: {} } },
538-promptNodeId: "1",
539-},
540-},
541-},
542-} satisfies OpenClawConfig,
571+config: legacyModelProviderConfig({
572+workflow: { "1": { inputs: {} } },
573+promptNodeId: "1",
574+}),
543575},
544576{
545577name: "plugin cloud API key config",
@@ -560,18 +592,12 @@ describe("optional media tool factory planning", () => {
560592},
561593{
562594name: "legacy cloud API key config",
563-config: {
564-models: {
565-providers: {
566-comfy: {
567-mode: "cloud",
568-apiKey: "cloud-key",
569-workflow: { "1": { inputs: {} } },
570-promptNodeId: "1",
571-},
572-},
573-},
574-} satisfies OpenClawConfig,
595+config: legacyModelProviderConfig({
596+mode: "cloud",
597+apiKey: "cloud-key",
598+workflow: { "1": { inputs: {} } },
599+promptNodeId: "1",
600+}),
575601},
576602])(
577603"registers generation tools from Comfy $name without a current metadata snapshot",
@@ -596,6 +622,7 @@ describe("optional media tool factory planning", () => {
596622providers: {
597623openai: {
598624baseUrl: "http://localhost:11434/v1",
625+models: [],
599626},
600627},
601628},
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。