@tanstack/ai-fal 0.9.11 → 0.9.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/adapters/audio.js +92 -76
- package/dist/esm/adapters/audio.js.map +1 -1
- package/dist/esm/adapters/image.js +99 -108
- package/dist/esm/adapters/image.js.map +1 -1
- package/dist/esm/adapters/speech.js +86 -83
- package/dist/esm/adapters/speech.js.map +1 -1
- package/dist/esm/adapters/transcription.js +90 -89
- package/dist/esm/adapters/transcription.js.map +1 -1
- package/dist/esm/adapters/video.js +146 -150
- package/dist/esm/adapters/video.js.map +1 -1
- package/dist/esm/image/generated/image-field-overrides.js +809 -367
- package/dist/esm/image/generated/image-field-overrides.js.map +1 -1
- package/dist/esm/image/image-inputs.js +143 -104
- package/dist/esm/image/image-inputs.js.map +1 -1
- package/dist/esm/image/image-provider-options.js +16 -21
- package/dist/esm/image/image-provider-options.js.map +1 -1
- package/dist/esm/index.js +2 -17
- package/dist/esm/utils/billing.js +89 -45
- package/dist/esm/utils/billing.js.map +1 -1
- package/dist/esm/utils/client.js +90 -87
- package/dist/esm/utils/client.js.map +1 -1
- package/dist/esm/video/video-provider-options.js +15 -16
- package/dist/esm/video/video-provider-options.js.map +1 -1
- package/package.json +7 -7
- package/dist/esm/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-field-overrides.js","sources":["../../../../src/image/generated/image-field-overrides.ts"],"sourcesContent":["/* eslint-disable */\n// ---------------------------------------------------------------------------\n// AUTO-GENERATED — do not edit by hand.\n//\n// Generated from @fal-ai/client@1.10.1 EndpointTypeMap by\n// scripts/generate-fal-image-field-map.ts. Regenerate after bumping\n// @fal-ai/client:\n//\n// pnpm tsx scripts/generate-fal-image-field-map.ts\n//\n// Maps fal endpoint ids to the image-conditioning input fields they accept\n// whenever those differ from the defaults in image-inputs.ts. Endpoints\n// matching the defaults are omitted. The `satisfies` clause below checks\n// every field name against the SDK's endpoint input types at compile time\n// (type-only import — nothing from endpoints.d.ts is shipped at runtime).\n// ---------------------------------------------------------------------------\nimport type { EndpointTypeMap } from '@fal-ai/client/endpoints'\n\n/** sha256 of the endpoints.d.ts this file was generated from. */\nexport const FAL_ENDPOINTS_DTS_SHA256 =\n 'a071f97905b8a1068f924c74108b881362f20c9054620b70359c200404e23b4e'\n\n/** Every input field name the image-input mappers may emit. */\nexport type FalImageFieldName =\n | 'control_image_url'\n | 'end_image_url'\n | 'first_frame_url'\n | 'first_image_url'\n | 'image_data_url'\n | 'image_url'\n | 'image_urls'\n | 'input_image_url'\n | 'input_image_urls'\n | 'last_frame_url'\n | 'mask_image_url'\n | 'mask_url'\n | 'ref_image_urls'\n | 'reference_image_url'\n | 'reference_image_urls'\n | 'start_image_url'\n | 'tail_image_url'\n\n/**\n * Per-role input-field overrides. Roles: `single` / `multi` route unroled\n * source images; the rest mirror `MediaInputRole` (`start` / `end` map the\n * `start_frame` / `end_frame` roles).\n */\nexport interface FalImageFieldOverride {\n single?: string\n multi?: string\n mask?: string\n control?: string\n reference?: string\n start?: string\n end?: string\n}\n\ntype InputFieldOf<K extends keyof EndpointTypeMap> = Extract<\n keyof EndpointTypeMap[K]['input'],\n string\n>\n\nexport const FAL_IMAGE_FIELD_OVERRIDES = {\n 'bytedance/lynx': { start: 'image_url' },\n 'decart/lucy-i2v': { start: 'image_url' },\n 'fal-ai/ai-avatar/multi': { start: 'image_url' },\n 'fal-ai/ai-avatar/multi-text': { start: 'image_url' },\n 'fal-ai/ai-avatar/single-text': { start: 'image_url' },\n 'fal-ai/bytedance/dreamactor/v2': { start: 'image_url' },\n 'fal-ai/bytedance/omnihuman': { start: 'image_url' },\n 'fal-ai/bytedance/omnihuman/v1.5': { start: 'image_url' },\n 'fal-ai/bytedance/seed/v2/mini': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/bytedance/seedance/v1.5/pro/image-to-video': { start: 'image_url' },\n 'fal-ai/bytedance/seedance/v1/lite/image-to-video': { start: 'image_url' },\n 'fal-ai/bytedance/seedance/v1/lite/reference-to-video': { multi: 'reference_image_urls' },\n 'fal-ai/bytedance/seedance/v1/pro/fast/image-to-video': { start: 'image_url' },\n 'fal-ai/bytedance/seedance/v1/pro/image-to-video': { start: 'image_url' },\n 'fal-ai/bytedance/seedream/v4.5/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/bytedance/seedream/v4/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/bytedance/seedream/v5/lite/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/cogvideox-5b/image-to-video': { start: 'image_url' },\n 'fal-ai/controlnext': { start: 'image_url' },\n 'fal-ai/cosmos-predict-2.5/image-to-video': { start: 'image_url' },\n 'fal-ai/creatify/aurora': { start: 'image_url' },\n 'fal-ai/davinci-magihuman': { start: 'image_url' },\n 'fal-ai/dreamomni2/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/echomimic-v3': { start: 'image_url' },\n 'fal-ai/fast-svd-lcm': { start: 'image_url' },\n 'fal-ai/firered-image-edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/firered-image-edit-v1.1': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-flex/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-klein-4b-base-trainer': { single: 'image_data_url' },\n 'fal-ai/flux-2-klein-4b-base-trainer/edit': { single: 'image_data_url' },\n 'fal-ai/flux-2-klein-9b-base-trainer': { single: 'image_data_url' },\n 'fal-ai/flux-2-klein-9b-base-trainer/edit': { single: 'image_data_url' },\n 'fal-ai/flux-2-lora-gallery/add-background': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-lora-gallery/apartment-staging': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-lora-gallery/face-to-full-portrait': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-lora-gallery/multiple-angles': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-lora-gallery/virtual-tryon': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-max/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-pro/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-trainer': { single: 'image_data_url' },\n 'fal-ai/flux-2-trainer-v2': { single: 'image_data_url' },\n 'fal-ai/flux-2-trainer-v2/edit': { single: 'image_data_url' },\n 'fal-ai/flux-2-trainer/edit': { single: 'image_data_url' },\n 'fal-ai/flux-2/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/flash/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/klein/4b/base/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/klein/4b/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/klein/4b/edit/lora': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/klein/9b/base/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/klein/9b/base/edit/lora': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/klein/9b/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/klein/9b/edit/lora': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/lora/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/turbo/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-general': { reference: 'reference_image_url' },\n 'fal-ai/flux-general/differential-diffusion': { reference: 'reference_image_url' },\n 'fal-ai/flux-general/image-to-image': { reference: 'reference_image_url' },\n 'fal-ai/flux-general/inpainting': { reference: 'reference_image_url' },\n 'fal-ai/flux-general/rf-inversion': { reference: 'reference_image_url' },\n 'fal-ai/flux-kontext-trainer': { single: 'image_data_url' },\n 'fal-ai/flux-pro/kontext/max/multi': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-pro/kontext/multi': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-pulid': { reference: 'reference_image_url' },\n 'fal-ai/fooocus': { mask: 'mask_image_url' },\n 'fal-ai/fooocus/image-prompt': { mask: 'mask_image_url' },\n 'fal-ai/fooocus/inpaint': { mask: 'mask_image_url' },\n 'fal-ai/framepack': { start: 'image_url' },\n 'fal-ai/framepack/f1': { start: 'image_url' },\n 'fal-ai/framepack/flf2v': { start: 'image_url' },\n 'fal-ai/gemini-25-flash-image/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/gemini-3-pro-image-preview/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/gemini-3.1-flash-image-preview/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/gemini-flash-edit/multi': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/glm-image/image-to-image': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/goal-force': { start: 'image_url' },\n 'fal-ai/got-ocr/v2': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/gpt-image-1-mini/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/gpt-image-1.5/edit': { single: 'image_urls', mask: 'mask_image_url', reference: 'image_urls' },\n 'fal-ai/gpt-image-1/edit-image': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/heygen/avatar4/image-to-video': { start: 'image_url' },\n 'fal-ai/hunyuan-3d/v3.1/pro/image-to-3d': { single: 'input_image_url' },\n 'fal-ai/hunyuan-3d/v3.1/rapid/image-to-3d': { single: 'input_image_url' },\n 'fal-ai/hunyuan-avatar': { start: 'image_url' },\n 'fal-ai/hunyuan-custom': { start: 'image_url' },\n 'fal-ai/hunyuan-image/v3/instruct/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/hunyuan-portrait': { start: 'image_url' },\n 'fal-ai/hunyuan-video-image-to-video': { start: 'image_url' },\n 'fal-ai/hunyuan-video-img2vid-lora': { start: 'image_url' },\n 'fal-ai/hunyuan-video-v1.5/image-to-video': { start: 'image_url' },\n 'fal-ai/hunyuan3d-v21': { single: 'input_image_url' },\n 'fal-ai/hunyuan3d-v3/image-to-3d': { single: 'input_image_url' },\n 'fal-ai/hunyuan3d-v3/sketch-to-3d': { single: 'input_image_url' },\n 'fal-ai/hunyuan3d/v2': { single: 'input_image_url' },\n 'fal-ai/hunyuan3d/v2/mini': { single: 'input_image_url' },\n 'fal-ai/hunyuan3d/v2/mini/turbo': { single: 'input_image_url' },\n 'fal-ai/hunyuan3d/v2/turbo': { single: 'input_image_url' },\n 'fal-ai/hy-wu-edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/hyper3d/rodin': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/hyper3d/rodin/v2': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/iclight-v2': { mask: 'mask_image_url' },\n 'fal-ai/ideogram/character': { single: 'image_urls' },\n 'fal-ai/ideogram/v3': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/ideogram/v3/edit': { reference: 'image_urls' },\n 'fal-ai/ideogram/v3/reframe': { reference: 'image_urls' },\n 'fal-ai/ideogram/v3/remix': { reference: 'image_urls' },\n 'fal-ai/ideogram/v3/replace-background': { reference: 'image_urls' },\n 'fal-ai/infinitalk': { start: 'image_url' },\n 'fal-ai/infinitalk/single-text': { start: 'image_url' },\n 'fal-ai/kandinsky5-pro/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-image/o1': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-image/o3/image-to-image': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/ai-avatar/v2/pro': { start: 'image_url' },\n 'fal-ai/kling-video/ai-avatar/v2/standard': { start: 'image_url' },\n 'fal-ai/kling-video/o1/reference-to-video': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o1/standard/reference-to-video': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o1/standard/video-to-video/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o1/standard/video-to-video/reference': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o1/video-to-video/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o1/video-to-video/reference': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o3/pro/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-video/o3/pro/reference-to-video': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o3/pro/video-to-video/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o3/pro/video-to-video/reference': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o3/standard/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-video/o3/standard/reference-to-video': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o3/standard/video-to-video/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o3/standard/video-to-video/reference': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/v1.5/pro/effects': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/kling-video/v1.5/pro/image-to-video': { start: 'image_url', end: 'tail_image_url' },\n 'fal-ai/kling-video/v1.6/pro/effects': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/kling-video/v1.6/pro/elements': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/kling-video/v1.6/pro/image-to-video': { start: 'image_url', end: 'tail_image_url' },\n 'fal-ai/kling-video/v1.6/standard/effects': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/kling-video/v1.6/standard/elements': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/kling-video/v1.6/standard/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-video/v1/pro/ai-avatar': { start: 'image_url' },\n 'fal-ai/kling-video/v1/standard/ai-avatar': { start: 'image_url' },\n 'fal-ai/kling-video/v1/standard/effects': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/kling-video/v1/standard/image-to-video': { start: 'image_url', end: 'tail_image_url' },\n 'fal-ai/kling-video/v2.1/master/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-video/v2.1/standard/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-video/v2.5-turbo/pro/image-to-video': { start: 'image_url', end: 'tail_image_url' },\n 'fal-ai/kling-video/v2.5-turbo/standard/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-video/v2.6/pro/motion-control': { start: 'image_url' },\n 'fal-ai/kling-video/v2.6/standard/motion-control': { start: 'image_url' },\n 'fal-ai/kling-video/v2/master/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-video/v3/pro/motion-control': { start: 'image_url' },\n 'fal-ai/kling-video/v3/standard/motion-control': { start: 'image_url' },\n 'fal-ai/live-avatar': { start: 'image_url' },\n 'fal-ai/live-portrait': { start: 'image_url' },\n 'fal-ai/longcat-multi-avatar/image-audio-to-video': { start: 'image_url' },\n 'fal-ai/longcat-single-avatar/image-audio-to-video': { start: 'image_url' },\n 'fal-ai/longcat-video/distilled/image-to-video/480p': { start: 'image_url' },\n 'fal-ai/longcat-video/distilled/image-to-video/720p': { start: 'image_url' },\n 'fal-ai/longcat-video/image-to-video/480p': { start: 'image_url' },\n 'fal-ai/longcat-video/image-to-video/720p': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/audio-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/audio-to-video/lora': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/distilled/audio-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/distilled/audio-to-video/lora': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/distilled/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/distilled/video-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/distilled/video-to-video/lora': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/image-to-video/lora': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/video-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/video-to-video/lora': { start: 'image_url' },\n 'fal-ai/ltx-2.3/audio-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2.3/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2.3/image-to-video/fast': { start: 'image_url' },\n 'fal-ai/ltx-2/audio-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2/image-to-video/fast': { start: 'image_url' },\n 'fal-ai/ltx-video-13b-dev/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-video-13b-distilled/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-video-lora/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-video-v095/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-video-v097/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-video/image-to-video': { start: 'image_url' },\n 'fal-ai/ltxv-13b-098-distilled/image-to-video': { start: 'image_url' },\n 'fal-ai/luma-dream-machine/ray-2-flash/image-to-video': { start: 'image_url' },\n 'fal-ai/luma-dream-machine/ray-2-flash/modify': { start: 'image_url' },\n 'fal-ai/luma-dream-machine/ray-2-flash/reframe': { start: 'image_url' },\n 'fal-ai/luma-dream-machine/ray-2/image-to-video': { start: 'image_url' },\n 'fal-ai/luma-dream-machine/ray-2/reframe': { start: 'image_url' },\n 'fal-ai/magi-distilled/image-to-video': { start: 'image_url' },\n 'fal-ai/magi/image-to-video': { start: 'image_url' },\n 'fal-ai/meshy/v5/multi-image-to-3d': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/minimax/hailuo-02-fast/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/hailuo-02/pro/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/hailuo-02/standard/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/hailuo-2.3-fast/pro/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/hailuo-2.3-fast/standard/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/hailuo-2.3/pro/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/hailuo-2.3/standard/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/video-01-director/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/video-01-live/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/video-01/image-to-video': { start: 'image_url' },\n 'fal-ai/muse-pose': { start: 'image_url' },\n 'fal-ai/nano-banana-2/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/nano-banana-pro/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/nano-banana/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/omnigen-v1': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/omnigen-v2': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/omnipart': { single: 'input_image_url' },\n 'fal-ai/phota/create-profile': { single: 'image_data_url' },\n 'fal-ai/phota/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/pika/v1.5/pikaffects': { start: 'image_url' },\n 'fal-ai/pika/v2.1/image-to-video': { start: 'image_url' },\n 'fal-ai/pika/v2.2/image-to-video': { start: 'image_url' },\n 'fal-ai/pika/v2.2/pikaframes': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/pika/v2/pikadditions': { start: 'image_url' },\n 'fal-ai/pika/v2/turbo/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/swap': { start: 'image_url' },\n 'fal-ai/pixverse/v3.5/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/v4.5/effects': { start: 'image_url' },\n 'fal-ai/pixverse/v4.5/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/v4.5/image-to-video/fast': { start: 'image_url' },\n 'fal-ai/pixverse/v4.5/transition': { start: 'first_image_url' },\n 'fal-ai/pixverse/v4/effects': { start: 'image_url' },\n 'fal-ai/pixverse/v4/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/v4/image-to-video/fast': { start: 'image_url' },\n 'fal-ai/pixverse/v5.5/effects': { start: 'image_url' },\n 'fal-ai/pixverse/v5.5/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/v5.5/transition': { start: 'first_image_url' },\n 'fal-ai/pixverse/v5.6/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/v5.6/transition': { start: 'first_image_url' },\n 'fal-ai/pixverse/v5/effects': { start: 'image_url' },\n 'fal-ai/pixverse/v5/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/v5/transition': { start: 'first_image_url' },\n 'fal-ai/pixverse/v6/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/v6/transition': { start: 'first_image_url' },\n 'fal-ai/qwen-image-2/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-2/pro/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-2512-trainer': { single: 'image_data_url' },\n 'fal-ai/qwen-image-2512-trainer-v2': { single: 'image_data_url' },\n 'fal-ai/qwen-image-edit-2509': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/add-background': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/face-to-full-portrait': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/group-photo': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/integrate-product': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/lighting-restoration': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/multiple-angles': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/next-scene': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/remove-element': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/remove-lighting': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/shirt-design': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-trainer': { single: 'image_data_url' },\n 'fal-ai/qwen-image-edit-2511': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2511-multiple-angles': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2511-trainer': { single: 'image_data_url' },\n 'fal-ai/qwen-image-edit-2511/lora': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/add-background': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/face-to-full-portrait': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/group-photo': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/integrate-product': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/lighting-restoration': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/multiple-angles': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/next-scene': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/remove-element': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/remove-lighting': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/shirt-design': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-trainer': { single: 'image_data_url' },\n 'fal-ai/qwen-image-edit-trainer': { single: 'image_data_url' },\n 'fal-ai/qwen-image-layered-trainer': { single: 'image_data_url' },\n 'fal-ai/qwen-image-max/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-trainer': { single: 'image_data_url' },\n 'fal-ai/qwen-image-trainer-v2': { single: 'image_data_url' },\n 'fal-ai/scail': { start: 'image_url' },\n 'fal-ai/skyreels-i2v': { start: 'image_url' },\n 'fal-ai/sora-2/image-to-video': { start: 'image_url' },\n 'fal-ai/sora-2/image-to-video/pro': { start: 'image_url' },\n 'fal-ai/stable-avatar': { start: 'image_url' },\n 'fal-ai/stable-video': { start: 'image_url' },\n 'fal-ai/steady-dancer': { start: 'image_url' },\n 'fal-ai/trellis/multi': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/uno': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/uso': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/vecglypher/image-to-svg': { multi: 'reference_image_urls' },\n 'fal-ai/veo2/image-to-video': { start: 'image_url' },\n 'fal-ai/veo3.1/fast/first-last-frame-to-video': { start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/veo3.1/fast/image-to-video': { start: 'image_url' },\n 'fal-ai/veo3.1/first-last-frame-to-video': { start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/veo3.1/image-to-video': { start: 'image_url' },\n 'fal-ai/veo3.1/lite/first-last-frame-to-video': { start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/veo3.1/lite/image-to-video': { start: 'image_url' },\n 'fal-ai/veo3.1/reference-to-video': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/veo3/fast/image-to-video': { start: 'image_url' },\n 'fal-ai/veo3/image-to-video': { start: 'image_url' },\n 'fal-ai/video-as-prompt': { start: 'image_url' },\n 'fal-ai/vidu/image-to-video': { start: 'image_url' },\n 'fal-ai/vidu/q1/image-to-video': { start: 'image_url' },\n 'fal-ai/vidu/q1/reference-to-video': { multi: 'reference_image_urls' },\n 'fal-ai/vidu/q2/image-to-video/pro': { start: 'image_url' },\n 'fal-ai/vidu/q2/image-to-video/turbo': { start: 'image_url' },\n 'fal-ai/vidu/q2/reference-to-image': { multi: 'reference_image_urls' },\n 'fal-ai/vidu/q2/reference-to-video/pro': { multi: 'reference_image_urls' },\n 'fal-ai/vidu/q3/image-to-video': { start: 'image_url' },\n 'fal-ai/vidu/q3/image-to-video/turbo': { start: 'image_url' },\n 'fal-ai/vidu/reference-to-image': { multi: 'reference_image_urls' },\n 'fal-ai/vidu/reference-to-video': { multi: 'reference_image_urls' },\n 'fal-ai/vidu/template-to-video': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/wan-22-vace-fun-a14b/depth': { multi: 'ref_image_urls', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-22-vace-fun-a14b/inpainting': { multi: 'ref_image_urls', mask: 'mask_image_url', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-22-vace-fun-a14b/outpainting': { multi: 'ref_image_urls', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-22-vace-fun-a14b/pose': { multi: 'ref_image_urls', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-22-vace-fun-a14b/reframe': { start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-25-preview/image-to-image': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/wan-25-preview/image-to-video': { start: 'image_url' },\n 'fal-ai/wan-ati': { start: 'image_url' },\n 'fal-ai/wan-effects': { start: 'image_url' },\n 'fal-ai/wan-fun-control': { reference: 'reference_image_url' },\n 'fal-ai/wan-i2v': { start: 'image_url' },\n 'fal-ai/wan-i2v-lora': { start: 'image_url' },\n 'fal-ai/wan-motion': { start: 'image_url' },\n 'fal-ai/wan-move': { start: 'image_url' },\n 'fal-ai/wan-pro/image-to-video': { start: 'image_url' },\n 'fal-ai/wan-vace': { multi: 'ref_image_urls', mask: 'mask_image_url', reference: 'ref_image_urls' },\n 'fal-ai/wan-vace-1-3b': { multi: 'ref_image_urls', mask: 'mask_image_url', reference: 'ref_image_urls' },\n 'fal-ai/wan-vace-14b': { multi: 'ref_image_urls', mask: 'mask_image_url', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-vace-14b/depth': { multi: 'ref_image_urls', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-vace-14b/inpainting': { multi: 'ref_image_urls', mask: 'mask_image_url', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-vace-14b/outpainting': { multi: 'ref_image_urls', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-vace-14b/pose': { multi: 'ref_image_urls', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-vace-14b/reframe': { start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-vace-apps/video-edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/wan/v2.2-14b/animate/move': { start: 'image_url' },\n 'fal-ai/wan/v2.2-14b/animate/replace': { start: 'image_url' },\n 'fal-ai/wan/v2.2-14b/speech-to-video': { start: 'image_url' },\n 'fal-ai/wan/v2.2-5b/image-to-video': { start: 'image_url' },\n 'fal-ai/wan/v2.2-a14b/image-to-video/lora': { start: 'image_url' },\n 'fal-ai/wan/v2.2-a14b/image-to-video/turbo': { start: 'image_url' },\n 'fal-ai/wan/v2.7/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/wan/v2.7/edit-video': { reference: 'reference_image_url' },\n 'fal-ai/wan/v2.7/image-to-video': { start: 'image_url' },\n 'fal-ai/wan/v2.7/pro/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/wan/v2.7/reference-to-video': { multi: 'reference_image_urls' },\n 'fal-ai/x-ailab/nsfw': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/z-image-base-trainer': { single: 'image_data_url' },\n 'fal-ai/z-image-trainer': { single: 'image_data_url' },\n 'fal-ai/z-image-turbo-trainer-v2': { single: 'image_data_url' },\n 'fal-ai/z-image/turbo/inpaint': { mask: 'mask_image_url' },\n 'fal-ai/z-image/turbo/inpaint/lora': { mask: 'mask_image_url' },\n 'fal-ai/z-image/turbo/tiling': { mask: 'mask_image_url' },\n 'fal-ai/z-image/turbo/tiling/lora': { mask: 'mask_image_url' },\n 'moonvalley/marey/i2v': { start: 'image_url' },\n 'moonvalley/marey/motion-transfer': { reference: 'reference_image_url' },\n 'moonvalley/marey/pose-transfer': { reference: 'reference_image_url' },\n 'openrouter/router/vision': { single: 'image_urls', reference: 'image_urls' },\n 'veed/fabric-1.0': { start: 'image_url' },\n 'veed/fabric-1.0/fast': { start: 'image_url' },\n 'veed/fabric-1.0/text': { start: 'image_url' },\n 'wan/v2.6/image-to-image': { single: 'image_urls', reference: 'image_urls' },\n 'wan/v2.6/image-to-video': { start: 'image_url' },\n 'wan/v2.6/image-to-video/flash': { start: 'image_url' },\n 'wan/v2.6/reference-to-video/flash': { single: 'image_urls', reference: 'image_urls' },\n 'xai/grok-imagine-image/edit': { single: 'image_urls', reference: 'image_urls' },\n 'xai/grok-imagine-video/image-to-video': { start: 'image_url' },\n 'xai/grok-imagine-video/reference-to-video': { multi: 'reference_image_urls' },\n} as const satisfies {\n [K in keyof EndpointTypeMap]?: {\n [Role in keyof FalImageFieldOverride]?: InputFieldOf<K>\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"image-field-overrides.js","names":[],"sources":["../../../../src/image/generated/image-field-overrides.ts"],"sourcesContent":["/* eslint-disable */\n// ---------------------------------------------------------------------------\n// AUTO-GENERATED — do not edit by hand.\n//\n// Generated from @fal-ai/client@1.10.1 EndpointTypeMap by\n// scripts/generate-fal-image-field-map.ts. Regenerate after bumping\n// @fal-ai/client:\n//\n// pnpm tsx scripts/generate-fal-image-field-map.ts\n//\n// Maps fal endpoint ids to the image-conditioning input fields they accept\n// whenever those differ from the defaults in image-inputs.ts. Endpoints\n// matching the defaults are omitted. The `satisfies` clause below checks\n// every field name against the SDK's endpoint input types at compile time\n// (type-only import — nothing from endpoints.d.ts is shipped at runtime).\n// ---------------------------------------------------------------------------\nimport type { EndpointTypeMap } from '@fal-ai/client/endpoints'\n\n/** sha256 of the endpoints.d.ts this file was generated from. */\nexport const FAL_ENDPOINTS_DTS_SHA256 =\n 'a071f97905b8a1068f924c74108b881362f20c9054620b70359c200404e23b4e'\n\n/** Every input field name the image-input mappers may emit. */\nexport type FalImageFieldName =\n | 'control_image_url'\n | 'end_image_url'\n | 'first_frame_url'\n | 'first_image_url'\n | 'image_data_url'\n | 'image_url'\n | 'image_urls'\n | 'input_image_url'\n | 'input_image_urls'\n | 'last_frame_url'\n | 'mask_image_url'\n | 'mask_url'\n | 'ref_image_urls'\n | 'reference_image_url'\n | 'reference_image_urls'\n | 'start_image_url'\n | 'tail_image_url'\n\n/**\n * Per-role input-field overrides. Roles: `single` / `multi` route unroled\n * source images; the rest mirror `MediaInputRole` (`start` / `end` map the\n * `start_frame` / `end_frame` roles).\n */\nexport interface FalImageFieldOverride {\n single?: string\n multi?: string\n mask?: string\n control?: string\n reference?: string\n start?: string\n end?: string\n}\n\ntype InputFieldOf<K extends keyof EndpointTypeMap> = Extract<\n keyof EndpointTypeMap[K]['input'],\n string\n>\n\nexport const FAL_IMAGE_FIELD_OVERRIDES = {\n 'bytedance/lynx': { start: 'image_url' },\n 'decart/lucy-i2v': { start: 'image_url' },\n 'fal-ai/ai-avatar/multi': { start: 'image_url' },\n 'fal-ai/ai-avatar/multi-text': { start: 'image_url' },\n 'fal-ai/ai-avatar/single-text': { start: 'image_url' },\n 'fal-ai/bytedance/dreamactor/v2': { start: 'image_url' },\n 'fal-ai/bytedance/omnihuman': { start: 'image_url' },\n 'fal-ai/bytedance/omnihuman/v1.5': { start: 'image_url' },\n 'fal-ai/bytedance/seed/v2/mini': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/bytedance/seedance/v1.5/pro/image-to-video': { start: 'image_url' },\n 'fal-ai/bytedance/seedance/v1/lite/image-to-video': { start: 'image_url' },\n 'fal-ai/bytedance/seedance/v1/lite/reference-to-video': { multi: 'reference_image_urls' },\n 'fal-ai/bytedance/seedance/v1/pro/fast/image-to-video': { start: 'image_url' },\n 'fal-ai/bytedance/seedance/v1/pro/image-to-video': { start: 'image_url' },\n 'fal-ai/bytedance/seedream/v4.5/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/bytedance/seedream/v4/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/bytedance/seedream/v5/lite/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/cogvideox-5b/image-to-video': { start: 'image_url' },\n 'fal-ai/controlnext': { start: 'image_url' },\n 'fal-ai/cosmos-predict-2.5/image-to-video': { start: 'image_url' },\n 'fal-ai/creatify/aurora': { start: 'image_url' },\n 'fal-ai/davinci-magihuman': { start: 'image_url' },\n 'fal-ai/dreamomni2/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/echomimic-v3': { start: 'image_url' },\n 'fal-ai/fast-svd-lcm': { start: 'image_url' },\n 'fal-ai/firered-image-edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/firered-image-edit-v1.1': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-flex/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-klein-4b-base-trainer': { single: 'image_data_url' },\n 'fal-ai/flux-2-klein-4b-base-trainer/edit': { single: 'image_data_url' },\n 'fal-ai/flux-2-klein-9b-base-trainer': { single: 'image_data_url' },\n 'fal-ai/flux-2-klein-9b-base-trainer/edit': { single: 'image_data_url' },\n 'fal-ai/flux-2-lora-gallery/add-background': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-lora-gallery/apartment-staging': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-lora-gallery/face-to-full-portrait': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-lora-gallery/multiple-angles': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-lora-gallery/virtual-tryon': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-max/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-pro/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2-trainer': { single: 'image_data_url' },\n 'fal-ai/flux-2-trainer-v2': { single: 'image_data_url' },\n 'fal-ai/flux-2-trainer-v2/edit': { single: 'image_data_url' },\n 'fal-ai/flux-2-trainer/edit': { single: 'image_data_url' },\n 'fal-ai/flux-2/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/flash/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/klein/4b/base/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/klein/4b/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/klein/4b/edit/lora': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/klein/9b/base/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/klein/9b/base/edit/lora': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/klein/9b/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/klein/9b/edit/lora': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/lora/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-2/turbo/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-general': { reference: 'reference_image_url' },\n 'fal-ai/flux-general/differential-diffusion': { reference: 'reference_image_url' },\n 'fal-ai/flux-general/image-to-image': { reference: 'reference_image_url' },\n 'fal-ai/flux-general/inpainting': { reference: 'reference_image_url' },\n 'fal-ai/flux-general/rf-inversion': { reference: 'reference_image_url' },\n 'fal-ai/flux-kontext-trainer': { single: 'image_data_url' },\n 'fal-ai/flux-pro/kontext/max/multi': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-pro/kontext/multi': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/flux-pulid': { reference: 'reference_image_url' },\n 'fal-ai/fooocus': { mask: 'mask_image_url' },\n 'fal-ai/fooocus/image-prompt': { mask: 'mask_image_url' },\n 'fal-ai/fooocus/inpaint': { mask: 'mask_image_url' },\n 'fal-ai/framepack': { start: 'image_url' },\n 'fal-ai/framepack/f1': { start: 'image_url' },\n 'fal-ai/framepack/flf2v': { start: 'image_url' },\n 'fal-ai/gemini-25-flash-image/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/gemini-3-pro-image-preview/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/gemini-3.1-flash-image-preview/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/gemini-flash-edit/multi': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/glm-image/image-to-image': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/goal-force': { start: 'image_url' },\n 'fal-ai/got-ocr/v2': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/gpt-image-1-mini/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/gpt-image-1.5/edit': { single: 'image_urls', mask: 'mask_image_url', reference: 'image_urls' },\n 'fal-ai/gpt-image-1/edit-image': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/heygen/avatar4/image-to-video': { start: 'image_url' },\n 'fal-ai/hunyuan-3d/v3.1/pro/image-to-3d': { single: 'input_image_url' },\n 'fal-ai/hunyuan-3d/v3.1/rapid/image-to-3d': { single: 'input_image_url' },\n 'fal-ai/hunyuan-avatar': { start: 'image_url' },\n 'fal-ai/hunyuan-custom': { start: 'image_url' },\n 'fal-ai/hunyuan-image/v3/instruct/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/hunyuan-portrait': { start: 'image_url' },\n 'fal-ai/hunyuan-video-image-to-video': { start: 'image_url' },\n 'fal-ai/hunyuan-video-img2vid-lora': { start: 'image_url' },\n 'fal-ai/hunyuan-video-v1.5/image-to-video': { start: 'image_url' },\n 'fal-ai/hunyuan3d-v21': { single: 'input_image_url' },\n 'fal-ai/hunyuan3d-v3/image-to-3d': { single: 'input_image_url' },\n 'fal-ai/hunyuan3d-v3/sketch-to-3d': { single: 'input_image_url' },\n 'fal-ai/hunyuan3d/v2': { single: 'input_image_url' },\n 'fal-ai/hunyuan3d/v2/mini': { single: 'input_image_url' },\n 'fal-ai/hunyuan3d/v2/mini/turbo': { single: 'input_image_url' },\n 'fal-ai/hunyuan3d/v2/turbo': { single: 'input_image_url' },\n 'fal-ai/hy-wu-edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/hyper3d/rodin': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/hyper3d/rodin/v2': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/iclight-v2': { mask: 'mask_image_url' },\n 'fal-ai/ideogram/character': { single: 'image_urls' },\n 'fal-ai/ideogram/v3': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/ideogram/v3/edit': { reference: 'image_urls' },\n 'fal-ai/ideogram/v3/reframe': { reference: 'image_urls' },\n 'fal-ai/ideogram/v3/remix': { reference: 'image_urls' },\n 'fal-ai/ideogram/v3/replace-background': { reference: 'image_urls' },\n 'fal-ai/infinitalk': { start: 'image_url' },\n 'fal-ai/infinitalk/single-text': { start: 'image_url' },\n 'fal-ai/kandinsky5-pro/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-image/o1': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-image/o3/image-to-image': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/ai-avatar/v2/pro': { start: 'image_url' },\n 'fal-ai/kling-video/ai-avatar/v2/standard': { start: 'image_url' },\n 'fal-ai/kling-video/o1/reference-to-video': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o1/standard/reference-to-video': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o1/standard/video-to-video/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o1/standard/video-to-video/reference': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o1/video-to-video/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o1/video-to-video/reference': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o3/pro/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-video/o3/pro/reference-to-video': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o3/pro/video-to-video/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o3/pro/video-to-video/reference': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o3/standard/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-video/o3/standard/reference-to-video': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o3/standard/video-to-video/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/o3/standard/video-to-video/reference': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/kling-video/v1.5/pro/effects': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/kling-video/v1.5/pro/image-to-video': { start: 'image_url', end: 'tail_image_url' },\n 'fal-ai/kling-video/v1.6/pro/effects': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/kling-video/v1.6/pro/elements': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/kling-video/v1.6/pro/image-to-video': { start: 'image_url', end: 'tail_image_url' },\n 'fal-ai/kling-video/v1.6/standard/effects': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/kling-video/v1.6/standard/elements': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/kling-video/v1.6/standard/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-video/v1/pro/ai-avatar': { start: 'image_url' },\n 'fal-ai/kling-video/v1/standard/ai-avatar': { start: 'image_url' },\n 'fal-ai/kling-video/v1/standard/effects': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/kling-video/v1/standard/image-to-video': { start: 'image_url', end: 'tail_image_url' },\n 'fal-ai/kling-video/v2.1/master/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-video/v2.1/standard/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-video/v2.5-turbo/pro/image-to-video': { start: 'image_url', end: 'tail_image_url' },\n 'fal-ai/kling-video/v2.5-turbo/standard/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-video/v2.6/pro/motion-control': { start: 'image_url' },\n 'fal-ai/kling-video/v2.6/standard/motion-control': { start: 'image_url' },\n 'fal-ai/kling-video/v2/master/image-to-video': { start: 'image_url' },\n 'fal-ai/kling-video/v3/pro/motion-control': { start: 'image_url' },\n 'fal-ai/kling-video/v3/standard/motion-control': { start: 'image_url' },\n 'fal-ai/live-avatar': { start: 'image_url' },\n 'fal-ai/live-portrait': { start: 'image_url' },\n 'fal-ai/longcat-multi-avatar/image-audio-to-video': { start: 'image_url' },\n 'fal-ai/longcat-single-avatar/image-audio-to-video': { start: 'image_url' },\n 'fal-ai/longcat-video/distilled/image-to-video/480p': { start: 'image_url' },\n 'fal-ai/longcat-video/distilled/image-to-video/720p': { start: 'image_url' },\n 'fal-ai/longcat-video/image-to-video/480p': { start: 'image_url' },\n 'fal-ai/longcat-video/image-to-video/720p': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/audio-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/audio-to-video/lora': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/distilled/audio-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/distilled/audio-to-video/lora': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/distilled/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/distilled/video-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/distilled/video-to-video/lora': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/image-to-video/lora': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/video-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2-19b/video-to-video/lora': { start: 'image_url' },\n 'fal-ai/ltx-2.3/audio-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2.3/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2.3/image-to-video/fast': { start: 'image_url' },\n 'fal-ai/ltx-2/audio-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-2/image-to-video/fast': { start: 'image_url' },\n 'fal-ai/ltx-video-13b-dev/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-video-13b-distilled/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-video-lora/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-video-v095/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-video-v097/image-to-video': { start: 'image_url' },\n 'fal-ai/ltx-video/image-to-video': { start: 'image_url' },\n 'fal-ai/ltxv-13b-098-distilled/image-to-video': { start: 'image_url' },\n 'fal-ai/luma-dream-machine/ray-2-flash/image-to-video': { start: 'image_url' },\n 'fal-ai/luma-dream-machine/ray-2-flash/modify': { start: 'image_url' },\n 'fal-ai/luma-dream-machine/ray-2-flash/reframe': { start: 'image_url' },\n 'fal-ai/luma-dream-machine/ray-2/image-to-video': { start: 'image_url' },\n 'fal-ai/luma-dream-machine/ray-2/reframe': { start: 'image_url' },\n 'fal-ai/magi-distilled/image-to-video': { start: 'image_url' },\n 'fal-ai/magi/image-to-video': { start: 'image_url' },\n 'fal-ai/meshy/v5/multi-image-to-3d': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/minimax/hailuo-02-fast/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/hailuo-02/pro/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/hailuo-02/standard/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/hailuo-2.3-fast/pro/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/hailuo-2.3-fast/standard/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/hailuo-2.3/pro/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/hailuo-2.3/standard/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/video-01-director/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/video-01-live/image-to-video': { start: 'image_url' },\n 'fal-ai/minimax/video-01/image-to-video': { start: 'image_url' },\n 'fal-ai/muse-pose': { start: 'image_url' },\n 'fal-ai/nano-banana-2/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/nano-banana-pro/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/nano-banana/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/omnigen-v1': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/omnigen-v2': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/omnipart': { single: 'input_image_url' },\n 'fal-ai/phota/create-profile': { single: 'image_data_url' },\n 'fal-ai/phota/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/pika/v1.5/pikaffects': { start: 'image_url' },\n 'fal-ai/pika/v2.1/image-to-video': { start: 'image_url' },\n 'fal-ai/pika/v2.2/image-to-video': { start: 'image_url' },\n 'fal-ai/pika/v2.2/pikaframes': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/pika/v2/pikadditions': { start: 'image_url' },\n 'fal-ai/pika/v2/turbo/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/swap': { start: 'image_url' },\n 'fal-ai/pixverse/v3.5/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/v4.5/effects': { start: 'image_url' },\n 'fal-ai/pixverse/v4.5/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/v4.5/image-to-video/fast': { start: 'image_url' },\n 'fal-ai/pixverse/v4.5/transition': { start: 'first_image_url' },\n 'fal-ai/pixverse/v4/effects': { start: 'image_url' },\n 'fal-ai/pixverse/v4/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/v4/image-to-video/fast': { start: 'image_url' },\n 'fal-ai/pixverse/v5.5/effects': { start: 'image_url' },\n 'fal-ai/pixverse/v5.5/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/v5.5/transition': { start: 'first_image_url' },\n 'fal-ai/pixverse/v5.6/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/v5.6/transition': { start: 'first_image_url' },\n 'fal-ai/pixverse/v5/effects': { start: 'image_url' },\n 'fal-ai/pixverse/v5/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/v5/transition': { start: 'first_image_url' },\n 'fal-ai/pixverse/v6/image-to-video': { start: 'image_url' },\n 'fal-ai/pixverse/v6/transition': { start: 'first_image_url' },\n 'fal-ai/qwen-image-2/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-2/pro/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-2512-trainer': { single: 'image_data_url' },\n 'fal-ai/qwen-image-2512-trainer-v2': { single: 'image_data_url' },\n 'fal-ai/qwen-image-edit-2509': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/add-background': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/face-to-full-portrait': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/group-photo': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/integrate-product': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/lighting-restoration': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/multiple-angles': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/next-scene': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/remove-element': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/remove-lighting': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-lora-gallery/shirt-design': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2509-trainer': { single: 'image_data_url' },\n 'fal-ai/qwen-image-edit-2511': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2511-multiple-angles': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-2511-trainer': { single: 'image_data_url' },\n 'fal-ai/qwen-image-edit-2511/lora': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/add-background': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/face-to-full-portrait': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/group-photo': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/integrate-product': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/lighting-restoration': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/multiple-angles': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/next-scene': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/remove-element': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/remove-lighting': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-lora-gallery/shirt-design': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-edit-plus-trainer': { single: 'image_data_url' },\n 'fal-ai/qwen-image-edit-trainer': { single: 'image_data_url' },\n 'fal-ai/qwen-image-layered-trainer': { single: 'image_data_url' },\n 'fal-ai/qwen-image-max/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/qwen-image-trainer': { single: 'image_data_url' },\n 'fal-ai/qwen-image-trainer-v2': { single: 'image_data_url' },\n 'fal-ai/scail': { start: 'image_url' },\n 'fal-ai/skyreels-i2v': { start: 'image_url' },\n 'fal-ai/sora-2/image-to-video': { start: 'image_url' },\n 'fal-ai/sora-2/image-to-video/pro': { start: 'image_url' },\n 'fal-ai/stable-avatar': { start: 'image_url' },\n 'fal-ai/stable-video': { start: 'image_url' },\n 'fal-ai/steady-dancer': { start: 'image_url' },\n 'fal-ai/trellis/multi': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/uno': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/uso': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/vecglypher/image-to-svg': { multi: 'reference_image_urls' },\n 'fal-ai/veo2/image-to-video': { start: 'image_url' },\n 'fal-ai/veo3.1/fast/first-last-frame-to-video': { start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/veo3.1/fast/image-to-video': { start: 'image_url' },\n 'fal-ai/veo3.1/first-last-frame-to-video': { start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/veo3.1/image-to-video': { start: 'image_url' },\n 'fal-ai/veo3.1/lite/first-last-frame-to-video': { start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/veo3.1/lite/image-to-video': { start: 'image_url' },\n 'fal-ai/veo3.1/reference-to-video': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/veo3/fast/image-to-video': { start: 'image_url' },\n 'fal-ai/veo3/image-to-video': { start: 'image_url' },\n 'fal-ai/video-as-prompt': { start: 'image_url' },\n 'fal-ai/vidu/image-to-video': { start: 'image_url' },\n 'fal-ai/vidu/q1/image-to-video': { start: 'image_url' },\n 'fal-ai/vidu/q1/reference-to-video': { multi: 'reference_image_urls' },\n 'fal-ai/vidu/q2/image-to-video/pro': { start: 'image_url' },\n 'fal-ai/vidu/q2/image-to-video/turbo': { start: 'image_url' },\n 'fal-ai/vidu/q2/reference-to-image': { multi: 'reference_image_urls' },\n 'fal-ai/vidu/q2/reference-to-video/pro': { multi: 'reference_image_urls' },\n 'fal-ai/vidu/q3/image-to-video': { start: 'image_url' },\n 'fal-ai/vidu/q3/image-to-video/turbo': { start: 'image_url' },\n 'fal-ai/vidu/reference-to-image': { multi: 'reference_image_urls' },\n 'fal-ai/vidu/reference-to-video': { multi: 'reference_image_urls' },\n 'fal-ai/vidu/template-to-video': { single: 'input_image_urls', multi: 'input_image_urls', reference: 'input_image_urls' },\n 'fal-ai/wan-22-vace-fun-a14b/depth': { multi: 'ref_image_urls', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-22-vace-fun-a14b/inpainting': { multi: 'ref_image_urls', mask: 'mask_image_url', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-22-vace-fun-a14b/outpainting': { multi: 'ref_image_urls', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-22-vace-fun-a14b/pose': { multi: 'ref_image_urls', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-22-vace-fun-a14b/reframe': { start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-25-preview/image-to-image': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/wan-25-preview/image-to-video': { start: 'image_url' },\n 'fal-ai/wan-ati': { start: 'image_url' },\n 'fal-ai/wan-effects': { start: 'image_url' },\n 'fal-ai/wan-fun-control': { reference: 'reference_image_url' },\n 'fal-ai/wan-i2v': { start: 'image_url' },\n 'fal-ai/wan-i2v-lora': { start: 'image_url' },\n 'fal-ai/wan-motion': { start: 'image_url' },\n 'fal-ai/wan-move': { start: 'image_url' },\n 'fal-ai/wan-pro/image-to-video': { start: 'image_url' },\n 'fal-ai/wan-vace': { multi: 'ref_image_urls', mask: 'mask_image_url', reference: 'ref_image_urls' },\n 'fal-ai/wan-vace-1-3b': { multi: 'ref_image_urls', mask: 'mask_image_url', reference: 'ref_image_urls' },\n 'fal-ai/wan-vace-14b': { multi: 'ref_image_urls', mask: 'mask_image_url', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-vace-14b/depth': { multi: 'ref_image_urls', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-vace-14b/inpainting': { multi: 'ref_image_urls', mask: 'mask_image_url', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-vace-14b/outpainting': { multi: 'ref_image_urls', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-vace-14b/pose': { multi: 'ref_image_urls', reference: 'ref_image_urls', start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-vace-14b/reframe': { start: 'first_frame_url', end: 'last_frame_url' },\n 'fal-ai/wan-vace-apps/video-edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/wan/v2.2-14b/animate/move': { start: 'image_url' },\n 'fal-ai/wan/v2.2-14b/animate/replace': { start: 'image_url' },\n 'fal-ai/wan/v2.2-14b/speech-to-video': { start: 'image_url' },\n 'fal-ai/wan/v2.2-5b/image-to-video': { start: 'image_url' },\n 'fal-ai/wan/v2.2-a14b/image-to-video/lora': { start: 'image_url' },\n 'fal-ai/wan/v2.2-a14b/image-to-video/turbo': { start: 'image_url' },\n 'fal-ai/wan/v2.7/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/wan/v2.7/edit-video': { reference: 'reference_image_url' },\n 'fal-ai/wan/v2.7/image-to-video': { start: 'image_url' },\n 'fal-ai/wan/v2.7/pro/edit': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/wan/v2.7/reference-to-video': { multi: 'reference_image_urls' },\n 'fal-ai/x-ailab/nsfw': { single: 'image_urls', reference: 'image_urls' },\n 'fal-ai/z-image-base-trainer': { single: 'image_data_url' },\n 'fal-ai/z-image-trainer': { single: 'image_data_url' },\n 'fal-ai/z-image-turbo-trainer-v2': { single: 'image_data_url' },\n 'fal-ai/z-image/turbo/inpaint': { mask: 'mask_image_url' },\n 'fal-ai/z-image/turbo/inpaint/lora': { mask: 'mask_image_url' },\n 'fal-ai/z-image/turbo/tiling': { mask: 'mask_image_url' },\n 'fal-ai/z-image/turbo/tiling/lora': { mask: 'mask_image_url' },\n 'moonvalley/marey/i2v': { start: 'image_url' },\n 'moonvalley/marey/motion-transfer': { reference: 'reference_image_url' },\n 'moonvalley/marey/pose-transfer': { reference: 'reference_image_url' },\n 'openrouter/router/vision': { single: 'image_urls', reference: 'image_urls' },\n 'veed/fabric-1.0': { start: 'image_url' },\n 'veed/fabric-1.0/fast': { start: 'image_url' },\n 'veed/fabric-1.0/text': { start: 'image_url' },\n 'wan/v2.6/image-to-image': { single: 'image_urls', reference: 'image_urls' },\n 'wan/v2.6/image-to-video': { start: 'image_url' },\n 'wan/v2.6/image-to-video/flash': { start: 'image_url' },\n 'wan/v2.6/reference-to-video/flash': { single: 'image_urls', reference: 'image_urls' },\n 'xai/grok-imagine-image/edit': { single: 'image_urls', reference: 'image_urls' },\n 'xai/grok-imagine-video/image-to-video': { start: 'image_url' },\n 'xai/grok-imagine-video/reference-to-video': { multi: 'reference_image_urls' },\n} as const satisfies {\n [K in keyof EndpointTypeMap]?: {\n [Role in keyof FalImageFieldOverride]?: InputFieldOf<K>\n }\n}\n"],"mappings":";AA8DA,IAAa,4BAA4B;CACvC,kBAAkB,EAAE,OAAO,YAAY;CACvC,mBAAmB,EAAE,OAAO,YAAY;CACxC,0BAA0B,EAAE,OAAO,YAAY;CAC/C,+BAA+B,EAAE,OAAO,YAAY;CACpD,gCAAgC,EAAE,OAAO,YAAY;CACrD,kCAAkC,EAAE,OAAO,YAAY;CACvD,8BAA8B,EAAE,OAAO,YAAY;CACnD,mCAAmC,EAAE,OAAO,YAAY;CACxD,iCAAiC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACjF,qDAAqD,EAAE,OAAO,YAAY;CAC1E,oDAAoD,EAAE,OAAO,YAAY;CACzE,wDAAwD,EAAE,OAAO,uBAAuB;CACxF,wDAAwD,EAAE,OAAO,YAAY;CAC7E,mDAAmD,EAAE,OAAO,YAAY;CACxE,uCAAuC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACvF,qCAAqC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACrF,0CAA0C;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC1F,sCAAsC,EAAE,OAAO,YAAY;CAC3D,sBAAsB,EAAE,OAAO,YAAY;CAC3C,4CAA4C,EAAE,OAAO,YAAY;CACjE,0BAA0B,EAAE,OAAO,YAAY;CAC/C,4BAA4B,EAAE,OAAO,YAAY;CACjD,0BAA0B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC1E,uBAAuB,EAAE,OAAO,YAAY;CAC5C,uBAAuB,EAAE,OAAO,YAAY;CAC5C,6BAA6B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC7E,kCAAkC;EAAE,QAAQ;EAAc,WAAW;CAAa;CAClF,2BAA2B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC3E,uCAAuC,EAAE,QAAQ,iBAAiB;CAClE,4CAA4C,EAAE,QAAQ,iBAAiB;CACvE,uCAAuC,EAAE,QAAQ,iBAAiB;CAClE,4CAA4C,EAAE,QAAQ,iBAAiB;CACvE,6CAA6C;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC7F,gDAAgD;EAAE,QAAQ;EAAc,WAAW;CAAa;CAChG,oDAAoD;EAAE,QAAQ;EAAc,WAAW;CAAa;CACpG,8CAA8C;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC9F,4CAA4C;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC5F,0BAA0B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC1E,0BAA0B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC1E,yBAAyB,EAAE,QAAQ,iBAAiB;CACpD,4BAA4B,EAAE,QAAQ,iBAAiB;CACvD,iCAAiC,EAAE,QAAQ,iBAAiB;CAC5D,8BAA8B,EAAE,QAAQ,iBAAiB;CACzD,sBAAsB;EAAE,QAAQ;EAAc,WAAW;CAAa;CACtE,4BAA4B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC5E,oCAAoC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACpF,+BAA+B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC/E,oCAAoC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACpF,oCAAoC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACpF,yCAAyC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACzF,+BAA+B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC/E,oCAAoC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACpF,2BAA2B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC3E,4BAA4B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC5E,uBAAuB,EAAE,WAAW,sBAAsB;CAC1D,8CAA8C,EAAE,WAAW,sBAAsB;CACjF,sCAAsC,EAAE,WAAW,sBAAsB;CACzE,kCAAkC,EAAE,WAAW,sBAAsB;CACrE,oCAAoC,EAAE,WAAW,sBAAsB;CACvE,+BAA+B,EAAE,QAAQ,iBAAiB;CAC1D,qCAAqC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACrF,iCAAiC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACjF,qBAAqB,EAAE,WAAW,sBAAsB;CACxD,kBAAkB,EAAE,MAAM,iBAAiB;CAC3C,+BAA+B,EAAE,MAAM,iBAAiB;CACxD,0BAA0B,EAAE,MAAM,iBAAiB;CACnD,oBAAoB,EAAE,OAAO,YAAY;CACzC,uBAAuB,EAAE,OAAO,YAAY;CAC5C,0BAA0B,EAAE,OAAO,YAAY;CAC/C,qCAAqC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACrF,0CAA0C;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC1F,8CAA8C;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC9F,kCAAkC;EAAE,QAAQ;EAAoB,OAAO;EAAoB,WAAW;CAAmB;CACzH,mCAAmC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACnF,qBAAqB,EAAE,OAAO,YAAY;CAC1C,qBAAqB;EAAE,QAAQ;EAAoB,OAAO;EAAoB,WAAW;CAAmB;CAC5G,gCAAgC;EAAE,QAAQ;EAAc,WAAW;CAAa;CAChF,6BAA6B;EAAE,QAAQ;EAAc,MAAM;EAAkB,WAAW;CAAa;CACrG,iCAAiC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACjF,wCAAwC,EAAE,OAAO,YAAY;CAC7D,0CAA0C,EAAE,QAAQ,kBAAkB;CACtE,4CAA4C,EAAE,QAAQ,kBAAkB;CACxE,yBAAyB,EAAE,OAAO,YAAY;CAC9C,yBAAyB,EAAE,OAAO,YAAY;CAC9C,yCAAyC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACzF,2BAA2B,EAAE,OAAO,YAAY;CAChD,uCAAuC,EAAE,OAAO,YAAY;CAC5D,qCAAqC,EAAE,OAAO,YAAY;CAC1D,4CAA4C,EAAE,OAAO,YAAY;CACjE,wBAAwB,EAAE,QAAQ,kBAAkB;CACpD,mCAAmC,EAAE,QAAQ,kBAAkB;CAC/D,oCAAoC,EAAE,QAAQ,kBAAkB;CAChE,uBAAuB,EAAE,QAAQ,kBAAkB;CACnD,4BAA4B,EAAE,QAAQ,kBAAkB;CACxD,kCAAkC,EAAE,QAAQ,kBAAkB;CAC9D,6BAA6B,EAAE,QAAQ,kBAAkB;CACzD,qBAAqB;EAAE,QAAQ;EAAc,WAAW;CAAa;CACrE,wBAAwB;EAAE,QAAQ;EAAoB,OAAO;EAAoB,WAAW;CAAmB;CAC/G,2BAA2B;EAAE,QAAQ;EAAoB,OAAO;EAAoB,WAAW;CAAmB;CAClH,qBAAqB,EAAE,MAAM,iBAAiB;CAC9C,6BAA6B,EAAE,QAAQ,aAAa;CACpD,sBAAsB;EAAE,QAAQ;EAAc,WAAW;CAAa;CACtE,2BAA2B,EAAE,WAAW,aAAa;CACrD,8BAA8B,EAAE,WAAW,aAAa;CACxD,4BAA4B,EAAE,WAAW,aAAa;CACtD,yCAAyC,EAAE,WAAW,aAAa;CACnE,qBAAqB,EAAE,OAAO,YAAY;CAC1C,iCAAiC,EAAE,OAAO,YAAY;CACtD,wCAAwC,EAAE,OAAO,YAAY;CAC7D,yBAAyB;EAAE,QAAQ;EAAc,WAAW;CAAa;CACzE,wCAAwC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACxF,uCAAuC,EAAE,OAAO,YAAY;CAC5D,4CAA4C,EAAE,OAAO,YAAY;CACjE,4CAA4C;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC5F,qDAAqD;EAAE,QAAQ;EAAc,WAAW;CAAa;CACrG,sDAAsD;EAAE,QAAQ;EAAc,WAAW;CAAa;CACtG,2DAA2D;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC3G,6CAA6C;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC7F,kDAAkD;EAAE,QAAQ;EAAc,WAAW;CAAa;CAClG,4CAA4C,EAAE,OAAO,YAAY;CACjE,gDAAgD;EAAE,QAAQ;EAAc,WAAW;CAAa;CAChG,iDAAiD;EAAE,QAAQ;EAAc,WAAW;CAAa;CACjG,sDAAsD;EAAE,QAAQ;EAAc,WAAW;CAAa;CACtG,iDAAiD,EAAE,OAAO,YAAY;CACtE,qDAAqD;EAAE,QAAQ;EAAc,WAAW;CAAa;CACrG,sDAAsD;EAAE,QAAQ;EAAc,WAAW;CAAa;CACtG,2DAA2D;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC3G,uCAAuC;EAAE,QAAQ;EAAoB,OAAO;EAAoB,WAAW;CAAmB;CAC9H,8CAA8C;EAAE,OAAO;EAAa,KAAK;CAAiB;CAC1F,uCAAuC;EAAE,QAAQ;EAAoB,OAAO;EAAoB,WAAW;CAAmB;CAC9H,wCAAwC;EAAE,QAAQ;EAAoB,OAAO;EAAoB,WAAW;CAAmB;CAC/H,8CAA8C;EAAE,OAAO;EAAa,KAAK;CAAiB;CAC1F,4CAA4C;EAAE,QAAQ;EAAoB,OAAO;EAAoB,WAAW;CAAmB;CACnI,6CAA6C;EAAE,QAAQ;EAAoB,OAAO;EAAoB,WAAW;CAAmB;CACpI,mDAAmD,EAAE,OAAO,YAAY;CACxE,uCAAuC,EAAE,OAAO,YAAY;CAC5D,4CAA4C,EAAE,OAAO,YAAY;CACjE,0CAA0C;EAAE,QAAQ;EAAoB,OAAO;EAAoB,WAAW;CAAmB;CACjI,iDAAiD;EAAE,OAAO;EAAa,KAAK;CAAiB;CAC7F,iDAAiD,EAAE,OAAO,YAAY;CACtE,mDAAmD,EAAE,OAAO,YAAY;CACxE,oDAAoD;EAAE,OAAO;EAAa,KAAK;CAAiB;CAChG,yDAAyD,EAAE,OAAO,YAAY;CAC9E,8CAA8C,EAAE,OAAO,YAAY;CACnE,mDAAmD,EAAE,OAAO,YAAY;CACxE,+CAA+C,EAAE,OAAO,YAAY;CACpE,4CAA4C,EAAE,OAAO,YAAY;CACjE,iDAAiD,EAAE,OAAO,YAAY;CACtE,sBAAsB,EAAE,OAAO,YAAY;CAC3C,wBAAwB,EAAE,OAAO,YAAY;CAC7C,oDAAoD,EAAE,OAAO,YAAY;CACzE,qDAAqD,EAAE,OAAO,YAAY;CAC1E,sDAAsD,EAAE,OAAO,YAAY;CAC3E,sDAAsD,EAAE,OAAO,YAAY;CAC3E,4CAA4C,EAAE,OAAO,YAAY;CACjE,4CAA4C,EAAE,OAAO,YAAY;CACjE,mCAAmC,EAAE,OAAO,YAAY;CACxD,wCAAwC,EAAE,OAAO,YAAY;CAC7D,6CAA6C,EAAE,OAAO,YAAY;CAClE,kDAAkD,EAAE,OAAO,YAAY;CACvE,6CAA6C,EAAE,OAAO,YAAY;CAClE,6CAA6C,EAAE,OAAO,YAAY;CAClE,kDAAkD,EAAE,OAAO,YAAY;CACvE,mCAAmC,EAAE,OAAO,YAAY;CACxD,wCAAwC,EAAE,OAAO,YAAY;CAC7D,mCAAmC,EAAE,OAAO,YAAY;CACxD,wCAAwC,EAAE,OAAO,YAAY;CAC7D,iCAAiC,EAAE,OAAO,YAAY;CACtD,iCAAiC,EAAE,OAAO,YAAY;CACtD,sCAAsC,EAAE,OAAO,YAAY;CAC3D,+BAA+B,EAAE,OAAO,YAAY;CACpD,+BAA+B,EAAE,OAAO,YAAY;CACpD,oCAAoC,EAAE,OAAO,YAAY;CACzD,2CAA2C,EAAE,OAAO,YAAY;CAChE,iDAAiD,EAAE,OAAO,YAAY;CACtE,wCAAwC,EAAE,OAAO,YAAY;CAC7D,wCAAwC,EAAE,OAAO,YAAY;CAC7D,wCAAwC,EAAE,OAAO,YAAY;CAC7D,mCAAmC,EAAE,OAAO,YAAY;CACxD,gDAAgD,EAAE,OAAO,YAAY;CACrE,wDAAwD,EAAE,OAAO,YAAY;CAC7E,gDAAgD,EAAE,OAAO,YAAY;CACrE,iDAAiD,EAAE,OAAO,YAAY;CACtE,kDAAkD,EAAE,OAAO,YAAY;CACvE,2CAA2C,EAAE,OAAO,YAAY;CAChE,wCAAwC,EAAE,OAAO,YAAY;CAC7D,8BAA8B,EAAE,OAAO,YAAY;CACnD,qCAAqC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACrF,gDAAgD,EAAE,OAAO,YAAY;CACrE,+CAA+C,EAAE,OAAO,YAAY;CACpE,oDAAoD,EAAE,OAAO,YAAY;CACzE,qDAAqD,EAAE,OAAO,YAAY;CAC1E,0DAA0D,EAAE,OAAO,YAAY;CAC/E,gDAAgD,EAAE,OAAO,YAAY;CACrE,qDAAqD,EAAE,OAAO,YAAY;CAC1E,mDAAmD,EAAE,OAAO,YAAY;CACxE,+CAA+C,EAAE,OAAO,YAAY;CACpE,0CAA0C,EAAE,OAAO,YAAY;CAC/D,oBAAoB,EAAE,OAAO,YAAY;CACzC,6BAA6B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC7E,+BAA+B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC/E,2BAA2B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC3E,qBAAqB;EAAE,QAAQ;EAAoB,OAAO;EAAoB,WAAW;CAAmB;CAC5G,qBAAqB;EAAE,QAAQ;EAAoB,OAAO;EAAoB,WAAW;CAAmB;CAC5G,mBAAmB,EAAE,QAAQ,kBAAkB;CAC/C,+BAA+B,EAAE,QAAQ,iBAAiB;CAC1D,qBAAqB;EAAE,QAAQ;EAAc,WAAW;CAAa;CACrE,+BAA+B,EAAE,OAAO,YAAY;CACpD,mCAAmC,EAAE,OAAO,YAAY;CACxD,mCAAmC,EAAE,OAAO,YAAY;CACxD,+BAA+B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC/E,+BAA+B,EAAE,OAAO,YAAY;CACpD,uCAAuC,EAAE,OAAO,YAAY;CAC5D,wBAAwB,EAAE,OAAO,YAAY;CAC7C,uCAAuC,EAAE,OAAO,YAAY;CAC5D,gCAAgC,EAAE,OAAO,YAAY;CACrD,uCAAuC,EAAE,OAAO,YAAY;CAC5D,4CAA4C,EAAE,OAAO,YAAY;CACjE,mCAAmC,EAAE,OAAO,kBAAkB;CAC9D,8BAA8B,EAAE,OAAO,YAAY;CACnD,qCAAqC,EAAE,OAAO,YAAY;CAC1D,0CAA0C,EAAE,OAAO,YAAY;CAC/D,gCAAgC,EAAE,OAAO,YAAY;CACrD,uCAAuC,EAAE,OAAO,YAAY;CAC5D,mCAAmC,EAAE,OAAO,kBAAkB;CAC9D,uCAAuC,EAAE,OAAO,YAAY;CAC5D,mCAAmC,EAAE,OAAO,kBAAkB;CAC9D,8BAA8B,EAAE,OAAO,YAAY;CACnD,qCAAqC,EAAE,OAAO,YAAY;CAC1D,iCAAiC,EAAE,OAAO,kBAAkB;CAC5D,qCAAqC,EAAE,OAAO,YAAY;CAC1D,iCAAiC,EAAE,OAAO,kBAAkB;CAC5D,4BAA4B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC5E,gCAAgC;EAAE,QAAQ;EAAc,WAAW;CAAa;CAChF,kCAAkC,EAAE,QAAQ,iBAAiB;CAC7D,qCAAqC,EAAE,QAAQ,iBAAiB;CAChE,+BAA+B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC/E,oCAAoC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACpF,2DAA2D;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC3G,kEAAkE;EAAE,QAAQ;EAAc,WAAW;CAAa;CAClH,wDAAwD;EAAE,QAAQ;EAAc,WAAW;CAAa;CACxG,8DAA8D;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC9G,iEAAiE;EAAE,QAAQ;EAAc,WAAW;CAAa;CACjH,4DAA4D;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC5G,uDAAuD;EAAE,QAAQ;EAAc,WAAW;CAAa;CACvG,2DAA2D;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC3G,4DAA4D;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC5G,yDAAyD;EAAE,QAAQ;EAAc,WAAW;CAAa;CACzG,uCAAuC,EAAE,QAAQ,iBAAiB;CAClE,+BAA+B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC/E,+CAA+C;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC/F,uCAAuC,EAAE,QAAQ,iBAAiB;CAClE,oCAAoC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACpF,+BAA+B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC/E,oCAAoC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACpF,2DAA2D;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC3G,kEAAkE;EAAE,QAAQ;EAAc,WAAW;CAAa;CAClH,wDAAwD;EAAE,QAAQ;EAAc,WAAW;CAAa;CACxG,8DAA8D;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC9G,iEAAiE;EAAE,QAAQ;EAAc,WAAW;CAAa;CACjH,4DAA4D;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC5G,uDAAuD;EAAE,QAAQ;EAAc,WAAW;CAAa;CACvG,2DAA2D;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC3G,4DAA4D;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC5G,yDAAyD;EAAE,QAAQ;EAAc,WAAW;CAAa;CACzG,uCAAuC,EAAE,QAAQ,iBAAiB;CAClE,kCAAkC,EAAE,QAAQ,iBAAiB;CAC7D,qCAAqC,EAAE,QAAQ,iBAAiB;CAChE,8BAA8B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC9E,6BAA6B,EAAE,QAAQ,iBAAiB;CACxD,gCAAgC,EAAE,QAAQ,iBAAiB;CAC3D,gBAAgB,EAAE,OAAO,YAAY;CACrC,uBAAuB,EAAE,OAAO,YAAY;CAC5C,gCAAgC,EAAE,OAAO,YAAY;CACrD,oCAAoC,EAAE,OAAO,YAAY;CACzD,wBAAwB,EAAE,OAAO,YAAY;CAC7C,uBAAuB,EAAE,OAAO,YAAY;CAC5C,wBAAwB,EAAE,OAAO,YAAY;CAC7C,wBAAwB;EAAE,QAAQ;EAAc,WAAW;CAAa;CACxE,cAAc;EAAE,QAAQ;EAAoB,OAAO;EAAoB,WAAW;CAAmB;CACrG,cAAc;EAAE,QAAQ;EAAoB,OAAO;EAAoB,WAAW;CAAmB;CACrG,kCAAkC,EAAE,OAAO,uBAAuB;CAClE,8BAA8B,EAAE,OAAO,YAAY;CACnD,gDAAgD;EAAE,OAAO;EAAmB,KAAK;CAAiB;CAClG,qCAAqC,EAAE,OAAO,YAAY;CAC1D,2CAA2C;EAAE,OAAO;EAAmB,KAAK;CAAiB;CAC7F,gCAAgC,EAAE,OAAO,YAAY;CACrD,gDAAgD;EAAE,OAAO;EAAmB,KAAK;CAAiB;CAClG,qCAAqC,EAAE,OAAO,YAAY;CAC1D,oCAAoC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACpF,mCAAmC,EAAE,OAAO,YAAY;CACxD,8BAA8B,EAAE,OAAO,YAAY;CACnD,0BAA0B,EAAE,OAAO,YAAY;CAC/C,8BAA8B,EAAE,OAAO,YAAY;CACnD,iCAAiC,EAAE,OAAO,YAAY;CACtD,qCAAqC,EAAE,OAAO,uBAAuB;CACrE,qCAAqC,EAAE,OAAO,YAAY;CAC1D,uCAAuC,EAAE,OAAO,YAAY;CAC5D,qCAAqC,EAAE,OAAO,uBAAuB;CACrE,yCAAyC,EAAE,OAAO,uBAAuB;CACzE,iCAAiC,EAAE,OAAO,YAAY;CACtD,uCAAuC,EAAE,OAAO,YAAY;CAC5D,kCAAkC,EAAE,OAAO,uBAAuB;CAClE,kCAAkC,EAAE,OAAO,uBAAuB;CAClE,iCAAiC;EAAE,QAAQ;EAAoB,OAAO;EAAoB,WAAW;CAAmB;CACxH,qCAAqC;EAAE,OAAO;EAAkB,WAAW;EAAkB,OAAO;EAAmB,KAAK;CAAiB;CAC7I,0CAA0C;EAAE,OAAO;EAAkB,MAAM;EAAkB,WAAW;EAAkB,OAAO;EAAmB,KAAK;CAAiB;CAC1K,2CAA2C;EAAE,OAAO;EAAkB,WAAW;EAAkB,OAAO;EAAmB,KAAK;CAAiB;CACnJ,oCAAoC;EAAE,OAAO;EAAkB,WAAW;EAAkB,OAAO;EAAmB,KAAK;CAAiB;CAC5I,uCAAuC;EAAE,OAAO;EAAmB,KAAK;CAAiB;CACzF,wCAAwC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACxF,wCAAwC,EAAE,OAAO,YAAY;CAC7D,kBAAkB,EAAE,OAAO,YAAY;CACvC,sBAAsB,EAAE,OAAO,YAAY;CAC3C,0BAA0B,EAAE,WAAW,sBAAsB;CAC7D,kBAAkB,EAAE,OAAO,YAAY;CACvC,uBAAuB,EAAE,OAAO,YAAY;CAC5C,qBAAqB,EAAE,OAAO,YAAY;CAC1C,mBAAmB,EAAE,OAAO,YAAY;CACxC,iCAAiC,EAAE,OAAO,YAAY;CACtD,mBAAmB;EAAE,OAAO;EAAkB,MAAM;EAAkB,WAAW;CAAiB;CAClG,wBAAwB;EAAE,OAAO;EAAkB,MAAM;EAAkB,WAAW;CAAiB;CACvG,uBAAuB;EAAE,OAAO;EAAkB,MAAM;EAAkB,WAAW;EAAkB,OAAO;EAAmB,KAAK;CAAiB;CACvJ,6BAA6B;EAAE,OAAO;EAAkB,WAAW;EAAkB,OAAO;EAAmB,KAAK;CAAiB;CACrI,kCAAkC;EAAE,OAAO;EAAkB,MAAM;EAAkB,WAAW;EAAkB,OAAO;EAAmB,KAAK;CAAiB;CAClK,mCAAmC;EAAE,OAAO;EAAkB,WAAW;EAAkB,OAAO;EAAmB,KAAK;CAAiB;CAC3I,4BAA4B;EAAE,OAAO;EAAkB,WAAW;EAAkB,OAAO;EAAmB,KAAK;CAAiB;CACpI,+BAA+B;EAAE,OAAO;EAAmB,KAAK;CAAiB;CACjF,mCAAmC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACnF,oCAAoC,EAAE,OAAO,YAAY;CACzD,uCAAuC,EAAE,OAAO,YAAY;CAC5D,uCAAuC,EAAE,OAAO,YAAY;CAC5D,qCAAqC,EAAE,OAAO,YAAY;CAC1D,4CAA4C,EAAE,OAAO,YAAY;CACjE,6CAA6C,EAAE,OAAO,YAAY;CAClE,wBAAwB;EAAE,QAAQ;EAAc,WAAW;CAAa;CACxE,8BAA8B,EAAE,WAAW,sBAAsB;CACjE,kCAAkC,EAAE,OAAO,YAAY;CACvD,4BAA4B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC5E,sCAAsC,EAAE,OAAO,uBAAuB;CACtE,uBAAuB;EAAE,QAAQ;EAAc,WAAW;CAAa;CACvE,+BAA+B,EAAE,QAAQ,iBAAiB;CAC1D,0BAA0B,EAAE,QAAQ,iBAAiB;CACrD,mCAAmC,EAAE,QAAQ,iBAAiB;CAC9D,gCAAgC,EAAE,MAAM,iBAAiB;CACzD,qCAAqC,EAAE,MAAM,iBAAiB;CAC9D,+BAA+B,EAAE,MAAM,iBAAiB;CACxD,oCAAoC,EAAE,MAAM,iBAAiB;CAC7D,wBAAwB,EAAE,OAAO,YAAY;CAC7C,oCAAoC,EAAE,WAAW,sBAAsB;CACvE,kCAAkC,EAAE,WAAW,sBAAsB;CACrE,4BAA4B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC5E,mBAAmB,EAAE,OAAO,YAAY;CACxC,wBAAwB,EAAE,OAAO,YAAY;CAC7C,wBAAwB,EAAE,OAAO,YAAY;CAC7C,2BAA2B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC3E,2BAA2B,EAAE,OAAO,YAAY;CAChD,iCAAiC,EAAE,OAAO,YAAY;CACtD,qCAAqC;EAAE,QAAQ;EAAc,WAAW;CAAa;CACrF,+BAA+B;EAAE,QAAQ;EAAc,WAAW;CAAa;CAC/E,yCAAyC,EAAE,OAAO,YAAY;CAC9D,6CAA6C,EAAE,OAAO,uBAAuB;AAC/E"}
|
|
@@ -1,119 +1,158 @@
|
|
|
1
1
|
import { FAL_IMAGE_FIELD_OVERRIDES } from "./generated/image-field-overrides.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
//#region src/image/image-inputs.ts
|
|
3
|
+
/**
|
|
4
|
+
* Default field per routing role. Endpoint-specific deviations live in the
|
|
5
|
+
* generated `FAL_IMAGE_FIELD_OVERRIDES` map (regenerate with
|
|
6
|
+
* `pnpm generate:fal-image-fields`); these defaults must stay in sync with
|
|
7
|
+
* `DEFAULTS` in scripts/generate-fal-image-field-map.ts.
|
|
8
|
+
*/
|
|
9
|
+
var DEFAULT_FIELDS = {
|
|
10
|
+
single: "image_url",
|
|
11
|
+
multi: "image_urls",
|
|
12
|
+
mask: "mask_url",
|
|
13
|
+
control: "control_image_url",
|
|
14
|
+
reference: "reference_image_urls",
|
|
15
|
+
start: "start_image_url",
|
|
16
|
+
end: "end_image_url"
|
|
10
17
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Field names that accept an array of images. The generator asserts the
|
|
20
|
+
* SDK types agree with this set, so wrap-vs-scalar decisions stay correct.
|
|
21
|
+
*/
|
|
22
|
+
var LIST_FIELDS = /* @__PURE__ */ new Set([
|
|
23
|
+
"image_urls",
|
|
24
|
+
"input_image_urls",
|
|
25
|
+
"ref_image_urls",
|
|
26
|
+
"reference_image_urls"
|
|
16
27
|
]);
|
|
28
|
+
/** Resolve the per-role field names for a model: defaults + generated overrides. */
|
|
17
29
|
function fieldSpecFor(model) {
|
|
18
|
-
|
|
19
|
-
|
|
30
|
+
const overrides = FAL_IMAGE_FIELD_OVERRIDES[model];
|
|
31
|
+
return {
|
|
32
|
+
...DEFAULT_FIELDS,
|
|
33
|
+
...overrides
|
|
34
|
+
};
|
|
20
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Assign URLs to a field, wrapping or unwrapping based on whether the field
|
|
38
|
+
* takes an array. When two roles resolve to the same list field (e.g.
|
|
39
|
+
* sources and references both land on `image_urls` for nano-banana edit)
|
|
40
|
+
* the values are merged in assignment order; two roles resolving to the
|
|
41
|
+
* same scalar field is ambiguous and throws. Throws when multiple images
|
|
42
|
+
* target a scalar field.
|
|
43
|
+
*/
|
|
21
44
|
function assignField(fields, field, urls, model, what) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
`fal: multiple inputs map to '${field}' on model ${model}. Drop one of the conflicting inputs or pass the field explicitly via modelOptions.`
|
|
29
|
-
);
|
|
30
|
-
} else if (urls.length === 1) {
|
|
31
|
-
fields[field] = urls[0];
|
|
32
|
-
} else {
|
|
33
|
-
throw new Error(
|
|
34
|
-
`fal: model ${model} accepts a single ${what} image via '${field}' (received ${urls.length}).`
|
|
35
|
-
);
|
|
36
|
-
}
|
|
45
|
+
if (urls.length === 0) return;
|
|
46
|
+
const existing = fields[field];
|
|
47
|
+
if (LIST_FIELDS.has(field)) fields[field] = Array.isArray(existing) ? [...existing, ...urls] : urls;
|
|
48
|
+
else if (existing !== void 0) throw new Error(`fal: multiple inputs map to '${field}' on model ${model}. Drop one of the conflicting inputs or pass the field explicitly via modelOptions.`);
|
|
49
|
+
else if (urls.length === 1) fields[field] = urls[0];
|
|
50
|
+
else throw new Error(`fal: model ${model} accepts a single ${what} image via '${field}' (received ${urls.length}).`);
|
|
37
51
|
}
|
|
38
52
|
function bucketByRole(imageInputs) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
return buckets;
|
|
53
|
+
const buckets = {
|
|
54
|
+
sources: [],
|
|
55
|
+
masks: [],
|
|
56
|
+
controls: [],
|
|
57
|
+
references: [],
|
|
58
|
+
starts: [],
|
|
59
|
+
ends: []
|
|
60
|
+
};
|
|
61
|
+
for (const part of imageInputs) {
|
|
62
|
+
const url = imagePartToUrl(part);
|
|
63
|
+
const role = part.metadata?.role;
|
|
64
|
+
if (role === "mask") buckets.masks.push(url);
|
|
65
|
+
else if (role === "control") buckets.controls.push(url);
|
|
66
|
+
else if (role === "reference" || role === "character") buckets.references.push(url);
|
|
67
|
+
else if (role === "start_frame") buckets.starts.push(url);
|
|
68
|
+
else if (role === "end_frame") buckets.ends.push(url);
|
|
69
|
+
else buckets.sources.push(url);
|
|
70
|
+
}
|
|
71
|
+
return buckets;
|
|
59
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Map the prompt's image parts onto fal.ai image-endpoint fields.
|
|
75
|
+
*
|
|
76
|
+
* fal endpoints use different field names for image-conditioned generation
|
|
77
|
+
* (~80% use `image_url` for single; the rest use `image_urls`,
|
|
78
|
+
* `reference_image_urls`, `mask_url`, `control_image_url`, etc.). Field
|
|
79
|
+
* names are resolved per endpoint from the generated
|
|
80
|
+
* `FAL_IMAGE_FIELD_OVERRIDES` map (derived from the fal SDK's endpoint
|
|
81
|
+
* types), falling back to the defaults above for endpoints the installed
|
|
82
|
+
* SDK doesn't know:
|
|
83
|
+
*
|
|
84
|
+
* - parts with `metadata.role === 'mask'` → spec.mask (single)
|
|
85
|
+
* - parts with `metadata.role === 'control'` → spec.control (single)
|
|
86
|
+
* - `role === 'reference' | 'character'` → spec.reference
|
|
87
|
+
* - `role === 'start_frame' | 'end_frame'` → treated as sources (frame
|
|
88
|
+
* roles only apply to video generation)
|
|
89
|
+
* - remaining parts → spec.single / spec.multi
|
|
90
|
+
*
|
|
91
|
+
* Users can always override the resulting field shape via `modelOptions`
|
|
92
|
+
* (spread before these fields), or pass everything through `modelOptions`
|
|
93
|
+
* directly when the mapping doesn't match an obscure endpoint.
|
|
94
|
+
*/
|
|
60
95
|
function mapImageInputsToFalFields(model, imageInputs) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
assignField(fields, sourceField, allSources, model, "source");
|
|
78
|
-
assignField(fields, spec.reference, references, model, "reference");
|
|
79
|
-
assignField(fields, spec.mask, masks, model, "mask");
|
|
80
|
-
assignField(fields, spec.control, controls, model, "control");
|
|
81
|
-
return fields;
|
|
96
|
+
if (!imageInputs || imageInputs.length === 0) return {};
|
|
97
|
+
const spec = fieldSpecFor(model);
|
|
98
|
+
const { sources, masks, controls, references, starts, ends } = bucketByRole(imageInputs);
|
|
99
|
+
const allSources = [
|
|
100
|
+
...sources,
|
|
101
|
+
...starts,
|
|
102
|
+
...ends
|
|
103
|
+
];
|
|
104
|
+
if (masks.length > 1) throw new Error(`fal: only one input with metadata.role === 'mask' is supported per request (received ${masks.length}).`);
|
|
105
|
+
if (controls.length > 1) throw new Error(`fal: only one input with metadata.role === 'control' is supported per request (received ${controls.length}).`);
|
|
106
|
+
const fields = {};
|
|
107
|
+
assignField(fields, allSources.length > 1 ? spec.multi : spec.single, allSources, model, "source");
|
|
108
|
+
assignField(fields, spec.reference, references, model, "reference");
|
|
109
|
+
assignField(fields, spec.mask, masks, model, "mask");
|
|
110
|
+
assignField(fields, spec.control, controls, model, "control");
|
|
111
|
+
return fields;
|
|
82
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* Map the prompt's image parts onto fal.ai video-endpoint fields.
|
|
115
|
+
*
|
|
116
|
+
* Video endpoints often expose a start frame as `image_url` (76% of i2v
|
|
117
|
+
* models) plus an optional `end_image_url`. Multi-reference video models
|
|
118
|
+
* (Kling O3, Seedance reference-to-video) use `reference_image_urls` or
|
|
119
|
+
* `image_urls`. Field names resolve through the same generated override
|
|
120
|
+
* map as the image mapper — e.g. `role: 'start_frame'` lands on `image_url`
|
|
121
|
+
* for Kling/Veo image-to-video and `first_frame_url` for Pixverse. Mapping:
|
|
122
|
+
*
|
|
123
|
+
* - `metadata.role === 'start_frame'` → spec.start
|
|
124
|
+
* - `metadata.role === 'end_frame'` → spec.end
|
|
125
|
+
* - `metadata.role === 'reference' | 'character'` → spec.reference
|
|
126
|
+
* - `metadata.role === 'mask' | 'control'` → throws (no video routing)
|
|
127
|
+
* - remaining parts (no role) → spec.single / spec.multi
|
|
128
|
+
*/
|
|
83
129
|
function mapImageInputsToFalVideoFields(model, imageInputs) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
throw new Error(
|
|
100
|
-
`fal: only one input with metadata.role === 'end_frame' is supported (received ${ends.length}).`
|
|
101
|
-
);
|
|
102
|
-
}
|
|
103
|
-
const fields = {};
|
|
104
|
-
const sourceField = sources.length > 1 ? spec.multi : spec.single;
|
|
105
|
-
assignField(fields, sourceField, sources, model, "source");
|
|
106
|
-
assignField(fields, spec.reference, references, model, "reference");
|
|
107
|
-
assignField(fields, spec.start, starts, model, "start frame");
|
|
108
|
-
assignField(fields, spec.end, ends, model, "end frame");
|
|
109
|
-
return fields;
|
|
130
|
+
if (!imageInputs || imageInputs.length === 0) return {};
|
|
131
|
+
const spec = fieldSpecFor(model);
|
|
132
|
+
const { sources, masks, controls, references, starts, ends } = bucketByRole(imageInputs);
|
|
133
|
+
if (masks.length > 0 || controls.length > 0) {
|
|
134
|
+
const role = masks.length > 0 ? "mask" : "control";
|
|
135
|
+
throw new Error(`fal: metadata.role === '${role}' is not supported for video generation on model ${model}. Remove the role or pass the field explicitly via modelOptions.`);
|
|
136
|
+
}
|
|
137
|
+
if (starts.length > 1) throw new Error(`fal: only one input with metadata.role === 'start_frame' is supported (received ${starts.length}).`);
|
|
138
|
+
if (ends.length > 1) throw new Error(`fal: only one input with metadata.role === 'end_frame' is supported (received ${ends.length}).`);
|
|
139
|
+
const fields = {};
|
|
140
|
+
assignField(fields, sources.length > 1 ? spec.multi : spec.single, sources, model, "source");
|
|
141
|
+
assignField(fields, spec.reference, references, model, "reference");
|
|
142
|
+
assignField(fields, spec.start, starts, model, "start frame");
|
|
143
|
+
assignField(fields, spec.end, ends, model, "end frame");
|
|
144
|
+
return fields;
|
|
110
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Convert a TanStack ImagePart into a string suitable for fal's URL-based
|
|
148
|
+
* input fields. URL sources pass through; data sources are emitted as a
|
|
149
|
+
* `data:<mime>;base64,<value>` URI which fal endpoints accept on the wire.
|
|
150
|
+
*/
|
|
111
151
|
function imagePartToUrl(part) {
|
|
112
|
-
|
|
113
|
-
|
|
152
|
+
if (part.source.type === "url") return part.source.value;
|
|
153
|
+
return `data:${part.source.mimeType};base64,${part.source.value}`;
|
|
114
154
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
//# sourceMappingURL=image-inputs.js.map
|
|
155
|
+
//#endregion
|
|
156
|
+
export { mapImageInputsToFalFields, mapImageInputsToFalVideoFields };
|
|
157
|
+
|
|
158
|
+
//# sourceMappingURL=image-inputs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-inputs.js","sources":["../../../src/image/image-inputs.ts"],"sourcesContent":["import { FAL_IMAGE_FIELD_OVERRIDES } from './generated/image-field-overrides'\nimport type {\n FalImageFieldName,\n FalImageFieldOverride,\n} from './generated/image-field-overrides'\nimport type { ImagePart, MediaInputMetadata } from '@tanstack/ai'\nimport type { FalModel, FalModelInput } from '../model-meta'\n\n/**\n * The image-conditioning fields the mappers may set, narrowed to the ones\n * that actually exist on the given endpoint's input type. For endpoints\n * unknown to the installed `@fal-ai/client` this widens to all known field\n * names.\n */\nexport type FalImageInputFields<TModel extends string> = Partial<\n Pick<\n FalModelInput<TModel>,\n Extract<keyof FalModelInput<TModel>, FalImageFieldName>\n >\n>\n\n/**\n * Default field per routing role. Endpoint-specific deviations live in the\n * generated `FAL_IMAGE_FIELD_OVERRIDES` map (regenerate with\n * `pnpm generate:fal-image-fields`); these defaults must stay in sync with\n * `DEFAULTS` in scripts/generate-fal-image-field-map.ts.\n */\nconst DEFAULT_FIELDS = {\n single: 'image_url',\n multi: 'image_urls',\n mask: 'mask_url',\n control: 'control_image_url',\n reference: 'reference_image_urls',\n start: 'start_image_url',\n end: 'end_image_url',\n} satisfies Required<FalImageFieldOverride>\n\n/**\n * Field names that accept an array of images. The generator asserts the\n * SDK types agree with this set, so wrap-vs-scalar decisions stay correct.\n */\nconst LIST_FIELDS = new Set<string>([\n 'image_urls',\n 'input_image_urls',\n 'ref_image_urls',\n 'reference_image_urls',\n])\n\n/** Resolve the per-role field names for a model: defaults + generated overrides. */\nfunction fieldSpecFor(model: string): Required<FalImageFieldOverride> {\n const overrides = (\n FAL_IMAGE_FIELD_OVERRIDES as Record<string, FalImageFieldOverride>\n )[model]\n return { ...DEFAULT_FIELDS, ...overrides }\n}\n\n/**\n * Assign URLs to a field, wrapping or unwrapping based on whether the field\n * takes an array. When two roles resolve to the same list field (e.g.\n * sources and references both land on `image_urls` for nano-banana edit)\n * the values are merged in assignment order; two roles resolving to the\n * same scalar field is ambiguous and throws. Throws when multiple images\n * target a scalar field.\n */\nfunction assignField(\n fields: Record<string, unknown>,\n field: string,\n urls: Array<string>,\n model: string,\n what: string,\n): void {\n if (urls.length === 0) return\n const existing = fields[field]\n if (LIST_FIELDS.has(field)) {\n fields[field] = Array.isArray(existing) ? [...existing, ...urls] : urls\n } else if (existing !== undefined) {\n throw new Error(\n `fal: multiple inputs map to '${field}' on model ${model}. Drop one of the conflicting inputs or pass the field explicitly via modelOptions.`,\n )\n } else if (urls.length === 1) {\n fields[field] = urls[0]\n } else {\n throw new Error(\n `fal: model ${model} accepts a single ${what} image via '${field}' (received ${urls.length}).`,\n )\n }\n}\n\ninterface RoleBuckets {\n sources: Array<string>\n masks: Array<string>\n controls: Array<string>\n references: Array<string>\n starts: Array<string>\n ends: Array<string>\n}\n\nfunction bucketByRole(\n imageInputs: ReadonlyArray<ImagePart<MediaInputMetadata>>,\n): RoleBuckets {\n const buckets: RoleBuckets = {\n sources: [],\n masks: [],\n controls: [],\n references: [],\n starts: [],\n ends: [],\n }\n for (const part of imageInputs) {\n const url = imagePartToUrl(part)\n const role = part.metadata?.role\n if (role === 'mask') buckets.masks.push(url)\n else if (role === 'control') buckets.controls.push(url)\n else if (role === 'reference' || role === 'character')\n buckets.references.push(url)\n else if (role === 'start_frame') buckets.starts.push(url)\n else if (role === 'end_frame') buckets.ends.push(url)\n else buckets.sources.push(url)\n }\n return buckets\n}\n\n/**\n * Map the prompt's image parts onto fal.ai image-endpoint fields.\n *\n * fal endpoints use different field names for image-conditioned generation\n * (~80% use `image_url` for single; the rest use `image_urls`,\n * `reference_image_urls`, `mask_url`, `control_image_url`, etc.). Field\n * names are resolved per endpoint from the generated\n * `FAL_IMAGE_FIELD_OVERRIDES` map (derived from the fal SDK's endpoint\n * types), falling back to the defaults above for endpoints the installed\n * SDK doesn't know:\n *\n * - parts with `metadata.role === 'mask'` → spec.mask (single)\n * - parts with `metadata.role === 'control'` → spec.control (single)\n * - `role === 'reference' | 'character'` → spec.reference\n * - `role === 'start_frame' | 'end_frame'` → treated as sources (frame\n * roles only apply to video generation)\n * - remaining parts → spec.single / spec.multi\n *\n * Users can always override the resulting field shape via `modelOptions`\n * (spread before these fields), or pass everything through `modelOptions`\n * directly when the mapping doesn't match an obscure endpoint.\n */\nexport function mapImageInputsToFalFields<TModel extends FalModel>(\n model: TModel,\n imageInputs?: ReadonlyArray<ImagePart<MediaInputMetadata>>,\n): FalImageInputFields<TModel> {\n if (!imageInputs || imageInputs.length === 0) return {}\n\n const spec = fieldSpecFor(model)\n const { sources, masks, controls, references, starts, ends } =\n bucketByRole(imageInputs)\n // Frame roles aren't meaningful for image generation; treat as the\n // primary source. The video mapper handles start/end framing.\n const allSources = [...sources, ...starts, ...ends]\n\n if (masks.length > 1) {\n throw new Error(\n `fal: only one input with metadata.role === 'mask' is supported per request (received ${masks.length}).`,\n )\n }\n if (controls.length > 1) {\n throw new Error(\n `fal: only one input with metadata.role === 'control' is supported per request (received ${controls.length}).`,\n )\n }\n\n const fields: Record<string, unknown> = {}\n const sourceField = allSources.length > 1 ? spec.multi : spec.single\n assignField(fields, sourceField, allSources, model, 'source')\n assignField(fields, spec.reference, references, model, 'reference')\n assignField(fields, spec.mask, masks, model, 'mask')\n assignField(fields, spec.control, controls, model, 'control')\n\n return fields as FalImageInputFields<TModel>\n}\n\n/**\n * Map the prompt's image parts onto fal.ai video-endpoint fields.\n *\n * Video endpoints often expose a start frame as `image_url` (76% of i2v\n * models) plus an optional `end_image_url`. Multi-reference video models\n * (Kling O3, Seedance reference-to-video) use `reference_image_urls` or\n * `image_urls`. Field names resolve through the same generated override\n * map as the image mapper — e.g. `role: 'start_frame'` lands on `image_url`\n * for Kling/Veo image-to-video and `first_frame_url` for Pixverse. Mapping:\n *\n * - `metadata.role === 'start_frame'` → spec.start\n * - `metadata.role === 'end_frame'` → spec.end\n * - `metadata.role === 'reference' | 'character'` → spec.reference\n * - `metadata.role === 'mask' | 'control'` → throws (no video routing)\n * - remaining parts (no role) → spec.single / spec.multi\n */\nexport function mapImageInputsToFalVideoFields<TModel extends FalModel>(\n model: TModel,\n imageInputs?: ReadonlyArray<ImagePart<MediaInputMetadata>>,\n): FalImageInputFields<TModel> {\n if (!imageInputs || imageInputs.length === 0) return {}\n\n const spec = fieldSpecFor(model)\n const { sources, masks, controls, references, starts, ends } =\n bucketByRole(imageInputs)\n // Mask / control roles have no video-specific routing; silently repurposing\n // them as source frames would hide the problem, so reject them instead.\n if (masks.length > 0 || controls.length > 0) {\n const role = masks.length > 0 ? 'mask' : 'control'\n throw new Error(\n `fal: metadata.role === '${role}' is not supported for video generation on model ${model}. ` +\n `Remove the role or pass the field explicitly via modelOptions.`,\n )\n }\n\n if (starts.length > 1) {\n throw new Error(\n `fal: only one input with metadata.role === 'start_frame' is supported (received ${starts.length}).`,\n )\n }\n if (ends.length > 1) {\n throw new Error(\n `fal: only one input with metadata.role === 'end_frame' is supported (received ${ends.length}).`,\n )\n }\n\n const fields: Record<string, unknown> = {}\n const sourceField = sources.length > 1 ? spec.multi : spec.single\n assignField(fields, sourceField, sources, model, 'source')\n assignField(fields, spec.reference, references, model, 'reference')\n // Frame roles assign last: when an endpoint routes the start frame to its\n // generic source field (e.g. Kling image-to-video) and an unroled source\n // was also provided, assignField rejects the ambiguous combination.\n assignField(fields, spec.start, starts, model, 'start frame')\n assignField(fields, spec.end, ends, model, 'end frame')\n\n return fields as FalImageInputFields<TModel>\n}\n\n/**\n * Convert a TanStack ImagePart into a string suitable for fal's URL-based\n * input fields. URL sources pass through; data sources are emitted as a\n * `data:<mime>;base64,<value>` URI which fal endpoints accept on the wire.\n */\nfunction imagePartToUrl(part: ImagePart<MediaInputMetadata>): string {\n if (part.source.type === 'url') return part.source.value\n return `data:${part.source.mimeType};base64,${part.source.value}`\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"image-inputs.js","names":[],"sources":["../../../src/image/image-inputs.ts"],"sourcesContent":["import { FAL_IMAGE_FIELD_OVERRIDES } from './generated/image-field-overrides'\nimport type {\n FalImageFieldName,\n FalImageFieldOverride,\n} from './generated/image-field-overrides'\nimport type { ImagePart, MediaInputMetadata } from '@tanstack/ai'\nimport type { FalModel, FalModelInput } from '../model-meta'\n\n/**\n * The image-conditioning fields the mappers may set, narrowed to the ones\n * that actually exist on the given endpoint's input type. For endpoints\n * unknown to the installed `@fal-ai/client` this widens to all known field\n * names.\n */\nexport type FalImageInputFields<TModel extends string> = Partial<\n Pick<\n FalModelInput<TModel>,\n Extract<keyof FalModelInput<TModel>, FalImageFieldName>\n >\n>\n\n/**\n * Default field per routing role. Endpoint-specific deviations live in the\n * generated `FAL_IMAGE_FIELD_OVERRIDES` map (regenerate with\n * `pnpm generate:fal-image-fields`); these defaults must stay in sync with\n * `DEFAULTS` in scripts/generate-fal-image-field-map.ts.\n */\nconst DEFAULT_FIELDS = {\n single: 'image_url',\n multi: 'image_urls',\n mask: 'mask_url',\n control: 'control_image_url',\n reference: 'reference_image_urls',\n start: 'start_image_url',\n end: 'end_image_url',\n} satisfies Required<FalImageFieldOverride>\n\n/**\n * Field names that accept an array of images. The generator asserts the\n * SDK types agree with this set, so wrap-vs-scalar decisions stay correct.\n */\nconst LIST_FIELDS = new Set<string>([\n 'image_urls',\n 'input_image_urls',\n 'ref_image_urls',\n 'reference_image_urls',\n])\n\n/** Resolve the per-role field names for a model: defaults + generated overrides. */\nfunction fieldSpecFor(model: string): Required<FalImageFieldOverride> {\n const overrides = (\n FAL_IMAGE_FIELD_OVERRIDES as Record<string, FalImageFieldOverride>\n )[model]\n return { ...DEFAULT_FIELDS, ...overrides }\n}\n\n/**\n * Assign URLs to a field, wrapping or unwrapping based on whether the field\n * takes an array. When two roles resolve to the same list field (e.g.\n * sources and references both land on `image_urls` for nano-banana edit)\n * the values are merged in assignment order; two roles resolving to the\n * same scalar field is ambiguous and throws. Throws when multiple images\n * target a scalar field.\n */\nfunction assignField(\n fields: Record<string, unknown>,\n field: string,\n urls: Array<string>,\n model: string,\n what: string,\n): void {\n if (urls.length === 0) return\n const existing = fields[field]\n if (LIST_FIELDS.has(field)) {\n fields[field] = Array.isArray(existing) ? [...existing, ...urls] : urls\n } else if (existing !== undefined) {\n throw new Error(\n `fal: multiple inputs map to '${field}' on model ${model}. Drop one of the conflicting inputs or pass the field explicitly via modelOptions.`,\n )\n } else if (urls.length === 1) {\n fields[field] = urls[0]\n } else {\n throw new Error(\n `fal: model ${model} accepts a single ${what} image via '${field}' (received ${urls.length}).`,\n )\n }\n}\n\ninterface RoleBuckets {\n sources: Array<string>\n masks: Array<string>\n controls: Array<string>\n references: Array<string>\n starts: Array<string>\n ends: Array<string>\n}\n\nfunction bucketByRole(\n imageInputs: ReadonlyArray<ImagePart<MediaInputMetadata>>,\n): RoleBuckets {\n const buckets: RoleBuckets = {\n sources: [],\n masks: [],\n controls: [],\n references: [],\n starts: [],\n ends: [],\n }\n for (const part of imageInputs) {\n const url = imagePartToUrl(part)\n const role = part.metadata?.role\n if (role === 'mask') buckets.masks.push(url)\n else if (role === 'control') buckets.controls.push(url)\n else if (role === 'reference' || role === 'character')\n buckets.references.push(url)\n else if (role === 'start_frame') buckets.starts.push(url)\n else if (role === 'end_frame') buckets.ends.push(url)\n else buckets.sources.push(url)\n }\n return buckets\n}\n\n/**\n * Map the prompt's image parts onto fal.ai image-endpoint fields.\n *\n * fal endpoints use different field names for image-conditioned generation\n * (~80% use `image_url` for single; the rest use `image_urls`,\n * `reference_image_urls`, `mask_url`, `control_image_url`, etc.). Field\n * names are resolved per endpoint from the generated\n * `FAL_IMAGE_FIELD_OVERRIDES` map (derived from the fal SDK's endpoint\n * types), falling back to the defaults above for endpoints the installed\n * SDK doesn't know:\n *\n * - parts with `metadata.role === 'mask'` → spec.mask (single)\n * - parts with `metadata.role === 'control'` → spec.control (single)\n * - `role === 'reference' | 'character'` → spec.reference\n * - `role === 'start_frame' | 'end_frame'` → treated as sources (frame\n * roles only apply to video generation)\n * - remaining parts → spec.single / spec.multi\n *\n * Users can always override the resulting field shape via `modelOptions`\n * (spread before these fields), or pass everything through `modelOptions`\n * directly when the mapping doesn't match an obscure endpoint.\n */\nexport function mapImageInputsToFalFields<TModel extends FalModel>(\n model: TModel,\n imageInputs?: ReadonlyArray<ImagePart<MediaInputMetadata>>,\n): FalImageInputFields<TModel> {\n if (!imageInputs || imageInputs.length === 0) return {}\n\n const spec = fieldSpecFor(model)\n const { sources, masks, controls, references, starts, ends } =\n bucketByRole(imageInputs)\n // Frame roles aren't meaningful for image generation; treat as the\n // primary source. The video mapper handles start/end framing.\n const allSources = [...sources, ...starts, ...ends]\n\n if (masks.length > 1) {\n throw new Error(\n `fal: only one input with metadata.role === 'mask' is supported per request (received ${masks.length}).`,\n )\n }\n if (controls.length > 1) {\n throw new Error(\n `fal: only one input with metadata.role === 'control' is supported per request (received ${controls.length}).`,\n )\n }\n\n const fields: Record<string, unknown> = {}\n const sourceField = allSources.length > 1 ? spec.multi : spec.single\n assignField(fields, sourceField, allSources, model, 'source')\n assignField(fields, spec.reference, references, model, 'reference')\n assignField(fields, spec.mask, masks, model, 'mask')\n assignField(fields, spec.control, controls, model, 'control')\n\n return fields as FalImageInputFields<TModel>\n}\n\n/**\n * Map the prompt's image parts onto fal.ai video-endpoint fields.\n *\n * Video endpoints often expose a start frame as `image_url` (76% of i2v\n * models) plus an optional `end_image_url`. Multi-reference video models\n * (Kling O3, Seedance reference-to-video) use `reference_image_urls` or\n * `image_urls`. Field names resolve through the same generated override\n * map as the image mapper — e.g. `role: 'start_frame'` lands on `image_url`\n * for Kling/Veo image-to-video and `first_frame_url` for Pixverse. Mapping:\n *\n * - `metadata.role === 'start_frame'` → spec.start\n * - `metadata.role === 'end_frame'` → spec.end\n * - `metadata.role === 'reference' | 'character'` → spec.reference\n * - `metadata.role === 'mask' | 'control'` → throws (no video routing)\n * - remaining parts (no role) → spec.single / spec.multi\n */\nexport function mapImageInputsToFalVideoFields<TModel extends FalModel>(\n model: TModel,\n imageInputs?: ReadonlyArray<ImagePart<MediaInputMetadata>>,\n): FalImageInputFields<TModel> {\n if (!imageInputs || imageInputs.length === 0) return {}\n\n const spec = fieldSpecFor(model)\n const { sources, masks, controls, references, starts, ends } =\n bucketByRole(imageInputs)\n // Mask / control roles have no video-specific routing; silently repurposing\n // them as source frames would hide the problem, so reject them instead.\n if (masks.length > 0 || controls.length > 0) {\n const role = masks.length > 0 ? 'mask' : 'control'\n throw new Error(\n `fal: metadata.role === '${role}' is not supported for video generation on model ${model}. ` +\n `Remove the role or pass the field explicitly via modelOptions.`,\n )\n }\n\n if (starts.length > 1) {\n throw new Error(\n `fal: only one input with metadata.role === 'start_frame' is supported (received ${starts.length}).`,\n )\n }\n if (ends.length > 1) {\n throw new Error(\n `fal: only one input with metadata.role === 'end_frame' is supported (received ${ends.length}).`,\n )\n }\n\n const fields: Record<string, unknown> = {}\n const sourceField = sources.length > 1 ? spec.multi : spec.single\n assignField(fields, sourceField, sources, model, 'source')\n assignField(fields, spec.reference, references, model, 'reference')\n // Frame roles assign last: when an endpoint routes the start frame to its\n // generic source field (e.g. Kling image-to-video) and an unroled source\n // was also provided, assignField rejects the ambiguous combination.\n assignField(fields, spec.start, starts, model, 'start frame')\n assignField(fields, spec.end, ends, model, 'end frame')\n\n return fields as FalImageInputFields<TModel>\n}\n\n/**\n * Convert a TanStack ImagePart into a string suitable for fal's URL-based\n * input fields. URL sources pass through; data sources are emitted as a\n * `data:<mime>;base64,<value>` URI which fal endpoints accept on the wire.\n */\nfunction imagePartToUrl(part: ImagePart<MediaInputMetadata>): string {\n if (part.source.type === 'url') return part.source.value\n return `data:${part.source.mimeType};base64,${part.source.value}`\n}\n"],"mappings":";;;;;;;;AA2BA,IAAM,iBAAiB;CACrB,QAAQ;CACR,OAAO;CACP,MAAM;CACN,SAAS;CACT,WAAW;CACX,OAAO;CACP,KAAK;AACP;;;;;AAMA,IAAM,8BAAc,IAAI,IAAY;CAClC;CACA;CACA;CACA;AACF,CAAC;;AAGD,SAAS,aAAa,OAAgD;CACpE,MAAM,YACJ,0BACA;CACF,OAAO;EAAE,GAAG;EAAgB,GAAG;CAAU;AAC3C;;;;;;;;;AAUA,SAAS,YACP,QACA,OACA,MACA,OACA,MACM;CACN,IAAI,KAAK,WAAW,GAAG;CACvB,MAAM,WAAW,OAAO;CACxB,IAAI,YAAY,IAAI,KAAK,GACvB,OAAO,SAAS,MAAM,QAAQ,QAAQ,IAAI,CAAC,GAAG,UAAU,GAAG,IAAI,IAAI;MAC9D,IAAI,aAAa,KAAA,GACtB,MAAM,IAAI,MACR,gCAAgC,MAAM,aAAa,MAAM,oFAC3D;MACK,IAAI,KAAK,WAAW,GACzB,OAAO,SAAS,KAAK;MAErB,MAAM,IAAI,MACR,cAAc,MAAM,oBAAoB,KAAK,cAAc,MAAM,cAAc,KAAK,OAAO,GAC7F;AAEJ;AAWA,SAAS,aACP,aACa;CACb,MAAM,UAAuB;EAC3B,SAAS,CAAC;EACV,OAAO,CAAC;EACR,UAAU,CAAC;EACX,YAAY,CAAC;EACb,QAAQ,CAAC;EACT,MAAM,CAAC;CACT;CACA,KAAK,MAAM,QAAQ,aAAa;EAC9B,MAAM,MAAM,eAAe,IAAI;EAC/B,MAAM,OAAO,KAAK,UAAU;EAC5B,IAAI,SAAS,QAAQ,QAAQ,MAAM,KAAK,GAAG;OACtC,IAAI,SAAS,WAAW,QAAQ,SAAS,KAAK,GAAG;OACjD,IAAI,SAAS,eAAe,SAAS,aACxC,QAAQ,WAAW,KAAK,GAAG;OACxB,IAAI,SAAS,eAAe,QAAQ,OAAO,KAAK,GAAG;OACnD,IAAI,SAAS,aAAa,QAAQ,KAAK,KAAK,GAAG;OAC/C,QAAQ,QAAQ,KAAK,GAAG;CAC/B;CACA,OAAO;AACT;;;;;;;;;;;;;;;;;;;;;;;AAwBA,SAAgB,0BACd,OACA,aAC6B;CAC7B,IAAI,CAAC,eAAe,YAAY,WAAW,GAAG,OAAO,CAAC;CAEtD,MAAM,OAAO,aAAa,KAAK;CAC/B,MAAM,EAAE,SAAS,OAAO,UAAU,YAAY,QAAQ,SACpD,aAAa,WAAW;CAG1B,MAAM,aAAa;EAAC,GAAG;EAAS,GAAG;EAAQ,GAAG;CAAI;CAElD,IAAI,MAAM,SAAS,GACjB,MAAM,IAAI,MACR,wFAAwF,MAAM,OAAO,GACvG;CAEF,IAAI,SAAS,SAAS,GACpB,MAAM,IAAI,MACR,2FAA2F,SAAS,OAAO,GAC7G;CAGF,MAAM,SAAkC,CAAC;CAEzC,YAAY,QADQ,WAAW,SAAS,IAAI,KAAK,QAAQ,KAAK,QAC7B,YAAY,OAAO,QAAQ;CAC5D,YAAY,QAAQ,KAAK,WAAW,YAAY,OAAO,WAAW;CAClE,YAAY,QAAQ,KAAK,MAAM,OAAO,OAAO,MAAM;CACnD,YAAY,QAAQ,KAAK,SAAS,UAAU,OAAO,SAAS;CAE5D,OAAO;AACT;;;;;;;;;;;;;;;;;AAkBA,SAAgB,+BACd,OACA,aAC6B;CAC7B,IAAI,CAAC,eAAe,YAAY,WAAW,GAAG,OAAO,CAAC;CAEtD,MAAM,OAAO,aAAa,KAAK;CAC/B,MAAM,EAAE,SAAS,OAAO,UAAU,YAAY,QAAQ,SACpD,aAAa,WAAW;CAG1B,IAAI,MAAM,SAAS,KAAK,SAAS,SAAS,GAAG;EAC3C,MAAM,OAAO,MAAM,SAAS,IAAI,SAAS;EACzC,MAAM,IAAI,MACR,2BAA2B,KAAK,mDAAmD,MAAM,iEAE3F;CACF;CAEA,IAAI,OAAO,SAAS,GAClB,MAAM,IAAI,MACR,mFAAmF,OAAO,OAAO,GACnG;CAEF,IAAI,KAAK,SAAS,GAChB,MAAM,IAAI,MACR,iFAAiF,KAAK,OAAO,GAC/F;CAGF,MAAM,SAAkC,CAAC;CAEzC,YAAY,QADQ,QAAQ,SAAS,IAAI,KAAK,QAAQ,KAAK,QAC1B,SAAS,OAAO,QAAQ;CACzD,YAAY,QAAQ,KAAK,WAAW,YAAY,OAAO,WAAW;CAIlE,YAAY,QAAQ,KAAK,OAAO,QAAQ,OAAO,aAAa;CAC5D,YAAY,QAAQ,KAAK,KAAK,MAAM,OAAO,WAAW;CAEtD,OAAO;AACT;;;;;;AAOA,SAAS,eAAe,MAA6C;CACnE,IAAI,KAAK,OAAO,SAAS,OAAO,OAAO,KAAK,OAAO;CACnD,OAAO,QAAQ,KAAK,OAAO,SAAS,UAAU,KAAK,OAAO;AAC5D"}
|