@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.
- package/README.md +331 -16
- package/dist/admin/PuckEditorView.d.ts +1 -1
- package/dist/admin/PuckEditorView.d.ts.map +1 -1
- package/dist/ai/collections/AiContext.d.ts +16 -0
- package/dist/ai/collections/AiContext.d.ts.map +1 -0
- package/dist/ai/collections/AiContext.js +87 -0
- package/dist/ai/collections/AiContext.js.map +1 -0
- package/dist/ai/collections/AiPrompts.d.ts +10 -0
- package/dist/ai/collections/AiPrompts.d.ts.map +1 -0
- package/dist/ai/collections/AiPrompts.js +63 -0
- package/dist/ai/collections/AiPrompts.js.map +1 -0
- package/dist/ai/createAiApiRoutes.d.ts +40 -0
- package/dist/ai/createAiApiRoutes.d.ts.map +1 -0
- package/dist/ai/createAiApiRoutes.js +106 -0
- package/dist/ai/createAiApiRoutes.js.map +1 -0
- package/dist/ai/createAiGenerate.d.ts +65 -0
- package/dist/ai/createAiGenerate.d.ts.map +1 -0
- package/dist/ai/createAiGenerate.js +106 -0
- package/dist/ai/createAiGenerate.js.map +1 -0
- package/dist/ai/createAiPlugin.d.ts +39 -0
- package/dist/ai/createAiPlugin.d.ts.map +1 -0
- package/dist/ai/createAiPlugin.js +61 -0
- package/dist/ai/createAiPlugin.js.map +1 -0
- package/dist/ai/hooks/useAiContext.d.ts +63 -0
- package/dist/ai/hooks/useAiContext.d.ts.map +1 -0
- package/dist/ai/hooks/useAiContext.js +146 -0
- package/dist/ai/hooks/useAiContext.js.map +1 -0
- package/dist/ai/hooks/useAiPrompts.d.ts +25 -0
- package/dist/ai/hooks/useAiPrompts.d.ts.map +1 -0
- package/dist/ai/hooks/useAiPrompts.js +74 -0
- package/dist/ai/hooks/useAiPrompts.js.map +1 -0
- package/dist/ai/index.d.ts +51 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +69 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/plugins/ContextEditorPanel.d.ts +9 -0
- package/dist/ai/plugins/ContextEditorPanel.d.ts.map +1 -0
- package/dist/ai/plugins/ContextEditorPanel.js +399 -0
- package/dist/ai/plugins/ContextEditorPanel.js.map +1 -0
- package/dist/ai/plugins/PromptEditorPanel.d.ts +9 -0
- package/dist/ai/plugins/PromptEditorPanel.d.ts.map +1 -0
- package/dist/ai/plugins/PromptEditorPanel.js +270 -0
- package/dist/ai/plugins/PromptEditorPanel.js.map +1 -0
- package/dist/ai/plugins/contextEditorPlugin.d.ts +30 -0
- package/dist/ai/plugins/contextEditorPlugin.d.ts.map +1 -0
- package/dist/ai/plugins/contextEditorPlugin.js +40 -0
- package/dist/ai/plugins/contextEditorPlugin.js.map +1 -0
- package/dist/ai/plugins/promptApiRoutes.d.ts +68 -0
- package/dist/ai/plugins/promptApiRoutes.d.ts.map +1 -0
- package/dist/ai/plugins/promptApiRoutes.js +181 -0
- package/dist/ai/plugins/promptApiRoutes.js.map +1 -0
- package/dist/ai/plugins/promptEditorPlugin.d.ts +29 -0
- package/dist/ai/plugins/promptEditorPlugin.d.ts.map +1 -0
- package/dist/ai/plugins/promptEditorPlugin.js +39 -0
- package/dist/ai/plugins/promptEditorPlugin.js.map +1 -0
- package/dist/ai/presets/componentAiDefaults.d.ts +40 -0
- package/dist/ai/presets/componentAiDefaults.d.ts.map +1 -0
- package/dist/ai/presets/componentAiDefaults.js +239 -0
- package/dist/ai/presets/componentAiDefaults.js.map +1 -0
- package/dist/ai/presets/index.d.ts +94 -0
- package/dist/ai/presets/index.d.ts.map +1 -0
- package/dist/ai/presets/index.js +110 -0
- package/dist/ai/presets/index.js.map +1 -0
- package/dist/ai/presets/instructions/interactive.d.ts +15 -0
- package/dist/ai/presets/instructions/interactive.d.ts.map +1 -0
- package/dist/ai/presets/instructions/interactive.js +334 -0
- package/dist/ai/presets/instructions/interactive.js.map +1 -0
- package/dist/ai/presets/instructions/layout.d.ts +16 -0
- package/dist/ai/presets/instructions/layout.d.ts.map +1 -0
- package/dist/ai/presets/instructions/layout.js +486 -0
- package/dist/ai/presets/instructions/layout.js.map +1 -0
- package/dist/ai/presets/instructions/media.d.ts +15 -0
- package/dist/ai/presets/instructions/media.d.ts.map +1 -0
- package/dist/ai/presets/instructions/media.js +136 -0
- package/dist/ai/presets/instructions/media.js.map +1 -0
- package/dist/ai/presets/instructions/pagePatterns.d.ts +20 -0
- package/dist/ai/presets/instructions/pagePatterns.d.ts.map +1 -0
- package/dist/ai/presets/instructions/pagePatterns.js +290 -0
- package/dist/ai/presets/instructions/pagePatterns.js.map +1 -0
- package/dist/ai/presets/instructions/schemas.d.ts +1247 -0
- package/dist/ai/presets/instructions/schemas.d.ts.map +1 -0
- package/dist/ai/presets/instructions/schemas.js +240 -0
- package/dist/ai/presets/instructions/schemas.js.map +1 -0
- package/dist/ai/presets/instructions/typography.d.ts +16 -0
- package/dist/ai/presets/instructions/typography.d.ts.map +1 -0
- package/dist/ai/presets/instructions/typography.js +192 -0
- package/dist/ai/presets/instructions/typography.js.map +1 -0
- package/dist/ai/tools/index.d.ts +116 -0
- package/dist/ai/tools/index.d.ts.map +1 -0
- package/dist/ai/tools/index.js +214 -0
- package/dist/ai/tools/index.js.map +1 -0
- package/dist/ai/types.d.ts +507 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +2 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/ai/utils/injectAiConfig.d.ts +67 -0
- package/dist/ai/utils/injectAiConfig.d.ts.map +1 -0
- package/dist/ai/utils/injectAiConfig.js +216 -0
- package/dist/ai/utils/injectAiConfig.js.map +1 -0
- package/dist/api/createPuckApiRoutesWithId.d.ts.map +1 -1
- package/dist/api/createPuckApiRoutesWithId.js +12 -5
- package/dist/api/createPuckApiRoutesWithId.js.map +1 -1
- package/dist/api/types.d.ts +1 -1
- package/dist/api/types.d.ts.map +1 -1
- package/dist/components/exports.d.ts +1 -1
- package/dist/components/exports.d.ts.map +1 -1
- package/dist/components/exports.js +1 -1
- package/dist/components/exports.js.map +1 -1
- package/dist/components/interactive/Accordion.d.ts +1 -1
- package/dist/components/interactive/Accordion.d.ts.map +1 -1
- package/dist/components/interactive/Accordion.js +4 -4
- package/dist/components/interactive/Accordion.js.map +1 -1
- package/dist/components/interactive/Accordion.server.d.ts +1 -1
- package/dist/components/interactive/Accordion.server.d.ts.map +1 -1
- package/dist/components/interactive/Button.d.ts +1 -1
- package/dist/components/interactive/Button.d.ts.map +1 -1
- package/dist/components/interactive/Button.server.d.ts +2 -3
- package/dist/components/interactive/Button.server.d.ts.map +1 -1
- package/dist/components/interactive/Button.server.js +1 -2
- package/dist/components/interactive/Button.server.js.map +1 -1
- package/dist/components/interactive/Card.d.ts +1 -1
- package/dist/components/interactive/Card.d.ts.map +1 -1
- package/dist/components/interactive/Card.server.d.ts +1 -1
- package/dist/components/interactive/Card.server.d.ts.map +1 -1
- package/dist/components/interactive/Divider.d.ts +1 -1
- package/dist/components/interactive/Divider.d.ts.map +1 -1
- package/dist/components/interactive/Divider.server.d.ts +1 -1
- package/dist/components/interactive/Divider.server.d.ts.map +1 -1
- package/dist/components/layout/Container.d.ts +3 -1
- package/dist/components/layout/Container.d.ts.map +1 -1
- package/dist/components/layout/Container.js +16 -2
- package/dist/components/layout/Container.js.map +1 -1
- package/dist/components/layout/Container.server.d.ts +3 -1
- package/dist/components/layout/Container.server.d.ts.map +1 -1
- package/dist/components/layout/Container.server.js +5 -2
- package/dist/components/layout/Container.server.js.map +1 -1
- package/dist/components/layout/Flex.d.ts +3 -1
- package/dist/components/layout/Flex.d.ts.map +1 -1
- package/dist/components/layout/Flex.js +18 -2
- package/dist/components/layout/Flex.js.map +1 -1
- package/dist/components/layout/Flex.server.d.ts +3 -1
- package/dist/components/layout/Flex.server.d.ts.map +1 -1
- package/dist/components/layout/Flex.server.js +5 -2
- package/dist/components/layout/Flex.server.js.map +1 -1
- package/dist/components/layout/Grid.d.ts +3 -1
- package/dist/components/layout/Grid.d.ts.map +1 -1
- package/dist/components/layout/Grid.js +15 -2
- package/dist/components/layout/Grid.js.map +1 -1
- package/dist/components/layout/Grid.server.d.ts +3 -1
- package/dist/components/layout/Grid.server.d.ts.map +1 -1
- package/dist/components/layout/Grid.server.js +5 -2
- package/dist/components/layout/Grid.server.js.map +1 -1
- package/dist/components/layout/Section.d.ts +3 -1
- package/dist/components/layout/Section.d.ts.map +1 -1
- package/dist/components/layout/Section.js +32 -5
- package/dist/components/layout/Section.js.map +1 -1
- package/dist/components/layout/Section.server.d.ts +3 -1
- package/dist/components/layout/Section.server.d.ts.map +1 -1
- package/dist/components/layout/Section.server.js +16 -4
- package/dist/components/layout/Section.server.js.map +1 -1
- package/dist/components/layout/Spacer.d.ts +1 -1
- package/dist/components/layout/Spacer.d.ts.map +1 -1
- package/dist/components/layout/Spacer.server.d.ts +1 -1
- package/dist/components/layout/Spacer.server.d.ts.map +1 -1
- package/dist/components/layout/Template.d.ts +1 -1
- package/dist/components/layout/Template.d.ts.map +1 -1
- package/dist/components/layout/Template.server.d.ts +1 -1
- package/dist/components/layout/Template.server.d.ts.map +1 -1
- package/dist/components/media/Image.d.ts +1 -1
- package/dist/components/media/Image.d.ts.map +1 -1
- package/dist/components/media/Image.server.d.ts +1 -1
- package/dist/components/media/Image.server.d.ts.map +1 -1
- package/dist/components/typography/Heading.d.ts +1 -1
- package/dist/components/typography/Heading.d.ts.map +1 -1
- package/dist/components/typography/Heading.server.d.ts +1 -1
- package/dist/components/typography/Heading.server.d.ts.map +1 -1
- package/dist/components/typography/RichText.editor.d.ts +15 -2
- package/dist/components/typography/RichText.editor.d.ts.map +1 -1
- package/dist/components/typography/RichText.editor.js +18 -11
- package/dist/components/typography/RichText.editor.js.map +1 -1
- package/dist/components/typography/RichText.server.d.ts +3 -2
- package/dist/components/typography/RichText.server.d.ts.map +1 -1
- package/dist/components/typography/RichText.server.js +10 -5
- package/dist/components/typography/RichText.server.js.map +1 -1
- package/dist/components/typography/Text.d.ts +1 -1
- package/dist/components/typography/Text.d.ts.map +1 -1
- package/dist/components/typography/Text.server.d.ts +1 -1
- package/dist/components/typography/Text.server.d.ts.map +1 -1
- package/dist/components/typography/index.d.ts +1 -1
- package/dist/components/typography/index.d.ts.map +1 -1
- package/dist/components/typography/index.js +1 -1
- package/dist/components/typography/index.js.map +1 -1
- package/dist/config/config.editor.d.ts +4 -4
- package/dist/config/config.editor.d.ts.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/merge.d.ts +1 -1
- package/dist/config/merge.d.ts.map +1 -1
- package/dist/config/presets.d.ts +15 -15
- package/dist/config/presets.d.ts.map +1 -1
- package/dist/editor/PuckEditor.d.ts +88 -2
- package/dist/editor/PuckEditor.d.ts.map +1 -1
- package/dist/editor/PuckEditor.js +41 -13
- package/dist/editor/PuckEditor.js.map +1 -1
- package/dist/editor/PuckEditorImpl.client.d.ts +49 -4
- package/dist/editor/PuckEditorImpl.client.d.ts.map +1 -1
- package/dist/editor/PuckEditorImpl.client.js +191 -14
- package/dist/editor/PuckEditorImpl.client.js.map +1 -1
- package/dist/editor/ai-plugin-overrides.css +20 -0
- package/dist/editor/components/HeaderActions.d.ts +7 -2
- package/dist/editor/components/HeaderActions.d.ts.map +1 -1
- package/dist/editor/components/HeaderActions.js +16 -3
- package/dist/editor/components/HeaderActions.js.map +1 -1
- package/dist/editor/components/IframeWrapper.d.ts +13 -0
- package/dist/editor/components/IframeWrapper.d.ts.map +1 -1
- package/dist/editor/components/IframeWrapper.js +60 -4
- package/dist/editor/components/IframeWrapper.js.map +1 -1
- package/dist/editor/components/PreviewModal.d.ts +9 -1
- package/dist/editor/components/PreviewModal.d.ts.map +1 -1
- package/dist/editor/components/PreviewModal.js +36 -1
- package/dist/editor/components/PreviewModal.js.map +1 -1
- package/dist/editor/index.d.ts +4 -0
- package/dist/editor/index.d.ts.map +1 -1
- package/dist/editor/index.js +4 -0
- package/dist/editor/index.js.map +1 -1
- package/dist/editor/plugins/VersionHistoryPanel.d.ts +43 -0
- package/dist/editor/plugins/VersionHistoryPanel.d.ts.map +1 -0
- package/dist/editor/plugins/VersionHistoryPanel.js +303 -0
- package/dist/editor/plugins/VersionHistoryPanel.js.map +1 -0
- package/dist/editor/plugins/index.d.ts +6 -3
- package/dist/editor/plugins/index.d.ts.map +1 -1
- package/dist/editor/plugins/index.js +7 -3
- package/dist/editor/plugins/index.js.map +1 -1
- package/dist/editor/plugins/versionHistoryPlugin.d.ts +37 -0
- package/dist/editor/plugins/versionHistoryPlugin.d.ts.map +1 -0
- package/dist/editor/plugins/versionHistoryPlugin.js +36 -0
- package/dist/editor/plugins/versionHistoryPlugin.js.map +1 -0
- package/dist/editor/utils/detectPageTree.d.ts +1 -1
- package/dist/editor/utils/detectPageTree.d.ts.map +1 -1
- package/dist/editor/utils/injectPageTreeFields.d.ts +1 -1
- package/dist/editor/utils/injectPageTreeFields.d.ts.map +1 -1
- package/dist/endpoints/ai.d.ts +36 -0
- package/dist/endpoints/ai.d.ts.map +1 -0
- package/dist/endpoints/ai.js +315 -0
- package/dist/endpoints/ai.js.map +1 -0
- package/dist/endpoints/context.d.ts +30 -0
- package/dist/endpoints/context.d.ts.map +1 -0
- package/dist/endpoints/context.js +123 -0
- package/dist/endpoints/context.js.map +1 -0
- package/dist/endpoints/prompts.d.ts +28 -0
- package/dist/endpoints/prompts.d.ts.map +1 -0
- package/dist/endpoints/prompts.js +118 -0
- package/dist/endpoints/prompts.js.map +1 -0
- package/dist/endpoints/styles.d.ts +19 -0
- package/dist/endpoints/styles.d.ts.map +1 -0
- package/dist/endpoints/styles.js +116 -0
- package/dist/endpoints/styles.js.map +1 -0
- package/dist/fields/AlignmentField.d.ts +1 -1
- package/dist/fields/AlignmentField.d.ts.map +1 -1
- package/dist/fields/AlignmentField.js +1 -0
- package/dist/fields/AlignmentField.js.map +1 -1
- package/dist/fields/AnimationField.d.ts +1 -1
- package/dist/fields/AnimationField.d.ts.map +1 -1
- package/dist/fields/BackgroundField.d.ts +1 -1
- package/dist/fields/BackgroundField.d.ts.map +1 -1
- package/dist/fields/BackgroundField.js +9 -4
- package/dist/fields/BackgroundField.js.map +1 -1
- package/dist/fields/BorderField.d.ts +1 -1
- package/dist/fields/BorderField.d.ts.map +1 -1
- package/dist/fields/BorderField.js +1 -0
- package/dist/fields/BorderField.js.map +1 -1
- package/dist/fields/ColorPickerField.d.ts +1 -1
- package/dist/fields/ColorPickerField.d.ts.map +1 -1
- package/dist/fields/ColorPickerField.js +4 -2
- package/dist/fields/ColorPickerField.js.map +1 -1
- package/dist/fields/ContentAlignmentField.d.ts +66 -0
- package/dist/fields/ContentAlignmentField.d.ts.map +1 -0
- package/dist/fields/ContentAlignmentField.js +255 -0
- package/dist/fields/ContentAlignmentField.js.map +1 -0
- package/dist/fields/DimensionsField.d.ts +1 -1
- package/dist/fields/DimensionsField.d.ts.map +1 -1
- package/dist/fields/DimensionsField.js +8 -2
- package/dist/fields/DimensionsField.js.map +1 -1
- package/dist/fields/FlexAlignmentField.d.ts +1 -1
- package/dist/fields/FlexAlignmentField.d.ts.map +1 -1
- package/dist/fields/FolderPickerField.d.ts +1 -1
- package/dist/fields/FolderPickerField.d.ts.map +1 -1
- package/dist/fields/GradientEditor.d.ts.map +1 -1
- package/dist/fields/GradientEditor.js +3 -0
- package/dist/fields/GradientEditor.js.map +1 -1
- package/dist/fields/LockedField.d.ts +1 -1
- package/dist/fields/LockedField.d.ts.map +1 -1
- package/dist/fields/MarginField.d.ts +1 -1
- package/dist/fields/MarginField.d.ts.map +1 -1
- package/dist/fields/MediaField.d.ts +1 -1
- package/dist/fields/MediaField.d.ts.map +1 -1
- package/dist/fields/MediaField.js +3 -2
- package/dist/fields/MediaField.js.map +1 -1
- package/dist/fields/PaddingField.d.ts +1 -1
- package/dist/fields/PaddingField.d.ts.map +1 -1
- package/dist/fields/PageSegmentField.d.ts +1 -1
- package/dist/fields/PageSegmentField.d.ts.map +1 -1
- package/dist/fields/ResetField.d.ts +1 -1
- package/dist/fields/ResetField.d.ts.map +1 -1
- package/dist/fields/ResetField.js +1 -1
- package/dist/fields/ResetField.js.map +1 -1
- package/dist/fields/ResponsiveField.d.ts +1 -1
- package/dist/fields/ResponsiveField.d.ts.map +1 -1
- package/dist/fields/ResponsiveField.js +5 -2
- package/dist/fields/ResponsiveField.js.map +1 -1
- package/dist/fields/ResponsiveVisibilityField.d.ts +1 -1
- package/dist/fields/ResponsiveVisibilityField.d.ts.map +1 -1
- package/dist/fields/ResponsiveVisibilityField.js +4 -3
- package/dist/fields/ResponsiveVisibilityField.js.map +1 -1
- package/dist/fields/SizeField.d.ts +3 -25
- package/dist/fields/SizeField.d.ts.map +1 -1
- package/dist/fields/SizeField.js +8 -34
- package/dist/fields/SizeField.js.map +1 -1
- package/dist/fields/SlugPreviewField.d.ts +1 -1
- package/dist/fields/SlugPreviewField.d.ts.map +1 -1
- package/dist/fields/TemplateField.d.ts +1 -1
- package/dist/fields/TemplateField.d.ts.map +1 -1
- package/dist/fields/TemplateField.js +1 -1
- package/dist/fields/TemplateField.js.map +1 -1
- package/dist/fields/TransformField.d.ts +1 -1
- package/dist/fields/TransformField.d.ts.map +1 -1
- package/dist/fields/TransformField.js +2 -0
- package/dist/fields/TransformField.js.map +1 -1
- package/dist/fields/VerticalAlignmentField.d.ts +1 -1
- package/dist/fields/VerticalAlignmentField.d.ts.map +1 -1
- package/dist/fields/WidthField.d.ts +1 -1
- package/dist/fields/WidthField.d.ts.map +1 -1
- package/dist/fields/index.d.ts +8 -36
- package/dist/fields/index.d.ts.map +1 -1
- package/dist/fields/index.js +20 -78
- package/dist/fields/index.js.map +1 -1
- package/dist/fields/richtext/controls/ColorPickerControl.d.ts +16 -0
- package/dist/fields/richtext/controls/ColorPickerControl.d.ts.map +1 -0
- package/dist/fields/richtext/controls/ColorPickerControl.js +116 -0
- package/dist/fields/richtext/controls/ColorPickerControl.js.map +1 -0
- package/dist/fields/richtext/controls/DropdownPortal.d.ts +17 -0
- package/dist/fields/richtext/controls/DropdownPortal.d.ts.map +1 -0
- package/dist/fields/richtext/controls/DropdownPortal.js +90 -0
- package/dist/fields/richtext/controls/DropdownPortal.js.map +1 -0
- package/dist/fields/richtext/controls/FontSizeControl.d.ts +8 -0
- package/dist/fields/richtext/controls/FontSizeControl.d.ts.map +1 -0
- package/dist/fields/richtext/controls/FontSizeControl.js +62 -0
- package/dist/fields/richtext/controls/FontSizeControl.js.map +1 -0
- package/dist/fields/richtext/controls/HighlightControl.d.ts +9 -0
- package/dist/fields/richtext/controls/HighlightControl.d.ts.map +1 -0
- package/dist/fields/richtext/controls/HighlightControl.js +44 -0
- package/dist/fields/richtext/controls/HighlightControl.js.map +1 -0
- package/dist/fields/richtext/controls/index.d.ts +11 -0
- package/dist/fields/richtext/controls/index.d.ts.map +1 -0
- package/dist/fields/richtext/controls/index.js +16 -0
- package/dist/fields/richtext/controls/index.js.map +1 -0
- package/dist/fields/richtext/controls/shared.d.ts +97 -0
- package/dist/fields/richtext/controls/shared.d.ts.map +1 -0
- package/dist/fields/richtext/controls/shared.js +344 -0
- package/dist/fields/richtext/controls/shared.js.map +1 -0
- package/dist/fields/richtext/createRichTextField.d.ts +165 -0
- package/dist/fields/richtext/createRichTextField.d.ts.map +1 -0
- package/dist/fields/richtext/createRichTextField.js +139 -0
- package/dist/fields/richtext/createRichTextField.js.map +1 -0
- package/dist/fields/richtext/extensions/FontSize.d.ts +23 -0
- package/dist/fields/richtext/extensions/FontSize.d.ts.map +1 -0
- package/dist/fields/richtext/extensions/FontSize.js +47 -0
- package/dist/fields/richtext/extensions/FontSize.js.map +1 -0
- package/dist/fields/richtext/extensions/index.d.ts +5 -0
- package/dist/fields/richtext/extensions/index.d.ts.map +1 -0
- package/dist/fields/richtext/extensions/index.js +5 -0
- package/dist/fields/richtext/extensions/index.js.map +1 -0
- package/dist/fields/richtext/index.d.ts +14 -0
- package/dist/fields/richtext/index.d.ts.map +1 -0
- package/dist/fields/richtext/index.js +19 -0
- package/dist/fields/richtext/index.js.map +1 -0
- package/dist/fields/richtext/richtext-menu.css +50 -0
- package/dist/fields/shared.d.ts +27 -1
- package/dist/fields/shared.d.ts.map +1 -1
- package/dist/fields/shared.js +34 -0
- package/dist/fields/shared.js.map +1 -1
- package/dist/layouts/types.d.ts +30 -0
- package/dist/layouts/types.d.ts.map +1 -1
- package/dist/plugin/index.d.ts +1 -0
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +111 -1
- package/dist/plugin/index.js.map +1 -1
- package/dist/render/HybridPageRenderer.d.ts +1 -1
- package/dist/render/HybridPageRenderer.d.ts.map +1 -1
- package/dist/render/PageRenderer.d.ts +1 -1
- package/dist/render/PageRenderer.d.ts.map +1 -1
- package/dist/render/PageRenderer.js +1 -1
- package/dist/render/PageRenderer.js.map +1 -1
- package/dist/render/PuckEditor.client.d.ts +2 -2
- package/dist/render/PuckEditor.client.d.ts.map +1 -1
- package/dist/render/PuckEditor.client.js +2 -2
- package/dist/render/PuckEditor.client.js.map +1 -1
- package/dist/types/index.d.ts +36 -11
- package/dist/types/index.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/views/PuckConfigContext.d.ts +56 -2
- package/dist/views/PuckConfigContext.d.ts.map +1 -1
- package/dist/views/PuckConfigContext.js +6 -3
- package/dist/views/PuckConfigContext.js.map +1 -1
- package/dist/views/PuckEditorView.d.ts.map +1 -1
- package/dist/views/PuckEditorView.js +23 -1
- package/dist/views/PuckEditorView.js.map +1 -1
- package/package.json +34 -10
- package/dist/components/typography/RichText.d.ts +0 -20
- package/dist/components/typography/RichText.d.ts.map +0 -1
- package/dist/components/typography/RichText.js +0 -73
- package/dist/components/typography/RichText.js.map +0 -1
- package/dist/fields/TiptapField.d.ts +0 -40
- package/dist/fields/TiptapField.d.ts.map +0 -1
- package/dist/fields/TiptapField.js +0 -857
- package/dist/fields/TiptapField.js.map +0 -1
- package/dist/fields/TiptapModal.d.ts +0 -10
- package/dist/fields/TiptapModal.d.ts.map +0 -1
- package/dist/fields/TiptapModal.js +0 -114
- package/dist/fields/TiptapModal.js.map +0 -1
- package/dist/fields/TiptapModalField.d.ts +0 -23
- package/dist/fields/TiptapModalField.d.ts.map +0 -1
- package/dist/fields/TiptapModalField.js +0 -55
- package/dist/fields/TiptapModalField.js.map +0 -1
- package/dist/fields/richtext-output.css +0 -219
- 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 +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,
|
|
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 '@
|
|
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,
|
|
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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"}
|