mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-03 20:44:07 +00:00
Extract pure media generation catalog/model-ref/normalization helpers into a private workspace package and wire the package through build, watch, SDK alias, and plugin boundary d.ts paths. Verification: - node scripts/run-vitest.mjs test/scripts/crabbox-wrapper.test.ts packages/media-generation-core/src src/media-generation/runtime-shared.test.ts src/plugins/sdk-alias.test.ts src/infra/watch-node.test.ts src/plugins/registry.provider-like.test.ts src/agents/model-ref-shared.test.ts extensions/codex-supervisor/src/plugin-tools.test.ts extensions/codex-supervisor/src/supervisor.test.ts src/wizard/setup.official-plugins.test.ts src/infra/net/http-connect-tunnel.test.ts - node scripts/prepare-extension-package-boundary-artifacts.mjs --mode=all - node scripts/run-vitest.mjs src/plugins/contracts/extension-package-project-boundaries.test.ts src/plugins/sdk-alias.test.ts - pnpm protocol:check - pnpm check:changed - .agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main - GitHub CI 26676608512
140 lines
4.0 KiB
TypeScript
140 lines
4.0 KiB
TypeScript
import type { MediaNormalizationEntry } from "../../packages/media-generation-core/src/normalization.js";
|
|
import type { AuthProfileStore } from "../agents/auth-profiles/types.js";
|
|
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
|
import type { SsrFPolicy } from "../infra/net/ssrf.js";
|
|
|
|
export type GeneratedImageAsset = {
|
|
buffer: Buffer;
|
|
mimeType: string;
|
|
fileName?: string;
|
|
revisedPrompt?: string;
|
|
metadata?: Record<string, unknown>;
|
|
};
|
|
|
|
export type ImageGenerationResolution = "1K" | "2K" | "4K";
|
|
|
|
export type ImageGenerationQuality = "low" | "medium" | "high" | "auto";
|
|
|
|
export type ImageGenerationOutputFormat = "png" | "jpeg" | "webp";
|
|
|
|
export type ImageGenerationBackground = "transparent" | "opaque" | "auto";
|
|
|
|
export type ImageGenerationOpenAIBackground = ImageGenerationBackground;
|
|
|
|
export type ImageGenerationOpenAIModeration = "low" | "auto";
|
|
|
|
export type ImageGenerationOpenAIOptions = {
|
|
background?: ImageGenerationOpenAIBackground;
|
|
moderation?: ImageGenerationOpenAIModeration;
|
|
outputCompression?: number;
|
|
user?: string;
|
|
};
|
|
|
|
export type ImageGenerationProviderOptions = Record<string, unknown> & {
|
|
openai?: ImageGenerationOpenAIOptions;
|
|
};
|
|
|
|
type ImageGenerationIgnoredOverrideKey =
|
|
| "size"
|
|
| "aspectRatio"
|
|
| "resolution"
|
|
| "quality"
|
|
| "outputFormat"
|
|
| "background";
|
|
|
|
export type ImageGenerationIgnoredOverride = {
|
|
key: ImageGenerationIgnoredOverrideKey;
|
|
value: string;
|
|
};
|
|
|
|
export type ImageGenerationSourceImage = {
|
|
buffer: Buffer;
|
|
mimeType: string;
|
|
fileName?: string;
|
|
metadata?: Record<string, unknown>;
|
|
};
|
|
|
|
export type ImageGenerationProviderConfiguredContext = {
|
|
cfg?: OpenClawConfig;
|
|
agentDir?: string;
|
|
};
|
|
|
|
export type ImageGenerationRequest = {
|
|
provider: string;
|
|
model: string;
|
|
prompt: string;
|
|
cfg: OpenClawConfig;
|
|
agentDir?: string;
|
|
authStore?: AuthProfileStore;
|
|
timeoutMs?: number;
|
|
count?: number;
|
|
size?: string;
|
|
aspectRatio?: string;
|
|
resolution?: ImageGenerationResolution;
|
|
quality?: ImageGenerationQuality;
|
|
outputFormat?: ImageGenerationOutputFormat;
|
|
background?: ImageGenerationBackground;
|
|
inputImages?: ImageGenerationSourceImage[];
|
|
providerOptions?: ImageGenerationProviderOptions;
|
|
ssrfPolicy?: SsrFPolicy;
|
|
};
|
|
|
|
export type ImageGenerationResult = {
|
|
images: GeneratedImageAsset[];
|
|
model?: string;
|
|
metadata?: Record<string, unknown>;
|
|
};
|
|
|
|
type ImageGenerationModeCapabilities = {
|
|
maxCount?: number;
|
|
supportsSize?: boolean;
|
|
supportsAspectRatio?: boolean;
|
|
supportsResolution?: boolean;
|
|
};
|
|
|
|
type ImageGenerationEditCapabilities = ImageGenerationModeCapabilities & {
|
|
enabled: boolean;
|
|
maxInputImages?: number;
|
|
};
|
|
|
|
type ImageGenerationGeometryCapabilities = {
|
|
sizes?: string[];
|
|
sizesByModel?: Record<string, string[]>;
|
|
aspectRatios?: string[];
|
|
aspectRatiosByModel?: Record<string, string[]>;
|
|
resolutions?: ImageGenerationResolution[];
|
|
resolutionsByModel?: Record<string, ImageGenerationResolution[]>;
|
|
};
|
|
|
|
type ImageGenerationOutputCapabilities = {
|
|
qualities?: ImageGenerationQuality[];
|
|
formats?: ImageGenerationOutputFormat[];
|
|
backgrounds?: ImageGenerationBackground[];
|
|
};
|
|
|
|
export type ImageGenerationNormalization = {
|
|
size?: MediaNormalizationEntry<string>;
|
|
aspectRatio?: MediaNormalizationEntry<string>;
|
|
resolution?: MediaNormalizationEntry<ImageGenerationResolution>;
|
|
};
|
|
|
|
export type ImageGenerationProviderCapabilities = {
|
|
generate: ImageGenerationModeCapabilities;
|
|
edit: ImageGenerationEditCapabilities;
|
|
geometry?: ImageGenerationGeometryCapabilities;
|
|
output?: ImageGenerationOutputCapabilities;
|
|
};
|
|
|
|
export type ImageGenerationProvider = {
|
|
id: string;
|
|
aliases?: string[];
|
|
label?: string;
|
|
defaultModel?: string;
|
|
/** Default provider operation timeout in milliseconds when caller/config omit timeoutMs. */
|
|
defaultTimeoutMs?: number;
|
|
models?: string[];
|
|
capabilities: ImageGenerationProviderCapabilities;
|
|
isConfigured?: (ctx: ImageGenerationProviderConfiguredContext) => boolean;
|
|
generateImage: (req: ImageGenerationRequest) => Promise<ImageGenerationResult>;
|
|
};
|