@ai-stack/payloadcms 3.76.0-beta.1 → 3.76.0-beta.3
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 +7 -24
- package/dist/ai/core/media/image/handlers/multimodal.js.map +1 -1
- package/dist/ai/core/media/image/handlers/standard.js +7 -2
- package/dist/ai/core/media/image/handlers/standard.js.map +1 -1
- package/dist/ai/core/media/speech/generateSpeech.js +2 -3
- package/dist/ai/core/media/speech/generateSpeech.js.map +1 -1
- package/dist/ai/core/media/types.d.ts +2 -3
- 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 +2 -44
- package/dist/ai/providers/blocks/anthropic.js.map +1 -1
- package/dist/ai/providers/blocks/elevenlabs.js +4 -109
- package/dist/ai/providers/blocks/elevenlabs.js.map +1 -1
- package/dist/ai/providers/blocks/fal.js +2 -120
- package/dist/ai/providers/blocks/fal.js.map +1 -1
- package/dist/ai/providers/blocks/google.js +6 -240
- package/dist/ai/providers/blocks/google.js.map +1 -1
- package/dist/ai/providers/blocks/openai-compatible.js +2 -146
- package/dist/ai/providers/blocks/openai-compatible.js.map +1 -1
- package/dist/ai/providers/blocks/openai.js +2 -202
- package/dist/ai/providers/blocks/openai.js.map +1 -1
- package/dist/ai/providers/blocks/xai.js +2 -55
- 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 +184 -138
- 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/{utils → utilities}/nodeToSchemaMap.js +6 -6
- 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.js +56 -29
- package/dist/collections/AIProviders.js.map +1 -1
- package/dist/collections/Instructions.js +91 -59
- 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/endpoints/fetchFields.js +14 -6
- package/dist/endpoints/fetchFields.js.map +1 -1
- package/dist/endpoints/fetchVoices.js +1 -1
- 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 -639
- 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 +2 -1
- package/dist/exports/client.js +2 -1
- 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/LexicalEditor/feature.server.js +1 -1
- package/dist/fields/LexicalEditor/feature.server.js.map +1 -1
- 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 +18 -21
- package/dist/plugin.js.map +1 -1
- package/dist/providers/FieldProvider/FieldProvider.js +11 -20
- package/dist/providers/FieldProvider/FieldProvider.js.map +1 -1
- package/dist/providers/FieldProvider/FieldProvider.jsx +8 -18
- package/dist/providers/InstructionsProvider/InstructionsProvider.js +5 -2
- package/dist/providers/InstructionsProvider/InstructionsProvider.js.map +1 -1
- package/dist/providers/InstructionsProvider/InstructionsProvider.jsx +5 -2
- 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 +64 -28
- 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.js +15 -5
- package/dist/ui/Compose/hooks/menu/TranslateMenu.js.map +1 -1
- package/dist/ui/Compose/hooks/menu/TranslateMenu.jsx +11 -5
- 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/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/useGenerate.js +37 -12
- package/dist/ui/Compose/hooks/useGenerate.js.map +1 -1
- package/dist/ui/Compose/hooks/useGenerateUpload.js +66 -24
- package/dist/ui/Compose/hooks/useGenerateUpload.js.map +1 -1
- package/dist/ui/Compose/hooks/useHistory.js +1 -1
- package/dist/ui/Compose/hooks/useHistory.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.js +27 -92
- package/dist/ui/ConfigDashboard/index.js.map +1 -1
- package/dist/ui/ConfigDashboard/index.jsx +24 -77
- 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 +54 -22
- package/dist/utilities/seedProperties.js.map +1 -1
- package/package.json +36 -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/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 -224
- package/dist/ui/AIConfigDashboard/index.js.map +0 -1
- package/dist/ui/AIConfigDashboard/index.jsx +0 -175
- 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/{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
package/dist/plugin.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { deepMergeSimple } from 'payload/shared';
|
|
2
2
|
import { lexicalJsonSchema } from './ai/schemas/lexicalJsonSchema.js';
|
|
3
3
|
import { aiJobsCollection } from './collections/AIJobs.js';
|
|
4
4
|
import { AIProvidersGlobal } from './collections/AIProviders.js';
|
|
@@ -8,8 +8,8 @@ import { fetchFields } from './endpoints/fetchFields.js';
|
|
|
8
8
|
import { fetchVoices } from './endpoints/fetchVoices.js';
|
|
9
9
|
import { endpoints } from './endpoints/index.js';
|
|
10
10
|
import { translations } from './translations/index.js';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
11
|
+
import { updateFieldsConfig } from './utilities/fields/updateFieldsConfig.js';
|
|
12
|
+
import { autoSetupProviders } from './utilities/init/autoSetupProviders.js';
|
|
13
13
|
const defaultPluginConfig = {
|
|
14
14
|
access: {
|
|
15
15
|
generate: ({ req })=>!!req.user,
|
|
@@ -59,7 +59,7 @@ const payloadAiPlugin = (pluginConfig)=>(incomingConfig)=>{
|
|
|
59
59
|
...pluginConfig.access
|
|
60
60
|
}
|
|
61
61
|
};
|
|
62
|
-
const isActivated =
|
|
62
|
+
const isActivated = !!pluginConfig;
|
|
63
63
|
let updatedConfig = {
|
|
64
64
|
...incomingConfig
|
|
65
65
|
};
|
|
@@ -68,9 +68,9 @@ const payloadAiPlugin = (pluginConfig)=>(incomingConfig)=>{
|
|
|
68
68
|
const AIJobs = aiJobsCollection();
|
|
69
69
|
// Inject editor schema to config, so that it can be accessed when /textarea endpoint will hit
|
|
70
70
|
const lexicalSchema = lexicalJsonSchema(pluginConfig.editorConfig?.nodes);
|
|
71
|
-
Instructions.admin
|
|
72
|
-
|
|
73
|
-
}
|
|
71
|
+
if (!Instructions.admin) {
|
|
72
|
+
Instructions.admin = {};
|
|
73
|
+
}
|
|
74
74
|
if (pluginConfig.debugging) {
|
|
75
75
|
Instructions.admin.hidden = false;
|
|
76
76
|
}
|
|
@@ -97,7 +97,7 @@ const payloadAiPlugin = (pluginConfig)=>(incomingConfig)=>{
|
|
|
97
97
|
const updatedProviders = [
|
|
98
98
|
...providers ?? [],
|
|
99
99
|
{
|
|
100
|
-
path: '@ai-stack/payloadcms/
|
|
100
|
+
path: '@ai-stack/payloadcms/providers/InstructionsProvider/InstructionsProvider.js#InstructionsProvider'
|
|
101
101
|
}
|
|
102
102
|
];
|
|
103
103
|
incomingConfig.admin = {
|
|
@@ -117,6 +117,7 @@ const payloadAiPlugin = (pluginConfig)=>(incomingConfig)=>{
|
|
|
117
117
|
}),
|
|
118
118
|
endpoints: [
|
|
119
119
|
...incomingConfig.endpoints ?? [],
|
|
120
|
+
pluginEndpoints.promptMentions,
|
|
120
121
|
pluginEndpoints.textarea,
|
|
121
122
|
pluginEndpoints.upload,
|
|
122
123
|
...pluginEndpoints.videogenWebhook ? [
|
|
@@ -134,9 +135,7 @@ const payloadAiPlugin = (pluginConfig)=>(incomingConfig)=>{
|
|
|
134
135
|
}),
|
|
135
136
|
i18n: {
|
|
136
137
|
...incomingConfig.i18n || {},
|
|
137
|
-
translations: {
|
|
138
|
-
...deepMerge(translations, incomingConfig.i18n?.translations ?? {})
|
|
139
|
-
}
|
|
138
|
+
translations: deepMergeSimple(translations, incomingConfig.i18n?.translations ?? {})
|
|
140
139
|
}
|
|
141
140
|
};
|
|
142
141
|
}
|
|
@@ -157,8 +156,7 @@ const payloadAiPlugin = (pluginConfig)=>(incomingConfig)=>{
|
|
|
157
156
|
}, 3000);
|
|
158
157
|
}
|
|
159
158
|
// Inject AI capabilities with the abstraction layer
|
|
160
|
-
|
|
161
|
-
payload.ai = {
|
|
159
|
+
const ai = {
|
|
162
160
|
// Core generation methods
|
|
163
161
|
generateObject: async (args)=>{
|
|
164
162
|
const { generateObject } = await import('./ai/core/index.js');
|
|
@@ -211,16 +209,15 @@ const payloadAiPlugin = (pluginConfig)=>(incomingConfig)=>{
|
|
|
211
209
|
getRegistry: async ()=>{
|
|
212
210
|
const { getProviderRegistry } = await import('./ai/providers/registry.js');
|
|
213
211
|
return getProviderRegistry(payload);
|
|
214
|
-
},
|
|
215
|
-
// Legacy method for backward compatibility
|
|
216
|
-
/** @deprecated Use generateObject or generateText instead */ generate: async (args)=>{
|
|
217
|
-
const { generate } = await import('./ai/index.js');
|
|
218
|
-
return generate({
|
|
219
|
-
...args,
|
|
220
|
-
payload
|
|
221
|
-
});
|
|
222
212
|
}
|
|
223
213
|
};
|
|
214
|
+
// Use Object.defineProperty to safely add ai to payload
|
|
215
|
+
Object.defineProperty(payload, 'ai', {
|
|
216
|
+
value: ai,
|
|
217
|
+
writable: true
|
|
218
|
+
});
|
|
219
|
+
// Handle Provider Options & seeding auto-setup
|
|
220
|
+
await autoSetupProviders(payload, pluginConfig);
|
|
224
221
|
};
|
|
225
222
|
return updatedConfig;
|
|
226
223
|
};
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin.ts"],"sourcesContent":["import type { CollectionConfig, Config, GlobalConfig } from 'payload'\n\nimport { deepMerge } from 'payload/shared'\n\nimport type { PluginConfig } from './types.js'\n\nimport { lexicalJsonSchema } from './ai/schemas/lexicalJsonSchema.js'\nimport { aiJobsCollection } from './collections/AIJobs.js'\nimport { AIProvidersGlobal } from './collections/AIProviders.js'\nimport { instructionsCollection } from './collections/Instructions.js'\nimport { PLUGIN_NAME } from './defaults.js'\nimport { fetchFields } from './endpoints/fetchFields.js'\nimport { fetchVoices } from './endpoints/fetchVoices.js'\nimport { endpoints } from './endpoints/index.js'\nimport { translations } from './translations/index.js'\nimport { isPluginActivated } from './utilities/isPluginActivated.js'\nimport { updateFieldsConfig } from './utilities/updateFieldsConfig.js'\n\nconst defaultPluginConfig: PluginConfig = {\n access: {\n generate: ({ req }) => !!req.user,\n settings: ({ req }) => !!req.user,\n },\n disableSponsorMessage: false,\n}\n\nconst sponsorMessage = `\n╔═══════════════════════════════════════════════════════════════╗\n║ THANK YOU FOR USING THE PAYLOAD AI PLUGIN! ║\n║ ║\n║ If this plugin makes your life easier, please ║\n║ consider supporting its development and maintenance: ║\n║ ║\n║ • Buy me a coffee: https://buymeacoffee.com/ashbuilds ║\n║ • Sponsor on GitHub: https://github.com/sponsors/ashbuilds ║\n║ ║\n║ Your support fuels continued improvements, ║\n║ new features, and more caffeinated coding sessions! ☕ ║\n║ ║\n║ Got feedback or need help? Submit an issue here: ║\n║ • https://github.com/ashbuilds/payload-ai/issues/new ║\n║ ║\n║ Thank you again, and happy building! ║\n╚═══════════════════════════════════════════════════════════════╝\n`\n\nconst securityMessage = `\n╔═══════════════════════════════════════════════════════════════╗\n║ SECURITY NOTICE ║\n║ ║\n║ The AI Plugin now requires authentication by default. ║\n║ All AI features are restricted to authenticated users. ║\n║ ║\n║ To customize access control, configure the 'access' option ║\n║ in your plugin settings. See documentation for details. ║\n║ ║\n║ If you need different access patterns, please configure ║\n║ them explicitly in your plugin configuration. ║\n╚═══════════════════════════════════════════════════════════════╝\n`\n\nconst payloadAiPlugin =\n (pluginConfig: PluginConfig) =>\n (incomingConfig: Config): Config => {\n pluginConfig = {\n ...defaultPluginConfig,\n ...pluginConfig,\n access: {\n ...defaultPluginConfig.access,\n ...pluginConfig.access,\n },\n }\n\n const isActivated = isPluginActivated(pluginConfig)\n let updatedConfig: Config = { ...incomingConfig }\n\n if (isActivated) {\n const Instructions = instructionsCollection(pluginConfig)\n const AIJobs = aiJobsCollection()\n // Inject editor schema to config, so that it can be accessed when /textarea endpoint will hit\n const lexicalSchema = lexicalJsonSchema(pluginConfig.editorConfig?.nodes)\n\n Instructions.admin = {\n ...Instructions.admin,\n }\n\n if (pluginConfig.debugging) {\n Instructions.admin.hidden = false\n }\n\n Instructions.admin.custom = {\n ...(Instructions.admin.custom || {}),\n [PLUGIN_NAME]: {\n editorConfig: {\n // Used in admin client for useObject hook\n schema: lexicalSchema,\n },\n },\n }\n\n const collections = [...(incomingConfig.collections ?? []), Instructions, AIJobs]\n const globals = [...(incomingConfig.globals ?? []), AIProvidersGlobal]\n const { globals: globalsSlugs } = pluginConfig\n\n const { components: { providers = [] } = {} } = incomingConfig.admin || {}\n const updatedProviders = [\n ...(providers ?? []),\n {\n path: '@ai-stack/payloadcms/client#InstructionsProvider',\n },\n ]\n\n incomingConfig.admin = {\n ...(incomingConfig.admin || {}),\n components: {\n ...(incomingConfig.admin?.components ?? {}),\n providers: updatedProviders,\n },\n }\n\n const pluginEndpoints = endpoints(pluginConfig)\n updatedConfig = {\n ...incomingConfig,\n collections: collections.map((collection) => {\n // Always inject fields, but they will be dynamically enabled/disabled by the InstructionsProvider\n const { updatedCollectionConfig } = updateFieldsConfig(collection)\n return updatedCollectionConfig as CollectionConfig\n }),\n endpoints: [\n ...(incomingConfig.endpoints ?? []),\n pluginEndpoints.textarea,\n pluginEndpoints.upload,\n ...(pluginEndpoints.videogenWebhook ? [pluginEndpoints.videogenWebhook] : []),\n fetchFields(pluginConfig),\n fetchVoices,\n ],\n globals: globals.map((global) => {\n if (globalsSlugs && globalsSlugs[global.slug]) {\n const { updatedCollectionConfig } = updateFieldsConfig(global)\n return updatedCollectionConfig as GlobalConfig\n }\n\n return global\n }),\n i18n: {\n ...(incomingConfig.i18n || {}),\n translations: {\n ...deepMerge(translations, incomingConfig.i18n?.translations ?? {}),\n },\n },\n }\n }\n\n updatedConfig.onInit = async (payload) => {\n if (incomingConfig.onInit) {\n await incomingConfig.onInit(payload)\n }\n\n if (!isActivated) {\n payload.logger.warn(`— AI Plugin: Not activated. Please verify your environment keys.`)\n return\n }\n\n if (!pluginConfig.disableSponsorMessage) {\n setTimeout(() => {\n payload.logger.info(securityMessage)\n }, 1000)\n setTimeout(() => {\n payload.logger.info(sponsorMessage)\n }, 3000)\n }\n\n // Inject AI capabilities with the abstraction layer\n ;(payload as any).ai = {\n // Core generation methods\n generateObject: async (args: any) => {\n const { generateObject } = await import('./ai/core/index.js')\n return generateObject({ ...args, payload })\n },\n\n generateText: async (args: any) => {\n const { generateText } = await import('./ai/core/index.js')\n return generateText({ ...args, payload })\n },\n\n generateMedia: async (args: any) => {\n const { generateMedia } = await import('./ai/core/index.js')\n return generateMedia({ ...args, payload })\n },\n\n // Streaming variants\n streamObject: async (args: any) => {\n const { streamObject } = await import('./ai/core/index.js')\n const result = await streamObject({ ...args, payload })\n return result.toTextStreamResponse()\n },\n\n streamText: async (args: any) => {\n const { streamText } = await import('./ai/core/index.js')\n return streamText({ ...args, payload })\n },\n\n // Helper utilities\n getModel: async (provider: string, modelId: string, type?: 'image' | 'text' | 'tts') => {\n const { getImageModel, getLanguageModel, getTTSModel } = await import(\n './ai/providers/registry.js'\n )\n if (type === 'image') {\n return getImageModel(payload, provider, modelId)\n }\n if (type === 'tts') {\n return getTTSModel(payload, provider, modelId)\n }\n return getLanguageModel(payload, provider, modelId)\n },\n\n getRegistry: async () => {\n const { getProviderRegistry } = await import('./ai/providers/registry.js')\n return getProviderRegistry(payload)\n },\n\n // Legacy method for backward compatibility\n /** @deprecated Use generateObject or generateText instead */\n generate: async (args: any) => {\n const { generate } = await import('./ai/index.js')\n return generate({ ...args, payload })\n },\n }\n }\n\n return updatedConfig\n }\n\nexport { payloadAiPlugin }\n"],"names":["deepMerge","lexicalJsonSchema","aiJobsCollection","AIProvidersGlobal","instructionsCollection","PLUGIN_NAME","fetchFields","fetchVoices","endpoints","translations","isPluginActivated","updateFieldsConfig","defaultPluginConfig","access","generate","req","user","settings","disableSponsorMessage","sponsorMessage","securityMessage","payloadAiPlugin","pluginConfig","incomingConfig","isActivated","updatedConfig","Instructions","AIJobs","lexicalSchema","editorConfig","nodes","admin","debugging","hidden","custom","schema","collections","globals","globalsSlugs","components","providers","updatedProviders","path","pluginEndpoints","map","collection","updatedCollectionConfig","textarea","upload","videogenWebhook","global","slug","i18n","onInit","payload","logger","warn","setTimeout","info","ai","generateObject","args","generateText","generateMedia","streamObject","result","toTextStreamResponse","streamText","getModel","provider","modelId","type","getImageModel","getLanguageModel","getTTSModel","getRegistry","getProviderRegistry"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/plugin.ts"],"sourcesContent":["import type { CollectionConfig, Config, GlobalConfig } from 'payload'\n\nimport { deepMergeSimple } from 'payload/shared'\n\nimport type {\n PayloadGenerateMediaArgs,\n PayloadGenerateObjectArgs,\n PayloadGenerateTextArgs,\n} from './ai/core/types.js'\nimport type { PluginConfig } from './types.js'\n\nimport { lexicalJsonSchema } from './ai/schemas/lexicalJsonSchema.js'\nimport { aiJobsCollection } from './collections/AIJobs.js'\nimport { AIProvidersGlobal } from './collections/AIProviders.js'\nimport { instructionsCollection } from './collections/Instructions.js'\nimport { PLUGIN_NAME } from './defaults.js'\nimport { fetchFields } from './endpoints/fetchFields.js'\nimport { fetchVoices } from './endpoints/fetchVoices.js'\nimport { endpoints } from './endpoints/index.js'\nimport { translations } from './translations/index.js'\nimport { updateFieldsConfig } from './utilities/fields/updateFieldsConfig.js'\nimport { autoSetupProviders } from './utilities/init/autoSetupProviders.js'\n\nconst defaultPluginConfig: PluginConfig = {\n access: {\n generate: ({ req }) => !!req.user,\n settings: ({ req }) => !!req.user,\n },\n disableSponsorMessage: false,\n}\n\nconst sponsorMessage = `\n╔═══════════════════════════════════════════════════════════════╗\n║ THANK YOU FOR USING THE PAYLOAD AI PLUGIN! ║\n║ ║\n║ If this plugin makes your life easier, please ║\n║ consider supporting its development and maintenance: ║\n║ ║\n║ • Buy me a coffee: https://buymeacoffee.com/ashbuilds ║\n║ • Sponsor on GitHub: https://github.com/sponsors/ashbuilds ║\n║ ║\n║ Your support fuels continued improvements, ║\n║ new features, and more caffeinated coding sessions! ☕ ║\n║ ║\n║ Got feedback or need help? Submit an issue here: ║\n║ • https://github.com/ashbuilds/payload-ai/issues/new ║\n║ ║\n║ Thank you again, and happy building! ║\n╚═══════════════════════════════════════════════════════════════╝\n`\n\nconst securityMessage = `\n╔═══════════════════════════════════════════════════════════════╗\n║ SECURITY NOTICE ║\n║ ║\n║ The AI Plugin now requires authentication by default. ║\n║ All AI features are restricted to authenticated users. ║\n║ ║\n║ To customize access control, configure the 'access' option ║\n║ in your plugin settings. See documentation for details. ║\n║ ║\n║ If you need different access patterns, please configure ║\n║ them explicitly in your plugin configuration. ║\n╚═══════════════════════════════════════════════════════════════╝\n`\n\nconst payloadAiPlugin =\n (pluginConfig: PluginConfig) =>\n (incomingConfig: Config): Config => {\n pluginConfig = {\n ...defaultPluginConfig,\n ...pluginConfig,\n access: {\n ...defaultPluginConfig.access,\n ...pluginConfig.access,\n },\n }\n\n const isActivated = !!pluginConfig\n let updatedConfig: Config = { ...incomingConfig }\n\n if (isActivated) {\n const Instructions = instructionsCollection(pluginConfig)\n const AIJobs = aiJobsCollection()\n // Inject editor schema to config, so that it can be accessed when /textarea endpoint will hit\n const lexicalSchema = lexicalJsonSchema(pluginConfig.editorConfig?.nodes)\n\n if (!Instructions.admin) {\n Instructions.admin = {}\n }\n\n if (pluginConfig.debugging) {\n Instructions.admin.hidden = false\n }\n\n Instructions.admin.custom = {\n ...(Instructions.admin.custom || {}),\n [PLUGIN_NAME]: {\n editorConfig: {\n // Used in admin client for useObject hook\n schema: lexicalSchema,\n },\n },\n }\n\n const collections = [...(incomingConfig.collections ?? []), Instructions, AIJobs]\n const globals = [...(incomingConfig.globals ?? []), AIProvidersGlobal]\n const { globals: globalsSlugs } = pluginConfig\n\n const { components: { providers = [] } = {} } = incomingConfig.admin || {}\n const updatedProviders = [\n ...(providers ?? []),\n {\n path: '@ai-stack/payloadcms/providers/InstructionsProvider/InstructionsProvider.js#InstructionsProvider',\n },\n ]\n\n incomingConfig.admin = {\n ...(incomingConfig.admin || {}),\n components: {\n ...(incomingConfig.admin?.components ?? {}),\n providers: updatedProviders,\n },\n }\n\n const pluginEndpoints = endpoints(pluginConfig)\n updatedConfig = {\n ...incomingConfig,\n collections: collections.map((collection) => {\n // Always inject fields, but they will be dynamically enabled/disabled by the InstructionsProvider\n const { updatedCollectionConfig } = updateFieldsConfig(collection)\n return updatedCollectionConfig as CollectionConfig\n }),\n endpoints: [\n ...(incomingConfig.endpoints ?? []),\n pluginEndpoints.promptMentions,\n pluginEndpoints.textarea,\n pluginEndpoints.upload,\n ...(pluginEndpoints.videogenWebhook ? [pluginEndpoints.videogenWebhook] : []),\n fetchFields(pluginConfig),\n fetchVoices,\n ],\n globals: globals.map((global) => {\n if (globalsSlugs && globalsSlugs[global.slug]) {\n const { updatedCollectionConfig } = updateFieldsConfig(global)\n return updatedCollectionConfig as GlobalConfig\n }\n\n return global\n }),\n i18n: {\n ...(incomingConfig.i18n || {}),\n translations: deepMergeSimple(translations, incomingConfig.i18n?.translations ?? {}),\n },\n }\n }\n\n updatedConfig.onInit = async (payload) => {\n if (incomingConfig.onInit) {\n await incomingConfig.onInit(payload)\n }\n\n if (!isActivated) {\n payload.logger.warn(`— AI Plugin: Not activated. Please verify your environment keys.`)\n return\n }\n\n if (!pluginConfig.disableSponsorMessage) {\n setTimeout(() => {\n payload.logger.info(securityMessage)\n }, 1000)\n setTimeout(() => {\n payload.logger.info(sponsorMessage)\n }, 3000)\n }\n\n // Inject AI capabilities with the abstraction layer\n const ai = {\n // Core generation methods\n generateObject: async (args: Omit<PayloadGenerateObjectArgs, 'payload'>) => {\n const { generateObject } = await import('./ai/core/index.js')\n return generateObject({ ...args, payload })\n },\n\n generateText: async (args: Omit<PayloadGenerateTextArgs, 'payload'>) => {\n const { generateText } = await import('./ai/core/index.js')\n return generateText({ ...args, payload })\n },\n\n generateMedia: async (args: Omit<PayloadGenerateMediaArgs, 'payload'>) => {\n const { generateMedia } = await import('./ai/core/index.js')\n return generateMedia({ ...args, payload })\n },\n\n // Streaming variants\n streamObject: async (args: Omit<PayloadGenerateObjectArgs, 'payload'>) => {\n const { streamObject } = await import('./ai/core/index.js')\n const result = await streamObject({ ...args, payload })\n return result.toTextStreamResponse()\n },\n\n streamText: async (args: Omit<PayloadGenerateTextArgs, 'payload'>) => {\n const { streamText } = await import('./ai/core/index.js')\n return streamText({ ...args, payload })\n },\n\n // Helper utilities\n getModel: async (provider: string, modelId: string, type?: 'image' | 'text' | 'tts') => {\n const { getImageModel, getLanguageModel, getTTSModel } = await import(\n './ai/providers/registry.js'\n )\n if (type === 'image') {\n return getImageModel(payload, provider, modelId)\n }\n if (type === 'tts') {\n return getTTSModel(payload, provider, modelId)\n }\n return getLanguageModel(payload, provider, modelId)\n },\n\n getRegistry: async () => {\n const { getProviderRegistry } = await import('./ai/providers/registry.js')\n return getProviderRegistry(payload)\n },\n }\n\n // Use Object.defineProperty to safely add ai to payload\n Object.defineProperty(payload, 'ai', { value: ai, writable: true })\n\n // Handle Provider Options & seeding auto-setup\n await autoSetupProviders(payload, pluginConfig)\n }\n\n return updatedConfig\n }\n\nexport { payloadAiPlugin }\n"],"names":["deepMergeSimple","lexicalJsonSchema","aiJobsCollection","AIProvidersGlobal","instructionsCollection","PLUGIN_NAME","fetchFields","fetchVoices","endpoints","translations","updateFieldsConfig","autoSetupProviders","defaultPluginConfig","access","generate","req","user","settings","disableSponsorMessage","sponsorMessage","securityMessage","payloadAiPlugin","pluginConfig","incomingConfig","isActivated","updatedConfig","Instructions","AIJobs","lexicalSchema","editorConfig","nodes","admin","debugging","hidden","custom","schema","collections","globals","globalsSlugs","components","providers","updatedProviders","path","pluginEndpoints","map","collection","updatedCollectionConfig","promptMentions","textarea","upload","videogenWebhook","global","slug","i18n","onInit","payload","logger","warn","setTimeout","info","ai","generateObject","args","generateText","generateMedia","streamObject","result","toTextStreamResponse","streamText","getModel","provider","modelId","type","getImageModel","getLanguageModel","getTTSModel","getRegistry","getProviderRegistry","Object","defineProperty","value","writable"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import React, { createContext,
|
|
2
|
+
import React, { createContext, useMemo } from 'react';
|
|
3
3
|
const initialContext = {
|
|
4
4
|
field: undefined,
|
|
5
5
|
path: '',
|
|
@@ -7,26 +7,17 @@ const initialContext = {
|
|
|
7
7
|
};
|
|
8
8
|
export const FieldContext = /*#__PURE__*/ createContext(initialContext);
|
|
9
9
|
export const FieldProvider = ({ children, context })=>{
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
setSchemaPath(nextSchemaPath);
|
|
19
|
-
}
|
|
20
|
-
}, [
|
|
21
|
-
schemaPath,
|
|
22
|
-
context
|
|
10
|
+
const value = useMemo(()=>({
|
|
11
|
+
field: context.field,
|
|
12
|
+
path: context.path,
|
|
13
|
+
schemaPath: String(context.schemaPath ?? '')
|
|
14
|
+
}), [
|
|
15
|
+
context.field,
|
|
16
|
+
context.path,
|
|
17
|
+
context.schemaPath
|
|
23
18
|
]);
|
|
24
|
-
return /*#__PURE__*/ _jsx(FieldContext
|
|
25
|
-
value:
|
|
26
|
-
field,
|
|
27
|
-
path,
|
|
28
|
-
schemaPath
|
|
29
|
-
},
|
|
19
|
+
return /*#__PURE__*/ _jsx(FieldContext, {
|
|
20
|
+
value: value,
|
|
30
21
|
children: children
|
|
31
22
|
});
|
|
32
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/providers/FieldProvider/FieldProvider.tsx"],"sourcesContent":["import type { ClientField } from 'payload'\n\nimport React, { createContext,
|
|
1
|
+
{"version":3,"sources":["../../../src/providers/FieldProvider/FieldProvider.tsx"],"sourcesContent":["import type { ClientField } from 'payload'\n\nimport React, { createContext, useMemo } from 'react'\n\ntype FieldContextType = {\n field?: ClientField\n path?: string\n schemaPath?: string\n}\n\nconst initialContext: FieldContextType = {\n field: undefined,\n path: '',\n schemaPath: '',\n}\n\nexport const FieldContext = createContext<FieldContextType>(initialContext)\n\nexport const FieldProvider = ({\n children,\n context,\n}: {\n children: React.ReactNode\n context: {\n field?: ClientField\n path: string\n schemaPath: unknown\n }\n}) => {\n const value = useMemo(\n () => ({\n field: context.field,\n path: context.path,\n schemaPath: String(context.schemaPath ?? ''),\n }),\n [context.field, context.path, context.schemaPath],\n )\n\n return (\n <FieldContext value={value}>\n {children}\n </FieldContext>\n )\n}\n"],"names":["React","createContext","useMemo","initialContext","field","undefined","path","schemaPath","FieldContext","FieldProvider","children","context","value","String"],"mappings":";AAEA,OAAOA,SAASC,aAAa,EAAEC,OAAO,QAAQ,QAAO;AAQrD,MAAMC,iBAAmC;IACvCC,OAAOC;IACPC,MAAM;IACNC,YAAY;AACd;AAEA,OAAO,MAAMC,6BAAeP,cAAgCE,gBAAe;AAE3E,OAAO,MAAMM,gBAAgB,CAAC,EAC5BC,QAAQ,EACRC,OAAO,EAQR;IACC,MAAMC,QAAQV,QACZ,IAAO,CAAA;YACLE,OAAOO,QAAQP,KAAK;YACpBE,MAAMK,QAAQL,IAAI;YAClBC,YAAYM,OAAOF,QAAQJ,UAAU,IAAI;QAC3C,CAAA,GACA;QAACI,QAAQP,KAAK;QAAEO,QAAQL,IAAI;QAAEK,QAAQJ,UAAU;KAAC;IAGnD,qBACE,KAACC;QAAaI,OAAOA;kBAClBF;;AAGP,EAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { createContext,
|
|
1
|
+
import React, { createContext, useMemo } from 'react';
|
|
2
2
|
const initialContext = {
|
|
3
3
|
field: undefined,
|
|
4
4
|
path: '',
|
|
@@ -6,22 +6,12 @@ const initialContext = {
|
|
|
6
6
|
};
|
|
7
7
|
export const FieldContext = createContext(initialContext);
|
|
8
8
|
export const FieldProvider = ({ children, context, }) => {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
setField(context.field);
|
|
16
|
-
setPath(context.path);
|
|
17
|
-
setSchemaPath(nextSchemaPath);
|
|
18
|
-
}
|
|
19
|
-
}, [schemaPath, context]);
|
|
20
|
-
return (<FieldContext.Provider value={{
|
|
21
|
-
field,
|
|
22
|
-
path,
|
|
23
|
-
schemaPath,
|
|
24
|
-
}}>
|
|
9
|
+
const value = useMemo(() => ({
|
|
10
|
+
field: context.field,
|
|
11
|
+
path: context.path,
|
|
12
|
+
schemaPath: String(context.schemaPath ?? ''),
|
|
13
|
+
}), [context.field, context.path, context.schemaPath]);
|
|
14
|
+
return (<FieldContext value={value}>
|
|
25
15
|
{children}
|
|
26
|
-
</FieldContext
|
|
16
|
+
</FieldContext>);
|
|
27
17
|
};
|
|
@@ -44,8 +44,11 @@ export const InstructionsProvider = ({ children })=>{
|
|
|
44
44
|
...prev,
|
|
45
45
|
[doc['schema-path']]: {
|
|
46
46
|
id: doc.id,
|
|
47
|
+
alwaysShow: !!doc.alwaysShow,
|
|
48
|
+
appendGenerated: !!doc.appendGenerated,
|
|
47
49
|
disabled: !!doc.disabled,
|
|
48
|
-
fieldType: doc['field-type']
|
|
50
|
+
fieldType: doc['field-type'],
|
|
51
|
+
hasMany: !!doc.hasMany
|
|
49
52
|
}
|
|
50
53
|
};
|
|
51
54
|
});
|
|
@@ -84,7 +87,7 @@ export const InstructionsProvider = ({ children })=>{
|
|
|
84
87
|
}, [
|
|
85
88
|
fetchFieldsData
|
|
86
89
|
]);
|
|
87
|
-
return /*#__PURE__*/ _jsxs(InstructionsContext
|
|
90
|
+
return /*#__PURE__*/ _jsxs(InstructionsContext, {
|
|
88
91
|
value: {
|
|
89
92
|
activeCollection,
|
|
90
93
|
debugging,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/providers/InstructionsProvider/InstructionsProvider.tsx"],"sourcesContent":["'use client'\n\nimport { useAuth, useConfig, useDocumentDrawer } from '@payloadcms/ui'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { SerializedPromptField } from '../../types.js'\n\nimport { PLUGIN_FETCH_FIELDS_ENDPOINT, PLUGIN_INSTRUCTIONS_TABLE } from '../../defaults.js'\nimport { useActiveFieldTracking } from '../../ui/Compose/hooks/useActiveFieldTracking.js'\nimport { InstructionsContext } from './context.js'\n\nexport const InstructionsProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n // Initialize field tracking globally so ai-plugin-active class is added on field focus\n useActiveFieldTracking()\n\n const [instructions, setInstructionsState] = useState({})\n const [promptFields, setPromptFields] = useState<SerializedPromptField[]>([])\n const [activeCollection, setActiveCollection] = useState('')\n const [isConfigAllowed, setIsConfigAllowed] = useState(false)\n const [enabledLanguages, setEnabledLanguages] = useState<string[]>()\n const [enabledCollections, setEnabledCollections] = useState<string[]>()\n const [debugging, setDebugging] = useState(false)\n const { user } = useAuth()\n\n const { config } = useConfig()\n const {\n routes: { api },\n serverURL,\n } = config\n\n // Global Document Drawer state\n const [drawerInstructionId, setDrawerInstructionId] = useState<string>('')\n const [drawerOpenCount, setDrawerOpenCount] = useState(0)\n\n const [DocumentDrawer, _, { openDrawer: openPayloadDrawer }] = useDocumentDrawer({\n id: drawerInstructionId,\n collectionSlug: PLUGIN_INSTRUCTIONS_TABLE,\n })\n\n const openDrawer = useCallback((id: string) => {\n setDrawerInstructionId(id)\n setDrawerOpenCount((prev) => prev + 1)\n }, [])\n\n // Open drawer when count changes\n useEffect(() => {\n if (drawerOpenCount > 0) {\n openPayloadDrawer()\n }\n }, [drawerOpenCount, openPayloadDrawer])\n\n const handleSave = useCallback(\n ({ doc }: { doc: any }) => {\n setInstructionsState((prev) => {\n return {\n ...prev,\n [doc['schema-path']]: {\n id: doc.id,\n disabled: !!doc.disabled,\n fieldType: doc['field-type'],\n },\n }\n })\n },\n [setInstructionsState],\n )\n\n const fetchFieldsData = useCallback(async () => {\n // Only fetch if we have a user ID - prevents fetching on every user object reference change\n if (!user?.id) {\n return\n }\n\n try {\n const res = await fetch(`${serverURL}${api}${PLUGIN_FETCH_FIELDS_ENDPOINT}`)\n const data = await res.json()\n setIsConfigAllowed(data?.isConfigAllowed || false)\n setEnabledLanguages(data?.enabledLanguages || [])\n setEnabledCollections(data?.enabledCollections || [])\n setInstructionsState(data?.fields || {})\n setPromptFields(data?.promptFields || [])\n setDebugging(data?.debugging || false)\n } catch (err) {\n console.error('InstructionsProvider:', err)\n }\n }, [api, serverURL, user?.id])\n\n useEffect(() => {\n void fetchFieldsData()\n }, [fetchFieldsData])\n\n const refresh = useCallback(async () => {\n await fetchFieldsData()\n }, [fetchFieldsData])\n\n return (\n <InstructionsContext
|
|
1
|
+
{"version":3,"sources":["../../../src/providers/InstructionsProvider/InstructionsProvider.tsx"],"sourcesContent":["'use client'\n\nimport { useAuth, useConfig, useDocumentDrawer } from '@payloadcms/ui'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { SerializedPromptField } from '../../types.js'\n\nimport { PLUGIN_FETCH_FIELDS_ENDPOINT, PLUGIN_INSTRUCTIONS_TABLE } from '../../defaults.js'\nimport { useActiveFieldTracking } from '../../ui/Compose/hooks/useActiveFieldTracking.js'\nimport { InstructionsContext } from './context.js'\n\nexport const InstructionsProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n // Initialize field tracking globally so ai-plugin-active class is added on field focus\n useActiveFieldTracking()\n\n const [instructions, setInstructionsState] = useState({})\n const [promptFields, setPromptFields] = useState<SerializedPromptField[]>([])\n const [activeCollection, setActiveCollection] = useState('')\n const [isConfigAllowed, setIsConfigAllowed] = useState(false)\n const [enabledLanguages, setEnabledLanguages] = useState<string[]>()\n const [enabledCollections, setEnabledCollections] = useState<string[]>()\n const [debugging, setDebugging] = useState(false)\n const { user } = useAuth()\n\n const { config } = useConfig()\n const {\n routes: { api },\n serverURL,\n } = config\n\n // Global Document Drawer state\n const [drawerInstructionId, setDrawerInstructionId] = useState<string>('')\n const [drawerOpenCount, setDrawerOpenCount] = useState(0)\n\n const [DocumentDrawer, _, { openDrawer: openPayloadDrawer }] = useDocumentDrawer({\n id: drawerInstructionId,\n collectionSlug: PLUGIN_INSTRUCTIONS_TABLE,\n })\n\n const openDrawer = useCallback((id: string) => {\n setDrawerInstructionId(id)\n setDrawerOpenCount((prev) => prev + 1)\n }, [])\n\n // Open drawer when count changes\n useEffect(() => {\n if (drawerOpenCount > 0) {\n openPayloadDrawer()\n }\n }, [drawerOpenCount, openPayloadDrawer])\n\n const handleSave = useCallback(\n ({ doc }: { doc: any }) => {\n setInstructionsState((prev) => {\n return {\n ...prev,\n [doc['schema-path']]: {\n id: doc.id,\n alwaysShow: !!doc.alwaysShow,\n appendGenerated: !!doc.appendGenerated,\n disabled: !!doc.disabled,\n fieldType: doc['field-type'],\n hasMany: !!doc.hasMany,\n },\n }\n })\n },\n [setInstructionsState],\n )\n\n const fetchFieldsData = useCallback(async () => {\n // Only fetch if we have a user ID - prevents fetching on every user object reference change\n if (!user?.id) {\n return\n }\n\n try {\n const res = await fetch(`${serverURL}${api}${PLUGIN_FETCH_FIELDS_ENDPOINT}`)\n const data = await res.json()\n setIsConfigAllowed(data?.isConfigAllowed || false)\n setEnabledLanguages(data?.enabledLanguages || [])\n setEnabledCollections(data?.enabledCollections || [])\n setInstructionsState(data?.fields || {})\n setPromptFields(data?.promptFields || [])\n setDebugging(data?.debugging || false)\n } catch (err) {\n console.error('InstructionsProvider:', err)\n }\n }, [api, serverURL, user?.id])\n\n useEffect(() => {\n void fetchFieldsData()\n }, [fetchFieldsData])\n\n const refresh = useCallback(async () => {\n await fetchFieldsData()\n }, [fetchFieldsData])\n\n return (\n <InstructionsContext\n value={{\n activeCollection,\n debugging,\n enabledCollections,\n enabledLanguages,\n hasInstructions: instructions && Object.keys(instructions).length > 0,\n instructions,\n isConfigAllowed,\n openDrawer,\n promptFields,\n refresh,\n setActiveCollection,\n setEnabledCollections,\n }}\n >\n {children}\n <DocumentDrawer onSave={handleSave} />\n </InstructionsContext>\n )\n}\n"],"names":["useAuth","useConfig","useDocumentDrawer","React","useCallback","useEffect","useState","PLUGIN_FETCH_FIELDS_ENDPOINT","PLUGIN_INSTRUCTIONS_TABLE","useActiveFieldTracking","InstructionsContext","InstructionsProvider","children","instructions","setInstructionsState","promptFields","setPromptFields","activeCollection","setActiveCollection","isConfigAllowed","setIsConfigAllowed","enabledLanguages","setEnabledLanguages","enabledCollections","setEnabledCollections","debugging","setDebugging","user","config","routes","api","serverURL","drawerInstructionId","setDrawerInstructionId","drawerOpenCount","setDrawerOpenCount","DocumentDrawer","_","openDrawer","openPayloadDrawer","id","collectionSlug","prev","handleSave","doc","alwaysShow","appendGenerated","disabled","fieldType","hasMany","fetchFieldsData","res","fetch","data","json","fields","err","console","error","refresh","value","hasInstructions","Object","keys","length","onSave"],"mappings":"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"}
|
|
@@ -40,8 +40,11 @@ export const InstructionsProvider = ({ children }) => {
|
|
|
40
40
|
...prev,
|
|
41
41
|
[doc['schema-path']]: {
|
|
42
42
|
id: doc.id,
|
|
43
|
+
alwaysShow: !!doc.alwaysShow,
|
|
44
|
+
appendGenerated: !!doc.appendGenerated,
|
|
43
45
|
disabled: !!doc.disabled,
|
|
44
46
|
fieldType: doc['field-type'],
|
|
47
|
+
hasMany: !!doc.hasMany,
|
|
45
48
|
},
|
|
46
49
|
};
|
|
47
50
|
});
|
|
@@ -71,7 +74,7 @@ export const InstructionsProvider = ({ children }) => {
|
|
|
71
74
|
const refresh = useCallback(async () => {
|
|
72
75
|
await fetchFieldsData();
|
|
73
76
|
}, [fetchFieldsData]);
|
|
74
|
-
return (<InstructionsContext
|
|
77
|
+
return (<InstructionsContext value={{
|
|
75
78
|
activeCollection,
|
|
76
79
|
debugging,
|
|
77
80
|
enabledCollections,
|
|
@@ -87,5 +90,5 @@ export const InstructionsProvider = ({ children }) => {
|
|
|
87
90
|
}}>
|
|
88
91
|
{children}
|
|
89
92
|
<DocumentDrawer onSave={handleSave}/>
|
|
90
|
-
</InstructionsContext
|
|
93
|
+
</InstructionsContext>);
|
|
91
94
|
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./translation-schema.json",
|
|
3
|
+
"ai-plugin": {
|
|
4
|
+
"configDashboard": {
|
|
5
|
+
"loadingConfiguration": "Konfiguration wird geladen...",
|
|
6
|
+
"configureTitle": "Lass uns dein KI-Plugin konfigurieren",
|
|
7
|
+
"configureSubtitle": "Anbieter einrichten → Inhalte auswählen → Verhalten verfeinern.",
|
|
8
|
+
"providers": "Anbieter",
|
|
9
|
+
"saveChanges": "Änderungen speichern",
|
|
10
|
+
"saving": "Speichern...",
|
|
11
|
+
"selectCollectionsBody": "Wähle die Sammlungen aus, in denen KI-Funktionen verfügbar sein sollen, schalte sie ein oder aus und speichere deine Änderungen.",
|
|
12
|
+
"settingsSaved": "Einstellungen erfolgreich gespeichert",
|
|
13
|
+
"failedToSave": "Einstellungen konnten nicht gespeichert werden",
|
|
14
|
+
"errorSaving": "Fehler beim Speichern der Einstellungen"
|
|
15
|
+
},
|
|
16
|
+
"actions": {
|
|
17
|
+
"proofread": "Korrekturlesen",
|
|
18
|
+
"rephrase": "Umformulieren",
|
|
19
|
+
"translate": "Übersetzen",
|
|
20
|
+
"expand": "Erweitern",
|
|
21
|
+
"summarize": "Zusammenfassen",
|
|
22
|
+
"simplify": "Vereinfachen",
|
|
23
|
+
"compose": "Verfassen",
|
|
24
|
+
"settings": "Einstellungen"
|
|
25
|
+
},
|
|
26
|
+
"actionLoading": {
|
|
27
|
+
"proofreading": "Korrekturlesen...",
|
|
28
|
+
"rephrasing": "Umformulieren...",
|
|
29
|
+
"translating": "Übersetzen...",
|
|
30
|
+
"expanding": "Erweitern...",
|
|
31
|
+
"summarizing": "Zusammenfassen...",
|
|
32
|
+
"simplifying": "Vereinfachen...",
|
|
33
|
+
"composing": "Verfassen..."
|
|
34
|
+
},
|
|
35
|
+
"general": {
|
|
36
|
+
"search": "Suchen...",
|
|
37
|
+
"queued": "In Warteschlange",
|
|
38
|
+
"video": "Video",
|
|
39
|
+
"loading": "Wird geladen...",
|
|
40
|
+
"clickToStop": "Klicken zum Stoppen"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"localization": {
|
|
44
|
+
"selectedLocales": "Selected locales",
|
|
45
|
+
"selectLocaleToDuplicate": "Select locale to duplicate"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -1,4 +1,47 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
"$schema": "./translation-schema.json",
|
|
3
|
+
"ai-plugin": {
|
|
4
|
+
"configDashboard": {
|
|
5
|
+
"loadingConfiguration": "Loading configuration...",
|
|
6
|
+
"configureTitle": "Let's configure your AI Plugin",
|
|
7
|
+
"configureSubtitle": "Set up the provider → Choose the content → Refine the behavior.",
|
|
8
|
+
"providers": "Providers",
|
|
9
|
+
"saveChanges": "Save Changes",
|
|
10
|
+
"saving": "Saving...",
|
|
11
|
+
"selectCollectionsBody": "Select the collections where AI features should be available, toggle them on or off, and save your changes.",
|
|
12
|
+
"settingsSaved": "Settings saved successfully",
|
|
13
|
+
"failedToSave": "Failed to save settings",
|
|
14
|
+
"errorSaving": "Error saving settings"
|
|
15
|
+
},
|
|
16
|
+
"actions": {
|
|
17
|
+
"proofread": "Proofread",
|
|
18
|
+
"rephrase": "Rephrase",
|
|
19
|
+
"translate": "Translate",
|
|
20
|
+
"expand": "Expand",
|
|
21
|
+
"summarize": "Summarize",
|
|
22
|
+
"simplify": "Simplify",
|
|
23
|
+
"compose": "Compose",
|
|
24
|
+
"settings": "Settings"
|
|
25
|
+
},
|
|
26
|
+
"actionLoading": {
|
|
27
|
+
"proofreading": "Proofreading",
|
|
28
|
+
"rephrasing": "Rephrasing",
|
|
29
|
+
"translating": "Translating",
|
|
30
|
+
"expanding": "Expanding",
|
|
31
|
+
"summarizing": "Summarizing",
|
|
32
|
+
"simplifying": "Simplifying",
|
|
33
|
+
"composing": "Composing"
|
|
34
|
+
},
|
|
35
|
+
"general": {
|
|
36
|
+
"search": "Search...",
|
|
37
|
+
"queued": "Queued",
|
|
38
|
+
"video": "Video",
|
|
39
|
+
"loading": "Loading...",
|
|
40
|
+
"clickToStop": "Click to stop"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"localization": {
|
|
44
|
+
"selectedLocales": "Selected locales",
|
|
45
|
+
"selectLocaleToDuplicate": "Select locale to duplicate"
|
|
46
|
+
}
|
|
4
47
|
}
|
|
@@ -1,4 +1,47 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
"$schema": "./translation-schema.json",
|
|
3
|
+
"ai-plugin": {
|
|
4
|
+
"configDashboard": {
|
|
5
|
+
"loadingConfiguration": "Cargando configuración...",
|
|
6
|
+
"configureTitle": "Configuremos tu plugin de IA",
|
|
7
|
+
"configureSubtitle": "Configura el proveedor → Elige el contenido → Ajusta el comportamiento.",
|
|
8
|
+
"providers": "Proveedores",
|
|
9
|
+
"saveChanges": "Guardar cambios",
|
|
10
|
+
"saving": "Guardando...",
|
|
11
|
+
"selectCollectionsBody": "Selecciona las colecciones donde las funciones de IA deben estar disponibles, actívalas o desactívalas y guarda tus cambios.",
|
|
12
|
+
"settingsSaved": "Configuración guardada correctamente",
|
|
13
|
+
"failedToSave": "No se pudieron guardar los ajustes",
|
|
14
|
+
"errorSaving": "Error al guardar los ajustes"
|
|
15
|
+
},
|
|
16
|
+
"actions": {
|
|
17
|
+
"proofread": "Corregir",
|
|
18
|
+
"rephrase": "Reformular",
|
|
19
|
+
"translate": "Traducir",
|
|
20
|
+
"expand": "Expandir",
|
|
21
|
+
"summarize": "Resumir",
|
|
22
|
+
"simplify": "Simplificar",
|
|
23
|
+
"compose": "Redactar",
|
|
24
|
+
"settings": "Configuración"
|
|
25
|
+
},
|
|
26
|
+
"actionLoading": {
|
|
27
|
+
"proofreading": "Corrigiendo",
|
|
28
|
+
"rephrasing": "Reformulando",
|
|
29
|
+
"translating": "Traduciendo",
|
|
30
|
+
"expanding": "Expandiendo",
|
|
31
|
+
"summarizing": "Resumiendo",
|
|
32
|
+
"simplifying": "Simplificando",
|
|
33
|
+
"composing": "Redactando"
|
|
34
|
+
},
|
|
35
|
+
"general": {
|
|
36
|
+
"search": "Buscar...",
|
|
37
|
+
"queued": "En cola",
|
|
38
|
+
"video": "Vídeo",
|
|
39
|
+
"loading": "Cargando...",
|
|
40
|
+
"clickToStop": "Haz clic para detener"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"localization": {
|
|
44
|
+
"selectedLocales": "Selected locales",
|
|
45
|
+
"selectLocaleToDuplicate": "Select locale to duplicate"
|
|
46
|
+
}
|
|
4
47
|
}
|
|
@@ -1,4 +1,47 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
"$schema": "./translation-schema.json",
|
|
3
|
+
"ai-plugin": {
|
|
4
|
+
"configDashboard": {
|
|
5
|
+
"loadingConfiguration": "در حال بارگذاری پیکربندی...",
|
|
6
|
+
"configureTitle": "بیایید افزونهٔ هوش مصنوعی شما را پیکربندی کنیم",
|
|
7
|
+
"configureSubtitle": "ارائهدهنده را تنظیم کنید → محتوا را انتخاب کنید → رفتار را بهبود دهید.",
|
|
8
|
+
"providers": "ارائهدهندگان",
|
|
9
|
+
"saveChanges": "ذخیره تغییرات",
|
|
10
|
+
"saving": "در حال ذخیره...",
|
|
11
|
+
"selectCollectionsBody": "مجموعههایی را که ویژگیهای هوش مصنوعی باید در آنها در دسترس باشد انتخاب کنید، آنها را روشن یا خاموش کنید و تغییرات خود را ذخیره کنید.",
|
|
12
|
+
"settingsSaved": "تنظیمات با موفقیت ذخیره شد",
|
|
13
|
+
"failedToSave": "ذخیره تنظیمات ناموفق بود",
|
|
14
|
+
"errorSaving": "خطا هنگام ذخیره تنظیمات"
|
|
15
|
+
},
|
|
16
|
+
"actions": {
|
|
17
|
+
"proofread": "ویرایش",
|
|
18
|
+
"rephrase": "بازنویسی",
|
|
19
|
+
"translate": "ترجمه",
|
|
20
|
+
"expand": "گسترش",
|
|
21
|
+
"summarize": "خلاصهسازی",
|
|
22
|
+
"simplify": "سادهسازی",
|
|
23
|
+
"compose": "نگارش",
|
|
24
|
+
"settings": "تنظیمات"
|
|
25
|
+
},
|
|
26
|
+
"actionLoading": {
|
|
27
|
+
"proofreading": "در حال ویرایش",
|
|
28
|
+
"rephrasing": "در حال بازنویسی",
|
|
29
|
+
"translating": "در حال ترجمه",
|
|
30
|
+
"expanding": "در حال گسترش",
|
|
31
|
+
"summarizing": "در حال خلاصهسازی",
|
|
32
|
+
"simplifying": "در حال سادهسازی",
|
|
33
|
+
"composing": "در حال نگارش"
|
|
34
|
+
},
|
|
35
|
+
"general": {
|
|
36
|
+
"search": "جستجو...",
|
|
37
|
+
"queued": "در صف",
|
|
38
|
+
"video": "ویدیو",
|
|
39
|
+
"loading": "در حال بارگذاری...",
|
|
40
|
+
"clickToStop": "برای توقف کلیک کنید"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"localization": {
|
|
44
|
+
"selectedLocales": "Selected locales",
|
|
45
|
+
"selectLocaleToDuplicate": "Select locale to duplicate"
|
|
46
|
+
}
|
|
4
47
|
}
|
|
@@ -1,4 +1,47 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
"$schema": "./translation-schema.json",
|
|
3
|
+
"ai-plugin": {
|
|
4
|
+
"configDashboard": {
|
|
5
|
+
"loadingConfiguration": "Chargement de la configuration...",
|
|
6
|
+
"configureTitle": "Configurons votre plugin IA",
|
|
7
|
+
"configureSubtitle": "Configurez le fournisseur → Choisissez le contenu → Affinez le comportement.",
|
|
8
|
+
"providers": "Fournisseurs",
|
|
9
|
+
"saveChanges": "Enregistrer les modifications",
|
|
10
|
+
"saving": "Enregistrement...",
|
|
11
|
+
"selectCollectionsBody": "Sélectionnez les collections où les fonctionnalités d'IA doivent être disponibles, activez-les ou désactivez-les, puis enregistrez vos modifications.",
|
|
12
|
+
"settingsSaved": "Paramètres enregistrés avec succès",
|
|
13
|
+
"failedToSave": "Échec de l’enregistrement des paramètres",
|
|
14
|
+
"errorSaving": "Erreur lors de l’enregistrement des paramètres"
|
|
15
|
+
},
|
|
16
|
+
"actions": {
|
|
17
|
+
"proofread": "Corriger",
|
|
18
|
+
"rephrase": "Reformuler",
|
|
19
|
+
"translate": "Traduire",
|
|
20
|
+
"expand": "Développer",
|
|
21
|
+
"summarize": "Résumer",
|
|
22
|
+
"simplify": "Simplifier",
|
|
23
|
+
"compose": "Rédiger",
|
|
24
|
+
"settings": "Paramètres"
|
|
25
|
+
},
|
|
26
|
+
"actionLoading": {
|
|
27
|
+
"proofreading": "Correction en cours",
|
|
28
|
+
"rephrasing": "Reformulation en cours",
|
|
29
|
+
"translating": "Traduction en cours",
|
|
30
|
+
"expanding": "Développement en cours",
|
|
31
|
+
"summarizing": "Résumé en cours",
|
|
32
|
+
"simplifying": "Simplification en cours",
|
|
33
|
+
"composing": "Rédaction en cours"
|
|
34
|
+
},
|
|
35
|
+
"general": {
|
|
36
|
+
"search": "Rechercher...",
|
|
37
|
+
"queued": "En attente",
|
|
38
|
+
"video": "Vidéo",
|
|
39
|
+
"loading": "Chargement...",
|
|
40
|
+
"clickToStop": "Cliquer pour arrêter"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"localization": {
|
|
44
|
+
"selectedLocales": "Selected locales",
|
|
45
|
+
"selectLocaleToDuplicate": "Select locale to duplicate"
|
|
46
|
+
}
|
|
47
|
+
}
|