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,21 +4,21 @@
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",
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["text","image"],
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
cost: {
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",
@@ -26,14 +26,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["text","image"],
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
cost: {
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",
@@ -41,14 +41,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["text","image"],
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
cost: {
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",
@@ -56,14 +56,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["text","image"],
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"bytedance-seed/seedream-4.5": {
id: "bytedance-seed/seedream-4.5",
@@ -71,14 +71,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["image","text"],
input: ["image", "text"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
cost: {
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",
@@ -86,14 +86,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["image","text"],
output: ["image","text"],
cost: {
"input": 0.3,
"output": 2.5,
"cacheRead": 0.03,
"cacheWrite": 0.08333333333333334
}
input: ["image", "text"],
output: ["image", "text"],
cost: {
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",
@@ -101,14 +101,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["image","text"],
output: ["image","text"],
cost: {
"input": 2,
"output": 12,
"cacheRead": 0.19999999999999998,
"cacheWrite": 0.375
}
input: ["image", "text"],
output: ["image", "text"],
cost: {
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",
@@ -116,14 +116,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["image","text"],
output: ["image","text"],
cost: {
"input": 0.5,
"output": 3,
"cacheRead": 0,
"cacheWrite": 0
}
input: ["image", "text"],
output: ["image", "text"],
cost: {
input: 0.5,
output: 3,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"openai/gpt-5-image": {
id: "openai/gpt-5-image",
@@ -131,14 +131,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["image","text"],
output: ["image","text"],
cost: {
"input": 10,
"output": 10,
"cacheRead": 1.25,
"cacheWrite": 0
}
input: ["image", "text"],
output: ["image", "text"],
cost: {
input: 10,
output: 10,
cacheRead: 1.25,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"openai/gpt-5-image-mini": {
id: "openai/gpt-5-image-mini",
@@ -146,14 +146,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["image","text"],
output: ["image","text"],
cost: {
"input": 2.5,
"output": 2,
"cacheRead": 0.25,
"cacheWrite": 0
}
input: ["image", "text"],
output: ["image", "text"],
cost: {
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",
@@ -161,14 +161,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["image","text"],
output: ["image","text"],
cost: {
"input": 8,
"output": 15,
"cacheRead": 2,
"cacheWrite": 0
}
input: ["image", "text"],
output: ["image", "text"],
cost: {
input: 8,
output: 15,
cacheRead: 2,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"openrouter/auto": {
id: "openrouter/auto",
@@ -176,59 +176,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
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: ["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",
@@ -401,14 +356,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["text","image"],
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"sourceful/riverflow-v2-fast-preview": {
id: "sourceful/riverflow-v2-fast-preview",
@@ -416,14 +371,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["text","image"],
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"sourceful/riverflow-v2-max-preview": {
id: "sourceful/riverflow-v2-max-preview",
@@ -431,14 +386,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["text","image"],
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"sourceful/riverflow-v2-pro": {
id: "sourceful/riverflow-v2-pro",
@@ -446,14 +401,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["text","image"],
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
} satisfies ImagesModel<"openrouter-images">,
"sourceful/riverflow-v2-standard-preview": {
id: "sourceful/riverflow-v2-standard-preview",
@@ -461,14 +416,14 @@ export const IMAGE_MODELS = {
api: "openrouter-images",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
input: ["text","image"],
input: ["text", "image"],
output: ["image"],
cost: {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
cost: {
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",