fix(ci): satisfy ts-imports and regenerate image models
Some checks failed
CI / build-check-test (push) Has been cancelled
npm audit / audit (push) Has been cancelled

Use .ts relative import in webui server for pi's check:ts-imports policy
and regenerate image-models.generated.ts to remove duplicate model keys.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
root
2026-05-22 20:45:00 +08:00
parent 092279126b
commit 11c3a3a399
2 changed files with 128 additions and 173 deletions

View File

@@ -31,7 +31,7 @@ import {
setWebuiConfig,
setWebuiConfigMany,
writeWebuiAvatarSettings,
} from "./db.js";
} from "./db.ts";
const __dirname = dirname(fileURLToPath(import.meta.url));
const PUBLIC_DIR = join(__dirname, "dist");

View File

@@ -4,7 +4,7 @@
import type { ImagesApi, ImagesModel } from "./types.ts";
export const IMAGE_MODELS = {
"openrouter": {
openrouter: {
"black-forest-labs/flux.2-flex": {
id: "black-forest-labs/flux.2-flex",
name: "Black Forest Labs: FLUX.2 Flex",
@@ -14,11 +14,11 @@ export const IMAGE_MODELS = {
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"black-forest-labs/flux.2-klein-4b": {
id: "black-forest-labs/flux.2-klein-4b",
@@ -29,11 +29,11 @@ export const IMAGE_MODELS = {
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"black-forest-labs/flux.2-max": {
id: "black-forest-labs/flux.2-max",
@@ -44,11 +44,11 @@ export const IMAGE_MODELS = {
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"black-forest-labs/flux.2-pro": {
id: "black-forest-labs/flux.2-pro",
@@ -59,11 +59,11 @@ export const IMAGE_MODELS = {
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"bytedance-seed/seedream-4.5": {
id: "bytedance-seed/seedream-4.5",
@@ -74,11 +74,11 @@ export const IMAGE_MODELS = {
input: ["image", "text"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"google/gemini-2.5-flash-image": {
id: "google/gemini-2.5-flash-image",
@@ -89,11 +89,11 @@ export const IMAGE_MODELS = {
input: ["image", "text"],
output: ["image", "text"],
cost: {
"input": 0.3,
"output": 2.5,
"cacheRead": 0.03,
"cacheWrite": 0.08333333333333334
}
input: 0.3,
output: 2.5,
cacheRead: 0.03,
cacheWrite: 0.08333333333333334,
},
} satisfies ImagesModel<"openrouter-images">,
"google/gemini-3-pro-image-preview": {
id: "google/gemini-3-pro-image-preview",
@@ -104,11 +104,11 @@ export const IMAGE_MODELS = {
input: ["image", "text"],
output: ["image", "text"],
cost: {
"input": 2,
"output": 12,
"cacheRead": 0.19999999999999998,
"cacheWrite": 0.375
}
input: 2,
output: 12,
cacheRead: 0.19999999999999998,
cacheWrite: 0.375,
},
} satisfies ImagesModel<"openrouter-images">,
"google/gemini-3.1-flash-image-preview": {
id: "google/gemini-3.1-flash-image-preview",
@@ -119,11 +119,11 @@ export const IMAGE_MODELS = {
input: ["image", "text"],
output: ["image", "text"],
cost: {
"input": 0.5,
"output": 3,
"cacheRead": 0,
"cacheWrite": 0
}
input: 0.5,
output: 3,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"openai/gpt-5-image": {
id: "openai/gpt-5-image",
@@ -134,11 +134,11 @@ export const IMAGE_MODELS = {
input: ["image", "text"],
output: ["image", "text"],
cost: {
"input": 10,
"output": 10,
"cacheRead": 1.25,
"cacheWrite": 0
}
input: 10,
output: 10,
cacheRead: 1.25,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"openai/gpt-5-image-mini": {
id: "openai/gpt-5-image-mini",
@@ -149,11 +149,11 @@ export const IMAGE_MODELS = {
input: ["image", "text"],
output: ["image", "text"],
cost: {
"input": 2.5,
"output": 2,
"cacheRead": 0.25,
"cacheWrite": 0
}
input: 2.5,
output: 2,
cacheRead: 0.25,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"openai/gpt-5.4-image-2": {
id: "openai/gpt-5.4-image-2",
@@ -164,11 +164,11 @@ export const IMAGE_MODELS = {
input: ["image", "text"],
output: ["image", "text"],
cost: {
"input": 8,
"output": 15,
"cacheRead": 2,
"cacheWrite": 0
}
input: 8,
output: 15,
cacheRead: 2,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"openrouter/auto": {
id: "openrouter/auto",
@@ -179,56 +179,11 @@ export const IMAGE_MODELS = {
input: ["text", "image"],
output: ["text", "image"],
cost: {
"input": -1000000,
"output": -1000000,
"cacheRead": 0,
"cacheWrite": 0
}
} satisfies ImagesModel<"openrouter-images">,
"recraft/recraft-v3": {
id: "recraft/recraft-v3",
name: "Recraft: Recraft V3",
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["text","image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
} satisfies ImagesModel<"openrouter-images">,
"recraft/recraft-v4": {
id: "recraft/recraft-v4",
name: "Recraft: Recraft V4",
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["text","image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
} satisfies ImagesModel<"openrouter-images">,
"recraft/recraft-v4-pro": {
id: "recraft/recraft-v4-pro",
name: "Recraft: Recraft V4 Pro",
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["text","image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
input: -1000000,
output: -1000000,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"recraft/recraft-v3": {
id: "recraft/recraft-v3",
@@ -404,11 +359,11 @@ export const IMAGE_MODELS = {
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"sourceful/riverflow-v2-fast-preview": {
id: "sourceful/riverflow-v2-fast-preview",
@@ -419,11 +374,11 @@ export const IMAGE_MODELS = {
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"sourceful/riverflow-v2-max-preview": {
id: "sourceful/riverflow-v2-max-preview",
@@ -434,11 +389,11 @@ export const IMAGE_MODELS = {
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"sourceful/riverflow-v2-pro": {
id: "sourceful/riverflow-v2-pro",
@@ -449,11 +404,11 @@ export const IMAGE_MODELS = {
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"sourceful/riverflow-v2-standard-preview": {
id: "sourceful/riverflow-v2-standard-preview",
@@ -464,11 +419,11 @@ export const IMAGE_MODELS = {
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"x-ai/grok-imagine-image-quality": {
id: "x-ai/grok-imagine-image-quality",