@henjicc/ai-sdk 0.2.8 → 0.3.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.
Files changed (236) hide show
  1. package/CHANGELOG.md +153 -143
  2. package/README.md +486 -461
  3. package/dist/capabilities/embedding/bailian.d.ts +23 -0
  4. package/dist/capabilities/embedding/bailian.js +10 -0
  5. package/dist/capabilities/embedding/bigmodel.d.ts +9 -0
  6. package/dist/capabilities/embedding/bigmodel.js +5 -0
  7. package/dist/capabilities/embedding/index.d.ts +1 -0
  8. package/dist/capabilities/embedding/index.js +1 -0
  9. package/dist/capabilities/embedding/ppio.d.ts +7 -0
  10. package/dist/capabilities/embedding/ppio.js +5 -0
  11. package/dist/capabilities/embedding/siliconflow.d.ts +21 -0
  12. package/dist/capabilities/embedding/siliconflow.js +10 -0
  13. package/dist/capabilities/embedding/volcengine.d.ts +10 -0
  14. package/dist/capabilities/embedding/volcengine.js +6 -0
  15. package/dist/capabilities/rerank/bailian.d.ts +21 -0
  16. package/dist/capabilities/rerank/bailian.js +14 -0
  17. package/dist/capabilities/rerank/bigmodel.d.ts +9 -0
  18. package/dist/capabilities/rerank/bigmodel.js +5 -0
  19. package/dist/capabilities/rerank/index.d.ts +1 -0
  20. package/dist/capabilities/rerank/index.js +1 -0
  21. package/dist/capabilities/rerank/ppio.d.ts +7 -0
  22. package/dist/capabilities/rerank/ppio.js +5 -0
  23. package/dist/capabilities/rerank/siliconflow.d.ts +21 -0
  24. package/dist/capabilities/rerank/siliconflow.js +10 -0
  25. package/dist/capabilities/retrieval/http.d.ts +3 -0
  26. package/dist/capabilities/retrieval/http.js +48 -0
  27. package/dist/capabilities/retrieval/module.d.ts +11 -0
  28. package/dist/capabilities/retrieval/module.js +110 -0
  29. package/dist/capabilities/retrieval/types.d.ts +54 -0
  30. package/dist/capabilities/retrieval/types.js +1 -0
  31. package/dist/capabilities/retrieval/validation.d.ts +10 -0
  32. package/dist/capabilities/retrieval/validation.js +65 -0
  33. package/dist/capabilities/types.d.ts +1 -1
  34. package/dist/catalog/apimart/gpt-image-2.5.model.d.ts +2 -0
  35. package/dist/catalog/apimart/gpt-image-2.5.model.js +51 -0
  36. package/dist/catalog/fal/gpt-image-2.5.model.d.ts +2 -0
  37. package/dist/catalog/fal/gpt-image-2.5.model.js +53 -0
  38. package/dist/catalog/fal/ic-light-v2.model.js +9 -13
  39. package/dist/catalog/grsai/gpt-image-2.5.model.d.ts +2 -0
  40. package/dist/catalog/grsai/gpt-image-2.5.model.js +54 -0
  41. package/dist/catalog/grsai/gptImage25Sizes.d.ts +1 -0
  42. package/dist/catalog/grsai/gptImage25Sizes.js +76 -0
  43. package/dist/catalog/index.js +112 -104
  44. package/dist/catalog/kie/gpt-image-2.5.model.d.ts +2 -0
  45. package/dist/catalog/kie/gpt-image-2.5.model.js +38 -0
  46. package/dist/catalog/shared/gptImage25.d.ts +16 -0
  47. package/dist/catalog/shared/gptImage25.js +48 -0
  48. package/dist/catalog/shared/gptImage25Pricing.d.ts +12 -0
  49. package/dist/catalog/shared/gptImage25Pricing.js +508 -0
  50. package/dist/llm/defaults.d.ts +1 -1
  51. package/dist/llm/defaults.js +1 -1
  52. package/dist/llm/modelCatalogEntries.js +16 -0
  53. package/dist/llm/providerPresets.js +2 -2
  54. package/dist/packs/models/apimart/gpt-image-2.5.d.ts +6 -0
  55. package/dist/packs/models/apimart/gpt-image-2.5.js +7 -0
  56. package/dist/packs/models/fal/gpt-image-2.5.d.ts +6 -0
  57. package/dist/packs/models/fal/gpt-image-2.5.js +7 -0
  58. package/dist/packs/models/grsai/gpt-image-2.5.d.ts +6 -0
  59. package/dist/packs/models/grsai/gpt-image-2.5.js +7 -0
  60. package/dist/packs/models/kie/gpt-image-2.5.d.ts +6 -0
  61. package/dist/packs/models/kie/gpt-image-2.5.js +7 -0
  62. package/dist/packs/provider-packs/apimart.d.ts +1 -1
  63. package/dist/packs/provider-packs/apimart.js +21 -20
  64. package/dist/packs/provider-packs/fal.d.ts +1 -1
  65. package/dist/packs/provider-packs/fal.js +37 -36
  66. package/dist/packs/provider-packs/grsai.d.ts +1 -1
  67. package/dist/packs/provider-packs/grsai.js +6 -5
  68. package/dist/packs/provider-packs/kie.d.ts +1 -1
  69. package/dist/packs/provider-packs/kie.js +28 -27
  70. package/dist/packs/tool-models/fal/{qwen-image-edit-2509-multiple-angles.d.ts → qwen-image-edit-2511-multiple-angles.d.ts} +1 -1
  71. package/dist/packs/tool-models/fal/{qwen-image-edit-2509-multiple-angles.js → qwen-image-edit-2511-multiple-angles.js} +1 -1
  72. package/dist/packs/tool-packs/fal-multi-angle-tools.js +1 -1
  73. package/dist/tool-packs/fal-multi-angle/models/qwen-image-edit-2511-multiple-angles.model.d.ts +2 -0
  74. 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
  75. package/docs/README.md +26 -26
  76. package/docs/consumers.md +54 -48
  77. package/docs/llm-adaptation/README.md +139 -139
  78. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/DeepSeek.md +103 -91
  79. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/Kimi.md +75 -75
  80. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/MiniMax.md +84 -84
  81. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//345/260/217/347/261/263MiMo.md +85 -85
  82. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//346/231/272/350/260/261GLM.md +232 -232
  83. 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
  84. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//347/231/276/347/202/274Qwen.md +84 -84
  85. 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
  86. package/docs/model-adaptation/Bria-Eraser/Bria-Eraser_Fal.md +32 -32
  87. 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
  88. package/docs/model-adaptation/ControlLight/ControlLight_Fal.md +85 -85
  89. 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
  90. package/docs/model-adaptation/Finegrain-Eraser/Finegrain-Eraser_Fal.md +31 -31
  91. package/docs/model-adaptation/Flux-Pro-Erase/Flux-Pro-Erase_Fal.md +34 -34
  92. package/docs/model-adaptation/Fun-ASR/Fun-ASR_/347/231/276/347/202/274.md +43 -43
  93. 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
  94. package/docs/model-adaptation/Fun-ASR-Realtime/Fun-ASR-Realtime_/347/231/276/347/202/274.md +37 -37
  95. 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
  96. package/docs/model-adaptation/GLM-5.3-Flash/GLM-5.3-Flash_/346/231/272/350/260/261.md +207 -207
  97. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_APIMart.md +173 -173
  98. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_Fal.md +94 -94
  99. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_Grsai.md +137 -137
  100. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_KIE.md +93 -93
  101. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_APIMart.md +66 -0
  102. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_Fal.md +55 -0
  103. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_Grsai.md +53 -0
  104. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_KIE.md +55 -0
  105. package/docs/model-adaptation/GPT-OSS-20B/GPT-OSS-20B_Groq.md +62 -62
  106. package/docs/model-adaptation/Gemini-Omni-Flash/Gemini-Omni-Flash_APIMart.md +124 -124
  107. package/docs/model-adaptation/Gemini-Omni-Flash/Gemini-Omni-Flash_Fal.md +84 -84
  108. package/docs/model-adaptation/Gemini-Omni-Flash/Gemini-Omni-Flash_KIE.md +129 -129
  109. package/docs/model-adaptation/Grok-Imagine/Grok-Imagine_KIE.md +36 -36
  110. package/docs/model-adaptation/Grok-Imagine-2.0/Grok-Imagine-2.0_APIMart.md +250 -250
  111. package/docs/model-adaptation/Grok-Imagine-2.0/Grok-Imagine-2.0_Fal.md +84 -84
  112. package/docs/model-adaptation/Grok-Imagine-2.0/Grok-Imagine-2.0_KIE.md +105 -105
  113. package/docs/model-adaptation/Hailuo-02/Hailuo-02_Fal.md +93 -93
  114. package/docs/model-adaptation/Hailuo-02/Hailuo-02_KIE.md +56 -56
  115. package/docs/model-adaptation/Hailuo-2.3/Hailuo-2.3_Fal.md +88 -88
  116. package/docs/model-adaptation/Hailuo-2.3/Hailuo-2.3_KIE.md +51 -51
  117. package/docs/model-adaptation/Hailuo-2.3/Hailuo-2.3_/346/264/276/346/254/247/344/272/221.md +70 -70
  118. package/docs/model-adaptation/IC-Light-v2/IC-Light-v2_Fal.md +97 -94
  119. 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
  120. 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
  121. 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
  122. 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
  123. 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
  124. package/docs/model-adaptation/Kling-3.0/Kling-3.0_APIMart.md +112 -112
  125. package/docs/model-adaptation/Kling-3.0/Kling-3.0_Fal.md +89 -89
  126. package/docs/model-adaptation/Kling-3.0/Kling-3.0_KIE.md +106 -106
  127. package/docs/model-adaptation/Kling-3.0/Kling-3.0_/346/264/276/346/254/247/344/272/221.md +119 -119
  128. package/docs/model-adaptation/Kling-3.0-Omni/Kling-3.0-Omni_APIMart.md +125 -125
  129. package/docs/model-adaptation/Kling-3.0-Omni/Kling-3.0-Omni_Fal.md +107 -107
  130. package/docs/model-adaptation/Kling-3.0-Omni/Kling-3.0-Omni_KIE.md +143 -143
  131. package/docs/model-adaptation/Kling-3.0-Turbo/Kling-3.0-Turbo_APIMart.md +85 -85
  132. package/docs/model-adaptation/Kling-3.0-Turbo/Kling-3.0-Turbo_Fal.md +83 -83
  133. package/docs/model-adaptation/Kling-3.0-Turbo/Kling-3.0-Turbo_KIE.md +84 -84
  134. package/docs/model-adaptation/Midjourney/Midjourney_APIMart.md +396 -396
  135. package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_APIMart.md +234 -234
  136. package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_Fal.md +108 -108
  137. package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_KIE.md +111 -111
  138. package/docs/model-adaptation/MiniMax-Speech/MiniMax-Speech_/346/264/276/346/254/247/344/272/221.md +170 -170
  139. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_APIMart.md +89 -89
  140. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_Fal.md +99 -99
  141. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_Grsai.md +82 -82
  142. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_KIE.md +70 -70
  143. package/docs/model-adaptation/Nano-Banana-2-Lite/Nano-Banana-2-Lite_APIMart.md +79 -79
  144. package/docs/model-adaptation/Nano-Banana-2-Lite/Nano-Banana-2-Lite_Grsai.md +65 -65
  145. package/docs/model-adaptation/Nano-Banana-2-Lite/Nano-Banana-2-Lite_KIE.md +64 -64
  146. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_APIMart.md +83 -83
  147. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_Fal.md +89 -89
  148. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_Grsai.md +82 -82
  149. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_KIE.md +64 -64
  150. 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
  151. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_APIMart.md +117 -117
  152. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_Fal.md +84 -84
  153. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_KIE.md +103 -103
  154. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_/347/231/276/347/202/274.md +138 -138
  155. 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
  156. package/docs/model-adaptation/Qwen-MT-Flash/Qwen-MT-Flash_/347/231/276/347/202/274.md +47 -47
  157. package/docs/model-adaptation/Qwen-MT-Lite/Qwen-MT-Lite_/347/231/276/347/202/274.md +39 -39
  158. package/docs/model-adaptation/Qwen-MT-Plus/Qwen-MT-Plus_/347/231/276/347/202/274.md +39 -39
  159. package/docs/model-adaptation/Qwen3-ASR-Flash/Qwen3-ASR-Flash_/347/231/276/347/202/274.md +40 -40
  160. 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
  161. package/docs/model-adaptation/Qwen3-ASR-Flash-Filetrans/Qwen3-ASR-Flash-Filetrans_/347/231/276/347/202/274.md +41 -41
  162. package/docs/model-adaptation/Qwen3-ASR-Flash-Realtime/Qwen3-ASR-Flash-Realtime_/347/231/276/347/202/274.md +35 -35
  163. 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
  164. package/docs/model-adaptation/README.md +313 -295
  165. 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
  166. 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
  167. 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
  168. package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_APIMart.md +121 -121
  169. package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_Fal.md +97 -97
  170. package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_KIE.md +86 -86
  171. package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_APIMart.md +89 -89
  172. package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_Fal.md +95 -95
  173. package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_KIE.md +78 -78
  174. package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_APIMart.md +89 -89
  175. package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_Fal.md +96 -96
  176. package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_KIE.md +78 -78
  177. package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_APIMart.md +212 -212
  178. package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_Fal.md +94 -94
  179. package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_KIE.md +89 -89
  180. package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_APIMart.md +106 -106
  181. package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_Fal.md +91 -91
  182. package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_KIE.md +89 -89
  183. 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
  184. package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_APIMart.md +194 -194
  185. package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_Fal.md +100 -100
  186. package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_KIE.md +141 -141
  187. 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
  188. package/docs/model-adaptation/SenseVoiceSmall/SenseVoiceSmall_/347/241/205/345/237/272/346/265/201/345/212/250.md +69 -69
  189. package/docs/model-adaptation/TeleSpeechASR/TeleSpeechASR_/347/241/205/345/237/272/346/265/201/345/212/250.md +72 -72
  190. 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
  191. 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
  192. package/docs/model-adaptation/Wan-2.5-Preview/Wan-2.5-Preview_/346/264/276/346/254/247/344/272/221.md +82 -82
  193. package/docs/model-adaptation/Wan-2.6/Wan-2.6_/346/264/276/346/254/247/344/272/221.md +84 -84
  194. package/docs/model-adaptation/Wan-2.7/Wan-2.7_/346/264/276/346/254/247/344/272/221.md +122 -122
  195. package/docs/model-adaptation/Whisper-Large-v3/Whisper-Large-v3_Groq.md +76 -76
  196. package/docs/model-adaptation/Whisper-Large-v3-Turbo/Whisper-Large-v3-Turbo_Groq.md +75 -75
  197. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_APIMart.md +88 -88
  198. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_Fal.md +95 -95
  199. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_KIE.md +71 -71
  200. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_/347/231/276/347/202/274.md +122 -122
  201. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_/351/255/224/346/220/255.md +97 -97
  202. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/APIMart.md +238 -238
  203. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/Fal.md +172 -172
  204. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/Groq.md +121 -121
  205. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/Grsai.md +217 -217
  206. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/KIE.md +131 -131
  207. 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
  208. 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
  209. 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
  210. 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
  211. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/231/276/347/202/274.md +237 -227
  212. 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 +110 -88
  213. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//351/255/224/346/220/255.md +207 -207
  214. 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
  215. 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
  216. package/docs//346/216/245/345/205/245/346/214/207/345/215/227/Electron.md +77 -77
  217. package/docs//346/216/245/345/205/245/346/214/207/345/215/227/Tauri.md +81 -81
  218. package/docs//346/216/245/345/205/245/346/214/207/345/215/227/UXP.md +169 -169
  219. 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
  220. 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
  221. package/examples/form-renderer/README.md +17 -17
  222. package/examples/form-renderer/cli.ts +32 -32
  223. package/examples/form-renderer/index.ts +144 -144
  224. package/examples/form-renderer/package.json +16 -16
  225. package/examples/form-renderer/tsconfig.json +14 -14
  226. package/examples/llm-chat/README.md +32 -32
  227. package/examples/llm-chat/index.ts +100 -100
  228. package/examples/llm-chat/package.json +19 -19
  229. package/examples/llm-chat/tsconfig.json +14 -14
  230. package/examples/minimal-node/README.md +31 -31
  231. package/examples/minimal-node/index.ts +138 -138
  232. package/examples/minimal-node/package.json +17 -17
  233. package/examples/minimal-node/tsconfig.json +14 -14
  234. package/package.json +252 -197
  235. package/dist/tool-packs/fal-multi-angle/models/qwen-image-edit-2509-multiple-angles.model.d.ts +0 -2
  236. 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,59 +1,59 @@
