@ai-stack/payloadcms 3.68.0 → 3.76.0-beta.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.
Files changed (154) hide show
  1. package/dist/ai/core/media/image/generateImage.js +2 -6
  2. package/dist/ai/core/media/image/generateImage.js.map +1 -1
  3. package/dist/ai/core/media/image/handlers/multimodal.js +5 -0
  4. package/dist/ai/core/media/image/handlers/multimodal.js.map +1 -1
  5. package/dist/ai/core/streamObject.js +3 -3
  6. package/dist/ai/core/streamObject.js.map +1 -1
  7. package/dist/ai/core/types.d.ts +3 -0
  8. package/dist/ai/core/types.js.map +1 -1
  9. package/dist/ai/prompts.d.ts +1 -2
  10. package/dist/ai/prompts.js +0 -110
  11. package/dist/ai/prompts.js.map +1 -1
  12. package/dist/ai/providers/blocks/anthropic.js +2 -1
  13. package/dist/ai/providers/blocks/anthropic.js.map +1 -1
  14. package/dist/ai/providers/blocks/elevenlabs.js +3 -2
  15. package/dist/ai/providers/blocks/elevenlabs.js.map +1 -1
  16. package/dist/ai/providers/blocks/fal.js +2 -1
  17. package/dist/ai/providers/blocks/fal.js.map +1 -1
  18. package/dist/ai/providers/blocks/google.js +11 -6
  19. package/dist/ai/providers/blocks/google.js.map +1 -1
  20. package/dist/ai/providers/blocks/openai-compatible.js +2 -1
  21. package/dist/ai/providers/blocks/openai-compatible.js.map +1 -1
  22. package/dist/ai/providers/blocks/openai.js +3 -2
  23. package/dist/ai/providers/blocks/openai.js.map +1 -1
  24. package/dist/ai/providers/blocks/xai.js +2 -1
  25. package/dist/ai/providers/blocks/xai.js.map +1 -1
  26. package/dist/ai/providers/icons.d.ts +7 -0
  27. package/dist/ai/providers/icons.js +9 -0
  28. package/dist/ai/providers/icons.js.map +1 -0
  29. package/dist/ai/providers/registry.js +34 -24
  30. package/dist/ai/providers/registry.js.map +1 -1
  31. package/dist/ai/utils/filterEditorSchemaByNodes.d.ts +9 -0
  32. package/dist/ai/utils/filterEditorSchemaByNodes.js +30 -3
  33. package/dist/ai/utils/filterEditorSchemaByNodes.js.map +1 -1
  34. package/dist/ai/utils/nodeToSchemaMap.d.ts +22 -0
  35. package/dist/ai/utils/nodeToSchemaMap.js +72 -0
  36. package/dist/ai/utils/nodeToSchemaMap.js.map +1 -0
  37. package/dist/collections/AIJobs.js +1 -1
  38. package/dist/collections/AIJobs.js.map +1 -1
  39. package/dist/collections/AISettings.js +47 -20
  40. package/dist/collections/AISettings.js.map +1 -1
  41. package/dist/collections/Instructions.js +37 -0
  42. package/dist/collections/Instructions.js.map +1 -1
  43. package/dist/defaults.d.ts +1 -0
  44. package/dist/defaults.js +8 -0
  45. package/dist/defaults.js.map +1 -1
  46. package/dist/endpoints/chat.d.ts +4 -0
  47. package/dist/endpoints/fetchFields.js +10 -0
  48. package/dist/endpoints/fetchFields.js.map +1 -1
  49. package/dist/endpoints/fetchVoices.js +41 -24
  50. package/dist/endpoints/fetchVoices.js.map +1 -1
  51. package/dist/endpoints/index.js +194 -16
  52. package/dist/endpoints/index.js.map +1 -1
  53. package/dist/exports/fields.d.ts +1 -0
  54. package/dist/exports/fields.js +1 -0
  55. package/dist/exports/fields.js.map +1 -1
  56. package/dist/fields/ArrayComposeField/ArrayComposeField.d.ts +15 -0
  57. package/dist/fields/ArrayComposeField/ArrayComposeField.js +87 -0
  58. package/dist/fields/ArrayComposeField/ArrayComposeField.js.map +1 -0
  59. package/dist/fields/ArrayComposeField/ArrayComposeField.jsx +73 -0
  60. package/dist/fields/PromptEditorField/PromptEditorField.js +7 -2
  61. package/dist/fields/PromptEditorField/PromptEditorField.js.map +1 -1
  62. package/dist/fields/PromptEditorField/PromptEditorField.jsx +5 -2
  63. package/dist/index.d.ts +3 -1
  64. package/dist/index.js +2 -1
  65. package/dist/index.js.map +1 -1
  66. package/dist/payload-ai.d.ts +152 -0
  67. package/dist/plugin.js +16 -32
  68. package/dist/plugin.js.map +1 -1
  69. package/dist/providers/InstructionsProvider/InstructionsProvider.js +47 -15
  70. package/dist/providers/InstructionsProvider/InstructionsProvider.js.map +1 -1
  71. package/dist/providers/InstructionsProvider/InstructionsProvider.jsx +39 -16
  72. package/dist/providers/InstructionsProvider/context.d.ts +3 -0
  73. package/dist/providers/InstructionsProvider/context.js +2 -0
  74. package/dist/providers/InstructionsProvider/context.js.map +1 -1
  75. package/dist/providers/InstructionsProvider/useInstructions.js +21 -2
  76. package/dist/providers/InstructionsProvider/useInstructions.js.map +1 -1
  77. package/dist/styles.d.ts +11 -0
  78. package/dist/types/handlebars-async-helpers.d.ts +1 -0
  79. package/dist/types/handlebars-dist-handlebars.d.ts +1 -0
  80. package/dist/types/react-mentions.d.ts +1 -0
  81. package/dist/types.d.ts +34 -5
  82. package/dist/types.js +1 -0
  83. package/dist/types.js.map +1 -1
  84. package/dist/ui/AIConfigDashboard/index.js +198 -22
  85. package/dist/ui/AIConfigDashboard/index.js.map +1 -1
  86. package/dist/ui/AIConfigDashboard/index.jsx +159 -13
  87. package/dist/ui/Compose/Compose.d.ts +1 -0
  88. package/dist/ui/Compose/Compose.js +23 -4
  89. package/dist/ui/Compose/Compose.js.map +1 -1
  90. package/dist/ui/Compose/Compose.jsx +23 -4
  91. package/dist/ui/Compose/UndoRedoActions.d.ts +2 -2
  92. package/dist/ui/Compose/UndoRedoActions.js +8 -5
  93. package/dist/ui/Compose/UndoRedoActions.js.map +1 -1
  94. package/dist/ui/Compose/UndoRedoActions.jsx +6 -5
  95. package/dist/ui/Compose/compose.module.css +56 -16
  96. package/dist/ui/Compose/hooks/menu/itemsMap.js +12 -6
  97. package/dist/ui/Compose/hooks/menu/itemsMap.js.map +1 -1
  98. package/dist/ui/Compose/hooks/menu/useMenu.js +26 -15
  99. package/dist/ui/Compose/hooks/menu/useMenu.js.map +1 -1
  100. package/dist/ui/Compose/hooks/menu/useMenu.jsx +25 -12
  101. package/dist/ui/Compose/hooks/useGenerate.js +26 -174
  102. package/dist/ui/Compose/hooks/useGenerate.js.map +1 -1
  103. package/dist/ui/Compose/hooks/useGenerateUpload.d.ts +11 -0
  104. package/dist/ui/Compose/hooks/useGenerateUpload.js +150 -0
  105. package/dist/ui/Compose/hooks/useGenerateUpload.js.map +1 -0
  106. package/dist/ui/Compose/hooks/useHistory.d.ts +0 -1
  107. package/dist/ui/Compose/hooks/useHistory.js +65 -25
  108. package/dist/ui/Compose/hooks/useHistory.js.map +1 -1
  109. package/dist/ui/Compose/hooks/useStreamingUpdate.d.ts +8 -0
  110. package/dist/ui/Compose/hooks/useStreamingUpdate.js +48 -0
  111. package/dist/ui/Compose/hooks/useStreamingUpdate.js.map +1 -0
  112. package/dist/ui/DynamicVoiceSelect/index.js +63 -11
  113. package/dist/ui/DynamicVoiceSelect/index.js.map +1 -1
  114. package/dist/ui/DynamicVoiceSelect/index.jsx +47 -14
  115. package/dist/ui/EncryptedTextField/index.js +4 -4
  116. package/dist/ui/EncryptedTextField/index.js.map +1 -1
  117. package/dist/ui/EncryptedTextField/index.jsx +4 -4
  118. package/dist/ui/VoicesFetcher/index.js +34 -16
  119. package/dist/ui/VoicesFetcher/index.js.map +1 -1
  120. package/dist/ui/VoicesFetcher/index.jsx +32 -15
  121. package/dist/utilities/buildSmartPrompt.d.ts +22 -0
  122. package/dist/utilities/buildSmartPrompt.js +141 -0
  123. package/dist/utilities/buildSmartPrompt.js.map +1 -0
  124. package/dist/utilities/encryption.js +2 -1
  125. package/dist/utilities/encryption.js.map +1 -1
  126. package/dist/utilities/fieldToJsonSchema.js +32 -3
  127. package/dist/utilities/fieldToJsonSchema.js.map +1 -1
  128. package/dist/utilities/resolveImageReferences.d.ts +3 -1
  129. package/dist/utilities/resolveImageReferences.js +21 -2
  130. package/dist/utilities/resolveImageReferences.js.map +1 -1
  131. package/dist/utilities/seedProperties.d.ts +7 -0
  132. package/dist/utilities/seedProperties.js +100 -0
  133. package/dist/utilities/seedProperties.js.map +1 -0
  134. package/dist/utilities/setSafeLexicalState.js +79 -6
  135. package/dist/utilities/setSafeLexicalState.js.map +1 -1
  136. package/dist/utilities/updateFieldsConfig.d.ts +1 -1
  137. package/dist/utilities/updateFieldsConfig.js +8 -1
  138. package/dist/utilities/updateFieldsConfig.js.map +1 -1
  139. package/package.json +35 -33
  140. package/dist/endpoints/chat.d.js +0 -3
  141. package/dist/endpoints/chat.d.js.map +0 -1
  142. package/dist/init.d.ts +0 -7
  143. package/dist/init.js +0 -135
  144. package/dist/init.js.map +0 -1
  145. package/dist/payload-ai.d.js +0 -3
  146. package/dist/payload-ai.d.js.map +0 -1
  147. package/dist/styles.d.js +0 -2
  148. package/dist/styles.d.js.map +0 -1
  149. package/dist/types/handlebars-async-helpers.d.js +0 -2
  150. package/dist/types/handlebars-async-helpers.d.js.map +0 -1
  151. package/dist/types/handlebars-dist-handlebars.d.js +0 -2
  152. package/dist/types/handlebars-dist-handlebars.d.js.map +0 -1
  153. package/dist/types/react-mentions.d.js +0 -2
  154. package/dist/types/react-mentions.d.js.map +0 -1
