DuyTa's picture
Upload folder using huggingface_hub
bc20498 verified
{"version":3,"file":"22.Ba8ZoSQM.js","sources":["../../../../../../src/lib/components/workspace/Tools/ToolMenu.svelte","../../../../../../src/lib/components/workspace/Tools.svelte"],"sourcesContent":["<script lang=\"ts\">\n\timport { DropdownMenu } from 'bits-ui';\n\timport { flyAndScale } from '$lib/utils/transitions';\n\timport { getContext } from 'svelte';\n\n\timport Dropdown from '$lib/components/common/Dropdown.svelte';\n\timport GarbageBin from '$lib/components/icons/GarbageBin.svelte';\n\timport Pencil from '$lib/components/icons/Pencil.svelte';\n\timport Tooltip from '$lib/components/common/Tooltip.svelte';\n\timport Tags from '$lib/components/chat/Tags.svelte';\n\timport Share from '$lib/components/icons/Share.svelte';\n\timport ArchiveBox from '$lib/components/icons/ArchiveBox.svelte';\n\timport DocumentDuplicate from '$lib/components/icons/DocumentDuplicate.svelte';\n\timport ArrowDownTray from '$lib/components/icons/ArrowDownTray.svelte';\n\n\tconst i18n = getContext('i18n');\n\n\texport let editHandler: Function;\n\texport let shareHandler: Function;\n\texport let cloneHandler: Function;\n\texport let exportHandler: Function;\n\texport let deleteHandler: Function;\n\texport let onClose: Function;\n\n\tlet show = false;\n</script>\n\n<Dropdown\n\tbind:show\n\ton:change={(e) => {\n\t\tif (e.detail === false) {\n\t\t\tonClose();\n\t\t}\n\t}}\n>\n\t<Tooltip content={$i18n.t('More')}>\n\t\t<slot />\n\t</Tooltip>\n\n\t<div slot=\"content\">\n\t\t<DropdownMenu.Content\n\t\t\tclass=\"w-full max-w-[160px] rounded-xl px-1 py-1.5 border border-gray-300/30 dark:border-gray-700/50 z-50 bg-white dark:bg-gray-850 dark:text-white shadow\"\n\t\t\tsideOffset={-2}\n\t\t\tside=\"bottom\"\n\t\t\talign=\"start\"\n\t\t\ttransition={flyAndScale}\n\t\t>\n\t\t\t<DropdownMenu.Item\n\t\t\t\tclass=\"flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md\"\n\t\t\t\ton:click={() => {\n\t\t\t\t\teditHandler();\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tstroke-width=\"1.5\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tclass=\"w-4 h-4\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\td=\"M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L6.832 19.82a4.5 4.5 0 01-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 011.13-1.897L16.863 4.487zm0 0L19.5 7.125\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\n\t\t\t\t<div class=\"flex items-center\">{$i18n.t('Edit')}</div>\n\t\t\t</DropdownMenu.Item>\n\n\t\t\t<DropdownMenu.Item\n\t\t\t\tclass=\"flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md\"\n\t\t\t\ton:click={() => {\n\t\t\t\t\tshareHandler();\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<Share />\n\t\t\t\t<div class=\"flex items-center\">{$i18n.t('Share')}</div>\n\t\t\t</DropdownMenu.Item>\n\n\t\t\t<DropdownMenu.Item\n\t\t\t\tclass=\"flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md\"\n\t\t\t\ton:click={() => {\n\t\t\t\t\tcloneHandler();\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<DocumentDuplicate />\n\n\t\t\t\t<div class=\"flex items-center\">{$i18n.t('Clone')}</div>\n\t\t\t</DropdownMenu.Item>\n\n\t\t\t<DropdownMenu.Item\n\t\t\t\tclass=\"flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md\"\n\t\t\t\ton:click={() => {\n\t\t\t\t\texportHandler();\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ArrowDownTray />\n\n\t\t\t\t<div class=\"flex items-center\">{$i18n.t('Export')}</div>\n\t\t\t</DropdownMenu.Item>\n\n\t\t\t<hr class=\"border-gray-100 dark:border-gray-800 my-1\" />\n\n\t\t\t<DropdownMenu.Item\n\t\t\t\tclass=\"flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md\"\n\t\t\t\ton:click={() => {\n\t\t\t\t\tdeleteHandler();\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<GarbageBin strokeWidth=\"2\" />\n\t\t\t\t<div class=\"flex items-center\">{$i18n.t('Delete')}</div>\n\t\t\t</DropdownMenu.Item>\n\t\t</DropdownMenu.Content>\n\t</div>\n</Dropdown>\n","<script lang=\"ts\">\n\timport { toast } from 'svelte-sonner';\n\timport fileSaver from 'file-saver';\n\tconst { saveAs } = fileSaver;\n\n\timport { onMount, getContext } from 'svelte';\n\timport { WEBUI_NAME, prompts, tools } from '$lib/stores';\n\timport { createNewPrompt, deletePromptByCommand, getPrompts } from '$lib/apis/prompts';\n\n\timport { goto } from '$app/navigation';\n\timport {\n\t\tcreateNewTool,\n\t\tdeleteToolById,\n\t\texportTools,\n\t\tgetToolById,\n\t\tgetTools\n\t} from '$lib/apis/tools';\n\timport ArrowDownTray from '../icons/ArrowDownTray.svelte';\n\timport Tooltip from '../common/Tooltip.svelte';\n\timport ConfirmDialog from '../common/ConfirmDialog.svelte';\n\timport ToolMenu from './Tools/ToolMenu.svelte';\n\timport EllipsisHorizontal from '../icons/EllipsisHorizontal.svelte';\n\timport ValvesModal from './common/ValvesModal.svelte';\n\timport ManifestModal from './common/ManifestModal.svelte';\n\timport Heart from '../icons/Heart.svelte';\n\timport DeleteConfirmDialog from '$lib/components/common/ConfirmDialog.svelte';\n\timport GarbageBin from '../icons/GarbageBin.svelte';\n\n\tconst i18n = getContext('i18n');\n\n\tlet shiftKey = false;\n\n\tlet toolsImportInputElement: HTMLInputElement;\n\tlet importFiles;\n\n\tlet showConfirm = false;\n\tlet query = '';\n\n\tlet showManifestModal = false;\n\tlet showValvesModal = false;\n\tlet selectedTool = null;\n\n\tlet showDeleteConfirm = false;\n\n\tconst shareHandler = async (tool) => {\n\t\tconst item = await getToolById(localStorage.token, tool.id).catch((error) => {\n\t\t\ttoast.error(error);\n\t\t\treturn null;\n\t\t});\n\n\t\ttoast.success($i18n.t('Redirecting you to OpenWebUI Community'));\n\n\t\tconst url = 'https://openwebui.com';\n\n\t\tconst tab = await window.open(`${url}/tools/create`, '_blank');\n\n\t\t// Define the event handler function\n\t\tconst messageHandler = (event) => {\n\t\t\tif (event.origin !== url) return;\n\t\t\tif (event.data === 'loaded') {\n\t\t\t\ttab.postMessage(JSON.stringify(item), '*');\n\n\t\t\t\t// Remove the event listener after handling the message\n\t\t\t\twindow.removeEventListener('message', messageHandler);\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener('message', messageHandler, false);\n\t\tconsole.log(item);\n\t};\n\n\tconst cloneHandler = async (tool) => {\n\t\tconst _tool = await getToolById(localStorage.token, tool.id).catch((error) => {\n\t\t\ttoast.error(error);\n\t\t\treturn null;\n\t\t});\n\n\t\tif (_tool) {\n\t\t\tsessionStorage.tool = JSON.stringify({\n\t\t\t\t..._tool,\n\t\t\t\tid: `${_tool.id}_clone`,\n\t\t\t\tname: `${_tool.name} (Clone)`\n\t\t\t});\n\t\t\tgoto('/workspace/tools/create');\n\t\t}\n\t};\n\n\tconst exportHandler = async (tool) => {\n\t\tconst _tool = await getToolById(localStorage.token, tool.id).catch((error) => {\n\t\t\ttoast.error(error);\n\t\t\treturn null;\n\t\t});\n\n\t\tif (_tool) {\n\t\t\tlet blob = new Blob([JSON.stringify([_tool])], {\n\t\t\t\ttype: 'application/json'\n\t\t\t});\n\t\t\tsaveAs(blob, `tool-${_tool.id}-export-${Date.now()}.json`);\n\t\t}\n\t};\n\n\tconst deleteHandler = async (tool) => {\n\t\tconst res = await deleteToolById(localStorage.token, tool.id).catch((error) => {\n\t\t\ttoast.error(error);\n\t\t\treturn null;\n\t\t});\n\n\t\tif (res) {\n\t\t\ttoast.success($i18n.t('Tool deleted successfully'));\n\t\t\ttools.set(await getTools(localStorage.token));\n\t\t}\n\t};\n\n\tonMount(() => {\n\t\tconst onKeyDown = (event) => {\n\t\t\tif (event.key === 'Shift') {\n\t\t\t\tshiftKey = true;\n\t\t\t}\n\t\t};\n\n\t\tconst onKeyUp = (event) => {\n\t\t\tif (event.key === 'Shift') {\n\t\t\t\tshiftKey = false;\n\t\t\t}\n\t\t};\n\n\t\tconst onBlur = () => {\n\t\t\tshiftKey = false;\n\t\t};\n\n\t\twindow.addEventListener('keydown', onKeyDown);\n\t\twindow.addEventListener('keyup', onKeyUp);\n\t\twindow.addEventListener('blur', onBlur);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('keydown', onKeyDown);\n\t\t\twindow.removeEventListener('keyup', onKeyUp);\n\t\t\twindow.removeEventListener('blur', onBlur);\n\t\t};\n\t});\n</script>\n\n<svelte:head>\n\t<title>\n\t\t{$i18n.t('Tools')} | {$WEBUI_NAME}\n\t</title>\n</svelte:head>\n\n<div class=\"mb-3 flex justify-between items-center\">\n\t<div class=\" text-lg font-semibold self-center\">{$i18n.t('Tools')}</div>\n</div>\n\n<div class=\" flex w-full space-x-2\">\n\t<div class=\"flex flex-1\">\n\t\t<div class=\" self-center ml-1 mr-3\">\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 20 20\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t\tclass=\"w-4 h-4\"\n\t\t\t>\n\t\t\t\t<path\n\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\td=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\"\n\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t\t<input\n\t\t\tclass=\" w-full text-sm pr-4 py-1 rounded-r-xl outline-none bg-transparent\"\n\t\t\tbind:value={query}\n\t\t\tplaceholder={$i18n.t('Search Tools')}\n\t\t/>\n\t</div>\n\n\t<div>\n\t\t<a\n\t\t\tclass=\" px-2 py-2 rounded-xl border border-gray-200 dark:border-gray-600 dark:border-0 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 transition font-medium text-sm flex items-center space-x-1\"\n\t\t\thref=\"/workspace/tools/create\"\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t\tclass=\"w-4 h-4\"\n\t\t\t>\n\t\t\t\t<path\n\t\t\t\t\td=\"M8.75 3.75a.75.75 0 0 0-1.5 0v3.5h-3.5a.75.75 0 0 0 0 1.5h3.5v3.5a.75.75 0 0 0 1.5 0v-3.5h3.5a.75.75 0 0 0 0-1.5h-3.5v-3.5Z\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</a>\n\t</div>\n</div>\n<hr class=\" dark:border-gray-850 my-2.5\" />\n\n<div class=\"my-3 mb-5\">\n\t{#each $tools.filter((t) => query === '' || t.name\n\t\t\t\t.toLowerCase()\n\t\t\t\t.includes(query.toLowerCase()) || t.id.toLowerCase().includes(query.toLowerCase())) as tool}\n\t\t<div\n\t\t\tclass=\" flex space-x-4 cursor-pointer w-full px-3 py-2 dark:hover:bg-white/5 hover:bg-black/5 rounded-xl\"\n\t\t>\n\t\t\t<a\n\t\t\t\tclass=\" flex flex-1 space-x-3.5 cursor-pointer w-full\"\n\t\t\t\thref={`/workspace/tools/edit?id=${encodeURIComponent(tool.id)}`}\n\t\t\t>\n\t\t\t\t<div class=\"flex items-center text-left\">\n\t\t\t\t\t<div class=\" flex-1 self-center pl-1\">\n\t\t\t\t\t\t<div class=\" font-semibold flex items-center gap-1.5\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\" text-xs font-bold px-1 rounded uppercase line-clamp-1 bg-gray-500/20 text-gray-700 dark:text-gray-200\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tTOOL\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{#if tool?.meta?.manifest?.version}\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"text-xs font-bold px-1 rounded line-clamp-1 bg-gray-500/20 text-gray-700 dark:text-gray-200\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tv{tool?.meta?.manifest?.version ?? ''}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{/if}\n\n\t\t\t\t\t\t\t<div class=\"line-clamp-1\">\n\t\t\t\t\t\t\t\t{tool.name}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class=\"flex gap-1.5 px-1\">\n\t\t\t\t\t\t\t<div class=\" text-gray-500 text-xs font-medium flex-shrink-0\">{tool.id}</div>\n\n\t\t\t\t\t\t\t<div class=\" text-xs overflow-hidden text-ellipsis line-clamp-1\">\n\t\t\t\t\t\t\t\t{tool.meta.description}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</a>\n\t\t\t<div class=\"flex flex-row gap-0.5 self-center\">\n\t\t\t\t{#if shiftKey}\n\t\t\t\t\t<Tooltip content={$i18n.t('Delete')}>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\"self-center w-fit text-sm px-2 py-2 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\ton:click={() => {\n\t\t\t\t\t\t\t\tdeleteHandler(tool);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<GarbageBin />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t{:else}\n\t\t\t\t\t{#if tool?.meta?.manifest?.funding_url ?? false}\n\t\t\t\t\t\t<Tooltip content=\"Support\">\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclass=\"self-center w-fit text-sm px-2 py-2 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl\"\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\ton:click={() => {\n\t\t\t\t\t\t\t\t\tselectedTool = tool;\n\t\t\t\t\t\t\t\t\tshowManifestModal = true;\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Heart />\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t{/if}\n\n\t\t\t\t\t<Tooltip content={$i18n.t('Valves')}>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\"self-center w-fit text-sm px-2 py-2 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\ton:click={() => {\n\t\t\t\t\t\t\t\tselectedTool = tool;\n\t\t\t\t\t\t\t\tshowValvesModal = true;\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tstroke-width=\"1.5\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tclass=\"size-4\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\td=\"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\td=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</Tooltip>\n\n\t\t\t\t\t<ToolMenu\n\t\t\t\t\t\teditHandler={() => {\n\t\t\t\t\t\t\tgoto(`/workspace/tools/edit?id=${encodeURIComponent(tool.id)}`);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tshareHandler={() => {\n\t\t\t\t\t\t\tshareHandler(tool);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tcloneHandler={() => {\n\t\t\t\t\t\t\tcloneHandler(tool);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\texportHandler={() => {\n\t\t\t\t\t\t\texportHandler(tool);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdeleteHandler={async () => {\n\t\t\t\t\t\t\tselectedTool = tool;\n\t\t\t\t\t\t\tshowDeleteConfirm = true;\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonClose={() => {}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\"self-center w-fit text-sm p-1.5 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<EllipsisHorizontal className=\"size-5\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</ToolMenu>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t</div>\n\t{/each}\n</div>\n\n<div class=\" text-gray-500 text-xs mt-1 mb-2\">\n\tⓘ {$i18n.t(\n\t\t'Admins have access to all tools at all times; users need tools assigned per model in the workspace.'\n\t)}\n</div>\n\n<div class=\" flex justify-end w-full mb-2\">\n\t<div class=\"flex space-x-2\">\n\t\t<input\n\t\t\tid=\"documents-import-input\"\n\t\t\tbind:this={toolsImportInputElement}\n\t\t\tbind:files={importFiles}\n\t\t\ttype=\"file\"\n\t\t\taccept=\".json\"\n\t\t\thidden\n\t\t\ton:change={() => {\n\t\t\t\tconsole.log(importFiles);\n\t\t\t\tshowConfirm = true;\n\t\t\t}}\n\t\t/>\n\n\t\t<button\n\t\t\tclass=\"flex text-xs items-center space-x-1 px-3 py-1.5 rounded-xl bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 dark:text-gray-200 transition\"\n\t\t\ton:click={() => {\n\t\t\t\ttoolsImportInputElement.click();\n\t\t\t}}\n\t\t>\n\t\t\t<div class=\" self-center mr-2 font-medium line-clamp-1\">{$i18n.t('Import Tools')}</div>\n\n\t\t\t<div class=\" self-center\">\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\tclass=\"w-4 h-4\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\td=\"M4 2a1.5 1.5 0 0 0-1.5 1.5v9A1.5 1.5 0 0 0 4 14h8a1.5 1.5 0 0 0 1.5-1.5V6.621a1.5 1.5 0 0 0-.44-1.06L9.94 2.439A1.5 1.5 0 0 0 8.878 2H4Zm4 9.5a.75.75 0 0 1-.75-.75V8.06l-.72.72a.75.75 0 0 1-1.06-1.06l2-2a.75.75 0 0 1 1.06 0l2 2a.75.75 0 1 1-1.06 1.06l-.72-.72v2.69a.75.75 0 0 1-.75.75Z\"\n\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t</button>\n\n\t\t<button\n\t\t\tclass=\"flex text-xs items-center space-x-1 px-3 py-1.5 rounded-xl bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 dark:text-gray-200 transition\"\n\t\t\ton:click={async () => {\n\t\t\t\tconst _tools = await exportTools(localStorage.token).catch((error) => {\n\t\t\t\t\ttoast.error(error);\n\t\t\t\t\treturn null;\n\t\t\t\t});\n\n\t\t\t\tif (_tools) {\n\t\t\t\t\tlet blob = new Blob([JSON.stringify(_tools)], {\n\t\t\t\t\t\ttype: 'application/json'\n\t\t\t\t\t});\n\t\t\t\t\tsaveAs(blob, `tools-export-${Date.now()}.json`);\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<div class=\" self-center mr-2 font-medium line-clamp-1\">{$i18n.t('Export Tools')}</div>\n\n\t\t\t<div class=\" self-center\">\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\tclass=\"w-4 h-4\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\td=\"M4 2a1.5 1.5 0 0 0-1.5 1.5v9A1.5 1.5 0 0 0 4 14h8a1.5 1.5 0 0 0 1.5-1.5V6.621a1.5 1.5 0 0 0-.44-1.06L9.94 2.439A1.5 1.5 0 0 0 8.878 2H4Zm4 3.5a.75.75 0 0 1 .75.75v2.69l.72-.72a.75.75 0 1 1 1.06 1.06l-2 2a.75.75 0 0 1-1.06 0l-2-2a.75.75 0 0 1 1.06-1.06l.72.72V6.25A.75.75 0 0 1 8 5.5Z\"\n\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t</button>\n\t</div>\n</div>\n\n\n<DeleteConfirmDialog\n\tbind:show={showDeleteConfirm}\n\ttitle={$i18n.t('Delete tool?')}\n\ton:confirm={() => {\n\t\tdeleteHandler(selectedTool);\n\t}}\n>\n\t<div class=\" text-sm text-gray-500\">\n\t\t{$i18n.t('This will delete')} <span class=\" font-semibold\">{selectedTool.name}</span>.\n\t</div>\n</DeleteConfirmDialog>\n\n<ValvesModal bind:show={showValvesModal} type=\"tool\" id={selectedTool?.id ?? null} />\n<ManifestModal bind:show={showManifestModal} manifest={selectedTool?.meta?.manifest ?? {}} />\n\n<ConfirmDialog\n\tbind:show={showConfirm}\n\ton:confirm={() => {\n\t\tconst reader = new FileReader();\n\t\treader.onload = async (event) => {\n\t\t\tconst _tools = JSON.parse(event.target.result);\n\t\t\tconsole.log(_tools);\n\n\t\t\tfor (const tool of _tools) {\n\t\t\t\tconst res = await createNewTool(localStorage.token, tool).catch((error) => {\n\t\t\t\t\ttoast.error(error);\n\t\t\t\t\treturn null;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\ttoast.success($i18n.t('Tool imported successfully'));\n\t\t\ttools.set(await getTools(localStorage.token));\n\t\t};\n\n\t\treader.readAsText(importFiles[0]);\n\t}}\n>\n\t<div class=\"text-sm text-gray-500\">\n\t\t<div class=\" bg-yellow-500/20 text-yellow-700 dark:text-yellow-200 rounded-lg px-4 py-3\">\n\t\t\t<div>{$i18n.t('Please carefully review the following warnings:')}</div>\n\n\t\t\t<ul class=\" mt-1 list-disc pl-4 text-xs\">\n\t\t\t\t<li>\n\t\t\t\t\t{$i18n.t('Tools have a function calling system that allows arbitrary code execution')}.\n\t\t\t\t</li>\n\t\t\t\t<li>{$i18n.t('Do not install tools from sources you do not fully trust.')}</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t<div class=\"my-3\">\n\t\t\t{$i18n.t(\n\t\t\t\t'I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.'\n\t\t\t)}\n\t\t</div>\n\t</div>\n</ConfirmDialog>\n"],"names":["ctx","insert_hydration","target","svg","anchor","append_hydration","path","div","set_data","t1","t1_value","hr","flyAndScale","i18n","getContext","editHandler","$$props","shareHandler","cloneHandler","exportHandler","deleteHandler","onClose","show","e","_c","_b","_a","dirty","if_block","create_if_block_1","button","t3_value","t5_value","if_block0","create_if_block_2","div9","a","div7","div6","div2","div0","div1","div5","div3","div4","div8","current","t3","t5","t7","t7_value","t2_value","span","t0","t0_value","t2","ul","li0","li1","title_value","each_value","ensure_array_like","i","input0","div13","div12","input1","button0","button1","div10","div11","each_blocks","t9","t9_value","t12","t12_value","t15","t15_value","saveAs","fileSaver","shiftKey","toolsImportInputElement","importFiles","showConfirm","query","showManifestModal","showValvesModal","selectedTool","showDeleteConfirm","tool","item","getToolById","error","toast","$i18n","url","tab","messageHandler","event","_tool","goto","blob","deleteToolById","tools","getTools","onMount","onKeyDown","onKeyUp","onBlur","t","$$invalidate","$$value","_tools","exportTools","value","reader","createNewTool"],"mappings":"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"}