From 5566bd621cef2aece8101fa57d3399d27d485d8d Mon Sep 17 00:00:00 2001 From: Weilong Liao <37870767+Soulter@users.noreply.github.com> Date: Tue, 16 Jun 2026 11:03:42 +0800 Subject: [PATCH] feat: reorganize settings system configuration (#8777) * feat: reorganize settings system configuration * fix: float system config restart notice * fix: blur system config restart notice * fix: tint restart notice blur background * fix: allow totp setup without body * fix: filter public openapi docs * fix: handle settings autosave cleanup * chore: ui --- astrbot/dashboard/api/app.py | 4 - astrbot/dashboard/api/auth.py | 8 +- astrbot/dashboard/api/updates.py | 22 +- astrbot/dashboard/schemas.py | 4 - astrbot/dashboard/services/stat_service.py | 3 - astrbot/dashboard/services/update_service.py | 37 - .../src/api/generated/openapi-v1/sdk.gen.ts | 12 +- .../src/api/generated/openapi-v1/types.gen.ts | 15 - dashboard/src/api/v1.ts | 5 - .../mdi-subset/materialdesignicons-subset.css | 26 +- .../materialdesignicons-webfont-subset.woff | Bin 19548 -> 20060 bytes .../materialdesignicons-webfont-subset.woff2 | Bin 15664 -> 16096 bytes dashboard/src/components/ConfirmDialog.vue | 2 +- .../src/components/shared/MigrationDialog.vue | 298 -- .../src/components/shared/ProxySelector.vue | 141 +- .../components/shared/SidebarCustomizer.vue | 3 +- .../components/shared/StorageCleanupPanel.vue | 231 +- .../components/shared/T2ITemplateEditor.vue | 42 +- dashboard/src/i18n/loader.ts | 1 - .../locales/en-US/features/migration.json | 18 - .../i18n/locales/en-US/features/settings.json | 64 +- .../locales/ru-RU/features/migration.json | 18 - .../i18n/locales/ru-RU/features/settings.json | 64 +- .../locales/zh-CN/features/migration.json | 18 - .../i18n/locales/zh-CN/features/settings.json | 66 +- dashboard/src/i18n/translations.ts | 6 - dashboard/src/layouts/full/FullLayout.vue | 45 +- .../full/vertical-sidebar/sidebarItem.ts | 14 +- dashboard/src/router/MainRoutes.ts | 4 +- dashboard/src/views/ConfigPage.vue | 18 +- dashboard/src/views/Settings.vue | 1508 ++++++-- docs/en/dev/openapi.md | 2 +- docs/public/openapi.json | 3373 ----------------- docs/scripts/update_openapi_json.py | 122 + docs/zh/dev/openapi.md | 2 +- openspec/openapi-v1.yaml | 24 - 36 files changed, 1869 insertions(+), 4351 deletions(-) delete mode 100644 dashboard/src/components/shared/MigrationDialog.vue delete mode 100644 dashboard/src/i18n/locales/en-US/features/migration.json delete mode 100644 dashboard/src/i18n/locales/ru-RU/features/migration.json delete mode 100644 dashboard/src/i18n/locales/zh-CN/features/migration.json diff --git a/astrbot/dashboard/api/app.py b/astrbot/dashboard/api/app.py index f0c25ae6f..00ceb11cf 100644 --- a/astrbot/dashboard/api/app.py +++ b/astrbot/dashboard/api/app.py @@ -45,8 +45,6 @@ from astrbot.dashboard.services.tools_service import ToolsService from astrbot.dashboard.services.update_service import ( DEMO_MODE, UpdateService, - call_check_migration_needed_v4, - call_do_migration_v4, call_download_dashboard, call_extract_dashboard, call_get_dashboard_version, @@ -143,8 +141,6 @@ def create_dashboard_asgi_app( extract_dashboard_func=call_extract_dashboard, get_dashboard_version_func=call_get_dashboard_version, pip_install_func=call_pip_install, - check_migration_needed_func=call_check_migration_needed_v4, - do_migration_func=call_do_migration_v4, demo_mode=DEMO_MODE, clear_site_data_headers=CLEAR_SITE_DATA_HEADERS, ), diff --git a/astrbot/dashboard/api/auth.py b/astrbot/dashboard/api/auth.py index fda03f4a3..9d343c53a 100644 --- a/astrbot/dashboard/api/auth.py +++ b/astrbot/dashboard/api/auth.py @@ -178,6 +178,8 @@ def get_auth_service(request: Request) -> AuthService: def _payload(payload) -> dict: + if payload is None: + return {} return payload.model_dump(exclude_none=True) @@ -331,7 +333,7 @@ async def _setup( async def _totp_setup( request: Request, - payload: TotpSetupRequest, + payload: TotpSetupRequest | None, service: AuthService, ): return _auth_service_response( @@ -438,7 +440,7 @@ async def dashboard_setup_authenticated( @router.post("/auth/totp/setup") async def totp_setup( request: Request, - payload: TotpSetupRequest, + payload: TotpSetupRequest | None = None, _auth: AuthContext = Depends(require_system_scope), service: AuthService = Depends(get_auth_service), ): @@ -448,7 +450,7 @@ async def totp_setup( @legacy_router.post("/totp/setup") async def dashboard_totp_setup( request: Request, - payload: TotpSetupRequest, + payload: TotpSetupRequest | None = None, _username: str = Depends(require_dashboard_user), service: AuthService = Depends(get_auth_service), ): diff --git a/astrbot/dashboard/api/updates.py b/astrbot/dashboard/api/updates.py index 1f2041a5b..ab07cd25c 100644 --- a/astrbot/dashboard/api/updates.py +++ b/astrbot/dashboard/api/updates.py @@ -5,7 +5,7 @@ from fastapi.responses import JSONResponse from astrbot.core import logger from astrbot.dashboard.async_utils import run_maybe_async -from astrbot.dashboard.schemas import MigrationRequest, PipInstallRequest, UpdateRequest +from astrbot.dashboard.schemas import PipInstallRequest, UpdateRequest from astrbot.dashboard.services.update_service import ( UpdateService, UpdateServiceError, @@ -174,23 +174,3 @@ async def install_dashboard_pip_package( service: UpdateService = Depends(get_service), ): return await _run(lambda: service.install_pip_package(_model_dict(payload))) - - -@router.post("/migrations") -async def run_migration( - payload: MigrationRequest | None = None, - _auth: AuthContext = Depends(require_system_scope), - service: UpdateService = Depends(get_service), -): - body = _model_dict(payload) if payload is not None else {} - return await _run(lambda: service.do_migration_v4(body)) - - -@legacy_router.post("/migration") -async def run_dashboard_migration( - payload: MigrationRequest | None = None, - _username: str = Depends(require_dashboard_user), - service: UpdateService = Depends(get_service), -): - body = _model_dict(payload) if payload is not None else {} - return await _run(lambda: service.do_migration_v4(body)) diff --git a/astrbot/dashboard/schemas.py b/astrbot/dashboard/schemas.py index eddabbbcd..f29fcda7e 100644 --- a/astrbot/dashboard/schemas.py +++ b/astrbot/dashboard/schemas.py @@ -90,10 +90,6 @@ class PipInstallRequest(OpenModel): mirror: str | None = None -class MigrationRequest(OpenModel): - platform_id_map: dict[str, Any] | None = None - - class ChatProjectRequest(OpenModel): project_id: str | None = None title: str | None = None diff --git a/astrbot/dashboard/services/stat_service.py b/astrbot/dashboard/services/stat_service.py index a25b0a85d..6c6e7f7ed 100644 --- a/astrbot/dashboard/services/stat_service.py +++ b/astrbot/dashboard/services/stat_service.py @@ -19,7 +19,6 @@ from astrbot.core.config import VERSION from astrbot.core.config.astrbot_config import AstrBotConfig from astrbot.core.core_lifecycle import AstrBotCoreLifecycle from astrbot.core.db import BaseDatabase -from astrbot.core.db.migration.helper import check_migration_needed_v4 from astrbot.core.db.po import ProviderStat from astrbot.core.utils.astrbot_path import get_astrbot_path from astrbot.core.utils.auth_password import ( @@ -87,7 +86,6 @@ class StatService: ) and not DEMO_MODE async def get_version(self) -> dict: - need_migration = await check_migration_needed_v4(self.core_lifecycle.db) storage_upgraded = await is_password_storage_upgraded( self.db_helper, self.config, @@ -104,7 +102,6 @@ class StatService: "change_pwd_hint": await self.is_default_cred(), "md5_pwd_hint": md5_pwd_hint, "password_upgrade_required": not storage_upgraded, - "need_migration": need_migration, } def get_start_time(self) -> dict: diff --git a/astrbot/dashboard/services/update_service.py b/astrbot/dashboard/services/update_service.py index f0cdaf786..07a7e5c54 100644 --- a/astrbot/dashboard/services/update_service.py +++ b/astrbot/dashboard/services/update_service.py @@ -15,12 +15,6 @@ from astrbot.core import logger from astrbot.core import pip_installer as _pip_installer from astrbot.core.config.default import VERSION from astrbot.core.core_lifecycle import AstrBotCoreLifecycle -from astrbot.core.db.migration.helper import ( - check_migration_needed_v4 as _check_migration_needed_v4, -) -from astrbot.core.db.migration.helper import ( - do_migration_v4 as _do_migration_v4, -) from astrbot.core.updator import AstrBotUpdator from astrbot.core.utils.astrbot_path import ( get_astrbot_data_path, @@ -41,8 +35,6 @@ pip_installer = _pip_installer download_dashboard = _download_dashboard extract_dashboard = _extract_dashboard get_dashboard_version = _get_dashboard_version -default_check_migration_needed_v4 = _check_migration_needed_v4 -default_do_migration_v4 = _do_migration_v4 async def call_download_dashboard(*args, **kwargs): @@ -66,14 +58,6 @@ async def call_pip_install(*args, **kwargs): return await pip_installer.install(*args, **kwargs) -async def call_check_migration_needed_v4(*args, **kwargs): - return await default_check_migration_needed_v4(*args, **kwargs) - - -async def call_do_migration_v4(*args, **kwargs): - return await default_do_migration_v4(*args, **kwargs) - - @dataclass class UpdateServiceResult: data: Any = None @@ -96,8 +80,6 @@ class UpdateService: extract_dashboard_func: Callable[..., Any], get_dashboard_version_func: Callable[..., Awaitable[str | None]], pip_install_func: Callable[..., Awaitable[Any]], - check_migration_needed_func: Callable[..., Awaitable[bool]], - do_migration_func: Callable[..., Awaitable[Any]], demo_mode: bool, clear_site_data_headers: dict, ) -> None: @@ -107,8 +89,6 @@ class UpdateService: self.extract_dashboard = extract_dashboard_func self.get_dashboard_version = get_dashboard_version_func self.pip_install = pip_install_func - self.check_migration_needed = check_migration_needed_func - self.do_migration = do_migration_func self.demo_mode = demo_mode self.clear_site_data_headers = clear_site_data_headers self.update_progress: dict[str, dict] = {} @@ -124,23 +104,6 @@ class UpdateService: ) return UpdateServiceResult(data=progress) - async def do_migration_v4(self, data: object) -> UpdateServiceResult: - need_migration = await self.check_migration_needed(self.core_lifecycle.db) - if not need_migration: - return UpdateServiceResult(message="不需要进行迁移。") - try: - payload = data if isinstance(data, dict) else {} - platform_id_map = payload.get("platform_id_map", {}) - await self.do_migration( - self.core_lifecycle.db, - platform_id_map, - self.core_lifecycle.astrbot_config, - ) - return UpdateServiceResult(message="迁移成功。") - except Exception as exc: - logger.error(f"迁移失败: {traceback.format_exc()}") - raise UpdateServiceError(f"迁移失败: {exc!s}") from exc - async def check_update(self, update_type: str | None) -> UpdateServiceResult: try: dashboard_version = await self.get_dashboard_version() diff --git a/dashboard/src/api/generated/openapi-v1/sdk.gen.ts b/dashboard/src/api/generated/openapi-v1/sdk.gen.ts index 736f7f8e5..8cde55cf9 100644 --- a/dashboard/src/api/generated/openapi-v1/sdk.gen.ts +++ b/dashboard/src/api/generated/openapi-v1/sdk.gen.ts @@ -1,7 +1,7 @@ // This file is auto-generated by @hey-api/openapi-ts import { createClient, createConfig, type OptionsLegacyParser, formDataBodySerializer } from '@hey-api/client-axios'; -import type { LoginData, LoginError, LoginResponse, LogoutError, LogoutResponse, GetAuthSetupStatusError, GetAuthSetupStatusResponse, SetupAuthData, SetupAuthError, SetupAuthResponse, SetupTotpData, SetupTotpError, SetupTotpResponse, RecoverTotpError, RecoverTotpResponse, UpdateAuthAccountData, UpdateAuthAccountError, UpdateAuthAccountResponse, ListApiKeysError, ListApiKeysResponse, CreateApiKeyData, CreateApiKeyError, CreateApiKeyResponse, RevokeApiKeyData, RevokeApiKeyError, RevokeApiKeyResponse, DeleteApiKeyData, DeleteApiKeyError, DeleteApiKeyResponse, GetSystemConfigSchemaError, GetSystemConfigSchemaResponse, GetSystemConfigError, GetSystemConfigResponse, UpdateSystemConfigData, UpdateSystemConfigError, UpdateSystemConfigResponse, GetSystemConfigRuntimeError, GetSystemConfigRuntimeResponse, GetConfigProfileSchemaError, GetConfigProfileSchemaResponse, ListConfigProfilesError, ListConfigProfilesResponse, CreateConfigProfileData, CreateConfigProfileError, CreateConfigProfileResponse, GetConfigProfileData, GetConfigProfileError, GetConfigProfileResponse, UpdateConfigProfileContentData, UpdateConfigProfileContentError, UpdateConfigProfileContentResponse, RenameConfigProfileData, RenameConfigProfileError, RenameConfigProfileResponse, DeleteConfigProfileData, DeleteConfigProfileError, DeleteConfigProfileResponse, ListConfigRoutesError, ListConfigRoutesResponse, ReplaceConfigRoutesData, ReplaceConfigRoutesError, ReplaceConfigRoutesResponse, UpsertConfigRouteData, UpsertConfigRouteError, UpsertConfigRouteResponse, DeleteConfigRouteData, DeleteConfigRouteError, DeleteConfigRouteResponse, ListBotTypesError, ListBotTypesResponse, RegisterBotTypeData, RegisterBotTypeError, RegisterBotTypeResponse, ListBotsData, ListBotsError, ListBotsResponse, CreateBotData, CreateBotError, CreateBotResponse, ListBotStatsError, ListBotStatsResponse, GetBotByIdData, GetBotByIdError, GetBotByIdResponse, UpdateBotByIdData, UpdateBotByIdError, UpdateBotByIdResponse, DeleteBotByIdData, DeleteBotByIdError, DeleteBotByIdResponse, SetBotEnabledByIdData, SetBotEnabledByIdError, SetBotEnabledByIdResponse, TestBotByIdData, TestBotByIdError, TestBotByIdResponse, GetBotData, GetBotError, GetBotResponse, UpdateBotData, UpdateBotError, UpdateBotResponse, DeleteBotData, DeleteBotError, DeleteBotResponse, SetBotEnabledData, SetBotEnabledError, SetBotEnabledResponse, TestBotData, TestBotError, TestBotResponse, GetProviderSchemaError, GetProviderSchemaResponse, ListProviderSourcesError, ListProviderSourcesResponse, CreateProviderSourceData, CreateProviderSourceError, CreateProviderSourceResponse, GetProviderSourceByIdData, GetProviderSourceByIdError, GetProviderSourceByIdResponse, UpsertProviderSourceByIdData, UpsertProviderSourceByIdError, UpsertProviderSourceByIdResponse, DeleteProviderSourceByIdData, DeleteProviderSourceByIdError, DeleteProviderSourceByIdResponse, ListProviderSourceModelsByIdData, ListProviderSourceModelsByIdError, ListProviderSourceModelsByIdResponse, ListProvidersBySourceIdData, ListProvidersBySourceIdError, ListProvidersBySourceIdResponse, CreateProviderInSourceByIdData, CreateProviderInSourceByIdError, CreateProviderInSourceByIdResponse, GetProviderSourceData, GetProviderSourceError, GetProviderSourceResponse, UpsertProviderSourceData, UpsertProviderSourceError, UpsertProviderSourceResponse, DeleteProviderSourceData, DeleteProviderSourceError, DeleteProviderSourceResponse, ListProviderSourceModelsData, ListProviderSourceModelsError, ListProviderSourceModelsResponse, ListProvidersBySourceData, ListProvidersBySourceError, ListProvidersBySourceResponse, CreateProviderInSourceData, CreateProviderInSourceError, CreateProviderInSourceResponse, ListProvidersData, ListProvidersError, ListProvidersResponse, CreateProviderData, CreateProviderError, CreateProviderResponse, GetProviderByIdData, GetProviderByIdError, GetProviderByIdResponse, UpdateProviderByIdData, UpdateProviderByIdError, UpdateProviderByIdResponse, DeleteProviderByIdData, DeleteProviderByIdError, DeleteProviderByIdResponse, SetProviderEnabledByIdData, SetProviderEnabledByIdError, SetProviderEnabledByIdResponse, TestProviderByIdData, TestProviderByIdError, TestProviderByIdResponse, GetProviderEmbeddingDimensionByIdData, GetProviderEmbeddingDimensionByIdError, GetProviderEmbeddingDimensionByIdResponse, GetProviderData, GetProviderError, GetProviderResponse, UpdateProviderData, UpdateProviderError, UpdateProviderResponse, DeleteProviderData, DeleteProviderError, DeleteProviderResponse, SetProviderEnabledData, SetProviderEnabledError, SetProviderEnabledResponse, TestProviderData, TestProviderError, TestProviderResponse, GetProviderEmbeddingDimensionData, GetProviderEmbeddingDimensionError, GetProviderEmbeddingDimensionResponse, SendChatMessageData, SendChatMessageError, SendChatMessageResponse, OpenChatWebSocketData, OpenLiveChatWebSocketData, OpenUnifiedChatWebSocketData, ListChatSessionsData, ListChatSessionsError, ListChatSessionsResponse, CreateChatSessionData, CreateChatSessionError, CreateChatSessionResponse, BatchDeleteChatSessionsData, BatchDeleteChatSessionsError, BatchDeleteChatSessionsResponse, GetChatSessionData, GetChatSessionError, GetChatSessionResponse, UpdateChatSessionData, UpdateChatSessionError, UpdateChatSessionResponse, DeleteChatSessionData, DeleteChatSessionError, DeleteChatSessionResponse, StopChatSessionData, StopChatSessionError, StopChatSessionResponse, UpdateChatMessageData, UpdateChatMessageError, UpdateChatMessageResponse, RegenerateChatMessageData, RegenerateChatMessageError, RegenerateChatMessageResponse, ListChatConfigsError, ListChatConfigsResponse, CreateChatThreadData, CreateChatThreadError, CreateChatThreadResponse, GetChatThreadData, GetChatThreadError, GetChatThreadResponse, DeleteChatThreadData, DeleteChatThreadError, DeleteChatThreadResponse, SendChatThreadMessageData, SendChatThreadMessageError, SendChatThreadMessageResponse, ListChatProjectsError, ListChatProjectsResponse, CreateChatProjectData, CreateChatProjectError, CreateChatProjectResponse, GetChatProjectData, GetChatProjectError, GetChatProjectResponse, UpdateChatProjectData, UpdateChatProjectError, UpdateChatProjectResponse, DeleteChatProjectData, DeleteChatProjectError, DeleteChatProjectResponse, ListChatProjectSessionsData, ListChatProjectSessionsError, ListChatProjectSessionsResponse, AddChatProjectSessionData, AddChatProjectSessionError, AddChatProjectSessionResponse, RemoveChatProjectSessionData, RemoveChatProjectSessionError, RemoveChatProjectSessionResponse, SendImMessageData, SendImMessageError, SendImMessageResponse, ListImBotsError, ListImBotsResponse, UploadFileData, UploadFileError, UploadFileResponse, GetFileByNameData, GetFileByNameError, GetFileByNameResponse, GetTokenFileData, GetTokenFileError, GetTokenFileResponse, GetAttachmentData, GetAttachmentError, GetAttachmentResponse, DeleteAttachmentData, DeleteAttachmentError, DeleteAttachmentResponse, DownloadAttachmentData, DownloadAttachmentError, DownloadAttachmentResponse, ListPluginsData, ListPluginsError, ListPluginsResponse, GetPluginByIdData, GetPluginByIdError, GetPluginByIdResponse, UninstallPluginByIdData, UninstallPluginByIdError, UninstallPluginByIdResponse, GetPluginConfigByIdData, GetPluginConfigByIdError, GetPluginConfigByIdResponse, UpdatePluginConfigByIdData, UpdatePluginConfigByIdError, UpdatePluginConfigByIdResponse, GetPluginConfigSchemaByIdData, GetPluginConfigSchemaByIdError, GetPluginConfigSchemaByIdResponse, ListPluginConfigFilesByIdData, ListPluginConfigFilesByIdError, ListPluginConfigFilesByIdResponse, UploadPluginConfigFilesByIdData, UploadPluginConfigFilesByIdError, UploadPluginConfigFilesByIdResponse, DeletePluginConfigFileByIdData, DeletePluginConfigFileByIdError, DeletePluginConfigFileByIdResponse, GetPluginReadmeByIdData, GetPluginReadmeByIdError, GetPluginReadmeByIdResponse, GetPluginChangelogByIdData, GetPluginChangelogByIdError, GetPluginChangelogByIdResponse, ReloadPluginByIdData, ReloadPluginByIdError, ReloadPluginByIdResponse, SetPluginEnabledByIdData, SetPluginEnabledByIdError, SetPluginEnabledByIdResponse, ListPluginPagesByIdData, ListPluginPagesByIdError, ListPluginPagesByIdResponse, GetPluginPageByIdData, GetPluginPageByIdError, GetPluginPageByIdResponse, GetPluginPageAssetByIdData, GetPluginPageAssetByIdError, GetPluginPageAssetByIdResponse, GetPluginData, GetPluginError, GetPluginResponse, UninstallPluginData, UninstallPluginError, UninstallPluginResponse, GetPluginConfigData, GetPluginConfigError, GetPluginConfigResponse, UpdatePluginConfigData, UpdatePluginConfigError, UpdatePluginConfigResponse, GetPluginConfigSchemaData, GetPluginConfigSchemaError, GetPluginConfigSchemaResponse, ListPluginConfigFilesData, ListPluginConfigFilesError, ListPluginConfigFilesResponse, UploadPluginConfigFilesData, UploadPluginConfigFilesError, UploadPluginConfigFilesResponse, DeletePluginConfigFileData, DeletePluginConfigFileError, DeletePluginConfigFileResponse, GetPluginReadmeData, GetPluginReadmeError, GetPluginReadmeResponse, GetPluginChangelogData, GetPluginChangelogError, GetPluginChangelogResponse, ReloadPluginData, ReloadPluginError, ReloadPluginResponse, SetPluginEnabledData, SetPluginEnabledError, SetPluginEnabledResponse, UpdatePluginData, UpdatePluginError, UpdatePluginResponse, UpdatePluginsData, UpdatePluginsError, UpdatePluginsResponse, CheckPluginVersionSupportData, CheckPluginVersionSupportError, CheckPluginVersionSupportResponse, ListFailedPluginsError, ListFailedPluginsResponse, UninstallFailedPluginData, UninstallFailedPluginError, UninstallFailedPluginResponse, ReloadFailedPluginData, ReloadFailedPluginError, ReloadFailedPluginResponse, InstallPluginFromGithubData, InstallPluginFromGithubError, InstallPluginFromGithubResponse, InstallPluginFromUrlData, InstallPluginFromUrlError, InstallPluginFromUrlResponse, InstallPluginFromUploadData, InstallPluginFromUploadError, InstallPluginFromUploadResponse, ListPluginMarketData, ListPluginMarketError, ListPluginMarketResponse, ListPluginMarketCategoriesError, ListPluginMarketCategoriesResponse, ListPluginSourcesError, ListPluginSourcesResponse, CreatePluginSourceData, CreatePluginSourceError, CreatePluginSourceResponse, ReplacePluginSourcesData, ReplacePluginSourcesError, ReplacePluginSourcesResponse, DeletePluginSourceData, DeletePluginSourceError, DeletePluginSourceResponse, DeletePluginSourceByIdData, DeletePluginSourceByIdError, DeletePluginSourceByIdResponse, ListPluginPagesData, ListPluginPagesError, ListPluginPagesResponse, GetPluginPageData, GetPluginPageError, GetPluginPageResponse, GetPluginPageAssetData, GetPluginPageAssetError, GetPluginPageAssetResponse, GetPluginPageBridgeSdkError, GetPluginPageBridgeSdkResponse, GetPluginExtensionRouteData, GetPluginExtensionRouteError, GetPluginExtensionRouteResponse, PostPluginExtensionRouteData, PostPluginExtensionRouteError, PostPluginExtensionRouteResponse, PutPluginExtensionRouteData, PutPluginExtensionRouteError, PutPluginExtensionRouteResponse, PatchPluginExtensionRouteData, PatchPluginExtensionRouteError, PatchPluginExtensionRouteResponse, DeletePluginExtensionRouteData, DeletePluginExtensionRouteError, DeletePluginExtensionRouteResponse, ListCommandsData, ListCommandsError, ListCommandsResponse, UpdateCommandData, UpdateCommandError, UpdateCommandResponse, ListCommandConflictsError, ListCommandConflictsResponse, ListToolsData, ListToolsError, ListToolsResponse, SetToolEnabledData, SetToolEnabledError, SetToolEnabledResponse, SetToolPermissionData, SetToolPermissionError, SetToolPermissionResponse, ListMcpServersError, ListMcpServersResponse, CreateMcpServerData, CreateMcpServerError, CreateMcpServerResponse, UpdateMcpServerByNameData, UpdateMcpServerByNameError, UpdateMcpServerByNameResponse, DeleteMcpServerByNameData, DeleteMcpServerByNameError, DeleteMcpServerByNameResponse, SetMcpServerEnabledByNameData, SetMcpServerEnabledByNameError, SetMcpServerEnabledByNameResponse, TestMcpServerByNameData, TestMcpServerByNameError, TestMcpServerByNameResponse, UpdateMcpServerData, UpdateMcpServerError, UpdateMcpServerResponse, DeleteMcpServerData, DeleteMcpServerError, DeleteMcpServerResponse, SetMcpServerEnabledData, SetMcpServerEnabledError, SetMcpServerEnabledResponse, TestMcpServerData, TestMcpServerError, TestMcpServerResponse, SyncModelScopeMcpServersData, SyncModelScopeMcpServersError, SyncModelScopeMcpServersResponse, ListSkillsData, ListSkillsError, ListSkillsResponse, UploadSkillData, UploadSkillError, UploadSkillResponse, UploadSkillsBatchData, UploadSkillsBatchError, UploadSkillsBatchResponse, UpdateSkillByNameData, UpdateSkillByNameError, UpdateSkillByNameResponse, DeleteSkillByNameData, DeleteSkillByNameError, DeleteSkillByNameResponse, DownloadSkillByNameData, DownloadSkillByNameError, DownloadSkillByNameResponse, ListSkillFilesByNameData, ListSkillFilesByNameError, ListSkillFilesByNameResponse, GetSkillFileByNameData, GetSkillFileByNameError, GetSkillFileByNameResponse, UpdateSkillFileByNameData, UpdateSkillFileByNameError, UpdateSkillFileByNameResponse, UpdateSkillData, UpdateSkillError, UpdateSkillResponse, DeleteSkillData, DeleteSkillError, DeleteSkillResponse, DownloadSkillData, DownloadSkillError, DownloadSkillResponse, ListSkillFilesData, ListSkillFilesError, ListSkillFilesResponse, GetSkillFileData, GetSkillFileError, GetSkillFileResponse, UpdateSkillFileData, UpdateSkillFileError, UpdateSkillFileResponse, ListNeoSkillCandidatesData, ListNeoSkillCandidatesError, ListNeoSkillCandidatesResponse, ListNeoSkillReleasesData, ListNeoSkillReleasesError, ListNeoSkillReleasesResponse, GetNeoSkillPayloadData, GetNeoSkillPayloadError, GetNeoSkillPayloadResponse, EvaluateNeoSkillCandidateData, EvaluateNeoSkillCandidateError, EvaluateNeoSkillCandidateResponse, PromoteNeoSkillCandidateData, PromoteNeoSkillCandidateError, PromoteNeoSkillCandidateResponse, RollbackNeoSkillReleaseData, RollbackNeoSkillReleaseError, RollbackNeoSkillReleaseResponse, SyncNeoSkillReleaseData, SyncNeoSkillReleaseError, SyncNeoSkillReleaseResponse, DeleteNeoSkillCandidateData, DeleteNeoSkillCandidateError, DeleteNeoSkillCandidateResponse, DeleteNeoSkillReleaseData, DeleteNeoSkillReleaseError, DeleteNeoSkillReleaseResponse, ListKnowledgeBasesData, ListKnowledgeBasesError, ListKnowledgeBasesResponse, CreateKnowledgeBaseData, CreateKnowledgeBaseError, CreateKnowledgeBaseResponse, GetKnowledgeBaseData, GetKnowledgeBaseError, GetKnowledgeBaseResponse, UpdateKnowledgeBaseData, UpdateKnowledgeBaseError, UpdateKnowledgeBaseResponse, DeleteKnowledgeBaseData, DeleteKnowledgeBaseError, DeleteKnowledgeBaseResponse, GetKnowledgeBaseStatsData, GetKnowledgeBaseStatsError, GetKnowledgeBaseStatsResponse, ListKnowledgeDocumentsData, ListKnowledgeDocumentsError, ListKnowledgeDocumentsResponse, UploadKnowledgeDocumentData, UploadKnowledgeDocumentError, UploadKnowledgeDocumentResponse, ImportKnowledgeDocumentsData, ImportKnowledgeDocumentsError, ImportKnowledgeDocumentsResponse, ImportKnowledgeDocumentFromUrlData, ImportKnowledgeDocumentFromUrlError, ImportKnowledgeDocumentFromUrlResponse, GetKnowledgeDocumentData, GetKnowledgeDocumentError, GetKnowledgeDocumentResponse, DeleteKnowledgeDocumentData, DeleteKnowledgeDocumentError, DeleteKnowledgeDocumentResponse, ListKnowledgeChunksData, ListKnowledgeChunksError, ListKnowledgeChunksResponse, DeleteKnowledgeChunkData, DeleteKnowledgeChunkError, DeleteKnowledgeChunkResponse, RetrieveKnowledgeBaseData, RetrieveKnowledgeBaseError, RetrieveKnowledgeBaseResponse, GetKnowledgeTaskData, GetKnowledgeTaskError, GetKnowledgeTaskResponse, GetPersonaTreeError, GetPersonaTreeResponse, ListPersonasData, ListPersonasError, ListPersonasResponse, CreatePersonaData, CreatePersonaError, CreatePersonaResponse, GetPersonaByIdData, GetPersonaByIdError, GetPersonaByIdResponse, UpdatePersonaByIdData, UpdatePersonaByIdError, UpdatePersonaByIdResponse, DeletePersonaByIdData, DeletePersonaByIdError, DeletePersonaByIdResponse, GetPersonaData, GetPersonaError, GetPersonaResponse, UpdatePersonaData, UpdatePersonaError, UpdatePersonaResponse, DeletePersonaData, DeletePersonaError, DeletePersonaResponse, ListPersonaFoldersData, ListPersonaFoldersError, ListPersonaFoldersResponse, CreatePersonaFolderData, CreatePersonaFolderError, CreatePersonaFolderResponse, UpdatePersonaFolderData, UpdatePersonaFolderError, UpdatePersonaFolderResponse, DeletePersonaFolderData, DeletePersonaFolderError, DeletePersonaFolderResponse, MovePersonaItemData, MovePersonaItemError, MovePersonaItemResponse, ReorderPersonaItemsData, ReorderPersonaItemsError, ReorderPersonaItemsResponse, ListSessionsData, ListSessionsError, ListSessionsResponse, ListActiveUmosError, ListActiveUmosResponse, ListSessionRulesData, ListSessionRulesError, ListSessionRulesResponse, UpsertSessionRuleData, UpsertSessionRuleError, UpsertSessionRuleResponse, DeleteSessionRulesData, DeleteSessionRulesError, DeleteSessionRulesResponse, BatchUpdateSessionProviderData, BatchUpdateSessionProviderError, BatchUpdateSessionProviderResponse, BatchUpdateSessionServiceData, BatchUpdateSessionServiceError, BatchUpdateSessionServiceResponse, ListSessionGroupsError, ListSessionGroupsResponse, CreateSessionGroupData, CreateSessionGroupError, CreateSessionGroupResponse, UpdateSessionGroupData, UpdateSessionGroupError, UpdateSessionGroupResponse, DeleteSessionGroupData, DeleteSessionGroupError, DeleteSessionGroupResponse, ListConversationsData, ListConversationsError, ListConversationsResponse, BatchDeleteConversationsData, BatchDeleteConversationsError, BatchDeleteConversationsResponse, GetConversationData, GetConversationError, GetConversationResponse, UpdateConversationData, UpdateConversationError, UpdateConversationResponse, DeleteConversationData, DeleteConversationError, DeleteConversationResponse, ReplaceConversationMessagesData, ReplaceConversationMessagesError, ReplaceConversationMessagesResponse, ExportConversationsData, ExportConversationsError, ExportConversationsResponse, GetStatsData, GetStatsError, GetStatsResponse, GetProviderTokenStatsData, GetProviderTokenStatsError, GetProviderTokenStatsResponse, GetVersionError, GetVersionResponse, GetFirstNoticeData, GetFirstNoticeError, GetFirstNoticeResponse, TestGhproxyConnectionData, TestGhproxyConnectionError, TestGhproxyConnectionResponse, ListChangelogVersionsError, ListChangelogVersionsResponse, GetChangelogData, GetChangelogError, GetChangelogResponse, GetStartTimeError, GetStartTimeResponse, GetStorageStatusError, GetStorageStatusResponse, CleanupStorageData, CleanupStorageError, CleanupStorageResponse, RestartCoreError, RestartCoreResponse, ListBackupsData, ListBackupsError, ListBackupsResponse, CreateBackupData, CreateBackupError, CreateBackupResponse, UploadBackupData, UploadBackupError, UploadBackupResponse, InitBackupUploadData, InitBackupUploadError, InitBackupUploadResponse, UploadBackupChunkData, UploadBackupChunkError, UploadBackupChunkResponse, CompleteBackupUploadData, CompleteBackupUploadError, CompleteBackupUploadResponse, AbortBackupUploadData, AbortBackupUploadError, AbortBackupUploadResponse, GetBackupProgressData, GetBackupProgressError, GetBackupProgressResponse, DownloadBackupData, DownloadBackupError, DownloadBackupResponse, RenameBackupData, RenameBackupError, RenameBackupResponse, DeleteBackupData, DeleteBackupError, DeleteBackupResponse, CheckBackupData, CheckBackupError, CheckBackupResponse, ImportBackupData, ImportBackupError, ImportBackupResponse, CheckUpdateError, CheckUpdateResponse, ListReleasesData, ListReleasesError, ListReleasesResponse, UpdateCoreData, UpdateCoreError, UpdateCoreResponse, UpdateDashboardData, UpdateDashboardError, UpdateDashboardResponse, GetUpdateProgressData, GetUpdateProgressError, GetUpdateProgressResponse, InstallPipPackageData, InstallPipPackageError, InstallPipPackageResponse, RunMigrationsData, RunMigrationsError, RunMigrationsResponse, ListCronJobsData, ListCronJobsError, ListCronJobsResponse, CreateCronJobData, CreateCronJobError, CreateCronJobResponse, UpdateCronJobData, UpdateCronJobError, UpdateCronJobResponse, DeleteCronJobData, DeleteCronJobError, DeleteCronJobResponse, RunCronJobData, RunCronJobError, RunCronJobResponse, StreamLiveLogsError, StreamLiveLogsResponse, GetLogHistoryError, GetLogHistoryResponse, GetTraceSettingsError, GetTraceSettingsResponse, UpdateTraceSettingsData, UpdateTraceSettingsError, UpdateTraceSettingsResponse, ListT2iTemplatesError, ListT2iTemplatesResponse, CreateT2iTemplateData, CreateT2iTemplateError, CreateT2iTemplateResponse, GetActiveT2iTemplateError, GetActiveT2iTemplateResponse, SetActiveT2iTemplateData, SetActiveT2iTemplateError, SetActiveT2iTemplateResponse, ResetDefaultT2iTemplateError, ResetDefaultT2iTemplateResponse, GetT2iTemplateData, GetT2iTemplateError, GetT2iTemplateResponse, UpdateT2iTemplateData, UpdateT2iTemplateError, UpdateT2iTemplateResponse, DeleteT2iTemplateData, DeleteT2iTemplateError, DeleteT2iTemplateResponse, GetSubagentConfigError, GetSubagentConfigResponse, UpdateSubagentConfigData, UpdateSubagentConfigError, UpdateSubagentConfigResponse, ListSubagentAvailableToolsError, ListSubagentAvailableToolsResponse, VerifyPlatformWebhookData, VerifyPlatformWebhookError, VerifyPlatformWebhookResponse, ReceivePlatformWebhookData, ReceivePlatformWebhookError, ReceivePlatformWebhookResponse } from './types.gen'; +import type { LoginData, LoginError, LoginResponse, LogoutError, LogoutResponse, GetAuthSetupStatusError, GetAuthSetupStatusResponse, SetupAuthData, SetupAuthError, SetupAuthResponse, SetupTotpData, SetupTotpError, SetupTotpResponse, RecoverTotpError, RecoverTotpResponse, UpdateAuthAccountData, UpdateAuthAccountError, UpdateAuthAccountResponse, ListApiKeysError, ListApiKeysResponse, CreateApiKeyData, CreateApiKeyError, CreateApiKeyResponse, RevokeApiKeyData, RevokeApiKeyError, RevokeApiKeyResponse, DeleteApiKeyData, DeleteApiKeyError, DeleteApiKeyResponse, GetSystemConfigSchemaError, GetSystemConfigSchemaResponse, GetSystemConfigError, GetSystemConfigResponse, UpdateSystemConfigData, UpdateSystemConfigError, UpdateSystemConfigResponse, GetSystemConfigRuntimeError, GetSystemConfigRuntimeResponse, GetConfigProfileSchemaError, GetConfigProfileSchemaResponse, ListConfigProfilesError, ListConfigProfilesResponse, CreateConfigProfileData, CreateConfigProfileError, CreateConfigProfileResponse, GetConfigProfileData, GetConfigProfileError, GetConfigProfileResponse, UpdateConfigProfileContentData, UpdateConfigProfileContentError, UpdateConfigProfileContentResponse, RenameConfigProfileData, RenameConfigProfileError, RenameConfigProfileResponse, DeleteConfigProfileData, DeleteConfigProfileError, DeleteConfigProfileResponse, ListConfigRoutesError, ListConfigRoutesResponse, ReplaceConfigRoutesData, ReplaceConfigRoutesError, ReplaceConfigRoutesResponse, UpsertConfigRouteData, UpsertConfigRouteError, UpsertConfigRouteResponse, DeleteConfigRouteData, DeleteConfigRouteError, DeleteConfigRouteResponse, ListBotTypesError, ListBotTypesResponse, RegisterBotTypeData, RegisterBotTypeError, RegisterBotTypeResponse, ListBotsData, ListBotsError, ListBotsResponse, CreateBotData, CreateBotError, CreateBotResponse, ListBotStatsError, ListBotStatsResponse, GetBotByIdData, GetBotByIdError, GetBotByIdResponse, UpdateBotByIdData, UpdateBotByIdError, UpdateBotByIdResponse, DeleteBotByIdData, DeleteBotByIdError, DeleteBotByIdResponse, SetBotEnabledByIdData, SetBotEnabledByIdError, SetBotEnabledByIdResponse, TestBotByIdData, TestBotByIdError, TestBotByIdResponse, GetBotData, GetBotError, GetBotResponse, UpdateBotData, UpdateBotError, UpdateBotResponse, DeleteBotData, DeleteBotError, DeleteBotResponse, SetBotEnabledData, SetBotEnabledError, SetBotEnabledResponse, TestBotData, TestBotError, TestBotResponse, GetProviderSchemaError, GetProviderSchemaResponse, ListProviderSourcesError, ListProviderSourcesResponse, CreateProviderSourceData, CreateProviderSourceError, CreateProviderSourceResponse, GetProviderSourceByIdData, GetProviderSourceByIdError, GetProviderSourceByIdResponse, UpsertProviderSourceByIdData, UpsertProviderSourceByIdError, UpsertProviderSourceByIdResponse, DeleteProviderSourceByIdData, DeleteProviderSourceByIdError, DeleteProviderSourceByIdResponse, ListProviderSourceModelsByIdData, ListProviderSourceModelsByIdError, ListProviderSourceModelsByIdResponse, ListProvidersBySourceIdData, ListProvidersBySourceIdError, ListProvidersBySourceIdResponse, CreateProviderInSourceByIdData, CreateProviderInSourceByIdError, CreateProviderInSourceByIdResponse, GetProviderSourceData, GetProviderSourceError, GetProviderSourceResponse, UpsertProviderSourceData, UpsertProviderSourceError, UpsertProviderSourceResponse, DeleteProviderSourceData, DeleteProviderSourceError, DeleteProviderSourceResponse, ListProviderSourceModelsData, ListProviderSourceModelsError, ListProviderSourceModelsResponse, ListProvidersBySourceData, ListProvidersBySourceError, ListProvidersBySourceResponse, CreateProviderInSourceData, CreateProviderInSourceError, CreateProviderInSourceResponse, ListProvidersData, ListProvidersError, ListProvidersResponse, CreateProviderData, CreateProviderError, CreateProviderResponse, GetProviderByIdData, GetProviderByIdError, GetProviderByIdResponse, UpdateProviderByIdData, UpdateProviderByIdError, UpdateProviderByIdResponse, DeleteProviderByIdData, DeleteProviderByIdError, DeleteProviderByIdResponse, SetProviderEnabledByIdData, SetProviderEnabledByIdError, SetProviderEnabledByIdResponse, TestProviderByIdData, TestProviderByIdError, TestProviderByIdResponse, GetProviderEmbeddingDimensionByIdData, GetProviderEmbeddingDimensionByIdError, GetProviderEmbeddingDimensionByIdResponse, GetProviderData, GetProviderError, GetProviderResponse, UpdateProviderData, UpdateProviderError, UpdateProviderResponse, DeleteProviderData, DeleteProviderError, DeleteProviderResponse, SetProviderEnabledData, SetProviderEnabledError, SetProviderEnabledResponse, TestProviderData, TestProviderError, TestProviderResponse, GetProviderEmbeddingDimensionData, GetProviderEmbeddingDimensionError, GetProviderEmbeddingDimensionResponse, SendChatMessageData, SendChatMessageError, SendChatMessageResponse, OpenChatWebSocketData, OpenLiveChatWebSocketData, OpenUnifiedChatWebSocketData, ListChatSessionsData, ListChatSessionsError, ListChatSessionsResponse, CreateChatSessionData, CreateChatSessionError, CreateChatSessionResponse, BatchDeleteChatSessionsData, BatchDeleteChatSessionsError, BatchDeleteChatSessionsResponse, GetChatSessionData, GetChatSessionError, GetChatSessionResponse, UpdateChatSessionData, UpdateChatSessionError, UpdateChatSessionResponse, DeleteChatSessionData, DeleteChatSessionError, DeleteChatSessionResponse, StopChatSessionData, StopChatSessionError, StopChatSessionResponse, UpdateChatMessageData, UpdateChatMessageError, UpdateChatMessageResponse, RegenerateChatMessageData, RegenerateChatMessageError, RegenerateChatMessageResponse, ListChatConfigsError, ListChatConfigsResponse, CreateChatThreadData, CreateChatThreadError, CreateChatThreadResponse, GetChatThreadData, GetChatThreadError, GetChatThreadResponse, DeleteChatThreadData, DeleteChatThreadError, DeleteChatThreadResponse, SendChatThreadMessageData, SendChatThreadMessageError, SendChatThreadMessageResponse, ListChatProjectsError, ListChatProjectsResponse, CreateChatProjectData, CreateChatProjectError, CreateChatProjectResponse, GetChatProjectData, GetChatProjectError, GetChatProjectResponse, UpdateChatProjectData, UpdateChatProjectError, UpdateChatProjectResponse, DeleteChatProjectData, DeleteChatProjectError, DeleteChatProjectResponse, ListChatProjectSessionsData, ListChatProjectSessionsError, ListChatProjectSessionsResponse, AddChatProjectSessionData, AddChatProjectSessionError, AddChatProjectSessionResponse, RemoveChatProjectSessionData, RemoveChatProjectSessionError, RemoveChatProjectSessionResponse, SendImMessageData, SendImMessageError, SendImMessageResponse, ListImBotsError, ListImBotsResponse, UploadFileData, UploadFileError, UploadFileResponse, GetFileByNameData, GetFileByNameError, GetFileByNameResponse, GetTokenFileData, GetTokenFileError, GetTokenFileResponse, GetAttachmentData, GetAttachmentError, GetAttachmentResponse, DeleteAttachmentData, DeleteAttachmentError, DeleteAttachmentResponse, DownloadAttachmentData, DownloadAttachmentError, DownloadAttachmentResponse, ListPluginsData, ListPluginsError, ListPluginsResponse, GetPluginByIdData, GetPluginByIdError, GetPluginByIdResponse, UninstallPluginByIdData, UninstallPluginByIdError, UninstallPluginByIdResponse, GetPluginConfigByIdData, GetPluginConfigByIdError, GetPluginConfigByIdResponse, UpdatePluginConfigByIdData, UpdatePluginConfigByIdError, UpdatePluginConfigByIdResponse, GetPluginConfigSchemaByIdData, GetPluginConfigSchemaByIdError, GetPluginConfigSchemaByIdResponse, ListPluginConfigFilesByIdData, ListPluginConfigFilesByIdError, ListPluginConfigFilesByIdResponse, UploadPluginConfigFilesByIdData, UploadPluginConfigFilesByIdError, UploadPluginConfigFilesByIdResponse, DeletePluginConfigFileByIdData, DeletePluginConfigFileByIdError, DeletePluginConfigFileByIdResponse, GetPluginReadmeByIdData, GetPluginReadmeByIdError, GetPluginReadmeByIdResponse, GetPluginChangelogByIdData, GetPluginChangelogByIdError, GetPluginChangelogByIdResponse, ReloadPluginByIdData, ReloadPluginByIdError, ReloadPluginByIdResponse, SetPluginEnabledByIdData, SetPluginEnabledByIdError, SetPluginEnabledByIdResponse, ListPluginPagesByIdData, ListPluginPagesByIdError, ListPluginPagesByIdResponse, GetPluginPageByIdData, GetPluginPageByIdError, GetPluginPageByIdResponse, GetPluginPageAssetByIdData, GetPluginPageAssetByIdError, GetPluginPageAssetByIdResponse, GetPluginData, GetPluginError, GetPluginResponse, UninstallPluginData, UninstallPluginError, UninstallPluginResponse, GetPluginConfigData, GetPluginConfigError, GetPluginConfigResponse, UpdatePluginConfigData, UpdatePluginConfigError, UpdatePluginConfigResponse, GetPluginConfigSchemaData, GetPluginConfigSchemaError, GetPluginConfigSchemaResponse, ListPluginConfigFilesData, ListPluginConfigFilesError, ListPluginConfigFilesResponse, UploadPluginConfigFilesData, UploadPluginConfigFilesError, UploadPluginConfigFilesResponse, DeletePluginConfigFileData, DeletePluginConfigFileError, DeletePluginConfigFileResponse, GetPluginReadmeData, GetPluginReadmeError, GetPluginReadmeResponse, GetPluginChangelogData, GetPluginChangelogError, GetPluginChangelogResponse, ReloadPluginData, ReloadPluginError, ReloadPluginResponse, SetPluginEnabledData, SetPluginEnabledError, SetPluginEnabledResponse, UpdatePluginData, UpdatePluginError, UpdatePluginResponse, UpdatePluginsData, UpdatePluginsError, UpdatePluginsResponse, CheckPluginVersionSupportData, CheckPluginVersionSupportError, CheckPluginVersionSupportResponse, ListFailedPluginsError, ListFailedPluginsResponse, UninstallFailedPluginData, UninstallFailedPluginError, UninstallFailedPluginResponse, ReloadFailedPluginData, ReloadFailedPluginError, ReloadFailedPluginResponse, InstallPluginFromGithubData, InstallPluginFromGithubError, InstallPluginFromGithubResponse, InstallPluginFromUrlData, InstallPluginFromUrlError, InstallPluginFromUrlResponse, InstallPluginFromUploadData, InstallPluginFromUploadError, InstallPluginFromUploadResponse, ListPluginMarketData, ListPluginMarketError, ListPluginMarketResponse, ListPluginMarketCategoriesError, ListPluginMarketCategoriesResponse, ListPluginSourcesError, ListPluginSourcesResponse, CreatePluginSourceData, CreatePluginSourceError, CreatePluginSourceResponse, ReplacePluginSourcesData, ReplacePluginSourcesError, ReplacePluginSourcesResponse, DeletePluginSourceData, DeletePluginSourceError, DeletePluginSourceResponse, DeletePluginSourceByIdData, DeletePluginSourceByIdError, DeletePluginSourceByIdResponse, ListPluginPagesData, ListPluginPagesError, ListPluginPagesResponse, GetPluginPageData, GetPluginPageError, GetPluginPageResponse, GetPluginPageAssetData, GetPluginPageAssetError, GetPluginPageAssetResponse, GetPluginPageBridgeSdkError, GetPluginPageBridgeSdkResponse, GetPluginExtensionRouteData, GetPluginExtensionRouteError, GetPluginExtensionRouteResponse, PostPluginExtensionRouteData, PostPluginExtensionRouteError, PostPluginExtensionRouteResponse, PutPluginExtensionRouteData, PutPluginExtensionRouteError, PutPluginExtensionRouteResponse, PatchPluginExtensionRouteData, PatchPluginExtensionRouteError, PatchPluginExtensionRouteResponse, DeletePluginExtensionRouteData, DeletePluginExtensionRouteError, DeletePluginExtensionRouteResponse, ListCommandsData, ListCommandsError, ListCommandsResponse, UpdateCommandData, UpdateCommandError, UpdateCommandResponse, ListCommandConflictsError, ListCommandConflictsResponse, ListToolsData, ListToolsError, ListToolsResponse, SetToolEnabledData, SetToolEnabledError, SetToolEnabledResponse, SetToolPermissionData, SetToolPermissionError, SetToolPermissionResponse, ListMcpServersError, ListMcpServersResponse, CreateMcpServerData, CreateMcpServerError, CreateMcpServerResponse, UpdateMcpServerByNameData, UpdateMcpServerByNameError, UpdateMcpServerByNameResponse, DeleteMcpServerByNameData, DeleteMcpServerByNameError, DeleteMcpServerByNameResponse, SetMcpServerEnabledByNameData, SetMcpServerEnabledByNameError, SetMcpServerEnabledByNameResponse, TestMcpServerByNameData, TestMcpServerByNameError, TestMcpServerByNameResponse, UpdateMcpServerData, UpdateMcpServerError, UpdateMcpServerResponse, DeleteMcpServerData, DeleteMcpServerError, DeleteMcpServerResponse, SetMcpServerEnabledData, SetMcpServerEnabledError, SetMcpServerEnabledResponse, TestMcpServerData, TestMcpServerError, TestMcpServerResponse, SyncModelScopeMcpServersData, SyncModelScopeMcpServersError, SyncModelScopeMcpServersResponse, ListSkillsData, ListSkillsError, ListSkillsResponse, UploadSkillData, UploadSkillError, UploadSkillResponse, UploadSkillsBatchData, UploadSkillsBatchError, UploadSkillsBatchResponse, UpdateSkillByNameData, UpdateSkillByNameError, UpdateSkillByNameResponse, DeleteSkillByNameData, DeleteSkillByNameError, DeleteSkillByNameResponse, DownloadSkillByNameData, DownloadSkillByNameError, DownloadSkillByNameResponse, ListSkillFilesByNameData, ListSkillFilesByNameError, ListSkillFilesByNameResponse, GetSkillFileByNameData, GetSkillFileByNameError, GetSkillFileByNameResponse, UpdateSkillFileByNameData, UpdateSkillFileByNameError, UpdateSkillFileByNameResponse, UpdateSkillData, UpdateSkillError, UpdateSkillResponse, DeleteSkillData, DeleteSkillError, DeleteSkillResponse, DownloadSkillData, DownloadSkillError, DownloadSkillResponse, ListSkillFilesData, ListSkillFilesError, ListSkillFilesResponse, GetSkillFileData, GetSkillFileError, GetSkillFileResponse, UpdateSkillFileData, UpdateSkillFileError, UpdateSkillFileResponse, ListNeoSkillCandidatesData, ListNeoSkillCandidatesError, ListNeoSkillCandidatesResponse, ListNeoSkillReleasesData, ListNeoSkillReleasesError, ListNeoSkillReleasesResponse, GetNeoSkillPayloadData, GetNeoSkillPayloadError, GetNeoSkillPayloadResponse, EvaluateNeoSkillCandidateData, EvaluateNeoSkillCandidateError, EvaluateNeoSkillCandidateResponse, PromoteNeoSkillCandidateData, PromoteNeoSkillCandidateError, PromoteNeoSkillCandidateResponse, RollbackNeoSkillReleaseData, RollbackNeoSkillReleaseError, RollbackNeoSkillReleaseResponse, SyncNeoSkillReleaseData, SyncNeoSkillReleaseError, SyncNeoSkillReleaseResponse, DeleteNeoSkillCandidateData, DeleteNeoSkillCandidateError, DeleteNeoSkillCandidateResponse, DeleteNeoSkillReleaseData, DeleteNeoSkillReleaseError, DeleteNeoSkillReleaseResponse, ListKnowledgeBasesData, ListKnowledgeBasesError, ListKnowledgeBasesResponse, CreateKnowledgeBaseData, CreateKnowledgeBaseError, CreateKnowledgeBaseResponse, GetKnowledgeBaseData, GetKnowledgeBaseError, GetKnowledgeBaseResponse, UpdateKnowledgeBaseData, UpdateKnowledgeBaseError, UpdateKnowledgeBaseResponse, DeleteKnowledgeBaseData, DeleteKnowledgeBaseError, DeleteKnowledgeBaseResponse, GetKnowledgeBaseStatsData, GetKnowledgeBaseStatsError, GetKnowledgeBaseStatsResponse, ListKnowledgeDocumentsData, ListKnowledgeDocumentsError, ListKnowledgeDocumentsResponse, UploadKnowledgeDocumentData, UploadKnowledgeDocumentError, UploadKnowledgeDocumentResponse, ImportKnowledgeDocumentsData, ImportKnowledgeDocumentsError, ImportKnowledgeDocumentsResponse, ImportKnowledgeDocumentFromUrlData, ImportKnowledgeDocumentFromUrlError, ImportKnowledgeDocumentFromUrlResponse, GetKnowledgeDocumentData, GetKnowledgeDocumentError, GetKnowledgeDocumentResponse, DeleteKnowledgeDocumentData, DeleteKnowledgeDocumentError, DeleteKnowledgeDocumentResponse, ListKnowledgeChunksData, ListKnowledgeChunksError, ListKnowledgeChunksResponse, DeleteKnowledgeChunkData, DeleteKnowledgeChunkError, DeleteKnowledgeChunkResponse, RetrieveKnowledgeBaseData, RetrieveKnowledgeBaseError, RetrieveKnowledgeBaseResponse, GetKnowledgeTaskData, GetKnowledgeTaskError, GetKnowledgeTaskResponse, GetPersonaTreeError, GetPersonaTreeResponse, ListPersonasData, ListPersonasError, ListPersonasResponse, CreatePersonaData, CreatePersonaError, CreatePersonaResponse, GetPersonaByIdData, GetPersonaByIdError, GetPersonaByIdResponse, UpdatePersonaByIdData, UpdatePersonaByIdError, UpdatePersonaByIdResponse, DeletePersonaByIdData, DeletePersonaByIdError, DeletePersonaByIdResponse, GetPersonaData, GetPersonaError, GetPersonaResponse, UpdatePersonaData, UpdatePersonaError, UpdatePersonaResponse, DeletePersonaData, DeletePersonaError, DeletePersonaResponse, ListPersonaFoldersData, ListPersonaFoldersError, ListPersonaFoldersResponse, CreatePersonaFolderData, CreatePersonaFolderError, CreatePersonaFolderResponse, UpdatePersonaFolderData, UpdatePersonaFolderError, UpdatePersonaFolderResponse, DeletePersonaFolderData, DeletePersonaFolderError, DeletePersonaFolderResponse, MovePersonaItemData, MovePersonaItemError, MovePersonaItemResponse, ReorderPersonaItemsData, ReorderPersonaItemsError, ReorderPersonaItemsResponse, ListSessionsData, ListSessionsError, ListSessionsResponse, ListActiveUmosError, ListActiveUmosResponse, ListSessionRulesData, ListSessionRulesError, ListSessionRulesResponse, UpsertSessionRuleData, UpsertSessionRuleError, UpsertSessionRuleResponse, DeleteSessionRulesData, DeleteSessionRulesError, DeleteSessionRulesResponse, BatchUpdateSessionProviderData, BatchUpdateSessionProviderError, BatchUpdateSessionProviderResponse, BatchUpdateSessionServiceData, BatchUpdateSessionServiceError, BatchUpdateSessionServiceResponse, ListSessionGroupsError, ListSessionGroupsResponse, CreateSessionGroupData, CreateSessionGroupError, CreateSessionGroupResponse, UpdateSessionGroupData, UpdateSessionGroupError, UpdateSessionGroupResponse, DeleteSessionGroupData, DeleteSessionGroupError, DeleteSessionGroupResponse, ListConversationsData, ListConversationsError, ListConversationsResponse, BatchDeleteConversationsData, BatchDeleteConversationsError, BatchDeleteConversationsResponse, GetConversationData, GetConversationError, GetConversationResponse, UpdateConversationData, UpdateConversationError, UpdateConversationResponse, DeleteConversationData, DeleteConversationError, DeleteConversationResponse, ReplaceConversationMessagesData, ReplaceConversationMessagesError, ReplaceConversationMessagesResponse, ExportConversationsData, ExportConversationsError, ExportConversationsResponse, GetStatsData, GetStatsError, GetStatsResponse, GetProviderTokenStatsData, GetProviderTokenStatsError, GetProviderTokenStatsResponse, GetVersionError, GetVersionResponse, GetFirstNoticeData, GetFirstNoticeError, GetFirstNoticeResponse, TestGhproxyConnectionData, TestGhproxyConnectionError, TestGhproxyConnectionResponse, ListChangelogVersionsError, ListChangelogVersionsResponse, GetChangelogData, GetChangelogError, GetChangelogResponse, GetStartTimeError, GetStartTimeResponse, GetStorageStatusError, GetStorageStatusResponse, CleanupStorageData, CleanupStorageError, CleanupStorageResponse, RestartCoreError, RestartCoreResponse, ListBackupsData, ListBackupsError, ListBackupsResponse, CreateBackupData, CreateBackupError, CreateBackupResponse, UploadBackupData, UploadBackupError, UploadBackupResponse, InitBackupUploadData, InitBackupUploadError, InitBackupUploadResponse, UploadBackupChunkData, UploadBackupChunkError, UploadBackupChunkResponse, CompleteBackupUploadData, CompleteBackupUploadError, CompleteBackupUploadResponse, AbortBackupUploadData, AbortBackupUploadError, AbortBackupUploadResponse, GetBackupProgressData, GetBackupProgressError, GetBackupProgressResponse, DownloadBackupData, DownloadBackupError, DownloadBackupResponse, RenameBackupData, RenameBackupError, RenameBackupResponse, DeleteBackupData, DeleteBackupError, DeleteBackupResponse, CheckBackupData, CheckBackupError, CheckBackupResponse, ImportBackupData, ImportBackupError, ImportBackupResponse, CheckUpdateError, CheckUpdateResponse, ListReleasesData, ListReleasesError, ListReleasesResponse, UpdateCoreData, UpdateCoreError, UpdateCoreResponse, UpdateDashboardData, UpdateDashboardError, UpdateDashboardResponse, GetUpdateProgressData, GetUpdateProgressError, GetUpdateProgressResponse, InstallPipPackageData, InstallPipPackageError, InstallPipPackageResponse, ListCronJobsData, ListCronJobsError, ListCronJobsResponse, CreateCronJobData, CreateCronJobError, CreateCronJobResponse, UpdateCronJobData, UpdateCronJobError, UpdateCronJobResponse, DeleteCronJobData, DeleteCronJobError, DeleteCronJobResponse, RunCronJobData, RunCronJobError, RunCronJobResponse, StreamLiveLogsError, StreamLiveLogsResponse, GetLogHistoryError, GetLogHistoryResponse, GetTraceSettingsError, GetTraceSettingsResponse, UpdateTraceSettingsData, UpdateTraceSettingsError, UpdateTraceSettingsResponse, ListT2iTemplatesError, ListT2iTemplatesResponse, CreateT2iTemplateData, CreateT2iTemplateError, CreateT2iTemplateResponse, GetActiveT2iTemplateError, GetActiveT2iTemplateResponse, SetActiveT2iTemplateData, SetActiveT2iTemplateError, SetActiveT2iTemplateResponse, ResetDefaultT2iTemplateError, ResetDefaultT2iTemplateResponse, GetT2iTemplateData, GetT2iTemplateError, GetT2iTemplateResponse, UpdateT2iTemplateData, UpdateT2iTemplateError, UpdateT2iTemplateResponse, DeleteT2iTemplateData, DeleteT2iTemplateError, DeleteT2iTemplateResponse, GetSubagentConfigError, GetSubagentConfigResponse, UpdateSubagentConfigData, UpdateSubagentConfigError, UpdateSubagentConfigResponse, ListSubagentAvailableToolsError, ListSubagentAvailableToolsResponse, VerifyPlatformWebhookData, VerifyPlatformWebhookError, VerifyPlatformWebhookResponse, ReceivePlatformWebhookData, ReceivePlatformWebhookError, ReceivePlatformWebhookResponse } from './types.gen'; export const client = createClient(createConfig()); @@ -2820,16 +2820,6 @@ export const installPipPackage = (options: }); }; -/** - * Run pending migrations - */ -export const runMigrations = (options?: OptionsLegacyParser) => { - return (options?.client ?? client).post({ - ...options, - url: '/api/v1/migrations' - }); -}; - /** * List cron jobs */ diff --git a/dashboard/src/api/generated/openapi-v1/types.gen.ts b/dashboard/src/api/generated/openapi-v1/types.gen.ts index e0938bb91..ede087696 100644 --- a/dashboard/src/api/generated/openapi-v1/types.gen.ts +++ b/dashboard/src/api/generated/openapi-v1/types.gen.ts @@ -320,13 +320,6 @@ export type MessagePart = { export type type = 'text' | 'plain' | 'image' | 'file' | 'audio' | 'record' | 'video' | 'reply'; -export type MigrationRequest = { - platform_id_map?: { - [key: string]: unknown; - }; - [key: string]: unknown; -}; - export type ModelScopeSyncRequest = { access_token?: string; }; @@ -3299,14 +3292,6 @@ export type InstallPipPackageResponse = (SuccessEnvelope); export type InstallPipPackageError = unknown; -export type RunMigrationsData = { - body?: MigrationRequest; -}; - -export type RunMigrationsResponse = (SuccessEnvelope); - -export type RunMigrationsError = unknown; - export type ListCronJobsData = { query?: { type?: string; diff --git a/dashboard/src/api/v1.ts b/dashboard/src/api/v1.ts index 0930c6f77..81bfad225 100644 --- a/dashboard/src/api/v1.ts +++ b/dashboard/src/api/v1.ts @@ -33,7 +33,6 @@ import { type LoginRequest, type ListConversationsData, type McpServerConfig, - type MigrationRequest, type ModelScopeSyncRequest, type PipInstallRequest, type PluginVersionSupportRequest, @@ -95,7 +94,6 @@ export interface ProviderEmbeddingDimensionData { export interface VersionData { version?: string; dashboard_version?: string; - need_migration?: boolean; change_pwd_hint?: boolean; md5_pwd_hint?: boolean; password_upgrade_required?: boolean; @@ -574,9 +572,6 @@ export const updatesApi = { openApiV1.installPipPackage({ body: payload }), ); }, - runMigrations(payload?: MigrationRequest) { - return typed(openApiV1.runMigrations({ body: payload })); - }, }; export const backupApi = { diff --git a/dashboard/src/assets/mdi-subset/materialdesignicons-subset.css b/dashboard/src/assets/mdi-subset/materialdesignicons-subset.css index 406c62a36..a83ba92fd 100644 --- a/dashboard/src/assets/mdi-subset/materialdesignicons-subset.css +++ b/dashboard/src/assets/mdi-subset/materialdesignicons-subset.css @@ -1,4 +1,4 @@ -/* Auto-generated MDI subset – 274 icons */ +/* Auto-generated MDI subset – 280 icons */ /* Do not edit manually. Run: pnpm run subset-icons */ @font-face { @@ -60,6 +60,10 @@ content: "\F002A"; } +.mdi-api::before { + content: "\F109B"; +} + .mdi-api-off::before { content: "\F1257"; } @@ -308,6 +312,10 @@ content: "\F0193"; } +.mdi-content-save-check-outline::before { + content: "\F18EB"; +} + .mdi-content-save-outline::before { content: "\F0818"; } @@ -616,6 +624,10 @@ content: "\F0315"; } +.mdi-lan-connect::before { + content: "\F0318"; +} + .mdi-language-css3::before { content: "\F031C"; } @@ -792,6 +804,10 @@ content: "\F0601"; } +.mdi-palette-outline::before { + content: "\F0E0C"; +} + .mdi-paperclip::before { content: "\F03E2"; } @@ -940,6 +956,10 @@ content: "\F0BC4"; } +.mdi-shield-lock-outline::before { + content: "\F0CCC"; +} + .mdi-shuffle-variant::before { content: "\F049F"; } @@ -1056,6 +1076,10 @@ content: "\F0A7A"; } +.mdi-tune-variant::before { + content: "\F1542"; +} + .mdi-unfold-more-horizontal::before { content: "\F054F"; } diff --git a/dashboard/src/assets/mdi-subset/materialdesignicons-webfont-subset.woff b/dashboard/src/assets/mdi-subset/materialdesignicons-webfont-subset.woff index 37b58eaee453baa2001abb6fb91e37e83b0a0e70..33e2a8c35dd07e7d1808104066b325f147f3eebe 100644 GIT binary patch delta 19616 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�h}q;5xr#ma4vRHitnvY8$a$!Xi|L-cg>xPz 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
    jYNI_aGE~$s~|mrC(GC=(ryD+)O5=LQV5btGZiC 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 literal 15664 zcmV-0J0LI)rlfpP`h@vw1#VUBsekqBYq z2myr6BLl(40YK#DX8+$3s0>+GG-Yt-3!!YKw9f6e2tBv#()E{m3T0f|Y5mQ_2MZP~ z*v8E+5oqf?d!n?Sl&ki$%Ov%IIeQP> zEdUE$+f)JB3SDOr0~BD;fXF}C?d@(^+vh;STY-jQ$PLfy=Kn#$2ul)@00~G)SUD%` z1h%;$A%Ki^?`4az43i*I4I-{wcO09VE_Mb{sN-}ioBCR{IE8SF?5YPlv8V_`h_ z3%Q3b@cio{Y>Ww9aqlW|B3E-_mwid+YGZ7yAGFX!z?G?Gx;UKUpA1jNMgN{B<13dg zRj43U5;SH9+})Wqzyct57e_t}dA9^e-U49p7N8LvuSoFTf$x1JYZf4n1%hvA-VpDs ztdEQ(WleOiBvdI>oH^=0E>f>8A>0~_%h#=E7yomrG&&_+O8|9jf(mdL@!9YCFI8SX z>>6+Z*gM%KlG}~OM7$7gy!f1U?sQ4950M~2f{6IXHBFoSK-f+KYyf>k0wcMot|;%2 zO+$2IbYnrBDamEnN>(Hgr!5CAja9{{8P z^0Ps%bO2hcJY2OiYbw}-2VxOB= zK`2MTpb`rcl{{rjrLa)x1z4%f0&G-40d}fzKzBtH;H35o7j;y)sguG(T@+r_ZK2fj z6W)sSP5j~`Rhj_#<_m&R2~nj=1QIDygGNz0b&8>*6U)dbZo4VsmAyrRaN_9$fV#YKx4_0pO&=_O8g zwfW9>I{e@Voo3BivOlQ;I@OusdC>FY#~@IkE?itoiHUVfm1dcI`8ejA?`2i0EJq-$ z(5R8oPCND5ZMT)%OBLu-of!uYs|*^{@3PBQ8#87NJG-?$@riYAxn;dO?lAevJ=7jj z1vaYAUVev7f&|%2Kwyg~QMRg7X`31~%v!YAu3ftwx^>%Wz4dk(FkrVqgZ3CQWUqI; zW1nlT+3$u42RJzm>`M+7-}shw#Qn|&s8yy+ZQ6D4)1ybb<(BL4j(2qK zJ)Y=N7y5>wTbeXIdznM8BaY~E&N=-?jT)GfVo-g+VMwY}!&X{pgoVYZLk=19idT#q zGGxLBJ}~LF+otw4#kBe#4>O*4YIZLu<~8^f7BrL>u&AMnigL)!6y&|B$AL!7Evf-Dpf+GNmVM@K8ocE z6b}WRuHPQ6n9$x zE$+3U!-EVN9<^!n7h} z;m<(_{qHYIpwG}l=BA_o`Vx-gL3`~rc#``ra%5Npe%L?1U8E zDXHWf%GNehwJ{-xww+E@1Q}GoacsP#oaZ3`vf$jz6zok?ywObv0|+|;Ip)UNM1Usy zwA2}^tCgr@Yzt1ZZ`SYIj1t^0NXtkC>?`BUlCwd%dz2$5DIMzR#Qhz3<&MnJ;W;o3 z2r<4tjaFlKBEzD;+UzkPhH}n26&<&_2keZuH%=v;5OT+Ry&DIN05*{R* zl0ACjAP{cP!%W-xL@&Hh?bhwvdsCypBV*V8iac2{LIyb!cl|!PF@SYU-?G?%AtW~P zc5FGWV;cFz%=?iqyI`_KHWhGEPQ*<#mM?x(l>!fd+F1Aif-`O*rk|YapfyfyyY{u( zVQKo;)pm3aj2-=*8{JmdE549!Y-!6-OfWH8mJM$^2;e!jj;JFkU9GWAWc(7Y<%X66 zjBV0F4Wd9o&e1iT=YH}9!{7nU6?^d#5vKMeMQVlC;u&@beJ~<&^sE`y@HXB|$vP)= zXrXQf>3?(g?f+`;{TfRUB!mpwD{(WK zu~`iqdH4VJw@&KL;J_%lRLhNzh(4it2s+d^8-pk#rVkGTG>|cK-+sBi(*aVa((Bc3 zH+MSJ-;|I1Yp+*=K+L99HyU<}eNd0q^6H^8Loy){1y<*7L>do6dTmP~&0v60xwFL8 zIUR^+)TC!|X*pF6A>dsA(q71Xt@B6riH4E(LQKuD2)Gl@tB2Ib<@t#%$f0bUEd4QU z0WHs#0!9Nu1Zc4in%uy#w&0*N5up%p!T>D;*GA`*ItqO=+QN)SK~x25X&`rSSeWZX z&o9i-N8@M3+%_I^D+ui3n_Q(kJ9*;#nK1AHtBqh`=A=sKMAtuGGdH1R%$S-}vgpYi z_qrRq7$6LKR^RF5Znw43o;#=ir9KF7s`GxWK%duPH=Z?2g!PE$hvzy?iz=|iOwOtU$aO?;#vwN_nPN>;TR7vc zbOF`MM#j>@eG@WGE26f#+e?GcbR==@ybCkd-3CWcqyZyNw=>nZ(cnR(C$i)S#2GVl zn>)FqF&ZL>-?s6Emh>fK*^F2*+W`T|#|AMkb*!Kb^0rC9sDhODit%1^ILUR3g@ICO z*$ty^HFaNPChSXD@pBjwi-t8ByOY(;k_go}!q7xy*n|hbtR-XFUNPIm+J9y~Kd|?n z8c%j7tPUX)&scMc9TUmS0asFR6;ov-R#^1UpE*qFr*i$2YX7GnK(9k6d-7S}OuwG0 z<&!F*vfsrx!&>&TAt&|UKK_x7^H8^8Gb}Om`Q#Y7jgd4eQIZY`90L$S_$|7yk~2EV zO9s`=t0=`YCk6I>lrUgm5u$|AR6<|S4SOLb&LvC^!Dy?TYfY?~s#iq>+%grT$f9T= ztOKsZJX;vwm}JLCW7*-YF@xQXC8RwOlI@xD={9bWBe~fUlrbc&_x4bo=GQAvUIhL| z85M)Vs*Gj*d4op_ZR6P^0dT=OTvbRwz`)4ZMhJirwi!yH-vtFU2a4dvK+;c@$q7Iz za+}-T%t|>P#DTg##9OK-zzEz?@J#%i%eMsg$6Rqre5E#F(L8t{iYxENYIdxZ@H=Y= z8C(NoxqjURkX`ZME-J!?ss^xqaTb>62e|Gjt;8~8^YhcmI>`?m&H;o)(|k>m3#h!e z--1kZS5f^YI5XUD!oW3*s!c?+@xU0HfCTV$YM9EVvTr;_+Nrk5Qn-VCQ-pKby#V!x zt9fm|lLkTWsmtM=!q|6+w6*xT2Gq?ac_%?JNsnN6&&zkQ(4K{5LZi(GJw2#ghO`O~5|x4BG-Dpb3tFPTw}gDLhMcwg1mv|Cz<728mS_8H z7(dck*m$~!)HVa!AYi#oP^=z2uSMK7wb*?0Sc86XXY2992eLdB5nE>4l1bfQzRfp| zuE(|iNPXmCh!n0S}M82sM253ri7<>dt z9_vtt&n}_?|1i<`7lCO|T8w;?n>8B_Lb<)Uy4i3Ud`LQ6vC>U0-S=Bi9oplPDJhME% zT#zUaXsNArdrje%XK_jTH?Ujc@@yYLU8cAM!Q8alRcqMek_*Abj4#}Stexl`kh}Y& z--k8HZ}mZ7m@3$-(6}p#9%kvti15|NPOn9KSoXY(c9RQ!kP^vRImenD-6NCW@g)er zL=24NGK%D>lxA3ly$)G~XDg^9n~gjmZO1!g3Ue1l46(rVO*Z$@5s+u;{{$WCFg8^6 z<`sf5(E|N&e&ukD$h>f9?*C6#9}i)kBQ)#@Y3(0VH8lfseV7@~hO#>h z&b(9Rn?lC-1>N(w@2c^SL+Js&UY36F9F90HpK=U7={P)fUGc|C>?6a)L6&%{miXSS zED2ATq=GK>jYW!yRJySo`1jK^iUuWEb@+ zYmgtsKl@z&l>YtmU-|CgRx1gzhav`OlxJj%aa;s==n&9NO@Pgj;JX;6X{HY;8|!qU zlM&mSgMtxSz~GIt0t8ek$?6BXWy>Gei^Y_kJ0Y^0MN_KF|x ztk*(^r!5&tKw}-;?(Qf0nq)nOYR<+%ZSG&dI*{&H`kP<*Z~U_>bhQ8G=-|zf!G7Xb zik!nOb;$hxdf|)vh|AsSdjBi0zFK&7y3_sF|JG^BjNtu7h|CS*eM>qzU`Ej-vjg~$ zsdsQCF-`E{3)QyXuh~8$%x3!0QHqXStSsxKxeyrjDH)YPo%DLLQPz)jwVTbfbWTkw zIs%rtoZ1W&kb1JCNPOs}(zsls)*5-uW(+w!Wk%R?w=+%8^@4GFbYVr`oEgi| zS!qYWw|nV@d?vg2x!Mk{v6r!0FN-(IPT(d5fIfpBA1;9o0TcR&4VbF6Obp&|yoe?~^O_Ve5MQEL4 z^@db8SNEDe`q+s_<}Illsx$z|h%%ReXJ+%AnWrVt;=`IBtv0)Q?#R=K6j+}4*h&AH zW`#G~3$u@-Q;UhPQ|1Z}=Xauh6#8?1tx>F(s{-1`D)TcBrr*S?3z39d;VUbT+wm$V z>8NksZ@p}U9FErX(&M>S<2K&iKG+S zC#|h}%5t~!b^ZE_;lav**6Ic0<^lrq<&)r=GTl|&SYI`d68HsEAji1@Jj$+m4myCq z9vV)NVOu;Z!M-H|o*3AN1sO=tI@Cs~AVk7xyexc(T5rNQjH8_6fK3zq7QL?v1Tc0% zx#;@62sf-65d%W4qedyYutqf{MFdZbYCZHJ29iUE!_|d|R;(oamdFsYA3YhW%!g&K zN>x#=X}-VyLaqadSk&h5tBVdpj%z{$VL@n`EnF+SU(+~lBRiwqB+HPRdW*)qR)Km# z<#w&U{fXtlH>>gQ98b_aU(7_JY0ndx@AKc+5}%kp=IVksDzP7Zm#417CBvbV>vF_# zgdfV%hlYbTUw|qb5iAFrP5Yh098Oj>QllHe0GaCucR^6w=;L1lajN8ciU>2sc$kY3egX zejwZd-0pT?e$e>}{9(O*^HC63=U2+&2w4?;^b#d=nX=XK&$ZbBDjyZXJCj=%wKpDi zgn_=d?nC`A)8NIZdV(v{eQ2Gx=aJWm`600V8)j);?4)k`j2@rCb#M78xE|V9wLJf)_+%a zb+>Gqv`^-Hon!-|_6!#>j3^2RAJrYnva3t8*OTHL32(d(~=d0yV znRB?;L#|tJgsS9lhEe1z_-j>DwF+Ns#A=JtDbc49PSH)T8>ojPJN)Hwl9~T0Ot~d9 z%!}pRYS=3LWR+_2nM2_)YU)0Byb1Sji2hxwyPBv=&ls|JOs7!jWnY4_B;UnkN(#{^ zW~eDDqUm29OWRrkpdy$503sZ$9$e9lQ05GuUMA$ubILJ6E1X_4RwZzu{lq>x+yVhh z-74dvnZ{eYJ9WFbvQ!Th6qj2Fx3lXALP_w%DReRV$a_{RhMcw_X$n^e7gOF3Q|d^{ z#g~cK3H`-z^#g-#{^X5^jiy^8uSdMB>pEPyGrS$=&CZ7RY}R92g)h&w9bd1*Qdt_+ znn+lZQ|a3Dl!NYSe(8|HHw#k@(y@dt#Kz6U>!|G6bvBiIsT+&(4WOL8E@ThzJfrubTIwl-XUSaraJ$=EDw8f#%)g1P5PgO^k{yxaA~Y8GRf{t>XcF=+Hysyr(HZ z$omARV^9x1o?X~}GyPy@-cC?W$D#NT$z~=2pY-nkrCnBhjI^W>gq`L>GwKT^F*AQ3 zs>{1X2$Lde1Syz@WUM-97w2d>0J3X~8S3Ihe&p8tw-4UKI&cq#47Ou5wpRryv584m z&evR$koAw9gcAa}t`Z}1r)(+5`>A&U?IDwmCy-JNNw~T)ml8sE!RWOGm?9xE5?nj$ zrAr;4O)jh_>pi{CmX3ALQS~G$V$l#}9nKaLucnzHc{$jrG3IFuHVy>tz7n|dL;b%2 zniGC&tWe1bswAoXeF#xmFQc5_5BPX00b(h$!-ZqikD^!X3o%&MG*lmN(g78QhW9JD ziS_8vDcRz^Rtho@Z^G=1VJu5TuI|6a4^Z&&ehNf=kc}l=j1D0SwisKbIDFA9->2?5 zlcFk{B8&YC_E_*sLo4L(|8QP?-}?b@hIMM;%;wUAr+Yh3A$8-jjC7JY3>CTv#Q|JB z(DYn+Mg6Fknz3au@!F1QuZ97e%n-Ir=9q`SD0g1kQDkP%M<^L*u9Y4Z$(&PMt7!tA|hc6{UP%lR3QIqDk!ItH(}w#aTJfoUp(o#IlYFgU6( zQwyN}P3UIp1oNkBZ7J0AW)KWA{}ou21sft>snc6%L`m4y8_25Qw*a1*vxkhXXS1_%qc$7UF2&Kz#)auzuQ&^7AO$;Tu) z1`J-ZmfI<|P{tKm(f-waHuj~ks&`ar{3x<9NwIuI!1fhKf)Em8wY&94pa<3{LoM(! zO;Q;pnUd2G+Vyl~ta169kvc0FhMf*j#1sbl2`BfRAeomUh5VkvYFc%m*T&dWo!-Ggo?cce%B}G&&%M55U4qh&{RPJGk1zmD&b(-a+q5A&$gERLSBvrUu6z zaeJNv_ z>nF16Ea0G~YqwYI5KX&{mAigY45LOkHr5+^EY7ME8DsyrZOL5DGRFveD{Sw9$izkG ztP7+!4iChsxqhsEs>&r(e@e8#Lz1*FB>IM;eB#v>r#;uVYc(bLySo-~V4v{%Px!!1^9;H@`fc(4PWl z_yV#y<5vJnt14pVy$%*hv$7MDb93s_7L=x^mK4{w$|7|EpR!AJ>&2`hmPS8gqUodx zo--7YDAZZO1JW;E6;m0~lmFL;Ngw`|-xE@)iit}SsO5zjg>vR>Z-ecNo}X} z)mNpRvXXcJo^Ec;)HQ)TD~U#EK-$5Hulh90v?=1}ZFw?sjdqnGGY8i#Rie$q%@H zg)@ ^fciw*z9BzXIUFEk>h@B)|O@v^lYIr7Qk1ylDRB+xq$^eJkDWe%H2bPk=Dt zsGb?$jF6RPbm0o;Y#eP&NQ|_i~y1uuH3r)S@{-&K0e; zjTUkCQegV(;BAk;ur_Dv%N_%Bv{_l&9Oy0~)Ah7wJzu7x01tDm^o6G|5Uxp#LZBFt zzExM|E4WVOO!gPG;suYp`Z~?#3DyLJ3v%yRh z!ogq{rcK8P2PK2^1akEl-a4{IH6I;yUB2N;E1wvx|6<5*l1-1S zFe9#7Iz`)Xk+tK6C!r+(L)b?;U_=m6DqyjZAU2;Z5b;F;CZv{)T-_;)0gL**!?5f0 z@rx7|NUh#w0dTSVk$Z;IBHwIKQ`L=e7j<~W6e-U^FlvLmAg$Ni3v zQu8P?x-QF~wcOkH)E|PaSzGss_osl2uKrnd(OEw&K7CJ+Y)v^npNl9 zY^fdb!Uqe55uqU=p%KD`4}|d@sSRj00po9pCl@T`L4UFN=!BsDvaz9227QJ;X2@0FHjwXh>tzKWm>>y^1ob5R_1Fj4+q{}%?0E@&Reh#F5#K$Z$Bga= zi3LLtb=K+ThVZ{nPYM_FPZXYj;*jdSZ7j3cP6N3U>%;t2d7G27eHEV=?klSI?`7Y}gSCUyZ;J zMNw_@yWe@l3BMs&8?z?x2%8W!XagzFFo9nvZ;altY2~=q6YF=g!*0N_qxGAd z1?|Bf`-ff!LIIdC`!z6VKB#DmDtfZ6w%ZY*OWP zs=&-ys_yQ-hYw}$cIG1@IUyGv2BYN_8uGaeXOxIw13_IA+Hc2*1mZ9kMeZIBkw~u> zs0D~ZDZl9ld#S<+9*DGXzDlvbSH`7#6D*z19ZeRoC_U~^thDm?MoL2OS>U+o4qydb zv)y|6p%8&)(5L$A6B~%*# zaNme&{)%0EwpkUV8fvMHeUOo2EY$~|G3@IG&jhYKbHfS_mS{pQnu_(;c?euIXJ{eCWlkA?vzgY$D|M{%&j^SZn@>VHL4r{CMuvXS{Ei zqwERhgm8lQLi)7Ag{uhTgT@qL zbV8nuhRY}swG0Bc06rS{!4Sb^rq(bDu%jsGW`oSmIJuhOnXDFsBVedm(77pfCz>dT zfuli44Vk2n_e}bXm%eqiFw7&xBTQKR;^35ERQ(`cNM8UG5JdDaBp^)?5FwKUK?v!S z5KOuci6B8B9XAmJ0{%b@;870koI1Lzy?{h_ANU@?su3%{6n9=ADYvocN9mL@S@L7` z?^MkHjHOmvt$^?~y4MXe&Ycx8MYz~keD2)WkY%Gm77zG)P*?r3tdG?Q^9unwk~zjC zl$)m*W4^STAE7h0P+~U9TH)p*?lcz?6oTJ35Q&)hCBsV;Xy9EiEYQ-Fvo41RtrJ`y z(`tu)*9yEpWq6>xg&qIdFatqG`;zUS((0F#suaAKN{^ z)h~<>7zCDpKlg;53{vK?@v!K>`BC zLLEUJ>(jX8WW$sNT7Yo?R9ZwKlbb>mka?RbMV1w9hXZnV1xTlGl*=d6KBW+^? zx4Z$U5~}Pyv20M!<4MIyx1$$6z#c5*MY&2#T_1-2HnqvAeE$yiVNTE9o~}jXuN-yM z+**e6o`U!Xr%x|zx%iHkCa!b!gQT|A8b+YworOTOM3oS)s*YEyKW*yj1roXf?tk<6 z{w8PiHHv7>mei-E)yboqudIL+#4WowMhrH)L8RW)sgbi+mD2cI^Og>h!88qIv`XcY z61r6Hf5w5gRN0CV)D#h5+C&!;#DtoS!O*)kA>?QX+l1{2l_LfZh8zhwI1Dhtnt=u{ z(0zXR1_Q_GIT*wgdc>MlG&=^v+90w+h(Qn#CtMx7cDhWoouG134Rxh0Ep?@3H8~W} zMA<0XWSh24P1z_L5*vU5sVldlExwUUdPF6UD{q9{$nQeL%{8{wH=~*;La!&m1`0Md zu(6dZWg`tLk7dhtTO>EKif>3RJo>^@*ArM!bpEn=X@q%2b+usWXU;tNg;D;gZ~nXn zwYnkdt=nX*N)<~)-eTjSwNGn92{u^82{8%9WCFRgS2Uz}{!nCSi%W=WJIRtAdUv8` zqGy_GeG$B1N^v>(i-$t>kWf6VHct&O&m+Z+ zz#x`$if|FJULD`6HI)uGN6NmB;2^WQ7n~(X(aapJpKAnl8OduTv_`hfu2< znc7Y0kS@Ae)C@cl4)pxkh^B-M!~1{dBNFj{-#^@N{pN3V?)34bt2+Jm2t$P49DO^a zIvo5O#Ka_y>CsM@Q(~%JEPz?pIul!A4vRkUsmfw>FtEn8VWM|@TFcaILGD@5+~fF5 zk{NJV7%ma0S>?hipSLBft~P}_SI)rMvzNZZa2CbA{Fgkg>fajgRt~>VPVjjfWYw`3F5z>~eIav#0$cYaoY}u(U%-P0 z>2I{E9^C1z3cB^?u0OY2Y5a3nFs~0J?D_k`-oU@@`E~N$n@H+NwnV#vtrxC~u4ZUE82mJGNwAmAma6XI18E^~s3X^6|y zJ{4XUFX=(wlE4!TTnhM3DSyO!CVd*Zp3xu9z<=Ctn=Ip$vJZ!p0)N;#mxWB&@{#Dy z!(sK}Ft8UFhik*MB}Ll&(8E=)jOZInq>mai^x$TbdQ_dpOryoj+p8&Rl%k}Trkc@| zguqjI(-uyFk~mANc4+Auw6xD(6-CS2GXcm%=D&S}`=@IeFVg=)q(P_0_=LQWf8_1_ zdE($A7GAC~V8VXUzb~NYR_PkOQ20u0cw-<|^hF0qTH0Xl8(pPsM=#c>Rt00h1upVy z*kZk3t*&2Z4p=_!?iNsW&%N=+|A5hyt@Eru+zD7?dKF?-$2UwT(p|}KMU0;8iecbr>r@@ffXnYtK#Df_-CcB^|>3R|fz^9`F^)9d< zH8}_ei0f^>-2{n66-J|d#<(=0pr#aO(U09~-c#u_sXO%rXj8#D>(QKtFkgeHMWp2H zb7RlEE;0gqJ29kYV8`~f)EK8+#gz-L(a|T96HgMj`v43J>*;;J3lNC}zwe{#pNGQV z_Wu+&4oAJgiysXM$m*;s_UF(E-v1wU7%*`WYCf{*k$whp5#ci9@2M}VMSh;f^pAdz z+9(C0Yb;q3nXBfx!Etp4<7|q9AFmu!U+3}Ie;wDak3W|muj>=`)g6~VcYJW&@o(($ z&OWekDDOVHFV*jb&9Q&0WbezWD~6^?&vef`Z*TJYyA?vE$7eCBpMnB^QpMhxqZC$t zJW}W7o#&Z8r|#N&mDTdAa@F5~=|e%H2ysMuL>eAi$z}^fQdj+y?a7GqVr2ilDm6sN z7Acs1is+D@Z~k`{!z+&Anf23q4`Ed@fu1-$vC#a+t2y4X!-Ypw0V*)$z_DX;IhCNg z+1Iv@kz?BdgRg`j!~d1F*KlPjS#7PX$rJPP zy21DU6Jl)u*R9h>*XBfj5Xk;B@4`C`f^$BSyDv(=B-RtV9Pc z9`-Gp|HAai9}J}r>y2yIw7&&Mni#><5AXVh4jf)}<<^d8x2Oe{SqIr-yp+PFs9KGPONkJ_*%#Q>(HL zivK)aFgWquf~NO;U#Aw$6Zl=M0qW51pR zJaG+(huxOs@{oZ`E1X;>eB?k5sQ>xF+Oa23nf-fe>ep=d_o*Y_{bIqgSHoT1 zklefgRLqw|YqK}K@Q5k8xU${*wkUJpt<5L2zQzc~B_EI1UP=$Vuj%R?DOiyjlU~!I zl5@rGANy+0)Qz(q9`zni=0D{s*;vYclyS@+*3&w7ae%V=#IMx{PX79l1SA~3^d|^_ zkPSJ32SlL8O^G@sXy2z85(bI_qadsZ(U-uH7@~MA<%$Fghtu%H4uo>FiCN_>5%L;x z;GFoq$}9KrP_*#BPT3h$P4MaO-Yh;dUDLDg`OJ2;sov`UsjPLh&0VafEgX=774Tns>hpe5T>9DMvkl=NqFukXOA-gR06BSOX)t1jjsDQ2^OsITBvva^mLU`1%*&k1A?gFCfUv@I6GTT<6@H<*dggIO)gjUryCATQy)fHN zvj&5O9GFJXuyHqv9kAu)Q9dzKP!-c_=#5o3SMzjttvF_&3=ju1eL`PC#6zXhRiNw^ zB%nd0Kck@ZO>p?qDdM#;<(Jx)cqb--+XbGM*Kd(^`F4`uVg_?`o z@6Edg!!eYs2=+&S2p|%8*Q3mAn%0B}VusFW$idBzC|4U19uA=Gdu$tL_m=05VC2_i z{4sQHxHQ9po?})DQ57i3rMQTAWh*kn{yia_ID`}g?t4f^sbA#2`7q*X{eb*DM`w_c zl+r)TAQ;zF>V6MaoHvz-#9$iuJYOl%g!=%5zTIs#>&A)oiIGl%pmFb2fyv*2Syo}P zFo?}gSYTswcmP9xfV>0g>|t3SVzgvqs88=ZK6!WDw|(>C)~|x=2%0L@$@-8$(Y_(&O9%1s=3oW0dOxgq&SlAj+zso zeR^Q#*<6j@@@#16?#9(>*HipS^6C}#U>53-J$XVr;}I+}*c3b3`qlS+lhM|8ejBT_ z3{M5W-?ZK2XDz&D$XyEdnp<1jO_E4 z^XCCtibU%E_rp>28jS-{w8;e8uq1Ee&;kD;G?o8eRkttgF8#RyaJk1=%;n2x&x}sQ z*hsg_jVD~AlcO%%f9cVRCkPyO;W#lF^ZMvLK*#dd7R+5xFn4Wwice6;vbJN}oa;{V zUmofa_m|cGC-0Po1^&Zn1>ATQOaI2-?7*M=tbdpNZS|w|_*?%v6GgbC&!kUzfsOq! z+g=wC@V_s!nFMk4%MiKWD<##7k6HiB>%xLkSfWMD?aJl6zjLcTH;)F&=iBdOKa2<& zSpZvr(B*QVEIo~zdp0a|hik#QV8cw-o%8L0rL#!dx0_ZfOPKurFFX#Yc}5;KAj#2+ zvY~Q>e@~9V0@u1}fUqV~^82M4PC|ao7d<=y-j#9K zFV{olf##%_ZtUB^h*q)Fd$>I;FI6;ShhHhf8+nL4a8GyX;|~7fu|dvAs;Kj#pxoxfjL9tD|oq82LXKsI^5r5+a_=`^N;tg!vwQS*7-1 z@SgD)!6u3|<@>-sK&v+SEo+|mn1bKBy66+JyuA(f$PJNnawmZQ{3Sxx$}gRZ0>$IP zd}$ScgRQDKh<4+22#P_IYhbQh6#E*^*ecvi5m)<*yA&7cW>K3TqB) zDO5M-&w$8edXe}-T+rv1x(Bx{Y#p6^>3K~03+anOar(2wCn6@n6sc4qd9%~oY$80q=XwXoS+M;umwEmHnLJ`vqxb3ix)lrx% zNtMi{JdIDSNNur12gaEl8T2+t>{+!Gt$15p?0of#!+^6jOQacFdq?!z))|&^pB?OC zW37x~Zpa}4R`ll{28NK=jO`(5?DedRya_z&tmaHNc%{zX?_==NV`)YcRbxp`*OCq> zF@@h5)mnNR0msMNdsds|=-WN2QUlRqG>pJwp~m9C8ehxlAuRK|Qsc7Uo%W0et5b~Z zG?-(JHB-i`THjobjU(J%;dGHF9mnx`BfHTq;m@V&QDRYp(^}oCr0aGD?|9g`%^ypu zW>04K^ec9lr^a*I0>qY)}ejsb*FIW~kUz z1U-K8=uNLKVEaw#|5k`bc$6il7dcie54>C2f9CBj4_5j<)?JL2JNFS$Z)SBvZymCy zpeE5D|+yI}%UrMC(}0e1FP(154K6sq|p|HiTNga6ccyDC?+?#&zytH& zVSGHU3)=n0h${boVTf_X{9FzYQ8Zru-HjmUhYyc_i8Hg;$+_$Q&aAR{l8OmLs`u** zgO{}FrrdNhXIKO}1?yRDWYRKfx18=n@1hQ_71^D-m3YZAfs~SmD2GC}&~3SV8NE|) W#pP=)SD7h1pDsKPdU|-r761Sfe^fL8 diff --git a/dashboard/src/components/ConfirmDialog.vue b/dashboard/src/components/ConfirmDialog.vue index 9b77a6b6b..da5cc5eb0 100644 --- a/dashboard/src/components/ConfirmDialog.vue +++ b/dashboard/src/components/ConfirmDialog.vue @@ -1,7 +1,7 @@