@@ -1,3 +1,4 @@
1
+ import { GoogleIcon } from '../icons.js';
1
2
  export const googleBlock = {
2
3
  slug: 'google',
3
4
  custom: {
@@ -417,7 +418,7 @@ export const googleBlock = {
417
418
  RowLabel: '@ai-stack/payloadcms/client#ModelRowLabel'
418
419
  },
419
420
  description: 'Keep this list short. Enable only the models you actually use.',
420
- initCollapsed: false
421
+ initCollapsed: true
421
422
  },
422
423
  defaultValue: [
423
424
  // Text models
@@ -468,15 +469,19 @@ export const googleBlock = {
468
469
  },
469
470
  // Image models
470
471
  {
471
- id: 'imagen-3.0-generate-002',
472
- name: 'Imagen 3 (Fast)',
472
+ id: 'gemini-2.5-flash-image',
473
+ name: 'Gemini 2.5 Flash Image',
473
474
  enabled: true,
475
+ responseModalities: [
476
+ 'IMAGE'
477
+ ],
474
478
  useCase: 'image'
475
479
  },
476
480
  {
477
- id: 'gemini-2.5-flash-image',
478
- name: 'Gemini 2.5 Flash Image',
481
+ id: 'imagen-4.0-generate-001',
482
+ name: 'Imagen 4',
479
483
  enabled: true,
484
+ // TODO: fix this with proper definition for multimodel or image model only
480
485
  responseModalities: [
481
486
  'IMAGE'
482
487
  ],
@@ -612,7 +617,7 @@ export const googleBlock = {
612
617
  ]
613
618
  }
614
619
  ],
615
- imageURL: '/provider-icons/google-gemini.webp',
620
+ imageURL: GoogleIcon,
616
621
  labels: {
617
622
  plural: 'Google Providers',
618
623
  singular: 'Google Gemini'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/ai/providers/blocks/google.ts"],"sourcesContent":["import type { Block } from 'payload'\n\nexport const googleBlock: Block = {\n slug: 'google',\n custom: {\n providerOptionsSchemas: {\n image: {\n fields: ['aspectRatio', 'personGeneration', 'seed', 'addWatermark'],\n },\n text: {\n fields: ['temperature', 'maxOutputTokens', 'topP', 'topK', 'safetySettings'],\n },\n tts: {\n fields: ['speed', 'volumeGainDb', 'speakingRate'],\n },\n },\n },\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:\n 'Optional. If empty, @ai-sdk/google will use the GOOGLE_GENERATIVE_AI_API_KEY environment variable.',\n },\n label: 'API Key',\n required: false,\n },\n ],\n label: 'Setup',\n },\n\n // 2. Connection tab\n {\n fields: [\n {\n type: 'collapsible',\n admin: {\n initCollapsed: false,\n },\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'baseURL',\n type: 'text',\n admin: {\n description:\n 'Optional. Override default API endpoint (defaults to https://generativelanguage.googleapis.com/v1beta).',\n },\n label: 'Base URL',\n },\n ],\n },\n {\n name: 'headers',\n type: 'array',\n admin: {\n description:\n 'Optional. Extra headers to send with every request, for example routing through a proxy.',\n },\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'key',\n type: 'text',\n admin: {\n width: '50%',\n },\n label: 'Header Name',\n required: true,\n },\n {\n name: 'value',\n type: 'text',\n admin: {\n width: '50%',\n },\n label: 'Header Value',\n required: true,\n },\n ],\n },\n ],\n label: 'Custom Headers',\n },\n ],\n label: 'API & Network Settings',\n },\n ],\n label: 'Connection',\n },\n\n // 3. Voices tab (NEW)\n {\n fields: [\n {\n name: 'voices',\n type: 'array',\n admin: {\n description: 'Available voices for Gemini TTS models.',\n initCollapsed: false,\n },\n defaultValue: [\n { id: 'Puck', name: 'Puck (Upbeat)', enabled: true },\n { id: 'Charon', name: 'Charon (Informative)', enabled: true },\n { id: 'Kore', name: 'Kore (Firm)', enabled: true },\n { id: 'Fenrir', name: 'Fenrir (Excitable)', enabled: true },\n { id: 'Aoede', name: 'Aoede (Breezy)', enabled: true },\n { id: 'Zephyr', name: 'Zephyr (Bright)', enabled: true },\n ],\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'id',\n type: 'text',\n admin: {\n description: 'Voice ID used by Google API',\n width: '40%',\n },\n label: 'Voice ID',\n required: true,\n },\n {\n name: 'name',\n type: 'text',\n admin: {\n width: '40%',\n },\n label: 'Display Name',\n required: true,\n },\n {\n name: 'enabled',\n type: 'checkbox',\n admin: {\n width: '20%',\n },\n defaultValue: true,\n label: 'Enabled',\n },\n ],\n },\n ],\n label: 'Available Voices',\n },\n ],\n label: 'Voices',\n },\n\n // 4. Provider Options (NEW - One group per use case)\n {\n fields: [\n // TTS Settings\n {\n name: 'ttsProviderOptions',\n type: 'group',\n admin: {\n description: 'Default provider options for TTS models.',\n },\n fields: [\n {\n name: 'speed',\n type: 'number',\n defaultValue: 1.0,\n label: 'Speaking Rate',\n max: 4.0,\n min: 0.25,\n },\n {\n name: 'volumeGainDb',\n type: 'number',\n defaultValue: 0,\n label: 'Volume Gain (dB)',\n },\n ],\n label: 'TTS Provider Options',\n },\n\n // Image Settings\n {\n name: 'imageProviderOptions',\n type: 'group',\n admin: {\n description: 'Default provider options for image generation models.',\n },\n fields: [\n {\n name: 'aspectRatio',\n type: 'select',\n dbName: 'google-image-aspectRatio',\n defaultValue: '1:1',\n label: 'Default Aspect Ratio',\n options: [\n { label: '1:1 (Square)', value: '1:1' },\n { label: '16:9 (Landscape)', value: '16:9' },\n { label: '9:16 (Portrait)', value: '9:16' },\n { label: '4:3', value: '4:3' },\n { label: '3:4', value: '3:4' },\n ],\n },\n {\n name: 'personGeneration',\n type: 'select',\n dbName: 'google-image-personGeneration',\n defaultValue: 'allow_adult',\n label: 'Person Generation (Imagen)',\n options: [\n { label: 'Allow Adults Only', value: 'allow_adult' },\n { label: 'Allow All', value: 'allow_all' },\n { label: 'Do Not Allow', value: 'dont_allow' },\n ],\n },\n {\n name: 'addWatermark',\n type: 'checkbox',\n defaultValue: true,\n label: 'Add SynthID Watermark',\n },\n ],\n label: 'Image Provider Options',\n },\n\n // Text Settings\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: 2.0,\n min: 0.0,\n },\n {\n name: 'maxOutputTokens',\n type: 'number',\n label: 'Max Output Tokens',\n },\n {\n name: 'topP',\n type: 'number',\n defaultValue: 0.95,\n label: 'Top P',\n max: 1.0,\n min: 0.0,\n },\n {\n name: 'topK',\n type: 'number',\n defaultValue: 40,\n label: 'Top K',\n },\n {\n name: 'safetySettings',\n type: 'array',\n admin: {\n description: 'Safety filter settings',\n },\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'category',\n type: 'select',\n admin: {\n width: '50%',\n },\n dbName: 'google-safety-category',\n label: 'Category',\n options: [\n { label: 'Harassment', value: 'HARM_CATEGORY_HARASSMENT' },\n { label: 'Hate Speech', value: 'HARM_CATEGORY_HATE_SPEECH' },\n { label: 'Sexually Explicit', value: 'HARM_CATEGORY_SEXUALLY_EXPLICIT' },\n { label: 'Dangerous Content', value: 'HARM_CATEGORY_DANGEROUS_CONTENT' },\n ],\n required: true,\n },\n {\n name: 'threshold',\n type: 'select',\n admin: {\n width: '50%',\n },\n dbName: 'google-safety-threshold',\n label: 'Threshold',\n options: [\n { label: 'Block None', value: 'BLOCK_NONE' },\n { label: 'Block Low+', value: 'BLOCK_LOW_AND_ABOVE' },\n { label: 'Block Medium+', value: 'BLOCK_MEDIUM_AND_ABOVE' },\n { label: 'Block High', value: 'BLOCK_ONLY_HIGH' },\n ],\n required: true,\n },\n ],\n },\n ],\n label: 'Default Safety Settings',\n },\n ],\n label: 'Text Provider Options',\n },\n ],\n label: 'Provider Options',\n },\n\n // 5. Models tab (Simplified)\n {\n fields: [\n {\n name: 'models',\n type: 'array',\n admin: {\n components: {\n RowLabel: '@ai-stack/payloadcms/client#ModelRowLabel',\n },\n description: 'Keep this list short. Enable only the models you actually use.',\n initCollapsed: false,\n },\n defaultValue: [\n // Text models\n {\n id: 'gemini-3-pro-preview',\n name: 'Gemini 3.0 Pro (Preview)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gemini-2.5-pro',\n name: 'Gemini 2.5 Pro',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gemini-2.5-flash',\n name: 'Gemini 2.5 Flash',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gemini-1.5-pro-latest',\n name: 'Gemini 1.5 Pro (Latest)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gemini-1.5-flash-latest',\n name: 'Gemini 1.5 Flash (Latest)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n\n // Image models\n {\n id: 'imagen-3.0-generate-002',\n name: 'Imagen 3 (Fast)',\n enabled: true,\n useCase: 'image',\n },\n {\n id: 'gemini-2.5-flash-image',\n name: 'Gemini 2.5 Flash Image',\n enabled: true,\n responseModalities: ['IMAGE'],\n useCase: 'image',\n },\n {\n id: 'gemini-3-pro-image-preview',\n name: 'Gemini 3.0 Pro Image (Preview)',\n enabled: true,\n responseModalities: ['IMAGE'],\n useCase: 'image',\n },\n\n // TTS Models\n {\n id: 'gemini-2.5-pro-preview-tts',\n name: 'Gemini 2.5 Pro TTS (Preview)',\n enabled: true,\n responseModalities: ['AUDIO'],\n useCase: 'tts',\n },\n {\n id: 'gemini-2.5-flash-preview-tts',\n name: 'Gemini 2.5 Flash TTS (Preview)',\n enabled: true,\n responseModalities: ['AUDIO'],\n useCase: 'tts',\n },\n ],\n fields: [\n // Basic model info\n {\n type: 'row',\n fields: [\n {\n name: 'id',\n type: 'text',\n admin: {\n description:\n 'Exact model id as used with @ai-sdk/google.',\n width: '33%',\n },\n label: 'Model ID',\n required: true,\n },\n {\n name: 'name',\n type: 'text',\n admin: {\n width: '33%',\n },\n label: 'Display Name',\n required: true,\n },\n {\n name: 'useCase',\n type: 'select',\n admin: {\n width: '33%',\n },\n dbName: 'google-model-useCase',\n defaultValue: 'text',\n label: 'Use Case',\n options: [\n { label: 'Text', value: 'text' },\n { label: 'Image Generation', value: 'image' },\n { label: 'Text-to-Speech', value: 'tts' },\n { label: 'Embeddings', value: 'embedding' },\n ],\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: 'google-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 labels: {\n plural: 'Models',\n singular: 'Model',\n },\n },\n ],\n label: 'Models',\n },\n ],\n },\n ],\n imageURL: '/provider-icons/google-gemini.webp',\n labels: {\n plural: 'Google Providers',\n singular: 'Google Gemini',\n },\n}\n"],"names":["googleBlock","slug","custom","providerOptionsSchemas","image","fields","text","tts","type","tabs","name","defaultValue","label","admin","components","Field","description","required","initCollapsed","width","id","enabled","max","min","dbName","options","value","RowLabel","responseModalities","useCase","hasMany","labels","plural","singular","imageURL"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/ai/providers/blocks/google.ts"],"sourcesContent":["import type { Block } from 'payload'\n\nimport { GoogleIcon } from '../icons.js'\n\nexport const googleBlock: Block = {\n slug: 'google',\n custom: {\n providerOptionsSchemas: {\n image: {\n fields: ['aspectRatio', 'personGeneration', 'seed', 'addWatermark'],\n },\n text: {\n fields: ['temperature', 'maxOutputTokens', 'topP', 'topK', 'safetySettings'],\n },\n tts: {\n fields: ['speed', 'volumeGainDb', 'speakingRate'],\n },\n },\n },\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:\n 'Optional. If empty, @ai-sdk/google will use the GOOGLE_GENERATIVE_AI_API_KEY environment variable.',\n },\n label: 'API Key',\n required: false,\n },\n ],\n label: 'Setup',\n },\n\n // 2. Connection tab\n {\n fields: [\n {\n type: 'collapsible',\n admin: {\n initCollapsed: false,\n },\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'baseURL',\n type: 'text',\n admin: {\n description:\n 'Optional. Override default API endpoint (defaults to https://generativelanguage.googleapis.com/v1beta).',\n },\n label: 'Base URL',\n },\n ],\n },\n {\n name: 'headers',\n type: 'array',\n admin: {\n description:\n 'Optional. Extra headers to send with every request, for example routing through a proxy.',\n },\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'key',\n type: 'text',\n admin: {\n width: '50%',\n },\n label: 'Header Name',\n required: true,\n },\n {\n name: 'value',\n type: 'text',\n admin: {\n width: '50%',\n },\n label: 'Header Value',\n required: true,\n },\n ],\n },\n ],\n label: 'Custom Headers',\n },\n ],\n label: 'API & Network Settings',\n },\n ],\n label: 'Connection',\n },\n\n // 3. Voices tab (NEW)\n {\n fields: [\n {\n name: 'voices',\n type: 'array',\n admin: {\n description: 'Available voices for Gemini TTS models.',\n initCollapsed: false,\n },\n defaultValue: [\n { id: 'Puck', name: 'Puck (Upbeat)', enabled: true },\n { id: 'Charon', name: 'Charon (Informative)', enabled: true },\n { id: 'Kore', name: 'Kore (Firm)', enabled: true },\n { id: 'Fenrir', name: 'Fenrir (Excitable)', enabled: true },\n { id: 'Aoede', name: 'Aoede (Breezy)', enabled: true },\n { id: 'Zephyr', name: 'Zephyr (Bright)', enabled: true },\n ],\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'id',\n type: 'text',\n admin: {\n description: 'Voice ID used by Google API',\n width: '40%',\n },\n label: 'Voice ID',\n required: true,\n },\n {\n name: 'name',\n type: 'text',\n admin: {\n width: '40%',\n },\n label: 'Display Name',\n required: true,\n },\n {\n name: 'enabled',\n type: 'checkbox',\n admin: {\n width: '20%',\n },\n defaultValue: true,\n label: 'Enabled',\n },\n ],\n },\n ],\n label: 'Available Voices',\n },\n ],\n label: 'Voices',\n },\n\n // 4. Provider Options (NEW - One group per use case)\n {\n fields: [\n // TTS Settings\n {\n name: 'ttsProviderOptions',\n type: 'group',\n admin: {\n description: 'Default provider options for TTS models.',\n },\n fields: [\n {\n name: 'speed',\n type: 'number',\n defaultValue: 1.0,\n label: 'Speaking Rate',\n max: 4.0,\n min: 0.25,\n },\n {\n name: 'volumeGainDb',\n type: 'number',\n defaultValue: 0,\n label: 'Volume Gain (dB)',\n },\n ],\n label: 'TTS Provider Options',\n },\n\n // Image Settings\n {\n name: 'imageProviderOptions',\n type: 'group',\n admin: {\n description: 'Default provider options for image generation models.',\n },\n fields: [\n {\n name: 'aspectRatio',\n type: 'select',\n dbName: 'google-image-aspectRatio',\n defaultValue: '1:1',\n label: 'Default Aspect Ratio',\n options: [\n { label: '1:1 (Square)', value: '1:1' },\n { label: '16:9 (Landscape)', value: '16:9' },\n { label: '9:16 (Portrait)', value: '9:16' },\n { label: '4:3', value: '4:3' },\n { label: '3:4', value: '3:4' },\n ],\n },\n {\n name: 'personGeneration',\n type: 'select',\n dbName: 'google-image-personGeneration',\n defaultValue: 'allow_adult',\n label: 'Person Generation (Imagen)',\n options: [\n { label: 'Allow Adults Only', value: 'allow_adult' },\n { label: 'Allow All', value: 'allow_all' },\n { label: 'Do Not Allow', value: 'dont_allow' },\n ],\n },\n {\n name: 'addWatermark',\n type: 'checkbox',\n defaultValue: true,\n label: 'Add SynthID Watermark',\n },\n ],\n label: 'Image Provider Options',\n },\n\n // Text Settings\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: 2.0,\n min: 0.0,\n },\n {\n name: 'maxOutputTokens',\n type: 'number',\n label: 'Max Output Tokens',\n },\n {\n name: 'topP',\n type: 'number',\n defaultValue: 0.95,\n label: 'Top P',\n max: 1.0,\n min: 0.0,\n },\n {\n name: 'topK',\n type: 'number',\n defaultValue: 40,\n label: 'Top K',\n },\n {\n name: 'safetySettings',\n type: 'array',\n admin: {\n description: 'Safety filter settings',\n },\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'category',\n type: 'select',\n admin: {\n width: '50%',\n },\n dbName: 'google-safety-category',\n label: 'Category',\n options: [\n { label: 'Harassment', value: 'HARM_CATEGORY_HARASSMENT' },\n { label: 'Hate Speech', value: 'HARM_CATEGORY_HATE_SPEECH' },\n {\n label: 'Sexually Explicit',\n value: 'HARM_CATEGORY_SEXUALLY_EXPLICIT',\n },\n {\n label: 'Dangerous Content',\n value: 'HARM_CATEGORY_DANGEROUS_CONTENT',\n },\n ],\n required: true,\n },\n {\n name: 'threshold',\n type: 'select',\n admin: {\n width: '50%',\n },\n dbName: 'google-safety-threshold',\n label: 'Threshold',\n options: [\n { label: 'Block None', value: 'BLOCK_NONE' },\n { label: 'Block Low+', value: 'BLOCK_LOW_AND_ABOVE' },\n { label: 'Block Medium+', value: 'BLOCK_MEDIUM_AND_ABOVE' },\n { label: 'Block High', value: 'BLOCK_ONLY_HIGH' },\n ],\n required: true,\n },\n ],\n },\n ],\n label: 'Default Safety Settings',\n },\n ],\n label: 'Text Provider Options',\n },\n ],\n label: 'Provider Options',\n },\n\n // 5. Models tab (Simplified)\n {\n fields: [\n {\n name: 'models',\n type: 'array',\n admin: {\n components: {\n RowLabel: '@ai-stack/payloadcms/client#ModelRowLabel',\n },\n description: 'Keep this list short. Enable only the models you actually use.',\n initCollapsed: true,\n },\n defaultValue: [\n // Text models\n {\n id: 'gemini-3-pro-preview',\n name: 'Gemini 3.0 Pro (Preview)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gemini-2.5-pro',\n name: 'Gemini 2.5 Pro',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gemini-2.5-flash',\n name: 'Gemini 2.5 Flash',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gemini-1.5-pro-latest',\n name: 'Gemini 1.5 Pro (Latest)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gemini-1.5-flash-latest',\n name: 'Gemini 1.5 Flash (Latest)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n\n // Image models\n {\n id: 'gemini-2.5-flash-image',\n name: 'Gemini 2.5 Flash Image',\n enabled: true,\n responseModalities: ['IMAGE'],\n useCase: 'image',\n },\n {\n id: 'imagen-4.0-generate-001',\n name: 'Imagen 4',\n enabled: true,\n // TODO: fix this with proper definition for multimodel or image model only\n responseModalities: ['IMAGE'],\n useCase: 'image',\n },\n {\n id: 'gemini-3-pro-image-preview',\n name: 'Gemini 3.0 Pro Image (Preview)',\n enabled: true,\n responseModalities: ['IMAGE'],\n useCase: 'image',\n },\n\n // TTS Models\n {\n id: 'gemini-2.5-pro-preview-tts',\n name: 'Gemini 2.5 Pro TTS (Preview)',\n enabled: true,\n responseModalities: ['AUDIO'],\n useCase: 'tts',\n },\n {\n id: 'gemini-2.5-flash-preview-tts',\n name: 'Gemini 2.5 Flash TTS (Preview)',\n enabled: true,\n responseModalities: ['AUDIO'],\n useCase: 'tts',\n },\n ],\n fields: [\n // Basic model info\n {\n type: 'row',\n fields: [\n {\n name: 'id',\n type: 'text',\n admin: {\n description: 'Exact model id as used with @ai-sdk/google.',\n width: '33%',\n },\n label: 'Model ID',\n required: true,\n },\n {\n name: 'name',\n type: 'text',\n admin: {\n width: '33%',\n },\n label: 'Display Name',\n required: true,\n },\n {\n name: 'useCase',\n type: 'select',\n admin: {\n width: '33%',\n },\n dbName: 'google-model-useCase',\n defaultValue: 'text',\n label: 'Use Case',\n options: [\n { label: 'Text', value: 'text' },\n { label: 'Image Generation', value: 'image' },\n { label: 'Text-to-Speech', value: 'tts' },\n { label: 'Embeddings', value: 'embedding' },\n ],\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: 'google-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 labels: {\n plural: 'Models',\n singular: 'Model',\n },\n },\n ],\n label: 'Models',\n },\n ],\n },\n ],\n imageURL: GoogleIcon,\n labels: {\n plural: 'Google Providers',\n singular: 'Google Gemini',\n },\n}\n"],"names":["GoogleIcon","googleBlock","slug","custom","providerOptionsSchemas","image","fields","text","tts","type","tabs","name","defaultValue","label","admin","components","Field","description","required","initCollapsed","width","id","enabled","max","min","dbName","options","value","RowLabel","responseModalities","useCase","hasMany","labels","plural","singular","imageURL"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { CustomProviderIcon } from '../icons.js';
