@ai-stack/payloadcms 3.76.0-beta.1 → 3.76.0-beta.2

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 (337) hide show
  1. package/dist/ai/core/generateObject.js +1 -4
  2. package/dist/ai/core/generateObject.js.map +1 -1
  3. package/dist/ai/core/generateText.js +1 -5
  4. package/dist/ai/core/generateText.js.map +1 -1
  5. package/dist/ai/core/media/generateMedia.js +1 -4
  6. package/dist/ai/core/media/generateMedia.js.map +1 -1
  7. package/dist/ai/core/media/image/generateImage.js +4 -14
  8. package/dist/ai/core/media/image/generateImage.js.map +1 -1
  9. package/dist/ai/core/media/image/handlers/multimodal.js +8 -25
  10. package/dist/ai/core/media/image/handlers/multimodal.js.map +1 -1
  11. package/dist/ai/core/media/image/handlers/standard.js +7 -2
  12. package/dist/ai/core/media/image/handlers/standard.js.map +1 -1
  13. package/dist/ai/core/media/speech/generateSpeech.js +2 -3
  14. package/dist/ai/core/media/speech/generateSpeech.js.map +1 -1
  15. package/dist/ai/core/media/types.d.ts +2 -3
  16. package/dist/ai/core/media/types.js.map +1 -1
  17. package/dist/ai/core/streamObject.js +0 -3
  18. package/dist/ai/core/streamObject.js.map +1 -1
  19. package/dist/ai/core/streamText.js +1 -4
  20. package/dist/ai/core/streamText.js.map +1 -1
  21. package/dist/ai/core/types.d.ts +2 -2
  22. package/dist/ai/core/types.js.map +1 -1
  23. package/dist/ai/providers/blocks/anthropic.js +0 -42
  24. package/dist/ai/providers/blocks/anthropic.js.map +1 -1
  25. package/dist/ai/providers/blocks/elevenlabs.js +1 -106
  26. package/dist/ai/providers/blocks/elevenlabs.js.map +1 -1
  27. package/dist/ai/providers/blocks/fal.js +0 -118
  28. package/dist/ai/providers/blocks/fal.js.map +1 -1
  29. package/dist/ai/providers/blocks/google.js +2 -237
  30. package/dist/ai/providers/blocks/google.js.map +1 -1
  31. package/dist/ai/providers/blocks/openai-compatible.js +0 -144
  32. package/dist/ai/providers/blocks/openai-compatible.js.map +1 -1
  33. package/dist/ai/providers/blocks/openai.js +0 -200
  34. package/dist/ai/providers/blocks/openai.js.map +1 -1
  35. package/dist/ai/providers/blocks/xai.js +0 -53
  36. package/dist/ai/providers/blocks/xai.js.map +1 -1
  37. package/dist/ai/providers/index.d.ts +1 -1
  38. package/dist/ai/providers/index.js +0 -2
  39. package/dist/ai/providers/index.js.map +1 -1
  40. package/dist/ai/providers/registry.d.ts +24 -28
  41. package/dist/ai/providers/registry.js +184 -138
  42. package/dist/ai/providers/registry.js.map +1 -1
  43. package/dist/ai/providers/types.d.ts +12 -33
  44. package/dist/ai/providers/types.js +0 -1
  45. package/dist/ai/providers/types.js.map +1 -1
  46. package/dist/ai/schemas/lexicalJsonSchema.js +1 -1
  47. package/dist/ai/schemas/lexicalJsonSchema.js.map +1 -1
  48. package/dist/ai/utilities/filterEditorSchemaByNodes.js.map +1 -0
  49. package/dist/ai/utilities/generateFileNameByPrompt.js.map +1 -0
  50. package/dist/ai/utilities/isObjectSchema.js.map +1 -0
  51. package/dist/ai/utilities/nodeToSchemaMap.js.map +1 -0
  52. package/dist/ai/{prompts.d.ts → utilities/prompts.d.ts} +1 -1
  53. package/dist/ai/utilities/prompts.js.map +1 -0
  54. package/dist/ai/utilities/systemGenerate.js.map +1 -0
  55. package/dist/collections/AIJobs.js +3 -12
  56. package/dist/collections/AIJobs.js.map +1 -1
  57. package/dist/collections/AIProviders.js +47 -20
  58. package/dist/collections/AIProviders.js.map +1 -1
  59. package/dist/collections/Instructions.js +86 -54
  60. package/dist/collections/Instructions.js.map +1 -1
  61. package/dist/collections/shared.d.ts +30 -0
  62. package/dist/collections/shared.js +15 -0
  63. package/dist/collections/shared.js.map +1 -0
  64. package/dist/endpoints/fetchFields.js +14 -6
  65. package/dist/endpoints/fetchFields.js.map +1 -1
  66. package/dist/endpoints/fetchVoices.js +1 -1
  67. package/dist/endpoints/fetchVoices.js.map +1 -1
  68. package/dist/endpoints/generate.d.ts +7 -0
  69. package/dist/endpoints/generate.js +268 -0
  70. package/dist/endpoints/generate.js.map +1 -0
  71. package/dist/endpoints/index.js +9 -639
  72. package/dist/endpoints/index.js.map +1 -1
  73. package/dist/endpoints/promptMentions.d.ts +2 -0
  74. package/dist/endpoints/promptMentions.js +166 -0
  75. package/dist/endpoints/promptMentions.js.map +1 -0
  76. package/dist/endpoints/upload.d.ts +7 -0
  77. package/dist/endpoints/upload.js +294 -0
  78. package/dist/endpoints/upload.js.map +1 -0
  79. package/dist/endpoints/videogenWebhook.d.ts +7 -0
  80. package/dist/endpoints/videogenWebhook.js +132 -0
  81. package/dist/endpoints/videogenWebhook.js.map +1 -0
  82. package/dist/exports/client.d.ts +2 -1
  83. package/dist/exports/client.js +2 -1
  84. package/dist/exports/client.js.map +1 -1
  85. package/dist/exports/fields.d.ts +2 -1
  86. package/dist/exports/fields.js +2 -1
  87. package/dist/exports/fields.js.map +1 -1
  88. package/dist/fields/ArrayComposeField/ArrayComposeField.js +1 -1
  89. package/dist/fields/ArrayComposeField/ArrayComposeField.js.map +1 -1
  90. package/dist/fields/ArrayComposeField/ArrayComposeField.jsx +1 -1
  91. package/dist/fields/ComposeField/ComposeField.d.ts +1 -0
  92. package/dist/fields/ComposeField/ComposeField.js +18 -8
  93. package/dist/fields/ComposeField/ComposeField.js.map +1 -1
  94. package/dist/fields/ComposeField/ComposeField.jsx +12 -7
  95. package/dist/fields/PromptEditorField/feature.client.d.ts +1 -0
  96. package/dist/fields/PromptEditorField/feature.client.js +173 -0
  97. package/dist/fields/PromptEditorField/feature.client.js.map +1 -0
  98. package/dist/fields/PromptEditorField/feature.client.jsx +148 -0
  99. package/dist/fields/PromptEditorField/feature.server.d.ts +1 -0
  100. package/dist/fields/PromptEditorField/feature.server.js +30 -0
  101. package/dist/fields/PromptEditorField/feature.server.js.map +1 -0
  102. package/dist/fields/PromptField.d.ts +4 -0
  103. package/dist/fields/PromptField.js +18 -0
  104. package/dist/fields/PromptField.js.map +1 -0
  105. package/dist/fields/SelectField/SelectField.js +0 -1
  106. package/dist/fields/SelectField/SelectField.js.map +1 -1
  107. package/dist/fields/SelectField/SelectField.jsx +0 -1
  108. package/dist/index.d.ts +4 -3
  109. package/dist/index.js +4 -2
  110. package/dist/index.js.map +1 -1
  111. package/dist/libraries/handlebars/helpers.js +2 -2
  112. package/dist/libraries/handlebars/helpers.js.map +1 -1
  113. package/dist/libraries/handlebars/replacePlaceholders.js +5 -1
  114. package/dist/libraries/handlebars/replacePlaceholders.js.map +1 -1
  115. package/dist/payload-ai.d.ts +5 -19
  116. package/dist/plugin.js +17 -20
  117. package/dist/plugin.js.map +1 -1
  118. package/dist/providers/FieldProvider/FieldProvider.js +10 -19
  119. package/dist/providers/FieldProvider/FieldProvider.js.map +1 -1
  120. package/dist/providers/FieldProvider/FieldProvider.jsx +7 -17
  121. package/dist/providers/InstructionsProvider/InstructionsProvider.js +4 -1
  122. package/dist/providers/InstructionsProvider/InstructionsProvider.js.map +1 -1
  123. package/dist/providers/InstructionsProvider/InstructionsProvider.jsx +3 -0
  124. package/dist/translations/de.json +47 -0
  125. package/dist/translations/en.json +45 -2
  126. package/dist/translations/es.json +45 -2
  127. package/dist/translations/fa.json +45 -2
  128. package/dist/translations/fr.json +46 -3
  129. package/dist/translations/hi.json +47 -0
  130. package/dist/translations/index.d.ts +88 -26
  131. package/dist/translations/index.js +18 -32
  132. package/dist/translations/index.js.map +1 -1
  133. package/dist/translations/ja.json +47 -0
  134. package/dist/translations/nb.json +47 -0
  135. package/dist/translations/nl.json +47 -0
  136. package/dist/translations/pl.json +45 -2
  137. package/dist/translations/pt.json +47 -0
  138. package/dist/translations/ru.json +45 -2
  139. package/dist/translations/th.json +47 -0
  140. package/dist/translations/translation-schema.json +184 -11
  141. package/dist/translations/uk.json +45 -2
  142. package/dist/translations/zh.json +47 -0
  143. package/dist/types.d.ts +54 -28
  144. package/dist/types.js.map +1 -1
  145. package/dist/ui/Compose/Compose.js +42 -79
  146. package/dist/ui/Compose/Compose.js.map +1 -1
  147. package/dist/ui/Compose/Compose.jsx +32 -86
  148. package/dist/ui/Compose/ComposePlaceholder.js +1 -1
  149. package/dist/ui/Compose/ComposePlaceholder.js.map +1 -1
  150. package/dist/ui/Compose/ComposePlaceholder.jsx +1 -1
  151. package/dist/ui/Compose/{compose.module.css → compose.module.scss} +3 -5
  152. package/dist/ui/Compose/hooks/menu/Item.d.ts +1 -1
  153. package/dist/ui/Compose/hooks/menu/Item.js +7 -3
  154. package/dist/ui/Compose/hooks/menu/Item.js.map +1 -1
  155. package/dist/ui/Compose/hooks/menu/Item.jsx +11 -5
  156. package/dist/ui/Compose/hooks/menu/TranslateMenu.js +3 -1
  157. package/dist/ui/Compose/hooks/menu/TranslateMenu.js.map +1 -1
  158. package/dist/ui/Compose/hooks/menu/TranslateMenu.jsx +3 -1
  159. package/dist/ui/Compose/hooks/menu/items.d.ts +8 -8
  160. package/dist/ui/Compose/hooks/menu/itemsMap.d.ts +2 -1
  161. package/dist/ui/Compose/hooks/menu/itemsMap.js.map +1 -1
  162. package/dist/ui/Compose/hooks/menu/types.d.ts +21 -0
  163. package/dist/ui/Compose/hooks/menu/types.js +3 -0
  164. package/dist/ui/Compose/hooks/menu/types.js.map +1 -0
  165. package/dist/ui/Compose/hooks/menu/useMenu.d.ts +2 -2
  166. package/dist/ui/Compose/hooks/menu/useMenu.js +45 -23
  167. package/dist/ui/Compose/hooks/menu/useMenu.js.map +1 -1
  168. package/dist/ui/Compose/hooks/menu/useMenu.jsx +43 -23
  169. package/dist/ui/Compose/hooks/mergeGeneratedValue.d.ts +14 -0
  170. package/dist/ui/Compose/hooks/mergeGeneratedValue.js +38 -0
  171. package/dist/ui/Compose/hooks/mergeGeneratedValue.js.map +1 -0
  172. package/dist/ui/Compose/hooks/useGenerate.js +37 -12
  173. package/dist/ui/Compose/hooks/useGenerate.js.map +1 -1
  174. package/dist/ui/Compose/hooks/useGenerateUpload.js +66 -24
  175. package/dist/ui/Compose/hooks/useGenerateUpload.js.map +1 -1
  176. package/dist/ui/Compose/hooks/useStreamingUpdate.js +4 -4
  177. package/dist/ui/Compose/hooks/useStreamingUpdate.js.map +1 -1
  178. package/dist/ui/ConfigDashboard/configDashboard.module.css +94 -0
  179. package/dist/ui/ConfigDashboard/index.js +27 -92
  180. package/dist/ui/ConfigDashboard/index.js.map +1 -1
  181. package/dist/ui/ConfigDashboard/index.jsx +24 -77
  182. package/dist/ui/DynamicModelSelect/index.js +6 -27
  183. package/dist/ui/DynamicModelSelect/index.js.map +1 -1
  184. package/dist/ui/DynamicModelSelect/index.jsx +6 -29
  185. package/dist/ui/DynamicProviderSelect/index.js +6 -27
  186. package/dist/ui/DynamicProviderSelect/index.js.map +1 -1
  187. package/dist/ui/DynamicProviderSelect/index.jsx +6 -29
  188. package/dist/ui/DynamicVoiceSelect/index.js +34 -83
  189. package/dist/ui/DynamicVoiceSelect/index.js.map +1 -1
  190. package/dist/ui/DynamicVoiceSelect/index.jsx +16 -53
  191. package/dist/ui/GlobalProviderOptions/index.d.ts +2 -0
  192. package/dist/ui/GlobalProviderOptions/index.js +118 -0
  193. package/dist/ui/GlobalProviderOptions/index.js.map +1 -0
  194. package/dist/ui/GlobalProviderOptions/index.jsx +60 -0
  195. package/dist/ui/Icons/Icons.js +1 -1
  196. package/dist/ui/Icons/Icons.js.map +1 -1
  197. package/dist/ui/Icons/Icons.jsx +1 -1
  198. package/dist/ui/Icons/LottieAnimation.js +1 -1
  199. package/dist/ui/Icons/LottieAnimation.js.map +1 -1
  200. package/dist/ui/Icons/LottieAnimation.jsx +1 -1
  201. package/dist/ui/InstructionProviderOptions/ProviderOptionsTree.d.ts +12 -0
  202. package/dist/ui/InstructionProviderOptions/ProviderOptionsTree.js +166 -0
  203. package/dist/ui/InstructionProviderOptions/ProviderOptionsTree.js.map +1 -0
  204. package/dist/ui/InstructionProviderOptions/ProviderOptionsTree.jsx +83 -0
  205. package/dist/ui/InstructionProviderOptions/index.d.ts +2 -0
  206. package/dist/ui/InstructionProviderOptions/index.js +157 -0
  207. package/dist/ui/InstructionProviderOptions/index.js.map +1 -0
  208. package/dist/ui/InstructionProviderOptions/index.jsx +92 -0
  209. package/dist/ui/VoicesFetcher/index.js.map +1 -1
  210. package/dist/ui/hooks/useAISettings.d.ts +26 -0
  211. package/dist/ui/hooks/useAISettings.js +73 -0
  212. package/dist/ui/hooks/useAISettings.js.map +1 -0
  213. package/dist/ui/providerOptions/updateProviderOptionsValue.d.ts +6 -0
  214. package/dist/ui/providerOptions/updateProviderOptionsValue.js +50 -0
  215. package/dist/ui/providerOptions/updateProviderOptionsValue.js.map +1 -0
  216. package/dist/ui/shared/handleSelectChange.d.ts +5 -0
  217. package/dist/ui/shared/handleSelectChange.js +12 -0
  218. package/dist/ui/shared/handleSelectChange.js.map +1 -0
  219. package/dist/ui/shared/types.d.ts +11 -0
  220. package/dist/ui/shared/types.js +5 -0
  221. package/dist/ui/shared/types.js.map +1 -0
  222. package/dist/utilities/ai/resolveEffectiveInstructionSettings.d.ts +15 -0
  223. package/dist/utilities/ai/resolveEffectiveInstructionSettings.js +136 -0
  224. package/dist/utilities/ai/resolveEffectiveInstructionSettings.js.map +1 -0
  225. package/dist/{endpoints → utilities}/buildPromptUtils.js +14 -5
  226. package/dist/utilities/buildPromptUtils.js.map +1 -0
  227. package/dist/utilities/buildSmartPrompt.js +3 -3
  228. package/dist/utilities/buildSmartPrompt.js.map +1 -1
  229. package/dist/utilities/fields/fieldToJsonSchema.js.map +1 -0
  230. package/dist/utilities/fields/getFieldBySchemaPath.js.map +1 -0
  231. package/dist/utilities/fields/getFieldInfo.js.map +1 -0
  232. package/dist/utilities/{updateFieldsConfig.js → fields/updateFieldsConfig.js} +7 -2
  233. package/dist/utilities/fields/updateFieldsConfig.js.map +1 -0
  234. package/dist/utilities/images/extractImageData.js.map +1 -0
  235. package/dist/utilities/images/extractPromptAttachments.js.map +1 -0
  236. package/dist/utilities/{fetchImages.d.ts → images/fetchImages.d.ts} +1 -1
  237. package/dist/utilities/images/fetchImages.js +49 -0
  238. package/dist/utilities/images/fetchImages.js.map +1 -0
  239. package/dist/utilities/images/resolveImageReferences.js +183 -0
  240. package/dist/utilities/images/resolveImageReferences.js.map +1 -0
  241. package/dist/utilities/init/autoSetupProviders.d.ts +3 -0
  242. package/dist/utilities/init/autoSetupProviders.js +216 -0
  243. package/dist/utilities/init/autoSetupProviders.js.map +1 -0
  244. package/dist/utilities/lexical/editorSchemaValidator.js.map +1 -0
  245. package/dist/utilities/lexical/lexicalToHTML.js.map +1 -0
  246. package/dist/utilities/lexical/lexicalToPromptTemplate.d.ts +2 -0
  247. package/dist/utilities/lexical/lexicalToPromptTemplate.js +50 -0
  248. package/dist/utilities/lexical/lexicalToPromptTemplate.js.map +1 -0
  249. package/dist/utilities/lexical/setSafeLexicalState.js.map +1 -0
  250. package/dist/utilities/lexical/stringToLexicalJSON.d.ts +2 -0
  251. package/dist/utilities/lexical/stringToLexicalJSON.js +39 -0
  252. package/dist/utilities/lexical/stringToLexicalJSON.js.map +1 -0
  253. package/dist/utilities/sanitizeLog.d.ts +1 -0
  254. package/dist/utilities/sanitizeLog.js +39 -0
  255. package/dist/utilities/sanitizeLog.js.map +1 -0
  256. package/dist/utilities/seedProperties.js +37 -22
  257. package/dist/utilities/seedProperties.js.map +1 -1
  258. package/package.json +5 -2
  259. package/dist/ai/analyse.d.ts +0 -1
  260. package/dist/ai/analyse.js +0 -3
  261. package/dist/ai/analyse.js.map +0 -1
  262. package/dist/ai/index.d.ts +0 -11
  263. package/dist/ai/index.js +0 -25
  264. package/dist/ai/index.js.map +0 -1
  265. package/dist/ai/prompts.js.map +0 -1
  266. package/dist/ai/utils/filterEditorSchemaByNodes.js.map +0 -1
  267. package/dist/ai/utils/generateFileNameByPrompt.js.map +0 -1
  268. package/dist/ai/utils/isObjectSchema.js.map +0 -1
  269. package/dist/ai/utils/nodeToSchemaMap.js.map +0 -1
  270. package/dist/ai/utils/systemGenerate.js.map +0 -1
  271. package/dist/endpoints/buildPromptUtils.js.map +0 -1
  272. package/dist/endpoints/chat.d.ts +0 -4
  273. package/dist/fields/PromptEditorField/PromptEditorField.d.ts +0 -3
  274. package/dist/fields/PromptEditorField/PromptEditorField.js +0 -217
  275. package/dist/fields/PromptEditorField/PromptEditorField.js.map +0 -1
  276. package/dist/fields/PromptEditorField/PromptEditorField.jsx +0 -160
  277. package/dist/ui/AIConfigDashboard/index.d.ts +0 -2
  278. package/dist/ui/AIConfigDashboard/index.js +0 -224
  279. package/dist/ui/AIConfigDashboard/index.js.map +0 -1
  280. package/dist/ui/AIConfigDashboard/index.jsx +0 -175
  281. package/dist/ui/ProviderOptionsEditor/index.d.ts +0 -7
  282. package/dist/ui/ProviderOptionsEditor/index.js +0 -291
  283. package/dist/ui/ProviderOptionsEditor/index.js.map +0 -1
  284. package/dist/ui/ProviderOptionsEditor/index.jsx +0 -210
  285. package/dist/utilities/editorSchemaValidator.js.map +0 -1
  286. package/dist/utilities/extractImageData.js.map +0 -1
  287. package/dist/utilities/extractPromptAttachments.js.map +0 -1
  288. package/dist/utilities/fetchImages.js +0 -38
  289. package/dist/utilities/fetchImages.js.map +0 -1
  290. package/dist/utilities/fieldToJsonSchema.js.map +0 -1
  291. package/dist/utilities/getFieldBySchemaPath.js.map +0 -1
  292. package/dist/utilities/getFieldInfo.js.map +0 -1
  293. package/dist/utilities/getProviderOptionsFields.d.ts +0 -16
  294. package/dist/utilities/getProviderOptionsFields.js +0 -80
  295. package/dist/utilities/getProviderOptionsFields.js.map +0 -1
  296. package/dist/utilities/isPluginActivated.d.ts +0 -2
  297. package/dist/utilities/isPluginActivated.js +0 -5
  298. package/dist/utilities/isPluginActivated.js.map +0 -1
  299. package/dist/utilities/lexicalToHTML.js.map +0 -1
  300. package/dist/utilities/resolveImageReferences.js +0 -167
  301. package/dist/utilities/resolveImageReferences.js.map +0 -1
  302. package/dist/utilities/schemaConverter.d.ts +0 -3
  303. package/dist/utilities/schemaConverter.js +0 -93
  304. package/dist/utilities/schemaConverter.js.map +0 -1
  305. package/dist/utilities/setSafeLexicalState.js.map +0 -1
  306. package/dist/utilities/updateFieldsConfig.js.map +0 -1
  307. /package/dist/ai/{utils → utilities}/filterEditorSchemaByNodes.d.ts +0 -0
  308. /package/dist/ai/{utils → utilities}/filterEditorSchemaByNodes.js +0 -0
  309. /package/dist/ai/{utils → utilities}/generateFileNameByPrompt.d.ts +0 -0
  310. /package/dist/ai/{utils → utilities}/generateFileNameByPrompt.js +0 -0
  311. /package/dist/ai/{utils → utilities}/isObjectSchema.d.ts +0 -0
  312. /package/dist/ai/{utils → utilities}/isObjectSchema.js +0 -0
  313. /package/dist/ai/{utils → utilities}/nodeToSchemaMap.d.ts +0 -0
  314. /package/dist/ai/{utils → utilities}/nodeToSchemaMap.js +0 -0
  315. /package/dist/ai/{prompts.js → utilities/prompts.js} +0 -0
  316. /package/dist/ai/{utils → utilities}/systemGenerate.d.ts +0 -0
  317. /package/dist/ai/{utils → utilities}/systemGenerate.js +0 -0
  318. /package/dist/ui/Icons/{icons.module.css → icons.module.scss} +0 -0
  319. /package/dist/{endpoints → utilities}/buildPromptUtils.d.ts +0 -0
  320. /package/dist/utilities/{fieldToJsonSchema.d.ts → fields/fieldToJsonSchema.d.ts} +0 -0
  321. /package/dist/utilities/{fieldToJsonSchema.js → fields/fieldToJsonSchema.js} +0 -0
  322. /package/dist/utilities/{getFieldBySchemaPath.d.ts → fields/getFieldBySchemaPath.d.ts} +0 -0
  323. /package/dist/utilities/{getFieldBySchemaPath.js → fields/getFieldBySchemaPath.js} +0 -0
  324. /package/dist/utilities/{getFieldInfo.d.ts → fields/getFieldInfo.d.ts} +0 -0
  325. /package/dist/utilities/{getFieldInfo.js → fields/getFieldInfo.js} +0 -0
  326. /package/dist/utilities/{updateFieldsConfig.d.ts → fields/updateFieldsConfig.d.ts} +0 -0
  327. /package/dist/utilities/{extractImageData.d.ts → images/extractImageData.d.ts} +0 -0
  328. /package/dist/utilities/{extractImageData.js → images/extractImageData.js} +0 -0
  329. /package/dist/utilities/{extractPromptAttachments.d.ts → images/extractPromptAttachments.d.ts} +0 -0
  330. /package/dist/utilities/{extractPromptAttachments.js → images/extractPromptAttachments.js} +0 -0
  331. /package/dist/utilities/{resolveImageReferences.d.ts → images/resolveImageReferences.d.ts} +0 -0
  332. /package/dist/utilities/{editorSchemaValidator.d.ts → lexical/editorSchemaValidator.d.ts} +0 -0
  333. /package/dist/utilities/{editorSchemaValidator.js → lexical/editorSchemaValidator.js} +0 -0
  334. /package/dist/utilities/{lexicalToHTML.d.ts → lexical/lexicalToHTML.d.ts} +0 -0
  335. /package/dist/utilities/{lexicalToHTML.js → lexical/lexicalToHTML.js} +0 -0
  336. /package/dist/utilities/{setSafeLexicalState.d.ts → lexical/setSafeLexicalState.d.ts} +0 -0
  337. /package/dist/utilities/{setSafeLexicalState.js → lexical/setSafeLexicalState.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { jsonSchema, generateObject as sdkGenerateObject } from 'ai';
2
- import { extractPromptAttachments } from '../../utilities/extractPromptAttachments.js';
2
+ import { extractPromptAttachments } from '../../utilities/images/extractPromptAttachments.js';
3
3
  import { getLanguageModel } from '../providers/registry.js';
4
4
  function isZodSchema(schema) {
5
5
  return typeof schema === 'object' && schema !== null && '_def' in schema;
@@ -26,9 +26,6 @@ function isZodSchema(schema) {
26
26
  maxOutputTokens: maxTokens
27
27
  } : {}
28
28
  };
29
- if (providerOptions) {
30
- options.providerOptions = providerOptions;
31
- }
32
29
  return sdkGenerateObject(options);
33
30
  }
