@henjicc/ai-sdk 0.2.8 → 0.4.0
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/CHANGELOG.md +157 -141
- package/README.md +497 -455
- package/dist/capabilities/embedding/bailian.d.ts +23 -0
- package/dist/capabilities/embedding/bailian.js +10 -0
- package/dist/capabilities/embedding/bigmodel.d.ts +9 -0
- package/dist/capabilities/embedding/bigmodel.js +5 -0
- package/dist/capabilities/embedding/index.d.ts +1 -0
- package/dist/capabilities/embedding/index.js +1 -0
- package/dist/capabilities/embedding/ppio.d.ts +7 -0
- package/dist/capabilities/embedding/ppio.js +5 -0
- package/dist/capabilities/embedding/siliconflow.d.ts +21 -0
- package/dist/capabilities/embedding/siliconflow.js +10 -0
- package/dist/capabilities/embedding/volcengine.d.ts +10 -0
- package/dist/capabilities/embedding/volcengine.js +6 -0
- package/dist/capabilities/rerank/bailian.d.ts +21 -0
- package/dist/capabilities/rerank/bailian.js +14 -0
- package/dist/capabilities/rerank/bigmodel.d.ts +9 -0
- package/dist/capabilities/rerank/bigmodel.js +5 -0
- package/dist/capabilities/rerank/index.d.ts +1 -0
- package/dist/capabilities/rerank/index.js +1 -0
- package/dist/capabilities/rerank/ppio.d.ts +7 -0
- package/dist/capabilities/rerank/ppio.js +5 -0
- package/dist/capabilities/rerank/siliconflow.d.ts +21 -0
- package/dist/capabilities/rerank/siliconflow.js +10 -0
- package/dist/capabilities/retrieval/http.d.ts +3 -0
- package/dist/capabilities/retrieval/http.js +48 -0
- package/dist/capabilities/retrieval/module.d.ts +11 -0
- package/dist/capabilities/retrieval/module.js +110 -0
- package/dist/capabilities/retrieval/types.d.ts +54 -0
- package/dist/capabilities/retrieval/types.js +1 -0
- package/dist/capabilities/retrieval/validation.d.ts +10 -0
- package/dist/capabilities/retrieval/validation.js +65 -0
- package/dist/capabilities/types.d.ts +1 -1
- package/dist/catalog/apimart/gpt-image-2.5.model.d.ts +2 -0
- package/dist/catalog/apimart/gpt-image-2.5.model.js +51 -0
- package/dist/catalog/fal/gpt-image-2.5.model.d.ts +2 -0
- package/dist/catalog/fal/gpt-image-2.5.model.js +53 -0
- package/dist/catalog/fal/ic-light-v2.model.js +9 -13
- package/dist/catalog/grsai/gpt-image-2.5.model.d.ts +2 -0
- package/dist/catalog/grsai/gpt-image-2.5.model.js +54 -0
- package/dist/catalog/grsai/gptImage25Sizes.d.ts +1 -0
- package/dist/catalog/grsai/gptImage25Sizes.js +76 -0
- package/dist/catalog/index.js +112 -104
- package/dist/catalog/kie/gpt-image-2.5.model.d.ts +2 -0
- package/dist/catalog/kie/gpt-image-2.5.model.js +38 -0
- package/dist/catalog/shared/gptImage25.d.ts +16 -0
- package/dist/catalog/shared/gptImage25.js +48 -0
- package/dist/catalog/shared/gptImage25Pricing.d.ts +12 -0
- package/dist/catalog/shared/gptImage25Pricing.js +508 -0
- package/dist/llm/defaults.d.ts +1 -1
- package/dist/llm/defaults.js +1 -1
- package/dist/llm/discovery.d.ts +2 -0
- package/dist/llm/discovery.js +16 -5
- package/dist/llm/modelCatalogEntries.js +32 -0
- package/dist/llm/providerPresets.d.ts +3 -1
- package/dist/llm/providerPresets.js +6 -3
- package/dist/llm/providerReasoningRequest.js +14 -1
- package/dist/llm/siliconflow/index.d.ts +21 -0
- package/dist/llm/siliconflow/index.js +32 -0
- package/dist/llm/siliconflow/preset.d.ts +6 -0
- package/dist/llm/siliconflow/preset.js +33 -0
- package/dist/packs/models/apimart/gpt-image-2.5.d.ts +6 -0
- package/dist/packs/models/apimart/gpt-image-2.5.js +7 -0
- package/dist/packs/models/fal/gpt-image-2.5.d.ts +6 -0
- package/dist/packs/models/fal/gpt-image-2.5.js +7 -0
- package/dist/packs/models/grsai/gpt-image-2.5.d.ts +6 -0
- package/dist/packs/models/grsai/gpt-image-2.5.js +7 -0
- package/dist/packs/models/kie/gpt-image-2.5.d.ts +6 -0
- package/dist/packs/models/kie/gpt-image-2.5.js +7 -0
- package/dist/packs/provider-packs/apimart.d.ts +1 -1
- package/dist/packs/provider-packs/apimart.js +21 -20
- package/dist/packs/provider-packs/fal.d.ts +1 -1
- package/dist/packs/provider-packs/fal.js +37 -36
- package/dist/packs/provider-packs/grsai.d.ts +1 -1
- package/dist/packs/provider-packs/grsai.js +6 -5
- package/dist/packs/provider-packs/kie.d.ts +1 -1
- package/dist/packs/provider-packs/kie.js +28 -27
- package/dist/packs/tool-models/fal/{qwen-image-edit-2509-multiple-angles.d.ts → qwen-image-edit-2511-multiple-angles.d.ts} +1 -1
- package/dist/packs/tool-models/fal/{qwen-image-edit-2509-multiple-angles.js → qwen-image-edit-2511-multiple-angles.js} +1 -1
- package/dist/packs/tool-packs/fal-multi-angle-tools.js +1 -1
- package/dist/tool-packs/fal-multi-angle/models/qwen-image-edit-2511-multiple-angles.model.d.ts +2 -0
- package/dist/tool-packs/fal-multi-angle/models/{qwen-image-edit-2509-multiple-angles.model.js → qwen-image-edit-2511-multiple-angles.model.js} +20 -17
- package/docs/README.md +26 -26
- package/docs/consumers.md +56 -48
- package/docs/llm-adaptation/README.md +139 -137
- package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/DeepSeek.md +103 -91
- package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/Kimi.md +75 -75
- package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/MiniMax.md +84 -84
- package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//345/260/217/347/261/263MiMo.md +85 -85
- package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//346/231/272/350/260/261GLM.md +232 -232
- package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//347/201/253/345/261/261/345/274/225/346/223/216.md +87 -87
- package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//347/231/276/347/202/274Qwen.md +84 -84
- package/docs/llm-adaptation//346/226/207/346/241/243/351/207/207/351/233/206/346/211/213/345/206/214.md +88 -88
- package/docs/model-adaptation/Bria-Eraser/Bria-Eraser_Fal.md +32 -32
- package/docs/model-adaptation/Bria-/345/210/233/346/204/217/346/224/276/345/244/247/Bria-/345/210/233/346/204/217/346/224/276/345/244/247_Fal.md +31 -31
- package/docs/model-adaptation/ControlLight/ControlLight_Fal.md +85 -85
- package/docs/model-adaptation/FLUX-2-/345/244/232/350/247/222/345/272/246/FLUX-2-/345/244/232/350/247/222/345/272/246_Fal.md +107 -107
- package/docs/model-adaptation/Finegrain-Eraser/Finegrain-Eraser_Fal.md +31 -31
- package/docs/model-adaptation/Flux-Pro-Erase/Flux-Pro-Erase_Fal.md +34 -34
- package/docs/model-adaptation/Fun-ASR/Fun-ASR_/347/231/276/347/202/274.md +43 -43
- package/docs/model-adaptation/Fun-ASR-Flash-2026-06-15/Fun-ASR-Flash-2026-06-15_/347/231/276/347/202/274.md +41 -41
- package/docs/model-adaptation/Fun-ASR-Realtime/Fun-ASR-Realtime_/347/231/276/347/202/274.md +37 -37
- package/docs/model-adaptation/Fun-ASR-Realtime-2026-02-28/Fun-ASR-Realtime-2026-02-28_/347/231/276/347/202/274.md +39 -39
- package/docs/model-adaptation/GLM-5.3-Flash/GLM-5.3-Flash_/346/231/272/350/260/261.md +207 -207
- package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_APIMart.md +173 -173
- package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_Fal.md +94 -94
- package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_Grsai.md +137 -137
- package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_KIE.md +93 -93
- package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_APIMart.md +66 -0
- package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_Fal.md +55 -0
- package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_Grsai.md +53 -0
- package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_KIE.md +55 -0
- package/docs/model-adaptation/GPT-OSS-20B/GPT-OSS-20B_Groq.md +62 -62
- package/docs/model-adaptation/Gemini-Omni-Flash/Gemini-Omni-Flash_APIMart.md +124 -124
- package/docs/model-adaptation/Gemini-Omni-Flash/Gemini-Omni-Flash_Fal.md +84 -84
- package/docs/model-adaptation/Gemini-Omni-Flash/Gemini-Omni-Flash_KIE.md +129 -129
- package/docs/model-adaptation/Grok-Imagine/Grok-Imagine_KIE.md +36 -36
- package/docs/model-adaptation/Grok-Imagine-2.0/Grok-Imagine-2.0_APIMart.md +250 -250
- package/docs/model-adaptation/Grok-Imagine-2.0/Grok-Imagine-2.0_Fal.md +84 -84
- package/docs/model-adaptation/Grok-Imagine-2.0/Grok-Imagine-2.0_KIE.md +105 -105
- package/docs/model-adaptation/Hailuo-02/Hailuo-02_Fal.md +93 -93
- package/docs/model-adaptation/Hailuo-02/Hailuo-02_KIE.md +56 -56
- package/docs/model-adaptation/Hailuo-2.3/Hailuo-2.3_Fal.md +88 -88
- package/docs/model-adaptation/Hailuo-2.3/Hailuo-2.3_KIE.md +51 -51
- package/docs/model-adaptation/Hailuo-2.3/Hailuo-2.3_/346/264/276/346/254/247/344/272/221.md +70 -70
- package/docs/model-adaptation/IC-Light-v2/IC-Light-v2_Fal.md +97 -94
- package/docs/model-adaptation/Ideogram-/345/233/276/347/211/207/346/224/276/345/244/247/Ideogram-/345/233/276/347/211/207/346/224/276/345/244/247_Fal.md +41 -41
- package/docs/model-adaptation/Image-Apps-v2-/345/225/206/345/223/201/346/221/204/345/275/261/Image-Apps-v2-/345/225/206/345/223/201/346/221/204/345/275/261_Fal.md +72 -72
- package/docs/model-adaptation/Image-Apps-v2-/346/211/251/345/233/276/Image-Apps-v2-/346/211/251/345/233/276_Fal.md +93 -93
- package/docs/model-adaptation/Image-Apps-v2-/347/205/247/347/211/207/344/277/256/345/244/215/Image-Apps-v2-/347/205/247/347/211/207/344/277/256/345/244/215_Fal.md +86 -86
- package/docs/model-adaptation/Image-Apps-v2-/351/207/215/346/211/223/345/205/211/Image-Apps-v2-/351/207/215/346/211/223/345/205/211_Fal.md +84 -84
- package/docs/model-adaptation/Kling-3.0/Kling-3.0_APIMart.md +112 -112
- package/docs/model-adaptation/Kling-3.0/Kling-3.0_Fal.md +89 -89
- package/docs/model-adaptation/Kling-3.0/Kling-3.0_KIE.md +106 -106
- package/docs/model-adaptation/Kling-3.0/Kling-3.0_/346/264/276/346/254/247/344/272/221.md +119 -119
- package/docs/model-adaptation/Kling-3.0-Omni/Kling-3.0-Omni_APIMart.md +125 -125
- package/docs/model-adaptation/Kling-3.0-Omni/Kling-3.0-Omni_Fal.md +107 -107
- package/docs/model-adaptation/Kling-3.0-Omni/Kling-3.0-Omni_KIE.md +143 -143
- package/docs/model-adaptation/Kling-3.0-Turbo/Kling-3.0-Turbo_APIMart.md +85 -85
- package/docs/model-adaptation/Kling-3.0-Turbo/Kling-3.0-Turbo_Fal.md +83 -83
- package/docs/model-adaptation/Kling-3.0-Turbo/Kling-3.0-Turbo_KIE.md +84 -84
- package/docs/model-adaptation/Midjourney/Midjourney_APIMart.md +396 -396
- package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_APIMart.md +234 -234
- package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_Fal.md +108 -108
- package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_KIE.md +111 -111
- package/docs/model-adaptation/MiniMax-Speech/MiniMax-Speech_/346/264/276/346/254/247/344/272/221.md +170 -170
- package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_APIMart.md +89 -89
- package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_Fal.md +99 -99
- package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_Grsai.md +82 -82
- package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_KIE.md +70 -70
- package/docs/model-adaptation/Nano-Banana-2-Lite/Nano-Banana-2-Lite_APIMart.md +79 -79
- package/docs/model-adaptation/Nano-Banana-2-Lite/Nano-Banana-2-Lite_Grsai.md +65 -65
- package/docs/model-adaptation/Nano-Banana-2-Lite/Nano-Banana-2-Lite_KIE.md +64 -64
- package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_APIMart.md +83 -83
- package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_Fal.md +89 -89
- package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_Grsai.md +82 -82
- package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_KIE.md +64 -64
- package/docs/model-adaptation/Pixelcut-/350/203/214/346/231/257/347/247/273/351/231/244/Pixelcut-/350/203/214/346/231/257/347/247/273/351/231/244_Fal.md +79 -79
- package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_APIMart.md +117 -117
- package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_Fal.md +84 -84
- package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_KIE.md +103 -103
- package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_/347/231/276/347/202/274.md +138 -138
- package/docs/model-adaptation/Qwen-Image-Edit-2511-/345/244/232/350/247/222/345/272/246/Qwen-Image-Edit-2511-/345/244/232/350/247/222/345/272/246_Fal.md +57 -0
- package/docs/model-adaptation/Qwen-MT-Flash/Qwen-MT-Flash_/347/231/276/347/202/274.md +47 -47
- package/docs/model-adaptation/Qwen-MT-Lite/Qwen-MT-Lite_/347/231/276/347/202/274.md +39 -39
- package/docs/model-adaptation/Qwen-MT-Plus/Qwen-MT-Plus_/347/231/276/347/202/274.md +39 -39
- package/docs/model-adaptation/Qwen3-ASR-Flash/Qwen3-ASR-Flash_/347/231/276/347/202/274.md +40 -40
- package/docs/model-adaptation/Qwen3-ASR-Flash-2026-02-10/Qwen3-ASR-Flash-2026-02-10_/347/231/276/347/202/274.md +33 -33
- package/docs/model-adaptation/Qwen3-ASR-Flash-Filetrans/Qwen3-ASR-Flash-Filetrans_/347/231/276/347/202/274.md +41 -41
- package/docs/model-adaptation/Qwen3-ASR-Flash-Realtime/Qwen3-ASR-Flash-Realtime_/347/231/276/347/202/274.md +35 -35
- package/docs/model-adaptation/Qwen3-ASR-Flash-Realtime-2026-02-10/Qwen3-ASR-Flash-Realtime-2026-02-10_/347/231/276/347/202/274.md +37 -37
- package/docs/model-adaptation/README.md +313 -295
- package/docs/model-adaptation/SeedASR-2.0-File/SeedASR-2.0-File_/347/201/253/345/261/261/345/274/225/346/223/216.md +115 -115
- package/docs/model-adaptation/SeedASR-2.0-Realtime/SeedASR-2.0-Realtime_/347/201/253/345/261/261/345/274/225/346/223/216.md +143 -143
- package/docs/model-adaptation/SeedVR2-/345/233/276/347/211/207/346/224/276/345/244/247/SeedVR2-/345/233/276/347/211/207/346/224/276/345/244/247_Fal.md +45 -45
- package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_APIMart.md +121 -121
- package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_Fal.md +97 -97
- package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_KIE.md +86 -86
- package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_APIMart.md +89 -89
- package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_Fal.md +95 -95
- package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_KIE.md +78 -78
- package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_APIMart.md +89 -89
- package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_Fal.md +96 -96
- package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_KIE.md +78 -78
- package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_APIMart.md +212 -212
- package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_Fal.md +94 -94
- package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_KIE.md +89 -89
- package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_APIMart.md +106 -106
- package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_Fal.md +91 -91
- package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_KIE.md +89 -89
- package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_/347/201/253/345/261/261/345/274/225/346/223/216.md +108 -108
- package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_APIMart.md +194 -194
- package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_Fal.md +100 -100
- package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_KIE.md +141 -141
- package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_/347/201/253/345/261/261/345/274/225/346/223/216.md +137 -137
- package/docs/model-adaptation/SenseVoiceSmall/SenseVoiceSmall_/347/241/205/345/237/272/346/265/201/345/212/250.md +69 -69
- package/docs/model-adaptation/TeleSpeechASR/TeleSpeechASR_/347/241/205/345/237/272/346/265/201/345/212/250.md +72 -72
- package/docs/model-adaptation/Topaz-/345/233/276/347/211/207/346/224/276/345/244/247/Topaz-/345/233/276/347/211/207/346/224/276/345/244/247_Fal.md +87 -87
- package/docs/model-adaptation/Topaz-/351/200/217/346/230/216/345/233/276/346/224/276/345/244/247/Topaz-/351/200/217/346/230/216/345/233/276/346/224/276/345/244/247_Fal.md +34 -34
- package/docs/model-adaptation/Wan-2.5-Preview/Wan-2.5-Preview_/346/264/276/346/254/247/344/272/221.md +82 -82
- package/docs/model-adaptation/Wan-2.6/Wan-2.6_/346/264/276/346/254/247/344/272/221.md +84 -84
- package/docs/model-adaptation/Wan-2.7/Wan-2.7_/346/264/276/346/254/247/344/272/221.md +122 -122
- package/docs/model-adaptation/Whisper-Large-v3/Whisper-Large-v3_Groq.md +76 -76
- package/docs/model-adaptation/Whisper-Large-v3-Turbo/Whisper-Large-v3-Turbo_Groq.md +75 -75
- package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_APIMart.md +88 -88
- package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_Fal.md +95 -95
- package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_KIE.md +71 -71
- package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_/347/231/276/347/202/274.md +122 -122
- package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_/351/255/224/346/220/255.md +97 -97
- package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/APIMart.md +238 -238
- package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/Fal.md +172 -172
- package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/Groq.md +121 -121
- package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/Grsai.md +217 -217
- package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/KIE.md +131 -131
- package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//345/200/231/351/200/211/344/276/233/345/272/224/345/225/206/350/260/203/347/240/224-/345/233/276/347/211/207/345/267/245/345/205/267.md +151 -151
- package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//345/277/253/351/200/237/351/200/202/351/205/215/344/276/233/345/272/224/345/225/206.md +65 -65
- package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//346/264/276/346/254/247/344/272/221.md +147 -138
- package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/201/253/345/261/261/345/274/225/346/223/216.md +181 -171
- package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/231/276/347/202/274.md +237 -227
- package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/241/205/345/237/272/346/265/201/345/212/250.md +140 -75
- package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//351/255/224/346/220/255.md +207 -207
- package/docs/model-adaptation//346/226/207/346/241/243/351/207/207/351/233/206/346/211/213/345/206/214.md +338 -311
- package/docs/model-adaptation//351/200/217/350/247/206/345/217/230/346/215/242//351/200/217/350/247/206/345/217/230/346/215/242_Fal.md +59 -59
- package/docs//346/216/245/345/205/245/346/214/207/345/215/227/Electron.md +77 -77
- package/docs//346/216/245/345/205/245/346/214/207/345/215/227/Tauri.md +81 -81
- package/docs//346/216/245/345/205/245/346/214/207/345/215/227/UXP.md +169 -169
- package/docs//346/216/245/345/205/245/346/214/207/345/215/227//344/276/233/345/272/224/345/225/206/345/237/237/345/220/215.md +83 -83
- package/docs//346/216/245/345/205/245/346/214/207/345/215/227//351/224/231/350/257/257/345/244/204/347/220/206.md +72 -72
- package/examples/form-renderer/README.md +17 -17
- package/examples/form-renderer/cli.ts +32 -32
- package/examples/form-renderer/index.ts +144 -144
- package/examples/form-renderer/package.json +16 -16
- package/examples/form-renderer/tsconfig.json +14 -14
- package/examples/llm-chat/README.md +32 -32
- package/examples/llm-chat/index.ts +100 -100
- package/examples/llm-chat/package.json +19 -19
- package/examples/llm-chat/tsconfig.json +14 -14
- package/examples/minimal-node/README.md +31 -31
- package/examples/minimal-node/index.ts +138 -138
- package/examples/minimal-node/package.json +17 -17
- package/examples/minimal-node/tsconfig.json +14 -14
- package/package.json +255 -195
- package/dist/tool-packs/fal-multi-angle/models/qwen-image-edit-2509-multiple-angles.model.d.ts +0 -2
- package/docs/model-adaptation/Qwen-Image-Edit-2509-/345/244/232/350/247/222/345/272/246/Qwen-Image-Edit-2509-/345/244/232/350/247/222/345/272/246_Fal.md +0 -116
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises'
|
|
2
|
-
import { basename, extname } from 'node:path'
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
createGenerationClient,
|
|
6
|
-
} from '@henjicc/ai-sdk/generation'
|
|
7
|
-
import type {
|
|
8
|
-
Logger,
|
|
9
|
-
MediaReader,
|
|
10
|
-
RuntimeContext,
|
|
11
|
-
Transport,
|
|
12
|
-
} from '@henjicc/ai-sdk/runtime'
|
|
13
|
-
|
|
14
|
-
const MODEL_ID = 'kie-z-image'
|
|
15
|
-
const CREATE_TASK_PATH = '/api/v1/jobs/createTask'
|
|
16
|
-
const live = process.argv.includes('--live')
|
|
17
|
-
|
|
18
|
-
class SingleCreateTransport implements Transport {
|
|
19
|
-
private createRequests = 0
|
|
20
|
-
|
|
21
|
-
async fetch(url: string, init?: RequestInit): Promise<Response> {
|
|
22
|
-
const method = (init?.method ?? 'GET').toUpperCase()
|
|
23
|
-
if (method === 'POST' && new URL(url).pathname === CREATE_TASK_PATH) {
|
|
24
|
-
this.createRequests += 1
|
|
25
|
-
if (this.createRequests > 1) {
|
|
26
|
-
throw new Error('Blocked a repeated paid KIE create request')
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return await fetch(url, init)
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
class DryRunTransport implements Transport {
|
|
34
|
-
calls = 0
|
|
35
|
-
|
|
36
|
-
async fetch(url: string, init?: RequestInit): Promise<Response> {
|
|
37
|
-
this.calls += 1
|
|
38
|
-
const method = (init?.method ?? 'GET').toUpperCase()
|
|
39
|
-
if (method !== 'POST' || new URL(url).pathname !== CREATE_TASK_PATH) {
|
|
40
|
-
throw new Error(`Dry-run rejected unexpected request: ${method} ${url}`)
|
|
41
|
-
}
|
|
42
|
-
return Response.json({ code: 200, data: { taskId: 'dry-run-task' } })
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const media: MediaReader = {
|
|
47
|
-
async read(ref) {
|
|
48
|
-
const bytes = new Uint8Array(await readFile(ref))
|
|
49
|
-
return {
|
|
50
|
-
bytes,
|
|
51
|
-
filename: basename(ref),
|
|
52
|
-
mimeType: mimeFromExtension(extname(ref)),
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const logger: Logger = {
|
|
58
|
-
info: (message) => console.log(`[sdk] ${message}`),
|
|
59
|
-
warn: (message) => console.warn(`[sdk] ${message}`),
|
|
60
|
-
error: (message) => console.error(`[sdk] ${message}`),
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
async function main(): Promise<void> {
|
|
64
|
-
const dryTransport = new DryRunTransport()
|
|
65
|
-
const apiKey = live ? process.env.KIE_API_KEY?.trim() : 'dry-run-not-a-secret'
|
|
66
|
-
if (!apiKey) throw new Error('Missing KIE_API_KEY')
|
|
67
|
-
|
|
68
|
-
const runtime: RuntimeContext = {
|
|
69
|
-
transport: live ? new SingleCreateTransport() : dryTransport,
|
|
70
|
-
credentials: {
|
|
71
|
-
get: (scope, providerId) => scope === 'generation' && providerId === 'kie'
|
|
72
|
-
? apiKey
|
|
73
|
-
: undefined,
|
|
74
|
-
},
|
|
75
|
-
media,
|
|
76
|
-
logger,
|
|
77
|
-
}
|
|
78
|
-
const client = createGenerationClient({ runtime })
|
|
79
|
-
const params = {
|
|
80
|
-
prompt: 'A tiny blue paper boat on a calm white background, studio light',
|
|
81
|
-
kieZImageAspectRatio: '1:1',
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
try {
|
|
85
|
-
const price = client.catalog.estimatePrice(MODEL_ID, params)
|
|
86
|
-
const result = await client.generate({
|
|
87
|
-
modelId: MODEL_ID,
|
|
88
|
-
requestId: live ? `example-kie-${Date.now()}` : 'example-kie-dry-run',
|
|
89
|
-
params,
|
|
90
|
-
}, {
|
|
91
|
-
onRequestBuilt: ({ providerId, route, method }) => {
|
|
92
|
-
console.log(JSON.stringify({ stage: 'request-built', providerId, route, method }))
|
|
93
|
-
},
|
|
94
|
-
})
|
|
95
|
-
|
|
96
|
-
if (!live) {
|
|
97
|
-
console.log(JSON.stringify({
|
|
98
|
-
mode: 'dry-run',
|
|
99
|
-
networkCalls: 0,
|
|
100
|
-
interceptedRequests: dryTransport.calls,
|
|
101
|
-
status: result.status,
|
|
102
|
-
taskId: result.taskId,
|
|
103
|
-
estimatedUsd: price,
|
|
104
|
-
}))
|
|
105
|
-
return
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
const completed = result.status === 'pending' && result.taskId
|
|
109
|
-
? await client.continuePolling({ modelId: MODEL_ID, taskId: result.taskId, params })
|
|
110
|
-
: result
|
|
111
|
-
if (completed.status !== 'completed' || !completed.url) {
|
|
112
|
-
throw new Error(`KIE generation did not complete: ${completed.status}`)
|
|
113
|
-
}
|
|
114
|
-
console.log(JSON.stringify({
|
|
115
|
-
mode: 'live',
|
|
116
|
-
status: completed.status,
|
|
117
|
-
resultUrl: completed.url,
|
|
118
|
-
estimatedUsd: price,
|
|
119
|
-
}))
|
|
120
|
-
} finally {
|
|
121
|
-
client.dispose()
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
function mimeFromExtension(extension: string): string {
|
|
126
|
-
const normalized = extension.toLowerCase()
|
|
127
|
-
if (normalized === '.png') return 'image/png'
|
|
128
|
-
if (normalized === '.webp') return 'image/webp'
|
|
129
|
-
if (normalized === '.gif') return 'image/gif'
|
|
130
|
-
if (normalized === '.mp4') return 'video/mp4'
|
|
131
|
-
if (normalized === '.mp3') return 'audio/mpeg'
|
|
132
|
-
return 'image/jpeg'
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
void main().catch((error: unknown) => {
|
|
136
|
-
console.error(error instanceof Error ? error.message : String(error))
|
|
137
|
-
process.exitCode = 1
|
|
138
|
-
})
|
|
1
|
+
import { readFile } from 'node:fs/promises'
|
|
2
|
+
import { basename, extname } from 'node:path'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
createGenerationClient,
|
|
6
|
+
} from '@henjicc/ai-sdk/generation'
|
|
7
|
+
import type {
|
|
8
|
+
Logger,
|
|
9
|
+
MediaReader,
|
|
10
|
+
RuntimeContext,
|
|
11
|
+
Transport,
|
|
12
|
+
} from '@henjicc/ai-sdk/runtime'
|
|
13
|
+
|
|
14
|
+
const MODEL_ID = 'kie-z-image'
|
|
15
|
+
const CREATE_TASK_PATH = '/api/v1/jobs/createTask'
|
|
16
|
+
const live = process.argv.includes('--live')
|
|
17
|
+
|
|
18
|
+
class SingleCreateTransport implements Transport {
|
|
19
|
+
private createRequests = 0
|
|
20
|
+
|
|
21
|
+
async fetch(url: string, init?: RequestInit): Promise<Response> {
|
|
22
|
+
const method = (init?.method ?? 'GET').toUpperCase()
|
|
23
|
+
if (method === 'POST' && new URL(url).pathname === CREATE_TASK_PATH) {
|
|
24
|
+
this.createRequests += 1
|
|
25
|
+
if (this.createRequests > 1) {
|
|
26
|
+
throw new Error('Blocked a repeated paid KIE create request')
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return await fetch(url, init)
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
class DryRunTransport implements Transport {
|
|
34
|
+
calls = 0
|
|
35
|
+
|
|
36
|
+
async fetch(url: string, init?: RequestInit): Promise<Response> {
|
|
37
|
+
this.calls += 1
|
|
38
|
+
const method = (init?.method ?? 'GET').toUpperCase()
|
|
39
|
+
if (method !== 'POST' || new URL(url).pathname !== CREATE_TASK_PATH) {
|
|
40
|
+
throw new Error(`Dry-run rejected unexpected request: ${method} ${url}`)
|
|
41
|
+
}
|
|
42
|
+
return Response.json({ code: 200, data: { taskId: 'dry-run-task' } })
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const media: MediaReader = {
|
|
47
|
+
async read(ref) {
|
|
48
|
+
const bytes = new Uint8Array(await readFile(ref))
|
|
49
|
+
return {
|
|
50
|
+
bytes,
|
|
51
|
+
filename: basename(ref),
|
|
52
|
+
mimeType: mimeFromExtension(extname(ref)),
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const logger: Logger = {
|
|
58
|
+
info: (message) => console.log(`[sdk] ${message}`),
|
|
59
|
+
warn: (message) => console.warn(`[sdk] ${message}`),
|
|
60
|
+
error: (message) => console.error(`[sdk] ${message}`),
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async function main(): Promise<void> {
|
|
64
|
+
const dryTransport = new DryRunTransport()
|
|
65
|
+
const apiKey = live ? process.env.KIE_API_KEY?.trim() : 'dry-run-not-a-secret'
|
|
66
|
+
if (!apiKey) throw new Error('Missing KIE_API_KEY')
|
|
67
|
+
|
|
68
|
+
const runtime: RuntimeContext = {
|
|
69
|
+
transport: live ? new SingleCreateTransport() : dryTransport,
|
|
70
|
+
credentials: {
|
|
71
|
+
get: (scope, providerId) => scope === 'generation' && providerId === 'kie'
|
|
72
|
+
? apiKey
|
|
73
|
+
: undefined,
|
|
74
|
+
},
|
|
75
|
+
media,
|
|
76
|
+
logger,
|
|
77
|
+
}
|
|
78
|
+
const client = createGenerationClient({ runtime })
|
|
79
|
+
const params = {
|
|
80
|
+
prompt: 'A tiny blue paper boat on a calm white background, studio light',
|
|
81
|
+
kieZImageAspectRatio: '1:1',
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
try {
|
|
85
|
+
const price = client.catalog.estimatePrice(MODEL_ID, params)
|
|
86
|
+
const result = await client.generate({
|
|
87
|
+
modelId: MODEL_ID,
|
|
88
|
+
requestId: live ? `example-kie-${Date.now()}` : 'example-kie-dry-run',
|
|
89
|
+
params,
|
|
90
|
+
}, {
|
|
91
|
+
onRequestBuilt: ({ providerId, route, method }) => {
|
|
92
|
+
console.log(JSON.stringify({ stage: 'request-built', providerId, route, method }))
|
|
93
|
+
},
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
if (!live) {
|
|
97
|
+
console.log(JSON.stringify({
|
|
98
|
+
mode: 'dry-run',
|
|
99
|
+
networkCalls: 0,
|
|
100
|
+
interceptedRequests: dryTransport.calls,
|
|
101
|
+
status: result.status,
|
|
102
|
+
taskId: result.taskId,
|
|
103
|
+
estimatedUsd: price,
|
|
104
|
+
}))
|
|
105
|
+
return
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const completed = result.status === 'pending' && result.taskId
|
|
109
|
+
? await client.continuePolling({ modelId: MODEL_ID, taskId: result.taskId, params })
|
|
110
|
+
: result
|
|
111
|
+
if (completed.status !== 'completed' || !completed.url) {
|
|
112
|
+
throw new Error(`KIE generation did not complete: ${completed.status}`)
|
|
113
|
+
}
|
|
114
|
+
console.log(JSON.stringify({
|
|
115
|
+
mode: 'live',
|
|
116
|
+
status: completed.status,
|
|
117
|
+
resultUrl: completed.url,
|
|
118
|
+
estimatedUsd: price,
|
|
119
|
+
}))
|
|
120
|
+
} finally {
|
|
121
|
+
client.dispose()
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function mimeFromExtension(extension: string): string {
|
|
126
|
+
const normalized = extension.toLowerCase()
|
|
127
|
+
if (normalized === '.png') return 'image/png'
|
|
128
|
+
if (normalized === '.webp') return 'image/webp'
|
|
129
|
+
if (normalized === '.gif') return 'image/gif'
|
|
130
|
+
if (normalized === '.mp4') return 'video/mp4'
|
|
131
|
+
if (normalized === '.mp3') return 'audio/mpeg'
|
|
132
|
+
return 'image/jpeg'
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
void main().catch((error: unknown) => {
|
|
136
|
+
console.error(error instanceof Error ? error.message : String(error))
|
|
137
|
+
process.exitCode = 1
|
|
138
|
+
})
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@henjicc/ai-sdk-example-minimal-node",
|
|
3
|
-
"private": true,
|
|
4
|
-
"type": "module",
|
|
5
|
-
"scripts": {
|
|
6
|
-
"build": "tsc -p tsconfig.json",
|
|
7
|
-
"dry-run": "npm run build && node dist/index.js --dry-run",
|
|
8
|
-
"start": "npm run build && node dist/index.js --live"
|
|
9
|
-
},
|
|
10
|
-
"dependencies": {
|
|
11
|
-
"@henjicc/ai-sdk": "0.
|
|
12
|
-
},
|
|
13
|
-
"devDependencies": {
|
|
14
|
-
"@types/node": "^24.0.0",
|
|
15
|
-
"typescript": "^5.9.2"
|
|
16
|
-
}
|
|
17
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@henjicc/ai-sdk-example-minimal-node",
|
|
3
|
+
"private": true,
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "tsc -p tsconfig.json",
|
|
7
|
+
"dry-run": "npm run build && node dist/index.js --dry-run",
|
|
8
|
+
"start": "npm run build && node dist/index.js --live"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"@henjicc/ai-sdk": "0.4.0"
|
|
12
|
+
},
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"@types/node": "^24.0.0",
|
|
15
|
+
"typescript": "^5.9.2"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2022",
|
|
4
|
-
"lib": ["ES2022", "DOM"],
|
|
5
|
-
"module": "NodeNext",
|
|
6
|
-
"moduleResolution": "NodeNext",
|
|
7
|
-
"strict": true,
|
|
8
|
-
"skipLibCheck": true,
|
|
9
|
-
"outDir": "dist",
|
|
10
|
-
"rootDir": ".",
|
|
11
|
-
"types": ["node"]
|
|
12
|
-
},
|
|
13
|
-
"include": ["index.ts"]
|
|
14
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"lib": ["ES2022", "DOM"],
|
|
5
|
+
"module": "NodeNext",
|
|
6
|
+
"moduleResolution": "NodeNext",
|
|
7
|
+
"strict": true,
|
|
8
|
+
"skipLibCheck": true,
|
|
9
|
+
"outDir": "dist",
|
|
10
|
+
"rootDir": ".",
|
|
11
|
+
"types": ["node"]
|
|
12
|
+
},
|
|
13
|
+
"include": ["index.ts"]
|
|
14
|
+
}
|