@ai-stack/payloadcms 3.2.24-beta → 3.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{LICENSE.md → LICENSE} +1 -1
- package/README.md +218 -229
- package/dist/access/checkAccess.d.ts +4 -0
- package/dist/access/checkAccess.js +20 -0
- package/dist/access/checkAccess.js.map +1 -0
- package/dist/ai/core/generateObject.d.ts +7 -0
- package/dist/ai/core/generateObject.js +35 -0
- package/dist/ai/core/generateObject.js.map +1 -0
- package/dist/ai/core/generateText.d.ts +7 -0
- package/dist/ai/core/generateText.js +31 -0
- package/dist/ai/core/generateText.js.map +1 -0
- package/dist/ai/core/index.d.ts +11 -0
- package/dist/ai/core/index.js +10 -0
- package/dist/ai/core/index.js.map +1 -0
- package/dist/ai/core/media/generateMedia.d.ts +7 -0
- package/dist/ai/core/media/generateMedia.js +50 -0
- package/dist/ai/core/media/generateMedia.js.map +1 -0
- package/dist/ai/core/media/image/generateImage.d.ts +6 -0
- package/dist/ai/core/media/image/generateImage.js +41 -0
- package/dist/ai/core/media/image/generateImage.js.map +1 -0
- package/dist/ai/core/media/image/handlers/multimodal.d.ts +7 -0
- package/dist/ai/core/media/image/handlers/multimodal.js +95 -0
- package/dist/ai/core/media/image/handlers/multimodal.js.map +1 -0
- package/dist/ai/core/media/image/handlers/standard.d.ts +7 -0
- package/dist/ai/core/media/image/handlers/standard.js +28 -0
- package/dist/ai/core/media/image/handlers/standard.js.map +1 -0
- package/dist/ai/core/media/image/index.d.ts +2 -0
- package/dist/ai/core/media/image/index.js +3 -0
- package/dist/ai/core/media/image/index.js.map +1 -0
- package/dist/ai/core/media/index.d.ts +2 -0
- package/dist/ai/core/media/index.js +3 -0
- package/dist/ai/core/media/index.js.map +1 -0
- package/dist/ai/core/media/speech/generateSpeech.d.ts +5 -0
- package/dist/ai/core/media/speech/generateSpeech.js +55 -0
- package/dist/ai/core/media/speech/generateSpeech.js.map +1 -0
- package/dist/ai/core/media/speech/index.d.ts +2 -0
- package/dist/ai/core/media/speech/index.js +3 -0
- package/dist/ai/core/media/speech/index.js.map +1 -0
- package/dist/ai/core/media/types.d.ts +74 -0
- package/dist/ai/core/media/types.js +5 -0
- package/dist/ai/core/media/types.js.map +1 -0
- package/dist/ai/core/media/utils.d.ts +11 -0
- package/dist/ai/core/media/utils.js +34 -0
- package/dist/ai/core/media/utils.js.map +1 -0
- package/dist/ai/core/media/video/generateVideo.d.ts +6 -0
- package/dist/ai/core/media/video/generateVideo.js +32 -0
- package/dist/ai/core/media/video/generateVideo.js.map +1 -0
- package/dist/ai/core/media/video/index.d.ts +2 -0
- package/dist/ai/core/media/video/index.js +3 -0
- package/dist/ai/core/media/video/index.js.map +1 -0
- package/dist/ai/core/streamObject.d.ts +7 -0
- package/dist/ai/core/streamObject.js +57 -0
- package/dist/ai/core/streamObject.js.map +1 -0
- package/dist/ai/core/streamText.d.ts +7 -0
- package/dist/ai/core/streamText.js +30 -0
- package/dist/ai/core/streamText.js.map +1 -0
- package/dist/ai/core/types.d.ts +85 -0
- package/dist/ai/core/types.js +5 -0
- package/dist/ai/core/types.js.map +1 -0
- package/dist/ai/index.d.ts +11 -0
- package/dist/ai/index.js +25 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/providers/blocks/anthropic.d.ts +2 -0
- package/dist/ai/providers/blocks/anthropic.js +222 -0
- package/dist/ai/providers/blocks/anthropic.js.map +1 -0
- package/dist/ai/providers/blocks/elevenlabs.d.ts +2 -0
- package/dist/ai/providers/blocks/elevenlabs.js +448 -0
- package/dist/ai/providers/blocks/elevenlabs.js.map +1 -0
- package/dist/ai/providers/blocks/fal.d.ts +2 -0
- package/dist/ai/providers/blocks/fal.js +311 -0
- package/dist/ai/providers/blocks/fal.js.map +1 -0
- package/dist/ai/providers/blocks/google.d.ts +2 -0
- package/dist/ai/providers/blocks/google.js +622 -0
- package/dist/ai/providers/blocks/google.js.map +1 -0
- package/dist/ai/providers/blocks/index.d.ts +2 -0
- package/dist/ai/providers/blocks/index.js +18 -0
- package/dist/ai/providers/blocks/index.js.map +1 -0
- package/dist/ai/providers/blocks/openai-compatible.d.ts +2 -0
- package/dist/ai/providers/blocks/openai-compatible.js +307 -0
- package/dist/ai/providers/blocks/openai-compatible.js.map +1 -0
- package/dist/ai/providers/blocks/openai.d.ts +2 -0
- package/dist/ai/providers/blocks/openai.js +599 -0
- package/dist/ai/providers/blocks/openai.js.map +1 -0
- package/dist/ai/providers/blocks/xai.d.ts +2 -0
- package/dist/ai/providers/blocks/xai.js +246 -0
- package/dist/ai/providers/blocks/xai.js.map +1 -0
- package/dist/ai/providers/index.d.ts +2 -0
- package/dist/ai/providers/index.js +6 -0
- package/dist/ai/providers/index.js.map +1 -0
- package/dist/ai/providers/registry.d.ts +40 -0
- package/dist/ai/providers/registry.js +256 -0
- package/dist/ai/providers/registry.js.map +1 -0
- package/dist/ai/providers/types.d.ts +115 -0
- package/dist/ai/providers/types.js +4 -0
- package/dist/ai/providers/types.js.map +1 -0
- package/dist/ai/utils/systemGenerate.d.ts +1 -1
- package/dist/ai/utils/systemGenerate.js +19 -19
- package/dist/ai/utils/systemGenerate.js.map +1 -1
- package/dist/collections/AIJobs.d.ts +2 -0
- package/dist/collections/AIJobs.js +81 -0
- package/dist/collections/AIJobs.js.map +1 -0
- package/dist/collections/AISettings.d.ts +2 -0
- package/dist/collections/AISettings.js +279 -0
- package/dist/collections/AISettings.js.map +1 -0
- package/dist/collections/Instructions.js +185 -37
- package/dist/collections/Instructions.js.map +1 -1
- package/dist/defaults.d.ts +3 -0
- package/dist/defaults.js +3 -0
- package/dist/defaults.js.map +1 -1
- package/dist/endpoints/buildPromptUtils.d.ts +19 -0
- package/dist/endpoints/buildPromptUtils.js +114 -0
- package/dist/endpoints/buildPromptUtils.js.map +1 -0
- package/dist/endpoints/chat.d.js +3 -0
- package/dist/endpoints/chat.d.js.map +1 -0
- package/dist/endpoints/fetchVoices.d.ts +2 -0
- package/dist/endpoints/fetchVoices.js +79 -0
- package/dist/endpoints/fetchVoices.js.map +1 -0
- package/dist/endpoints/index.js +253 -214
- package/dist/endpoints/index.js.map +1 -1
- package/dist/exports/client.d.ts +9 -0
- package/dist/exports/client.js +9 -0
- package/dist/exports/client.js.map +1 -1
- package/dist/fields/ComposeField/ComposeField.js +2 -2
- package/dist/fields/ComposeField/ComposeField.js.map +1 -1
- package/dist/fields/ComposeField/ComposeField.jsx +2 -2
- package/dist/fields/PromptEditorField/PromptEditorField.js +155 -14
- package/dist/fields/PromptEditorField/PromptEditorField.js.map +1 -1
- package/dist/fields/PromptEditorField/PromptEditorField.jsx +118 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.js.map +1 -1
- package/dist/init.js +35 -13
- package/dist/init.js.map +1 -1
- package/dist/payload-ai.d.js +3 -0
- package/dist/payload-ai.d.js.map +1 -0
- package/dist/plugin.js +80 -9
- package/dist/plugin.js.map +1 -1
- package/dist/providers/InstructionsProvider/InstructionsProvider.js +35 -7
- package/dist/providers/InstructionsProvider/InstructionsProvider.js.map +1 -1
- package/dist/providers/InstructionsProvider/InstructionsProvider.jsx +27 -4
- package/dist/providers/InstructionsProvider/context.d.ts +1 -0
- package/dist/providers/InstructionsProvider/context.js +1 -0
- package/dist/providers/InstructionsProvider/context.js.map +1 -1
- package/dist/providers/InstructionsProvider/useInstructions.js +13 -6
- package/dist/providers/InstructionsProvider/useInstructions.js.map +1 -1
- package/dist/types.d.ts +7 -7
- package/dist/types.js.map +1 -1
- package/dist/ui/AIConfigDashboard/index.d.ts +2 -0
- package/dist/ui/AIConfigDashboard/index.js +46 -0
- package/dist/ui/AIConfigDashboard/index.js.map +1 -0
- package/dist/ui/AIConfigDashboard/index.jsx +24 -0
- package/dist/ui/ApiKeyStatusIndicator/index.d.ts +6 -0
- package/dist/ui/ApiKeyStatusIndicator/index.js +39 -0
- package/dist/ui/ApiKeyStatusIndicator/index.js.map +1 -0
- package/dist/ui/ApiKeyStatusIndicator/index.jsx +29 -0
- package/dist/ui/Compose/Compose.d.ts +1 -2
- package/dist/ui/Compose/Compose.js +116 -90
- package/dist/ui/Compose/Compose.js.map +1 -1
- package/dist/ui/Compose/Compose.jsx +111 -101
- package/dist/ui/Compose/ComposePlaceholder.d.ts +7 -0
- package/dist/ui/Compose/ComposePlaceholder.js +78 -0
- package/dist/ui/Compose/ComposePlaceholder.js.map +1 -0
- package/dist/ui/Compose/ComposePlaceholder.jsx +66 -0
- package/dist/ui/Compose/UndoRedoActions.js +3 -1
- package/dist/ui/Compose/UndoRedoActions.js.map +1 -1
- package/dist/ui/Compose/UndoRedoActions.jsx +2 -1
- package/dist/ui/Compose/compose.module.css +1 -1
- package/dist/ui/Compose/hooks/menu/itemsMap.js +1 -1
- package/dist/ui/Compose/hooks/menu/itemsMap.js.map +1 -1
- package/dist/ui/Compose/hooks/menu/useMenu.d.ts +2 -1
- package/dist/ui/Compose/hooks/menu/useMenu.js +2 -2
- package/dist/ui/Compose/hooks/menu/useMenu.js.map +1 -1
- package/dist/ui/Compose/hooks/menu/useMenu.jsx +2 -2
- package/dist/ui/Compose/hooks/useActiveFieldTracking.js +69 -10
- package/dist/ui/Compose/hooks/useActiveFieldTracking.js.map +1 -1
- package/dist/ui/Compose/hooks/useGenerate.d.ts +3 -0
- package/dist/ui/Compose/hooks/useGenerate.js +71 -11
- package/dist/ui/Compose/hooks/useGenerate.js.map +1 -1
- package/dist/ui/Compose/hooks/useHistory.js +52 -5
- package/dist/ui/Compose/hooks/useHistory.js.map +1 -1
- package/dist/ui/DynamicModelSelect/index.d.ts +7 -0
- package/dist/ui/DynamicModelSelect/index.js +231 -0
- package/dist/ui/DynamicModelSelect/index.js.map +1 -0
- package/dist/ui/DynamicModelSelect/index.jsx +207 -0
- package/dist/ui/DynamicProviderSelect/index.d.ts +7 -0
- package/dist/ui/DynamicProviderSelect/index.js +101 -0
- package/dist/ui/DynamicProviderSelect/index.js.map +1 -0
- package/dist/ui/DynamicProviderSelect/index.jsx +90 -0
- package/dist/ui/DynamicVoiceSelect/index.d.ts +7 -0
- package/dist/ui/DynamicVoiceSelect/index.js +104 -0
- package/dist/ui/DynamicVoiceSelect/index.js.map +1 -0
- package/dist/ui/DynamicVoiceSelect/index.jsx +69 -0
- package/dist/ui/EncryptedTextField/index.d.ts +8 -0
- package/dist/ui/EncryptedTextField/index.js +74 -0
- package/dist/ui/EncryptedTextField/index.js.map +1 -0
- package/dist/ui/EncryptedTextField/index.jsx +35 -0
- package/dist/ui/Icons/LottieAnimation.js +3 -1
- package/dist/ui/Icons/LottieAnimation.js.map +1 -1
- package/dist/ui/Icons/LottieAnimation.jsx +2 -1
- package/dist/ui/ModelRowLabel/index.d.ts +6 -0
- package/dist/ui/ModelRowLabel/index.js +41 -0
- package/dist/ui/ModelRowLabel/index.js.map +1 -0
- package/dist/ui/ModelRowLabel/index.jsx +26 -0
- package/dist/ui/ProviderOptionsEditor/index.d.ts +7 -0
- package/dist/ui/ProviderOptionsEditor/index.js +291 -0
- package/dist/ui/ProviderOptionsEditor/index.js.map +1 -0
- package/dist/ui/ProviderOptionsEditor/index.jsx +210 -0
- package/dist/ui/VoicesFetcher/index.d.ts +7 -0
- package/dist/ui/VoicesFetcher/index.js +72 -0
- package/dist/ui/VoicesFetcher/index.js.map +1 -0
- package/dist/ui/VoicesFetcher/index.jsx +56 -0
- package/dist/utilities/encryption.d.ts +2 -0
- package/dist/utilities/encryption.js +47 -0
- package/dist/utilities/encryption.js.map +1 -0
- package/dist/utilities/extractImageData.d.ts +9 -0
- package/dist/utilities/extractImageData.js +12 -2
- package/dist/utilities/extractImageData.js.map +1 -1
- package/dist/utilities/fetchImages.d.ts +14 -0
- package/dist/utilities/fetchImages.js +38 -0
- package/dist/utilities/fetchImages.js.map +1 -0
- package/dist/utilities/fieldToJsonSchema.d.ts +2 -1
- package/dist/utilities/fieldToJsonSchema.js +66 -3
- package/dist/utilities/fieldToJsonSchema.js.map +1 -1
- package/dist/utilities/getFieldBySchemaPath.js +15 -0
- package/dist/utilities/getFieldBySchemaPath.js.map +1 -1
- package/dist/utilities/getProviderOptionsFields.d.ts +16 -0
- package/dist/utilities/getProviderOptionsFields.js +80 -0
- package/dist/utilities/getProviderOptionsFields.js.map +1 -0
- package/dist/utilities/isPluginActivated.js +1 -2
- package/dist/utilities/isPluginActivated.js.map +1 -1
- package/dist/utilities/lexicalToHTML.js.map +1 -1
- package/dist/utilities/resolveImageReferences.d.ts +28 -0
- package/dist/utilities/resolveImageReferences.js +148 -0
- package/dist/utilities/resolveImageReferences.js.map +1 -0
- package/dist/utilities/schemaConverter.d.ts +3 -0
- package/dist/utilities/schemaConverter.js +93 -0
- package/dist/utilities/schemaConverter.js.map +1 -0
- package/dist/utilities/setSafeLexicalState.d.ts +1 -3
- package/dist/utilities/setSafeLexicalState.js +1 -1
- package/dist/utilities/setSafeLexicalState.js.map +1 -1
- package/package.json +19 -21
- package/dist/ai/models/anthropic/index.d.ts +0 -2
- package/dist/ai/models/anthropic/index.js +0 -129
- package/dist/ai/models/anthropic/index.js.map +0 -1
- package/dist/ai/models/elevenLabs/generateVoice.d.ts +0 -8
- package/dist/ai/models/elevenLabs/generateVoice.js +0 -20
- package/dist/ai/models/elevenLabs/generateVoice.js.map +0 -1
- package/dist/ai/models/elevenLabs/index.d.ts +0 -2
- package/dist/ai/models/elevenLabs/index.js +0 -133
- package/dist/ai/models/elevenLabs/index.js.map +0 -1
- package/dist/ai/models/elevenLabs/voices.d.ts +0 -8
- package/dist/ai/models/elevenLabs/voices.js +0 -24
- package/dist/ai/models/elevenLabs/voices.js.map +0 -1
- package/dist/ai/models/generateObject.d.ts +0 -11
- package/dist/ai/models/generateObject.js +0 -22
- package/dist/ai/models/generateObject.js.map +0 -1
- package/dist/ai/models/google/generateImage.d.ts +0 -9
- package/dist/ai/models/google/generateImage.js +0 -27
- package/dist/ai/models/google/generateImage.js.map +0 -1
- package/dist/ai/models/google/index.d.ts +0 -2
- package/dist/ai/models/google/index.js +0 -201
- package/dist/ai/models/google/index.js.map +0 -1
- package/dist/ai/models/index.d.ts +0 -2
- package/dist/ai/models/index.js +0 -13
- package/dist/ai/models/index.js.map +0 -1
- package/dist/ai/models/openai/generateImage.d.ts +0 -5
- package/dist/ai/models/openai/generateImage.js +0 -31
- package/dist/ai/models/openai/generateImage.js.map +0 -1
- package/dist/ai/models/openai/generateVoice.d.ts +0 -6
- package/dist/ai/models/openai/generateVoice.js +0 -19
- package/dist/ai/models/openai/generateVoice.js.map +0 -1
- package/dist/ai/models/openai/index.d.ts +0 -2
- package/dist/ai/models/openai/index.js +0 -428
- package/dist/ai/models/openai/index.js.map +0 -1
- package/dist/ai/models/openai/openai.d.ts +0 -1
- package/dist/ai/models/openai/openai.js +0 -8
- package/dist/ai/models/openai/openai.js.map +0 -1
- package/dist/ai/utils/editImagesWithOpenAI.d.ts +0 -10
- package/dist/ai/utils/editImagesWithOpenAI.js +0 -37
- package/dist/ai/utils/editImagesWithOpenAI.js.map +0 -1
- package/dist/types.d.js +0 -3
- package/dist/types.d.js.map +0 -1
- package/dist/utilities/getGenerationModels.d.ts +0 -2
- package/dist/utilities/getGenerationModels.js +0 -10
- package/dist/utilities/getGenerationModels.js.map +0 -1
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for media generation
|
|
3
|
+
*/ /**
|
|
4
|
+
* Get file extension from MIME type
|
|
5
|
+
*/ export function getExtensionFromMimeType(mimeType) {
|
|
6
|
+
const mimeToExt = {
|
|
7
|
+
'audio/aac': 'aac',
|
|
8
|
+
'audio/flac': 'flac',
|
|
9
|
+
'audio/L16': 'pcm',
|
|
10
|
+
'audio/mp3': 'mp3',
|
|
11
|
+
'audio/mpeg': 'mp3',
|
|
12
|
+
'audio/opus': 'opus',
|
|
13
|
+
'audio/wav': 'wav',
|
|
14
|
+
'image/bmp': 'bmp',
|
|
15
|
+
'image/gif': 'gif',
|
|
16
|
+
'image/jpeg': 'jpg',
|
|
17
|
+
'image/jpg': 'jpg',
|
|
18
|
+
'image/png': 'png',
|
|
19
|
+
'image/svg+xml': 'svg',
|
|
20
|
+
'image/tiff': 'tiff',
|
|
21
|
+
'image/webp': 'webp'
|
|
22
|
+
};
|
|
23
|
+
return mimeToExt[mimeType.toLowerCase()] || 'bin';
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Convert image/audio data to Buffer
|
|
27
|
+
*/ export function convertToBuffer(data) {
|
|
28
|
+
if (typeof data === 'string') {
|
|
29
|
+
return Buffer.from(data, 'base64');
|
|
30
|
+
}
|
|
31
|
+
return Buffer.from(data);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/ai/core/media/utils.ts"],"sourcesContent":["/**\n * Shared utilities for media generation\n */\n\n/**\n * Get file extension from MIME type\n */\nexport function getExtensionFromMimeType(mimeType: string): string {\n const mimeToExt: Record<string, string> = {\n 'audio/aac': 'aac',\n 'audio/flac': 'flac',\n 'audio/L16': 'pcm',\n 'audio/mp3': 'mp3',\n 'audio/mpeg': 'mp3',\n 'audio/opus': 'opus',\n 'audio/wav': 'wav',\n 'image/bmp': 'bmp',\n 'image/gif': 'gif',\n 'image/jpeg': 'jpg',\n 'image/jpg': 'jpg',\n 'image/png': 'png',\n 'image/svg+xml': 'svg',\n 'image/tiff': 'tiff',\n 'image/webp': 'webp',\n }\n\n return mimeToExt[mimeType.toLowerCase()] || 'bin'\n}\n\n/**\n * Convert image/audio data to Buffer\n */\nexport function convertToBuffer(data: string | Uint8Array): Buffer {\n if (typeof data === 'string') {\n return Buffer.from(data, 'base64')\n }\n return Buffer.from(data)\n}\n"],"names":["getExtensionFromMimeType","mimeType","mimeToExt","toLowerCase","convertToBuffer","data","Buffer","from"],"mappings":"AAAA;;CAEC,GAED;;CAEC,GACD,OAAO,SAASA,yBAAyBC,QAAgB;IACvD,MAAMC,YAAoC;QACxC,aAAa;QACb,cAAc;QACd,aAAa;QACb,aAAa;QACb,cAAc;QACd,cAAc;QACd,aAAa;QACb,aAAa;QACb,aAAa;QACb,cAAc;QACd,aAAa;QACb,aAAa;QACb,iBAAiB;QACjB,cAAc;QACd,cAAc;IAChB;IAEA,OAAOA,SAAS,CAACD,SAASE,WAAW,GAAG,IAAI;AAC9C;AAEA;;CAEC,GACD,OAAO,SAASC,gBAAgBC,IAAyB;IACvD,IAAI,OAAOA,SAAS,UAAU;QAC5B,OAAOC,OAAOC,IAAI,CAACF,MAAM;IAC3B;IACA,OAAOC,OAAOC,IAAI,CAACF;AACrB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { MediaResult, VideoGenerationArgs } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generate video using Fal provider
|
|
4
|
+
* Delegates to existing Fal handler to avoid disrupting webhook/job logic
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateVideo(args: VideoGenerationArgs): Promise<MediaResult>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate video using Fal provider
|
|
3
|
+
* Delegates to existing Fal handler to avoid disrupting webhook/job logic
|
|
4
|
+
*/ export async function generateVideo(args) {
|
|
5
|
+
const { provider } = args;
|
|
6
|
+
// Currently only supporting Fal for video
|
|
7
|
+
if (provider?.toLowerCase() !== 'fal') {
|
|
8
|
+
throw new Error(`Unsupported video provider: ${provider}`);
|
|
9
|
+
}
|
|
10
|
+
// Delegate to existing Fal video handler
|
|
11
|
+
// This maintains compatibility with the existing webhook/job management system
|
|
12
|
+
// const { VideoConfig } = await import('../../../models/video.js')
|
|
13
|
+
const videoModel = {} // ||VideoConfig.models[0]
|
|
14
|
+
;
|
|
15
|
+
if (!videoModel.handler) {
|
|
16
|
+
throw new Error('Video handler not found');
|
|
17
|
+
}
|
|
18
|
+
const result = await videoModel.handler(args.prompt, {
|
|
19
|
+
...args,
|
|
20
|
+
req: {
|
|
21
|
+
payload: args.payload
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
return {
|
|
25
|
+
jobId: result.jobId,
|
|
26
|
+
progress: result.progress ?? 0,
|
|
27
|
+
status: result.status || 'queued',
|
|
28
|
+
taskId: result.taskId
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=generateVideo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/ai/core/media/video/generateVideo.ts"],"sourcesContent":["import type { MediaResult, VideoGenerationArgs } from '../types.js'\n\n/**\n * Generate video using Fal provider\n * Delegates to existing Fal handler to avoid disrupting webhook/job logic\n */\nexport async function generateVideo(args: VideoGenerationArgs): Promise<MediaResult> {\n const { provider } = args\n\n // Currently only supporting Fal for video\n if (provider?.toLowerCase() !== 'fal') {\n throw new Error(`Unsupported video provider: ${provider}`)\n }\n\n // Delegate to existing Fal video handler\n // This maintains compatibility with the existing webhook/job management system\n // const { VideoConfig } = await import('../../../models/video.js')\n const videoModel: any = {} // ||VideoConfig.models[0]\n\n if (!videoModel.handler) {\n throw new Error('Video handler not found')\n }\n\n const result = await videoModel.handler(args.prompt, {\n ...args,\n req: { payload: args.payload },\n } as any)\n\n return {\n jobId: result.jobId,\n progress: result.progress ?? 0,\n status: result.status || 'queued',\n taskId: result.taskId,\n }\n}\n"],"names":["generateVideo","args","provider","toLowerCase","Error","videoModel","handler","result","prompt","req","payload","jobId","progress","status","taskId"],"mappings":"AAEA;;;CAGC,GACD,OAAO,eAAeA,cAAcC,IAAyB;IAC3D,MAAM,EAAEC,QAAQ,EAAE,GAAGD;IAErB,0CAA0C;IAC1C,IAAIC,UAAUC,kBAAkB,OAAO;QACrC,MAAM,IAAIC,MAAM,CAAC,4BAA4B,EAAEF,SAAS,CAAC;IAC3D;IAEA,yCAAyC;IACzC,+EAA+E;IAC/E,mEAAmE;IACnE,MAAMG,aAAkB,CAAC,EAAE,0BAA0B;;IAErD,IAAI,CAACA,WAAWC,OAAO,EAAE;QACvB,MAAM,IAAIF,MAAM;IAClB;IAEA,MAAMG,SAAS,MAAMF,WAAWC,OAAO,CAACL,KAAKO,MAAM,EAAE;QACnD,GAAGP,IAAI;QACPQ,KAAK;YAAEC,SAAST,KAAKS,OAAO;QAAC;IAC/B;IAEA,OAAO;QACLC,OAAOJ,OAAOI,KAAK;QACnBC,UAAUL,OAAOK,QAAQ,IAAI;QAC7BC,QAAQN,OAAOM,MAAM,IAAI;QACzBC,QAAQP,OAAOO,MAAM;IACvB;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/ai/core/media/video/index.ts"],"sourcesContent":["export type * from '../types.js'\nexport { generateVideo } from './generateVideo.js'\n"],"names":["generateVideo"],"mappings":"AACA,SAASA,aAAa,QAAQ,qBAAoB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PayloadGenerateObjectArgs } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Stream structured output using AI SDK's streamObject
|
|
4
|
+
* This is a thin wrapper that resolves the model from the registry
|
|
5
|
+
* and passes everything directly to the AI SDK for streaming
|
|
6
|
+
*/
|
|
7
|
+
export declare function streamObject(args: PayloadGenerateObjectArgs): Promise<import("ai").StreamObjectResult<unknown, unknown, never>>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsonSchema, streamObject as sdkStreamObject } from 'ai';
|
|
2
|
+
import { getLanguageModel } from '../providers/registry.js';
|
|
3
|
+
function isZodSchema(schema) {
|
|
4
|
+
return typeof schema === 'object' && schema !== null && '_def' in schema;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Stream structured output using AI SDK's streamObject
|
|
8
|
+
* This is a thin wrapper that resolves the model from the registry
|
|
9
|
+
* and passes everything directly to the AI SDK for streaming
|
|
10
|
+
*/ export async function streamObject(args) {
|
|
11
|
+
const { maxTokens, mode, model: modelId, payload, prompt, provider, providerOptions, schema, system, temperature, ...rest } = args;
|
|
12
|
+
// Resolve model from registry
|
|
13
|
+
const model = await getLanguageModel(payload, provider, modelId, providerOptions);
|
|
14
|
+
// Return streaming result from AI SDK
|
|
15
|
+
const options = {
|
|
16
|
+
mode: mode || 'auto',
|
|
17
|
+
model,
|
|
18
|
+
schema: schema ? isZodSchema(schema) ? schema : jsonSchema(schema) : undefined,
|
|
19
|
+
system,
|
|
20
|
+
temperature: temperature ?? 0.7,
|
|
21
|
+
...maxTokens ? {
|
|
22
|
+
maxOutputTokens: maxTokens
|
|
23
|
+
} : {}
|
|
24
|
+
};
|
|
25
|
+
// Handle multimodal input
|
|
26
|
+
if (args.images && args.images.length > 0 || args.messages && args.messages.length > 0) {
|
|
27
|
+
if (args.messages) {
|
|
28
|
+
options.messages = args.messages;
|
|
29
|
+
} else {
|
|
30
|
+
// Construct multimodal message from prompt and images
|
|
31
|
+
const content = [
|
|
32
|
+
{
|
|
33
|
+
type: 'text',
|
|
34
|
+
text: prompt
|
|
35
|
+
},
|
|
36
|
+
...args.images || []
|
|
37
|
+
];
|
|
38
|
+
options.messages = [
|
|
39
|
+
{
|
|
40
|
+
content,
|
|
41
|
+
role: 'user'
|
|
42
|
+
}
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
} else {
|
|
46
|
+
options.prompt = prompt;
|
|
47
|
+
}
|
|
48
|
+
console.log("options.messages : ", options.messages);
|
|
49
|
+
console.log('prompt : ', prompt);
|
|
50
|
+
console.log('args.images : ', args.images);
|
|
51
|
+
if (providerOptions) {
|
|
52
|
+
options.providerOptions = providerOptions;
|
|
53
|
+
}
|
|
54
|
+
return sdkStreamObject(options);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=streamObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/ai/core/streamObject.ts"],"sourcesContent":["import { type ImagePart, jsonSchema, streamObject as sdkStreamObject, type TextPart } from 'ai'\n\nimport type { PayloadGenerateObjectArgs } from './types.js'\n\nimport { getLanguageModel } from '../providers/registry.js'\n\nfunction isZodSchema(schema: unknown): boolean {\n return typeof schema === 'object' && schema !== null && '_def' in schema\n}\n\n/**\n * Stream structured output using AI SDK's streamObject\n * This is a thin wrapper that resolves the model from the registry\n * and passes everything directly to the AI SDK for streaming\n */\nexport async function streamObject(args: PayloadGenerateObjectArgs) {\n const { \n maxTokens, \n mode,\n model: modelId,\n payload,\n prompt,\n provider,\n providerOptions,\n schema,\n system,\n temperature,\n ...rest\n } = args\n \n // Resolve model from registry\n const model = await getLanguageModel(payload, provider, modelId, providerOptions)\n \n // Return streaming result from AI SDK\n const options: Record<string, unknown> = {\n mode: mode || 'auto',\n model,\n schema: schema ? (isZodSchema(schema) ? schema : jsonSchema(schema as Record<string, unknown>)) : undefined,\n system,\n temperature: temperature ?? 0.7,\n ...(maxTokens ? { maxOutputTokens: maxTokens } : {}),\n }\n\n // Handle multimodal input\n if ((args.images && args.images.length > 0) || (args.messages && args.messages.length > 0)) {\n if (args.messages) {\n options.messages = args.messages\n } else {\n // Construct multimodal message from prompt and images\n const content: Array<ImagePart | TextPart> = [\n { type: 'text', text: prompt },\n ...(args.images || []),\n ]\n\n options.messages = [\n { content, role: 'user' as const },\n ]\n }\n } else {\n options.prompt = prompt\n }\n\n console.log(\"options.messages : \",options.messages)\n console.log('prompt : ', prompt)\n console.log('args.images : ', args.images)\n\n if (providerOptions) {\n options.providerOptions = providerOptions\n }\n\n return sdkStreamObject(options as Parameters<typeof sdkStreamObject>[0])\n}\n"],"names":["jsonSchema","streamObject","sdkStreamObject","getLanguageModel","isZodSchema","schema","args","maxTokens","mode","model","modelId","payload","prompt","provider","providerOptions","system","temperature","rest","options","undefined","maxOutputTokens","images","length","messages","content","type","text","role","console","log"],"mappings":"AAAA,SAAyBA,UAAU,EAAEC,gBAAgBC,eAAe,QAAuB,KAAI;AAI/F,SAASC,gBAAgB,QAAQ,2BAA0B;AAE3D,SAASC,YAAYC,MAAe;IAClC,OAAO,OAAOA,WAAW,YAAYA,WAAW,QAAQ,UAAUA;AACpE;AAEA;;;;CAIC,GACD,OAAO,eAAeJ,aAAaK,IAA+B;IAChE,MAAM,EACJC,SAAS,EACTC,IAAI,EACJC,OAAOC,OAAO,EACdC,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,eAAe,EACfT,MAAM,EACNU,MAAM,EACNC,WAAW,EACX,GAAGC,MACJ,GAAGX;IAEJ,8BAA8B;IAC9B,MAAMG,QAAQ,MAAMN,iBAAiBQ,SAASE,UAAUH,SAASI;IAEjE,sCAAsC;IACtC,MAAMI,UAAmC;QACvCV,MAAMA,QAAQ;QACdC;QACAJ,QAAQA,SAAUD,YAAYC,UAAUA,SAASL,WAAWK,UAAsCc;QAClGJ;QACAC,aAAaA,eAAe;QAC5B,GAAIT,YAAY;YAAEa,iBAAiBb;QAAU,IAAI,CAAC,CAAC;IACrD;IAEA,0BAA0B;IAC1B,IAAI,AAACD,KAAKe,MAAM,IAAIf,KAAKe,MAAM,CAACC,MAAM,GAAG,KAAOhB,KAAKiB,QAAQ,IAAIjB,KAAKiB,QAAQ,CAACD,MAAM,GAAG,GAAI;QAC1F,IAAIhB,KAAKiB,QAAQ,EAAE;YACjBL,QAAQK,QAAQ,GAAGjB,KAAKiB,QAAQ;QAClC,OAAO;YACL,sDAAsD;YACtD,MAAMC,UAAuC;gBAC3C;oBAAEC,MAAM;oBAAQC,MAAMd;gBAAO;mBACzBN,KAAKe,MAAM,IAAI,EAAE;aACtB;YAEDH,QAAQK,QAAQ,GAAG;gBACjB;oBAAEC;oBAASG,MAAM;gBAAgB;aAClC;QACH;IACF,OAAO;QACLT,QAAQN,MAAM,GAAGA;IACnB;IAEAgB,QAAQC,GAAG,CAAC,wBAAuBX,QAAQK,QAAQ;IACnDK,QAAQC,GAAG,CAAC,cAAcjB;IAC1BgB,QAAQC,GAAG,CAAC,oBAAoBvB,KAAKe,MAAM;IAE3C,IAAIP,iBAAiB;QACnBI,QAAQJ,eAAe,GAAGA;IAC5B;IAEA,OAAOZ,gBAAgBgB;AACzB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PayloadGenerateTextArgs } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Stream text using AI SDK's streamText
|
|
4
|
+
* This is a thin wrapper that resolves the model from the registry
|
|
5
|
+
* and passes everything directly to the AI SDK for streaming
|
|
6
|
+
*/
|
|
7
|
+
export declare function streamText(args: PayloadGenerateTextArgs): Promise<import("ai").StreamTextResult<import("ai").ToolSet, unknown>>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { streamText as sdkStreamText } from 'ai';
|
|
2
|
+
import { extractPromptAttachments } from '../../utilities/extractPromptAttachments.js';
|
|
3
|
+
import { getLanguageModel } from '../providers/registry.js';
|
|
4
|
+
/**
|
|
5
|
+
* Stream text using AI SDK's streamText
|
|
6
|
+
* This is a thin wrapper that resolves the model from the registry
|
|
7
|
+
* and passes everything directly to the AI SDK for streaming
|
|
8
|
+
*/ export async function streamText(args) {
|
|
9
|
+
const { maxTokens, model: modelId, payload, prompt, provider, providerOptions, system, temperature, ...rest } = args;
|
|
10
|
+
// Extract attachments if needed
|
|
11
|
+
const processedPrompt = rest.extractAttachments ? extractPromptAttachments(prompt) : prompt;
|
|
12
|
+
// Resolve model from registry
|
|
13
|
+
const model = await getLanguageModel(payload, provider, modelId, providerOptions);
|
|
14
|
+
// Return streaming result from AI SDK
|
|
15
|
+
const options = {
|
|
16
|
+
model,
|
|
17
|
+
prompt: processedPrompt,
|
|
18
|
+
system,
|
|
19
|
+
temperature: temperature ?? 0.7,
|
|
20
|
+
...maxTokens ? {
|
|
21
|
+
maxOutputTokens: maxTokens
|
|
22
|
+
} : {}
|
|
23
|
+
};
|
|
24
|
+
if (providerOptions) {
|
|
25
|
+
options.providerOptions = providerOptions;
|
|
26
|
+
}
|
|
27
|
+
return sdkStreamText(options);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=streamText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/ai/core/streamText.ts"],"sourcesContent":["import { streamText as sdkStreamText } from 'ai'\n\nimport type { PayloadGenerateTextArgs } from './types.js'\n\nimport { extractPromptAttachments } from '../../utilities/extractPromptAttachments.js'\nimport { getLanguageModel } from '../providers/registry.js'\n\n/**\n * Stream text using AI SDK's streamText\n * This is a thin wrapper that resolves the model from the registry\n * and passes everything directly to the AI SDK for streaming\n */\nexport async function streamText(args: PayloadGenerateTextArgs) {\n const { \n maxTokens, \n model: modelId, \n payload,\n prompt,\n provider,\n providerOptions,\n system,\n temperature,\n ...rest\n } = args\n \n // Extract attachments if needed\n const processedPrompt = (rest as any).extractAttachments \n ? extractPromptAttachments(prompt) \n : prompt\n \n // Resolve model from registry\n const model = await getLanguageModel(payload, provider, modelId, providerOptions)\n \n // Return streaming result from AI SDK\n const options: Record<string, unknown> = {\n model,\n prompt: processedPrompt,\n system,\n temperature: temperature ?? 0.7,\n ...(maxTokens ? { maxOutputTokens: maxTokens } : {}),\n }\n\n if (providerOptions) {\n options.providerOptions = providerOptions\n }\n\n return sdkStreamText(options as Parameters<typeof sdkStreamText>[0])\n}\n"],"names":["streamText","sdkStreamText","extractPromptAttachments","getLanguageModel","args","maxTokens","model","modelId","payload","prompt","provider","providerOptions","system","temperature","rest","processedPrompt","extractAttachments","options","maxOutputTokens"],"mappings":"AAAA,SAASA,cAAcC,aAAa,QAAQ,KAAI;AAIhD,SAASC,wBAAwB,QAAQ,8CAA6C;AACtF,SAASC,gBAAgB,QAAQ,2BAA0B;AAE3D;;;;CAIC,GACD,OAAO,eAAeH,WAAWI,IAA6B;IAC5D,MAAM,EACJC,SAAS,EACTC,OAAOC,OAAO,EACdC,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,eAAe,EACfC,MAAM,EACNC,WAAW,EACX,GAAGC,MACJ,GAAGV;IAEJ,gCAAgC;IAChC,MAAMW,kBAAkB,AAACD,KAAaE,kBAAkB,GACpDd,yBAAyBO,UACzBA;IAEJ,8BAA8B;IAC9B,MAAMH,QAAQ,MAAMH,iBAAiBK,SAASE,UAAUH,SAASI;IAEjE,sCAAsC;IACtC,MAAMM,UAAmC;QACvCX;QACAG,QAAQM;QACRH;QACAC,aAAaA,eAAe;QAC5B,GAAIR,YAAY;YAAEa,iBAAiBb;QAAU,IAAI,CAAC,CAAC;IACrD;IAEA,IAAIM,iBAAiB;QACnBM,QAAQN,eAAe,GAAGA;IAC5B;IAEA,OAAOV,cAAcgB;AACvB"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { ImagePart, JSONValue, ModelMessage } from 'ai';
|
|
2
|
+
import type { Payload } from 'payload';
|
|
3
|
+
import type { z } from 'zod';
|
|
4
|
+
/**
|
|
5
|
+
* Provider options compatible with AI SDK's SharedV2ProviderOptions
|
|
6
|
+
* SharedV2ProviderOptions = Record<string, Record<string, JSONValue>>
|
|
7
|
+
*/
|
|
8
|
+
export type ProviderOptions = Record<string, Record<string, JSONValue>>;
|
|
9
|
+
/**
|
|
10
|
+
* Base arguments for all generation methods
|
|
11
|
+
*/
|
|
12
|
+
export interface PayloadGenerationBaseArgs {
|
|
13
|
+
extractAttachments?: boolean;
|
|
14
|
+
maxTokens?: number;
|
|
15
|
+
messages?: ModelMessage[];
|
|
16
|
+
model?: string;
|
|
17
|
+
payload: Payload;
|
|
18
|
+
prompt: string;
|
|
19
|
+
provider?: string;
|
|
20
|
+
providerOptions?: ProviderOptions;
|
|
21
|
+
system?: string;
|
|
22
|
+
temperature?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Arguments for generateObject - structured output generation
|
|
26
|
+
*/
|
|
27
|
+
export interface PayloadGenerateObjectArgs extends PayloadGenerationBaseArgs {
|
|
28
|
+
images?: ImagePart[];
|
|
29
|
+
mode?: 'auto' | 'json' | 'tool';
|
|
30
|
+
schema?: Record<string, unknown> | z.ZodTypeAny;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Arguments for generateText - simple text generation
|
|
34
|
+
*/
|
|
35
|
+
export interface PayloadGenerateTextArgs extends PayloadGenerationBaseArgs {
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Arguments for generateMedia - image/video generation
|
|
39
|
+
*/
|
|
40
|
+
export interface PayloadGenerateMediaArgs {
|
|
41
|
+
aspectRatio?: string;
|
|
42
|
+
audioFormat?: string;
|
|
43
|
+
callbackUrl?: string;
|
|
44
|
+
duration?: number;
|
|
45
|
+
fps?: number;
|
|
46
|
+
images?: ImagePart[];
|
|
47
|
+
instructionId?: number | string;
|
|
48
|
+
mode?: 'i2v' | 't2v';
|
|
49
|
+
model?: string;
|
|
50
|
+
n?: number;
|
|
51
|
+
payload: Payload;
|
|
52
|
+
prompt: string;
|
|
53
|
+
provider?: string;
|
|
54
|
+
providerOptions?: ProviderOptions;
|
|
55
|
+
seed?: number;
|
|
56
|
+
size?: {
|
|
57
|
+
height: number;
|
|
58
|
+
width: number;
|
|
59
|
+
};
|
|
60
|
+
speed?: number;
|
|
61
|
+
voice?: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Result from generateMedia - can be immediate file or async job
|
|
65
|
+
*/
|
|
66
|
+
export interface MediaResult {
|
|
67
|
+
file?: {
|
|
68
|
+
data: Buffer;
|
|
69
|
+
mimetype: string;
|
|
70
|
+
name: string;
|
|
71
|
+
size: number;
|
|
72
|
+
};
|
|
73
|
+
jobId?: string;
|
|
74
|
+
progress?: number;
|
|
75
|
+
status?: 'completed' | 'failed' | 'queued' | 'running';
|
|
76
|
+
taskId?: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Internal type for multimodal image files
|
|
80
|
+
*/
|
|
81
|
+
export interface MultimodalImageFile {
|
|
82
|
+
base64Data?: string;
|
|
83
|
+
mediaType?: string;
|
|
84
|
+
uint8Array?: Uint8Array;
|
|
85
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/ai/core/types.ts"],"sourcesContent":["import type { ImagePart, JSONValue, ModelMessage } from 'ai'\nimport type { Payload } from 'payload'\nimport type { z } from 'zod'\n\n/**\n * Provider options compatible with AI SDK's SharedV2ProviderOptions\n * SharedV2ProviderOptions = Record<string, Record<string, JSONValue>>\n */\nexport type ProviderOptions = Record<string, Record<string, JSONValue>>\n\n/**\n * Base arguments for all generation methods\n */\nexport interface PayloadGenerationBaseArgs {\n extractAttachments?: boolean\n maxTokens?: number\n messages?: ModelMessage[]\n model?: string\n payload: Payload\n prompt: string\n provider?: string\n providerOptions?: ProviderOptions\n system?: string\n temperature?: number\n}\n\n/**\n * Arguments for generateObject - structured output generation\n */\nexport interface PayloadGenerateObjectArgs extends PayloadGenerationBaseArgs {\n images?: ImagePart[]\n mode?: 'auto' | 'json' | 'tool'\n schema?: Record<string, unknown> | z.ZodTypeAny\n}\n\n/**\n * Arguments for generateText - simple text generation\n */\nexport interface PayloadGenerateTextArgs extends PayloadGenerationBaseArgs {\n // No additional fields needed for basic text generation\n}\n\n/**\n * Arguments for generateMedia - image/video generation\n */\nexport interface PayloadGenerateMediaArgs {\n aspectRatio?: string\n audioFormat?: string\n callbackUrl?: string\n duration?: number\n fps?: number\n images?: ImagePart[]\n instructionId?: number | string\n mode?: 'i2v' | 't2v'\n model?: string\n n?: number\n payload: Payload\n prompt: string\n provider?: string\n providerOptions?: ProviderOptions\n seed?: number\n size?: { height: number; width: number }\n speed?: number\n voice?: string\n}\n\n/**\n * Result from generateMedia - can be immediate file or async job\n */\nexport interface MediaResult {\n // Immediate result (image generation)\n file?: {\n data: Buffer\n mimetype: string\n name: string\n size: number\n }\n \n // Async job result (video generation)\n jobId?: string\n progress?: number\n status?: 'completed' | 'failed' | 'queued' | 'running'\n taskId?: string\n}\n\n/**\n * Internal type for multimodal image files\n */\nexport interface MultimodalImageFile {\n base64Data?: string\n mediaType?: string\n uint8Array?: Uint8Array\n}\n"],"names":[],"mappings":"AAqFA;;CAEC,GACD,WAIC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Field, Payload } from 'payload';
|
|
2
|
+
export type GenerateArgs = {
|
|
3
|
+
mode?: 'auto' | 'json' | 'tool';
|
|
4
|
+
model?: string;
|
|
5
|
+
payload: Payload;
|
|
6
|
+
prompt: string;
|
|
7
|
+
provider?: string;
|
|
8
|
+
schema?: Field[];
|
|
9
|
+
system?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function generate(args: GenerateArgs): Promise<import("ai").GenerateObjectResult<Record<string, unknown>> | import("ai").GenerateTextResult<import("ai").ToolSet, never>>;
|
package/dist/ai/index.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { generateObject, generateText } from 'ai';
|
|
2
|
+
import { convertPayloadSchemaToZod } from '../utilities/schemaConverter.js';
|
|
3
|
+
import { getLanguageModel } from './providers/registry.js';
|
|
4
|
+
// Use in payload.ai that is injected during payload init. // this will always be non-streaming function, generateText, generateObject, Images etc
|
|
5
|
+
export async function generate(args) {
|
|
6
|
+
const { mode, model, payload, prompt, provider, schema, system } = args;
|
|
7
|
+
const languageModel = await getLanguageModel(payload, provider, model);
|
|
8
|
+
if (schema) {
|
|
9
|
+
const zodSchema = convertPayloadSchemaToZod(schema);
|
|
10
|
+
return generateObject({
|
|
11
|
+
mode: mode || 'auto',
|
|
12
|
+
model: languageModel,
|
|
13
|
+
prompt,
|
|
14
|
+
schema: zodSchema,
|
|
15
|
+
system
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return generateText({
|
|
19
|
+
model: languageModel,
|
|
20
|
+
prompt,
|
|
21
|
+
system
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ai/index.ts"],"sourcesContent":["import type { Field, Payload } from 'payload'\n\nimport { generateObject, generateText } from 'ai'\n\nimport { convertPayloadSchemaToZod } from '../utilities/schemaConverter.js'\nimport { getLanguageModel } from './providers/registry.js'\n\nexport type GenerateArgs = {\n mode?: 'auto' | 'json' | 'tool'\n model?: string\n payload: Payload\n prompt: string\n provider?: string\n schema?: Field[]\n system?: string\n}\n\n// Use in payload.ai that is injected during payload init. // this will always be non-streaming function, generateText, generateObject, Images etc\nexport async function generate(args: GenerateArgs) {\n const { mode, model, payload, prompt, provider, schema, system } = args\n\n const languageModel = await getLanguageModel(payload, provider, model)\n\n if (schema) {\n const zodSchema = convertPayloadSchemaToZod(schema)\n return generateObject({\n mode: mode || 'auto',\n model: languageModel,\n prompt,\n schema: zodSchema,\n system,\n })\n }\n\n return generateText({\n model: languageModel,\n prompt,\n system,\n })\n}\n"],"names":["generateObject","generateText","convertPayloadSchemaToZod","getLanguageModel","generate","args","mode","model","payload","prompt","provider","schema","system","languageModel","zodSchema"],"mappings":"AAEA,SAASA,cAAc,EAAEC,YAAY,QAAQ,KAAI;AAEjD,SAASC,yBAAyB,QAAQ,kCAAiC;AAC3E,SAASC,gBAAgB,QAAQ,0BAAyB;AAY1D,kJAAkJ;AAClJ,OAAO,eAAeC,SAASC,IAAkB;IAC/C,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,MAAM,EAAE,GAAGP;IAEnE,MAAMQ,gBAAgB,MAAMV,iBAAiBK,SAASE,UAAUH;IAEhE,IAAII,QAAQ;QACV,MAAMG,YAAYZ,0BAA0BS;QAC5C,OAAOX,eAAe;YACpBM,MAAMA,QAAQ;YACdC,OAAOM;YACPJ;YACAE,QAAQG;YACRF;QACF;IACF;IAEA,OAAOX,aAAa;QAClBM,OAAOM;QACPJ;QACAG;IACF;AACF"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
export const anthropicBlock = {
|
|
2
|
+
slug: 'anthropic',
|
|
3
|
+
fields: [
|
|
4
|
+
{
|
|
5
|
+
type: 'tabs',
|
|
6
|
+
tabs: [
|
|
7
|
+
// 1. Setup tab
|
|
8
|
+
{
|
|
9
|
+
fields: [
|
|
10
|
+
{
|
|
11
|
+
name: 'enabled',
|
|
12
|
+
type: 'checkbox',
|
|
13
|
+
defaultValue: true,
|
|
14
|
+
label: 'Enabled'
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'apiKey',
|
|
18
|
+
type: 'text',
|
|
19
|
+
admin: {
|
|
20
|
+
components: {
|
|
21
|
+
Field: '@ai-stack/payloadcms/client#EncryptedTextField'
|
|
22
|
+
},
|
|
23
|
+
description: 'Your Anthropic API key. Will be encrypted in the database.'
|
|
24
|
+
},
|
|
25
|
+
label: 'API Key',
|
|
26
|
+
required: true
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
label: 'Setup'
|
|
30
|
+
},
|
|
31
|
+
// 2. Provider Options tab
|
|
32
|
+
{
|
|
33
|
+
fields: [
|
|
34
|
+
{
|
|
35
|
+
name: 'textProviderOptions',
|
|
36
|
+
type: 'group',
|
|
37
|
+
admin: {
|
|
38
|
+
description: 'Default provider options for text generation models.'
|
|
39
|
+
},
|
|
40
|
+
fields: [
|
|
41
|
+
{
|
|
42
|
+
name: 'temperature',
|
|
43
|
+
type: 'number',
|
|
44
|
+
defaultValue: 1.0,
|
|
45
|
+
label: 'Default Temperature',
|
|
46
|
+
max: 1.0,
|
|
47
|
+
min: 0.0
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'max_tokens',
|
|
51
|
+
type: 'number',
|
|
52
|
+
defaultValue: 4096,
|
|
53
|
+
label: 'Max Tokens'
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'top_p',
|
|
57
|
+
type: 'number',
|
|
58
|
+
label: 'Top P',
|
|
59
|
+
max: 1.0,
|
|
60
|
+
min: 0.0
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'top_k',
|
|
64
|
+
type: 'number',
|
|
65
|
+
label: 'Top K'
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
label: 'Text Provider Options'
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
label: 'Provider Options'
|
|
72
|
+
},
|
|
73
|
+
// 3. Models tab
|
|
74
|
+
{
|
|
75
|
+
fields: [
|
|
76
|
+
{
|
|
77
|
+
name: 'models',
|
|
78
|
+
type: 'array',
|
|
79
|
+
admin: {
|
|
80
|
+
components: {
|
|
81
|
+
RowLabel: '@ai-stack/payloadcms/client#ModelRowLabel'
|
|
82
|
+
},
|
|
83
|
+
initCollapsed: true
|
|
84
|
+
},
|
|
85
|
+
defaultValue: [
|
|
86
|
+
{
|
|
87
|
+
id: 'claude-opus-4-1',
|
|
88
|
+
name: 'Claude Opus 4.1',
|
|
89
|
+
enabled: true,
|
|
90
|
+
responseModalities: [
|
|
91
|
+
'TEXT'
|
|
92
|
+
],
|
|
93
|
+
useCase: 'text'
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
id: 'claude-opus-4-0',
|
|
97
|
+
name: 'Claude Opus 4.0',
|
|
98
|
+
enabled: true,
|
|
99
|
+
responseModalities: [
|
|
100
|
+
'TEXT'
|
|
101
|
+
],
|
|
102
|
+
useCase: 'text'
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
id: 'claude-sonnet-4-0',
|
|
106
|
+
name: 'Claude Sonnet 4.0',
|
|
107
|
+
enabled: true,
|
|
108
|
+
responseModalities: [
|
|
109
|
+
'TEXT'
|
|
110
|
+
],
|
|
111
|
+
useCase: 'text'
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
id: 'claude-3-5-sonnet-latest',
|
|
115
|
+
name: 'Claude 3.5 Sonnet',
|
|
116
|
+
enabled: true,
|
|
117
|
+
responseModalities: [
|
|
118
|
+
'TEXT'
|
|
119
|
+
],
|
|
120
|
+
useCase: 'text'
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
id: 'claude-3-5-haiku-latest',
|
|
124
|
+
name: 'Claude 3.5 Haiku',
|
|
125
|
+
enabled: true,
|
|
126
|
+
responseModalities: [
|
|
127
|
+
'TEXT'
|
|
128
|
+
],
|
|
129
|
+
useCase: 'text'
|
|
130
|
+
}
|
|
131
|
+
],
|
|
132
|
+
fields: [
|
|
133
|
+
{
|
|
134
|
+
type: 'row',
|
|
135
|
+
fields: [
|
|
136
|
+
{
|
|
137
|
+
name: 'id',
|
|
138
|
+
type: 'text',
|
|
139
|
+
admin: {
|
|
140
|
+
width: '33%'
|
|
141
|
+
},
|
|
142
|
+
label: 'Model ID',
|
|
143
|
+
required: true
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: 'name',
|
|
147
|
+
type: 'text',
|
|
148
|
+
admin: {
|
|
149
|
+
width: '33%'
|
|
150
|
+
},
|
|
151
|
+
label: 'Display Name',
|
|
152
|
+
required: true
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
name: 'useCase',
|
|
156
|
+
type: 'select',
|
|
157
|
+
admin: {
|
|
158
|
+
width: '33%'
|
|
159
|
+
},
|
|
160
|
+
dbName: 'anthropic-model-useCase',
|
|
161
|
+
defaultValue: 'text',
|
|
162
|
+
label: 'Use Case',
|
|
163
|
+
options: [
|
|
164
|
+
{
|
|
165
|
+
label: 'Text Generation',
|
|
166
|
+
value: 'text'
|
|
167
|
+
}
|
|
168
|
+
]
|
|
169
|
+
}
|
|
170
|
+
]
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
name: 'responseModalities',
|
|
174
|
+
type: 'select',
|
|
175
|
+
admin: {
|
|
176
|
+
description: 'Output capabilities of this model',
|
|
177
|
+
width: '50%'
|
|
178
|
+
},
|
|
179
|
+
dbName: 'anthropic-model-modalities',
|
|
180
|
+
hasMany: true,
|
|
181
|
+
label: 'Response Modalities',
|
|
182
|
+
options: [
|
|
183
|
+
{
|
|
184
|
+
label: 'Text',
|
|
185
|
+
value: 'TEXT'
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
label: 'Image',
|
|
189
|
+
value: 'IMAGE'
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
label: 'Audio',
|
|
193
|
+
value: 'AUDIO'
|
|
194
|
+
}
|
|
195
|
+
]
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
name: 'enabled',
|
|
199
|
+
type: 'checkbox',
|
|
200
|
+
admin: {
|
|
201
|
+
width: '50%'
|
|
202
|
+
},
|
|
203
|
+
defaultValue: true,
|
|
204
|
+
label: 'Enabled'
|
|
205
|
+
}
|
|
206
|
+
],
|
|
207
|
+
label: 'Available Models'
|
|
208
|
+
}
|
|
209
|
+
],
|
|
210
|
+
label: 'Models'
|
|
211
|
+
}
|
|
212
|
+
]
|
|
213
|
+
}
|
|
214
|
+
],
|
|
215
|
+
imageURL: '/provider-icons/anthropic.webp',
|
|
216
|
+
labels: {
|
|
217
|
+
plural: 'Anthropic Providers',
|
|
218
|
+
singular: 'Anthropic'
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
//# sourceMappingURL=anthropic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/ai/providers/blocks/anthropic.ts"],"sourcesContent":["import type { Block } from 'payload'\n\nexport const anthropicBlock: Block = {\n slug: 'anthropic',\n fields: [\n {\n type: 'tabs',\n tabs: [\n // 1. Setup tab\n {\n fields: [\n {\n name: 'enabled',\n type: 'checkbox',\n defaultValue: true,\n label: 'Enabled',\n },\n {\n name: 'apiKey',\n type: 'text',\n admin: {\n components: {\n Field: '@ai-stack/payloadcms/client#EncryptedTextField',\n },\n description: 'Your Anthropic API key. Will be encrypted in the database.',\n },\n label: 'API Key',\n required: true,\n },\n ],\n label: 'Setup',\n },\n\n // 2. Provider Options tab\n {\n fields: [\n {\n name: 'textProviderOptions',\n type: 'group',\n admin: {\n description: 'Default provider options for text generation models.',\n },\n fields: [\n {\n name: 'temperature',\n type: 'number',\n defaultValue: 1.0,\n label: 'Default Temperature',\n max: 1.0,\n min: 0.0,\n },\n {\n name: 'max_tokens',\n type: 'number',\n defaultValue: 4096,\n label: 'Max Tokens',\n },\n {\n name: 'top_p',\n type: 'number',\n label: 'Top P',\n max: 1.0,\n min: 0.0,\n },\n {\n name: 'top_k',\n type: 'number',\n label: 'Top K',\n },\n ],\n label: 'Text Provider Options',\n },\n ],\n label: 'Provider Options',\n },\n\n // 3. Models tab\n {\n fields: [\n {\n name: 'models',\n type: 'array',\n admin: {\n components: {\n RowLabel: '@ai-stack/payloadcms/client#ModelRowLabel',\n },\n initCollapsed: true,\n },\n defaultValue: [\n { id: 'claude-opus-4-1', name: 'Claude Opus 4.1', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'claude-opus-4-0', name: 'Claude Opus 4.0', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'claude-sonnet-4-0', name: 'Claude Sonnet 4.0', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n {\n id: 'claude-3-5-sonnet-latest',\n name: 'Claude 3.5 Sonnet',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'claude-3-5-haiku-latest',\n name: 'Claude 3.5 Haiku',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n ],\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'id',\n type: 'text',\n admin: { width: '33%' },\n label: 'Model ID',\n required: true,\n },\n {\n name: 'name',\n type: 'text',\n admin: { width: '33%' },\n label: 'Display Name',\n required: true,\n },\n {\n name: 'useCase',\n type: 'select',\n admin: { width: '33%' },\n dbName: 'anthropic-model-useCase',\n defaultValue: 'text',\n label: 'Use Case',\n options: [{ label: 'Text Generation', value: 'text' }],\n },\n ],\n },\n {\n name: 'responseModalities',\n type: 'select',\n admin: {\n description: 'Output capabilities of this model',\n width: '50%',\n },\n dbName: 'anthropic-model-modalities',\n hasMany: true,\n label: 'Response Modalities',\n options: [\n { label: 'Text', value: 'TEXT' },\n { label: 'Image', value: 'IMAGE' },\n { label: 'Audio', value: 'AUDIO' },\n ],\n },\n {\n name: 'enabled',\n type: 'checkbox',\n admin: {\n width: '50%',\n },\n defaultValue: true,\n label: 'Enabled',\n },\n ],\n label: 'Available Models',\n },\n ],\n label: 'Models',\n },\n ],\n },\n ],\n imageURL: '/provider-icons/anthropic.webp',\n labels: {\n plural: 'Anthropic Providers',\n singular: 'Anthropic',\n },\n}\n\n"],"names":["anthropicBlock","slug","fields","type","tabs","name","defaultValue","label","admin","components","Field","description","required","max","min","RowLabel","initCollapsed","id","enabled","responseModalities","useCase","width","dbName","options","value","hasMany","imageURL","labels","plural","singular"],"mappings":"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"}
|