1
- # 透视变换(Fal)适配资料
2
-
3
- | 项目 | 内容 |
4
- |---|---|
5
- | 最后更新 | 2026-08-29 |
6
- | 平台 | Fal |
7
- | 展示名 | Perspective Change |
8
- | API endpoint ID | `fal-ai/image-apps-v2/perspective` |
9
- | 模态 | 单图输入 → 单个离散视角图 |
10
- | 商用标记 | Fal 模型页明确标为 `Commercial use` |
11
- | 价格 | `$0.04 / image` |
12
- | 登录状态 | 模型页、Agent 文本与 OpenAPI 公开;真实调用需要 Fal Key |
13
- | 接入定位 | 多角度能力的离散完整方位档;不与连续控制档混成同一结果组 |
14
-
15
- ## 1. 接口
16
-
17
- - endpoint ID:`fal-ai/image-apps-v2/perspective`
18
- - 输入:`image_url` 必填;`target_perspective` 可选;`aspect_ratio` 可选。
19
- - 输出:`images[]`,首版要求恰好一张。
20
- - 异步、上传、取消、结果解析复用 [Fal 供应商资料](../供应商/Fal.md)。
21
-
22
- ## 2. 离散视角枚举
23
-
24
- | API 值 | 产品标签 | 精度说明 |
25
- |---|---|---|
26
- | `front` | 正面 | 语义预设,不是 0° 相机外参 |
27
- | `left_side` | 左侧面 | 语义预设,不承诺精确 90° |
28
- | `right_side` | 右侧面 | 语义预设,不承诺精确 -90° |
29
- | `back` | 背面 | 由模型推断不可见区域 |
30
- | `top_down` | 顶视 | 语义预设 |
31
- | `bottom_up` | 仰视 | 语义预设 |
32
- | `birds_eye` | 鸟瞰 | 语义预设 |
33
- | `three_quarter_left` | 左三分之四 | 语义预设 |
34
- | `three_quarter_right` | 右三分之四 | 语义预设 |
35
-
36
- 首版固定 1 张输入图、每个目标预设单独请求、同组不允许重复预设。默认完整方位组为正面、右侧面、背面、左侧面。该端点没有提示词、连续角度、距离或 FOV 字段,界面不得补造相关控件。
37
-
38
- ## 3. 价格与失败策略
39
-
40
- - `$0.04 / image`;4 个方位约 `$0.16`,全部 9 个预设约 `$0.36`。
41
- - 单次输出数量不等于 1 时视为契约失败。
42
- - 批次失败时沿用多角度原子落图和按失败项重试策略。
43
- - 离散档和连续档来自不同模型,不能在一个结果组混用,否则组内一致性和精度语义不可比较。
44
-
45
- ## 4. 待真实验证
46
-
47
- - `front/side/back` 的方位遵从和人物/商品身份一致性。
48
- - 不可见背面补全质量与文字、标志、结构漂移。
49
- - `top_down` 与 `birds_eye` 的实际差异。
50
- - 官方未给延迟承诺,需按 request ID 记录真实耗时。
51
-
52
- ## 5. 原始链接索引
53
-
54
- | 内容 | 链接 | 是否需登录 | 核查日期 |
55
- |---|---|---|---|
56
- | 模型页、商用标记与价格 | https://fal.ai/models/fal-ai/image-apps-v2/perspective | 否 | 2026-08-29 |
57
- | 实时 Agent 文本 | https://fal.ai/models/fal-ai/image-apps-v2/perspective/llms.txt | 否 | 2026-08-29 |
58
- | OpenAPI | https://fal.ai/api/openapi/queue/openapi.json?endpoint_id=fal-ai/image-apps-v2/perspective | 否 | 2026-08-29 |
59
- | Fal 队列协议 | https://fal.ai/docs/documentation/model-apis/inference/queue | 否 | 2026-08-29 |
1
+ # 透视变换(Fal)适配资料
2
+
3
+ | 项目 | 内容 |
4
+ |---|---|
5
+ | 最后更新 | 2026-08-29 |
6
+ | 平台 | Fal |
7
+ | 展示名 | Perspective Change |
8
+ | API endpoint ID | `fal-ai/image-apps-v2/perspective` |
9
+ | 模态 | 单图输入 → 单个离散视角图 |
10
+ | 商用标记 | Fal 模型页明确标为 `Commercial use` |
11
+ | 价格 | `$0.04 / image` |
12
+ | 登录状态 | 模型页、Agent 文本与 OpenAPI 公开;真实调用需要 Fal Key |
13
+ | 接入定位 | 多角度能力的离散完整方位档;不与连续控制档混成同一结果组 |
14
+
15
+ ## 1. 接口
16
+
17
+ - endpoint ID:`fal-ai/image-apps-v2/perspective`
18
+ - 输入:`image_url` 必填;`target_perspective` 可选;`aspect_ratio` 可选。
19
+ - 输出:`images[]`,首版要求恰好一张。
20
+ - 异步、上传、取消、结果解析复用 [Fal 供应商资料](../供应商/Fal.md)。
21
+
22
+ ## 2. 离散视角枚举
23
+
24
+ | API 值 | 产品标签 | 精度说明 |
25
+ |---|---|---|
26
+ | `front` | 正面 | 语义预设,不是 0° 相机外参 |
27
+ | `left_side` | 左侧面 | 语义预设,不承诺精确 90° |
28
+ | `right_side` | 右侧面 | 语义预设,不承诺精确 -90° |
29
+ | `back` | 背面 | 由模型推断不可见区域 |
30
+ | `top_down` | 顶视 | 语义预设 |
31
+ | `bottom_up` | 仰视 | 语义预设 |
32
+ | `birds_eye` | 鸟瞰 | 语义预设 |
33
+ | `three_quarter_left` | 左三分之四 | 语义预设 |
34
+ | `three_quarter_right` | 右三分之四 | 语义预设 |
35
+
36
+ 首版固定 1 张输入图、每个目标预设单独请求、同组不允许重复预设。默认完整方位组为正面、右侧面、背面、左侧面。该端点没有提示词、连续角度、距离或 FOV 字段,界面不得补造相关控件。
37
+
38
+ ## 3. 价格与失败策略
39
+
40
+ - `$0.04 / image`;4 个方位约 `$0.16`,全部 9 个预设约 `$0.36`。
41
+ - 单次输出数量不等于 1 时视为契约失败。
42
+ - 批次失败时沿用多角度原子落图和按失败项重试策略。
43
+ - 离散档和连续档来自不同模型,不能在一个结果组混用,否则组内一致性和精度语义不可比较。
44
+
45
+ ## 4. 待真实验证
46
+
47
+ - `front/side/back` 的方位遵从和人物/商品身份一致性。
48
+ - 不可见背面补全质量与文字、标志、结构漂移。
49
+ - `top_down` 与 `birds_eye` 的实际差异。
50
+ - 官方未给延迟承诺,需按 request ID 记录真实耗时。
51
+
52
+ ## 5. 原始链接索引
53
+
54
+ | 内容 | 链接 | 是否需登录 | 核查日期 |
55
+ |---|---|---|---|
56
+ | 模型页、商用标记与价格 | https://fal.ai/models/fal-ai/image-apps-v2/perspective | 否 | 2026-08-29 |
57
+ | 实时 Agent 文本 | https://fal.ai/models/fal-ai/image-apps-v2/perspective/llms.txt | 否 | 2026-08-29 |
58
+ | OpenAPI | https://fal.ai/api/openapi/queue/openapi.json?endpoint_id=fal-ai/image-apps-v2/perspective | 否 | 2026-08-29 |
59
+ | Fal 队列协议 | https://fal.ai/docs/documentation/model-apis/inference/queue | 否 | 2026-08-29 |
@@ -1,77 +1,77 @@
1
- # Electron 接入
2
-
3
- ## 分层
4
-
5
- SDK 客户端应只在 Electron **主进程**构造一次。渲染层通过 preload 白名单和 IPC 发送可序列化
6
- DTO,不直接持有 API key,不导入 provider/runtime 实现,不直接请求供应商。
7
-
8
- ```text
9
- renderer -> preload -> ipcMain -> createAIClient({ runtime }) -> provider
10
- ```
11
-
12
- 痕迹AI 的已验证实现在
13
- `electron/main/services/ai-runtime/sdk-runtime.ts`,其单例 `sdkRuntimeContext` 与
14
- `sdkAIClient` 同时服务生成和 LLM。
15
-
16
- ## 四个宿主能力
17
-
18
- ```ts
19
- import fs from 'node:fs'
20
- import path from 'node:path'
21
- import {
22
- createAIClient,
23
- defaultFilename,
24
- inferMimeFromPath,
25
- normalizeLocalSource,
26
- parseDataUri,
27
- type RuntimeContext,
28
- } from '@henjicc/ai-sdk'
29
-
30
- const runtime: RuntimeContext = {
31
- transport: { fetch: (url, init) => fetch(url, init) },
32
- credentials: {
33
- get: (scope, providerId) => readFromOsProtectedStore(scope, providerId),
34
- },
35
- media: {
36
- async read(ref) {
37
- const data = parseDataUri(ref)
38
- if (data) {
39
- return { ...data, filename: defaultFilename(data.mimeType) }
40
- }
41
- const localPath = normalizeLocalSource(ref)
42
- if (!localPath) throw new Error(`Unsupported media ref: ${ref}`)
43
- return {
44
- bytes: new Uint8Array(fs.readFileSync(localPath)),
45
- mimeType: inferMimeFromPath(localPath),
46
- filename: path.basename(localPath),
47
- }
48
- },
49
- },
50
- logger: createSanitizedLogger(),
51
- }
52
-
53
- export const client = createAIClient({ runtime })
54
- ```
55
-
56
- `readFromOsProtectedStore` 和 `createSanitizedLogger` 是宿主的安全存储/日志实现;痕迹AI 分别使用
57
- Electron `safeStorage` 和统一结构化日志。日志不得放 API key、token、cookie 或完整授权头。
58
-
59
- ### `safeStorage` 与开发脚本身份
60
-
61
- 独立 Electron 验证脚本默认使用 `Electron` 这个 app name/profile,不能直接解密正式应用以另一
62
- app identity 写入的密文。若维护脚本需要复用正式凭据,必须在 `app.whenReady()` **之前**设置与
63
- 正式应用相同的 `app.setName()`,并让 `userData` / `sessionData` 指向正式 profile;否则应要求用户
64
- 重新注入密钥,而不是复制密文、猜解密格式或把明文写入临时文件。这个限制只影响复用既有
65
- `safeStorage` 密文;按本指南自行实现新宿主时,应始终让读写使用同一个应用身份。
66
-
67
- ## IPC 边界
68
-
69
- - IPC 只传 `modelId` / 扁平 `params` / `requestId` / `taskId`等 DTO,不传函数或 `RuntimeContext`。
70
- - `generate()` 可能返回 `pending + taskId`;宿主可立即 `continuePolling()`,或持久化 taskId 稍后续查。
71
- - SDK 结果只有 URL/metadata,不会下载成 `filePath`。落盘、媒体协议转换、进度学习和应用 trace 留在宿主。
72
- - 创建阶段用 requestId 取消;续轮询阶段用供应商 taskId 取消:
73
- `client.cancel({ namespace: 'generation', taskId })`。LLM 使用 `namespace: 'llm'`。
74
- - 应用退出或替换 client 时调用 `dispose()`;它会注销该 client 拥有的自定义 provider。
75
-
76
- Electron 主进程从包根 `@henjicc/ai-sdk` 导入是最兼容的写法;老的 TypeScript
77
- `moduleResolution: "node"` 不识别 `exports` 子路径。
1
+ # Electron 接入
2
+
3
+ ## 分层
4
+
5
+ SDK 客户端应只在 Electron **主进程**构造一次。渲染层通过 preload 白名单和 IPC 发送可序列化
6
+ DTO,不直接持有 API key,不导入 provider/runtime 实现,不直接请求供应商。
7
+
8
+ ```text
9
+ renderer -> preload -> ipcMain -> createAIClient({ runtime }) -> provider
10
+ ```
11
+
12
+ 痕迹AI 的已验证实现在
13
+ `electron/main/services/ai-runtime/sdk-runtime.ts`,其单例 `sdkRuntimeContext` 与
14
+ `sdkAIClient` 同时服务生成和 LLM。
15
+
16
+ ## 四个宿主能力
17
+
18
+ ```ts
19
+ import fs from 'node:fs'
20
+ import path from 'node:path'
21
+ import {
22
+ createAIClient,
23
+ defaultFilename,
24
+ inferMimeFromPath,
25
+ normalizeLocalSource,
26
+ parseDataUri,
27
+ type RuntimeContext,
28
+ } from '@henjicc/ai-sdk'
29
+
30
+ const runtime: RuntimeContext = {
31
+ transport: { fetch: (url, init) => fetch(url, init) },
32
+ credentials: {
33
+ get: (scope, providerId) => readFromOsProtectedStore(scope, providerId),
34
+ },
35
+ media: {
36
+ async read(ref) {
37
+ const data = parseDataUri(ref)
38
+ if (data) {
39
+ return { ...data, filename: defaultFilename(data.mimeType) }
40
+ }
41
+ const localPath = normalizeLocalSource(ref)
42
+ if (!localPath) throw new Error(`Unsupported media ref: ${ref}`)
43
+ return {
44
+ bytes: new Uint8Array(fs.readFileSync(localPath)),
45
+ mimeType: inferMimeFromPath(localPath),
46
+ filename: path.basename(localPath),
47
+ }
48
+ },
49
+ },
50
+ logger: createSanitizedLogger(),
51
+ }
52
+
53
+ export const client = createAIClient({ runtime })
54
+ ```
55
+
56
+ `readFromOsProtectedStore` 和 `createSanitizedLogger` 是宿主的安全存储/日志实现;痕迹AI 分别使用
57
+ Electron `safeStorage` 和统一结构化日志。日志不得放 API key、token、cookie 或完整授权头。
58
+
59
+ ### `safeStorage` 与开发脚本身份
60
+
61
+ 独立 Electron 验证脚本默认使用 `Electron` 这个 app name/profile,不能直接解密正式应用以另一
62
+ app identity 写入的密文。若维护脚本需要复用正式凭据,必须在 `app.whenReady()` **之前**设置与
63
+ 正式应用相同的 `app.setName()`,并让 `userData` / `sessionData` 指向正式 profile;否则应要求用户
64
+ 重新注入密钥,而不是复制密文、猜解密格式或把明文写入临时文件。这个限制只影响复用既有
65
+ `safeStorage` 密文;按本指南自行实现新宿主时,应始终让读写使用同一个应用身份。
66
+
67
+ ## IPC 边界
68
+
69
+ - IPC 只传 `modelId` / 扁平 `params` / `requestId` / `taskId`等 DTO,不传函数或 `RuntimeContext`。
70
+ - `generate()` 可能返回 `pending + taskId`;宿主可立即 `continuePolling()`,或持久化 taskId 稍后续查。
71
+ - SDK 结果只有 URL/metadata,不会下载成 `filePath`。落盘、媒体协议转换、进度学习和应用 trace 留在宿主。
72
+ - 创建阶段用 requestId 取消;续轮询阶段用供应商 taskId 取消:
73
+ `client.cancel({ namespace: 'generation', taskId })`。LLM 使用 `namespace: 'llm'`。
74
+ - 应用退出或替换 client 时调用 `dispose()`;它会注销该 client 拥有的自定义 provider。
75
+
76
+ Electron 主进程从包根 `@henjicc/ai-sdk` 导入是最兼容的写法;老的 TypeScript
77
+ `moduleResolution: "node"` 不识别 `exports` 子路径。
@@ -1,81 +1,81 @@
1
- # Tauri 2 接入
2
-
3
- ## 已验证边界
4
-
5
- 任务 1.1 在 `@tauri-apps/plugin-http@2.5.9` 上完成了真实 `cargo check`,并直接核对了已安装包源码:
6
-
7
- - `fetch()` 会尊重 `AbortSignal`,取消会调 Rust 侧 `fetch_cancel` / `fetch_cancel_body`。
8
- - `Response.body` 是按 chunk 读取的标准 `ReadableStream`,因此与 SDK SSE 读取器的类型契约相容。
9
- - capability URL glob 通过编译期校验。
10
-
11
- 未做的是 Tauri WebView 里的真实 SSE 服务器端到端联调;不要把“源码级支持”写成“所有平台都已实测稳定”。
12
-
13
- ## RuntimeContext
14
-
15
- ```ts
16
- import { fetch as tauriFetch } from '@tauri-apps/plugin-http'
17
- import { readFile } from '@tauri-apps/plugin-fs'
18
- import type { CredentialScope, Logger, RuntimeContext } from '@henjicc/ai-sdk'
19
-
20
- type ReadSecret = (key: string) => Promise<string | undefined>
21
-
22
- export function createTauriRuntime(readSecret: ReadSecret, logger?: Logger): RuntimeContext {
23
- return {
24
- transport: { fetch: (url, init) => tauriFetch(url, init) },
25
- credentials: {
26
- get: (scope: CredentialScope, providerId: string) =>
27
- readSecret(`${scope}:${providerId}`),
28
- },
29
- media: {
30
- async read(ref) {
31
- const bytes = await readFile(ref)
32
- return {
33
- bytes,
34
- mimeType: inferMime(ref),
35
- filename: ref.split(/[\\/]/).at(-1) || 'upload.bin',
36
- }
37
- },
38
- },
39
- logger,
40
- }
41
- }
42
-
43
- function inferMime(ref: string): string {
44
- const path = ref.toLowerCase()
45
- if (path.endsWith('.png')) return 'image/png'
46
- if (path.endsWith('.webp')) return 'image/webp'
47
- if (path.endsWith('.mp4')) return 'video/mp4'
48
- if (path.endsWith('.mp3')) return 'audio/mpeg'
49
- return 'image/jpeg'
50
- }
51
- ```
52
-
53
- `@tauri-apps/plugin-fs` 还需要单独配置可读路径 scope;不要给全文件系统无限制权限。
54
-
55
- ## HTTP capability
56
-
57
- `src-tauri/capabilities/default.json` 的形状如下;实际 URL 完整清单见
58
- [供应商域名.md](供应商域名.md):
59
-
60
- ```json
61
- {
62
- "permissions": [
63
- "http:default",
64
- {
65
- "identifier": "http:allow-fetch",
66
- "allow": [
67
- { "url": "https://api.kie.ai/*" },
68
- { "url": "https://*.apimart.ai/*" }
69
- ]
70
- }
71
- ]
72
- }
73
- ```
74
-
75
- 1.1 已对 `{"url":"https://*.apimart.ai/*"}` 做过 `cargo check`。新增供应商域名后要更新 capability 并重新发版。
76
-
77
- ## 凭据
78
-
79
- `tauri-plugin-store` 是明文 JSON,不应直接存 API key。使用 Stronghold 或系统 keyring 实现上面的
80
- `ReadSecret`,并在你的应用中完成写入/删除/重填流程。任务 1.1 只做了这两类方案的文档确认,
81
- 没有对某个 Stronghold/keyring 包的读写 API 做真机验证,所以本指南不伪造具体插件调用。
1
+ # Tauri 2 接入
2
+
3
+ ## 已验证边界
4
+
5
+ 任务 1.1 在 `@tauri-apps/plugin-http@2.5.9` 上完成了真实 `cargo check`,并直接核对了已安装包源码:
6
+
7
+ - `fetch()` 会尊重 `AbortSignal`,取消会调 Rust 侧 `fetch_cancel` / `fetch_cancel_body`。
8
+ - `Response.body` 是按 chunk 读取的标准 `ReadableStream`,因此与 SDK SSE 读取器的类型契约相容。
9
+ - capability URL glob 通过编译期校验。
10
+
11
+ 未做的是 Tauri WebView 里的真实 SSE 服务器端到端联调;不要把“源码级支持”写成“所有平台都已实测稳定”。
12
+
13
+ ## RuntimeContext
14
+
15
+ ```ts
16
+ import { fetch as tauriFetch } from '@tauri-apps/plugin-http'
17
+ import { readFile } from '@tauri-apps/plugin-fs'
18
+ import type { CredentialScope, Logger, RuntimeContext } from '@henjicc/ai-sdk'
19
+
20
+ type ReadSecret = (key: string) => Promise<string | undefined>
21
+
22
+ export function createTauriRuntime(readSecret: ReadSecret, logger?: Logger): RuntimeContext {
23
+ return {
24
+ transport: { fetch: (url, init) => tauriFetch(url, init) },
25
+ credentials: {
26
+ get: (scope: CredentialScope, providerId: string) =>
27
+ readSecret(`${scope}:${providerId}`),
28
+ },
29
+ media: {
30
+ async read(ref) {
31
+ const bytes = await readFile(ref)
32
+ return {
33
+ bytes,
34
+ mimeType: inferMime(ref),
35
+ filename: ref.split(/[\\/]/).at(-1) || 'upload.bin',
36
+ }
37
+ },
38
+ },
39
+ logger,
40
+ }
41
+ }
42
+
43
+ function inferMime(ref: string): string {
44
+ const path = ref.toLowerCase()
45
+ if (path.endsWith('.png')) return 'image/png'
46
+ if (path.endsWith('.webp')) return 'image/webp'
47
+ if (path.endsWith('.mp4')) return 'video/mp4'
48
+ if (path.endsWith('.mp3')) return 'audio/mpeg'
49
+ return 'image/jpeg'
50
+ }
51
+ ```
52
+
53
+ `@tauri-apps/plugin-fs` 还需要单独配置可读路径 scope;不要给全文件系统无限制权限。
54
+
55
+ ## HTTP capability
56
+
57
+ `src-tauri/capabilities/default.json` 的形状如下;实际 URL 完整清单见
58
+ [供应商域名.md](供应商域名.md):
59
+
60
+ ```json
61
+ {
62
+ "permissions": [
63
+ "http:default",
64
+ {
65
+ "identifier": "http:allow-fetch",
66
+ "allow": [
67
+ { "url": "https://api.kie.ai/*" },
68
+ { "url": "https://*.apimart.ai/*" }
69
+ ]
70
+ }
71
+ ]
72
+ }
73
+ ```
74
+
75
+ 1.1 已对 `{"url":"https://*.apimart.ai/*"}` 做过 `cargo check`。新增供应商域名后要更新 capability 并重新发版。
76
+
77
+ ## 凭据
78
+
79
+ `tauri-plugin-store` 是明文 JSON,不应直接存 API key。使用 Stronghold 或系统 keyring 实现上面的
80
+ `ReadSecret`,并在你的应用中完成写入/删除/重填流程。任务 1.1 只做了这两类方案的文档确认,
81
+ 没有对某个 Stronghold/keyring 包的读写 API 做真机验证,所以本指南不伪造具体插件调用。