34
31
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ai/core/generateObject.ts"],"sourcesContent":["import { jsonSchema, generateObject as sdkGenerateObject } from 'ai'\n\nimport type { PayloadGenerateObjectArgs } from './types.js'\n\nimport { extractPromptAttachments } from '../../utilities/extractPromptAttachments.js'\nimport { getLanguageModel } from '../providers/registry.js'\n\nfunction isZodSchema(schema: unknown): boolean {\n return typeof schema === 'object' && schema !== null && '_def' in schema\n}\n\n/**\n * Generate structured output using AI SDK's generateObject\n * This is a thin wrapper that resolves the model from the registry\n * and passes everything directly to the AI SDK\n */\nexport async function generateObject(args: PayloadGenerateObjectArgs) {\n const {\n maxTokens,\n mode,\n model: modelId,\n payload,\n prompt,\n provider,\n providerOptions,\n schema,\n system,\n temperature,\n ...rest\n } = args\n\n // Extract attachments if needed (from existing utility)\n const processedPrompt = (rest as any).extractAttachments\n ? extractPromptAttachments(prompt)\n : prompt\n\n // Resolve model from registry\n const model = await getLanguageModel(payload, provider, modelId, providerOptions)\n\n // Pass directly to AI SDK with minimal transformation\n const options: Record<string, unknown> = {\n mode: mode || 'auto',\n model,\n prompt: processedPrompt,\n schema: schema ? (isZodSchema(schema) ? schema : jsonSchema(schema as any)) : undefined,\n system,\n temperature: temperature ?? 0.7,\n ...(maxTokens ? { maxOutputTokens: maxTokens } : {}),\n }\n\n if (providerOptions) {\n options.providerOptions = providerOptions\n }\n\n return sdkGenerateObject(options as Parameters<typeof sdkGenerateObject>[0])\n}\n"],"names":["jsonSchema","generateObject","sdkGenerateObject","extractPromptAttachments","getLanguageModel","isZodSchema","schema","args","maxTokens","mode","model","modelId","payload","prompt","provider","providerOptions","system","temperature","rest","processedPrompt","extractAttachments","options","undefined","maxOutputTokens"],"mappings":"AAAA,SAASA,UAAU,EAAEC,kBAAkBC,iBAAiB,QAAQ,KAAI;AAIpE,SAASC,wBAAwB,QAAQ,8CAA6C;AACtF,SAASC,gBAAgB,QAAQ,2BAA0B;AAE3D,SAASC,YAAYC,MAAe;IAClC,OAAO,OAAOA,WAAW,YAAYA,WAAW,QAAQ,UAAUA;AACpE;AAEA;;;;CAIC,GACD,OAAO,eAAeL,eAAeM,IAA+B;IAClE,MAAM,EACJC,SAAS,EACTC,IAAI,EACJC,OAAOC,OAAO,EACdC,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,eAAe,EACfT,MAAM,EACNU,MAAM,EACNC,WAAW,EACX,GAAGC,MACJ,GAAGX;IAEJ,wDAAwD;IACxD,MAAMY,kBAAkB,AAACD,KAAaE,kBAAkB,GACpDjB,yBAAyBU,UACzBA;IAEJ,8BAA8B;IAC9B,MAAMH,QAAQ,MAAMN,iBAAiBQ,SAASE,UAAUH,SAASI;IAEjE,sDAAsD;IACtD,MAAMM,UAAmC;QACvCZ,MAAMA,QAAQ;QACdC;QACAG,QAAQM;QACRb,QAAQA,SAAUD,YAAYC,UAAUA,SAASN,WAAWM,UAAkBgB;QAC9EN;QACAC,aAAaA,eAAe;QAC5B,GAAIT,YAAY;YAAEe,iBAAiBf;QAAU,IAAI,CAAC,CAAC;IACrD;IAEA,IAAIO,iBAAiB;QACnBM,QAAQN,eAAe,GAAGA;IAC5B;IAEA,OAAOb,kBAAkBmB;AAC3B"}
1
+ {"version":3,"sources":["../../../src/ai/core/generateObject.ts"],"sourcesContent":["import { jsonSchema, generateObject as sdkGenerateObject } from 'ai'\n\nimport type { PayloadGenerateObjectArgs } from './types.js'\n\nimport { extractPromptAttachments } from '../../utilities/images/extractPromptAttachments.js'\nimport { getLanguageModel } from '../providers/registry.js'\n\nfunction isZodSchema(schema: unknown): boolean {\n return typeof schema === 'object' && schema !== null && '_def' in schema\n}\n\n/**\n * Generate structured output using AI SDK's generateObject\n * This is a thin wrapper that resolves the model from the registry\n * and passes everything directly to the AI SDK\n */\nexport async function generateObject(args: PayloadGenerateObjectArgs) {\n const {\n maxTokens,\n mode,\n model: modelId,\n payload,\n prompt,\n provider,\n providerOptions,\n\n schema,\n system,\n temperature,\n ...rest\n } = args\n\n // Extract attachments if needed (from existing utility)\n const processedPrompt = (rest as any).extractAttachments\n ? extractPromptAttachments(prompt)\n : prompt\n\n // Resolve model from registry\n const model = await getLanguageModel(payload, provider, modelId, providerOptions)\n\n // Pass directly to AI SDK with minimal transformation\n const options: Record<string, unknown> = {\n mode: mode || 'auto',\n model,\n prompt: processedPrompt,\n schema: schema ? (isZodSchema(schema) ? schema : jsonSchema(schema as any)) : undefined,\n system,\n temperature: temperature ?? 0.7,\n ...(maxTokens ? { maxOutputTokens: maxTokens } : {}),\n }\n\n\n\n return sdkGenerateObject(options as Parameters<typeof sdkGenerateObject>[0])\n}\n"],"names":["jsonSchema","generateObject","sdkGenerateObject","extractPromptAttachments","getLanguageModel","isZodSchema","schema","args","maxTokens","mode","model","modelId","payload","prompt","provider","providerOptions","system","temperature","rest","processedPrompt","extractAttachments","options","undefined","maxOutputTokens"],"mappings":"AAAA,SAASA,UAAU,EAAEC,kBAAkBC,iBAAiB,QAAQ,KAAI;AAIpE,SAASC,wBAAwB,QAAQ,qDAAoD;AAC7F,SAASC,gBAAgB,QAAQ,2BAA0B;AAE3D,SAASC,YAAYC,MAAe;IAClC,OAAO,OAAOA,WAAW,YAAYA,WAAW,QAAQ,UAAUA;AACpE;AAEA;;;;CAIC,GACD,OAAO,eAAeL,eAAeM,IAA+B;IAClE,MAAM,EACJC,SAAS,EACTC,IAAI,EACJC,OAAOC,OAAO,EACdC,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,eAAe,EAEfT,MAAM,EACNU,MAAM,EACNC,WAAW,EACX,GAAGC,MACJ,GAAGX;IAEJ,wDAAwD;IACxD,MAAMY,kBAAkB,AAACD,KAAaE,kBAAkB,GACpDjB,yBAAyBU,UACzBA;IAEJ,8BAA8B;IAC9B,MAAMH,QAAQ,MAAMN,iBAAiBQ,SAASE,UAAUH,SAASI;IAEjE,sDAAsD;IACtD,MAAMM,UAAmC;QACvCZ,MAAMA,QAAQ;QACdC;QACAG,QAAQM;QACRb,QAAQA,SAAUD,YAAYC,UAAUA,SAASN,WAAWM,UAAkBgB;QAC9EN;QACAC,aAAaA,eAAe;QAC5B,GAAIT,YAAY;YAAEe,iBAAiBf;QAAU,IAAI,CAAC,CAAC;IACrD;IAIA,OAAON,kBAAkBmB;AAC3B"}
@@ -1,5 +1,5 @@
1
1
  import { generateText as sdkGenerateText } from 'ai';
2
- import { extractPromptAttachments } from '../../utilities/extractPromptAttachments.js';
2
+ import { extractPromptAttachments } from '../../utilities/images/extractPromptAttachments.js';
3
3
  import { getLanguageModel } from '../providers/registry.js';
4
4
  /**
5
5
  * Generate simple text using AI SDK's generateText
@@ -21,10 +21,6 @@ import { getLanguageModel } from '../providers/registry.js';
21
21
  maxOutputTokens: maxTokens
22
22
  } : {}
23
23
  };
24
- // Also pass providerOptions to generateText for per-call overrides if supported by SDK/Model
25
- if (providerOptions) {
26
- options.providerOptions = providerOptions;
27
- }
28
24
  return sdkGenerateText(options);
29
25
  }
30
26
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ai/core/generateText.ts"],"sourcesContent":["import { generateText as sdkGenerateText } from 'ai'\n\nimport type { PayloadGenerateTextArgs } from './types.js'\n\nimport { extractPromptAttachments } from '../../utilities/extractPromptAttachments.js'\nimport { getLanguageModel } from '../providers/registry.js'\n\n/**\n * Generate simple text using AI SDK's generateText\n * This is a thin wrapper that resolves the model from the registry\n * and passes everything directly to the AI SDK\n */\nexport async function generateText(args: PayloadGenerateTextArgs) {\n const { \n maxTokens, \n model: modelId, \n payload,\n prompt,\n provider,\n providerOptions,\n system,\n temperature,\n ...rest\n } = args\n \n // Extract attachments if needed\n const processedPrompt = (rest as any).extractAttachments \n ? extractPromptAttachments(prompt) \n : prompt\n \n // Resolve model from registry with provider options\n const model = await getLanguageModel(payload, provider, modelId, providerOptions)\n \n // Pass directly to AI SDK\n const options: Record<string, unknown> = {\n model,\n prompt: processedPrompt,\n system,\n temperature: temperature ?? 0.7,\n ...(maxTokens ? { maxOutputTokens: maxTokens } : {}),\n }\n\n // Also pass providerOptions to generateText for per-call overrides if supported by SDK/Model\n if (providerOptions) {\n options.providerOptions = providerOptions\n }\n\n return sdkGenerateText(options as Parameters<typeof sdkGenerateText>[0])\n}\n"],"names":["generateText","sdkGenerateText","extractPromptAttachments","getLanguageModel","args","maxTokens","model","modelId","payload","prompt","provider","providerOptions","system","temperature","rest","processedPrompt","extractAttachments","options","maxOutputTokens"],"mappings":"AAAA,SAASA,gBAAgBC,eAAe,QAAQ,KAAI;AAIpD,SAASC,wBAAwB,QAAQ,8CAA6C;AACtF,SAASC,gBAAgB,QAAQ,2BAA0B;AAE3D;;;;CAIC,GACD,OAAO,eAAeH,aAAaI,IAA6B;IAC9D,MAAM,EACJC,SAAS,EACTC,OAAOC,OAAO,EACdC,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,eAAe,EACfC,MAAM,EACNC,WAAW,EACX,GAAGC,MACJ,GAAGV;IAEJ,gCAAgC;IAChC,MAAMW,kBAAkB,AAACD,KAAaE,kBAAkB,GACpDd,yBAAyBO,UACzBA;IAEJ,oDAAoD;IACpD,MAAMH,QAAQ,MAAMH,iBAAiBK,SAASE,UAAUH,SAASI;IAEjE,0BAA0B;IAC1B,MAAMM,UAAmC;QACvCX;QACAG,QAAQM;QACRH;QACAC,aAAaA,eAAe;QAC5B,GAAIR,YAAY;YAAEa,iBAAiBb;QAAU,IAAI,CAAC,CAAC;IACrD;IAEA,6FAA6F;IAC7F,IAAIM,iBAAiB;QACnBM,QAAQN,eAAe,GAAGA;IAC5B;IAEA,OAAOV,gBAAgBgB;AACzB"}
1
+ {"version":3,"sources":["../../../src/ai/core/generateText.ts"],"sourcesContent":["import { generateText as sdkGenerateText } from 'ai'\n\nimport type { PayloadGenerateTextArgs } from './types.js'\n\nimport { extractPromptAttachments } from '../../utilities/images/extractPromptAttachments.js'\nimport { getLanguageModel } from '../providers/registry.js'\n\n/**\n * Generate simple text using AI SDK's generateText\n * This is a thin wrapper that resolves the model from the registry\n * and passes everything directly to the AI SDK\n */\nexport async function generateText(args: PayloadGenerateTextArgs) {\n const { \n maxTokens, \n model: modelId, \n payload,\n prompt,\n provider,\n providerOptions,\n\n system,\n temperature,\n ...rest\n } = args\n \n // Extract attachments if needed\n const processedPrompt = (rest as any).extractAttachments \n ? extractPromptAttachments(prompt) \n : prompt\n \n // Resolve model from registry with provider options\n const model = await getLanguageModel(payload, provider, modelId, providerOptions)\n \n // Pass directly to AI SDK\n const options: Record<string, unknown> = {\n model,\n prompt: processedPrompt,\n system,\n temperature: temperature ?? 0.7,\n ...(maxTokens ? { maxOutputTokens: maxTokens } : {}),\n }\n\n\n\n return sdkGenerateText(options as Parameters<typeof sdkGenerateText>[0])\n}\n"],"names":["generateText","sdkGenerateText","extractPromptAttachments","getLanguageModel","args","maxTokens","model","modelId","payload","prompt","provider","providerOptions","system","temperature","rest","processedPrompt","extractAttachments","options","maxOutputTokens"],"mappings":"AAAA,SAASA,gBAAgBC,eAAe,QAAQ,KAAI;AAIpD,SAASC,wBAAwB,QAAQ,qDAAoD;AAC7F,SAASC,gBAAgB,QAAQ,2BAA0B;AAE3D;;;;CAIC,GACD,OAAO,eAAeH,aAAaI,IAA6B;IAC9D,MAAM,EACJC,SAAS,EACTC,OAAOC,OAAO,EACdC,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,eAAe,EAEfC,MAAM,EACNC,WAAW,EACX,GAAGC,MACJ,GAAGV;IAEJ,gCAAgC;IAChC,MAAMW,kBAAkB,AAACD,KAAaE,kBAAkB,GACpDd,yBAAyBO,UACzBA;IAEJ,oDAAoD;IACpD,MAAMH,QAAQ,MAAMH,iBAAiBK,SAASE,UAAUH,SAASI;IAEjE,0BAA0B;IAC1B,MAAMM,UAAmC;QACvCX;QACAG,QAAQM;QACRH;QACAC,aAAaA,eAAe;QAC5B,GAAIR,YAAY;YAAEa,iBAAiBb;QAAU,IAAI,CAAC,CAAC;IACrD;IAIA,OAAOJ,gBAAgBgB;AACzB"}
@@ -40,10 +40,7 @@ import { generateSpeech } from './speech/index.js';
40
40
  case 'speech':
41
41
  return generateSpeech(args);
42
42
  case 'video':
43
- throw Error(`Not implemented: ${mediaType}`);
44
- // return generateVideo(args)
45
- default:
46
- throw new Error(`Unsupported media type: ${mediaType}`);
43
+ throw new Error('Video generation is not yet implemented');
47
44
  }
48
45
  }
