f7cloud_client/apps/assistant/js/assistant-adminSettings.mjs.map
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

1 line
22 KiB
Plaintext

{"version":3,"file":"assistant-adminSettings.mjs","sources":["../node_modules/vue-material-design-icons/OpenInNew.vue","../src/components/AdminSettings.vue","../src/adminSettings.js"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon open-in-new-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"OpenInNewIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<div id=\"assistant_prefs\" class=\"section\">\n\t\t<h2>\n\t\t\t<AssistantIcon class=\"icon\" />\n\t\t\t{{ t('assistant', 'Nextcloud Assistant') }}\n\t\t</h2>\n\t\t<NcNoteCard type=\"info\">\n\t\t\t{{ t('assistant', 'Find more details on how to set up Assistant and recommended backends in the Administration documentation.') }}\n\t\t\t<br>\n\t\t\t<a href=\"https://docs.nextcloud.com/server/latest/admin_manual/ai/index.html\" class=\"external link-with-icon\" target=\"_blank\">\n\t\t\t\t{{ t('assistant', 'Administration documentation') }}\n\t\t\t\t<OpenInNewIcon :size=\"16\" />\n\t\t\t</a>\n\t\t</NcNoteCard>\n\t\t<NcNoteCard v-if=\"state.text_to_sticker_available && !state.text_to_image_picker_available\" type=\"warning\">\n\t\t\t{{ t('assistant', 'The sticker generation feature won`t work without being able to generate images. Please install and enable a \"Generate image\" provider or disable the \"Generate sticker\" task type.') }}\n\t\t</NcNoteCard>\n\t\t<div id=\"assistant-content\">\n\t\t\t<div>\n\t\t\t\t<NcFormGroup :label=\"t('assistant', 'Select which features you want to enable')\"\n\t\t\t\t\t:hide-label=\"true\"\n\t\t\t\t\tclass=\"switch-group\">\n\t\t\t\t\t<NcFormBox>\n\t\t\t\t\t\t<NcFormBoxSwitch :model-value=\"state.assistant_enabled\"\n\t\t\t\t\t\t\t@update:model-value=\"onCheckboxChanged($event, 'assistant_enabled')\">\n\t\t\t\t\t\t\t{{ t('assistant', 'Nextcloud Assistant in header') }}\n\t\t\t\t\t\t</NcFormBoxSwitch>\n\t\t\t\t\t\t<NcFormBoxSwitch :model-value=\"state.free_prompt_picker_enabled\"\n\t\t\t\t\t\t\t:disabled=\"!state.free_prompt_task_type_available\"\n\t\t\t\t\t\t\t@update:model-value=\"onCheckboxChanged($event, 'free_prompt_picker_enabled')\">\n\t\t\t\t\t\t\t{{ t('assistant', 'AI text generation in the smart picker') }}\n\t\t\t\t\t\t</NcFormBoxSwitch>\n\t\t\t\t\t\t<NcFormBoxSwitch :model-value=\"state.text_to_image_picker_enabled\"\n\t\t\t\t\t\t\t:disabled=\"!state.text_to_image_picker_available\"\n\t\t\t\t\t\t\t@update:model-value=\"onCheckboxChanged($event, 'text_to_image_picker_enabled')\">\n\t\t\t\t\t\t\t{{ t('assistant', 'Text-to-image in the smart picker') }}\n\t\t\t\t\t\t</NcFormBoxSwitch>\n\t\t\t\t\t\t<NcFormBoxSwitch :model-value=\"state.text_to_sticker_picker_enabled\"\n\t\t\t\t\t\t\t:disabled=\"!state.text_to_image_picker_available\"\n\t\t\t\t\t\t\t@update:model-value=\"onCheckboxChanged($event, 'text_to_sticker_picker_enabled')\">\n\t\t\t\t\t\t\t{{ t('assistant', 'Text-to-sticker in the smart picker') }}\n\t\t\t\t\t\t</NcFormBoxSwitch>\n\t\t\t\t\t\t<NcFormBoxSwitch :model-value=\"state.speech_to_text_picker_enabled\"\n\t\t\t\t\t\t\t:disabled=\"!state.speech_to_text_picker_available\"\n\t\t\t\t\t\t\t@update:model-value=\"onCheckboxChanged($event, 'speech_to_text_picker_enabled')\">\n\t\t\t\t\t\t\t{{ t('assistant', 'Speech-to-text in the smart picker') }}\n\t\t\t\t\t\t</NcFormBoxSwitch>\n\t\t\t\t\t</NcFormBox>\n\t\t\t\t</NcFormGroup>\n\t\t\t\t<NcNoteCard v-if=\"!state.task_processing_available\" type=\"warning\">\n\t\t\t\t\t{{ t('assistant', 'To be able to use the Assistant, please install at least one AI task processing provider.') }}\n\t\t\t\t</NcNoteCard>\n\t\t\t\t<NcNoteCard v-if=\"!state.free_prompt_task_type_available\" type=\"warning\">\n\t\t\t\t\t<div class=\"checkbox-text\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{{ t('assistant', 'To enable text generation in the smart picker, please install an AI task processing provider for the \"Free text to text prompt\" task type:') }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"https://github.com/nextcloud/llm2#readme\" class=\"external link-with-icon\" target=\"_blank\">\n\t\t\t\t\t\t\t\t\tLocal Large language model app\n\t\t\t\t\t\t\t\t\t<OpenInNewIcon :size=\"16\" />\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"https://apps.nextcloud.com/apps/integration_openai\" class=\"external link-with-icon\" target=\"_blank\">\n\t\t\t\t\t\t\t\t\tOpenAI/LocalAI Integration\n\t\t\t\t\t\t\t\t\t<OpenInNewIcon :size=\"16\" />\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</NcNoteCard>\n\t\t\t\t<NcNoteCard v-if=\"!state.text_to_image_picker_available\" type=\"warning\">\n\t\t\t\t\t<div class=\"checkbox-text\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{{ t('assistant', 'To enable the sticker generation picker or the image generation picker, please install and enable a \"Generate image\" provider:') }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"https://github.com/nextcloud/text2image_stablediffusion#readme\" class=\"external link-with-icon\" target=\"_blank\">\n\t\t\t\t\t\t\t\t\tLocal Text-To-Image StableDiffusion\n\t\t\t\t\t\t\t\t\t<OpenInNewIcon :size=\"16\" />\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"https://apps.nextcloud.com/apps/integration_openai\" class=\"external link-with-icon\" target=\"_blank\">\n\t\t\t\t\t\t\t\t\tOpenAI/LocalAI Integration\n\t\t\t\t\t\t\t\t\t<OpenInNewIcon :size=\"16\" />\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</NcNoteCard>\n\t\t\t\t<NcNoteCard v-if=\"!state.speech_to_text_picker_available\" type=\"warning\">\n\t\t\t\t\t<div class=\"checkbox-text\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{{ t('assistant', 'To enable speech-to-text in the smart picker, please install and enable a \"Transcribe audio\" provider:') }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"https://github.com/nextcloud/stt_whisper2#readme\" class=\"external link-with-icon\" target=\"_blank\">\n\t\t\t\t\t\t\t\t\tLocal Speech-To-Text Whisper\n\t\t\t\t\t\t\t\t\t<OpenInNewIcon :size=\"16\" />\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"https://apps.nextcloud.com/apps/integration_openai\" class=\"external link-with-icon\" target=\"_blank\">\n\t\t\t\t\t\t\t\t\tOpenAI/LocalAI Integration\n\t\t\t\t\t\t\t\t\t<OpenInNewIcon :size=\"16\" />\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</NcNoteCard>\n\t\t\t</div>\n\t\t\t<div class=\"chat-with-ai\">\n\t\t\t\t<h4>\n\t\t\t\t\t{{ t('assistant', 'Chat with AI') }}\n\t\t\t\t</h4>\n\t\t\t\t<div class=\"line\">\n\t\t\t\t\t<label for=\"chat_user_instructions\">\n\t\t\t\t\t\t{{ t('assistant', 'Chat User Instructions for Chat Completions') }}\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t\t<NcNoteCard type=\"info\">\n\t\t\t\t\t{{ t('assistant', 'It is passed on to the LLM for it to better understand the context.') }}\n\t\t\t\t\t<br>\n\t\t\t\t\t{{ t('assistant', '\"{user}\" is a placeholder for the user\\'s display name.') }}\n\t\t\t\t</NcNoteCard>\n\t\t\t\t<NcRichContenteditable id=\"chat_user_instructions\"\n\t\t\t\t\tv-model=\"state.chat_user_instructions\"\n\t\t\t\t\tclass=\"text-field\"\n\t\t\t\t\t:auto-complete=\"() => {}\"\n\t\t\t\t\t:link-auto-complete=\"false\"\n\t\t\t\t\t:placeholder=\"t('assistant', 'Chat User Instructions for Chat Completions')\"\n\t\t\t\t\t:aria-label=\"t('assistant', 'Chat User Instructions for Chat Completions')\"\n\t\t\t\t\tdir=\"auto\"\n\t\t\t\t\t@update:model-value=\"delayedValueUpdate(state.chat_user_instructions, 'chat_user_instructions')\"\n\t\t\t\t\t@submit=\"delayedValueUpdate(state.chat_user_instructions, 'chat_user_instructions')\" />\n\t\t\t\t<div class=\"line\">\n\t\t\t\t\t<label for=\"chat_user_instructions_title\">\n\t\t\t\t\t\t{{ t('assistant', 'Chat User Instructions for Title Generation') }}\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t\t<NcNoteCard type=\"info\">\n\t\t\t\t\t{{ t('assistant', 'It is passed on to the LLMs to better generate a chat title') }}\n\t\t\t\t\t<br>\n\t\t\t\t\t{{ t('assistant', '\"{user}\" is a placeholder for the user\\'s display name here as well.') }}\n\t\t\t\t</NcNoteCard>\n\t\t\t\t<NcRichContenteditable id=\"chat_user_instructions_title\"\n\t\t\t\t\tv-model=\"state.chat_user_instructions_title\"\n\t\t\t\t\tclass=\"text-field\"\n\t\t\t\t\t:auto-complete=\"() => {}\"\n\t\t\t\t\t:link-auto-complete=\"false\"\n\t\t\t\t\t:placeholder=\"t('assistant', 'Chat User Instructions for Title Generation')\"\n\t\t\t\t\t:aria-label=\"t('assistant', 'Chat User Instructions for Title Generation')\"\n\t\t\t\t\tdir=\"auto\"\n\t\t\t\t\t@update:model-value=\"delayedValueUpdate(state.chat_user_instructions_title, 'chat_user_instructions_title')\"\n\t\t\t\t\t@submit=\"delayedValueUpdate(state.chat_user_instructions_title, 'chat_user_instructions_title')\" />\n\t\t\t\t<div class=\"line\">\n\t\t\t\t\t<label for=\"chat_last_n_messages\">\n\t\t\t\t\t\t{{ t('assistant', 'Last N messages to consider for chat completions') }}\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t\t<NcNoteCard type=\"info\">\n\t\t\t\t\t{{ t('assistant', 'This includes the user instructions and the LLM\\'s messages') }}\n\t\t\t\t</NcNoteCard>\n\t\t\t\t<NcTextField id=\"chat_last_n_messages\"\n\t\t\t\t\tv-model=\"state.chat_last_n_messages\"\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tclass=\"text-field\"\n\t\t\t\t\t:error=\"!isUnsignedIntStr(state.chat_last_n_messages)\"\n\t\t\t\t\t:title=\"t('assistant', 'Number of messages to consider for chat completions (excluding the user instructions, which is always considered)')\"\n\t\t\t\t\t@update:model-value=\"delayedValueUpdate(state.chat_last_n_messages, 'chat_last_n_messages')\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport OpenInNewIcon from 'vue-material-design-icons/OpenInNew.vue'\n\nimport AssistantIcon from './icons/AssistantIcon.vue'\n\nimport NcNoteCard from '@nextcloud/vue/components/NcNoteCard'\nimport NcRichContenteditable from '@nextcloud/vue/components/NcRichContenteditable'\nimport NcTextField from '@nextcloud/vue/components/NcTextField'\nimport NcFormGroup from '@nextcloud/vue/components/NcFormGroup'\nimport NcFormBox from '@nextcloud/vue/components/NcFormBox'\nimport NcFormBoxSwitch from '@nextcloud/vue/components/NcFormBoxSwitch'\n\nimport axios from '@nextcloud/axios'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\n\nimport { delay } from '../utils.js'\n\nexport default {\n\tname: 'AdminSettings',\n\n\tcomponents: {\n\t\tAssistantIcon,\n\t\tNcNoteCard,\n\t\tNcRichContenteditable,\n\t\tNcTextField,\n\t\tNcFormGroup,\n\t\tNcFormBox,\n\t\tNcFormBoxSwitch,\n\t\tOpenInNewIcon,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tstate: loadState('assistant', 'admin-config'),\n\t\t\ttextFieldSaveTimer: null,\n\t\t\tinputErrorTimer: null,\n\t\t\toptionsToSave: {},\n\t\t}\n\t},\n\n\tcomputed: {\n\t},\n\n\tmethods: {\n\t\tisUnsignedIntStr(value) {\n\t\t\treturn /^\\d+$/.test(value)\n\t\t},\n\t\tonCheckboxChanged(newValue, key) {\n\t\t\tthis.state[key] = newValue\n\t\t\tthis.saveOptions({ [key]: this.state[key] ? '1' : '0' })\n\t\t},\n\t\tdelayedValueUpdate(newValue, key) {\n\t\t\tdelay(() => {\n\t\t\t\tthis.optionsToSave[key] = newValue\n\t\t\t\tthis.saveOptions(this.optionsToSave)\n\t\t\t}, 2000)\n\t\t},\n\t\tsaveOptions(values) {\n\t\t\tconst req = {\n\t\t\t\tvalues,\n\t\t\t}\n\t\t\tconst url = generateUrl('/apps/assistant/admin-config')\n\t\t\treturn axios.put(url, req)\n\t\t\t\t.then(() => {\n\t\t\t\t\tshowSuccess(t('assistant', 'Assistant admin options saved'))\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.error('Failed to save assistant admin options', error)\n\t\t\t\t\tshowError(\n\t\t\t\t\t\tt('assistant', 'Failed to save assistant admin options')\n\t\t\t\t\t\t+ ': ' + (\n\t\t\t\t\t\t\terror.response?.data?.message\n\t\t\t\t\t\t\t?? error.response?.request?.responseText\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n#assistant_prefs {\n\tmax-width: 800px;\n\t.line,\n\t.settings-hint {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmargin-top: 12px;\n\t\t.icon {\n\t\t\tmargin-right: 4px;\n\t\t}\n\t}\n\n\t.link-with-icon {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 4px;\n\t}\n\n\t.checkbox-text {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\th2 {\n\t\tjustify-content: start;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 8px;\n\t\tmargin-top: 8px;\n\t}\n\n\t.line {\n\t\t> label {\n\t\t\twidth: 300px;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\t\t> input {\n\t\t\twidth: 300px;\n\t\t}\n\t\t.text-field {\n\t\t\tmargin-left: 8px;\n\t\t\twidth: 300px;\n\t\t}\n\t}\n\n\t.notecard,\n\t.text-field {\n\t\tmax-width: 900px;\n\t}\n\n\t.chat-with-ai {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\t> .line > label {\n\t\t\twidth: 900px !important;\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport AdminSettings from './components/AdminSettings.vue'\n\nconst app = createApp(AdminSettings)\napp.mixin({ methods: { t, n } })\napp.mount('#assistant_prefs')\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","AssistantIcon","NcNoteCard","NcRichContenteditable","NcTextField","NcFormGroup","NcFormBox","NcFormBoxSwitch","OpenInNewIcon","loadState","value","newValue","key","delay","values","req","url","generateUrl","axios","showSuccess","error","showError","_hoisted_4","_hoisted_7","_hoisted_10","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_1","_createVNode","_component_AssistantIcon","_createTextVNode","_component_NcNoteCard","_toDisplayString","_hoisted_2","_component_OpenInNewIcon","$data","_createBlock","_component_NcFormGroup","_component_NcFormBox","_component_NcFormBoxSwitch","$options","_hoisted_5","_hoisted_6","_hoisted_8","_hoisted_9","_hoisted_11","_hoisted_12","_component_NcRichContenteditable","_component_NcTextField","app","createApp","AdminSettings"],"mappings":"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","x_google_ignoreList":[0]}