@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
@@ -29,59 +29,6 @@ export const xaiBlock = {
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: 2.0,
48
- min: 0.0
49
- },
50
- {
51
- name: 'max_tokens',
52
- type: 'number',
53
- label: 'Max Tokens'
54
- },
55
- {
56
- name: 'top_p',
57
- type: 'number',
58
- defaultValue: 1.0,
59
- label: 'Top P',
60
- max: 1.0,
61
- min: 0.0
62
- },
63
- {
64
- name: 'frequency_penalty',
65
- type: 'number',
66
- defaultValue: 0,
67
- label: 'Frequency Penalty',
68
- max: 2,
69
- min: -2
70
- },
71
- {
72
- name: 'presence_penalty',
73
- type: 'number',
74
- defaultValue: 0,
75
- label: 'Presence Penalty',
76
- max: 2,
77
- min: -2
78
- }
79
- ],
80
- label: 'Text Provider Options'
81
- }
82
- ],
83
- label: 'Provider Options'
84
- },
85
32
  // 3. Models tab
86
33
  {
87
34
  fields: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/ai/providers/blocks/xai.ts"],"sourcesContent":["import type { Block } from 'payload'\n\nimport { XAIIcon } from '../icons.js'\n\nexport const xaiBlock: Block = {\n slug: 'xai',\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 xAI 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: 2.0,\n min: 0.0,\n },\n {\n name: 'max_tokens',\n type: 'number',\n label: 'Max Tokens',\n },\n {\n name: 'top_p',\n type: 'number',\n defaultValue: 1.0,\n label: 'Top P',\n max: 1.0,\n min: 0.0,\n },\n {\n name: 'frequency_penalty',\n type: 'number',\n defaultValue: 0,\n label: 'Frequency Penalty',\n max: 2,\n min: -2,\n },\n {\n name: 'presence_penalty',\n type: 'number',\n defaultValue: 0,\n label: 'Presence Penalty',\n max: 2,\n min: -2,\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: 'grok-4', name: 'Grok 4', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-3', name: 'Grok 3', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-3-fast', name: 'Grok 3 Fast', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-2-1212', name: 'Grok 2', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-2-vision-1212', name: 'Grok 2 Vision', enabled: true, responseModalities: ['TEXT'], useCase: 'image' },\n { id: 'grok-vision-beta', name: 'Grok Vision Beta', enabled: true, responseModalities: ['TEXT'], useCase: 'image' },\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: 'xai-model-useCase',\n label: 'Use Case',\n options: [\n { label: 'Text Generation', value: 'text' },\n { label: 'Image Generation', value: 'image' },\n ],\n required: true,\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: 'xai-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: XAIIcon,\n labels: {\n plural: 'xAI Providers',\n singular: 'xAI Grok',\n },\n}\n\n"],"names":["XAIIcon","xaiBlock","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":"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"}
1
+ {"version":3,"sources":["../../../../src/ai/providers/blocks/xai.ts"],"sourcesContent":["import type { Block } from 'payload'\n\nimport { XAIIcon } from '../icons.js'\n\nexport const xaiBlock: Block = {\n slug: 'xai',\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 xAI 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: 'grok-4', name: 'Grok 4', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-3', name: 'Grok 3', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-3-fast', name: 'Grok 3 Fast', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-2-1212', name: 'Grok 2', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-2-vision-1212', name: 'Grok 2 Vision', enabled: true, responseModalities: ['TEXT'], useCase: 'image' },\n { id: 'grok-vision-beta', name: 'Grok Vision Beta', enabled: true, responseModalities: ['TEXT'], useCase: 'image' },\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: 'xai-model-useCase',\n label: 'Use Case',\n options: [\n { label: 'Text Generation', value: 'text' },\n { label: 'Image Generation', value: 'image' },\n ],\n required: true,\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: 'xai-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: XAIIcon,\n labels: {\n plural: 'xAI Providers',\n singular: 'xAI Grok',\n },\n}\n"],"names":["XAIIcon","xaiBlock","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,OAAO,QAAQ,cAAa;AAErC,OAAO,MAAMC,WAAkB;IAC7BC,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;oCAAUV,MAAM;oCAAUW,SAAS;oCAAMC,oBAAoB;wCAAC;qCAAO;oCAAEC,SAAS;gCAAO;gCAC7F;oCAAEH,IAAI;oCAAUV,MAAM;oCAAUW,SAAS;oCAAMC,oBAAoB;wCAAC;qCAAO;oCAAEC,SAAS;gCAAO;gCAC7F;oCAAEH,IAAI;oCAAeV,MAAM;oCAAeW,SAAS;oCAAMC,oBAAoB;wCAAC;qCAAO;oCAAEC,SAAS;gCAAO;gCACvG;oCAAEH,IAAI;oCAAeV,MAAM;oCAAUW,SAAS;oCAAMC,oBAAoB;wCAAC;qCAAO;oCAAEC,SAAS;gCAAO;gCAClG;oCAAEH,IAAI;oCAAsBV,MAAM;oCAAiBW,SAAS;oCAAMC,oBAAoB;wCAAC;qCAAO;oCAAEC,SAAS;gCAAQ;gCACjH;oCAAEH,IAAI;oCAAoBV,MAAM;oCAAoBW,SAAS;oCAAMC,oBAAoB;wCAAC;qCAAO;oCAAEC,SAAS;gCAAQ;6BACnH;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;4CACRb,OAAO;4CACPc,SAAS;gDACP;oDAAEd,OAAO;oDAAmBe,OAAO;gDAAO;gDAC1C;oDAAEf,OAAO;oDAAoBe,OAAO;gDAAQ;6CAC7C;4CACDV,UAAU;wCACZ;qCACD;gCACH;gCACA;oCACEP,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"}
@@ -1,2 +1,2 @@
1
1
  export * from './registry.js';
2
- export type { ProviderId } from './registry.js';
2
+ export type { ProviderId } from './types.js';
@@ -1,6 +1,4 @@
1
1
  // Re-export everything from registry
2
2
  export * from './registry.js';
3
- // NOTE: Static TEXT_MODEL_OPTIONS and availableTextProviders have been removed
4
- // in favor of dynamic loading from AI Settings.
5
3
 
6
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ai/providers/index.ts"],"sourcesContent":["// Re-export everything from registry\nexport * from './registry.js'\n\n// Export types\nexport type { ProviderId } from './registry.js'\n\n// NOTE: Static TEXT_MODEL_OPTIONS and availableTextProviders have been removed\n// in favor of dynamic loading from AI Settings.\n\n\n"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,cAAc,gBAAe;CAK7B,+EAA+E;CAC/E,gDAAgD"}
1
+ {"version":3,"sources":["../../../src/ai/providers/index.ts"],"sourcesContent":["// Re-export everything from registry\nexport * from './registry.js'\n\n// Export types\nexport type { ProviderId } from './types.js'\n"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,cAAc,gBAAe"}
@@ -1,40 +1,36 @@
1
1
  import type { LanguageModel } from 'ai';
2
2
  import type { Payload } from 'payload';
3
- export type { ProviderId } from './types.js';
4
3
  import type { ProviderRegistry } from './types.js';
4
+ export declare function toAISDKProviderOptions({ defaultsForUseCase, providerId, settingsOverride, }: {
5
+ defaultsForUseCase?: {
6
+ provider?: string;
7
+ };
8
+ providerId?: string;
9
+ settingsOverride?: Record<string, unknown>;
10
+ }): Record<string, Record<string, any>> | undefined;
11
+ export declare function invalidateProviderCache(): void;
5
12
  /**
6
- * Load provider registry from AI Settings (type-safe)
13
+ * Load provider registry from AI Settings (cached with TTL).
7
14
  */
8
15
  export declare function getProviderRegistry(payload: Payload): Promise<ProviderRegistry>;
9
16
  /**
10
- * Get global defaults from AI Settings
17
+ * Get global defaults from AI Settings (cached with TTL).
11
18
  */
12
19
  export declare function getGlobalDefaults(payload: Payload): Promise<{
13
- image?: {
14
- model: string;
15
- options?: Record<string, any>;
16
- provider: string;
17
- };
18
- text?: {
19
- model: string;
20
- options?: Record<string, any>;
21
- provider: string;
22
- };
23
- tts?: {
24
- model: string;
25
- options?: Record<string, any>;
26
- provider: string;
27
- voice?: string;
28
- };
29
- video?: {
30
- model: string;
31
- options?: Record<string, any>;
32
- provider: string;
33
- };
20
+ image?: import("./types.js").UseCaseDefaults;
21
+ text?: import("./types.js").UseCaseDefaults;
22
+ tts?: import("./types.js").UseCaseDefaults;
23
+ video?: import("./types.js").UseCaseDefaults;
34
24
  }>;
35
25
  /**
36
- * Get language model (type-safe, async)
26
+ * Get language model (cached registry + single defaults call).
27
+ */
28
+ export declare function getLanguageModel(payload: Payload, providerId?: string, modelId?: string, settingsOverride?: Record<string, unknown>): Promise<LanguageModel>;
29
+ /**
30
+ * Get image model (cached registry + single defaults call).
31
+ */
32
+ export declare function getImageModel(payload: Payload, providerId?: string, modelId?: string, isMultimodalText?: boolean, settingsOverride?: Record<string, unknown>): Promise<any>;
33
+ /**
34
+ * Get TTS model (cached registry + single defaults call).
37
35
  */
38
- export declare function getLanguageModel(payload: Payload, providerId?: string, modelId?: string, options?: Record<string, any>): Promise<LanguageModel>;
39
- export declare function getImageModel(payload: Payload, providerId?: string, modelId?: string, options?: Record<string, any>, isMultimodalText?: boolean): Promise<any>;
40
- export declare function getTTSModel(payload: Payload, providerId?: string, modelId?: string, options?: Record<string, any>): Promise<any>;
36
+ export declare function getTTSModel(payload: Payload, providerId?: string, modelId?: string, settingsOverride?: Record<string, unknown>): Promise<any>;
@@ -1,5 +1,68 @@
1
1
  import * as process from 'node:process';
2
- // Type-safe provider factory functions
2
+ function isRecord(value) {
3
+ return !!value && typeof value === 'object' && !Array.isArray(value);
4
+ }
5
+ function resolveProviderOptions(settingsForUseCase) {
6
+ if (!settingsForUseCase) {
7
+ return {};
8
+ }
9
+ const provider = settingsForUseCase.provider;
10
+ if (provider) {
11
+ const allOptions = settingsForUseCase.providerOptions;
12
+ return allOptions?.[provider] || {};
13
+ }
14
+ return {};
15
+ }
16
+ function deepMergeOptions(base, override) {
17
+ const merged = {
18
+ ...base
19
+ };
20
+ for (const [key, value] of Object.entries(override)){
21
+ const current = merged[key];
22
+ if (current && value && typeof current === 'object' && typeof value === 'object' && !Array.isArray(current) && !Array.isArray(value)) {
23
+ merged[key] = deepMergeOptions(current, value);
24
+ continue;
25
+ }
26
+ merged[key] = value;
27
+ }
28
+ return merged;
29
+ }
30
+ function resolveEffectiveProviderOptions({ defaultsForUseCase, providerId, settingsOverride }) {
31
+ const preNormalizedOptions = providerId && isRecord(settingsOverride) && isRecord(settingsOverride[providerId]) ? settingsOverride[providerId] : {};
32
+ const globalDefaultOptions = defaultsForUseCase?.provider === providerId ? resolveProviderOptions(defaultsForUseCase) : {};
33
+ const overrideOptions = Object.keys(preNormalizedOptions).length > 0 ? preNormalizedOptions : settingsOverride?.provider === providerId ? resolveProviderOptions(settingsOverride) : {};
34
+ return deepMergeOptions(globalDefaultOptions, overrideOptions);
35
+ }
36
+ export function toAISDKProviderOptions({ defaultsForUseCase, providerId, settingsOverride }) {
37
+ if (!providerId) {
38
+ return undefined;
39
+ }
40
+ const resolved = resolveEffectiveProviderOptions({
41
+ defaultsForUseCase,
42
+ providerId,
43
+ settingsOverride
44
+ });
45
+ if (Object.keys(resolved).length === 0) {
46
+ return undefined;
47
+ }
48
+ return {
49
+ [providerId]: resolved
50
+ };
51
+ }
52
+ // ─── Cache layer ────────────────────────────────────────────────
53
+ // Module-level caches with TTL to avoid redundant DB queries.
54
+ // A single text-generation request previously triggered 3 findGlobal
55
+ // calls; with this cache the DB is hit at most once per TTL window.
56
+ const CACHE_TTL = 60_000 // 60 seconds
57
+ ;
58
+ let registryCache = null;
59
+ let defaultsCache = null;
60
+ // Allow external invalidation (e.g. after saving AISettings)
61
+ export function invalidateProviderCache() {
62
+ registryCache = null;
63
+ defaultsCache = null;
64
+ }
65
+ // ─── Provider factory functions ─────────────────────────────────
3
66
  const providerFactories = {
4
67
  anthropic: async (block)=>{
5
68
  const { createAnthropic } = await import('@ai-sdk/anthropic');
@@ -15,7 +78,6 @@ const providerFactories = {
15
78
  },
16
79
  fal: async (block)=>{
17
80
  const { fal } = await import('@ai-sdk/fal');
18
- // Fal uses global instance, configure with apiKey
19
81
  process.env.FAL_KEY = block.apiKey;
20
82
  if (block.webhookSecret) {
21
83
  process.env.FAL_WEBHOOK_SECRET = block.webhookSecret;
@@ -37,7 +99,6 @@ const providerFactories = {
37
99
  });
38
100
  },
39
101
  'openai-compatible': async (block)=>{
40
- console.log('OpenAI compatible, ', block);
41
102
  const { createOpenAICompatible } = await import('@ai-sdk/openai-compatible');
42
103
  return createOpenAICompatible({
43
104
  name: block.providerName,
@@ -52,14 +113,54 @@ const providerFactories = {
52
113
  });
53
114
  }
54
115
  };
55
- /**
56
- * Type guard to check provider block type
57
- */ function isProviderBlock(block, blockType) {
116
+ // ─── Helpers ────────────────────────────────────────────────────
117
+ function isProviderBlock(block, blockType) {
58
118
  return block.blockType === blockType;
59
119
  }
120
+ function getFactoryForBlock(providerBlock) {
121
+ if (isProviderBlock(providerBlock, 'openai')) {
122
+ return ()=>providerFactories.openai(providerBlock);
123
+ }
124
+ if (isProviderBlock(providerBlock, 'anthropic')) {
125
+ return ()=>providerFactories.anthropic(providerBlock);
126
+ }
127
+ if (isProviderBlock(providerBlock, 'google')) {
128
+ return ()=>providerFactories.google(providerBlock);
129
+ }
130
+ if (isProviderBlock(providerBlock, 'xai')) {
131
+ return ()=>providerFactories.xai(providerBlock);
132
+ }
133
+ if (isProviderBlock(providerBlock, 'fal')) {
134
+ return ()=>providerFactories.fal(providerBlock);
135
+ }
136
+ if (isProviderBlock(providerBlock, 'elevenlabs')) {
137
+ return ()=>providerFactories.elevenlabs(providerBlock);
138
+ }
139
+ if (isProviderBlock(providerBlock, 'openai-compatible')) {
140
+ return ()=>providerFactories['openai-compatible'](providerBlock);
141
+ }
142
+ return undefined;
143
+ }
60
144
  /**
61
- * Load provider registry from AI Settings (type-safe)
145
+ * Resolve the provider SDK instance, caching after first call.
146
+ */ async function resolveProviderInstance(provider) {
147
+ if (provider.instance) {
148
+ return provider.instance;
149
+ }
150
+ if (!provider.factory) {
151
+ throw new Error(`Provider ${provider.id} has no factory or instance`);
152
+ }
153
+ const instance = await provider.factory();
154
+ provider.instance = instance;
155
+ return instance;
156
+ }
157
+ // ─── Public API ─────────────────────────────────────────────────
158
+ /**
159
+ * Load provider registry from AI Settings (cached with TTL).
62
160
  */ export async function getProviderRegistry(payload) {
161
+ if (registryCache && Date.now() - registryCache.timestamp < CACHE_TTL) {
162
+ return registryCache.data;
163
+ }
63
164
  const settings = await payload.findGlobal({
64
165
  slug: 'ai-providers',
65
166
  context: {
@@ -67,41 +168,17 @@ const providerFactories = {
67
168
  }
68
169
  });
69
170
  const registry = {};
70
- // console.log('settings - >', JSON.stringify(settings, null, 2))
71
171
  for (const providerBlock of settings.providers || []){
72
172
  if (!providerBlock.enabled) {
73
173
  continue;
74
174
  }
75
175
  const { blockType } = providerBlock;
76
- // Type-safe factory lookup and invocation
77
- let factory;
78
- if (isProviderBlock(providerBlock, 'openai')) {
79
- factory = ()=>providerFactories.openai(providerBlock);
80
- } else if (isProviderBlock(providerBlock, 'anthropic')) {
81
- factory = ()=>providerFactories.anthropic(providerBlock);
82
- } else if (isProviderBlock(providerBlock, 'google')) {
83
- factory = ()=>providerFactories.google(providerBlock);
84
- } else if (isProviderBlock(providerBlock, 'xai')) {
85
- factory = ()=>providerFactories.xai(providerBlock);
86
- } else if (isProviderBlock(providerBlock, 'fal')) {
87
- factory = ()=>providerFactories.fal(providerBlock);
88
- } else if (isProviderBlock(providerBlock, 'elevenlabs')) {
89
- factory = ()=>providerFactories.elevenlabs(providerBlock);
90
- } else if (isProviderBlock(providerBlock, 'openai-compatible')) {
91
- factory = ()=>providerFactories['openai-compatible'](providerBlock);
92
- }
176
+ const factory = getFactoryForBlock(providerBlock);
93
177
  if (!factory) {
94
- console.warn(`No factory for provider: ${blockType}`);
178
+ payload.logger.warn(`— AI Plugin: No factory for provider: ${blockType}`);
95
179
  continue;
96
180
  }
97
- // Filter enabled models only
98
181
  const enabledModels = providerBlock.models.filter((m)=>m.enabled);
99
- // Extract provider options
100
- const options = {
101
- image: 'imageProviderOptions' in providerBlock ? providerBlock.imageProviderOptions : undefined,
102
- text: 'textProviderOptions' in providerBlock ? providerBlock.textProviderOptions : undefined,
103
- tts: 'ttsProviderOptions' in providerBlock ? providerBlock.ttsProviderOptions : undefined
104
- };
105
182
  registry[blockType] = {
106
183
  id: blockType,
107
184
  name: 'providerName' in providerBlock ? providerBlock.providerName : blockType,
@@ -109,44 +186,49 @@ const providerFactories = {
109
186
  enabled: true,
110
187
  factory,
111
188
  instance: undefined,
112
- models: enabledModels,
113
- options
189
+ models: enabledModels
114
190
  };
115
191
  }
192
+ // Also cache defaults from the same settings fetch to save a second query
193
+ defaultsCache = {
194
+ data: settings.defaults,
195
+ timestamp: Date.now()
196
+ };
197
+ registryCache = {
198
+ data: registry,
199
+ timestamp: Date.now()
200
+ };
116
201
  return registry;
117
202
  }
118
203
  /**
119
- * Get global defaults from AI Settings
204
+ * Get global defaults from AI Settings (cached with TTL).
120
205
  */ export async function getGlobalDefaults(payload) {
206
+ if (defaultsCache && Date.now() - defaultsCache.timestamp < CACHE_TTL) {
207
+ return defaultsCache.data;
208
+ }
121
209
  const settings = await payload.findGlobal({
122
210
  slug: 'ai-providers'
123
211
  });
212
+ defaultsCache = {
213
+ data: settings.defaults,
214
+ timestamp: Date.now()
215
+ };
124
216
  return settings.defaults;
125
217
  }
126
218
  /**
127
- * Get language model (type-safe, async)
128
- */ export async function getLanguageModel(payload, providerId, modelId, options) {
129
- if (!providerId || !modelId) {
130
- const defaults = await getGlobalDefaults(payload);
131
- if (!providerId) {
132
- providerId = defaults?.text?.provider;
133
- }
134
- if (!modelId) {
135
- modelId = defaults?.text?.model;
136
- }
219
+ * Get language model (cached registry + single defaults call).
220
+ */ export async function getLanguageModel(payload, providerId, modelId, settingsOverride) {
221
+ const registry = await getProviderRegistry(payload);
222
+ const defaults = await getGlobalDefaults(payload);
223
+ if (!providerId) {
224
+ providerId = defaults?.text?.provider;
137
225
  }
138
- // Extract global default options if we are using the default provider
139
- let globalDefaultOptions = {};
140
- if (providerId) {
141
- const defaults = await getGlobalDefaults(payload);
142
- if (defaults?.text?.provider === providerId) {
143
- globalDefaultOptions = defaults?.text?.options || {};
144
- }
226
+ if (!modelId) {
227
+ modelId = defaults?.text?.model;
145
228
  }
146
229
  if (!providerId || !modelId) {
147
230
  throw new Error('Provider and model must be specified or configured in defaults');
148
231
  }
149
- const registry = await getProviderRegistry(payload);
150
232
  const provider = registry[providerId];
151
233
  if (!provider) {
152
234
  throw new Error(`Provider ${providerId} not found in registry`);
@@ -154,113 +236,77 @@ const providerFactories = {
154
236
  if (!provider.enabled) {
155
237
  throw new Error(`Provider ${providerId} is not enabled`);
156
238
  }
157
- // We only support factory now for dynamic loading, instance is legacy/cache
158
- let providerInstance;
159
- if (provider.instance) {
160
- providerInstance = provider.instance;
161
- } else if (provider.factory) {
162
- providerInstance = await provider.factory();
163
- } else {
164
- throw new Error(`Provider ${providerId} has no factory or instance`);
165
- }
166
- // Merge default settings with override options
167
- const finalOptions = {
168
- ...provider.options?.text || {},
169
- ...globalDefaultOptions,
170
- ...options || {}
171
- };
172
- return providerInstance(modelId, finalOptions);
239
+ const options = resolveEffectiveProviderOptions({
240
+ defaultsForUseCase: defaults?.text,
241
+ providerId,
242
+ settingsOverride
243
+ });
244
+ const providerInstance = await resolveProviderInstance(provider);
245
+ return providerInstance(modelId, options);
173
246
  }
174
- export async function getImageModel(payload, providerId, modelId, options, isMultimodalText) {
175
- if (!providerId || !modelId) {
176
- const defaults = await getGlobalDefaults(payload);
177
- if (!providerId) {
178
- providerId = defaults?.image?.provider;
179
- }
180
- if (!modelId) {
181
- modelId = defaults?.image?.model;
182
- }
247
+ /**
248
+ * Get image model (cached registry + single defaults call).
249
+ */ export async function getImageModel(payload, providerId, modelId, isMultimodalText, settingsOverride) {
250
+ const registry = await getProviderRegistry(payload);
251
+ const defaults = await getGlobalDefaults(payload);
252
+ if (!providerId) {
253
+ providerId = defaults?.image?.provider;
183
254
  }
184
- // Extract global default options if we are using the default provider
185
- let globalDefaultOptions = {};
186
- if (providerId) {
187
- const defaults = await getGlobalDefaults(payload);
188
- if (defaults?.image?.provider === providerId) {
189
- globalDefaultOptions = defaults?.image?.options || {};
190
- }
255
+ if (!modelId) {
256
+ modelId = defaults?.image?.model;
191
257
  }
192
258
  if (!providerId || !modelId) {
193
259
  throw new Error('Provider and model must be specified or configured in defaults');
194
260
  }
195
- const registry = await getProviderRegistry(payload);
196
261
  const provider = registry[providerId];
197
262
  if (!provider) {
198
263
  throw new Error(`Provider ${providerId} not found`);
199
264
  }
200
- // Merge default settings with override options
201
- const finalOptions = {
202
- ...provider.options?.image || {},
203
- ...globalDefaultOptions,
204
- ...options || {}
205
- };
206
- if (provider.instance) {
207
- return provider.instance;
265
+ const options = resolveEffectiveProviderOptions({
266
+ defaultsForUseCase: defaults?.image,
267
+ providerId,
268
+ settingsOverride
269
+ });
270
+ const instance = await resolveProviderInstance(provider);
271
+ // Type-safe check for image support
272
+ if (!isMultimodalText && typeof instance === 'function' && 'image' in instance && typeof instance.image === 'function') {
273
+ return instance.image(modelId, options);
208
274
  }
209
- if (provider.factory) {
210
- const instance = await provider.factory();
211
- // Type-safe check for image support
212
- if (!isMultimodalText && typeof instance === 'function' && 'image' in instance && typeof instance.image === 'function') {
213
- return instance.image(modelId, finalOptions);
214
- }
215
- // Also check if instance is an object with image method
216
- if (typeof instance === 'object' && instance !== null && 'image' in instance && !isMultimodalText) {
217
- return instance.image?.(modelId, finalOptions);
218
- }
219
- // Fallback for providers that might return the model directly or use the default factory
220
- return typeof instance === 'function' ? instance(modelId, finalOptions) : instance;
275
+ // Also check if instance is an object with image method
276
+ if (typeof instance === 'object' && instance !== null && 'image' in instance && !isMultimodalText) {
277
+ return instance.image?.(modelId, options);
221
278
  }
222
- throw new Error(`Invalid provider configuration for ${providerId}`);
279
+ // Fallback for providers that might return the model directly
280
+ return typeof instance === 'function' ? instance(modelId, options) : instance;
223
281
  }
224
- export async function getTTSModel(payload, providerId, modelId, options) {
225
- if (!providerId || !modelId) {
226
- const defaults = await getGlobalDefaults(payload);
227
- if (!providerId) {
228
- providerId = defaults?.tts?.provider;
229
- }
230
- if (!modelId) {
231
- modelId = defaults?.tts?.model;
232
- }
282
+ /**
283
+ * Get TTS model (cached registry + single defaults call).
284
+ */ export async function getTTSModel(payload, providerId, modelId, settingsOverride) {
285
+ const registry = await getProviderRegistry(payload);
286
+ const defaults = await getGlobalDefaults(payload);
287
+ if (!providerId) {
288
+ providerId = defaults?.tts?.provider;
233
289
  }
234
- // Extract global default options if we are using the default provider
235
- let globalDefaultOptions = {};
236
- if (providerId) {
237
- const defaults = await getGlobalDefaults(payload);
238
- if (defaults?.tts?.provider === providerId) {
239
- globalDefaultOptions = defaults?.tts?.options || {};
240
- }
290
+ if (!modelId) {
291
+ modelId = defaults?.tts?.model;
241
292
  }
242
293
  if (!providerId || !modelId) {
243
294
  throw new Error('Provider and model must be specified or configured in defaults');
244
295
  }
245
- const registry = await getProviderRegistry(payload);
246
296
  const provider = registry[providerId];
247
297
  if (!provider) {
248
298
  throw new Error(`Provider ${providerId} not found`);
249
299
  }
250
- // Merge default settings with override options
251
- const finalOptions = {
252
- ...provider.options?.tts || {},
253
- ...globalDefaultOptions,
254
- ...options || {}
255
- };
256
- if (provider.factory) {
257
- const instance = await provider.factory();
258
- if (instance?.speech) {
259
- return instance.speech(modelId, finalOptions);
260
- }
261
- return typeof instance === 'function' ? instance(modelId, finalOptions) : instance;
300
+ const options = resolveEffectiveProviderOptions({
301
+ defaultsForUseCase: defaults?.tts,
302
+ providerId,
303
+ settingsOverride
304
+ });
305
+ const instance = await resolveProviderInstance(provider);
306
+ if (instance?.speech) {
307
+ return instance.speech(modelId, options);
262
308
  }
263
- throw new Error(`Invalid provider configuration for ${providerId}`);
309
+ return typeof instance === 'function' ? instance(modelId, options) : instance;
264
310
  }
265
311
 
266
312
  //# sourceMappingURL=registry.js.map