feat: add music generation tooling

This commit is contained in:
Peter Steinberger
2026-04-06 01:43:08 +01:00
parent 3de91d9e01
commit dc0ee2e178
79 changed files with 3538 additions and 620 deletions

View File

@@ -29,6 +29,7 @@ export function createTestPluginApi(api: TestPluginApiInput = {}): OpenClawPlugi
registerRealtimeVoiceProvider() {},
registerMediaUnderstandingProvider() {},
registerImageGenerationProvider() {},
registerMusicGenerationProvider() {},
registerVideoGenerationProvider() {},
registerWebFetchProvider() {},
registerWebSearchProvider() {},

View File

@@ -162,6 +162,10 @@ export function createPluginRuntimeMock(overrides: DeepPartial<PluginRuntime> =
generate: vi.fn() as unknown as PluginRuntime["imageGeneration"]["generate"],
listProviders: vi.fn() as unknown as PluginRuntime["imageGeneration"]["listProviders"],
},
musicGeneration: {
generate: vi.fn() as unknown as PluginRuntime["musicGeneration"]["generate"],
listProviders: vi.fn() as unknown as PluginRuntime["musicGeneration"]["listProviders"],
},
videoGeneration: {
generate: vi.fn() as unknown as PluginRuntime["videoGeneration"]["generate"],
listProviders: vi.fn() as unknown as PluginRuntime["videoGeneration"]["listProviders"],

View File

@@ -1,6 +1,7 @@
import type {
ImageGenerationProviderPlugin,
MediaUnderstandingProviderPlugin,
MusicGenerationProviderPlugin,
ProviderPlugin,
SpeechProviderPlugin,
VideoGenerationProviderPlugin,
@@ -12,6 +13,7 @@ type RegisteredProviderCollections = {
speechProviders: SpeechProviderPlugin[];
mediaProviders: MediaUnderstandingProviderPlugin[];
imageProviders: ImageGenerationProviderPlugin[];
musicProviders: MusicGenerationProviderPlugin[];
videoProviders: VideoGenerationProviderPlugin[];
};
@@ -28,6 +30,7 @@ export async function registerProviderPlugin(params: {
const speechProviders: SpeechProviderPlugin[] = [];
const mediaProviders: MediaUnderstandingProviderPlugin[] = [];
const imageProviders: ImageGenerationProviderPlugin[] = [];
const musicProviders: MusicGenerationProviderPlugin[] = [];
const videoProviders: VideoGenerationProviderPlugin[] = [];
await params.plugin.register(
@@ -49,13 +52,23 @@ export async function registerProviderPlugin(params: {
registerImageGenerationProvider: (provider) => {
imageProviders.push(provider);
},
registerMusicGenerationProvider: (provider) => {
musicProviders.push(provider);
},
registerVideoGenerationProvider: (provider) => {
videoProviders.push(provider);
},
}),
);
return { providers, speechProviders, mediaProviders, imageProviders, videoProviders };
return {
providers,
speechProviders,
mediaProviders,
imageProviders,
musicProviders,
videoProviders,
};
}
export function requireRegisteredProvider<T extends { id: string }>(