@ai-stack/payloadcms 3.2.26 → 3.68.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 (313) hide show
  1. package/{LICENSE.md → LICENSE} +1 -1
  2. package/README.md +218 -229
  3. package/dist/access/checkAccess.d.ts +4 -0
  4. package/dist/access/checkAccess.js +20 -0
  5. package/dist/access/checkAccess.js.map +1 -0
  6. package/dist/ai/core/generateObject.d.ts +7 -0
  7. package/dist/ai/core/generateObject.js +35 -0
  8. package/dist/ai/core/generateObject.js.map +1 -0
  9. package/dist/ai/core/generateText.d.ts +7 -0
  10. package/dist/ai/core/generateText.js +31 -0
  11. package/dist/ai/core/generateText.js.map +1 -0
  12. package/dist/ai/core/index.d.ts +11 -0
  13. package/dist/ai/core/index.js +10 -0
  14. package/dist/ai/core/index.js.map +1 -0
  15. package/dist/ai/core/media/generateMedia.d.ts +7 -0
  16. package/dist/ai/core/media/generateMedia.js +50 -0
  17. package/dist/ai/core/media/generateMedia.js.map +1 -0
  18. package/dist/ai/core/media/image/generateImage.d.ts +6 -0
  19. package/dist/ai/core/media/image/generateImage.js +41 -0
  20. package/dist/ai/core/media/image/generateImage.js.map +1 -0
  21. package/dist/ai/core/media/image/handlers/multimodal.d.ts +7 -0
  22. package/dist/ai/core/media/image/handlers/multimodal.js +100 -0
  23. package/dist/ai/core/media/image/handlers/multimodal.js.map +1 -0
  24. package/dist/ai/core/media/image/handlers/standard.d.ts +7 -0
  25. package/dist/ai/core/media/image/handlers/standard.js +28 -0
  26. package/dist/ai/core/media/image/handlers/standard.js.map +1 -0
  27. package/dist/ai/core/media/image/index.d.ts +2 -0
  28. package/dist/ai/core/media/image/index.js +3 -0
  29. package/dist/ai/core/media/image/index.js.map +1 -0
  30. package/dist/ai/core/media/index.d.ts +2 -0
  31. package/dist/ai/core/media/index.js +3 -0
  32. package/dist/ai/core/media/index.js.map +1 -0
  33. package/dist/ai/core/media/speech/generateSpeech.d.ts +5 -0
  34. package/dist/ai/core/media/speech/generateSpeech.js +55 -0
  35. package/dist/ai/core/media/speech/generateSpeech.js.map +1 -0
  36. package/dist/ai/core/media/speech/index.d.ts +2 -0
  37. package/dist/ai/core/media/speech/index.js +3 -0
  38. package/dist/ai/core/media/speech/index.js.map +1 -0
  39. package/dist/ai/core/media/types.d.ts +74 -0
  40. package/dist/ai/core/media/types.js +5 -0
  41. package/dist/ai/core/media/types.js.map +1 -0
  42. package/dist/ai/core/media/utils.d.ts +11 -0
  43. package/dist/ai/core/media/utils.js +34 -0
  44. package/dist/ai/core/media/utils.js.map +1 -0
  45. package/dist/ai/core/media/video/generateVideo.d.ts +6 -0
  46. package/dist/ai/core/media/video/generateVideo.js +32 -0
  47. package/dist/ai/core/media/video/generateVideo.js.map +1 -0
  48. package/dist/ai/core/media/video/index.d.ts +2 -0
  49. package/dist/ai/core/media/video/index.js +3 -0
  50. package/dist/ai/core/media/video/index.js.map +1 -0
  51. package/dist/ai/core/streamObject.d.ts +7 -0
  52. package/dist/ai/core/streamObject.js +54 -0
  53. package/dist/ai/core/streamObject.js.map +1 -0
  54. package/dist/ai/core/streamText.d.ts +7 -0
  55. package/dist/ai/core/streamText.js +30 -0
  56. package/dist/ai/core/streamText.js.map +1 -0
  57. package/dist/ai/core/types.d.ts +85 -0
  58. package/dist/ai/core/types.js +5 -0
  59. package/dist/ai/core/types.js.map +1 -0
  60. package/dist/ai/index.d.ts +11 -0
  61. package/dist/ai/index.js +25 -0
  62. package/dist/ai/index.js.map +1 -0
  63. package/dist/ai/providers/blocks/anthropic.d.ts +2 -0
  64. package/dist/ai/providers/blocks/anthropic.js +223 -0
  65. package/dist/ai/providers/blocks/anthropic.js.map +1 -0
  66. package/dist/ai/providers/blocks/elevenlabs.d.ts +2 -0
  67. package/dist/ai/providers/blocks/elevenlabs.js +449 -0
  68. package/dist/ai/providers/blocks/elevenlabs.js.map +1 -0
  69. package/dist/ai/providers/blocks/fal.d.ts +2 -0
  70. package/dist/ai/providers/blocks/fal.js +312 -0
  71. package/dist/ai/providers/blocks/fal.js.map +1 -0
  72. package/dist/ai/providers/blocks/google.d.ts +2 -0
  73. package/dist/ai/providers/blocks/google.js +623 -0
  74. package/dist/ai/providers/blocks/google.js.map +1 -0
  75. package/dist/ai/providers/blocks/index.d.ts +2 -0
  76. package/dist/ai/providers/blocks/index.js +18 -0
  77. package/dist/ai/providers/blocks/index.js.map +1 -0
  78. package/dist/ai/providers/blocks/openai-compatible.d.ts +2 -0
  79. package/dist/ai/providers/blocks/openai-compatible.js +308 -0
  80. package/dist/ai/providers/blocks/openai-compatible.js.map +1 -0
  81. package/dist/ai/providers/blocks/openai.d.ts +2 -0
  82. package/dist/ai/providers/blocks/openai.js +600 -0
  83. package/dist/ai/providers/blocks/openai.js.map +1 -0
  84. package/dist/ai/providers/blocks/xai.d.ts +2 -0
  85. package/dist/ai/providers/blocks/xai.js +247 -0
  86. package/dist/ai/providers/blocks/xai.js.map +1 -0
  87. package/dist/ai/providers/icons.d.ts +7 -0
  88. package/dist/ai/providers/icons.js +9 -0
  89. package/dist/ai/providers/icons.js.map +1 -0
  90. package/dist/ai/providers/index.d.ts +2 -0
  91. package/dist/ai/providers/index.js +6 -0
  92. package/dist/ai/providers/index.js.map +1 -0
  93. package/dist/ai/providers/registry.d.ts +40 -0
  94. package/dist/ai/providers/registry.js +267 -0
  95. package/dist/ai/providers/registry.js.map +1 -0
  96. package/dist/ai/providers/types.d.ts +115 -0
  97. package/dist/ai/providers/types.js +4 -0
  98. package/dist/ai/providers/types.js.map +1 -0
  99. package/dist/ai/utils/systemGenerate.d.ts +1 -1
  100. package/dist/ai/utils/systemGenerate.js +19 -19
  101. package/dist/ai/utils/systemGenerate.js.map +1 -1
  102. package/dist/collections/AIJobs.d.ts +2 -0
  103. package/dist/collections/AIJobs.js +81 -0
  104. package/dist/collections/AIJobs.js.map +1 -0
  105. package/dist/collections/AISettings.d.ts +2 -0
  106. package/dist/collections/AISettings.js +279 -0
  107. package/dist/collections/AISettings.js.map +1 -0
  108. package/dist/collections/Instructions.js +224 -50
  109. package/dist/collections/Instructions.js.map +1 -1
  110. package/dist/defaults.d.ts +3 -0
  111. package/dist/defaults.js +3 -0
  112. package/dist/defaults.js.map +1 -1
  113. package/dist/endpoints/buildPromptUtils.d.ts +19 -0
  114. package/dist/endpoints/buildPromptUtils.js +114 -0
  115. package/dist/endpoints/buildPromptUtils.js.map +1 -0
  116. package/dist/endpoints/chat.d.ts +4 -0
  117. package/dist/endpoints/fetchFields.js +0 -7
  118. package/dist/endpoints/fetchFields.js.map +1 -1
  119. package/dist/endpoints/fetchVoices.d.ts +2 -0
  120. package/dist/endpoints/fetchVoices.js +79 -0
  121. package/dist/endpoints/fetchVoices.js.map +1 -0
  122. package/dist/endpoints/index.js +339 -232
  123. package/dist/endpoints/index.js.map +1 -1
  124. package/dist/exports/client.d.ts +9 -0
  125. package/dist/exports/client.js +9 -0
  126. package/dist/exports/client.js.map +1 -1
  127. package/dist/exports/fields.d.ts +1 -0
  128. package/dist/exports/fields.js +1 -0
  129. package/dist/exports/fields.js.map +1 -1
  130. package/dist/fields/ArrayComposeField/ArrayComposeField.d.ts +15 -0
  131. package/dist/fields/ArrayComposeField/ArrayComposeField.js +87 -0
  132. package/dist/fields/ArrayComposeField/ArrayComposeField.js.map +1 -0
  133. package/dist/fields/ArrayComposeField/ArrayComposeField.jsx +73 -0
  134. package/dist/fields/ComposeField/ComposeField.js +2 -2
  135. package/dist/fields/ComposeField/ComposeField.js.map +1 -1
  136. package/dist/fields/ComposeField/ComposeField.jsx +2 -2
  137. package/dist/fields/PromptEditorField/PromptEditorField.js +162 -16
  138. package/dist/fields/PromptEditorField/PromptEditorField.js.map +1 -1
  139. package/dist/fields/PromptEditorField/PromptEditorField.jsx +123 -5
  140. package/dist/index.d.ts +3 -0
  141. package/dist/index.js +1 -0
  142. package/dist/index.js.map +1 -1
  143. package/dist/init.js +63 -65
  144. package/dist/init.js.map +1 -1
  145. package/dist/payload-ai.d.ts +149 -0
  146. package/dist/plugin.js +94 -46
  147. package/dist/plugin.js.map +1 -1
  148. package/dist/providers/InstructionsProvider/InstructionsProvider.js +38 -7
  149. package/dist/providers/InstructionsProvider/InstructionsProvider.js.map +1 -1
  150. package/dist/providers/InstructionsProvider/InstructionsProvider.jsx +30 -4
  151. package/dist/providers/InstructionsProvider/context.d.ts +1 -0
  152. package/dist/providers/InstructionsProvider/context.js +1 -0
  153. package/dist/providers/InstructionsProvider/context.js.map +1 -1
  154. package/dist/providers/InstructionsProvider/useInstructions.js +30 -10
  155. package/dist/providers/InstructionsProvider/useInstructions.js.map +1 -1
  156. package/dist/styles.d.ts +11 -0
  157. package/dist/types/handlebars-async-helpers.d.ts +1 -0
  158. package/dist/types/handlebars-dist-handlebars.d.ts +1 -0
  159. package/dist/types/react-mentions.d.ts +1 -0
  160. package/dist/types.d.ts +6 -16
  161. package/dist/types.js.map +1 -1
  162. package/dist/ui/AIConfigDashboard/index.d.ts +2 -0
  163. package/dist/ui/AIConfigDashboard/index.js +46 -0
  164. package/dist/ui/AIConfigDashboard/index.js.map +1 -0
  165. package/dist/ui/AIConfigDashboard/index.jsx +24 -0
  166. package/dist/ui/ApiKeyStatusIndicator/index.d.ts +6 -0
  167. package/dist/ui/ApiKeyStatusIndicator/index.js +39 -0
  168. package/dist/ui/ApiKeyStatusIndicator/index.js.map +1 -0
  169. package/dist/ui/ApiKeyStatusIndicator/index.jsx +29 -0
  170. package/dist/ui/Compose/Compose.d.ts +2 -2
  171. package/dist/ui/Compose/Compose.js +118 -92
  172. package/dist/ui/Compose/Compose.js.map +1 -1
  173. package/dist/ui/Compose/Compose.jsx +113 -103
  174. package/dist/ui/Compose/ComposePlaceholder.d.ts +7 -0
  175. package/dist/ui/Compose/ComposePlaceholder.js +78 -0
  176. package/dist/ui/Compose/ComposePlaceholder.js.map +1 -0
  177. package/dist/ui/Compose/ComposePlaceholder.jsx +66 -0
  178. package/dist/ui/Compose/UndoRedoActions.d.ts +2 -2
  179. package/dist/ui/Compose/UndoRedoActions.js +11 -6
  180. package/dist/ui/Compose/UndoRedoActions.js.map +1 -1
  181. package/dist/ui/Compose/UndoRedoActions.jsx +8 -6
  182. package/dist/ui/Compose/compose.module.css +57 -17
  183. package/dist/ui/Compose/hooks/menu/itemsMap.js +13 -7
  184. package/dist/ui/Compose/hooks/menu/itemsMap.js.map +1 -1
  185. package/dist/ui/Compose/hooks/menu/useMenu.d.ts +2 -1
  186. package/dist/ui/Compose/hooks/menu/useMenu.js +28 -17
  187. package/dist/ui/Compose/hooks/menu/useMenu.js.map +1 -1
  188. package/dist/ui/Compose/hooks/menu/useMenu.jsx +27 -14
  189. package/dist/ui/Compose/hooks/useActiveFieldTracking.js +69 -10
  190. package/dist/ui/Compose/hooks/useActiveFieldTracking.js.map +1 -1
  191. package/dist/ui/Compose/hooks/useGenerate.d.ts +3 -0
  192. package/dist/ui/Compose/hooks/useGenerate.js +71 -11
  193. package/dist/ui/Compose/hooks/useGenerate.js.map +1 -1
  194. package/dist/ui/Compose/hooks/useHistory.d.ts +0 -1
  195. package/dist/ui/Compose/hooks/useHistory.js +113 -26
  196. package/dist/ui/Compose/hooks/useHistory.js.map +1 -1
  197. package/dist/ui/DynamicModelSelect/index.d.ts +7 -0
  198. package/dist/ui/DynamicModelSelect/index.js +231 -0
  199. package/dist/ui/DynamicModelSelect/index.js.map +1 -0
  200. package/dist/ui/DynamicModelSelect/index.jsx +207 -0
  201. package/dist/ui/DynamicProviderSelect/index.d.ts +7 -0
  202. package/dist/ui/DynamicProviderSelect/index.js +101 -0
  203. package/dist/ui/DynamicProviderSelect/index.js.map +1 -0
  204. package/dist/ui/DynamicProviderSelect/index.jsx +90 -0
  205. package/dist/ui/DynamicVoiceSelect/index.d.ts +7 -0
  206. package/dist/ui/DynamicVoiceSelect/index.js +156 -0
  207. package/dist/ui/DynamicVoiceSelect/index.js.map +1 -0
  208. package/dist/ui/DynamicVoiceSelect/index.jsx +102 -0
  209. package/dist/ui/EncryptedTextField/index.d.ts +8 -0
  210. package/dist/ui/EncryptedTextField/index.js +74 -0
  211. package/dist/ui/EncryptedTextField/index.js.map +1 -0
  212. package/dist/ui/EncryptedTextField/index.jsx +35 -0
  213. package/dist/ui/Icons/LottieAnimation.js +3 -1
  214. package/dist/ui/Icons/LottieAnimation.js.map +1 -1
  215. package/dist/ui/Icons/LottieAnimation.jsx +2 -1
  216. package/dist/ui/ModelRowLabel/index.d.ts +6 -0
  217. package/dist/ui/ModelRowLabel/index.js +41 -0
  218. package/dist/ui/ModelRowLabel/index.js.map +1 -0
  219. package/dist/ui/ModelRowLabel/index.jsx +26 -0
  220. package/dist/ui/ProviderOptionsEditor/index.d.ts +7 -0
  221. package/dist/ui/ProviderOptionsEditor/index.js +291 -0
  222. package/dist/ui/ProviderOptionsEditor/index.js.map +1 -0
  223. package/dist/ui/ProviderOptionsEditor/index.jsx +210 -0
  224. package/dist/ui/VoicesFetcher/index.d.ts +7 -0
  225. package/dist/ui/VoicesFetcher/index.js +118 -0
  226. package/dist/ui/VoicesFetcher/index.js.map +1 -0
  227. package/dist/ui/VoicesFetcher/index.jsx +79 -0
  228. package/dist/utilities/buildSmartPrompt.d.ts +22 -0
  229. package/dist/utilities/buildSmartPrompt.js +143 -0
  230. package/dist/utilities/buildSmartPrompt.js.map +1 -0
  231. package/dist/utilities/encryption.d.ts +2 -0
  232. package/dist/utilities/encryption.js +47 -0
  233. package/dist/utilities/encryption.js.map +1 -0
  234. package/dist/utilities/extractImageData.d.ts +9 -0
  235. package/dist/utilities/extractImageData.js +12 -2
  236. package/dist/utilities/extractImageData.js.map +1 -1
  237. package/dist/utilities/fetchImages.d.ts +14 -0
  238. package/dist/utilities/fetchImages.js +38 -0
  239. package/dist/utilities/fetchImages.js.map +1 -0
  240. package/dist/utilities/fieldToJsonSchema.d.ts +2 -1
  241. package/dist/utilities/fieldToJsonSchema.js +66 -3
  242. package/dist/utilities/fieldToJsonSchema.js.map +1 -1
  243. package/dist/utilities/getFieldBySchemaPath.d.ts +2 -2
  244. package/dist/utilities/getFieldBySchemaPath.js +15 -0
  245. package/dist/utilities/getFieldBySchemaPath.js.map +1 -1
  246. package/dist/utilities/getProviderOptionsFields.d.ts +16 -0
  247. package/dist/utilities/getProviderOptionsFields.js +80 -0
  248. package/dist/utilities/getProviderOptionsFields.js.map +1 -0
  249. package/dist/utilities/isPluginActivated.js +1 -2
  250. package/dist/utilities/isPluginActivated.js.map +1 -1
  251. package/dist/utilities/lexicalToHTML.js.map +1 -1
  252. package/dist/utilities/resolveImageReferences.d.ts +30 -0
  253. package/dist/utilities/resolveImageReferences.js +167 -0
  254. package/dist/utilities/resolveImageReferences.js.map +1 -0
  255. package/dist/utilities/schemaConverter.d.ts +3 -0
  256. package/dist/utilities/schemaConverter.js +93 -0
  257. package/dist/utilities/schemaConverter.js.map +1 -0
  258. package/dist/utilities/setSafeLexicalState.d.ts +1 -3
  259. package/dist/utilities/setSafeLexicalState.js +1 -1
  260. package/dist/utilities/setSafeLexicalState.js.map +1 -1
  261. package/dist/utilities/updateFieldsConfig.js +27 -43
  262. package/dist/utilities/updateFieldsConfig.js.map +1 -1
  263. package/package.json +23 -24
  264. package/dist/ai/models/anthropic/index.d.ts +0 -2
  265. package/dist/ai/models/anthropic/index.js +0 -129
  266. package/dist/ai/models/anthropic/index.js.map +0 -1
  267. package/dist/ai/models/elevenLabs/generateVoice.d.ts +0 -8
  268. package/dist/ai/models/elevenLabs/generateVoice.js +0 -20
  269. package/dist/ai/models/elevenLabs/generateVoice.js.map +0 -1
  270. package/dist/ai/models/elevenLabs/index.d.ts +0 -2
  271. package/dist/ai/models/elevenLabs/index.js +0 -133
  272. package/dist/ai/models/elevenLabs/index.js.map +0 -1
  273. package/dist/ai/models/elevenLabs/voices.d.ts +0 -8
  274. package/dist/ai/models/elevenLabs/voices.js +0 -24
  275. package/dist/ai/models/elevenLabs/voices.js.map +0 -1
  276. package/dist/ai/models/generateObject.d.ts +0 -11
  277. package/dist/ai/models/generateObject.js +0 -22
  278. package/dist/ai/models/generateObject.js.map +0 -1
  279. package/dist/ai/models/google/generateImage.d.ts +0 -9
  280. package/dist/ai/models/google/generateImage.js +0 -27
  281. package/dist/ai/models/google/generateImage.js.map +0 -1
  282. package/dist/ai/models/google/index.d.ts +0 -2
  283. package/dist/ai/models/google/index.js +0 -201
  284. package/dist/ai/models/google/index.js.map +0 -1
  285. package/dist/ai/models/index.d.ts +0 -2
  286. package/dist/ai/models/index.js +0 -13
  287. package/dist/ai/models/index.js.map +0 -1
  288. package/dist/ai/models/openai/generateImage.d.ts +0 -5
  289. package/dist/ai/models/openai/generateImage.js +0 -31
  290. package/dist/ai/models/openai/generateImage.js.map +0 -1
  291. package/dist/ai/models/openai/generateVoice.d.ts +0 -6
  292. package/dist/ai/models/openai/generateVoice.js +0 -19
  293. package/dist/ai/models/openai/generateVoice.js.map +0 -1
  294. package/dist/ai/models/openai/index.d.ts +0 -2
  295. package/dist/ai/models/openai/index.js +0 -428
  296. package/dist/ai/models/openai/index.js.map +0 -1
  297. package/dist/ai/models/openai/openai.d.ts +0 -1
  298. package/dist/ai/models/openai/openai.js +0 -8
  299. package/dist/ai/models/openai/openai.js.map +0 -1
  300. package/dist/ai/utils/editImagesWithOpenAI.d.ts +0 -10
  301. package/dist/ai/utils/editImagesWithOpenAI.js +0 -37
  302. package/dist/ai/utils/editImagesWithOpenAI.js.map +0 -1
  303. package/dist/styles.d.js +0 -2
  304. package/dist/styles.d.js.map +0 -1
  305. package/dist/types/handlebars-async-helpers.d.js +0 -2
  306. package/dist/types/handlebars-async-helpers.d.js.map +0 -1
  307. package/dist/types/handlebars-dist-handlebars.d.js +0 -2
  308. package/dist/types/handlebars-dist-handlebars.d.js.map +0 -1
  309. package/dist/types/react-mentions.d.js +0 -2
  310. package/dist/types/react-mentions.d.js.map +0 -1
  311. package/dist/utilities/getGenerationModels.d.ts +0 -2
  312. package/dist/utilities/getGenerationModels.js +0 -10
  313. package/dist/utilities/getGenerationModels.js.map +0 -1
