import { describe, expect, it } from "vitest" ;
import type { PluginManifestRegistry } from "../plugins/manifest-registry.js" ;
import { applyPluginAutoEnable } from "./plugin-auto-enable.js" ;
import { makeIsolatedEnv } from "./plugin-auto-enable.test-helpers.js" ;
function makeRegistry(
plugins: Array<{
id: string;
modelSupport?: { modelPrefixes?: string[]; modelPatterns?: string[] };
}>,
): PluginManifestRegistry {
return {
plugins: plugins.map((plugin) => ({
id: plugin.id,
channels: [],
providers: [],
modelSupport: plugin.modelSupport,
cliBackends: [],
skills: [],
hooks: [],
origin: "config" as const ,
rootDir: `/fake/${plugin.id}`,
source: `/fake/${plugin.id}/index.js`,
manifestPath: `/fake/${plugin.id}/openclaw.plugin.json`,
})),
diagnostics: [],
};
}
describe("applyPluginAutoEnable modelSupport" , () => {
it("auto-enables provider plugins from shorthand modelSupport ownership" , () => {
const result = applyPluginAutoEnable({
config: {
agents: {
defaults: {
model: "gpt-5.4" ,
},
},
},
env: makeIsolatedEnv(),
manifestRegistry: makeRegistry([
{
id: "openai" ,
modelSupport: {
modelPrefixes: ["gpt-" , "o1" , "o3" , "o4" ],
},
},
]),
});
expect(result.config.plugins?.entries?.openai?.enabled).toBe(true );
expect(result.changes).toContain("gpt-5.4 model configured, enabled automatically." );
});
it("skips ambiguous shorthand model ownership during auto-enable" , () => {
const result = applyPluginAutoEnable({
config: {
agents: {
defaults: {
model: "gpt-5.4" ,
},
},
},
env: makeIsolatedEnv(),
manifestRegistry: makeRegistry([
{
id: "openai" ,
modelSupport: {
modelPrefixes: ["gpt-" ],
},
},
{
id: "proxy-openai" ,
modelSupport: {
modelPrefixes: ["gpt-" ],
},
},
]),
});
expect(result.config.plugins?.entries?.openai).toBeUndefined();
expect(result.config.plugins?.entries?.["proxy-openai" ]).toBeUndefined();
expect(result.changes).toEqual([]);
});
});
Messung V0.5 in Prozent C=100 H=100 G=100
[Dauer der Verarbeitung: 0.4 Sekunden, vorverarbeitet 2026-09-27]