Browse Source

fix(03-01): improve Replicate capability inference to exclude video models

Video models were getting text-to-image capability by default.
Now properly detects video models (by keywords like video, animate,
motion, luma, kling, minimax) and only assigns video capabilities.
handoff-20260429-1057
shrimbly 6 months ago
parent
commit
ed9bfa9a54
  1. 42
      src/app/api/models/route.ts

42
src/app/api/models/route.ts

@ -138,32 +138,44 @@ type ModelsResponse = ModelsSuccessResponse | ModelsErrorResponse;
// ============ Replicate Helpers ============ // ============ Replicate Helpers ============
function inferReplicateCapabilities(model: ReplicateModel): ModelCapability[] { function inferReplicateCapabilities(model: ReplicateModel): ModelCapability[] {
const capabilities: ModelCapability[] = ["text-to-image"]; const capabilities: ModelCapability[] = [];
const searchText = `${model.name} ${model.description ?? ""}`.toLowerCase(); const searchText = `${model.name} ${model.description ?? ""}`.toLowerCase();
if ( // Check for video-related keywords first
searchText.includes("img2img") || const isVideoModel =
searchText.includes("image-to-image") ||
searchText.includes("inpaint") ||
searchText.includes("controlnet")
) {
capabilities.push("image-to-image");
}
if (
searchText.includes("video") || searchText.includes("video") ||
searchText.includes("animate") || searchText.includes("animate") ||
searchText.includes("motion") searchText.includes("motion") ||
) { searchText.includes("luma") ||
searchText.includes("kling") ||
searchText.includes("minimax");
if (isVideoModel) {
// Video model - determine video capability type
if ( if (
searchText.includes("img2vid") || searchText.includes("img2vid") ||
searchText.includes("image-to-video") searchText.includes("image-to-video") ||
searchText.includes("i2v")
) { ) {
capabilities.push("image-to-video"); capabilities.push("image-to-video");
} else { } else {
capabilities.push("text-to-video"); capabilities.push("text-to-video");
} }
} else {
// Image model - default to text-to-image
capabilities.push("text-to-image");
// Check for image-to-image capability
if (
searchText.includes("img2img") ||
searchText.includes("image-to-image") ||
searchText.includes("inpaint") ||
searchText.includes("controlnet") ||
searchText.includes("upscale") ||
searchText.includes("restore")
) {
capabilities.push("image-to-image");
}
} }
return capabilities; return capabilities;

Loading…
Cancel
Save