@ai-stack/payloadcms 3.76.0-beta.0 → 3.76.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/core/generateObject.js +1 -4
- package/dist/ai/core/generateObject.js.map +1 -1
- package/dist/ai/core/generateText.js +1 -5
- package/dist/ai/core/generateText.js.map +1 -1
- package/dist/ai/core/media/generateMedia.js +1 -4
- package/dist/ai/core/media/generateMedia.js.map +1 -1
- package/dist/ai/core/media/image/generateImage.js +4 -14
- package/dist/ai/core/media/image/generateImage.js.map +1 -1
- package/dist/ai/core/media/image/handlers/multimodal.js +21 -58
- package/dist/ai/core/media/image/handlers/multimodal.js.map +1 -1
- package/dist/ai/core/media/image/handlers/standard.js +17 -9
- package/dist/ai/core/media/image/handlers/standard.js.map +1 -1
- package/dist/ai/core/media/speech/generateSpeech.js +10 -11
- package/dist/ai/core/media/speech/generateSpeech.js.map +1 -1
- package/dist/ai/core/media/types.d.ts +3 -4
- package/dist/ai/core/media/types.js.map +1 -1
- package/dist/ai/core/streamObject.js +0 -3
- package/dist/ai/core/streamObject.js.map +1 -1
- package/dist/ai/core/streamText.js +1 -4
- package/dist/ai/core/streamText.js.map +1 -1
- package/dist/ai/core/types.d.ts +2 -2
- package/dist/ai/core/types.js.map +1 -1
- package/dist/ai/providers/blocks/anthropic.js +0 -42
- package/dist/ai/providers/blocks/anthropic.js.map +1 -1
- package/dist/ai/providers/blocks/elevenlabs.js +1 -106
- package/dist/ai/providers/blocks/elevenlabs.js.map +1 -1
- package/dist/ai/providers/blocks/fal.js +0 -118
- package/dist/ai/providers/blocks/fal.js.map +1 -1
- package/dist/ai/providers/blocks/google.js +2 -236
- package/dist/ai/providers/blocks/google.js.map +1 -1
- package/dist/ai/providers/blocks/openai-compatible.js +0 -144
- package/dist/ai/providers/blocks/openai-compatible.js.map +1 -1
- package/dist/ai/providers/blocks/openai.js +0 -200
- package/dist/ai/providers/blocks/openai.js.map +1 -1
- package/dist/ai/providers/blocks/xai.js +0 -53
- package/dist/ai/providers/blocks/xai.js.map +1 -1
- package/dist/ai/providers/index.d.ts +1 -1
- package/dist/ai/providers/index.js +0 -2
- package/dist/ai/providers/index.js.map +1 -1
- package/dist/ai/providers/registry.d.ts +24 -28
- package/dist/ai/providers/registry.js +186 -140
- package/dist/ai/providers/registry.js.map +1 -1
- package/dist/ai/providers/types.d.ts +12 -33
- package/dist/ai/providers/types.js +0 -1
- package/dist/ai/providers/types.js.map +1 -1
- package/dist/ai/schemas/lexicalJsonSchema.js +1 -1
- package/dist/ai/schemas/lexicalJsonSchema.js.map +1 -1
- package/dist/ai/utilities/filterEditorSchemaByNodes.js.map +1 -0
- package/dist/ai/utilities/generateFileNameByPrompt.js.map +1 -0
- package/dist/ai/utilities/isObjectSchema.js.map +1 -0
- package/dist/ai/utilities/nodeToSchemaMap.js.map +1 -0
- package/dist/ai/{prompts.d.ts → utilities/prompts.d.ts} +1 -1
- package/dist/ai/utilities/prompts.js.map +1 -0
- package/dist/ai/utilities/systemGenerate.js.map +1 -0
- package/dist/collections/AIJobs.js +3 -12
- package/dist/collections/AIJobs.js.map +1 -1
- package/dist/collections/AIProviders.d.ts +2 -0
- package/dist/collections/{AISettings.js → AIProviders.js} +54 -26
- package/dist/collections/AIProviders.js.map +1 -0
- package/dist/collections/Instructions.js +93 -57
- package/dist/collections/Instructions.js.map +1 -1
- package/dist/collections/shared.d.ts +30 -0
- package/dist/collections/shared.js +15 -0
- package/dist/collections/shared.js.map +1 -0
- package/dist/defaults.js +1 -1
- package/dist/defaults.js.map +1 -1
- package/dist/endpoints/fetchFields.js +15 -7
- package/dist/endpoints/fetchFields.js.map +1 -1
- package/dist/endpoints/fetchVoices.js +2 -2
- package/dist/endpoints/fetchVoices.js.map +1 -1
- package/dist/endpoints/generate.d.ts +7 -0
- package/dist/endpoints/generate.js +268 -0
- package/dist/endpoints/generate.js.map +1 -0
- package/dist/endpoints/index.js +9 -604
- package/dist/endpoints/index.js.map +1 -1
- package/dist/endpoints/promptMentions.d.ts +2 -0
- package/dist/endpoints/promptMentions.js +166 -0
- package/dist/endpoints/promptMentions.js.map +1 -0
- package/dist/endpoints/upload.d.ts +7 -0
- package/dist/endpoints/upload.js +294 -0
- package/dist/endpoints/upload.js.map +1 -0
- package/dist/endpoints/videogenWebhook.d.ts +7 -0
- package/dist/endpoints/videogenWebhook.js +132 -0
- package/dist/endpoints/videogenWebhook.js.map +1 -0
- package/dist/exports/client.d.ts +3 -2
- package/dist/exports/client.js +3 -2
- package/dist/exports/client.js.map +1 -1
- package/dist/exports/fields.d.ts +2 -1
- package/dist/exports/fields.js +2 -1
- package/dist/exports/fields.js.map +1 -1
- package/dist/fields/ArrayComposeField/ArrayComposeField.js +1 -1
- package/dist/fields/ArrayComposeField/ArrayComposeField.js.map +1 -1
- package/dist/fields/ArrayComposeField/ArrayComposeField.jsx +1 -1
- package/dist/fields/ComposeField/ComposeField.d.ts +1 -0
- package/dist/fields/ComposeField/ComposeField.js +18 -8
- package/dist/fields/ComposeField/ComposeField.js.map +1 -1
- package/dist/fields/ComposeField/ComposeField.jsx +12 -7
- package/dist/fields/PromptEditorField/feature.client.d.ts +1 -0
- package/dist/fields/PromptEditorField/feature.client.js +173 -0
- package/dist/fields/PromptEditorField/feature.client.js.map +1 -0
- package/dist/fields/PromptEditorField/feature.client.jsx +148 -0
- package/dist/fields/PromptEditorField/feature.server.d.ts +1 -0
- package/dist/fields/PromptEditorField/feature.server.js +30 -0
- package/dist/fields/PromptEditorField/feature.server.js.map +1 -0
- package/dist/fields/PromptField.d.ts +4 -0
- package/dist/fields/PromptField.js +18 -0
- package/dist/fields/PromptField.js.map +1 -0
- package/dist/fields/SelectField/SelectField.js +0 -1
- package/dist/fields/SelectField/SelectField.js.map +1 -1
- package/dist/fields/SelectField/SelectField.jsx +0 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/libraries/handlebars/helpers.js +2 -2
- package/dist/libraries/handlebars/helpers.js.map +1 -1
- package/dist/libraries/handlebars/replacePlaceholders.js +5 -1
- package/dist/libraries/handlebars/replacePlaceholders.js.map +1 -1
- package/dist/payload-ai.d.ts +5 -19
- package/dist/plugin.js +19 -22
- package/dist/plugin.js.map +1 -1
- package/dist/providers/FieldProvider/FieldProvider.js +10 -19
- package/dist/providers/FieldProvider/FieldProvider.js.map +1 -1
- package/dist/providers/FieldProvider/FieldProvider.jsx +7 -17
- package/dist/providers/InstructionsProvider/InstructionsProvider.js +4 -1
- package/dist/providers/InstructionsProvider/InstructionsProvider.js.map +1 -1
- package/dist/providers/InstructionsProvider/InstructionsProvider.jsx +3 -0
- package/dist/providers/InstructionsProvider/useInstructions.js +1 -1
- package/dist/providers/InstructionsProvider/useInstructions.js.map +1 -1
- package/dist/translations/de.json +47 -0
- package/dist/translations/en.json +45 -2
- package/dist/translations/es.json +45 -2
- package/dist/translations/fa.json +45 -2
- package/dist/translations/fr.json +46 -3
- package/dist/translations/hi.json +47 -0
- package/dist/translations/index.d.ts +88 -26
- package/dist/translations/index.js +18 -32
- package/dist/translations/index.js.map +1 -1
- package/dist/translations/ja.json +47 -0
- package/dist/translations/nb.json +47 -0
- package/dist/translations/nl.json +47 -0
- package/dist/translations/pl.json +45 -2
- package/dist/translations/pt.json +47 -0
- package/dist/translations/ru.json +45 -2
- package/dist/translations/th.json +47 -0
- package/dist/translations/translation-schema.json +184 -11
- package/dist/translations/uk.json +45 -2
- package/dist/translations/zh.json +47 -0
- package/dist/types.d.ts +57 -31
- package/dist/types.js.map +1 -1
- package/dist/ui/Compose/Compose.js +42 -79
- package/dist/ui/Compose/Compose.js.map +1 -1
- package/dist/ui/Compose/Compose.jsx +32 -86
- package/dist/ui/Compose/ComposePlaceholder.js +1 -1
- package/dist/ui/Compose/ComposePlaceholder.js.map +1 -1
- package/dist/ui/Compose/ComposePlaceholder.jsx +1 -1
- package/dist/ui/Compose/{compose.module.css → compose.module.scss} +3 -5
- package/dist/ui/Compose/hooks/menu/Item.d.ts +1 -1
- package/dist/ui/Compose/hooks/menu/Item.js +7 -3
- package/dist/ui/Compose/hooks/menu/Item.js.map +1 -1
- package/dist/ui/Compose/hooks/menu/Item.jsx +11 -5
- package/dist/ui/Compose/hooks/menu/TranslateMenu.d.ts +5 -0
- package/dist/ui/Compose/hooks/menu/TranslateMenu.js +48 -5
- package/dist/ui/Compose/hooks/menu/TranslateMenu.js.map +1 -1
- package/dist/ui/Compose/hooks/menu/TranslateMenu.jsx +44 -6
- package/dist/ui/Compose/hooks/menu/items.d.ts +8 -8
- package/dist/ui/Compose/hooks/menu/itemsMap.d.ts +2 -1
- package/dist/ui/Compose/hooks/menu/itemsMap.js.map +1 -1
- package/dist/ui/Compose/hooks/menu/menu.module.scss +4 -1
- package/dist/ui/Compose/hooks/menu/types.d.ts +21 -0
- package/dist/ui/Compose/hooks/menu/types.js +3 -0
- package/dist/ui/Compose/hooks/menu/types.js.map +1 -0
- package/dist/ui/Compose/hooks/menu/useMenu.d.ts +2 -2
- package/dist/ui/Compose/hooks/menu/useMenu.js +45 -23
- package/dist/ui/Compose/hooks/menu/useMenu.js.map +1 -1
- package/dist/ui/Compose/hooks/menu/useMenu.jsx +43 -23
- package/dist/ui/Compose/hooks/mergeGeneratedValue.d.ts +14 -0
- package/dist/ui/Compose/hooks/mergeGeneratedValue.js +38 -0
- package/dist/ui/Compose/hooks/mergeGeneratedValue.js.map +1 -0
- package/dist/ui/Compose/hooks/useActiveFieldTracking.js +34 -0
- package/dist/ui/Compose/hooks/useActiveFieldTracking.js.map +1 -1
- package/dist/ui/Compose/hooks/useGenerate.js +37 -12
- package/dist/ui/Compose/hooks/useGenerate.js.map +1 -1
- package/dist/ui/Compose/hooks/useGenerateUpload.js +67 -19
- package/dist/ui/Compose/hooks/useGenerateUpload.js.map +1 -1
- package/dist/ui/Compose/hooks/useStreamingUpdate.js +4 -4
- package/dist/ui/Compose/hooks/useStreamingUpdate.js.map +1 -1
- package/dist/ui/ConfigDashboard/configDashboard.module.css +94 -0
- package/dist/ui/ConfigDashboard/index.d.ts +2 -0
- package/dist/ui/ConfigDashboard/index.js +159 -0
- package/dist/ui/ConfigDashboard/index.js.map +1 -0
- package/dist/ui/ConfigDashboard/index.jsx +122 -0
- package/dist/ui/DynamicModelSelect/index.js +6 -27
- package/dist/ui/DynamicModelSelect/index.js.map +1 -1
- package/dist/ui/DynamicModelSelect/index.jsx +6 -29
- package/dist/ui/DynamicProviderSelect/index.js +6 -27
- package/dist/ui/DynamicProviderSelect/index.js.map +1 -1
- package/dist/ui/DynamicProviderSelect/index.jsx +6 -29
- package/dist/ui/DynamicVoiceSelect/index.js +34 -83
- package/dist/ui/DynamicVoiceSelect/index.js.map +1 -1
- package/dist/ui/DynamicVoiceSelect/index.jsx +16 -53
- package/dist/ui/GlobalProviderOptions/index.d.ts +2 -0
- package/dist/ui/GlobalProviderOptions/index.js +118 -0
- package/dist/ui/GlobalProviderOptions/index.js.map +1 -0
- package/dist/ui/GlobalProviderOptions/index.jsx +60 -0
- package/dist/ui/Icons/Icons.js +1 -1
- package/dist/ui/Icons/Icons.js.map +1 -1
- package/dist/ui/Icons/Icons.jsx +1 -1
- package/dist/ui/Icons/LottieAnimation.js +1 -1
- package/dist/ui/Icons/LottieAnimation.js.map +1 -1
- package/dist/ui/Icons/LottieAnimation.jsx +1 -1
- package/dist/ui/InstructionProviderOptions/ProviderOptionsTree.d.ts +12 -0
- package/dist/ui/InstructionProviderOptions/ProviderOptionsTree.js +166 -0
- package/dist/ui/InstructionProviderOptions/ProviderOptionsTree.js.map +1 -0
- package/dist/ui/InstructionProviderOptions/ProviderOptionsTree.jsx +83 -0
- package/dist/ui/InstructionProviderOptions/index.d.ts +2 -0
- package/dist/ui/InstructionProviderOptions/index.js +157 -0
- package/dist/ui/InstructionProviderOptions/index.js.map +1 -0
- package/dist/ui/InstructionProviderOptions/index.jsx +92 -0
- package/dist/ui/VoicesFetcher/index.js.map +1 -1
- package/dist/ui/hooks/useAISettings.d.ts +26 -0
- package/dist/ui/hooks/useAISettings.js +73 -0
- package/dist/ui/hooks/useAISettings.js.map +1 -0
- package/dist/ui/providerOptions/updateProviderOptionsValue.d.ts +6 -0
- package/dist/ui/providerOptions/updateProviderOptionsValue.js +50 -0
- package/dist/ui/providerOptions/updateProviderOptionsValue.js.map +1 -0
- package/dist/ui/shared/handleSelectChange.d.ts +5 -0
- package/dist/ui/shared/handleSelectChange.js +12 -0
- package/dist/ui/shared/handleSelectChange.js.map +1 -0
- package/dist/ui/shared/types.d.ts +11 -0
- package/dist/ui/shared/types.js +5 -0
- package/dist/ui/shared/types.js.map +1 -0
- package/dist/utilities/ai/resolveEffectiveInstructionSettings.d.ts +15 -0
- package/dist/utilities/ai/resolveEffectiveInstructionSettings.js +136 -0
- package/dist/utilities/ai/resolveEffectiveInstructionSettings.js.map +1 -0
- package/dist/{endpoints → utilities}/buildPromptUtils.js +14 -5
- package/dist/utilities/buildPromptUtils.js.map +1 -0
- package/dist/utilities/buildSmartPrompt.js +3 -3
- package/dist/utilities/buildSmartPrompt.js.map +1 -1
- package/dist/utilities/fields/fieldToJsonSchema.js.map +1 -0
- package/dist/utilities/fields/getFieldBySchemaPath.js.map +1 -0
- package/dist/utilities/fields/getFieldInfo.js.map +1 -0
- package/dist/utilities/{updateFieldsConfig.js → fields/updateFieldsConfig.js} +8 -3
- package/dist/utilities/fields/updateFieldsConfig.js.map +1 -0
- package/dist/utilities/images/extractImageData.js.map +1 -0
- package/dist/utilities/images/extractPromptAttachments.js.map +1 -0
- package/dist/utilities/{fetchImages.d.ts → images/fetchImages.d.ts} +1 -1
- package/dist/utilities/images/fetchImages.js +49 -0
- package/dist/utilities/images/fetchImages.js.map +1 -0
- package/dist/utilities/images/resolveImageReferences.js +183 -0
- package/dist/utilities/images/resolveImageReferences.js.map +1 -0
- package/dist/utilities/init/autoSetupProviders.d.ts +3 -0
- package/dist/utilities/init/autoSetupProviders.js +216 -0
- package/dist/utilities/init/autoSetupProviders.js.map +1 -0
- package/dist/utilities/lexical/editorSchemaValidator.js.map +1 -0
- package/dist/utilities/lexical/lexicalToHTML.js.map +1 -0
- package/dist/utilities/lexical/lexicalToPromptTemplate.d.ts +2 -0
- package/dist/utilities/lexical/lexicalToPromptTemplate.js +50 -0
- package/dist/utilities/lexical/lexicalToPromptTemplate.js.map +1 -0
- package/dist/utilities/lexical/setSafeLexicalState.js.map +1 -0
- package/dist/utilities/lexical/stringToLexicalJSON.d.ts +2 -0
- package/dist/utilities/lexical/stringToLexicalJSON.js +39 -0
- package/dist/utilities/lexical/stringToLexicalJSON.js.map +1 -0
- package/dist/utilities/sanitizeLog.d.ts +1 -0
- package/dist/utilities/sanitizeLog.js +39 -0
- package/dist/utilities/sanitizeLog.js.map +1 -0
- package/dist/utilities/seedProperties.js +37 -22
- package/dist/utilities/seedProperties.js.map +1 -1
- package/package.json +5 -2
- package/dist/ai/analyse.d.ts +0 -1
- package/dist/ai/analyse.js +0 -3
- package/dist/ai/analyse.js.map +0 -1
- package/dist/ai/index.d.ts +0 -11
- package/dist/ai/index.js +0 -25
- package/dist/ai/index.js.map +0 -1
- package/dist/ai/prompts.js.map +0 -1
- package/dist/ai/utils/filterEditorSchemaByNodes.js.map +0 -1
- package/dist/ai/utils/generateFileNameByPrompt.js.map +0 -1
- package/dist/ai/utils/isObjectSchema.js.map +0 -1
- package/dist/ai/utils/nodeToSchemaMap.js.map +0 -1
- package/dist/ai/utils/systemGenerate.js.map +0 -1
- package/dist/collections/AISettings.d.ts +0 -2
- package/dist/collections/AISettings.js.map +0 -1
- package/dist/endpoints/buildPromptUtils.js.map +0 -1
- package/dist/endpoints/chat.d.ts +0 -4
- package/dist/fields/PromptEditorField/PromptEditorField.d.ts +0 -3
- package/dist/fields/PromptEditorField/PromptEditorField.js +0 -217
- package/dist/fields/PromptEditorField/PromptEditorField.js.map +0 -1
- package/dist/fields/PromptEditorField/PromptEditorField.jsx +0 -160
- package/dist/ui/AIConfigDashboard/index.d.ts +0 -2
- package/dist/ui/AIConfigDashboard/index.js +0 -222
- package/dist/ui/AIConfigDashboard/index.js.map +0 -1
- package/dist/ui/AIConfigDashboard/index.jsx +0 -170
- package/dist/ui/ProviderOptionsEditor/index.d.ts +0 -7
- package/dist/ui/ProviderOptionsEditor/index.js +0 -291
- package/dist/ui/ProviderOptionsEditor/index.js.map +0 -1
- package/dist/ui/ProviderOptionsEditor/index.jsx +0 -210
- package/dist/utilities/editorSchemaValidator.js.map +0 -1
- package/dist/utilities/extractImageData.js.map +0 -1
- package/dist/utilities/extractPromptAttachments.js.map +0 -1
- package/dist/utilities/fetchImages.js +0 -38
- package/dist/utilities/fetchImages.js.map +0 -1
- package/dist/utilities/fieldToJsonSchema.js.map +0 -1
- package/dist/utilities/getFieldBySchemaPath.js.map +0 -1
- package/dist/utilities/getFieldInfo.js.map +0 -1
- package/dist/utilities/getProviderOptionsFields.d.ts +0 -16
- package/dist/utilities/getProviderOptionsFields.js +0 -80
- package/dist/utilities/getProviderOptionsFields.js.map +0 -1
- package/dist/utilities/isPluginActivated.d.ts +0 -2
- package/dist/utilities/isPluginActivated.js +0 -5
- package/dist/utilities/isPluginActivated.js.map +0 -1
- package/dist/utilities/lexicalToHTML.js.map +0 -1
- package/dist/utilities/resolveImageReferences.js +0 -167
- package/dist/utilities/resolveImageReferences.js.map +0 -1
- package/dist/utilities/schemaConverter.d.ts +0 -3
- package/dist/utilities/schemaConverter.js +0 -93
- package/dist/utilities/schemaConverter.js.map +0 -1
- package/dist/utilities/setSafeLexicalState.js.map +0 -1
- package/dist/utilities/updateFieldsConfig.js.map +0 -1
- /package/dist/ai/{utils → utilities}/filterEditorSchemaByNodes.d.ts +0 -0
- /package/dist/ai/{utils → utilities}/filterEditorSchemaByNodes.js +0 -0
- /package/dist/ai/{utils → utilities}/generateFileNameByPrompt.d.ts +0 -0
- /package/dist/ai/{utils → utilities}/generateFileNameByPrompt.js +0 -0
- /package/dist/ai/{utils → utilities}/isObjectSchema.d.ts +0 -0
- /package/dist/ai/{utils → utilities}/isObjectSchema.js +0 -0
- /package/dist/ai/{utils → utilities}/nodeToSchemaMap.d.ts +0 -0
- /package/dist/ai/{utils → utilities}/nodeToSchemaMap.js +0 -0
- /package/dist/ai/{prompts.js → utilities/prompts.js} +0 -0
- /package/dist/ai/{utils → utilities}/systemGenerate.d.ts +0 -0
- /package/dist/ai/{utils → utilities}/systemGenerate.js +0 -0
- /package/dist/ui/Icons/{icons.module.css → icons.module.scss} +0 -0
- /package/dist/{endpoints → utilities}/buildPromptUtils.d.ts +0 -0
- /package/dist/utilities/{fieldToJsonSchema.d.ts → fields/fieldToJsonSchema.d.ts} +0 -0
- /package/dist/utilities/{fieldToJsonSchema.js → fields/fieldToJsonSchema.js} +0 -0
- /package/dist/utilities/{getFieldBySchemaPath.d.ts → fields/getFieldBySchemaPath.d.ts} +0 -0
- /package/dist/utilities/{getFieldBySchemaPath.js → fields/getFieldBySchemaPath.js} +0 -0
- /package/dist/utilities/{getFieldInfo.d.ts → fields/getFieldInfo.d.ts} +0 -0
- /package/dist/utilities/{getFieldInfo.js → fields/getFieldInfo.js} +0 -0
- /package/dist/utilities/{updateFieldsConfig.d.ts → fields/updateFieldsConfig.d.ts} +0 -0
- /package/dist/utilities/{extractImageData.d.ts → images/extractImageData.d.ts} +0 -0
- /package/dist/utilities/{extractImageData.js → images/extractImageData.js} +0 -0
- /package/dist/utilities/{extractPromptAttachments.d.ts → images/extractPromptAttachments.d.ts} +0 -0
- /package/dist/utilities/{extractPromptAttachments.js → images/extractPromptAttachments.js} +0 -0
- /package/dist/utilities/{resolveImageReferences.d.ts → images/resolveImageReferences.d.ts} +0 -0
- /package/dist/utilities/{editorSchemaValidator.d.ts → lexical/editorSchemaValidator.d.ts} +0 -0
- /package/dist/utilities/{editorSchemaValidator.js → lexical/editorSchemaValidator.js} +0 -0
- /package/dist/utilities/{lexicalToHTML.d.ts → lexical/lexicalToHTML.d.ts} +0 -0
- /package/dist/utilities/{lexicalToHTML.js → lexical/lexicalToHTML.js} +0 -0
- /package/dist/utilities/{setSafeLexicalState.d.ts → lexical/setSafeLexicalState.d.ts} +0 -0
- /package/dist/utilities/{setSafeLexicalState.js → lexical/setSafeLexicalState.js} +0 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { checkAccess } from '../access/checkAccess.js';
|
|
2
|
+
import { filterEditorSchemaByNodes } from '../ai/utilities/filterEditorSchemaByNodes.js';
|
|
3
|
+
import { PLUGIN_INSTRUCTIONS_TABLE, PLUGIN_NAME } from '../defaults.js';
|
|
4
|
+
import { registerEditorHelper } from '../libraries/handlebars/helpers.js';
|
|
5
|
+
import { resolveEffectiveInstructionSettings } from '../utilities/ai/resolveEffectiveInstructionSettings.js';
|
|
6
|
+
import { assignPrompt } from '../utilities/buildPromptUtils.js';
|
|
7
|
+
import { buildSmartPrompt, isGenericPrompt } from '../utilities/buildSmartPrompt.js';
|
|
8
|
+
import { fieldToJsonSchema } from '../utilities/fields/fieldToJsonSchema.js';
|
|
9
|
+
import { getFieldBySchemaPath } from '../utilities/fields/getFieldBySchemaPath.js';
|
|
10
|
+
import { extractImageData } from '../utilities/images/extractImageData.js';
|
|
11
|
+
import { fetchImages } from '../utilities/images/fetchImages.js';
|
|
12
|
+
import { resolveImageReferences } from '../utilities/images/resolveImageReferences.js';
|
|
13
|
+
import { lexicalToPromptTemplate } from '../utilities/lexical/lexicalToPromptTemplate.js';
|
|
14
|
+
import { sanitizeLog } from '../utilities/sanitizeLog.js';
|
|
15
|
+
/**
|
|
16
|
+
* Text/rich-text generation endpoint handler.
|
|
17
|
+
* Uses payload.ai.streamObject for structured text generation.
|
|
18
|
+
*/ export const generateHandler = (pluginConfig)=>async (req)=>{
|
|
19
|
+
try {
|
|
20
|
+
// Check authentication and authorization first
|
|
21
|
+
await checkAccess(req, pluginConfig);
|
|
22
|
+
const data = await req.json?.();
|
|
23
|
+
const { allowedEditorNodes = [], locale = 'en', options } = data;
|
|
24
|
+
const { action, actionParams, instructionId } = options;
|
|
25
|
+
let contextData = data.doc;
|
|
26
|
+
if (!instructionId) {
|
|
27
|
+
throw new Error(`Instruction ID is required for "${PLUGIN_NAME}" to work, please check your configuration, or try again`);
|
|
28
|
+
}
|
|
29
|
+
// Verify user has access to the specific instruction
|
|
30
|
+
const instructions = await req.payload.findByID({
|
|
31
|
+
id: instructionId,
|
|
32
|
+
collection: PLUGIN_INSTRUCTIONS_TABLE,
|
|
33
|
+
req
|
|
34
|
+
});
|
|
35
|
+
const { collections } = req.payload.config;
|
|
36
|
+
const collection = collections.find((collection)=>collection.slug === PLUGIN_INSTRUCTIONS_TABLE);
|
|
37
|
+
if (!collection) {
|
|
38
|
+
throw new Error('Collection not found');
|
|
39
|
+
}
|
|
40
|
+
const { defaultLocale, locales = [] } = req.payload.config.localization || {};
|
|
41
|
+
// If translating from default locale, we need to fetch the original content
|
|
42
|
+
if (action === 'Translate' && actionParams?.translateFromDefault && contextData?.id) {
|
|
43
|
+
try {
|
|
44
|
+
const schemaPath = String(instructions['schema-path']);
|
|
45
|
+
const parts = (schemaPath || '').split('.') || [];
|
|
46
|
+
const collectionName = parts[0];
|
|
47
|
+
if (collectionName && defaultLocale) {
|
|
48
|
+
const originalDoc = await req.payload.findByID({
|
|
49
|
+
id: contextData.id,
|
|
50
|
+
collection: collectionName,
|
|
51
|
+
locale: defaultLocale,
|
|
52
|
+
req
|
|
53
|
+
});
|
|
54
|
+
if (originalDoc) {
|
|
55
|
+
contextData = {
|
|
56
|
+
...contextData,
|
|
57
|
+
...originalDoc
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
} catch (e) {
|
|
62
|
+
req.payload.logger.error(e, '— AI Plugin: Error fetching default locale document for translation');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const { custom: { [PLUGIN_NAME]: { editorConfig = {} } = {} } = {} } = collection.admin;
|
|
66
|
+
const { schema: editorSchema = {} } = editorConfig;
|
|
67
|
+
let { prompt: promptTemplate = '' } = instructions;
|
|
68
|
+
// Convert Lexical JSON to string template if needed
|
|
69
|
+
if (promptTemplate && typeof promptTemplate === 'object') {
|
|
70
|
+
promptTemplate = lexicalToPromptTemplate(promptTemplate);
|
|
71
|
+
}
|
|
72
|
+
// Smart fallback: if prompt is generic, build a contextual prompt from field metadata
|
|
73
|
+
if (isGenericPrompt(promptTemplate)) {
|
|
74
|
+
const schemaPath = String(instructions['schema-path']);
|
|
75
|
+
promptTemplate = buildSmartPrompt({
|
|
76
|
+
documentData: contextData,
|
|
77
|
+
payload: req.payload,
|
|
78
|
+
schemaPath
|
|
79
|
+
});
|
|
80
|
+
if (pluginConfig.debugging) {
|
|
81
|
+
req.payload.logger.info(sanitizeLog({
|
|
82
|
+
smartPrompt: promptTemplate
|
|
83
|
+
}), `— AI Plugin: Using smart fallback prompt for ${schemaPath}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
let allowedEditorSchema = editorSchema;
|
|
87
|
+
if (allowedEditorNodes.length) {
|
|
88
|
+
allowedEditorSchema = filterEditorSchemaByNodes(editorSchema, allowedEditorNodes);
|
|
89
|
+
// Debug: Log what nodes were received and what definitions remain
|
|
90
|
+
if (pluginConfig.debugging) {
|
|
91
|
+
req.payload.logger.info(sanitizeLog({
|
|
92
|
+
receivedNodes: allowedEditorNodes,
|
|
93
|
+
remainingDefinitions: Object.keys(allowedEditorSchema.definitions || {})
|
|
94
|
+
}), '— AI Plugin: Schema filtering debug');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const schemaPath = String(instructions['schema-path']);
|
|
98
|
+
const parts = (schemaPath || '').split('.') || [];
|
|
99
|
+
const collectionName = parts[0];
|
|
100
|
+
const fieldName = parts.length > 1 ? parts[parts.length - 1] : '';
|
|
101
|
+
registerEditorHelper(req.payload, schemaPath);
|
|
102
|
+
const localeData = locales.find((l)=>{
|
|
103
|
+
return l.code === locale;
|
|
104
|
+
});
|
|
105
|
+
let localeInfo = locale;
|
|
106
|
+
if (localeData && defaultLocale && localeData.label && typeof localeData.label === 'object' && defaultLocale in localeData.label) {
|
|
107
|
+
localeInfo = localeData.label[defaultLocale];
|
|
108
|
+
}
|
|
109
|
+
const prompts = await assignPrompt(action, {
|
|
110
|
+
type: String(instructions['field-type']),
|
|
111
|
+
actionParams,
|
|
112
|
+
collection: collectionName,
|
|
113
|
+
context: contextData,
|
|
114
|
+
field: fieldName || '',
|
|
115
|
+
layout: instructions.layout,
|
|
116
|
+
locale: localeInfo,
|
|
117
|
+
pluginConfig,
|
|
118
|
+
systemPrompt: instructions.system,
|
|
119
|
+
template: String(promptTemplate)
|
|
120
|
+
});
|
|
121
|
+
if (pluginConfig.debugging) {
|
|
122
|
+
req.payload.logger.info(sanitizeLog({
|
|
123
|
+
prompts
|
|
124
|
+
}), `— AI Plugin: Executing text prompt on ${schemaPath}`);
|
|
125
|
+
}
|
|
126
|
+
const aiSettings = await req.payload.findGlobal({
|
|
127
|
+
slug: 'ai-providers'
|
|
128
|
+
});
|
|
129
|
+
const { effectiveSettings: modelSettings, settingsName } = resolveEffectiveInstructionSettings({
|
|
130
|
+
defaults: aiSettings?.defaults,
|
|
131
|
+
instructions: instructions
|
|
132
|
+
});
|
|
133
|
+
if (!settingsName) {
|
|
134
|
+
throw new Error(`Unsupported model-id: ${instructions['model-id']}`);
|
|
135
|
+
}
|
|
136
|
+
// Build per-field JSON schema for structured generation when applicable
|
|
137
|
+
let jsonSchema = allowedEditorSchema;
|
|
138
|
+
let targetField;
|
|
139
|
+
try {
|
|
140
|
+
const targetCollection = req.payload.config.collections.find((c)=>c.slug === collectionName);
|
|
141
|
+
if (targetCollection && fieldName) {
|
|
142
|
+
targetField = getFieldBySchemaPath(targetCollection, schemaPath);
|
|
143
|
+
const supported = [
|
|
144
|
+
'array',
|
|
145
|
+
'text',
|
|
146
|
+
'textarea',
|
|
147
|
+
'select',
|
|
148
|
+
'number',
|
|
149
|
+
'date',
|
|
150
|
+
'code',
|
|
151
|
+
'email',
|
|
152
|
+
'json'
|
|
153
|
+
];
|
|
154
|
+
const t = String(targetField?.type || '');
|
|
155
|
+
if (targetField && supported.includes(t)) {
|
|
156
|
+
// For array fields, use count from array-settings if available
|
|
157
|
+
if (t === 'array') {
|
|
158
|
+
const count = modelSettings.count || 3;
|
|
159
|
+
// Override the field's maxRows with the requested count
|
|
160
|
+
const modifiedField = {
|
|
161
|
+
...targetField,
|
|
162
|
+
maxRows: count,
|
|
163
|
+
minRows: count
|
|
164
|
+
};
|
|
165
|
+
jsonSchema = fieldToJsonSchema(modifiedField, {
|
|
166
|
+
nameOverride: fieldName
|
|
167
|
+
});
|
|
168
|
+
} else {
|
|
169
|
+
jsonSchema = fieldToJsonSchema(targetField, {
|
|
170
|
+
nameOverride: fieldName
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
} catch (e) {
|
|
176
|
+
req.payload.logger.error(e, '— AI Plugin: Error building field JSON schema');
|
|
177
|
+
}
|
|
178
|
+
// Resolve @field:filename references from the prompt
|
|
179
|
+
const { images: resolvedImages, processedPrompt } = await resolveImageReferences(prompts.prompt, contextData, req, collectionName);
|
|
180
|
+
// Extract hardcoded URLs from the processed prompt
|
|
181
|
+
const hardcodedImages = extractImageData(processedPrompt);
|
|
182
|
+
// Combine images
|
|
183
|
+
const allImages = [
|
|
184
|
+
...hardcodedImages,
|
|
185
|
+
...resolvedImages
|
|
186
|
+
];
|
|
187
|
+
let images;
|
|
188
|
+
if (allImages.length > 0) {
|
|
189
|
+
const imageParts = await fetchImages(req, allImages);
|
|
190
|
+
if (imageParts.length > 0) {
|
|
191
|
+
images = imageParts;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
let promptToUse = processedPrompt;
|
|
195
|
+
let systemToUse = prompts.system;
|
|
196
|
+
// Execute beforeGenerate hooks
|
|
197
|
+
if (targetField && targetField.custom?.ai?.beforeGenerate) {
|
|
198
|
+
const beforeHooks = targetField.custom.ai.beforeGenerate;
|
|
199
|
+
for (const hook of beforeHooks){
|
|
200
|
+
const result = await hook({
|
|
201
|
+
doc: contextData,
|
|
202
|
+
field: targetField,
|
|
203
|
+
headers: req.headers,
|
|
204
|
+
instructions,
|
|
205
|
+
payload: req.payload,
|
|
206
|
+
prompt: promptToUse,
|
|
207
|
+
req,
|
|
208
|
+
system: systemToUse
|
|
209
|
+
});
|
|
210
|
+
if (result) {
|
|
211
|
+
if (result.prompt) {
|
|
212
|
+
promptToUse = result.prompt;
|
|
213
|
+
}
|
|
214
|
+
if (result.system) {
|
|
215
|
+
systemToUse = result.system;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
const generateParams = {
|
|
221
|
+
images,
|
|
222
|
+
maxTokens: modelSettings.maxTokens,
|
|
223
|
+
model: modelSettings.model,
|
|
224
|
+
prompt: promptToUse,
|
|
225
|
+
provider: modelSettings.provider,
|
|
226
|
+
providerOptions: modelSettings,
|
|
227
|
+
schema: jsonSchema,
|
|
228
|
+
system: systemToUse,
|
|
229
|
+
temperature: modelSettings.temperature
|
|
230
|
+
};
|
|
231
|
+
if (pluginConfig.debugging) {
|
|
232
|
+
req.payload.logger.info(sanitizeLog(generateParams), '— AI Plugin: Final generation parameters for text/rich-text');
|
|
233
|
+
}
|
|
234
|
+
const streamResult = await req.payload.ai.streamObject({
|
|
235
|
+
...generateParams,
|
|
236
|
+
onFinish: async ({ object })=>{
|
|
237
|
+
if (targetField && targetField.custom?.ai?.afterGenerate) {
|
|
238
|
+
const afterHooks = targetField.custom.ai.afterGenerate;
|
|
239
|
+
for (const hook of afterHooks){
|
|
240
|
+
await hook({
|
|
241
|
+
doc: contextData,
|
|
242
|
+
field: targetField,
|
|
243
|
+
headers: req.headers,
|
|
244
|
+
instructions,
|
|
245
|
+
payload: req.payload,
|
|
246
|
+
req,
|
|
247
|
+
result: object
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
return streamResult;
|
|
254
|
+
} catch (error) {
|
|
255
|
+
req.payload.logger.error(error, '— AI Plugin: Error generating text content:');
|
|
256
|
+
const message = error && typeof error === 'object' && 'message' in error ? error.message : String(error);
|
|
257
|
+
return new Response(JSON.stringify({
|
|
258
|
+
error: message
|
|
259
|
+
}), {
|
|
260
|
+
headers: {
|
|
261
|
+
'Content-Type': 'application/json'
|
|
262
|
+
},
|
|
263
|
+
status: message.includes('Authentication required') || message.includes('Insufficient permissions') ? 401 : 500
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/endpoints/generate.ts"],"sourcesContent":["import type { ImagePart } from 'ai'\nimport type { Field, PayloadRequest } from 'payload'\n\nimport type { PluginConfig } from '../types.js'\n\nimport { checkAccess } from '../access/checkAccess.js'\nimport { filterEditorSchemaByNodes } from '../ai/utilities/filterEditorSchemaByNodes.js'\nimport { PLUGIN_INSTRUCTIONS_TABLE, PLUGIN_NAME } from '../defaults.js'\nimport { registerEditorHelper } from '../libraries/handlebars/helpers.js'\nimport { resolveEffectiveInstructionSettings } from '../utilities/ai/resolveEffectiveInstructionSettings.js'\nimport { assignPrompt } from '../utilities/buildPromptUtils.js'\nimport { buildSmartPrompt, isGenericPrompt } from '../utilities/buildSmartPrompt.js'\nimport { fieldToJsonSchema } from '../utilities/fields/fieldToJsonSchema.js'\nimport { getFieldBySchemaPath } from '../utilities/fields/getFieldBySchemaPath.js'\nimport { extractImageData } from '../utilities/images/extractImageData.js'\nimport { type FetchableImage, fetchImages } from '../utilities/images/fetchImages.js'\nimport { resolveImageReferences } from '../utilities/images/resolveImageReferences.js'\nimport { lexicalToPromptTemplate } from '../utilities/lexical/lexicalToPromptTemplate.js'\nimport { sanitizeLog } from '../utilities/sanitizeLog.js'\n\n/**\n * Text/rich-text generation endpoint handler.\n * Uses payload.ai.streamObject for structured text generation.\n */\nexport const generateHandler = (pluginConfig: PluginConfig) => async (req: PayloadRequest) => {\n try {\n // Check authentication and authorization first\n await checkAccess(req, pluginConfig)\n\n const data = await req.json?.()\n\n const { allowedEditorNodes = [], locale = 'en', options } = data\n const { action, actionParams, instructionId } = options\n let contextData = data.doc\n\n if (!instructionId) {\n throw new Error(\n `Instruction ID is required for \"${PLUGIN_NAME}\" to work, please check your configuration, or try again`,\n )\n }\n\n // Verify user has access to the specific instruction\n const instructions = await req.payload.findByID({\n id: instructionId,\n collection: PLUGIN_INSTRUCTIONS_TABLE,\n req, // Pass req to ensure access control is applied\n })\n\n const { collections } = req.payload.config\n const collection = collections.find(\n (collection) => collection.slug === PLUGIN_INSTRUCTIONS_TABLE,\n )\n\n if (!collection) {\n throw new Error('Collection not found')\n }\n\n const { defaultLocale, locales = [] } = req.payload.config.localization || {}\n\n // If translating from default locale, we need to fetch the original content\n if (action === 'Translate' && actionParams?.translateFromDefault && contextData?.id) {\n try {\n const schemaPath = String(instructions['schema-path'])\n const parts = (schemaPath || '').split('.') || []\n const collectionName = parts[0]\n\n if (collectionName && defaultLocale) {\n const originalDoc = await req.payload.findByID({\n id: contextData.id,\n collection: collectionName as any,\n locale: defaultLocale,\n req,\n })\n if (originalDoc) {\n contextData = { ...contextData, ...originalDoc }\n }\n }\n } catch (e) {\n req.payload.logger.error(\n e,\n '— AI Plugin: Error fetching default locale document for translation',\n )\n }\n }\n\n const { custom: { [PLUGIN_NAME]: { editorConfig = {} } = {} } = {} } = collection.admin\n const { schema: editorSchema = {} } = editorConfig\n let { prompt: promptTemplate = '' } = instructions\n\n // Convert Lexical JSON to string template if needed\n if (promptTemplate && typeof promptTemplate === 'object') {\n promptTemplate = lexicalToPromptTemplate(promptTemplate)\n }\n\n // Smart fallback: if prompt is generic, build a contextual prompt from field metadata\n if (isGenericPrompt(promptTemplate)) {\n const schemaPath = String(instructions['schema-path'])\n promptTemplate = buildSmartPrompt({\n documentData: contextData,\n payload: req.payload,\n schemaPath,\n })\n\n if (pluginConfig.debugging) {\n req.payload.logger.info(\n sanitizeLog({ smartPrompt: promptTemplate }),\n `— AI Plugin: Using smart fallback prompt for ${schemaPath}`,\n )\n }\n }\n\n let allowedEditorSchema = editorSchema\n if (allowedEditorNodes.length) {\n allowedEditorSchema = filterEditorSchemaByNodes(editorSchema, allowedEditorNodes)\n // Debug: Log what nodes were received and what definitions remain\n if (pluginConfig.debugging) {\n req.payload.logger.info(\n sanitizeLog({\n receivedNodes: allowedEditorNodes,\n remainingDefinitions: Object.keys(allowedEditorSchema.definitions || {}),\n }),\n '— AI Plugin: Schema filtering debug',\n )\n }\n }\n\n const schemaPath = String(instructions['schema-path'])\n const parts = (schemaPath || '').split('.') || []\n const collectionName = parts[0]\n const fieldName = parts.length > 1 ? parts[parts.length - 1] : ''\n\n registerEditorHelper(req.payload, schemaPath)\n\n const localeData = locales.find((l) => {\n return l.code === locale\n })\n\n let localeInfo = locale\n if (\n localeData &&\n defaultLocale &&\n localeData.label &&\n typeof localeData.label === 'object' &&\n defaultLocale in localeData.label\n ) {\n localeInfo = localeData.label[defaultLocale]\n }\n\n const prompts = await assignPrompt(action, {\n type: String(instructions['field-type']),\n actionParams,\n collection: collectionName,\n context: contextData,\n field: fieldName || '',\n layout: instructions.layout,\n locale: localeInfo,\n pluginConfig,\n systemPrompt: instructions.system,\n template: String(promptTemplate),\n })\n\n if (pluginConfig.debugging) {\n req.payload.logger.info(sanitizeLog({ prompts }), `— AI Plugin: Executing text prompt on ${schemaPath}`)\n }\n\n const aiSettings = await req.payload.findGlobal({\n slug: 'ai-providers',\n })\n const { effectiveSettings: modelSettings, settingsName } = resolveEffectiveInstructionSettings({\n defaults: aiSettings?.defaults as Record<string, unknown> | undefined,\n instructions: instructions as Record<string, unknown>,\n })\n\n if (!settingsName) {\n throw new Error(`Unsupported model-id: ${instructions['model-id']}`)\n }\n\n // Build per-field JSON schema for structured generation when applicable\n let jsonSchema = allowedEditorSchema\n let targetField: Field | null | undefined\n\n try {\n const targetCollection = req.payload.config.collections.find((c) => c.slug === collectionName)\n if (targetCollection && fieldName) {\n targetField = getFieldBySchemaPath(targetCollection, schemaPath)\n const supported = [\n 'array',\n 'text',\n 'textarea',\n 'select',\n 'number',\n 'date',\n 'code',\n 'email',\n 'json',\n ]\n const t = String(targetField?.type || '')\n if (targetField && supported.includes(t)) {\n // For array fields, use count from array-settings if available\n if (t === 'array') {\n const count = (modelSettings.count as number) || 3\n // Override the field's maxRows with the requested count\n const modifiedField = {\n ...targetField,\n maxRows: count,\n minRows: count,\n } as typeof targetField\n jsonSchema = fieldToJsonSchema(modifiedField, { nameOverride: fieldName })\n } else {\n jsonSchema = fieldToJsonSchema(targetField, { nameOverride: fieldName })\n }\n }\n }\n } catch (e) {\n req.payload.logger.error(e, '— AI Plugin: Error building field JSON schema')\n }\n\n // Resolve @field:filename references from the prompt\n const { images: resolvedImages, processedPrompt } = await resolveImageReferences(\n prompts.prompt,\n contextData,\n req,\n collectionName,\n )\n\n // Extract hardcoded URLs from the processed prompt\n const hardcodedImages = extractImageData(processedPrompt)\n\n // Combine images\n const allImages = [...hardcodedImages, ...resolvedImages] as FetchableImage[]\n\n let images: ImagePart[] | undefined\n\n if (allImages.length > 0) {\n const imageParts = await fetchImages(req, allImages)\n\n if (imageParts.length > 0) {\n images = imageParts\n }\n }\n\n let promptToUse = processedPrompt\n let systemToUse = prompts.system\n\n // Execute beforeGenerate hooks\n if (targetField && (targetField as any).custom?.ai?.beforeGenerate) {\n const beforeHooks = (targetField as any).custom.ai.beforeGenerate as Array<\n (args: any) => Promise<any>\n >\n for (const hook of beforeHooks) {\n const result = await hook({\n doc: contextData,\n field: targetField,\n headers: req.headers,\n instructions,\n payload: req.payload,\n prompt: promptToUse,\n req,\n system: systemToUse,\n })\n\n if (result) {\n if (result.prompt) {promptToUse = result.prompt}\n if (result.system) {systemToUse = result.system}\n }\n }\n }\n\n const generateParams = {\n images,\n maxTokens: modelSettings.maxTokens as number | undefined,\n model: modelSettings.model as string,\n prompt: promptToUse,\n provider: modelSettings.provider as string,\n providerOptions: modelSettings,\n\n schema: jsonSchema,\n system: systemToUse,\n temperature: modelSettings.temperature as number | undefined,\n }\n\n if (pluginConfig.debugging) {\n req.payload.logger.info(\n sanitizeLog(generateParams),\n '— AI Plugin: Final generation parameters for text/rich-text',\n )\n }\n\n const streamResult = await req.payload.ai.streamObject({\n ...generateParams,\n onFinish: async ({ object }) => {\n if (targetField && (targetField as any).custom?.ai?.afterGenerate) {\n const afterHooks = (targetField as any).custom.ai.afterGenerate as Array<\n (args: any) => Promise<any>\n >\n for (const hook of afterHooks) {\n await hook({\n doc: contextData,\n field: targetField,\n headers: req.headers,\n instructions,\n payload: req.payload,\n req,\n result: object,\n })\n }\n }\n },\n })\n\n return streamResult\n } catch (error) {\n req.payload.logger.error(error, '— AI Plugin: Error generating text content:')\n const message =\n error && typeof error === 'object' && 'message' in error\n ? (error as Error).message\n : String(error)\n return new Response(JSON.stringify({ error: message }), {\n headers: { 'Content-Type': 'application/json' },\n status:\n message.includes('Authentication required') || message.includes('Insufficient permissions')\n ? 401\n : 500,\n })\n }\n}\n"],"names":["checkAccess","filterEditorSchemaByNodes","PLUGIN_INSTRUCTIONS_TABLE","PLUGIN_NAME","registerEditorHelper","resolveEffectiveInstructionSettings","assignPrompt","buildSmartPrompt","isGenericPrompt","fieldToJsonSchema","getFieldBySchemaPath","extractImageData","fetchImages","resolveImageReferences","lexicalToPromptTemplate","sanitizeLog","generateHandler","pluginConfig","req","data","json","allowedEditorNodes","locale","options","action","actionParams","instructionId","contextData","doc","Error","instructions","payload","findByID","id","collection","collections","config","find","slug","defaultLocale","locales","localization","translateFromDefault","schemaPath","String","parts","split","collectionName","originalDoc","e","logger","error","custom","editorConfig","admin","schema","editorSchema","prompt","promptTemplate","documentData","debugging","info","smartPrompt","allowedEditorSchema","length","receivedNodes","remainingDefinitions","Object","keys","definitions","fieldName","localeData","l","code","localeInfo","label","prompts","type","context","field","layout","systemPrompt","system","template","aiSettings","findGlobal","effectiveSettings","modelSettings","settingsName","defaults","jsonSchema","targetField","targetCollection","c","supported","t","includes","count","modifiedField","maxRows","minRows","nameOverride","images","resolvedImages","processedPrompt","hardcodedImages","allImages","imageParts","promptToUse","systemToUse","ai","beforeGenerate","beforeHooks","hook","result","headers","generateParams","maxTokens","model","provider","providerOptions","temperature","streamResult","streamObject","onFinish","object","afterGenerate","afterHooks","message","Response","JSON","stringify","status"],"mappings":"AAKA,SAASA,WAAW,QAAQ,2BAA0B;AACtD,SAASC,yBAAyB,QAAQ,+CAA8C;AACxF,SAASC,yBAAyB,EAAEC,WAAW,QAAQ,iBAAgB;AACvE,SAASC,oBAAoB,QAAQ,qCAAoC;AACzE,SAASC,mCAAmC,QAAQ,yDAAwD;AAC5G,SAASC,YAAY,QAAQ,mCAAkC;AAC/D,SAASC,gBAAgB,EAAEC,eAAe,QAAQ,mCAAkC;AACpF,SAASC,iBAAiB,QAAQ,2CAA0C;AAC5E,SAASC,oBAAoB,QAAQ,8CAA6C;AAClF,SAASC,gBAAgB,QAAQ,0CAAyC;AAC1E,SAA8BC,WAAW,QAAQ,qCAAoC;AACrF,SAASC,sBAAsB,QAAQ,gDAA+C;AACtF,SAASC,uBAAuB,QAAQ,kDAAiD;AACzF,SAASC,WAAW,QAAQ,8BAA6B;AAEzD;;;CAGC,GACD,OAAO,MAAMC,kBAAkB,CAACC,eAA+B,OAAOC;QACpE,IAAI;YACF,+CAA+C;YAC/C,MAAMlB,YAAYkB,KAAKD;YAEvB,MAAME,OAAO,MAAMD,IAAIE,IAAI;YAE3B,MAAM,EAAEC,qBAAqB,EAAE,EAAEC,SAAS,IAAI,EAAEC,OAAO,EAAE,GAAGJ;YAC5D,MAAM,EAAEK,MAAM,EAAEC,YAAY,EAAEC,aAAa,EAAE,GAAGH;YAChD,IAAII,cAAcR,KAAKS,GAAG;YAE1B,IAAI,CAACF,eAAe;gBAClB,MAAM,IAAIG,MACR,CAAC,gCAAgC,EAAE1B,YAAY,wDAAwD,CAAC;YAE5G;YAEA,qDAAqD;YACrD,MAAM2B,eAAe,MAAMZ,IAAIa,OAAO,CAACC,QAAQ,CAAC;gBAC9CC,IAAIP;gBACJQ,YAAYhC;gBACZgB;YACF;YAEA,MAAM,EAAEiB,WAAW,EAAE,GAAGjB,IAAIa,OAAO,CAACK,MAAM;YAC1C,MAAMF,aAAaC,YAAYE,IAAI,CACjC,CAACH,aAAeA,WAAWI,IAAI,KAAKpC;YAGtC,IAAI,CAACgC,YAAY;gBACf,MAAM,IAAIL,MAAM;YAClB;YAEA,MAAM,EAAEU,aAAa,EAAEC,UAAU,EAAE,EAAE,GAAGtB,IAAIa,OAAO,CAACK,MAAM,CAACK,YAAY,IAAI,CAAC;YAE5E,4EAA4E;YAC5E,IAAIjB,WAAW,eAAeC,cAAciB,wBAAwBf,aAAaM,IAAI;gBACnF,IAAI;oBACF,MAAMU,aAAaC,OAAOd,YAAY,CAAC,cAAc;oBACrD,MAAMe,QAAQ,AAACF,CAAAA,cAAc,EAAC,EAAGG,KAAK,CAAC,QAAQ,EAAE;oBACjD,MAAMC,iBAAiBF,KAAK,CAAC,EAAE;oBAE/B,IAAIE,kBAAkBR,eAAe;wBACnC,MAAMS,cAAc,MAAM9B,IAAIa,OAAO,CAACC,QAAQ,CAAC;4BAC7CC,IAAIN,YAAYM,EAAE;4BAClBC,YAAYa;4BACZzB,QAAQiB;4BACRrB;wBACF;wBACA,IAAI8B,aAAa;4BACfrB,cAAc;gCAAE,GAAGA,WAAW;gCAAE,GAAGqB,WAAW;4BAAC;wBACjD;oBACF;gBACF,EAAE,OAAOC,GAAG;oBACV/B,IAAIa,OAAO,CAACmB,MAAM,CAACC,KAAK,CACtBF,GACA;gBAEJ;YACF;YAEA,MAAM,EAAEG,QAAQ,EAAE,CAACjD,YAAY,EAAE,EAAEkD,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAGnB,WAAWoB,KAAK;YACvF,MAAM,EAAEC,QAAQC,eAAe,CAAC,CAAC,EAAE,GAAGH;YACtC,IAAI,EAAEI,QAAQC,iBAAiB,EAAE,EAAE,GAAG5B;YAEtC,oDAAoD;YACpD,IAAI4B,kBAAkB,OAAOA,mBAAmB,UAAU;gBACxDA,iBAAiB5C,wBAAwB4C;YAC3C;YAEA,sFAAsF;YACtF,IAAIlD,gBAAgBkD,iBAAiB;gBACnC,MAAMf,aAAaC,OAAOd,YAAY,CAAC,cAAc;gBACrD4B,iBAAiBnD,iBAAiB;oBAChCoD,cAAchC;oBACdI,SAASb,IAAIa,OAAO;oBACpBY;gBACF;gBAEA,IAAI1B,aAAa2C,SAAS,EAAE;oBAC1B1C,IAAIa,OAAO,CAACmB,MAAM,CAACW,IAAI,CACrB9C,YAAY;wBAAE+C,aAAaJ;oBAAe,IAC1C,CAAC,6CAA6C,EAAEf,WAAW,CAAC;gBAEhE;YACF;YAEA,IAAIoB,sBAAsBP;YAC1B,IAAInC,mBAAmB2C,MAAM,EAAE;gBAC7BD,sBAAsB9D,0BAA0BuD,cAAcnC;gBAC9D,kEAAkE;gBAClE,IAAIJ,aAAa2C,SAAS,EAAE;oBAC1B1C,IAAIa,OAAO,CAACmB,MAAM,CAACW,IAAI,CACrB9C,YAAY;wBACVkD,eAAe5C;wBACf6C,sBAAsBC,OAAOC,IAAI,CAACL,oBAAoBM,WAAW,IAAI,CAAC;oBACxE,IACA;gBAEJ;YACF;YAEA,MAAM1B,aAAaC,OAAOd,YAAY,CAAC,cAAc;YACrD,MAAMe,QAAQ,AAACF,CAAAA,cAAc,EAAC,EAAGG,KAAK,CAAC,QAAQ,EAAE;YACjD,MAAMC,iBAAiBF,KAAK,CAAC,EAAE;YAC/B,MAAMyB,YAAYzB,MAAMmB,MAAM,GAAG,IAAInB,KAAK,CAACA,MAAMmB,MAAM,GAAG,EAAE,GAAG;YAE/D5D,qBAAqBc,IAAIa,OAAO,EAAEY;YAElC,MAAM4B,aAAa/B,QAAQH,IAAI,CAAC,CAACmC;gBAC/B,OAAOA,EAAEC,IAAI,KAAKnD;YACpB;YAEA,IAAIoD,aAAapD;YACjB,IACEiD,cACAhC,iBACAgC,WAAWI,KAAK,IAChB,OAAOJ,WAAWI,KAAK,KAAK,YAC5BpC,iBAAiBgC,WAAWI,KAAK,EACjC;gBACAD,aAAaH,WAAWI,KAAK,CAACpC,cAAc;YAC9C;YAEA,MAAMqC,UAAU,MAAMtE,aAAakB,QAAQ;gBACzCqD,MAAMjC,OAAOd,YAAY,CAAC,aAAa;gBACvCL;gBACAS,YAAYa;gBACZ+B,SAASnD;gBACToD,OAAOT,aAAa;gBACpBU,QAAQlD,aAAakD,MAAM;gBAC3B1D,QAAQoD;gBACRzD;gBACAgE,cAAcnD,aAAaoD,MAAM;gBACjCC,UAAUvC,OAAOc;YACnB;YAEA,IAAIzC,aAAa2C,SAAS,EAAE;gBAC1B1C,IAAIa,OAAO,CAACmB,MAAM,CAACW,IAAI,CAAC9C,YAAY;oBAAE6D;gBAAQ,IAAI,CAAC,sCAAsC,EAAEjC,WAAW,CAAC;YACzG;YAEA,MAAMyC,aAAa,MAAMlE,IAAIa,OAAO,CAACsD,UAAU,CAAC;gBAC9C/C,MAAM;YACR;YACA,MAAM,EAAEgD,mBAAmBC,aAAa,EAAEC,YAAY,EAAE,GAAGnF,oCAAoC;gBAC7FoF,UAAUL,YAAYK;gBACtB3D,cAAcA;YAChB;YAEA,IAAI,CAAC0D,cAAc;gBACjB,MAAM,IAAI3D,MAAM,CAAC,sBAAsB,EAAEC,YAAY,CAAC,WAAW,CAAC,CAAC;YACrE;YAEA,wEAAwE;YACxE,IAAI4D,aAAa3B;YACjB,IAAI4B;YAEJ,IAAI;gBACF,MAAMC,mBAAmB1E,IAAIa,OAAO,CAACK,MAAM,CAACD,WAAW,CAACE,IAAI,CAAC,CAACwD,IAAMA,EAAEvD,IAAI,KAAKS;gBAC/E,IAAI6C,oBAAoBtB,WAAW;oBACjCqB,cAAcjF,qBAAqBkF,kBAAkBjD;oBACrD,MAAMmD,YAAY;wBAChB;wBACA;wBACA;wBACA;wBACA;wBACA;wBACA;wBACA;wBACA;qBACD;oBACD,MAAMC,IAAInD,OAAO+C,aAAad,QAAQ;oBACtC,IAAIc,eAAeG,UAAUE,QAAQ,CAACD,IAAI;wBACxC,+DAA+D;wBAC/D,IAAIA,MAAM,SAAS;4BACjB,MAAME,QAAQ,AAACV,cAAcU,KAAK,IAAe;4BACjD,wDAAwD;4BACxD,MAAMC,gBAAgB;gCACpB,GAAGP,WAAW;gCACdQ,SAASF;gCACTG,SAASH;4BACX;4BACAP,aAAajF,kBAAkByF,eAAe;gCAAEG,cAAc/B;4BAAU;wBAC1E,OAAO;4BACLoB,aAAajF,kBAAkBkF,aAAa;gCAAEU,cAAc/B;4BAAU;wBACxE;oBACF;gBACF;YACF,EAAE,OAAOrB,GAAG;gBACV/B,IAAIa,OAAO,CAACmB,MAAM,CAACC,KAAK,CAACF,GAAG;YAC9B;YAEA,qDAAqD;YACrD,MAAM,EAAEqD,QAAQC,cAAc,EAAEC,eAAe,EAAE,GAAG,MAAM3F,uBACxD+D,QAAQnB,MAAM,EACd9B,aACAT,KACA6B;YAGF,mDAAmD;YACnD,MAAM0D,kBAAkB9F,iBAAiB6F;YAEzC,iBAAiB;YACjB,MAAME,YAAY;mBAAID;mBAAoBF;aAAe;YAEzD,IAAID;YAEJ,IAAII,UAAU1C,MAAM,GAAG,GAAG;gBACxB,MAAM2C,aAAa,MAAM/F,YAAYM,KAAKwF;gBAE1C,IAAIC,WAAW3C,MAAM,GAAG,GAAG;oBACzBsC,SAASK;gBACX;YACF;YAEA,IAAIC,cAAcJ;YAClB,IAAIK,cAAcjC,QAAQM,MAAM;YAEhC,+BAA+B;YAC/B,IAAIS,eAAe,AAACA,YAAoBvC,MAAM,EAAE0D,IAAIC,gBAAgB;gBAClE,MAAMC,cAAc,AAACrB,YAAoBvC,MAAM,CAAC0D,EAAE,CAACC,cAAc;gBAGjE,KAAK,MAAME,QAAQD,YAAa;oBAC9B,MAAME,SAAS,MAAMD,KAAK;wBACxBrF,KAAKD;wBACLoD,OAAOY;wBACPwB,SAASjG,IAAIiG,OAAO;wBACpBrF;wBACAC,SAASb,IAAIa,OAAO;wBACpB0B,QAAQmD;wBACR1F;wBACAgE,QAAQ2B;oBACV;oBAEA,IAAIK,QAAQ;wBACV,IAAIA,OAAOzD,MAAM,EAAE;4BAACmD,cAAcM,OAAOzD,MAAM;wBAAA;wBAC/C,IAAIyD,OAAOhC,MAAM,EAAE;4BAAC2B,cAAcK,OAAOhC,MAAM;wBAAA;oBACjD;gBACF;YACF;YAEA,MAAMkC,iBAAiB;gBACrBd;gBACAe,WAAW9B,cAAc8B,SAAS;gBAClCC,OAAO/B,cAAc+B,KAAK;gBAC1B7D,QAAQmD;gBACRW,UAAUhC,cAAcgC,QAAQ;gBAChCC,iBAAiBjC;gBAEjBhC,QAAQmC;gBACRR,QAAQ2B;gBACRY,aAAalC,cAAckC,WAAW;YACxC;YAEA,IAAIxG,aAAa2C,SAAS,EAAE;gBAC1B1C,IAAIa,OAAO,CAACmB,MAAM,CAACW,IAAI,CACrB9C,YAAYqG,iBACZ;YAEJ;YAEA,MAAMM,eAAe,MAAMxG,IAAIa,OAAO,CAAC+E,EAAE,CAACa,YAAY,CAAC;gBACrD,GAAGP,cAAc;gBACjBQ,UAAU,OAAO,EAAEC,MAAM,EAAE;oBACzB,IAAIlC,eAAe,AAACA,YAAoBvC,MAAM,EAAE0D,IAAIgB,eAAe;wBACjE,MAAMC,aAAa,AAACpC,YAAoBvC,MAAM,CAAC0D,EAAE,CAACgB,aAAa;wBAG/D,KAAK,MAAMb,QAAQc,WAAY;4BAC7B,MAAMd,KAAK;gCACTrF,KAAKD;gCACLoD,OAAOY;gCACPwB,SAASjG,IAAIiG,OAAO;gCACpBrF;gCACAC,SAASb,IAAIa,OAAO;gCACpBb;gCACAgG,QAAQW;4BACV;wBACF;oBACF;gBACF;YACF;YAEA,OAAOH;QACT,EAAE,OAAOvE,OAAO;YACdjC,IAAIa,OAAO,CAACmB,MAAM,CAACC,KAAK,CAACA,OAAO;YAChC,MAAM6E,UACJ7E,SAAS,OAAOA,UAAU,YAAY,aAAaA,QAC/C,AAACA,MAAgB6E,OAAO,GACxBpF,OAAOO;YACb,OAAO,IAAI8E,SAASC,KAAKC,SAAS,CAAC;gBAAEhF,OAAO6E;YAAQ,IAAI;gBACtDb,SAAS;oBAAE,gBAAgB;gBAAmB;gBAC9CiB,QACEJ,QAAQhC,QAAQ,CAAC,8BAA8BgC,QAAQhC,QAAQ,CAAC,8BAC5D,MACA;YACR;QACF;IACF,EAAC"}
|