@delmaredigital/payload-puck 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/README.md +331 -16
  2. package/dist/admin/PuckEditorView.d.ts +1 -1
  3. package/dist/admin/PuckEditorView.d.ts.map +1 -1
  4. package/dist/ai/collections/AiContext.d.ts +16 -0
  5. package/dist/ai/collections/AiContext.d.ts.map +1 -0
  6. package/dist/ai/collections/AiContext.js +87 -0
  7. package/dist/ai/collections/AiContext.js.map +1 -0
  8. package/dist/ai/collections/AiPrompts.d.ts +10 -0
  9. package/dist/ai/collections/AiPrompts.d.ts.map +1 -0
  10. package/dist/ai/collections/AiPrompts.js +63 -0
  11. package/dist/ai/collections/AiPrompts.js.map +1 -0
  12. package/dist/ai/createAiApiRoutes.d.ts +40 -0
  13. package/dist/ai/createAiApiRoutes.d.ts.map +1 -0
  14. package/dist/ai/createAiApiRoutes.js +106 -0
  15. package/dist/ai/createAiApiRoutes.js.map +1 -0
  16. package/dist/ai/createAiGenerate.d.ts +65 -0
  17. package/dist/ai/createAiGenerate.d.ts.map +1 -0
  18. package/dist/ai/createAiGenerate.js +106 -0
  19. package/dist/ai/createAiGenerate.js.map +1 -0
  20. package/dist/ai/createAiPlugin.d.ts +39 -0
  21. package/dist/ai/createAiPlugin.d.ts.map +1 -0
  22. package/dist/ai/createAiPlugin.js +61 -0
  23. package/dist/ai/createAiPlugin.js.map +1 -0
  24. package/dist/ai/hooks/useAiContext.d.ts +63 -0
  25. package/dist/ai/hooks/useAiContext.d.ts.map +1 -0
  26. package/dist/ai/hooks/useAiContext.js +146 -0
  27. package/dist/ai/hooks/useAiContext.js.map +1 -0
  28. package/dist/ai/hooks/useAiPrompts.d.ts +25 -0
  29. package/dist/ai/hooks/useAiPrompts.d.ts.map +1 -0
  30. package/dist/ai/hooks/useAiPrompts.js +74 -0
  31. package/dist/ai/hooks/useAiPrompts.js.map +1 -0
  32. package/dist/ai/index.d.ts +51 -0
  33. package/dist/ai/index.d.ts.map +1 -0
  34. package/dist/ai/index.js +69 -0
  35. package/dist/ai/index.js.map +1 -0
  36. package/dist/ai/plugins/ContextEditorPanel.d.ts +9 -0
  37. package/dist/ai/plugins/ContextEditorPanel.d.ts.map +1 -0
  38. package/dist/ai/plugins/ContextEditorPanel.js +399 -0
  39. package/dist/ai/plugins/ContextEditorPanel.js.map +1 -0
  40. package/dist/ai/plugins/PromptEditorPanel.d.ts +9 -0
  41. package/dist/ai/plugins/PromptEditorPanel.d.ts.map +1 -0
  42. package/dist/ai/plugins/PromptEditorPanel.js +270 -0
  43. package/dist/ai/plugins/PromptEditorPanel.js.map +1 -0
  44. package/dist/ai/plugins/contextEditorPlugin.d.ts +30 -0
  45. package/dist/ai/plugins/contextEditorPlugin.d.ts.map +1 -0
  46. package/dist/ai/plugins/contextEditorPlugin.js +40 -0
  47. package/dist/ai/plugins/contextEditorPlugin.js.map +1 -0
  48. package/dist/ai/plugins/promptApiRoutes.d.ts +68 -0
  49. package/dist/ai/plugins/promptApiRoutes.d.ts.map +1 -0
  50. package/dist/ai/plugins/promptApiRoutes.js +181 -0
  51. package/dist/ai/plugins/promptApiRoutes.js.map +1 -0
  52. package/dist/ai/plugins/promptEditorPlugin.d.ts +29 -0
  53. package/dist/ai/plugins/promptEditorPlugin.d.ts.map +1 -0
  54. package/dist/ai/plugins/promptEditorPlugin.js +39 -0
  55. package/dist/ai/plugins/promptEditorPlugin.js.map +1 -0
  56. package/dist/ai/presets/componentAiDefaults.d.ts +40 -0
  57. package/dist/ai/presets/componentAiDefaults.d.ts.map +1 -0
  58. package/dist/ai/presets/componentAiDefaults.js +239 -0
  59. package/dist/ai/presets/componentAiDefaults.js.map +1 -0
  60. package/dist/ai/presets/index.d.ts +94 -0
  61. package/dist/ai/presets/index.d.ts.map +1 -0
  62. package/dist/ai/presets/index.js +110 -0
  63. package/dist/ai/presets/index.js.map +1 -0
  64. package/dist/ai/presets/instructions/interactive.d.ts +15 -0
  65. package/dist/ai/presets/instructions/interactive.d.ts.map +1 -0
  66. package/dist/ai/presets/instructions/interactive.js +334 -0
  67. package/dist/ai/presets/instructions/interactive.js.map +1 -0
  68. package/dist/ai/presets/instructions/layout.d.ts +16 -0
  69. package/dist/ai/presets/instructions/layout.d.ts.map +1 -0
  70. package/dist/ai/presets/instructions/layout.js +486 -0
  71. package/dist/ai/presets/instructions/layout.js.map +1 -0
  72. package/dist/ai/presets/instructions/media.d.ts +15 -0
  73. package/dist/ai/presets/instructions/media.d.ts.map +1 -0
  74. package/dist/ai/presets/instructions/media.js +136 -0
  75. package/dist/ai/presets/instructions/media.js.map +1 -0
  76. package/dist/ai/presets/instructions/pagePatterns.d.ts +20 -0
  77. package/dist/ai/presets/instructions/pagePatterns.d.ts.map +1 -0
  78. package/dist/ai/presets/instructions/pagePatterns.js +290 -0
  79. package/dist/ai/presets/instructions/pagePatterns.js.map +1 -0
  80. package/dist/ai/presets/instructions/schemas.d.ts +1247 -0
  81. package/dist/ai/presets/instructions/schemas.d.ts.map +1 -0
  82. package/dist/ai/presets/instructions/schemas.js +240 -0
  83. package/dist/ai/presets/instructions/schemas.js.map +1 -0
  84. package/dist/ai/presets/instructions/typography.d.ts +16 -0
  85. package/dist/ai/presets/instructions/typography.d.ts.map +1 -0
  86. package/dist/ai/presets/instructions/typography.js +192 -0
  87. package/dist/ai/presets/instructions/typography.js.map +1 -0
  88. package/dist/ai/tools/index.d.ts +116 -0
  89. package/dist/ai/tools/index.d.ts.map +1 -0
  90. package/dist/ai/tools/index.js +214 -0
  91. package/dist/ai/tools/index.js.map +1 -0
  92. package/dist/ai/types.d.ts +507 -0
  93. package/dist/ai/types.d.ts.map +1 -0
  94. package/dist/ai/types.js +2 -0
  95. package/dist/ai/types.js.map +1 -0
  96. package/dist/ai/utils/injectAiConfig.d.ts +67 -0
  97. package/dist/ai/utils/injectAiConfig.d.ts.map +1 -0
  98. package/dist/ai/utils/injectAiConfig.js +216 -0
  99. package/dist/ai/utils/injectAiConfig.js.map +1 -0
  100. package/dist/api/createPuckApiRoutesWithId.d.ts.map +1 -1
  101. package/dist/api/createPuckApiRoutesWithId.js +12 -5
  102. package/dist/api/createPuckApiRoutesWithId.js.map +1 -1
  103. package/dist/api/types.d.ts +1 -1
  104. package/dist/api/types.d.ts.map +1 -1
  105. package/dist/components/exports.d.ts +1 -1
  106. package/dist/components/exports.d.ts.map +1 -1
  107. package/dist/components/exports.js +1 -1
  108. package/dist/components/exports.js.map +1 -1
  109. package/dist/components/interactive/Accordion.d.ts +1 -1
  110. package/dist/components/interactive/Accordion.d.ts.map +1 -1
  111. package/dist/components/interactive/Accordion.js +4 -4
  112. package/dist/components/interactive/Accordion.js.map +1 -1
  113. package/dist/components/interactive/Accordion.server.d.ts +1 -1
  114. package/dist/components/interactive/Accordion.server.d.ts.map +1 -1
  115. package/dist/components/interactive/Button.d.ts +1 -1
  116. package/dist/components/interactive/Button.d.ts.map +1 -1
  117. package/dist/components/interactive/Button.server.d.ts +2 -3
  118. package/dist/components/interactive/Button.server.d.ts.map +1 -1
  119. package/dist/components/interactive/Button.server.js +1 -2
  120. package/dist/components/interactive/Button.server.js.map +1 -1
  121. package/dist/components/interactive/Card.d.ts +1 -1
  122. package/dist/components/interactive/Card.d.ts.map +1 -1
  123. package/dist/components/interactive/Card.server.d.ts +1 -1
  124. package/dist/components/interactive/Card.server.d.ts.map +1 -1
  125. package/dist/components/interactive/Divider.d.ts +1 -1
  126. package/dist/components/interactive/Divider.d.ts.map +1 -1
  127. package/dist/components/interactive/Divider.server.d.ts +1 -1
  128. package/dist/components/interactive/Divider.server.d.ts.map +1 -1
  129. package/dist/components/layout/Container.d.ts +3 -1
  130. package/dist/components/layout/Container.d.ts.map +1 -1
  131. package/dist/components/layout/Container.js +16 -2
  132. package/dist/components/layout/Container.js.map +1 -1
  133. package/dist/components/layout/Container.server.d.ts +3 -1
  134. package/dist/components/layout/Container.server.d.ts.map +1 -1
  135. package/dist/components/layout/Container.server.js +5 -2
  136. package/dist/components/layout/Container.server.js.map +1 -1
  137. package/dist/components/layout/Flex.d.ts +3 -1
  138. package/dist/components/layout/Flex.d.ts.map +1 -1
  139. package/dist/components/layout/Flex.js +18 -2
  140. package/dist/components/layout/Flex.js.map +1 -1
  141. package/dist/components/layout/Flex.server.d.ts +3 -1
  142. package/dist/components/layout/Flex.server.d.ts.map +1 -1
  143. package/dist/components/layout/Flex.server.js +5 -2
  144. package/dist/components/layout/Flex.server.js.map +1 -1
  145. package/dist/components/layout/Grid.d.ts +3 -1
  146. package/dist/components/layout/Grid.d.ts.map +1 -1
  147. package/dist/components/layout/Grid.js +15 -2
  148. package/dist/components/layout/Grid.js.map +1 -1
  149. package/dist/components/layout/Grid.server.d.ts +3 -1
  150. package/dist/components/layout/Grid.server.d.ts.map +1 -1
  151. package/dist/components/layout/Grid.server.js +5 -2
  152. package/dist/components/layout/Grid.server.js.map +1 -1
  153. package/dist/components/layout/Section.d.ts +3 -1
  154. package/dist/components/layout/Section.d.ts.map +1 -1
  155. package/dist/components/layout/Section.js +32 -5
  156. package/dist/components/layout/Section.js.map +1 -1
  157. package/dist/components/layout/Section.server.d.ts +3 -1
  158. package/dist/components/layout/Section.server.d.ts.map +1 -1
  159. package/dist/components/layout/Section.server.js +16 -4
  160. package/dist/components/layout/Section.server.js.map +1 -1
  161. package/dist/components/layout/Spacer.d.ts +1 -1
  162. package/dist/components/layout/Spacer.d.ts.map +1 -1
  163. package/dist/components/layout/Spacer.server.d.ts +1 -1
  164. package/dist/components/layout/Spacer.server.d.ts.map +1 -1
  165. package/dist/components/layout/Template.d.ts +1 -1
  166. package/dist/components/layout/Template.d.ts.map +1 -1
  167. package/dist/components/layout/Template.server.d.ts +1 -1
  168. package/dist/components/layout/Template.server.d.ts.map +1 -1
  169. package/dist/components/media/Image.d.ts +1 -1
  170. package/dist/components/media/Image.d.ts.map +1 -1
  171. package/dist/components/media/Image.server.d.ts +1 -1
  172. package/dist/components/media/Image.server.d.ts.map +1 -1
  173. package/dist/components/typography/Heading.d.ts +1 -1
  174. package/dist/components/typography/Heading.d.ts.map +1 -1
  175. package/dist/components/typography/Heading.server.d.ts +1 -1
  176. package/dist/components/typography/Heading.server.d.ts.map +1 -1
  177. package/dist/components/typography/RichText.editor.d.ts +15 -2
  178. package/dist/components/typography/RichText.editor.d.ts.map +1 -1
  179. package/dist/components/typography/RichText.editor.js +18 -11
  180. package/dist/components/typography/RichText.editor.js.map +1 -1
  181. package/dist/components/typography/RichText.server.d.ts +3 -2
  182. package/dist/components/typography/RichText.server.d.ts.map +1 -1
  183. package/dist/components/typography/RichText.server.js +10 -5
  184. package/dist/components/typography/RichText.server.js.map +1 -1
  185. package/dist/components/typography/Text.d.ts +1 -1
  186. package/dist/components/typography/Text.d.ts.map +1 -1
  187. package/dist/components/typography/Text.server.d.ts +1 -1
  188. package/dist/components/typography/Text.server.d.ts.map +1 -1
  189. package/dist/components/typography/index.d.ts +1 -1
  190. package/dist/components/typography/index.d.ts.map +1 -1
  191. package/dist/components/typography/index.js +1 -1
  192. package/dist/components/typography/index.js.map +1 -1
  193. package/dist/config/config.editor.d.ts +4 -4
  194. package/dist/config/config.editor.d.ts.map +1 -1
  195. package/dist/config/index.d.ts +1 -1
  196. package/dist/config/index.d.ts.map +1 -1
  197. package/dist/config/merge.d.ts +1 -1
  198. package/dist/config/merge.d.ts.map +1 -1
  199. package/dist/config/presets.d.ts +15 -15
  200. package/dist/config/presets.d.ts.map +1 -1
  201. package/dist/editor/PuckEditor.d.ts +88 -2
  202. package/dist/editor/PuckEditor.d.ts.map +1 -1
  203. package/dist/editor/PuckEditor.js +41 -13
  204. package/dist/editor/PuckEditor.js.map +1 -1
  205. package/dist/editor/PuckEditorImpl.client.d.ts +49 -4
  206. package/dist/editor/PuckEditorImpl.client.d.ts.map +1 -1
  207. package/dist/editor/PuckEditorImpl.client.js +191 -14
  208. package/dist/editor/PuckEditorImpl.client.js.map +1 -1
  209. package/dist/editor/ai-plugin-overrides.css +20 -0
  210. package/dist/editor/components/HeaderActions.d.ts +7 -2
  211. package/dist/editor/components/HeaderActions.d.ts.map +1 -1
  212. package/dist/editor/components/HeaderActions.js +16 -3
  213. package/dist/editor/components/HeaderActions.js.map +1 -1
  214. package/dist/editor/components/IframeWrapper.d.ts +13 -0
  215. package/dist/editor/components/IframeWrapper.d.ts.map +1 -1
  216. package/dist/editor/components/IframeWrapper.js +60 -4
  217. package/dist/editor/components/IframeWrapper.js.map +1 -1
  218. package/dist/editor/components/PreviewModal.d.ts +9 -1
  219. package/dist/editor/components/PreviewModal.d.ts.map +1 -1
  220. package/dist/editor/components/PreviewModal.js +36 -1
  221. package/dist/editor/components/PreviewModal.js.map +1 -1
  222. package/dist/editor/index.d.ts +4 -0
  223. package/dist/editor/index.d.ts.map +1 -1
  224. package/dist/editor/index.js +4 -0
  225. package/dist/editor/index.js.map +1 -1
  226. package/dist/editor/plugins/VersionHistoryPanel.d.ts +43 -0
  227. package/dist/editor/plugins/VersionHistoryPanel.d.ts.map +1 -0
  228. package/dist/editor/plugins/VersionHistoryPanel.js +303 -0
  229. package/dist/editor/plugins/VersionHistoryPanel.js.map +1 -0
  230. package/dist/editor/plugins/index.d.ts +6 -3
  231. package/dist/editor/plugins/index.d.ts.map +1 -1
  232. package/dist/editor/plugins/index.js +7 -3
  233. package/dist/editor/plugins/index.js.map +1 -1
  234. package/dist/editor/plugins/versionHistoryPlugin.d.ts +37 -0
  235. package/dist/editor/plugins/versionHistoryPlugin.d.ts.map +1 -0
  236. package/dist/editor/plugins/versionHistoryPlugin.js +36 -0
  237. package/dist/editor/plugins/versionHistoryPlugin.js.map +1 -0
  238. package/dist/editor/utils/detectPageTree.d.ts +1 -1
  239. package/dist/editor/utils/detectPageTree.d.ts.map +1 -1
  240. package/dist/editor/utils/injectPageTreeFields.d.ts +1 -1
  241. package/dist/editor/utils/injectPageTreeFields.d.ts.map +1 -1
  242. package/dist/endpoints/ai.d.ts +36 -0
  243. package/dist/endpoints/ai.d.ts.map +1 -0
  244. package/dist/endpoints/ai.js +315 -0
  245. package/dist/endpoints/ai.js.map +1 -0
  246. package/dist/endpoints/context.d.ts +30 -0
  247. package/dist/endpoints/context.d.ts.map +1 -0
  248. package/dist/endpoints/context.js +123 -0
  249. package/dist/endpoints/context.js.map +1 -0
  250. package/dist/endpoints/prompts.d.ts +28 -0
  251. package/dist/endpoints/prompts.d.ts.map +1 -0
  252. package/dist/endpoints/prompts.js +118 -0
  253. package/dist/endpoints/prompts.js.map +1 -0
  254. package/dist/endpoints/styles.d.ts +19 -0
  255. package/dist/endpoints/styles.d.ts.map +1 -0
  256. package/dist/endpoints/styles.js +116 -0
  257. package/dist/endpoints/styles.js.map +1 -0
  258. package/dist/fields/AlignmentField.d.ts +1 -1
  259. package/dist/fields/AlignmentField.d.ts.map +1 -1
  260. package/dist/fields/AlignmentField.js +1 -0
  261. package/dist/fields/AlignmentField.js.map +1 -1
  262. package/dist/fields/AnimationField.d.ts +1 -1
  263. package/dist/fields/AnimationField.d.ts.map +1 -1
  264. package/dist/fields/BackgroundField.d.ts +1 -1
  265. package/dist/fields/BackgroundField.d.ts.map +1 -1
  266. package/dist/fields/BackgroundField.js +9 -4
  267. package/dist/fields/BackgroundField.js.map +1 -1
  268. package/dist/fields/BorderField.d.ts +1 -1
  269. package/dist/fields/BorderField.d.ts.map +1 -1
  270. package/dist/fields/BorderField.js +1 -0
  271. package/dist/fields/BorderField.js.map +1 -1
  272. package/dist/fields/ColorPickerField.d.ts +1 -1
  273. package/dist/fields/ColorPickerField.d.ts.map +1 -1
  274. package/dist/fields/ColorPickerField.js +4 -2
  275. package/dist/fields/ColorPickerField.js.map +1 -1
  276. package/dist/fields/ContentAlignmentField.d.ts +66 -0
  277. package/dist/fields/ContentAlignmentField.d.ts.map +1 -0
  278. package/dist/fields/ContentAlignmentField.js +255 -0
  279. package/dist/fields/ContentAlignmentField.js.map +1 -0
  280. package/dist/fields/DimensionsField.d.ts +1 -1
  281. package/dist/fields/DimensionsField.d.ts.map +1 -1
  282. package/dist/fields/DimensionsField.js +8 -2
  283. package/dist/fields/DimensionsField.js.map +1 -1
  284. package/dist/fields/FlexAlignmentField.d.ts +1 -1
  285. package/dist/fields/FlexAlignmentField.d.ts.map +1 -1
  286. package/dist/fields/FolderPickerField.d.ts +1 -1
  287. package/dist/fields/FolderPickerField.d.ts.map +1 -1
  288. package/dist/fields/GradientEditor.d.ts.map +1 -1
  289. package/dist/fields/GradientEditor.js +3 -0
  290. package/dist/fields/GradientEditor.js.map +1 -1
  291. package/dist/fields/LockedField.d.ts +1 -1
  292. package/dist/fields/LockedField.d.ts.map +1 -1
  293. package/dist/fields/MarginField.d.ts +1 -1
  294. package/dist/fields/MarginField.d.ts.map +1 -1
  295. package/dist/fields/MediaField.d.ts +1 -1
  296. package/dist/fields/MediaField.d.ts.map +1 -1
  297. package/dist/fields/MediaField.js +3 -2
  298. package/dist/fields/MediaField.js.map +1 -1
  299. package/dist/fields/PaddingField.d.ts +1 -1
  300. package/dist/fields/PaddingField.d.ts.map +1 -1
  301. package/dist/fields/PageSegmentField.d.ts +1 -1
  302. package/dist/fields/PageSegmentField.d.ts.map +1 -1
  303. package/dist/fields/ResetField.d.ts +1 -1
  304. package/dist/fields/ResetField.d.ts.map +1 -1
  305. package/dist/fields/ResetField.js +1 -1
  306. package/dist/fields/ResetField.js.map +1 -1
  307. package/dist/fields/ResponsiveField.d.ts +1 -1
  308. package/dist/fields/ResponsiveField.d.ts.map +1 -1
  309. package/dist/fields/ResponsiveField.js +5 -2
  310. package/dist/fields/ResponsiveField.js.map +1 -1
  311. package/dist/fields/ResponsiveVisibilityField.d.ts +1 -1
  312. package/dist/fields/ResponsiveVisibilityField.d.ts.map +1 -1
  313. package/dist/fields/ResponsiveVisibilityField.js +4 -3
  314. package/dist/fields/ResponsiveVisibilityField.js.map +1 -1
  315. package/dist/fields/SizeField.d.ts +3 -25
  316. package/dist/fields/SizeField.d.ts.map +1 -1
  317. package/dist/fields/SizeField.js +8 -34
  318. package/dist/fields/SizeField.js.map +1 -1
  319. package/dist/fields/SlugPreviewField.d.ts +1 -1
  320. package/dist/fields/SlugPreviewField.d.ts.map +1 -1
  321. package/dist/fields/TemplateField.d.ts +1 -1
  322. package/dist/fields/TemplateField.d.ts.map +1 -1
  323. package/dist/fields/TemplateField.js +1 -1
  324. package/dist/fields/TemplateField.js.map +1 -1
  325. package/dist/fields/TransformField.d.ts +1 -1
  326. package/dist/fields/TransformField.d.ts.map +1 -1
  327. package/dist/fields/TransformField.js +2 -0
  328. package/dist/fields/TransformField.js.map +1 -1
  329. package/dist/fields/VerticalAlignmentField.d.ts +1 -1
  330. package/dist/fields/VerticalAlignmentField.d.ts.map +1 -1
  331. package/dist/fields/WidthField.d.ts +1 -1
  332. package/dist/fields/WidthField.d.ts.map +1 -1
  333. package/dist/fields/index.d.ts +8 -36
  334. package/dist/fields/index.d.ts.map +1 -1
  335. package/dist/fields/index.js +20 -78
  336. package/dist/fields/index.js.map +1 -1
  337. package/dist/fields/richtext/controls/ColorPickerControl.d.ts +16 -0
  338. package/dist/fields/richtext/controls/ColorPickerControl.d.ts.map +1 -0
  339. package/dist/fields/richtext/controls/ColorPickerControl.js +116 -0
  340. package/dist/fields/richtext/controls/ColorPickerControl.js.map +1 -0
  341. package/dist/fields/richtext/controls/DropdownPortal.d.ts +17 -0
  342. package/dist/fields/richtext/controls/DropdownPortal.d.ts.map +1 -0
  343. package/dist/fields/richtext/controls/DropdownPortal.js +90 -0
  344. package/dist/fields/richtext/controls/DropdownPortal.js.map +1 -0
  345. package/dist/fields/richtext/controls/FontSizeControl.d.ts +8 -0
  346. package/dist/fields/richtext/controls/FontSizeControl.d.ts.map +1 -0
  347. package/dist/fields/richtext/controls/FontSizeControl.js +62 -0
  348. package/dist/fields/richtext/controls/FontSizeControl.js.map +1 -0
  349. package/dist/fields/richtext/controls/HighlightControl.d.ts +9 -0
  350. package/dist/fields/richtext/controls/HighlightControl.d.ts.map +1 -0
  351. package/dist/fields/richtext/controls/HighlightControl.js +44 -0
  352. package/dist/fields/richtext/controls/HighlightControl.js.map +1 -0
  353. package/dist/fields/richtext/controls/index.d.ts +11 -0
  354. package/dist/fields/richtext/controls/index.d.ts.map +1 -0
  355. package/dist/fields/richtext/controls/index.js +16 -0
  356. package/dist/fields/richtext/controls/index.js.map +1 -0
  357. package/dist/fields/richtext/controls/shared.d.ts +97 -0
  358. package/dist/fields/richtext/controls/shared.d.ts.map +1 -0
  359. package/dist/fields/richtext/controls/shared.js +344 -0
  360. package/dist/fields/richtext/controls/shared.js.map +1 -0
  361. package/dist/fields/richtext/createRichTextField.d.ts +165 -0
  362. package/dist/fields/richtext/createRichTextField.d.ts.map +1 -0
  363. package/dist/fields/richtext/createRichTextField.js +139 -0
  364. package/dist/fields/richtext/createRichTextField.js.map +1 -0
  365. package/dist/fields/richtext/extensions/FontSize.d.ts +23 -0
  366. package/dist/fields/richtext/extensions/FontSize.d.ts.map +1 -0
  367. package/dist/fields/richtext/extensions/FontSize.js +47 -0
  368. package/dist/fields/richtext/extensions/FontSize.js.map +1 -0
  369. package/dist/fields/richtext/extensions/index.d.ts +5 -0
  370. package/dist/fields/richtext/extensions/index.d.ts.map +1 -0
  371. package/dist/fields/richtext/extensions/index.js +5 -0
  372. package/dist/fields/richtext/extensions/index.js.map +1 -0
  373. package/dist/fields/richtext/index.d.ts +14 -0
  374. package/dist/fields/richtext/index.d.ts.map +1 -0
  375. package/dist/fields/richtext/index.js +19 -0
  376. package/dist/fields/richtext/index.js.map +1 -0
  377. package/dist/fields/richtext/richtext-menu.css +50 -0
  378. package/dist/fields/shared.d.ts +27 -1
  379. package/dist/fields/shared.d.ts.map +1 -1
  380. package/dist/fields/shared.js +34 -0
  381. package/dist/fields/shared.js.map +1 -1
  382. package/dist/layouts/types.d.ts +30 -0
  383. package/dist/layouts/types.d.ts.map +1 -1
  384. package/dist/plugin/index.d.ts +1 -0
  385. package/dist/plugin/index.d.ts.map +1 -1
  386. package/dist/plugin/index.js +111 -1
  387. package/dist/plugin/index.js.map +1 -1
  388. package/dist/render/HybridPageRenderer.d.ts +1 -1
  389. package/dist/render/HybridPageRenderer.d.ts.map +1 -1
  390. package/dist/render/PageRenderer.d.ts +1 -1
  391. package/dist/render/PageRenderer.d.ts.map +1 -1
  392. package/dist/render/PageRenderer.js +1 -1
  393. package/dist/render/PageRenderer.js.map +1 -1
  394. package/dist/render/PuckEditor.client.d.ts +2 -2
  395. package/dist/render/PuckEditor.client.d.ts.map +1 -1
  396. package/dist/render/PuckEditor.client.js +2 -2
  397. package/dist/render/PuckEditor.client.js.map +1 -1
  398. package/dist/types/index.d.ts +36 -11
  399. package/dist/types/index.d.ts.map +1 -1
  400. package/dist/version.d.ts +1 -1
  401. package/dist/version.js +1 -1
  402. package/dist/views/PuckConfigContext.d.ts +56 -2
  403. package/dist/views/PuckConfigContext.d.ts.map +1 -1
  404. package/dist/views/PuckConfigContext.js +6 -3
  405. package/dist/views/PuckConfigContext.js.map +1 -1
  406. package/dist/views/PuckEditorView.d.ts.map +1 -1
  407. package/dist/views/PuckEditorView.js +23 -1
  408. package/dist/views/PuckEditorView.js.map +1 -1
  409. package/package.json +34 -10
  410. package/dist/components/typography/RichText.d.ts +0 -20
  411. package/dist/components/typography/RichText.d.ts.map +0 -1
  412. package/dist/components/typography/RichText.js +0 -73
  413. package/dist/components/typography/RichText.js.map +0 -1
  414. package/dist/fields/TiptapField.d.ts +0 -40
  415. package/dist/fields/TiptapField.d.ts.map +0 -1
  416. package/dist/fields/TiptapField.js +0 -857
  417. package/dist/fields/TiptapField.js.map +0 -1
  418. package/dist/fields/TiptapModal.d.ts +0 -10
  419. package/dist/fields/TiptapModal.d.ts.map +0 -1
  420. package/dist/fields/TiptapModal.js +0 -114
  421. package/dist/fields/TiptapModal.js.map +0 -1
  422. package/dist/fields/TiptapModalField.d.ts +0 -23
  423. package/dist/fields/TiptapModalField.d.ts.map +0 -1
  424. package/dist/fields/TiptapModalField.js +0 -55
  425. package/dist/fields/TiptapModalField.js.map +0 -1
  426. package/dist/fields/richtext-output.css +0 -219
  427. package/dist/fields/tiptap-styles.css +0 -248