1
2
  export const openaiCompatibleBlock = {
2
3
  slug: 'openai-compatible',
3
4
  fields: [
@@ -297,7 +298,7 @@ export const openaiCompatibleBlock = {
297
298
  ]
298
299
  }
299
300
  ],
300
- imageURL: '/provider-icons/custom-provider.png',
301
+ imageURL: CustomProviderIcon,
301
302
  labels: {
302
303
  plural: 'Custom Providers',
303
304
  singular: 'Custom Provider'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/ai/providers/blocks/openai-compatible.ts"],"sourcesContent":["import type { Block } from 'payload'\n\nexport const openaiCompatibleBlock: Block = {\n slug: 'openai-compatible',\n fields: [\n {\n type: 'tabs',\n tabs: [\n // 1. Setup tab\n {\n fields: [\n {\n name: 'providerName',\n type: 'text',\n admin: {\n description: 'Display name for this custom provider (e.g., \"Ollama\", \"Together AI\")',\n },\n label: 'Provider Name',\n required: true,\n },\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: 'API key for this provider (if required)',\n },\n label: 'API Key',\n required: true,\n },\n {\n name: 'baseURL',\n type: 'text',\n admin: {\n description: 'OpenAI-compatible API endpoint (e.g., http://localhost:11434/v1)',\n },\n label: 'API Base URL',\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: 2,\n min: 0,\n },\n {\n name: 'max_tokens',\n type: 'number',\n label: 'Max Tokens',\n },\n {\n name: 'top_p',\n type: 'number',\n defaultValue: 1.0,\n label: 'Top P',\n max: 1,\n min: 0,\n },\n {\n name: 'frequency_penalty',\n type: 'number',\n defaultValue: 0,\n label: 'Frequency Penalty',\n max: 2,\n min: -2,\n },\n {\n name: 'presence_penalty',\n type: 'number',\n defaultValue: 0,\n label: 'Presence Penalty',\n max: 2,\n min: -2,\n },\n ],\n label: 'Text Provider Options',\n },\n {\n name: 'imageProviderOptions',\n type: 'group',\n admin: {\n description: 'Default provider options for image generation models.',\n },\n fields: [\n {\n name: 'quality',\n type: 'select',\n dbName: 'compat-image-quality',\n defaultValue: 'standard',\n label: 'Quality',\n options: [\n { label: 'Standard', value: 'standard' },\n { label: 'HD', value: 'hd' },\n ],\n },\n {\n name: 'style',\n type: 'select',\n dbName: 'compat-image-style',\n defaultValue: 'vivid',\n label: 'Style',\n options: [\n { label: 'Vivid', value: 'vivid' },\n { label: 'Natural', value: 'natural' },\n ],\n },\n ],\n label: 'Image Provider Options',\n },\n {\n name: 'ttsProviderOptions',\n type: 'group',\n admin: {\n description: 'Default provider options for TTS models.',\n },\n fields: [\n {\n name: 'speed',\n type: 'number',\n defaultValue: 1.0,\n label: 'Speed',\n max: 4,\n min: 0.25,\n },\n {\n name: 'response_format',\n type: 'select',\n dbName: 'compat-tts-format',\n defaultValue: 'mp3',\n label: 'Response Format',\n options: [\n { label: 'MP3', value: 'mp3' },\n { label: 'Opus', value: 'opus' },\n { label: 'AAC', value: 'aac' },\n { label: 'FLAC', value: 'flac' },\n { label: 'WAV', value: 'wav' },\n ],\n },\n ],\n label: 'TTS 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 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: 'compat-model-useCase',\n label: 'Use Case',\n options: [\n { label: 'Text Generation', value: 'text' },\n { label: 'Image Generation', value: 'image' },\n { label: 'Video Generation', value: 'video' },\n { label: 'Text-to-Speech', value: 'tts' },\n ],\n required: true,\n },\n ],\n },\n {\n name: 'enabled',\n type: 'checkbox',\n admin: {\n width: '50%',\n },\n defaultValue: true,\n label: 'Enabled',\n },\n {\n name: 'responseModalities',\n type: 'select',\n admin: {\n description: 'Output capabilities of this model',\n width: '50%',\n },\n dbName: 'compat-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 label: 'Available Models',\n },\n ],\n label: 'Models',\n },\n ],\n },\n ],\n imageURL: '/provider-icons/custom-provider.png',\n labels: {\n plural: 'Custom Providers',\n singular: 'Custom Provider',\n },\n}\n\n"],"names":["openaiCompatibleBlock","slug","fields","type","tabs","name","admin","description","label","required","defaultValue","components","Field","max","min","dbName","options","value","RowLabel","initCollapsed","width","hasMany","imageURL","labels","plural","singular"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/ai/providers/blocks/openai-compatible.ts"],"sourcesContent":["import type { Block } from 'payload'\n\nimport { CustomProviderIcon } from '../icons.js'\n\nexport const openaiCompatibleBlock: Block = {\n slug: 'openai-compatible',\n fields: [\n {\n type: 'tabs',\n tabs: [\n // 1. Setup tab\n {\n fields: [\n {\n name: 'providerName',\n type: 'text',\n admin: {\n description: 'Display name for this custom provider (e.g., \"Ollama\", \"Together AI\")',\n },\n label: 'Provider Name',\n required: true,\n },\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: 'API key for this provider (if required)',\n },\n label: 'API Key',\n required: true,\n },\n {\n name: 'baseURL',\n type: 'text',\n admin: {\n description: 'OpenAI-compatible API endpoint (e.g., http://localhost:11434/v1)',\n },\n label: 'API Base URL',\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: 2,\n min: 0,\n },\n {\n name: 'max_tokens',\n type: 'number',\n label: 'Max Tokens',\n },\n {\n name: 'top_p',\n type: 'number',\n defaultValue: 1.0,\n label: 'Top P',\n max: 1,\n min: 0,\n },\n {\n name: 'frequency_penalty',\n type: 'number',\n defaultValue: 0,\n label: 'Frequency Penalty',\n max: 2,\n min: -2,\n },\n {\n name: 'presence_penalty',\n type: 'number',\n defaultValue: 0,\n label: 'Presence Penalty',\n max: 2,\n min: -2,\n },\n ],\n label: 'Text Provider Options',\n },\n {\n name: 'imageProviderOptions',\n type: 'group',\n admin: {\n description: 'Default provider options for image generation models.',\n },\n fields: [\n {\n name: 'quality',\n type: 'select',\n dbName: 'compat-image-quality',\n defaultValue: 'standard',\n label: 'Quality',\n options: [\n { label: 'Standard', value: 'standard' },\n { label: 'HD', value: 'hd' },\n ],\n },\n {\n name: 'style',\n type: 'select',\n dbName: 'compat-image-style',\n defaultValue: 'vivid',\n label: 'Style',\n options: [\n { label: 'Vivid', value: 'vivid' },\n { label: 'Natural', value: 'natural' },\n ],\n },\n ],\n label: 'Image Provider Options',\n },\n {\n name: 'ttsProviderOptions',\n type: 'group',\n admin: {\n description: 'Default provider options for TTS models.',\n },\n fields: [\n {\n name: 'speed',\n type: 'number',\n defaultValue: 1.0,\n label: 'Speed',\n max: 4,\n min: 0.25,\n },\n {\n name: 'response_format',\n type: 'select',\n dbName: 'compat-tts-format',\n defaultValue: 'mp3',\n label: 'Response Format',\n options: [\n { label: 'MP3', value: 'mp3' },\n { label: 'Opus', value: 'opus' },\n { label: 'AAC', value: 'aac' },\n { label: 'FLAC', value: 'flac' },\n { label: 'WAV', value: 'wav' },\n ],\n },\n ],\n label: 'TTS 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 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: 'compat-model-useCase',\n label: 'Use Case',\n options: [\n { label: 'Text Generation', value: 'text' },\n { label: 'Image Generation', value: 'image' },\n { label: 'Video Generation', value: 'video' },\n { label: 'Text-to-Speech', value: 'tts' },\n ],\n required: true,\n },\n ],\n },\n {\n name: 'enabled',\n type: 'checkbox',\n admin: {\n width: '50%',\n },\n defaultValue: true,\n label: 'Enabled',\n },\n {\n name: 'responseModalities',\n type: 'select',\n admin: {\n description: 'Output capabilities of this model',\n width: '50%',\n },\n dbName: 'compat-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 label: 'Available Models',\n },\n ],\n label: 'Models',\n },\n ],\n },\n ],\n imageURL: CustomProviderIcon,\n labels: {\n plural: 'Custom Providers',\n singular: 'Custom Provider',\n },\n}\n\n"],"names":["CustomProviderIcon","openaiCompatibleBlock","slug","fields","type","tabs","name","admin","description","label","required","defaultValue","components","Field","max","min","dbName","options","value","RowLabel","initCollapsed","width","hasMany","imageURL","labels","plural","singular"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { OpenAIIcon } from '../icons.js';
1
2
  export const openaiBlock = {
2
3
  slug: 'openai',
3
4
  custom: {
@@ -404,7 +405,7 @@ export const openaiBlock = {
404
405
  RowLabel: '@ai-stack/payloadcms/client#ModelRowLabel'
405
406
  },
406
407
  description: 'Keep this list short. Enable only the models you actually use.',
407
- initCollapsed: false
408
+ initCollapsed: true
408
409
  },
409
410
  label: 'Available Models',
410
411
  labels: {
@@ -589,7 +590,7 @@ export const openaiBlock = {
589
590
  ]
590
591
  }
591
592
  ],
592
- imageURL: '/provider-icons/openai.webp',
593
+ imageURL: OpenAIIcon,
593
594
  labels: {
594
595
  plural: 'OpenAI Providers',
595
596
  singular: 'OpenAI'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/ai/providers/blocks/openai.ts"],"sourcesContent":["import type { Block } from 'payload'\n\n\nexport const openaiBlock: Block = {\n slug: 'openai',\n custom: {\n providerOptionsSchemas: {\n image: {\n fields: ['quality', 'style'],\n },\n text: {\n fields: [\n 'temperature',\n 'max_tokens',\n 'top_p',\n 'frequency_penalty',\n 'presence_penalty',\n 'seed',\n 'logitBias',\n ],\n },\n tts: {\n fields: ['speed', 'response_format', 'instructions'],\n },\n },\n },\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:\n 'Optional. If empty, @ai-sdk/openai will use the OPENAI_API_KEY environment variable.',\n },\n label: 'API Key',\n required: false,\n },\n ],\n label: 'Setup',\n },\n\n // 2. Connection tab\n {\n fields: [\n {\n type: 'collapsible',\n admin: {\n initCollapsed: false,\n },\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'baseURL',\n type: 'text',\n admin: {\n description:\n 'Optional. Override default API endpoint (defaults to https://api.openai.com/v1).',\n },\n defaultValue: 'https://api.openai.com/v1',\n label: 'Base URL',\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'organization',\n type: 'text',\n admin: {\n description:\n 'Optional. OpenAI organization ID for billing and access control.',\n },\n label: 'Organization ID',\n },\n {\n name: 'project',\n type: 'text',\n admin: {\n description: 'Optional. OpenAI project ID for organization-level access.',\n },\n label: 'Project ID',\n },\n ],\n },\n {\n name: 'headers',\n type: 'array',\n admin: {\n description:\n 'Optional. Extra headers to send with every request, for example routing through a proxy.',\n },\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'key',\n type: 'text',\n admin: {\n width: '50%',\n },\n label: 'Header Name',\n required: true,\n },\n {\n name: 'value',\n type: 'text',\n admin: {\n width: '50%',\n },\n label: 'Header Value',\n required: true,\n },\n ],\n },\n ],\n label: 'Custom Headers',\n },\n ],\n label: 'API & Network Settings',\n },\n ],\n label: 'Connection',\n },\n\n // 3. Voices tab (NEW)\n {\n fields: [\n {\n name: 'voices',\n type: 'array',\n admin: {\n description: 'Available voices for Text-to-Speech models. You can add custom voices here.',\n initCollapsed: false,\n },\n defaultValue: [\n { id: 'alloy', name: 'Alloy', enabled: true },\n { id: 'echo', name: 'Echo', enabled: true },\n { id: 'fable', name: 'Fable', enabled: true },\n { id: 'onyx', name: 'Onyx', enabled: true },\n { id: 'nova', name: 'Nova', enabled: true },\n { id: 'shimmer', name: 'Shimmer', enabled: true },\n ],\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'id',\n type: 'text',\n admin: {\n description: 'Voice ID as used by OpenAI API',\n width: '40%',\n },\n label: 'Voice ID',\n required: true,\n },\n {\n name: 'name',\n type: 'text',\n admin: {\n width: '40%',\n },\n label: 'Display Name',\n required: true,\n },\n {\n name: 'enabled',\n type: 'checkbox',\n admin: {\n width: '20%',\n },\n defaultValue: true,\n label: 'Enabled',\n },\n ],\n },\n ],\n label: 'Available Voices',\n },\n ],\n label: 'Voices',\n },\n\n // 4. Provider Options (NEW - One group per use case)\n {\n fields: [\n // TTS Provider Options\n {\n name: 'ttsProviderOptions',\n type: 'group',\n admin: {\n description: 'Default provider options for TTS models. Users can override these per field.',\n },\n fields: [\n {\n name: 'speed',\n type: 'number',\n defaultValue: 1.0,\n label: 'Default Speed',\n max: 4,\n min: 0.25,\n },\n {\n name: 'response_format',\n type: 'select',\n dbName: \"openai-tts-response_format\",\n defaultValue: 'mp3',\n label: 'Default Response Format',\n options: [\n { label: 'MP3', value: 'mp3' },\n { label: 'Opus', value: 'opus' },\n { label: 'AAC', value: 'aac' },\n { label: 'FLAC', value: 'flac' },\n { label: 'WAV', value: 'wav' },\n { label: 'PCM', value: 'pcm' },\n ],\n },\n {\n name: 'instructions',\n type: 'textarea',\n admin: {\n placeholder: 'Optional default voice instructions',\n },\n label: 'Default Instructions',\n },\n ],\n label: 'TTS Provider Options',\n },\n\n // Image Provider Options\n {\n name: 'imageProviderOptions',\n type: 'group',\n admin: {\n description: 'Default provider options for image generation models.',\n },\n fields: [\n {\n name: 'quality',\n type: 'select',\n dbName: 'openai-image-quality',\n defaultValue: 'standard',\n label: 'Default Quality',\n options: [\n { label: 'Standard', value: 'standard' },\n { label: 'HD', value: 'hd' },\n ],\n },\n {\n name: 'style',\n type: 'select',\n dbName: 'openai-image-style',\n defaultValue: 'vivid',\n label: 'Default Style',\n options: [\n { label: 'Vivid', value: 'vivid' },\n { label: 'Natural', value: 'natural' },\n ],\n },\n ],\n label: 'Image Provider Options',\n },\n\n // Text Provider Options\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: 2,\n min: 0,\n },\n {\n name: 'max_tokens',\n type: 'number',\n label: 'Default Max Tokens',\n },\n {\n name: 'top_p',\n type: 'number',\n defaultValue: 1.0,\n label: 'Default Top P',\n max: 1,\n min: 0,\n },\n {\n name: 'frequency_penalty',\n type: 'number',\n defaultValue: 0,\n label: 'Default Frequency Penalty',\n max: 2,\n min: -2,\n },\n {\n name: 'presence_penalty',\n type: 'number',\n defaultValue: 0,\n label: 'Default Presence Penalty',\n max: 2,\n min: -2,\n },\n {\n name: 'seed',\n type: 'number',\n label: 'Default Seed',\n },\n {\n name: 'logitBias',\n type: 'json',\n admin: {\n description: 'Modify likelihood of tokens (JSON object mapping token IDs to bias).',\n },\n label: 'Default Logit Bias',\n },\n ],\n label: 'Text Provider Options',\n },\n ],\n label: 'Provider Options',\n },\n\n // 5. Models (SIMPLIFIED - no per-model settings)\n {\n fields: [\n {\n name: 'models',\n type: 'array',\n admin: {\n components: {\n RowLabel: '@ai-stack/payloadcms/client#ModelRowLabel',\n },\n description: 'Keep this list short. Enable only the models you actually use.',\n initCollapsed: false,\n },\n label: 'Available Models',\n labels: {\n plural: 'Models',\n singular: 'Model',\n },\n // Curated models for content creation platforms\n defaultValue: [\n // ===== Text Generation =====\n {\n id: 'gpt-5',\n name: 'GPT-5 (Latest Flagship)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gpt-5-mini',\n name: 'GPT-5 Mini (Fast & Efficient)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'chatgpt-4o-latest',\n name: 'ChatGPT-4o (Always Updated)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gpt-4o',\n name: 'GPT-4o (Multimodal)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gpt-4o-mini',\n name: 'GPT-4o Mini (Best Value)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gpt-4-turbo',\n name: 'GPT-4 Turbo',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n\n // ===== Image Generation =====\n {\n id: 'gpt-image-1',\n name: 'GPT Image 1 (Latest)',\n enabled: true,\n useCase: 'image',\n },\n {\n id: 'dall-e-3',\n name: 'DALL-E 3',\n enabled: true,\n useCase: 'image',\n },\n\n // ===== Audio =====\n {\n id: 'tts-1-hd',\n name: 'TTS HD (Text-to-Speech)',\n enabled: true,\n responseModalities: ['AUDIO'],\n useCase: 'tts',\n },\n ],\n fields: [\n // Basic model info\n {\n type: 'row',\n fields: [\n {\n name: 'id',\n type: 'text',\n admin: {\n description:\n 'Exact model id as used with @ai-sdk/openai, for example gpt-4o.',\n width: '33%',\n },\n label: 'Model ID',\n required: true,\n },\n {\n name: 'name',\n type: 'text',\n admin: {\n width: '33%',\n },\n label: 'Display Name',\n required: true,\n },\n {\n name: 'useCase',\n type: 'select',\n admin: {\n width: '33%',\n },\n dbName: 'openai-model-useCase',\n defaultValue: 'text',\n label: 'Use Case',\n options: [\n { label: 'Text', value: 'text' },\n { label: 'Image Generation', value: 'image' },\n { label: 'Text-to-Speech', value: 'tts' },\n { label: 'Embeddings', value: 'embedding' },\n ],\n },\n ],\n },\n // Response modalities and enabled checkbox\n {\n name: 'responseModalities',\n type: 'select',\n admin: {\n description: 'Output capabilities of this model',\n width: '50%',\n },\n dbName: 'openai-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 },\n ],\n label: 'Models',\n },\n ],\n },\n ],\n imageURL: '/provider-icons/openai.webp',\n labels: {\n plural: 'OpenAI Providers',\n singular: 'OpenAI',\n },\n}\n"],"names":["openaiBlock","slug","custom","providerOptionsSchemas","image","fields","text","tts","type","tabs","name","defaultValue","label","admin","components","Field","description","required","initCollapsed","width","id","enabled","max","min","dbName","options","value","placeholder","RowLabel","labels","plural","singular","responseModalities","useCase","hasMany","imageURL"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/ai/providers/blocks/openai.ts"],"sourcesContent":["import type { Block } from 'payload'\n\n\nimport { OpenAIIcon } from '../icons.js'\n\nexport const openaiBlock: Block = {\n slug: 'openai',\n custom: {\n providerOptionsSchemas: {\n image: {\n fields: ['quality', 'style'],\n },\n text: {\n fields: [\n 'temperature',\n 'max_tokens',\n 'top_p',\n 'frequency_penalty',\n 'presence_penalty',\n 'seed',\n 'logitBias',\n ],\n },\n tts: {\n fields: ['speed', 'response_format', 'instructions'],\n },\n },\n },\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:\n 'Optional. If empty, @ai-sdk/openai will use the OPENAI_API_KEY environment variable.',\n },\n label: 'API Key',\n required: false,\n },\n ],\n label: 'Setup',\n },\n\n // 2. Connection tab\n {\n fields: [\n {\n type: 'collapsible',\n admin: {\n initCollapsed: false,\n },\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'baseURL',\n type: 'text',\n admin: {\n description:\n 'Optional. Override default API endpoint (defaults to https://api.openai.com/v1).',\n },\n defaultValue: 'https://api.openai.com/v1',\n label: 'Base URL',\n },\n ],\n },\n {\n type: 'row',\n fields: [\n {\n name: 'organization',\n type: 'text',\n admin: {\n description:\n 'Optional. OpenAI organization ID for billing and access control.',\n },\n label: 'Organization ID',\n },\n {\n name: 'project',\n type: 'text',\n admin: {\n description: 'Optional. OpenAI project ID for organization-level access.',\n },\n label: 'Project ID',\n },\n ],\n },\n {\n name: 'headers',\n type: 'array',\n admin: {\n description:\n 'Optional. Extra headers to send with every request, for example routing through a proxy.',\n },\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'key',\n type: 'text',\n admin: {\n width: '50%',\n },\n label: 'Header Name',\n required: true,\n },\n {\n name: 'value',\n type: 'text',\n admin: {\n width: '50%',\n },\n label: 'Header Value',\n required: true,\n },\n ],\n },\n ],\n label: 'Custom Headers',\n },\n ],\n label: 'API & Network Settings',\n },\n ],\n label: 'Connection',\n },\n\n // 3. Voices tab (NEW)\n {\n fields: [\n {\n name: 'voices',\n type: 'array',\n admin: {\n description: 'Available voices for Text-to-Speech models. You can add custom voices here.',\n initCollapsed: false,\n },\n defaultValue: [\n { id: 'alloy', name: 'Alloy', enabled: true },\n { id: 'echo', name: 'Echo', enabled: true },\n { id: 'fable', name: 'Fable', enabled: true },\n { id: 'onyx', name: 'Onyx', enabled: true },\n { id: 'nova', name: 'Nova', enabled: true },\n { id: 'shimmer', name: 'Shimmer', enabled: true },\n ],\n fields: [\n {\n type: 'row',\n fields: [\n {\n name: 'id',\n type: 'text',\n admin: {\n description: 'Voice ID as used by OpenAI API',\n width: '40%',\n },\n label: 'Voice ID',\n required: true,\n },\n {\n name: 'name',\n type: 'text',\n admin: {\n width: '40%',\n },\n label: 'Display Name',\n required: true,\n },\n {\n name: 'enabled',\n type: 'checkbox',\n admin: {\n width: '20%',\n },\n defaultValue: true,\n label: 'Enabled',\n },\n ],\n },\n ],\n label: 'Available Voices',\n },\n ],\n label: 'Voices',\n },\n\n // 4. Provider Options (NEW - One group per use case)\n {\n fields: [\n // TTS Provider Options\n {\n name: 'ttsProviderOptions',\n type: 'group',\n admin: {\n description: 'Default provider options for TTS models. Users can override these per field.',\n },\n fields: [\n {\n name: 'speed',\n type: 'number',\n defaultValue: 1.0,\n label: 'Default Speed',\n max: 4,\n min: 0.25,\n },\n {\n name: 'response_format',\n type: 'select',\n dbName: \"openai-tts-response_format\",\n defaultValue: 'mp3',\n label: 'Default Response Format',\n options: [\n { label: 'MP3', value: 'mp3' },\n { label: 'Opus', value: 'opus' },\n { label: 'AAC', value: 'aac' },\n { label: 'FLAC', value: 'flac' },\n { label: 'WAV', value: 'wav' },\n { label: 'PCM', value: 'pcm' },\n ],\n },\n {\n name: 'instructions',\n type: 'textarea',\n admin: {\n placeholder: 'Optional default voice instructions',\n },\n label: 'Default Instructions',\n },\n ],\n label: 'TTS Provider Options',\n },\n\n // Image Provider Options\n {\n name: 'imageProviderOptions',\n type: 'group',\n admin: {\n description: 'Default provider options for image generation models.',\n },\n fields: [\n {\n name: 'quality',\n type: 'select',\n dbName: 'openai-image-quality',\n defaultValue: 'standard',\n label: 'Default Quality',\n options: [\n { label: 'Standard', value: 'standard' },\n { label: 'HD', value: 'hd' },\n ],\n },\n {\n name: 'style',\n type: 'select',\n dbName: 'openai-image-style',\n defaultValue: 'vivid',\n label: 'Default Style',\n options: [\n { label: 'Vivid', value: 'vivid' },\n { label: 'Natural', value: 'natural' },\n ],\n },\n ],\n label: 'Image Provider Options',\n },\n\n // Text Provider Options\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: 2,\n min: 0,\n },\n {\n name: 'max_tokens',\n type: 'number',\n label: 'Default Max Tokens',\n },\n {\n name: 'top_p',\n type: 'number',\n defaultValue: 1.0,\n label: 'Default Top P',\n max: 1,\n min: 0,\n },\n {\n name: 'frequency_penalty',\n type: 'number',\n defaultValue: 0,\n label: 'Default Frequency Penalty',\n max: 2,\n min: -2,\n },\n {\n name: 'presence_penalty',\n type: 'number',\n defaultValue: 0,\n label: 'Default Presence Penalty',\n max: 2,\n min: -2,\n },\n {\n name: 'seed',\n type: 'number',\n label: 'Default Seed',\n },\n {\n name: 'logitBias',\n type: 'json',\n admin: {\n description: 'Modify likelihood of tokens (JSON object mapping token IDs to bias).',\n },\n label: 'Default Logit Bias',\n },\n ],\n label: 'Text Provider Options',\n },\n ],\n label: 'Provider Options',\n },\n\n // 5. Models (SIMPLIFIED - no per-model settings)\n {\n fields: [\n {\n name: 'models',\n type: 'array',\n admin: {\n components: {\n RowLabel: '@ai-stack/payloadcms/client#ModelRowLabel',\n },\n description: 'Keep this list short. Enable only the models you actually use.',\n initCollapsed: true,\n },\n label: 'Available Models',\n labels: {\n plural: 'Models',\n singular: 'Model',\n },\n // Curated models for content creation platforms\n defaultValue: [\n // ===== Text Generation =====\n {\n id: 'gpt-5',\n name: 'GPT-5 (Latest Flagship)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gpt-5-mini',\n name: 'GPT-5 Mini (Fast & Efficient)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'chatgpt-4o-latest',\n name: 'ChatGPT-4o (Always Updated)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gpt-4o',\n name: 'GPT-4o (Multimodal)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gpt-4o-mini',\n name: 'GPT-4o Mini (Best Value)',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n {\n id: 'gpt-4-turbo',\n name: 'GPT-4 Turbo',\n enabled: true,\n responseModalities: ['TEXT'],\n useCase: 'text',\n },\n\n // ===== Image Generation =====\n {\n id: 'gpt-image-1',\n name: 'GPT Image 1 (Latest)',\n enabled: true,\n useCase: 'image',\n },\n {\n id: 'dall-e-3',\n name: 'DALL-E 3',\n enabled: true,\n useCase: 'image',\n },\n\n // ===== Audio =====\n {\n id: 'tts-1-hd',\n name: 'TTS HD (Text-to-Speech)',\n enabled: true,\n responseModalities: ['AUDIO'],\n useCase: 'tts',\n },\n ],\n fields: [\n // Basic model info\n {\n type: 'row',\n fields: [\n {\n name: 'id',\n type: 'text',\n admin: {\n description:\n 'Exact model id as used with @ai-sdk/openai, for example gpt-4o.',\n width: '33%',\n },\n label: 'Model ID',\n required: true,\n },\n {\n name: 'name',\n type: 'text',\n admin: {\n width: '33%',\n },\n label: 'Display Name',\n required: true,\n },\n {\n name: 'useCase',\n type: 'select',\n admin: {\n width: '33%',\n },\n dbName: 'openai-model-useCase',\n defaultValue: 'text',\n label: 'Use Case',\n options: [\n { label: 'Text', value: 'text' },\n { label: 'Image Generation', value: 'image' },\n { label: 'Text-to-Speech', value: 'tts' },\n { label: 'Embeddings', value: 'embedding' },\n ],\n },\n ],\n },\n // Response modalities and enabled checkbox\n {\n name: 'responseModalities',\n type: 'select',\n admin: {\n description: 'Output capabilities of this model',\n width: '50%',\n },\n dbName: 'openai-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 },\n ],\n label: 'Models',\n },\n ],\n },\n ],\n imageURL: OpenAIIcon,\n labels: {\n plural: 'OpenAI Providers',\n singular: 'OpenAI',\n },\n}\n"],"names":["OpenAIIcon","openaiBlock","slug","custom","providerOptionsSchemas","image","fields","text","tts","type","tabs","name","defaultValue","label","admin","components","Field","description","required","initCollapsed","width","id","enabled","max","min","dbName","options","value","placeholder","RowLabel","labels","plural","singular","responseModalities","useCase","hasMany","imageURL"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { XAIIcon } from '../icons.js';
1
2
  export const xaiBlock = {
2
3
  slug: 'xai',
3
4
  fields: [
@@ -236,7 +237,7 @@ export const xaiBlock = {
236
237
  ]
237
238
  }
238
239
  ],
239
- imageURL: '/provider-icons/xai-grok.webp',
240
+ imageURL: XAIIcon,
240
241
  labels: {
241
242
  plural: 'xAI Providers',
242
243
  singular: 'xAI Grok'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/ai/providers/blocks/xai.ts"],"sourcesContent":["import type { Block } from 'payload'\n\nexport const xaiBlock: Block = {\n slug: 'xai',\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 xAI 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: 2.0,\n min: 0.0,\n },\n {\n name: 'max_tokens',\n type: 'number',\n label: 'Max Tokens',\n },\n {\n name: 'top_p',\n type: 'number',\n defaultValue: 1.0,\n label: 'Top P',\n max: 1.0,\n min: 0.0,\n },\n {\n name: 'frequency_penalty',\n type: 'number',\n defaultValue: 0,\n label: 'Frequency Penalty',\n max: 2,\n min: -2,\n },\n {\n name: 'presence_penalty',\n type: 'number',\n defaultValue: 0,\n label: 'Presence Penalty',\n max: 2,\n min: -2,\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: 'grok-4', name: 'Grok 4', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-3', name: 'Grok 3', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-3-fast', name: 'Grok 3 Fast', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-2-1212', name: 'Grok 2', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-2-vision-1212', name: 'Grok 2 Vision', enabled: true, responseModalities: ['TEXT'], useCase: 'image' },\n { id: 'grok-vision-beta', name: 'Grok Vision Beta', enabled: true, responseModalities: ['TEXT'], useCase: 'image' },\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: 'xai-model-useCase',\n label: 'Use Case',\n options: [\n { label: 'Text Generation', value: 'text' },\n { label: 'Image Generation', value: 'image' },\n ],\n required: true,\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: 'xai-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/xai-grok.webp',\n labels: {\n plural: 'xAI Providers',\n singular: 'xAI Grok',\n },\n}\n\n"],"names":["xaiBlock","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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"}
1
+ {"version":3,"sources":["../../../../src/ai/providers/blocks/xai.ts"],"sourcesContent":["import type { Block } from 'payload'\n\nimport { XAIIcon } from '../icons.js'\n\nexport const xaiBlock: Block = {\n slug: 'xai',\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 xAI 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: 2.0,\n min: 0.0,\n },\n {\n name: 'max_tokens',\n type: 'number',\n label: 'Max Tokens',\n },\n {\n name: 'top_p',\n type: 'number',\n defaultValue: 1.0,\n label: 'Top P',\n max: 1.0,\n min: 0.0,\n },\n {\n name: 'frequency_penalty',\n type: 'number',\n defaultValue: 0,\n label: 'Frequency Penalty',\n max: 2,\n min: -2,\n },\n {\n name: 'presence_penalty',\n type: 'number',\n defaultValue: 0,\n label: 'Presence Penalty',\n max: 2,\n min: -2,\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: 'grok-4', name: 'Grok 4', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-3', name: 'Grok 3', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-3-fast', name: 'Grok 3 Fast', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-2-1212', name: 'Grok 2', enabled: true, responseModalities: ['TEXT'], useCase: 'text' },\n { id: 'grok-2-vision-1212', name: 'Grok 2 Vision', enabled: true, responseModalities: ['TEXT'], useCase: 'image' },\n { id: 'grok-vision-beta', name: 'Grok Vision Beta', enabled: true, responseModalities: ['TEXT'], useCase: 'image' },\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: 'xai-model-useCase',\n label: 'Use Case',\n options: [\n { label: 'Text Generation', value: 'text' },\n { label: 'Image Generation', value: 'image' },\n ],\n required: true,\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: 'xai-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: XAIIcon,\n labels: {\n plural: 'xAI Providers',\n singular: 'xAI Grok',\n },\n}\n\n"],"names":["XAIIcon","xaiBlock","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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"}