@@ -0,0 +1,93 @@
1
+ import { z } from 'zod';
2
+ export function convertPayloadSchemaToZod(fields) {
3
+ const shape = {};
4
+ for (const field of fields){
5
+ if ('name' in field && field.name) {
6
+ // Handle simple fields with names
7
+ switch(field.type){
8
+ case 'array':
9
+ if (field.fields) {
10
+ shape[field.name] = z.array(convertPayloadSchemaToZod(field.fields));
11
+ if (!field.required) {
12
+ shape[field.name] = shape[field.name].optional();
13
+ }
14
+ if (field.admin?.description) {
15
+ shape[field.name] = shape[field.name].describe(field.admin.description);
16
+ }
17
+ }
18
+ break;
19
+ case 'checkbox':
20
+ shape[field.name] = z.boolean();
21
+ if (!field.required) {
22
+ shape[field.name] = shape[field.name].optional();
23
+ }
24
+ if (field.admin?.description) {
25
+ shape[field.name] = shape[field.name].describe(field.admin.description);
26
+ }
27
+ break;
28
+ case 'code':
29
+ case 'email':
30
+ case 'radio':
31
+ case 'select':
32
+ case 'text':
33
+ case 'textarea':
34
+ shape[field.name] = z.string();
35
+ if (field.required) {
36
+ // keep it required
37
+ } else {
38
+ shape[field.name] = shape[field.name].optional();
39
+ }
40
+ // Add description if available
41
+ if (field.admin?.description) {
42
+ shape[field.name] = shape[field.name].describe(field.admin.description);
43
+ }
44
+ break;
45
+ case 'date':
46
+ shape[field.name] = z.string().datetime();
47
+ if (!field.required) {
48
+ shape[field.name] = shape[field.name].optional();
49
+ }
50
+ if (field.admin?.description) {
51
+ shape[field.name] = shape[field.name].describe(field.admin.description);
52
+ }
53
+ break;
54
+ case 'group':
55
+ if (field.fields) {
56
+ shape[field.name] = convertPayloadSchemaToZod(field.fields);
57
+ if (!field.required) {
58
+ shape[field.name] = shape[field.name].optional();
59
+ }
60
+ if (field.admin?.description) {
61
+ shape[field.name] = shape[field.name].describe(field.admin.description);
62
+ }
63
+ }
64
+ break;
65
+ case 'json':
66
+ shape[field.name] = z.any();
67
+ if (field.admin?.description) {
68
+ shape[field.name] = shape[field.name].describe(field.admin.description);
69
+ }
70
+ break;
71
+ case 'number':
72
+ shape[field.name] = z.number();
73
+ if (!field.required) {
74
+ shape[field.name] = shape[field.name].optional();
75
+ }
76
+ if (field.admin?.description) {
77
+ shape[field.name] = shape[field.name].describe(field.admin.description);
78
+ }
79
+ break;
80
+ }
81
+ } else {
82
+ // Handle fields without names (row, collapsible, etc.) that flatten into parent
83
+ if (field.type === 'row' || field.type === 'collapsible') {
84
+ const subSchema = convertPayloadSchemaToZod(field.fields);
85
+ // Merge subSchema shape into current shape
86
+ Object.assign(shape, subSchema.shape);
87
+ }
88
+ }
89
+ }
90
+ return z.object(shape);
91
+ }
92
+
93
+ //# sourceMappingURL=schemaConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/schemaConverter.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nimport { z } from 'zod'\n\nexport function convertPayloadSchemaToZod(fields: Field[]): z.ZodObject<any> {\n const shape: Record<string, z.ZodTypeAny> = {}\n\n for (const field of fields) {\n if ('name' in field && field.name) {\n // Handle simple fields with names\n switch (field.type) {\n case 'array':\n if (field.fields) {\n shape[field.name] = z.array(convertPayloadSchemaToZod(field.fields))\n if (!field.required) {\n shape[field.name] = shape[field.name].optional()\n }\n if (field.admin?.description) {\n shape[field.name] = shape[field.name].describe(field.admin.description as string)\n }\n }\n break\n case 'checkbox':\n shape[field.name] = z.boolean()\n if (!field.required) {\n shape[field.name] = shape[field.name].optional()\n }\n if (field.admin?.description) {\n shape[field.name] = shape[field.name].describe(field.admin.description as string)\n }\n break\n case 'code':\n case 'email':\n case 'radio':\n case 'select':\n case 'text':\n case 'textarea':\n shape[field.name] = z.string()\n if (field.required) {\n // keep it required\n } else {\n shape[field.name] = shape[field.name].optional()\n }\n // Add description if available\n if (field.admin?.description) {\n shape[field.name] = shape[field.name].describe(field.admin.description as string)\n }\n break\n case 'date':\n shape[field.name] = z.string().datetime()\n if (!field.required) {\n shape[field.name] = shape[field.name].optional()\n }\n if (field.admin?.description) {\n shape[field.name] = shape[field.name].describe(field.admin.description as string)\n }\n break\n case 'group':\n if (field.fields) {\n shape[field.name] = convertPayloadSchemaToZod(field.fields)\n if (!field.required) {\n shape[field.name] = shape[field.name].optional()\n }\n if (field.admin?.description) {\n shape[field.name] = shape[field.name].describe(field.admin.description as string)\n }\n }\n break\n case 'json':\n shape[field.name] = z.any()\n if (field.admin?.description) {\n shape[field.name] = shape[field.name].describe(field.admin.description as string)\n }\n break\n case 'number':\n shape[field.name] = z.number()\n if (!field.required) {\n shape[field.name] = shape[field.name].optional()\n }\n if (field.admin?.description) {\n shape[field.name] = shape[field.name].describe(field.admin.description as string)\n }\n break\n // Add more types as needed\n }\n } else {\n // Handle fields without names (row, collapsible, etc.) that flatten into parent\n if (field.type === 'row' || field.type === 'collapsible') {\n const subSchema = convertPayloadSchemaToZod(field.fields)\n // Merge subSchema shape into current shape\n Object.assign(shape, subSchema.shape)\n }\n }\n }\n\n return z.object(shape)\n}\n"],"names":["z","convertPayloadSchemaToZod","fields","shape","field","name","type","array","required","optional","admin","description","describe","boolean","string","datetime","any","number","subSchema","Object","assign","object"],"mappings":"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"}
@@ -1,4 +1,2 @@
1
1
  import type { LexicalEditor } from 'lexical';
