@ai-stack/payloadcms 3.2.5-beta → 3.2.8-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/README.md +13 -2
  2. package/dist/ai/models/anthropic/generateRichText.d.ts.map +1 -1
  3. package/dist/ai/models/elevenLabs/generateVoice.d.ts +1 -2
  4. package/dist/ai/models/elevenLabs/generateVoice.d.ts.map +1 -1
  5. package/dist/ai/models/elevenLabs/generateVoice.js.map +1 -1
  6. package/dist/ai/models/index.d.ts +1 -1
  7. package/dist/ai/models/index.d.ts.map +1 -1
  8. package/dist/ai/models/index.js +1 -1
  9. package/dist/ai/models/index.js.map +1 -1
  10. package/dist/ai/models/openai/generateImage.d.ts.map +1 -1
  11. package/dist/ai/models/openai/generateRichText.d.ts.map +1 -1
  12. package/dist/ai/models/openai/generateRichText.js +5 -9
  13. package/dist/ai/models/openai/generateRichText.js.map +1 -1
  14. package/dist/ai/models/openai/generateVoice.d.ts +1 -1
  15. package/dist/ai/models/openai/generateVoice.d.ts.map +1 -1
  16. package/dist/ai/models/openai/index.d.ts.map +1 -1
  17. package/dist/ai/models/openai/index.js +1 -1
  18. package/dist/ai/models/openai/index.js.map +1 -1
  19. package/dist/ai/models/openai/openai.d.ts +2 -0
  20. package/dist/ai/models/openai/openai.d.ts.map +1 -0
  21. package/dist/ai/models/openai/openai.js +9 -0
  22. package/dist/ai/models/openai/openai.js.map +1 -0
  23. package/dist/ai/prompts.d.ts.map +1 -1
  24. package/dist/ai/schemas/lexicalJsonSchema.d.ts +4 -0
  25. package/dist/ai/schemas/lexicalJsonSchema.d.ts.map +1 -1
  26. package/dist/ai/schemas/lexicalJsonSchema.js +8 -0
  27. package/dist/ai/schemas/lexicalJsonSchema.js.map +1 -1
  28. package/dist/ai/utils/systemGenerate.d.ts +1 -1
  29. package/dist/ai/utils/systemGenerate.d.ts.map +1 -1
  30. package/dist/ai/utils/systemGenerate.js +6 -2
  31. package/dist/ai/utils/systemGenerate.js.map +1 -1
  32. package/dist/collections/Instructions.d.ts +2 -1
  33. package/dist/collections/Instructions.d.ts.map +1 -1
  34. package/dist/collections/Instructions.js +24 -21
  35. package/dist/collections/Instructions.js.map +1 -1
  36. package/dist/endpoints/index.d.ts +2 -2
  37. package/dist/endpoints/index.d.ts.map +1 -1
  38. package/dist/endpoints/index.js +97 -96
  39. package/dist/endpoints/index.js.map +1 -1
  40. package/dist/exports/types.d.ts +1 -1
  41. package/dist/exports/types.d.ts.map +1 -1
  42. package/dist/exports/types.js.map +1 -1
  43. package/dist/fields/ComposeField/ComposeField.d.ts +1 -2
  44. package/dist/fields/ComposeField/ComposeField.d.ts.map +1 -1
  45. package/dist/fields/ComposeField/ComposeField.js.map +1 -1
  46. package/dist/fields/LexicalEditor/ComposeFeatureComponent.d.ts.map +1 -1
  47. package/dist/fields/LexicalEditor/feature.client.d.ts.map +1 -1
  48. package/dist/fields/LexicalEditor/feature.client.js.map +1 -1
  49. package/dist/fields/LexicalEditor/feature.server.d.ts.map +1 -1
  50. package/dist/fields/LexicalEditor/feature.server.js +2 -3
  51. package/dist/fields/LexicalEditor/feature.server.js.map +1 -1
  52. package/dist/fields/PromptEditorField/PromptEditorField.d.ts.map +1 -1
  53. package/dist/fields/PromptEditorField/PromptEditorField.js +5 -1
  54. package/dist/fields/PromptEditorField/PromptEditorField.js.map +1 -1
  55. package/dist/fields/SelectField/SelectField.d.ts.map +1 -1
  56. package/dist/init.d.ts.map +1 -1
  57. package/dist/init.js +5 -3
  58. package/dist/init.js.map +1 -1
  59. package/dist/libraries/autocomplete/AutocompleteTextArea.d.ts.map +1 -1
  60. package/dist/libraries/handlebars/helpers.d.ts.map +1 -1
  61. package/dist/libraries/handlebars/replacePlaceholders.d.ts +1 -1
  62. package/dist/libraries/handlebars/replacePlaceholders.d.ts.map +1 -1
  63. package/dist/libraries/handlebars/replacePlaceholders.js.map +1 -1
  64. package/dist/plugin.d.ts.map +1 -1
  65. package/dist/plugin.js +10 -5
  66. package/dist/plugin.js.map +1 -1
  67. package/dist/providers/FieldProvider/FieldProvider.d.ts.map +1 -1
  68. package/dist/providers/InstructionsProvider/useInstructions.d.ts.map +1 -1
  69. package/dist/types.d.ts +3 -1
  70. package/dist/types.d.ts.map +1 -1
  71. package/dist/types.js.map +1 -1
  72. package/dist/ui/Compose/Compose.d.ts +7 -3
  73. package/dist/ui/Compose/Compose.d.ts.map +1 -1
  74. package/dist/ui/Compose/Compose.js +37 -15
  75. package/dist/ui/Compose/Compose.js.map +1 -1
  76. package/dist/ui/Compose/UndoRedoActions.d.ts.map +1 -1
  77. package/dist/ui/Compose/UndoRedoActions.js +9 -9
  78. package/dist/ui/Compose/UndoRedoActions.js.map +1 -1
  79. package/dist/ui/Compose/compose.module.css +2 -0
  80. package/dist/ui/Compose/hooks/menu/Item.d.ts.map +1 -1
  81. package/dist/ui/Compose/hooks/menu/TranslateMenu.d.ts.map +1 -1
  82. package/dist/ui/Compose/hooks/menu/useMenu.d.ts.map +1 -1
  83. package/dist/ui/Compose/hooks/menu/useMenu.js +2 -4
  84. package/dist/ui/Compose/hooks/menu/useMenu.js.map +1 -1
  85. package/dist/ui/Compose/hooks/useGenerate.d.ts.map +1 -1
  86. package/dist/ui/Compose/hooks/useGenerate.js +22 -9
  87. package/dist/ui/Compose/hooks/useGenerate.js.map +1 -1
  88. package/dist/ui/Icons/Icons.d.ts.map +1 -1
  89. package/dist/ui/Icons/LottieAnimation.d.ts.map +1 -1
  90. package/dist/utilities/editorSchemaValidator.d.ts.map +1 -1
  91. package/dist/utilities/editorSchemaValidator.js +2 -1
  92. package/dist/utilities/editorSchemaValidator.js.map +1 -1
  93. package/dist/utilities/getFieldBySchemaPath.d.ts.map +1 -1
  94. package/dist/utilities/getFieldInfo.d.ts.map +1 -1
  95. package/dist/utilities/getGenerationModels.d.ts +3 -0
  96. package/dist/utilities/getGenerationModels.d.ts.map +1 -0
  97. package/dist/utilities/getGenerationModels.js +10 -0
  98. package/dist/utilities/getGenerationModels.js.map +1 -0
  99. package/dist/utilities/isPluginActivated.d.ts +2 -1
  100. package/dist/utilities/isPluginActivated.d.ts.map +1 -1
  101. package/dist/utilities/isPluginActivated.js +3 -2
  102. package/dist/utilities/isPluginActivated.js.map +1 -1
  103. package/dist/utilities/setSafeLexicalState.d.ts.map +1 -1
  104. package/dist/utilities/setSafeLexicalState.js +1 -1
  105. package/dist/utilities/setSafeLexicalState.js.map +1 -1
  106. package/dist/utilities/updateFieldsConfig.d.ts.map +1 -1
  107. package/package.json +8 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/ui/Compose/hooks/useGenerate.ts"],"sourcesContent":["import { useEditorConfigContext } from '@payloadcms/richtext-lexical/client'\nimport { useConfig, useField, useForm, useLocale } from '@payloadcms/ui'\nimport { jsonSchema } from 'ai'\nimport { useCompletion, experimental_useObject as useObject } from 'ai/react'\nimport { useCallback, useEffect, useMemo } from 'react'\n\nimport type { ActionMenuItems, GenerateTextarea } from '../../../types.js'\n\nimport {\n PLUGIN_API_ENDPOINT_GENERATE,\n PLUGIN_API_ENDPOINT_GENERATE_UPLOAD,\n PLUGIN_INSTRUCTIONS_TABLE,\n PLUGIN_NAME,\n} from '../../../defaults.js'\nimport { useFieldProps } from '../../../providers/FieldProvider/useFieldProps.js'\nimport { editorSchemaValidator } from '../../../utilities/editorSchemaValidator.js'\nimport { setSafeLexicalState } from '../../../utilities/setSafeLexicalState.js'\nimport { useHistory } from './useHistory.js'\n\ntype ActionCallbackParams = { action: ActionMenuItems; params?: unknown }\n\nexport const useGenerate = ({ instructionId }: { instructionId: string }) => {\n const { type, path: pathFromContext } = useFieldProps()\n const editorConfigContext = useEditorConfigContext()\n\n const { editor } = editorConfigContext\n\n const { config } = useConfig()\n const {\n routes: { api },\n serverURL,\n } = config\n\n const { setValue } = useField<string>({\n path: pathFromContext,\n })\n\n const { set: setHistory } = useHistory()\n\n const { getData } = useForm()\n const localFromContext = useLocale()\n const {\n config: { collections },\n } = useConfig()\n\n const collection = collections.find((collection) => collection.slug === PLUGIN_INSTRUCTIONS_TABLE)\n const { custom: { [PLUGIN_NAME]: { editorConfig = {} } = {} } = {} } = collection.admin\n const { schema: editorSchema = {} } = editorConfig\n\n const memoizedValidator = useMemo(() => {\n return editorSchemaValidator(editorSchema)\n }, [editorSchema])\n\n const memoizedSchema = useMemo(\n () =>\n jsonSchema(editorSchema, {\n validate: (value) => {\n const isValid = memoizedValidator(value)\n\n if (isValid) {\n return {\n success: true,\n value,\n }\n } else {\n return {\n error: new Error('Invalid schema'),\n success: false,\n }\n }\n },\n }),\n [memoizedValidator],\n )\n\n const {\n isLoading: loadingObject,\n object,\n stop: objectStop,\n submit,\n } = useObject({\n api: `/api${PLUGIN_API_ENDPOINT_GENERATE}`,\n onError: (error) => {\n console.error('Error generating object:', error)\n },\n onFinish: (result) => {\n if (result.object) {\n setHistory(result.object)\n setValue(result.object)\n } else {\n console.log('onFinish: result ', result)\n }\n },\n schema: memoizedSchema,\n })\n\n useEffect(() => {\n if (!object) return\n\n requestAnimationFrame(() => {\n const validateObject = memoizedSchema.validate(object)\n if (validateObject?.success) {\n setSafeLexicalState(object, editor)\n }\n })\n }, [object, editorSchema])\n\n const {\n complete,\n completion,\n isLoading: loadingCompletion,\n stop: completionStop,\n } = useCompletion({\n api: `${serverURL}${api}${PLUGIN_API_ENDPOINT_GENERATE}`,\n onError: (error) => {\n console.error('Error generating text:', error)\n },\n onFinish: (prompt, result) => {\n setHistory(result)\n },\n streamProtocol: 'data',\n })\n\n useEffect(() => {\n if (!completion) return\n\n requestAnimationFrame(() => {\n setValue(completion)\n })\n }, [completion])\n\n const streamObject = useCallback(\n ({ action = 'Compose', params }: ActionCallbackParams) => {\n const doc = getData()\n const options = {\n action,\n actionParams: params,\n instructionId,\n }\n\n submit({\n doc,\n locale: localFromContext?.code,\n options,\n })\n },\n [getData, localFromContext?.code, instructionId],\n )\n\n const streamText = useCallback(\n async ({ action = 'Compose', params }: ActionCallbackParams) => {\n const doc = getData()\n\n const options = {\n action,\n actionParams: params,\n instructionId,\n }\n\n await complete('', {\n body: {\n doc,\n locale: localFromContext?.code,\n options,\n },\n })\n },\n [getData, localFromContext?.code, instructionId],\n )\n\n const generateUpload = useCallback(async () => {\n const doc = getData()\n\n return fetch(`${serverURL}${api}${PLUGIN_API_ENDPOINT_GENERATE_UPLOAD}`, {\n body: JSON.stringify({\n doc,\n locale: localFromContext?.code,\n options: {\n instructionId,\n },\n } satisfies Parameters<GenerateTextarea>[0]),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n .then(async (uploadResponse) => {\n if (uploadResponse.ok) {\n const { result } = await uploadResponse.json()\n if (!result) throw new Error('generateUpload: Something went wrong')\n\n setValue(result?.id)\n setHistory(result?.id)\n } else {\n const { errors = [] } = await uploadResponse.json()\n const errStr = errors.map((error) => error.message).join(', ')\n throw new Error(errStr)\n }\n return uploadResponse\n })\n .catch((error) => {\n console.error('Error generating or setting your upload, please set it manually if its saved in your media files: ', error)\n })\n }, [getData, localFromContext?.code, instructionId])\n\n const generate = useCallback(\n async (options?: ActionCallbackParams) => {\n if (type === 'richText') {\n return streamObject(options)\n }\n\n if (['text', 'textarea'].includes(type)) {\n return streamText(options)\n }\n\n if (type === 'upload') {\n return generateUpload()\n }\n },\n [generateUpload, streamObject, streamText, type],\n )\n\n const stop = useCallback(() => {\n console.log('Stopping...')\n objectStop()\n completionStop()\n }, [objectStop, completionStop])\n\n return {\n generate,\n isLoading: loadingCompletion || loadingObject,\n stop\n }\n}\n"],"names":["useEditorConfigContext","useConfig","useField","useForm","useLocale","jsonSchema","useCompletion","experimental_useObject","useObject","useCallback","useEffect","useMemo","PLUGIN_API_ENDPOINT_GENERATE","PLUGIN_API_ENDPOINT_GENERATE_UPLOAD","PLUGIN_INSTRUCTIONS_TABLE","PLUGIN_NAME","useFieldProps","editorSchemaValidator","setSafeLexicalState","useHistory","useGenerate","instructionId","type","path","pathFromContext","editorConfigContext","editor","config","routes","api","serverURL","setValue","set","setHistory","getData","localFromContext","collections","collection","find","slug","custom","editorConfig","admin","schema","editorSchema","memoizedValidator","memoizedSchema","validate","value","isValid","success","error","Error","isLoading","loadingObject","object","stop","objectStop","submit","onError","console","onFinish","result","log","requestAnimationFrame","validateObject","complete","completion","loadingCompletion","completionStop","prompt","streamProtocol","streamObject","action","params","doc","options","actionParams","locale","code","streamText","body","generateUpload","fetch","JSON","stringify","credentials","headers","method","then","uploadResponse","ok","json","id","errors","errStr","map","message","join","catch","generate","includes"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/ui/Compose/hooks/useGenerate.ts"],"sourcesContent":["import { useEditorConfigContext } from '@payloadcms/richtext-lexical/client'\nimport { useConfig, useField, useForm, useLocale } from '@payloadcms/ui'\nimport { jsonSchema } from 'ai'\nimport { useCompletion, experimental_useObject as useObject } from 'ai/react'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\n\nimport type { ActionMenuItems, GenerateTextarea } from '../../../types.js'\n\nimport {\n PLUGIN_API_ENDPOINT_GENERATE,\n PLUGIN_API_ENDPOINT_GENERATE_UPLOAD,\n PLUGIN_INSTRUCTIONS_TABLE,\n PLUGIN_NAME,\n} from '../../../defaults.js'\nimport { useFieldProps } from '../../../providers/FieldProvider/useFieldProps.js'\nimport { editorSchemaValidator } from '../../../utilities/editorSchemaValidator.js'\nimport { setSafeLexicalState } from '../../../utilities/setSafeLexicalState.js'\nimport { useHistory } from './useHistory.js'\n\ntype ActionCallbackParams = { action: ActionMenuItems; params?: unknown }\n\nexport const useGenerate = ({ instructionId }: { instructionId: string }) => {\n // Create a ref to hold the current instructionId\n const instructionIdRef = useRef(instructionId)\n\n // Update the ref whenever instructionId changes\n useEffect(() => {\n instructionIdRef.current = instructionId\n }, [instructionId])\n\n const { type, path: pathFromContext } = useFieldProps()\n const editorConfigContext = useEditorConfigContext()\n\n const { editor } = editorConfigContext\n\n const { config } = useConfig()\n const {\n routes: { api },\n serverURL,\n } = config\n\n const { setValue } = useField<string>({\n path: pathFromContext,\n })\n\n const { set: setHistory } = useHistory()\n\n const { getData } = useForm()\n const localFromContext = useLocale()\n const {\n config: { collections },\n } = useConfig()\n\n const collection = collections.find((collection) => collection.slug === PLUGIN_INSTRUCTIONS_TABLE)\n const { custom: { [PLUGIN_NAME]: { editorConfig = {} } = {} } = {} } = collection.admin\n const { schema: editorSchema = {} } = editorConfig\n\n const memoizedValidator = useMemo(() => {\n return editorSchemaValidator(editorSchema)\n }, [editorSchema])\n\n const memoizedSchema = useMemo(\n () =>\n jsonSchema(editorSchema, {\n validate: (value) => {\n const isValid = memoizedValidator(value)\n\n if (isValid) {\n return {\n success: true,\n value,\n }\n } else {\n return {\n error: new Error('Invalid schema'),\n success: false,\n }\n }\n },\n }),\n [memoizedValidator],\n )\n\n const {\n isLoading: loadingObject,\n object,\n stop: objectStop,\n submit,\n } = useObject({\n api: `/api${PLUGIN_API_ENDPOINT_GENERATE}`,\n onError: (error) => {\n console.error('Error generating object:', error)\n },\n onFinish: (result) => {\n if (result.object) {\n setHistory(result.object)\n setValue(result.object)\n } else {\n console.log('onFinish: result ', result)\n }\n },\n schema: memoizedSchema,\n })\n\n useEffect(() => {\n if (!object) return\n\n requestAnimationFrame(() => {\n const validateObject = memoizedSchema.validate(object)\n if (validateObject?.success) {\n setSafeLexicalState(object, editor)\n }\n })\n }, [object, editor])\n\n const {\n complete,\n completion,\n isLoading: loadingCompletion,\n stop: completionStop,\n } = useCompletion({\n api: `${serverURL}${api}${PLUGIN_API_ENDPOINT_GENERATE}`,\n onError: (error) => {\n console.error('Error generating text:', error)\n },\n onFinish: (prompt, result) => {\n setHistory(result)\n },\n streamProtocol: 'data',\n })\n\n useEffect(() => {\n if (!completion) return\n\n requestAnimationFrame(() => {\n setValue(completion)\n })\n }, [completion])\n\n const streamObject = useCallback(\n ({ action = 'Compose', params }: ActionCallbackParams) => {\n const doc = getData()\n\n const currentInstructionId = instructionIdRef.current\n\n const options = {\n action,\n actionParams: params,\n instructionId: currentInstructionId,\n }\n\n submit({\n doc,\n locale: localFromContext?.code,\n options,\n })\n },\n [localFromContext?.code, instructionIdRef],\n )\n\n const streamText = useCallback(\n async ({ action = 'Compose', params }: ActionCallbackParams) => {\n const doc = getData()\n const currentInstructionId = instructionIdRef.current\n\n const options = {\n action,\n actionParams: params,\n instructionId: currentInstructionId,\n }\n\n await complete('', {\n body: {\n doc,\n locale: localFromContext?.code,\n options,\n },\n })\n },\n [getData, localFromContext?.code, instructionIdRef, complete],\n )\n\n const generateUpload = useCallback(async () => {\n const doc = getData()\n const currentInstructionId = instructionIdRef.current\n\n return fetch(`${serverURL}${api}${PLUGIN_API_ENDPOINT_GENERATE_UPLOAD}`, {\n body: JSON.stringify({\n doc,\n locale: localFromContext?.code,\n options: {\n instructionId: currentInstructionId,\n },\n } satisfies Parameters<GenerateTextarea>[0]),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n .then(async (uploadResponse) => {\n if (uploadResponse.ok) {\n const { result } = await uploadResponse.json()\n if (!result) throw new Error('generateUpload: Something went wrong')\n\n setValue(result?.id)\n setHistory(result?.id)\n console.log('Image updated...', result)\n } else {\n const { errors = [] } = await uploadResponse.json()\n const errStr = errors.map((error) => error.message).join(', ')\n throw new Error(errStr)\n }\n return uploadResponse\n })\n .catch((error) => {\n console.error(\n 'Error generating or setting your upload, please set it manually if its saved in your media files: ',\n error,\n )\n })\n }, [getData, localFromContext?.code, instructionIdRef, setValue])\n\n const generate = useCallback(\n async (options?: ActionCallbackParams) => {\n if (type === 'richText') {\n return streamObject(options)\n }\n\n if (['text', 'textarea'].includes(type)) {\n return streamText(options)\n }\n\n if (type === 'upload') {\n return generateUpload()\n }\n },\n [generateUpload, streamObject, streamText, type],\n )\n\n const stop = useCallback(() => {\n console.log('Stopping...')\n objectStop()\n completionStop()\n }, [objectStop, completionStop])\n\n return {\n generate,\n isLoading: loadingCompletion || loadingObject,\n stop,\n }\n}\n"],"names":["useEditorConfigContext","useConfig","useField","useForm","useLocale","jsonSchema","useCompletion","experimental_useObject","useObject","useCallback","useEffect","useMemo","useRef","PLUGIN_API_ENDPOINT_GENERATE","PLUGIN_API_ENDPOINT_GENERATE_UPLOAD","PLUGIN_INSTRUCTIONS_TABLE","PLUGIN_NAME","useFieldProps","editorSchemaValidator","setSafeLexicalState","useHistory","useGenerate","instructionId","instructionIdRef","current","type","path","pathFromContext","editorConfigContext","editor","config","routes","api","serverURL","setValue","set","setHistory","getData","localFromContext","collections","collection","find","slug","custom","editorConfig","admin","schema","editorSchema","memoizedValidator","memoizedSchema","validate","value","isValid","success","error","Error","isLoading","loadingObject","object","stop","objectStop","submit","onError","console","onFinish","result","log","requestAnimationFrame","validateObject","complete","completion","loadingCompletion","completionStop","prompt","streamProtocol","streamObject","action","params","doc","currentInstructionId","options","actionParams","locale","code","streamText","body","generateUpload","fetch","JSON","stringify","credentials","headers","method","then","uploadResponse","ok","json","id","errors","errStr","map","message","join","catch","generate","includes"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Icons.d.ts","sourceRoot":"","sources":["../../../src/ui/Icons/Icons.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU;;;6CAMtB,CAAA;AAED,eAAO,MAAM,QAAQ;;;6CAQpB,CAAA;AAED,eAAO,MAAM,gBAAgB;;;6CAQ5B,CAAA;AAED,eAAO,MAAM,cAAc;;;6CAQ1B,CAAA;AAED,eAAO,MAAM,aAAa;;;6CAQzB,CAAA;AAED,eAAO,MAAM,aAAa;;;6CAQzB,CAAA;AAED,eAAO,MAAM,aAAa;;;6CAQzB,CAAA;AAED,eAAO,MAAM,WAAW;;;6CAQvB,CAAA;AAED,eAAO,MAAM,cAAc;;;6CAQ1B,CAAA;AAED,eAAO,MAAM,YAAY;;;6CAQxB,CAAA;AAED,eAAO,MAAM,SAAS;;;6CAQrB,CAAA"}
1
+ {"version":3,"file":"Icons.d.ts","sourceRoot":"","sources":["../../../src/ui/Icons/Icons.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU,GAAI;;;CAA8B,4CAMxD,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI;;;CAA8B,4CAQtD,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI;;;CAA8B,4CAQ9D,CAAA;AAED,eAAO,MAAM,cAAc,GAAI;;;CAA8B,4CAQ5D,CAAA;AAED,eAAO,MAAM,aAAa,GAAI;;;CAA8B,4CAQ3D,CAAA;AAED,eAAO,MAAM,aAAa,GAAI;;;CAA8B,4CAQ3D,CAAA;AAED,eAAO,MAAM,aAAa,GAAI;;;CAA8B,4CAQ3D,CAAA;AAED,eAAO,MAAM,WAAW,GAAI;;;CAA8B,4CAQzD,CAAA;AAED,eAAO,MAAM,cAAc,GAAI;;;CAA8B,4CAQ5D,CAAA;AAED,eAAO,MAAM,YAAY,GAAI;;;CAA8B,4CAQ1D,CAAA;AAED,eAAO,MAAM,SAAS,GAAI;;;CAA8B,4CAQvD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"LottieAnimation.d.ts","sourceRoot":"","sources":["../../../src/ui/Icons/LottieAnimation.tsx"],"names":[],"mappings":"AAIA,QAAA,MAAM,eAAe;;6CAqEpB,CAAA;AAED,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"LottieAnimation.d.ts","sourceRoot":"","sources":["../../../src/ui/Icons/LottieAnimation.tsx"],"names":[],"mappings":"AAIA,QAAA,MAAM,eAAe,GAAI;;CAAqB,4CAqE7C,CAAA;AAED,eAAe,eAAe,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"editorSchemaValidator.d.ts","sourceRoot":"","sources":["../../src/utilities/editorSchemaValidator.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,KAAK,CAAA;AAE3B,eAAO,MAAM,qBAAqB,sDAkCjC,CAAA"}
1
+ {"version":3,"file":"editorSchemaValidator.d.ts","sourceRoot":"","sources":["../../src/utilities/editorSchemaValidator.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,KAAK,CAAA;AAE3B,eAAO,MAAM,qBAAqB,GAAI,WAAM,wCA+B3C,CAAA"}
@@ -8,7 +8,8 @@ export const editorSchemaValidator = (schema)=>{
8
8
  if (parentProperties) {
9
9
  const requiredFields = [
10
10
  'type'
11
- ]; // type is always required
11
+ ] // type is always required
12
+ ;
12
13
  // Check if this node has children property
13
14
  if ('children' in parentProperties) {
14
15
  requiredFields.push('children');
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/editorSchemaValidator.ts"],"sourcesContent":["import ajvModule from 'ajv'\n\nexport const editorSchemaValidator = (schema) => {\n const modifiedSchema = JSON.parse(\n JSON.stringify(schema),\n function (key: string, value: any) {\n if (key === 'required' && Array.isArray(value)) {\n // Safely access properties from parent\n const parent = this as { properties?: Record<string, any> };\n const parentProperties = parent.properties;\n\n if (parentProperties) {\n const requiredFields = ['type']; // type is always required\n\n // Check if this node has children property\n if ('children' in parentProperties) {\n requiredFields.push('children');\n }\n\n // Check if this node has text property\n if ('text' in parentProperties) {\n requiredFields.push('text');\n }\n\n const filteredRequired = value.filter((field) => requiredFields.includes(field));\n return filteredRequired.length ? filteredRequired : undefined;\n }\n }\n return value;\n },\n );\n\n const Ajv = ajvModule.default\n const ajv = new Ajv()\n\n return ajv.compile(modifiedSchema)\n}"],"names":["ajvModule","editorSchemaValidator","schema","modifiedSchema","JSON","parse","stringify","key","value","Array","isArray","parent","parentProperties","properties","requiredFields","push","filteredRequired","filter","field","includes","length","undefined","Ajv","default","ajv","compile"],"mappings":"AAAA,OAAOA,eAAe,MAAK;AAE3B,OAAO,MAAMC,wBAAwB,CAACC;IACpC,MAAMC,iBAAiBC,KAAKC,KAAK,CAC/BD,KAAKE,SAAS,CAACJ,SACf,SAAUK,GAAW,EAAEC,KAAU;QAC/B,IAAID,QAAQ,cAAcE,MAAMC,OAAO,CAACF,QAAQ;YAC9C,uCAAuC;YACvC,MAAMG,SAAS,IAAI;YACnB,MAAMC,mBAAmBD,OAAOE,UAAU;YAE1C,IAAID,kBAAkB;gBACpB,MAAME,iBAAiB;oBAAC;iBAAO,EAAE,0BAA0B;gBAE3D,2CAA2C;gBAC3C,IAAI,cAAcF,kBAAkB;oBAClCE,eAAeC,IAAI,CAAC;gBACtB;gBAEA,uCAAuC;gBACvC,IAAI,UAAUH,kBAAkB;oBAC9BE,eAAeC,IAAI,CAAC;gBACtB;gBAEA,MAAMC,mBAAmBR,MAAMS,MAAM,CAAC,CAACC,QAAUJ,eAAeK,QAAQ,CAACD;gBACzE,OAAOF,iBAAiBI,MAAM,GAAGJ,mBAAmBK;YACtD;QACF;QACA,OAAOb;IACT;IAGF,MAAMc,MAAMtB,UAAUuB,OAAO;IAC7B,MAAMC,MAAM,IAAIF;IAEhB,OAAOE,IAAIC,OAAO,CAACtB;AACrB,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/editorSchemaValidator.ts"],"sourcesContent":["import ajvModule from 'ajv'\n\nexport const editorSchemaValidator = (schema) => {\n const modifiedSchema = JSON.parse(JSON.stringify(schema), function (key: string, value: any) {\n if (key === 'required' && Array.isArray(value)) {\n // Safely access properties from parent\n const parent = this as { properties?: Record<string, any> }\n const parentProperties = parent.properties\n\n if (parentProperties) {\n const requiredFields = ['type'] // type is always required\n\n // Check if this node has children property\n if ('children' in parentProperties) {\n requiredFields.push('children')\n }\n\n // Check if this node has text property\n if ('text' in parentProperties) {\n requiredFields.push('text')\n }\n\n const filteredRequired = value.filter((field) => requiredFields.includes(field))\n return filteredRequired.length ? filteredRequired : undefined\n }\n }\n return value\n })\n\n const Ajv = ajvModule.default\n const ajv = new Ajv()\n\n return ajv.compile(modifiedSchema)\n}\n"],"names":["ajvModule","editorSchemaValidator","schema","modifiedSchema","JSON","parse","stringify","key","value","Array","isArray","parent","parentProperties","properties","requiredFields","push","filteredRequired","filter","field","includes","length","undefined","Ajv","default","ajv","compile"],"mappings":"AAAA,OAAOA,eAAe,MAAK;AAE3B,OAAO,MAAMC,wBAAwB,CAACC;IACpC,MAAMC,iBAAiBC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACJ,SAAS,SAAUK,GAAW,EAAEC,KAAU;QACzF,IAAID,QAAQ,cAAcE,MAAMC,OAAO,CAACF,QAAQ;YAC9C,uCAAuC;YACvC,MAAMG,SAAS,IAAI;YACnB,MAAMC,mBAAmBD,OAAOE,UAAU;YAE1C,IAAID,kBAAkB;gBACpB,MAAME,iBAAiB;oBAAC;iBAAO,CAAC,0BAA0B;;gBAE1D,2CAA2C;gBAC3C,IAAI,cAAcF,kBAAkB;oBAClCE,eAAeC,IAAI,CAAC;gBACtB;gBAEA,uCAAuC;gBACvC,IAAI,UAAUH,kBAAkB;oBAC9BE,eAAeC,IAAI,CAAC;gBACtB;gBAEA,MAAMC,mBAAmBR,MAAMS,MAAM,CAAC,CAACC,QAAUJ,eAAeK,QAAQ,CAACD;gBACzE,OAAOF,iBAAiBI,MAAM,GAAGJ,mBAAmBK;YACtD;QACF;QACA,OAAOb;IACT;IAEA,MAAMc,MAAMtB,UAAUuB,OAAO;IAC7B,MAAMC,MAAM,IAAIF;IAEhB,OAAOE,IAAIC,OAAO,CAACtB;AACrB,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getFieldBySchemaPath.d.ts","sourceRoot":"","sources":["../../src/utilities/getFieldBySchemaPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE9E,eAAO,MAAM,oBAAoB,qBACb,sBAAsB,GAAG,gBAAgB,cAC/C,MAAM,KACjB,KAAK,GAAG,IAyCV,CAAA"}
1
+ {"version":3,"file":"getFieldBySchemaPath.d.ts","sourceRoot":"","sources":["../../src/utilities/getFieldBySchemaPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE9E,eAAO,MAAM,oBAAoB,GAC/B,kBAAkB,sBAAsB,GAAG,gBAAgB,EAC3D,YAAY,MAAM,KACjB,KAAK,GAAG,IAyCV,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getFieldInfo.d.ts","sourceRoot":"","sources":["../../src/utilities/getFieldInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAI1C,eAAO,MAAM,YAAY,gBAAiB,WAAW,CAAC,aAAa,CAAC,cAAc,MAAM,QAUvF,CAAA"}
1
+ {"version":3,"file":"getFieldInfo.d.ts","sourceRoot":"","sources":["../../src/utilities/getFieldInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAI1C,eAAO,MAAM,YAAY,GAAI,aAAa,WAAW,CAAC,aAAa,CAAC,EAAE,YAAY,MAAM,QAUvF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { PluginConfig } from '../types.js';
2
+ export declare function getGenerationModels(pluginConfig: PluginConfig): import("../types.js").GenerationModel[];
3
+ //# sourceMappingURL=getGenerationModels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getGenerationModels.d.ts","sourceRoot":"","sources":["../../src/utilities/getGenerationModels.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,YAAY,2CAO3B"}
@@ -0,0 +1,10 @@
1
+ import { defaultGenerationModels } from '../ai/models/index.js';
2
+ export function getGenerationModels(pluginConfig) {
3
+ const { generationModels } = pluginConfig;
4
+ if (typeof generationModels === 'function') {
5
+ return generationModels(defaultGenerationModels);
6
+ }
7
+ return generationModels;
8
+ }
9
+
10
+ //# sourceMappingURL=getGenerationModels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/getGenerationModels.ts"],"sourcesContent":["import { defaultGenerationModels } from '../ai/models/index.js'\nimport { PluginConfig } from '../types.js'\n\nexport function getGenerationModels(\n pluginConfig: PluginConfig,\n) {\n const { generationModels } = pluginConfig\n if (typeof generationModels === 'function') {\n return generationModels(defaultGenerationModels)\n }\n return generationModels\n}\n"],"names":["defaultGenerationModels","getGenerationModels","pluginConfig","generationModels"],"mappings":"AAAA,SAASA,uBAAuB,QAAQ,wBAAuB;AAG/D,OAAO,SAASC,oBACdC,YAA0B;IAE1B,MAAM,EAAEC,gBAAgB,EAAE,GAAGD;IAC7B,IAAI,OAAOC,qBAAqB,YAAY;QAC1C,OAAOA,iBAAiBH;IAC1B;IACA,OAAOG;AACT"}
@@ -1,2 +1,3 @@
1
- export declare const isPluginActivated: () => string;
1
+ import { PluginConfig } from '../types.js';
2
+ export declare const isPluginActivated: (pluginConfig: PluginConfig) => boolean;
2
3
  //# sourceMappingURL=isPluginActivated.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"isPluginActivated.d.ts","sourceRoot":"","sources":["../../src/utilities/isPluginActivated.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,cAE7B,CAAA"}
1
+ {"version":3,"file":"isPluginActivated.d.ts","sourceRoot":"","sources":["../../src/utilities/isPluginActivated.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,eAAO,MAAM,iBAAiB,GAAI,cAAc,YAAY,YAE3D,CAAA"}
@@ -1,5 +1,6 @@
1
- export const isPluginActivated = ()=>{
2
- return process.env.OPENAI_API_KEY || process.env.ANTHROPIC_API_KEY;
1
+ import { getGenerationModels } from './getGenerationModels.js';
2
+ export const isPluginActivated = (pluginConfig)=>{
3
+ return getGenerationModels(pluginConfig).length > 0;
3
4
  };
4
5
 
5
6
  //# sourceMappingURL=isPluginActivated.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/isPluginActivated.ts"],"sourcesContent":["export const isPluginActivated = () => {\n return process.env.OPENAI_API_KEY || process.env.ANTHROPIC_API_KEY\n}\n"],"names":["isPluginActivated","process","env","OPENAI_API_KEY","ANTHROPIC_API_KEY"],"mappings":"AAAA,OAAO,MAAMA,oBAAoB;IAC/B,OAAOC,QAAQC,GAAG,CAACC,cAAc,IAAIF,QAAQC,GAAG,CAACE,iBAAiB;AACpE,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/isPluginActivated.ts"],"sourcesContent":["import { getGenerationModels } from './getGenerationModels.js'\nimport { PluginConfig } from '../types.js'\n\nexport const isPluginActivated = (pluginConfig: PluginConfig) => {\n return getGenerationModels(pluginConfig).length > 0\n}\n"],"names":["getGenerationModels","isPluginActivated","pluginConfig","length"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,2BAA0B;AAG9D,OAAO,MAAMC,oBAAoB,CAACC;IAChC,OAAOF,oBAAoBE,cAAcC,MAAM,GAAG;AACpD,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"setSafeLexicalState.d.ts","sourceRoot":"","sources":["../../src/utilities/setSafeLexicalState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,KAAK,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAA;AAExC,eAAO,MAAM,mBAAmB,+BAEd,aAAa,WACrB,YAAY,SAYrB,CAAA"}
1
+ {"version":3,"file":"setSafeLexicalState.d.ts","sourceRoot":"","sources":["../../src/utilities/setSafeLexicalState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,KAAK,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAA;AAExC,eAAO,MAAM,mBAAmB,GAC9B,UAAK,EACL,gBAAgB,aAAa,EAC7B,SAAQ,YAAwB,SAYjC,CAAA"}
@@ -6,7 +6,7 @@ export const setSafeLexicalState = (state, editorInstance, action = 'replace')=>
6
6
  }
7
7
  editorInstance.setEditorState(editorState);
8
8
  } catch (e) {
9
- // console.error('Shh....:', e)
9
+ console.error('Error setting editor state: ', e);
10
10
  }
11
11
  };
12
12
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/setSafeLexicalState.ts"],"sourcesContent":["import type { LexicalEditor } from 'lexical'\n\ntype EditorAction = 'replace' | 'update'\n\nexport const setSafeLexicalState = (\n state,\n editorInstance: LexicalEditor,\n action: EditorAction = 'replace',\n) => {\n try {\n const editorState = editorInstance.parseEditorState(state)\n if (editorState.isEmpty()) {\n return\n }\n\n editorInstance.setEditorState(editorState)\n } catch (e) {\n // console.error('Shh....:', e)\n }\n}\n"],"names":["setSafeLexicalState","state","editorInstance","action","editorState","parseEditorState","isEmpty","setEditorState","e"],"mappings":"AAIA,OAAO,MAAMA,sBAAsB,CACjCC,OACAC,gBACAC,SAAuB,SAAS;IAEhC,IAAI;QACF,MAAMC,cAAcF,eAAeG,gBAAgB,CAACJ;QACpD,IAAIG,YAAYE,OAAO,IAAI;YACzB;QACF;QAEAJ,eAAeK,cAAc,CAACH;IAChC,EAAE,OAAOI,GAAG;IACV,+BAA+B;IACjC;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/setSafeLexicalState.ts"],"sourcesContent":["import type { LexicalEditor } from 'lexical'\n\ntype EditorAction = 'replace' | 'update'\n\nexport const setSafeLexicalState = (\n state,\n editorInstance: LexicalEditor,\n action: EditorAction = 'replace',\n) => {\n try {\n const editorState = editorInstance.parseEditorState(state)\n if (editorState.isEmpty()) {\n return\n }\n\n editorInstance.setEditorState(editorState)\n } catch (e) {\n console.error('Error setting editor state: ', e)\n }\n}\n"],"names":["setSafeLexicalState","state","editorInstance","action","editorState","parseEditorState","isEmpty","setEditorState","e","console","error"],"mappings":"AAIA,OAAO,MAAMA,sBAAsB,CACjCC,OACAC,gBACAC,SAAuB,SAAS;IAEhC,IAAI;QACF,MAAMC,cAAcF,eAAeG,gBAAgB,CAACJ;QACpD,IAAIG,YAAYE,OAAO,IAAI;YACzB;QACF;QAEAJ,eAAeK,cAAc,CAACH;IAChC,EAAE,OAAOI,GAAG;QACVC,QAAQC,KAAK,CAAC,gCAAgCF;IAChD;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateFieldsConfig.d.ts","sourceRoot":"","sources":["../../src/utilities/updateFieldsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,UAAU,kBAAkB;IAC1B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,uBAAuB,EAAE,gBAAgB,CAAA;CAC1C;AAED,eAAO,MAAM,kBAAkB,qBAAsB,gBAAgB,KAAG,kBAkGvE,CAAA"}
1
+ {"version":3,"file":"updateFieldsConfig.d.ts","sourceRoot":"","sources":["../../src/utilities/updateFieldsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,UAAU,kBAAkB;IAC1B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,uBAAuB,EAAE,gBAAgB,CAAA;CAC1C;AAED,eAAO,MAAM,kBAAkB,GAAI,kBAAkB,gBAAgB,KAAG,kBAkGvE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-stack/payloadcms",
3
- "version": "3.2.5-beta",
3
+ "version": "3.2.8-beta",
4
4
  "private": false,
5
5
  "bugs": "https://github.com/ashbuilds/payload-ai/issues",
6
6
  "repository": "https://github.com/ashbuilds/payload-ai",
@@ -53,13 +53,11 @@
53
53
  "@ai-sdk/provider-utils": "^1.0.17",
54
54
  "@ai-sdk/ui-utils": "^0.0.27",
55
55
  "@anthropic-ai/sdk": "^0.24.3",
56
- "@lexical/html": "^0.21.0",
57
56
  "ai": "^3.3.20",
58
57
  "elevenlabs": "^0.8.2",
59
58
  "get-input-selection": "^1.1.4",
60
59
  "handlebars": "4.7.8",
61
60
  "handlebars-async-helpers": "^1.0.6",
62
- "lexical": "^0.21.0",
63
61
  "locale-codes": "^1.3.1",
64
62
  "lodash.isequal": "^4.5.0",
65
63
  "openai": "^4.56.1",
@@ -97,16 +95,19 @@
97
95
  "typescript-eslint": "^7.18.0"
98
96
  },
99
97
  "peerDependencies": {
100
- "@payloadcms/richtext-lexical": "latest",
101
- "@payloadcms/translations": "latest",
102
- "@payloadcms/ui": "latest",
103
- "payload": "latest"
98
+ "@payloadcms/richtext-lexical": "^3.31.0",
99
+ "@payloadcms/translations": "^3.31.0",
100
+ "@payloadcms/ui": "^3.31.0",
101
+ "payload": "^3.31.0",
102
+ "@lexical/html": "^0.28.0",
103
+ "lexical": "^0.28.0"
104
104
  },
105
105
  "publishConfig": {
106
106
  "@ai-stack:registry": "https://registry.npmjs.org",
107
107
  "access": "public",
108
108
  "provenance": true
109
109
  },
110
+ "packageManager": "pnpm@10.3.0+sha512.ee592eda8815a8a293c206bb0917c4bb0ff274c50def7cbc17be05ec641fc2d1b02490ce660061356bd0d126a4d7eb2ec8830e6959fb8a447571c631d5a2442d",
110
111
  "scripts": {
111
112
  "build": "pnpm build:types && pnpm build:swc",
112
113
  "build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths --copy-files",