From eaae79a581ad761d357460f4fa4ce95f23eb805a Mon Sep 17 00:00:00 2001 From: "Junyan Qin (Chin)" Date: Wed, 23 Jul 2025 15:33:39 +0800 Subject: [PATCH] feat: plugin auto upgrade strategy (#19758) Co-authored-by: Joel Co-authored-by: crazywoola <427733928@qq.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Novice --- api/.env.example | 10 + api/README.md | 7 +- api/configs/feature/__init__.py | 36 +++ api/controllers/console/workspace/plugin.py | 115 +++++++- api/core/helper/marketplace.py | 20 ++ api/docker/entrypoint.sh | 2 +- api/extensions/ext_celery.py | 65 +++-- ...d07_add_tenant_plugin_autoupgrade_table.py | 42 +++ api/models/account.py | 40 ++- api/schedule/check_upgradable_plugin_task.py | 49 ++++ api/services/account_service.py | 12 + .../plugin/plugin_auto_upgrade_service.py | 87 +++++++ ...ss_tenant_plugin_autoupgrade_check_task.py | 166 ++++++++++++ docker/.env.example | 10 + docker/docker-compose-template.yaml | 19 ++ docker/docker-compose.yaml | 27 ++ .../common/option-list-item.tsx | 5 +- .../time-picker/header.tsx | 9 +- .../time-picker/index.tsx | 31 ++- .../time-picker/options.tsx | 4 +- .../base/date-and-time-picker/types.ts | 12 +- .../base/date-and-time-picker/utils/dayjs.ts | 12 + .../vender/line/general/search-menu.svg | 7 + .../assets/vender/system/auto-update-line.svg | 4 + web/app/components/base/icons/script.mjs | 2 +- .../icons/src/public/tracing/AliyunIcon.json | 245 +++++++++--------- .../icons/src/public/tracing/AliyunIcon.tsx | 14 +- .../src/public/tracing/AliyunIconBig.json | 184 ++++++++----- .../src/public/tracing/AliyunIconBig.tsx | 14 +- .../icons/src/public/tracing/WeaveIcon.tsx | 14 +- .../icons/src/public/tracing/WeaveIconBig.tsx | 14 +- .../base/icons/src/public/tracing/index.ts | 4 +- .../icons/src/vender/features/Citations.json | 2 +- .../vender/features/ContentModeration.json | 2 +- .../icons/src/vender/features/Document.json | 2 +- .../src/vender/features/FolderUpload.json | 2 +- .../src/vender/features/LoveMessage.json | 2 +- .../src/vender/features/MessageFast.json | 2 +- .../src/vender/features/Microphone01.json | 2 +- .../src/vender/features/TextToAudio.json | 2 +- .../src/vender/features/VirtualAssistant.json | 2 +- .../icons/src/vender/features/Vision.json | 2 +- .../line/alertsAndFeedback/AlertTriangle.json | 2 +- .../line/alertsAndFeedback/ThumbsDown.json | 2 +- .../line/alertsAndFeedback/ThumbsUp.json | 2 +- .../vender/line/arrows/ArrowNarrowLeft.json | 2 +- .../src/vender/line/arrows/ArrowUpRight.json | 2 +- .../vender/line/arrows/ChevronDownDouble.json | 2 +- .../src/vender/line/arrows/ChevronRight.json | 2 +- .../line/arrows/ChevronSelectorVertical.json | 2 +- .../src/vender/line/arrows/RefreshCcw01.json | 2 +- .../src/vender/line/arrows/RefreshCw05.json | 2 +- .../src/vender/line/arrows/ReverseLeft.json | 2 +- .../src/vender/line/communication/AiText.json | 2 +- .../vender/line/communication/ChatBot.json | 2 +- .../line/communication/ChatBotSlim.json | 2 +- .../vender/line/communication/CuteRobot.json | 2 +- .../communication/MessageCheckRemove.json | 2 +- .../line/communication/MessageFastPlus.json | 2 +- .../line/development/ArtificialBrain.json | 2 +- .../line/development/BarChartSquare02.json | 2 +- .../vender/line/development/BracketsX.json | 2 +- .../vender/line/development/CodeBrowser.json | 2 +- .../vender/line/development/Container.json | 2 +- .../vender/line/development/Database01.json | 2 +- .../vender/line/development/Database03.json | 2 +- .../vender/line/development/FileHeart02.json | 2 +- .../vender/line/development/GitBranch01.json | 2 +- .../line/development/PromptEngineering.json | 2 +- .../line/development/PuzzlePiece01.json | 2 +- .../line/development/TerminalSquare.json | 2 +- .../src/vender/line/development/Variable.json | 2 +- .../src/vender/line/development/Webhooks.json | 2 +- .../src/vender/line/editor/AlignLeft.json | 2 +- .../src/vender/line/editor/BezierCurve03.json | 2 +- .../src/vender/line/editor/Collapse.json | 2 +- .../icons/src/vender/line/editor/Colors.json | 2 +- .../vender/line/editor/ImageIndentLeft.json | 2 +- .../src/vender/line/editor/LeftIndent02.json | 2 +- .../vender/line/editor/LetterSpacing01.json | 2 +- .../src/vender/line/editor/TypeSquare.json | 2 +- .../src/vender/line/education/BookOpen01.json | 2 +- .../icons/src/vender/line/files/File02.json | 2 +- .../src/vender/line/files/FileArrow01.json | 2 +- .../src/vender/line/files/FileCheck02.json | 2 +- .../src/vender/line/files/FileDownload02.json | 2 +- .../src/vender/line/files/FilePlus01.json | 2 +- .../src/vender/line/files/FilePlus02.json | 2 +- .../icons/src/vender/line/files/FileText.json | 2 +- .../src/vender/line/files/FileUpload.json | 2 +- .../icons/src/vender/line/files/Folder.json | 2 +- .../line/financeAndECommerce/Balance.json | 2 +- .../financeAndECommerce/CoinsStacked01.json | 2 +- .../line/financeAndECommerce/GoldCoin.json | 2 +- .../line/financeAndECommerce/ReceiptList.json | 2 +- .../line/financeAndECommerce/Tag01.json | 2 +- .../line/financeAndECommerce/Tag03.json | 2 +- .../icons/src/vender/line/general/AtSign.json | 2 +- .../src/vender/line/general/Bookmark.json | 2 +- .../icons/src/vender/line/general/Check.json | 2 +- .../src/vender/line/general/CheckDone01.json | 2 +- .../vender/line/general/ChecklistSquare.json | 2 +- .../src/vender/line/general/DotsGrid.json | 2 +- .../icons/src/vender/line/general/Edit02.json | 2 +- .../icons/src/vender/line/general/Edit04.json | 2 +- .../icons/src/vender/line/general/Edit05.json | 2 +- .../icons/src/vender/line/general/Hash02.json | 2 +- .../src/vender/line/general/InfoCircle.json | 2 +- .../icons/src/vender/line/general/Link03.json | 2 +- .../vender/line/general/LinkExternal02.json | 2 +- .../src/vender/line/general/LogIn04.json | 2 +- .../src/vender/line/general/LogOut01.json | 2 +- .../src/vender/line/general/LogOut04.json | 2 +- .../icons/src/vender/line/general/Menu01.json | 2 +- .../icons/src/vender/line/general/Pin01.json | 2 +- .../icons/src/vender/line/general/Pin02.json | 2 +- .../icons/src/vender/line/general/Plus02.json | 2 +- .../src/vender/line/general/Refresh.json | 2 +- .../src/vender/line/general/SearchMenu.json | 77 ++++++ .../src/vender/line/general/SearchMenu.tsx | 20 ++ .../src/vender/line/general/Settings01.json | 2 +- .../src/vender/line/general/Settings04.json | 2 +- .../src/vender/line/general/Target04.json | 2 +- .../src/vender/line/general/Upload03.json | 2 +- .../vender/line/general/UploadCloud01.json | 2 +- .../base/icons/src/vender/line/general/X.json | 2 +- .../icons/src/vender/line/general/index.ts | 1 + .../src/vender/line/images/ImagePlus.json | 2 +- .../src/vender/line/layout/AlignLeft01.json | 2 +- .../src/vender/line/layout/AlignRight01.json | 2 +- .../icons/src/vender/line/layout/Grid01.json | 2 +- .../src/vender/line/layout/LayoutGrid02.json | 2 +- .../vender/line/mapsAndTravel/Globe01.json | 2 +- .../src/vender/line/mapsAndTravel/Route.json | 2 +- .../line/mediaAndDevices/Microphone01.json | 2 +- .../line/mediaAndDevices/PlayCircle.json | 2 +- .../vender/line/mediaAndDevices/SlidersH.json | 2 +- .../vender/line/mediaAndDevices/Speaker.json | 2 +- .../src/vender/line/mediaAndDevices/Stop.json | 2 +- .../line/mediaAndDevices/StopCircle.json | 2 +- .../icons/src/vender/line/others/Apps02.json | 2 +- .../icons/src/vender/line/others/BubbleX.json | 2 +- .../icons/src/vender/line/others/Colors.json | 2 +- .../src/vender/line/others/DragHandle.json | 2 +- .../icons/src/vender/line/others/Env.json | 2 +- .../src/vender/line/others/Exchange02.json | 2 +- .../src/vender/line/others/FileCode.json | 2 +- .../vender/line/others/GlobalVariable.json | 2 +- .../src/vender/line/others/Icon3Dots.json | 2 +- .../src/vender/line/others/LongArrowLeft.json | 2 +- .../vender/line/others/LongArrowRight.json | 2 +- .../src/vender/line/others/SearchMenu.json | 2 +- .../icons/src/vender/line/others/Tools.json | 2 +- .../src/vender/line/shapes/CubeOutline.json | 2 +- .../vender/line/time/ClockFastForward.json | 2 +- .../icons/src/vender/line/time/ClockPlay.json | 2 +- .../src/vender/line/time/ClockPlaySlim.json | 2 +- .../src/vender/line/time/ClockRefresh.json | 2 +- .../icons/src/vender/line/users/User01.json | 2 +- .../icons/src/vender/line/users/Users01.json | 2 +- .../src/vender/line/weather/Stars02.json | 2 +- .../icons/src/vender/other/AnthropicText.json | 2 +- .../icons/src/vender/other/Generator.json | 2 +- .../base/icons/src/vender/other/Group.json | 2 +- .../base/icons/src/vender/other/Mcp.json | 2 +- .../src/vender/other/NoToolPlaceholder.json | 2 +- .../base/icons/src/vender/other/Openai.json | 2 +- .../icons/src/vender/other/ReplayLine.json | 2 +- .../src/vender/plugin/BoxSparkleFill.json | 2 +- .../icons/src/vender/plugin/LeftCorner.json | 2 +- .../solid/FinanceAndECommerce/GoldCoin.json | 2 +- .../solid/FinanceAndECommerce/Scales02.json | 2 +- .../alertsAndFeedback/AlertTriangle.json | 2 +- .../src/vender/solid/arrows/ChevronDown.json | 2 +- .../src/vender/solid/arrows/HighPriority.json | 2 +- .../vender/solid/communication/AiText.json | 2 +- .../solid/communication/BubbleTextMod.json | 2 +- .../vender/solid/communication/ChatBot.json | 2 +- .../vender/solid/communication/CuteRobot.json | 2 +- .../vender/solid/communication/EditList.json | 2 +- .../solid/communication/ListSparkle.json | 2 +- .../src/vender/solid/communication/Logic.json | 2 +- .../communication/MessageDotsCircle.json | 2 +- .../solid/communication/MessageFast.json | 2 +- .../communication/MessageHeartCircle.json | 2 +- .../communication/MessageSmileSquare.json | 2 +- .../vender/solid/communication/Send03.json | 2 +- .../solid/development/ApiConnection.json | 2 +- .../solid/development/ApiConnectionMod.json | 2 +- .../solid/development/BarChartSquare02.json | 2 +- .../vender/solid/development/Container.json | 2 +- .../vender/solid/development/Database02.json | 2 +- .../vender/solid/development/Database03.json | 2 +- .../vender/solid/development/FileHeart02.json | 2 +- .../solid/development/PatternRecognition.json | 2 +- .../solid/development/PromptEngineering.json | 2 +- .../solid/development/PuzzlePiece01.json | 2 +- .../vender/solid/development/Semantic.json | 2 +- .../solid/development/TerminalSquare.json | 2 +- .../vender/solid/development/Variable02.json | 2 +- .../src/vender/solid/editor/Brush01.json | 2 +- .../src/vender/solid/editor/Citations.json | 2 +- .../icons/src/vender/solid/editor/Colors.json | 2 +- .../src/vender/solid/editor/Paragraph.json | 2 +- .../src/vender/solid/editor/TypeSquare.json | 2 +- .../src/vender/solid/education/Beaker02.json | 2 +- .../vender/solid/education/BubbleText.json | 2 +- .../src/vender/solid/education/Heart02.json | 2 +- .../src/vender/solid/education/Unblur.json | 2 +- .../icons/src/vender/solid/files/File05.json | 2 +- .../src/vender/solid/files/FileSearch02.json | 2 +- .../icons/src/vender/solid/files/FileZip.json | 2 +- .../icons/src/vender/solid/files/Folder.json | 2 +- .../vender/solid/general/AnswerTriangle.json | 2 +- .../solid/general/ArrowDownRoundFill.json | 2 +- .../src/vender/solid/general/CheckCircle.json | 2 +- .../src/vender/solid/general/CheckDone01.json | 2 +- .../src/vender/solid/general/Download02.json | 2 +- .../src/vender/solid/general/Edit03.json | 2 +- .../src/vender/solid/general/Edit04.json | 2 +- .../icons/src/vender/solid/general/Eye.json | 2 +- .../src/vender/solid/general/Github.json | 2 +- .../solid/general/MessageClockCircle.json | 2 +- .../src/vender/solid/general/PlusCircle.json | 2 +- .../solid/general/QuestionTriangle.json | 2 +- .../src/vender/solid/general/SearchMd.json | 2 +- .../src/vender/solid/general/Target04.json | 2 +- .../src/vender/solid/general/Tool03.json | 2 +- .../src/vender/solid/general/XCircle.json | 2 +- .../src/vender/solid/general/ZapFast.json | 2 +- .../src/vender/solid/general/ZapNarrow.json | 2 +- .../icons/src/vender/solid/layout/Grid01.json | 2 +- .../vender/solid/mapsAndTravel/Globe06.json | 2 +- .../src/vender/solid/mapsAndTravel/Route.json | 2 +- .../mediaAndDevices/AudioSupportIcon.json | 2 +- .../mediaAndDevices/DocumentSupportIcon.json | 2 +- .../solid/mediaAndDevices/MagicBox.json | 2 +- .../solid/mediaAndDevices/MagicEyes.json | 2 +- .../solid/mediaAndDevices/MagicWand.json | 2 +- .../solid/mediaAndDevices/Microphone01.json | 2 +- .../vender/solid/mediaAndDevices/Play.json | 2 +- .../vender/solid/mediaAndDevices/Robot.json | 2 +- .../solid/mediaAndDevices/Sliders02.json | 2 +- .../vender/solid/mediaAndDevices/Speaker.json | 2 +- .../solid/mediaAndDevices/StopCircle.json | 2 +- .../mediaAndDevices/VideoSupportIcon.json | 2 +- .../src/vender/solid/security/Lock01.json | 2 +- .../icons/src/vender/solid/shapes/Corner.json | 2 +- .../icons/src/vender/solid/shapes/Star04.json | 2 +- .../icons/src/vender/solid/shapes/Star06.json | 2 +- .../icons/src/vender/solid/users/User01.json | 2 +- .../src/vender/solid/users/UserEdit02.json | 2 +- .../icons/src/vender/solid/users/Users01.json | 2 +- .../src/vender/solid/users/UsersPlus.json | 2 +- .../src/vender/system/AutoUpdateLine.json | 37 +++ .../src/vender/system/AutoUpdateLine.tsx | 20 ++ .../base/icons/src/vender/system/index.ts | 1 + .../base/icons/src/vender/workflow/Agent.json | 2 +- .../icons/src/vender/workflow/Answer.json | 2 +- .../icons/src/vender/workflow/Assigner.json | 2 +- .../base/icons/src/vender/workflow/Code.json | 2 +- .../src/vender/workflow/DocsExtractor.json | 2 +- .../base/icons/src/vender/workflow/End.json | 2 +- .../base/icons/src/vender/workflow/Home.json | 2 +- .../base/icons/src/vender/workflow/Http.json | 2 +- .../icons/src/vender/workflow/IfElse.json | 2 +- .../icons/src/vender/workflow/Iteration.json | 2 +- .../src/vender/workflow/IterationStart.json | 2 +- .../base/icons/src/vender/workflow/Jinja.json | 2 +- .../vender/workflow/KnowledgeRetrieval.json | 2 +- .../icons/src/vender/workflow/ListFilter.json | 2 +- .../base/icons/src/vender/workflow/Llm.json | 2 +- .../base/icons/src/vender/workflow/Loop.json | 2 +- .../icons/src/vender/workflow/LoopEnd.json | 2 +- .../vender/workflow/ParameterExtractor.json | 2 +- .../vender/workflow/QuestionClassifier.json | 2 +- .../vender/workflow/TemplatingTransform.json | 2 +- .../icons/src/vender/workflow/VariableX.json | 2 +- .../src/vender/workflow/WindowCursor.json | 2 +- .../install-bundle/steps/install.tsx | 2 +- .../plugin-detail-panel/detail-header.tsx | 44 +++- .../components/plugins/plugin-page/index.tsx | 18 +- ...permission.ts => use-reference-setting.ts} | 22 +- .../auto-update-setting/config.ts | 9 + .../auto-update-setting/index.tsx | 185 +++++++++++++ .../no-data-placeholder.tsx | 31 +++ .../no-plugin-selected.tsx | 22 ++ .../auto-update-setting/plugins-picker.tsx | 69 +++++ .../auto-update-setting/plugins-selected.tsx | 29 +++ .../auto-update-setting/strategy-picker.tsx | 98 +++++++ .../auto-update-setting/tool-item.tsx | 45 ++++ .../auto-update-setting/tool-picker.tsx | 167 ++++++++++++ .../auto-update-setting/types.ts | 19 ++ .../auto-update-setting/utils.spec.ts | 14 + .../auto-update-setting/utils.ts | 37 +++ .../plugins/reference-setting-modal/label.tsx | 28 ++ .../modal.tsx | 31 ++- .../style.module.css | 0 web/app/components/plugins/types.ts | 6 + .../update-plugin/downgrade-warning.tsx | 35 +++ .../update-plugin/from-market-place.tsx | 100 ++++--- .../update-plugin/plugin-version-picker.tsx | 9 +- web/i18n/en-US/plugin.ts | 50 ++++ web/i18n/zh-Hans/plugin.ts | 50 ++++ web/service/use-plugins.ts | 65 ++++- 305 files changed, 2524 insertions(+), 581 deletions(-) create mode 100644 api/migrations/versions/2025_07_23_1508-8bcc02c9bd07_add_tenant_plugin_autoupgrade_table.py create mode 100644 api/schedule/check_upgradable_plugin_task.py create mode 100644 api/services/plugin/plugin_auto_upgrade_service.py create mode 100644 api/tasks/process_tenant_plugin_autoupgrade_check_task.py create mode 100644 web/app/components/base/icons/assets/vender/line/general/search-menu.svg create mode 100644 web/app/components/base/icons/assets/vender/system/auto-update-line.svg create mode 100644 web/app/components/base/icons/src/vender/line/general/SearchMenu.json create mode 100644 web/app/components/base/icons/src/vender/line/general/SearchMenu.tsx create mode 100644 web/app/components/base/icons/src/vender/system/AutoUpdateLine.json create mode 100644 web/app/components/base/icons/src/vender/system/AutoUpdateLine.tsx create mode 100644 web/app/components/base/icons/src/vender/system/index.ts rename web/app/components/plugins/plugin-page/{use-permission.ts => use-reference-setting.ts} (68%) create mode 100644 web/app/components/plugins/reference-setting-modal/auto-update-setting/config.ts create mode 100644 web/app/components/plugins/reference-setting-modal/auto-update-setting/index.tsx create mode 100644 web/app/components/plugins/reference-setting-modal/auto-update-setting/no-data-placeholder.tsx create mode 100644 web/app/components/plugins/reference-setting-modal/auto-update-setting/no-plugin-selected.tsx create mode 100644 web/app/components/plugins/reference-setting-modal/auto-update-setting/plugins-picker.tsx create mode 100644 web/app/components/plugins/reference-setting-modal/auto-update-setting/plugins-selected.tsx create mode 100644 web/app/components/plugins/reference-setting-modal/auto-update-setting/strategy-picker.tsx create mode 100644 web/app/components/plugins/reference-setting-modal/auto-update-setting/tool-item.tsx create mode 100644 web/app/components/plugins/reference-setting-modal/auto-update-setting/tool-picker.tsx create mode 100644 web/app/components/plugins/reference-setting-modal/auto-update-setting/types.ts create mode 100644 web/app/components/plugins/reference-setting-modal/auto-update-setting/utils.spec.ts create mode 100644 web/app/components/plugins/reference-setting-modal/auto-update-setting/utils.ts create mode 100644 web/app/components/plugins/reference-setting-modal/label.tsx rename web/app/components/plugins/{permission-setting-modal => reference-setting-modal}/modal.tsx (74%) rename web/app/components/plugins/{permission-setting-modal => reference-setting-modal}/style.module.css (100%) create mode 100644 web/app/components/plugins/update-plugin/downgrade-warning.tsx diff --git a/api/.env.example b/api/.env.example index daa0df535..80b1c12cd 100644 --- a/api/.env.example +++ b/api/.env.example @@ -471,6 +471,16 @@ APP_MAX_ACTIVE_REQUESTS=0 # Celery beat configuration CELERY_BEAT_SCHEDULER_TIME=1 +# Celery schedule tasks configuration +ENABLE_CLEAN_EMBEDDING_CACHE_TASK=false +ENABLE_CLEAN_UNUSED_DATASETS_TASK=false +ENABLE_CREATE_TIDB_SERVERLESS_TASK=false +ENABLE_UPDATE_TIDB_SERVERLESS_STATUS_TASK=false +ENABLE_CLEAN_MESSAGES=false +ENABLE_MAIL_CLEAN_DOCUMENT_NOTIFY_TASK=false +ENABLE_DATASETS_QUEUE_MONITOR=false +ENABLE_CHECK_UPGRADABLE_PLUGIN_TASK=true + # Position configuration POSITION_TOOL_PINS= POSITION_TOOL_INCLUDES= diff --git a/api/README.md b/api/README.md index 9308d5dc4..6ab923070 100644 --- a/api/README.md +++ b/api/README.md @@ -74,7 +74,12 @@ 10. If you need to handle and debug the async tasks (e.g. dataset importing and documents indexing), please start the worker service. ```bash - uv run celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace,app_deletion + uv run celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace,app_deletion,plugin + ``` + + Addition, if you want to debug the celery scheduled tasks, you can use the following command in another terminal: + ```bash + uv run celery -A app.celery beat ``` ## Testing diff --git a/api/configs/feature/__init__.py b/api/configs/feature/__init__.py index f1d529355..9f1646ea7 100644 --- a/api/configs/feature/__init__.py +++ b/api/configs/feature/__init__.py @@ -832,6 +832,41 @@ class CeleryBeatConfig(BaseSettings): ) +class CeleryScheduleTasksConfig(BaseSettings): + ENABLE_CLEAN_EMBEDDING_CACHE_TASK: bool = Field( + description="Enable clean embedding cache task", + default=False, + ) + ENABLE_CLEAN_UNUSED_DATASETS_TASK: bool = Field( + description="Enable clean unused datasets task", + default=False, + ) + ENABLE_CREATE_TIDB_SERVERLESS_TASK: bool = Field( + description="Enable create tidb service job task", + default=False, + ) + ENABLE_UPDATE_TIDB_SERVERLESS_STATUS_TASK: bool = Field( + description="Enable update tidb service job status task", + default=False, + ) + ENABLE_CLEAN_MESSAGES: bool = Field( + description="Enable clean messages task", + default=False, + ) + ENABLE_MAIL_CLEAN_DOCUMENT_NOTIFY_TASK: bool = Field( + description="Enable mail clean document notify task", + default=False, + ) + ENABLE_DATASETS_QUEUE_MONITOR: bool = Field( + description="Enable queue monitor task", + default=False, + ) + ENABLE_CHECK_UPGRADABLE_PLUGIN_TASK: bool = Field( + description="Enable check upgradable plugin task", + default=True, + ) + + class PositionConfig(BaseSettings): POSITION_PROVIDER_PINS: str = Field( description="Comma-separated list of pinned model providers", @@ -961,5 +996,6 @@ class FeatureConfig( # hosted services config HostedServiceConfig, CeleryBeatConfig, + CeleryScheduleTasksConfig, ): pass diff --git a/api/controllers/console/workspace/plugin.py b/api/controllers/console/workspace/plugin.py index c0a473482..09846d5c9 100644 --- a/api/controllers/console/workspace/plugin.py +++ b/api/controllers/console/workspace/plugin.py @@ -12,7 +12,8 @@ from controllers.console.wraps import account_initialization_required, setup_req from core.model_runtime.utils.encoders import jsonable_encoder from core.plugin.impl.exc import PluginDaemonClientSideError from libs.login import login_required -from models.account import TenantPluginPermission +from models.account import TenantPluginAutoUpgradeStrategy, TenantPluginPermission +from services.plugin.plugin_auto_upgrade_service import PluginAutoUpgradeService from services.plugin.plugin_parameter_service import PluginParameterService from services.plugin.plugin_permission_service import PluginPermissionService from services.plugin.plugin_service import PluginService @@ -534,6 +535,114 @@ class PluginFetchDynamicSelectOptionsApi(Resource): return jsonable_encoder({"options": options}) +class PluginChangePreferencesApi(Resource): + @setup_required + @login_required + @account_initialization_required + def post(self): + user = current_user + if not user.is_admin_or_owner: + raise Forbidden() + + req = reqparse.RequestParser() + req.add_argument("permission", type=dict, required=True, location="json") + req.add_argument("auto_upgrade", type=dict, required=True, location="json") + args = req.parse_args() + + tenant_id = user.current_tenant_id + + permission = args["permission"] + + install_permission = TenantPluginPermission.InstallPermission(permission.get("install_permission", "everyone")) + debug_permission = TenantPluginPermission.DebugPermission(permission.get("debug_permission", "everyone")) + + auto_upgrade = args["auto_upgrade"] + + strategy_setting = TenantPluginAutoUpgradeStrategy.StrategySetting( + auto_upgrade.get("strategy_setting", "fix_only") + ) + upgrade_time_of_day = auto_upgrade.get("upgrade_time_of_day", 0) + upgrade_mode = TenantPluginAutoUpgradeStrategy.UpgradeMode(auto_upgrade.get("upgrade_mode", "exclude")) + exclude_plugins = auto_upgrade.get("exclude_plugins", []) + include_plugins = auto_upgrade.get("include_plugins", []) + + # set permission + set_permission_result = PluginPermissionService.change_permission( + tenant_id, + install_permission, + debug_permission, + ) + if not set_permission_result: + return jsonable_encoder({"success": False, "message": "Failed to set permission"}) + + # set auto upgrade strategy + set_auto_upgrade_strategy_result = PluginAutoUpgradeService.change_strategy( + tenant_id, + strategy_setting, + upgrade_time_of_day, + upgrade_mode, + exclude_plugins, + include_plugins, + ) + if not set_auto_upgrade_strategy_result: + return jsonable_encoder({"success": False, "message": "Failed to set auto upgrade strategy"}) + + return jsonable_encoder({"success": True}) + + +class PluginFetchPreferencesApi(Resource): + @setup_required + @login_required + @account_initialization_required + def get(self): + tenant_id = current_user.current_tenant_id + + permission = PluginPermissionService.get_permission(tenant_id) + permission_dict = { + "install_permission": TenantPluginPermission.InstallPermission.EVERYONE, + "debug_permission": TenantPluginPermission.DebugPermission.EVERYONE, + } + + if permission: + permission_dict["install_permission"] = permission.install_permission + permission_dict["debug_permission"] = permission.debug_permission + + auto_upgrade = PluginAutoUpgradeService.get_strategy(tenant_id) + auto_upgrade_dict = { + "strategy_setting": TenantPluginAutoUpgradeStrategy.StrategySetting.DISABLED, + "upgrade_time_of_day": 0, + "upgrade_mode": TenantPluginAutoUpgradeStrategy.UpgradeMode.EXCLUDE, + "exclude_plugins": [], + "include_plugins": [], + } + + if auto_upgrade: + auto_upgrade_dict = { + "strategy_setting": auto_upgrade.strategy_setting, + "upgrade_time_of_day": auto_upgrade.upgrade_time_of_day, + "upgrade_mode": auto_upgrade.upgrade_mode, + "exclude_plugins": auto_upgrade.exclude_plugins, + "include_plugins": auto_upgrade.include_plugins, + } + + return jsonable_encoder({"permission": permission_dict, "auto_upgrade": auto_upgrade_dict}) + + +class PluginAutoUpgradeExcludePluginApi(Resource): + @setup_required + @login_required + @account_initialization_required + def post(self): + # exclude one single plugin + tenant_id = current_user.current_tenant_id + + req = reqparse.RequestParser() + req.add_argument("plugin_id", type=str, required=True, location="json") + args = req.parse_args() + + return jsonable_encoder({"success": PluginAutoUpgradeService.exclude_plugin(tenant_id, args["plugin_id"])}) + + api.add_resource(PluginDebuggingKeyApi, "/workspaces/current/plugin/debugging-key") api.add_resource(PluginListApi, "/workspaces/current/plugin/list") api.add_resource(PluginListLatestVersionsApi, "/workspaces/current/plugin/list/latest-versions") @@ -560,3 +669,7 @@ api.add_resource(PluginChangePermissionApi, "/workspaces/current/plugin/permissi api.add_resource(PluginFetchPermissionApi, "/workspaces/current/plugin/permission/fetch") api.add_resource(PluginFetchDynamicSelectOptionsApi, "/workspaces/current/plugin/parameters/dynamic-options") + +api.add_resource(PluginFetchPreferencesApi, "/workspaces/current/plugin/preferences/fetch") +api.add_resource(PluginChangePreferencesApi, "/workspaces/current/plugin/preferences/change") +api.add_resource(PluginAutoUpgradeExcludePluginApi, "/workspaces/current/plugin/preferences/autoupgrade/exclude") diff --git a/api/core/helper/marketplace.py b/api/core/helper/marketplace.py index 65bf4fc1d..fe3078923 100644 --- a/api/core/helper/marketplace.py +++ b/api/core/helper/marketplace.py @@ -25,9 +25,29 @@ def batch_fetch_plugin_manifests(plugin_ids: list[str]) -> Sequence[MarketplaceP url = str(marketplace_api_url / "api/v1/plugins/batch") response = requests.post(url, json={"plugin_ids": plugin_ids}) response.raise_for_status() + return [MarketplacePluginDeclaration(**plugin) for plugin in response.json()["data"]["plugins"]] +def batch_fetch_plugin_manifests_ignore_deserialization_error( + plugin_ids: list[str], +) -> Sequence[MarketplacePluginDeclaration]: + if len(plugin_ids) == 0: + return [] + + url = str(marketplace_api_url / "api/v1/plugins/batch") + response = requests.post(url, json={"plugin_ids": plugin_ids}) + response.raise_for_status() + result: list[MarketplacePluginDeclaration] = [] + for plugin in response.json()["data"]["plugins"]: + try: + result.append(MarketplacePluginDeclaration(**plugin)) + except Exception as e: + pass + + return result + + def record_install_plugin_event(plugin_unique_identifier: str): url = str(marketplace_api_url / "api/v1/stats/plugins/install_count") response = requests.post(url, json={"unique_identifier": plugin_unique_identifier}) diff --git a/api/docker/entrypoint.sh b/api/docker/entrypoint.sh index 18d4f4885..59d652c11 100755 --- a/api/docker/entrypoint.sh +++ b/api/docker/entrypoint.sh @@ -22,7 +22,7 @@ if [[ "${MODE}" == "worker" ]]; then exec celery -A app.celery worker -P ${CELERY_WORKER_CLASS:-gevent} $CONCURRENCY_OPTION \ --max-tasks-per-child ${MAX_TASK_PRE_CHILD:-50} --loglevel ${LOG_LEVEL:-INFO} \ - -Q ${CELERY_QUEUES:-dataset,mail,ops_trace,app_deletion} + -Q ${CELERY_QUEUES:-dataset,mail,ops_trace,app_deletion,plugin} elif [[ "${MODE}" == "beat" ]]; then exec celery -A app.celery beat --loglevel ${LOG_LEVEL:-INFO} diff --git a/api/extensions/ext_celery.py b/api/extensions/ext_celery.py index 6279b1ad3..2c2846ba2 100644 --- a/api/extensions/ext_celery.py +++ b/api/extensions/ext_celery.py @@ -64,49 +64,62 @@ def init_app(app: DifyApp) -> Celery: celery_app.set_default() app.extensions["celery"] = celery_app - imports = [ - "schedule.clean_embedding_cache_task", - "schedule.clean_unused_datasets_task", - "schedule.create_tidb_serverless_task", - "schedule.update_tidb_serverless_status_task", - "schedule.clean_messages", - "schedule.mail_clean_document_notify_task", - "schedule.queue_monitor_task", - ] + imports = [] day = dify_config.CELERY_BEAT_SCHEDULER_TIME - beat_schedule = { - "clean_embedding_cache_task": { + + # if you add a new task, please add the switch to CeleryScheduleTasksConfig + beat_schedule = {} + if dify_config.ENABLE_CLEAN_EMBEDDING_CACHE_TASK: + imports.append("schedule.clean_embedding_cache_task") + beat_schedule["clean_embedding_cache_task"] = { "task": "schedule.clean_embedding_cache_task.clean_embedding_cache_task", "schedule": timedelta(days=day), - }, - "clean_unused_datasets_task": { + } + if dify_config.ENABLE_CLEAN_UNUSED_DATASETS_TASK: + imports.append("schedule.clean_unused_datasets_task") + beat_schedule["clean_unused_datasets_task"] = { "task": "schedule.clean_unused_datasets_task.clean_unused_datasets_task", "schedule": timedelta(days=day), - }, - "create_tidb_serverless_task": { + } + if dify_config.ENABLE_CREATE_TIDB_SERVERLESS_TASK: + imports.append("schedule.create_tidb_serverless_task") + beat_schedule["create_tidb_serverless_task"] = { "task": "schedule.create_tidb_serverless_task.create_tidb_serverless_task", "schedule": crontab(minute="0", hour="*"), - }, - "update_tidb_serverless_status_task": { + } + if dify_config.ENABLE_UPDATE_TIDB_SERVERLESS_STATUS_TASK: + imports.append("schedule.update_tidb_serverless_status_task") + beat_schedule["update_tidb_serverless_status_task"] = { "task": "schedule.update_tidb_serverless_status_task.update_tidb_serverless_status_task", "schedule": timedelta(minutes=10), - }, - "clean_messages": { + } + if dify_config.ENABLE_CLEAN_MESSAGES: + imports.append("schedule.clean_messages") + beat_schedule["clean_messages"] = { "task": "schedule.clean_messages.clean_messages", "schedule": timedelta(days=day), - }, - # every Monday - "mail_clean_document_notify_task": { + } + if dify_config.ENABLE_MAIL_CLEAN_DOCUMENT_NOTIFY_TASK: + imports.append("schedule.mail_clean_document_notify_task") + beat_schedule["mail_clean_document_notify_task"] = { "task": "schedule.mail_clean_document_notify_task.mail_clean_document_notify_task", "schedule": crontab(minute="0", hour="10", day_of_week="1"), - }, - "datasets-queue-monitor": { + } + if dify_config.ENABLE_DATASETS_QUEUE_MONITOR: + imports.append("schedule.queue_monitor_task") + beat_schedule["datasets-queue-monitor"] = { "task": "schedule.queue_monitor_task.queue_monitor_task", "schedule": timedelta( minutes=dify_config.QUEUE_MONITOR_INTERVAL if dify_config.QUEUE_MONITOR_INTERVAL else 30 ), - }, - } + } + if dify_config.ENABLE_CHECK_UPGRADABLE_PLUGIN_TASK: + imports.append("schedule.check_upgradable_plugin_task") + beat_schedule["check_upgradable_plugin_task"] = { + "task": "schedule.check_upgradable_plugin_task.check_upgradable_plugin_task", + "schedule": crontab(minute="*/15"), + } + celery_app.conf.update(beat_schedule=beat_schedule, imports=imports) return celery_app diff --git a/api/migrations/versions/2025_07_23_1508-8bcc02c9bd07_add_tenant_plugin_autoupgrade_table.py b/api/migrations/versions/2025_07_23_1508-8bcc02c9bd07_add_tenant_plugin_autoupgrade_table.py new file mode 100644 index 000000000..4ff0402a9 --- /dev/null +++ b/api/migrations/versions/2025_07_23_1508-8bcc02c9bd07_add_tenant_plugin_autoupgrade_table.py @@ -0,0 +1,42 @@ +"""add_tenant_plugin_autoupgrade_table + +Revision ID: 8bcc02c9bd07 +Revises: 375fe79ead14 +Create Date: 2025-07-23 15:08:50.161441 + +""" +from alembic import op +import models as models +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = '8bcc02c9bd07' +down_revision = '375fe79ead14' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('tenant_plugin_auto_upgrade_strategies', + sa.Column('id', models.types.StringUUID(), server_default=sa.text('uuid_generate_v4()'), nullable=False), + sa.Column('tenant_id', models.types.StringUUID(), nullable=False), + sa.Column('strategy_setting', sa.String(length=16), server_default='fix_only', nullable=False), + sa.Column('upgrade_time_of_day', sa.Integer(), nullable=False), + sa.Column('upgrade_mode', sa.String(length=16), server_default='exclude', nullable=False), + sa.Column('exclude_plugins', sa.ARRAY(sa.String(length=255)), nullable=False), + sa.Column('include_plugins', sa.ARRAY(sa.String(length=255)), nullable=False), + sa.Column('created_at', sa.DateTime(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False), + sa.Column('updated_at', sa.DateTime(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False), + sa.PrimaryKeyConstraint('id', name='tenant_plugin_auto_upgrade_strategy_pkey'), + sa.UniqueConstraint('tenant_id', name='unique_tenant_plugin_auto_upgrade_strategy') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + + op.drop_table('tenant_plugin_auto_upgrade_strategies') + # ### end Alembic commands ### diff --git a/api/models/account.py b/api/models/account.py index 01bf9d5f7..01d1625db 100644 --- a/api/models/account.py +++ b/api/models/account.py @@ -297,6 +297,40 @@ class TenantPluginPermission(Base): ) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) - tenant_id: Mapped[str] = mapped_column(StringUUID) - install_permission: Mapped[InstallPermission] = mapped_column(db.String(16), server_default="everyone") - debug_permission: Mapped[DebugPermission] = mapped_column(db.String(16), server_default="noone") + tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) + install_permission: Mapped[InstallPermission] = mapped_column( + db.String(16), nullable=False, server_default="everyone" + ) + debug_permission: Mapped[DebugPermission] = mapped_column(db.String(16), nullable=False, server_default="noone") + + +class TenantPluginAutoUpgradeStrategy(Base): + class StrategySetting(enum.StrEnum): + DISABLED = "disabled" + FIX_ONLY = "fix_only" + LATEST = "latest" + + class UpgradeMode(enum.StrEnum): + ALL = "all" + PARTIAL = "partial" + EXCLUDE = "exclude" + + __tablename__ = "tenant_plugin_auto_upgrade_strategies" + __table_args__ = ( + db.PrimaryKeyConstraint("id", name="tenant_plugin_auto_upgrade_strategy_pkey"), + db.UniqueConstraint("tenant_id", name="unique_tenant_plugin_auto_upgrade_strategy"), + ) + + id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) + tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) + strategy_setting: Mapped[StrategySetting] = mapped_column(db.String(16), nullable=False, server_default="fix_only") + upgrade_time_of_day: Mapped[int] = mapped_column(db.Integer, nullable=False, default=0) # seconds of the day + upgrade_mode: Mapped[UpgradeMode] = mapped_column(db.String(16), nullable=False, server_default="exclude") + exclude_plugins: Mapped[list[str]] = mapped_column( + db.ARRAY(db.String(255)), nullable=False + ) # plugin_id (author/name) + include_plugins: Mapped[list[str]] = mapped_column( + db.ARRAY(db.String(255)), nullable=False + ) # plugin_id (author/name) + created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp()) + updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp()) diff --git a/api/schedule/check_upgradable_plugin_task.py b/api/schedule/check_upgradable_plugin_task.py new file mode 100644 index 000000000..c1d601882 --- /dev/null +++ b/api/schedule/check_upgradable_plugin_task.py @@ -0,0 +1,49 @@ +import time + +import click + +import app +from extensions.ext_database import db +from models.account import TenantPluginAutoUpgradeStrategy +from tasks.process_tenant_plugin_autoupgrade_check_task import process_tenant_plugin_autoupgrade_check_task + +AUTO_UPGRADE_MINIMAL_CHECKING_INTERVAL = 15 * 60 # 15 minutes + + +@app.celery.task(queue="plugin") +def check_upgradable_plugin_task(): + click.echo(click.style("Start check upgradable plugin.", fg="green")) + start_at = time.perf_counter() + + now_seconds_of_day = time.time() % 86400 - 30 # we assume the tz is UTC + click.echo(click.style("Now seconds of day: {}".format(now_seconds_of_day), fg="green")) + + strategies = ( + db.session.query(TenantPluginAutoUpgradeStrategy) + .filter( + TenantPluginAutoUpgradeStrategy.upgrade_time_of_day >= now_seconds_of_day, + TenantPluginAutoUpgradeStrategy.upgrade_time_of_day + < now_seconds_of_day + AUTO_UPGRADE_MINIMAL_CHECKING_INTERVAL, + TenantPluginAutoUpgradeStrategy.strategy_setting + != TenantPluginAutoUpgradeStrategy.StrategySetting.DISABLED, + ) + .all() + ) + + for strategy in strategies: + process_tenant_plugin_autoupgrade_check_task.delay( + strategy.tenant_id, + strategy.strategy_setting, + strategy.upgrade_time_of_day, + strategy.upgrade_mode, + strategy.exclude_plugins, + strategy.include_plugins, + ) + + end_at = time.perf_counter() + click.echo( + click.style( + "Checked upgradable plugin success latency: {}".format(end_at - start_at), + fg="green", + ) + ) diff --git a/api/services/account_service.py b/api/services/account_service.py index c88e70e38..4c4510395 100644 --- a/api/services/account_service.py +++ b/api/services/account_service.py @@ -29,6 +29,7 @@ from models.account import ( Tenant, TenantAccountJoin, TenantAccountRole, + TenantPluginAutoUpgradeStrategy, TenantStatus, ) from models.model import DifySetup @@ -828,6 +829,17 @@ class TenantService: db.session.add(tenant) db.session.commit() + plugin_upgrade_strategy = TenantPluginAutoUpgradeStrategy( + tenant_id=tenant.id, + strategy_setting=TenantPluginAutoUpgradeStrategy.StrategySetting.FIX_ONLY, + upgrade_time_of_day=0, + upgrade_mode=TenantPluginAutoUpgradeStrategy.UpgradeMode.EXCLUDE, + exclude_plugins=[], + include_plugins=[], + ) + db.session.add(plugin_upgrade_strategy) + db.session.commit() + tenant.encrypt_public_key = generate_key_pair(tenant.id) db.session.commit() return tenant diff --git a/api/services/plugin/plugin_auto_upgrade_service.py b/api/services/plugin/plugin_auto_upgrade_service.py new file mode 100644 index 000000000..377405044 --- /dev/null +++ b/api/services/plugin/plugin_auto_upgrade_service.py @@ -0,0 +1,87 @@ +from sqlalchemy.orm import Session + +from extensions.ext_database import db +from models.account import TenantPluginAutoUpgradeStrategy + + +class PluginAutoUpgradeService: + @staticmethod + def get_strategy(tenant_id: str) -> TenantPluginAutoUpgradeStrategy | None: + with Session(db.engine) as session: + return ( + session.query(TenantPluginAutoUpgradeStrategy) + .filter(TenantPluginAutoUpgradeStrategy.tenant_id == tenant_id) + .first() + ) + + @staticmethod + def change_strategy( + tenant_id: str, + strategy_setting: TenantPluginAutoUpgradeStrategy.StrategySetting, + upgrade_time_of_day: int, + upgrade_mode: TenantPluginAutoUpgradeStrategy.UpgradeMode, + exclude_plugins: list[str], + include_plugins: list[str], + ) -> bool: + with Session(db.engine) as session: + exist_strategy = ( + session.query(TenantPluginAutoUpgradeStrategy) + .filter(TenantPluginAutoUpgradeStrategy.tenant_id == tenant_id) + .first() + ) + if not exist_strategy: + strategy = TenantPluginAutoUpgradeStrategy( + tenant_id=tenant_id, + strategy_setting=strategy_setting, + upgrade_time_of_day=upgrade_time_of_day, + upgrade_mode=upgrade_mode, + exclude_plugins=exclude_plugins, + include_plugins=include_plugins, + ) + session.add(strategy) + else: + exist_strategy.strategy_setting = strategy_setting + exist_strategy.upgrade_time_of_day = upgrade_time_of_day + exist_strategy.upgrade_mode = upgrade_mode + exist_strategy.exclude_plugins = exclude_plugins + exist_strategy.include_plugins = include_plugins + + session.commit() + return True + + @staticmethod + def exclude_plugin(tenant_id: str, plugin_id: str) -> bool: + with Session(db.engine) as session: + exist_strategy = ( + session.query(TenantPluginAutoUpgradeStrategy) + .filter(TenantPluginAutoUpgradeStrategy.tenant_id == tenant_id) + .first() + ) + if not exist_strategy: + # create for this tenant + PluginAutoUpgradeService.change_strategy( + tenant_id, + TenantPluginAutoUpgradeStrategy.StrategySetting.FIX_ONLY, + 0, + TenantPluginAutoUpgradeStrategy.UpgradeMode.EXCLUDE, + [plugin_id], + [], + ) + return True + else: + if exist_strategy.upgrade_mode == TenantPluginAutoUpgradeStrategy.UpgradeMode.EXCLUDE: + if plugin_id not in exist_strategy.exclude_plugins: + new_exclude_plugins = exist_strategy.exclude_plugins.copy() + new_exclude_plugins.append(plugin_id) + exist_strategy.exclude_plugins = new_exclude_plugins + elif exist_strategy.upgrade_mode == TenantPluginAutoUpgradeStrategy.UpgradeMode.PARTIAL: + if plugin_id in exist_strategy.include_plugins: + new_include_plugins = exist_strategy.include_plugins.copy() + new_include_plugins.remove(plugin_id) + exist_strategy.include_plugins = new_include_plugins + elif exist_strategy.upgrade_mode == TenantPluginAutoUpgradeStrategy.UpgradeMode.ALL: + exist_strategy.upgrade_mode = TenantPluginAutoUpgradeStrategy.UpgradeMode.EXCLUDE + exist_strategy.exclude_plugins = [plugin_id] + + session.commit() + return True diff --git a/api/tasks/process_tenant_plugin_autoupgrade_check_task.py b/api/tasks/process_tenant_plugin_autoupgrade_check_task.py new file mode 100644 index 000000000..6fcdad052 --- /dev/null +++ b/api/tasks/process_tenant_plugin_autoupgrade_check_task.py @@ -0,0 +1,166 @@ +import traceback +import typing + +import click +from celery import shared_task # type: ignore + +from core.helper import marketplace +from core.helper.marketplace import MarketplacePluginDeclaration +from core.plugin.entities.plugin import PluginInstallationSource +from core.plugin.impl.plugin import PluginInstaller +from models.account import TenantPluginAutoUpgradeStrategy + +RETRY_TIMES_OF_ONE_PLUGIN_IN_ONE_TENANT = 3 + + +cached_plugin_manifests: dict[str, typing.Union[MarketplacePluginDeclaration, None]] = {} + + +def marketplace_batch_fetch_plugin_manifests( + plugin_ids_plain_list: list[str], +) -> list[MarketplacePluginDeclaration]: + global cached_plugin_manifests + # return marketplace.batch_fetch_plugin_manifests(plugin_ids_plain_list) + not_included_plugin_ids = [ + plugin_id for plugin_id in plugin_ids_plain_list if plugin_id not in cached_plugin_manifests + ] + if not_included_plugin_ids: + manifests = marketplace.batch_fetch_plugin_manifests_ignore_deserialization_error(not_included_plugin_ids) + for manifest in manifests: + cached_plugin_manifests[manifest.plugin_id] = manifest + + if ( + len(manifests) == 0 + ): # this indicates that the plugin not found in marketplace, should set None in cache to prevent future check + for plugin_id in not_included_plugin_ids: + cached_plugin_manifests[plugin_id] = None + + result: list[MarketplacePluginDeclaration] = [] + for plugin_id in plugin_ids_plain_list: + final_manifest = cached_plugin_manifests.get(plugin_id) + if final_manifest is not None: + result.append(final_manifest) + + return result + + +@shared_task(queue="plugin") +def process_tenant_plugin_autoupgrade_check_task( + tenant_id: str, + strategy_setting: TenantPluginAutoUpgradeStrategy.StrategySetting, + upgrade_time_of_day: int, + upgrade_mode: TenantPluginAutoUpgradeStrategy.UpgradeMode, + exclude_plugins: list[str], + include_plugins: list[str], +): + try: + manager = PluginInstaller() + + click.echo( + click.style( + "Checking upgradable plugin for tenant: {}".format(tenant_id), + fg="green", + ) + ) + + if strategy_setting == TenantPluginAutoUpgradeStrategy.StrategySetting.DISABLED: + return + + # get plugin_ids to check + plugin_ids: list[tuple[str, str, str]] = [] # plugin_id, version, unique_identifier + click.echo(click.style("Upgrade mode: {}".format(upgrade_mode), fg="green")) + + if upgrade_mode == TenantPluginAutoUpgradeStrategy.UpgradeMode.PARTIAL and include_plugins: + all_plugins = manager.list_plugins(tenant_id) + + for plugin in all_plugins: + if plugin.source == PluginInstallationSource.Marketplace and plugin.plugin_id in include_plugins: + plugin_ids.append( + ( + plugin.plugin_id, + plugin.version, + plugin.plugin_unique_identifier, + ) + ) + + elif upgrade_mode == TenantPluginAutoUpgradeStrategy.UpgradeMode.EXCLUDE: + # get all plugins and remove excluded plugins + all_plugins = manager.list_plugins(tenant_id) + plugin_ids = [ + (plugin.plugin_id, plugin.version, plugin.plugin_unique_identifier) + for plugin in all_plugins + if plugin.source == PluginInstallationSource.Marketplace and plugin.plugin_id not in exclude_plugins + ] + elif upgrade_mode == TenantPluginAutoUpgradeStrategy.UpgradeMode.ALL: + all_plugins = manager.list_plugins(tenant_id) + plugin_ids = [ + (plugin.plugin_id, plugin.version, plugin.plugin_unique_identifier) + for plugin in all_plugins + if plugin.source == PluginInstallationSource.Marketplace + ] + + if not plugin_ids: + return + + plugin_ids_plain_list = [plugin_id for plugin_id, _, _ in plugin_ids] + + manifests = marketplace_batch_fetch_plugin_manifests(plugin_ids_plain_list) + + if not manifests: + return + + for manifest in manifests: + for plugin_id, version, original_unique_identifier in plugin_ids: + if manifest.plugin_id != plugin_id: + continue + + try: + current_version = version + latest_version = manifest.latest_version + + def fix_only_checker(latest_version, current_version): + latest_version_tuple = tuple(int(val) for val in latest_version.split(".")) + current_version_tuple = tuple(int(val) for val in current_version.split(".")) + + if ( + latest_version_tuple[0] == current_version_tuple[0] + and latest_version_tuple[1] == current_version_tuple[1] + ): + return latest_version_tuple[2] != current_version_tuple[2] + return False + + version_checker = { + TenantPluginAutoUpgradeStrategy.StrategySetting.LATEST: lambda latest_version, + current_version: latest_version != current_version, + TenantPluginAutoUpgradeStrategy.StrategySetting.FIX_ONLY: fix_only_checker, + } + + if version_checker[strategy_setting](latest_version, current_version): + # execute upgrade + new_unique_identifier = manifest.latest_package_identifier + + marketplace.record_install_plugin_event(new_unique_identifier) + click.echo( + click.style( + "Upgrade plugin: {} -> {}".format(original_unique_identifier, new_unique_identifier), + fg="green", + ) + ) + task_start_resp = manager.upgrade_plugin( + tenant_id, + original_unique_identifier, + new_unique_identifier, + PluginInstallationSource.Marketplace, + { + "plugin_unique_identifier": new_unique_identifier, + }, + ) + except Exception as e: + click.echo(click.style("Error when upgrading plugin: {}".format(e), fg="red")) + traceback.print_exc() + break + + except Exception as e: + click.echo(click.style("Error when checking upgradable plugin: {}".format(e), fg="red")) + traceback.print_exc() + return diff --git a/docker/.env.example b/docker/.env.example index 6149f6316..88cc54473 100644 --- a/docker/.env.example +++ b/docker/.env.example @@ -1168,3 +1168,13 @@ QUEUE_MONITOR_THRESHOLD=200 QUEUE_MONITOR_ALERT_EMAILS= # Monitor interval in minutes, default is 30 minutes QUEUE_MONITOR_INTERVAL=30 + +# Celery schedule tasks configuration +ENABLE_CLEAN_EMBEDDING_CACHE_TASK=false +ENABLE_CLEAN_UNUSED_DATASETS_TASK=false +ENABLE_CREATE_TIDB_SERVERLESS_TASK=false +ENABLE_UPDATE_TIDB_SERVERLESS_STATUS_TASK=false +ENABLE_CLEAN_MESSAGES=false +ENABLE_MAIL_CLEAN_DOCUMENT_NOTIFY_TASK=false +ENABLE_DATASETS_QUEUE_MONITOR=false +ENABLE_CHECK_UPGRADABLE_PLUGIN_TASK=true diff --git a/docker/docker-compose-template.yaml b/docker/docker-compose-template.yaml index 7c1544acb..878268e76 100644 --- a/docker/docker-compose-template.yaml +++ b/docker/docker-compose-template.yaml @@ -55,6 +55,25 @@ services: - ssrf_proxy_network - default + # worker_beat service + # Celery beat for scheduling periodic tasks. + worker_beat: + image: langgenius/dify-api:1.5.0 + restart: always + environment: + # Use the shared environment variables. + <<: *shared-api-worker-env + # Startup mode, 'worker_beat' starts the Celery beat for scheduling periodic tasks. + MODE: beat + depends_on: + db: + condition: service_healthy + redis: + condition: service_started + networks: + - ssrf_proxy_network + - default + # Frontend web application. web: image: langgenius/dify-web:1.6.0 diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index 1271d6d46..f914d9225 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -527,6 +527,14 @@ x-shared-env: &shared-api-worker-env QUEUE_MONITOR_THRESHOLD: ${QUEUE_MONITOR_THRESHOLD:-200} QUEUE_MONITOR_ALERT_EMAILS: ${QUEUE_MONITOR_ALERT_EMAILS:-} QUEUE_MONITOR_INTERVAL: ${QUEUE_MONITOR_INTERVAL:-30} + ENABLE_CLEAN_EMBEDDING_CACHE_TASK: ${ENABLE_CLEAN_EMBEDDING_CACHE_TASK:-false} + ENABLE_CLEAN_UNUSED_DATASETS_TASK: ${ENABLE_CLEAN_UNUSED_DATASETS_TASK:-false} + ENABLE_CREATE_TIDB_SERVERLESS_TASK: ${ENABLE_CREATE_TIDB_SERVERLESS_TASK:-false} + ENABLE_UPDATE_TIDB_SERVERLESS_STATUS_TASK: ${ENABLE_UPDATE_TIDB_SERVERLESS_STATUS_TASK:-false} + ENABLE_CLEAN_MESSAGES: ${ENABLE_CLEAN_MESSAGES:-false} + ENABLE_MAIL_CLEAN_DOCUMENT_NOTIFY_TASK: ${ENABLE_MAIL_CLEAN_DOCUMENT_NOTIFY_TASK:-false} + ENABLE_DATASETS_QUEUE_MONITOR: ${ENABLE_DATASETS_QUEUE_MONITOR:-false} + ENABLE_CHECK_UPGRADABLE_PLUGIN_TASK: ${ENABLE_CHECK_UPGRADABLE_PLUGIN_TASK:-true} services: # API service @@ -584,6 +592,25 @@ services: - ssrf_proxy_network - default + # worker_beat service + # Celery beat for scheduling periodic tasks. + worker_beat: + image: langgenius/dify-api:1.5.0 + restart: always + environment: + # Use the shared environment variables. + <<: *shared-api-worker-env + # Startup mode, 'worker_beat' starts the Celery beat for scheduling periodic tasks. + MODE: beat + depends_on: + db: + condition: service_healthy + redis: + condition: service_started + networks: + - ssrf_proxy_network + - default + # Frontend web application. web: image: langgenius/dify-web:1.6.0 diff --git a/web/app/components/base/date-and-time-picker/common/option-list-item.tsx b/web/app/components/base/date-and-time-picker/common/option-list-item.tsx index d11a6e9e8..8c2c8d82f 100644 --- a/web/app/components/base/date-and-time-picker/common/option-list-item.tsx +++ b/web/app/components/base/date-and-time-picker/common/option-list-item.tsx @@ -4,18 +4,21 @@ import cn from '@/utils/classnames' type OptionListItemProps = { isSelected: boolean onClick: () => void + noAutoScroll?: boolean } & React.LiHTMLAttributes const OptionListItem: FC = ({ isSelected, onClick, + noAutoScroll, children, }) => { const listItemRef = useRef(null) useEffect(() => { - if (isSelected) + if (isSelected && !noAutoScroll) listItemRef.current?.scrollIntoView({ behavior: 'instant' }) + // eslint-disable-next-line react-hooks/exhaustive-deps }, []) return ( diff --git a/web/app/components/base/date-and-time-picker/time-picker/header.tsx b/web/app/components/base/date-and-time-picker/time-picker/header.tsx index 3d85b2ea4..dc6b56f74 100644 --- a/web/app/components/base/date-and-time-picker/time-picker/header.tsx +++ b/web/app/components/base/date-and-time-picker/time-picker/header.tsx @@ -1,13 +1,18 @@ import React from 'react' import { useTranslation } from 'react-i18next' -const Header = () => { +type Props = { + title?: string +} +const Header = ({ + title, +}: Props) => { const { t } = useTranslation() return (
- {t('time.title.pickTime')} + {title || t('time.title.pickTime')}
) diff --git a/web/app/components/base/date-and-time-picker/time-picker/index.tsx b/web/app/components/base/date-and-time-picker/time-picker/index.tsx index a5e666d63..d49310666 100644 --- a/web/app/components/base/date-and-time-picker/time-picker/index.tsx +++ b/web/app/components/base/date-and-time-picker/time-picker/index.tsx @@ -20,6 +20,9 @@ const TimePicker = ({ onChange, onClear, renderTrigger, + title, + minuteFilter, + popupClassName, }: TimePickerProps) => { const { t } = useTranslation() const [isOpen, setIsOpen] = useState(false) @@ -108,6 +111,15 @@ const TimePicker = ({ const displayValue = value?.format(timeFormat) || '' const placeholderDate = isOpen && selectedTime ? selectedTime.format(timeFormat) : (placeholder || t('time.defaultPlaceholder')) + const inputElem = ( + + ) return ( - {renderTrigger ? (renderTrigger()) : ( + {renderTrigger ? (renderTrigger({ + inputElem, + onClick: handleClickTrigger, + isOpen, + })) : (
- + {inputElem} )} - +
{/* Header */} -
+
{/* Time Options */} = ({ selectedTime, + minuteFilter, handleSelectHour, handleSelectMinute, handleSelectPeriod, @@ -33,7 +34,7 @@ const Options: FC = ({ {/* Minute */}
    { - minuteOptions.map((minute) => { + (minuteFilter ? minuteFilter(minuteOptions) : minuteOptions).map((minute) => { const isSelected = selectedTime?.format('mm') === minute return ( = ({ key={period} isSelected={isSelected} onClick={handleSelectPeriod.bind(null, period)} + noAutoScroll // if choose PM which would hide(scrolled) AM that may make user confused that there's no am. > {period} diff --git a/web/app/components/base/date-and-time-picker/types.ts b/web/app/components/base/date-and-time-picker/types.ts index 214c0f011..4ac01c142 100644 --- a/web/app/components/base/date-and-time-picker/types.ts +++ b/web/app/components/base/date-and-time-picker/types.ts @@ -28,6 +28,7 @@ export type DatePickerProps = { onClear: () => void triggerWrapClassName?: string renderTrigger?: (props: TriggerProps) => React.ReactNode + minuteFilter?: (minutes: string[]) => string[] popupZIndexClassname?: string } @@ -47,13 +48,21 @@ export type DatePickerFooterProps = { handleConfirmDate: () => void } +export type TriggerParams = { + isOpen: boolean + inputElem: React.ReactNode + onClick: (e: React.MouseEvent) => void +} export type TimePickerProps = { value: Dayjs | undefined timezone?: string placeholder?: string onChange: (date: Dayjs | undefined) => void onClear: () => void - renderTrigger?: () => React.ReactNode + renderTrigger?: (props: TriggerParams) => React.ReactNode + title?: string + minuteFilter?: (minutes: string[]) => string[] + popupClassName?: string } export type TimePickerFooterProps = { @@ -81,6 +90,7 @@ export type CalendarItemProps = { export type TimeOptionsProps = { selectedTime: Dayjs | undefined + minuteFilter?: (minutes: string[]) => string[] handleSelectHour: (hour: string) => void handleSelectMinute: (minute: string) => void handleSelectPeriod: (period: Period) => void diff --git a/web/app/components/base/date-and-time-picker/utils/dayjs.ts b/web/app/components/base/date-and-time-picker/utils/dayjs.ts index 0928fa5d5..cdc392419 100644 --- a/web/app/components/base/date-and-time-picker/utils/dayjs.ts +++ b/web/app/components/base/date-and-time-picker/utils/dayjs.ts @@ -2,6 +2,7 @@ import dayjs, { type Dayjs } from 'dayjs' import type { Day } from '../types' import utc from 'dayjs/plugin/utc' import timezone from 'dayjs/plugin/timezone' +import tz from '@/utils/timezone.json' dayjs.extend(utc) dayjs.extend(timezone) @@ -78,3 +79,14 @@ export const getHourIn12Hour = (date: Dayjs) => { export const getDateWithTimezone = (props: { date?: Dayjs, timezone?: string }) => { return props.date ? dayjs.tz(props.date, props.timezone) : dayjs().tz(props.timezone) } + +// Asia/Shanghai -> UTC+8 +const DEFAULT_OFFSET_STR = 'UTC+0' +export const convertTimezoneToOffsetStr = (timezone?: string) => { + if (!timezone) + return DEFAULT_OFFSET_STR + const tzItem = tz.find(item => item.value === timezone) + if(!tzItem) + return DEFAULT_OFFSET_STR + return `UTC${tzItem.name.charAt(0)}${tzItem.name.charAt(2)}` +} diff --git a/web/app/components/base/icons/assets/vender/line/general/search-menu.svg b/web/app/components/base/icons/assets/vender/line/general/search-menu.svg new file mode 100644 index 000000000..f61f69f4b --- /dev/null +++ b/web/app/components/base/icons/assets/vender/line/general/search-menu.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/web/app/components/base/icons/assets/vender/system/auto-update-line.svg b/web/app/components/base/icons/assets/vender/system/auto-update-line.svg new file mode 100644 index 000000000..c6bff7840 --- /dev/null +++ b/web/app/components/base/icons/assets/vender/system/auto-update-line.svg @@ -0,0 +1,4 @@ + + + + diff --git a/web/app/components/base/icons/script.mjs b/web/app/components/base/icons/script.mjs index 7f9d7b73a..1b5994ede 100644 --- a/web/app/components/base/icons/script.mjs +++ b/web/app/components/base/icons/script.mjs @@ -75,7 +75,7 @@ Icon.displayName = '<%= svgName %>' export default Icon `.trim()) - await writeFile(path.resolve(currentPath, `${fileName}.json`), JSON.stringify(svgData, '', '\t')) + await writeFile(path.resolve(currentPath, `${fileName}.json`), `${JSON.stringify(svgData, '', '\t')}\n`) await writeFile(path.resolve(currentPath, `${fileName}.tsx`), `${componentRender({ svgName: fileName })}\n`) const indexingRender = template(` diff --git a/web/app/components/base/icons/src/public/tracing/AliyunIcon.json b/web/app/components/base/icons/src/public/tracing/AliyunIcon.json index 5cbb52c23..9a0b89f20 100644 --- a/web/app/components/base/icons/src/public/tracing/AliyunIcon.json +++ b/web/app/components/base/icons/src/public/tracing/AliyunIcon.json @@ -1,118 +1,131 @@ { - "icon": { - "type": "element", - "isRootNode": true, - "name": "svg", - "attributes": { - "xmlns": "http://www.w3.org/2000/svg", - "xmlns:xlink": "http://www.w3.org/1999/xlink", - "fill": "none", - "version": "1.1", - "width": "65", - "height": "16", - "viewBox": "0 0 65 16" - }, - "children": [ - { - "type": "element", - "name": "defs", - "children": [ - { - "type": "element", - "name": "clipPath", - "attributes": { - "id": "master_svg0_42_34281" - }, - "children": [ - { - "type": "element", - "name": "rect", - "attributes": { - "x": "0", - "y": "0", - "width": "19", - "height": "16", - "rx": "0" - } - } - ] - } - ] - }, - { - "type": "element", - "name": "g", - "children": [ - { - "type": "element", - "name": "g", - "attributes": { - "clip-path": "url(#master_svg0_42_34281)" - }, - "children": [ - { - "type": "element", - "name": "g", - "children": [ - { - "type": "element", - "name": "g", - "children": [ - { - "type": "element", - "name": "path", - "attributes": { - "d": "M4.06862,14.6667C3.79213,14.6667,3.45463,14.5688,3.05614,14.373C2.97908,14.3351,2.92692,14.3105,2.89968,14.2992C2.33193,14.0628,1.82911,13.7294,1.39123,13.2989C0.463742,12.3871,0,11.2874,0,10C0,8.71258,0.463742,7.61293,1.39123,6.70107C2.16172,5.94358,3.06404,5.50073,4.09819,5.37252C4.23172,3.98276,4.81755,2.77756,5.85569,1.75693C7.04708,0.585642,8.4857,0,10.1716,0C11.5256,0,12.743,0.396982,13.8239,1.19095C14.8847,1.97019,15.61,2.97855,16,4.21604L14.7045,4.61063C14.4016,3.64918,13.8374,2.86532,13.0121,2.25905C12.1719,1.64191,11.2251,1.33333,10.1716,1.33333C8.8602,1.33333,7.74124,1.7888,6.81467,2.69974C5.88811,3.61067,5.42483,4.71076,5.42483,6L5.42483,6.66667L4.74673,6.66667C3.81172,6.66667,3.01288,6.99242,2.35021,7.64393C1.68754,8.2954,1.35621,9.08076,1.35621,10C1.35621,10.9192,1.68754,11.7046,2.35021,12.3561C2.66354,12.6641,3.02298,12.9026,3.42852,13.0714C3.48193,13.0937,3.55988,13.13,3.66237,13.1803C3.87004,13.2823,4.00545,13.3333,4.06862,13.3333L4.06862,14.6667Z", - "fill-rule": "evenodd", - "fill": "#FF6A00", - "fill-opacity": "1" - } - } - ] - }, - { - "type": "element", - "name": "g", - "children": [ - { - "type": "element", - "name": "path", - "attributes": { - "d": "M13.458613505859375,7.779393492279053C12.975613505859375,7.717463492279053,12.484813505859375,7.686503492279053,11.993983505859376,7.686503492279053C11.152583505859376,7.686503492279053,10.303403505859375,7.779393492279053,9.493183505859374,7.941943492279053C8.682953505859375,8.104503492279052,7.903893505859375,8.359943492279053,7.155983505859375,8.654083492279053C6.657383505859375,8.870823492279053,6.158783505859375,9.128843492279053,5.660181505859375,9.428153492279053C5.332974751859375,9.621673492279053,5.239486705859375,10.070633492279054,5.434253505859375,10.395743492279053L7.413073505859375,13.298533492279052C7.639003505859375,13.623603492279052,8.090863505859375,13.716463492279052,8.418073505859375,13.523003492279052C8.547913505859375,13.435263492279052,8.763453505859374,13.326893492279053,9.064693505859374,13.197863492279053C9.516553505859374,13.004333492279052,9.976203505859374,12.872733492279053,10.459223505859375,12.779863492279052C10.942243505859375,12.679263492279052,11.433053505859375,12.617333492279052,11.955023505859375,12.617333492279052L13.380683505859375,7.810353492279052L13.458613505859375,7.779393492279053ZM15.273813505859374,8.135463492279053L15.016753505859375,5.333333492279053L13.458613505859375,7.787133492279053C13.817013505859375,7.818093492279052,14.144213505859375,7.880023492279053,14.494743505859375,7.949683492279053C14.494743505859375,7.944523492279053,14.754433505859375,8.006453492279054,15.273813505859374,8.135463492279053ZM12.064083505859376,12.648273492279053L11.378523505859375,14.970463492279054L12.515943505859376,16.00003349227905L14.074083505859376,15.643933492279054L14.525943505859376,13.027603492279052C14.198743505859374,12.934663492279054,13.879283505859375,12.834063492279054,13.552083505859375,12.772133492279053C13.069083505859375,12.717933492279052,12.578283505859375,12.648273492279053,12.064083505859376,12.648273492279053ZM18.327743505859374,9.428153492279053C17.829143505859374,9.128843492279053,17.330543505859374,8.870823492279053,16.831943505859375,8.654083492279053C16.348943505859374,8.460573492279053,15.826943505859376,8.267053492279054,15.305013505859375,8.135463492279053L15.305013505859375,8.267053492279054L14.463613505859374,13.043063492279053C14.596083505859376,13.105003492279053,14.759683505859375,13.135933492279053,14.884283505859376,13.205603492279053C15.185523505859376,13.334623492279052,15.401043505859375,13.443003492279052,15.530943505859375,13.530733492279053C15.858143505859376,13.724263492279054,16.341143505859375,13.623603492279052,16.535943505859375,13.306263492279053L18.514743505859375,10.403483492279053C18.779643505859376,10.039673492279054,18.686143505859377,9.621673492279053,18.327743505859374,9.428153492279053Z", - "fill": "#FF6A00", - "fill-opacity": "1" - } - } - ] - } - ] - } - ] - }, - { - "type": "element", - "name": "g", - "children": [ - { - "type": "element", - "name": "g", - "children": [ - { - "type": "element", - "name": "path", - "attributes": { - "d": "M25.044,2.668L34.676,2.668L34.676,4.04L25.044,4.04L25.044,2.668ZM29.958,7.82Q29.258,9.066,28.355,10.41Q27.451999999999998,11.754,26.92,12.3L32.506,11.782Q31.442,10.158,30.84,9.346L32.058,8.562000000000001Q32.786,9.5,33.843,11.012Q34.9,12.524,35.516,13.546L34.214,14.526Q33.891999999999996,13.966,33.346000000000004,13.098Q32.016,13.182,29.734,13.378Q27.451999999999998,13.574,25.87,13.742L25.31,13.812L24.834,13.882L24.414,12.468Q24.708,12.37,24.862000000000002,12.265Q25.016,12.16,25.121,12.069Q25.226,11.978,25.268,11.936Q25.912,11.32,26.724,10.165Q27.536,9.01,28.208,7.82L23.854,7.82L23.854,6.434L35.866,6.434L35.866,7.82L29.958,7.82ZM42.656,7.414L42.656,8.576L41.354,8.576L41.354,1.814L42.656,1.87L42.656,7.036Q43.314,5.846,43.888000000000005,4.369Q44.462,2.892,44.714,1.6600000000000001L46.086,1.981999Q45.96,2.612,45.722,3.41L49.6,3.41L49.6,4.74L45.274,4.74Q44.616,6.56,43.706,8.128L42.656,7.414ZM38.596000000000004,2.346L39.884,2.402L39.884,8.212L38.596000000000004,8.212L38.596000000000004,2.346ZM46.184,4.964Q46.688,5.356,47.5,6.175Q48.312,6.994,48.788,7.582L47.751999999999995,8.59Q47.346000000000004,8.072,46.576,7.274Q45.806,6.476,45.204,5.902L46.184,4.964ZM48.41,9.01L48.41,12.706L49.894,12.706L49.894,13.966L37.391999999999996,13.966L37.391999999999996,12.706L38.848,12.706L38.848,9.01L48.41,9.01ZM41.676,10.256L40.164,10.256L40.164,12.706L41.676,12.706L41.676,10.256ZM42.908,12.706L44.364000000000004,12.706L44.364000000000004,10.256L42.908,10.256L42.908,12.706ZM45.582,12.706L47.108000000000004,12.706L47.108000000000004,10.256L45.582,10.256L45.582,12.706ZM54.906,7.456L55.116,8.394L54.178,8.814L54.178,12.818Q54.178,13.434,54.031,13.735Q53.884,14.036,53.534,14.162Q53.184,14.288,52.456,14.358L51.867999999999995,14.414L51.476,13.084L52.162,13.028Q52.512,13,52.652,12.958Q52.792,12.916,52.841,12.797Q52.89,12.678,52.89,12.384L52.89,9.36Q51.980000000000004,9.724,51.322,9.948L51.013999999999996,8.576Q51.798,8.324,52.89,7.876L52.89,5.524L51.42,5.524L51.42,4.166L52.89,4.166L52.89,1.7579989999999999L54.178,1.814L54.178,4.166L55.214,4.166L55.214,5.524L54.178,5.524L54.178,7.316L54.808,7.022L54.906,7.456ZM56.894,4.5440000000000005L56.894,6.098L55.564,6.098L55.564,3.256L58.686,3.256Q58.42,2.346,58.266,1.9260000000000002L59.624,1.7579989999999999Q59.848,2.276,60.142,3.256L63.25,3.256L63.25,6.098L61.962,6.098L61.962,4.5440000000000005L56.894,4.5440000000000005ZM59.008,6.322Q58.392,6.938,57.685,7.512Q56.978,8.086,55.956,8.841999999999999L55.242,7.764Q56.824,6.728,58.126,5.37L59.008,6.322ZM60.422,5.37Q61.024,5.776,62.095,6.581Q63.166,7.386,63.656,7.806L62.942,8.982Q62.368,8.45,61.332,7.652Q60.296,6.854,59.666,6.434L60.422,5.37ZM62.592,10.256L60.044,10.256L60.044,12.566L63.572,12.566L63.572,13.826L55.144,13.826L55.144,12.566L58.63,12.566L58.63,10.256L56.054,10.256L56.054,8.982L62.592,8.982L62.592,10.256Z", - "fill": "#FF6A00", - "fill-opacity": "1" - } - } - ] - } - ] - } - ] - } - ] - }, - "name": "AliyunIcon" + "icon": { + "type": "element", + "isRootNode": true, + "name": "svg", + "attributes": { + "xmlns": "http://www.w3.org/2000/svg", + "xmlns:xlink": "http://www.w3.org/1999/xlink", + "fill": "none", + "version": "1.1", + "width": "106", + "height": "16", + "viewBox": "0 0 106 16" + }, + "children": [ + { + "type": "element", + "name": "defs", + "attributes": {}, + "children": [ + { + "type": "element", + "name": "clipPath", + "attributes": { + "id": "master_svg0_36_00924" + }, + "children": [ + { + "type": "element", + "name": "rect", + "attributes": { + "x": "0", + "y": "0", + "width": "19", + "height": "16", + "rx": "0" + }, + "children": [] + } + ] + } + ] + }, + { + "type": "element", + "name": "g", + "attributes": {}, + "children": [ + { + "type": "element", + "name": "g", + "attributes": { + "clip-path": "url(#master_svg0_36_00924)" + }, + "children": [ + { + "type": "element", + "name": "g", + "attributes": {}, + "children": [ + { + "type": "element", + "name": "g", + "attributes": {}, + "children": [ + { + "type": "element", + "name": "path", + "attributes": { + "d": "M4.06862,14.6667C3.79213,14.6667,3.45463,14.5688,3.05614,14.373C2.97908,14.3351,2.92692,14.3105,2.89968,14.2992C2.33193,14.0628,1.82911,13.7294,1.39123,13.2989C0.463742,12.3871,0,11.2874,0,10C0,8.71258,0.463742,7.61293,1.39123,6.70107C2.16172,5.94358,3.06404,5.50073,4.09819,5.37252C4.23172,3.98276,4.81755,2.77756,5.85569,1.75693C7.04708,0.585642,8.4857,0,10.1716,0C11.5256,0,12.743,0.396982,13.8239,1.19095C14.8847,1.97019,15.61,2.97855,16,4.21604L14.7045,4.61063C14.4016,3.64918,13.8374,2.86532,13.0121,2.25905C12.1719,1.64191,11.2251,1.33333,10.1716,1.33333C8.8602,1.33333,7.74124,1.7888,6.81467,2.69974C5.88811,3.61067,5.42483,4.71076,5.42483,6L5.42483,6.66667L4.74673,6.66667C3.81172,6.66667,3.01288,6.99242,2.35021,7.64393C1.68754,8.2954,1.35621,9.08076,1.35621,10C1.35621,10.9192,1.68754,11.7046,2.35021,12.3561C2.66354,12.6641,3.02298,12.9026,3.42852,13.0714C3.48193,13.0937,3.55988,13.13,3.66237,13.1803C3.87004,13.2823,4.00545,13.3333,4.06862,13.3333L4.06862,14.6667Z", + "fill-rule": "evenodd", + "fill": "#000000", + "fill-opacity": "1", + "style": "mix-blend-mode:passthrough" + }, + "children": [] + } + ] + }, + { + "type": "element", + "name": "g", + "attributes": {}, + "children": [ + { + "type": "element", + "name": "path", + "attributes": { + "d": "M13.458613505859375,7.779393492279053C12.975613505859375,7.717463492279053,12.484813505859375,7.686503492279053,11.993983505859376,7.686503492279053C11.152583505859376,7.686503492279053,10.303403505859375,7.779393492279053,9.493183505859374,7.941943492279053C8.682953505859375,8.104503492279052,7.903893505859375,8.359943492279053,7.155983505859375,8.654083492279053C6.657383505859375,8.870823492279053,6.158783505859375,9.128843492279053,5.660181505859375,9.428153492279053C5.332974751859375,9.621673492279053,5.239486705859375,10.070633492279054,5.434253505859375,10.395743492279053L7.413073505859375,13.298533492279052C7.639003505859375,13.623603492279052,8.090863505859375,13.716463492279052,8.418073505859375,13.523003492279052C8.547913505859375,13.435263492279052,8.763453505859374,13.326893492279053,9.064693505859374,13.197863492279053C9.516553505859374,13.004333492279052,9.976203505859374,12.872733492279053,10.459223505859375,12.779863492279052C10.942243505859375,12.679263492279052,11.433053505859375,12.617333492279052,11.955023505859375,12.617333492279052L13.380683505859375,7.810353492279052L13.458613505859375,7.779393492279053ZM15.273813505859374,8.135463492279053L15.016753505859375,5.333333492279053L13.458613505859375,7.787133492279053C13.817013505859375,7.818093492279052,14.144213505859375,7.880023492279053,14.494743505859375,7.949683492279053C14.494743505859375,7.944523492279053,14.754433505859375,8.006453492279054,15.273813505859374,8.135463492279053ZM12.064083505859376,12.648273492279053L11.378523505859375,14.970463492279054L12.515943505859376,16.00003349227905L14.074083505859376,15.643933492279054L14.525943505859376,13.027603492279052C14.198743505859374,12.934663492279054,13.879283505859375,12.834063492279054,13.552083505859375,12.772133492279053C13.069083505859375,12.717933492279052,12.578283505859375,12.648273492279053,12.064083505859376,12.648273492279053ZM18.327743505859374,9.428153492279053C17.829143505859374,9.128843492279053,17.330543505859374,8.870823492279053,16.831943505859375,8.654083492279053C16.348943505859374,8.460573492279053,15.826943505859376,8.267053492279054,15.305013505859375,8.135463492279053L15.305013505859375,8.267053492279054L14.463613505859374,13.043063492279053C14.596083505859376,13.105003492279053,14.759683505859375,13.135933492279053,14.884283505859376,13.205603492279053C15.185523505859376,13.334623492279052,15.401043505859375,13.443003492279052,15.530943505859375,13.530733492279053C15.858143505859376,13.724263492279054,16.341143505859375,13.623603492279052,16.535943505859375,13.306263492279053L18.514743505859375,10.403483492279053C18.779643505859376,10.039673492279054,18.686143505859377,9.621673492279053,18.327743505859374,9.428153492279053Z", + "fill": "#000000", + "fill-opacity": "1", + "style": "mix-blend-mode:passthrough" + }, + "children": [] + } + ] + } + ] + } + ] + }, + { + "type": "element", + "name": "g", + "attributes": {}, + "children": [ + { + "type": "element", + "name": "g", + "attributes": {}, + "children": [ + { + "type": "element", + "name": "path", + "attributes": { + "d": "M36.174,12.958L35.278,14.358Q31.344,11.964,29.958,8.884Q29.258,10.48,27.9,11.81Q26.542,13.14,24.624,14.372L23.644,12.986Q28.642,10.186,29.034,6.378L24.12,6.378L24.12,4.95L29.076,4.95L29.076,1.743999L30.616,1.7999990000000001L30.616,4.95L35.614000000000004,4.95L35.614000000000004,6.378L30.588,6.378L30.573999999999998,6.56Q31.078,8.646,32.408,10.144Q33.738,11.642,36.174,12.958ZM44.658,4.922000000000001L43.454,4.922000000000001L43.454,4.152L41.745999999999995,4.152L41.745999999999995,2.948L43.454,2.948L43.454,1.716L44.658,1.771999L44.658,2.948L46.492000000000004,2.948L46.492000000000004,1.716L47.682,1.771999L47.682,2.948L49.586,2.948L49.586,4.152L47.682,4.152L47.682,4.922000000000001L46.492000000000004,4.922000000000001L46.492000000000004,4.152L44.658,4.152L44.658,4.922000000000001ZM46.519999999999996,11.474Q47.010000000000005,12.146,47.870999999999995,12.615Q48.732,13.084,50.104,13.364L49.726,14.624Q46.884,13.924,45.61,12.286Q45.106,13.042,44.111999999999995,13.616Q43.117999999999995,14.19,41.507999999999996,14.638L41.004000000000005,13.42Q42.488,13.098,43.349000000000004,12.615Q44.21,12.132,44.574,11.474L41.522,11.474L41.522,10.368L44.896,10.368Q44.91,10.312,44.91,10.214Q44.924,10.032,44.924,9.542L42.152,9.542L42.152,8.492L41.284,9.108Q40.989999999999995,8.464,40.5,7.708L40.5,14.358L39.282,14.358L39.282,8.268Q38.61,9.99,37.952,11.082L36.944,10.074Q37.532,9.122,38.106,7.939Q38.68,6.756,39.058,5.664L37.658,5.664L37.658,4.390000000000001L39.282,4.390000000000001L39.282,1.7579989999999999L40.5,1.814L40.5,4.390000000000001L41.816,4.390000000000001L41.816,5.664L40.5,5.664L40.5,7.134L41.116,6.658Q41.704,7.386,42.152,8.24L42.152,5.244L48.97,5.244L48.97,9.542L46.226,9.542Q46.198,10.018,46.198,10.214L46.198,10.368L49.641999999999996,10.368L49.641999999999996,11.474L46.519999999999996,11.474ZM47.85,6.952L47.85,6.28L43.314,6.28L43.314,6.952L47.85,6.952ZM47.85,7.862L43.314,7.862L43.314,8.506L47.85,8.506L47.85,7.862ZM59.904,9.388L59.512,8.114L60.548,8.030000000000001Q61.066,7.988,61.234,7.855Q61.402,7.722,61.402,7.274L61.402,2.01L62.704,2.066L62.704,7.624Q62.704,8.268,62.55,8.604Q62.396,8.940000000000001,62.025,9.094Q61.654,9.248,60.94,9.304L59.904,9.388ZM51.546,9.276Q52.274,8.52,52.596000000000004,7.988Q52.918,7.456,53.016,6.784L51.518,6.784L51.518,5.566L53.1,5.566L53.1,5.188L53.1,3.718L51.867999999999995,3.718L51.867999999999995,2.458L58.448,2.458L58.448,3.718L57.244,3.718L57.244,5.566L58.728,5.566L58.728,6.784L57.244,6.784L57.244,9.206L55.928,9.206L55.928,6.784L54.332,6.784Q54.22,7.792,53.842,8.52Q53.464,9.248,52.61,10.102L51.546,9.276ZM59.092,2.724L60.366,2.7800000000000002L60.366,7.61L59.092,7.61L59.092,2.724ZM54.402,3.718L54.402,5.202L54.402,5.566L55.928,5.566L55.928,3.718L54.402,3.718ZM58.126,11.348L58.126,12.86L63.53,12.86L63.53,14.106L51.322,14.106L51.322,12.86L56.74,12.86L56.74,11.348L52.75,11.348L52.75,10.13L56.74,10.13L56.74,9.332L58.126,9.388L58.126,10.13L62.13,10.13L62.13,11.348L58.126,11.348ZM77.39,2.528L77.39,3.9L75.64,3.9L75.64,12.272Q75.64,13.098,75.465,13.49Q75.28999999999999,13.882,74.84899999999999,14.05Q74.408,14.218,73.47,14.302L72.56,14.386L72.126,13L73.19,12.916Q73.68,12.874,73.89699999999999,12.79Q74.114,12.706,74.184,12.51Q74.25399999999999,12.314,74.25399999999999,11.88L74.25399999999999,3.9L65.042,3.9L65.042,2.528L77.39,2.528ZM66.512,5.524L72.26599999999999,5.524L72.26599999999999,11.712L66.512,11.712L66.512,5.524ZM67.842,10.354L70.95,10.354L70.95,6.896L67.842,6.896L67.842,10.354ZM88.772,3.648L85.118,3.648L85.118,10.298L83.80199999999999,10.298L83.80199999999999,2.332L90.088,2.332L90.088,10.27L88.772,10.27L88.772,3.648ZM82.668,12.65Q82.23400000000001,11.712,81.632,10.522Q80.862,12.146,79.518,14.092L78.45400000000001,13.182Q80.036,11.068,80.89,9.024Q79.7,6.728,79,5.552L80.02199999999999,4.894Q80.48400000000001,5.622,81.47800000000001,7.386Q81.87,6.042,82.122,4.2780000000000005L79.02799999999999,4.2780000000000005L79.02799999999999,2.934L83.47999999999999,2.934L83.47999999999999,4.2780000000000005Q83.144,6.784,82.318,8.940000000000001Q83.158,10.508,83.774,11.782L82.668,12.65ZM91.166,11.264Q91.124,12.104,91.04,12.636Q90.956,13.28,90.802,13.602Q90.648,13.924,90.326,14.064Q90.004,14.204,89.374,14.204L88.142,14.204Q87.344,14.204,87.029,13.868Q86.714,13.532,86.714,12.636L86.714,11.11Q86.21000000000001,12.104,85.356,12.972Q84.50200000000001,13.84,83.2,14.708L82.332,13.56Q83.886,12.608,84.691,11.705Q85.49600000000001,10.802,85.804,9.745Q86.112,8.687999999999999,86.168,7.05L86.21000000000001,4.306L87.61,4.362L87.568,7.218Q87.526,8.366,87.344,9.276L88.016,9.304L88.016,12.16Q88.016,12.608,88.128,12.734Q88.24,12.86,88.632,12.86L89.108,12.86Q89.486,12.86,89.619,12.741Q89.752,12.622,89.808,12.174Q89.892,11.362,89.892,10.788L91.166,11.264ZM93.56,1.884Q94.036,2.206,94.68,2.759Q95.324,3.312,95.702,3.704L94.904,4.795999999999999Q94.596,4.418,93.938,3.809Q93.28,3.2,92.832,2.85L93.56,1.884ZM102.1,12.93Q102.478,12.888,102.653,12.832Q102.828,12.776,102.898,12.636Q102.968,12.496,102.968,12.188L102.968,1.981999L104.06,2.0380000000000003L104.06,12.608Q104.06,13.238,103.948,13.546Q103.836,13.854,103.521,13.994Q103.206,14.134,102.534,14.19L101.75,14.246L101.372,12.986L102.1,12.93ZM95.702,10.774L95.702,2.5140000000000002L100.168,2.5140000000000002L100.168,10.732L99.006,10.732L99.006,3.732L96.836,3.732L96.836,10.774L95.702,10.774ZM101.008,11.152L101.008,3.2L102.1,3.256L102.1,11.152L101.008,11.152ZM94.652,13.364Q95.856,12.482,96.43,11.789Q97.004,11.096,97.2,10.277Q97.396,9.458,97.396,8.058L97.396,4.362L98.488,4.418L98.488,8.058Q98.488,9.738,98.201,10.809Q97.914,11.88,97.277,12.664Q96.64,13.448,95.45,14.344L94.652,13.364ZM93.07,5.034Q93.546,5.37,94.197,5.937Q94.848,6.504,95.282,6.952L94.484,8.072Q94.078,7.61,93.427,7.015Q92.776,6.42,92.258,6.028L93.07,5.034ZM92.524,13.742Q92.748,13.126,93.266,11.278Q93.784,9.43,93.896,8.814L94.498,9.01L95.072,9.206Q94.89,10.032,94.421,11.733Q93.952,13.434,93.714,14.162L92.524,13.742ZM98.74,10.858Q99.888,11.908,100.714,12.958L99.888,13.868Q99.356,13.154,98.943,12.671Q98.53,12.188,97.984,11.684L98.74,10.858Z", + "fill": "#000000", + "fill-opacity": "1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + "name": "AliyunIcon" } diff --git a/web/app/components/base/icons/src/public/tracing/AliyunIcon.tsx b/web/app/components/base/icons/src/public/tracing/AliyunIcon.tsx index 5b062b8a8..c7f785d9f 100644 --- a/web/app/components/base/icons/src/public/tracing/AliyunIcon.tsx +++ b/web/app/components/base/icons/src/public/tracing/AliyunIcon.tsx @@ -4,12 +4,16 @@ import * as React from 'react' import data from './AliyunIcon.json' import IconBase from '@/app/components/base/icons/IconBase' -import type { IconBaseProps, IconData } from '@/app/components/base/icons/IconBase' +import type { IconData } from '@/app/components/base/icons/IconBase' -const Icon = React.forwardRef, Omit>(( - props, - ref, -) => ) +const Icon = ( + { + ref, + ...props + }: React.SVGProps & { + ref?: React.RefObject>; + }, +) => Icon.displayName = 'AliyunIcon' diff --git a/web/app/components/base/icons/src/public/tracing/AliyunIconBig.json b/web/app/components/base/icons/src/public/tracing/AliyunIconBig.json index ea60744da..c8093ba66 100644 --- a/web/app/components/base/icons/src/public/tracing/AliyunIconBig.json +++ b/web/app/components/base/icons/src/public/tracing/AliyunIconBig.json @@ -1,71 +1,117 @@ { - "icon": { - "type": "element", - "isRootNode": true, - "name": "svg", - "attributes": { - "xmlns": "http://www.w3.org/2000/svg", - "xmlns:xlink": "http://www.w3.org/1999/xlink", - "fill": "none", - "version": "1.1", - "width": "96", - "height": "24", - "viewBox": "0 0 96 24" - }, - "children": [ - { - "type": "element", - "name": "g", - "children": [ - { - "type": "element", - "name": "g", - "children": [ - { - "type": "element", - "name": "path", - "attributes": { - "d": "M6.10294,22C5.68819,22,5.18195,21.8532,4.58421,21.5595C4.46861,21.5027,4.39038,21.4658,4.34951,21.4488C3.49789,21.0943,2.74367,20.5941,2.08684,19.9484C0.695613,18.5806,0,16.9311,0,15C0,13.0689,0.695612,11.4194,2.08684,10.0516C3.24259,8.91537,4.59607,8.2511,6.14728,8.05878C6.34758,5.97414,7.22633,4.16634,8.78354,2.63539C10.5706,0.878463,12.7286,0,15.2573,0C17.2884,0,19.1146,0.595472,20.7358,1.78642C22.327,2.95528,23.4151,4.46783,24,6.32406L22.0568,6.91594C21.6024,5.47377,20.7561,4.29798,19.5181,3.38858C18.2579,2.46286,16.8377,2,15.2573,2C13.2903,2,11.6119,2.6832,10.222,4.04961C8.83217,5.41601,8.13725,7.06614,8.13725,9L8.13725,10L7.12009,10C5.71758,10,4.51932,10.4886,3.52532,11.4659C2.53132,12.4431,2.03431,13.6211,2.03431,15C2.03431,16.3789,2.53132,17.5569,3.52532,18.5341C3.99531,18.9962,4.53447,19.3538,5.14278,19.6071C5.2229,19.6405,5.33983,19.695,5.49356,19.7705C5.80505,19.9235,6.00818,20,6.10294,20L6.10294,22Z", - "fill-rule": "evenodd", - "fill": "#FF6A00", - "fill-opacity": "1" - } - } - ] - }, - { - "type": "element", - "name": "g", - "children": [ - { - "type": "element", - "name": "path", - "attributes": { - "d": "M20.18796103515625,11.66909C19.46346103515625,11.5762,18.72726103515625,11.52975,17.991011035156248,11.52975C16.728921035156247,11.52975,15.45515103515625,11.66909,14.23981103515625,11.91292C13.02447103515625,12.156749999999999,11.85588103515625,12.539909999999999,10.73402103515625,12.98113C9.98612103515625,13.306239999999999,9.23822103515625,13.69327,8.49031803515625,14.14223C7.99950790415625,14.43251,7.85927603515625,15.10595,8.15142503515625,15.59361L11.11966103515625,19.9478C11.45855103515625,20.4354,12.13634103515625,20.5747,12.627151035156249,20.2845C12.821921035156251,20.152900000000002,13.14523103515625,19.990299999999998,13.59708103515625,19.796799999999998C14.27487103515625,19.506500000000003,14.964341035156249,19.3091,15.68887103515625,19.169800000000002C16.413401035156248,19.018900000000002,17.14962103515625,18.926000000000002,17.93258103515625,18.926000000000002L20.071061035156248,11.715530000000001L20.18796103515625,11.66909ZM22.91076103515625,12.20319L22.525161035156252,8L20.18796103515625,11.6807C20.72556103515625,11.72714,21.21636103515625,11.82003,21.74216103515625,11.92453C21.74216103515625,11.91679,22.13166103515625,12.00968,22.91076103515625,12.20319ZM18.09616103515625,18.9724L17.06782103515625,22.4557L18.773961035156248,24L21.11116103515625,23.465899999999998L21.788961035156248,19.5414C21.298161035156248,19.402,20.81896103515625,19.2511,20.32816103515625,19.1582C19.60366103515625,19.076900000000002,18.86746103515625,18.9724,18.09616103515625,18.9724ZM27.49166103515625,14.14223C26.74376103515625,13.69327,25.99586103515625,13.306239999999999,25.24796103515625,12.98113C24.52346103515625,12.69086,23.74046103515625,12.40058,22.95756103515625,12.20319L22.95756103515625,12.40058L21.69546103515625,19.5646C21.89416103515625,19.6575,22.139561035156248,19.7039,22.32646103515625,19.8084C22.77836103515625,20.0019,23.101661035156248,20.1645,23.29646103515625,20.2961C23.78726103515625,20.586399999999998,24.51176103515625,20.4354,24.80396103515625,19.959400000000002L27.77216103515625,15.605229999999999C28.16946103515625,15.05951,28.02926103515625,14.43251,27.49166103515625,14.14223Z", - "fill": "#FF6A00", - "fill-opacity": "1" - } - } - ] - }, - { - "type": "element", - "name": "g", - "children": [ - { - "type": "element", - "name": "path", - "attributes": { - "d": "M35.785,3.8624638671875L50.233000000000004,3.8624638671875L50.233000000000004,5.9204638671875L35.785,5.9204638671875L35.785,3.8624638671875ZM43.156,11.5904638671875Q42.106,13.4594638671875,40.7515,15.4754638671875Q39.397,17.4914638671875,38.599000000000004,18.3104638671875L46.978,17.5334638671875Q45.382,15.0974638671875,44.479,13.8794638671875L46.306,12.7034638671875Q47.397999999999996,14.1104638671875,48.9835,16.3784638671875Q50.569,18.6464638671875,51.492999999999995,20.1794638671875L49.54,21.6494638671875Q49.057,20.8094638671875,48.238,19.5074638671875Q46.243,19.6334638671875,42.82,19.9274638671875Q39.397,20.2214638671875,37.024,20.4734638671875L36.184,20.5784638671875L35.47,20.6834638671875L34.84,18.5624638671875Q35.281,18.4154638671875,35.512,18.2579638671875Q35.743,18.1004638671875,35.9005,17.963963867187502Q36.058,17.8274638671875,36.121,17.7644638671875Q37.087,16.840463867187502,38.305,15.1079638671875Q39.522999999999996,13.3754638671875,40.531,11.5904638671875L34,11.5904638671875L34,9.5114638671875L52.018,9.5114638671875L52.018,11.5904638671875L43.156,11.5904638671875ZM62.203,10.9814638671875L62.203,12.7244638671875L60.25,12.7244638671875L60.25,2.5814638671875L62.203,2.6654638671875L62.203,10.4144638671875Q63.19,8.6294638671875,64.051,6.4139638671875Q64.912,4.1984638671875,65.28999999999999,2.3504638671875L67.348,2.8334628671875Q67.15899999999999,3.7784638671875,66.80199999999999,4.9754638671875L72.619,4.9754638671875L72.619,6.9704638671875L66.13,6.9704638671875Q65.143,9.7004638671875,63.778,12.0524638671875L62.203,10.9814638671875ZM56.113,3.3794638671875L58.045,3.4634638671875L58.045,12.1784638671875L56.113,12.1784638671875L56.113,3.3794638671875ZM67.495,7.3064638671875Q68.251,7.8944638671875,69.469,9.1229638671875Q70.687,10.3514638671875,71.40100000000001,11.2334638671875L69.84700000000001,12.7454638671875Q69.238,11.9684638671875,68.083,10.7714638671875Q66.928,9.5744638671875,66.025,8.7134638671875L67.495,7.3064638671875ZM70.834,13.3754638671875L70.834,18.9194638671875L73.06,18.9194638671875L73.06,20.8094638671875L54.307,20.8094638671875L54.307,18.9194638671875L56.491,18.9194638671875L56.491,13.3754638671875L70.834,13.3754638671875ZM60.733000000000004,15.2444638671875L58.465,15.2444638671875L58.465,18.9194638671875L60.733000000000004,18.9194638671875L60.733000000000004,15.2444638671875ZM62.581,18.9194638671875L64.765,18.9194638671875L64.765,15.2444638671875L62.581,15.2444638671875L62.581,18.9194638671875ZM66.592,18.9194638671875L68.881,18.9194638671875L68.881,15.2444638671875L66.592,15.2444638671875L66.592,18.9194638671875ZM80.578,11.0444638671875L80.893,12.4514638671875L79.48599999999999,13.0814638671875L79.48599999999999,19.0874638671875Q79.48599999999999,20.0114638671875,79.2655,20.4629638671875Q79.045,20.9144638671875,78.52000000000001,21.1034638671875Q77.995,21.2924638671875,76.90299999999999,21.3974638671875L76.021,21.4814638671875L75.43299999999999,19.4864638671875L76.462,19.4024638671875Q76.987,19.3604638671875,77.197,19.2974638671875Q77.407,19.2344638671875,77.4805,19.0559638671875Q77.554,18.8774638671875,77.554,18.4364638671875L77.554,13.9004638671875Q76.189,14.4464638671875,75.202,14.7824638671875L74.74000000000001,12.7244638671875Q75.916,12.3464638671875,77.554,11.6744638671875L77.554,8.1464638671875L75.34899999999999,8.1464638671875L75.34899999999999,6.1094638671875L77.554,6.1094638671875L77.554,2.4974628671875L79.48599999999999,2.5814638671875L79.48599999999999,6.1094638671875L81.03999999999999,6.1094638671875L81.03999999999999,8.1464638671875L79.48599999999999,8.1464638671875L79.48599999999999,10.8344638671875L80.431,10.3934638671875L80.578,11.0444638671875ZM83.56,6.6764638671875L83.56,9.0074638671875L81.565,9.0074638671875L81.565,4.7444638671875L86.24799999999999,4.7444638671875Q85.84899999999999,3.3794638671875,85.618,2.7494638671875L87.655,2.4974628671875Q87.991,3.2744638671875,88.432,4.7444638671875L93.094,4.7444638671875L93.094,9.0074638671875L91.162,9.0074638671875L91.162,6.6764638671875L83.56,6.6764638671875ZM86.731,9.3434638671875Q85.807,10.2674638671875,84.7465,11.1284638671875Q83.686,11.9894638671875,82.15299999999999,13.1234638671875L81.082,11.5064638671875Q83.455,9.9524638671875,85.408,7.9154638671875L86.731,9.3434638671875ZM88.852,7.9154638671875Q89.755,8.5244638671875,91.3615,9.731963867187499Q92.968,10.9394638671875,93.703,11.5694638671875L92.632,13.3334638671875Q91.771,12.5354638671875,90.217,11.3384638671875Q88.663,10.1414638671875,87.718,9.5114638671875L88.852,7.9154638671875ZM92.107,15.2444638671875L88.285,15.2444638671875L88.285,18.7094638671875L93.577,18.7094638671875L93.577,20.5994638671875L80.935,20.5994638671875L80.935,18.7094638671875L86.164,18.7094638671875L86.164,15.2444638671875L82.3,15.2444638671875L82.3,13.3334638671875L92.107,13.3334638671875L92.107,15.2444638671875Z", - "fill": "#FF6A00", - "fill-opacity": "1" - } - } - ] - } - ] - } - ] - }, - "name": "AliyunBigIcon" + "icon": { + "type": "element", + "isRootNode": true, + "name": "svg", + "attributes": { + "xmlns": "http://www.w3.org/2000/svg", + "xmlns:xlink": "http://www.w3.org/1999/xlink", + "fill": "none", + "version": "1.1", + "width": "159", + "height": "24", + "viewBox": "0 0 159 24" + }, + "children": [ + { + "type": "element", + "name": "defs", + "attributes": {}, + "children": [ + { + "type": "element", + "name": "clipPath", + "attributes": { + "id": "master_svg0_42_18775" + }, + "children": [ + { + "type": "element", + "name": "rect", + "attributes": { + "x": "0", + "y": "0", + "width": "28.5", + "height": "24", + "rx": "0" + }, + "children": [] + } + ] + } + ] + }, + { + "type": "element", + "name": "g", + "attributes": {}, + "children": [ + { + "type": "element", + "name": "g", + "attributes": { + "clip-path": "url(#master_svg0_42_18775)" + }, + "children": [ + { + "type": "element", + "name": "g", + "attributes": {}, + "children": [ + { + "type": "element", + "name": "path", + "attributes": { + "d": "M6.10294,22C5.68819,22,5.18195,21.8532,4.58421,21.5595C4.46861,21.5027,4.39038,21.4658,4.34951,21.4488C3.49789,21.0943,2.74367,20.5941,2.08684,19.9484C0.695613,18.5806,0,16.9311,0,15C0,13.0689,0.695612,11.4194,2.08684,10.0516C3.24259,8.91537,4.59607,8.2511,6.14728,8.05878C6.34758,5.97414,7.22633,4.16634,8.78354,2.63539C10.5706,0.878463,12.7286,0,15.2573,0C17.2884,0,19.1146,0.595472,20.7358,1.78642C22.327,2.95528,23.4151,4.46783,24,6.32406L22.0568,6.91594C21.6024,5.47377,20.7561,4.29798,19.5181,3.38858C18.2579,2.46286,16.8377,2,15.2573,2C13.2903,2,11.6119,2.6832,10.222,4.04961C8.83217,5.41601,8.13725,7.06614,8.13725,9L8.13725,10L7.12009,10C5.71758,10,4.51932,10.4886,3.52532,11.4659C2.53132,12.4431,2.03431,13.6211,2.03431,15C2.03431,16.3789,2.53132,17.5569,3.52532,18.5341C3.99531,18.9962,4.53447,19.3538,5.14278,19.6071C5.2229,19.6405,5.33983,19.695,5.49356,19.7705C5.80505,19.9235,6.00818,20,6.10294,20L6.10294,22Z", + "fill-rule": "evenodd", + "fill": "#000000", + "fill-opacity": "1", + "style": "mix-blend-mode:passthrough" + }, + "children": [] + } + ] + }, + { + "type": "element", + "name": "g", + "attributes": {}, + "children": [ + { + "type": "element", + "name": "path", + "attributes": { + "d": "M20.18796103515625,11.66909C19.46346103515625,11.5762,18.72726103515625,11.52975,17.991011035156248,11.52975C16.728921035156247,11.52975,15.45515103515625,11.66909,14.23981103515625,11.91292C13.02447103515625,12.156749999999999,11.85588103515625,12.539909999999999,10.73402103515625,12.98113C9.98612103515625,13.306239999999999,9.23822103515625,13.69327,8.49031803515625,14.14223C7.99950790415625,14.43251,7.85927603515625,15.10595,8.15142503515625,15.59361L11.11966103515625,19.9478C11.45855103515625,20.4354,12.13634103515625,20.5747,12.627151035156249,20.2845C12.821921035156251,20.152900000000002,13.14523103515625,19.990299999999998,13.59708103515625,19.796799999999998C14.27487103515625,19.506500000000003,14.964341035156249,19.3091,15.68887103515625,19.169800000000002C16.413401035156248,19.018900000000002,17.14962103515625,18.926000000000002,17.93258103515625,18.926000000000002L20.071061035156248,11.715530000000001L20.18796103515625,11.66909ZM22.91076103515625,12.20319L22.525161035156252,8L20.18796103515625,11.6807C20.72556103515625,11.72714,21.21636103515625,11.82003,21.74216103515625,11.92453C21.74216103515625,11.91679,22.13166103515625,12.00968,22.91076103515625,12.20319ZM18.09616103515625,18.9724L17.06782103515625,22.4557L18.773961035156248,24L21.11116103515625,23.465899999999998L21.788961035156248,19.5414C21.298161035156248,19.402,20.81896103515625,19.2511,20.32816103515625,19.1582C19.60366103515625,19.076900000000002,18.86746103515625,18.9724,18.09616103515625,18.9724ZM27.49166103515625,14.14223C26.74376103515625,13.69327,25.99586103515625,13.306239999999999,25.24796103515625,12.98113C24.52346103515625,12.69086,23.74046103515625,12.40058,22.95756103515625,12.20319L22.95756103515625,12.40058L21.69546103515625,19.5646C21.89416103515625,19.6575,22.139561035156248,19.7039,22.32646103515625,19.8084C22.77836103515625,20.0019,23.101661035156248,20.1645,23.29646103515625,20.2961C23.78726103515625,20.586399999999998,24.51176103515625,20.4354,24.80396103515625,19.959400000000002L27.77216103515625,15.605229999999999C28.16946103515625,15.05951,28.02926103515625,14.43251,27.49166103515625,14.14223Z", + "fill": "#000000", + "fill-opacity": "1", + "style": "mix-blend-mode:passthrough" + }, + "children": [] + } + ] + } + ] + }, + { + "type": "element", + "name": "g", + "attributes": {}, + "children": [ + { + "type": "element", + "name": "path", + "attributes": { + "d": "M53.295,19.1189814453125L51.951,21.2189814453125Q46.05,17.6279814453125,43.971000000000004,13.0079814453125Q42.921,15.4019814453125,40.884,17.3969814453125Q38.847,19.3919814453125,35.97,21.2399814453125L34.5,19.1609814453125Q41.997,14.9609814453125,42.585,9.2489814453125L35.214,9.2489814453125L35.214,7.1069814453125L42.647999999999996,7.1069814453125L42.647999999999996,2.2979812453125L44.958,2.3819804453125L44.958,7.1069814453125L52.455,7.1069814453125L52.455,9.2489814453125L44.916,9.2489814453125L44.894999999999996,9.5219814453125Q45.650999999999996,12.6509814453125,47.646,14.8979814453125Q49.641,17.1449814453125,53.295,19.1189814453125ZM66.021,7.0649814453125L64.215,7.0649814453125L64.215,5.9099814453125L61.653,5.9099814453125L61.653,4.1039814453125L64.215,4.1039814453125L64.215,2.2559814453125L66.021,2.3399810453125L66.021,4.1039814453125L68.77199999999999,4.1039814453125L68.77199999999999,2.2559814453125L70.557,2.3399810453125L70.557,4.1039814453125L73.413,4.1039814453125L73.413,5.9099814453125L70.557,5.9099814453125L70.557,7.0649814453125L68.77199999999999,7.0649814453125L68.77199999999999,5.9099814453125L66.021,5.9099814453125L66.021,7.0649814453125ZM68.814,16.8929814453125Q69.549,17.9009814453125,70.84049999999999,18.6044814453125Q72.132,19.3079814453125,74.19,19.7279814453125L73.62299999999999,21.6179814453125Q69.36,20.5679814453125,67.449,18.1109814453125Q66.693,19.2449814453125,65.202,20.1059814453125Q63.711,20.9669814453125,61.296,21.6389814453125L60.54,19.8119814453125Q62.766,19.3289814453125,64.0575,18.6044814453125Q65.349,17.879981445312502,65.895,16.8929814453125L61.317,16.8929814453125L61.317,15.2339814453125L66.378,15.2339814453125Q66.399,15.1499814453125,66.399,15.0029814453125Q66.42,14.7299814453125,66.42,13.9949814453125L62.262,13.9949814453125L62.262,12.4199814453125L60.96,13.3439814453125Q60.519,12.3779814453125,59.784,11.2439814453125L59.784,21.2189814453125L57.957,21.2189814453125L57.957,12.0839814453125Q56.949,14.6669814453125,55.962,16.3049814453125L54.45,14.7929814453125Q55.332,13.3649814453125,56.193,11.5904814453125Q57.054,9.815981445312499,57.620999999999995,8.1779814453125L55.521,8.1779814453125L55.521,6.2669814453125L57.957,6.2669814453125L57.957,2.3189811453125L59.784,2.4029824453125L59.784,6.2669814453125L61.757999999999996,6.2669814453125L61.757999999999996,8.1779814453125L59.784,8.1779814453125L59.784,10.3829814453125L60.708,9.6689814453125Q61.59,10.7609814453125,62.262,12.0419814453125L62.262,7.5479814453125L72.489,7.5479814453125L72.489,13.9949814453125L68.37299999999999,13.9949814453125Q68.331,14.7089814453125,68.331,15.0029814453125L68.331,15.2339814453125L73.497,15.2339814453125L73.497,16.8929814453125L68.814,16.8929814453125ZM70.809,10.1099814453125L70.809,9.1019814453125L64.005,9.1019814453125L64.005,10.1099814453125L70.809,10.1099814453125ZM70.809,11.4749814453125L64.005,11.4749814453125L64.005,12.4409814453125L70.809,12.4409814453125L70.809,11.4749814453125ZM88.89,13.7639814453125L88.30199999999999,11.8529814453125L89.856,11.7269814453125Q90.63300000000001,11.6639814453125,90.88499999999999,11.4644814453125Q91.137,11.2649814453125,91.137,10.5929814453125L91.137,2.6969814453125L93.09,2.7809824453125L93.09,11.1179814453125Q93.09,12.0839814453125,92.85900000000001,12.5879814453125Q92.628,13.0919814453125,92.0715,13.3229814453125Q91.515,13.5539814453125,90.444,13.6379814453125L88.89,13.7639814453125ZM76.35300000000001,13.5959814453125Q77.445,12.4619814453125,77.928,11.6639814453125Q78.411,10.8659814453125,78.55799999999999,9.8579814453125L76.311,9.8579814453125L76.311,8.0309814453125L78.684,8.0309814453125L78.684,7.4639814453125L78.684,5.2589814453125L76.836,5.2589814453125L76.836,3.3689814453125L86.706,3.3689814453125L86.706,5.2589814453125L84.9,5.2589814453125L84.9,8.0309814453125L87.126,8.0309814453125L87.126,9.8579814453125L84.9,9.8579814453125L84.9,13.4909814453125L82.926,13.4909814453125L82.926,9.8579814453125L80.532,9.8579814453125Q80.364,11.3699814453125,79.797,12.4619814453125Q79.22999999999999,13.5539814453125,77.949,14.8349814453125L76.35300000000001,13.5959814453125ZM87.672,3.7679814453125L89.583,3.8519814453125L89.583,11.0969814453125L87.672,11.0969814453125L87.672,3.7679814453125ZM80.637,5.2589814453125L80.637,7.4849814453125L80.637,8.0309814453125L82.926,8.0309814453125L82.926,5.2589814453125L80.637,5.2589814453125ZM86.223,16.7039814453125L86.223,18.9719814453125L94.32900000000001,18.9719814453125L94.32900000000001,20.8409814453125L76.017,20.8409814453125L76.017,18.9719814453125L84.144,18.9719814453125L84.144,16.7039814453125L78.15899999999999,16.7039814453125L78.15899999999999,14.8769814453125L84.144,14.8769814453125L84.144,13.6799814453125L86.223,13.7639814453125L86.223,14.8769814453125L92.229,14.8769814453125L92.229,16.7039814453125L86.223,16.7039814453125ZM115.119,3.4739814453125L115.119,5.5319814453125L112.494,5.5319814453125L112.494,18.0899814453125Q112.494,19.3289814453125,112.2315,19.9169814453125Q111.969,20.5049814453125,111.3075,20.7569814453125Q110.646,21.0089814453125,109.239,21.1349814453125L107.874,21.2609814453125L107.223,19.1819814453125L108.819,19.0559814453125Q109.554,18.9929814453125,109.8795,18.8669814453125Q110.205,18.7409814453125,110.31,18.4469814453125Q110.415,18.1529814453125,110.415,17.501981445312502L110.415,5.5319814453125L96.59700000000001,5.5319814453125L96.59700000000001,3.4739814453125L115.119,3.4739814453125ZM98.802,7.9679814453125L107.433,7.9679814453125L107.433,17.2499814453125L98.802,17.2499814453125L98.802,7.9679814453125ZM100.797,15.2129814453125L105.459,15.2129814453125L105.459,10.0259814453125L100.797,10.0259814453125L100.797,15.2129814453125ZM132.192,5.1539814453125L126.711,5.1539814453125L126.711,15.1289814453125L124.737,15.1289814453125L124.737,3.1799814453125L134.166,3.1799814453125L134.166,15.0869814453125L132.192,15.0869814453125L132.192,5.1539814453125ZM123.036,18.6569814453125Q122.385,17.2499814453125,121.482,15.4649814453125Q120.327,17.9009814453125,118.311,20.8199814453125L116.715,19.4549814453125Q119.088,16.2839814453125,120.369,13.2179814453125Q118.584,9.7739814453125,117.534,8.0099814453125L119.067,7.0229814453125Q119.76,8.1149814453125,121.251,10.7609814453125Q121.839,8.7449814453125,122.217,6.0989814453125L117.576,6.0989814453125L117.576,4.0829814453125L124.254,4.0829814453125L124.254,6.0989814453125Q123.75,9.8579814453125,122.511,13.0919814453125Q123.771,15.4439814453125,124.695,17.3549814453125L123.036,18.6569814453125ZM135.78300000000002,16.5779814453125Q135.72,17.8379814453125,135.594,18.6359814453125Q135.46800000000002,19.6019814453125,135.237,20.0849814453125Q135.006,20.5679814453125,134.523,20.7779814453125Q134.04000000000002,20.9879814453125,133.095,20.9879814453125L131.247,20.9879814453125Q130.05,20.9879814453125,129.5775,20.4839814453125Q129.10500000000002,19.9799814453125,129.10500000000002,18.6359814453125L129.10500000000002,16.3469814453125Q128.349,17.8379814453125,127.068,19.1399814453125Q125.787,20.4419814453125,123.834,21.7439814453125L122.532,20.0219814453125Q124.863,18.5939814453125,126.0705,17.2394814453125Q127.278,15.8849814453125,127.74,14.2994814453125Q128.202,12.7139814453125,128.286,10.2569814453125L128.349,6.1409814453125L130.449,6.224981445312499L130.386,10.5089814453125Q130.32299999999998,12.2309814453125,130.05,13.5959814453125L131.058,13.6379814453125L131.058,17.9219814453125Q131.058,18.5939814453125,131.226,18.7829814453125Q131.394,18.9719814453125,131.982,18.9719814453125L132.696,18.9719814453125Q133.263,18.9719814453125,133.4625,18.7934814453125Q133.662,18.6149814453125,133.74599999999998,17.942981445312498Q133.872,16.7249814453125,133.872,15.8639814453125L135.78300000000002,16.5779814453125ZM139.374,2.5079814453125Q140.088,2.9909814453125,141.054,3.8204814453125Q142.01999999999998,4.6499814453125,142.587,5.2379814453125L141.39,6.8759814453125Q140.928,6.3089814453125,139.941,5.3954814453125Q138.954,4.4819814453125,138.28199999999998,3.9569814453125L139.374,2.5079814453125ZM152.184,19.0769814453125Q152.751,19.0139814453125,153.014,18.9299814453125Q153.276,18.8459814453125,153.381,18.6359814453125Q153.486,18.4259814453125,153.486,17.9639814453125L153.486,2.6549814453125L155.124,2.7389824453125L155.124,18.5939814453125Q155.124,19.5389814453125,154.95600000000002,20.0009814453125Q154.788,20.4629814453125,154.315,20.6729814453125Q153.84300000000002,20.8829814453125,152.83499999999998,20.9669814453125L151.659,21.0509814453125L151.09199999999998,19.1609814453125L152.184,19.0769814453125ZM142.587,15.8429814453125L142.587,3.4529814453125L149.286,3.4529814453125L149.286,15.7799814453125L147.543,15.7799814453125L147.543,5.2799814453125L144.288,5.2799814453125L144.288,15.8429814453125L142.587,15.8429814453125ZM150.546,16.4099814453125L150.546,4.4819814453125L152.184,4.5659814453125005L152.184,16.4099814453125L150.546,16.4099814453125ZM141.012,19.7279814453125Q142.81799999999998,18.4049814453125,143.679,17.3654814453125Q144.54000000000002,16.3259814453125,144.834,15.0974814453125Q145.128,13.8689814453125,145.128,11.7689814453125L145.128,6.224981445312499L146.76600000000002,6.3089814453125L146.76600000000002,11.7689814453125Q146.76600000000002,14.2889814453125,146.33499999999998,15.8954814453125Q145.905,17.501981445312502,144.95,18.6779814453125Q143.994,19.8539814453125,142.209,21.1979814453125L141.012,19.7279814453125ZM138.639,7.2329814453125Q139.353,7.7369814453125,140.329,8.5874814453125Q141.30599999999998,9.4379814453125,141.957,10.1099814453125L140.76,11.7899814453125Q140.151,11.0969814453125,139.174,10.2044814453125Q138.19799999999998,9.311981445312501,137.421,8.7239814453125L138.639,7.2329814453125ZM137.82,20.2949814453125Q138.156,19.3709814453125,138.933,16.5989814453125Q139.70999999999998,13.8269814453125,139.878,12.9029814453125L140.781,13.1969814453125L141.642,13.4909814453125Q141.369,14.7299814453125,140.66500000000002,17.2814814453125Q139.962,19.8329814453125,139.60500000000002,20.9249814453125L137.82,20.2949814453125ZM147.144,15.9689814453125Q148.86599999999999,17.5439814453125,150.10500000000002,19.1189814453125L148.86599999999999,20.4839814453125Q148.06799999999998,19.4129814453125,147.449,18.6884814453125Q146.829,17.9639814453125,146.01,17.207981445312498L147.144,15.9689814453125Z", + "fill": "#000000", + "fill-opacity": "1" + }, + "children": [] + } + ] + } + ] + } + ] + }, + "name": "AliyunIconBig" } diff --git a/web/app/components/base/icons/src/public/tracing/AliyunIconBig.tsx b/web/app/components/base/icons/src/public/tracing/AliyunIconBig.tsx index 0924f70fb..703ea1d37 100644 --- a/web/app/components/base/icons/src/public/tracing/AliyunIconBig.tsx +++ b/web/app/components/base/icons/src/public/tracing/AliyunIconBig.tsx @@ -4,12 +4,16 @@ import * as React from 'react' import data from './AliyunIconBig.json' import IconBase from '@/app/components/base/icons/IconBase' -import type { IconBaseProps, IconData } from '@/app/components/base/icons/IconBase' +import type { IconData } from '@/app/components/base/icons/IconBase' -const Icon = React.forwardRef, Omit>(( - props, - ref, -) => ) +const Icon = ( + { + ref, + ...props + }: React.SVGProps & { + ref?: React.RefObject>; + }, +) => Icon.displayName = 'AliyunIconBig' diff --git a/web/app/components/base/icons/src/public/tracing/WeaveIcon.tsx b/web/app/components/base/icons/src/public/tracing/WeaveIcon.tsx index fd66bd79a..9261604bf 100644 --- a/web/app/components/base/icons/src/public/tracing/WeaveIcon.tsx +++ b/web/app/components/base/icons/src/public/tracing/WeaveIcon.tsx @@ -4,12 +4,16 @@ import * as React from 'react' import data from './WeaveIcon.json' import IconBase from '@/app/components/base/icons/IconBase' -import type { IconBaseProps, IconData } from '@/app/components/base/icons/IconBase' +import type { IconData } from '@/app/components/base/icons/IconBase' -const Icon = React.forwardRef, Omit>(( - props, - ref, -) => ) +const Icon = ( + { + ref, + ...props + }: React.SVGProps & { + ref?: React.RefObject>; + }, +) => Icon.displayName = 'WeaveIcon' diff --git a/web/app/components/base/icons/src/public/tracing/WeaveIconBig.tsx b/web/app/components/base/icons/src/public/tracing/WeaveIconBig.tsx index 1d2bb9fcc..79267467d 100644 --- a/web/app/components/base/icons/src/public/tracing/WeaveIconBig.tsx +++ b/web/app/components/base/icons/src/public/tracing/WeaveIconBig.tsx @@ -4,12 +4,16 @@ import * as React from 'react' import data from './WeaveIconBig.json' import IconBase from '@/app/components/base/icons/IconBase' -import type { IconBaseProps, IconData } from '@/app/components/base/icons/IconBase' +import type { IconData } from '@/app/components/base/icons/IconBase' -const Icon = React.forwardRef, Omit>(( - props, - ref, -) => ) +const Icon = ( + { + ref, + ...props + }: React.SVGProps & { + ref?: React.RefObject>; + }, +) => Icon.displayName = 'WeaveIconBig' diff --git a/web/app/components/base/icons/src/public/tracing/index.ts b/web/app/components/base/icons/src/public/tracing/index.ts index 07e3385f4..2d9e7ff0a 100644 --- a/web/app/components/base/icons/src/public/tracing/index.ts +++ b/web/app/components/base/icons/src/public/tracing/index.ts @@ -1,3 +1,5 @@ +export { default as AliyunIconBig } from './AliyunIconBig' +export { default as AliyunIcon } from './AliyunIcon' export { default as ArizeIconBig } from './ArizeIconBig' export { default as ArizeIcon } from './ArizeIcon' export { default as LangfuseIconBig } from './LangfuseIconBig' @@ -11,5 +13,3 @@ export { default as PhoenixIcon } from './PhoenixIcon' export { default as TracingIcon } from './TracingIcon' export { default as WeaveIconBig } from './WeaveIconBig' export { default as WeaveIcon } from './WeaveIcon' -export { default as AliyunIconBig } from './AliyunIconBig' -export { default as AliyunIcon } from './AliyunIcon' diff --git a/web/app/components/base/icons/src/vender/features/Citations.json b/web/app/components/base/icons/src/vender/features/Citations.json index 1b0b6250d..24a77db60 100644 --- a/web/app/components/base/icons/src/vender/features/Citations.json +++ b/web/app/components/base/icons/src/vender/features/Citations.json @@ -23,4 +23,4 @@ ] }, "name": "Citations" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/features/ContentModeration.json b/web/app/components/base/icons/src/vender/features/ContentModeration.json index 4f5c47acd..fc609e043 100644 --- a/web/app/components/base/icons/src/vender/features/ContentModeration.json +++ b/web/app/components/base/icons/src/vender/features/ContentModeration.json @@ -25,4 +25,4 @@ ] }, "name": "ContentModeration" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/features/Document.json b/web/app/components/base/icons/src/vender/features/Document.json index fdd08d525..f0638eecf 100644 --- a/web/app/components/base/icons/src/vender/features/Document.json +++ b/web/app/components/base/icons/src/vender/features/Document.json @@ -20,4 +20,4 @@ ] }, "name": "Document" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/features/FolderUpload.json b/web/app/components/base/icons/src/vender/features/FolderUpload.json index 2180127e3..c113da043 100644 --- a/web/app/components/base/icons/src/vender/features/FolderUpload.json +++ b/web/app/components/base/icons/src/vender/features/FolderUpload.json @@ -23,4 +23,4 @@ ] }, "name": "FolderUpload" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/features/LoveMessage.json b/web/app/components/base/icons/src/vender/features/LoveMessage.json index 7dbc06266..4874b9494 100644 --- a/web/app/components/base/icons/src/vender/features/LoveMessage.json +++ b/web/app/components/base/icons/src/vender/features/LoveMessage.json @@ -23,4 +23,4 @@ ] }, "name": "LoveMessage" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/features/MessageFast.json b/web/app/components/base/icons/src/vender/features/MessageFast.json index 4580398f3..b859b1f3f 100644 --- a/web/app/components/base/icons/src/vender/features/MessageFast.json +++ b/web/app/components/base/icons/src/vender/features/MessageFast.json @@ -25,4 +25,4 @@ ] }, "name": "MessageFast" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/features/Microphone01.json b/web/app/components/base/icons/src/vender/features/Microphone01.json index a4ba1bc23..57545716c 100644 --- a/web/app/components/base/icons/src/vender/features/Microphone01.json +++ b/web/app/components/base/icons/src/vender/features/Microphone01.json @@ -34,4 +34,4 @@ ] }, "name": "Microphone01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/features/TextToAudio.json b/web/app/components/base/icons/src/vender/features/TextToAudio.json index 1d824f72c..4369e0b6f 100644 --- a/web/app/components/base/icons/src/vender/features/TextToAudio.json +++ b/web/app/components/base/icons/src/vender/features/TextToAudio.json @@ -74,4 +74,4 @@ ] }, "name": "TextToAudio" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/features/VirtualAssistant.json b/web/app/components/base/icons/src/vender/features/VirtualAssistant.json index b426eb4b0..3cbeba0ea 100644 --- a/web/app/components/base/icons/src/vender/features/VirtualAssistant.json +++ b/web/app/components/base/icons/src/vender/features/VirtualAssistant.json @@ -32,4 +32,4 @@ ] }, "name": "VirtualAssistant" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/features/Vision.json b/web/app/components/base/icons/src/vender/features/Vision.json index e9b5b4df8..6d60e32a2 100644 --- a/web/app/components/base/icons/src/vender/features/Vision.json +++ b/web/app/components/base/icons/src/vender/features/Vision.json @@ -25,4 +25,4 @@ ] }, "name": "Vision" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/alertsAndFeedback/AlertTriangle.json b/web/app/components/base/icons/src/vender/line/alertsAndFeedback/AlertTriangle.json index a200e6035..057ecbdfc 100644 --- a/web/app/components/base/icons/src/vender/line/alertsAndFeedback/AlertTriangle.json +++ b/web/app/components/base/icons/src/vender/line/alertsAndFeedback/AlertTriangle.json @@ -36,4 +36,4 @@ ] }, "name": "AlertTriangle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/alertsAndFeedback/ThumbsDown.json b/web/app/components/base/icons/src/vender/line/alertsAndFeedback/ThumbsDown.json index b9ccbef3e..41877c74b 100644 --- a/web/app/components/base/icons/src/vender/line/alertsAndFeedback/ThumbsDown.json +++ b/web/app/components/base/icons/src/vender/line/alertsAndFeedback/ThumbsDown.json @@ -63,4 +63,4 @@ ] }, "name": "ThumbsDown" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/alertsAndFeedback/ThumbsUp.json b/web/app/components/base/icons/src/vender/line/alertsAndFeedback/ThumbsUp.json index 674516b1c..0ee442871 100644 --- a/web/app/components/base/icons/src/vender/line/alertsAndFeedback/ThumbsUp.json +++ b/web/app/components/base/icons/src/vender/line/alertsAndFeedback/ThumbsUp.json @@ -63,4 +63,4 @@ ] }, "name": "ThumbsUp" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/arrows/ArrowNarrowLeft.json b/web/app/components/base/icons/src/vender/line/arrows/ArrowNarrowLeft.json index 73d6708c5..e3f7b5c67 100644 --- a/web/app/components/base/icons/src/vender/line/arrows/ArrowNarrowLeft.json +++ b/web/app/components/base/icons/src/vender/line/arrows/ArrowNarrowLeft.json @@ -26,4 +26,4 @@ ] }, "name": "ArrowNarrowLeft" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/arrows/ArrowUpRight.json b/web/app/components/base/icons/src/vender/line/arrows/ArrowUpRight.json index 9ab1e6e0d..621a37afd 100644 --- a/web/app/components/base/icons/src/vender/line/arrows/ArrowUpRight.json +++ b/web/app/components/base/icons/src/vender/line/arrows/ArrowUpRight.json @@ -36,4 +36,4 @@ ] }, "name": "ArrowUpRight" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/arrows/ChevronDownDouble.json b/web/app/components/base/icons/src/vender/line/arrows/ChevronDownDouble.json index cfae43931..706e13533 100644 --- a/web/app/components/base/icons/src/vender/line/arrows/ChevronDownDouble.json +++ b/web/app/components/base/icons/src/vender/line/arrows/ChevronDownDouble.json @@ -36,4 +36,4 @@ ] }, "name": "ChevronDownDouble" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/arrows/ChevronRight.json b/web/app/components/base/icons/src/vender/line/arrows/ChevronRight.json index c144e678b..e03a2c8dd 100644 --- a/web/app/components/base/icons/src/vender/line/arrows/ChevronRight.json +++ b/web/app/components/base/icons/src/vender/line/arrows/ChevronRight.json @@ -36,4 +36,4 @@ ] }, "name": "ChevronRight" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/arrows/ChevronSelectorVertical.json b/web/app/components/base/icons/src/vender/line/arrows/ChevronSelectorVertical.json index 84da1f3db..67ff40298 100644 --- a/web/app/components/base/icons/src/vender/line/arrows/ChevronSelectorVertical.json +++ b/web/app/components/base/icons/src/vender/line/arrows/ChevronSelectorVertical.json @@ -26,4 +26,4 @@ ] }, "name": "ChevronSelectorVertical" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/arrows/RefreshCcw01.json b/web/app/components/base/icons/src/vender/line/arrows/RefreshCcw01.json index 30033b41b..8b3cb0d5a 100644 --- a/web/app/components/base/icons/src/vender/line/arrows/RefreshCcw01.json +++ b/web/app/components/base/icons/src/vender/line/arrows/RefreshCcw01.json @@ -26,4 +26,4 @@ ] }, "name": "RefreshCcw01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/arrows/RefreshCw05.json b/web/app/components/base/icons/src/vender/line/arrows/RefreshCw05.json index 5468171fe..1ba0cedfd 100644 --- a/web/app/components/base/icons/src/vender/line/arrows/RefreshCw05.json +++ b/web/app/components/base/icons/src/vender/line/arrows/RefreshCw05.json @@ -26,4 +26,4 @@ ] }, "name": "RefreshCw05" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/arrows/ReverseLeft.json b/web/app/components/base/icons/src/vender/line/arrows/ReverseLeft.json index 48c6d1fbd..b5173968c 100644 --- a/web/app/components/base/icons/src/vender/line/arrows/ReverseLeft.json +++ b/web/app/components/base/icons/src/vender/line/arrows/ReverseLeft.json @@ -36,4 +36,4 @@ ] }, "name": "ReverseLeft" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/communication/AiText.json b/web/app/components/base/icons/src/vender/line/communication/AiText.json index 0f5ff5783..2473c64c2 100644 --- a/web/app/components/base/icons/src/vender/line/communication/AiText.json +++ b/web/app/components/base/icons/src/vender/line/communication/AiText.json @@ -36,4 +36,4 @@ ] }, "name": "AiText" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/communication/ChatBot.json b/web/app/components/base/icons/src/vender/line/communication/ChatBot.json index 69547f935..0e7382d74 100644 --- a/web/app/components/base/icons/src/vender/line/communication/ChatBot.json +++ b/web/app/components/base/icons/src/vender/line/communication/ChatBot.json @@ -90,4 +90,4 @@ ] }, "name": "ChatBot" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/communication/ChatBotSlim.json b/web/app/components/base/icons/src/vender/line/communication/ChatBotSlim.json index 07f6cda56..9be716acd 100644 --- a/web/app/components/base/icons/src/vender/line/communication/ChatBotSlim.json +++ b/web/app/components/base/icons/src/vender/line/communication/ChatBotSlim.json @@ -65,4 +65,4 @@ ] }, "name": "ChatBotSlim" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/communication/CuteRobot.json b/web/app/components/base/icons/src/vender/line/communication/CuteRobot.json index 4ae74d2a7..35596bac9 100644 --- a/web/app/components/base/icons/src/vender/line/communication/CuteRobot.json +++ b/web/app/components/base/icons/src/vender/line/communication/CuteRobot.json @@ -36,4 +36,4 @@ ] }, "name": "CuteRobot" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/communication/MessageCheckRemove.json b/web/app/components/base/icons/src/vender/line/communication/MessageCheckRemove.json index a536c9f34..5d4202b2e 100644 --- a/web/app/components/base/icons/src/vender/line/communication/MessageCheckRemove.json +++ b/web/app/components/base/icons/src/vender/line/communication/MessageCheckRemove.json @@ -36,4 +36,4 @@ ] }, "name": "MessageCheckRemove" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/communication/MessageFastPlus.json b/web/app/components/base/icons/src/vender/line/communication/MessageFastPlus.json index 7d40cc742..988e27832 100644 --- a/web/app/components/base/icons/src/vender/line/communication/MessageFastPlus.json +++ b/web/app/components/base/icons/src/vender/line/communication/MessageFastPlus.json @@ -26,4 +26,4 @@ ] }, "name": "MessageFastPlus" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/development/ArtificialBrain.json b/web/app/components/base/icons/src/vender/line/development/ArtificialBrain.json index 7015ee281..8bc500ea9 100644 --- a/web/app/components/base/icons/src/vender/line/development/ArtificialBrain.json +++ b/web/app/components/base/icons/src/vender/line/development/ArtificialBrain.json @@ -26,4 +26,4 @@ ] }, "name": "ArtificialBrain" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/development/BarChartSquare02.json b/web/app/components/base/icons/src/vender/line/development/BarChartSquare02.json index 5b695a7e7..ef51cbec7 100644 --- a/web/app/components/base/icons/src/vender/line/development/BarChartSquare02.json +++ b/web/app/components/base/icons/src/vender/line/development/BarChartSquare02.json @@ -36,4 +36,4 @@ ] }, "name": "BarChartSquare02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/development/BracketsX.json b/web/app/components/base/icons/src/vender/line/development/BracketsX.json index 08935cc7f..2287a5107 100644 --- a/web/app/components/base/icons/src/vender/line/development/BracketsX.json +++ b/web/app/components/base/icons/src/vender/line/development/BracketsX.json @@ -26,4 +26,4 @@ ] }, "name": "BracketsX" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/development/CodeBrowser.json b/web/app/components/base/icons/src/vender/line/development/CodeBrowser.json index 1d0254d84..7234b42ce 100644 --- a/web/app/components/base/icons/src/vender/line/development/CodeBrowser.json +++ b/web/app/components/base/icons/src/vender/line/development/CodeBrowser.json @@ -36,4 +36,4 @@ ] }, "name": "CodeBrowser" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/development/Container.json b/web/app/components/base/icons/src/vender/line/development/Container.json index 3b15cd8f8..dbedb8aff 100644 --- a/web/app/components/base/icons/src/vender/line/development/Container.json +++ b/web/app/components/base/icons/src/vender/line/development/Container.json @@ -26,4 +26,4 @@ ] }, "name": "Container" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/development/Database01.json b/web/app/components/base/icons/src/vender/line/development/Database01.json index e25b3e7ce..2be197484 100644 --- a/web/app/components/base/icons/src/vender/line/development/Database01.json +++ b/web/app/components/base/icons/src/vender/line/development/Database01.json @@ -26,4 +26,4 @@ ] }, "name": "Database01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/development/Database03.json b/web/app/components/base/icons/src/vender/line/development/Database03.json index 5acf4bf1f..24a004afe 100644 --- a/web/app/components/base/icons/src/vender/line/development/Database03.json +++ b/web/app/components/base/icons/src/vender/line/development/Database03.json @@ -26,4 +26,4 @@ ] }, "name": "Database03" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/development/FileHeart02.json b/web/app/components/base/icons/src/vender/line/development/FileHeart02.json index ef9343dfc..163e64b57 100644 --- a/web/app/components/base/icons/src/vender/line/development/FileHeart02.json +++ b/web/app/components/base/icons/src/vender/line/development/FileHeart02.json @@ -49,4 +49,4 @@ ] }, "name": "FileHeart02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/development/GitBranch01.json b/web/app/components/base/icons/src/vender/line/development/GitBranch01.json index 04205e57c..f9d9d00e5 100644 --- a/web/app/components/base/icons/src/vender/line/development/GitBranch01.json +++ b/web/app/components/base/icons/src/vender/line/development/GitBranch01.json @@ -36,4 +36,4 @@ ] }, "name": "GitBranch01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/development/PromptEngineering.json b/web/app/components/base/icons/src/vender/line/development/PromptEngineering.json index c55bde8f5..97ca2e935 100644 --- a/web/app/components/base/icons/src/vender/line/development/PromptEngineering.json +++ b/web/app/components/base/icons/src/vender/line/development/PromptEngineering.json @@ -62,4 +62,4 @@ ] }, "name": "PromptEngineering" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/development/PuzzlePiece01.json b/web/app/components/base/icons/src/vender/line/development/PuzzlePiece01.json index ce06d6125..672e405ff 100644 --- a/web/app/components/base/icons/src/vender/line/development/PuzzlePiece01.json +++ b/web/app/components/base/icons/src/vender/line/development/PuzzlePiece01.json @@ -63,4 +63,4 @@ ] }, "name": "PuzzlePiece01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/development/TerminalSquare.json b/web/app/components/base/icons/src/vender/line/development/TerminalSquare.json index 7a78b7b93..48fb6ce24 100644 --- a/web/app/components/base/icons/src/vender/line/development/TerminalSquare.json +++ b/web/app/components/base/icons/src/vender/line/development/TerminalSquare.json @@ -36,4 +36,4 @@ ] }, "name": "TerminalSquare" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/development/Variable.json b/web/app/components/base/icons/src/vender/line/development/Variable.json index b7545fe8a..b366f11a0 100644 --- a/web/app/components/base/icons/src/vender/line/development/Variable.json +++ b/web/app/components/base/icons/src/vender/line/development/Variable.json @@ -59,4 +59,4 @@ ] }, "name": "Variable" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/development/Webhooks.json b/web/app/components/base/icons/src/vender/line/development/Webhooks.json index 452194deb..bb9ccf105 100644 --- a/web/app/components/base/icons/src/vender/line/development/Webhooks.json +++ b/web/app/components/base/icons/src/vender/line/development/Webhooks.json @@ -86,4 +86,4 @@ ] }, "name": "Webhooks" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/editor/AlignLeft.json b/web/app/components/base/icons/src/vender/line/editor/AlignLeft.json index ae8b15044..7ddf4d24c 100644 --- a/web/app/components/base/icons/src/vender/line/editor/AlignLeft.json +++ b/web/app/components/base/icons/src/vender/line/editor/AlignLeft.json @@ -36,4 +36,4 @@ ] }, "name": "AlignLeft" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/editor/BezierCurve03.json b/web/app/components/base/icons/src/vender/line/editor/BezierCurve03.json index bc87f9b00..5f76ff1ac 100644 --- a/web/app/components/base/icons/src/vender/line/editor/BezierCurve03.json +++ b/web/app/components/base/icons/src/vender/line/editor/BezierCurve03.json @@ -35,4 +35,4 @@ ] }, "name": "BezierCurve03" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/editor/Collapse.json b/web/app/components/base/icons/src/vender/line/editor/Collapse.json index 5e3cf08ce..224133e0b 100644 --- a/web/app/components/base/icons/src/vender/line/editor/Collapse.json +++ b/web/app/components/base/icons/src/vender/line/editor/Collapse.json @@ -59,4 +59,4 @@ ] }, "name": "Collapse" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/editor/Colors.json b/web/app/components/base/icons/src/vender/line/editor/Colors.json index baee8ee34..050809259 100644 --- a/web/app/components/base/icons/src/vender/line/editor/Colors.json +++ b/web/app/components/base/icons/src/vender/line/editor/Colors.json @@ -36,4 +36,4 @@ ] }, "name": "Colors" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/editor/ImageIndentLeft.json b/web/app/components/base/icons/src/vender/line/editor/ImageIndentLeft.json index 603696d96..33ba61f1c 100644 --- a/web/app/components/base/icons/src/vender/line/editor/ImageIndentLeft.json +++ b/web/app/components/base/icons/src/vender/line/editor/ImageIndentLeft.json @@ -36,4 +36,4 @@ ] }, "name": "ImageIndentLeft" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/editor/LeftIndent02.json b/web/app/components/base/icons/src/vender/line/editor/LeftIndent02.json index 447ae887a..cb77ee97e 100644 --- a/web/app/components/base/icons/src/vender/line/editor/LeftIndent02.json +++ b/web/app/components/base/icons/src/vender/line/editor/LeftIndent02.json @@ -26,4 +26,4 @@ ] }, "name": "LeftIndent02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/editor/LetterSpacing01.json b/web/app/components/base/icons/src/vender/line/editor/LetterSpacing01.json index 98b3cd661..e322926aa 100644 --- a/web/app/components/base/icons/src/vender/line/editor/LetterSpacing01.json +++ b/web/app/components/base/icons/src/vender/line/editor/LetterSpacing01.json @@ -36,4 +36,4 @@ ] }, "name": "LetterSpacing01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/editor/TypeSquare.json b/web/app/components/base/icons/src/vender/line/editor/TypeSquare.json index 195b04774..b381c5142 100644 --- a/web/app/components/base/icons/src/vender/line/editor/TypeSquare.json +++ b/web/app/components/base/icons/src/vender/line/editor/TypeSquare.json @@ -35,4 +35,4 @@ ] }, "name": "TypeSquare" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/education/BookOpen01.json b/web/app/components/base/icons/src/vender/line/education/BookOpen01.json index bfa794134..1c6f46b70 100644 --- a/web/app/components/base/icons/src/vender/line/education/BookOpen01.json +++ b/web/app/components/base/icons/src/vender/line/education/BookOpen01.json @@ -46,4 +46,4 @@ ] }, "name": "BookOpen01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/files/File02.json b/web/app/components/base/icons/src/vender/line/files/File02.json index 110765ade..6c0cf176c 100644 --- a/web/app/components/base/icons/src/vender/line/files/File02.json +++ b/web/app/components/base/icons/src/vender/line/files/File02.json @@ -36,4 +36,4 @@ ] }, "name": "File02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/files/FileArrow01.json b/web/app/components/base/icons/src/vender/line/files/FileArrow01.json index 189f0814d..ce13dd0f5 100644 --- a/web/app/components/base/icons/src/vender/line/files/FileArrow01.json +++ b/web/app/components/base/icons/src/vender/line/files/FileArrow01.json @@ -36,4 +36,4 @@ ] }, "name": "FileArrow01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/files/FileCheck02.json b/web/app/components/base/icons/src/vender/line/files/FileCheck02.json index 9a2e063c0..0b08e61b3 100644 --- a/web/app/components/base/icons/src/vender/line/files/FileCheck02.json +++ b/web/app/components/base/icons/src/vender/line/files/FileCheck02.json @@ -36,4 +36,4 @@ ] }, "name": "FileCheck02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/files/FileDownload02.json b/web/app/components/base/icons/src/vender/line/files/FileDownload02.json index a0dccc280..2c439adb3 100644 --- a/web/app/components/base/icons/src/vender/line/files/FileDownload02.json +++ b/web/app/components/base/icons/src/vender/line/files/FileDownload02.json @@ -26,4 +26,4 @@ ] }, "name": "FileDownload02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/files/FilePlus01.json b/web/app/components/base/icons/src/vender/line/files/FilePlus01.json index 67d878449..470703abe 100644 --- a/web/app/components/base/icons/src/vender/line/files/FilePlus01.json +++ b/web/app/components/base/icons/src/vender/line/files/FilePlus01.json @@ -36,4 +36,4 @@ ] }, "name": "FilePlus01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/files/FilePlus02.json b/web/app/components/base/icons/src/vender/line/files/FilePlus02.json index 447b1e91b..cd55cad95 100644 --- a/web/app/components/base/icons/src/vender/line/files/FilePlus02.json +++ b/web/app/components/base/icons/src/vender/line/files/FilePlus02.json @@ -26,4 +26,4 @@ ] }, "name": "FilePlus02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/files/FileText.json b/web/app/components/base/icons/src/vender/line/files/FileText.json index 536bc4585..12335ec1c 100644 --- a/web/app/components/base/icons/src/vender/line/files/FileText.json +++ b/web/app/components/base/icons/src/vender/line/files/FileText.json @@ -36,4 +36,4 @@ ] }, "name": "FileText" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/files/FileUpload.json b/web/app/components/base/icons/src/vender/line/files/FileUpload.json index 5dc2ec115..6dfa30a35 100644 --- a/web/app/components/base/icons/src/vender/line/files/FileUpload.json +++ b/web/app/components/base/icons/src/vender/line/files/FileUpload.json @@ -49,4 +49,4 @@ ] }, "name": "FileUpload" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/files/Folder.json b/web/app/components/base/icons/src/vender/line/files/Folder.json index 6bbc4380a..84e3cb976 100644 --- a/web/app/components/base/icons/src/vender/line/files/Folder.json +++ b/web/app/components/base/icons/src/vender/line/files/Folder.json @@ -36,4 +36,4 @@ ] }, "name": "Folder" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/financeAndECommerce/Balance.json b/web/app/components/base/icons/src/vender/line/financeAndECommerce/Balance.json index c04fcda51..79bdc7024 100644 --- a/web/app/components/base/icons/src/vender/line/financeAndECommerce/Balance.json +++ b/web/app/components/base/icons/src/vender/line/financeAndECommerce/Balance.json @@ -26,4 +26,4 @@ ] }, "name": "Balance" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/financeAndECommerce/CoinsStacked01.json b/web/app/components/base/icons/src/vender/line/financeAndECommerce/CoinsStacked01.json index 8a971909c..328e38a1c 100644 --- a/web/app/components/base/icons/src/vender/line/financeAndECommerce/CoinsStacked01.json +++ b/web/app/components/base/icons/src/vender/line/financeAndECommerce/CoinsStacked01.json @@ -36,4 +36,4 @@ ] }, "name": "CoinsStacked01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/financeAndECommerce/GoldCoin.json b/web/app/components/base/icons/src/vender/line/financeAndECommerce/GoldCoin.json index f10b5fa7c..7a748bda5 100644 --- a/web/app/components/base/icons/src/vender/line/financeAndECommerce/GoldCoin.json +++ b/web/app/components/base/icons/src/vender/line/financeAndECommerce/GoldCoin.json @@ -117,4 +117,4 @@ ] }, "name": "GoldCoin" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/financeAndECommerce/ReceiptList.json b/web/app/components/base/icons/src/vender/line/financeAndECommerce/ReceiptList.json index 8e9c07087..ac3d3bdfe 100644 --- a/web/app/components/base/icons/src/vender/line/financeAndECommerce/ReceiptList.json +++ b/web/app/components/base/icons/src/vender/line/financeAndECommerce/ReceiptList.json @@ -26,4 +26,4 @@ ] }, "name": "ReceiptList" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/financeAndECommerce/Tag01.json b/web/app/components/base/icons/src/vender/line/financeAndECommerce/Tag01.json index b6f838d72..82cd5af5f 100644 --- a/web/app/components/base/icons/src/vender/line/financeAndECommerce/Tag01.json +++ b/web/app/components/base/icons/src/vender/line/financeAndECommerce/Tag01.json @@ -63,4 +63,4 @@ ] }, "name": "Tag01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/financeAndECommerce/Tag03.json b/web/app/components/base/icons/src/vender/line/financeAndECommerce/Tag03.json index ef0753b8d..2fa00f62f 100644 --- a/web/app/components/base/icons/src/vender/line/financeAndECommerce/Tag03.json +++ b/web/app/components/base/icons/src/vender/line/financeAndECommerce/Tag03.json @@ -36,4 +36,4 @@ ] }, "name": "Tag03" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/AtSign.json b/web/app/components/base/icons/src/vender/line/general/AtSign.json index 0722d8ff3..dd6d9cbbc 100644 --- a/web/app/components/base/icons/src/vender/line/general/AtSign.json +++ b/web/app/components/base/icons/src/vender/line/general/AtSign.json @@ -63,4 +63,4 @@ ] }, "name": "AtSign" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/Bookmark.json b/web/app/components/base/icons/src/vender/line/general/Bookmark.json index 1b6e517be..378bc76be 100644 --- a/web/app/components/base/icons/src/vender/line/general/Bookmark.json +++ b/web/app/components/base/icons/src/vender/line/general/Bookmark.json @@ -26,4 +26,4 @@ ] }, "name": "Bookmark" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/Check.json b/web/app/components/base/icons/src/vender/line/general/Check.json index eae343816..e3265f813 100644 --- a/web/app/components/base/icons/src/vender/line/general/Check.json +++ b/web/app/components/base/icons/src/vender/line/general/Check.json @@ -36,4 +36,4 @@ ] }, "name": "Check" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/CheckDone01.json b/web/app/components/base/icons/src/vender/line/general/CheckDone01.json index 85355f93f..ec3894aa0 100644 --- a/web/app/components/base/icons/src/vender/line/general/CheckDone01.json +++ b/web/app/components/base/icons/src/vender/line/general/CheckDone01.json @@ -36,4 +36,4 @@ ] }, "name": "CheckDone01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/ChecklistSquare.json b/web/app/components/base/icons/src/vender/line/general/ChecklistSquare.json index 737c69623..6cf330994 100644 --- a/web/app/components/base/icons/src/vender/line/general/ChecklistSquare.json +++ b/web/app/components/base/icons/src/vender/line/general/ChecklistSquare.json @@ -33,4 +33,4 @@ ] }, "name": "ChecklistSquare" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/DotsGrid.json b/web/app/components/base/icons/src/vender/line/general/DotsGrid.json index 9aafed2f7..85a24bb14 100644 --- a/web/app/components/base/icons/src/vender/line/general/DotsGrid.json +++ b/web/app/components/base/icons/src/vender/line/general/DotsGrid.json @@ -131,4 +131,4 @@ ] }, "name": "DotsGrid" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/Edit02.json b/web/app/components/base/icons/src/vender/line/general/Edit02.json index 38798fecf..2d32d1da9 100644 --- a/web/app/components/base/icons/src/vender/line/general/Edit02.json +++ b/web/app/components/base/icons/src/vender/line/general/Edit02.json @@ -63,4 +63,4 @@ ] }, "name": "Edit02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/Edit04.json b/web/app/components/base/icons/src/vender/line/general/Edit04.json index 73f275b73..34be95707 100644 --- a/web/app/components/base/icons/src/vender/line/general/Edit04.json +++ b/web/app/components/base/icons/src/vender/line/general/Edit04.json @@ -26,4 +26,4 @@ ] }, "name": "Edit04" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/Edit05.json b/web/app/components/base/icons/src/vender/line/general/Edit05.json index 321336bc2..f1bbf7138 100644 --- a/web/app/components/base/icons/src/vender/line/general/Edit05.json +++ b/web/app/components/base/icons/src/vender/line/general/Edit05.json @@ -63,4 +63,4 @@ ] }, "name": "Edit05" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/Hash02.json b/web/app/components/base/icons/src/vender/line/general/Hash02.json index 41b639f93..bd140198a 100644 --- a/web/app/components/base/icons/src/vender/line/general/Hash02.json +++ b/web/app/components/base/icons/src/vender/line/general/Hash02.json @@ -35,4 +35,4 @@ ] }, "name": "Hash02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/InfoCircle.json b/web/app/components/base/icons/src/vender/line/general/InfoCircle.json index 4017e85ce..6bc285c86 100644 --- a/web/app/components/base/icons/src/vender/line/general/InfoCircle.json +++ b/web/app/components/base/icons/src/vender/line/general/InfoCircle.json @@ -63,4 +63,4 @@ ] }, "name": "InfoCircle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/Link03.json b/web/app/components/base/icons/src/vender/line/general/Link03.json index ccd608f64..4728221b6 100644 --- a/web/app/components/base/icons/src/vender/line/general/Link03.json +++ b/web/app/components/base/icons/src/vender/line/general/Link03.json @@ -54,4 +54,4 @@ ] }, "name": "Link03" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/LinkExternal02.json b/web/app/components/base/icons/src/vender/line/general/LinkExternal02.json index af445595c..7016dd896 100644 --- a/web/app/components/base/icons/src/vender/line/general/LinkExternal02.json +++ b/web/app/components/base/icons/src/vender/line/general/LinkExternal02.json @@ -35,4 +35,4 @@ ] }, "name": "LinkExternal02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/LogIn04.json b/web/app/components/base/icons/src/vender/line/general/LogIn04.json index a8316e9c2..27808a36a 100644 --- a/web/app/components/base/icons/src/vender/line/general/LogIn04.json +++ b/web/app/components/base/icons/src/vender/line/general/LogIn04.json @@ -50,4 +50,4 @@ ] }, "name": "LogIn04" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/LogOut01.json b/web/app/components/base/icons/src/vender/line/general/LogOut01.json index bd2cb3e18..d5c89394e 100644 --- a/web/app/components/base/icons/src/vender/line/general/LogOut01.json +++ b/web/app/components/base/icons/src/vender/line/general/LogOut01.json @@ -36,4 +36,4 @@ ] }, "name": "LogOut01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/LogOut04.json b/web/app/components/base/icons/src/vender/line/general/LogOut04.json index a19bedfe4..80a27ecf3 100644 --- a/web/app/components/base/icons/src/vender/line/general/LogOut04.json +++ b/web/app/components/base/icons/src/vender/line/general/LogOut04.json @@ -50,4 +50,4 @@ ] }, "name": "LogOut04" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/Menu01.json b/web/app/components/base/icons/src/vender/line/general/Menu01.json index 5b3292873..5dfdebf7c 100644 --- a/web/app/components/base/icons/src/vender/line/general/Menu01.json +++ b/web/app/components/base/icons/src/vender/line/general/Menu01.json @@ -36,4 +36,4 @@ ] }, "name": "Menu01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/Pin01.json b/web/app/components/base/icons/src/vender/line/general/Pin01.json index b0e61a237..3ad6bd879 100644 --- a/web/app/components/base/icons/src/vender/line/general/Pin01.json +++ b/web/app/components/base/icons/src/vender/line/general/Pin01.json @@ -36,4 +36,4 @@ ] }, "name": "Pin01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/Pin02.json b/web/app/components/base/icons/src/vender/line/general/Pin02.json index c5b51a5f3..474e7e102 100644 --- a/web/app/components/base/icons/src/vender/line/general/Pin02.json +++ b/web/app/components/base/icons/src/vender/line/general/Pin02.json @@ -26,4 +26,4 @@ ] }, "name": "Pin02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/Plus02.json b/web/app/components/base/icons/src/vender/line/general/Plus02.json index 8a9516f1a..84b07b425 100644 --- a/web/app/components/base/icons/src/vender/line/general/Plus02.json +++ b/web/app/components/base/icons/src/vender/line/general/Plus02.json @@ -36,4 +36,4 @@ ] }, "name": "Plus02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/Refresh.json b/web/app/components/base/icons/src/vender/line/general/Refresh.json index 128dcb7d4..693b9ab4f 100644 --- a/web/app/components/base/icons/src/vender/line/general/Refresh.json +++ b/web/app/components/base/icons/src/vender/line/general/Refresh.json @@ -20,4 +20,4 @@ ] }, "name": "Refresh" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/SearchMenu.json b/web/app/components/base/icons/src/vender/line/general/SearchMenu.json new file mode 100644 index 000000000..5854f2533 --- /dev/null +++ b/web/app/components/base/icons/src/vender/line/general/SearchMenu.json @@ -0,0 +1,77 @@ +{ + "icon": { + "type": "element", + "isRootNode": true, + "name": "svg", + "attributes": { + "width": "32", + "height": "32", + "viewBox": "0 0 32 32", + "fill": "none", + "xmlns": "http://www.w3.org/2000/svg" + }, + "children": [ + { + "type": "element", + "name": "path", + "attributes": { + "d": "M28.0049 16C28.0049 20.4183 24.4231 24 20.0049 24C15.5866 24 12.0049 20.4183 12.0049 16C12.0049 11.5817 15.5866 8 20.0049 8C24.4231 8 28.0049 11.5817 28.0049 16Z", + "stroke": "currentColor", + "stroke-width": "2", + "stroke-linecap": "round", + "stroke-linejoin": "round" + }, + "children": [] + }, + { + "type": "element", + "name": "path", + "attributes": { + "d": "M4.00488 16H6.67155", + "stroke": "currentColor", + "stroke-width": "2", + "stroke-linecap": "round", + "stroke-linejoin": "round" + }, + "children": [] + }, + { + "type": "element", + "name": "path", + "attributes": { + "d": "M4.00488 9.33334H8.00488", + "stroke": "currentColor", + "stroke-width": "2", + "stroke-linecap": "round", + "stroke-linejoin": "round" + }, + "children": [] + }, + { + "type": "element", + "name": "path", + "attributes": { + "d": "M4.00488 22.6667H8.00488", + "stroke": "currentColor", + "stroke-width": "2", + "stroke-linecap": "round", + "stroke-linejoin": "round" + }, + "children": [] + }, + { + "type": "element", + "name": "path", + "attributes": { + "d": "M26 22L29.3333 25.3333", + "stroke": "currentColor", + "stroke-width": "2", + "stroke-linecap": "round", + "stroke-linejoin": "round" + }, + "children": [] + } + ] + }, + "name": "SearchMenu" +} diff --git a/web/app/components/base/icons/src/vender/line/general/SearchMenu.tsx b/web/app/components/base/icons/src/vender/line/general/SearchMenu.tsx new file mode 100644 index 000000000..4826abb20 --- /dev/null +++ b/web/app/components/base/icons/src/vender/line/general/SearchMenu.tsx @@ -0,0 +1,20 @@ +// GENERATE BY script +// DON NOT EDIT IT MANUALLY + +import * as React from 'react' +import data from './SearchMenu.json' +import IconBase from '@/app/components/base/icons/IconBase' +import type { IconData } from '@/app/components/base/icons/IconBase' + +const Icon = ( + { + ref, + ...props + }: React.SVGProps & { + ref?: React.RefObject>; + }, +) => + +Icon.displayName = 'SearchMenu' + +export default Icon diff --git a/web/app/components/base/icons/src/vender/line/general/Settings01.json b/web/app/components/base/icons/src/vender/line/general/Settings01.json index 8734e9f94..ca337d9b2 100644 --- a/web/app/components/base/icons/src/vender/line/general/Settings01.json +++ b/web/app/components/base/icons/src/vender/line/general/Settings01.json @@ -83,4 +83,4 @@ ] }, "name": "Settings01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/Settings04.json b/web/app/components/base/icons/src/vender/line/general/Settings04.json index e46a0548e..4dd34e68a 100644 --- a/web/app/components/base/icons/src/vender/line/general/Settings04.json +++ b/web/app/components/base/icons/src/vender/line/general/Settings04.json @@ -36,4 +36,4 @@ ] }, "name": "Settings04" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/Target04.json b/web/app/components/base/icons/src/vender/line/general/Target04.json index 5c07628ba..731fcc208 100644 --- a/web/app/components/base/icons/src/vender/line/general/Target04.json +++ b/web/app/components/base/icons/src/vender/line/general/Target04.json @@ -62,4 +62,4 @@ ] }, "name": "Target04" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/Upload03.json b/web/app/components/base/icons/src/vender/line/general/Upload03.json index c3490f3cf..bda73041a 100644 --- a/web/app/components/base/icons/src/vender/line/general/Upload03.json +++ b/web/app/components/base/icons/src/vender/line/general/Upload03.json @@ -63,4 +63,4 @@ ] }, "name": "Upload03" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/UploadCloud01.json b/web/app/components/base/icons/src/vender/line/general/UploadCloud01.json index 03e448d7a..5e5411c1c 100644 --- a/web/app/components/base/icons/src/vender/line/general/UploadCloud01.json +++ b/web/app/components/base/icons/src/vender/line/general/UploadCloud01.json @@ -39,4 +39,4 @@ ] }, "name": "UploadCloud01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/X.json b/web/app/components/base/icons/src/vender/line/general/X.json index 5c2fde5df..9c482caa2 100644 --- a/web/app/components/base/icons/src/vender/line/general/X.json +++ b/web/app/components/base/icons/src/vender/line/general/X.json @@ -36,4 +36,4 @@ ] }, "name": "X" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/general/index.ts b/web/app/components/base/icons/src/vender/line/general/index.ts index b5c7a7bbc..1b6c7e730 100644 --- a/web/app/components/base/icons/src/vender/line/general/index.ts +++ b/web/app/components/base/icons/src/vender/line/general/index.ts @@ -19,6 +19,7 @@ export { default as Pin01 } from './Pin01' export { default as Pin02 } from './Pin02' export { default as Plus02 } from './Plus02' export { default as Refresh } from './Refresh' +export { default as SearchMenu } from './SearchMenu' export { default as Settings01 } from './Settings01' export { default as Settings04 } from './Settings04' export { default as Target04 } from './Target04' diff --git a/web/app/components/base/icons/src/vender/line/images/ImagePlus.json b/web/app/components/base/icons/src/vender/line/images/ImagePlus.json index 127b04659..ce3073f1c 100644 --- a/web/app/components/base/icons/src/vender/line/images/ImagePlus.json +++ b/web/app/components/base/icons/src/vender/line/images/ImagePlus.json @@ -36,4 +36,4 @@ ] }, "name": "ImagePlus" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/layout/AlignLeft01.json b/web/app/components/base/icons/src/vender/line/layout/AlignLeft01.json index 5ed5add0d..9450fd240 100644 --- a/web/app/components/base/icons/src/vender/line/layout/AlignLeft01.json +++ b/web/app/components/base/icons/src/vender/line/layout/AlignLeft01.json @@ -36,4 +36,4 @@ ] }, "name": "AlignLeft01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/layout/AlignRight01.json b/web/app/components/base/icons/src/vender/line/layout/AlignRight01.json index 6690e6d47..05ecc9371 100644 --- a/web/app/components/base/icons/src/vender/line/layout/AlignRight01.json +++ b/web/app/components/base/icons/src/vender/line/layout/AlignRight01.json @@ -36,4 +36,4 @@ ] }, "name": "AlignRight01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/layout/Grid01.json b/web/app/components/base/icons/src/vender/line/layout/Grid01.json index 43a385c77..edc374a9c 100644 --- a/web/app/components/base/icons/src/vender/line/layout/Grid01.json +++ b/web/app/components/base/icons/src/vender/line/layout/Grid01.json @@ -80,4 +80,4 @@ ] }, "name": "Grid01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/layout/LayoutGrid02.json b/web/app/components/base/icons/src/vender/line/layout/LayoutGrid02.json index d71e98172..a5e5b2479 100644 --- a/web/app/components/base/icons/src/vender/line/layout/LayoutGrid02.json +++ b/web/app/components/base/icons/src/vender/line/layout/LayoutGrid02.json @@ -26,4 +26,4 @@ ] }, "name": "LayoutGrid02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/mapsAndTravel/Globe01.json b/web/app/components/base/icons/src/vender/line/mapsAndTravel/Globe01.json index 1e0896672..9ccee71b0 100644 --- a/web/app/components/base/icons/src/vender/line/mapsAndTravel/Globe01.json +++ b/web/app/components/base/icons/src/vender/line/mapsAndTravel/Globe01.json @@ -63,4 +63,4 @@ ] }, "name": "Globe01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/mapsAndTravel/Route.json b/web/app/components/base/icons/src/vender/line/mapsAndTravel/Route.json index 19cb83736..cb0b7f01a 100644 --- a/web/app/components/base/icons/src/vender/line/mapsAndTravel/Route.json +++ b/web/app/components/base/icons/src/vender/line/mapsAndTravel/Route.json @@ -63,4 +63,4 @@ ] }, "name": "Route" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/mediaAndDevices/Microphone01.json b/web/app/components/base/icons/src/vender/line/mediaAndDevices/Microphone01.json index 8f273d0a7..193aee5c3 100644 --- a/web/app/components/base/icons/src/vender/line/mediaAndDevices/Microphone01.json +++ b/web/app/components/base/icons/src/vender/line/mediaAndDevices/Microphone01.json @@ -36,4 +36,4 @@ ] }, "name": "Microphone01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/mediaAndDevices/PlayCircle.json b/web/app/components/base/icons/src/vender/line/mediaAndDevices/PlayCircle.json index 278512534..db313deb8 100644 --- a/web/app/components/base/icons/src/vender/line/mediaAndDevices/PlayCircle.json +++ b/web/app/components/base/icons/src/vender/line/mediaAndDevices/PlayCircle.json @@ -83,4 +83,4 @@ ] }, "name": "PlayCircle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/mediaAndDevices/SlidersH.json b/web/app/components/base/icons/src/vender/line/mediaAndDevices/SlidersH.json index fc138eecb..4620cb917 100644 --- a/web/app/components/base/icons/src/vender/line/mediaAndDevices/SlidersH.json +++ b/web/app/components/base/icons/src/vender/line/mediaAndDevices/SlidersH.json @@ -26,4 +26,4 @@ ] }, "name": "SlidersH" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/mediaAndDevices/Speaker.json b/web/app/components/base/icons/src/vender/line/mediaAndDevices/Speaker.json index 3e5cbe171..2cb1df48f 100644 --- a/web/app/components/base/icons/src/vender/line/mediaAndDevices/Speaker.json +++ b/web/app/components/base/icons/src/vender/line/mediaAndDevices/Speaker.json @@ -109,4 +109,4 @@ ] }, "name": "Speaker" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/mediaAndDevices/Stop.json b/web/app/components/base/icons/src/vender/line/mediaAndDevices/Stop.json index 7d2539708..b0860433e 100644 --- a/web/app/components/base/icons/src/vender/line/mediaAndDevices/Stop.json +++ b/web/app/components/base/icons/src/vender/line/mediaAndDevices/Stop.json @@ -63,4 +63,4 @@ ] }, "name": "Stop" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/mediaAndDevices/StopCircle.json b/web/app/components/base/icons/src/vender/line/mediaAndDevices/StopCircle.json index 2d456014b..3a211c78c 100644 --- a/web/app/components/base/icons/src/vender/line/mediaAndDevices/StopCircle.json +++ b/web/app/components/base/icons/src/vender/line/mediaAndDevices/StopCircle.json @@ -56,4 +56,4 @@ ] }, "name": "StopCircle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/others/Apps02.json b/web/app/components/base/icons/src/vender/line/others/Apps02.json index 2ff128f24..31378e175 100644 --- a/web/app/components/base/icons/src/vender/line/others/Apps02.json +++ b/web/app/components/base/icons/src/vender/line/others/Apps02.json @@ -33,4 +33,4 @@ ] }, "name": "Apps02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/others/BubbleX.json b/web/app/components/base/icons/src/vender/line/others/BubbleX.json index 0cb5702c1..7991ed498 100644 --- a/web/app/components/base/icons/src/vender/line/others/BubbleX.json +++ b/web/app/components/base/icons/src/vender/line/others/BubbleX.json @@ -54,4 +54,4 @@ ] }, "name": "BubbleX" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/others/Colors.json b/web/app/components/base/icons/src/vender/line/others/Colors.json index b1832c2fe..904e39fd1 100644 --- a/web/app/components/base/icons/src/vender/line/others/Colors.json +++ b/web/app/components/base/icons/src/vender/line/others/Colors.json @@ -63,4 +63,4 @@ ] }, "name": "Colors" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/others/DragHandle.json b/web/app/components/base/icons/src/vender/line/others/DragHandle.json index c1364aff1..ee1803c15 100644 --- a/web/app/components/base/icons/src/vender/line/others/DragHandle.json +++ b/web/app/components/base/icons/src/vender/line/others/DragHandle.json @@ -35,4 +35,4 @@ ] }, "name": "DragHandle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/others/Env.json b/web/app/components/base/icons/src/vender/line/others/Env.json index 87a88edf3..0cca4da4c 100644 --- a/web/app/components/base/icons/src/vender/line/others/Env.json +++ b/web/app/components/base/icons/src/vender/line/others/Env.json @@ -87,4 +87,4 @@ ] }, "name": "Env" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/others/Exchange02.json b/web/app/components/base/icons/src/vender/line/others/Exchange02.json index 808a9ff64..3672d8b88 100644 --- a/web/app/components/base/icons/src/vender/line/others/Exchange02.json +++ b/web/app/components/base/icons/src/vender/line/others/Exchange02.json @@ -23,4 +23,4 @@ ] }, "name": "Exchange02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/others/FileCode.json b/web/app/components/base/icons/src/vender/line/others/FileCode.json index 41050a559..d61af3fdb 100644 --- a/web/app/components/base/icons/src/vender/line/others/FileCode.json +++ b/web/app/components/base/icons/src/vender/line/others/FileCode.json @@ -23,4 +23,4 @@ ] }, "name": "FileCode" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/others/GlobalVariable.json b/web/app/components/base/icons/src/vender/line/others/GlobalVariable.json index d5fce59b4..600c803f3 100644 --- a/web/app/components/base/icons/src/vender/line/others/GlobalVariable.json +++ b/web/app/components/base/icons/src/vender/line/others/GlobalVariable.json @@ -25,4 +25,4 @@ ] }, "name": "GlobalVariable" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/others/Icon3Dots.json b/web/app/components/base/icons/src/vender/line/others/Icon3Dots.json index 0942222f3..cd56eea90 100644 --- a/web/app/components/base/icons/src/vender/line/others/Icon3Dots.json +++ b/web/app/components/base/icons/src/vender/line/others/Icon3Dots.json @@ -36,4 +36,4 @@ ] }, "name": "Icon3Dots" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/others/LongArrowLeft.json b/web/app/components/base/icons/src/vender/line/others/LongArrowLeft.json index d2646b109..43074803f 100644 --- a/web/app/components/base/icons/src/vender/line/others/LongArrowLeft.json +++ b/web/app/components/base/icons/src/vender/line/others/LongArrowLeft.json @@ -24,4 +24,4 @@ ] }, "name": "LongArrowLeft" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/others/LongArrowRight.json b/web/app/components/base/icons/src/vender/line/others/LongArrowRight.json index 7582b8156..df05126c9 100644 --- a/web/app/components/base/icons/src/vender/line/others/LongArrowRight.json +++ b/web/app/components/base/icons/src/vender/line/others/LongArrowRight.json @@ -24,4 +24,4 @@ ] }, "name": "LongArrowRight" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/others/SearchMenu.json b/web/app/components/base/icons/src/vender/line/others/SearchMenu.json index 522257404..5854f2533 100644 --- a/web/app/components/base/icons/src/vender/line/others/SearchMenu.json +++ b/web/app/components/base/icons/src/vender/line/others/SearchMenu.json @@ -74,4 +74,4 @@ ] }, "name": "SearchMenu" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/others/Tools.json b/web/app/components/base/icons/src/vender/line/others/Tools.json index 0ab6857b0..12068ada0 100644 --- a/web/app/components/base/icons/src/vender/line/others/Tools.json +++ b/web/app/components/base/icons/src/vender/line/others/Tools.json @@ -116,4 +116,4 @@ ] }, "name": "Tools" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/shapes/CubeOutline.json b/web/app/components/base/icons/src/vender/line/shapes/CubeOutline.json index 4091004b7..bfeea58e9 100644 --- a/web/app/components/base/icons/src/vender/line/shapes/CubeOutline.json +++ b/web/app/components/base/icons/src/vender/line/shapes/CubeOutline.json @@ -95,4 +95,4 @@ ] }, "name": "CubeOutline" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/time/ClockFastForward.json b/web/app/components/base/icons/src/vender/line/time/ClockFastForward.json index 26b72084b..72f247895 100644 --- a/web/app/components/base/icons/src/vender/line/time/ClockFastForward.json +++ b/web/app/components/base/icons/src/vender/line/time/ClockFastForward.json @@ -26,4 +26,4 @@ ] }, "name": "ClockFastForward" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/time/ClockPlay.json b/web/app/components/base/icons/src/vender/line/time/ClockPlay.json index 7d3cc48b0..4f6739241 100644 --- a/web/app/components/base/icons/src/vender/line/time/ClockPlay.json +++ b/web/app/components/base/icons/src/vender/line/time/ClockPlay.json @@ -63,4 +63,4 @@ ] }, "name": "ClockPlay" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/time/ClockPlaySlim.json b/web/app/components/base/icons/src/vender/line/time/ClockPlaySlim.json index 348694eee..679078186 100644 --- a/web/app/components/base/icons/src/vender/line/time/ClockPlaySlim.json +++ b/web/app/components/base/icons/src/vender/line/time/ClockPlaySlim.json @@ -36,4 +36,4 @@ ] }, "name": "ClockPlaySlim" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/time/ClockRefresh.json b/web/app/components/base/icons/src/vender/line/time/ClockRefresh.json index 925907ab8..f0fda2c82 100644 --- a/web/app/components/base/icons/src/vender/line/time/ClockRefresh.json +++ b/web/app/components/base/icons/src/vender/line/time/ClockRefresh.json @@ -59,4 +59,4 @@ ] }, "name": "ClockRefresh" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/users/User01.json b/web/app/components/base/icons/src/vender/line/users/User01.json index 55353030f..5b878f8de 100644 --- a/web/app/components/base/icons/src/vender/line/users/User01.json +++ b/web/app/components/base/icons/src/vender/line/users/User01.json @@ -36,4 +36,4 @@ ] }, "name": "User01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/users/Users01.json b/web/app/components/base/icons/src/vender/line/users/Users01.json index 96dbeb30e..497c258bc 100644 --- a/web/app/components/base/icons/src/vender/line/users/Users01.json +++ b/web/app/components/base/icons/src/vender/line/users/Users01.json @@ -36,4 +36,4 @@ ] }, "name": "Users01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/line/weather/Stars02.json b/web/app/components/base/icons/src/vender/line/weather/Stars02.json index 54f6a42ec..fdb25e623 100644 --- a/web/app/components/base/icons/src/vender/line/weather/Stars02.json +++ b/web/app/components/base/icons/src/vender/line/weather/Stars02.json @@ -26,4 +26,4 @@ ] }, "name": "Stars02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/other/AnthropicText.json b/web/app/components/base/icons/src/vender/other/AnthropicText.json index a65ef4774..df844dec2 100644 --- a/web/app/components/base/icons/src/vender/other/AnthropicText.json +++ b/web/app/components/base/icons/src/vender/other/AnthropicText.json @@ -536,4 +536,4 @@ ] }, "name": "AnthropicText" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/other/Generator.json b/web/app/components/base/icons/src/vender/other/Generator.json index 3f24cfe18..a72489d19 100644 --- a/web/app/components/base/icons/src/vender/other/Generator.json +++ b/web/app/components/base/icons/src/vender/other/Generator.json @@ -34,4 +34,4 @@ ] }, "name": "Generator" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/other/Group.json b/web/app/components/base/icons/src/vender/other/Group.json index 078febbc8..5f95dfc36 100644 --- a/web/app/components/base/icons/src/vender/other/Group.json +++ b/web/app/components/base/icons/src/vender/other/Group.json @@ -63,4 +63,4 @@ ] }, "name": "Group" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/other/Mcp.json b/web/app/components/base/icons/src/vender/other/Mcp.json index 7caa70b16..c1162e64a 100644 --- a/web/app/components/base/icons/src/vender/other/Mcp.json +++ b/web/app/components/base/icons/src/vender/other/Mcp.json @@ -32,4 +32,4 @@ ] }, "name": "Mcp" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/other/NoToolPlaceholder.json b/web/app/components/base/icons/src/vender/other/NoToolPlaceholder.json index d33d62d34..db2c952b1 100644 --- a/web/app/components/base/icons/src/vender/other/NoToolPlaceholder.json +++ b/web/app/components/base/icons/src/vender/other/NoToolPlaceholder.json @@ -276,4 +276,4 @@ ] }, "name": "NoToolPlaceholder" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/other/Openai.json b/web/app/components/base/icons/src/vender/other/Openai.json index 236f66fcf..ddf124325 100644 --- a/web/app/components/base/icons/src/vender/other/Openai.json +++ b/web/app/components/base/icons/src/vender/other/Openai.json @@ -77,4 +77,4 @@ ] }, "name": "Openai" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/other/ReplayLine.json b/web/app/components/base/icons/src/vender/other/ReplayLine.json index 0fffbc98f..2cc78753f 100644 --- a/web/app/components/base/icons/src/vender/other/ReplayLine.json +++ b/web/app/components/base/icons/src/vender/other/ReplayLine.json @@ -33,4 +33,4 @@ ] }, "name": "ReplayLine" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/plugin/BoxSparkleFill.json b/web/app/components/base/icons/src/vender/plugin/BoxSparkleFill.json index 3733f98af..55d7c6462 100644 --- a/web/app/components/base/icons/src/vender/plugin/BoxSparkleFill.json +++ b/web/app/components/base/icons/src/vender/plugin/BoxSparkleFill.json @@ -63,4 +63,4 @@ ] }, "name": "BoxSparkleFill" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/plugin/LeftCorner.json b/web/app/components/base/icons/src/vender/plugin/LeftCorner.json index d4cd0cd0e..2374b1cfd 100644 --- a/web/app/components/base/icons/src/vender/plugin/LeftCorner.json +++ b/web/app/components/base/icons/src/vender/plugin/LeftCorner.json @@ -24,4 +24,4 @@ ] }, "name": "LeftCorner" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/FinanceAndECommerce/GoldCoin.json b/web/app/components/base/icons/src/vender/solid/FinanceAndECommerce/GoldCoin.json index dac0e567f..878c1f9f1 100644 --- a/web/app/components/base/icons/src/vender/solid/FinanceAndECommerce/GoldCoin.json +++ b/web/app/components/base/icons/src/vender/solid/FinanceAndECommerce/GoldCoin.json @@ -23,4 +23,4 @@ ] }, "name": "GoldCoin" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/FinanceAndECommerce/Scales02.json b/web/app/components/base/icons/src/vender/solid/FinanceAndECommerce/Scales02.json index 9a781bd62..3dd4e8908 100644 --- a/web/app/components/base/icons/src/vender/solid/FinanceAndECommerce/Scales02.json +++ b/web/app/components/base/icons/src/vender/solid/FinanceAndECommerce/Scales02.json @@ -45,4 +45,4 @@ ] }, "name": "Scales02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/alertsAndFeedback/AlertTriangle.json b/web/app/components/base/icons/src/vender/solid/alertsAndFeedback/AlertTriangle.json index c73fbc585..1aa7089b6 100644 --- a/web/app/components/base/icons/src/vender/solid/alertsAndFeedback/AlertTriangle.json +++ b/web/app/components/base/icons/src/vender/solid/alertsAndFeedback/AlertTriangle.json @@ -35,4 +35,4 @@ ] }, "name": "AlertTriangle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/arrows/ChevronDown.json b/web/app/components/base/icons/src/vender/solid/arrows/ChevronDown.json index ef9a33dc0..b4b6429d9 100644 --- a/web/app/components/base/icons/src/vender/solid/arrows/ChevronDown.json +++ b/web/app/components/base/icons/src/vender/solid/arrows/ChevronDown.json @@ -36,4 +36,4 @@ ] }, "name": "ChevronDown" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/arrows/HighPriority.json b/web/app/components/base/icons/src/vender/solid/arrows/HighPriority.json index 6710fd810..5b6615364 100644 --- a/web/app/components/base/icons/src/vender/solid/arrows/HighPriority.json +++ b/web/app/components/base/icons/src/vender/solid/arrows/HighPriority.json @@ -50,4 +50,4 @@ ] }, "name": "HighPriority" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/communication/AiText.json b/web/app/components/base/icons/src/vender/solid/communication/AiText.json index c6e30fbf0..65860e58b 100644 --- a/web/app/components/base/icons/src/vender/solid/communication/AiText.json +++ b/web/app/components/base/icons/src/vender/solid/communication/AiText.json @@ -50,4 +50,4 @@ ] }, "name": "AiText" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/communication/BubbleTextMod.json b/web/app/components/base/icons/src/vender/solid/communication/BubbleTextMod.json index fceddcc72..7b2e964a6 100644 --- a/web/app/components/base/icons/src/vender/solid/communication/BubbleTextMod.json +++ b/web/app/components/base/icons/src/vender/solid/communication/BubbleTextMod.json @@ -25,4 +25,4 @@ ] }, "name": "BubbleTextMod" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/communication/ChatBot.json b/web/app/components/base/icons/src/vender/solid/communication/ChatBot.json index 024b0edbe..0378d60a5 100644 --- a/web/app/components/base/icons/src/vender/solid/communication/ChatBot.json +++ b/web/app/components/base/icons/src/vender/solid/communication/ChatBot.json @@ -55,4 +55,4 @@ ] }, "name": "ChatBot" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/communication/CuteRobot.json b/web/app/components/base/icons/src/vender/solid/communication/CuteRobot.json index 5b36575f5..fa9786473 100644 --- a/web/app/components/base/icons/src/vender/solid/communication/CuteRobot.json +++ b/web/app/components/base/icons/src/vender/solid/communication/CuteRobot.json @@ -35,4 +35,4 @@ ] }, "name": "CuteRobot" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/communication/EditList.json b/web/app/components/base/icons/src/vender/solid/communication/EditList.json index 436f0be9f..51278466c 100644 --- a/web/app/components/base/icons/src/vender/solid/communication/EditList.json +++ b/web/app/components/base/icons/src/vender/solid/communication/EditList.json @@ -50,4 +50,4 @@ ] }, "name": "EditList" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/communication/ListSparkle.json b/web/app/components/base/icons/src/vender/solid/communication/ListSparkle.json index 2e348e4b8..160172c88 100644 --- a/web/app/components/base/icons/src/vender/solid/communication/ListSparkle.json +++ b/web/app/components/base/icons/src/vender/solid/communication/ListSparkle.json @@ -50,4 +50,4 @@ ] }, "name": "ListSparkle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/communication/Logic.json b/web/app/components/base/icons/src/vender/solid/communication/Logic.json index 57f86f4dd..fa55d1c35 100644 --- a/web/app/components/base/icons/src/vender/solid/communication/Logic.json +++ b/web/app/components/base/icons/src/vender/solid/communication/Logic.json @@ -50,4 +50,4 @@ ] }, "name": "Logic" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/communication/MessageDotsCircle.json b/web/app/components/base/icons/src/vender/solid/communication/MessageDotsCircle.json index dca92bf5d..e4f41f22b 100644 --- a/web/app/components/base/icons/src/vender/solid/communication/MessageDotsCircle.json +++ b/web/app/components/base/icons/src/vender/solid/communication/MessageDotsCircle.json @@ -35,4 +35,4 @@ ] }, "name": "MessageDotsCircle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/communication/MessageFast.json b/web/app/components/base/icons/src/vender/solid/communication/MessageFast.json index 4580398f3..b859b1f3f 100644 --- a/web/app/components/base/icons/src/vender/solid/communication/MessageFast.json +++ b/web/app/components/base/icons/src/vender/solid/communication/MessageFast.json @@ -25,4 +25,4 @@ ] }, "name": "MessageFast" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/communication/MessageHeartCircle.json b/web/app/components/base/icons/src/vender/solid/communication/MessageHeartCircle.json index 84769ba90..ede7ecdb8 100644 --- a/web/app/components/base/icons/src/vender/solid/communication/MessageHeartCircle.json +++ b/web/app/components/base/icons/src/vender/solid/communication/MessageHeartCircle.json @@ -35,4 +35,4 @@ ] }, "name": "MessageHeartCircle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/communication/MessageSmileSquare.json b/web/app/components/base/icons/src/vender/solid/communication/MessageSmileSquare.json index 7810d9043..466f1d020 100644 --- a/web/app/components/base/icons/src/vender/solid/communication/MessageSmileSquare.json +++ b/web/app/components/base/icons/src/vender/solid/communication/MessageSmileSquare.json @@ -35,4 +35,4 @@ ] }, "name": "MessageSmileSquare" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/communication/Send03.json b/web/app/components/base/icons/src/vender/solid/communication/Send03.json index c6ff53483..8d0373ba7 100644 --- a/web/app/components/base/icons/src/vender/solid/communication/Send03.json +++ b/web/app/components/base/icons/src/vender/solid/communication/Send03.json @@ -33,4 +33,4 @@ ] }, "name": "Send03" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/development/ApiConnection.json b/web/app/components/base/icons/src/vender/solid/development/ApiConnection.json index 6aafba963..54a052241 100644 --- a/web/app/components/base/icons/src/vender/solid/development/ApiConnection.json +++ b/web/app/components/base/icons/src/vender/solid/development/ApiConnection.json @@ -50,4 +50,4 @@ ] }, "name": "ApiConnection" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/development/ApiConnectionMod.json b/web/app/components/base/icons/src/vender/solid/development/ApiConnectionMod.json index e8ebcc744..21efdaa13 100644 --- a/web/app/components/base/icons/src/vender/solid/development/ApiConnectionMod.json +++ b/web/app/components/base/icons/src/vender/solid/development/ApiConnectionMod.json @@ -35,4 +35,4 @@ ] }, "name": "ApiConnectionMod" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/development/BarChartSquare02.json b/web/app/components/base/icons/src/vender/solid/development/BarChartSquare02.json index 14b274eef..8ae42ed95 100644 --- a/web/app/components/base/icons/src/vender/solid/development/BarChartSquare02.json +++ b/web/app/components/base/icons/src/vender/solid/development/BarChartSquare02.json @@ -35,4 +35,4 @@ ] }, "name": "BarChartSquare02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/development/Container.json b/web/app/components/base/icons/src/vender/solid/development/Container.json index c2c3701b4..b0d23fef7 100644 --- a/web/app/components/base/icons/src/vender/solid/development/Container.json +++ b/web/app/components/base/icons/src/vender/solid/development/Container.json @@ -41,4 +41,4 @@ ] }, "name": "Container" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/development/Database02.json b/web/app/components/base/icons/src/vender/solid/development/Database02.json index a1c523061..b18d20eae 100644 --- a/web/app/components/base/icons/src/vender/solid/development/Database02.json +++ b/web/app/components/base/icons/src/vender/solid/development/Database02.json @@ -43,4 +43,4 @@ ] }, "name": "Database02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/development/Database03.json b/web/app/components/base/icons/src/vender/solid/development/Database03.json index fa0c7ce94..b00726139 100644 --- a/web/app/components/base/icons/src/vender/solid/development/Database03.json +++ b/web/app/components/base/icons/src/vender/solid/development/Database03.json @@ -25,4 +25,4 @@ ] }, "name": "Database03" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/development/FileHeart02.json b/web/app/components/base/icons/src/vender/solid/development/FileHeart02.json index 08df0f27d..681806b16 100644 --- a/web/app/components/base/icons/src/vender/solid/development/FileHeart02.json +++ b/web/app/components/base/icons/src/vender/solid/development/FileHeart02.json @@ -47,4 +47,4 @@ ] }, "name": "FileHeart02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/development/PatternRecognition.json b/web/app/components/base/icons/src/vender/solid/development/PatternRecognition.json index 3d13c32b8..3b05d5ba8 100644 --- a/web/app/components/base/icons/src/vender/solid/development/PatternRecognition.json +++ b/web/app/components/base/icons/src/vender/solid/development/PatternRecognition.json @@ -95,4 +95,4 @@ ] }, "name": "PatternRecognition" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/development/PromptEngineering.json b/web/app/components/base/icons/src/vender/solid/development/PromptEngineering.json index 01fbac5e9..a34a3f4fe 100644 --- a/web/app/components/base/icons/src/vender/solid/development/PromptEngineering.json +++ b/web/app/components/base/icons/src/vender/solid/development/PromptEngineering.json @@ -50,4 +50,4 @@ ] }, "name": "PromptEngineering" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/development/PuzzlePiece01.json b/web/app/components/base/icons/src/vender/solid/development/PuzzlePiece01.json index f4008c81e..20e6719fb 100644 --- a/web/app/components/base/icons/src/vender/solid/development/PuzzlePiece01.json +++ b/web/app/components/base/icons/src/vender/solid/development/PuzzlePiece01.json @@ -35,4 +35,4 @@ ] }, "name": "PuzzlePiece01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/development/Semantic.json b/web/app/components/base/icons/src/vender/solid/development/Semantic.json index 333b3fa1c..d9f6eeeb7 100644 --- a/web/app/components/base/icons/src/vender/solid/development/Semantic.json +++ b/web/app/components/base/icons/src/vender/solid/development/Semantic.json @@ -50,4 +50,4 @@ ] }, "name": "Semantic" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/development/TerminalSquare.json b/web/app/components/base/icons/src/vender/solid/development/TerminalSquare.json index 7716cfd24..bf3c05a3b 100644 --- a/web/app/components/base/icons/src/vender/solid/development/TerminalSquare.json +++ b/web/app/components/base/icons/src/vender/solid/development/TerminalSquare.json @@ -35,4 +35,4 @@ ] }, "name": "TerminalSquare" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/development/Variable02.json b/web/app/components/base/icons/src/vender/solid/development/Variable02.json index f506afd8b..d957d38d4 100644 --- a/web/app/components/base/icons/src/vender/solid/development/Variable02.json +++ b/web/app/components/base/icons/src/vender/solid/development/Variable02.json @@ -59,4 +59,4 @@ ] }, "name": "Variable02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/editor/Brush01.json b/web/app/components/base/icons/src/vender/solid/editor/Brush01.json index 049e5f292..4087091bc 100644 --- a/web/app/components/base/icons/src/vender/solid/editor/Brush01.json +++ b/web/app/components/base/icons/src/vender/solid/editor/Brush01.json @@ -32,4 +32,4 @@ ] }, "name": "Brush01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/editor/Citations.json b/web/app/components/base/icons/src/vender/solid/editor/Citations.json index 79d56b1a6..1f7aa9379 100644 --- a/web/app/components/base/icons/src/vender/solid/editor/Citations.json +++ b/web/app/components/base/icons/src/vender/solid/editor/Citations.json @@ -33,4 +33,4 @@ ] }, "name": "Citations" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/editor/Colors.json b/web/app/components/base/icons/src/vender/solid/editor/Colors.json index 6e5dc6904..6fc4010c2 100644 --- a/web/app/components/base/icons/src/vender/solid/editor/Colors.json +++ b/web/app/components/base/icons/src/vender/solid/editor/Colors.json @@ -59,4 +59,4 @@ ] }, "name": "Colors" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/editor/Paragraph.json b/web/app/components/base/icons/src/vender/solid/editor/Paragraph.json index a16f07607..747f8e50b 100644 --- a/web/app/components/base/icons/src/vender/solid/editor/Paragraph.json +++ b/web/app/components/base/icons/src/vender/solid/editor/Paragraph.json @@ -41,4 +41,4 @@ ] }, "name": "Paragraph" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/editor/TypeSquare.json b/web/app/components/base/icons/src/vender/solid/editor/TypeSquare.json index f901b0737..9e6c72cf6 100644 --- a/web/app/components/base/icons/src/vender/solid/editor/TypeSquare.json +++ b/web/app/components/base/icons/src/vender/solid/editor/TypeSquare.json @@ -25,4 +25,4 @@ ] }, "name": "TypeSquare" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/education/Beaker02.json b/web/app/components/base/icons/src/vender/solid/education/Beaker02.json index 2f7830084..b6dfd318e 100644 --- a/web/app/components/base/icons/src/vender/solid/education/Beaker02.json +++ b/web/app/components/base/icons/src/vender/solid/education/Beaker02.json @@ -35,4 +35,4 @@ ] }, "name": "Beaker02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/education/BubbleText.json b/web/app/components/base/icons/src/vender/solid/education/BubbleText.json index 999f0db97..e1b4b54fd 100644 --- a/web/app/components/base/icons/src/vender/solid/education/BubbleText.json +++ b/web/app/components/base/icons/src/vender/solid/education/BubbleText.json @@ -35,4 +35,4 @@ ] }, "name": "BubbleText" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/education/Heart02.json b/web/app/components/base/icons/src/vender/solid/education/Heart02.json index 8cecaaee8..58ffe0c6f 100644 --- a/web/app/components/base/icons/src/vender/solid/education/Heart02.json +++ b/web/app/components/base/icons/src/vender/solid/education/Heart02.json @@ -23,4 +23,4 @@ ] }, "name": "Heart02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/education/Unblur.json b/web/app/components/base/icons/src/vender/solid/education/Unblur.json index 13b8bb36f..33c43170f 100644 --- a/web/app/components/base/icons/src/vender/solid/education/Unblur.json +++ b/web/app/components/base/icons/src/vender/solid/education/Unblur.json @@ -149,4 +149,4 @@ ] }, "name": "Unblur" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/files/File05.json b/web/app/components/base/icons/src/vender/solid/files/File05.json index 17b962974..ead7649bc 100644 --- a/web/app/components/base/icons/src/vender/solid/files/File05.json +++ b/web/app/components/base/icons/src/vender/solid/files/File05.json @@ -52,4 +52,4 @@ ] }, "name": "File05" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/files/FileSearch02.json b/web/app/components/base/icons/src/vender/solid/files/FileSearch02.json index 7f8b0e8c7..e1decb16a 100644 --- a/web/app/components/base/icons/src/vender/solid/files/FileSearch02.json +++ b/web/app/components/base/icons/src/vender/solid/files/FileSearch02.json @@ -54,4 +54,4 @@ ] }, "name": "FileSearch02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/files/FileZip.json b/web/app/components/base/icons/src/vender/solid/files/FileZip.json index 11fe82391..3d58745fa 100644 --- a/web/app/components/base/icons/src/vender/solid/files/FileZip.json +++ b/web/app/components/base/icons/src/vender/solid/files/FileZip.json @@ -44,4 +44,4 @@ ] }, "name": "FileZip" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/files/Folder.json b/web/app/components/base/icons/src/vender/solid/files/Folder.json index 4fc5e5f51..50c483bc9 100644 --- a/web/app/components/base/icons/src/vender/solid/files/Folder.json +++ b/web/app/components/base/icons/src/vender/solid/files/Folder.json @@ -35,4 +35,4 @@ ] }, "name": "Folder" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/AnswerTriangle.json b/web/app/components/base/icons/src/vender/solid/general/AnswerTriangle.json index a4b628383..030e1efed 100644 --- a/web/app/components/base/icons/src/vender/solid/general/AnswerTriangle.json +++ b/web/app/components/base/icons/src/vender/solid/general/AnswerTriangle.json @@ -24,4 +24,4 @@ ] }, "name": "AnswerTriangle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/ArrowDownRoundFill.json b/web/app/components/base/icons/src/vender/solid/general/ArrowDownRoundFill.json index 4e7da3c80..8367c942c 100644 --- a/web/app/components/base/icons/src/vender/solid/general/ArrowDownRoundFill.json +++ b/web/app/components/base/icons/src/vender/solid/general/ArrowDownRoundFill.json @@ -33,4 +33,4 @@ ] }, "name": "ArrowDownRoundFill" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/CheckCircle.json b/web/app/components/base/icons/src/vender/solid/general/CheckCircle.json index 1b567e859..403a5fe1c 100644 --- a/web/app/components/base/icons/src/vender/solid/general/CheckCircle.json +++ b/web/app/components/base/icons/src/vender/solid/general/CheckCircle.json @@ -35,4 +35,4 @@ ] }, "name": "CheckCircle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/CheckDone01.json b/web/app/components/base/icons/src/vender/solid/general/CheckDone01.json index b4d5530b0..57a48650f 100644 --- a/web/app/components/base/icons/src/vender/solid/general/CheckDone01.json +++ b/web/app/components/base/icons/src/vender/solid/general/CheckDone01.json @@ -34,4 +34,4 @@ ] }, "name": "CheckDone01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/Download02.json b/web/app/components/base/icons/src/vender/solid/general/Download02.json index 5854e6430..8afe46c93 100644 --- a/web/app/components/base/icons/src/vender/solid/general/Download02.json +++ b/web/app/components/base/icons/src/vender/solid/general/Download02.json @@ -26,4 +26,4 @@ ] }, "name": "Download02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/Edit03.json b/web/app/components/base/icons/src/vender/solid/general/Edit03.json index f736ef56d..ddf3a0d23 100644 --- a/web/app/components/base/icons/src/vender/solid/general/Edit03.json +++ b/web/app/components/base/icons/src/vender/solid/general/Edit03.json @@ -54,4 +54,4 @@ ] }, "name": "Edit03" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/Edit04.json b/web/app/components/base/icons/src/vender/solid/general/Edit04.json index aa923c286..c254f600a 100644 --- a/web/app/components/base/icons/src/vender/solid/general/Edit04.json +++ b/web/app/components/base/icons/src/vender/solid/general/Edit04.json @@ -36,4 +36,4 @@ ] }, "name": "Edit04" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/Eye.json b/web/app/components/base/icons/src/vender/solid/general/Eye.json index a7e63484d..a76bb8172 100644 --- a/web/app/components/base/icons/src/vender/solid/general/Eye.json +++ b/web/app/components/base/icons/src/vender/solid/general/Eye.json @@ -34,4 +34,4 @@ ] }, "name": "Eye" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/Github.json b/web/app/components/base/icons/src/vender/solid/general/Github.json index 46e694215..a46c81bfe 100644 --- a/web/app/components/base/icons/src/vender/solid/general/Github.json +++ b/web/app/components/base/icons/src/vender/solid/general/Github.json @@ -33,4 +33,4 @@ ] }, "name": "Github" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/MessageClockCircle.json b/web/app/components/base/icons/src/vender/solid/general/MessageClockCircle.json index 4307f82ef..d52347f6d 100644 --- a/web/app/components/base/icons/src/vender/solid/general/MessageClockCircle.json +++ b/web/app/components/base/icons/src/vender/solid/general/MessageClockCircle.json @@ -33,4 +33,4 @@ ] }, "name": "MessageClockCircle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/PlusCircle.json b/web/app/components/base/icons/src/vender/solid/general/PlusCircle.json index 005a7ba5b..e3a86132e 100644 --- a/web/app/components/base/icons/src/vender/solid/general/PlusCircle.json +++ b/web/app/components/base/icons/src/vender/solid/general/PlusCircle.json @@ -35,4 +35,4 @@ ] }, "name": "PlusCircle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/QuestionTriangle.json b/web/app/components/base/icons/src/vender/solid/general/QuestionTriangle.json index 8830ee583..32df4b0cd 100644 --- a/web/app/components/base/icons/src/vender/solid/general/QuestionTriangle.json +++ b/web/app/components/base/icons/src/vender/solid/general/QuestionTriangle.json @@ -42,4 +42,4 @@ ] }, "name": "QuestionTriangle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/SearchMd.json b/web/app/components/base/icons/src/vender/solid/general/SearchMd.json index 808195f1f..89cf471ca 100644 --- a/web/app/components/base/icons/src/vender/solid/general/SearchMd.json +++ b/web/app/components/base/icons/src/vender/solid/general/SearchMd.json @@ -35,4 +35,4 @@ ] }, "name": "SearchMd" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/Target04.json b/web/app/components/base/icons/src/vender/solid/general/Target04.json index 6b22fab88..70895ccc0 100644 --- a/web/app/components/base/icons/src/vender/solid/general/Target04.json +++ b/web/app/components/base/icons/src/vender/solid/general/Target04.json @@ -43,4 +43,4 @@ ] }, "name": "Target04" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/Tool03.json b/web/app/components/base/icons/src/vender/solid/general/Tool03.json index 0a7f1ab96..843fb36fb 100644 --- a/web/app/components/base/icons/src/vender/solid/general/Tool03.json +++ b/web/app/components/base/icons/src/vender/solid/general/Tool03.json @@ -59,4 +59,4 @@ ] }, "name": "Tool03" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/XCircle.json b/web/app/components/base/icons/src/vender/solid/general/XCircle.json index dd269fafc..5e09c5a9e 100644 --- a/web/app/components/base/icons/src/vender/solid/general/XCircle.json +++ b/web/app/components/base/icons/src/vender/solid/general/XCircle.json @@ -26,4 +26,4 @@ ] }, "name": "XCircle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/ZapFast.json b/web/app/components/base/icons/src/vender/solid/general/ZapFast.json index 865a48ee6..418a5c001 100644 --- a/web/app/components/base/icons/src/vender/solid/general/ZapFast.json +++ b/web/app/components/base/icons/src/vender/solid/general/ZapFast.json @@ -76,4 +76,4 @@ ] }, "name": "ZapFast" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/general/ZapNarrow.json b/web/app/components/base/icons/src/vender/solid/general/ZapNarrow.json index 740c823f6..27a8059fc 100644 --- a/web/app/components/base/icons/src/vender/solid/general/ZapNarrow.json +++ b/web/app/components/base/icons/src/vender/solid/general/ZapNarrow.json @@ -35,4 +35,4 @@ ] }, "name": "ZapNarrow" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/layout/Grid01.json b/web/app/components/base/icons/src/vender/solid/layout/Grid01.json index 722cdecef..35d419023 100644 --- a/web/app/components/base/icons/src/vender/solid/layout/Grid01.json +++ b/web/app/components/base/icons/src/vender/solid/layout/Grid01.json @@ -76,4 +76,4 @@ ] }, "name": "Grid01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/mapsAndTravel/Globe06.json b/web/app/components/base/icons/src/vender/solid/mapsAndTravel/Globe06.json index 6cc565ffd..b86197ae7 100644 --- a/web/app/components/base/icons/src/vender/solid/mapsAndTravel/Globe06.json +++ b/web/app/components/base/icons/src/vender/solid/mapsAndTravel/Globe06.json @@ -54,4 +54,4 @@ ] }, "name": "Globe06" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/mapsAndTravel/Route.json b/web/app/components/base/icons/src/vender/solid/mapsAndTravel/Route.json index 24d3f3595..ac94bf210 100644 --- a/web/app/components/base/icons/src/vender/solid/mapsAndTravel/Route.json +++ b/web/app/components/base/icons/src/vender/solid/mapsAndTravel/Route.json @@ -55,4 +55,4 @@ ] }, "name": "Route" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/AudioSupportIcon.json b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/AudioSupportIcon.json index cd3006b76..aaab12867 100644 --- a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/AudioSupportIcon.json +++ b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/AudioSupportIcon.json @@ -23,4 +23,4 @@ ] }, "name": "AudioSupportIcon" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/DocumentSupportIcon.json b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/DocumentSupportIcon.json index 49cb6a521..1047de09e 100644 --- a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/DocumentSupportIcon.json +++ b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/DocumentSupportIcon.json @@ -23,4 +23,4 @@ ] }, "name": "DocumentSupportIcon" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicBox.json b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicBox.json index 4668e9eba..ee079108c 100644 --- a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicBox.json +++ b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicBox.json @@ -61,4 +61,4 @@ ] }, "name": "MagicBox" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicEyes.json b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicEyes.json index 00e16960a..e7c0b53bf 100644 --- a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicEyes.json +++ b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicEyes.json @@ -35,4 +35,4 @@ ] }, "name": "MagicEyes" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicWand.json b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicWand.json index bf13ab9e0..d9852c839 100644 --- a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicWand.json +++ b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/MagicWand.json @@ -70,4 +70,4 @@ ] }, "name": "MagicWand" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Microphone01.json b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Microphone01.json index 36aad4364..95ff504b0 100644 --- a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Microphone01.json +++ b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Microphone01.json @@ -52,4 +52,4 @@ ] }, "name": "Microphone01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Play.json b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Play.json index b32d786e4..dc3cb6b4c 100644 --- a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Play.json +++ b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Play.json @@ -35,4 +35,4 @@ ] }, "name": "Play" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Robot.json b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Robot.json index 650ca3652..616821956 100644 --- a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Robot.json +++ b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Robot.json @@ -35,4 +35,4 @@ ] }, "name": "Robot" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Sliders02.json b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Sliders02.json index d72b99aa5..015509fca 100644 --- a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Sliders02.json +++ b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Sliders02.json @@ -74,4 +74,4 @@ ] }, "name": "Sliders02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Speaker.json b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Speaker.json index 3e5cbe171..2cb1df48f 100644 --- a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Speaker.json +++ b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/Speaker.json @@ -109,4 +109,4 @@ ] }, "name": "Speaker" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/StopCircle.json b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/StopCircle.json index 67e02fca6..62ae33178 100644 --- a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/StopCircle.json +++ b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/StopCircle.json @@ -35,4 +35,4 @@ ] }, "name": "StopCircle" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/VideoSupportIcon.json b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/VideoSupportIcon.json index 4bc6881a5..c801c12c4 100644 --- a/web/app/components/base/icons/src/vender/solid/mediaAndDevices/VideoSupportIcon.json +++ b/web/app/components/base/icons/src/vender/solid/mediaAndDevices/VideoSupportIcon.json @@ -23,4 +23,4 @@ ] }, "name": "VideoSupportIcon" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/security/Lock01.json b/web/app/components/base/icons/src/vender/solid/security/Lock01.json index aa01bc574..080a309f4 100644 --- a/web/app/components/base/icons/src/vender/solid/security/Lock01.json +++ b/web/app/components/base/icons/src/vender/solid/security/Lock01.json @@ -35,4 +35,4 @@ ] }, "name": "Lock01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/shapes/Corner.json b/web/app/components/base/icons/src/vender/solid/shapes/Corner.json index 2f35483a6..23e1194c7 100644 --- a/web/app/components/base/icons/src/vender/solid/shapes/Corner.json +++ b/web/app/components/base/icons/src/vender/solid/shapes/Corner.json @@ -24,4 +24,4 @@ ] }, "name": "Corner" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/shapes/Star04.json b/web/app/components/base/icons/src/vender/solid/shapes/Star04.json index 5e5393a9a..eba208cca 100644 --- a/web/app/components/base/icons/src/vender/solid/shapes/Star04.json +++ b/web/app/components/base/icons/src/vender/solid/shapes/Star04.json @@ -33,4 +33,4 @@ ] }, "name": "Star04" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/shapes/Star06.json b/web/app/components/base/icons/src/vender/solid/shapes/Star06.json index 046660237..5baa4d9a0 100644 --- a/web/app/components/base/icons/src/vender/solid/shapes/Star06.json +++ b/web/app/components/base/icons/src/vender/solid/shapes/Star06.json @@ -59,4 +59,4 @@ ] }, "name": "Star06" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/users/User01.json b/web/app/components/base/icons/src/vender/solid/users/User01.json index c9b8ea90d..110cb2c02 100644 --- a/web/app/components/base/icons/src/vender/solid/users/User01.json +++ b/web/app/components/base/icons/src/vender/solid/users/User01.json @@ -54,4 +54,4 @@ ] }, "name": "User01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/users/UserEdit02.json b/web/app/components/base/icons/src/vender/solid/users/UserEdit02.json index f4451ea16..7040d17cc 100644 --- a/web/app/components/base/icons/src/vender/solid/users/UserEdit02.json +++ b/web/app/components/base/icons/src/vender/solid/users/UserEdit02.json @@ -89,4 +89,4 @@ ] }, "name": "UserEdit02" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/users/Users01.json b/web/app/components/base/icons/src/vender/solid/users/Users01.json index c18d59a00..9c78dd5a0 100644 --- a/web/app/components/base/icons/src/vender/solid/users/Users01.json +++ b/web/app/components/base/icons/src/vender/solid/users/Users01.json @@ -76,4 +76,4 @@ ] }, "name": "Users01" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/solid/users/UsersPlus.json b/web/app/components/base/icons/src/vender/solid/users/UsersPlus.json index a70117f65..af8c22709 100644 --- a/web/app/components/base/icons/src/vender/solid/users/UsersPlus.json +++ b/web/app/components/base/icons/src/vender/solid/users/UsersPlus.json @@ -74,4 +74,4 @@ ] }, "name": "UsersPlus" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/system/AutoUpdateLine.json b/web/app/components/base/icons/src/vender/system/AutoUpdateLine.json new file mode 100644 index 000000000..5acc316bd --- /dev/null +++ b/web/app/components/base/icons/src/vender/system/AutoUpdateLine.json @@ -0,0 +1,37 @@ +{ + "icon": { + "type": "element", + "isRootNode": true, + "name": "svg", + "attributes": { + "width": "24", + "height": "24", + "viewBox": "0 0 24 24", + "fill": "none", + "xmlns": "http://www.w3.org/2000/svg" + }, + "children": [ + { + "type": "element", + "name": "path", + "attributes": { + "d": "M5.46257 4.43262C7.21556 2.91688 9.5007 2 12 2C17.5228 2 22 6.47715 22 12C22 14.1361 21.3302 16.1158 20.1892 17.7406L17 12H20C20 7.58172 16.4183 4 12 4C9.84982 4 7.89777 4.84827 6.46023 6.22842L5.46257 4.43262ZM18.5374 19.5674C16.7844 21.0831 14.4993 22 12 22C6.47715 22 2 17.5228 2 12C2 9.86386 2.66979 7.88416 3.8108 6.25944L7 12H4C4 16.4183 7.58172 20 12 20C14.1502 20 16.1022 19.1517 17.5398 17.7716L18.5374 19.5674Z", + "fill": "currentColor" + }, + "children": [] + }, + { + "type": "element", + "name": "path", + "attributes": { + "fill-rule": "evenodd", + "clip-rule": "evenodd", + "d": "M16.3308 16H14.2915L13.6249 13.9476H10.3761L9.70846 16H7.66918L10.7759 7H13.2281L16.3308 16ZM10.8595 12.4622H13.1435L12.0378 9.05639H11.9673L10.8595 12.4622Z", + "fill": "currentColor" + }, + "children": [] + } + ] + }, + "name": "AutoUpdateLine" +} diff --git a/web/app/components/base/icons/src/vender/system/AutoUpdateLine.tsx b/web/app/components/base/icons/src/vender/system/AutoUpdateLine.tsx new file mode 100644 index 000000000..d162edaa5 --- /dev/null +++ b/web/app/components/base/icons/src/vender/system/AutoUpdateLine.tsx @@ -0,0 +1,20 @@ +// GENERATE BY script +// DON NOT EDIT IT MANUALLY + +import * as React from 'react' +import data from './AutoUpdateLine.json' +import IconBase from '@/app/components/base/icons/IconBase' +import type { IconData } from '@/app/components/base/icons/IconBase' + +const Icon = ( + { + ref, + ...props + }: React.SVGProps & { + ref?: React.RefObject>; + }, +) => + +Icon.displayName = 'AutoUpdateLine' + +export default Icon diff --git a/web/app/components/base/icons/src/vender/system/index.ts b/web/app/components/base/icons/src/vender/system/index.ts new file mode 100644 index 000000000..01553789b --- /dev/null +++ b/web/app/components/base/icons/src/vender/system/index.ts @@ -0,0 +1 @@ +export { default as AutoUpdateLine } from './AutoUpdateLine' diff --git a/web/app/components/base/icons/src/vender/workflow/Agent.json b/web/app/components/base/icons/src/vender/workflow/Agent.json index e7ed19369..200475fc4 100644 --- a/web/app/components/base/icons/src/vender/workflow/Agent.json +++ b/web/app/components/base/icons/src/vender/workflow/Agent.json @@ -50,4 +50,4 @@ ] }, "name": "Agent" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/Answer.json b/web/app/components/base/icons/src/vender/workflow/Answer.json index 4f15b339b..b0ad3f87e 100644 --- a/web/app/components/base/icons/src/vender/workflow/Answer.json +++ b/web/app/components/base/icons/src/vender/workflow/Answer.json @@ -35,4 +35,4 @@ ] }, "name": "Answer" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/Assigner.json b/web/app/components/base/icons/src/vender/workflow/Assigner.json index 7106e5ad4..89e76a9cb 100644 --- a/web/app/components/base/icons/src/vender/workflow/Assigner.json +++ b/web/app/components/base/icons/src/vender/workflow/Assigner.json @@ -65,4 +65,4 @@ ] }, "name": "Assigner" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/Code.json b/web/app/components/base/icons/src/vender/workflow/Code.json index d94f12ab3..d72f02e28 100644 --- a/web/app/components/base/icons/src/vender/workflow/Code.json +++ b/web/app/components/base/icons/src/vender/workflow/Code.json @@ -35,4 +35,4 @@ ] }, "name": "Code" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/DocsExtractor.json b/web/app/components/base/icons/src/vender/workflow/DocsExtractor.json index 5b454590b..4e43c6c20 100644 --- a/web/app/components/base/icons/src/vender/workflow/DocsExtractor.json +++ b/web/app/components/base/icons/src/vender/workflow/DocsExtractor.json @@ -61,4 +61,4 @@ ] }, "name": "DocsExtractor" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/End.json b/web/app/components/base/icons/src/vender/workflow/End.json index 3e281cb57..56336efad 100644 --- a/web/app/components/base/icons/src/vender/workflow/End.json +++ b/web/app/components/base/icons/src/vender/workflow/End.json @@ -35,4 +35,4 @@ ] }, "name": "End" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/Home.json b/web/app/components/base/icons/src/vender/workflow/Home.json index fd3096f65..982a9db22 100644 --- a/web/app/components/base/icons/src/vender/workflow/Home.json +++ b/web/app/components/base/icons/src/vender/workflow/Home.json @@ -35,4 +35,4 @@ ] }, "name": "Home" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/Http.json b/web/app/components/base/icons/src/vender/workflow/Http.json index 53b5c3a9f..4affe7a5b 100644 --- a/web/app/components/base/icons/src/vender/workflow/Http.json +++ b/web/app/components/base/icons/src/vender/workflow/Http.json @@ -68,4 +68,4 @@ ] }, "name": "Http" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/IfElse.json b/web/app/components/base/icons/src/vender/workflow/IfElse.json index 0ff778bc2..359f695c2 100644 --- a/web/app/components/base/icons/src/vender/workflow/IfElse.json +++ b/web/app/components/base/icons/src/vender/workflow/IfElse.json @@ -35,4 +35,4 @@ ] }, "name": "IfElse" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/Iteration.json b/web/app/components/base/icons/src/vender/workflow/Iteration.json index ee5748d1f..84148e7ba 100644 --- a/web/app/components/base/icons/src/vender/workflow/Iteration.json +++ b/web/app/components/base/icons/src/vender/workflow/Iteration.json @@ -33,4 +33,4 @@ ] }, "name": "Iteration" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/IterationStart.json b/web/app/components/base/icons/src/vender/workflow/IterationStart.json index 2941cdb65..cb574b7ea 100644 --- a/web/app/components/base/icons/src/vender/workflow/IterationStart.json +++ b/web/app/components/base/icons/src/vender/workflow/IterationStart.json @@ -33,4 +33,4 @@ ] }, "name": "IterationStart" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/Jinja.json b/web/app/components/base/icons/src/vender/workflow/Jinja.json index ba46cb9ca..91eee1534 100644 --- a/web/app/components/base/icons/src/vender/workflow/Jinja.json +++ b/web/app/components/base/icons/src/vender/workflow/Jinja.json @@ -95,4 +95,4 @@ ] }, "name": "Jinja" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/KnowledgeRetrieval.json b/web/app/components/base/icons/src/vender/workflow/KnowledgeRetrieval.json index 4bdc83f86..69eb10eb8 100644 --- a/web/app/components/base/icons/src/vender/workflow/KnowledgeRetrieval.json +++ b/web/app/components/base/icons/src/vender/workflow/KnowledgeRetrieval.json @@ -35,4 +35,4 @@ ] }, "name": "KnowledgeRetrieval" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/ListFilter.json b/web/app/components/base/icons/src/vender/workflow/ListFilter.json index 568020f4a..6ed383c31 100644 --- a/web/app/components/base/icons/src/vender/workflow/ListFilter.json +++ b/web/app/components/base/icons/src/vender/workflow/ListFilter.json @@ -35,4 +35,4 @@ ] }, "name": "ListFilter" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/Llm.json b/web/app/components/base/icons/src/vender/workflow/Llm.json index d900a6704..cdf114a49 100644 --- a/web/app/components/base/icons/src/vender/workflow/Llm.json +++ b/web/app/components/base/icons/src/vender/workflow/Llm.json @@ -35,4 +35,4 @@ ] }, "name": "Llm" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/Loop.json b/web/app/components/base/icons/src/vender/workflow/Loop.json index 65a70d82a..b6abd13df 100644 --- a/web/app/components/base/icons/src/vender/workflow/Loop.json +++ b/web/app/components/base/icons/src/vender/workflow/Loop.json @@ -35,4 +35,4 @@ ] }, "name": "Loop" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/LoopEnd.json b/web/app/components/base/icons/src/vender/workflow/LoopEnd.json index 1427dfdcc..eea9e717c 100644 --- a/web/app/components/base/icons/src/vender/workflow/LoopEnd.json +++ b/web/app/components/base/icons/src/vender/workflow/LoopEnd.json @@ -35,4 +35,4 @@ ] }, "name": "LoopEnd" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/ParameterExtractor.json b/web/app/components/base/icons/src/vender/workflow/ParameterExtractor.json index 7d4fa6424..eb66f4846 100644 --- a/web/app/components/base/icons/src/vender/workflow/ParameterExtractor.json +++ b/web/app/components/base/icons/src/vender/workflow/ParameterExtractor.json @@ -263,4 +263,4 @@ ] }, "name": "ParameterExtractor" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/QuestionClassifier.json b/web/app/components/base/icons/src/vender/workflow/QuestionClassifier.json index a50ee6c41..6bd3dbf09 100644 --- a/web/app/components/base/icons/src/vender/workflow/QuestionClassifier.json +++ b/web/app/components/base/icons/src/vender/workflow/QuestionClassifier.json @@ -35,4 +35,4 @@ ] }, "name": "QuestionClassifier" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/TemplatingTransform.json b/web/app/components/base/icons/src/vender/workflow/TemplatingTransform.json index 69ee23661..6399208a2 100644 --- a/web/app/components/base/icons/src/vender/workflow/TemplatingTransform.json +++ b/web/app/components/base/icons/src/vender/workflow/TemplatingTransform.json @@ -151,4 +151,4 @@ ] }, "name": "TemplatingTransform" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/VariableX.json b/web/app/components/base/icons/src/vender/workflow/VariableX.json index 1560684e5..a87b00058 100644 --- a/web/app/components/base/icons/src/vender/workflow/VariableX.json +++ b/web/app/components/base/icons/src/vender/workflow/VariableX.json @@ -35,4 +35,4 @@ ] }, "name": "VariableX" -} \ No newline at end of file +} diff --git a/web/app/components/base/icons/src/vender/workflow/WindowCursor.json b/web/app/components/base/icons/src/vender/workflow/WindowCursor.json index b64ba912b..66591c111 100644 --- a/web/app/components/base/icons/src/vender/workflow/WindowCursor.json +++ b/web/app/components/base/icons/src/vender/workflow/WindowCursor.json @@ -59,4 +59,4 @@ ] }, "name": "WindowCursor" -} \ No newline at end of file +} diff --git a/web/app/components/plugins/install-plugin/install-bundle/steps/install.tsx b/web/app/components/plugins/install-plugin/install-bundle/steps/install.tsx index 2d8bdcd3d..fabad6239 100644 --- a/web/app/components/plugins/install-plugin/install-bundle/steps/install.tsx +++ b/web/app/components/plugins/install-plugin/install-bundle/steps/install.tsx @@ -10,7 +10,7 @@ import type { ExposeRefs } from './install-multi' import InstallMulti from './install-multi' import { useInstallOrUpdate } from '@/service/use-plugins' import useRefreshPluginList from '../../hooks/use-refresh-plugin-list' -import { useCanInstallPluginFromMarketplace } from '@/app/components/plugins/plugin-page/use-permission' +import { useCanInstallPluginFromMarketplace } from '@/app/components/plugins/plugin-page/use-reference-setting' import { useMittContextSelector } from '@/context/mitt-context' import Checkbox from '@/app/components/base/checkbox' const i18nPrefix = 'plugin.installModal' diff --git a/web/app/components/plugins/plugin-detail-panel/detail-header.tsx b/web/app/components/plugins/plugin-detail-panel/detail-header.tsx index 9c31a0b8e..e5d145814 100644 --- a/web/app/components/plugins/plugin-detail-panel/detail-header.tsx +++ b/web/app/components/plugins/plugin-detail-panel/detail-header.tsx @@ -40,6 +40,11 @@ import { PluginAuth } from '@/app/components/plugins/plugin-auth' import { AuthCategory } from '@/app/components/plugins/plugin-auth' import { useAllToolProviders } from '@/service/use-tools' import DeprecationNotice from '../base/deprecation-notice' +import { AutoUpdateLine } from '../../base/icons/src/vender/system' +import { convertUTCDaySecondsToLocalSeconds, timeOfDayToDayjs } from '../reference-setting-modal/auto-update-setting/utils' +import useReferenceSetting from '../plugin-page/use-reference-setting' +import { AUTO_UPDATE_MODE } from '../reference-setting-modal/auto-update-setting/types' +import { useAppContext } from '@/context/app-context' const i18nPrefix = 'plugin.action' @@ -55,6 +60,8 @@ const DetailHeader = ({ onUpdate, }: Props) => { const { t } = useTranslation() + const { userProfile: { timezone } } = useAppContext() + const { theme } = useTheme() const locale = useGetLanguage() const { locale: currentLocale } = useI18N() @@ -112,8 +119,24 @@ const DetailHeader = ({ setFalse: hideUpdateModal, }] = useBoolean(false) - const handleUpdate = async () => { + const { referenceSetting } = useReferenceSetting() + const { auto_upgrade: autoUpgradeInfo } = referenceSetting || {} + const isAutoUpgradeEnabled = useMemo(() => { + if (!autoUpgradeInfo || !isFromMarketplace) + return false + if(autoUpgradeInfo.upgrade_mode === AUTO_UPDATE_MODE.update_all) + return true + if(autoUpgradeInfo.upgrade_mode === AUTO_UPDATE_MODE.partial && autoUpgradeInfo.include_plugins.includes(plugin_id)) + return true + if(autoUpgradeInfo.upgrade_mode === AUTO_UPDATE_MODE.exclude && !autoUpgradeInfo.exclude_plugins.includes(plugin_id)) + return true + return false + }, [autoUpgradeInfo, plugin_id, isFromMarketplace]) + + const [isDowngrade, setIsDowngrade] = useState(false) + const handleUpdate = async (isDowngrade?: boolean) => { if (isFromMarketplace) { + setIsDowngrade(!!isDowngrade) showUpdateModal() return } @@ -180,9 +203,6 @@ const DetailHeader = ({ } }, [showDeleting, installation_id, hideDeleting, hideDeleteConfirm, onUpdate, category, refreshModelProviders, invalidateAllToolProviders]) - // #plugin TODO# used in apps - // const usedInApps = 3 - return (
    @@ -201,7 +221,7 @@ const DetailHeader = ({ currentVersion={version} onSelect={(state) => { setTargetVersion(state) - handleUpdate() + handleUpdate(state.isDowngrade) }} trigger={ } /> + {/* Auto update info */} + {isAutoUpgradeEnabled && ( + + {/* add a a div to fix tooltip hover not show problem */} +
    + + + +
    +
    + )} + {(hasNewVersion || isFromGitHub) && ( + } + value={value} + onChange={onChange} + isShow={isShowToolPicker} + onShowChange={setToolPicker} + /> +
    + ) +} +export default React.memo(PluginsPicker) diff --git a/web/app/components/plugins/reference-setting-modal/auto-update-setting/plugins-selected.tsx b/web/app/components/plugins/reference-setting-modal/auto-update-setting/plugins-selected.tsx new file mode 100644 index 000000000..42c2a34ee --- /dev/null +++ b/web/app/components/plugins/reference-setting-modal/auto-update-setting/plugins-selected.tsx @@ -0,0 +1,29 @@ +'use client' +import type { FC } from 'react' +import React from 'react' +import cn from '@/utils/classnames' +import { MARKETPLACE_API_PREFIX } from '@/config' +import Icon from '@/app/components/plugins/card/base/card-icon' + +const MAX_DISPLAY_COUNT = 14 +type Props = { + className?: string + plugins: string[] +} + +const PluginsSelected: FC = ({ + className, + plugins, +}) => { + const isShowAll = plugins.length < MAX_DISPLAY_COUNT + const displayPlugins = plugins.slice(0, MAX_DISPLAY_COUNT) + return ( +
    + {displayPlugins.map(plugin => ( + + ))} + {!isShowAll &&
    +{plugins.length - MAX_DISPLAY_COUNT}
    } +
    + ) +} +export default React.memo(PluginsSelected) diff --git a/web/app/components/plugins/reference-setting-modal/auto-update-setting/strategy-picker.tsx b/web/app/components/plugins/reference-setting-modal/auto-update-setting/strategy-picker.tsx new file mode 100644 index 000000000..c8227520f --- /dev/null +++ b/web/app/components/plugins/reference-setting-modal/auto-update-setting/strategy-picker.tsx @@ -0,0 +1,98 @@ +import { useState } from 'react' +import { useTranslation } from 'react-i18next' +import { + RiArrowDownSLine, + RiCheckLine, +} from '@remixicon/react' +import { AUTO_UPDATE_STRATEGY } from './types' +import { + PortalToFollowElem, + PortalToFollowElemContent, + PortalToFollowElemTrigger, +} from '@/app/components/base/portal-to-follow-elem' +import Button from '@/app/components/base/button' +const i18nPrefix = 'plugin.autoUpdate.strategy' + +type Props = { + value: AUTO_UPDATE_STRATEGY + onChange: (value: AUTO_UPDATE_STRATEGY) => void +} +const StrategyPicker = ({ + value, + onChange, +}: Props) => { + const { t } = useTranslation() + const [open, setOpen] = useState(false) + const options = [ + { + value: AUTO_UPDATE_STRATEGY.disabled, + label: t(`${i18nPrefix}.disabled.name`), + description: t(`${i18nPrefix}.disabled.description`), + }, + { + value: AUTO_UPDATE_STRATEGY.fixOnly, + label: t(`${i18nPrefix}.fixOnly.name`), + description: t(`${i18nPrefix}.fixOnly.description`), + }, + { + value: AUTO_UPDATE_STRATEGY.latest, + label: t(`${i18nPrefix}.latest.name`), + description: t(`${i18nPrefix}.latest.description`), + }, + ] + const selectedOption = options.find(option => option.value === value) + + return ( + + { + e.stopPropagation() + e.nativeEvent.stopImmediatePropagation() + setOpen(v => !v) + }}> + + + +
    + { + options.map(option => ( +
    { + e.stopPropagation() + e.nativeEvent.stopImmediatePropagation() + onChange(option.value) + setOpen(false) + }} + > +
    + { + value === option.value && ( + + ) + } +
    +
    +
    {option.label}
    +
    {option.description}
    +
    +
    + )) + } +
    +
    +
    + ) +} + +export default StrategyPicker diff --git a/web/app/components/plugins/reference-setting-modal/auto-update-setting/tool-item.tsx b/web/app/components/plugins/reference-setting-modal/auto-update-setting/tool-item.tsx new file mode 100644 index 000000000..99a01bcd0 --- /dev/null +++ b/web/app/components/plugins/reference-setting-modal/auto-update-setting/tool-item.tsx @@ -0,0 +1,45 @@ +'use client' +import type { FC } from 'react' +import React from 'react' +import type { PluginDetail } from '@/app/components/plugins/types' +import Icon from '@/app/components/plugins/card/base/card-icon' +import { renderI18nObject } from '@/i18n' +import { useGetLanguage } from '@/context/i18n' +import { MARKETPLACE_API_PREFIX } from '@/config' +import Checkbox from '@/app/components/base/checkbox' + +type Props = { + payload: PluginDetail + isChecked?: boolean + onCheckChange: () => void +} + +const ToolItem: FC = ({ + payload, + isChecked, + onCheckChange, +}) => { + const language = useGetLanguage() + + const { plugin_id, declaration } = payload + const { label, author: org } = declaration + return ( +
    +
    +
    + +
    {renderI18nObject(label, language)}
    +
    {org}
    +
    + +
    +
    + ) +} +export default React.memo(ToolItem) diff --git a/web/app/components/plugins/reference-setting-modal/auto-update-setting/tool-picker.tsx b/web/app/components/plugins/reference-setting-modal/auto-update-setting/tool-picker.tsx new file mode 100644 index 000000000..02c1ecaf3 --- /dev/null +++ b/web/app/components/plugins/reference-setting-modal/auto-update-setting/tool-picker.tsx @@ -0,0 +1,167 @@ +'use client' +import type { FC } from 'react' +import React, { useCallback, useMemo, useState } from 'react' +import { + PortalToFollowElem, + PortalToFollowElemContent, + PortalToFollowElemTrigger, +} from '@/app/components/base/portal-to-follow-elem' +import { useInstalledPluginList } from '@/service/use-plugins' +import { PLUGIN_TYPE_SEARCH_MAP } from '../../marketplace/plugin-type-switch' +import SearchBox from '@/app/components/plugins/marketplace/search-box' +import { useTranslation } from 'react-i18next' +import cn from '@/utils/classnames' +import ToolItem from './tool-item' +import Loading from '@/app/components/base/loading' +import NoDataPlaceholder from './no-data-placeholder' +import { PluginSource } from '../../types' + +type Props = { + trigger: React.ReactNode + value: string[] + onChange: (value: string[]) => void + isShow: boolean + onShowChange: (isShow: boolean) => void + +} + +const ToolPicker: FC = ({ + trigger, + value, + onChange, + isShow, + onShowChange, +}) => { + const { t } = useTranslation() + const toggleShowPopup = useCallback(() => { + onShowChange(!isShow) + }, [onShowChange, isShow]) + + const tabs = [ + { + key: PLUGIN_TYPE_SEARCH_MAP.all, + name: t('plugin.category.all'), + }, + { + key: PLUGIN_TYPE_SEARCH_MAP.model, + name: t('plugin.category.models'), + }, + { + key: PLUGIN_TYPE_SEARCH_MAP.tool, + name: t('plugin.category.tools'), + }, + { + key: PLUGIN_TYPE_SEARCH_MAP.agent, + name: t('plugin.category.agents'), + }, + { + key: PLUGIN_TYPE_SEARCH_MAP.extension, + name: t('plugin.category.extensions'), + }, + { + key: PLUGIN_TYPE_SEARCH_MAP.bundle, + name: t('plugin.category.bundles'), + }, + ] + + const [pluginType, setPluginType] = useState(PLUGIN_TYPE_SEARCH_MAP.all) + const [query, setQuery] = useState('') + const [tags, setTags] = useState([]) + const { data, isLoading } = useInstalledPluginList() + const filteredList = useMemo(() => { + const list = data ? data.plugins : [] + return list.filter((plugin) => { + const isFromMarketPlace = plugin.source === PluginSource.marketplace + return ( + isFromMarketPlace && (pluginType === PLUGIN_TYPE_SEARCH_MAP.all || plugin.declaration.category === pluginType) + && (tags.length === 0 || tags.some(tag => plugin.declaration.tags.includes(tag))) + && (query === '' || plugin.plugin_id.toLowerCase().includes(query.toLowerCase())) + ) + }) + }, [data, pluginType, query, tags]) + const handleCheckChange = useCallback((pluginId: string) => { + return () => { + const newValue = value.includes(pluginId) + ? value.filter(id => id !== pluginId) + : [...value, pluginId] + onChange(newValue) + } + }, [onChange, value]) + + const listContent = ( +
    + {filteredList.map(item => ( + + ))} +
    + ) + + const loadingContent = ( +
    + +
    + ) + + const noData = ( + + ) + + return ( + + + {trigger} + + +
    +
    + +
    +
    +
    + { + tabs.map(tab => ( +
    setPluginType(tab.key)} + > + {tab.name} +
    + )) + } +
    +
    + {!isLoading && filteredList.length > 0 && listContent} + {!isLoading && filteredList.length === 0 && noData} + {isLoading && loadingContent} +
    +
    +
    + ) +} + +export default React.memo(ToolPicker) diff --git a/web/app/components/plugins/reference-setting-modal/auto-update-setting/types.ts b/web/app/components/plugins/reference-setting-modal/auto-update-setting/types.ts new file mode 100644 index 000000000..b734150b4 --- /dev/null +++ b/web/app/components/plugins/reference-setting-modal/auto-update-setting/types.ts @@ -0,0 +1,19 @@ +export enum AUTO_UPDATE_STRATEGY { + fixOnly = 'fix_only', + disabled = 'disabled', + latest = 'latest', +} + +export enum AUTO_UPDATE_MODE { + partial = 'partial', + exclude = 'exclude', + update_all = 'all', +} + +export type AutoUpdateConfig = { + strategy_setting: AUTO_UPDATE_STRATEGY + upgrade_time_of_day: number + upgrade_mode: AUTO_UPDATE_MODE + exclude_plugins: string[] + include_plugins: string[] +} diff --git a/web/app/components/plugins/reference-setting-modal/auto-update-setting/utils.spec.ts b/web/app/components/plugins/reference-setting-modal/auto-update-setting/utils.spec.ts new file mode 100644 index 000000000..f813338c9 --- /dev/null +++ b/web/app/components/plugins/reference-setting-modal/auto-update-setting/utils.spec.ts @@ -0,0 +1,14 @@ +import { convertLocalSecondsToUTCDaySeconds, convertUTCDaySecondsToLocalSeconds } from './utils' + +describe('convertLocalSecondsToUTCDaySeconds', () => { + it('should convert local seconds to UTC day seconds correctly', () => { + const localTimezone = 'Asia/Shanghai' + const utcSeconds = convertLocalSecondsToUTCDaySeconds(0, localTimezone) + expect(utcSeconds).toBe((24 - 8) * 3600) + }) + + it('should convert local seconds to UTC day seconds for a specific time', () => { + const localTimezone = 'Asia/Shanghai' + expect(convertUTCDaySecondsToLocalSeconds(convertLocalSecondsToUTCDaySeconds(0, localTimezone), localTimezone)).toBe(0) + }) +}) diff --git a/web/app/components/plugins/reference-setting-modal/auto-update-setting/utils.ts b/web/app/components/plugins/reference-setting-modal/auto-update-setting/utils.ts new file mode 100644 index 000000000..23c067285 --- /dev/null +++ b/web/app/components/plugins/reference-setting-modal/auto-update-setting/utils.ts @@ -0,0 +1,37 @@ +import type { Dayjs } from 'dayjs' +import dayjs from 'dayjs' +import utc from 'dayjs/plugin/utc' +import timezone from 'dayjs/plugin/timezone' + +dayjs.extend(utc) +dayjs.extend(timezone) + +export const timeOfDayToDayjs = (timeOfDay: number): Dayjs => { + const hours = Math.floor(timeOfDay / 3600) + const minutes = (timeOfDay - hours * 3600) / 60 + const res = dayjs().startOf('day').hour(hours).minute(minutes) + return res +} + +export const convertLocalSecondsToUTCDaySeconds = (secondsInDay: number, localTimezone: string): number => { + const localDayStart = dayjs().tz(localTimezone).startOf('day') + const localTargetTime = localDayStart.add(secondsInDay, 'second') + const utcTargetTime = localTargetTime.utc() + const utcDayStart = utcTargetTime.startOf('day') + const secondsFromUTCMidnight = utcTargetTime.diff(utcDayStart, 'second') + return secondsFromUTCMidnight +} + +export const dayjsToTimeOfDay = (date?: Dayjs): number => { + if (!date) return 0 + return date.hour() * 3600 + date.minute() * 60 +} + +export const convertUTCDaySecondsToLocalSeconds = (utcDaySeconds: number, localTimezone: string): number => { + const utcDayStart = dayjs().utc().startOf('day') + const utcTargetTime = utcDayStart.add(utcDaySeconds, 'second') + const localTargetTime = utcTargetTime.tz(localTimezone) + const localDayStart = localTargetTime.startOf('day') + const secondsInLocalDay = localTargetTime.diff(localDayStart, 'second') + return secondsInLocalDay +} diff --git a/web/app/components/plugins/reference-setting-modal/label.tsx b/web/app/components/plugins/reference-setting-modal/label.tsx new file mode 100644 index 000000000..6444bf801 --- /dev/null +++ b/web/app/components/plugins/reference-setting-modal/label.tsx @@ -0,0 +1,28 @@ +'use client' +import type { FC } from 'react' +import React from 'react' +import cn from '@/utils/classnames' + +type Props = { + label: string + description?: string +} + +const Label: FC = ({ + label, + description, +}) => { + return ( +
    +
    + {label} +
    + {description && ( +
    + {description} +
    + )} +
    + ) +} +export default React.memo(Label) diff --git a/web/app/components/plugins/permission-setting-modal/modal.tsx b/web/app/components/plugins/reference-setting-modal/modal.tsx similarity index 74% rename from web/app/components/plugins/permission-setting-modal/modal.tsx rename to web/app/components/plugins/reference-setting-modal/modal.tsx index 6fd4d8c2d..9fefbdbb5 100644 --- a/web/app/components/plugins/permission-setting-modal/modal.tsx +++ b/web/app/components/plugins/reference-setting-modal/modal.tsx @@ -5,14 +5,18 @@ import { useTranslation } from 'react-i18next' import Modal from '@/app/components/base/modal' import OptionCard from '@/app/components/workflow/nodes/_base/components/option-card' import Button from '@/app/components/base/button' -import type { Permissions } from '@/app/components/plugins/types' +import type { Permissions, ReferenceSetting } from '@/app/components/plugins/types' import { PermissionType } from '@/app/components/plugins/types' +import type { AutoUpdateConfig } from './auto-update-setting/types' +import AutoUpdateSetting from './auto-update-setting' +import { defaultValue as autoUpdateDefaultValue } from './auto-update-setting/config' +import Label from './label' const i18nPrefix = 'plugin.privilege' type Props = { - payload: Permissions + payload: ReferenceSetting onHide: () => void - onSave: (payload: Permissions) => void + onSave: (payload: ReferenceSetting) => void } const PluginSettingModal: FC = ({ @@ -21,7 +25,9 @@ const PluginSettingModal: FC = ({ onSave, }) => { const { t } = useTranslation() - const [tempPrivilege, setTempPrivilege] = useState(payload) + const { auto_upgrade: autoUpdateConfig, permission: privilege } = payload || {} + const [tempPrivilege, setTempPrivilege] = useState(privilege) + const [tempAutoUpdateConfig, setTempAutoUpdateConfig] = useState(autoUpdateConfig || autoUpdateDefaultValue) const handlePrivilegeChange = useCallback((key: string) => { return (value: PermissionType) => { setTempPrivilege({ @@ -32,18 +38,21 @@ const PluginSettingModal: FC = ({ }, [tempPrivilege]) const handleSave = useCallback(async () => { - await onSave(tempPrivilege) + await onSave({ + permission: tempPrivilege, + auto_upgrade: tempAutoUpdateConfig, + }) onHide() - }, [onHide, onSave, tempPrivilege]) + }, [onHide, onSave, tempAutoUpdateConfig, tempPrivilege]) return ( -
    +
    {t(`${i18nPrefix}.title`)}
    @@ -53,9 +62,7 @@ const PluginSettingModal: FC = ({ { title: t(`${i18nPrefix}.whoCanDebug`), key: 'debug_permission', value: tempPrivilege?.debug_permission || PermissionType.noOne }, ].map(({ title, key, value }) => (
    -
    - {title} -
    +
    + +
    + + +
    + + ) +} + +export default DowngradeWarningModal diff --git a/web/app/components/plugins/update-plugin/from-market-place.tsx b/web/app/components/plugins/update-plugin/from-market-place.tsx index 98994d9b9..70bc7399f 100644 --- a/web/app/components/plugins/update-plugin/from-market-place.tsx +++ b/web/app/components/plugins/update-plugin/from-market-place.tsx @@ -13,13 +13,18 @@ import { updateFromMarketPlace } from '@/service/plugins' import checkTaskStatus from '@/app/components/plugins/install-plugin/base/check-task-status' import { usePluginTaskList } from '@/service/use-plugins' import Toast from '../../base/toast' +import DowngradeWarningModal from './downgrade-warning' +import { useInvalidateReferenceSettings, useRemoveAutoUpgrade } from '@/service/use-plugins' +import cn from '@/utils/classnames' const i18nPrefix = 'plugin.upgrade' type Props = { payload: UpdateFromMarketPlacePayload + pluginId: string onSave: () => void onCancel: () => void + isShowDowngradeWarningModal?: boolean } enum UploadStep { @@ -30,8 +35,10 @@ enum UploadStep { const UpdatePluginModal: FC = ({ payload, + pluginId, onSave, onCancel, + isShowDowngradeWarningModal, }) => { const { originalPackageInfo, @@ -103,51 +110,74 @@ const UpdatePluginModal: FC = ({ onSave() }, [onSave, uploadStep, check, originalPackageInfo.id, handleRefetch, targetPackageInfo.id]) + const { mutateAsync } = useRemoveAutoUpgrade() + const invalidateReferenceSettings = useInvalidateReferenceSettings() + const handleExcludeAndDownload = async () => { + await mutateAsync({ + plugin_id: pluginId, + }) + invalidateReferenceSettings() + handleConfirm() + } + const doShowDowngradeWarningModal = isShowDowngradeWarningModal && uploadStep === UploadStep.notStarted + return ( -
    - {t(`${i18nPrefix}.description`)} -
    -
    - - - {`${originalPackageInfo.payload.version} -> ${targetPackageInfo.version}`} - - - } + {doShowDowngradeWarningModal && ( + -
    -
    - {uploadStep === UploadStep.notStarted && ( + )} + {!doShowDowngradeWarningModal && ( + <> +
    + {t(`${i18nPrefix}.description`)} +
    +
    + + + {`${originalPackageInfo.payload.version} -> ${targetPackageInfo.version}`} + + + } + /> +
    +
    + {uploadStep === UploadStep.notStarted && ( + + )} - )} - -
    +
    + + )} +
    ) } diff --git a/web/app/components/plugins/update-plugin/plugin-version-picker.tsx b/web/app/components/plugins/update-plugin/plugin-version-picker.tsx index 424f76d79..36a4faace 100644 --- a/web/app/components/plugins/update-plugin/plugin-version-picker.tsx +++ b/web/app/components/plugins/update-plugin/plugin-version-picker.tsx @@ -15,6 +15,7 @@ import type { import { useVersionListOfPlugin } from '@/service/use-plugins' import useTimestamp from '@/hooks/use-timestamp' import cn from '@/utils/classnames' +import { lt } from 'semver' type Props = { disabled?: boolean @@ -28,9 +29,11 @@ type Props = { onSelect: ({ version, unique_identifier, + isDowngrade, }: { version: string unique_identifier: string + isDowngrade: boolean }) => void } @@ -59,13 +62,14 @@ const PluginVersionPicker: FC = ({ const { data: res } = useVersionListOfPlugin(pluginID) - const handleSelect = useCallback(({ version, unique_identifier }: { + const handleSelect = useCallback(({ version, unique_identifier, isDowngrade }: { version: string unique_identifier: string + isDowngrade: boolean }) => { if (currentVersion === version) return - onSelect({ version, unique_identifier }) + onSelect({ version, unique_identifier, isDowngrade }) onShowChange(false) }, [currentVersion, onSelect, onShowChange]) @@ -99,6 +103,7 @@ const PluginVersionPicker: FC = ({ onClick={() => handleSelect({ version: version.version, unique_identifier: version.unique_identifier, + isDowngrade: lt(version.version, currentVersion), })} >
    diff --git a/web/i18n/en-US/plugin.ts b/web/i18n/en-US/plugin.ts index 325814413..aa127eaf1 100644 --- a/web/i18n/en-US/plugin.ts +++ b/web/i18n/en-US/plugin.ts @@ -125,6 +125,56 @@ const translation = { admins: 'Admins', noone: 'No one', }, + autoUpdate: { + automaticUpdates: 'Automatic updates', + updateTime: 'Update time', + specifyPluginsToUpdate: 'Specify plugins to update', + strategy: { + disabled: { + name: 'Disabled', + description: 'Plugins will not auto-update', + }, + fixOnly: { + name: 'Fix Only', + description: 'Auto-update for patch versions only (e.g., 1.0.1 → 1.0.2). Minor version changes won\'t trigger updates.', + selectedDescription: 'Auto-update for patch versions only', + }, + latest: { + name: 'Latest', + description: 'Always update to latest version', + selectedDescription: 'Always update to latest version', + }, + }, + updateTimeTitle: 'Update time', + upgradeMode: { + all: 'Update all', + exclude: 'Exclude selected', + partial: 'Only selected', + }, + upgradeModePlaceholder: { + exclude: 'Selected plugins will not auto-update', + partial: 'Only selected plugins will auto-update. No plugins are currently selected, so no plugins will auto-update.', + }, + excludeUpdate: 'The following {{num}} plugins will not auto-update', + partialUPdate: 'Only the following {{num}} plugins will auto-update', + operation: { + clearAll: 'Clear all', + select: 'Select plugins', + }, + nextUpdateTime: 'Next auto-update: {{time}}', + pluginDowngradeWarning: { + title: 'Plugin Downgrade', + description: 'Auto-update is currently enabled for this plugin. Downgrading the version may cause your changes to be overwritten during the next automatic update.', + downgrade: 'Downgrade anyway', + exclude: 'Exclude from auto-update', + }, + noPluginPlaceholder: { + noFound: 'No plugins were found', + noInstalled: 'No plugins installed', + }, + updateSettings: 'Update Settings', + changeTimezone: 'To change time zone, go to Settings', + }, pluginInfoModal: { title: 'Plugin info', repository: 'Repository', diff --git a/web/i18n/zh-Hans/plugin.ts b/web/i18n/zh-Hans/plugin.ts index 4c9510159..a080a26a8 100644 --- a/web/i18n/zh-Hans/plugin.ts +++ b/web/i18n/zh-Hans/plugin.ts @@ -125,6 +125,56 @@ const translation = { admins: '管理员', noone: '无人', }, + autoUpdate: { + automaticUpdates: '自动更新', + updateTime: '更新时间', + specifyPluginsToUpdate: '指定要更新的插件', + strategy: { + disabled: { + name: '禁用', + description: '插件将不会自动更新', + }, + fixOnly: { + name: '仅修复', + description: '仅自动更新补丁版本(例如,1.0.1 → 1.0.2)。次要版本更改不会触发更新。', + selectedDescription: '仅自动更新补丁版本', + }, + latest: { + name: '最新', + description: '始终更新到最新版本', + selectedDescription: '始终更新到最新版本', + }, + }, + updateTimeTitle: '更新时间', + upgradeMode: { + all: '更新全部', + exclude: '排除选定', + partial: '仅选定', + }, + upgradeModePlaceholder: { + exclude: '选定的插件将不会自动更新', + partial: '仅选定的插件将自动更新。目前未选择任何插件,因此不会自动更新任何插件。', + }, + excludeUpdate: '以下 {{num}} 个插件将不会自动更新', + partialUPdate: '仅以下 {{num}} 个插件将自动更新', + operation: { + clearAll: '清除所有', + select: '选择插件', + }, + nextUpdateTime: '下次自动更新时间: {{time}}', + pluginDowngradeWarning: { + title: '插件降级', + description: '此插件目前已启用自动更新。降级版本可能会导致您的更改在下次自动更新时被覆盖。', + downgrade: '仍然降级', + exclude: '从自动更新中排除', + }, + noPluginPlaceholder: { + noFound: '未找到插件', + noInstalled: '未安装插件', + }, + updateSettings: '更新设置', + changeTimezone: '要更改时区,请前往设置', + }, pluginInfoModal: { title: '插件信息', repository: '仓库', diff --git a/web/service/use-plugins.ts b/web/service/use-plugins.ts index ff092bb03..86f8134a5 100644 --- a/web/service/use-plugins.ts +++ b/web/service/use-plugins.ts @@ -13,7 +13,6 @@ import type { InstalledLatestVersionResponse, InstalledPluginListWithTotalResponse, PackageDependency, - Permissions, Plugin, PluginDeclaration, PluginDetail, @@ -22,6 +21,7 @@ import type { PluginType, PluginsFromMarketplaceByInfoResponse, PluginsFromMarketplaceResponse, + ReferenceSetting, VersionInfo, VersionListResponse, uploadGitHubResponse, @@ -40,7 +40,7 @@ import { useQueryClient, } from '@tanstack/react-query' import { useInvalidateAllBuiltInTools } from './use-tools' -import usePermission from '@/app/components/plugins/plugin-page/use-permission' +import useReferenceSetting from '@/app/components/plugins/plugin-page/use-reference-setting' import { uninstallPlugin } from '@/service/plugins' import useRefreshPluginList from '@/app/components/plugins/install-plugin/hooks/use-refresh-plugin-list' import { cloneDeep } from 'lodash-es' @@ -350,37 +350,45 @@ export const useDebugKey = () => { }) } -const usePermissionsKey = [NAME_SPACE, 'permissions'] -export const usePermissions = () => { +const useReferenceSettingKey = [NAME_SPACE, 'referenceSettings'] +export const useReferenceSettings = () => { return useQuery({ - queryKey: usePermissionsKey, - queryFn: () => get('/workspaces/current/plugin/permission/fetch'), + queryKey: useReferenceSettingKey, + queryFn: () => get('/workspaces/current/plugin/preferences/fetch'), }) } -export const useInvalidatePermissions = () => { +export const useInvalidateReferenceSettings = () => { const queryClient = useQueryClient() return () => { queryClient.invalidateQueries( { - queryKey: usePermissionsKey, + queryKey: useReferenceSettingKey, }) } } -export const useMutationPermissions = ({ +export const useMutationReferenceSettings = ({ onSuccess, }: { onSuccess?: () => void }) => { return useMutation({ - mutationFn: (payload: Permissions) => { - return post('/workspaces/current/plugin/permission/change', { body: payload }) + mutationFn: (payload: ReferenceSetting) => { + return post('/workspaces/current/plugin/preferences/change', { body: payload }) }, onSuccess, }) } +export const useRemoveAutoUpgrade = () => { + return useMutation({ + mutationFn: (payload: { plugin_id: string }) => { + return post('/workspaces/current/plugin/preferences/autoupgrade/exclude', { body: payload }) + }, + }) +} + export const useMutationPluginsFromMarketplace = () => { return useMutation({ mutationFn: (pluginsSearchParams: PluginsSearchParams) => { @@ -427,6 +435,39 @@ export const useFetchPluginsInMarketPlaceByIds = (unique_identifiers: string[], }) } +export const useFetchPluginListOrBundleList = (pluginsSearchParams: PluginsSearchParams) => { + return useQuery({ + queryKey: [NAME_SPACE, 'fetchPluginListOrBundleList', pluginsSearchParams], + queryFn: () => { + const { + query, + sortBy, + sortOrder, + category, + tags, + exclude, + type, + page = 1, + pageSize = 40, + } = pluginsSearchParams + const pluginOrBundle = type === 'bundle' ? 'bundles' : 'plugins' + return postMarketplace<{ data: PluginsFromMarketplaceResponse }>(`/${pluginOrBundle}/search/advanced`, { + body: { + page, + page_size: pageSize, + query, + sort_by: sortBy, + sort_order: sortOrder, + category: category !== 'all' ? category : '', + tags, + exclude, + type, + }, + }) + }, + }) +} + export const useFetchPluginsInMarketPlaceByInfo = (infos: Record[]) => { return useQuery({ queryKey: [NAME_SPACE, 'fetchPluginsInMarketPlaceByInfo', infos], @@ -448,7 +489,7 @@ const usePluginTaskListKey = [NAME_SPACE, 'pluginTaskList'] export const usePluginTaskList = (category?: PluginType) => { const { canManagement, - } = usePermission() + } = useReferenceSetting() const { refreshPluginList } = useRefreshPluginList() const { data,