59 lines
1.6 KiB
TypeScript
59 lines
1.6 KiB
TypeScript
export type FalImageEditTaskStatus = "queued" | "running" | "completed" | "failed";
|
|
|
|
export interface FalImageEditTaskMetadata {
|
|
taskKind: "fal_gpt_image_2_edit";
|
|
provider: "fal-image";
|
|
providerId: string;
|
|
endpointId: string;
|
|
requestId: string;
|
|
modelId: string;
|
|
modelRef: string;
|
|
modelDisplayName: string;
|
|
prompt: string;
|
|
optimizedPrompt?: string;
|
|
userPrompt?: string;
|
|
requestedImageCount: number;
|
|
aspectRatio?: string;
|
|
imageSize?: string;
|
|
outputSizeLabel: string;
|
|
sourceImageUrls: string[];
|
|
sourceAssetIds?: string[];
|
|
relationType?: "generated_from" | "edited_from";
|
|
sourceType?: string;
|
|
projectId?: string | null;
|
|
contextSource?: string | null;
|
|
status: FalImageEditTaskStatus;
|
|
startedAt: number;
|
|
updatedAt: number;
|
|
queuePosition?: number | null;
|
|
lastLogs?: Array<{
|
|
message?: string;
|
|
level?: string;
|
|
timestamp?: string;
|
|
}>;
|
|
error?: string | null;
|
|
}
|
|
|
|
export function isFalImageEditTaskMetadata(
|
|
value: unknown,
|
|
): value is FalImageEditTaskMetadata {
|
|
if (!value || typeof value !== "object") return false;
|
|
const maybe = value as Record<string, unknown>;
|
|
return (
|
|
maybe.taskKind === "fal_gpt_image_2_edit" &&
|
|
maybe.provider === "fal-image" &&
|
|
typeof maybe.providerId === "string" &&
|
|
typeof maybe.endpointId === "string" &&
|
|
typeof maybe.requestId === "string"
|
|
);
|
|
}
|
|
|
|
export function isPendingFalImageEditTaskMetadata(
|
|
value: unknown,
|
|
): value is FalImageEditTaskMetadata {
|
|
return (
|
|
isFalImageEditTaskMetadata(value) &&
|
|
(value.status === "queued" || value.status === "running")
|
|
);
|
|
}
|