{"version":3,"mappings":";iTAAA,MAAAA,EAAe,4vBCAfC,EAAe,4gBCAfC,EAAe,onBCcTC,EAAoB,CACzB,WACA,cACD,EAEA,SAASC,EAAoBC,EAAW,CACvC,MAAMC,EAAc,IAAIC,EAAW,CAClC,GAAI,kBACJ,YAAcC,GACN,EAAE,YAAa,cAAc,EAErC,QAAQA,EAAOC,EAAM,CACpB,MAAO,CAACN,EAAkB,SAASM,EAAK,EAAE,GACtCD,EAAM,SAAW,GACjB,CAACA,EAAM,KAAK,CAAC,CAAE,YAAAE,CAAW,KAAQA,EAAcC,EAAW,QAAU,CAAC,GACtEH,EAAM,MAAM,CAAC,CAAE,KAAAI,CAAI,IAAOA,IAASC,EAAS,IAAI,GAChDL,EAAM,MAAM,CAAC,CAAE,KAAAM,CAAI,IAAOT,EAAU,SAASS,CAAI,CAAC,CACvD,EACA,cAAe,IAAMC,EACrB,MAAO,EACP,MAAM,MAAO,CACZ,OAAO,IACR,CACF,CAAE,EACDC,EAAmBV,CAAW,CAC/B,CAEA,SAASW,GAA0B,CAClC,MAAMC,EAAkB,IAAIX,EAAW,CACtC,GAAI,sBACJ,OAAQ,kBACR,YAAcC,GACN,EAAE,WAAY,oBAAoB,EAE1C,QAAQA,EAAOC,EAAM,CACpB,MAAO,CAACN,EAAkB,SAASM,EAAK,EAAE,GACtCD,EAAM,SAAW,GACjB,CAACA,EAAM,KAAK,CAAC,CAAE,YAAAE,CAAW,KAAQA,EAAcC,EAAW,QAAU,CAAC,GACtEH,EAAM,MAAM,CAAC,CAAE,KAAAI,CAAI,IAAOA,IAASC,EAAS,IAAI,GAChDL,EAAM,MAAM,CAAC,CAAE,KAAAM,CAAI,IAAOK,EAAsB,SAASL,CAAI,CAAC,CACnE,EACA,cAAe,IAAMd,EACrB,MAAO,EACP,MAAM,KAAKoB,EAAM,CAChB,KAAM,CAAE,QAASC,CAAK,EAAK,MAAKC,EAAA,wBAAAD,CAAA,OAAC,QAAO,4BAAkB,iBAAAA,EAAA,0CACpD,CAAE,eAAAE,CAAc,EAAK,+CAAM,QAAO,4BAAmB,OAAAC,KAAA,yBAAAD,CAAA,uBACrD,CAAE,UAAAE,EAAW,YAAAC,CAAW,EAAK,MAAKJ,EAAA,0BAAAG,EAAA,YAAAC,CAAA,OAAC,QAAO,4BAAoB,OAAAF,KAAA,oBAAAC,EAAA,YAAAC,EAAA,sDAC9DC,EAAMJ,EAAe,qEAAsE,CAAE,OAAQH,EAAK,MAAM,CAAE,EACxH,GAAI,CACH,MAAMC,EAAM,KAAKM,CAAG,EACpBD,EACC,EAAE,YAAa,+CAA+C,EAAI;AAAA,EAC/D,EAAE,YAAa,wCAAwC,EAAI;AAAA,EAC3D,EAAE,YAAa,oFAAoF,CAC3G,CACG,OAASE,EAAO,CACf,QAAQ,MAAMA,CAAK,EACnBH,EAAU,EAAE,YAAa,qCAAqC,CAAC,CAChE,CACA,OAAO,IACR,CACF,CAAE,EACDT,EAAmBE,CAAe,CACnC,CAEA,SAASW,GAAoB,CAC5B,MAAMC,EAAY,IAAIvB,EAAW,CAChC,GAAI,gBACJ,OAAQ,kBACR,YAAcC,GACN,EAAE,YAAa,yBAAyB,EAEhD,QAAQA,EAAOC,EAAM,CACpB,MAAO,CAACN,EAAkB,SAASM,EAAK,EAAE,GACtCD,EAAM,SAAW,GACjB,CAACA,EAAM,KAAK,CAAC,CAAE,YAAAE,CAAW,KAAQA,EAAcC,EAAW,QAAU,CAAC,GACtEH,EAAM,MAAM,CAAC,CAAE,KAAAI,CAAI,IAAOA,IAASC,EAAS,IAAI,GAChDL,EAAM,MAAM,CAAC,CAAE,KAAAM,CAAI,IAAOK,EAAsB,SAASL,CAAI,CAAC,CACnE,EACA,cAAe,IAAMb,EACrB,MAAO,EACP,MAAM,KAAKmB,EAAM,CAChB,KAAM,CAAE,QAASC,CAAK,EAAK,MAAKC,EAAA,wBAAAD,CAAA,OAAC,QAAO,4BAAkB,iBAAAA,EAAA,0CACpD,CAAE,eAAAE,CAAc,EAAK,+CAAM,QAAO,4BAAmB,OAAAC,KAAA,yBAAAD,CAAA,uBACrD,CAAE,UAAAE,EAAW,YAAAC,CAAW,EAAK,MAAKJ,EAAA,0BAAAG,EAAA,YAAAC,CAAA,OAAC,QAAO,4BAAoB,OAAAF,KAAA,oBAAAC,EAAA,YAAAC,EAAA,sDAC9DC,EAAMJ,EAAe,+DAAgE,CAAE,OAAQH,EAAK,MAAM,CAAE,EAClH,GAAI,CACH,MAAMC,EAAM,KAAKM,CAAG,EACpBD,EACC,EAAE,YAAa,gDAAgD,EAAI;AAAA,EAChE,EAAE,YAAa,wCAAwC,EAAI;AAAA,EAC3D,EAAE,YAAa,2FAA2F,CAClH,CACG,OAASE,EAAO,CACf,QAAQ,MAAMA,CAAK,EACnBH,EAAU,EAAE,YAAa,qCAAqC,CAAC,CAChE,CACA,OAAO,IACR,CACF,CAAE,EACDT,EAAmBc,CAAS,CAC7B,CAEA,SAASC,GAAoB,CAC5B,MAAMC,EAAY,IAAIzB,EAAW,CAChC,GAAI,gBACJ,OAAQ,kBACR,YAAcC,GACN,EAAE,YAAa,2BAA2B,EAElD,QAAQA,EAAOC,EAAM,CACpB,MAAO,CAACN,EAAkB,SAASM,EAAK,EAAE,GACtCD,EAAM,SAAW,GACjB,CAACA,EAAM,KAAK,CAAC,CAAE,YAAAE,CAAW,KAAQA,EAAcC,EAAW,QAAU,CAAC,GACtEH,EAAM,MAAM,CAAC,CAAE,KAAAI,CAAI,IAAOA,IAASC,EAAS,IAAI,GAChDL,EAAM,MAAM,CAAC,CAAE,KAAAM,CAAI,IAAOmB,EAAuB,SAASnB,CAAI,CAAC,CACpE,EACA,cAAe,IAAMZ,EACrB,MAAO,EACP,MAAM,KAAKkB,EAAM,CAChB,KAAM,CAAE,QAASC,CAAK,EAAK,MAAKC,EAAA,wBAAAD,CAAA,OAAC,QAAO,4BAAkB,iBAAAA,EAAA,0CACpD,CAAE,eAAAE,CAAc,EAAK,+CAAM,QAAO,4BAAmB,OAAAC,KAAA,yBAAAD,CAAA,uBACrD,CAAE,UAAAE,EAAW,YAAAC,CAAW,EAAK,MAAKJ,EAAA,0BAAAG,EAAA,YAAAC,CAAA,OAAC,QAAO,4BAAoB,OAAAF,KAAA,oBAAAC,EAAA,YAAAC,EAAA,sDAC9DC,EAAMJ,EAAe,8DAA+D,CAAE,OAAQH,EAAK,MAAM,CAAE,EACjH,GAAI,CACH,MAAMC,EAAM,KAAKM,CAAG,EACpBD,EACC,EAAE,YAAa,+CAA+C,EAAI;AAAA,EAC/D,EAAE,YAAa,wCAAwC,EAAI;AAAA,EAC3D,EAAE,YAAa,4FAA4F,CACnH,CACG,OAASE,EAAO,CACf,QAAQ,MAAMA,CAAK,EACnBH,EAAU,EAAE,YAAa,qCAAqC,CAAC,CAChE,CACA,OAAO,IACR,CACF,CAAE,EACDT,EAAmBgB,CAAS,CAC7B,CAEA,MAAME,EAAmBC,EAAU,YAAa,oBAAqB,EAAK,EACpEC,EAAqBD,EAAU,YAAa,sBAAuB,EAAK,EACxEE,EAAeF,EAAU,YAAa,gBAAiB,EAAK,EAC5DG,EAAeH,EAAU,YAAa,gBAAiB,EAAK,EAElE,GAAID,EAAkB,CACrB,GAAIE,GAAsBC,GAAgBC,EAAc,CACvD,MAAMC,EAAiB,IACnBH,GAAsBE,IACzBC,EAAe,KAAK,GAAGpB,CAAqB,EAEzCkB,GACHE,EAAe,KAAK,GAAGN,CAAsB,EAE9C7B,EAAoBmC,CAAc,CACnC,CACIF,GACHN,EAAiB,EAEdK,GACHnB,EAAuB,EAEpBqB,GACHT,EAAiB,CAEnB","names":["SummarizeSymbol","TTSSymbol","STTSymbol","actionIgnoreLists","registerGroupAction","mimeTypes","groupAction","FileAction","nodes","view","permissions","Permission","type","FileType","mime","CreationSvgIcon","registerFileAction","registerSummarizeAction","summarizeAction","VALID_TEXT_MIME_TYPES","node","axios","__vitePreload","generateOcsUrl","n","showError","showSuccess","url","error","registerTtsAction","ttsAction","registerSttAction","sttAction","VALID_AUDIO_MIME_TYPES","assistantEnabled","loadState","summarizeAvailable","sttAvailable","ttsAvailable","groupMimeTypes"],"ignoreList":[0,1,2],"sources":["../node_modules/@material-symbols/svg-700/outlined/summarize.svg?raw","../node_modules/@material-symbols/svg-700/outlined/text_to_speech.svg?raw","../node_modules/@material-symbols/svg-700/outlined/speech_to_text.svg?raw","../src/files/fileActions.js"],"sourcesContent":["export default \"\"","export default \"\"","export default \"\"","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { registerFileAction, Permission, FileAction, FileType } from '@nextcloud/files'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport CreationSvgIcon from '@mdi/svg/svg/creation.svg?raw'\nimport SummarizeSymbol from '@material-symbols/svg-700/outlined/summarize.svg?raw'\nimport TTSSymbol from '@material-symbols/svg-700/outlined/text_to_speech.svg?raw'\nimport STTSymbol from '@material-symbols/svg-700/outlined/speech_to_text.svg?raw'\nimport { VALID_AUDIO_MIME_TYPES, VALID_TEXT_MIME_TYPES } from '../constants.js'\n\nconst actionIgnoreLists = [\n\t'trashbin',\n\t'files.public',\n]\n\nfunction registerGroupAction(mimeTypes) {\n\tconst groupAction = new FileAction({\n\t\tid: 'assistant-group',\n\t\tdisplayName: (nodes) => {\n\t\t\treturn t('assistant', 'AI Assistant')\n\t\t},\n\t\tenabled(nodes, view) {\n\t\t\treturn !actionIgnoreLists.includes(view.id)\n\t\t\t\t&& nodes.length === 1\n\t\t\t\t&& !nodes.some(({ permissions }) => (permissions & Permission.READ) === 0)\n\t\t\t\t&& nodes.every(({ type }) => type === FileType.File)\n\t\t\t\t&& nodes.every(({ mime }) => mimeTypes.includes(mime))\n\t\t},\n\t\ticonSvgInline: () => CreationSvgIcon,\n\t\torder: 0,\n\t\tasync exec() {\n\t\t\treturn null\n\t\t},\n\t})\n\tregisterFileAction(groupAction)\n}\n\nfunction registerSummarizeAction() {\n\tconst summarizeAction = new FileAction({\n\t\tid: 'assistant-summarize',\n\t\tparent: 'assistant-group',\n\t\tdisplayName: (nodes) => {\n\t\t\treturn t('approval', 'Summarize using AI')\n\t\t},\n\t\tenabled(nodes, view) {\n\t\t\treturn !actionIgnoreLists.includes(view.id)\n\t\t\t\t&& nodes.length === 1\n\t\t\t\t&& !nodes.some(({ permissions }) => (permissions & Permission.READ) === 0)\n\t\t\t\t&& nodes.every(({ type }) => type === FileType.File)\n\t\t\t\t&& nodes.every(({ mime }) => VALID_TEXT_MIME_TYPES.includes(mime))\n\t\t},\n\t\ticonSvgInline: () => SummarizeSymbol,\n\t\torder: 0,\n\t\tasync exec(node) {\n\t\t\tconst { default: axios } = await import('@nextcloud/axios')\n\t\t\tconst { generateOcsUrl } = await import('@nextcloud/router')\n\t\t\tconst { showError, showSuccess } = await import('@nextcloud/dialogs')\n\t\t\tconst url = generateOcsUrl('/apps/assistant/api/v1/file-action/{fileId}/core:text2text:summary', { fileId: node.fileid })\n\t\t\ttry {\n\t\t\t\tawait axios.post(url)\n\t\t\t\tshowSuccess(\n\t\t\t\t\tt('assistant', 'Summarization AI task submitted successfully.') + '\\n'\n\t\t\t\t\t\t+ t('assistant', 'You will be notified when it is ready.') + '\\n'\n\t\t\t\t\t\t+ t('assistant', 'It can also be checked in the Assistant in the \"Work with text -> Summarize\" menu.'),\n\t\t\t\t)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t\tshowError(t('assistant', 'Failed to launch the AI file action'))\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t})\n\tregisterFileAction(summarizeAction)\n}\n\nfunction registerTtsAction() {\n\tconst ttsAction = new FileAction({\n\t\tid: 'assistant-tts',\n\t\tparent: 'assistant-group',\n\t\tdisplayName: (nodes) => {\n\t\t\treturn t('assistant', 'Text-To-Speech using AI')\n\t\t},\n\t\tenabled(nodes, view) {\n\t\t\treturn !actionIgnoreLists.includes(view.id)\n\t\t\t\t&& nodes.length === 1\n\t\t\t\t&& !nodes.some(({ permissions }) => (permissions & Permission.READ) === 0)\n\t\t\t\t&& nodes.every(({ type }) => type === FileType.File)\n\t\t\t\t&& nodes.every(({ mime }) => VALID_TEXT_MIME_TYPES.includes(mime))\n\t\t},\n\t\ticonSvgInline: () => TTSSymbol,\n\t\torder: 0,\n\t\tasync exec(node) {\n\t\t\tconst { default: axios } = await import('@nextcloud/axios')\n\t\t\tconst { generateOcsUrl } = await import('@nextcloud/router')\n\t\t\tconst { showError, showSuccess } = await import('@nextcloud/dialogs')\n\t\t\tconst url = generateOcsUrl('/apps/assistant/api/v1/file-action/{fileId}/core:text2speech', { fileId: node.fileid })\n\t\t\ttry {\n\t\t\t\tawait axios.post(url)\n\t\t\t\tshowSuccess(\n\t\t\t\t\tt('assistant', 'Text-to-Speech AI task submitted successfully.') + '\\n'\n\t\t\t\t\t\t+ t('assistant', 'You will be notified when it is ready.') + '\\n'\n\t\t\t\t\t\t+ t('assistant', 'It can also be checked in the Assistant in the \"Work with audio -> Generate speech\" menu.'),\n\t\t\t\t)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t\tshowError(t('assistant', 'Failed to launch the AI file action'))\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t})\n\tregisterFileAction(ttsAction)\n}\n\nfunction registerSttAction() {\n\tconst sttAction = new FileAction({\n\t\tid: 'assistant-stt',\n\t\tparent: 'assistant-group',\n\t\tdisplayName: (nodes) => {\n\t\t\treturn t('assistant', 'Transcribe audio using AI')\n\t\t},\n\t\tenabled(nodes, view) {\n\t\t\treturn !actionIgnoreLists.includes(view.id)\n\t\t\t\t&& nodes.length === 1\n\t\t\t\t&& !nodes.some(({ permissions }) => (permissions & Permission.READ) === 0)\n\t\t\t\t&& nodes.every(({ type }) => type === FileType.File)\n\t\t\t\t&& nodes.every(({ mime }) => VALID_AUDIO_MIME_TYPES.includes(mime))\n\t\t},\n\t\ticonSvgInline: () => STTSymbol,\n\t\torder: 0,\n\t\tasync exec(node) {\n\t\t\tconst { default: axios } = await import('@nextcloud/axios')\n\t\t\tconst { generateOcsUrl } = await import('@nextcloud/router')\n\t\t\tconst { showError, showSuccess } = await import('@nextcloud/dialogs')\n\t\t\tconst url = generateOcsUrl('/apps/assistant/api/v1/file-action/{fileId}/core:audio2text', { fileId: node.fileid })\n\t\t\ttry {\n\t\t\t\tawait axios.post(url)\n\t\t\t\tshowSuccess(\n\t\t\t\t\tt('assistant', 'Transcription AI task submitted successfully.') + '\\n'\n\t\t\t\t\t\t+ t('assistant', 'You will be notified when it is ready.') + '\\n'\n\t\t\t\t\t\t+ t('assistant', 'It can also be checked in the Assistant in the \"Work with audio -> Transcribe audio\" menu.'),\n\t\t\t\t)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t\tshowError(t('assistant', 'Failed to launch the AI file action'))\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t})\n\tregisterFileAction(sttAction)\n}\n\nconst assistantEnabled = loadState('assistant', 'assistant-enabled', false)\nconst summarizeAvailable = loadState('assistant', 'summarize-available', false)\nconst sttAvailable = loadState('assistant', 'stt-available', false)\nconst ttsAvailable = loadState('assistant', 'tts-available', false)\n\nif (assistantEnabled) {\n\tif (summarizeAvailable || sttAvailable || ttsAvailable) {\n\t\tconst groupMimeTypes = []\n\t\tif (summarizeAvailable || ttsAvailable) {\n\t\t\tgroupMimeTypes.push(...VALID_TEXT_MIME_TYPES)\n\t\t}\n\t\tif (sttAvailable) {\n\t\t\tgroupMimeTypes.push(...VALID_AUDIO_MIME_TYPES)\n\t\t}\n\t\tregisterGroupAction(groupMimeTypes)\n\t}\n\tif (sttAvailable) {\n\t\tregisterSttAction()\n\t}\n\tif (summarizeAvailable) {\n\t\tregisterSummarizeAction()\n\t}\n\tif (ttsAvailable) {\n\t\tregisterTtsAction()\n\t}\n}\n"],"file":"assistant-fileActions.mjs"}