@@ -0,0 +1,37 @@
1
+ import type { Plugin } from '@puckeditor/core';
2
+ export interface VersionHistoryPluginOptions {
3
+ /**
4
+ * Page ID to fetch versions for
5
+ */
6
+ pageId: string;
7
+ /**
8
+ * API endpoint base path
9
+ * @default '/api/puck/pages'
10
+ */
11
+ apiEndpoint?: string;
12
+ /**
13
+ * Callback after successful restore (e.g., to mark editor as clean)
14
+ */
15
+ onRestoreSuccess?: () => void;
16
+ }
17
+ /**
18
+ * Creates a Puck plugin for version history
19
+ *
20
+ * Adds a "History" button to the plugin rail that opens a panel
21
+ * showing version history with the ability to restore previous versions.
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * import { createVersionHistoryPlugin } from '@delmaredigital/payload-puck/editor'
26
+ *
27
+ * const versionPlugin = createVersionHistoryPlugin({
28
+ * pageId: 'page-123',
29
+ * apiEndpoint: '/api/puck/pages',
30
+ * onRestoreSuccess: () => markEditorClean(),
31
+ * })
32
+ *
33
+ * <Puck plugins={[versionPlugin]} />
34
+ * ```
35
+ */
36
+ export declare function createVersionHistoryPlugin(options: VersionHistoryPluginOptions): Plugin;
37
+ //# sourceMappingURL=versionHistoryPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionHistoryPlugin.d.ts","sourceRoot":"","sources":["../../../src/editor/plugins/versionHistoryPlugin.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAG9C,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;CAC9B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,2BAA2B,GAAG,MAAM,CAYvF"}
@@ -0,0 +1,36 @@
1
+ 'use client';
2
+ import { createElement } from 'react';
3
+ import { History } from 'lucide-react';
4
+ import { VersionHistoryPanel } from './VersionHistoryPanel';
5
+ /**
6
+ * Creates a Puck plugin for version history
7
+ *
8
+ * Adds a "History" button to the plugin rail that opens a panel
9
+ * showing version history with the ability to restore previous versions.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * import { createVersionHistoryPlugin } from '@delmaredigital/payload-puck/editor'
14
+ *
15
+ * const versionPlugin = createVersionHistoryPlugin({
16
+ * pageId: 'page-123',
17
+ * apiEndpoint: '/api/puck/pages',
18
+ * onRestoreSuccess: () => markEditorClean(),
19
+ * })
20
+ *
21
+ * <Puck plugins={[versionPlugin]} />
22
+ * ```
23
+ */
24
+ export function createVersionHistoryPlugin(options) {
25
+ return {
26
+ name: 'version-history',
27
+ label: 'History',
28
+ icon: createElement(History, { size: 20 }),
29
+ render: () => createElement(VersionHistoryPanel, {
30
+ pageId: options.pageId,
31
+ apiEndpoint: options.apiEndpoint,
32
+ onRestoreSuccess: options.onRestoreSuccess,
33
+ }),
34
+ };
35
+ }
36
+ //# sourceMappingURL=versionHistoryPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionHistoryPlugin.js","sourceRoot":"","sources":["../../../src/editor/plugins/versionHistoryPlugin.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAkB3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAoC;IAC7E,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,EAAE,CACX,aAAa,CAAC,mBAAmB,EAAE;YACjC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;SAC3C,CAAC;KACL,CAAA;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Config as PuckConfig } from '@measured/puck';
1
+ import type { Config as PuckConfig } from '@puckeditor/core';
2
2
  /**
3
3
  * Detects whether page-tree integration should be enabled.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"detectPageTree.d.ts","sourceRoot":"","sources":["../../../src/editor/utils/detectPageTree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE1D;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAclF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAG7D"}
1
+ {"version":3,"file":"detectPageTree.d.ts","sourceRoot":"","sources":["../../../src/editor/utils/detectPageTree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE5D;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAclF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAG7D"}
@@ -1,4 +1,4 @@
1
- import type { Config as PuckConfig } from '@measured/puck';
1
+ import type { Config as PuckConfig } from '@puckeditor/core';
2
2
  /**
3
3
  * Injects page-tree fields (folder, pageSegment, slug) into a Puck config's root fields.
4
4
  * Replaces any existing slug field with the page-tree slug preview.
@@ -1 +1 @@
1
- {"version":3,"file":"injectPageTreeFields.d.ts","sourceRoot":"","sources":["../../../src/editor/utils/injectPageTreeFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAK1D;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAyBnE"}
1
+ {"version":3,"file":"injectPageTreeFields.d.ts","sourceRoot":"","sources":["../../../src/editor/utils/injectPageTreeFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAK5D;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAyBnE"}
@@ -0,0 +1,36 @@
1
+ import type { PayloadHandler } from 'payload';
2
+ import type { AiTool, AiToolContext } from '../ai/types.js';
3
+ export type { AiTool, AiToolContext };
4
+ /**
5
+ * Options for the AI endpoint handler
6
+ */
7
+ export interface AiEndpointOptions {
8
+ /**
9
+ * Business context for AI generation
10
+ * Helps the AI understand your brand, tone, and requirements
11
+ */
12
+ context?: string;
13
+ /**
14
+ * Custom tools for AI to use during generation
15
+ * These allow AI to perform actions like database lookups, API calls, etc.
16
+ */
17
+ tools?: Record<string, AiTool>;
18
+ }
19
+ /**
20
+ * Creates a Payload endpoint handler for Puck AI
21
+ *
22
+ * This handler wraps @puckeditor/cloud-client's puckHandler with
23
+ * Payload authentication. It's auto-registered by createPuckPlugin
24
+ * when `ai.enabled: true`.
25
+ *
26
+ * @example
27
+ * // Automatically registered at /api/puck/ai when:
28
+ * createPuckPlugin({
29
+ * ai: {
30
+ * enabled: true,
31
+ * context: 'You build pages for Acme Corp...',
32
+ * },
33
+ * })
34
+ */
35
+ export declare function createAiEndpointHandler(options?: AiEndpointOptions): PayloadHandler;
36
+ //# sourceMappingURL=ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/endpoints/ai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAA;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAa,MAAM,gBAAgB,CAAA;AAItE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;AAiDrC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,iBAAsB,GAAG,cAAc,CAgSvF"}
@@ -0,0 +1,315 @@
1
+ import { pagePatternSystemContext } from '../ai/presets/index.js';
2
+ /**
3
+ * Collection slug for AI context
4
+ * Matches the auto-generated collection from createPuckPlugin
5
+ */
6
+ const AI_CONTEXT_COLLECTION = 'puck-ai-context';
7
+ /**
8
+ * Fetches dynamic context entries from the database
9
+ * @param req - The Payload request object
10
+ * @returns Concatenated context string or undefined if no entries
11
+ */
12
+ async function fetchDynamicContext(req) {
13
+ try {
14
+ // Check if the context collection exists (it's optional)
15
+ const collections = req.payload.config.collections;
16
+ const hasContextCollection = collections?.some((c) => c.slug === AI_CONTEXT_COLLECTION);
17
+ if (!hasContextCollection) {
18
+ return undefined;
19
+ }
20
+ // Fetch enabled context entries, sorted by order
21
+ const result = await req.payload.find({
22
+ collection: AI_CONTEXT_COLLECTION,
23
+ where: { enabled: { equals: true } },
24
+ sort: 'order',
25
+ limit: 100, // Reasonable limit for context entries
26
+ });
27
+ if (!result.docs || result.docs.length === 0) {
28
+ return undefined;
29
+ }
30
+ // Format each context entry with its name as a header
31
+ const contextBlocks = result.docs.map((doc) => {
32
+ const header = doc.category ? `## ${doc.name} (${doc.category})` : `## ${doc.name}`;
33
+ return `${header}\n\n${doc.content}`;
34
+ });
35
+ return contextBlocks.join('\n\n---\n\n');
36
+ }
37
+ catch (e) {
38
+ // Log but don't fail - context is optional
39
+ console.warn('[payload-puck] Failed to fetch dynamic AI context:', e);
40
+ return undefined;
41
+ }
42
+ }
43
+ /**
44
+ * Creates a Payload endpoint handler for Puck AI
45
+ *
46
+ * This handler wraps @puckeditor/cloud-client's puckHandler with
47
+ * Payload authentication. It's auto-registered by createPuckPlugin
48
+ * when `ai.enabled: true`.
49
+ *
50
+ * @example
51
+ * // Automatically registered at /api/puck/ai when:
52
+ * createPuckPlugin({
53
+ * ai: {
54
+ * enabled: true,
55
+ * context: 'You build pages for Acme Corp...',
56
+ * },
57
+ * })
58
+ */
59
+ export function createAiEndpointHandler(options = {}) {
60
+ return async (req) => {
61
+ // 1. Require authentication - AI features are admin-only
62
+ if (!req.user) {
63
+ return Response.json({ error: 'Unauthorized' }, { status: 401 });
64
+ }
65
+ // 2. Lazy import to avoid bundle bloat (like PostCSS pattern in styles.ts)
66
+ let puckHandler;
67
+ try {
68
+ const cloudClient = await import('@puckeditor/cloud-client');
69
+ puckHandler = cloudClient.puckHandler;
70
+ }
71
+ catch (e) {
72
+ console.error('[payload-puck] Failed to load @puckeditor/cloud-client:', e);
73
+ return Response.json({ error: 'AI requires @puckeditor/cloud-client. This should be bundled with the plugin.' }, { status: 500 });
74
+ }
75
+ // 3. Check for API key
76
+ const apiKey = process.env.PUCK_API_KEY;
77
+ if (!apiKey) {
78
+ return Response.json({ error: 'PUCK_API_KEY environment variable is not set' }, { status: 500 });
79
+ }
80
+ // 4. Forward to Puck Cloud handler
81
+ // puckHandler expects a standard Web Request object with specific pathname
82
+ // The handler internally routes based on pathname - it expects /api/puck/chat
83
+ // See: @puckeditor/cloud-client/src/routes.ts - routeRegistry['/api/puck/chat']
84
+ try {
85
+ // Get the request body
86
+ const body = await req.json?.();
87
+ // Debug logging
88
+ console.log('[payload-puck] AI request body keys:', body ? Object.keys(body) : 'null');
89
+ console.log('[payload-puck] AI request has config:', !!body?.config);
90
+ console.log('[payload-puck] AI request has pageData:', !!body?.pageData);
91
+ console.log('[payload-puck] AI request has messages:', !!body?.messages, 'count:', body?.messages?.length);
92
+ if (body?.config) {
93
+ console.log('[payload-puck] Config keys:', Object.keys(body.config));
94
+ console.log('[payload-puck] Config.components:', body.config.components ? Object.keys(body.config.components).length + ' components' : 'missing');
95
+ // Log each component to find null/undefined values
96
+ if (body.config.components) {
97
+ for (const [name, comp] of Object.entries(body.config.components)) {
98
+ const c = comp;
99
+ if (!c) {
100
+ console.log(`[payload-puck] Component ${name} is NULL/UNDEFINED`);
101
+ }
102
+ else if (!c.fields) {
103
+ console.log(`[payload-puck] Component ${name} has no fields`);
104
+ }
105
+ else {
106
+ // Check for null fields
107
+ for (const [fieldName, field] of Object.entries(c.fields)) {
108
+ if (!field) {
109
+ console.log(`[payload-puck] Component ${name}.${fieldName} is NULL/UNDEFINED`);
110
+ }
111
+ }
112
+ }
113
+ }
114
+ // Log first component structure for debugging
115
+ const firstComp = Object.entries(body.config.components)[0];
116
+ if (firstComp) {
117
+ const comp = firstComp[1];
118
+ console.log(`[payload-puck] Sample component "${firstComp[0]}":`);
119
+ console.log(` - has fields: ${!!comp.fields}`);
120
+ console.log(` - has defaultProps: ${!!comp.defaultProps}`);
121
+ console.log(` - has ai: ${!!comp.ai}`);
122
+ console.log(` - has render: ${!!comp.render}`);
123
+ console.log(` - defaultProps value:`, comp.defaultProps);
124
+ }
125
+ // Check all components for missing defaultProps
126
+ for (const [name, comp] of Object.entries(body.config.components)) {
127
+ const c = comp;
128
+ if (!c.defaultProps) {
129
+ console.log(`[payload-puck] Component "${name}" is MISSING defaultProps`);
130
+ }
131
+ }
132
+ }
133
+ // Check root
134
+ console.log('[payload-puck] Config.root:', body.config.root ? 'present' : 'MISSING');
135
+ if (body.config.root?.fields) {
136
+ for (const [fieldName, field] of Object.entries(body.config.root.fields)) {
137
+ if (!field) {
138
+ console.log(`[payload-puck] Root.${fieldName} is NULL/UNDEFINED`);
139
+ }
140
+ }
141
+ }
142
+ }
143
+ // Check pageData structure
144
+ if (body?.pageData) {
145
+ console.log('[payload-puck] pageData.content:', body.pageData.content?.length ?? 0, 'items');
146
+ console.log('[payload-puck] pageData.root:', body.pageData.root ? 'present' : 'MISSING');
147
+ }
148
+ // NOTE: We previously removed null values from defaultProps here, but this
149
+ // was preventing the AI from knowing about optional styling fields.
150
+ // Per Puck docs: "All fields in defaultProps are considered required by the agent"
151
+ // Fields with null values still need to be present so the AI knows they exist.
152
+ // Auto-exclude custom fields in root that don't have ai.exclude set
153
+ // BUT: if field has AI instructions, don't exclude it (we want AI to use it)
154
+ // This handles fields added by page-tree or user customization
155
+ if (body?.config?.root?.fields) {
156
+ for (const [fieldName, field] of Object.entries(body.config.root.fields)) {
157
+ const f = field;
158
+ // Only exclude if: is custom, doesn't have exclude set, AND doesn't have instructions
159
+ if (f.type === 'custom' && !f.ai?.exclude && !f.ai?.instructions) {
160
+ console.log(`[payload-puck] Auto-excluding root custom field: ${fieldName}`);
161
+ f.ai = { ...f.ai, exclude: true };
162
+ }
163
+ }
164
+ }
165
+ // Auto-exclude custom fields in components that don't have ai.exclude set
166
+ // BUT: if field has AI instructions, don't exclude it (we want AI to use it)
167
+ if (body?.config?.components) {
168
+ // Debug: Check Section fields specifically
169
+ const sectionComp = body.config.components['Section'];
170
+ if (sectionComp?.fields?.sectionBackground) {
171
+ console.log(`[payload-puck] Section.sectionBackground.ai:`, JSON.stringify(sectionComp.fields.sectionBackground.ai || 'NO AI CONFIG'));
172
+ }
173
+ for (const [compName, comp] of Object.entries(body.config.components)) {
174
+ const c = comp;
175
+ if (c.fields) {
176
+ for (const [fieldName, field] of Object.entries(c.fields)) {
177
+ const f = field;
178
+ // Only exclude if: is custom, doesn't have exclude set, AND doesn't have instructions
179
+ if (f.type === 'custom' && !f.ai?.exclude && !f.ai?.instructions) {
180
+ console.log(`[payload-puck] Auto-excluding ${compName}.${fieldName} custom field`);
181
+ f.ai = { ...f.ai, exclude: true };
182
+ }
183
+ }
184
+ }
185
+ }
186
+ }
187
+ // Validate required fields - puckHandler expects config and pageData
188
+ if (!body) {
189
+ return Response.json({ error: 'Request body is required' }, { status: 400 });
190
+ }
191
+ // Ensure config exists (puckHandler needs this)
192
+ if (!body.config) {
193
+ console.warn('[payload-puck] AI request missing config, this may cause issues');
194
+ }
195
+ // Construct URL with the pathname puckHandler expects
196
+ // Our Payload endpoint is /api/puck/ai but puckHandler routes to /api/puck/chat
197
+ const protocol = req.headers.get('x-forwarded-proto') || 'http';
198
+ const host = req.headers.get('host') || 'localhost';
199
+ const url = `${protocol}://${host}/api/puck/chat`;
200
+ // Create new headers without content-length (will be recalculated)
201
+ const headers = new Headers();
202
+ headers.set('content-type', 'application/json');
203
+ // Copy auth headers
204
+ const authHeader = req.headers.get('authorization');
205
+ if (authHeader) {
206
+ headers.set('authorization', authHeader);
207
+ }
208
+ const webRequest = new Request(url, {
209
+ method: 'POST',
210
+ headers,
211
+ body: JSON.stringify(body),
212
+ });
213
+ // Build AI options, only including properties that have values
214
+ // (passing `tools: undefined` explicitly prevents the default from applying)
215
+ const aiOptions = {};
216
+ // Build context from multiple sources:
217
+ // 1. Static context from plugin config
218
+ // 2. Dynamic context from database (puck-ai-context collection)
219
+ // 3. Page pattern system context (composition guidance)
220
+ const contextParts = [];
221
+ // Add static context from plugin config
222
+ if (options.context) {
223
+ contextParts.push(options.context);
224
+ }
225
+ // Fetch and add dynamic context from database
226
+ const dynamicContext = await fetchDynamicContext(req);
227
+ if (dynamicContext) {
228
+ contextParts.push('# Business Context\n\n' + dynamicContext);
229
+ }
230
+ // Always add page pattern system context for better composition
231
+ if (pagePatternSystemContext) {
232
+ contextParts.push(pagePatternSystemContext);
233
+ }
234
+ // Combine all context parts
235
+ if (contextParts.length > 0) {
236
+ aiOptions.context = contextParts.join('\n\n---\n\n');
237
+ }
238
+ // Wrap tools to inject Payload context into execute functions
239
+ if (options.tools && Object.keys(options.tools).length > 0) {
240
+ const toolContext = {
241
+ payload: req.payload,
242
+ user: req.user,
243
+ };
244
+ // Create wrapped tools that inject the context
245
+ const wrappedTools = {};
246
+ for (const [name, tool] of Object.entries(options.tools)) {
247
+ wrappedTools[name] = {
248
+ name: tool.name,
249
+ description: tool.description,
250
+ inputSchema: tool.inputSchema,
251
+ // Wrap execute to inject Payload context
252
+ execute: (input) => tool.execute(input, toolContext),
253
+ };
254
+ }
255
+ aiOptions.tools = wrappedTools;
256
+ }
257
+ console.log('[payload-puck] AI options:', {
258
+ hasContext: !!aiOptions.context,
259
+ contextLength: aiOptions.context?.length,
260
+ hasTools: !!aiOptions.tools,
261
+ toolNames: aiOptions.tools ? Object.keys(aiOptions.tools) : [],
262
+ });
263
+ const response = await puckHandler(webRequest, {
264
+ ai: aiOptions,
265
+ apiKey,
266
+ });
267
+ // Log response status for debugging
268
+ console.log('[payload-puck] Puck Cloud response status:', response.status);
269
+ console.log('[payload-puck] Response content-type:', response.headers.get('content-type'));
270
+ // For SSE responses, we can't easily read the body without consuming it
271
+ // But we can check if it's a streaming response
272
+ if (response.body) {
273
+ // Create a transform stream to log chunks while passing them through
274
+ const originalBody = response.body;
275
+ const { readable, writable } = new TransformStream({
276
+ transform(chunk, controller) {
277
+ // Log chunks that contain actual error indicators
278
+ const text = new TextDecoder().decode(chunk);
279
+ // Only log if it looks like an actual error response (not just a word containing "error")
280
+ if (text.includes('"type":"error"') || text.includes('"error":') || text.includes('status":4') || text.includes('status":5')) {
281
+ console.log('[payload-puck] SSE chunk with error:', text.slice(0, 500));
282
+ }
283
+ controller.enqueue(chunk);
284
+ }
285
+ });
286
+ originalBody.pipeTo(writable).catch(err => {
287
+ console.error('[payload-puck] Stream pipe error:', err);
288
+ });
289
+ return new Response(readable, {
290
+ status: response.status,
291
+ statusText: response.statusText,
292
+ headers: response.headers,
293
+ });
294
+ }
295
+ if (!response.ok) {
296
+ // Try to get more info from error response
297
+ const clonedResponse = response.clone();
298
+ try {
299
+ const errorBody = await clonedResponse.json();
300
+ console.error('[payload-puck] Puck Cloud error body:', errorBody);
301
+ }
302
+ catch {
303
+ const errorText = await clonedResponse.text();
304
+ console.error('[payload-puck] Puck Cloud error text:', errorText);
305
+ }
306
+ }
307
+ return response;
308
+ }
309
+ catch (e) {
310
+ console.error('[payload-puck] AI handler error:', e);
311
+ return Response.json({ error: e instanceof Error ? e.message : 'AI request failed' }, { status: 500 });
312
+ }
313
+ };
314
+ }
315
+ //# sourceMappingURL=ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/endpoints/ai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { PayloadHandler } from 'payload';
2
+ /**
3
+ * List all AI context entries, sorted by order
4
+ * Only returns enabled entries by default
5
+ *
6
+ * GET /api/puck/ai-context
7
+ * Query: ?all=true to include disabled entries
8
+ */
9
+ export declare function createContextListHandler(): PayloadHandler;
10
+ /**
11
+ * Create a new AI context entry
12
+ *
13
+ * POST /api/puck/ai-context
14
+ * Body: { name: string, content: string, category?: string, enabled?: boolean, order?: number }
15
+ */
16
+ export declare function createContextCreateHandler(): PayloadHandler;
17
+ /**
18
+ * Update an existing AI context entry
19
+ *
20
+ * PATCH /api/puck/ai-context/:id
21
+ * Body: { name?: string, content?: string, category?: string, enabled?: boolean, order?: number }
22
+ */
23
+ export declare function createContextUpdateHandler(): PayloadHandler;
24
+ /**
25
+ * Delete an AI context entry
26
+ *
27
+ * DELETE /api/puck/ai-context/:id
28
+ */
29
+ export declare function createContextDeleteHandler(): PayloadHandler;
30
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/endpoints/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAQ7C;;;;;;GAMG;AACH,wBAAgB,wBAAwB,IAAI,cAAc,CAyBzD;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,IAAI,cAAc,CAyB3D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,IAAI,cAAc,CA+B3D;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,cAAc,CAyB3D"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Collection slug for AI context
3
+ * Matches the auto-generated collection from createPuckPlugin
4
+ */
5
+ const COLLECTION = 'puck-ai-context';
6
+ /**
7
+ * List all AI context entries, sorted by order
8
+ * Only returns enabled entries by default
9
+ *
10
+ * GET /api/puck/ai-context
11
+ * Query: ?all=true to include disabled entries
12
+ */
13
+ export function createContextListHandler() {
14
+ return async (req) => {
15
+ if (!req.user) {
16
+ return Response.json({ error: 'Unauthorized' }, { status: 401 });
17
+ }
18
+ try {
19
+ // Check if we should include all entries (including disabled)
20
+ const includeAll = req.query?.all === 'true';
21
+ const result = await req.payload.find({
22
+ collection: COLLECTION,
23
+ sort: 'order',
24
+ limit: 100, // Reasonable limit for context entries
25
+ where: includeAll ? {} : { enabled: { equals: true } },
26
+ });
27
+ return Response.json(result);
28
+ }
29
+ catch (e) {
30
+ console.error('[payload-puck] Error listing context:', e);
31
+ return Response.json({ error: e instanceof Error ? e.message : 'Failed to list context' }, { status: 500 });
32
+ }
33
+ };
34
+ }
35
+ /**
36
+ * Create a new AI context entry
37
+ *
38
+ * POST /api/puck/ai-context
39
+ * Body: { name: string, content: string, category?: string, enabled?: boolean, order?: number }
40
+ */
41
+ export function createContextCreateHandler() {
42
+ return async (req) => {
43
+ if (!req.user) {
44
+ return Response.json({ error: 'Unauthorized' }, { status: 401 });
45
+ }
46
+ try {
47
+ const data = await req.json?.();
48
+ if (!data) {
49
+ return Response.json({ error: 'Request body is required' }, { status: 400 });
50
+ }
51
+ const doc = await req.payload.create({
52
+ collection: COLLECTION,
53
+ data,
54
+ });
55
+ return Response.json(doc);
56
+ }
57
+ catch (e) {
58
+ console.error('[payload-puck] Error creating context:', e);
59
+ return Response.json({ error: e instanceof Error ? e.message : 'Failed to create context' }, { status: 500 });
60
+ }
61
+ };
62
+ }
63
+ /**
64
+ * Update an existing AI context entry
65
+ *
66
+ * PATCH /api/puck/ai-context/:id
67
+ * Body: { name?: string, content?: string, category?: string, enabled?: boolean, order?: number }
68
+ */
69
+ export function createContextUpdateHandler() {
70
+ return async (req) => {
71
+ if (!req.user) {
72
+ return Response.json({ error: 'Unauthorized' }, { status: 401 });
73
+ }
74
+ const id = req.routeParams?.id;
75
+ if (!id) {
76
+ return Response.json({ error: 'Context ID is required' }, { status: 400 });
77
+ }
78
+ try {
79
+ const data = await req.json?.();
80
+ if (!data) {
81
+ return Response.json({ error: 'Request body is required' }, { status: 400 });
82
+ }
83
+ const doc = await req.payload.update({
84
+ collection: COLLECTION,
85
+ id,
86
+ data,
87
+ });
88
+ return Response.json(doc);
89
+ }
90
+ catch (e) {
91
+ console.error('[payload-puck] Error updating context:', e);
92
+ return Response.json({ error: e instanceof Error ? e.message : 'Failed to update context' }, { status: 500 });
93
+ }
94
+ };
95
+ }
96
+ /**
97
+ * Delete an AI context entry
98
+ *
99
+ * DELETE /api/puck/ai-context/:id
100
+ */
101
+ export function createContextDeleteHandler() {
102
+ return async (req) => {
103
+ if (!req.user) {
104
+ return Response.json({ error: 'Unauthorized' }, { status: 401 });
105
+ }
106
+ const id = req.routeParams?.id;
107
+ if (!id) {
108
+ return Response.json({ error: 'Context ID is required' }, { status: 400 });
109
+ }
110
+ try {
111
+ await req.payload.delete({
112
+ collection: COLLECTION,
113
+ id,
114
+ });
115
+ return Response.json({ success: true });
116
+ }
117
+ catch (e) {
118
+ console.error('[payload-puck] Error deleting context:', e);
119
+ return Response.json({ error: e instanceof Error ? e.message : 'Failed to delete context' }, { status: 500 });
120
+ }
121
+ };
122
+ }
123
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/endpoints/context.ts"],"names":[],"mappings":"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"}