diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 9ee9bf606..1e7d30410 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -120,6 +120,11 @@ (model) => $models.find((m) => m.id === model)?.info?.meta?.capabilities?.vision ?? true ); + let fileUploadCapableModels = []; + $: fileUploadCapableModels = (atSelectedModel?.id ? [atSelectedModel.id] : selectedModels).filter( + (model) => $models.find((m) => m.id === model)?.info?.meta?.capabilities?.file_upload ?? true + ); + let webSearchCapableModels = []; $: webSearchCapableModels = (atSelectedModel?.id ? [atSelectedModel.id] : selectedModels).filter( (model) => $models.find((m) => m.id === model)?.info?.meta?.capabilities?.web_search ?? true @@ -1086,6 +1091,8 @@
{ diff --git a/src/lib/components/chat/MessageInput/InputMenu.svelte b/src/lib/components/chat/MessageInput/InputMenu.svelte index 6a024af51..5013f18f0 100644 --- a/src/lib/components/chat/MessageInput/InputMenu.svelte +++ b/src/lib/components/chat/MessageInput/InputMenu.svelte @@ -20,6 +20,11 @@ const i18n = getContext('i18n'); + export let selectedToolIds: string[] = []; + + export let selectedModels: string[] = []; + export let fileUploadCapableModels: string[] = []; + export let screenCaptureHandler: Function; export let uploadFilesHandler: Function; export let inputFilesHandler: Function; @@ -27,8 +32,6 @@ export let uploadGoogleDriveHandler: Function; export let uploadOneDriveHandler: Function; - export let selectedToolIds: string[] = []; - export let onClose: Function; let tools = {}; @@ -40,7 +43,9 @@ } let fileUploadEnabled = true; - $: fileUploadEnabled = $user?.role === 'admin' || $user?.permissions?.chat?.file_upload; + $: fileUploadEnabled = + fileUploadCapableModels.length === selectedModels.length && + ($user?.role === 'admin' || $user?.permissions?.chat?.file_upload); const init = async () => { if ($_tools === null) { @@ -169,7 +174,11 @@ {/if} - {#if $config?.features?.enable_google_drive_integration} - { - uploadGoogleDriveHandler(); - }} - > - - - - - - - - -
{$i18n.t('Google Drive')}
-
- {/if} - - {#if $config?.features?.enable_onedrive_integration} - - { + uploadGoogleDriveHandler(); + }} > - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + -
{$i18n.t('Microsoft OneDrive')}
-
- - { - uploadOneDriveHandler('personal'); - }} +
{$i18n.t('Google Drive')}
+
+ {/if} + + {#if $config?.features?.enable_onedrive_integration} + + -
{$i18n.t('Microsoft OneDrive (personal)')}
-
- { - uploadOneDriveHandler('organizations'); - }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{$i18n.t('Microsoft OneDrive')}
+ + -
-
{$i18n.t('Microsoft OneDrive (work/school)')}
-
Includes SharePoint
-
-
- - + { + uploadOneDriveHandler('personal'); + }} + > +
{$i18n.t('Microsoft OneDrive (personal)')}
+
+ { + uploadOneDriveHandler('organizations'); + }} + > +
+
{$i18n.t('Microsoft OneDrive (work/school)')}
+
Includes SharePoint
+
+
+ + + {/if} {/if}
diff --git a/src/lib/components/workspace/Models/Capabilities.svelte b/src/lib/components/workspace/Models/Capabilities.svelte index baf9cd915..1e47ba7b0 100644 --- a/src/lib/components/workspace/Models/Capabilities.svelte +++ b/src/lib/components/workspace/Models/Capabilities.svelte @@ -11,6 +11,10 @@ label: $i18n.t('Vision'), description: $i18n.t('Model accepts image inputs') }, + file_upload: { + label: $i18n.t('File Upload'), + description: $i18n.t('Model accepts file inputs') + }, web_search: { label: $i18n.t('Web Search'), description: $i18n.t('Model can search the web for information') @@ -37,6 +41,7 @@ export let capabilities: { vision?: boolean; + file_upload?: boolean; web_search?: boolean; image_generation?: boolean; code_interpreter?: boolean; diff --git a/src/lib/components/workspace/Models/ModelEditor.svelte b/src/lib/components/workspace/Models/ModelEditor.svelte index c8934eb00..4484bb459 100644 --- a/src/lib/components/workspace/Models/ModelEditor.svelte +++ b/src/lib/components/workspace/Models/ModelEditor.svelte @@ -77,6 +77,7 @@ }; let capabilities = { vision: true, + file_upload: true, web_search: true, image_generation: true, code_interpreter: true,