mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-27 09:21:35 +07:00
refactor(image-generation): move provider builders into plugins
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
import { resolveApiKeyForProvider } from "../../agents/model-auth.js";
|
||||
import type { ImageGenerationProviderPlugin } from "../../plugins/types.js";
|
||||
import type { GeneratedImageAsset } from "../types.js";
|
||||
import type {
|
||||
GeneratedImageAsset,
|
||||
ImageGenerationProviderPlugin,
|
||||
} from "openclaw/plugin-sdk/image-generation-core";
|
||||
import { resolveApiKeyForProvider } from "openclaw/plugin-sdk/image-generation-core";
|
||||
|
||||
const DEFAULT_FAL_BASE_URL = "https://fal.run";
|
||||
const DEFAULT_FAL_IMAGE_MODEL = "fal-ai/flux/dev";
|
||||
@@ -1,6 +1,6 @@
|
||||
import { buildFalImageGenerationProvider } from "openclaw/plugin-sdk/image-generation";
|
||||
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
|
||||
import { createProviderApiKeyAuthMethod } from "openclaw/plugin-sdk/provider-auth";
|
||||
import { buildFalImageGenerationProvider } from "./image-generation-provider.js";
|
||||
import { applyFalConfig, FAL_DEFAULT_IMAGE_MODEL_REF } from "./onboard.js";
|
||||
|
||||
const PROVIDER_ID = "fal";
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
import { resolveApiKeyForProvider } from "../../agents/model-auth.js";
|
||||
import { normalizeGoogleModelId } from "../../agents/model-id-normalization.js";
|
||||
import { parseGeminiAuth } from "../../infra/gemini-auth.js";
|
||||
import type { ImageGenerationProviderPlugin } from "openclaw/plugin-sdk/image-generation-core";
|
||||
import {
|
||||
normalizeGoogleModelId,
|
||||
parseGeminiAuth,
|
||||
resolveApiKeyForProvider,
|
||||
} from "openclaw/plugin-sdk/image-generation-core";
|
||||
import {
|
||||
assertOkOrThrowHttpError,
|
||||
normalizeBaseUrl,
|
||||
postJsonRequest,
|
||||
} from "../../media-understanding/providers/shared.js";
|
||||
import type { ImageGenerationProviderPlugin } from "../../plugins/types.js";
|
||||
} from "openclaw/plugin-sdk/media-understanding";
|
||||
|
||||
const DEFAULT_GOOGLE_IMAGE_BASE_URL = "https://generativelanguage.googleapis.com/v1beta";
|
||||
const DEFAULT_GOOGLE_IMAGE_MODEL = "gemini-3.1-flash-image-preview";
|
||||
@@ -1,4 +1,3 @@
|
||||
import { buildGoogleImageGenerationProvider } from "openclaw/plugin-sdk/image-generation";
|
||||
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
|
||||
import { createProviderApiKeyAuthMethod } from "openclaw/plugin-sdk/provider-auth";
|
||||
import {
|
||||
@@ -7,6 +6,7 @@ import {
|
||||
} from "openclaw/plugin-sdk/provider-models";
|
||||
import { createGoogleThinkingPayloadWrapper } from "openclaw/plugin-sdk/provider-stream";
|
||||
import { registerGoogleGeminiCliProvider } from "./gemini-cli-provider.js";
|
||||
import { buildGoogleImageGenerationProvider } from "./image-generation-provider.js";
|
||||
import { googleMediaUnderstandingProvider } from "./media-understanding-provider.js";
|
||||
import { isModernGoogleModel, resolveGoogle31ForwardCompatModel } from "./provider-models.js";
|
||||
import { createGeminiWebSearchProvider } from "./src/gemini-web-search-provider.js";
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import { resolveApiKeyForProvider } from "../../agents/model-auth.js";
|
||||
import type { ImageGenerationProviderPlugin } from "../../plugins/types.js";
|
||||
import { OPENAI_DEFAULT_IMAGE_MODEL as DEFAULT_OPENAI_IMAGE_MODEL } from "../../providers/openai-defaults.js";
|
||||
import type { ImageGenerationProviderPlugin } from "openclaw/plugin-sdk/image-generation-core";
|
||||
import {
|
||||
OPENAI_DEFAULT_IMAGE_MODEL as DEFAULT_OPENAI_IMAGE_MODEL,
|
||||
resolveApiKeyForProvider,
|
||||
} from "openclaw/plugin-sdk/image-generation-core";
|
||||
|
||||
const DEFAULT_OPENAI_IMAGE_BASE_URL = "https://api.openai.com/v1";
|
||||
const DEFAULT_OUTPUT_MIME = "image/png";
|
||||
const DEFAULT_SIZE = "1024x1024";
|
||||
const OPENAI_SUPPORTED_SIZES = ["1024x1024", "1024x1536", "1536x1024"] as const;
|
||||
// Only advertise ratios we can satisfy exactly with OpenAI's supported size presets.
|
||||
const OPENAI_SUPPORTED_ASPECT_RATIOS = ["1:1", "2:3", "3:2"] as const;
|
||||
|
||||
type OpenAIImageApiResponse = {
|
||||
@@ -1,6 +1,6 @@
|
||||
import { buildOpenAIImageGenerationProvider } from "openclaw/plugin-sdk/image-generation";
|
||||
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
|
||||
import { openaiMediaUnderstandingProvider } from "./media-understanding-provider.js";
|
||||
import { buildOpenAIImageGenerationProvider } from "./image-generation-provider.js";
|
||||
import { buildOpenAICodexProviderPlugin } from "./openai-codex-provider.js";
|
||||
import { buildOpenAIProvider } from "./openai-provider.js";
|
||||
import { buildOpenAISpeechProvider } from "./speech-provider.js";
|
||||
|
||||
@@ -329,6 +329,10 @@
|
||||
"types": "./dist/plugin-sdk/image-generation.d.ts",
|
||||
"default": "./dist/plugin-sdk/image-generation.js"
|
||||
},
|
||||
"./plugin-sdk/image-generation-core": {
|
||||
"types": "./dist/plugin-sdk/image-generation-core.d.ts",
|
||||
"default": "./dist/plugin-sdk/image-generation-core.js"
|
||||
},
|
||||
"./plugin-sdk/imessage": {
|
||||
"types": "./dist/plugin-sdk/imessage.d.ts",
|
||||
"default": "./dist/plugin-sdk/imessage.js"
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
"directory-runtime",
|
||||
"googlechat",
|
||||
"image-generation",
|
||||
"image-generation-core",
|
||||
"imessage",
|
||||
"imessage-core",
|
||||
"irc",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { afterEach, describe, expect, it, vi } from "vitest";
|
||||
import * as modelAuth from "../../agents/model-auth.js";
|
||||
import { buildFalImageGenerationProvider } from "./fal.js";
|
||||
import { buildFalImageGenerationProvider } from "../../../extensions/fal/image-generation-provider.js";
|
||||
|
||||
function expectFalJsonPost(
|
||||
fetchMock: ReturnType<typeof vi.fn>,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { afterEach, describe, expect, it, vi } from "vitest";
|
||||
import * as modelAuth from "../../agents/model-auth.js";
|
||||
import { buildGoogleImageGenerationProvider } from "./google.js";
|
||||
import { buildGoogleImageGenerationProvider } from "../../../extensions/google/image-generation-provider.js";
|
||||
|
||||
describe("Google image-generation provider", () => {
|
||||
afterEach(() => {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { afterEach, describe, expect, it, vi } from "vitest";
|
||||
import * as modelAuth from "../../agents/model-auth.js";
|
||||
import { buildOpenAIImageGenerationProvider } from "./openai.js";
|
||||
import { buildOpenAIImageGenerationProvider } from "../../../extensions/openai/image-generation-provider.js";
|
||||
|
||||
describe("OpenAI image-generation provider", () => {
|
||||
afterEach(() => {
|
||||
|
||||
16
src/plugin-sdk/image-generation-core.ts
Normal file
16
src/plugin-sdk/image-generation-core.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
// Shared image-generation implementation helpers for bundled and third-party plugins.
|
||||
|
||||
export type { ImageGenerationProviderPlugin } from "../plugins/types.js";
|
||||
export type {
|
||||
GeneratedImageAsset,
|
||||
ImageGenerationProvider,
|
||||
ImageGenerationResolution,
|
||||
ImageGenerationRequest,
|
||||
ImageGenerationResult,
|
||||
ImageGenerationSourceImage,
|
||||
} from "../image-generation/types.js";
|
||||
|
||||
export { resolveApiKeyForProvider } from "../agents/model-auth.js";
|
||||
export { normalizeGoogleModelId } from "../agents/model-id-normalization.js";
|
||||
export { parseGeminiAuth } from "../infra/gemini-auth.js";
|
||||
export { OPENAI_DEFAULT_IMAGE_MODEL } from "../providers/openai-defaults.js";
|
||||
@@ -9,6 +9,6 @@ export type {
|
||||
ImageGenerationSourceImage,
|
||||
} from "../image-generation/types.js";
|
||||
|
||||
export { buildFalImageGenerationProvider } from "../image-generation/providers/fal.js";
|
||||
export { buildGoogleImageGenerationProvider } from "../image-generation/providers/google.js";
|
||||
export { buildOpenAIImageGenerationProvider } from "../image-generation/providers/openai.js";
|
||||
export { buildFalImageGenerationProvider } from "../../extensions/fal/image-generation-provider.js";
|
||||
export { buildGoogleImageGenerationProvider } from "../../extensions/google/image-generation-provider.js";
|
||||
export { buildOpenAIImageGenerationProvider } from "../../extensions/openai/image-generation-provider.js";
|
||||
|
||||
Reference in New Issue
Block a user