mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 20:20:42 +00:00
92 lines
2.5 KiB
TypeScript
92 lines
2.5 KiB
TypeScript
import type { AuthProfileStore } from "../agents/auth-profiles/types.js";
|
|
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
|
import type { MediaNormalizationEntry } from "../media-generation/normalization.types.js";
|
|
|
|
export type MusicGenerationOutputFormat = "mp3" | "wav";
|
|
|
|
export type GeneratedMusicAsset = {
|
|
buffer: Buffer;
|
|
mimeType: string;
|
|
fileName?: string;
|
|
metadata?: Record<string, unknown>;
|
|
};
|
|
|
|
export type MusicGenerationSourceImage = {
|
|
url?: string;
|
|
buffer?: Buffer;
|
|
mimeType?: string;
|
|
fileName?: string;
|
|
metadata?: Record<string, unknown>;
|
|
};
|
|
|
|
type MusicGenerationProviderConfiguredContext = {
|
|
cfg?: OpenClawConfig;
|
|
agentDir?: string;
|
|
};
|
|
|
|
export type MusicGenerationRequest = {
|
|
provider: string;
|
|
model: string;
|
|
prompt: string;
|
|
cfg: OpenClawConfig;
|
|
agentDir?: string;
|
|
authStore?: AuthProfileStore;
|
|
timeoutMs?: number;
|
|
lyrics?: string;
|
|
instrumental?: boolean;
|
|
durationSeconds?: number;
|
|
format?: MusicGenerationOutputFormat;
|
|
inputImages?: MusicGenerationSourceImage[];
|
|
};
|
|
|
|
export type MusicGenerationResult = {
|
|
tracks: GeneratedMusicAsset[];
|
|
model?: string;
|
|
lyrics?: string[];
|
|
metadata?: Record<string, unknown>;
|
|
};
|
|
|
|
export type MusicGenerationIgnoredOverride = {
|
|
key: "lyrics" | "instrumental" | "durationSeconds" | "format";
|
|
value: string | boolean | number;
|
|
};
|
|
|
|
export type MusicGenerationMode = "generate" | "edit";
|
|
|
|
export type MusicGenerationModeCapabilities = {
|
|
maxTracks?: number;
|
|
maxDurationSeconds?: number;
|
|
supportsLyrics?: boolean;
|
|
supportsInstrumental?: boolean;
|
|
supportsDuration?: boolean;
|
|
supportsFormat?: boolean;
|
|
supportedFormats?: readonly MusicGenerationOutputFormat[];
|
|
supportedFormatsByModel?: Readonly<Record<string, readonly MusicGenerationOutputFormat[]>>;
|
|
};
|
|
|
|
export type MusicGenerationEditCapabilities = MusicGenerationModeCapabilities & {
|
|
enabled: boolean;
|
|
maxInputImages?: number;
|
|
};
|
|
|
|
export type MusicGenerationProviderCapabilities = MusicGenerationModeCapabilities & {
|
|
maxInputImages?: number;
|
|
generate?: MusicGenerationModeCapabilities;
|
|
edit?: MusicGenerationEditCapabilities;
|
|
};
|
|
|
|
export type MusicGenerationNormalization = {
|
|
durationSeconds?: MediaNormalizationEntry<number>;
|
|
};
|
|
|
|
export type MusicGenerationProvider = {
|
|
id: string;
|
|
aliases?: string[];
|
|
label?: string;
|
|
defaultModel?: string;
|
|
models?: string[];
|
|
capabilities: MusicGenerationProviderCapabilities;
|
|
isConfigured?: (ctx: MusicGenerationProviderConfiguredContext) => boolean;
|
|
generateMusic: (req: MusicGenerationRequest) => Promise<MusicGenerationResult>;
|
|
};
|