49
46
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/ai/core/media/generateMedia.ts"],"sourcesContent":["import type { PayloadGenerateMediaArgs } from '../types.js'\nimport type { MediaResult } from './types.js'\n\nimport { getProviderRegistry } from '../../providers/registry.js'\nimport { generateImage } from './image/index.js'\nimport { generateSpeech } from './speech/index.js'\nimport { generateVideo } from './video/index.js'\n\n/**\n * Detect media type from provider and model configuration\n */\nasync function detectMediaType(\n args: PayloadGenerateMediaArgs,\n): Promise<'image' | 'speech' | 'video'> {\n const { model: modelId, payload, provider } = args\n\n if (!provider) {\n throw new Error('Provider is required for media generation')\n }\n\n const registry = await getProviderRegistry(payload)\n const providerConfig = registry[provider]\n\n if (!providerConfig) {\n throw new Error(`Provider ${provider} not found in registry`)\n }\n\n // Check for video (Fal + video use case)\n const isVideo =\n providerConfig.id === 'fal' &&\n providerConfig.models?.find((m) => m.id === modelId)?.useCase === 'video'\n\n if (isVideo) {\n return 'video'\n }\n\n // Check for speech (TTS)\n const isTTS =\n providerConfig.id === 'elevenlabs' ||\n (providerConfig.id === 'openai' && modelId?.startsWith('tts'))\n\n if (isTTS) {\n return 'speech'\n }\n\n // Default to image\n return 'image'\n}\n\n/**\n * Unified media generation handler\n * Routes to appropriate specialized handler based on media type\n */\nexport async function generateMedia(args: PayloadGenerateMediaArgs): Promise<MediaResult> {\n if (!args.prompt || !args.prompt.trim()) {\n throw new Error('Prompt is required for media generation')\n }\n\n const mediaType = await detectMediaType(args)\n\n switch (mediaType) {\n case 'image':\n return generateImage(args)\n case 'speech':\n return generateSpeech(args)\n case 'video':\n throw Error(`Not implemented: ${mediaType}`)\n // return generateVideo(args)\n default:\n throw new Error(`Unsupported media type: ${mediaType}`)\n }\n}\n"],"names":["getProviderRegistry","generateImage","generateSpeech","detectMediaType","args","model","modelId","payload","provider","Error","registry","providerConfig","isVideo","id","models","find","m","useCase","isTTS","startsWith","generateMedia","prompt","trim","mediaType"],"mappings":"AAGA,SAASA,mBAAmB,QAAQ,8BAA6B;AACjE,SAASC,aAAa,QAAQ,mBAAkB;AAChD,SAASC,cAAc,QAAQ,oBAAmB;AAGlD;;CAEC,GACD,eAAeC,gBACbC,IAA8B;IAE9B,MAAM,EAAEC,OAAOC,OAAO,EAAEC,OAAO,EAAEC,QAAQ,EAAE,GAAGJ;IAE9C,IAAI,CAACI,UAAU;QACb,MAAM,IAAIC,MAAM;IAClB;IAEA,MAAMC,WAAW,MAAMV,oBAAoBO;IAC3C,MAAMI,iBAAiBD,QAAQ,CAACF,SAAS;IAEzC,IAAI,CAACG,gBAAgB;QACnB,MAAM,IAAIF,MAAM,CAAC,SAAS,EAAED,SAAS,sBAAsB,CAAC;IAC9D;IAEA,yCAAyC;IACzC,MAAMI,UACJD,eAAeE,EAAE,KAAK,SACtBF,eAAeG,MAAM,EAAEC,KAAK,CAACC,IAAMA,EAAEH,EAAE,KAAKP,UAAUW,YAAY;IAEpE,IAAIL,SAAS;QACX,OAAO;IACT;IAEA,yBAAyB;IACzB,MAAMM,QACJP,eAAeE,EAAE,KAAK,gBACrBF,eAAeE,EAAE,KAAK,YAAYP,SAASa,WAAW;IAEzD,IAAID,OAAO;QACT,OAAO;IACT;IAEA,mBAAmB;IACnB,OAAO;AACT;AAEA;;;CAGC,GACD,OAAO,eAAeE,cAAchB,IAA8B;IAChE,IAAI,CAACA,KAAKiB,MAAM,IAAI,CAACjB,KAAKiB,MAAM,CAACC,IAAI,IAAI;QACvC,MAAM,IAAIb,MAAM;IAClB;IAEA,MAAMc,YAAY,MAAMpB,gBAAgBC;IAExC,OAAQmB;QACN,KAAK;YACH,OAAOtB,cAAcG;QACvB,KAAK;YACH,OAAOF,eAAeE;QACxB,KAAK;YACH,MAAMK,MAAM,CAAC,iBAAiB,EAAEc,UAAU,CAAC;QAC3C,6BAA6B;QAC/B;YACE,MAAM,IAAId,MAAM,CAAC,wBAAwB,EAAEc,UAAU,CAAC;IAC1D;AACF"}
1
+ {"version":3,"sources":["../../../../src/ai/core/media/generateMedia.ts"],"sourcesContent":["import type { PayloadGenerateMediaArgs } from '../types.js'\nimport type { MediaResult } from './types.js'\n\nimport { getProviderRegistry } from '../../providers/registry.js'\nimport { generateImage } from './image/index.js'\nimport { generateSpeech } from './speech/index.js'\n\n/**\n * Detect media type from provider and model configuration\n */\nasync function detectMediaType(\n args: PayloadGenerateMediaArgs,\n): Promise<'image' | 'speech' | 'video'> {\n const { model: modelId, payload, provider } = args\n\n if (!provider) {\n throw new Error('Provider is required for media generation')\n }\n\n const registry = await getProviderRegistry(payload)\n const providerConfig = registry[provider]\n\n if (!providerConfig) {\n throw new Error(`Provider ${provider} not found in registry`)\n }\n\n // Check for video (Fal + video use case)\n const isVideo =\n providerConfig.id === 'fal' &&\n providerConfig.models?.find((m) => m.id === modelId)?.useCase === 'video'\n\n if (isVideo) {\n return 'video'\n }\n\n // Check for speech (TTS)\n const isTTS =\n providerConfig.id === 'elevenlabs' ||\n (providerConfig.id === 'openai' && modelId?.startsWith('tts'))\n\n if (isTTS) {\n return 'speech'\n }\n\n // Default to image\n return 'image'\n}\n\n/**\n * Unified media generation handler\n * Routes to appropriate specialized handler based on media type\n */\nexport async function generateMedia(args: PayloadGenerateMediaArgs): Promise<MediaResult> {\n if (!args.prompt || !args.prompt.trim()) {\n throw new Error('Prompt is required for media generation')\n }\n\n const mediaType = await detectMediaType(args)\n\n switch (mediaType) {\n case 'image':\n return generateImage(args)\n case 'speech':\n return generateSpeech(args)\n case 'video':\n throw new Error('Video generation is not yet implemented')\n }\n}\n"],"names":["getProviderRegistry","generateImage","generateSpeech","detectMediaType","args","model","modelId","payload","provider","Error","registry","providerConfig","isVideo","id","models","find","m","useCase","isTTS","startsWith","generateMedia","prompt","trim","mediaType"],"mappings":"AAGA,SAASA,mBAAmB,QAAQ,8BAA6B;AACjE,SAASC,aAAa,QAAQ,mBAAkB;AAChD,SAASC,cAAc,QAAQ,oBAAmB;AAElD;;CAEC,GACD,eAAeC,gBACbC,IAA8B;IAE9B,MAAM,EAAEC,OAAOC,OAAO,EAAEC,OAAO,EAAEC,QAAQ,EAAE,GAAGJ;IAE9C,IAAI,CAACI,UAAU;QACb,MAAM,IAAIC,MAAM;IAClB;IAEA,MAAMC,WAAW,MAAMV,oBAAoBO;IAC3C,MAAMI,iBAAiBD,QAAQ,CAACF,SAAS;IAEzC,IAAI,CAACG,gBAAgB;QACnB,MAAM,IAAIF,MAAM,CAAC,SAAS,EAAED,SAAS,sBAAsB,CAAC;IAC9D;IAEA,yCAAyC;IACzC,MAAMI,UACJD,eAAeE,EAAE,KAAK,SACtBF,eAAeG,MAAM,EAAEC,KAAK,CAACC,IAAMA,EAAEH,EAAE,KAAKP,UAAUW,YAAY;IAEpE,IAAIL,SAAS;QACX,OAAO;IACT;IAEA,yBAAyB;IACzB,MAAMM,QACJP,eAAeE,EAAE,KAAK,gBACrBF,eAAeE,EAAE,KAAK,YAAYP,SAASa,WAAW;IAEzD,IAAID,OAAO;QACT,OAAO;IACT;IAEA,mBAAmB;IACnB,OAAO;AACT;AAEA;;;CAGC,GACD,OAAO,eAAeE,cAAchB,IAA8B;IAChE,IAAI,CAACA,KAAKiB,MAAM,IAAI,CAACjB,KAAKiB,MAAM,CAACC,IAAI,IAAI;QACvC,MAAM,IAAIb,MAAM;IAClB;IAEA,MAAMc,YAAY,MAAMpB,gBAAgBC;IAExC,OAAQmB;QACN,KAAK;YACH,OAAOtB,cAAcG;QACvB,KAAK;YACH,OAAOF,eAAeE;QACxB,KAAK;YACH,MAAM,IAAIK,MAAM;IACpB;AACF"}
@@ -5,7 +5,7 @@ import { generateStandardImage } from './handlers/standard.js';
5
5
  * Main image generation handler
6
6
  * Routes to appropriate handler based on model capabilities
7
7
  */ export async function generateImage(args) {
8
- const { model: modelId, payload, provider } = args;
8
+ const { model: modelId, payload, provider, providerOptions } = args;
9
9
  // Get provider registry and model configuration
10
10
  const registry = await getProviderRegistry(payload);
11
11
  const providerConfig = registry[provider || ''];
@@ -16,22 +16,12 @@ import { generateStandardImage } from './handlers/standard.js';
16
16
  // Determine if this is a multimodal text-to-image model
17
17
  // It must support both TEXT and IMAGE modalities (or at least TEXT) to be treated as a language model
18
18
  const isMultimodalText = modelConfig?.responseModalities?.includes('IMAGE') && modelConfig?.responseModalities?.includes('TEXT');
19
- // Merge provider's default image options with instruction-level overrides
20
- const mergedProviderOptions = {
21
- ...providerConfig.options?.image || {},
22
- ...args.providerOptions || {}
23
- };
24
19
  // Get appropriate model instance
25
- const model = await getImageModel(payload, provider, modelId, mergedProviderOptions, isMultimodalText);
26
- // Pass merged options to handlers
27
- const argsWithMergedOptions = {
28
- ...args,
29
- providerOptions: mergedProviderOptions
30
- };
20
+ const model = await getImageModel(payload, provider, modelId, isMultimodalText, providerOptions);
31
21
  if (isMultimodalText) {
32
- return generateMultimodalImage(model, argsWithMergedOptions);
22
+ return generateMultimodalImage(model, args);
33
23
  }
34
- return generateStandardImage(model, argsWithMergedOptions);
24
+ return generateStandardImage(model, args);
35
25
  }
36
26
 
37
27
  //# sourceMappingURL=generateImage.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/ai/core/media/image/generateImage.ts"],"sourcesContent":["import type { ImageModel, LanguageModel } from 'ai'\n\nimport type { ImageGenerationArgs, MediaResult } from '../types.js'\n\nimport { getImageModel, getProviderRegistry } from '../../../providers/registry.js'\nimport { generateMultimodalImage } from './handlers/multimodal.js'\nimport { generateStandardImage } from './handlers/standard.js'\n\n/**\n * Main image generation handler\n * Routes to appropriate handler based on model capabilities\n */\nexport async function generateImage(args: ImageGenerationArgs): Promise<MediaResult> {\n const { model: modelId, payload, provider } = args\n // Get provider registry and model configuration\n const registry = await getProviderRegistry(payload)\n const providerConfig = registry[provider || '']\n\n if (!providerConfig) {\n throw new Error(`Provider ${provider} not found in registry`)\n }\n\n const modelConfig = providerConfig.models?.find((m) => m.id === modelId)\n\n // Determine if this is a multimodal text-to-image model\n // It must support both TEXT and IMAGE modalities (or at least TEXT) to be treated as a language model\n const isMultimodalText =\n modelConfig?.responseModalities?.includes('IMAGE') &&\n modelConfig?.responseModalities?.includes('TEXT')\n\n // Merge provider's default image options with instruction-level overrides\n const mergedProviderOptions = {\n ...(providerConfig.options?.image || {}),\n ...(args.providerOptions || {}),\n }\n\n // Get appropriate model instance\n const model = await getImageModel(\n payload,\n provider,\n modelId,\n mergedProviderOptions,\n isMultimodalText,\n )\n // Pass merged options to handlers\n const argsWithMergedOptions = { ...args, providerOptions: mergedProviderOptions }\n\n if (isMultimodalText) {\n return generateMultimodalImage(model as LanguageModel, argsWithMergedOptions)\n }\n\n return generateStandardImage(model as ImageModel, argsWithMergedOptions)\n}\n"],"names":["getImageModel","getProviderRegistry","generateMultimodalImage","generateStandardImage","generateImage","args","model","modelId","payload","provider","registry","providerConfig","Error","modelConfig","models","find","m","id","isMultimodalText","responseModalities","includes","mergedProviderOptions","options","image","providerOptions","argsWithMergedOptions"],"mappings":"AAIA,SAASA,aAAa,EAAEC,mBAAmB,QAAQ,iCAAgC;AACnF,SAASC,uBAAuB,QAAQ,2BAA0B;AAClE,SAASC,qBAAqB,QAAQ,yBAAwB;AAE9D;;;CAGC,GACD,OAAO,eAAeC,cAAcC,IAAyB;IAC3D,MAAM,EAAEC,OAAOC,OAAO,EAAEC,OAAO,EAAEC,QAAQ,EAAE,GAAGJ;IAC9C,gDAAgD;IAChD,MAAMK,WAAW,MAAMT,oBAAoBO;IAC3C,MAAMG,iBAAiBD,QAAQ,CAACD,YAAY,GAAG;IAE/C,IAAI,CAACE,gBAAgB;QACnB,MAAM,IAAIC,MAAM,CAAC,SAAS,EAAEH,SAAS,sBAAsB,CAAC;IAC9D;IAEA,MAAMI,cAAcF,eAAeG,MAAM,EAAEC,KAAK,CAACC,IAAMA,EAAEC,EAAE,KAAKV;IAEhE,wDAAwD;IACxD,sGAAsG;IACtG,MAAMW,mBACJL,aAAaM,oBAAoBC,SAAS,YAC1CP,aAAaM,oBAAoBC,SAAS;IAE5C,0EAA0E;IAC1E,MAAMC,wBAAwB;QAC5B,GAAIV,eAAeW,OAAO,EAAEC,SAAS,CAAC,CAAC;QACvC,GAAIlB,KAAKmB,eAAe,IAAI,CAAC,CAAC;IAChC;IAEA,iCAAiC;IACjC,MAAMlB,QAAQ,MAAMN,cAClBQ,SACAC,UACAF,SACAc,uBACAH;IAEF,kCAAkC;IAClC,MAAMO,wBAAwB;QAAE,GAAGpB,IAAI;QAAEmB,iBAAiBH;IAAsB;IAEhF,IAAIH,kBAAkB;QACpB,OAAOhB,wBAAwBI,OAAwBmB;IACzD;IAEA,OAAOtB,sBAAsBG,OAAqBmB;AACpD"}
1
+ {"version":3,"sources":["../../../../../src/ai/core/media/image/generateImage.ts"],"sourcesContent":["import type { ImageModel, LanguageModel } from 'ai'\n\nimport type { ImageGenerationArgs, MediaResult } from '../types.js'\n\nimport { getImageModel, getProviderRegistry } from '../../../providers/registry.js'\nimport { generateMultimodalImage } from './handlers/multimodal.js'\nimport { generateStandardImage } from './handlers/standard.js'\n\n/**\n * Main image generation handler\n * Routes to appropriate handler based on model capabilities\n */\nexport async function generateImage(args: ImageGenerationArgs): Promise<MediaResult> {\n const { model: modelId, payload, provider, providerOptions } = args\n // Get provider registry and model configuration\n const registry = await getProviderRegistry(payload)\n const providerConfig = registry[provider || '']\n\n if (!providerConfig) {\n throw new Error(`Provider ${provider} not found in registry`)\n }\n\n const modelConfig = providerConfig.models?.find((m) => m.id === modelId)\n\n // Determine if this is a multimodal text-to-image model\n // It must support both TEXT and IMAGE modalities (or at least TEXT) to be treated as a language model\n const isMultimodalText =\n modelConfig?.responseModalities?.includes('IMAGE') &&\n modelConfig?.responseModalities?.includes('TEXT')\n\n // Get appropriate model instance\n const model = await getImageModel(\n payload,\n provider,\n modelId,\n isMultimodalText,\n providerOptions,\n )\n if (isMultimodalText) {\n return generateMultimodalImage(model as LanguageModel, args)\n }\n\n return generateStandardImage(model as ImageModel, args)\n}\n"],"names":["getImageModel","getProviderRegistry","generateMultimodalImage","generateStandardImage","generateImage","args","model","modelId","payload","provider","providerOptions","registry","providerConfig","Error","modelConfig","models","find","m","id","isMultimodalText","responseModalities","includes"],"mappings":"AAIA,SAASA,aAAa,EAAEC,mBAAmB,QAAQ,iCAAgC;AACnF,SAASC,uBAAuB,QAAQ,2BAA0B;AAClE,SAASC,qBAAqB,QAAQ,yBAAwB;AAE9D;;;CAGC,GACD,OAAO,eAAeC,cAAcC,IAAyB;IAC3D,MAAM,EAAEC,OAAOC,OAAO,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,eAAe,EAAE,GAAGL;IAC/D,gDAAgD;IAChD,MAAMM,WAAW,MAAMV,oBAAoBO;IAC3C,MAAMI,iBAAiBD,QAAQ,CAACF,YAAY,GAAG;IAE/C,IAAI,CAACG,gBAAgB;QACnB,MAAM,IAAIC,MAAM,CAAC,SAAS,EAAEJ,SAAS,sBAAsB,CAAC;IAC9D;IAEA,MAAMK,cAAcF,eAAeG,MAAM,EAAEC,KAAK,CAACC,IAAMA,EAAEC,EAAE,KAAKX;IAEhE,wDAAwD;IACxD,sGAAsG;IACtG,MAAMY,mBACJL,aAAaM,oBAAoBC,SAAS,YAC1CP,aAAaM,oBAAoBC,SAAS;IAE5C,iCAAiC;IACjC,MAAMf,QAAQ,MAAMN,cAClBQ,SACAC,UACAF,SACAY,kBACAT;IAEF,IAAIS,kBAAkB;QACpB,OAAOjB,wBAAwBI,OAAwBD;IACzD;IAEA,OAAOF,sBAAsBG,OAAqBD;AACpD"}
@@ -1,32 +1,18 @@
1
1
  import { generateText } from 'ai';
2
+ import { toAISDKProviderOptions } from '../../../../providers/registry.js';
2
3
  import { convertToBuffer, getExtensionFromMimeType } from '../../utils.js';
3
4
  /**
4
5
  * Handle multimodal text-to-image generation (e.g., Gemini Nano Banana)
5
6
  * Uses generateText with image response modalities
6
7
  */ export async function generateMultimodalImage(model, args) {
7
- const { images = [], prompt, providerOptions = {} } = args;
8
- // Build Google-specific options with required defaults
9
- const googleOptions = {
10
- imageConfig: {
11
- aspectRatio: args.aspectRatio || providerOptions?.aspectRatio || '16:9',
12
- ...providerOptions?.personGeneration && {
13
- personGeneration: providerOptions.personGeneration
14
- },
15
- ...providerOptions?.addWatermark !== undefined && {
16
- addWatermark: providerOptions.addWatermark
17
- }
18
- },
19
- responseModalities: [
20
- 'IMAGE',
21
- 'TEXT'
22
- ]
23
- };
8
+ const { images = [], prompt, provider, providerOptions } = args;
9
+ const aiSdkProviderOptions = toAISDKProviderOptions({
10
+ providerId: provider,
11
+ settingsOverride: providerOptions
12
+ });
24
13
  const result = await generateText({
25
14
  model,
26
- // onStepFinish: (step) => {
27
- // console.log('step finish: ', step.files)
28
- // console.log('step finish: ', step.response)
29
- // },
15
+ providerOptions: aiSdkProviderOptions,
30
16
  prompt: [
31
17
  {
32
18
  content: [
@@ -38,10 +24,7 @@ import { convertToBuffer, getExtensionFromMimeType } from '../../utils.js';
38
24
  ],
39
25
  role: 'user'
40
26
  }
41
- ],
42
- providerOptions: {
43
- google: googleOptions
44
- }
27
+ ]
45
28
  });
46
29
  // Extract images from result.files
47
30
  const resultImages = result.files?.filter((f)=>f.mediaType?.startsWith('image/')) || [];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/ai/core/media/image/handlers/multimodal.ts"],"sourcesContent":["import { generateText, type LanguageModel, ModelMessage } from 'ai'\n\nimport type { ImageGenerationArgs, MediaResult, MultimodalImageFile } from '../../types.js'\n\nimport { convertToBuffer, getExtensionFromMimeType } from '../../utils.js'\n\n/**\n * Handle multimodal text-to-image generation (e.g., Gemini Nano Banana)\n * Uses generateText with image response modalities\n */\nexport async function generateMultimodalImage(\n model: LanguageModel,\n args: ImageGenerationArgs,\n): Promise<MediaResult> {\n const { images = [], prompt, providerOptions = {} } = args\n\n // Build Google-specific options with required defaults\n const googleOptions = {\n imageConfig: {\n aspectRatio: args.aspectRatio || providerOptions?.aspectRatio || '16:9',\n ...(providerOptions?.personGeneration && { personGeneration: providerOptions.personGeneration }),\n ...(providerOptions?.addWatermark !== undefined && { addWatermark: providerOptions.addWatermark }),\n },\n responseModalities: ['IMAGE', 'TEXT'],\n }\n \n const result = await generateText({\n model,\n // onStepFinish: (step) => {\n // console.log('step finish: ', step.files)\n // console.log('step finish: ', step.response)\n // },\n prompt: [\n {\n content: [{ type: 'text', text: prompt }, ...images],\n role: 'user',\n },\n ],\n providerOptions: {\n google: googleOptions,\n },\n })\n\n // Extract images from result.files\n const resultImages = (result.files?.filter((f: MultimodalImageFile) =>\n f.mediaType?.startsWith('image/'),\n ) || []) as MultimodalImageFile[]\n\n if (resultImages.length === 0) {\n // Check if Google returned a specific error message\n const responseBody = result.response?.body as { candidates?: Array<{ finishMessage?: string; finishReason?: string }> } | undefined\n const candidate = responseBody?.candidates?.[0]\n \n if (candidate?.finishMessage) {\n throw new Error(`Image generation failed: ${candidate.finishMessage}`)\n }\n if (candidate?.finishReason && candidate.finishReason !== 'STOP') {\n throw new Error(`Image generation failed with reason: ${candidate.finishReason}`)\n }\n \n throw new Error('No images returned from the model. The model may have generated only text.')\n }\n\n const files = resultImages.map((image) => {\n const mimeType = image.mediaType || 'image/png'\n const imageData = image.base64Data || image.uint8Array\n\n if (!imageData) {\n throw new Error('Image data is missing from the response.')\n }\n\n const buffer = convertToBuffer(imageData)\n const extension = getExtensionFromMimeType(mimeType)\n\n return {\n name: `generated.${extension}`,\n data: buffer,\n mimetype: mimeType,\n size: buffer.byteLength,\n }\n })\n\n return {\n files,\n }\n}\n"],"names":["generateText","convertToBuffer","getExtensionFromMimeType","generateMultimodalImage","model","args","images","prompt","providerOptions","googleOptions","imageConfig","aspectRatio","personGeneration","addWatermark","undefined","responseModalities","result","content","type","text","role","google","resultImages","files","filter","f","mediaType","startsWith","length","responseBody","response","body","candidate","candidates","finishMessage","Error","finishReason","map","image","mimeType","imageData","base64Data","uint8Array","buffer","extension","name","data","mimetype","size","byteLength"],"mappings":"AAAA,SAASA,YAAY,QAA0C,KAAI;AAInE,SAASC,eAAe,EAAEC,wBAAwB,QAAQ,iBAAgB;AAE1E;;;CAGC,GACD,OAAO,eAAeC,wBACpBC,KAAoB,EACpBC,IAAyB;IAEzB,MAAM,EAAEC,SAAS,EAAE,EAAEC,MAAM,EAAEC,kBAAkB,CAAC,CAAC,EAAE,GAAGH;IAEtD,uDAAuD;IACvD,MAAMI,gBAAgB;QACpBC,aAAa;YACXC,aAAaN,KAAKM,WAAW,IAAIH,iBAAiBG,eAAe;YACjE,GAAIH,iBAAiBI,oBAAoB;gBAAEA,kBAAkBJ,gBAAgBI,gBAAgB;YAAC,CAAC;YAC/F,GAAIJ,iBAAiBK,iBAAiBC,aAAa;gBAAED,cAAcL,gBAAgBK,YAAY;YAAC,CAAC;QACnG;QACAE,oBAAoB;YAAC;YAAS;SAAO;IACvC;IAEA,MAAMC,SAAS,MAAMhB,aAAa;QAChCI;QACA,4BAA4B;QAC5B,6CAA6C;QAC7C,gDAAgD;QAChD,KAAK;QACLG,QAAQ;YACN;gBACEU,SAAS;oBAAC;wBAAEC,MAAM;wBAAQC,MAAMZ;oBAAO;uBAAMD;iBAAO;gBACpDc,MAAM;YACR;SACD;QACDZ,iBAAiB;YACfa,QAAQZ;QACV;IACF;IAEA,mCAAmC;IACnC,MAAMa,eAAgBN,OAAOO,KAAK,EAAEC,OAAO,CAACC,IAC1CA,EAAEC,SAAS,EAAEC,WAAW,cACrB,EAAE;IAEP,IAAIL,aAAaM,MAAM,KAAK,GAAG;QAC7B,oDAAoD;QACpD,MAAMC,eAAeb,OAAOc,QAAQ,EAAEC;QACtC,MAAMC,YAAYH,cAAcI,YAAY,CAAC,EAAE;QAE/C,IAAID,WAAWE,eAAe;YAC5B,MAAM,IAAIC,MAAM,CAAC,yBAAyB,EAAEH,UAAUE,aAAa,CAAC,CAAC;QACvE;QACA,IAAIF,WAAWI,gBAAgBJ,UAAUI,YAAY,KAAK,QAAQ;YAChE,MAAM,IAAID,MAAM,CAAC,qCAAqC,EAAEH,UAAUI,YAAY,CAAC,CAAC;QAClF;QAEA,MAAM,IAAID,MAAM;IAClB;IAEA,MAAMZ,QAAQD,aAAae,GAAG,CAAC,CAACC;QAC9B,MAAMC,WAAWD,MAAMZ,SAAS,IAAI;QACpC,MAAMc,YAAYF,MAAMG,UAAU,IAAIH,MAAMI,UAAU;QAEtD,IAAI,CAACF,WAAW;YACd,MAAM,IAAIL,MAAM;QAClB;QAEA,MAAMQ,SAAS1C,gBAAgBuC;QAC/B,MAAMI,YAAY1C,yBAAyBqC;QAE3C,OAAO;YACLM,MAAM,CAAC,UAAU,EAAED,UAAU,CAAC;YAC9BE,MAAMH;YACNI,UAAUR;YACVS,MAAML,OAAOM,UAAU;QACzB;IACF;IAEA,OAAO;QACL1B;IACF;AACF"}
1
+ {"version":3,"sources":["../../../../../../src/ai/core/media/image/handlers/multimodal.ts"],"sourcesContent":["import { generateText, type LanguageModel } from 'ai'\n\nimport type { ImageGenerationArgs, MediaResult, MultimodalImageFile } from '../../types.js'\n\nimport { toAISDKProviderOptions } from '../../../../providers/registry.js'\nimport { convertToBuffer, getExtensionFromMimeType } from '../../utils.js'\n\n/**\n * Handle multimodal text-to-image generation (e.g., Gemini Nano Banana)\n * Uses generateText with image response modalities\n */\nexport async function generateMultimodalImage(\n model: LanguageModel,\n args: ImageGenerationArgs,\n): Promise<MediaResult> {\n const { images = [], prompt, provider, providerOptions } = args\n\n const aiSdkProviderOptions = toAISDKProviderOptions({\n providerId: provider,\n settingsOverride: providerOptions,\n })\n\n const result = await generateText({\n model,\n providerOptions: aiSdkProviderOptions,\n prompt: [\n {\n content: [{ type: 'text', text: prompt }, ...images],\n role: 'user',\n },\n ],\n })\n\n // Extract images from result.files\n const resultImages = (result.files?.filter((f: MultimodalImageFile) =>\n f.mediaType?.startsWith('image/'),\n ) || []) as MultimodalImageFile[]\n\n if (resultImages.length === 0) {\n // Check if Google returned a specific error message\n const responseBody = result.response?.body as\n | { candidates?: Array<{ finishMessage?: string; finishReason?: string }> }\n | undefined\n const candidate = responseBody?.candidates?.[0]\n\n if (candidate?.finishMessage) {\n throw new Error(`Image generation failed: ${candidate.finishMessage}`)\n }\n if (candidate?.finishReason && candidate.finishReason !== 'STOP') {\n throw new Error(`Image generation failed with reason: ${candidate.finishReason}`)\n }\n\n throw new Error('No images returned from the model. The model may have generated only text.')\n }\n\n const files = resultImages.map((image) => {\n const mimeType = image.mediaType || 'image/png'\n const imageData = image.base64Data || image.uint8Array\n\n if (!imageData) {\n throw new Error('Image data is missing from the response.')\n }\n\n const buffer = convertToBuffer(imageData)\n const extension = getExtensionFromMimeType(mimeType)\n\n return {\n name: `generated.${extension}`,\n data: buffer,\n mimetype: mimeType,\n size: buffer.byteLength,\n }\n })\n\n return {\n files,\n }\n}\n"],"names":["generateText","toAISDKProviderOptions","convertToBuffer","getExtensionFromMimeType","generateMultimodalImage","model","args","images","prompt","provider","providerOptions","aiSdkProviderOptions","providerId","settingsOverride","result","content","type","text","role","resultImages","files","filter","f","mediaType","startsWith","length","responseBody","response","body","candidate","candidates","finishMessage","Error","finishReason","map","image","mimeType","imageData","base64Data","uint8Array","buffer","extension","name","data","mimetype","size","byteLength"],"mappings":"AAAA,SAASA,YAAY,QAA4B,KAAI;AAIrD,SAASC,sBAAsB,QAAQ,oCAAmC;AAC1E,SAASC,eAAe,EAAEC,wBAAwB,QAAQ,iBAAgB;AAE1E;;;CAGC,GACD,OAAO,eAAeC,wBACpBC,KAAoB,EACpBC,IAAyB;IAEzB,MAAM,EAAEC,SAAS,EAAE,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,eAAe,EAAE,GAAGJ;IAE3D,MAAMK,uBAAuBV,uBAAuB;QAClDW,YAAYH;QACZI,kBAAkBH;IACpB;IAEA,MAAMI,SAAS,MAAMd,aAAa;QAChCK;QACAK,iBAAiBC;QACjBH,QAAQ;YACN;gBACEO,SAAS;oBAAC;wBAAEC,MAAM;wBAAQC,MAAMT;oBAAO;uBAAMD;iBAAO;gBACpDW,MAAM;YACR;SACD;IACH;IAEA,mCAAmC;IACnC,MAAMC,eAAgBL,OAAOM,KAAK,EAAEC,OAAO,CAACC,IAC1CA,EAAEC,SAAS,EAAEC,WAAW,cACrB,EAAE;IAEP,IAAIL,aAAaM,MAAM,KAAK,GAAG;QAC7B,oDAAoD;QACpD,MAAMC,eAAeZ,OAAOa,QAAQ,EAAEC;QAGtC,MAAMC,YAAYH,cAAcI,YAAY,CAAC,EAAE;QAE/C,IAAID,WAAWE,eAAe;YAC5B,MAAM,IAAIC,MAAM,CAAC,yBAAyB,EAAEH,UAAUE,aAAa,CAAC,CAAC;QACvE;QACA,IAAIF,WAAWI,gBAAgBJ,UAAUI,YAAY,KAAK,QAAQ;YAChE,MAAM,IAAID,MAAM,CAAC,qCAAqC,EAAEH,UAAUI,YAAY,CAAC,CAAC;QAClF;QAEA,MAAM,IAAID,MAAM;IAClB;IAEA,MAAMZ,QAAQD,aAAae,GAAG,CAAC,CAACC;QAC9B,MAAMC,WAAWD,MAAMZ,SAAS,IAAI;QACpC,MAAMc,YAAYF,MAAMG,UAAU,IAAIH,MAAMI,UAAU;QAEtD,IAAI,CAACF,WAAW;YACd,MAAM,IAAIL,MAAM;QAClB;QAEA,MAAMQ,SAAStC,gBAAgBmC;QAC/B,MAAMI,YAAYtC,yBAAyBiC;QAE3C,OAAO;YACLM,MAAM,CAAC,UAAU,EAAED,UAAU,CAAC;YAC9BE,MAAMH;YACNI,UAAUR;YACVS,MAAML,OAAOM,UAAU;QACzB;IACF;IAEA,OAAO;QACL1B;IACF;AACF"}
@@ -1,15 +1,20 @@
1
1
  import { experimental_generateImage } from 'ai';
2
+ import { toAISDKProviderOptions } from '../../../../providers/registry.js';
2
3
  import { getExtensionFromMimeType } from '../../utils.js';
3
4
  /**
4
5
  * Handle standard image generation (DALL-E, Imagen, Flux, etc.)
5
6
  * Uses AI SDK's experimental_generateImage
6
7
  */ export async function generateStandardImage(model, args) {
7
- const { n = 1, prompt, providerOptions } = args;
8
+ const { n = 1, prompt, provider, providerOptions } = args;
9
+ const aiSdkProviderOptions = toAISDKProviderOptions({
10
+ providerId: provider,
11
+ settingsOverride: providerOptions
12
+ });
8
13
  const generateResult = await experimental_generateImage({
9
14
  model,
10
15
  n,
11
16
  prompt,
12
- providerOptions
17
+ providerOptions: aiSdkProviderOptions
13
18
  });
14
19
  const { images } = generateResult;
15
20
  const files = images.map((image)=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/ai/core/media/image/handlers/standard.ts"],"sourcesContent":["import { experimental_generateImage, type ImageModel } from 'ai'\n\nimport type { ImageGenerationArgs, MediaResult } from '../../types.js'\n\nimport { getExtensionFromMimeType } from '../../utils.js'\n\n/**\n * Handle standard image generation (DALL-E, Imagen, Flux, etc.)\n * Uses AI SDK's experimental_generateImage\n */\nexport async function generateStandardImage(\n model: ImageModel,\n args: ImageGenerationArgs,\n): Promise<MediaResult> {\n const { n = 1, prompt, providerOptions } = args\n\n const generateResult = await experimental_generateImage({\n model,\n n,\n prompt,\n providerOptions,\n })\n\n const { images } = generateResult\n\n const files = images.map((image) => {\n const buffer = Buffer.from(image.base64, 'base64')\n const mimeType = image.mediaType || 'image/png'\n const extension = getExtensionFromMimeType(mimeType)\n\n return {\n name: `generated.${extension}`,\n data: buffer,\n mimetype: mimeType,\n size: buffer.byteLength,\n }\n })\n\n return {\n files,\n }\n}\n"],"names":["experimental_generateImage","getExtensionFromMimeType","generateStandardImage","model","args","n","prompt","providerOptions","generateResult","images","files","map","image","buffer","Buffer","from","base64","mimeType","mediaType","extension","name","data","mimetype","size","byteLength"],"mappings":"AAAA,SAASA,0BAA0B,QAAyB,KAAI;AAIhE,SAASC,wBAAwB,QAAQ,iBAAgB;AAEzD;;;CAGC,GACD,OAAO,eAAeC,sBACpBC,KAAiB,EACjBC,IAAyB;IAEzB,MAAM,EAAEC,IAAI,CAAC,EAAEC,MAAM,EAAEC,eAAe,EAAE,GAAGH;IAE3C,MAAMI,iBAAiB,MAAMR,2BAA2B;QACtDG;QACAE;QACAC;QACAC;IACF;IAEA,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,MAAME,QAAQD,OAAOE,GAAG,CAAC,CAACC;QACxB,MAAMC,SAASC,OAAOC,IAAI,CAACH,MAAMI,MAAM,EAAE;QACzC,MAAMC,WAAWL,MAAMM,SAAS,IAAI;QACpC,MAAMC,YAAYlB,yBAAyBgB;QAE3C,OAAO;YACLG,MAAM,CAAC,UAAU,EAAED,UAAU,CAAC;YAC9BE,MAAMR;YACNS,UAAUL;YACVM,MAAMV,OAAOW,UAAU;QACzB;IACF;IAEA,OAAO;QACLd;IACF;AACF"}
1
+ {"version":3,"sources":["../../../../../../src/ai/core/media/image/handlers/standard.ts"],"sourcesContent":["import { experimental_generateImage, type ImageModel } from 'ai'\n\nimport type { ImageGenerationArgs, MediaResult } from '../../types.js'\n\nimport { toAISDKProviderOptions } from '../../../../providers/registry.js'\nimport { getExtensionFromMimeType } from '../../utils.js'\n\n/**\n * Handle standard image generation (DALL-E, Imagen, Flux, etc.)\n * Uses AI SDK's experimental_generateImage\n */\nexport async function generateStandardImage(\n model: ImageModel,\n args: ImageGenerationArgs,\n): Promise<MediaResult> {\n const { n = 1, prompt, provider, providerOptions } = args\n const aiSdkProviderOptions = toAISDKProviderOptions({\n providerId: provider,\n settingsOverride: providerOptions,\n })\n\n const generateResult = await experimental_generateImage({\n model,\n n,\n prompt,\n providerOptions: aiSdkProviderOptions,\n })\n\n const { images } = generateResult\n\n const files = images.map((image) => {\n const buffer = Buffer.from(image.base64, 'base64')\n const mimeType = image.mediaType || 'image/png'\n const extension = getExtensionFromMimeType(mimeType)\n\n return {\n name: `generated.${extension}`,\n data: buffer,\n mimetype: mimeType,\n size: buffer.byteLength,\n }\n })\n\n return {\n files,\n }\n}\n"],"names":["experimental_generateImage","toAISDKProviderOptions","getExtensionFromMimeType","generateStandardImage","model","args","n","prompt","provider","providerOptions","aiSdkProviderOptions","providerId","settingsOverride","generateResult","images","files","map","image","buffer","Buffer","from","base64","mimeType","mediaType","extension","name","data","mimetype","size","byteLength"],"mappings":"AAAA,SAASA,0BAA0B,QAAyB,KAAI;AAIhE,SAASC,sBAAsB,QAAQ,oCAAmC;AAC1E,SAASC,wBAAwB,QAAQ,iBAAgB;AAEzD;;;CAGC,GACD,OAAO,eAAeC,sBACpBC,KAAiB,EACjBC,IAAyB;IAEzB,MAAM,EAAEC,IAAI,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,eAAe,EAAE,GAAGJ;IACrD,MAAMK,uBAAuBT,uBAAuB;QAClDU,YAAYH;QACZI,kBAAkBH;IACpB;IAEA,MAAMI,iBAAiB,MAAMb,2BAA2B;QACtDI;QACAE;QACAC;QACAE,iBAAiBC;IACnB;IAEA,MAAM,EAAEI,MAAM,EAAE,GAAGD;IAEnB,MAAME,QAAQD,OAAOE,GAAG,CAAC,CAACC;QACxB,MAAMC,SAASC,OAAOC,IAAI,CAACH,MAAMI,MAAM,EAAE;QACzC,MAAMC,WAAWL,MAAMM,SAAS,IAAI;QACpC,MAAMC,YAAYtB,yBAAyBoB;QAE3C,OAAO;YACLG,MAAM,CAAC,UAAU,EAAED,UAAU,CAAC;YAC9BE,MAAMR;YACNS,UAAUL;YACVM,MAAMV,OAAOW,UAAU;QACzB;IACF;IAEA,OAAO;QACLd;IACF;AACF"}
@@ -3,7 +3,7 @@ import { getExtensionFromMimeType } from '../utils.js';
3
3
  /**
4
4
  * Generate speech from text using AI SDK's generateSpeech
5
5
  */ export async function generateSpeech(args) {
6
- const { model: modelId, payload, prompt, provider } = args;
6
+ const { model: modelId, payload, prompt, provider, providerOptions } = args;
7
7
  let { voice } = args;
8
8
  // Fallback to global default voice if not specified
9
9
  if (!voice) {
@@ -13,7 +13,7 @@ import { getExtensionFromMimeType } from '../utils.js';
13
13
  }
14
14
  }
15
15
  // Get TTS model instance
16
- const model = await getTTSModel(payload, provider, modelId, args.providerOptions);
16
+ const model = await getTTSModel(payload, provider, modelId, providerOptions);
17
17
  // Dynamic import to support older SDK versions
18
18
  let generateSpeechFn;
19
19
  try {
@@ -28,7 +28,6 @@ import { getExtensionFromMimeType } from '../utils.js';
28
28
  // TODO: fix with proper error handling
29
29
  const result = await generateSpeechFn({
30
30
  model,
31
- providerOptions: args.providerOptions,
32
31
  speed: args.speed,
33
32
  text: prompt,
34
33
  voice
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/ai/core/media/speech/generateSpeech.ts"],"sourcesContent":["import type { MediaResult, SpeechGenerationArgs } from '../types.js'\n\nimport { getGlobalDefaults, getTTSModel } from '../../../providers/registry.js'\nimport { getExtensionFromMimeType } from '../utils.js'\n\n/**\n * Generate speech from text using AI SDK's generateSpeech\n */\nexport async function generateSpeech(args: SpeechGenerationArgs): Promise<MediaResult> {\n const { model: modelId, payload, prompt, provider } = args\n let { voice } = args\n\n // Fallback to global default voice if not specified\n if (!voice) {\n const defaults = await getGlobalDefaults(payload)\n if (defaults?.tts?.voice) {\n voice = defaults.tts.voice\n }\n }\n\n // Get TTS model instance\n const model = await getTTSModel(payload, provider, modelId, args.providerOptions)\n\n // Dynamic import to support older SDK versions\n let generateSpeechFn\n try {\n const ai = await import('ai')\n generateSpeechFn = ai.experimental_generateSpeech\n } catch (_e) {\n throw new Error('generateSpeech not found in \"ai\" package. Please upgrade to the latest version.')\n }\n\n if (!generateSpeechFn) {\n throw new Error('generateSpeech not found in \"ai\" package. Please upgrade to the latest version.')\n }\n\n // TODO: fix with proper error handling\n const result = await generateSpeechFn({\n model,\n providerOptions: args.providerOptions,\n speed: args.speed,\n text: prompt,\n voice,\n })\n\n // Extract audio from result\n const { audio } = result\n const mimeType = audio.mediaType || 'audio/mp3'\n \n // Try to get format from audio object, otherwise infer from mime type\n const extension = audio.format || getExtensionFromMimeType(mimeType)\n\n // Prefer uint8Array if available, else base64\n const dataBuffer = audio.uint8Array\n ? Buffer.from(audio.uint8Array)\n : Buffer.from(audio.base64, 'base64')\n\n return {\n files: [\n {\n name: `speech.${extension}`,\n data: dataBuffer,\n mimetype: mimeType,\n size: dataBuffer.length,\n },\n ],\n }\n}\n"],"names":["getGlobalDefaults","getTTSModel","getExtensionFromMimeType","generateSpeech","args","model","modelId","payload","prompt","provider","voice","defaults","tts","providerOptions","generateSpeechFn","ai","experimental_generateSpeech","_e","Error","result","speed","text","audio","mimeType","mediaType","extension","format","dataBuffer","uint8Array","Buffer","from","base64","files","name","data","mimetype","size","length"],"mappings":"AAEA,SAASA,iBAAiB,EAAEC,WAAW,QAAQ,iCAAgC;AAC/E,SAASC,wBAAwB,QAAQ,cAAa;AAEtD;;CAEC,GACD,OAAO,eAAeC,eAAeC,IAA0B;IAC7D,MAAM,EAAEC,OAAOC,OAAO,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGL;IACtD,IAAI,EAAEM,KAAK,EAAE,GAAGN;IAEhB,oDAAoD;IACpD,IAAI,CAACM,OAAO;QACV,MAAMC,WAAW,MAAMX,kBAAkBO;QACzC,IAAII,UAAUC,KAAKF,OAAO;YACxBA,QAAQC,SAASC,GAAG,CAACF,KAAK;QAC5B;IACF;IAEA,yBAAyB;IACzB,MAAML,QAAQ,MAAMJ,YAAYM,SAASE,UAAUH,SAASF,KAAKS,eAAe;IAEhF,+CAA+C;IAC/C,IAAIC;IACJ,IAAI;QACF,MAAMC,KAAK,MAAM,MAAM,CAAC;QACxBD,mBAAmBC,GAAGC,2BAA2B;IACnD,EAAE,OAAOC,IAAI;QACX,MAAM,IAAIC,MAAM;IAClB;IAEA,IAAI,CAACJ,kBAAkB;QACrB,MAAM,IAAII,MAAM;IAClB;IAEA,uCAAuC;IACvC,MAAMC,SAAS,MAAML,iBAAiB;QACpCT;QACAQ,iBAAiBT,KAAKS,eAAe;QACrCO,OAAOhB,KAAKgB,KAAK;QACjBC,MAAMb;QACNE;IACF;IAED,4BAA4B;IAC3B,MAAM,EAAEY,KAAK,EAAE,GAAGH;IAClB,MAAMI,WAAWD,MAAME,SAAS,IAAI;IAEpC,sEAAsE;IACtE,MAAMC,YAAYH,MAAMI,MAAM,IAAIxB,yBAAyBqB;IAE3D,8CAA8C;IAC9C,MAAMI,aAAaL,MAAMM,UAAU,GAC/BC,OAAOC,IAAI,CAACR,MAAMM,UAAU,IAC5BC,OAAOC,IAAI,CAACR,MAAMS,MAAM,EAAE;IAE9B,OAAO;QACLC,OAAO;YACL;gBACEC,MAAM,CAAC,OAAO,EAAER,UAAU,CAAC;gBAC3BS,MAAMP;gBACNQ,UAAUZ;gBACVa,MAAMT,WAAWU,MAAM;YACzB;SACD;IACH;AACF"}
1
+ {"version":3,"sources":["../../../../../src/ai/core/media/speech/generateSpeech.ts"],"sourcesContent":["import type { MediaResult, SpeechGenerationArgs } from '../types.js'\n\nimport { getGlobalDefaults, getTTSModel } from '../../../providers/registry.js'\nimport { getExtensionFromMimeType } from '../utils.js'\n\n/**\n * Generate speech from text using AI SDK's generateSpeech\n */\nexport async function generateSpeech(args: SpeechGenerationArgs): Promise<MediaResult> {\n const { model: modelId, payload, prompt, provider, providerOptions } = args\n let { voice } = args\n\n // Fallback to global default voice if not specified\n if (!voice) {\n const defaults = await getGlobalDefaults(payload)\n if (defaults?.tts?.voice) {\n voice = defaults.tts.voice\n }\n }\n\n // Get TTS model instance\n const model = await getTTSModel(payload, provider, modelId, providerOptions)\n\n // Dynamic import to support older SDK versions\n let generateSpeechFn\n try {\n const ai = await import('ai')\n generateSpeechFn = ai.experimental_generateSpeech\n } catch (_e) {\n throw new Error('generateSpeech not found in \"ai\" package. Please upgrade to the latest version.')\n }\n\n if (!generateSpeechFn) {\n throw new Error('generateSpeech not found in \"ai\" package. Please upgrade to the latest version.')\n }\n\n // TODO: fix with proper error handling\n const result = await generateSpeechFn({\n model,\n speed: args.speed,\n text: prompt,\n voice,\n })\n\n // Extract audio from result\n const { audio } = result\n const mimeType = audio.mediaType || 'audio/mp3'\n \n // Try to get format from audio object, otherwise infer from mime type\n const extension = audio.format || getExtensionFromMimeType(mimeType)\n\n // Prefer uint8Array if available, else base64\n const dataBuffer = audio.uint8Array\n ? Buffer.from(audio.uint8Array)\n : Buffer.from(audio.base64, 'base64')\n\n return {\n files: [\n {\n name: `speech.${extension}`,\n data: dataBuffer,\n mimetype: mimeType,\n size: dataBuffer.length,\n },\n ],\n }\n}\n"],"names":["getGlobalDefaults","getTTSModel","getExtensionFromMimeType","generateSpeech","args","model","modelId","payload","prompt","provider","providerOptions","voice","defaults","tts","generateSpeechFn","ai","experimental_generateSpeech","_e","Error","result","speed","text","audio","mimeType","mediaType","extension","format","dataBuffer","uint8Array","Buffer","from","base64","files","name","data","mimetype","size","length"],"mappings":"AAEA,SAASA,iBAAiB,EAAEC,WAAW,QAAQ,iCAAgC;AAC/E,SAASC,wBAAwB,QAAQ,cAAa;AAEtD;;CAEC,GACD,OAAO,eAAeC,eAAeC,IAA0B;IAC7D,MAAM,EAAEC,OAAOC,OAAO,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,eAAe,EAAE,GAAGN;IACvE,IAAI,EAAEO,KAAK,EAAE,GAAGP;IAEhB,oDAAoD;IACpD,IAAI,CAACO,OAAO;QACV,MAAMC,WAAW,MAAMZ,kBAAkBO;QACzC,IAAIK,UAAUC,KAAKF,OAAO;YACxBA,QAAQC,SAASC,GAAG,CAACF,KAAK;QAC5B;IACF;IAEA,yBAAyB;IACzB,MAAMN,QAAQ,MAAMJ,YAAYM,SAASE,UAAUH,SAASI;IAE5D,+CAA+C;IAC/C,IAAII;IACJ,IAAI;QACF,MAAMC,KAAK,MAAM,MAAM,CAAC;QACxBD,mBAAmBC,GAAGC,2BAA2B;IACnD,EAAE,OAAOC,IAAI;QACX,MAAM,IAAIC,MAAM;IAClB;IAEA,IAAI,CAACJ,kBAAkB;QACrB,MAAM,IAAII,MAAM;IAClB;IAEA,uCAAuC;IACvC,MAAMC,SAAS,MAAML,iBAAiB;QACpCT;QACAe,OAAOhB,KAAKgB,KAAK;QACjBC,MAAMb;QACNG;IACF;IAED,4BAA4B;IAC3B,MAAM,EAAEW,KAAK,EAAE,GAAGH;IAClB,MAAMI,WAAWD,MAAME,SAAS,IAAI;IAEpC,sEAAsE;IACtE,MAAMC,YAAYH,MAAMI,MAAM,IAAIxB,yBAAyBqB;IAE3D,8CAA8C;IAC9C,MAAMI,aAAaL,MAAMM,UAAU,GAC/BC,OAAOC,IAAI,CAACR,MAAMM,UAAU,IAC5BC,OAAOC,IAAI,CAACR,MAAMS,MAAM,EAAE;IAE9B,OAAO;QACLC,OAAO;YACL;gBACEC,MAAM,CAAC,OAAO,EAAER,UAAU,CAAC;gBAC3BS,MAAMP;gBACNQ,UAAUZ;gBACVa,MAAMT,WAAWU,MAAM;YACzB;SACD;IACH;AACF"}
@@ -1,6 +1,5 @@
1
1
  import type { ImagePart } from 'ai';
2
2
  import type { Payload } from 'payload';
3
- import type { ProviderOptions } from '../types.js';
4
3
  /**
5
4
  * Base interface for all media generation arguments
6
5
  */
@@ -9,7 +8,7 @@ export interface MediaGenerationArgs {
9
8
  payload: Payload;
10
9
  prompt: string;
11
10
  provider?: string;
12
- providerOptions?: ProviderOptions;
11
+ providerOptions?: Record<string, unknown>;
13
12
  }
14
13
  /**
15
14
  * Arguments specific to image generation
@@ -57,12 +56,12 @@ export interface MediaFile {
57
56
  * Can be either an immediate file result or an async job
58
57
  */
59
58
  export interface MediaResult {
59
+ data?: any;
60
60
  files?: MediaFile[];
61
61
  jobId?: string;
62
62
  progress?: number;
63
63
  status?: 'completed' | 'failed' | 'queued' | 'running';
64
64
  taskId?: string;
65
- data?: any;
66
65
  }
67
66
  /**
68
67
  * Internal type for multimodal image files from AI SDK
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/ai/core/media/types.ts"],"sourcesContent":["import type { ImagePart } from 'ai'\nimport type { Payload } from 'payload'\n\nimport type { ProviderOptions } from '../types.js'\n\n/**\n * Base interface for all media generation arguments\n */\nexport interface MediaGenerationArgs {\n model?: string\n payload: Payload\n prompt: string\n provider?: string\n providerOptions?: ProviderOptions\n}\n\n/**\n * Arguments specific to image generation\n */\nexport interface ImageGenerationArgs extends MediaGenerationArgs {\n aspectRatio?: string\n images?: ImagePart[]\n n?: number\n seed?: number\n size?: { height: number; width: number }\n}\n\n/**\n * Arguments specific to video generation\n */\nexport interface VideoGenerationArgs extends MediaGenerationArgs {\n callbackUrl?: string\n duration?: number\n fps?: number\n images?: ImagePart[]\n instructionId?: number | string\n mode?: 'i2v' | 't2v'\n}\n\n/**\n * Arguments specific to speech generation\n */\nexport interface SpeechGenerationArgs extends MediaGenerationArgs {\n audioFormat?: string\n speed?: number\n voice?: string\n}\n\n/**\n * Generated media file\n */\nexport interface MediaFile {\n data: Buffer\n mimetype: string\n name: string\n size: number\n}\n\n/**\n * Result from media generation\n * Can be either an immediate file result or an async job\n */\nexport interface MediaResult {\n // Immediate result (image, speech)\n files?: MediaFile[]\n\n // Async job result (video)\n jobId?: string\n progress?: number\n status?: 'completed' | 'failed' | 'queued' | 'running'\n taskId?: string\n data?: any\n}\n\n/**\n * Internal type for multimodal image files from AI SDK\n */\nexport interface MultimodalImageFile {\n base64Data?: string\n mediaType?: string\n uint8Array?: Uint8Array\n}\n"],"names":[],"mappings":"AA0EA;;CAEC,GACD,WAIC"}
1
+ {"version":3,"sources":["../../../../src/ai/core/media/types.ts"],"sourcesContent":["import type { ImagePart } from 'ai'\nimport type { Payload } from 'payload'\n\n\n/**\n * Base interface for all media generation arguments\n */\nexport interface MediaGenerationArgs {\n model?: string\n payload: Payload\n prompt: string\n provider?: string\n providerOptions?: Record<string, unknown>\n}\n\n/**\n * Arguments specific to image generation\n */\nexport interface ImageGenerationArgs extends MediaGenerationArgs {\n aspectRatio?: string\n images?: ImagePart[]\n n?: number\n seed?: number\n size?: { height: number; width: number }\n}\n\n/**\n * Arguments specific to video generation\n */\nexport interface VideoGenerationArgs extends MediaGenerationArgs {\n callbackUrl?: string\n duration?: number\n fps?: number\n images?: ImagePart[]\n instructionId?: number | string\n mode?: 'i2v' | 't2v'\n}\n\n/**\n * Arguments specific to speech generation\n */\nexport interface SpeechGenerationArgs extends MediaGenerationArgs {\n audioFormat?: string\n speed?: number\n voice?: string\n}\n\n/**\n * Generated media file\n */\nexport interface MediaFile {\n data: Buffer\n mimetype: string\n name: string\n size: number\n}\n\n/**\n * Result from media generation\n * Can be either an immediate file result or an async job\n */\nexport interface MediaResult {\n data?: any\n\n // Immediate result (image, speech)\n files?: MediaFile[]\n\n // Async job result (video)\n jobId?: string\n progress?: number\n status?: 'completed' | 'failed' | 'queued' | 'running'\n taskId?: string\n}\n\n/**\n * Internal type for multimodal image files from AI SDK\n */\nexport interface MultimodalImageFile {\n base64Data?: string\n mediaType?: string\n uint8Array?: Uint8Array\n}\n"],"names":[],"mappings":"AA0EA;;CAEC,GACD,WAIC"}
@@ -45,9 +45,6 @@ function isZodSchema(schema) {
45
45
  } else {
46
46
  options.prompt = prompt;
47
47
  }
48
- if (providerOptions) {
49
- options.providerOptions = providerOptions;
50
- }
51
48
  if (rest.onFinish) {
52
49
  options.onFinish = rest.onFinish;
53
50
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ai/core/streamObject.ts"],"sourcesContent":["import { type ImagePart, jsonSchema, streamObject as sdkStreamObject, type TextPart } from 'ai'\n\nimport type { PayloadGenerateObjectArgs } from './types.js'\n\nimport { getLanguageModel } from '../providers/registry.js'\n\nfunction isZodSchema(schema: unknown): boolean {\n return typeof schema === 'object' && schema !== null && '_def' in schema\n}\n\n/**\n * Stream structured output using AI SDK's streamObject\n * This is a thin wrapper that resolves the model from the registry\n * and passes everything directly to the AI SDK for streaming\n */\nexport async function streamObject(args: PayloadGenerateObjectArgs) {\n const { \n maxTokens, \n mode,\n model: modelId,\n payload,\n prompt,\n provider,\n providerOptions,\n schema,\n system,\n temperature,\n ...rest\n } = args\n \n // Resolve model from registry\n const model = await getLanguageModel(payload, provider, modelId, providerOptions)\n \n // Return streaming result from AI SDK\n const options: Record<string, unknown> = {\n mode: mode || 'auto',\n model,\n schema: schema ? (isZodSchema(schema) ? schema : jsonSchema(schema as Record<string, unknown>)) : undefined,\n system,\n temperature: temperature ?? 0.7,\n ...(maxTokens ? { maxOutputTokens: maxTokens } : {}),\n }\n\n // Handle multimodal input\n if ((args.images && args.images.length > 0) || (args.messages && args.messages.length > 0)) {\n if (args.messages) {\n options.messages = args.messages\n } else {\n // Construct multimodal message from prompt and images\n const content: Array<ImagePart | TextPart> = [\n { type: 'text', text: prompt },\n ...(args.images || []),\n ]\n\n options.messages = [\n { content, role: 'user' as const },\n ]\n }\n } else {\n options.prompt = prompt\n }\n\n\n if (providerOptions) {\n options.providerOptions = providerOptions\n }\n\n if (rest.onFinish) {\n options.onFinish = rest.onFinish\n }\n\n return sdkStreamObject(options as Parameters<typeof sdkStreamObject>[0])\n}\n"],"names":["jsonSchema","streamObject","sdkStreamObject","getLanguageModel","isZodSchema","schema","args","maxTokens","mode","model","modelId","payload","prompt","provider","providerOptions","system","temperature","rest","options","undefined","maxOutputTokens","images","length","messages","content","type","text","role","onFinish"],"mappings":"AAAA,SAAyBA,UAAU,EAAEC,gBAAgBC,eAAe,QAAuB,KAAI;AAI/F,SAASC,gBAAgB,QAAQ,2BAA0B;AAE3D,SAASC,YAAYC,MAAe;IAClC,OAAO,OAAOA,WAAW,YAAYA,WAAW,QAAQ,UAAUA;AACpE;AAEA;;;;CAIC,GACD,OAAO,eAAeJ,aAAaK,IAA+B;IAChE,MAAM,EACJC,SAAS,EACTC,IAAI,EACJC,OAAOC,OAAO,EACdC,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,eAAe,EACfT,MAAM,EACNU,MAAM,EACNC,WAAW,EACX,GAAGC,MACJ,GAAGX;IAEJ,8BAA8B;IAC9B,MAAMG,QAAQ,MAAMN,iBAAiBQ,SAASE,UAAUH,SAASI;IAEjE,sCAAsC;IACtC,MAAMI,UAAmC;QACvCV,MAAMA,QAAQ;QACdC;QACAJ,QAAQA,SAAUD,YAAYC,UAAUA,SAASL,WAAWK,UAAsCc;QAClGJ;QACAC,aAAaA,eAAe;QAC5B,GAAIT,YAAY;YAAEa,iBAAiBb;QAAU,IAAI,CAAC,CAAC;IACrD;IAEA,0BAA0B;IAC1B,IAAI,AAACD,KAAKe,MAAM,IAAIf,KAAKe,MAAM,CAACC,MAAM,GAAG,KAAOhB,KAAKiB,QAAQ,IAAIjB,KAAKiB,QAAQ,CAACD,MAAM,GAAG,GAAI;QAC1F,IAAIhB,KAAKiB,QAAQ,EAAE;YACjBL,QAAQK,QAAQ,GAAGjB,KAAKiB,QAAQ;QAClC,OAAO;YACL,sDAAsD;YACtD,MAAMC,UAAuC;gBAC3C;oBAAEC,MAAM;oBAAQC,MAAMd;gBAAO;mBACzBN,KAAKe,MAAM,IAAI,EAAE;aACtB;YAEDH,QAAQK,QAAQ,GAAG;gBACjB;oBAAEC;oBAASG,MAAM;gBAAgB;aAClC;QACH;IACF,OAAO;QACLT,QAAQN,MAAM,GAAGA;IACnB;IAGA,IAAIE,iBAAiB;QACnBI,QAAQJ,eAAe,GAAGA;IAC5B;IAEA,IAAIG,KAAKW,QAAQ,EAAE;QACjBV,QAAQU,QAAQ,GAAGX,KAAKW,QAAQ;IAClC;IAEA,OAAO1B,gBAAgBgB;AACzB"}
1
+ {"version":3,"sources":["../../../src/ai/core/streamObject.ts"],"sourcesContent":["import { type ImagePart, jsonSchema, streamObject as sdkStreamObject, type TextPart } from 'ai'\n\nimport type { PayloadGenerateObjectArgs } from './types.js'\n\nimport { getLanguageModel } from '../providers/registry.js'\n\nfunction isZodSchema(schema: unknown): boolean {\n return typeof schema === 'object' && schema !== null && '_def' in schema\n}\n\n/**\n * Stream structured output using AI SDK's streamObject\n * This is a thin wrapper that resolves the model from the registry\n * and passes everything directly to the AI SDK for streaming\n */\nexport async function streamObject(args: PayloadGenerateObjectArgs) {\n const { \n maxTokens, \n mode,\n model: modelId,\n payload,\n prompt,\n provider,\n providerOptions,\n\n schema,\n system,\n temperature,\n ...rest\n } = args\n \n // Resolve model from registry\n const model = await getLanguageModel(payload, provider, modelId, providerOptions)\n \n // Return streaming result from AI SDK\n const options: Record<string, unknown> = {\n mode: mode || 'auto',\n model,\n schema: schema ? (isZodSchema(schema) ? schema : jsonSchema(schema as Record<string, unknown>)) : undefined,\n system,\n temperature: temperature ?? 0.7,\n ...(maxTokens ? { maxOutputTokens: maxTokens } : {}),\n }\n\n // Handle multimodal input\n if ((args.images && args.images.length > 0) || (args.messages && args.messages.length > 0)) {\n if (args.messages) {\n options.messages = args.messages\n } else {\n // Construct multimodal message from prompt and images\n const content: Array<ImagePart | TextPart> = [\n { type: 'text', text: prompt },\n ...(args.images || []),\n ]\n\n options.messages = [\n { content, role: 'user' as const },\n ]\n }\n } else {\n options.prompt = prompt\n }\n\n\n\n\n if (rest.onFinish) {\n options.onFinish = rest.onFinish\n }\n\n return sdkStreamObject(options as Parameters<typeof sdkStreamObject>[0])\n}\n"],"names":["jsonSchema","streamObject","sdkStreamObject","getLanguageModel","isZodSchema","schema","args","maxTokens","mode","model","modelId","payload","prompt","provider","providerOptions","system","temperature","rest","options","undefined","maxOutputTokens","images","length","messages","content","type","text","role","onFinish"],"mappings":"AAAA,SAAyBA,UAAU,EAAEC,gBAAgBC,eAAe,QAAuB,KAAI;AAI/F,SAASC,gBAAgB,QAAQ,2BAA0B;AAE3D,SAASC,YAAYC,MAAe;IAClC,OAAO,OAAOA,WAAW,YAAYA,WAAW,QAAQ,UAAUA;AACpE;AAEA;;;;CAIC,GACD,OAAO,eAAeJ,aAAaK,IAA+B;IAChE,MAAM,EACJC,SAAS,EACTC,IAAI,EACJC,OAAOC,OAAO,EACdC,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,eAAe,EAEfT,MAAM,EACNU,MAAM,EACNC,WAAW,EACX,GAAGC,MACJ,GAAGX;IAEJ,8BAA8B;IAC9B,MAAMG,QAAQ,MAAMN,iBAAiBQ,SAASE,UAAUH,SAASI;IAEjE,sCAAsC;IACtC,MAAMI,UAAmC;QACvCV,MAAMA,QAAQ;QACdC;QACAJ,QAAQA,SAAUD,YAAYC,UAAUA,SAASL,WAAWK,UAAsCc;QAClGJ;QACAC,aAAaA,eAAe;QAC5B,GAAIT,YAAY;YAAEa,iBAAiBb;QAAU,IAAI,CAAC,CAAC;IACrD;IAEA,0BAA0B;IAC1B,IAAI,AAACD,KAAKe,MAAM,IAAIf,KAAKe,MAAM,CAACC,MAAM,GAAG,KAAOhB,KAAKiB,QAAQ,IAAIjB,KAAKiB,QAAQ,CAACD,MAAM,GAAG,GAAI;QAC1F,IAAIhB,KAAKiB,QAAQ,EAAE;YACjBL,QAAQK,QAAQ,GAAGjB,KAAKiB,QAAQ;QAClC,OAAO;YACL,sDAAsD;YACtD,MAAMC,UAAuC;gBAC3C;oBAAEC,MAAM;oBAAQC,MAAMd;gBAAO;mBACzBN,KAAKe,MAAM,IAAI,EAAE;aACtB;YAEDH,QAAQK,QAAQ,GAAG;gBACjB;oBAAEC;oBAASG,MAAM;gBAAgB;aAClC;QACH;IACF,OAAO;QACLT,QAAQN,MAAM,GAAGA;IACnB;IAKA,IAAIK,KAAKW,QAAQ,EAAE;QACjBV,QAAQU,QAAQ,GAAGX,KAAKW,QAAQ;IAClC;IAEA,OAAO1B,gBAAgBgB;AACzB"}
@@ -1,5 +1,5 @@
1
1
  import { streamText as sdkStreamText } from 'ai';
2
- import { extractPromptAttachments } from '../../utilities/extractPromptAttachments.js';
2
+ import { extractPromptAttachments } from '../../utilities/images/extractPromptAttachments.js';
3
3
  import { getLanguageModel } from '../providers/registry.js';
4
4
  /**
5
5
  * Stream text using AI SDK's streamText
@@ -21,9 +21,6 @@ import { getLanguageModel } from '../providers/registry.js';
21
21
  maxOutputTokens: maxTokens
22
22
  } : {}
23
23
  };
24
- if (providerOptions) {
25
- options.providerOptions = providerOptions;
26
- }
27
24
  return sdkStreamText(options);
28
25
  }
29
26
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ai/core/streamText.ts"],"sourcesContent":["import { streamText as sdkStreamText } from 'ai'\n\nimport type { PayloadGenerateTextArgs } from './types.js'\n\nimport { extractPromptAttachments } from '../../utilities/extractPromptAttachments.js'\nimport { getLanguageModel } from '../providers/registry.js'\n\n/**\n * Stream text using AI SDK's streamText\n * This is a thin wrapper that resolves the model from the registry\n * and passes everything directly to the AI SDK for streaming\n */\nexport async function streamText(args: PayloadGenerateTextArgs) {\n const { \n maxTokens, \n model: modelId, \n payload,\n prompt,\n provider,\n providerOptions,\n system,\n temperature,\n ...rest\n } = args\n \n // Extract attachments if needed\n const processedPrompt = (rest as any).extractAttachments \n ? extractPromptAttachments(prompt) \n : prompt\n \n // Resolve model from registry\n const model = await getLanguageModel(payload, provider, modelId, providerOptions)\n \n // Return streaming result from AI SDK\n const options: Record<string, unknown> = {\n model,\n prompt: processedPrompt,\n system,\n temperature: temperature ?? 0.7,\n ...(maxTokens ? { maxOutputTokens: maxTokens } : {}),\n }\n\n if (providerOptions) {\n options.providerOptions = providerOptions\n }\n\n return sdkStreamText(options as Parameters<typeof sdkStreamText>[0])\n}\n"],"names":["streamText","sdkStreamText","extractPromptAttachments","getLanguageModel","args","maxTokens","model","modelId","payload","prompt","provider","providerOptions","system","temperature","rest","processedPrompt","extractAttachments","options","maxOutputTokens"],"mappings":"AAAA,SAASA,cAAcC,aAAa,QAAQ,KAAI;AAIhD,SAASC,wBAAwB,QAAQ,8CAA6C;AACtF,SAASC,gBAAgB,QAAQ,2BAA0B;AAE3D;;;;CAIC,GACD,OAAO,eAAeH,WAAWI,IAA6B;IAC5D,MAAM,EACJC,SAAS,EACTC,OAAOC,OAAO,EACdC,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,eAAe,EACfC,MAAM,EACNC,WAAW,EACX,GAAGC,MACJ,GAAGV;IAEJ,gCAAgC;IAChC,MAAMW,kBAAkB,AAACD,KAAaE,kBAAkB,GACpDd,yBAAyBO,UACzBA;IAEJ,8BAA8B;IAC9B,MAAMH,QAAQ,MAAMH,iBAAiBK,SAASE,UAAUH,SAASI;IAEjE,sCAAsC;IACtC,MAAMM,UAAmC;QACvCX;QACAG,QAAQM;QACRH;QACAC,aAAaA,eAAe;QAC5B,GAAIR,YAAY;YAAEa,iBAAiBb;QAAU,IAAI,CAAC,CAAC;IACrD;IAEA,IAAIM,iBAAiB;QACnBM,QAAQN,eAAe,GAAGA;IAC5B;IAEA,OAAOV,cAAcgB;AACvB"}
1
+ {"version":3,"sources":["../../../src/ai/core/streamText.ts"],"sourcesContent":["import { streamText as sdkStreamText } from 'ai'\n\nimport type { PayloadGenerateTextArgs } from './types.js'\n\nimport { extractPromptAttachments } from '../../utilities/images/extractPromptAttachments.js'\nimport { getLanguageModel } from '../providers/registry.js'\n\n/**\n * Stream text using AI SDK's streamText\n * This is a thin wrapper that resolves the model from the registry\n * and passes everything directly to the AI SDK for streaming\n */\nexport async function streamText(args: PayloadGenerateTextArgs) {\n const { \n maxTokens, \n model: modelId, \n payload,\n prompt,\n provider,\n providerOptions,\n\n system,\n temperature,\n ...rest\n } = args\n \n // Extract attachments if needed\n const processedPrompt = (rest as any).extractAttachments \n ? extractPromptAttachments(prompt) \n : prompt\n \n // Resolve model from registry\n const model = await getLanguageModel(payload, provider, modelId, providerOptions)\n \n // Return streaming result from AI SDK\n const options: Record<string, unknown> = {\n model,\n prompt: processedPrompt,\n system,\n temperature: temperature ?? 0.7,\n ...(maxTokens ? { maxOutputTokens: maxTokens } : {}),\n }\n\n\n\n return sdkStreamText(options as Parameters<typeof sdkStreamText>[0])\n}\n"],"names":["streamText","sdkStreamText","extractPromptAttachments","getLanguageModel","args","maxTokens","model","modelId","payload","prompt","provider","providerOptions","system","temperature","rest","processedPrompt","extractAttachments","options","maxOutputTokens"],"mappings":"AAAA,SAASA,cAAcC,aAAa,QAAQ,KAAI;AAIhD,SAASC,wBAAwB,QAAQ,qDAAoD;AAC7F,SAASC,gBAAgB,QAAQ,2BAA0B;AAE3D;;;;CAIC,GACD,OAAO,eAAeH,WAAWI,IAA6B;IAC5D,MAAM,EACJC,SAAS,EACTC,OAAOC,OAAO,EACdC,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,eAAe,EAEfC,MAAM,EACNC,WAAW,EACX,GAAGC,MACJ,GAAGV;IAEJ,gCAAgC;IAChC,MAAMW,kBAAkB,AAACD,KAAaE,kBAAkB,GACpDd,yBAAyBO,UACzBA;IAEJ,8BAA8B;IAC9B,MAAMH,QAAQ,MAAMH,iBAAiBK,SAASE,UAAUH,SAASI;IAEjE,sCAAsC;IACtC,MAAMM,UAAmC;QACvCX;QACAG,QAAQM;QACRH;QACAC,aAAaA,eAAe;QAC5B,GAAIR,YAAY;YAAEa,iBAAiBb;QAAU,IAAI,CAAC,CAAC;IACrD;IAIA,OAAOJ,cAAcgB;AACvB"}
@@ -17,7 +17,7 @@ export interface PayloadGenerationBaseArgs {
17
17
  payload: Payload;
18
18
  prompt: string;
19
19
  provider?: string;
20
- providerOptions?: ProviderOptions;
20
+ providerOptions?: Record<string, unknown>;
21
21
  system?: string;
22
22
  temperature?: number;
23
23
  }
@@ -54,7 +54,7 @@ export interface PayloadGenerateMediaArgs {
54
54
  payload: Payload;
55
55
  prompt: string;
56
56
  provider?: string;
57
- providerOptions?: ProviderOptions;
57
+ providerOptions?: Record<string, unknown>;
58
58
  seed?: number;
59
59
  size?: {
60
60
  height: number;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ai/core/types.ts"],"sourcesContent":["import type { ImagePart, JSONValue, ModelMessage } from 'ai'\nimport type { Payload } from 'payload'\nimport type { z } from 'zod'\n\n/**\n * Provider options compatible with AI SDK's SharedV2ProviderOptions\n * SharedV2ProviderOptions = Record<string, Record<string, JSONValue>>\n */\nexport type ProviderOptions = Record<string, Record<string, JSONValue>>\n\n/**\n * Base arguments for all generation methods\n */\nexport interface PayloadGenerationBaseArgs {\n extractAttachments?: boolean\n maxTokens?: number\n messages?: ModelMessage[]\n model?: string\n payload: Payload\n prompt: string\n provider?: string\n providerOptions?: ProviderOptions\n system?: string\n temperature?: number\n}\n\n/**\n * Arguments for generateObject - structured output generation\n */\nexport interface PayloadGenerateObjectArgs extends PayloadGenerationBaseArgs {\n images?: ImagePart[]\n mode?: 'auto' | 'json' | 'tool'\n onFinish?: (event: { object?: any }) => Promise<void> | void\n schema?: Record<string, unknown> | z.ZodTypeAny\n}\n\n/**\n * Arguments for generateText - simple text generation\n */\nexport interface PayloadGenerateTextArgs extends PayloadGenerationBaseArgs {\n // No additional fields needed for basic text generation\n}\n\n/**\n * Arguments for generateMedia - image/video generation\n */\nexport interface PayloadGenerateMediaArgs {\n aspectRatio?: string\n audioFormat?: string\n callbackUrl?: string\n duration?: number\n fps?: number\n images?: ImagePart[]\n instructionId?: number | string\n mode?: 'i2v' | 't2v'\n model?: string\n n?: number\n payload: Payload\n prompt: string\n provider?: string\n providerOptions?: ProviderOptions\n seed?: number\n size?: { height: number; width: number }\n speed?: number\n voice?: string\n}\n\n/**\n * Result from generateMedia - can be immediate file or async job\n */\nexport interface MediaResult {\n // Immediate result (image generation)\n file?: {\n data: Buffer\n mimetype: string\n name: string\n size: number\n }\n \n // Async job result (video generation)\n jobId?: string\n progress?: number\n status?: 'completed' | 'failed' | 'queued' | 'running'\n taskId?: string\n}\n\n/**\n * Internal type for multimodal image files\n */\nexport interface MultimodalImageFile {\n base64Data?: string\n mediaType?: string\n uint8Array?: Uint8Array\n}\n"],"names":[],"mappings":"AAsFA;;CAEC,GACD,WAIC"}
1
+ {"version":3,"sources":["../../../src/ai/core/types.ts"],"sourcesContent":["import type { ImagePart, JSONValue, ModelMessage } from 'ai'\nimport type { Payload } from 'payload'\nimport type { z } from 'zod'\n\n/**\n * Provider options compatible with AI SDK's SharedV2ProviderOptions\n * SharedV2ProviderOptions = Record<string, Record<string, JSONValue>>\n */\nexport type ProviderOptions = Record<string, Record<string, JSONValue>>\n\n/**\n * Base arguments for all generation methods\n */\nexport interface PayloadGenerationBaseArgs {\n extractAttachments?: boolean\n maxTokens?: number\n messages?: ModelMessage[]\n model?: string\n payload: Payload\n prompt: string\n provider?: string\n providerOptions?: Record<string, unknown>\n system?: string\n temperature?: number\n}\n\n/**\n * Arguments for generateObject - structured output generation\n */\nexport interface PayloadGenerateObjectArgs extends PayloadGenerationBaseArgs {\n images?: ImagePart[]\n mode?: 'auto' | 'json' | 'tool'\n onFinish?: (event: { object?: any }) => Promise<void> | void\n schema?: Record<string, unknown> | z.ZodTypeAny\n}\n\n/**\n * Arguments for generateText - simple text generation\n */\nexport interface PayloadGenerateTextArgs extends PayloadGenerationBaseArgs {\n // No additional fields needed for basic text generation\n}\n\n/**\n * Arguments for generateMedia - image/video generation\n */\nexport interface PayloadGenerateMediaArgs {\n aspectRatio?: string\n audioFormat?: string\n callbackUrl?: string\n duration?: number\n fps?: number\n images?: ImagePart[]\n instructionId?: number | string\n mode?: 'i2v' | 't2v'\n model?: string\n n?: number\n payload: Payload\n prompt: string\n provider?: string\n providerOptions?: Record<string, unknown>\n seed?: number\n size?: { height: number; width: number }\n speed?: number\n voice?: string\n}\n\n/**\n * Result from generateMedia - can be immediate file or async job\n */\nexport interface MediaResult {\n // Immediate result (image generation)\n file?: {\n data: Buffer\n mimetype: string\n name: string\n size: number\n }\n \n // Async job result (video generation)\n jobId?: string\n progress?: number\n status?: 'completed' | 'failed' | 'queued' | 'running'\n taskId?: string\n}\n\n/**\n * Internal type for multimodal image files\n */\nexport interface MultimodalImageFile {\n base64Data?: string\n mediaType?: string\n uint8Array?: Uint8Array\n}\n"],"names":[],"mappings":"AAsFA;;CAEC,GACD,WAIC"}
@@ -29,48 +29,6 @@ export const anthropicBlock = {
29
29
  ],
30
30
  label: 'Setup'
31
31
  },
32
- // 2. Provider Options tab
33
- {
34
- fields: [
35
- {
36
- name: 'textProviderOptions',
37
- type: 'group',
38
- admin: {
39
- description: 'Default provider options for text generation models.'
40
- },
41
- fields: [
42
- {
43
- name: 'temperature',
44
- type: 'number',
45
- defaultValue: 1.0,
46
- label: 'Default Temperature',
47
- max: 1.0,
48
- min: 0.0
49
- },
50
- {
51
- name: 'max_tokens',
52
- type: 'number',
53
- defaultValue: 4096,
54
- label: 'Max Tokens'
55
- },
56
- {
57
- name: 'top_p',
58
- type: 'number',
59
- label: 'Top P',
60
- max: 1.0,
61
- min: 0.0
62
- },
63
- {
64
- name: 'top_k',
65
- type: 'number',
66
- label: 'Top K'
67
- }
68
- ],
69
- label: 'Text Provider Options'
70
- }
71
- ],
72
- label: 'Provider Options'
73
- },
74
32
  // 3. Models tab
75
33
  {
76
34
  fields: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/ai/providers/blocks/anthropic.ts"],"sourcesContent":["import type { Block } from 'payload'\n\nimport { AnthropicIcon } from '../icons.js'\n\nexport const anthropicBlock: Block = {\n slug: 'anthropic',\n fields: [\n {\n type: 'tabs',\n tabs: [\n // 1. Setup tab\n {\n fields: [\n {\n name: 'enabled',\n type: 'checkbox',\n defaultValue: true,\n label: 'Enabled',\n },\n {\n name: 'apiKey',\n type: 'text',\n admin: {\n components: {\n Field: '@ai-stack/payloadcms/client#EncryptedTextField',\n },\n description: 'Your Anthropic API key. Will be encrypted in the database.',\n },\n label: 'API Key',\n required: true,\n },\n ],\n label: 'Setup',\n },\n\n // 2. Provider Options tab\n {\n fields: [\n {\n name: 'textProviderOptions',\n type: 'group',\n admin: {\n description: 'Default provider options for text generation models.',\n },\n fields: [\n {\n name: 'temperature',\n type: 'number',\n defaultValue: 1.0,\n label: 'Default Temperature',\n max: 1.0,\n min: 0.0,\n },\n {\n name: 'max_tokens',\n type: 'number',\n defaultValue: 4096,\n label: 'Max Tokens',\n },\n {\n name: 'top_p',\n type: 'number',\n label: 'Top P',\n max: 1.0,\n min: 0.0,\n },\n {\n name: 'top_k',\n type: 'number',\n label: 'Top K',\n },\n ],\n label: 'Text Provider Options',\n },\n ],\n label: 'Provider Options',\n },\n\n // 3. Models tab\n {\n fields: [\n {\n name: 'models',\n type: 'array',\n admin: {\n components: {\n RowLabel: '@ai-stack/payloadcms/client#ModelRowLabel',\n },\n initCollapsed: true,\n },\n defaultValue: [\n { id: 'claude-opus-4-1', name: 'Claude Opus 4.1', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'claude-opus-4-0', name: 'Claude Opus 4.0', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'claude-sonnet-4-0', name: 'Claude Sonnet 4.0', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n {\n id: 'claude-3-5-sonnet-latest',\n name: 'Claude 3.5 Sonnet',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'claude-3-5-haiku-latest',\n name: 'Claude 3.5 Haiku',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n ],\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'id',\n type: 'text',\n admin: { width: '33%' },\n label: 'Model ID',\n required: true,\n },\n {\n name: 'name',\n type: 'text',\n admin: { width: '33%' },\n label: 'Display Name',\n required: true,\n },\n {\n name: 'useCase',\n type: 'select',\n admin: { width: '33%' },\n dbName: 'anthropic-model-useCase',\n defaultValue: 'text',\n label: 'Use Case',\n options: [{ label: 'Text Generation', value: 'text' }],\n },\n ],\n },\n {\n name: 'responseModalities',\n type: 'select',\n admin: {\n description: 'Output capabilities of this model',\n width: '50%',\n },\n dbName: 'anthropic-model-modalities',\n hasMany: true,\n label: 'Response Modalities',\n options: [\n { label: 'Text', value: 'TEXT' },\n { label: 'Image', value: 'IMAGE' },\n { label: 'Audio', value: 'AUDIO' },\n ],\n },\n {\n name: 'enabled',\n type: 'checkbox',\n admin: {\n width: '50%',\n },\n defaultValue: true,\n label: 'Enabled',\n },\n ],\n label: 'Available Models',\n },\n ],\n label: 'Models',\n },\n ],\n },\n ],\n imageURL: AnthropicIcon,\n labels: {\n plural: 'Anthropic Providers',\n singular: 'Anthropic',\n },\n}\n\n"],"names":["AnthropicIcon","anthropicBlock","slug","fields","type","tabs","name","defaultValue","label","admin","components","Field","description","required","max","min","RowLabel","initCollapsed","id","enabled","responseModalities","useCase","width","dbName","options","value","hasMany","imageURL","labels","plural","singular"],"mappings":"AAEA,SAASA,aAAa,QAAQ,cAAa;AAE3C,OAAO,MAAMC,iBAAwB;IACnCC,MAAM;IACNC,QAAQ;QACN;YACEC,MAAM;YACNC,MAAM;gBACJ,eAAe;gBACf;oBACEF,QAAQ;wBACN;4BACEG,MAAM;4BACNF,MAAM;4BACNG,cAAc;4BACdC,OAAO;wBACT;wBACA;4BACEF,MAAM;4BACNF,MAAM;4BACNK,OAAO;gCACLC,YAAY;oCACVC,OAAO;gCACT;gCACAC,aAAa;4BACf;4BACAJ,OAAO;4BACPK,UAAU;wBACZ;qBACD;oBACDL,OAAO;gBACT;gBAEA,0BAA0B;gBAC1B;oBACEL,QAAQ;wBACN;4BACEG,MAAM;4BACNF,MAAM;4BACNK,OAAO;gCACLG,aAAa;4BACf;4BACAT,QAAQ;gCACN;oCACEG,MAAM;oCACNF,MAAM;oCACNG,cAAc;oCACdC,OAAO;oCACPM,KAAK;oCACLC,KAAK;gCACP;gCACA;oCACET,MAAM;oCACNF,MAAM;oCACNG,cAAc;oCACdC,OAAO;gCACT;gCACA;oCACEF,MAAM;oCACNF,MAAM;oCACNI,OAAO;oCACPM,KAAK;oCACLC,KAAK;gCACP;gCACA;oCACET,MAAM;oCACNF,MAAM;oCACNI,OAAO;gCACT;6BACD;4BACDA,OAAO;wBACT;qBACD;oBACDA,OAAO;gBACT;gBAEA,gBAAgB;gBAChB;oBACEL,QAAQ;wBACN;4BACEG,MAAM;4BACNF,MAAM;4BACNK,OAAO;gCACLC,YAAY;oCACVM,UAAU;gCACZ;gCACAC,eAAe;4BACjB;4BACAV,cAAc;gCACZ;oCAAEW,IAAI;oCAAmBZ,MAAM;oCAAmBa,SAAS;oCAAMC,oBAAoB;wCAAC;qCAAO;oCAAEC,SAAS;gCAAO;gCAC/G;oCAAEH,IAAI;oCAAmBZ,MAAM;oCAAmBa,SAAS;oCAAMC,oBAAoB;wCAAC;qCAAO;oCAAEC,SAAS;gCAAO;gCAC/G;oCAAEH,IAAI;oCAAqBZ,MAAM;oCAAqBa,SAAS;oCAAMC,oBAAoB;wCAAC;qCAAO;oCAAEC,SAAS;gCAAO;gCACnH;oCACEH,IAAI;oCACJZ,MAAM;oCACNa,SAAS;oCACTC,oBAAoB;wCAAC;qCAAO;oCAC5BC,SAAS;gCACX;gCACA;oCACEH,IAAI;oCACJZ,MAAM;oCACNa,SAAS;oCACTC,oBAAoB;wCAAC;qCAAO;oCAC5BC,SAAS;gCACX;6BACD;4BACDlB,QAAQ;gCACN;oCACEC,MAAM;oCACND,QAAQ;wCACN;4CACEG,MAAM;4CACNF,MAAM;4CACNK,OAAO;gDAAEa,OAAO;4CAAM;4CACtBd,OAAO;4CACPK,UAAU;wCACZ;wCACA;4CACEP,MAAM;4CACNF,MAAM;4CACNK,OAAO;gDAAEa,OAAO;4CAAM;4CACtBd,OAAO;4CACPK,UAAU;wCACZ;wCACA;4CACEP,MAAM;4CACNF,MAAM;4CACNK,OAAO;gDAAEa,OAAO;4CAAM;4CACtBC,QAAQ;4CACRhB,cAAc;4CACdC,OAAO;4CACPgB,SAAS;gDAAC;oDAAEhB,OAAO;oDAAmBiB,OAAO;gDAAO;6CAAE;wCACxD;qCACD;gCACH;gCACA;oCACEnB,MAAM;oCACNF,MAAM;oCACNK,OAAO;wCACLG,aAAa;wCACbU,OAAO;oCACT;oCACAC,QAAQ;oCACRG,SAAS;oCACTlB,OAAO;oCACPgB,SAAS;wCACP;4CAAEhB,OAAO;4CAAQiB,OAAO;wCAAO;wCAC/B;4CAAEjB,OAAO;4CAASiB,OAAO;wCAAQ;wCACjC;4CAAEjB,OAAO;4CAASiB,OAAO;wCAAQ;qCAClC;gCACH;gCACA;oCACEnB,MAAM;oCACNF,MAAM;oCACNK,OAAO;wCACLa,OAAO;oCACT;oCACAf,cAAc;oCACdC,OAAO;gCACT;6BACD;4BACDA,OAAO;wBACT;qBACD;oBACDA,OAAO;gBACT;aACD;QACH;KACD;IACDmB,UAAU3B;IACV4B,QAAQ;QACNC,QAAQ;QACRC,UAAU;IACZ;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../src/ai/providers/blocks/anthropic.ts"],"sourcesContent":["import type { Block } from 'payload'\n\nimport { AnthropicIcon } from '../icons.js'\n\nexport const anthropicBlock: Block = {\n slug: 'anthropic',\n fields: [\n {\n type: 'tabs',\n tabs: [\n // 1. Setup tab\n {\n fields: [\n {\n name: 'enabled',\n type: 'checkbox',\n defaultValue: true,\n label: 'Enabled',\n },\n {\n name: 'apiKey',\n type: 'text',\n admin: {\n components: {\n Field: '@ai-stack/payloadcms/client#EncryptedTextField',\n },\n description: 'Your Anthropic API key. Will be encrypted in the database.',\n },\n label: 'API Key',\n required: true,\n },\n ],\n label: 'Setup',\n },\n\n // 3. Models tab\n {\n fields: [\n {\n name: 'models',\n type: 'array',\n admin: {\n components: {\n RowLabel: '@ai-stack/payloadcms/client#ModelRowLabel',\n },\n initCollapsed: true,\n },\n defaultValue: [\n { id: 'claude-opus-4-1', name: 'Claude Opus 4.1', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'claude-opus-4-0', name: 'Claude Opus 4.0', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'claude-sonnet-4-0', name: 'Claude Sonnet 4.0', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n {\n id: 'claude-3-5-sonnet-latest',\n name: 'Claude 3.5 Sonnet',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'claude-3-5-haiku-latest',\n name: 'Claude 3.5 Haiku',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n ],\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'id',\n type: 'text',\n admin: { width: '33%' },\n label: 'Model ID',\n required: true,\n },\n {\n name: 'name',\n type: 'text',\n admin: { width: '33%' },\n label: 'Display Name',\n required: true,\n },\n {\n name: 'useCase',\n type: 'select',\n admin: { width: '33%' },\n dbName: 'anthropic-model-useCase',\n defaultValue: 'text',\n label: 'Use Case',\n options: [{ label: 'Text Generation', value: 'text' }],\n },\n ],\n },\n {\n name: 'responseModalities',\n type: 'select',\n admin: {\n description: 'Output capabilities of this model',\n width: '50%',\n },\n dbName: 'anthropic-model-modalities',\n hasMany: true,\n label: 'Response Modalities',\n options: [\n { label: 'Text', value: 'TEXT' },\n { label: 'Image', value: 'IMAGE' },\n { label: 'Audio', value: 'AUDIO' },\n ],\n },\n {\n name: 'enabled',\n type: 'checkbox',\n admin: {\n width: '50%',\n },\n defaultValue: true,\n label: 'Enabled',\n },\n ],\n label: 'Available Models',\n },\n ],\n label: 'Models',\n },\n ],\n },\n ],\n imageURL: AnthropicIcon,\n labels: {\n plural: 'Anthropic Providers',\n singular: 'Anthropic',\n },\n}\n"],"names":["AnthropicIcon","anthropicBlock","slug","fields","type","tabs","name","defaultValue","label","admin","components","Field","description","required","RowLabel","initCollapsed","id","enabled","responseModalities","useCase","width","dbName","options","value","hasMany","imageURL","labels","plural","singular"],"mappings":"AAEA,SAASA,aAAa,QAAQ,cAAa;AAE3C,OAAO,MAAMC,iBAAwB;IACnCC,MAAM;IACNC,QAAQ;QACN;YACEC,MAAM;YACNC,MAAM;gBACJ,eAAe;gBACf;oBACEF,QAAQ;wBACN;4BACEG,MAAM;4BACNF,MAAM;4BACNG,cAAc;4BACdC,OAAO;wBACT;wBACA;4BACEF,MAAM;4BACNF,MAAM;4BACNK,OAAO;gCACLC,YAAY;oCACVC,OAAO;gCACT;gCACAC,aAAa;4BACf;4BACAJ,OAAO;4BACPK,UAAU;wBACZ;qBACD;oBACDL,OAAO;gBACT;gBAEA,gBAAgB;gBAChB;oBACEL,QAAQ;wBACN;4BACEG,MAAM;4BACNF,MAAM;4BACNK,OAAO;gCACLC,YAAY;oCACVI,UAAU;gCACZ;gCACAC,eAAe;4BACjB;4BACAR,cAAc;gCACZ;oCAAES,IAAI;oCAAmBV,MAAM;oCAAmBW,SAAS;oCAAMC,oBAAoB;wCAAC;qCAAO;oCAAEC,SAAS;gCAAO;gCAC/G;oCAAEH,IAAI;oCAAmBV,MAAM;oCAAmBW,SAAS;oCAAMC,oBAAoB;wCAAC;qCAAO;oCAAEC,SAAS;gCAAO;gCAC/G;oCAAEH,IAAI;oCAAqBV,MAAM;oCAAqBW,SAAS;oCAAMC,oBAAoB;wCAAC;qCAAO;oCAAEC,SAAS;gCAAO;gCACnH;oCACEH,IAAI;oCACJV,MAAM;oCACNW,SAAS;oCACTC,oBAAoB;wCAAC;qCAAO;oCAC5BC,SAAS;gCACX;gCACA;oCACEH,IAAI;oCACJV,MAAM;oCACNW,SAAS;oCACTC,oBAAoB;wCAAC;qCAAO;oCAC5BC,SAAS;gCACX;6BACD;4BACDhB,QAAQ;gCACN;oCACEC,MAAM;oCACND,QAAQ;wCACN;4CACEG,MAAM;4CACNF,MAAM;4CACNK,OAAO;gDAAEW,OAAO;4CAAM;4CACtBZ,OAAO;4CACPK,UAAU;wCACZ;wCACA;4CACEP,MAAM;4CACNF,MAAM;4CACNK,OAAO;gDAAEW,OAAO;4CAAM;4CACtBZ,OAAO;4CACPK,UAAU;wCACZ;wCACA;4CACEP,MAAM;4CACNF,MAAM;4CACNK,OAAO;gDAAEW,OAAO;4CAAM;4CACtBC,QAAQ;4CACRd,cAAc;4CACdC,OAAO;4CACPc,SAAS;gDAAC;oDAAEd,OAAO;oDAAmBe,OAAO;gDAAO;6CAAE;wCACxD;qCACD;gCACH;gCACA;oCACEjB,MAAM;oCACNF,MAAM;oCACNK,OAAO;wCACLG,aAAa;wCACbQ,OAAO;oCACT;oCACAC,QAAQ;oCACRG,SAAS;oCACThB,OAAO;oCACPc,SAAS;wCACP;4CAAEd,OAAO;4CAAQe,OAAO;wCAAO;wCAC/B;4CAAEf,OAAO;4CAASe,OAAO;wCAAQ;wCACjC;4CAAEf,OAAO;4CAASe,OAAO;wCAAQ;qCAClC;gCACH;gCACA;oCACEjB,MAAM;oCACNF,MAAM;oCACNK,OAAO;wCACLW,OAAO;oCACT;oCACAb,cAAc;oCACdC,OAAO;gCACT;6BACD;4BACDA,OAAO;wBACT;qBACD;oBACDA,OAAO;gBACT;aACD;QACH;KACD;IACDiB,UAAUzB;IACV0B,QAAQ;QACNC,QAAQ;QACRC,UAAU;IACZ;AACF,EAAC"}