2
- type EditorAction = 'replace' | 'update';
3
- export declare const setSafeLexicalState: (state: unknown, editorInstance: LexicalEditor, action?: EditorAction) => void;
4
- export {};
2
+ export declare const setSafeLexicalState: (state: unknown, editorInstance: LexicalEditor) => void;
@@ -1,4 +1,4 @@
1
- export const setSafeLexicalState = (state, editorInstance, action = 'replace')=>{
1
+ export const setSafeLexicalState = (state, editorInstance)=>{
2
2
  try {
3
3
  const editorState = editorInstance.parseEditorState(state);
4
4
  if (editorState.isEmpty()) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/setSafeLexicalState.ts"],"sourcesContent":["import type { LexicalEditor } from 'lexical'\n\ntype EditorAction = 'replace' | 'update'\n\nexport const setSafeLexicalState = (\n state: unknown,\n editorInstance: LexicalEditor,\n action: EditorAction = 'replace',\n) => {\n try {\n const editorState = editorInstance.parseEditorState(state as any)\n if (editorState.isEmpty()) {\n return\n }\n\n editorInstance.setEditorState(editorState)\n } catch (error) {\n console.error('Error setting editor state: ', { error, state })\n }\n}\n"],"names":["setSafeLexicalState","state","editorInstance","action","editorState","parseEditorState","isEmpty","setEditorState","error","console"],"mappings":"AAIA,OAAO,MAAMA,sBAAsB,CACjCC,OACAC,gBACAC,SAAuB,SAAS;IAEhC,IAAI;QACF,MAAMC,cAAcF,eAAeG,gBAAgB,CAACJ;QACpD,IAAIG,YAAYE,OAAO,IAAI;YACzB;QACF;QAEAJ,eAAeK,cAAc,CAACH;IAChC,EAAE,OAAOI,OAAO;QACdC,QAAQD,KAAK,CAAC,gCAAgC;YAAEA;YAAOP;QAAM;IAC/D;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/setSafeLexicalState.ts"],"sourcesContent":["import type { LexicalEditor } from 'lexical'\n\ntype EditorAction = 'replace' | 'update'\n\nexport const setSafeLexicalState = (\n state: unknown,\n editorInstance: LexicalEditor,\n // action: EditorAction = 'replace',\n) => {\n try {\n const editorState = editorInstance.parseEditorState(state as any)\n if (editorState.isEmpty()) {\n return\n }\n\n editorInstance.setEditorState(editorState)\n } catch (error) {\n console.error('Error setting editor state: ', { error, state })\n }\n}\n"],"names":["setSafeLexicalState","state","editorInstance","editorState","parseEditorState","isEmpty","setEditorState","error","console"],"mappings":"AAIA,OAAO,MAAMA,sBAAsB,CACjCC,OACAC;IAGA,IAAI;QACF,MAAMC,cAAcD,eAAeE,gBAAgB,CAACH;QACpD,IAAIE,YAAYE,OAAO,IAAI;YACzB;QACF;QAEAH,eAAeI,cAAc,CAACH;IAChC,EAAE,OAAOI,OAAO;QACdC,QAAQD,KAAK,CAAC,gCAAgC;YAAEA;YAAON;QAAM;IAC/D;AACF,EAAC"}
@@ -1,91 +1,77 @@
1
1
  export const updateFieldsConfig = (collectionConfig)=>{
2
2
  let schemaPathMap = {};
3
- /**
4
- * Recursively updates field configuration to inject AI components
5
- * @param field - Payload field to process
6
- * @param parentPath - Schema path from parent (for nested fields)
7
- */ function updateField(field, parentPath = '') {
8
- const fieldWithName = field;
9
- const currentPath = parentPath ? `${parentPath}.${fieldWithName.name}` : fieldWithName.name;
3
+ function updateField(field, parentPath = '') {
4
+ const currentPath = parentPath ? `${parentPath}.${field.name}` : field.name;
10
5
  const currentSchemaPath = `${collectionConfig.slug}.${currentPath}`;
11
- // Disabled fields/ field types - skip processing
12
- const admin = field.admin;
13
- if (admin?.disabled || admin?.readOnly || admin?.hidden) {
6
+ // Disabled fields/ field types
7
+ if (field.admin?.disabled || field.admin?.readOnly || field.admin?.hidden || field.type === 'row') {
14
8
  return field;
15
9
  }
16
- // Rows are layout-only constructs and should not add to the schema path (like tabs)
17
- // Process their nested fields but use parentPath to maintain correct path structure
18
- if (field.type === 'row' && 'fields' in field) {
19
- const fieldWithFields = field;
20
- return {
21
- ...field,
22
- fields: fieldWithFields.fields.map((subField)=>updateField(subField, parentPath))
23
- };
24
- }
25
10
  // Map field path for global fieldInstructionsMap to load related instructions
26
11
  // This is done due to save extra API call to get instructions when Field components are loaded in admin
27
12
  // Doing is will only call instructions data when user clicks on settings
28
- if (field.type && [
13
+ if ([
14
+ 'array',
29
15
  'richText',
30
16
  'text',
31
17
  'textarea',
32
18
  'upload'
33
19
  ].includes(field.type)) {
34
- const fieldAny = field;
35
20
  schemaPathMap = {
36
21
  ...schemaPathMap,
37
22
  [currentSchemaPath]: {
38
23
  type: field.type,
39
- label: fieldAny.label || fieldWithName.name,
40
- relationTo: fieldAny.relationTo
24
+ label: field.label || field.name,
25
+ relationTo: field.relationTo
41
26
  }
42
27
  };
43
28
  }
44
29
  // Inject AI actions, richText is not included here as it has to be explicitly defined by user
45
- if (field.type && [
30
+ // Array fields also get AI injection for bulk generation
31
+ if ([
32
+ 'array',
46
33
  'text',
47
34
  'textarea',
48
35
  'upload'
49
36
  ].includes(field.type)) {
50
- const customField = {};
37
+ let customField = {};
51
38
  // Custom fields don't fully adhere to the Payload schema, making it difficult to
52
39
  // determine which components support injecting ComposeField as a Description.
53
- if (admin?.components) {
54
- // TODO: If a field already provides its own Description, we still inject our ComposeField
55
- // by overriding Description. If you need both, consider composing your own wrapper.
56
- // customField would be used here if needed
40
+ if (field.admin?.components?.Field || field.admin?.components?.Description) {
41
+ // TODO: If a field already provides its own Description, we still inject our ComposeField
42
+ // by overriding Description. If you need both, consider composing your own wrapper.
43
+ customField = {};
57
44
  }
45
+ // Array fields use ArrayComposeField (always visible) since they don't have focus events
46
+ // Other fields use ComposeField with focus-dependent visibility
47
+ const componentPath = field.type === 'array' ? '@ai-stack/payloadcms/fields#ArrayComposeField' : '@ai-stack/payloadcms/fields#ComposeField';
58
48
  return {
59
49
  ...field,
60
50
  admin: {
61
51
  ...field.admin,
62
52
  components: {
63
- ...admin?.components || {},
53
+ ...field.admin?.components || {},
64
54
  Description: {
65
55
  clientProps: {
66
56
  schemaPath: currentSchemaPath
67
57
  },
68
- path: '@ai-stack/payloadcms/fields#ComposeField'
58
+ path: componentPath
69
59
  },
70
60
  ...customField
71
61
  }
72
62
  }
73
63
  };
74
64
  }
75
- // Handle fields with nested fields (group, collapsible, etc.)
76
- if ('fields' in field && Array.isArray(field.fields)) {
77
- const fieldWithFields = field;
65
+ if (field.fields) {
78
66
  return {
79
67
  ...field,
80
- fields: fieldWithFields.fields.map((subField)=>updateField(subField, currentPath))
68
+ fields: field.fields.map((subField)=>updateField(subField, currentPath))
81
69
  };
82
70
  }
83
- // Handle fields with tabs
84
- if ('tabs' in field && Array.isArray(field.tabs)) {
85
- const fieldWithTabs = field;
71
+ if (field.tabs) {
86
72
  return {
87
73
  ...field,
88
- tabs: fieldWithTabs.tabs.map((tab)=>{
74
+ tabs: field.tabs.map((tab)=>{
89
75
  return {
90
76
  ...tab,
91
77
  // Tabs are a UI construct and should not add to the schema path
@@ -94,12 +80,10 @@ export const updateFieldsConfig = (collectionConfig)=>{
94
80
  })
95
81
  };
96
82
  }
97
- // Handle fields with blocks
98
- if ('blocks' in field && Array.isArray(field.blocks)) {
99
- const fieldWithBlocks = field;
83
+ if (field.blocks) {
100
84
  return {
101
85
  ...field,
102
- blocks: fieldWithBlocks.blocks.map((block)=>({
86
+ blocks: field.blocks.map((block)=>({
103
87
  ...block,
104
88
  fields: block.fields.map((subField)=>updateField(subField, `${currentPath}.${block.slug}`))
105
89
  }))
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/updateFieldsConfig.ts"],"sourcesContent":["import type { CollectionConfig, Field, GlobalConfig } from 'payload'\n\ninterface UpdateFieldsConfig {\n schemaPathMap: Record<string, string>\n updatedCollectionConfig: CollectionConfig | GlobalConfig\n}\n\ntype FieldWithName = { name: string }\ntype FieldWithFields = { fields: Field[] }\ntype FieldWithTabs = { tabs: Array<{ fields?: Field[] }> }\ntype FieldWithBlocks = { blocks: Array<{ fields: Field[]; slug: string }> }\n\nexport const updateFieldsConfig = (\n collectionConfig: CollectionConfig | GlobalConfig,\n): UpdateFieldsConfig => {\n let schemaPathMap = {}\n\n /**\n * Recursively updates field configuration to inject AI components\n * @param field - Payload field to process\n * @param parentPath - Schema path from parent (for nested fields)\n */\n function updateField(field: Field, parentPath = ''): Field {\n const fieldWithName = field as Field & FieldWithName\n const currentPath = parentPath ? `${parentPath}.${fieldWithName.name}` : fieldWithName.name\n const currentSchemaPath = `${collectionConfig.slug}.${currentPath}`\n\n // Disabled fields/ field types - skip processing\n const admin = field.admin as Record<string, unknown> | undefined\n if (admin?.disabled || admin?.readOnly || admin?.hidden) {\n return field\n }\n\n // Rows are layout-only constructs and should not add to the schema path (like tabs)\n // Process their nested fields but use parentPath to maintain correct path structure\n if (field.type === 'row' && 'fields' in field) {\n const fieldWithFields = field as Field & FieldWithFields\n return {\n ...field,\n fields: fieldWithFields.fields.map((subField) => updateField(subField, parentPath)),\n } as Field\n }\n\n // Map field path for global fieldInstructionsMap to load related instructions\n // This is done due to save extra API call to get instructions when Field components are loaded in admin\n // Doing is will only call instructions data when user clicks on settings\n if (field.type && ['richText', 'text', 'textarea', 'upload'].includes(field.type)) {\n const fieldAny = field as Record<string, unknown>\n schemaPathMap = {\n ...schemaPathMap,\n [currentSchemaPath]: {\n type: field.type,\n label: fieldAny.label || fieldWithName.name,\n relationTo: fieldAny.relationTo,\n },\n }\n }\n\n // Inject AI actions, richText is not included here as it has to be explicitly defined by user\n if (field.type && ['text', 'textarea', 'upload'].includes(field.type)) {\n const customField: Record<string, never> = {}\n\n // Custom fields don't fully adhere to the Payload schema, making it difficult to\n // determine which components support injecting ComposeField as a Description.\n if (admin?.components) {\n // TODO: If a field already provides its own Description, we still inject our ComposeField\n // by overriding Description. If you need both, consider composing your own wrapper.\n // customField would be used here if needed\n }\n\n return {\n ...field,\n admin: {\n ...(field.admin as Record<string, unknown>),\n components: {\n ...((admin?.components as Record<string, unknown>) || {}),\n Description: {\n clientProps: {\n schemaPath: currentSchemaPath,\n },\n path: '@ai-stack/payloadcms/fields#ComposeField',\n },\n ...customField,\n },\n },\n } as Field\n }\n\n // Handle fields with nested fields (group, collapsible, etc.)\n if ('fields' in field && Array.isArray(field.fields)) {\n const fieldWithFields = field as Field & FieldWithFields\n return {\n ...field,\n fields: fieldWithFields.fields.map((subField) => updateField(subField, currentPath)),\n } as Field\n }\n\n // Handle fields with tabs\n if ('tabs' in field && Array.isArray(field.tabs)) {\n const fieldWithTabs = field as Field & FieldWithTabs\n return {\n ...field,\n tabs: fieldWithTabs.tabs.map((tab) => {\n return {\n ...tab,\n // Tabs are a UI construct and should not add to the schema path\n fields: (tab.fields || []).map((subField) => updateField(subField, parentPath)),\n }\n }),\n } as Field\n }\n\n // Handle fields with blocks\n if ('blocks' in field && Array.isArray(field.blocks)) {\n const fieldWithBlocks = field as Field & FieldWithBlocks\n return {\n ...field,\n blocks: fieldWithBlocks.blocks.map((block) => ({\n ...block,\n fields: block.fields.map((subField) =>\n updateField(subField, `${currentPath}.${block.slug}`),\n ),\n })),\n } as Field\n }\n\n return field\n }\n\n const updatedCollectionConfig = {\n ...collectionConfig,\n fields: collectionConfig.fields.map((field) => updateField(field)),\n }\n\n return {\n schemaPathMap,\n updatedCollectionConfig,\n }\n}\n"],"names":["updateFieldsConfig","collectionConfig","schemaPathMap","updateField","field","parentPath","fieldWithName","currentPath","name","currentSchemaPath","slug","admin","disabled","readOnly","hidden","type","fieldWithFields","fields","map","subField","includes","fieldAny","label","relationTo","customField","components","Description","clientProps","schemaPath","path","Array","isArray","tabs","fieldWithTabs","tab","blocks","fieldWithBlocks","block","updatedCollectionConfig"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/utilities/updateFieldsConfig.ts"],"sourcesContent":["import type { CollectionConfig, GlobalConfig } from 'payload'\n\ninterface UpdateFieldsConfig {\n schemaPathMap: Record<string, string>\n updatedCollectionConfig: CollectionConfig | GlobalConfig\n}\n\nexport const updateFieldsConfig = (collectionConfig: CollectionConfig | GlobalConfig): UpdateFieldsConfig => {\n let schemaPathMap = {}\n\n function updateField(field: any, parentPath = ''): any {\n const currentPath = parentPath ? `${parentPath}.${field.name}` : field.name\n const currentSchemaPath = `${collectionConfig.slug}.${currentPath}`\n\n // Disabled fields/ field types\n if (\n field.admin?.disabled ||\n field.admin?.readOnly ||\n field.admin?.hidden ||\n field.type === 'row'\n ) {\n return field\n }\n\n // Map field path for global fieldInstructionsMap to load related instructions\n // This is done due to save extra API call to get instructions when Field components are loaded in admin\n // Doing is will only call instructions data when user clicks on settings\n if (['array', 'richText', 'text', 'textarea', 'upload'].includes(field.type)) {\n schemaPathMap = {\n ...schemaPathMap,\n [currentSchemaPath]: {\n type: field.type,\n label: field.label || field.name,\n relationTo: field.relationTo,\n },\n }\n }\n\n // Inject AI actions, richText is not included here as it has to be explicitly defined by user\n // Array fields also get AI injection for bulk generation\n if (['array', 'text', 'textarea', 'upload'].includes(field.type)) {\n let customField = {}\n\n // Custom fields don't fully adhere to the Payload schema, making it difficult to\n // determine which components support injecting ComposeField as a Description.\n if (field.admin?.components?.Field || field.admin?.components?.Description) {\n // TODO: If a field already provides its own Description, we still inject our ComposeField\n // by overriding Description. If you need both, consider composing your own wrapper.\n customField = {}\n }\n\n // Array fields use ArrayComposeField (always visible) since they don't have focus events\n // Other fields use ComposeField with focus-dependent visibility\n const componentPath = field.type === 'array'\n ? '@ai-stack/payloadcms/fields#ArrayComposeField'\n : '@ai-stack/payloadcms/fields#ComposeField'\n\n return {\n ...field,\n admin: {\n ...field.admin,\n components: {\n ...(field.admin?.components || {}),\n Description: {\n clientProps: {\n schemaPath: currentSchemaPath,\n },\n path: componentPath,\n },\n ...customField,\n },\n },\n }\n }\n\n if (field.fields) {\n return {\n ...field,\n fields: field.fields.map((subField: any) => updateField(subField, currentPath)),\n }\n }\n\n if (field.tabs) {\n return {\n ...field,\n tabs: field.tabs.map((tab: any) => {\n return {\n ...tab,\n // Tabs are a UI construct and should not add to the schema path\n fields: (tab.fields || []).map((subField: any) => updateField(subField, parentPath)),\n }\n }),\n }\n }\n\n if (field.blocks) {\n return {\n ...field,\n blocks: field.blocks.map((block: any) => ({\n ...block,\n fields: block.fields.map((subField: any) =>\n updateField(subField, `${currentPath}.${block.slug}`),\n ),\n })),\n }\n }\n\n return field\n }\n\n const updatedCollectionConfig = {\n ...collectionConfig,\n fields: collectionConfig.fields.map((field) => updateField(field)),\n }\n\n return {\n schemaPathMap,\n updatedCollectionConfig,\n }\n}\n"],"names":["updateFieldsConfig","collectionConfig","schemaPathMap","updateField","field","parentPath","currentPath","name","currentSchemaPath","slug","admin","disabled","readOnly","hidden","type","includes","label","relationTo","customField","components","Field","Description","componentPath","clientProps","schemaPath","path","fields","map","subField","tabs","tab","blocks","block","updatedCollectionConfig"],"mappings":"AAOA,OAAO,MAAMA,qBAAqB,CAACC;IACjC,IAAIC,gBAAgB,CAAC;IAErB,SAASC,YAAYC,KAAU,EAAEC,aAAa,EAAE;QAC9C,MAAMC,cAAcD,aAAa,CAAC,EAAEA,WAAW,CAAC,EAAED,MAAMG,IAAI,CAAC,CAAC,GAAGH,MAAMG,IAAI;QAC3E,MAAMC,oBAAoB,CAAC,EAAEP,iBAAiBQ,IAAI,CAAC,CAAC,EAAEH,YAAY,CAAC;QAEnE,+BAA+B;QAC/B,IACEF,MAAMM,KAAK,EAAEC,YACbP,MAAMM,KAAK,EAAEE,YACbR,MAAMM,KAAK,EAAEG,UACbT,MAAMU,IAAI,KAAK,OACf;YACA,OAAOV;QACT;QAEA,8EAA8E;QAC9E,wGAAwG;QACxG,yEAAyE;QACzE,IAAI;YAAC;YAAS;YAAY;YAAQ;YAAY;SAAS,CAACW,QAAQ,CAACX,MAAMU,IAAI,GAAG;YAC5EZ,gBAAgB;gBACd,GAAGA,aAAa;gBAChB,CAACM,kBAAkB,EAAE;oBACnBM,MAAMV,MAAMU,IAAI;oBAChBE,OAAOZ,MAAMY,KAAK,IAAIZ,MAAMG,IAAI;oBAChCU,YAAYb,MAAMa,UAAU;gBAC9B;YACF;QACF;QAEA,8FAA8F;QAC9F,yDAAyD;QACzD,IAAI;YAAC;YAAS;YAAQ;YAAY;SAAS,CAACF,QAAQ,CAACX,MAAMU,IAAI,GAAG;YAChE,IAAII,cAAc,CAAC;YAEnB,iFAAiF;YACjF,8EAA8E;YAC9E,IAAId,MAAMM,KAAK,EAAES,YAAYC,SAAShB,MAAMM,KAAK,EAAES,YAAYE,aAAa;gBAC1E,0FAA0F;gBAC1F,oFAAoF;gBACpFH,cAAc,CAAC;YACjB;YAEA,yFAAyF;YACzF,gEAAgE;YAChE,MAAMI,gBAAgBlB,MAAMU,IAAI,KAAK,UACjC,kDACA;YAEJ,OAAO;gBACL,GAAGV,KAAK;gBACRM,OAAO;oBACL,GAAGN,MAAMM,KAAK;oBACdS,YAAY;wBACV,GAAIf,MAAMM,KAAK,EAAES,cAAc,CAAC,CAAC;wBACjCE,aAAa;4BACXE,aAAa;gCACXC,YAAYhB;4BACd;4BACAiB,MAAMH;wBACR;wBACA,GAAGJ,WAAW;oBAChB;gBACF;YACF;QACF;QAEA,IAAId,MAAMsB,MAAM,EAAE;YAChB,OAAO;gBACL,GAAGtB,KAAK;gBACRsB,QAAQtB,MAAMsB,MAAM,CAACC,GAAG,CAAC,CAACC,WAAkBzB,YAAYyB,UAAUtB;YACpE;QACF;QAEA,IAAIF,MAAMyB,IAAI,EAAE;YACd,OAAO;gBACL,GAAGzB,KAAK;gBACRyB,MAAMzB,MAAMyB,IAAI,CAACF,GAAG,CAAC,CAACG;oBACpB,OAAO;wBACL,GAAGA,GAAG;wBACN,gEAAgE;wBAChEJ,QAAQ,AAACI,CAAAA,IAAIJ,MAAM,IAAI,EAAE,AAAD,EAAGC,GAAG,CAAC,CAACC,WAAkBzB,YAAYyB,UAAUvB;oBAC1E;gBACF;YACF;QACF;QAEA,IAAID,MAAM2B,MAAM,EAAE;YAChB,OAAO;gBACL,GAAG3B,KAAK;gBACR2B,QAAQ3B,MAAM2B,MAAM,CAACJ,GAAG,CAAC,CAACK,QAAgB,CAAA;wBACxC,GAAGA,KAAK;wBACRN,QAAQM,MAAMN,MAAM,CAACC,GAAG,CAAC,CAACC,WACxBzB,YAAYyB,UAAU,CAAC,EAAEtB,YAAY,CAAC,EAAE0B,MAAMvB,IAAI,CAAC,CAAC;oBAExD,CAAA;YACF;QACF;QAEA,OAAOL;IACT;IAEA,MAAM6B,0BAA0B;QAC9B,GAAGhC,gBAAgB;QACnByB,QAAQzB,iBAAiByB,MAAM,CAACC,GAAG,CAAC,CAACvB,QAAUD,YAAYC;IAC7D;IAEA,OAAO;QACLF;QACA+B;IACF;AACF,EAAC"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@ai-stack/payloadcms",
3
- "version": "3.2.26",
3
+ "version": "3.68.0-beta.2",
4
4
  "private": false,
5
5
  "bugs": "https://github.com/ashbuilds/payload-ai/issues",
6
6
  "repository": "https://github.com/ashbuilds/payload-ai",
7
7
  "license": "MIT",
8
- "author": "ashbuilds",
8
+ "author": "ashbuilds <ashish.mishra41191@gmail.com>",
9
9
  "type": "module",
10
10
  "keywords": [
11
11
  "payload",
@@ -59,7 +59,8 @@
59
59
  "dist/exports/fields.d.ts"
60
60
  ],
61
61
  "*": [
62
- "dist/*"
62
+ "dist/*.d.ts",
63
+ "dist/**/*.d.ts"
63
64
  ]
64
65
  }
65
66
  },
@@ -69,10 +70,10 @@
69
70
  "scripts": {
70
71
  "build": "pnpm copyfiles && pnpm build:types && pnpm build:swc",
71
72
  "build:dev": "pnpm build --watch",
72
- "build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths",
73
+ "build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths --ignore '**/*.d.ts'",
73
74
  "build:types": "tsc --outDir dist --rootDir ./src",
74
75
  "clean": "rimraf {dist,*.tsbuildinfo}",
75
- "copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/",
76
+ "copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json,d.ts}\" dist/",
76
77
  "dev": "next dev dev --turbo",
77
78
  "dev:generate-importmap": "pnpm dev:payload generate:importmap",
78
79
  "dev:generate-types": "pnpm dev:payload generate:types",
@@ -85,7 +86,8 @@
85
86
  "prepublishOnly": "pnpm clean && pnpm build",
86
87
  "test": "pnpm test:int && pnpm test:e2e",
87
88
  "test:e2e": "playwright test",
88
- "test:int": "vitest"
89
+ "test:int": "vitest",
90
+ "tunnel": "dotenv -e dev/.env -- npx cloudflared tunnel --config infra/cloudflared/config.yml run --token \"$CF_TUNNEL_TOKEN\""
89
91
  },
90
92
  "devDependencies": {
91
93
  "@eslint/eslintrc": "^3.2.0",
@@ -103,14 +105,16 @@
103
105
  "@types/node": "^22.5.4",
104
106
  "@types/react": "19.1.8",
105
107
  "@types/react-dom": "19.1.6",
108
+ "cloudflared": "^0.7.1",
106
109
  "copyfiles": "2.4.1",
107
110
  "cross-env": "^7.0.3",
111
+ "dotenv-cli": "^11.0.0",
108
112
  "eslint": "^9.23.0",
109
113
  "eslint-config-next": "15.4.4",
110
114
  "graphql": "^16.8.1",
111
115
  "lexical": "0.35.0",
112
116
  "mongodb-memory-server": "10.1.4",
113
- "next": "15.4.8",
117
+ "next": "15.4.7",
114
118
  "open": "^10.1.0",
115
119
  "payload": "^3.55.1",
116
120
  "prettier": "^3.4.2",
@@ -167,6 +171,7 @@
167
171
  "pnpm": {
168
172
  "onlyBuiltDependencies": [
169
173
  "@swc/core",
174
+ "cloudflared",
170
175
  "esbuild",
171
176
  "mongodb-memory-server",
172
177
  "sharp"
@@ -174,18 +179,22 @@
174
179
  },
175
180
  "registry": "https://registry.npmjs.org/",
176
181
  "dependencies": {
177
- "@ai-sdk/anthropic": "^2.0.15",
182
+ "@ai-sdk/anthropic": "^2.0.50",
183
+ "@ai-sdk/openai": "^2.0.74",
178
184
  "@ai-sdk/google": "^2.0.44",
179
- "@ai-sdk/openai": "^2.0.28",
180
- "@ai-sdk/provider-utils": "^3.0.8",
181
- "@ai-sdk/react": "^2.0.39",
182
- "@ai-sdk/ui-utils": "^1.2.10",
185
+ "@ai-sdk/fal": "^1.0.24",
186
+ "@ai-sdk/xai": "^2.0.32",
187
+ "@ai-sdk/elevenlabs": "^1.0.20",
188
+ "@ai-sdk/openai-compatible": "^1.0.28",
189
+ "@ai-sdk/provider-utils": "^3.0.18",
190
+ "@ai-sdk/react": "^2.0.104",
191
+ "@ai-sdk/ui-utils": "^1.2.11",
183
192
  "@anthropic-ai/sdk": "^0.62.0",
184
193
  "@fal-ai/client": "^1.7.0",
185
194
  "@google/genai": "^1.30.0",
186
- "ai": "5.1.0-beta.9",
195
+ "ai": "^5.0.104",
187
196
  "ajv": "^8.17.1",
188
- "elevenlabs": "0.8.2",
197
+ "elevenlabs": "^0.8.2",
189
198
  "get-input-selection": "^1.1.4",
190
199
  "handlebars": "4.7.8",
191
200
  "handlebars-async-helpers": "^1.0.6",
@@ -196,15 +205,5 @@
196
205
  "scroll-into-view-if-needed": "^3.1.0",
197
206
  "textarea-caret": "^3.0.2",
198
207
  "zod": "^4.1.7"
199
- },
200
- "resolutions": {
201
- "form-data": "4.0.4",
202
- "playwright": "1.55.1",
203
- "cross-spawn": "7.0.5",
204
- "jws": "4.0.1",
205
- "@babel/runtime": "7.26.10",
206
- "vite": "7.1.11",
207
- "js-yaml": "4.1.1",
208
- "esbuild": "0.25.0"
209
208
  }
210
209
  }
@@ -1,2 +0,0 @@
1
- import type { GenerationConfig } from '../../../types.js';
2
- export declare const AnthropicConfig: GenerationConfig;
@@ -1,129 +0,0 @@
1
- import { anthropic } from '@ai-sdk/anthropic';
2
- import { defaultSystemPrompt } from '../../prompts.js';
3
- import { generateObject } from '../generateObject.js';
4
- const MODEL_KEY = 'ANTH-C';
5
- const MODELS = [
6
- 'claude-opus-4-1',
7
- 'claude-opus-4-0',
8
- 'claude-sonnet-4-0',
9
- 'claude-3-opus-latest',
10
- 'claude-3-5-haiku-latest',
11
- 'claude-3-5-sonnet-latest',
12
- 'claude-3-7-sonnet-latest'
13
- ];
14
- export const AnthropicConfig = {
15
- models: [
16
- {
17
- id: `${MODEL_KEY}-text`,
18
- name: 'Anthropic Claude',
19
- fields: [
20
- 'text',
21
- 'textarea'
22
- ],
23
- handler: (prompt, options)=>{
24
- return generateObject(prompt, {
25
- ...options,
26
- system: options.system || defaultSystemPrompt
27
- }, anthropic(options.model));
28
- },
29
- output: 'text',
30
- settings: {
31
- name: `${MODEL_KEY}-text-settings`,
32
- type: 'group',
33
- admin: {
34
- condition (data) {
35
- return data['model-id'] === `${MODEL_KEY}-text`;
36
- }
37
- },
38
- fields: [
39
- {
40
- name: 'model',
41
- type: 'select',
42
- defaultValue: 'claude-3-5-sonnet-latest',
43
- label: 'Model',
44
- options: MODELS
45
- },
46
- {
47
- type: 'row',
48
- fields: [
49
- {
50
- name: 'maxTokens',
51
- type: 'number',
52
- defaultValue: 5000
53
- },
54
- {
55
- name: 'temperature',
56
- type: 'number',
57
- defaultValue: 0.7,
58
- max: 1,
59
- min: 0
60
- }
61
- ]
62
- },
63
- {
64
- name: 'extractAttachments',
65
- type: 'checkbox'
66
- }
67
- ],
68
- label: 'Anthropic Claude Settings'
69
- }
70
- },
71
- {
72
- id: `${MODEL_KEY}-object`,
73
- name: 'Anthropic Claude',
74
- fields: [
75
- 'richText'
76
- ],
77
- handler: (text, options)=>{
78
- return generateObject(text, {
79
- ...options,
80
- system: options.system || defaultSystemPrompt
81
- }, anthropic(options.model));
82
- },
83
- output: 'text',
84
- settings: {
85
- name: `${MODEL_KEY}-object-settings`,
86
- type: 'group',
87
- admin: {
88
- condition (data) {
89
- return data['model-id'] === `${MODEL_KEY}-object`;
90
- }
91
- },
92
- fields: [
93
- {
94
- name: 'model',
95
- type: 'select',
96
- defaultValue: 'claude-3-5-sonnet-latest',
97
- label: 'Model',
98
- options: MODELS
99
- },
100
- {
101
- type: 'row',
102
- fields: [
103
- {
104
- name: 'maxTokens',
105
- type: 'number',
106
- defaultValue: 5000
107
- },
108
- {
109
- name: 'temperature',
110
- type: 'number',
111
- defaultValue: 0.7,
112
- max: 1,
113
- min: 0
114
- }
115
- ]
116
- },
117
- {
118
- name: 'extractAttachments',
119
- type: 'checkbox'
120
- }
121
- ],
122
- label: 'Anthropic Claude Settings'
123
- }
124
- }
125
- ],
126
- provider: 'Anthropic'
127
- };
128
-
129
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/ai/models/anthropic/index.ts"],"sourcesContent":["import { anthropic } from '@ai-sdk/anthropic'\n\nimport type { GenerationConfig } from '../../../types.js'\n\nimport { defaultSystemPrompt } from '../../prompts.js'\nimport { generateObject } from '../generateObject.js'\n\nconst MODEL_KEY = 'ANTH-C'\nconst MODELS = [\n 'claude-opus-4-1',\n 'claude-opus-4-0',\n 'claude-sonnet-4-0',\n 'claude-3-opus-latest',\n 'claude-3-5-haiku-latest',\n 'claude-3-5-sonnet-latest',\n 'claude-3-7-sonnet-latest',\n]\n\nexport const AnthropicConfig: GenerationConfig = {\n models: [\n {\n id: `${MODEL_KEY}-text`,\n name: 'Anthropic Claude',\n fields: ['text', 'textarea'],\n handler: (\n prompt: string,\n options: {\n extractAttachments?: boolean\n locale?: string\n maxTokens?: number\n model: string\n schema?: Record<string, any>\n system?: string\n temperature?: number\n },\n ) => {\n return generateObject(\n prompt,\n {\n ...options,\n system: options.system || defaultSystemPrompt,\n },\n anthropic(options.model),\n )\n },\n output: 'text',\n settings: {\n name: `${MODEL_KEY}-text-settings`,\n type: 'group',\n admin: {\n condition(data) {\n return data['model-id'] === `${MODEL_KEY}-text`\n },\n },\n fields: [\n {\n name: 'model',\n type: 'select',\n defaultValue: 'claude-3-5-sonnet-latest',\n label: 'Model',\n options: MODELS,\n },\n {\n type: 'row',\n fields: [\n {\n name: 'maxTokens',\n type: 'number',\n defaultValue: 5000,\n },\n {\n name: 'temperature',\n type: 'number',\n defaultValue: 0.7,\n max: 1,\n min: 0,\n },\n ],\n },\n {\n name: 'extractAttachments',\n type: 'checkbox',\n },\n ],\n label: 'Anthropic Claude Settings',\n },\n },\n {\n id: `${MODEL_KEY}-object`,\n name: 'Anthropic Claude',\n fields: ['richText'],\n handler: (text: string, options) => {\n return generateObject(\n text,\n {\n ...options,\n system: options.system || defaultSystemPrompt,\n },\n anthropic(options.model),\n )\n },\n output: 'text',\n settings: {\n name: `${MODEL_KEY}-object-settings`,\n type: 'group',\n admin: {\n condition(data) {\n return data['model-id'] === `${MODEL_KEY}-object`\n },\n },\n fields: [\n {\n name: 'model',\n type: 'select',\n defaultValue: 'claude-3-5-sonnet-latest',\n label: 'Model',\n options: MODELS,\n },\n {\n type: 'row',\n fields: [\n {\n name: 'maxTokens',\n type: 'number',\n defaultValue: 5000,\n },\n {\n name: 'temperature',\n type: 'number',\n defaultValue: 0.7,\n max: 1,\n min: 0,\n },\n ],\n },\n {\n name: 'extractAttachments',\n type: 'checkbox',\n },\n ],\n label: 'Anthropic Claude Settings',\n },\n },\n ],\n provider: 'Anthropic',\n}\n"],"names":["anthropic","defaultSystemPrompt","generateObject","MODEL_KEY","MODELS","AnthropicConfig","models","id","name","fields","handler","prompt","options","system","model","output","settings","type","admin","condition","data","defaultValue","label","max","min","text","provider"],"mappings":"AAAA,SAASA,SAAS,QAAQ,oBAAmB;AAI7C,SAASC,mBAAmB,QAAQ,mBAAkB;AACtD,SAASC,cAAc,QAAQ,uBAAsB;AAErD,MAAMC,YAAY;AAClB,MAAMC,SAAS;IACb;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,OAAO,MAAMC,kBAAoC;IAC/CC,QAAQ;QACN;YACEC,IAAI,CAAC,EAAEJ,UAAU,KAAK,CAAC;YACvBK,MAAM;YACNC,QAAQ;gBAAC;gBAAQ;aAAW;YAC5BC,SAAS,CACPC,QACAC;gBAUA,OAAOV,eACLS,QACA;oBACE,GAAGC,OAAO;oBACVC,QAAQD,QAAQC,MAAM,IAAIZ;gBAC5B,GACAD,UAAUY,QAAQE,KAAK;YAE3B;YACAC,QAAQ;YACRC,UAAU;gBACRR,MAAM,CAAC,EAAEL,UAAU,cAAc,CAAC;gBAClCc,MAAM;gBACNC,OAAO;oBACLC,WAAUC,IAAI;wBACZ,OAAOA,IAAI,CAAC,WAAW,KAAK,CAAC,EAAEjB,UAAU,KAAK,CAAC;oBACjD;gBACF;gBACAM,QAAQ;oBACN;wBACED,MAAM;wBACNS,MAAM;wBACNI,cAAc;wBACdC,OAAO;wBACPV,SAASR;oBACX;oBACA;wBACEa,MAAM;wBACNR,QAAQ;4BACN;gCACED,MAAM;gCACNS,MAAM;gCACNI,cAAc;4BAChB;4BACA;gCACEb,MAAM;gCACNS,MAAM;gCACNI,cAAc;gCACdE,KAAK;gCACLC,KAAK;4BACP;yBACD;oBACH;oBACA;wBACEhB,MAAM;wBACNS,MAAM;oBACR;iBACD;gBACDK,OAAO;YACT;QACF;QACA;YACEf,IAAI,CAAC,EAAEJ,UAAU,OAAO,CAAC;YACzBK,MAAM;YACNC,QAAQ;gBAAC;aAAW;YACpBC,SAAS,CAACe,MAAcb;gBACtB,OAAOV,eACLuB,MACA;oBACE,GAAGb,OAAO;oBACVC,QAAQD,QAAQC,MAAM,IAAIZ;gBAC5B,GACAD,UAAUY,QAAQE,KAAK;YAE3B;YACAC,QAAQ;YACRC,UAAU;gBACRR,MAAM,CAAC,EAAEL,UAAU,gBAAgB,CAAC;gBACpCc,MAAM;gBACNC,OAAO;oBACLC,WAAUC,IAAI;wBACZ,OAAOA,IAAI,CAAC,WAAW,KAAK,CAAC,EAAEjB,UAAU,OAAO,CAAC;oBACnD;gBACF;gBACAM,QAAQ;oBACN;wBACED,MAAM;wBACNS,MAAM;wBACNI,cAAc;wBACdC,OAAO;wBACPV,SAASR;oBACX;oBACA;wBACEa,MAAM;wBACNR,QAAQ;4BACN;gCACED,MAAM;gCACNS,MAAM;gCACNI,cAAc;4BAChB;4BACA;gCACEb,MAAM;gCACNS,MAAM;gCACNI,cAAc;gCACdE,KAAK;gCACLC,KAAK;4BACP;yBACD;oBACH;oBACA;wBACEhB,MAAM;wBACNS,MAAM;oBACR;iBACD;gBACDK,OAAO;YACT;QACF;KACD;IACDI,UAAU;AACZ,EAAC"}
@@ -1,8 +0,0 @@
1
- type ElevenLabsTextToSpeechOptions = {
2
- voice_id: string;
3
- };
4
- export declare const generateVoice: (text: string, options: ElevenLabsTextToSpeechOptions) => Promise<{
5
- alignment: string[];
6
- buffer: Buffer<ArrayBuffer>;
7
- } | undefined>;
8
- export {};
@@ -1,20 +0,0 @@
1
- import { ElevenLabsClient } from 'elevenlabs';
2
- export const generateVoice = async (text, options)=>{
3
- const elevenLabs = new ElevenLabsClient({
4
- apiKey: process.env.ELEVENLABS_API_KEY
5
- });
6
- const response = await elevenLabs.textToSpeech.convertWithTimstamps(options.voice_id, {
7
- ...options,
8
- text
9
- });
10
- if (response?.audio_base64) {
11
- const audioBuffer = Buffer.from(response.audio_base64, 'base64');
12
- // const transcript = convertToTranscript(mp3Audio.alignment)
13
- return {
14
- alignment: response.alignment,
15
- buffer: audioBuffer
16
- };
17
- }
18
- };
19
-
20
- //# sourceMappingURL=generateVoice.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/ai/models/elevenLabs/generateVoice.ts"],"sourcesContent":["import { ElevenLabsClient } from 'elevenlabs'\n\ntype ElevenLabsTextToSpeechOptions = {\n voice_id: string\n}\n\nexport const generateVoice = async (text: string, options: ElevenLabsTextToSpeechOptions) => {\n const elevenLabs = new ElevenLabsClient({\n apiKey: process.env.ELEVENLABS_API_KEY,\n })\n const response = (await elevenLabs.textToSpeech.convertWithTimstamps(options.voice_id, {\n ...options,\n text,\n })) as {\n alignment: string[]\n audio_base64: string\n }\n if (response?.audio_base64) {\n const audioBuffer = Buffer.from(response.audio_base64, 'base64')\n // const transcript = convertToTranscript(mp3Audio.alignment)\n\n return {\n alignment: response.alignment,\n buffer: audioBuffer,\n }\n }\n}\n"],"names":["ElevenLabsClient","generateVoice","text","options","elevenLabs","apiKey","process","env","ELEVENLABS_API_KEY","response","textToSpeech","convertWithTimstamps","voice_id","audio_base64","audioBuffer","Buffer","from","alignment","buffer"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,aAAY;AAM7C,OAAO,MAAMC,gBAAgB,OAAOC,MAAcC;IAChD,MAAMC,aAAa,IAAIJ,iBAAiB;QACtCK,QAAQC,QAAQC,GAAG,CAACC,kBAAkB;IACxC;IACA,MAAMC,WAAY,MAAML,WAAWM,YAAY,CAACC,oBAAoB,CAACR,QAAQS,QAAQ,EAAE;QACrF,GAAGT,OAAO;QACVD;IACF;IAIA,IAAIO,UAAUI,cAAc;QAC1B,MAAMC,cAAcC,OAAOC,IAAI,CAACP,SAASI,YAAY,EAAE;QACvD,6DAA6D;QAE7D,OAAO;YACLI,WAAWR,SAASQ,SAAS;YAC7BC,QAAQJ;QACV;IACF;AACF,EAAC"}
@@ -1,2 +0,0 @@
1
- import type { GenerationConfig } from '../../../types.js';
2
- export declare const ElevenLabsConfig: GenerationConfig;