@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
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
import { lexicalEditor } from '@payloadcms/richtext-lexical';
|
|
1
2
|
import { PLUGIN_INSTRUCTIONS_TABLE } from '../defaults.js';
|
|
3
|
+
import { PromptMentionsFeature } from '../fields/PromptEditorField/feature.server.js';
|
|
4
|
+
import { applyInstructionDefaultsForDisplay } from '../utilities/ai/resolveEffectiveInstructionSettings.js';
|
|
5
|
+
import { pluginCollectionAccess, pluginCollectionAdmin } from './shared.js';
|
|
2
6
|
// Defined capabilities replacing src/ai/models/
|
|
3
7
|
// Defined capabilities replacing src/ai/models/
|
|
4
8
|
const CAPABILITIES = [
|
|
@@ -39,36 +43,6 @@ const CAPABILITIES = [
|
|
|
39
43
|
]
|
|
40
44
|
}
|
|
41
45
|
];
|
|
42
|
-
const defaultAccessConfig = {
|
|
43
|
-
create: ({ req })=>{
|
|
44
|
-
if (!req.user) {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
return true;
|
|
48
|
-
},
|
|
49
|
-
delete: ({ req })=>{
|
|
50
|
-
if (!req.user) {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
return true;
|
|
54
|
-
},
|
|
55
|
-
read: ({ req })=>{
|
|
56
|
-
if (!req.user) {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
return true;
|
|
60
|
-
},
|
|
61
|
-
update: ({ req })=>{
|
|
62
|
-
if (!req.user) {
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
return true;
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
const defaultAdminConfig = {
|
|
69
|
-
group: 'Plugins',
|
|
70
|
-
hidden: true
|
|
71
|
-
};
|
|
72
46
|
const providerSelect = {
|
|
73
47
|
name: 'provider',
|
|
74
48
|
type: 'text',
|
|
@@ -89,17 +63,6 @@ const modelSelect = {
|
|
|
89
63
|
},
|
|
90
64
|
label: 'Model'
|
|
91
65
|
};
|
|
92
|
-
const providerOptionsJson = {
|
|
93
|
-
name: 'providerOptions',
|
|
94
|
-
type: 'json',
|
|
95
|
-
admin: {
|
|
96
|
-
components: {
|
|
97
|
-
Field: '@ai-stack/payloadcms/client#ProviderOptionsEditor'
|
|
98
|
-
},
|
|
99
|
-
description: 'Provider-specific options. Defaults are inherited from AI Settings.'
|
|
100
|
-
},
|
|
101
|
-
label: 'Provider Options'
|
|
102
|
-
};
|
|
103
66
|
const commonTextParams = [
|
|
104
67
|
{
|
|
105
68
|
type: 'row',
|
|
@@ -128,6 +91,16 @@ const commonTextParams = [
|
|
|
128
91
|
label: 'Extract Attachments'
|
|
129
92
|
}
|
|
130
93
|
];
|
|
94
|
+
const providerOptionsUIField = {
|
|
95
|
+
name: 'providerOptions',
|
|
96
|
+
type: 'json',
|
|
97
|
+
admin: {
|
|
98
|
+
components: {
|
|
99
|
+
Field: '@ai-stack/payloadcms/client#InstructionProviderOptions'
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
label: 'Provider Options'
|
|
103
|
+
};
|
|
131
104
|
export const instructionsCollection = (pluginConfig)=>({
|
|
132
105
|
labels: {
|
|
133
106
|
plural: 'Compose Settings',
|
|
@@ -136,15 +109,16 @@ export const instructionsCollection = (pluginConfig)=>({
|
|
|
136
109
|
...pluginConfig.overrideInstructions,
|
|
137
110
|
slug: PLUGIN_INSTRUCTIONS_TABLE,
|
|
138
111
|
access: {
|
|
139
|
-
...
|
|
112
|
+
...pluginCollectionAccess,
|
|
140
113
|
...pluginConfig.overrideInstructions?.access
|
|
141
114
|
},
|
|
142
115
|
admin: {
|
|
143
|
-
|
|
116
|
+
description: 'Customize how AI interacts with specific fields within your enabled collections.',
|
|
117
|
+
...pluginCollectionAdmin,
|
|
144
118
|
...pluginConfig.overrideInstructions?.admin,
|
|
145
119
|
components: {
|
|
146
120
|
beforeList: [
|
|
147
|
-
'@ai-stack/payloadcms/client#
|
|
121
|
+
'@ai-stack/payloadcms/client#ConfigDashboard'
|
|
148
122
|
]
|
|
149
123
|
}
|
|
150
124
|
},
|
|
@@ -153,7 +127,8 @@ export const instructionsCollection = (pluginConfig)=>({
|
|
|
153
127
|
name: 'schema-path',
|
|
154
128
|
type: 'text',
|
|
155
129
|
admin: {
|
|
156
|
-
description: "Please don't change this unless you're sure of what you're doing"
|
|
130
|
+
description: "Please don't change this unless you're sure of what you're doing",
|
|
131
|
+
hidden: !pluginConfig.debugging
|
|
157
132
|
},
|
|
158
133
|
unique: true
|
|
159
134
|
},
|
|
@@ -161,7 +136,8 @@ export const instructionsCollection = (pluginConfig)=>({
|
|
|
161
136
|
name: 'field-type',
|
|
162
137
|
type: 'select',
|
|
163
138
|
admin: {
|
|
164
|
-
description: "Please don't change this unless you're sure of what you're doing"
|
|
139
|
+
description: "Please don't change this unless you're sure of what you're doing",
|
|
140
|
+
hidden: !pluginConfig.debugging
|
|
165
141
|
},
|
|
166
142
|
defaultValue: 'text',
|
|
167
143
|
label: 'Field type',
|
|
@@ -194,10 +170,19 @@ export const instructionsCollection = (pluginConfig)=>({
|
|
|
194
170
|
admin: {
|
|
195
171
|
condition: (_, current)=>{
|
|
196
172
|
return current['field-type'] === 'upload';
|
|
197
|
-
}
|
|
173
|
+
},
|
|
174
|
+
hidden: !pluginConfig.debugging
|
|
198
175
|
},
|
|
199
176
|
label: 'Relation to'
|
|
200
177
|
},
|
|
178
|
+
{
|
|
179
|
+
name: 'hasMany',
|
|
180
|
+
type: 'checkbox',
|
|
181
|
+
admin: {
|
|
182
|
+
hidden: true
|
|
183
|
+
},
|
|
184
|
+
defaultValue: false
|
|
185
|
+
},
|
|
201
186
|
{
|
|
202
187
|
name: 'model-id',
|
|
203
188
|
type: 'select',
|
|
@@ -231,6 +216,26 @@ export const instructionsCollection = (pluginConfig)=>({
|
|
|
231
216
|
defaultValue: false,
|
|
232
217
|
label: 'Hide Compose button for this field'
|
|
233
218
|
},
|
|
219
|
+
{
|
|
220
|
+
name: 'alwaysShow',
|
|
221
|
+
type: 'checkbox',
|
|
222
|
+
admin: {
|
|
223
|
+
condition: (_, current)=>!current.disabled,
|
|
224
|
+
description: 'Compose button will always be visible without requiring field focus'
|
|
225
|
+
},
|
|
226
|
+
defaultValue: false,
|
|
227
|
+
label: 'Always show Compose button'
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
name: 'appendGenerated',
|
|
231
|
+
type: 'checkbox',
|
|
232
|
+
admin: {
|
|
233
|
+
condition: (_, current)=>current?.hasMany === true && current?.disabled !== true,
|
|
234
|
+
description: 'If enabled, generated values are appended to current values instead of replacing them.'
|
|
235
|
+
},
|
|
236
|
+
defaultValue: false,
|
|
237
|
+
label: 'Append generated values'
|
|
238
|
+
},
|
|
234
239
|
{
|
|
235
240
|
id: 'ai-prompts-tabs',
|
|
236
241
|
type: 'tabs',
|
|
@@ -240,13 +245,15 @@ export const instructionsCollection = (pluginConfig)=>({
|
|
|
240
245
|
fields: [
|
|
241
246
|
{
|
|
242
247
|
name: 'prompt',
|
|
243
|
-
type: '
|
|
248
|
+
type: 'richText',
|
|
244
249
|
admin: {
|
|
245
|
-
components: {
|
|
246
|
-
Field: '@ai-stack/payloadcms/fields#PromptEditorField'
|
|
247
|
-
},
|
|
248
250
|
description: "Click 'Compose' to run this custom prompt and generate content"
|
|
249
251
|
},
|
|
252
|
+
editor: lexicalEditor({
|
|
253
|
+
features: ({ rootFeatures: _rootFeatures })=>[
|
|
254
|
+
PromptMentionsFeature()
|
|
255
|
+
]
|
|
256
|
+
}),
|
|
250
257
|
label: ''
|
|
251
258
|
}
|
|
252
259
|
],
|
|
@@ -343,7 +350,7 @@ informative and accurate but also captivating and beautifully structured.`,
|
|
|
343
350
|
providerSelect,
|
|
344
351
|
modelSelect,
|
|
345
352
|
...commonTextParams,
|
|
346
|
-
|
|
353
|
+
providerOptionsUIField
|
|
347
354
|
],
|
|
348
355
|
label: 'Text Settings'
|
|
349
356
|
},
|
|
@@ -359,7 +366,7 @@ informative and accurate but also captivating and beautifully structured.`,
|
|
|
359
366
|
providerSelect,
|
|
360
367
|
modelSelect,
|
|
361
368
|
...commonTextParams,
|
|
362
|
-
|
|
369
|
+
providerOptionsUIField
|
|
363
370
|
],
|
|
364
371
|
label: 'Rich Text Settings'
|
|
365
372
|
},
|
|
@@ -374,7 +381,7 @@ informative and accurate but also captivating and beautifully structured.`,
|
|
|
374
381
|
fields: [
|
|
375
382
|
providerSelect,
|
|
376
383
|
modelSelect,
|
|
377
|
-
|
|
384
|
+
providerOptionsUIField
|
|
378
385
|
],
|
|
379
386
|
label: 'Image Settings'
|
|
380
387
|
},
|
|
@@ -399,7 +406,7 @@ informative and accurate but also captivating and beautifully structured.`,
|
|
|
399
406
|
},
|
|
400
407
|
label: 'Voice'
|
|
401
408
|
},
|
|
402
|
-
|
|
409
|
+
providerOptionsUIField
|
|
403
410
|
],
|
|
404
411
|
label: 'TTS Settings'
|
|
405
412
|
},
|
|
@@ -425,11 +432,40 @@ informative and accurate but also captivating and beautifully structured.`,
|
|
|
425
432
|
max: 20,
|
|
426
433
|
min: 1
|
|
427
434
|
},
|
|
428
|
-
|
|
435
|
+
providerOptionsUIField
|
|
429
436
|
],
|
|
430
437
|
label: 'Array Settings'
|
|
431
438
|
}
|
|
432
|
-
]
|
|
439
|
+
],
|
|
440
|
+
hooks: {
|
|
441
|
+
...pluginConfig.overrideInstructions?.hooks,
|
|
442
|
+
afterRead: [
|
|
443
|
+
...pluginConfig.overrideInstructions?.hooks?.afterRead || [],
|
|
444
|
+
async ({ context, doc, req })=>{
|
|
445
|
+
if (!doc || typeof doc !== 'object') {
|
|
446
|
+
return doc;
|
|
447
|
+
}
|
|
448
|
+
const cacheKey = '__aiProvidersDefaults';
|
|
449
|
+
const hookContext = context || {};
|
|
450
|
+
let defaults = hookContext[cacheKey];
|
|
451
|
+
if (!defaults) {
|
|
452
|
+
try {
|
|
453
|
+
const aiSettings = await req.payload.findGlobal({
|
|
454
|
+
slug: 'ai-providers'
|
|
455
|
+
});
|
|
456
|
+
defaults = aiSettings?.defaults || {};
|
|
457
|
+
hookContext[cacheKey] = defaults;
|
|
458
|
+
} catch (_error) {
|
|
459
|
+
return doc;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
return applyInstructionDefaultsForDisplay({
|
|
463
|
+
defaults,
|
|
464
|
+
instructions: doc
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
]
|
|
468
|
+
}
|
|
433
469
|
});
|
|
434
470
|
|
|
435
471
|
//# sourceMappingURL=Instructions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/collections/Instructions.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\nimport type { PluginConfig } from 'src/types.js'\n\nimport { PLUGIN_INSTRUCTIONS_TABLE } from '../defaults.js'\n\n// Defined capabilities replacing src/ai/models/\nconst CAPABILITIES = [\n {\n id: 'text',\n name: 'Text Generation',\n fields: ['text', 'textarea'],\n },\n {\n id: 'richtext',\n name: 'Rich Text Generation',\n fields: ['richText'],\n },\n {\n id: 'image',\n name: 'Image Generation',\n fields: ['upload'],\n },\n {\n id: 'tts',\n name: 'Text to Speech',\n fields: ['upload'],\n },\n {\n id: 'array',\n name: 'Array Generation',\n fields: ['array'],\n },\n]\n\nconst defaultAccessConfig = {\n create: ({ req }: { req: { user?: any } }) => {\n if (!req.user) {\n return false\n }\n return true\n },\n delete: ({ req }: { req: { user?: any } }) => {\n if (!req.user) {\n return false\n }\n return true\n },\n read: ({ req }: { req: { user?: any } }) => {\n if (!req.user) {\n return false\n }\n return true\n },\n update: ({ req }: { req: { user?: any } }) => {\n if (!req.user) {\n return false\n }\n return true\n },\n}\n\nconst defaultAdminConfig = {\n group: 'Plugins',\n hidden: true,\n}\n\nconst providerSelect = {\n name: 'provider',\n type: 'text' as const,\n admin: {\n components: {\n Field: '@ai-stack/payloadcms/client#DynamicProviderSelect',\n },\n },\n label: 'Provider',\n}\n\nconst modelSelect = {\n name: 'model',\n type: 'text' as const,\n admin: {\n components: {\n Field: '@ai-stack/payloadcms/client#DynamicModelSelect',\n },\n },\n label: 'Model',\n}\n\nconst providerOptionsJson = {\n name: 'providerOptions',\n type: 'json' as const,\n admin: {\n components: {\n Field: '@ai-stack/payloadcms/client#ProviderOptionsEditor',\n },\n description: 'Provider-specific options. Defaults are inherited from AI Settings.',\n },\n label: 'Provider Options',\n}\n\nconst commonTextParams = [\n {\n type: 'row' as const,\n fields: [\n {\n name: 'maxTokens',\n type: 'number' as const,\n admin: {\n placeholder: 'Model Default',\n },\n label: 'Max Tokens',\n },\n {\n name: 'temperature',\n type: 'number' as const,\n defaultValue: 0.7,\n label: 'Temperature',\n max: 1,\n min: 0,\n },\n ],\n },\n {\n name: 'extractAttachments',\n type: 'checkbox' as const,\n label: 'Extract Attachments',\n },\n]\n\nexport const instructionsCollection = (pluginConfig: PluginConfig) =>\n <CollectionConfig>{\n labels: {\n plural: 'Compose Settings',\n singular: 'Compose Setting',\n },\n ...pluginConfig.overrideInstructions,\n slug: PLUGIN_INSTRUCTIONS_TABLE,\n access: {\n ...defaultAccessConfig,\n ...pluginConfig.overrideInstructions?.access,\n },\n admin: {\n ...defaultAdminConfig,\n ...pluginConfig.overrideInstructions?.admin,\n components: {\n beforeList: ['@ai-stack/payloadcms/client#AIConfigDashboard'],\n },\n },\n fields: [\n {\n name: 'schema-path',\n type: 'text',\n admin: {\n description: \"Please don't change this unless you're sure of what you're doing\",\n },\n unique: true,\n },\n {\n name: 'field-type',\n type: 'select',\n admin: {\n description: \"Please don't change this unless you're sure of what you're doing\",\n },\n defaultValue: 'text',\n label: 'Field type',\n options: [\n {\n label: 'text',\n value: 'text',\n },\n {\n label: 'textarea',\n value: 'textarea',\n },\n {\n label: 'upload',\n value: 'upload',\n },\n {\n label: 'richText',\n value: 'richText',\n },\n {\n label: 'array',\n value: 'array',\n },\n ],\n },\n {\n name: 'relation-to',\n type: 'text',\n admin: {\n condition: (_, current) => {\n return current['field-type'] === 'upload'\n },\n },\n label: 'Relation to',\n },\n {\n name: 'model-id',\n type: 'select',\n admin: {\n components: {\n Field: {\n clientProps: {\n filterByField: 'field-type',\n options: CAPABILITIES.map((c) => ({\n fields: c.fields,\n label: c.name,\n value: c.id,\n })),\n },\n path: '@ai-stack/payloadcms/fields#SelectField',\n },\n },\n },\n label: 'Capability',\n options: CAPABILITIES.map((c) => ({\n label: c.name,\n value: c.id,\n })),\n },\n {\n name: 'disabled',\n type: 'checkbox',\n admin: {\n description: 'Please reload your collection after applying the changes',\n },\n defaultValue: false,\n label: 'Hide Compose button for this field',\n },\n {\n id: 'ai-prompts-tabs',\n type: 'tabs',\n tabs: [\n {\n description:\n 'Define dynamic templates using {{ fieldName }}. Type { to see available field suggestions.',\n fields: [\n {\n name: 'prompt',\n type: 'textarea',\n admin: {\n components: {\n Field: '@ai-stack/payloadcms/fields#PromptEditorField',\n },\n description: \"Click 'Compose' to run this custom prompt and generate content\",\n },\n label: '',\n },\n ],\n label: 'Prompt',\n },\n {\n admin: {\n condition: (_, current) => {\n return current['field-type'] === 'upload' && current['model-id'] === 'image'\n },\n },\n description:\n 'These images will be used to generate new visuals in a similar style, layout, or content.',\n fields: [\n {\n name: 'images',\n type: 'array',\n fields: [\n {\n name: 'image',\n type: 'upload',\n admin: {\n description: 'Please make sure the image is publicly accessible.',\n },\n relationTo: pluginConfig.uploadCollectionSlug\n ? pluginConfig.uploadCollectionSlug\n : 'media',\n },\n ],\n },\n ],\n label: 'Sample Images',\n },\n {\n admin: {\n condition: (_, current) => {\n return current['field-type'] === 'richText'\n },\n },\n description: '',\n fields: [\n {\n name: 'system',\n type: 'textarea',\n defaultValue: `INSTRUCTIONS:\nYou are a highly skilled and professional blog writer,\nrenowned for crafting engaging and well-organized articles.\nWhen given a title, you meticulously create blogs that are not only\ninformative and accurate but also captivating and beautifully structured.`,\n label: '',\n },\n ],\n label: 'System prompt',\n },\n {\n admin: {\n condition: (_, current) => {\n return current['field-type'] === 'richText'\n },\n },\n description: '',\n fields: [\n {\n name: 'layout',\n type: 'textarea',\n admin: {\n condition: (_, current) => {\n return current['field-type'] === 'richText'\n },\n },\n defaultValue: `[paragraph] - Write a concise introduction (2-3 sentences) that outlines the main topic.\n[horizontalrule] - Insert a horizontal rule to separate the introduction from the main content.\n[list] - Create a list with 3-5 items. Each list item should contain:\n a. [heading] - A brief, descriptive heading (up to 5 words)\n b. [paragraph] - A short explanation or elaboration (1-2 sentences)\n[horizontalrule] - Insert another horizontal rule to separate the main content from the conclusion.\n[paragraph] - Compose a brief conclusion (2-3 sentences) summarizing the key points.\n[quote] - Include a relevant quote from a famous person, directly related to the topic. Format: \"Quote text.\" - Author Name`,\n label: '',\n },\n ],\n label: 'Layout',\n },\n ],\n },\n \n // Inline Settings Groups by Capability\n \n // Text Settings\n {\n name: 'text-settings',\n type: 'group',\n admin: {\n condition: (data) => data['model-id'] === 'text',\n },\n fields: [\n providerSelect,\n modelSelect,\n ...commonTextParams,\n providerOptionsJson,\n ],\n label: 'Text Settings',\n },\n \n // Rich Text Settings\n {\n name: 'richtext-settings',\n type: 'group',\n admin: {\n condition: (data) => data['model-id'] === 'richtext',\n },\n fields: [\n providerSelect,\n modelSelect,\n ...commonTextParams,\n providerOptionsJson,\n ],\n label: 'Rich Text Settings',\n },\n \n // Image Settings\n {\n name: 'image-settings',\n type: 'group',\n admin: {\n condition: (data) => data['model-id'] === 'image',\n },\n fields: [\n providerSelect,\n modelSelect,\n providerOptionsJson,\n ],\n label: 'Image Settings',\n },\n \n // TTS Settings\n {\n name: 'tts-settings',\n type: 'group',\n admin: {\n condition: (data) => data['model-id'] === 'tts',\n },\n fields: [\n providerSelect,\n modelSelect,\n {\n name: 'voice',\n type: 'text',\n admin: {\n components: {\n Field: '@ai-stack/payloadcms/client#DynamicVoiceSelect',\n },\n },\n label: 'Voice',\n },\n providerOptionsJson,\n ],\n label: 'TTS Settings',\n },\n \n // Array Settings\n {\n name: 'array-settings',\n type: 'group',\n admin: {\n condition: (data) => data['model-id'] === 'array',\n },\n fields: [\n providerSelect,\n modelSelect,\n {\n name: 'count',\n type: 'number',\n admin: {\n description: 'Number of items to generate',\n },\n defaultValue: 3,\n label: 'Items to Generate',\n max: 20,\n min: 1,\n },\n providerOptionsJson,\n ],\n label: 'Array Settings',\n },\n ],\n }\n"],"names":["PLUGIN_INSTRUCTIONS_TABLE","CAPABILITIES","id","name","fields","defaultAccessConfig","create","req","user","delete","read","update","defaultAdminConfig","group","hidden","providerSelect","type","admin","components","Field","label","modelSelect","providerOptionsJson","description","commonTextParams","placeholder","defaultValue","max","min","instructionsCollection","pluginConfig","labels","plural","singular","overrideInstructions","slug","access","beforeList","unique","options","value","condition","_","current","clientProps","filterByField","map","c","path","tabs","relationTo","uploadCollectionSlug","data"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/collections/Instructions.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\nimport type { PluginConfig } from 'src/types.js'\n\nimport { lexicalEditor } from '@payloadcms/richtext-lexical'\n\nimport { PLUGIN_INSTRUCTIONS_TABLE } from '../defaults.js'\nimport { PromptMentionsFeature } from '../fields/PromptEditorField/feature.server.js'\nimport { applyInstructionDefaultsForDisplay } from '../utilities/ai/resolveEffectiveInstructionSettings.js'\nimport { pluginCollectionAccess, pluginCollectionAdmin } from './shared.js'\n\n// Defined capabilities replacing src/ai/models/\nconst CAPABILITIES = [\n {\n id: 'text',\n name: 'Text Generation',\n fields: ['text', 'textarea'],\n },\n {\n id: 'richtext',\n name: 'Rich Text Generation',\n fields: ['richText'],\n },\n {\n id: 'image',\n name: 'Image Generation',\n fields: ['upload'],\n },\n {\n id: 'tts',\n name: 'Text to Speech',\n fields: ['upload'],\n },\n {\n id: 'array',\n name: 'Array Generation',\n fields: ['array'],\n },\n]\n\n\nconst providerSelect = {\n name: 'provider',\n type: 'text' as const,\n admin: {\n components: {\n Field: '@ai-stack/payloadcms/client#DynamicProviderSelect',\n },\n },\n label: 'Provider',\n}\n\nconst modelSelect = {\n name: 'model',\n type: 'text' as const,\n admin: {\n components: {\n Field: '@ai-stack/payloadcms/client#DynamicModelSelect',\n },\n },\n label: 'Model',\n}\n\n\nconst commonTextParams = [\n {\n type: 'row' as const,\n fields: [\n {\n name: 'maxTokens',\n type: 'number' as const,\n admin: {\n placeholder: 'Model Default',\n },\n label: 'Max Tokens',\n },\n {\n name: 'temperature',\n type: 'number' as const,\n defaultValue: 0.7,\n label: 'Temperature',\n max: 1,\n min: 0,\n },\n ],\n },\n {\n name: 'extractAttachments',\n type: 'checkbox' as const,\n label: 'Extract Attachments',\n },\n]\n\nconst providerOptionsUIField = {\n name: 'providerOptions',\n type: 'json' as const,\n admin: {\n components: {\n Field: '@ai-stack/payloadcms/client#InstructionProviderOptions',\n },\n },\n label: 'Provider Options',\n}\n\nexport const instructionsCollection = (pluginConfig: PluginConfig) =>\n <CollectionConfig>{\n labels: {\n plural: 'Compose Settings',\n singular: 'Compose Setting',\n },\n ...pluginConfig.overrideInstructions,\n slug: PLUGIN_INSTRUCTIONS_TABLE,\n access: {\n ...pluginCollectionAccess,\n ...pluginConfig.overrideInstructions?.access,\n },\n admin: {\n description:\n 'Customize how AI interacts with specific fields within your enabled collections.',\n ...pluginCollectionAdmin,\n ...pluginConfig.overrideInstructions?.admin,\n components: {\n beforeList: ['@ai-stack/payloadcms/client#ConfigDashboard'],\n },\n },\n fields: [\n {\n name: 'schema-path',\n type: 'text',\n admin: {\n description: \"Please don't change this unless you're sure of what you're doing\",\n hidden: !pluginConfig.debugging,\n },\n unique: true,\n },\n {\n name: 'field-type',\n type: 'select',\n admin: {\n description: \"Please don't change this unless you're sure of what you're doing\",\n hidden: !pluginConfig.debugging,\n },\n defaultValue: 'text',\n label: 'Field type',\n options: [\n {\n label: 'text',\n value: 'text',\n },\n {\n label: 'textarea',\n value: 'textarea',\n },\n {\n label: 'upload',\n value: 'upload',\n },\n {\n label: 'richText',\n value: 'richText',\n },\n {\n label: 'array',\n value: 'array',\n },\n ],\n },\n {\n name: 'relation-to',\n type: 'text',\n admin: {\n condition: (_, current) => {\n return current['field-type'] === 'upload'\n },\n hidden: !pluginConfig.debugging,\n },\n label: 'Relation to',\n },\n {\n name: 'hasMany',\n type: 'checkbox',\n admin: {\n hidden: true,\n },\n defaultValue: false,\n },\n {\n name: 'model-id',\n type: 'select',\n admin: {\n components: {\n Field: {\n clientProps: {\n filterByField: 'field-type',\n options: CAPABILITIES.map((c) => ({\n fields: c.fields,\n label: c.name,\n value: c.id,\n })),\n },\n path: '@ai-stack/payloadcms/fields#SelectField',\n },\n },\n },\n label: 'Capability',\n options: CAPABILITIES.map((c) => ({\n label: c.name,\n value: c.id,\n })),\n },\n {\n name: 'disabled',\n type: 'checkbox',\n admin: {\n description: 'Please reload your collection after applying the changes',\n },\n defaultValue: false,\n label: 'Hide Compose button for this field',\n },\n {\n name: 'alwaysShow',\n type: 'checkbox',\n admin: {\n condition: (_, current) => !current.disabled,\n description: 'Compose button will always be visible without requiring field focus',\n },\n defaultValue: false,\n label: 'Always show Compose button',\n },\n {\n name: 'appendGenerated',\n type: 'checkbox',\n admin: {\n condition: (_, current) => current?.hasMany === true && current?.disabled !== true,\n description: 'If enabled, generated values are appended to current values instead of replacing them.',\n },\n defaultValue: false,\n label: 'Append generated values',\n },\n {\n id: 'ai-prompts-tabs',\n type: 'tabs',\n tabs: [\n {\n description:\n 'Define dynamic templates using {{ fieldName }}. Type { to see available field suggestions.',\n fields: [\n { // TODO: update below to use PromptField\n name: 'prompt',\n type: 'richText',\n admin: {\n description: \"Click 'Compose' to run this custom prompt and generate content\",\n },\n editor: lexicalEditor({\n features: ({ rootFeatures: _rootFeatures }) => [PromptMentionsFeature()],\n }),\n label: '',\n },\n ],\n label: 'Prompt',\n },\n {\n admin: {\n condition: (_, current) => {\n return current['field-type'] === 'upload' && current['model-id'] === 'image'\n },\n },\n description:\n 'These images will be used to generate new visuals in a similar style, layout, or content.',\n fields: [\n {\n name: 'images',\n type: 'array',\n fields: [\n {\n name: 'image',\n type: 'upload',\n admin: {\n description: 'Please make sure the image is publicly accessible.',\n },\n relationTo: pluginConfig.uploadCollectionSlug\n ? pluginConfig.uploadCollectionSlug\n : 'media',\n },\n ],\n },\n ],\n label: 'Sample Images',\n },\n {\n admin: {\n condition: (_, current) => {\n return current['field-type'] === 'richText'\n },\n },\n description: '',\n fields: [\n {\n name: 'system',\n type: 'textarea',\n defaultValue: `INSTRUCTIONS:\nYou are a highly skilled and professional blog writer,\nrenowned for crafting engaging and well-organized articles.\nWhen given a title, you meticulously create blogs that are not only\ninformative and accurate but also captivating and beautifully structured.`,\n label: '',\n },\n ],\n label: 'System prompt',\n },\n {\n admin: {\n condition: (_, current) => {\n return current['field-type'] === 'richText'\n },\n },\n description: '',\n fields: [\n {\n name: 'layout',\n type: 'textarea',\n admin: {\n condition: (_, current) => {\n return current['field-type'] === 'richText'\n },\n },\n defaultValue: `[paragraph] - Write a concise introduction (2-3 sentences) that outlines the main topic.\n[horizontalrule] - Insert a horizontal rule to separate the introduction from the main content.\n[list] - Create a list with 3-5 items. Each list item should contain:\n a. [heading] - A brief, descriptive heading (up to 5 words)\n b. [paragraph] - A short explanation or elaboration (1-2 sentences)\n[horizontalrule] - Insert another horizontal rule to separate the main content from the conclusion.\n[paragraph] - Compose a brief conclusion (2-3 sentences) summarizing the key points.\n[quote] - Include a relevant quote from a famous person, directly related to the topic. Format: \"Quote text.\" - Author Name`,\n label: '',\n },\n ],\n label: 'Layout',\n },\n ],\n },\n\n // Inline Settings Groups by Capability\n\n // Text Settings\n {\n name: 'text-settings',\n type: 'group',\n admin: {\n condition: (data) => data['model-id'] === 'text',\n },\n fields: [\n providerSelect,\n modelSelect,\n ...commonTextParams,\n providerOptionsUIField,\n ],\n label: 'Text Settings',\n },\n\n // Rich Text Settings\n {\n name: 'richtext-settings',\n type: 'group',\n admin: {\n condition: (data) => data['model-id'] === 'richtext',\n },\n fields: [\n providerSelect,\n modelSelect,\n ...commonTextParams,\n providerOptionsUIField,\n ],\n label: 'Rich Text Settings',\n },\n\n // Image Settings\n {\n name: 'image-settings',\n type: 'group',\n admin: {\n condition: (data) => data['model-id'] === 'image',\n },\n fields: [providerSelect, modelSelect, providerOptionsUIField],\n label: 'Image Settings',\n },\n\n // TTS Settings\n {\n name: 'tts-settings',\n type: 'group',\n admin: {\n condition: (data) => data['model-id'] === 'tts',\n },\n fields: [\n providerSelect,\n modelSelect,\n {\n name: 'voice',\n type: 'text',\n admin: {\n components: {\n Field: '@ai-stack/payloadcms/client#DynamicVoiceSelect',\n },\n },\n label: 'Voice',\n },\n providerOptionsUIField,\n ],\n label: 'TTS Settings',\n },\n\n // Array Settings\n {\n name: 'array-settings',\n type: 'group',\n admin: {\n condition: (data) => data['model-id'] === 'array',\n },\n fields: [\n providerSelect,\n modelSelect,\n {\n name: 'count',\n type: 'number',\n admin: {\n description: 'Number of items to generate',\n },\n defaultValue: 3,\n label: 'Items to Generate',\n max: 20,\n min: 1,\n },\n providerOptionsUIField,\n ],\n label: 'Array Settings',\n },\n ],\n hooks: {\n ...pluginConfig.overrideInstructions?.hooks,\n afterRead: [\n ...(pluginConfig.overrideInstructions?.hooks?.afterRead || []),\n async ({ context, doc, req }) => {\n if (!doc || typeof doc !== 'object') {\n return doc\n }\n\n const cacheKey = '__aiProvidersDefaults'\n const hookContext = (context || {}) as Record<string, unknown>\n let defaults = hookContext[cacheKey] as Record<string, unknown> | undefined\n\n if (!defaults) {\n try {\n const aiSettings = await req.payload.findGlobal({\n slug: 'ai-providers',\n })\n defaults = (aiSettings?.defaults || {}) as Record<string, unknown>\n hookContext[cacheKey] = defaults\n } catch (_error) {\n return doc\n }\n }\n\n return applyInstructionDefaultsForDisplay({\n defaults,\n instructions: doc as Record<string, unknown>,\n })\n },\n ],\n },\n }\n"],"names":["lexicalEditor","PLUGIN_INSTRUCTIONS_TABLE","PromptMentionsFeature","applyInstructionDefaultsForDisplay","pluginCollectionAccess","pluginCollectionAdmin","CAPABILITIES","id","name","fields","providerSelect","type","admin","components","Field","label","modelSelect","commonTextParams","placeholder","defaultValue","max","min","providerOptionsUIField","instructionsCollection","pluginConfig","labels","plural","singular","overrideInstructions","slug","access","description","beforeList","hidden","debugging","unique","options","value","condition","_","current","clientProps","filterByField","map","c","path","disabled","hasMany","tabs","editor","features","rootFeatures","_rootFeatures","relationTo","uploadCollectionSlug","data","hooks","afterRead","context","doc","req","cacheKey","hookContext","defaults","aiSettings","payload","findGlobal","_error","instructions"],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared collection defaults for plugin-internal collections.
|
|
3
|
+
* Used by AIJobs and Instructions to avoid duplicating access/admin config.
|
|
4
|
+
*/
|
|
5
|
+
export declare const pluginCollectionAccess: {
|
|
6
|
+
create: ({ req }: {
|
|
7
|
+
req: {
|
|
8
|
+
user?: unknown;
|
|
9
|
+
};
|
|
10
|
+
}) => boolean;
|
|
11
|
+
delete: ({ req }: {
|
|
12
|
+
req: {
|
|
13
|
+
user?: unknown;
|
|
14
|
+
};
|
|
15
|
+
}) => boolean;
|
|
16
|
+
read: ({ req }: {
|
|
17
|
+
req: {
|
|
18
|
+
user?: unknown;
|
|
19
|
+
};
|
|
20
|
+
}) => boolean;
|
|
21
|
+
update: ({ req }: {
|
|
22
|
+
req: {
|
|
23
|
+
user?: unknown;
|
|
24
|
+
};
|
|
25
|
+
}) => boolean;
|
|
26
|
+
};
|
|
27
|
+
export declare const pluginCollectionAdmin: {
|
|
28
|
+
group: string;
|
|
29
|
+
hidden: boolean;
|
|
30
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared collection defaults for plugin-internal collections.
|
|
3
|
+
* Used by AIJobs and Instructions to avoid duplicating access/admin config.
|
|
4
|
+
*/ export const pluginCollectionAccess = {
|
|
5
|
+
create: ({ req })=>!!req.user,
|
|
6
|
+
delete: ({ req })=>!!req.user,
|
|
7
|
+
read: ({ req })=>!!req.user,
|
|
8
|
+
update: ({ req })=>!!req.user
|
|
9
|
+
};
|
|
10
|
+
export const pluginCollectionAdmin = {
|
|
11
|
+
group: 'Plugins',
|
|
12
|
+
hidden: true
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/collections/shared.ts"],"sourcesContent":["/**\n * Shared collection defaults for plugin-internal collections.\n * Used by AIJobs and Instructions to avoid duplicating access/admin config.\n */\nexport const pluginCollectionAccess = {\n create: ({ req }: { req: { user?: unknown } }) => !!req.user,\n delete: ({ req }: { req: { user?: unknown } }) => !!req.user,\n read: ({ req }: { req: { user?: unknown } }) => !!req.user,\n update: ({ req }: { req: { user?: unknown } }) => !!req.user,\n}\n\nexport const pluginCollectionAdmin = {\n group: 'Plugins',\n hidden: true,\n}\n"],"names":["pluginCollectionAccess","create","req","user","delete","read","update","pluginCollectionAdmin","group","hidden"],"mappings":"AAAA;;;CAGC,GACD,OAAO,MAAMA,yBAAyB;IACpCC,QAAQ,CAAC,EAAEC,GAAG,EAA+B,GAAK,CAAC,CAACA,IAAIC,IAAI;IAC5DC,QAAQ,CAAC,EAAEF,GAAG,EAA+B,GAAK,CAAC,CAACA,IAAIC,IAAI;IAC5DE,MAAM,CAAC,EAAEH,GAAG,EAA+B,GAAK,CAAC,CAACA,IAAIC,IAAI;IAC1DG,QAAQ,CAAC,EAAEJ,GAAG,EAA+B,GAAK,CAAC,CAACA,IAAIC,IAAI;AAC9D,EAAC;AAED,OAAO,MAAMI,wBAAwB;IACnCC,OAAO;IACPC,QAAQ;AACV,EAAC"}
|
package/dist/defaults.js
CHANGED
package/dist/defaults.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.ts"],"sourcesContent":["export const PLUGIN_NAME = 'plugin-ai'\nexport const PLUGIN_INSTRUCTIONS_TABLE = `${PLUGIN_NAME}-instructions`\nexport const PLUGIN_AI_JOBS_TABLE = `${PLUGIN_NAME}-ai-jobs`\nexport const PLUGIN_LEXICAL_EDITOR_FEATURE = `${PLUGIN_NAME}-actions-feature`\n\n// Endpoint defaults\nexport const PLUGIN_API_ENDPOINT_BASE = `/${PLUGIN_NAME}`\nexport const PLUGIN_API_ENDPOINT_GENERATE = `${PLUGIN_API_ENDPOINT_BASE}/generate`\nexport const PLUGIN_API_ENDPOINT_GENERATE_UPLOAD = `${PLUGIN_API_ENDPOINT_GENERATE}/upload`\nexport const PLUGIN_FETCH_FIELDS_ENDPOINT = `${PLUGIN_API_ENDPOINT_BASE}/fetch-fields`\nexport const PLUGIN_API_ENDPOINT_VIDEOGEN_WEBHOOK = `${PLUGIN_API_ENDPOINT_BASE}/videogen/webhook`\nexport const PLUGIN_API_ENDPOINT_FETCH_VOICES = `${PLUGIN_API_ENDPOINT_BASE}/elevenlabs/fetch-voices`\n\n// LLM Settings\nexport const PLUGIN_DEFAULT_OPENAI_MODEL = `gpt-4o-mini`\nexport const PLUGIN_DEFAULT_ANTHROPIC_MODEL = `claude-3-5-sonnet-latest`\n\nexport const excludeCollections = [\n 'payload-preferences',\n 'payload-migrations',\n 'payload-locked-documents',\n 'ai-
|
|
1
|
+
{"version":3,"sources":["../src/defaults.ts"],"sourcesContent":["export const PLUGIN_NAME = 'plugin-ai'\nexport const PLUGIN_INSTRUCTIONS_TABLE = `${PLUGIN_NAME}-instructions`\nexport const PLUGIN_AI_JOBS_TABLE = `${PLUGIN_NAME}-ai-jobs`\nexport const PLUGIN_LEXICAL_EDITOR_FEATURE = `${PLUGIN_NAME}-actions-feature`\n\n// Endpoint defaults\nexport const PLUGIN_API_ENDPOINT_BASE = `/${PLUGIN_NAME}`\nexport const PLUGIN_API_ENDPOINT_GENERATE = `${PLUGIN_API_ENDPOINT_BASE}/generate`\nexport const PLUGIN_API_ENDPOINT_GENERATE_UPLOAD = `${PLUGIN_API_ENDPOINT_GENERATE}/upload`\nexport const PLUGIN_FETCH_FIELDS_ENDPOINT = `${PLUGIN_API_ENDPOINT_BASE}/fetch-fields`\nexport const PLUGIN_API_ENDPOINT_VIDEOGEN_WEBHOOK = `${PLUGIN_API_ENDPOINT_BASE}/videogen/webhook`\nexport const PLUGIN_API_ENDPOINT_FETCH_VOICES = `${PLUGIN_API_ENDPOINT_BASE}/elevenlabs/fetch-voices`\n\n// LLM Settings\nexport const PLUGIN_DEFAULT_OPENAI_MODEL = `gpt-4o-mini`\nexport const PLUGIN_DEFAULT_ANTHROPIC_MODEL = `claude-3-5-sonnet-latest`\n\nexport const excludeCollections = [\n 'payload-preferences',\n 'payload-migrations',\n 'payload-locked-documents',\n 'ai-providers',\n PLUGIN_INSTRUCTIONS_TABLE,\n PLUGIN_AI_JOBS_TABLE,\n]\n"],"names":["PLUGIN_NAME","PLUGIN_INSTRUCTIONS_TABLE","PLUGIN_AI_JOBS_TABLE","PLUGIN_LEXICAL_EDITOR_FEATURE","PLUGIN_API_ENDPOINT_BASE","PLUGIN_API_ENDPOINT_GENERATE","PLUGIN_API_ENDPOINT_GENERATE_UPLOAD","PLUGIN_FETCH_FIELDS_ENDPOINT","PLUGIN_API_ENDPOINT_VIDEOGEN_WEBHOOK","PLUGIN_API_ENDPOINT_FETCH_VOICES","PLUGIN_DEFAULT_OPENAI_MODEL","PLUGIN_DEFAULT_ANTHROPIC_MODEL","excludeCollections"],"mappings":"AAAA,OAAO,MAAMA,cAAc,YAAW;AACtC,OAAO,MAAMC,4BAA4B,CAAC,EAAED,YAAY,aAAa,CAAC,CAAA;AACtE,OAAO,MAAME,uBAAuB,CAAC,EAAEF,YAAY,QAAQ,CAAC,CAAA;AAC5D,OAAO,MAAMG,gCAAgC,CAAC,EAAEH,YAAY,gBAAgB,CAAC,CAAA;AAE7E,oBAAoB;AACpB,OAAO,MAAMI,2BAA2B,CAAC,CAAC,EAAEJ,YAAY,CAAC,CAAA;AACzD,OAAO,MAAMK,+BAA+B,CAAC,EAAED,yBAAyB,SAAS,CAAC,CAAA;AAClF,OAAO,MAAME,sCAAsC,CAAC,EAAED,6BAA6B,OAAO,CAAC,CAAA;AAC3F,OAAO,MAAME,+BAA+B,CAAC,EAAEH,yBAAyB,aAAa,CAAC,CAAA;AACtF,OAAO,MAAMI,uCAAuC,CAAC,EAAEJ,yBAAyB,iBAAiB,CAAC,CAAA;AAClG,OAAO,MAAMK,mCAAmC,CAAC,EAAEL,yBAAyB,wBAAwB,CAAC,CAAA;AAErG,eAAe;AACf,OAAO,MAAMM,8BAA8B,CAAC,WAAW,CAAC,CAAA;AACxD,OAAO,MAAMC,iCAAiC,CAAC,wBAAwB,CAAC,CAAA;AAExE,OAAO,MAAMC,qBAAqB;IAChC;IACA;IACA;IACA;IACAX;IACAC;CACD,CAAA"}
|
|
@@ -12,30 +12,33 @@ export const fetchFields = (config)=>{
|
|
|
12
12
|
let enabledCollections = [];
|
|
13
13
|
try {
|
|
14
14
|
const { enabledCollections: storedEnabledCollections } = await req.payload.findGlobal({
|
|
15
|
-
slug: 'ai-
|
|
15
|
+
slug: 'ai-providers'
|
|
16
16
|
});
|
|
17
17
|
enabledCollections = storedEnabledCollections || [];
|
|
18
|
-
} catch (
|
|
19
|
-
req.payload.logger.error('Failed to fetch AI settings');
|
|
18
|
+
} catch (_e) {
|
|
19
|
+
req.payload.logger.error('— AI Plugin: Failed to fetch AI settings');
|
|
20
20
|
}
|
|
21
21
|
if (access?.settings) {
|
|
22
22
|
try {
|
|
23
23
|
isConfigAllowed = await access.settings({
|
|
24
24
|
req
|
|
25
25
|
});
|
|
26
|
-
} catch (
|
|
27
|
-
req.payload.logger.error(req, 'Please check your "access.settings" for request');
|
|
26
|
+
} catch (_e) {
|
|
27
|
+
req.payload.logger.error(req, '— AI Plugin: Please check your "access.settings" for request');
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
const fieldMap = {};
|
|
31
31
|
docs.forEach((doc)=>{
|
|
32
32
|
fieldMap[doc['schema-path']] = {
|
|
33
33
|
id: doc.id,
|
|
34
|
+
alwaysShow: !!doc['alwaysShow'],
|
|
35
|
+
appendGenerated: !!doc['appendGenerated'],
|
|
34
36
|
disabled: !!doc['disabled'],
|
|
35
|
-
fieldType: doc['field-type']
|
|
37
|
+
fieldType: doc['field-type'],
|
|
38
|
+
hasMany: !!doc['hasMany']
|
|
36
39
|
};
|
|
37
40
|
});
|
|
38
|
-
return Response.
|
|
41
|
+
return new Response(JSON.stringify({
|
|
39
42
|
...options,
|
|
40
43
|
debugging: config.debugging,
|
|
41
44
|
enabledCollections,
|
|
@@ -44,6 +47,11 @@ export const fetchFields = (config)=>{
|
|
|
44
47
|
promptFields: promptFields.map(({ getter: _getter, ...field })=>{
|
|
45
48
|
return field;
|
|
46
49
|
})
|
|
50
|
+
}), {
|
|
51
|
+
headers: {
|
|
52
|
+
'Cache-Control': 'private, max-age=60',
|
|
53
|
+
'Content-Type': 'application/json'
|
|
54
|
+
}
|
|
47
55
|
});
|
|
48
56
|
},
|
|
49
57
|
method: 'get',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/endpoints/fetchFields.ts"],"sourcesContent":["import type { Endpoint, PayloadRequest } from 'payload'\n\nimport type { PluginConfig, SerializedPromptField } from '../types.js'\n\nimport { PLUGIN_FETCH_FIELDS_ENDPOINT, PLUGIN_INSTRUCTIONS_TABLE } from '../defaults.js'\n\nexport const fetchFields: (config: PluginConfig) => Endpoint = (config) => {\n const { access, options = {}, promptFields = [] } = config\n return {\n handler: async (req: PayloadRequest) => {\n const { docs = [] } = await req.payload.find({\n collection: PLUGIN_INSTRUCTIONS_TABLE,\n pagination: false,\n })\n\n let isConfigAllowed = true // Users allowed to update prompts by default\n let enabledCollections: string[] = []\n\n try {\n const { enabledCollections: storedEnabledCollections } = await req.payload.findGlobal({\n slug: 'ai-
|
|
1
|
+
{"version":3,"sources":["../../src/endpoints/fetchFields.ts"],"sourcesContent":["import type { Endpoint, PayloadRequest } from 'payload'\n\nimport type { PluginConfig, SerializedPromptField } from '../types.js'\n\nimport { PLUGIN_FETCH_FIELDS_ENDPOINT, PLUGIN_INSTRUCTIONS_TABLE } from '../defaults.js'\n\nexport const fetchFields: (config: PluginConfig) => Endpoint = (config) => {\n const { access, options = {}, promptFields = [] } = config\n return {\n handler: async (req: PayloadRequest) => {\n const { docs = [] } = await req.payload.find({\n collection: PLUGIN_INSTRUCTIONS_TABLE,\n pagination: false,\n })\n\n let isConfigAllowed = true // Users allowed to update prompts by default\n let enabledCollections: string[] = []\n\n try {\n const { enabledCollections: storedEnabledCollections } = await req.payload.findGlobal({\n slug: 'ai-providers',\n })\n enabledCollections = (storedEnabledCollections as string[]) || []\n } catch (_e) {\n req.payload.logger.error('— AI Plugin: Failed to fetch AI settings')\n }\n\n if (access?.settings) {\n try {\n isConfigAllowed = await access.settings({ req })\n } catch (_e) {\n req.payload.logger.error(req, '— AI Plugin: Please check your \"access.settings\" for request')\n }\n }\n\n const fieldMap: Record<\n string,\n {\n alwaysShow?: boolean\n appendGenerated?: boolean\n disabled?: boolean\n fieldType: string\n hasMany?: boolean\n id: number | string\n }\n > = {}\n docs.forEach((doc) => {\n fieldMap[doc['schema-path']] = {\n id: doc.id,\n alwaysShow: !!(doc as Record<string, unknown>)['alwaysShow'],\n appendGenerated: !!(doc as Record<string, unknown>)['appendGenerated'],\n disabled: !!doc['disabled'],\n fieldType: doc['field-type'],\n hasMany: !!(doc as Record<string, unknown>)['hasMany'],\n }\n })\n\n return new Response(\n JSON.stringify({\n ...options,\n debugging: config.debugging,\n enabledCollections,\n fields: fieldMap,\n isConfigAllowed,\n promptFields: promptFields.map(({ getter: _getter, ...field }): SerializedPromptField => {\n return field\n }),\n }),\n {\n headers: {\n 'Cache-Control': 'private, max-age=60',\n 'Content-Type': 'application/json',\n },\n },\n )\n },\n method: 'get',\n path: PLUGIN_FETCH_FIELDS_ENDPOINT,\n }\n}\n"],"names":["PLUGIN_FETCH_FIELDS_ENDPOINT","PLUGIN_INSTRUCTIONS_TABLE","fetchFields","config","access","options","promptFields","handler","req","docs","payload","find","collection","pagination","isConfigAllowed","enabledCollections","storedEnabledCollections","findGlobal","slug","_e","logger","error","settings","fieldMap","forEach","doc","id","alwaysShow","appendGenerated","disabled","fieldType","hasMany","Response","JSON","stringify","debugging","fields","map","getter","_getter","field","headers","method","path"],"mappings":"AAIA,SAASA,4BAA4B,EAAEC,yBAAyB,QAAQ,iBAAgB;AAExF,OAAO,MAAMC,cAAkD,CAACC;IAC9D,MAAM,EAAEC,MAAM,EAAEC,UAAU,CAAC,CAAC,EAAEC,eAAe,EAAE,EAAE,GAAGH;IACpD,OAAO;QACLI,SAAS,OAAOC;YACd,MAAM,EAAEC,OAAO,EAAE,EAAE,GAAG,MAAMD,IAAIE,OAAO,CAACC,IAAI,CAAC;gBAC3CC,YAAYX;gBACZY,YAAY;YACd;YAEA,IAAIC,kBAAkB,KAAK,6CAA6C;;YACxE,IAAIC,qBAA+B,EAAE;YAErC,IAAI;gBACF,MAAM,EAAEA,oBAAoBC,wBAAwB,EAAE,GAAG,MAAMR,IAAIE,OAAO,CAACO,UAAU,CAAC;oBACpFC,MAAM;gBACR;gBACAH,qBAAqB,AAACC,4BAAyC,EAAE;YACnE,EAAE,OAAOG,IAAI;gBACXX,IAAIE,OAAO,CAACU,MAAM,CAACC,KAAK,CAAC;YAC3B;YAEA,IAAIjB,QAAQkB,UAAU;gBACpB,IAAI;oBACFR,kBAAkB,MAAMV,OAAOkB,QAAQ,CAAC;wBAAEd;oBAAI;gBAChD,EAAE,OAAOW,IAAI;oBACXX,IAAIE,OAAO,CAACU,MAAM,CAACC,KAAK,CAACb,KAAK;gBAChC;YACF;YAEA,MAAMe,WAUF,CAAC;YACLd,KAAKe,OAAO,CAAC,CAACC;gBACZF,QAAQ,CAACE,GAAG,CAAC,cAAc,CAAC,GAAG;oBAC7BC,IAAID,IAAIC,EAAE;oBACVC,YAAY,CAAC,CAAC,AAACF,GAA+B,CAAC,aAAa;oBAC5DG,iBAAiB,CAAC,CAAC,AAACH,GAA+B,CAAC,kBAAkB;oBACtEI,UAAU,CAAC,CAACJ,GAAG,CAAC,WAAW;oBAC3BK,WAAWL,GAAG,CAAC,aAAa;oBAC5BM,SAAS,CAAC,CAAC,AAACN,GAA+B,CAAC,UAAU;gBACxD;YACF;YAEA,OAAO,IAAIO,SACTC,KAAKC,SAAS,CAAC;gBACb,GAAG7B,OAAO;gBACV8B,WAAWhC,OAAOgC,SAAS;gBAC3BpB;gBACAqB,QAAQb;gBACRT;gBACAR,cAAcA,aAAa+B,GAAG,CAAC,CAAC,EAAEC,QAAQC,OAAO,EAAE,GAAGC,OAAO;oBAC3D,OAAOA;gBACT;YACF,IACA;gBACEC,SAAS;oBACP,iBAAiB;oBACjB,gBAAgB;gBAClB;YACF;QAEJ;QACAC,QAAQ;QACRC,MAAM3C;IACR;AACF,EAAC"}
|
|
@@ -12,7 +12,7 @@ export const fetchVoices = {
|
|
|
12
12
|
}
|
|
13
13
|
// Fetch AI Settings global to get the encrypted API key
|
|
14
14
|
const aiSettings = await req.payload.findGlobal({
|
|
15
|
-
slug: 'ai-
|
|
15
|
+
slug: 'ai-providers',
|
|
16
16
|
context: {
|
|
17
17
|
unsafe: true
|
|
18
18
|
}
|
|
@@ -81,7 +81,7 @@ export const fetchVoices = {
|
|
|
81
81
|
throw error;
|
|
82
82
|
}
|
|
83
83
|
} catch (error) {
|
|
84
|
-
req.payload.logger.error(error, 'Error fetching ElevenLabs voices');
|
|
84
|
+
req.payload.logger.error(error, '— AI Plugin: Error fetching ElevenLabs voices');
|
|
85
85
|
return Response.json({
|
|
86
86
|
message: error instanceof Error ? error.message : 'Internal server error'
|
|
87
87
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/endpoints/fetchVoices.ts"],"sourcesContent":["import type { Endpoint, PayloadRequest } from 'payload'\n\nimport { PLUGIN_API_ENDPOINT_FETCH_VOICES } from '../defaults.js'\n\ninterface ElevenLabsVoice {\n category?: string\n labels?: Record<string, string>\n name: string\n preview_url?: string\n voice_id: string\n}\n\nexport const fetchVoices: Endpoint = {\n handler: async (req: PayloadRequest) => {\n try {\n // Check authentication\n if (!req.user) {\n return Response.json({ message: 'Authentication required' }, { status: 401 })\n }\n\n // Fetch AI Settings global to get the encrypted API key\n const aiSettings = await req.payload.findGlobal({\n slug: 'ai-
|
|
1
|
+
{"version":3,"sources":["../../src/endpoints/fetchVoices.ts"],"sourcesContent":["import type { Endpoint, PayloadRequest } from 'payload'\n\nimport { PLUGIN_API_ENDPOINT_FETCH_VOICES } from '../defaults.js'\n\ninterface ElevenLabsVoice {\n category?: string\n labels?: Record<string, string>\n name: string\n preview_url?: string\n voice_id: string\n}\n\nexport const fetchVoices: Endpoint = {\n handler: async (req: PayloadRequest) => {\n try {\n // Check authentication\n if (!req.user) {\n return Response.json({ message: 'Authentication required' }, { status: 401 })\n }\n\n // Fetch AI Settings global to get the encrypted API key\n const aiSettings = await req.payload.findGlobal({\n slug: 'ai-providers',\n context: { unsafe: true },\n })\n\n // Find the ElevenLabs provider block\n const elevenlabsProvider = aiSettings?.providers?.find(\n (provider: any) => provider.blockType === 'elevenlabs' && provider.enabled,\n )\n\n if (!elevenlabsProvider) {\n return Response.json(\n { message: 'ElevenLabs provider not found or not enabled in AI Settings' },\n { status: 400 },\n )\n }\n\n // Get the API key (already decrypted by afterRead hook due to unsafe context)\n const apiKey = elevenlabsProvider.apiKey\n\n if (!apiKey) {\n return Response.json(\n {\n message: 'API key not found. Please configure your ElevenLabs API key in AI Settings.',\n },\n { status: 400 },\n )\n }\n\n // Call ElevenLabs API to fetch voices with timeout\n const controller = new AbortController()\n const timeoutId = setTimeout(() => controller.abort(), 15000) // 15s timeout\n\n try {\n const response = await fetch('https://api.elevenlabs.io/v1/voices', {\n headers: {\n 'xi-api-key': apiKey,\n },\n signal: controller.signal,\n })\n\n clearTimeout(timeoutId)\n\n if (!response.ok) {\n const errorText = await response.text()\n return Response.json(\n { message: `ElevenLabs API error: ${errorText}` },\n { status: response.status },\n )\n }\n\n const data = await response.json()\n\n // Transform voices to match our schema\n const voices = (data.voices || []).map((voice: ElevenLabsVoice) => ({\n id: voice.voice_id,\n name: voice.name,\n category: voice.category || 'premade',\n enabled: true,\n labels: voice.labels || {},\n preview_url: voice.preview_url || '',\n }))\n\n return Response.json({\n success: true,\n voices,\n })\n } catch (error: unknown) {\n clearTimeout(timeoutId)\n if (error instanceof Error && error.name === 'AbortError') {\n return Response.json({ message: 'ElevenLabs API request timed out' }, { status: 504 })\n }\n throw error\n }\n } catch (error) {\n req.payload.logger.error(error, '— AI Plugin: Error fetching ElevenLabs voices')\n return Response.json(\n { message: error instanceof Error ? error.message : 'Internal server error' },\n { status: 500 },\n )\n }\n },\n method: 'post',\n path: PLUGIN_API_ENDPOINT_FETCH_VOICES,\n}\n"],"names":["PLUGIN_API_ENDPOINT_FETCH_VOICES","fetchVoices","handler","req","user","Response","json","message","status","aiSettings","payload","findGlobal","slug","context","unsafe","elevenlabsProvider","providers","find","provider","blockType","enabled","apiKey","controller","AbortController","timeoutId","setTimeout","abort","response","fetch","headers","signal","clearTimeout","ok","errorText","text","data","voices","map","voice","id","voice_id","name","category","labels","preview_url","success","error","Error","logger","method","path"],"mappings":"AAEA,SAASA,gCAAgC,QAAQ,iBAAgB;AAUjE,OAAO,MAAMC,cAAwB;IACnCC,SAAS,OAAOC;QACd,IAAI;YACF,uBAAuB;YACvB,IAAI,CAACA,IAAIC,IAAI,EAAE;gBACb,OAAOC,SAASC,IAAI,CAAC;oBAAEC,SAAS;gBAA0B,GAAG;oBAAEC,QAAQ;gBAAI;YAC7E;YAEA,wDAAwD;YACxD,MAAMC,aAAa,MAAMN,IAAIO,OAAO,CAACC,UAAU,CAAC;gBAC9CC,MAAM;gBACNC,SAAS;oBAAEC,QAAQ;gBAAK;YAC1B;YAEA,qCAAqC;YACrC,MAAMC,qBAAqBN,YAAYO,WAAWC,KAChD,CAACC,WAAkBA,SAASC,SAAS,KAAK,gBAAgBD,SAASE,OAAO;YAG5E,IAAI,CAACL,oBAAoB;gBACvB,OAAOV,SAASC,IAAI,CAClB;oBAAEC,SAAS;gBAA8D,GACzE;oBAAEC,QAAQ;gBAAI;YAElB;YAEA,8EAA8E;YAC9E,MAAMa,SAASN,mBAAmBM,MAAM;YAExC,IAAI,CAACA,QAAQ;gBACX,OAAOhB,SAASC,IAAI,CAClB;oBACEC,SAAS;gBACX,GACA;oBAAEC,QAAQ;gBAAI;YAElB;YAEA,mDAAmD;YACnD,MAAMc,aAAa,IAAIC;YACvB,MAAMC,YAAYC,WAAW,IAAMH,WAAWI,KAAK,IAAI,OAAO,cAAc;;YAE5E,IAAI;gBACF,MAAMC,WAAW,MAAMC,MAAM,uCAAuC;oBAClEC,SAAS;wBACP,cAAcR;oBAChB;oBACAS,QAAQR,WAAWQ,MAAM;gBAC3B;gBAEAC,aAAaP;gBAEb,IAAI,CAACG,SAASK,EAAE,EAAE;oBAChB,MAAMC,YAAY,MAAMN,SAASO,IAAI;oBACrC,OAAO7B,SAASC,IAAI,CAClB;wBAAEC,SAAS,CAAC,sBAAsB,EAAE0B,UAAU,CAAC;oBAAC,GAChD;wBAAEzB,QAAQmB,SAASnB,MAAM;oBAAC;gBAE9B;gBAEA,MAAM2B,OAAO,MAAMR,SAASrB,IAAI;gBAEhC,uCAAuC;gBACvC,MAAM8B,SAAS,AAACD,CAAAA,KAAKC,MAAM,IAAI,EAAE,AAAD,EAAGC,GAAG,CAAC,CAACC,QAA4B,CAAA;wBAClEC,IAAID,MAAME,QAAQ;wBAClBC,MAAMH,MAAMG,IAAI;wBAChBC,UAAUJ,MAAMI,QAAQ,IAAI;wBAC5BtB,SAAS;wBACTuB,QAAQL,MAAMK,MAAM,IAAI,CAAC;wBACzBC,aAAaN,MAAMM,WAAW,IAAI;oBACpC,CAAA;gBAEA,OAAOvC,SAASC,IAAI,CAAC;oBACnBuC,SAAS;oBACTT;gBACF;YACF,EAAE,OAAOU,OAAgB;gBACvBf,aAAaP;gBACb,IAAIsB,iBAAiBC,SAASD,MAAML,IAAI,KAAK,cAAc;oBACzD,OAAOpC,SAASC,IAAI,CAAC;wBAAEC,SAAS;oBAAmC,GAAG;wBAAEC,QAAQ;oBAAI;gBACtF;gBACA,MAAMsC;YACR;QACF,EAAE,OAAOA,OAAO;YACd3C,IAAIO,OAAO,CAACsC,MAAM,CAACF,KAAK,CAACA,OAAO;YAChC,OAAOzC,SAASC,IAAI,CAClB;gBAAEC,SAASuC,iBAAiBC,QAAQD,MAAMvC,OAAO,GAAG;YAAwB,GAC5E;gBAAEC,QAAQ;YAAI;QAElB;IACF;IACAyC,QAAQ;IACRC,MAAMlD;AACR,EAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PayloadRequest } from 'payload';
|
|
2
|
+
import type { PluginConfig } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Text/rich-text generation endpoint handler.
|
|
5
|
+
* Uses payload.ai.streamObject for structured text generation.
|
|
6
|
+
*/
|
|
7
|
+
export declare const generateHandler: (pluginConfig: PluginConfig) => (req: PayloadRequest) => Promise<Response>;
|