feat(plugins): add image generation capability

This commit is contained in:
Peter Steinberger
2026-03-16 22:56:14 -07:00
parent c79ade10e6
commit aa2d5aaa0c
38 changed files with 701 additions and 4 deletions

View File

@@ -46,6 +46,7 @@ function fakeApi(overrides: Partial<OpenClawPluginApi> = {}): OpenClawPluginApi
registerProvider() {},
registerSpeechProvider() {},
registerMediaUnderstandingProvider() {},
registerImageGenerationProvider() {},
registerWebSearchProvider() {},
registerInteractiveHandler() {},
registerHook() {},

View File

@@ -1,4 +1,5 @@
import { emptyPluginConfigSchema, type OpenClawPluginApi } from "openclaw/plugin-sdk/core";
import { buildOpenAIImageGenerationProvider } from "openclaw/plugin-sdk/image-generation";
import { buildOpenAISpeechProvider } from "openclaw/plugin-sdk/speech";
import { openaiMediaUnderstandingProvider } from "./media-understanding-provider.js";
import { buildOpenAICodexProviderPlugin } from "./openai-codex-provider.js";
@@ -14,6 +15,7 @@ const openAIPlugin = {
api.registerProvider(buildOpenAICodexProviderPlugin());
api.registerSpeechProvider(buildOpenAISpeechProvider());
api.registerMediaUnderstandingProvider(openaiMediaUnderstandingProvider);
api.registerImageGenerationProvider(buildOpenAIImageGenerationProvider());
},
};

View File

@@ -17,6 +17,7 @@ export function createTestPluginApi(api: TestPluginApiInput): OpenClawPluginApi
registerProvider() {},
registerSpeechProvider() {},
registerMediaUnderstandingProvider() {},
registerImageGenerationProvider() {},
registerWebSearchProvider() {},
registerInteractiveHandler() {},
registerCommand() {},

View File

@@ -110,11 +110,17 @@ export function createPluginRuntimeMock(overrides: DeepPartial<PluginRuntime> =
runFile: vi.fn() as unknown as PluginRuntime["mediaUnderstanding"]["runFile"],
describeImageFile:
vi.fn() as unknown as PluginRuntime["mediaUnderstanding"]["describeImageFile"],
describeImageFileWithModel:
vi.fn() as unknown as PluginRuntime["mediaUnderstanding"]["describeImageFileWithModel"],
describeVideoFile:
vi.fn() as unknown as PluginRuntime["mediaUnderstanding"]["describeVideoFile"],
transcribeAudioFile:
vi.fn() as unknown as PluginRuntime["mediaUnderstanding"]["transcribeAudioFile"],
},
imageGeneration: {
generate: vi.fn() as unknown as PluginRuntime["imageGeneration"]["generate"],
listProviders: vi.fn() as unknown as PluginRuntime["imageGeneration"]["listProviders"],
},
webSearch: {
listProviders: vi.fn() as unknown as PluginRuntime["webSearch"]["listProviders"],
search: vi.fn() as unknown as PluginRuntime["webSearch"]["search"],